流式传输直接线程间缓冲区封包的方法、装置、片上网络的制作方法

文档序号:6597008阅读:306来源:国知局
专利名称:流式传输直接线程间缓冲区封包的方法、装置、片上网络的制作方法
技术领域
本公开涉及计算机领域,具体涉及线程化计算机。更具体地,本公开涉及片上网络 (NOC)集成电路处理器。
背景技术
片上网络(NOC)是将网络架构应用于单个芯片以创建唯一处理单元的新颖集成 电路。不同于利用标准单个冯诺伊曼架构(该架构具有控制单元,用以协调沿系统总线和 输入/输出(I/O)总线的、算术逻辑单元与存储器之间以及算术逻辑单元与输入/输出缓 冲区之间的数据流),N0C使用封包在逻辑节点(每个逻辑节点都可以利用冯诺伊曼型处理 器)之间传递数据。每个封包包括报头(其对要接收并处理该封包的逻辑节点进行寻址) 和有效载荷(例如,数据、指令等)。然而,根据逻辑节点的数据加载协议需求,封包中的数 据时常是未对齐或没对齐的。

发明内容
提出用于对在高度线程化的片上网络(NOC)处理器内的线程间通信缓冲区封包 中传输的向量操作数进行任意对齐计算机实现的方法、系统和计算机程序产品。NOC节点中 的多路器集合对来自传入的已压缩线程间通信缓冲封包的数据字(data word)聚合进行重 对齐和提取。所提取的数据字聚合由节点中的执行单元用作操作数。本发明的上述以及其他目的、特征和优势将在下面详细书面描述中变得显而易 见。


