当前位置: 首页 > 专利查询>英特尔公司专利>正文

数据传送机制制造技术

技术编号:2839112 阅读:195 留言:0更新日期:2012-04-11 18:40
一种用于在程序主体和存储资源之间传送数据的方法。该方法包括在一个数据处理主体和一个存储资源之间传送数据,指定这个存储资源用于经由一根推入总线将数据推入该数据处理代理中,并指定这个存储资源用于经由一根拉出总线接收来自该数据处理代理的数据,其中,该推入总线具有若干仲裁其使用的信号源,该拉出总线具有若干仲裁其使用的目标。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】
背景典型的计算机处理系统具有使不同的组件之间能够互相通信的总线。这些组件之间的总线通信允许公共地通过一条数据通路的数据传送。一般说来,该数据通路使一个数据处理代理,例如,中央处理器(CPU)或处理器,与像硬磁盘驱动器、设备适配器、等等这样的其它的组件互连。附图的简要说明附图说明图1是一个数据处理系统的框图。图2是图1中的数据处理系统的详细框图。图3是图1中的数据处理系统中的读出过程的流程图。图4是图1中的数据处理系统中的写入过程的流程图。图5是图1中的数据处理系统的推入操作的流程图。图6是图1中的数据处理系统的拉出操作的流程图。说明结构参考图1,数据处理系统10包括一个并行的、基于硬件的多线程网络处理器12。基于硬件的多线程网络处理器12与存储系统或存储资源14耦合。存储系统14包括动态随机存储器(DRAM)14a和静态随机存储器14b(SRAM)。数据处理系统10对于可分成并行的子任务或函数的任务特别有用。尤其是,基于硬件的多线程网络处理器12对于基于带宽而不是基于等待时间的任务特别有用。基于硬件的多线程网络处理器12具有若干微引擎或编程引擎16,它们中的每一个都具有若干硬件控制的线程,其中,这些线程同时有效并且独立地对一个特定的任务起作用。每一个编程引擎16在与该程序计数器相关的硬件和位置中提供程序计数器。有效地,相应的上下文或线程能够在每一个编程引擎16上同时有效,虽然在任何一个时间实际上只有一个在运行。在这个例子中,八个编程引擎16在图1被示出了。每一个编程引擎16具有处理八个硬件线程或上下文的能力。这八个编程引擎16合包括存储资源14和总线接口的共享的资源一起运行。基于硬件的多线程网络处理器12包括一个动态随机存储器(DRAM)控制器18a和一个静态随机存储器(SRAM)控制器18b。DRAM存储器14a和DRAM控制器18a通常用于处理大量数据,例如,处理来自网络数据包的有效负载的处理。SRAM存储器14b和SRAM控制器18b被用在用于低等待时间、快速访问的任务的网络实现中,例如访问查找表、用于核心处理器20的存储器,等等。推入总线26a-26b和拉出总线28a-28b被用来在编程引擎16与DRAM存储器14a和SRAM存储器14b之间传送数据。特别地,推入总线26a-26b是单向总线,它将来自存储资源14的数据传送到编程引擎16,而拉出总线28a-28b将来自编程引擎16的数据传送到存储资源14。这八个编程引擎16根据数据的特性访问DRAM存储器14a或是SRAM存储器14b。因此,低等待时间、低带宽的数据存储在SRAM存储器14b中并从其中读取,而那些等待时间对它们不是那么重要的高带宽数据,存储在DRAM存储器14a中并从其中读取。编程引擎16可以对DRAM控制器18a或是SRAM控制器18b执行存储器访问指令。基于硬件的多线程网络处理器12还包括一个用于对基于硬件的多线程网络处理器12的其它资源载入微指令控制的核心处理器20,。在这个例子中,核心处理器20是基于XScaleTM的结构。核心处理器20执行通用计算机类型的函数,例如处理协议、异常事件以及对数据包处理的额外支持,其中,在数据包处理中,编程引擎16把数据包当作像是在边界条件中那样的更复杂的数据处理。核心处理器20具有一个操作系统(未示出)。通过操作系统(OS),核心处理器20可以调用函数来对编程引擎16进行操作。核心处理器20可以使用任何支持的OS,特别是实时OS。对于作为XScaleTM的结构来实现的核心处理器20来说,可以使用像Microsoft NT实时、VXWorks和μCOS,或能在因特网上使用的免费软件OS这样的操作系统。硬件多线程的优点可以通过SRAM或DRAM存储器的访问来说明。作为一个例子,来自编程引擎16之一的,一个通过上下文(例如,Thread_0)来请求的SRAM访问,会使该SRAM控制器18b启动一个对SRAM存储器14b的访问。SRAM控制器18b访问SRAM存储器14b,读取来自SRAM存储器14b的数据,并将数据返回给请求的编程引擎16。在SRAM的访问过程中,如果编程引擎16中的一个仅有单独的一个可以操作的线程,那么编程引擎便会处于睡眠状态直到数据从SRAM存储器14b返回。通过使用在编程引擎16中间的每一个之内的硬件关联对换,该硬件关联对换使得在那同一个编程引擎中,其它具有唯一程序计数器的上下文能够运行。因此,在第一个线程,Thread_0,在等待要返回所读取的数据时,另一个线程,例如,Thread_1可以运行。在运行过程中,Thread_1可以访问DRAM存储器14a。在Thread_1对DRAM单元进行操作,并且Thread_0正在对SRAM单元进行操作的时候,一个新的线程,例如,Thread_2现在可以在编程引擎16中进行操作。Thread_2可以操作某一数量的时间,直到它需要访问存储器或是执行一些其它长等待时间的操作,例如对总线接口进行访问。因此,同时地,处理器12可以具有总线操作、全部由编程引擎16中的一个完成或对其进行操作的SRAM操作以及DRAM操作,以及具有一个以上的可以用来处理更多工作的线程。硬件关联对换也使任务的完成同步。例如,两个线程可以命中共享的存储器资源,例如,SRAM存储器14b。分开的功能装置中的每一个,例如,SRAM控制器18b,以及DRAM控制器18a,当他们完成一个来自编程引擎线程或上下文的请求的任务的时候,报告返回一个通知操作完成的标志。当编程引擎16接收到这个标志的时候,编程引擎16可以决定启动哪一个线程。一个用于该基于硬件的多线程处理器12的应用的例子是作为网络处理器。作为网络处理器,该基于硬件的多线程处理器12连接到像媒体访问控制器(MAC)设备,例如,10/100BaseT Octal MAC13a或吉比特以太网(未示出)这样的网络设备。总之,作为网络处理器,基于硬件的多线程处理器12可以连接到任何类型的通信设备或是接收或发送大量数据的接口。在网络应用中运行的计算机处理系统10可以接收网络数据包并以并行方式处理它们。编程引擎上下文如上所述,编程引擎16中的每一个都支持八个上下文的多线程运行。这允许一个线程可以正好在另一个线程发出了存储器访问,并且在进行更多工作之前必须等待直到访问结束之后开始运行。多线程运行是达到编程引擎16的高效率的硬件运行的关键,因为存储器的等待时间非常重要。多线程运行允许编程引擎16通过执行跨越几个线程的有效的独立的工作来隐藏存储器的等待时间。这编程引擎16的八个上下文中的每一个,为了允许高效率的上下文对换,具有它自己的寄存器组、程序计数器、以及上下文具体的局部寄存器。具有一个副本的每一个上下文消除了为每一个上下文对换,将上下文具体的信息传送到共享存储器和编程引擎并从它们中传送上下文具体的信息的需要。快速上下文对换允许上下文执行计算当其它上下文等待输出输入(I/O),通常是,外部存储器访问结束或是等待来自其它上下文或硬件装置的信号时执行计算。例如,编程引擎16通过提供八个程序计数器和八个上下文相关的寄存器组来运行八个上下文。有许多不同类型的上下文相关寄存器,例如通用寄存器(GPRs)、交互编程代理寄存器、本文档来自技高网...

【技术保护点】
一种用于在处理代理和存储资源之间传送数据的方法包括:    指定这个存储资源用于使用推入总线将数据推入处理代理中,其中,该推入总线具有若干仲裁推入总线的使用的源;以及    指定这个存储资源用于使用拉出总线接收来自处理代理的数据,其中,该拉出总线具有若干仲裁拉出总线的使用的目标。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:M阿迪尔塔D伯恩斯坦M罗森布鲁斯G沃里其
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利