片内网络以及片内网络软件流水线操作方法

文档序号:7919579阅读:157来源:国知局
专利名称:片内网络以及片内网络软件流水线操作方法
技术领域
本发明的领域涉及数据处理,或者更具体地讲,涉及通过片内网络
('NOC,)进行数据处理的装置与方法。
背景技术
存在着两种普遍使用的数据处理范式多指令多数据('MIMD,) 和单指令多数据('SIMD,)。在MIMD处理中,计算机程序通常具有这 样的特征即表现为或多或少独立运作的一个或多个执行线程,每个线 程均要求对大量共享存储器的快速随机存取。MIMD是针对适合于其的 特定类型程序优化的一种数据处理范式,例如,所述适合于其的特定类 型程序包括字处理器、电子数据表、数据库管理程序,例如,诸如流览 器等的多种远程通信形式。
SIMD具有这样的特征即表现为同时并行运行在多个处理器上的 单一的程序,所述程序的每个实例按相同的方式操作,但针对独立的数 据项。SIMD是一种针对适合于其的特定类型应用优化的数据处理范式, 例如特定类型应用包括数字信号处理、向量处理等多种形式。
然而,还存在着另一种类型的应用,其包括多种真实世界仿真程序, 例如既没有针对它们对纯SIMD数据处理进行优化,也没有针对它们对 纯MIMD数据处理进行优化。该类型的应用包括那些获益于并行处理、 并且要求对共享存储器进行快速随机存取的应用。对于该类型的程序, 纯的MIMD系统将不会提供高度的并行机制,纯的SIMD系统也不会提 供对主存储器存储的快速随机存取。

发明内容
一种片内网络('NOC,),其包括集成处理器('IP,)块、路由器、 存储器通信控制器、以及网络接口控制器,而且,每个IP块均适应于贯 穿存储器通信控制器和网络接口控制器的路由器,其中每个存储器通信
4控制器控制IP块和存储器之间的通信,每个网络接口控制器通过路由器 控制IP块间通信,所述NOC还包括分割被成阶段的计算机软件应用, 每个阶段包括计算机程序指令的可灵活配置的模块,由阶段ID标识该 模块,其中每个阶段在IP块上的执行线程上加以执行。
通过以下对附图中所说明的本发明的示范性实施例的更详细的描 述,本发明的上述以及其它目的、特性与优点将会变得十分明显。在各 附图中,总体上以相同的参照数字表示本发明的示范性实施例的相同的 部分。


图l描述了自动计算机器的结构图,该自动计算机器包括用于使用
根据本发明的实施例的NOC进行数据处理的示范性计算机。
图2描述了根据本发明的实施例的NOC实例的功能结构图。 图3描述了根据本发明的实施例的又NOC实例的功能结构图。 图4描述了流程图,说明了使用根据本发明的实施例的NOC进行
数据处的一种示范性方法。
图5描述了数据流图,说明了根据本发明的实施例的NOC上的软
件流水线实例。
图6描述了流程图,说明了根据本发明的实施例的NOC上的软件 流水线纟乘作的 一种示范性方法。
具体实施例方式
将参照附图,从图l开始,描述使用根据本发明的NOC进行数据 处理的示范性装置与方法。图l描述了自动计算机器的结构图,该自动
范':计i机(152)。图1的示范性计^机(152)至少包括计算机处理 器(156)(即'CPU,)以及通过一条高速存储器总线(166)和总线适配 器(158)连接于计算机(152)的处理器(156)和其它部件的随机存 取存储器(168) ('RAM,)。
存储在RAM(168)中的是应用程序(184),即用于执行诸如字处 理、电子数据表、数据库操作、视频游戏、股票市场模拟、原子量子过程模拟等特定数据处理任务或其它用户级应用的用户级计算机程序指
令的模块。操作系统(154)也存储在RAM (168)中。使用根据本发 明的实施例的NOC进行有效数据处理的操作系统包括UNIXTM、 LinuxTM、 Microsoft XPTM、 AIXTM、 IBM的i5/OSTM、以及这一技术领域 中的熟练技术人员所熟悉的其它操作系统。RAM (168)中描述了图1 的例子中的操作系统(154)和应用程序(184),然而,通常也把许多 这样的软件的部件存储在非易失存储器中,例如存储在磁盘驱动器 (170)等中。
计算机实例(152)包括两个根据本发明的实施例的NOC实例视 频适配器(209)和协同处理器(157)。视频适配器(209)为针对图形 输出,即针对向诸如显示屏幕或者计算机监视器的显示设备(180)的 图形输出而专门设计的I / O适配器的实例。通过一条高速视频总线
(164 )、总线适配器(158 )、以及前侧总线(162 )(也是一条高速总线), 把视频适配器(209)连接于处理器(156)。
通过总线适配器(158)以及前侧总线(162和163 (也是一条高速 总线)),把NOC协同处理器实例(157)连接于处理器(156)。根据主 处理器(156)的要求,对图1中的NOC协同处理器进行优化,以加速 特定的数据处理任务。
图1的NOC视频适配器实例(209)和NOC协同处理器(157)均 包括根据本发明的实施例的NOC,该NOC包括集成处理器('IP,)块、 路由器、存储器通信控制器、以及网络接口控制器,每个IP块适应于贯 穿存储器通信控制器和网络接口控制器的路由器,每个存储器通信控制 器控制IP块和存储器之间的通信,每个网络接口控制器通过^^由器控制 IP块间通信。针对那些使用并行处理,并且还要求对共享存储器进行快 速随机存取的程序,对NOC视频适配器和NOC协同处理器加以优化。 以下,参照图2 4讨论NOC结构与才乘作的细节。
图1的计算机(152 )包括通过扩展总线(160 )和总线适配器(158 ) 耦合于计算机(152)的处理器(156)和其它部件的磁盘驱动适配器
(172)。磁盘驱动适配器(172)按磁盘驱动器(170)的格式把非易失 数据存储器连接于计算机(152 )。对于使用根据本发明的实施例的NOC 的数据处理,用于计算机的磁盘驱动适配器包括集成的驱动电子('IDE')适配器、小型计算机系统接口 ('scsr)适配器、以及这一技术领域中 的熟练技术人员所熟悉的其它适配器。也可以把非易失计算机存储器作 为这一技术领域中的熟练技术人员所熟悉的光盘驱动器、电可擦除可编
程只读存储器(所谓的'EEPROM,,即'闪速,存储器)、RAM驱动器等加
以实现。
图1的计算机实例(152)包括一个或多个输入/输出('I/O,)适 配器(178)。例如,1/0适配器通过用于控制向诸如计算机显示屏幕的 显示设备的输出以及来自诸如键盘与鼠标器的用户输入设备(181)的 输入的软件驱动器和计算机硬件实现面向用户的输入/输出。
图1的示范性计算机(152)包括用于与其它计算机(182)进行数 据通信以及用于与数据通信网络(100)进行数据通信的通信适配器 (167)。可以通过RS-232连接、通过诸如通用串行总线('USB,)的外 部总线、通过诸如IP数据通信网络的数据通信网络、以及按这一技术领 域中的熟练技术人员所熟悉的其它方式,进行这样的数据通信。通信适 配器实现了数据通信的硬件级,通过这一硬件级, 一台计算机直接或者 通过数据通信网络把数据通信发送于另 一台计算机。用于使用根据本发 明的实施例的NOC进行数据处理的通信适配器的例子包括用于有线拨 号通信的调制解调器、用于有线数据通信网络通信的Ethernet (IEEE 802.3 )适配器、以及用于无线数据通信网络通信的802.11适配器。
为了进一步地进行解释,图2描述了根据本发明的实施例的NOC 实例(102)的功能结构图。在一块'芯片,(100)上,即在集成电路上 实现图1的例子中的NOC。图2的NOC ( 102)包括集成处理器('IP,) 块(104)、路由器(110)、存储器通信控制器(106)、以及网络接口控 制器(108),每个IP块(104)适应于贯穿存储器通信控制器(106)和 网络接口控制器(108)的路由器(110),每个存储器通信控制器控制 IP块和存储器之间的通信,每个网络接口控制器(108 )通过路由器(110 ) 控制IP块间通信。
在图2的NOC ( 102 )中,每个IP块代表了用作NOC中数据处理 的构件块的同步或者异步逻辑设计的可用单元。有时把术语'IP块,拓展 为'知识产权块,,从而有效地把IP块指示为一种由某一方所拥有的、为 某一方的知识产权的、将向半导体集成电路的用户或者设计者发放许可
7证的设计。然而,在本发明的范围内,不要求令IP块服从任何特定的所 有权关系,因此,在本说明书中,总是将这一术语拓展为'集成处理器块,。
件、或者芯片布设设计的可重用单元。IP块为可以作为ASIC芯片设计
或者FPGA逻辑设计形成的逻辑核心。
一种通过模拟描述IP块的方式是,令IP块支持这样一种NOC设计 像程序库那样支持计算机程序设计,或者像离散的集成电路部件那样支 持印刷电路板设计。在根据本发明的实施例的NOC中,可以把IP块作 为一般门连线表、作为完整的专用或者通用微处理器、或者按这一技术 领域中的熟练技术人员所熟悉的其它方式加以实现。连线表为IP块的逻 辑功能的布尔代数表示(门,即标准元件),类似于针对高级程序应用 的汇编代码列表。例如,也可以按一种诸如Verilog或者VHDL的硬件 描述语言中所描述的可合成的形式,实现NOC。除了连线表和可合成实 现夕卜,也可以按较低级,即按物理描述提交NOC。可以按一种诸如GDSII 的晶体管布设格式分布诸如SERDES、 PLL、 DAC、 ADC等的模拟IP 块元件。有时也按布设格式提交IP块的数字元件。
图2的例子中的每个IP块(104 )适应于贯穿存储器通信控制器(106 ) 的路由器(110 )。每个存储器通信控制器为适应于在IP块和存储器之间 提供数据通信的同步和异步逻辑电路的聚合体。IP块和存储器之间的这 样的通信的例子包括存储器加载指令和存储器存储指令。以下,参照图 3更详细地描述存储器通信控制器(106)。
图2的例子中的每个IP块(104 )适应于贯穿网络接口控制器(108 ) 的路由器(110)。每个网络接口控制器(108)通过路由器(110)控制 IP块(104)之间的通信。IP块(104)之间的通信的例子包括用于并行 应用中以及在流水线应用中处理IP块之间数据的载有数据和指令的消 息。以下,参照图3更详细地描述网络接口控制器(108)。
图2的例子中的每个IP块(104)适应于路由器(110)。路由器(110) 和路由器之间的链路(120)实现了 NOC的网络操作。链路(120)为 在连接所有路由器的物理、并行导线总线上实现的信息包结构。即,在 宽度足以同时容纳完整数据交换信息包(包括所有头标信息和有效载荷 数据)的导线总线上实现每个条链路。如果信息包结构包括64个字节,例如,包括8字节的头标和56字节的有效载荷数据,则通向每条链路 的导线总线为64个字节宽、512条导线。另外,每条链路都是双向的, 因此,如果链路信息包结构包括64个字节,则在网络中每个路由器和 其每个相邻路由器之间,导线总线实际包括1024条导线。 一条消息可 以包括以上的信息包,但每个信息包恰好与导线总线的宽度相吻合。如 果把路由器和导线总线的每个部分之间的连接称为端口 ,则每个路由器 包括5个端口,网络上数据传输的4个方向中的每个方向端口,第5个 端口可使路由器适应于贯穿存储器通信控制器和网络接口控制器的具 体的IP块。
图2的例子中的每个存储器通信控制器(106)控制IP块和存储器 之间的通信。存储器可以包括片外主RAM( 112)、通过存储器通信控制 器(106)直接连接于IP块的存储器(115)、作为IP块实现的片内存储 器(114)、以及片内超高速緩存。在图2的N0C中,例如,可以把片 内存储器(114, 115)任何之一作为片内超高速緩存存储器加以实现。 可以在同 一地址空间,即物理地址或者虚拟地址中"i殳置所有这些形式的 存储器,甚至对于直接附接于IP块的存储器,也可以这样设置。因此, 对于IP块,存储器寻址的消息可以为完全双向的,因为可以直接在网络 上的任何地方从任何IP块直接对这样的存储器加以寻址。可以通过存储 器通信控制器,由适应于网络的IP块对直接附接于存储器通信控制器的 存储器(115)进行寻址--从而也可以在NOC中的任何地方,从任何其 它IP块对其进行寻址。
这一NOC实例包括两个存储器管理单元('MMU, ) ( 107, 109), 说明了根据本发明的实施例的NOC的两种可选的存储器体系结构。使 用IP块实现MMU (107),允许IP块中的处理器在虚拟存储器中操作, 同时允许NOC的整个余留体系结构在物理存储器地址空间中操作。在 片外实现MMU ( 109),通过数据通信端口 ( 116)将其连接于NOC。 端口 (116)包括在NOC和MMU之间传导信号所需的插针和其它互连 机制,以及把消息信息包从NOC信息包格式转换成外部MMU ( 109 ) 所要求的总线格式的足够的信息。MMU的外部地址意味着NOC的所有 IP块中的所有处理器可以在虚拟存储器地址空间中操作,其中,由片外 MMU (109)处理所有向片外存储器的物理地址的转换。
9除了使用MMU( 107, 109)所说明的两个存储器的体系结构,数 据通信端口 (118)还说明了用于根据本发明的实施例的NOC的第三存 储器体系结构。端口 ( 118)在NOC ( 102)的IP块(104)和片外存储 器(112)之间提供了直接的连接。由于在处理路径中无MMU,这一体 系结构提供了 NOC的所有IP块对物理地址空间的利用。在双向共享地 址空间的过程中,NOC的所有IP块可以通过存储器寻址的消息存取地 址空间中的存储器,包括加载和存储,并且通过直接连接于端口 (118) 的IP块对它们加以指引。端口 (118)包括在NOC和片外存储器(112) 之间传导信号所需的插针和其它互连机制,以及把消息信息包从NOC 信息包格式转换成片外存储器(112)所要求的总线格式的足够的信息。
在图2的例子中,把IP块之一指定为主接口处理器(105)。主接口 处理器(105)在NOC和一台其中可以安装NOC的主计算机(152)之 间提供了接口,并且还向NOC上的其它IP块提供了数据处理服务,例 如,包括在NOC上的IP块之间接收与调度来自主计算机的NOC数据 处理请求。例如,NOC可以在较大计算机(152)上实现视频图形适配 器(209)或者协同处理器(157),如以上参照图l所描述的。在图2 的例子中,通过数据通信端口 (115)把主接口处理器(105)连接于所 述较大的主计算机。端口 (115)包括在NOC和主计算机之间传导信号 所需的插针和其它互连机制,以及把消息信息包从NOC转换成主计算 机(152)所要求的总线格式的足够的信息。在图1的计算机中的NOC 协同处理器的例子中,这样的端口将在NOC协同处理器(157)的链路 结构和NOC协同处理器(157)与总线适配器(158)之间的前侧总线 (163)所需的协议之间提供数据通信结构翻译。
为了进一步加以解释,图3描述了根据本发明的实施例的进一步的 NOC实例的功能结构图。图3的NOC实例类似于图2的NOC实例, 类似之处在于,在一块芯片(图2中的100)上实现图3的NOC实例, 图3的NOC ( 102)包括集成电路('IP,)块(104)、路由器(110)、存 储器通信控制器(106)、以及网络接口控制器(108)。使每个IP块(104) 适应于贯穿存储器通信控制器(106)和网络接口控制器(108)的路由 器(IIO)。每个存储器通信控制器控制IP块和存储器之间的通信,每个 网络接口控制器(108)通过路由器(110)控制IP块间通信。在图3的例子中,把适应于贯穿存储器通信控制器(106)和网络接口控制器(108 ) 的路由器(110)的IP块(104)的集合(122)扩展为能够有助于对它 们的结构和操作进行更详细的解释。按与所扩展的集合(122)相同的 方式,对图3的例子中的所有IP块、存储器通信控制器、网络接口控制 器、以及路由器进行配置。
在图3的例子中,每个IP块(104 )包括计算机处理器(126 )和I /0功能(124)。在这一例子中,由每个IP块(104)中随机存取存储 器('RAM,)的一段代表计算机存储器。如以上参照图2的例子所描述 的,存储器能够占据可以从NOC中任何IP块对其在每个IP块上的内容 加以寻址和进行存取的若干段物理地址空间。每个IP块上的处理器
(126)、 1/0能力(124)、以及存储器(128)有效地把IP块作为通常 可编程的微型计算机加以实现。然而,如以上所解释的,在本发明的范
步逻辑的可重用单元。因此,尽管公共的实施例有助于进行解释,但把 IP块作为通常可编程的微型计算机加以实现,并不是对本发明的一种限制。
在图3的NOC ( 102 )中,每个存储器通信控制器(106 )包括多个 存储器通信执行引擎(140)。使每个存储器通信执行引擎(140)能够 执行来自IP块(104 )的存储器通信指令,包括网络和IP块(104 )之 间的双向存储器通信指令流(142, 144, 145)。存储器通信控制器所执 行的存储器通信指令不仅可源自于适应于贯穿具体存储器通信控制器 的路由器的IP块,而且还可以源自于NOC ( 102 )中任何地方的任何IP 块(104)。即,NOC中的任何IP块可以生成一条存储器通信指令,并 且通过NOC的路由器,把该存储器通信指令传输于与另IP块相关的另 存储器通信控制器,以执行该存储器通信指令。例如,这样的存储器通 信指令可以包括翻译后备緩沖器控制指令、超高速緩存控制指令、屏障
指令、以及存储器加载与存储指令。
使每个存储器通信执行引擎(140)能够独立地以及与其它存储器 通信执行引擎并行地执行一条完整的存储器通信指令。存储器通信执行 引擎实现了针对存储器通信指令的并发吞吐量优化的可调节存储器翻 译处理器。存储器通信控制器(106)支持多个全部并发运行的存储器通信执行引擎(140),以同时执行多条存储器通信指令。存储器通信控 制器(106)把一条新的存储器通信指令分配于存储器通信执行引擎
(140),存储器通信执行引擎(140)可以同时接受多个响应事件。在 这一例子中,所有存储器通信执行引擎(140)是相同的。因此,通过 调节存储器通信执行引擎(140)的数目,实现对存储器通信控制器(106) 可以同时处理的存储器通信指令的数目的调节。
在图3的N0C (102)中,使每个网络接口控制器(108)能够把通 信指令从命令格式转换成网络信息包格式,以通过路由器(110 )在IP 块(104 )之间进行传输。由IP块(104 )或者由存储器通信控制器(106 ) 按命令格式表述通信指令,并且按命令格式将它们提供于网络接口控制
器(108 )。命令格式为符合于IP块(104 )和存储器通信控制器(106 ) 的体系结构寄存器文件的本机格式。网络信息包格式为通过网络的路由 器(110)进行传输所要求的格式。每个条这样的消息由一个或多个网络 信息包构成。网络接口控制器中被从命令格式转换成信息包格式的这样 的通信指令的例子包括IP块和存储器之间的存储器加载指令和存储器 存储指令。这样的通信指令也可以包括在载有数据和指令的IP块之间发 送消息,以在并行应用中和流水线应用中的IP块之间处理数据的通信指 令。
在图3的NOC ( 102 )中,使每个IP块能够通过IP块的存储器通 信控制器把基于存储器地址的通信发送于存储器或者从存储器发送,然 后还通过其网络接口控制器把基于存储器地 址的通信发送于网络。基于 存储器地址的通信为由IP块的存储器通信控制器的存储器通信执行引 擎所执行的存储器存取指令,例如,加载指令或者存储指令。通常,这 样的基于存储器地址的通信源于IP块,并且按命令格式对其加以表述, 然后交由存储器通信控制器加以执行。
利用消息业务(traffic)执行多个基于存储器地址的通信,因为可以 在片内或者片外、在物理存储器地址空间中的任何地方设置将加以存取 的任何存储器,将它们直接附接于NOC中的任何存储器通信控制器, 或者最终通过NOC的任何IP块对它们加以存取,而不管哪一 IP块源于 哪一基于存储器地址的通信。把利用消息业务执行的所有基于存储器地 址的通信从存储器通信控制器传递于相关的网络接口控制器,以进行从式的转换(136)以及按消息通过网络的传输。在 向信息包格式的转换过程中,网络接口控制器还依赖于存储器地址或者 将由基于存储器地址的通信加以存取的地址,标识信息包的网络地址。 使用存储器地址对基于存储器地址的消息加以寻址。网络接口控制器把 每个存储器地址映像至网络地址,通常映像至负责某一范围物理存储器
地址的存储器通信控制器的网络地址。存储器通信控制器(106)的网 路地址自然也是所述存储器通信控制器的相关路由器(110 )、网络接口 控制器(108)、以及IP块(104)的网络地址。每个网络接口控制器中 的指令转换逻辑(136)能够把存储器地址转换为网络地址,以通过NOC 的路由器传输基于存储器地址的通信。
当从网络的路由器(110)接收消息业务时,每个网络接口控制器 (108)检查存储器指令的每个信息包。把每个包括一条存储器指令的 信息包递交于与正在进行接收的网络接口控制器相关的存储器通信控 制器(106 ),在把信息包的剩余有效载荷发送于IP块以进行进一步的处 理之前,存储器通信控制器(106)执行存储器指令。在这一方式中, 总是准备好存储器内容,以在IP块开始执行来自某一消息的指令之前支 持IP块的数据处理,其中所述消息依赖于具体的存储器内容。
在图3的NOC ( 102 )中,使每个IP块(104 )能够旁路其存储器 通信控制器(106 ),并且通过IP块的网络接口控制器(108 )把IP块间、 网络寻址的通信(146)直接发送于网络。阿络寻址的通信为通过网络 地址导向另IP块的消息。这样的消息传输流水线应用中的工作数据、 SIMD应用中IP块之间针对单一程序处理的多重数据等,这些数据是这 一技术领域中的熟练技术人员所熟悉的。这样的消息不同于基于存储器 地址的通信之处在于由知道网络地址,即知道通过NOC的路由器把 消息导向于其的网络地址的初始IP块从开始位置对它们进行网络寻址。 IP块通过其I/0功能(124),按命令格式把这样的网络寻址的通信直 接传递于IP块的网络接口控制器,然后由网络接口控制器将它们转换成 信息包格式,并且通过NOC的路由器把它们传输于另IP块。这样的网 络寻址的通信(146)为双向的,可能继续前进至NOC的每个IP块和 从每个IP块继续前进,取决于它们在任何具体应用中的使用情况。然而, 使每个网络接口控制器能够直接向与从相关的路由器发送与接收(142)这样的通信,而且还使每个网络接口控制器能够直接向与从相关的IP块 发送与接收(146)这样的通信,从而旁路了相关的存储器通信控制器
(106 )。
还使图3的例子中的每个网络接口控制器(108)能够在网络上实 现虚拟信道,并且以类型反映网络信息包的特征。每个网络接口控制器 (108)包括虛拟信道实现逻辑(138),虚拟信道实现逻辑(138)根据 类型对每个条通信指令进行分类,并且在按网络信息包格式把指令递交 于路由器(110)以于NOC上加以传输之前,把指令的类型记录在网络 信息包格式的字段中。通信指令类型的例子包括IP块间基于网络地址的 消息、请求消息、对请求消息的响应、使导向超高速緩存的消息无效; 存储器加载与存储消息;以及对存储器加载消息的响应等。
图3的例子中的每个路由器(110)包括路由逻辑(130)、虚拟信道 控制逻辑(132)、以及虚拟信道緩沖器(134)。通常,把路由逻辑作为 同步与异步逻辑的网络加以实现,该网络在路由器(110)、链路(120)、 以及^各由器之间的总线导线所形成的网络中实现了用于数据通信的数 据通信协议栈。路由逻辑(130)包括这一技术领域中的熟练技术读者 可能会在片外网络中将其与路由表相关联的功能,对NOC中的使用而 言,至少在某些实施例中,认为路由表太慢及太笨拙。可以对作为同步 与异步逻辑的网络而实现的路由逻辑进行配置,以像单时钟周期那样快 地进行路由决策。在这一例子中,路由逻辑通过选择用于转发路由器中 所接收的每个信息包的端口,路由信息包。每个信息包包括将把信息包 路由于其的网络地址。在这一例子中,每个路由器包括5个端口 4个 通过总线导线(120-A、 120-B、 120-C、 120-D)连接于其它路由器的端 口 (121)以及通过网络接口控制器(108)和存储器通信控制器(106) 把每个路由器连接于其相关的IP块(104)的第5端口 ( 123 )。
在以上描述基于存储器地址的通信的过程中,把每个存储器地址描 述为由网络接口控制器将其映像至网络地址,即存储器通信控制器的网 络地址。存储器通信控制器(106)的网络地址自然也为该存储器通信 控制器的相关路由器(110)、网络接口控制器(108)、以及IP块(104) 的网络地址。因此,在IP块间或者基于网络地址的通信中,对于应用级 数据处理而言,通常,也把网络地址视为路由器、链路、以及NOC的总线导线所形成的网络中的IP块的地址。图2说明了这样的网络的组织, 其为其中可以实现每个网络地址的行与列的网状物,例如,其中可以才巴
每个网络地址作为该网状物中的每个相关路由器、IP块、存储器通信控 制器、以及网络接口控制器的集合的唯一的标识符,或者作为该网状物
中每个这样的集合的x, y坐标加以实现。
在图3的NOC (102)中,每个路由器(110)实现了两或两个以上 的虚拟通信信道,其中,以通信类型反映每个虚拟通信信道的特征。通 信指令类型,因而虚拟信道类型包括以上所提到的IP块间基于网络地
址的消息、请求消息、对请求消息的响应、使导向超高速緩存的消息无 效;存储器加载与存储消息;以及对存储器加载消息的响应等。为了支 持虛拟信道,图3的例子中的每个路由器(110)还包括虚拟信道控制逻 辑(132)和虚拟信道緩沖器(134)。虚拟信道控制逻辑(132)检查每 个所接收的信息包,即检查其所赋予的通信类型,并且把每个信息包放 入针对所述通信类型的输出虚拟信道緩沖器,以通过端口向NOC上的 相邻路由器进行传输。
每个虚拟信道緩冲器(134)均具有有限的存储空间。当在短时间 内接收众多信息包时,可能会填满虚拟信道緩沖器,因此不能够把更多 的信息包放入緩冲器中。在其它协议中,到达其緩沖器为满的虚拟信道 上的信息包将会被丟弃。然而,在这一例子中,使用总线导线的控制信 号使虛拟信道緩沖器(134)能够通过虚拟信道控制逻辑通知周围的路 由器挂起虛拟信道中的传输,即挂起某种特定通信类型的信息包的传 输。当如此地挂起虚拟信道时,不影响其它所有虚拟信道,从而可以继 续按全容量进行操作。通过每个路由器把控制信号一路向后连线于每个 路由器的相关的网络接口控制器(108)。对每个网络接口控制器进行配 置,以当接收到这样的信号时,能够拒绝从其相关的存储器通信控制器 (106 )或者从其相关的IP块(104 )接受针对所挂起的虚拟信道的通信 指令。在这一方式下,虚拟信道的挂起影响实现该虚拟信道的所有硬件, 一路向后一直影响到初始IP块。
在虛拟信道中挂起信息包传输的一个效果是,图3的体系结构中不 再丟弃信息包。在某一诸如Internet协议等不可靠的协议中,当路由器 遇到其中信息包可能被丟弃的情况时,图3的例子中的路由器通过它们的虚拟信道緩沖器(134)和它们的虚拟信道控制逻辑(132)挂起虚拟
信道中信息包的所有传输,直至緩冲器空间再次可用,从而消除了任何
不得不丟弃信息包的情况。因此,图3的NOC实现了高度可靠的网络 通信协议,并且具有极薄的硬件层。
为了进一步加以解释,图4描述了流程图,说明了使用根据本发明 的实施例的NOC进行数据处理的一种示范性方法。在类似于这一说明 书中以上所描述的NOC上,即在具有IP块(图3中的104 )(图3中的 100)、路由器(图3中的110)、存储器通信控制器(图3中的106)、以 及网络接口控制器(图3中的108)的芯片内实现的NOC(图3中的102) 上,实现图4的方法。每个IP块(图3中的104)适应于贯穿存储器通 信控制器(图3中的106)和网络接口控制器(图3中的108)的路由 器(图3中的110)。在图4的方法中,可以把每个IP块作为用作在NOC 中进行数据处理的构件块的同步或异步逻辑设计的可重用单元加以实 现。
图4的方法包括通过存储器通信控制器(图3中的106 )控制(402 ) IP块和存储器之间的通信。在图4中的方法中,存储器通信控制器包括 多个存储器通信执行引擎(图3中的140)。在图4中的方法中,还通过 令每个存储器通信执行引擎独立地和与其它存储器通信执行引擎并行 地执行(404) —条完整的存储器通信指令,控制(402) IP块和存储器 之间的通信,并且在网络和IP块之间执行(406)存储器通信指令的双 向流。在图4中的方法中,存储器通信指令可以包括翻译后备緩沖器控 制指令、超高速緩存控制指令、屏障指令、存储器加载指令、以及存储 器存储指令。在图4的方法中,存储器可以包括片外主RAM、通过存 储器通信控制器直接连接于IP块的存储器、作为IP块实现的片内存储 器、以及片内超高速緩存。
图4的方法还包括由网络接口控制器(图3中的108)通过路由器 控制(408)IP块间通信。在图4的方法中,控制(408)IP块间通信还 包括每个网络接口控制器把通信指令从命令格式转换成(410 )网络信 息包格式,并且通过每个网络接口控制器在网络上实现(412)虚拟信 道,包括按类型表示网络信息包的特征。
图4的方法还包括每个路由器(图3中的110)通过两或两个以上虚拟通信信道传输(414)消息,其中,由通信类型表示每个虚拟通信
信道的特征。例如,通信指令类型,因而虚拟信道类型包括IP块间基 于网络地址的消息、请求消息、对请求消息的响应、使导向超高速缓存 的消息无效;存储器加载与存储消息;以及对存储器加载与存储消息的 响应等。为了支持虚拟信道,每个路由器还包括虚拟信道控制逻辑(图 3中的132)和虚拟信道緩沖器(图3中的134)。虚拟信道控制逻辑检 查每个所接收的信息包,即检查其所赋予的通信类型,并且把每个信息 包放入针对所述通信类型的输出虚拟信道緩冲器,以通过端口向NOC 上的相邻路由器进行传输。
图5
在根据本发明的实施例的NOC上,可以把计算机软件应用作为软 件流水线加以实现。为了进一步加以解释,图5描述了数据流图,说明 了流水线实例的操作。图5的流水线实例(600)包括3个执行的阶段 (602, 604, 606)。软件流水线为这样一种计算机软件应用将其分割 为互相协作,以按顺序执行一系列数据处理任务的计算机程序指令的模 块,即'阶段,的集合。流水线中的每个阶段由可灵活配置的计算机程序 指令的模块构成,该模块由阶段ID加以标识,其中每个阶段在NOC上 的IP块上的执行线程上执行。这些阶段之所以为'可灵活配置的,,在于 每个阶段可以支持所述阶段的多个实例,从而当需要时可以依据工作负 荷,通过对阶段的更多的实例进行取例(instantiate),对流水线进行调 "P 。
因为通过在NOC (图2中的102)的IP块(图2中的104)上执行 的计算机程序指令实现每个阶段(602, 604, 606),所以每个阶段(602, 604, 606)能够通过IP块(使用以上所描述的存储器寻址的消息)的存 储器通信控制器(图2中的106)存取所编址的存储器。而且,至少一 个阶段在其它阶段之间发送基于网络地址的通信,其中,基于网络地址 的通信维持着信息包的次序。在图5的例子中,阶段1和阶段2均在阶 段之间发送基于网络地址的通信,阶段1从阶段1向阶段2发送基于网 络地址的通信(622 ~ 626 ),阶段2向阶段3发送网络寻址的通信(628 ~ 632)。
17图5的例子中的基于网络地址的通信(622 ~ 632)维持着信息包的 次序。 一条流水线的各阶段之间的基于网络地址的通信为同一类型的所 有通信,因此流经相同的虚拟信道,如以上所描述的。由根据本发明的 实施例的路由器(图3中的110)路由这样的通信中的每个信息包,按 顺序,即按FIFO (先进先出)的顺序进入和离开虚拟信道緩冲器(图3 中的134),从而维持了严格的信息包次序。在根据本发明的基于网络地 址的通信中维持信息包的次序,提供了消息的完整性,因为按与信息包 所处次序相同的次序接收信息包,从而消除了数据通信协议栈的较高层 中对追踪信息包顺序的需求。与其中网络协议,即Internet协议不仅不 对信息包顺序作出保证,而且通常实际上无序地提交信息包的TCP/IP 的例子相反,将这一保证交由数据通信协议栈的较高层中的传输控制协 议负责,以使信息包处于正确的次序,并且把一条完整的消息提交于协 议栈的应用层。
每个阶段实现与下一个阶段的产生者/消费者关系。阶段1通过主 接口处理器(105)从运行在一台计算机(152)上的应用(184)接收 工作指令和工作件数据(620 )。阶段1针对工作件数据执行其被指派的 数据处理任务,产生输出数据,并且把所产生的输出数据(622, 624, 626 )发送至阶段2,阶段2通过对来自阶段1的所产生的输出数据执行 其被指派的数据处理任务,消费来自阶段l的所产生的输出数据,从而 从阶段2产生出输出数据,并且将所产生的输出数据(628, 630, 632) 发送至阶段3,接下来,通过对来自阶段2的所产生的输出数据执行其 被指派的数据处理任务,阶段3消费来自阶段2的所产生的输出数据, 从而从阶段3产生出输出数据,然后将其所产生的输出数据(634, 636) 存储在输出数据结构(638)中,以最终通过主接口处理器(105)返回 至主计算机(152)上的初始应用程序(184)。
把向初始应用程序的返回称为'最终的,,因为在准备返回输出数据 结构(638)之前,可能需要计算相当多的返回数据。在本例中,流水 线(600 )仅由3个阶段(602 ~ 606)中的6个实例(622 ~ 632 )加以 表示。然而,根据本发明的实施例的许多流水线可以包括多个阶段和多 个阶段的实例。例如,在对应用取模的原子过程中,输出数据结构(638 ) 可以按包括数十亿个亚原子微粒的精确量子状态的原子过程的某一具体纳秒表示状态,其中,每个亚原子微粒要求流水线的不同阶段中的成
千上万次计算。或者在视频处理应用中,又例如,输出数据结构(638 )
可以代表视频桢,该视频桢由成千上万个像素的当前显示状态构成,其 中,每个像素可能要求流水线的不同阶段中的众多计算。
把流水线(600)的每个阶段(602 ~ 606)的每个实例(622 ~ 632 ) 作为NOC (图2中的102 )上的独立IP块(图2中的104 )上所执行的 计算机程序指令的应用级模块加以实现。把每个阶段赋予NOC的IP块 上的执行线程,向阶段的每个实例赋予阶段ID。在本例中,使用阶段l 的实例(608)、阶段2的3个实例(610, 612, 614)、以及阶段3的2 个实例(616、 618)实现流水线(600)。在启动阶段,主接口处理器(105) 使用阶段的2的实例的数目和阶段2的每个实例的网络地址配置阶段1 (602, 608)。阶段l (602, 608 )可以分布其所得到的工作负荷(622, 624, 626),例如,通过在阶段2的实例(610 ~ 614 )之间均等地分布 工作负荷。在启动阶段使用授权阶段2的实例把其所得到的工作负荷发 送于其的阶段3的每个实例的网络地址配置阶段2的每个实例(610~ 614)。在这一例子中,把实例(610, 612)均配置为能够把它们的工作 负荷发送于阶段3的实例(616),而仅阶段2的实例(614)向阶段3 的实例(618 )发送工作(632 )。如果实例(616)变为试图处理实例(618 ) 的两倍工作负荷的瓶颈,则可以对阶段3的另实例进行取例,如果需要 的话,甚至可在运行时间实时地进行这一实例。
在其中把计算机软件应用(500)分割为阶段(602 ~ 606)的图5 的例子中,可以使用针对下一个阶段的每个实例的阶段ID,对每个阶段 进行配置。使用阶段ID对阶段进行配置意味着针对下一个阶段的每个 实例,向阶段提供标识符,其中,把所述标识符存储在可用于所述阶段 的存储器中。使用下一个阶段的实例的标识符进行配置,可以包括使用 下一个阶段的实例数目以及下一个阶段的每个实例的网络地址进行配 置,如以上所提到的。在当前的例子中,可以使用针对阶段的每个实例 (610-614)的阶段标识符,即'ID,,对阶段l的单一的实例(608)进 行配置,其中,阶段1的'下一个阶段,当然为阶段2。可以使用针对下一 个阶段的每个实例(616, 618)的阶段ID,对阶段2的3个实例(610~ 614)中的每个进行配置,其中,阶段2的下一个阶段自然为阶段3。
19依此类推,在这一例子中,由于阶段3代表了不具有下一个阶段的阶段
细节(trivial case),因此,配置这样什么都没有的阶段表示使用下一个 阶段的阶段ID对所述阶段进行配置。
如此处所描述的,使用针对下一个阶段的实例的ID对阶段进行配 置,向该阶段提供了跨越各阶段进行负载平衡所需的信息。例如,在其 中把计算机软件应用(500)分成几个阶段的图5的流水线中,依赖于 各阶段的性能,通过每个阶段的多个实例,对各阶段进行负载平衡。例 如,可以依赖于一个或多个阶段的性能,通过监视各阶段的性能以及对 每个阶段的多个实例进行取例,进行这样的负载平衡。可以通过对每个 阶段进行配置,执行对各阶段的性能的监视,以向监视应用(502)报 告性能统计,接下来,安装监视应用(502),并且令其运行在IP块或者 主接口处理器上的执行的另线程上。例如,性能统计可以包括完成数据 处理任务所需的时间、在特定时间周期内完成的多个数据处理任务等, 这是这一技术领域中的熟练技术人员所熟悉的。
当所监视的性能指示对新实例的需求时,可以通过主接口处理器(105), 依赖于一个或多个阶段的性能进行对每个阶段的多个实例的取例。如所提及 的,在这一例子中,对实例(610, 612)均加以配置,以能够将它们的所得 到的工作负荷(628, 630)发送于阶段3的实例(616),然而仅阶段2的实 例(614 )把工作((work) ( 632 )发送于阶段3的实例(618 )。如果实例(616 ) 变为试图处理实例(618)的两倍工作负荷的瓶颈,则可以对阶段3的 另实例进行取例,如需要的话,甚至可在运行时间实时地进行这一取例。
图6
为了进一步地加以解释,图6描述了流程图,说明了在根据本发明的 实施例的NOC上的软件流水线操作的一种示范性方法。在本说明书中, 在类似于以上所描述的NOC上实现图6的方法,即在芯片(图2中的100) 上实现的NOC (图2中的102),具有IP块(图2的104)、路由器(图2中 的110)、存储器通信控制器(图2中的106)、以及网^#口控制器(图2中 的108)。在图6的方法中,把每个IP块作为用作NOC中数据处理的构件块 的同步或异步逻辑设计的可重用单元加以实现。
图6的方法包括把计算机软件应用分割(702)为阶段,其中,把每个阶段作为由阶段ID加以标识的计算机程序指令的可灵活配置的模块加以实现。
在图6的方法中,可以通过使用针对下一个阶段的每个实例的阶段ID配置 (706)每个阶段,把计算机软件应用分割(702)为阶段。图6的方法还包 括在IP块的执行线程上执行(704 )每个阶段。
在图6的方法中,把计算机软件应用分割(702)为阶段还可以包括把每 个阶段赋予(708) IP块上的执行线程,向每个阶段赋予阶段ID。在这样的 实施例中,在IP块上的执行线程上执行(704 )每个阶段可以包括"执行(710 ) 第一阶段,产生输出数据;第一阶段把所产生的输出数据发送(712)至第二 阶段;以及第二阶段消费(714)所产生的输出数据。
在图6的方法中,把计算机软件应用分割(702)为阶段还可以包括对各 阶段进行负载平衡(716),通过监视(718)各阶段的性能,并且依赖于一个 或多个阶段的性能,对每个阶段的多个实例进行取例(720),执行这一负载 平衡。
主要针对NOC上的软件流水线操作的全功能计算机系统描述了本发明 的示范性实施例。然而,这一技术领域中的熟练技术人员读者将会意识到, 也可以在设置于随任何适当数据处理系统一起使用的计算机可读媒体上的计 算机程序产品中体现本发明。这样的计算机可读媒体可以为针对机器可读信 息的传输媒体或者可记录媒体,包括磁媒体、光媒体、或者其它适当的媒体。 可记录媒体的例子包括硬驱动器中的》兹盘或者软盘、针对光驱动器的紧致盘、 磁带、以及其它这一技术领域中的熟练技术人员所熟悉的可记录媒体。传输 媒体的例子包括针对话音通信的电话网络、诸如Ethernet 等的数字数据通 信网络、与Internet协议和World Wide Web通信的网络、以及诸如根据IEEE 802.11规范系列所实现的网络等的无线传输媒体,这一技术领域中的熟练技 术人员将会立刻意识到,任何具有适当程序设计机制的计算机系统将能够执 行体现在程序产品中的本发明的方法的步骤。这一技术领域中的熟练技术人 员将会立刻意识到,尽管本说明书中所描述的某些示范性实施例面向所安装 的软件,并且运行在计算机硬件上,然而,作为固件或者硬件所实现的可选 的实施例,也在本发明的范围之内。
从以上的描述可以看出,在不背离本发明的宗旨的情况下,可以在本发 明的各实施例中进行修改与变动。本说明书中的描述仅为说明性的,而不应
将其视为限制性的。本发明的范围仅由下列权利要求的语言加以限制。
2权利要求
1. 一种片内网络上软件流水线操作的方法,所述片内网络包括集成处理器块、路由器、存储器通信控制器以及网络接口控制器,每个集成处理器块适配于贯穿存储器通信控制器和网络接口控制器的路由器,每个存储器通信控制器控制集成处理器块和存储器之间的通信,每个网络接口控制器通过路由器控制集成处理器块间通信,该方法包括把计算机软件应用分成几个阶段,每个阶段包括由阶段ID所标识的计算机程序指令的可灵活配置的模块;以及在集成处理器块上的执行线程上执行每个阶段。
2. 根据权利要求1所述的方法,其中,把计算机软件应用分成几 个阶段还包括使用针对下一个阶段的每个实例的阶段ID对每个阶段进 行配置。
3. 根据权利要求1所述的方法,其中,把计算机软件应用分成几 个阶段还包括对各阶段进行负载平衡,包括监视各阶段的性能;以及依赖于一个或多个阶段的性能,对每个阶段的多个实例进行取例。
4. 根据权利要求1所述的方法,其中把计算机软件应用分成几个阶段还包括把每个阶段赋予集成处理器 块上的执行线程,向每个阶段赋予阶段ID;以及在集成处理器块上的执行线程上执行每个阶段还可以包括 执行第一阶段,产生输出数据;由第一阶段把所产生的输出数据发送至第二阶段;以及 由第二阶段消费所产生的输出数据。
5. 根据权利要求1所述的方法,其中,每个阶段能够通过集成处 理器块的存储器通信控制器存取被寻址的存储器。
6. 根据权利要求1所述的方法,其中,在集成处理器块上的执行线 程上执行每个阶段还包括在各阶段之间发送基于非存储器地址的通信。
7. 根据权利要求6所述的方法,还包括在发送基于非存储器地址的 通信的同时维持信息包的次序。
8. —种用于软件流水线操作的片内网络,所述片内网络包括集成处理器块、路由器、存储器通信控制器以及网络接口控制器,每个集成 处理器块适配于贯穿存储器通信控制器和网络接口控制器的路由器,每 个存储器通信控制器控制集成处理器块和存储器之间的通信,每个网络接口控制器通过路由器控制集成处理器块间通信,所述片内网络包括 被分成几个阶段的计算机软件应用,每个阶段包括由阶段ID标识 的计算机程序指令的可灵活配置的模块;以及在集成处理器块上的执行线程上执行的每个阶段。
9. 根据权利要求8所述的片内网络,其中,被分成几个阶段的计 算机软件应用还包括使用针对下一个阶段的每个实例的阶段ID进行配 置的每个阶段。
10. 根据权利要求8所述的片内网络,其中,被分成几个阶段的计 算机软件应用还包括依赖于各阶段的性能使用每个阶段的多个实例被负载平衡的阶段。
11. 根据权利要求8所述的片内网络,其中被分成几个阶段的计算机软件应用还包括被赋予集成处理器块上的 执行线程的每个阶段,被赋有阶段ID的每个阶段;以及在集成处理器块上的执行线程上执行的每个阶段还包括在集成处理器块上执行的第一阶段,所述第一阶段产生输出数据,把所 产生的输出数据发送至第二阶段;以及消费所产生的输出数据的所述第二阶段。
12. 根据权利要求8所述的片内网络,其中,每个阶段能够通过集 成处理器块的存储器通信控制器存取被寻址的存储器。
13. 根据权利要求8所述的片内网络,其中,在集成处理器块上的执 行线程上执行每个阶段还可以包括至少一个阶段的各阶段之间的发送基于网 络地址的通信。
14. 根据权利要求13所述的方法,其中,基于网络地址的通信维持 信息包的次序。
15. —种计算机可读媒体,包括程序,当该程序执行时,该程序执行操 作,以实现根据权利要求1 ~ 7中任何根据权利要求所述的方法中的步骤。
全文摘要
一种片内网络,其包括集成处理器块、路由器、存储器通信控制器、以及网络接口控制器,其中每个集成处理器块均适应于贯穿存储器通信控制器和网络接口控制器的路由器,其中,每个存储器通信控制器控制集成处理器块和存储器之间的通信,每个网络接口控制器通过路由器控制集成处理器块间通信。所述片内网络还包括被分成几个阶段的计算机软件应用,每个阶段包括由阶段ID所标识的计算机程序指令的可灵活配置的模块;其中每个阶段在集成处理器块上的执行线程上执行。
文档编号H04L12/56GK101430652SQ20081016171
公开日2009年5月13日 申请日期2008年9月22日 优先权日2007年11月8日
发明者乔恩·K·克里格尔, 保罗·E·沙德特, 埃里克·O·梅杰德里克, 拉塞尔·D·胡佛 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1