首页> 中国专利> 用于跨过多个硬件线程的虚拟线程的细粒度并行的低延迟变量转移网络

用于跨过多个硬件线程的虚拟线程的细粒度并行的低延迟变量转移网络

摘要

一种方法和电路安排利用多核心处理器芯片中的多个处理核心的寄存器堆之间的低延迟变量转移网络来支持跨过多个硬件线程的虚拟线程的细粒度并行技术。变量转移网络上变量的传送可以通过从源处理核心的寄存器堆中的本地寄存器到目的地处理核心中分配给目的地硬件线程的变量寄存器的移动来启动,以便目的地硬件线程接着可以将变量从变量寄存器移动到目的地处理核心中的本地寄存器。

著录项

  • 公开/公告号CN104011676A

    专利类型发明专利

  • 公开/公告日2014-08-27

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201280063721.6

  • 申请日2012-12-05

  • 分类号G06F9/38;

  • 代理机构北京市柳沈律师事务所;

  • 代理人张晓明

  • 地址 美国纽约阿芒克

  • 入库时间 2023-12-17 01:24:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-03-01

    授权

    授权

  • 2014-09-24

    实质审查的生效 IPC(主分类):G06F9/38 申请日:20121205

    实质审查的生效

  • 2014-08-27

    公开

    公开

说明书

技术领域

本发明一般涉及数据处理,尤其涉及处理器架构和多线程。

背景技术

随着半导体技术在时钟速度的增加方面继续缓慢地越来越接近实际极 限,架构师们越来越多地把注意力放在处理器架构的并行技术上来实现性能 提高。在集成电路器件,或芯片级上,往往将多个处理器核心布置在同一芯 片上,以与独立处理器芯片,或在某种程度上,与完全独立计算机几乎相同 的方式起作用。另外,甚至在核心内,通过使用专门管理某些类型的操作的 多个执行单元来采用并行技术。在许多情况下也采用流水线技术,以便将可 能花费多个时钟周期来执行的某些操作分解成几个阶段,使其它操作能够在 较早的操作完成之前开始。还采用多线程技术使多个指令流能够并行地得到 处理,使得在任何给定时钟周期中能够执行更综合工作。

应用上述技术的净结果是向多线程处理环境提供分布在一个或多个处理 器芯片中和在一台或多台计算机中的一个或多个处理核心之间和能够并行地 处理多个指令流的一批硬件线程的能力。可以预计,随着技术提高,处理器 架构将能够支持数百或数千个硬件线程,当将多个处理器组合成像超级计算 机和大型并行计算机那样的高性能计算系统时,存在支持数百万个硬件线程 的可能性。

但是,有效的并行处理要求运行在多线程处理环境中的软件应用程序适 当利用多线程能力。软件开发者通常更乐于开发单线程应用程序,因为它们 通常遵循执行所希望任务所需的步骤顺序。多线程支持往往不是凭直观,而 是往往需要考虑使冲突最少,以及依赖于使线程在它们可以完成它们自己的 工作之前等待其它线程完成它们需要的工作而可能花费的频率最少。例如, 如果一个线程需要计算其它线程正在计算的某组数值的平均值,则那个线程 在所有其它线程计算它们各自的数值之前将不能执行它的操作。另一方面, 执行完全独立任务的线程通常不会遭受依赖问题。因此,与开发多线程应用 程序有关的许多努力都致力于将任务分解成相对独立线程,以便使线程间依 赖性最少。

鉴于与开发多线程应用程序有关的困难,在本领域中相当需要简化多线 程应用程序的开发的技术。例如,已经相当努力地在编译期间,例如,使用 优化编译器可编程地将单线程应用程序代码转换成多线程应用程序代码。借 助于一种方法,例如,将细粒度并行技术应用于将指令流中的有序代码转换 成多个小无序代码段,并将指令插入指令流中,以便以变量的形式在代码段 之间传递数据。一种类型的指令是将变量发送给另一个线程的“放置”指令, 另一种类型的指令是从另一个线程中检索变量的“取得”指令。通过使用这 些指令,可以通过延迟为特定变量发出取得语言的代码段直到另一个代码段 为那个变量发出相应放置指令来保持在多个线程上执行的代码段之间的同 步。

虽然使用放置和取得指令可以有效地保持在不同硬件线程上执行的依赖 代码段之间的同步,但是让线程延迟等待来自另一个线程的变量的任何时间 都代表生产力损失,因此最好是使与在线程之间传送变量有关的延迟最小。

因此,在本领域中相当需要在多线程处理环境下有效地在多个线程之间 传送数据以便使与线程间依赖性有关的延迟最小的方式。

发明内容

本发明通过提供利用多核心处理器芯片中的多处理核心的寄存器堆之间 的低延迟变量转移网络支持跨过多个硬件线程的虚拟线程的细粒度并行技术 的方法和电路安排来解决与现有技术相关的这些和其它问题。在本发明的一 些实施例中,在变量转移网络上传送变量通过从源处理核心的寄存器堆中的 本地寄存器到目的地处理核心中分配给目的地硬件线程的变量寄存器的移动 来启动,以便目的地硬件线程然后可以将变量从变量寄存器移动到目的地处 理核心中的本地寄存器。

依照本发明的一个方面,使变量转移网络耦合在多个处理核心之间,其 中多个硬件线程被布置在多个处理核心中,以及其中每个处理核心包括一个 寄存器堆和多个硬件线程当中的至少一个硬件线程。该变量转移网络被配置 成在多个处理核心当中的一个源处理核心中的源硬件线程与多个处理核心当 中的一个目的地处理核心中的目的地硬件线程之间传送变量。

表征本发明的这些和其它优点和特征展示在所附的和形成其进一步部分 的权利要求书中。但是,为了更好地理解本发明,以及通过其使用达到的优 点和目的,应该参考附图以及描述本发明的示范性实施例的伴随描述性内容。

从第一方面来看,本发明提供了一种电路安排,其包含:布置在多个处 理核心中的多个硬件线程,每个处理核心包括一个寄存器堆和多个硬件线程 当中的至少一个硬件线程;以及耦合在多个处理核心之间的变量转移网络, 该变量转移网络被配置成在多个处理核心当中的一个源处理核心中的源硬件 线程与多个处理核心当中的一个目的地处理核心中的目的地硬件线程之间传 送变量。

优选的是,本发明提供了这样的的电路安排,其进一步包含多个变量寄 存器,每个变量寄存器被分配给多个硬件线程当中的各个硬件线程,其中该 变量转移网络被配置成响应将变量存储在分配给目的地硬件线程的变量寄存 器中,将变量传送给目的地处理核心。

优选的是,本发明提供了这样的电路安排,其中将多个变量寄存器架构 成每个处理核心的寄存器堆,以及其中布置在每个处理核心内的依赖性逻辑 管理寄存器堆中的多个本地寄存器和多个变量寄存器两者的依赖性。

优选的是,本发明提供了这样的电路安排,其中将变量转移网络配置成 响应源硬件线程执行的指令将变量传送给目的地处理核心。

优选的是,本发明提供了这样的电路安排,其中该指令包含将变量从源 处理核心的寄存器堆中的本地寄存器移动到分配给目的地硬件线程的变量寄 存器的放置指令。