在所附权利要求中记载了认为是本发明的特征的新颖特性。然而,通过参照下文 结合附图对说明性实施方式的具体描述来最好地理解本发明本身及其优选实施方式、更多 目的和优点图1描述了具有多个线程的示例性片上网络(NOC);图2示出了来自数据封包的未对齐数据,其存储在图1所描述的一个线程内的封 包缓冲区中;图3描绘了根据本发明一个实施方式的利用一个或多个NOC的计算机的示例性实 施方式;图4示出了图3中描绘的一个或多个NOC的附加细节;图5描绘了来自图4中所示NOC的IP块节点的附加细节;图6示出了图5中所示IP块节点处的处理器内核的附加细节;图7描绘了单个处理器内核中的多个线程;图8示出了 NOC的一个示例性实现,其利用新颖数据封包对齐/压缩逻辑来执行 图形程序;
图9描绘了来自未对齐数据封包的、由位于图1-图8中描述的NOC中的IP块节点内的对齐/压缩逻辑进行对齐和压缩的数据;图10示出了用于提取并且对齐直接线程间通信缓冲区(DITCB)中数据的IP块节 点内的逻辑;以及图11是由本发明用于对齐、压缩和重对齐在NOC中的IP块节点之间传输的数据 所采取的示例性步骤的高层流程图。
具体实施例方式某些软件应用以如下方式来使用片上网络(NOC),即,将NOC中的不同节点分配给 作业的不同部分。例如,参考图1中描绘的N0C102。NOC 102从主计算机104中的用户应 用112接收软件指令,处理这些指令,继而将执行结果输出到输出设备106(例如,监视器、 打印机、存储设备等)。在图1描述的示例中,NOC 102中存在四个硬件线程108a-d,每个 线程被指派用于执行由用户应用112描述的作业的不同部分。每个线程108a-d包括硬件 处理器逻辑,并且还可以与专用软件集合相关联,以用于执行用户应用112所描述的整体 作业的特定子任务。因此,线程108a可以处理整体作业的第一部分,得到被置于封包IlOa 中并被发送到第二线程108b的第一输出。第二线程继而处理来自封包IlOa的数据,得到 被封装到封包IlOb中并被发送到第三线程108c的第二输出。第三线程处理来自封包IlOb 的数据,得到被封装到封包IlOc中并被发送到第四线程108d的第三输出,而第四线程108d 处理来自封包IlOd的数据。第四线程108d继而生成被发送到输出设备106的最终输出封 包110d,从而完成整体作业所需的最终操作。线程108a-d中的一个示例性线程的附加细节在图2中示为线程208。线程208中 是处理硬件202,其可以是用于处理来自传入数据封包204 (例如,图1中给出的封包110a) 的数据的处理器、专用集成电路(ASIC)等。来自数据封包204的数据由封包接收逻辑218 接收,继而被加载至封包缓冲区206中。向量寄存器文件210和向量执行流水线212逻辑 继而使数据字的每一行(即,数据字的聚合)被加载至处理硬件202以便执行。注意图2 中的如下问题。第一,来自封包缓冲区206的每行数据作为固定大小的单个聚合被加载到 处理硬件202中,而不考虑数据是否在一行中。第二,在图2给出的示例中,只要执行了加 载命令,处理硬件202便加载整个四字行(four-word line),而不考虑行中实际上有多少 个字。因此,由于数据字的聚合(行)是不同大小的,所以在封包缓冲区206 (和数据封包 204中相关联的数据)中便有了“孔洞(hole)”。换言之,行204将包括数据字“a、b、c”的 数据聚合存储为三字聚合,其没有“d”字。因此,在封包缓冲区206的行214中存在空块 216。同样,由于数据聚合具有少于四个字,存储在封包缓冲区206中的其它数据行也存在 空块单元。传输和“缓冲”不存在的字降低了系统(特别是N0C)的整体效率,因为传输业 务被充满(空数据),并且必须将封包缓冲区设计得足够大,以为这种不存在的数据预留空 间。在研究本发明如何解决图2中给出的问题之前,参考图3中描绘的示例性计算机 302,其使用根据本发明的一个或多个N0C。如上所述,图3记载了示例性计算机302的框 图,其包括至少一个计算机处理器304。计算机处理器304可以是标准的冯诺伊曼类型处 理器或N0C。计算机302还可以包括随机访问存储器(RAM) 306,它是通过高速存储器总线308和总线适配器310与处理器304和计算机302的其它组件耦合的系统存储器。RAM 306中存储的是应用程序312,即用于执行特定数据处理任务的计算机程序指令的模块,其中数据处理任务诸如文字处理、电子表格、数据库操作、视频游戏、模拟股票 市场、原子的量子过程仿真或者其它用户级应用。应用程序312还包括诸如上文图1-图2 和下文图8-图11所描述的控制过程。RAM 306中还存储有操作系统(0S)314。OS 314包 括外壳(shell)316,用于提供对诸如应用程序312等资源的透明用户访问。通常,外壳316 是提供用户与操作系统之间的解释器和接口的程序。更具体地,外壳316执行被输入到命 令行用户界面的命令或来自于文件的命令。因此,外壳316 (也称作命令处理器)通常是操 作系统软件层级的最高级别,并充当命令解释器。外壳提供系统提示,解释通过键盘、鼠标 或其他用户输入介质而输入的命令,并且将经过解释的命令发送到操作系统适当的较低级 别(例如,核318)用于处理。注意,尽管外壳316是基于文本的、面向行的用户界面,但是 本发明将同样很好地支持其他用户界面模式,诸如图形、语音、手势等。如上所述,OS 314还包括核318,其包括OS 314的较低级别的功能,包括提供OS 314的其它部分和应用程序(例如,应用312)所需的基本服务,这些基本服务包括存储器管 理、处理和任务管理、磁盘管理以及鼠标和键盘管理。尽管RAM 306中示出了图3示例中的操作系统314和应用312,但这种软件组件还 可以存储在非易失存储器中,诸如存储于作为数据存储320的盘驱动上。根据本发明的实施方式,示例计算机302包括两个示例NOC =NOC视频适配器322 和NOC协处理器324。NOC视频适配器322是I/O适配器的示例,其专门被设计用于对诸如 显示器屏幕或者计算机监视器的显示设备346的图形输出。NOC视频适配器322通过高速 视频总线326、总线适配器310和前端总线328 (其也是高速总线)连接至处理器304。示例NOC协处理器324通过总线适配器310、前端总线328和前端总线330 (其也 是高速总线)连接至处理器304。NOC协处理器324被优化为在主处理器304的命令下加 速特定的数据处理任务。示例NOC视频适配器322和NOC协处理器324每个都包括根据本发明实施方式的 N0C,其包括集成处理器(“IP”)块、路由器、存储器通信控制器以及网络接口控制器,其中 每个IP块通过存储器通信控制器和网络接口控制器适配至路由器,每个存储器通信控制 器控制IP块和存储器之间的通信,并且每个网络接口控制器控制通过路由器的IP块间通 信。NOC视频适配器322和NOC协处理器324针对使用并行处理并且还需要对共享存储器 进行快速随机访问的程序而进行优化。然而,在一个实施方式中,这里所描述并且预期由本 发明使用的NOC仅利用了封包数据,而非对共享存储器的直接访问。再次,需要注意,预期 由本发明使用的示例性NOC架构的附加细节将在下文图4-7中给出。继续图3,计算机302可以包括盘驱动适配器332,其通过扩展总线334和总线适 配器310耦合至处理器304和计算机302的其它组件。盘驱动适配器332以表示为数据存 储320的盘驱动的形式将非易失性数据存储连接至计算机302。在用于利用根据本发明实 施方式的NOC进行数据处理的计算机中使用的盘驱动适配器包括集成驱动电子(“IDE”) 适配器、小型计算机系统接口( “SCSI”)适配器以及本领域技术人员可以想到的其它适 配器。非易失性计算机存储器还可以实现为光盘驱动、电可擦除可编程只读存储器(称为 “EEPR0M”或者“闪存”存储器)等,这将是本领域技术人员可以想到的。
示例计算机302还包括一个或多个输入/输出(“I/O”)适配器336。I/O适配器 336实现例如通过软件驱动器和计算机硬件的、面向用户的输入/输出,以用于对向诸如计 算机显示屏幕的显示设备的输出以及来自诸如键盘和鼠标的用户输入设备338的用户输 入进行控制。
示例计算机302还可以包括通信适配器340,用于与其它计算机342的数据通信, 以及与数据通信网络344的数据通信。这种数据通信可以通过RS-232连接、通过诸如通用 串行总线(“USB”)的外部总线、通过诸如IP数据通信网络的数据通信网络以及按照本领 域技术人员可以想到的其它方式来串行地执行。通信适配器实现数据通信的硬件级别,通 过它,一个计算机向另一计算机直接地或是通过数据通信网络发送数据。可以用于根据本 发明实施方式的、利用NOC进行数据处理的通信适配器示例包括用于有线拨号通信的调 制解调器,用于有线数据通信网络通信的以太网(IEEE 802.3)适配器,以及用于无线数据 通信网络通信的IEEE 802. χ适配器。注意,虽然NOC视频适配器322和NOC协处理器324仅是NOC的两个示例性使用, 但是这里所描述的NOC和工作封包控制可以在将NOC用于数据处理的任何上下文中找到。现在参考图4,给出了根据本发明实施方式的示例性NOC 402的功能性框图。NOC 402是可以用作图3中示出的NOC视频适配器322和/或NOC协处理器324的示例性N0C。 NOC 402实现在集成电路芯片400上,并且由主计算机104控制(例如,图3中给出的处理 器304)。NOC 402包括集成处理器(“IP”)块404、路由器410、存储器通信控制器406以 及网络接口控制器408。每个IP块404通过存储器通信控制器406和网络接口控制器408 适配至路由器410。每个存储器通信控制器406控制IP块404与存储器(例如,片上存储 器414和/或片外存储器412)之间的通信,并且每个网络接口控制器408控制通过路由器 410的IP块间通信。在NOC 402中,每个IP块404表示同步或者异步逻辑设计的可重用单元,其被用 作NOC 402内用于数据处理的构造块。术语“IP块”有时称为“知识产权块”,从而表示作 为由一方(也即,知识产权方)所有的设计的IP块,其将被授权给其他用户或者半导体电 路的设计者。然而,在本发明的范围内,IP块无需受制于任何特定的所有权,因此该术语在 本说明书中总是解释为“集成处理器块”。正如在此规定的,IP块404是逻辑、单元或者芯 片布图设计的可重用单元,其可以作为也可以不作为知识产权的主题。此外,IP块404是 可以形成为专用集成电路(ASIC)芯片设计或者现场可编程门阵列(FPGA)逻辑设计的逻辑 内核。通过类比来描述IP块的一种方法是IP块对于NOC设计就如同库对于计算机编 程,或者离散集成电路组件对于印刷板设计。在根据本发明实施方式的NOC中,IP块可以 实现为通用门网表,实现为完整的专用或者通用微处理器,或者以本领域技术人员可以想 到的其它方式来实现。网表是IP块的逻辑功能的布尔-代数表示(门、标准单元),类似 于用于高级程序应用的汇编代码列表。例如,NOC还可以按照合成形式来实现,通过诸如 Verilog或者VHSIC硬件描述语言(VHDL)来描述。除了网表和合成实现之外,NOC还可以 通过较低级的物理描述来表达。诸如串行器/解串行器(SERDES)、锁相环路(PLL)、数模转 换器(DAC)、模数转换器(ADC)等模拟IP块元件可以按照诸如图形数据系统II (GDSII)的 晶体管布局格式来分发。布局格式中有时也提供IP块的数字元件。
图4中示出的每个IP块404通过存储器通信控制器406适配至路由器410。每个 存储器通信控制器是同步或者异步逻辑电路的集合,其适于提供IP块和存储器之间的数 据通信。IP块和存储器之间的这种通信的示例包括存储器加载(load)指令和存储器存储 (store)指令。存储器通信控制器406将在下文参考图5进行更为详细地描述。图4中描绘的每个IP块404还通过网络接口控制器408适配至路由器410。每个 网络接口控制器408控制IP块404之间通过路由器410的通信。IP块之间的通信的示例 包括携带数据的消息(例如,消息/数据封包)以及用于在并行应用中和流水线化应用中 的IP块间处理数据的指令。网络接口控制器408将在下文参考图5更为详细地描述。路由器410以及路由器间的链路420实现图4中示出的NOC 402的网络操作。链 路420是在连接所有路由器的物理的、并行的线路总线上实现的封包结构。换言之,每个链 路实现在足够宽的线路总线上,以同时提供整个数据交换封包(包括所有报头信息和有效 载荷数据)。如果封包结构包括64个字节(例如,包括8个字节的报头和56个字节的有效 载荷数据),则与每个链路相对的线路总线是64字节宽,因此需要512条线路。此外,每个 链路420都是双向的,使得在链路封包结构包括64字节的情况下,线路总线在网络中的每 个路由器410与其每个邻居路由器410之间实际上包含1024条线路。消息可以包括不止 一个封包,但是每个封包精确地适合线路总线的宽度。如果将路由器与线路总线的每个部 分之间的连接称为端口,则每个路由器包括五个端口,网络上数据传输的四个方向中的每 个方向一个端口,并且第五端口用于将路由器通过存储器通信控制器和网络接口控制器适 配至特定的IP块。如上所述,每个存储器通信控制器406控制IP块与存储器之间的通信。存储器可 以包括片外主RAM 412、通过存储器通信控制器406直接连接至IP块的存储器415、可作为 IP块414而启用的片上存储器以及片上高速缓存。在图4示出的NOC 402中,任一片上存 储器(414、415)例如都可以实现为片上高速缓存存储器。所有这些形式的存储器可以部署 在相同的地址空间中(物理空间或者虚拟地址),即使对于直接附接至IP块的存储器也是 如此。因此,存储器寻址的消息相对于IP块而言可以是完全双向的,因为可以从网络上任 何位置的IP块直接寻址此类存储器。IP块上的存储器414可以从该IP块或者从NOC中的 任何其它IP块进行寻址。片上存储器415直接附接至存储器通信控制器,并且可以由通过 该存储器通信控制器适配至网络的IP块来寻址。注意,片上存储器415还可以从NOC 402 中任意位置的任何其它IP块404进行寻址。示例性NOC 402包括两个存储器管理单元(“MMU” ) 407和409,其示出了用于根 据本发明实施方式的NOC的两个备选存储器架构。MMU 407通过特定的IP块404来实现, 其允许该IP块404中的处理器在虚拟存储器中进行操作,同时允许NOC的整个其余架构在 物理存储器地址空间中进行操作。MMU 409为片外实现,其通过称为端口 416的数据通信 端口连接至N0C。端口 416包括在NOC 402和MMU 409之间传导信号所需的管脚和其它互 连,以及将消息封包从NOC封包格式转换为外部MMU 409所需总线格式的足够智能性。MMU 409的外部位置意味着N0C 402的所有IP块404中的所有处理器可以在虚拟地址空间中 操作,其中与片外存储器的物理地址的所有转换由片外MMU 409来处理。除了通过使用MMU407和409而示出的两种存储器架构之外,描绘为端口 418的数 据通信端口示出了可以用于根据本发明实施方式的NOC的第三种存储器架构。端口 418提供NOC 402的IP块404与片外存储器412之间的直接连接。由于在处理路径中没有MMU, 该架构提供NOC的所有IP块对物理地址空间的使用。在双向地共享地址空间时,NOC的所 有IP块可以由通过直接连接至端口 418的IP块来引导的存储器寻址消息(包括加载和存 储)来访问地址空间中的存储器。端口 418包括在NOC和片外存储器412之间传导信号所 需的管脚和其它互连,以及将消息封包从NOC封包格式转换为片外存储器412所需总线格 式的足够智能性。在图4示出的示例性NOC 402中,IP块404之一被指定为主机接口处理器405。主机接口处理器405提供NOC 402与主机计算机104 (如图1中所介绍)之间的接口。主机 接口处理器405向NOC上的其它IP块提供数据处理服务,例如包括从主机计算机接收NOC 数据处理请求并在NOC的IP块间进行分派。主机接口处理器405通过诸如端口 417的数据通信端口连接至较大的主机计算机 104 (最初在图1中描绘)。端口 417包括在NOC 402和主机计算机104之间传导信号所需 的管脚和其它互连,以及将消息封包从NOC 402转换为主机计算机104所需的总线格式的 足够智能性。在图3所示计算机302中的NOC协处理器324的示例中,此类端口将提供NOC 协处理器324的链路结构与前端总线330所需协议之间的数据通信格式转换,其中前端总 线330位于NOC协处理器324和总线适配器310之间。注意,元件404、406、408和410的每个群组可以视作并且称为NOC 402中的节点 422。现在参考图5,其根据本发明的实施方式给出了 NOC 402的附加细节。如图4和图 5中所描述的,NOC 402在芯片(例如,图4中给出的芯片400)上实现,并且包括集成处理 器(“IP”)块404、路由器410、存储器通信控制器406以及网络接口控制器408。每个IP 块404通过存储器通信控制器406和网络接口控制器408适配至路由器410。每个存储器 通信控制器406控制IP块与存储器之间的通信,并且每个网络接口控制器408控制通过路 由器410的IP块间通信。在图5的示例中,对通过存储器通信控制器406和网络接口控制 器408适配至路由器410的IP块404的集合522进行了扩展,以辅助对其结构和操作的更 为详细的说明。图5示例中的所有IP块、存储器通信控制器、网络接口控制器以及路由器 都按照与扩展集合522相同的方式进行配置。在图5的示例中,每个IP块404包括计算机处理器526和I/O功能524,其中计算 机处理器526包括一个或多个内核550。在此示例中,计算机存储器表示为每个IP块404 中的随机访问存储器(“RAM”)528的分段。如上文参考图4示例描述的,存储器可以占用 物理地址空间的分段,这些分段在每个IP块上的内容可以从NOC中的任意IP块进行寻址 和访问。每个IP块上的处理器526、I/O能力524以及存储器(RAM 528)有效地将IP块实 现为一般可编程的微计算机。然而,如上文所述,在本发明的范围内,IP块通常表示同步或 者异步逻辑的可重用单元,其用作NOC内用于数据处理的构造块。因此,尽管将IP块实现 为一般可编程微计算机是有助于说明的常见实施方式,但本发明不限于此。在图5给出的NOC 402中,每个存储器通信控制器406包括多个存储器通信执行 引擎540。每个存储器通信执行引擎540能够执行来自IP块404的存储器通信指令,包括 网络接口控制器408和IP块404之间的双向存储器通信指令流(544、545、546)。由存储器 通信控制器执行的存储器通信指令可以源自通过特定存储器通信控制器而适配至路由器的IP块,也可以源自NOC 402中任何位置的任何IP块404。换言之,NOC 402中的任何IP 块404可以生成存储器通信指令,并且通过NOC 402的路由器410将该存储器通信指令传 输给与其它IP块关联的其它存储器通信控制器,以便执行该存储器通信指令。这样的存储 器通信指令例如可以包括变换旁视缓冲区控制指令、高速缓存控制指令、屏障(barrier) 指令以及存储器加载和存储指令。 每个所描绘的存储器通信执行引擎540能够独立地以及与其它存储器通信执行 引擎540并行地执行完整的存储器通信指令。存储器通信执行引擎540实现针对存储器通 信指令的并发吞吐而优化的可伸缩存储器事务处理器。存储器通信控制器406支持多个存 储器通信执行引擎540,所有引擎并发地运行以用于多个存储器通信指令的同时执行。新的 存储器通信指令由存储器通信控制器406分配给存储器通信引擎540,并且存储器通信执 行引擎540可以同时接受多个响应事件。在此示例中,所有存储器通信执行引擎540是相 同的。因此,伸缩存储器通信控制器406能够同时处理的存储器通信执行的数目是通过伸 缩存储器通信执行引擎540的数目来实现的。在图5描绘的NOC 402中,每个网络接口控制器408能够将通信指令从命令格式 转换为网络封包格式,以便通过路由器410在IP块404之间传输。通信指令由IP块410或 者由存储器通信控制器406按照命令格式来格式化,并且按照命令格式提供给网络接口控 制器408。命令格式是一种本源(native)格式,其符合IP块404和存储器通信控制器406 的架构性注册文件。网络封包格式是通过网络的路由器410进行传输所需的格式。每个这 样的消息包括一个或多个网络封包。在网络接口控制器中从命令格式被转换为封包格式的 此类通信指令的示例包括IP块与存储器之间的存储器加载指令和存储器存储指令。这样 的通信指令还包括在IP块之间发送消息的通信指令,其携带数据以及用于在并行应用和 流水线化应用中的IP块之中处理数据的指令。在图5示出的NOC 402中,每个IP块404能够通过IP块的存储器通信控制器发 送去往和来自存储器的、基于存储器地址的通信,并继而还能通过其网络接口控制器将该 通信发送至网络。基于存储器地址的通信是存储器访问指令,诸如加载指令或者存储指令, 其由IP块的存储器通信控制器的存储器通信执行引擎来执行。此类基于存储器地址的通 信通常源自IP块,按照命令格式来格式化,并且移交给存储器通信控制器以供执行。很多基于存储器地址的通信是利用消息业务来执行的,因为不论哪个IP块发起 了任何特定的基于存储器地址的通信,将要访问的任何存储器可能位于物理存储器地址空 间中的任何位置(片上或者片外),其可能直接附接至NOC中的任何存储器通信控制器,或 者可以通过NOC的任意IP块而被最终访问。将利用消息业务执行的所有基于存储器地址 的通信从存储器通信控制器传递至相关联的网络接口控制器,以用于从命令格式到封包格 式的转换(利用指令转换逻辑536)以及在消息中通过网络进行传输。在转换为封包格式 时,网络接口控制器还根据基于存储器地址的通信将要访问的一个或多个存储器地址来标 识用于该封包的网络地址。利用存储器地址对基于存储器地址的消息进行寻址。每个存储 器地址由网络接口控制器映射为网络地址,通常是映射为负责一定范围物理存储器地址的 存储器通信控制器的网络位置。自然地,存储器通信控制器406的网络位置也是与该存储 器通信控制器相关联的路由器410、网络接口控制器408以及IP块404的网络位置。每个 网络接口控制器内的指令转换逻辑536能够将存储器地址转换为网络地址,以便通过NOC的路由器来传输基于存储器地址的通信。 在从网络的路由器410接收到消息业务之后,每个网络接口控制器408检查每个 封包的存储器指令。将包含存储器指令的每个封包递交给与接收网络接口控制器相关联的 存储器通信控制器406,其执行存储器指令,而后将封包的剩余有效载荷发送给IP块以便 进行进一步处理。以此方式,在IP块开始执行消息中依赖特定存储器内容的指令之前,存 储器内容总已经准备好支持IP块的数据处理。现在返回在图5中描绘的NOC 402,每个IP块404能够绕过其存储器通信控制器 406,并且通过IP块的网络接口控制器408将IP块间的、网络寻址的通信546直接发送至 网络。网络寻址的通信是由网络地址指引给另一 IP块的消息。如本领域技术人员可以想 到的,此类消息在流水线应用中传输工作数据,在SIMD应用中传输用于IP块之间的单个程 序处理的多个数据,等等。此类消息与基于存储器地址的通信的区别在于它们从开始就是 由发起IP块进行网络寻址的,其中发起IP块知道通过NOC的路由器将该消息引导至的网 络地址。这种网络寻址的通信由IP块通过其I/O功能524以命令格式直接传递给IP块的 网络接口控制器,继而由网络接口控制器转换为封包格式,并且通过NOC的路由器传输至 其他IP决。这种网络寻址通信546是双向的,其潜在地涉及去往或者来自NOC的每个IP 块,这取决于其在任何特定应用中的使用。然而,每个网络接口控制器都能够发送和接收 (通信542)去往和来自相关联路由器的此类通信,并且每个网络接口控制器都能够绕过相 关联的存储器通信控制器406而直接发送和接收(通信546)去往和来自相关联IP块的此 类通信。图5示例中的每个网络接口控制器408还能够实现网络上的虚拟通道,通过类型 来表征网络封包。每个网络接口控制器408包括虚拟通道实现逻辑538,其通过类型对每个 通道指令进行分类,并且在将封包格式的指令移交给路由器410从而在NOC上传输之前,将 指令类型记录在网络封包格式的字段中。通信指令类型的示例包括IP块间基于网络地址 的消息、请求消息、对请求消息的响应、涉及高速缓存的无效消息、存储器加载和存储消息 以及对存储器加载消息的响应等。图5示例中的每个路由器410包括路由逻辑530、虚拟通道控制逻辑532和虚拟 通道缓冲区534。路由逻辑通常实现为同步或者异步逻辑的网络,其实现数据通信协议栈, 以用于路由器410、链路420和路由器中的总线线路构成的网络中的数据通信。路由逻辑 530包括本领域技术人员可以对片外网络与路由表进行关联的功能,其中在至少一些实施 方式中,认为在NOC中使用路由表过慢且不便。可以将实现为同步和异步逻辑的网络的路 由逻辑配置为在单时钟周期中进行路由决策。此示例中的路由逻辑通过选择用于转发路由 器中接收到的每个封包的端口来路由封包。每个封包包含该封包将要路由至的网络地址。 此示例中的每个路由器包括五个端口,四个端口 521通过总线线路(520-A、520-B、520-C、 520-D)连接至其他路由器,而第五端口 523通过网络接口控制器408和存储器通信控制器 406将每个路由器连接至其相关联的IP块404。 在上面对基于存储器地址的通信的描述中,将每个存储器地址描述为由网络接口 控制器映射为网络地址,即存储器通信控制器的网络位置。自然地,存储器通信控制器406 的网络位置也是与该存储器通信控制器相关联的路由器410、网络接口控制器408以及IP 块404的网络位置。因此,在IP块间通信或者基于网络地址的通信中,应用级数据处理通常将网络地址视为由NOC的路由器、链路和总线线路组成的网络内的IP块的位置。注意,图 4示出,这种网络的一个组织是行和列的网格,其中例如可以将每个网络地址实现为网格的 相关联的路由器、IP块、存储器通信控制器以及网络接口控制器的每个集合的唯一标识符, 或者实现为网格中每个此类集合的χ、y坐标。在图5描述的NOC 402中,每个路由器410实现两个或者更多虚拟通信通道,其中 每个虚拟通信通道由通信类型表征。通信指令类型(以及由此的虚拟通道类型)包括上文 提到的那些类型IP块间基于网络地址的消息、请求消息、对请求消息的响应、涉及高速缓 存的无效消息、存储器加载和存储消息以及对存储器加载消息的响应等。为了支持虚拟通 道,图5中描述的每个路由器410还包括虚拟通道控制逻辑532和虚拟通道缓冲区534。虚 拟通道控制逻辑532检查指派给每个接收封包的通信类型,并且将每个封包置于针对该通 信类型的外发虚拟通道缓冲区中,以便通过端口向NOC上的相邻路由器传输。每个虚拟通道缓冲534具有有限的存储空间。当在短时间内接收到很多封包时, 虚拟通道缓冲区可能充满,从而无法将更多的封包放在该缓冲区中。在其他协议中,到达缓 冲区已满的虚拟通道的封包将被丢弃。然而,此示例中,利用总线线路的控制信号使每个虚 拟通道缓冲534能够通过虚拟通道控制逻辑来建议周围的路由器挂起虚拟通道中的传输, 也即,挂起特定通信类型的封包的传输。当一个虚拟通道被这样挂起时,所有其他虚拟通道 不受影响,并且可以继续以完全能力进行操作。控制信号通过每个路由器被发送回每个路 由器的关联网络接口控制器408。将每个网络接口控制器配置为在接收到这种信号之后, 便拒绝接受来自其关联存储器通信控制器406或者其关联IP块404的、针对已挂起虚拟通 道的通信指令。以此方式,虚拟通道的挂起影响了实现虚拟通道的所有硬件,直至返回到发 起IP块。挂起在虚拟通道中传输的封包的一个效果是在图5的架构中从不丢弃封包。当 路由器遇到在诸如互联网协议的一些不可靠协议中可能丢弃封包的情况时,图5示例中的 路由器由其虚拟通道缓冲534及其虚拟通道控制逻辑532挂起虚拟通道中的所有封包的传 输,直到缓冲区空间再次可用,这消除了丢弃封包的任何需要。因此,如图5中描述的NOC 402实现了具有非常精简硬件层的、高度可靠的网络通信协议。注意,图5中描述的网络接口控制器408和路由器410执行上述图2中封包接收 逻辑218的功能。现在参考图6,其给出了最初在图5中给出的内核550的附加示例性细节。内核 550包括片上多级高速缓存层级,其分别包括统一的二级(L2)高速缓存616以及分为两部 分的一级(Li)指令(I)和数据(D)高速缓存618和620。本领域的技术人员已经了解,高 速缓存616、618和620提供与系统存储器(例如,图3中所示的RAM 306)中的存储器位置 相对应的高速缓存列的低延迟访问。响应于驻留在取指令地址寄存器(IFAR) 630中的有效地址(EA),从LlI-高速缓 存618中取回指令以便处理。在每个周期中,可以从至少三个来源之一将新的取指令地址 加载至IFAR 630:分支预测单元(BPU)636,其提供由条件分支指令预测得到的推测性目标 路径和序列地址;全局完成表(GCT)638,其提供冲刷地址和中断地址;以及分支执行单元 (BEU)692,其提供从预测的条件分支指令解析得到的非推测性地址。与BPU 636相关联的 是分支历史表(BHT)635,其中记录有条件分支指令的解析度,以辅助未来分支指令的预测。
有效地址(EA),诸如IFAR 630中的取指令地址,是由处理器生成的数据或者指令的地址。EA指定段寄存器和该段中的偏移量信息。为了访问存储器中的数据(包括指令), EA通过一级或多级变换而转换为真实地址(Real Address, RA),其与存储数据或指令的物 理位置相关联。在内核550中,有效地址到真实地址的变换由存储器管理单元(MMU)和相关联的 地址变换工具来执行。优选地,为指令访问和数据访问提供分离的MMU。为了清楚起见,在 图6中示出了单个MMU 611,其显示为仅与指令存储单元(ISU)601连接。然而,本领域技术 人员容易理解,优选地,MMU 611还包括与加载/存储单元(LSU) 696和698以及用于管理存 储器访问所需的其它组件的连接(未示出)。MMU 611包括数据变换旁视缓冲区(DTLB)612 和指令变换旁视缓冲区(ITLB)613。每个TLB包含最近参考的页面表条目,其被访问以用于 将数据(DTLB 612)或指令(ITLB 613)的EA变换为RA。来自ITLB 613的最近参考的EA 到RA变换被高速缓存到EOP有效到真实地址表(ERAT) 632中。在ERAT 632对IFAR 630中包含EA进行变换并且查询了 I-高速缓存目录634中 的真实地址(RA)之后,如果命中/未命中逻辑622确定与IFAR 630中高速缓存的EA相对 应的指令的高速缓存行没有主流在LlI缓存618中,则命中/未命中逻辑622通过I-高速 缓存请求总线624将RA提供给L2高速缓存616,作为请求地址。这种请求地址还可以由 L2缓存616中的预取逻辑根据最近访问模式高速缓存来生成。L2高速缓存616响应请求 地址输出了高速缓存行的指令,其可能在通过预解码逻辑602之后,通过I-高速缓存重载 总线626加载至预取缓冲区(PB)628和LlI-高速缓存618。一旦由IFAR 630中的EA指定的高速缓存列驻留在Ll高速缓存618,LlI-高速缓 存618便将该高速缓存列输出到分支预测单元(BPU)636和取指令缓冲区(IFB)640。BPU 636在该高速缓存列的指令中扫描分支指令,并且预测条件分支指令的结果(如果有的 话)。在分支预测之后,BPU 636如上文所述将推测性取指令地址提供给IFAR 630,并且将 预测传递给分支指令队列664,使得在条件分支指令随后由分支执行单元692解析时,可以 确定预测的准确性。IFB 640临时地缓冲从LlI-高速缓存618接收的高速缓存列的指令,直至该高速 缓存列的指令能够由指令变换单元(ITU)642变换为止。在示出的内核550的实施方式中, ITU 642将指令从用户指令集体系结构(UISA)指令变换为可能不同数目的内部ISA (IISA) 指令,其由内核550的执行单元直接执行。这种变换例如可以参照存储在只读存储器(ROM) 模板中的微码来执行。在至少某些实施方式中,UISA到IISA变换得到与UISA指令不同数 目的IISA指令和/或与相应的UISA指令不同长度的IISA指令。所得到的IISA指令随后 由全局完成表638分配给指令群组,该指令群组的成员允许不按照彼此的顺序执行。全局 完成表638通过至少一个相关联的EA追踪尚需完成执行的每个指令封包,所述EA优选地 是所述指令封包中最早的指令的EA。在UISA到IISA指令变换之后,根据指令类型将指令可能乱序地分派给锁存器 644、646、648和650之一。也即,分支指令和修改指令的其它条件寄存器(CR)被分派到锁 存器644,定点和加载-存储指令被分派到锁存器646和648之一,并且浮点指令被分派到 锁存器650。继而,通过CR映射器652、链接和计数(LC)寄存器映射器654、异常寄存器 (XER)映射器656、通用寄存器(GPR)映射器658和浮点寄存器(FPR)映射器660中适当的一个,为每个需要重命名寄存器(其用于临时存储执行结果)的指令分配一个或多个重命
名寄存器。所分派的指令临时放置在以下适当的一个中CR发送队列(CRIQ)662、分支发送队列(BIQ)664、定点发送队列(FXIQ)666和668以及浮点发送队列(FPIQ)670和672。指 令可以随机地从发送队列662、664、666、668、670和672发送到处理单元603的执行单元以 便执行,只要遵循数据依赖和反依赖即可。然而,指令保留在发送队列662-672中直至所述 指令执行完成,并且在任何指令需要重发的情况下,结果数据(如果有的话)被写回。如上文所述,内核550的执行单元包括用于执行CR修改指令的CR单元 (CRU)690、用于执行分支指令的分支执行单元(BEU)692、用于执行定点指令的两个定点单 元(FXU) 694和6100、用于执行加载和存储指令的两个加载-存储单元(LSU) 696和698以 及用于执行浮点指令的两个浮点单元(FPU) 606和604。每个执行单元690-604优选地实现 为具有多个流水线级的执行流水线。在执行单元690-604之一内的执行期间,指令从与执行单元耦合的寄存器文件内 的一个或多个架构寄存器和/或重命名寄存器接收操作数(如果有的话)。当执行CR修 改指令或CR依赖的指令时,CRU 690和BEU 692访问CR寄存器文件680,该CR寄存器文件 680在优选实施方式中包括CR寄存器和多个CR重命名寄存器,每个CR重命名寄存器都包 括多个由一位或多位构成的不同字段。这些字段包括LT、GT和EQ字段,其分别指示某值 (通常是指令的结果或操作数)是小于零,大于零还是等于零。链接和计数寄存器(LCR)的 寄存器文件682包含计数寄存器(CTR)、链接寄存器(LR)和其各自的重命名寄存器,通过 这些寄存器,BEU 692也可以解析条件分支以获得路径地址。通用寄存器文件(GPR)684和 686是同步的、相同的寄存器文件,其存储由FXU 694和605以及LSU 696和698访问和产 生的定点和整数值。浮点寄存器文件(FPR)688像GPR 684和GPR 686 —样也可以实现为 同步寄存器的相同集合,其包括由FPU 606和604执行浮点指令以及由LSTO96和698执行 浮点加载指令而得到的浮点值。在执行单元完成指令执行后,执行通知GCT 638,其以程序顺序调度指令的完成。 为了完成由CRU 690,FXU 694和605或FPU 606和604之一执行的指令,GCT 38向适当的 映射器发出信号,所述映射器将结果数据(如果有的话)从所指派的重命名寄存器写回到 适当寄存器文件中的一个或多个架构性寄存器。继而从发送队列中移除指令,并且一旦指 令群组内的所有指令都已完成,即从GCT 638中移除指令。然而,其它类型的指令以不同的 方式完成。当BEU 692解析条件分支指令并且确定应当选择的执行路径的路径地址时,将该 路径地址与BPU 636预测的推测性路径地址进行比较。如果路径地址匹配,无需进行进一 步的处理。然而,如果计算所得的路径地址与预测地址不匹配,BEU 692将正确的路径地址 提供给IFAR630。在任一情况中,随后可以从BIQ 64移除分支指令,并且当相同指令群组内 的所有其它指令都已经完成时,从GCT 638移除该分支指令。在加载指令的执行之后,通过数据ERAT(未示出),将由执行所述加载指令计算得 到的有效地址变换为真实地址,并且随后将其作为请求地址提供给LlD高速缓存620。此 时,加载指令从FXIQ 666或668移除并被置于加载数据队列(LDQ)609中,直到执行完所指 示的加载为止。如果请求地址在LlD-高速缓存620中未命中,则将该请求地址置于加载未命中队列(LMQ) 607中,其中请求的数据通过队列从L2高速缓存616获取,并且如果所述获取失败,从另一个内核550或从系统存储器(例如,图5中给出的RAM 528)中获取。LRQ 609探测独占访问请求(例如,具有修改意图的读),在针对进行中的加载的互连结构(未 给出)上进行冲刷或删除,并且如果命中发生,则取消并重发加载指令。存储指令利用存储 队列(STQ)610类似地完成,其中在执行所述存储指令之后,用于存储的有效地址被载入该 存储队列610。数据可以从STQ 610存储到LlD-高速缓存620和L2高速缓存616之一或 两者中。如上所述,每个节点(例如,每个线程108a-d)包括一个或多个处理器内核(例如,图5中描述的处理器内核550之一)。图7中给出了此类处理器内核550的示例性实 施方式的附加细节。处理器内核550中包括有效到真实地址表(ERAT)632(上文图6中示 出),该表632用于从工作单元708分派不同的软件线程704a-d,该工作单元708可以是 用户应用(例如,图1中示出的用户应用112)或工作单元消息(例如,图1中示出的封包 110a-d)。当处理器内核550接收工作单元708时,包括寄存器710d、执行单元712d和输出 缓冲区714d的特定硬件线程716可以执行软件线程704d中的指令。参考上面的图6,示例 性硬件线程可以包括FPR映射器660、FPIQ 672、FPR 688和FPU 604。另一个示例性硬件 线程可以包括GPR映射器658、FXIQ668、FXU 605和GPR 686。这些是示例性硬件线程,还 可以想到其它硬件线程,包括FXU 694、LSU 698、CRU 690和BEU 692等。再次参考图7,注意,不同的硬件线程716、718、722和720可以独立地和/或半自 动地执行来自工作单元708中的不同软件线程。现在参考图8,考虑NOC 802中执行的图形应用800。从主机计算机804分派的图 形应用800是实时三维(3D)投影和光栅化图形应用,其可以使用直接线程间通信(DITC) 来利用NOC 802的高线程化性质。DITC允许节点(即,诸如图4中描绘的节点422的节点) 和/或线程(例如,图1中描绘的线程108a-d)被指派用于执行来自图形应用800的图形 工作负载的不同部分。因此,主机接口线程808a处理软件流水线的状态以及传入图形函数 调用,诸如0penGLglVertex3f()。主机接口线程808a (其包括定制用于执行与主机接口线 程808a相关联的操作数的硬件逻辑以及可选的特定软件)继而开始利用形式上为片上网 络封包的数据和控制信息来填充该主机接口线程的DITC发件箱(outbox)缓冲区810a。使 用将在下文更加详细描述的过程和硬件,此芯片封包最初是未压缩并且未对齐的,但是在 向NOC 802中的下一节点/线程传输之前被压缩和对齐。换言之,考虑图9中示出的未压 缩直接线程间通信缓冲区封包(UDICBP)902。如上所述,UDICBP 902包括用于处理红(R)、 绿(G)、蓝⑶的数据以及和Alpha合成(A-用于控制图形透明度)数据。然而,与上文图 2中描述的情形类似,UDICBP 902中的数据是未对齐的(在诸如a_c、e-g等不同字聚合之 间存在“孔洞”)。为了减少传输业务流量和缓冲区中浪费的空间,UDICBP 902通过直接线 程间通信缓冲区封包(DICBP)压缩逻辑904进行压缩,该DICBP压缩逻辑在下文图10中更 详细地描述。此DICBP压缩逻辑904生成已压缩直接线程间通信缓冲区封包(⑶ICBP)906, 其包括在图10示出的逻辑中用以解封装和重对齐字聚合的工作对齐信息908。返回图8,从主机接口线程808a的输出由DITC发件箱缓冲区810a取得,并且封 装到封包814a中,该封包通过NOC 802中的网络(未给出)发送到与线程808b相关联的 DITC收件箱缓冲区812b,其接收封包814a并且处理对所接收封包数据的操作,诸如顶点3D变换、向2D的投影和光照计算。线程808b继而将结果数据和控制信息填充到该线程的 DITC发件箱缓冲区810b,其将封包814b填入封包814b,以便由与线程808c相关联的DITC 收件箱缓冲区812c接收。线程808c执行对所接收数据的光栅化操作,并且将结果输出到 该线程的DITC发件箱缓冲区810c和封包814c。DITC收件箱缓冲区812d接收数据,其通 过线程814c接收纹理处理。此最终操作完成了图形应用800的执行,产生最终信号(图形 信号)用于在屏幕806上显示。注意,NOC 802中的每个节点(例如,每个线程808a)可以与不同的专用超微内核 (未示出)相关联。超微内核被定义为操作系统软件逻辑的薄片,其仅能够向NOC中的节点 以及在这些节点之间传输工作单元消息(例如,封包814a-d)和⑶ICBP (例如,图9中示出 的 CDIDBP 906)。
现在参考图10,在NOC 1002 (例如,图4中给出的NOC 402)的IP节点1022中示 出了 DICBP压缩逻辑904的附加细节。如上所述,IP节点1022按照已压缩/对齐格式来 接收封包1014a(例如,图8中描述的封包814a),因为假设封包1014a已经预先以在此描述 的方式被压缩/对齐。该封包加载到输入已压缩直接线程间通信缓冲区(CDICB) 1012(类 似于图8中给出的DITC收件箱缓冲区812),并且随后利用解封装逻辑1004 “解封装”。解 封装逻辑1004首先将来自输入CDICB 1012的字的一个或多个行(优选地,所有行)加载 到阴影锁存器1006。使用来自封包1014a的对齐信息(例如,图9中示出的工作对齐信息 908),多路器(mux)控制器1008以如下方式控制多路器1010,即将字的经过适当对齐的行 (例如,如图9示出的UDICBP 902中所组织的一样)存储到输入DITC流通信缓冲区1011。 继而将这些适当对齐的行发送到向量寄存器文件1016,其将这些行(例如,可能或可能不 “满”的数据字的四字行)分派到向量执行单元1018。此向量执行单元1018能够如上文图 7中所描述的那样,将一个或多个字作为软件线程来并行处理。继而将向量执行单元1018中的操作的输出发送到封装逻辑1020。注意,向量执行 单元1018中的操作的输出最初是未压缩的(即,由于聚合小于行宽,在字的聚合之间存在 空白字)。这些未压缩的字行(包括空白字)最初存储在阴影锁存器1022中。多路器控制 器1024使用从工作对齐信息908、向量寄存器文件1016和/或向量执行单元1018提供的 信息,以如下方式控制多路器1026,即,使得字以压缩(即,充满且没有孔洞)方式加载至输 出CDICB 1030(类似于图8中给出的DITC收件箱缓冲区810)。来自CDICB 1030的已压缩 数据继而由封装逻辑1028封装到外发封包1014b中,该封装逻辑1028将数据与包括对封 包进行操作的下一 IP节点的地址的报头进行封装。注意,如上文讨论和说明的,这里所使用的术语“压缩”描述这样的数据字,其存储 在缓冲区或封包中,使得在数据封包中的字之间没有空字,并且在缓冲区中没有空单元。术 语“压缩”这里不是用于描述或定义利用编码算法对信息进行编码从而得到较少位用于代 表原始未压缩数据的数据压缩。现在参考图11,其给出了用于通过片上网络(NOC)上的节点来流式传输直接线程 间缓冲区封包所采用的示例性步骤的高级流程图。在起始框1102之后,利用来自未压缩直 接线程间通信输出缓冲区的数据来填充未压缩直接线程间通信缓冲区封包(UDICBP)(框 1104)。注意,示例性UDICOB在图10中被描绘为阴影锁存器1022。然而,应当理解,在某些 起始点(主机计算机中、第一节点中等)在以上述方式压缩数据之前,数据可以按照未压缩格式存储在其它缓冲区/存储器/锁存器中。 如框1106中所描绘的,将未压缩直接线程间通信缓冲区封包中的数据字的组织 转换为第一压缩直接线程间通信缓冲区封包(⑶ICBP),其中UDICBP映射到未压缩直接线 程间通信输出缓冲区(UDICOB),该UDICOB包括存储于该UDICOB中的至少两个数据字之间 的至少一个空缓冲区单元,其中第一⑶ICBP映射到第一(输入)已压缩直接线程间通信缓 冲区(⑶ICB),该⑶ICB在存储于第一⑶ICB中的任何两个字之间不存在空缓冲区单元,并 且其中UDICOB和⑶ICB包含不同数据字的多个不同聚合。如框1108中所描绘的,将第一已压缩直接线程间通信缓冲区封包(⑶ICBP)传输 到NOC中的第一节点中的输入CDICB。CDICBP包括多路器控制数据,其允许第一多路器集合 选择性地从CDICBP读取数据字(框1110)。处理每个数据字,以产生未压缩行的输出(例 如,可以包括空白字的数据字聚合的行,但是其字宽度(例如128位)是NOC节点中的内核 中的执行单元所使用的)。在执行单元处理未压缩的数据行之后,第二多路器集合按照与第 一 CDICBP中的已压缩对齐相同或不同的对齐来重新压缩输出数据,并且填充第二(输出) ⑶ICB (框1114)。根据存储在第二⑶ICB中的已压缩数据来创建第二⑶ICBP (框1116),并 且将其传输到NOC中的第二节点/下一节点(框1118)。在NOC中的所有期望节点都已经 处理了来自⑶ICBP中的数据之后,过程在终止框1120结束。应当理解,本发明的至少某些方面可以可选地以包含程序产品的计算机可使用介 质实现。定义本发明功能的程序可以经由多种信号承载介质传送到数据存储系统或计算机 系统,该信号承载介质包括但不限于不可写存储介质(例如,CD-ROM)、可写存储介质(例 如,硬盘驱动器、读/写⑶ROM、光学介质)、以及通信介质,诸如包括以太网、因特网、无线 网络和类似网络系统的计算机和电话网络。因此,应当理解此类信号承载介质当承载导向 本发明中的方法功能的计算机可读指令或对该指令进行编码时,表示本发明可选实施方 式。而且,应当理解本发明可以通过具有硬件、软件或这里描述的软件和硬件的组合或者它 们的等同体的形式的装置的系统实现。
权利要求
一种片上网络(NOC),所述NOC包括第一节点;以及第二节点,其通过片上网络耦合至所述第一节点,其中所述第二节点包括第一阴影锁存器集合,用于从第一已压缩直接线程间通信缓冲区封包(CDICBP)读取数据字的行,其中从所述第一CDICBP接收到的数据存储在所述第二节点中的输入已压缩直接线程间通信缓冲区(CDICB)中,其中所述输入CDICB在存储于所述输入CDICB中的任何两个数据字之间不具有空缓冲区单元,其中利用来自未压缩直接线程间通信发件箱缓冲区(UDICOB)的数据字来填充所述第一CDICBP,所述UDICOB包括存储于所述UDICOB中的至少两个数据字之间的至少一个空缓冲区单元,并且其中所述UDICOB和所述输入CDICB包含多个不同的数据字聚合;第一多路器集合,其中所述第一多路器集合从包含至少两个数据字的、第一CDICB存储的数据字聚合中选择性地读取个体数据字;处理器,其处理来自所述第一CDICB存储的数据字聚合的每个数据字,以产生未压缩数据字行的输出;以及第二多路器集合,其中所述第二多路器集合对来自所述处理器的未压缩数据字行的输出进行压缩,以生成第二CDICB,所述第二CDICB在存储于所述第二CDICB中的任何两个数据字之间不存在空缓冲区单元。
2.根据权利要求1所述的N0C,其中所述第一⑶ICB和所述第二⑶ICB使用特定数据 字的相同排列。
3.根据权利要求1所述的N0C,其中所述第一多路器集合由多路器控制器来控制,其中 所述多路器控制器由存储在所述第一 CDICBP中的字对齐信息来控制。
4.根据权利要求1所述的N0C,其中所述NOC中的每个节点与不同的专用超微内核相 关联,并且其中每个超微内核是仅能向所述NOC中的节点以及在所述NOC中的节点之间传 输工作单元消息和⑶ICBP的软件逻辑的薄片。
5.根据权利要求1所述的N0C,其中所述处理器是向量处理器。
6.根据权利要求1所述的N0C,进一步包括主机计算机,其耦合至所述N0C,其中所述第一节点专用于提供所述主机计算机与所述 NOC之间的主机接口。
7.根据权利要求6所述的N0C,其中所述UDICOB包含由实时三维投影软件应用使用的 数据,并且其中所述第二节点专用于针对所述实时三维投影软件应用创建的图像来执行三 维变换、投影和光照计算。
8.根据权利要求7所述的N0C,进一步包括第三节点,其中所述第三节点专用于对所述实时三维投影软件应用所创建的图像进行 光栅化。
9.根据权利要求8所述的N0C,进一步包括第四节点,其中所述第四节点专用于对所述实时三维投影软件应用所创建的图像进行纹理处理。
10.一种通过片上网络(NOC)上的节点来流式传输直接线程间缓冲区封包的计算机实 现方法,所述方法包括将未压缩直接线程间通信缓冲区封包(UDICBP)中数据字的组织转换为第一已压缩直 接线程间通信缓冲区封包(CDICBP),其中所述UDICBP映射至未压缩直接线程间通信输出 缓冲区(UDICOB),所述UDICOB包括存储于所述UDICOB中的至少两个数据字之间的至少一 个空缓冲区单元;向片上网络(NOC)中的第一节点中的输入已压缩直接线程间通信缓冲区(⑶ICB)传 输所述第一⑶ICBP,其中所述输入⑶ICB在存储于所述输入⑶ICB中的任何两个数据字之 间不具有空缓冲区单元,并且其中所述UDICOB和所述输入⑶ICB包含多个不同的数据字聚 合;使用所述第一节点中的第一多路器集合,选择性地对齐和读取来自所述输入CDICB中 的数据字,以复制所述UDICBP中的数据字排列;处理从所述输入CDICBP读取的每个数据字,以产生未压缩的输出数据字行的输出;以及使用第二多路器集合对来自所述第一节点中的处理器的未压缩输出数据字行的输出 进行压缩,以填充输出CDICB,所述输出CDICB在存储于所述输出CDICB中的任何两个数据 字间不具有空缓冲区单元。
11.根据权利要求10所述的计算机实现方法,其中所述输入CDICB和所述输出CDICB 使用特定数据字的相同排列。
12.根据权利要求10所述的计算机实现方法,其中所述第一多路器集合由多路器控制 器来控制,其中所述多路器控制器由存储在所述第一 CDICBP中的字对齐信息来控制。
13.根据权利要求10所述的计算机实现方法,其中所述NOC中的每个节点与不同的专 用超微内核相关联,并且其中每个超微内核是仅能向所述NOC中的节点以及在所述NOC中 的节点之间传输工作单元消息和CDICBP的软件逻辑的薄片。
14.根据权利要求10所述的计算机实现方法,其中所述处理器是向量处理器。
15.根据权利要求10所述的计算机实现方法,进一步包括根据存储在所述输出⑶ICB中的已压缩数据,创建第二⑶ICBP ;以及向所述NOC中的第二节点传输所述第二⑶ICBP。
16.一种通过片上网络(NOC)上的节点来流式传输直接线程间缓冲区封包的设备,所 述设备包括用于实现权利要求10-15中任一项所述的方法。
全文摘要
本发明涉及用于流式传输直接线程间缓冲区封包的方法、装置、片上网络。具体地,给出了用于对在高度线程化片上网络(NOC)处理器中的线程间通信缓冲区封包中传输的向量操作数进行任意对齐的计算机实现方法、系统和计算机程序产品。NOC中的节点中的多路器集合对来自传入已压缩线程间通信缓冲区封包的数据字聚合进行重对齐和提取。所提取的数据字聚合作为操作数由节点中的执行单元来使用。
文档编号G06F9/54GK101807161SQ20101000475
公开日2010年8月18日 申请日期2010年1月19日 优先权日2009年1月26日
发明者A·J·穆夫, M·R·塔布斯, R·A·希勒 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1