优选的是,本发明提供了这样的电路安排,其中分配给目的地硬件线程 的变量寄存器包括指示目的地硬件线程是否准备好在变量转移网络上接收变 量的信用标志,以及其中将该源处理核心配置成延迟放置指令,直到该信用 标志指示目的地硬件线程准备好接收变量。

优选的是,本发明提供了这样的电路安排,其中该变量转移网络被配置 成响应将变量存储在源处理核心中分配给目的地硬件线程的变量寄存器中, 使变量出现在目的地处理核心中与源线程相联系的变量寄存器上,以及其中 该目的地硬件线程被配置成响应目的地硬件线程执行的指令,将变量从分配 给源硬件线程的变量寄存器移动到目的地处理核心的寄存器堆中的本地寄存 器。

优选的是,本发明提供了这样的电路安排,其中该指令包含取得指令, 其中目的地处理核心中分配给源硬件线程的变量寄存器包括指示在目的地处 理核心中分配给源硬件线程的变量寄存器中是否存储了有效数据的有效标 志,以及其中该目的地处理核心被配置成延迟取得指令,直到该有效标志指 示在目的地处理核心中分配给源硬件线程的变量寄存器中存储了有效数据。

优选的是,本发明提供了这样的电路安排,其中该目的地处理核心被配 置成响应将变量从目的地处理核心中分配给源硬件线程的变量寄存器移动到 目的地处理核心的寄存器堆中的本地寄存器,在变量转移网络上返回信用。

优选的是,本发明提供了这样的电路安排,其中该变量转移网络包含耦 合在源处理核心与目的地处理核心之间的发送总线,该发送总线包括配置成 传送变量的多条数据线、配置成为目的地硬件线程传送标识符的至少一条线 程标识符线、和配置成指示正在多线数据线上传送有效数据的时间的有效线。

优选的是,本发明提供了这样的电路安排,其中数据、线程标识符和有 效线的每一种由源处理核心驱动,以及其中该发送总线进一步包括由目的地 处理核心驱动和配置成响应目的地硬件线程成功转移了变量将信用返回给源 处理核心的信用线。

优选的是,本发明提供了这样的电路安排,其中该发送总线包含从源处 理核心到目的地处理核心的专用总线,以及其中该变量转移网络包含多条发 送总线,以便多个处理核心的每一个包括到多个处理核心当中的每个其它处 理核心的专用总线。

优选的是,本发明提供了这样的电路安排,其中该发送总线从源处理核 心耦合到多个处理核心当中的每个其它处理核心,以及其中该发送总线进一 步包括配置成为目的地处理核心传送标识符的至少一条核心标识符线。

从另一个方面来看,本发明提供了一种集成电路器件,其包括如上所述 的电路安排。

从另一个方面来看,本发明提供了一种程序产品,其包含计算机可读介 质和存储在该计算机可读介质上和定义如上所述的电路安排的逻辑定义程序 代码。

从另一个方面来看,本发明提供了一种在布置在多个处理核心中的多个 硬件线程之间传送变量的方法,每个处理核心包括一个寄存器堆和多个硬件 线程当中的至少一个硬件线程,该方法包含:利用多个处理核心当中的源处 理核心中的源硬件线程启动变量到多个处理核心当中的目的地处理核心中的 目的地硬件线程的转移;以及响应启动变量的转移,在与源和目的地处理核 心耦合的变量转移网络上将变量从源处理核心传送到目的地处理核心。

优选的是,本发明提供了这样的方法,其中该启动变量的转移包含将变 量存储在分配给目的地硬件线程的变量寄存器中,其中该变量寄存器在布置 在多核心处理芯片上的多个变量寄存器当中,其中每个变量寄存器被配置给 多个硬件线程当中的各个硬件线程。

优选的是,本发明提供了这样的方法,其中将多个变量寄存器架构成每 个处理核心的寄存器堆,以及其中布置在每个处理核心内的依赖性逻辑管理 寄存器堆中的多个本地寄存器和多个变量寄存器两者的依赖性。

优选的是,本发明提供了这样的方法,其中该启动变量的转移包括利用 源硬件线程执行放置指令,其中该放置指令将变量从源处理核心的寄存器堆 中的本地寄存器移动到分配给目的地硬件线程的变量寄存器。

优选的是,本发明提供了这样的方法,其中分配给目的地硬件线程的变 量寄存器包括指示目的地硬件线程是否准备好在变量转移网络上接收变量的 信用标志,以及其中该方法进一步包含延迟放置指令,直到该信用标志指示 目的地硬件线程准备好接收变量。

优选的是,本发明提供了这样的方法,其中该变量转移网络被配置成响 应将变量存储在源处理核心中分配给目的地硬件线程的变量寄存器中,使变 量出现在目的地处理核心中与源线程相联系的变量寄存器上,以及该方法进 一步包含响应目的地硬件线程执行的取得指令,将变量从目的地处理核心中 分配给源硬件线程的变量寄存器移动到目的地处理核心的寄存器堆中的本地 寄存器,其中目的地处理核心中分配给源硬件线程的变量寄存器包括指示在 目的地处理核心中分配给源硬件线程的变量寄存器中是否存储了有效数据的 有效标志,以及其中该方法进一步包含延迟取得指令,直到该有效标志指示 在目的地处理核心中分配给源硬件线程的变量寄存器中存储了有效数据。

优选的是,本发明提供了这样的方法,该方法进一步包含响应将变量从 目的地处理核心中分配给源硬件线程的变量寄存器移动到目的地处理核心的 寄存器堆中的本地寄存器,在变量转移网络上返回信用。

优选的是,本发明提供了这样的方法,其中该变量转移网络包含耦合在 源处理核心与目的地处理核心之间的发送总线,该发送总线包括配置成传送 变量的多条数据线、配置成为目的地硬件线程传送标识符的至少一条线程标 识符线、和配置成指示正在多线数据线上传送有效数据的时间的有效线,其 中数据、线程标识符和有效线的每一种由源处理核心驱动,以及其中该发送 总线进一步包括由目的地处理核心驱动和配置成响应目的地硬件线程成功转 移了变量将信用返回给源处理核心的信用线。

优选的是,本发明提供了这样的方法,其中该发送总线包含从源处理核 心到目的地处理核心的专用总线,以及其中该变量转移网络包含多条发送总 线,以便多个处理核心的每一个包括到多个处理核心当中的每个其它处理核 心的专用总线。

优选的是,本发明提供了这样的方法,其中该发送总线从源处理核心耦 合到多个处理核心当中的每个其它处理核心,以及其中该发送总线进一步包 括配置成为目的地处理核心传送标识符的至少一条核心标识符线。

附图说明

现在参考附图,只通过示例描述本发明的优选实施例,在附图中:

图1是包括可用在依照本发明的实施例的数据处理中的示范性计算机的 示范性自动化计算总机的框图;

图2是在图1的计算机中实现的示范性NOC的框图;

图3是更详细地图示来自图2的NOC的节点的示范性实现的框图;

图4是图示来自图2的NOC的IP块的示范性实现的框图;

图5是图示用于将单线程代码分解成可由多个硬件线程执行的多个代码 段的细粒度并行技术的框图;

图6是包括并入依照本发明的低延迟变量转移网络的多核心处理器芯片 的示范性数据处理系统的框图;

图7是在图6中引用的扩充寄存器堆的示范性实现的框图;

图8是在图6中引用的变量转移网络中的发送总线的示范性实现的框图;

图9是图示在8中引用的发送总线上的示范性变量传输的时序图;

图10是在图8中图示的发送总线的可替代实现的框图;

图11是图示当在图6的多核心处理器芯片中执行在变量转移网络上发送 变量的放置指令时进行的操作的示范性顺序的流程图;以及

图12是图示当在图6的多核心处理器芯片中执行从变量转移网络接收变 量的取得指令时进行的操作的示范性顺序的流程图。

具体实施方式

依照本发明的实施例利用耦合在多核心处理器芯片中的多个处理核心的 寄存器堆之间的低延迟变量转移网络在多线程处理环境下在线程之间传送数 据。在下文讨论的实施例中,将可选地架构成扩充寄存器堆的多个变量寄存 器的每一个分配给多个硬件线程的各个硬件线程,以便变量转移网络响应将 变量存储在分配给那个目的地硬件线程的变量寄存器中,将变量传送给目的 地处理核心。另外,在下文所述的实施例中,变量寄存器被架构成每个处理 核心的寄存器堆,以便可以与寄存器堆中的本地寄存器几乎相同的方式访问 它们,以及以便布置在每个处理核心内的依赖性逻辑管理寄存器堆中的本地 寄存器和变量寄存器两者的依赖性。

其它变种和修改例对于本领域的普通技术人员来说是显而易见的,因此, 本发明不局限于本文讨论的特定实现。

硬件和软件环境

现在转到附图,其中相同标号在几个视图中自始至终表示相同零件,图 1图示了包括可用在依照本发明的实施例的数据处理中的示范性计算机10的 示范性自动化计算总机。图1的计算机10包括至少一个计算机处理器12或 “CPU”,以及随机访问存储器14(“RAM”),该RAM14通过高速存储器总 线16和总线适配器18与处理器12连接以及与计算机10的其它组件连接。

存储在RAM14中的是应用程序20,即,执行像,例如,文字处理、电 子表格、数据库操作、视频游戏、股市模拟、原子量子过程模拟、或其它用 户级应用那样的特定数据处理任务的用户级计算机程序指令的模块。存储在 RAM14中的还有操作系统22。可结合本发明的实施例使用的操作系统包括 UNIXTM、LinuxTM、微软Windows XPTM、AIXTM、IBM i5/OSTM、和本领域的 普通技术人员可想到的其它操作系统。图1的示例中的操作系统22和应用程 序20被显示在RAM14中,但这样软件的许多组件通常也存储在非易失性存 储器中,例如,在盘驱动器24上。

如下面更明显看到的那样,依照本发明的实施例可以在片上网络(NOC) 集成电路器件或芯片内实现,这样,计算机10被图示成包括两个示范性NOC: 视频适配器26和协处理器28。NOC视频适配器26可替代地可以称为图形适 配器,是专门为图形输出到像显示屏或计算机监视器那样的显示设备30而计 算的I/O适配器的示例。NOC视频适配器26通过高速视频总线32、总线适 配器18、和也是高速总线的前端总线34与处理器12连接。NOC协处理器 28通过总线适配器18、和也是高速总线的前端总线34和36与处理器12连 接。图1的NOC协处理器可以优化成,例如,在主处理器12的命令下加速 特定数据处理任务。

图1的示范性NOC视频适配器26和NOC协处理器28每一个都包括 NOC,该NOC包括集成处理器(“IP”)块、路由器、存储器通信控制器、和 网络接口控制器,它们的细节将在下面结合图2-3作更详细讨论。NOC视频 适配器和NOC协处理器每一个都最适用于使用并行处理以及需要快速随机 访问共享存储器的程序。但是,从本公开中受益的本领域的普通技术人员应 该懂得,本发明可以在除了NOC设备和设备架构之外的其它设备和设备架构 中实现。因此本发明不局限于在NOC设备内的实现。

图1的计算机10包括通过扩展总线40和总线适配器18与处理器12和 计算机10的其它组件耦合的盘驱动器适配器38。盘驱动器适配器38以盘驱 动器24的形式将非易失性数据存储设备与计算机10连接,可以使用,例如, 集成驱动电子设备(“IDE”)适配器、小型计算机系统接口(“SCSI”)适配 器、和本领域的普通技术人员可想到的其它适配器来实现。如本领域的普通 技术人员所想到,非易失性计算机存储器也可以实现成光盘驱动器、电可擦 除可编程只读存储器(所谓的“EEPROM”或“闪速”存储器)、RAM驱动 器等。

计算机10还包括一个或多个输入/输出(“I/O”)适配器42,它通过,例 如,软件驱动器和计算机硬件实现面向用户的输入/输出,以便控制到像计算 机显示屏那样的显示设备的输出,以及从像键盘和鼠标那样的用户输入设备 44的用户输入。另外,计算机10还包括用于与其它计算机48数据通信和与 数据通信网络50数据通信的通信适配器46。这样的数据通信可以通过RS-232 连线,通过像通用串行总线(“USB”)那样的外部总线,通过像IP数据通信 网络那样的数据通信网络,和以本领域的普通技术人员可想到的其它方式串 行地进行。通信适配器实现一台计算机直接或通过数据通信网络将通信数据 发送给另一台计算机的硬件级数据通信。适合用在计算机10中的通信适配器 的示例包括用于有线拨号通信的调制解调器、用于有线数据通信网络通信的 以太网(IEEE802.3)适配器、和用于无线数据通信网络通信的802.11。

为了进一步说明起见,图2展示了按照本发明实施例的示范性NOC102 的功能框图。图2中的NOC是在“芯片”100上,即,在集成电路上实现的。 NOC102包括分组成互连节点的集成处理器(“IP”)块104、路由器110、存 储器通信控制器106、和网络接口控制器108。每个IP块104通过存储器通 信控制器106和网络接口控制器108适用于路由器110。每个存储器通信控 制器106控制IP块与存储器之间的通信,以及每个网络接口控制器108通过 路由器110控制IP块间通信。

在NOC102中,每个IP块代表作为积木用于NOC内的数据处理的同步 或异步逻辑设计的可重用单元。术语“IP块”有时被全写成“知识产权块”, 其有效地将IP块指定为一方所有的设计,即,一方授权给半导体电路的其他 用户或设计者的知识产权。但是,在本发明的范围内,未要求IP块受任何特 定所有权支配,因此在本说明书中该术语总是被全写成“集成处理器块”。如 这里所规定,IP块是可能是或可能不是知识产权的主体的逻辑、单元、或芯 片布局设计的可重用单元。IP块是可以形成ASIC芯片设计或FPGA逻辑设 计的逻辑核心。

通过类比描述IP块的一种方式是IP块对于NOC设计如同库对于计算机 编程或分立集成电路组件对于印刷电路板设计。在依照本发明实施例的NOC 中,IP块可以实现成通用门级网表,实现成完全专用或通用微处理器,或以 本领域的普通技术人员可想到的其它方式实现。网表类似于高级程序应用的 汇编-代码列表,是IP块逻辑功能的布尔代数表示(门、标准单元)。NOC也 可以,例如,以用像Verilog或VHDL那样的硬件描述语言描述的可合成形 式实现。除了网表和可合成实现之外,NOC也可以用较低级物理描述实现。 诸如SERDES、PLL、DAC、ADC等的类似IP块元件可以以像GDSII那样 的晶体管布局格式分布。IP块的数字元件有时也以布局格式提供。还要懂得, IP块以及依照本发明实现的其它逻辑电路可以以在各种细节水平上定义实现 这样逻辑的电路安排的功能和/或布局的计算机数据文件,例如,逻辑定义程 序代码的形式分发,因此,虽然已经和在下文中将在在全功能集成电路设备、 利用这样设备的数据处理系统、和其它有形、物理硬件电路中实现的电路安 排的背景下对本发明加以描述,但从本公开中受益的本领域的普通技术人员 应该懂得,本发明也可以在程序产品内实现,以及与用于分发程序产品的计 算机可读存储介质的特定类型无关地同等应用本发明。计算机可读存储介质 的示例包括,但不限于,诸如易失性和非易失性存储器件、软盘、硬盘驱动 器、CD-ROM、和DVD(等等)的可记录型介质。

图2的示例中的每个IP块104通过存储器通信控制器106适用于路由器 110。每个存储器通信控制器是适合于在IP块与存储器之间提供数据通信的 同步和异步逻辑电路的总成。IP块与存储器之间的这样通信的示例包括存储 器装载指令和存储器存储指令。存储器通信控制器106将在下面参考图3作 更详细描述。每个IP块104也通过网络接口控制器108适用于路由器110, 网络接口控制器108控制IP块104之间通过路由器110的通信。IP块104之 间的通信的示例包括并行应用中和流水线应用中在IP块之间传送数据的消息 和处理数据的指令。网络接口控制器108也将在下面参考图3作更详细描述。

路由器110以及其间的相应链路118实现NOC的网络操作。链路118可 以是在连接所有路由器的物理、并行导线总线上实现的分组结构。也就是说, 每条链路可以在宽到足以同时容纳包括所有首标信息和有效负载数据的整个 数据交换分组的导线总线上实现。如果分组结构包括,例如,64个字节,其 中包括8个字节首标和56个字节的有效负载数据,则对应每条链路的导线总 线是64个字节宽的512条导线。另外,每条链路可以是双向的,使得如果链 路分组结构包括64个字节,则导线总线实际上包含每个路由器与网络中其每 个邻居之间的1024条导线。在这样的实现中,消息可以包括不止一个分组, 但每个分组精确地与导线总线的宽度一致。在替代例中,可以在只宽到足以 容纳分组的一部分的导线总线上实现链路,以便可以将分组分解成多个节拍, 例如,以便如果一条链路被实现成16个字节宽,或128条导线,则可以将 64个字节分解成四个节拍。要懂得的是,不同实现可以根据实际物理限制以 及所希望运行特性使用不同总线宽度。如果路由器与导线总线的每个部分之 间的连接被称为端口,则每个路由器包括五个端口,网络上数据传输的四个 方向的每一个各一个,第五个端口使路由器通过存储器通信控制器和网络接 口控制器适用于IP块。

每个存储器通信控制器106控制IP块与存储器之间的通信。存储器可以 包括片外主RAM112、通过存储器通信控制器106直接与IP块连接的存储器 114、实现成IP块116的片上存储器、和片上高速缓存。在NOC102中,例 如,片上存储器114,116的任一个都可以实现成片上高速缓冲存储器。所有 这些形式的存储器都可以布置在相同地址空间、物理地址或虚拟地址中,甚 至对于直接附在IP块上的存储器也是如此。因此存储器寻址消息相对于IP 块可以是完全双向的,因为这样的存储器可以从网络上的任何地方的任何IP 块直接寻址。IP块上的存储器116可以从那个IP块或从NOC中的任何其它 IP块寻址。直接附在存储器通信控制器上的存储器114可以由通过那个存储 器通信控制器适用于网络的IP块寻址—也可以从NOC中的任何地方的任何 其它IP块寻址。

NOC102包括两个存储器管理单元(“MMU”)120,122,其为依照本发 明实施例的NOC图示了两种可替代存储器架构。MMU120在IP块内实现, 使IP块内的处理器可以在虚拟存储器中操作,同时使NOC的整个其余架构 可以在物理存储器地址空间中操作。MMU122是片外实现的,通过数据通信 端口124与NOC连接。端口124包括引脚和在NOC与MMU之间传导信号 所需的其它互连线,以及将消息分组从NOC分组格式转换成外部MMU122 所需的总线格式的足够智慧。MMU的外部地点意味着NOC的所有IP块中 的所有处理器可以在虚拟存储器地址空间中操作,到片外存储器的物理地址 的所有转换由片外MMU122管理。

除了使用MMU120,122图示的两种存储器架构之外,数据通信端口126 还图示了可用在能够用在本发明的实施例中的NOC中的第三种存储器架构。 端口126提供了NOC102的IP块104与片外存储器112之间的直接连接。 如果在处理路径中没有MMU,则这种架构让NOC的所有IP块利用物理地 址空间。在双向共享地址空间时,NOC的所有IP块可以通过由直接与端口 126连接的IP块引导、包括装载和存储的存储器寻址消息在地址空间中访问 存储器。端口126包括引脚和在NOC与片外存储器112之间传导信号所需的 其它互连线,以及将消息分组从NOC分组格式转换成外部片外存储器112所 需的总线格式的足够智慧。

在图2的示例中,将IP块之一指定成主接口处理器128。主接口处理器 128提供NOC与可以安装NOC的主计算机10之间的接口,并且还对NOC 上的其它IP块提供数据处理服务,包括,例如,从主计算机接收和在IP块 之间分派NOC数据处理请求。NOC可以,例如,如上面参考图1所述将视 频图形适配器26或协处理器28实现在较大型计算机10上。在图2的示例中, 主接口处理器128通过数据通信端口130与较大型主计算机连接。端口130 包括引脚和在NOC与主计算机10之间传导信号所需的其它互连线,以及将 消息分组从NOC分组格式转换成主计算机10所需的总线格式的足够智慧。 在图1中的计算机中的NOC协处理器的示例中,这样的端口将提供NOC协 处理器28的链路结构与NOC协处理器28与总线适配器18之间的前端总线 36所需的协议之间的数据通信格式转换。

图3接着图示了更详细地图示在用132笼统图示的NOC102中的IP块 104、存储器通信控制器106、网络接口控制器108和路由器110内实现的组 件的的功能框图。IP块104包括计算机处理器134和I/O功能136。在这个 示例中,计算机存储器用IP块104中的一片随机访问存储器(“RAM”)138 表示。存储器如上面参考图2所述,可以占据每个IP块上的内容可从NOC 中的任何IP块访问的几段物理地址空间。每个IP块中的处理器134、I/O能 力136、和存储器138有效地将IP块实现成一般可编程微型计算机。但是, 如上所述,在本发明的范围内,IP块一般代表作为积木用于NOC内的数据 处理的同步或异步逻辑的可重用单元。因此,将IP块实现成一般可编程微型 计算机尽管是可用于说明目的的普通实施例,但不限制本发明。

在图3的NOC102中,每个存储器通信控制器106包括多个存储器通信 执行引擎140。使每个存储器通信执行引擎140都能够执行来自IP块104的 存储通信指令,包括网络与IP块104之间的双向存储器通信指令流141,142, 144。存储器通信控制器106执行的存储器通信指令不仅可以源自通过特定存 储器通信控制器适合于路由器的IP块,而且可以源自NOC102中的任何地 方的任何IP块104。也就是说,NOC中的任何IP块都可以生成存储器通信 指令,并通过NOC的路由器将那种存储器通信指令发送给与另一个IP块相 联系的另一个存储器通信控制器以便执行那种存储器通信指令。这样的存储 器通信指令可以包括,例如,转换后备缓冲器控制指令、高速缓存控制指令、 屏障指令、和存储器装载和存储指令。

使每个存储器通信执行引擎140能够分开地和与其它存储器通信执行引 擎并行地执行完整存储器通信指令。存储器通信执行引擎实现为存储器通信 指令的并发吞吐量优化的可增减存储器事务处理器。存储器通信控制器106 支持所有都同时运行的多个存储器通信执行引擎140以便同时执行多条存储 器通信指令。新存储器通信指令由存储器通信控制器106分配给存储器通信 执行引擎140,存储器通信执行引擎140可以同时接受多个响应事件。在这 个示例中,所有存储器通信执行引擎140都是相同的。因此,增减存储器通 信控制器106可以同时管理的存储器通信指令的数量通过增减存储器通信执 行引擎140的数量来实现。

在图3的NOC102中,使每个网络接口控制器108能够将通信指令从命 令格式转换成通过路由器110在IP块104之间传输的网络分组格式。通信指 令可以由IP块104或由存储器通信控制器106以命令格式明确表达,并以命 令格式提供给网络接口控制器108。该命令格式可以是与IP块104和存储器 通信控制器106的架构寄存器堆相容的本机格式。网络分组格式通常是通过 网络的路由110传输所需的格式。每个这样的消息由一个或多个网络分组组 成。在网络接口控制器中从命令格式转换成分组格式的这样通信指令的示例 包括IP块与存储器之间的存储器装载指令和存储器存储指令。这样的通信指 令还可以包括在并行应用中和在流水线应用中在传送数据的IP块之间发送消 息的通信指令和在IP块之间处理数据的指令。

在图3的NOC102中,使每个IP块都能够通过IP块的存储器通信控制 器向和从存储器发送基于存储器地址的通信物,然后通过它的网络接口控制 器也发送给网络。基于存储器地址的通信物是由IP块的存储器通信控制器的 存储器通信执行引擎执行、像装载指令或存储指令那样的存储器访问指令。 这样基于存储器地址的通信物通常源自IP块,以命令格式明确表达,并转交 给存储器通信控制器加以执行。

许多基于存储器地址的通信物利用消息业务来进行,因为要访问的某个 存储器可能处在物理存储器地址空间中的某个地方,片上或片外,直接附在 NOC中的某个存储器通信控制器上,或最终通过NOC的某个IP块访问—IP 块与该NOC无关地始发某个特定基于存储器地址的通信物。因此,在NOC 102中,将利用消息业务进行的所有基于存储器地址通信物从存储器通信控 制器传递到相关网络接口控制器,以便从命令格式转换成分组格式和在消息 中通过网络发送。在转换成分组格式时,网络接口控制器还依赖于基于存储 器地址的通信物要访问的一个或几个存储器地址地识别分组的网络地址。利 用存储器地址寻址基于存储器地址的消息。每个存储器地址由网络接口控制 器映射成网络地址,通常,负责某个范围物理存储器地址的存储器通信控制 器的网络地点。存储器通信控制器106的网络地点自然也是存储器通信控制 器的相关路由器110、网络接口控制器108、IP块104的网络地点。每个网络 接口控制器内的指令转换逻辑150能够为了通过NOC发送基于存储器地址通 信物的目的将存储器地址转换成网络地址。

一旦从网络的路由器110接收到消息业务,每个网络接口控制器108就 检查每个分组是否有存储器指令。将包含存储器指令的每个分组交给与正在 接收网络接口控制器相联系的存储器通信控制器106,存储器通信控制器106 在将分组的其余有效负载发送给IP块作进一步处理之前执行存储器指令。这 样,在IP块开始执行依赖于特定存储器内容的来自消息的指令之前,总是准 备好存储器内容来支持IP块的数据处理。

在图3的NOC102中,使每个IP块104能够绕过它的存储器通信控制 器106,通过IP块的网络接口控制器直接将IP块间的网络寻址通信物146发 送给网络。网络寻址通信物是通过网络地址指向另一个IF块的消息。如本领 域的普通技术人员所想到,这样的消息在流水线应用中发送工作数据,在 SIMD应用中在IP块之间发送用于单程序处理的多个数据等等。这样的消息 与基于存储器地址通信物的不同之处在于它们一开始就被始发IP块网络寻址 的,该始发IP块知道通过NOC的路由器将消息引向的网络地址。这样的网 络寻址通信物由IP块通过I/O功能136以命令格式直接传递给IP块的网络接 口控制器,然后由网络接口控制器转换成分组格式,并通过NOC的路由器发 送给另一个IP块。这样的网络寻址通信物146是双向的,依赖于它们在某个 特定应用中的使用,潜在地转给NOC的每个IP块和从NOC的每个IP块转 出。但是,使每个网络接口控制器都能够向和从相关路由器发送和接收这样 的通信物,以及使每个网络接口控制器都能够绕过相关存储器通信控制器106 地直接向和从相关IP块发送和接收这样的通信物。

还使图3的示例中的每个网络接口控制器108都能够在网络上实现通过 类型表征网络分组的虚拟通道。每个网络接口控制器108包括按类型分类每 条通信指令,以及在以分组形式将指令转交给路由器110以便在NOC上发送 之前将指令的类型记录在网络分组格式的字段中的虚拟通道实现逻辑148。 通信指令类型的示例包括引向高速缓存的IP块间基于网络地址消息、请求消 息、对请求消息的响应、失效消息;存储器装载和存储消息;以及对存储器 装载消息的响应等。

图3的示例中的每个路由器110包括路由逻辑152、虚拟通道控制逻辑 154、和虚拟通道缓冲器156。路由逻辑152通常被实现成为由路由器110、 链路118、和路由器之间的总线导线形成的网络中的数据通信实现数据通信 协议栈的同步和异步逻辑的网络。路由逻辑152包括本领域的普通技术人员 可以将片外网络与路由表相联系的功能、在至少一些实施例中路由表被认为 太慢了,不方便用在NOC中。实现成同步和异步逻辑的网络的路由逻辑可以 配置成与单个时钟周期一样快地作出路由决定。本例中的路由逻辑通过为转 发在路由器中接收的每个分组选择一个端口来传送分组。每个分组包含分组 要去往的网络地址。

在上面描述基于存储器地址通信物中,每个存储器地址被描述成由网络 接口控制器映射到网络地址,即,存储器通信控制器的网络地点。存储器通 信控制器106的网络地点自然也是那个存储器通信控制器的相关路由器110、 网络接口控制器108、和IP块104的网络地点。因此,在IP块间,或基于网 络地址的通信物中,应用级数据处理通常也将网络地址视作由NOC的路由 器、链路、和总线导线形成的网络内IP块的地点。图2图示了这样网络的一 种组织是行和列的网格,其中每个网络地点可以实现成,例如,网格的每组 相关路由器、IP块、存储器通信控制器、和网络接口控制器的唯一标识符或 网格中每个这样组的x,y坐标。0000

在图3的NOC102中,每个路由器110实现两个或更多个虚拟通信通道, 其中每个虚拟通信通道通过通信类型来表征。通信指令类型,因此虚拟通道 类型包括上述的那些消息:引向高速缓存的IP块间基于网络地址消息、请求 消息、对请求消息的响应、失效消息;存储器装载和存储消息;以及对存储 器装载消息的响应等。为了支持虚拟通道,图3的示例中的每个路由器110 还包括虚拟通道控制逻辑154和虚拟通道缓冲器156。虚拟通道控制逻辑154 检查每个接收的分组是否具有其指定的通信类型,并将每个分组放入那种通 信类型的输出虚拟通道缓冲器中,以便通过端口发送给NOC上的相邻路由 器。

每个虚拟通道缓冲器156具有有限存储空间。当在较短时段内接收到许 多分组时,可以填满虚拟通道缓冲器—使得再也不能将分组放入缓冲器中。 在其它协议下,到达缓冲器充满的虚拟通道的分组将被丢弃。但是,利用总 线导线的控制信号使本例中的每个虚拟通道缓冲器156能够通过虚拟通道控 制逻辑劝告周围路由器暂停在虚拟通道中的发送,即,暂停特定通信类型的 分组的发送。当如此暂停一个虚拟通道时,所有其它虚拟通道不受影响—可 以继续满负荷运行。控制信号一直通过每个路由器有线传回到每个路由器的 相关网络接口控制器108。每个网络接口控制器被配置成一旦接收到这样的 信号,就拒绝从它的相关存储器通信控制器106或从它的相关IP块104接收 暂停虚拟通道的通信指令。这样,虚拟通道的暂停影响一直回溯到始发IP块、 实现该虚拟通道的所有硬件。

暂停虚拟通道中的分组发送的一种效果是再也不会丢弃分组。当路由器 遇到在像,例如,互联网协议那样的一些不可靠协议中可能丢弃分组的状况 时,图3的示例中的路由器可以通过它们的虚拟通道缓冲器156和它们的虚 拟通道控制逻辑154暂停虚拟通道中的所有分组发送,直到缓冲空间再次可 用,从而没有任何必要丢弃分组。因此,图3的NOC可以利用极薄一层硬件 来实现高度可靠的网络通信协议。

图3的示范性NOC还可以配置成保持片上和片外存储器高速缓存两者之 间的高速缓存一致性。每个NOC可以支持每一个可以针对相同底层存储器地 址空间操作的多个高速缓存。例如,高速缓存可以由IP块,由存储器通信控 制器,或由NOC外部的高速缓存控制器来控制。图2的示例中的片上存储器 通信控制器114,116的任一个也可以实现成片上高速缓存,以及在本发明的 范围内,高速缓冲存储器也可以片外实现。

图示在图3中的每个路由器110包括五个端口,即,通过总线导线118 与其它路由器连接的四个端口158A-D、和通过网络接口控制器108和存储器 通信控制器106将每个路由器与它的相关IP块104连接的第五端口160。可 以从图2和3中的图示中看出,NOC102的路由器110和链路118形成垂直 和水平链路连接每个路由器中的垂直和水平端口的网状网络。在图3的图示 中,例如,端口158A,158B,和160被称为垂直端口,端口158B和158D 被称为水平端口。

图4接着以另一种方式图示了实现成划分成发出或指令单元(IU)162、 执行单元(XU)164和辅助执行单元(AXU)166的处理单元、依照本发明 的IP块104的一种示范性实现。在图示的实现中,IU162包括从L1指令高 速缓存(iCHCHE)170接收指令的多个指令缓冲器168。每个指令缓冲器168 专用于多个,例如,四个对称多线程(SMT)硬件线程之一。有效到真实地 址转换单元(iERAT)172与iCHCHE170耦合,用于将来自多个线程取出定 序器174的指令取出请求转换成从较低级存储器中检索指令的真实地址。每 个线程取出定序器174专用于特定硬件线程,用于保证相关线程要执行的指 令被取到iCHCHE中以便分派给合适执行单元。也如图4所示,取到指令缓 冲器168中的指令也可以通过分支预测逻辑176监视,分支预测逻辑176向 每个线程取出定序器174提供提示,以便使执行线程时分支引起的指令高速 缓存丢失最少。

IU162还包括专用于每个硬件线程、和配置成解决依赖性问题和控制指 令从指令缓冲器168到XU164的发出的依赖性/发出逻辑块178。另外,在 图示的实施例中,在AXU166中配备了单独依赖性/发出逻辑180,因此能够 分开不同线程同时发给XU164和AXU166的指令。在一个可替代实施例中, 可以将逻辑180布置在IU162中,或可以完全省略逻辑180,以便使逻辑178 将指令发给AXU166。

XU164被实现成定点执行单元,包括与定点逻辑184、分支逻辑186和/ 装载/存储逻辑188耦合的一组通用寄存器(GPR)182。装载/存储逻辑188 与L1数据高速缓存(dCACHE)190耦合,由dERAT逻辑192提供有效到 真实地址转换。XU164可以配置成实现几乎任何指令集,例如,32b或64b PowerPC指令集的全部或一部分。

AXU166起包括专用依赖性/发出逻辑180以及一个或多个执行块192的 辅助执行单元的作用。AXU166可以包括任何数量的执行块,以及可以实现 几乎任何类型的执行单元,例如,浮点单元、或像加密/解密单元、协处理器、 矢量处理单元、图形处理单元、XML处理单元等那样的一个或多个专门执行 单元。在图示的实施例中,AXU166包括与XU164的高速辅助接口,例如, 以便支持AXU架构状态与XU架构状态之间的直接移动。

与IP块104的通信可以经由与NOC102耦合的网络接口控制器108,以 上面结合图2所讨论的方式管理。例如,访问L2高速缓冲存储器的基于地址 通信可以与基于消息通信一起提供。例如,每个IP块104可以包括专用输入 盒和/或输出盒,以便管理IP块之间的节点间通信。

本发明的实施例可以在上面结合图1-4所述的硬件和软件环境内实现。 但是,从本公开中受益的本领域的普通技术人员应该懂得,本发明可以在众 多不同环境中实现,以及可以不偏离本发明的精神和范围地对上述的硬件和 软件实施例作出其它修改。这样,本发明不局限于本文公开的特定硬件和软 件环境。

低延迟变量转移网络

通过加强硬件线程实现更高单线程代码执行性能一旦是吞吐量计算中的 目标。达到这个目标的一个编译器选项是将单线程代码分解成许多小代码段, 并在多个硬件线程上并行地执行它们。例如,如图5所图示,单线程代码200 可以潜在地分解成表示成A-D多个较小代码段,并如202,204,206和208 所图示,分别在多个线程T0-T3上执行。

但是,将单线程代码分解成多个片段往往导致硬件线程之间的紧密相互 依赖性,导致线程在等待要完成的其它线程的结果的时候被延迟或推迟。例 如,在依照本发明的一些实施例中,由编译器将放置和取得指令插入相关代 码段中,以便在运行在不同线程中的代码段之间转移本文称为变量的数据。 例如,图5图示了将存储在R1中的数值指定给变量X的运行在线程T0中的 代码段A中的放置指令、和检索变量X并将那个变量的内容存储在寄存器 R72中的运行在线程T2中的代码段C中的取得指令。

可以通过一个线程将数据存储在变量中然后通过另一个线程检索的速度 可以对系统性能产生重大影响,相对较高延迟数据转移必然降低任何并行化 的有效性,因为线程更频繁地延迟来等待从其它线程到达的变量。

这样,依照本发明的实施例通过在硬件线程之间提供本文称为低延迟变 量转移网络的低延迟寄存器转移机构,以便在多线程处理环境中在布置在一 个或多个处理核心中的线程之间传送变量,促进了细粒度并行技术。除了其 它好处之外,依照本发明的实施例可以使单处理线程扩散成执行的多个线程, 以及从单线程代码当中提取更高性能。

在下面更详细讨论的实施例中,多线程处理环境支持允许在硬件线程之 间低延迟变量转移的指令集架构中的一组指令。在一个实施例中,一群扩充 寄存器堆项目用作用于接收从其它硬件线程发送的变量的FIFO的头部。每个 FIFO可以小至一个项目,或根据系统要求,可以包括众多项目。依赖于这些 寄存器的指令然后可以利用现有依赖性检验硬件来实现流水线级延迟,直到 输入寄存器可用。因此,相关指令在指令发出队列中等待,直到源操作数可 用。一旦从发送硬件线程接收到,输入寄存器就变得可用,最好使用信用方 案来管理FIFO,以便当存在可用时隙时,没有延迟地发送寄存器值。在目的 地硬件线程上,将寄存器值移动到架构寄存器,清除FIFO寄存器的头部,并 马上将信用返回给发送硬件线程以便实现下一次转移。

在不同实施例中,扩充寄存器项目可以包括在允许在硬件线程之间转移 多达全部矢量寄存器变量的定点、浮点和/或矢量寄存器堆内。但是,在其它 实施例中,FIFO寄存器可以与任何寄存器堆分开实现,因此本发明不受此限 制。

例如,图6图示了可以以依照本发明的方式实现低延迟变量转移网络的 多线程处理环境,即,数据处理系统210的示范性实现。数据处理系统210 被实现成包括四个处理核心(也表示成核心A-D),每个处理核心包括通过低 延迟变量转移网络218耦合的四个硬件线程214(也表示成线程T0-T3)、和 线程214共享的公用寄存器堆216。因此,在四个核心212当中总共支持16 个线程。

处理核心212通常布置在像多核心处理器芯片或SOC设备那样的公用集 成电路设备上,应当懂得,该核心通常经由其它通信总线和/或网络(例如, 在NOC安排中)相互耦合,共享芯片上的其它组件。但是,为了简化本发明 的讨论,从图6中省略了这些另外通信总线、网络和组件。

为了在数据处理系统210中实现低延迟变量转移网络,每个处理核心包 括实现成寄存器堆216中的扩充寄存器的多个变量寄存器220,以及变量转 移网络控制逻辑222将这些变量寄存器220与变量转移网络218交接。例如, 如图7所图示,寄存器堆216可以包括划分成四个线程特定群的128个本地 寄存器R0-R127,以便对每个线程T0-T3分配32个本地寄存器。另外,可以 将寄存器堆216扩充成带有也表示成VR0-VR15的多个变量寄存器220,将 一个变量寄存器分配或指定给数据处理系统中的每个单独线程。

另外,为了协调硬件线程之间的变量转移的目的,每个变量寄存器含有 相关信用标志224和有效标志226。信用标志224用在基于信用的协议中, 以便只有当源线程具有可用信用时,才允许源线程将新变量传送给目的地线 程,而有效标志226由源线程用于指示已经将有效数据写入变量寄存器中。 响应目的地线程读取变量并将信用发回给源线程,消除有效标志226。

实现变量转移网络的方式在不同实施例中可能不同。例如,如图8所图 示,变量转移网络可以通过为每个核心212提供到每个其它核心212的单独 专用发送总线230来实现。尤其,图8图示了可以实现成使核心A能够将变 量发送给核心B,C和D的每一个的三条专用发送总线230。应当懂得,每 个其它核心B,C和D可以配有它自己的专用发送总线,从而总共提供12条 发送总线,每个核心对两条。

每条发送总线230主要由发送核心中的变量转移网络控制逻辑222驱动, 并在内部核心总线232上与变量寄存器220耦合。为了简化图8,只将从核 心A到核心C的发送总线分解成它的各自信号路径,但应当懂得,从核心A 到核心B和从核心A到核心C的发送总线也以相似方式构成。

在这个实施例中,包括变量寄存器220的寄存器堆216中的寄存器64位 宽,这样,在每条发送总线230中配备一组64条数据线,以便在相同时钟周 期中传送变量寄存器的内容。与在数据线上传送变量一致,维持1位有效信 号,以及2-位线程标识符(ThreadID)。单位返回线用于当目的地线程已经读 取了变量时使信用从目的地核心返回到源核心。这样,每条发送总线230用 68条信号路径来实现,信用线由目的地核心驱动,所有其它线由源核心驱动。

图9图示了发送总线230上的典型变量传输的时序图,从而每当为特定 目的地线程将变量写入变量寄存器中时,设置变量寄存器的有效标志,并在 与目的地线程驻留的处理核心耦合的发送总线上维持数据(时间A)。另外, 在ThreadID线上维持目的地线程(T0-T3)的标识符,因此可以将数据传送 到目的地处理核心中的适当变量寄存器。如下面更详细讨论,在目的地核心 中将数据存储在变量寄存器中并设置变量寄存器中的有效标志。

此后某时(时间B),目的地处理核心中的目的地线程读取变量寄存器, 清除目的地核心变量寄存器中的有效标志并使信用返回到发送处理核心,使 发送处理核心清除发送处理核心中的变量寄存器中的有效位。

还要懂得的是,变量转移网络在一些实施例中还可以配置成允许利用与 用于不同处理核心之间的通信相同的协议在相同处理核心上的线程之间进行 变量的线程间通信,或在一些实施例中,如果需要的话,甚至允许线程将变 量发送给自己。

使用从每个处理核心到每个其它处理核心的单独发送总线可以实现线程 之间的冲突机会最小的极低延迟操作。例如,图10图示了不是将单独发送总 线用于每个处理核心,而是为每个处理核心212到其它三个处理核心配备单 条发送总线232′的可替代实现。因此,虽然图10只图示了核心A的单条发 送总线232′,但应当懂得,核心B-D的每一个包括它自己的发送总线232′, 总共四条总线。发送总线232′可以与发送总线232类似地配置,但为变量添 加了编码目的地核心的两条CoreID线,以便所有三个处理核心窥探在发送总 线232上传送的每个变量,但只有具有目的地线程的处理核心按协议参与。 关于这一点,四条CoreID和ThreadID线集体标识16个硬件线程之一。

在本发明的其它实施例中可以使用其它网络通信。例如,在一些实现中 可能希望并入一个或多个缓冲器,例如,缓冲器234,因为对于处理核心之 间的较长互连可能是有必要的,以考虑到信号传播延迟。不过,对于本文公 开的协议,异步地管理变量的发送和接收,因此添加一个或多个缓冲器虽然 增加了传输的延迟,但仍然不会影响传输协议。另外,应当懂得,相同处理 核心中的线程之间的线程间变量传输由于与核心之间的通信所需的长度相 比,核心内的信号路径的长度要短得多,所以可能利用不依靠核心间传输可 能需要的协议的优化协议。此外,在一些实现中,每个线程可能含有到加入 变量转移网络中的每个其它唯一线程的专用发送总线,这使得一概不需要 CoreID和ThreadID线。

在一些实施例中可能希望利用较窄总线,以便减少变量转移网络中的信 号路径的数量。例如,对于64位变量,可以将变量分解成在2,4或8个周 期内传送的32位,16位或8位碎片。可替代地,可以使用串行传输协议。 在这些变种的每一种中,需要较少的信号路径,但以增加延迟为代价,这在 希望延迟最小以便使性能最高的应用中可以不是所希望的。

图11和12接着图示了可以利用依照本发明的低延迟变量转移网络的示 范性放置和取得指令。放置指令(由源线程执行将存储在本地寄存器Rx中的 数值发送给用于目的地线程y的变量寄存器VRy的put VRy,Rx)如图11中 的250所图示,通过首先在方框252中检验用于目的地线程y的变量寄存器 VRy中的信用标志,以确定信用是否可用于寄存器来管理。如果不可用,则 源线程使用传统依赖性逻辑延迟直到信用变得可用。

但是,如果信用可用,则将控制传递给方框254,为目的地线程驻留的 核心选择发送总线,然后传递给方框256以便将寄存器Rx的内容移动到发送 总线,在数据线上维持存储在寄存器Rx中的数值,在发送总线上维持有效线, 以及在发送总线的ThreadID线上维持目的地核心内的目的地线程的标识符。 一旦这个数据维持在发送总线上,发送线程接着就自由地着手执行指令流中 的随后指令。

取得指令(由目的地线程执行将存储在源线程y的变量寄存器中的变量 移动到本地寄存器Rx的get Rx,VRy)如图12中的260所图示,通过首先在 方框262中检验变量寄存器VRy中的有效标志,以确定在变量寄存器中是否 存储着有效数据来管理。如果不是,则目的地线程使用传统依赖性逻辑延迟 直到在变量寄存器中指示有效数据。

但是,如果在变量寄存器中存储着有效数据,则将控制传递给方框264, 以便清除变量寄存器中的有效标志,然后传递给方框266,以便为源线程驻 留的核心选择发送总线。接着,在方框268中在发送总线上将信用返回,以 便通知源核心已经读取了变量。一旦信用维持在发送总线上,目的地线程接 着就自由地着手执行指令流中的随后指令。

应当懂得,对于图示在图11-12中的放置和取得指令,变量转移网络被 配置成使源线程中的放置指令移动到与目的地线程相联系的变量寄存器,但 在与源线程相联系的变量寄存器中向目的地线程展示数据,以便目的地线程 中的取得指令从与源线程相联系的变量寄存器移动,而不是它自身。

因此,例如,如果希望使用运行在一个处理核心上的线程0将存储在那 个处理核心上的本地寄存器R1中的数据移动到另一个处理核心上的本地寄 存器R29供那个其它处理核心上的线程1(笼统标识成线程13)访问,由线 程0通常进行“put VR13,R1”操作,以便将其本地寄存器R1的内容移动到 用于线程13的变量寄存器VR13。其它处理核心上的线程13然后通常进行 “get R29,VR0”操作,以便将用于线程0的变量寄存器VR0的内容移动到 其本地寄存器R29。

在图示的实施例中,放置和取得指令通常通过优化编译器,例如,在应 用程序的开发和编译期间并入应用程序的一个或多个指令流中。如上所述, 这些指令可以结合将单线程代码并行化成多个虚拟线程来使用。应当懂得, 在编译期间,通常希望编译器每当可以使延迟最小时,使在相同处理核心上 的彼此之间频繁传递变量的虚线线程共处。而且,如果在不同处理核心之间 延迟不变,例如,由于将缓冲器插入变量转移网络中来管理相同处理器芯片 上彼此远离的核心之间的较长路径,或当将一些处理核心布置在不同芯片上 时,当将虚拟线程指定给处理核心时,编译器可能对此加以考虑。

还要懂得,依照本发明的变量转移网络无需结合编译器线程虚拟化来使 用,可以在需要低延迟线程间通信的其它应用中找到用武之地。

如上所述,图示性实施例中的每个变量寄存器起项目阵列或FIFO数据结 构的头部的作用,非常像其相关硬件线程的输入盒。但是,要懂得的是,变 量寄存器可以使用多项目队列或FIFO来实现,基于信用的协议可以将多个信 用颁发给源线程,以便允许缓存多个变量供目的地线程随后消费。

另外,图示性实施例中的每个变量寄存器可以与寄存器堆中的其它寄存 器大致相同的方式访问,并与每个处理核心的现有依赖性逻辑耦合,以便可 以平衡现有依赖性逻辑以使指令间延迟同步的相同方式使访问变量寄存器同 步。

要懂得的是,在各种实施例中,可以将变量寄存器并入不同寄存器堆中 和供不同执行单元使用,例如,以便只为定点执行单元、浮点执行单元、标 量执行单元、矢量执行单元和/或它们的各种组合实现低延迟变量转移网络。

而且,尽管图示性实施例公开了16个线程在四个处理核心之间以四个为 一群分配的处理器芯片,但要懂得的是,本发明可以结合任何数量的线程和 任何数量的处理核心来使用。另外,要懂得的是,其它同步、排队和/或握手 协议可以作为替代例用于本文公开的基于信用单项目队列协议,以及除了本 文公开的那些之外,可以使用其它网络布局。因此,本发明不局限于本文公 开的特定实现细节。

另外,要懂得的是,虽然对于加入变量转移网络中的每个硬件线程,变 量寄存器完全架构在每个核心中,但依照本发明的实施例无需为每个核心内 的每个寄存器实现完全逻辑电路。例如,在一些实施例中,在将变量传递给 寄存器堆中的本地寄存器之前,可以使用起共享输入盒/输出盒作用的共享缓 冲器来临时存储变量,从而避免了为每个核心中的每个变量寄存器分配存储 体的需要。此外,可能希望允许线程将数据发送给它们分配的变量寄存器。 这样做的话,将有效地向每个线程提供它自己的暂时寄存器。另外,在一些 实施例中可能希望为给定核心内的本地线程省略变量寄存器,或在一些实现 中省略有效或信用指示符。在一些实施例中还可能希望在不同数据结构中而 不是直接在变量寄存器内实现信用和/或有效指示符。另外,在一些实施例中, 可能每个处理核心中只有一个小组的线程支持变量转移网络,这可能使实现 变量转移网络所需的逻辑电路缩小,同时使需要变量转移的某些工作负荷由 那些线程承担,而不需要变量转移的其它工作负荷由其它线程承担。可以不 偏离本发明的范围地对所公开实施例作出各种另外修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号