技术领域 本发明涉及具有增强的内部通信和存储器配置的处理器(例如数据 处理器)系统。 背景技术 单指令多数据流(SIMD)处理器的当前实施方案具有用于每一处理 元件(PE)的本地存储器。此存储器通常专用于每一PE。为了共享数 据,PE必须存取共同享用的存储器中的数据或使用某种PE间通信机制。 具有两种不同类型的存储器使编程模型复杂化。必须将数据移动到共享 存储器或在PE之间移动数据是一项性能额外开销。 本发明的目的是克服这些和其它问题。 现有技术 已知的各种类别的结构,包括具有共享存储器的SIMD结构。这些 结构中的一些结构的概述可查阅 http://www.top500.org/ORSC/2003/architecture.html。尤其两种类型的结构 值得提及: 分布式存储器系统:在此情况下,每个PE具有其自身的关联的存 储器。所述PE由某一网络连接且可在需要时在其各自的存储器之间交 换数据。与共享存储机器(见下文)形成对比,用户必须知道数据在本 地存储器中的位置,且在需要时将必须显式地移动或分布这些数据。我 们先前的结构(和大多数SIMD结构)属于此形式。 共享存储器系统:共享存储器系统具有多个PE,所有PE共享同一 地址空间。这意味着,知道数据存储在什么地方对用户来说没有意义, 因为在平等的基础上,所有PE仅存取一个存储器。单CPU向量处理器 也可被视为此共享存储器系统的一个实例。 以下文件描述路由ALU间网络(routed inter-ALU network),其为 用于将指令分布到分布式ALU且将数据分布到寄存器堆及从寄存器堆 分布数据的互连: Efficient Interconnects for Clustered Microarchitectures Joan-Manuel Parcerisa,Julio Sahuquillo,Antonio Gonzalez,Jose Duato Routed Inter-ALU Networks for ILP Scalability and Performance Karthikeyan Sankaralingam Vincent Ajay Singh_Stephen W.Keckler Doug Burger Computer Architecture and Technology Laboratory, Department of Computer Sciences. Department of Electrical and Computer Engineering. The University of Texas at Austin Exploiting ILP,TLP,and DLP with the Polymorphous TRIPS Architecture Karthikeyan Sankaralingam,Ramadass Nagarajan,Haiming Liu; Changkyu Kim,Jaehyuk Huh,Doug Burger,Stephen W.Keckler,Charles R. Moore, Computer Architecture and Technology Laboratory, Department of Computer Sciences. The University of Texas at Austin cart@cs.utexas.edu-www.cs.utexas.edu/users/cart 此类网络经由分布式寄存器堆将若干功能单元连接在一起。功能单 元与寄存器堆间的操作使用此网络来操纵由指令命令驱动的数据的源和 目的地。因此,所述网络将群集ALU处理器的功能单元连接在一起,从 而将功能单元连接到寄存器堆。 该方法与此处所述的方法的不同之处在于,不使用申请者的 ClearConnect总线(“CCB”)网络来分布指令或将功能单元连接到寄存 器堆。并且,源和目的地址由ALU驱动且不是由指令流静态地驱动。 可如下识别共享存储器SIMD的先前实施方案的某些问题,其中它 们: ·需要复杂且不可缩放的交叉式(cross-bar)或多端口存储器系统; ·使用对存储器的存取的中央仲裁,增加了延迟和复杂性; ·通常限制所允许的存取的类型:例如,所有PE存取固定的偏移量。 可参考我们较早的一些专利和专利申请案,以获得关于本发明的特 征的某些方面的更多背景和信息: ·英国专利2348974(load/store)、2348984(multitasking)、2348973 (scoreboarding) ·英国专利申请案:0321186.9(ClearConnect)、0400893.4 (multitasking)、0409815.3(unified SIMD)。 发明内容 在本发明的优选实施方案中且为了解决上述问题,本发明提供具有 单个一致地址空间的共享PE存储器,所述单个一致地址空间包括PE的 所有本地存储器以及全局共享存储器。 本发明简化了SIMD阵列内的处理器间通信,且还使单存储器与多 存储器统一到单个地址空间中。这很大程度上为程序员简化了存储器使 用,且扩展了编译器优化的潜力。它还组合了本地PE存储器的性能益 处与共享存储器的使用的便利性。当PE间通信与计算混合在一程序内 时,本发明还增加了SIMD处理器的操作效率。 因此,本发明提供一种数据处理器,其包含复数个处理元件、所述 复数个处理元件中的至少一者本地的存储器构件,和数据包交换网络, 所述数据包交换网络使所述处理元件与所述存储器构件互连,藉此使所 述处理元件中的任何一者都能够存取所述存储器构件。 在本发明的优选实施方案中: 存储器构件包含与所述处理元件中的每一者的个别一者关联的本地 存储器,每个本地存储器对应一个处理元件。。 每个处理元件可以是阵列处理器中的处理元件阵列中的一个处理元 件。 处理器阵列可以是单指令多数据(Single Instruction multiple data, SIMD)处理器。 存储器构件可包含在复数个处理元件之间共享的单个本地存储器。 外部存储器也可连接到数据包交换网络,使得外部存储器可用于所 述处理元件中的任何一者。 包交换网络优选地包含复数个节点,每个节点连接到各自的处理元 件,且至少一个节点连接到所述存储器构件。 可在线性网络中连接节点,或可在阵列中连接节点以形成网格。 包交换网络优选地适合于支持所述处理元件与所述存储器构件之间 的多个同时传递。 节点优选地连接到共用控制器,所述共用控制器适合于向所述处理 元件发出指令且向所述存储器构件发出存储器控制信号,在此情况下, 例如个别或门的另外的构件组合来自每个处理元件的状态信号且组合来 自每个节点的状态信号以供传送到共用控制器。 所述包交换网络中的所述节点中的一者适合于充当所述节点中的任 何一者与所述外部存储器之间的接口。 存储器构件可包含所述本地存储器的复数个实例,所有所述实例都 出现在单个存储器映射或存储器空间中以便由处理元件中的任何一者存 取。 外部存储器优选地也出现在所述单个存储器映射或存储器空间中以 便由处理元件中的任何一者存取。 数据处理器可额外地包含至少一个另外的数据处理器,每个所述另 外的数据处理器具有各自的存储器构件,且其中每个所述各自的存储器 构件与所述数据处理器的所述存储器构件出现在同一存储器映射或存储 器空间中。 存储器构件优选地映射到所述存储器映射或存储器空间中的邻接地 址范围中,也可映射到所述存储器映射或存储器空间中的非邻接地址范 围中,使得每个处理元件呈现为具有比实体上与其关联的本地存储器多 的本地存储器,额外存储器由所述外部存储器中的地址提供。 优选地通过组合个别处理元件的至少一个识别号码与个别本地存储 器内的地址来确定所述存储器映射或存储器空间中的每个地址。其中所 述数据处理器附接到一个或一个以上另外的数据处理器,所述地址优选 地还包括处理器身份号码。 优选地,所述存储器构件中的至少一部分进一步包含高速缓冲存储 器,所述高速缓冲存储器也连接到数据包交换网络,使得所述高速缓冲 存储器可用于所述处理元件中的任何一者。 处理器优选地适合于在完成至少一个其它指令的时间期间执行一个 或一个以上指令,藉此存储器存取的可变等待时间被隐藏。 共用控制器可适合于与其它操作同时且独立于其它操作而执行存储 器存取操作。 处理器可响应于由所述共用控制器发送到所述存储器构件的控制信 号而对存储在所述存储器构件中的数据执行存储器存取,所述存储器存 取仅相对于所述存储器构件的已经从相应节点接收交易的区块而启用。 每个处理元件可设定并维持指示处理元件参与存储器存取的标记, 所述状态信号从所述标记产生且被传送到共用控制器,且当存储器存取 完成时,标记被清除。 类似地,每个节点可设定并维持指示节点参与交易的标记,所述状 态信号从所述标记产生且被传送到共用控制器,且当交易完成时,标记 被清除。 数据处理器可发出所述控制信号以对应于系统时钟的每个循环执行 所述存储器存取一次。 处理器可在循环所述存储器控制信号一次之前等待,直到每个交易包 都已经到达其目标存储器为止,或可在循环所述存储器控制信号一次之前 等待,直到每一交易包都已经到达其目标存储器为止。 处理器可对复数个存储器存取进行分批并同时执行所述批存储器存 取。 存储器存取可以是缓冲直写式操作(posted write Operation),在所述 缓冲直写式操作中处理元件不等待确认写入交易已完成。 存储器存取可以是确认式写入操作(acknowledged write Operation),在所述确认式写入操作中响应于写入操作的完成而产生确 认包并将确认包传回发出请求的处理元件。 存储器存取可以是传播读取操作,在所述传播读取操作中从可交易 式处理元件起始读取交易,从存储器位置读取数据,在每个节点处复制 数据并将数据输入每个处理元件中的寄存器堆中。 存储器存取可以是区块写入操作,在所述区块写入操作中每个处理 元件适合于响应于由共用控制器产生含有存储器地址和计数的区块复制 命令而产生写入操作序列,从而使区块中的所有写入操作都能够完成。 存储器存取可以是区块读取操作,在所述区块读取操作中每个处理 元件适合于响应于由共用控制器产生含有存储器地址和计数的区块读取 命令而产生读取操作序列,从而使区块中的所有读取操作都能够完成。 存储器存取可以是传播写入,在所述传播写入中从可交易式处理元 件起始写入交易,在每个节点处复制数据并将数据复制到每个处理元件 的本地存储器中。 附图说明 现将参照如下附图描述本发明, 图1传统的SIMD结构; 图2示意说明单独的多存储器映射和单存储器映射; 图3示意说明统一的存储器的地址映射,其展示如何从2K字符存 储器(11位地址)和64个PE(6位PE号码)的实例的PE识别符和存 储器地址产生共享存储器地址; 图4展示如何从PE识别符和存储器地址产生共享存储器地址; 图5说明虚拟化PE存储器的地址映射; 图6是CCB互连PE存储器的示意图; 图7说明PE间传递的操作,其在PE寄存器与存储器之间投送请求; 图8说明同时传递的操作; 图9说明使用中间端节点的本发明的实例; 图10说明结合根据本发明的存储器配置而使用的共享的加载/存储 单元。 具体实施方式 概述 如优选实施的本发明连接与每个SIMD处理器元件(PE)关联的存 储器元件,使得可以自然且一致的方式来存取整个系统中的所有存储器 元件(包括外部存储器),同时使可用存储器带宽和处理器性能最大化。 尽管连接处理器阵列中的PE的网络本质上不是新的,但本发明具有几 个使其变得独特的先进特征。 双向包操纵的网络与加载存储存储器控制器的密切组合向寄存器堆 处理器模型提供标准存储器,其中PE间和甚至处理器间通信的所有复 杂性对程序员来说都是隐藏的。通过使用处理器的多线程能力来隐藏与 这些传递的潜在较大等待时间关联的低计算效率。因此,由于向寄存器 堆处理器模型提供的标准存储器的缘故,本发明使编译器更容易地优化 应用。因此,减轻了程序员使用系统来显式地移动数据的职责。 本发明充分利用如硬件中可用的一样多的平行性和带宽。较大数目 的并发存储器操作由于交换网络的分段且无阻塞结构而得以执行。 本发明允许扩展存储器系统,使其超出内部资源。用于操纵网络内 的交易的地址也是全局存储器映射中所使用的同一地址。 由于本发明的简单性和上文所列的特征,本发明使软件应用直接获 得对资源的有效使用。 这适用于任何SIMD处理器和可能任何类型的处理元件(或处理器) 阵列。 细节 图1中示意说明当前SIMD处理器。所述SIMD处理器具有PE阵 列,所述PE每一者具有关联的存储器。还存在控制器,其取得指令并 将它们发出到PE阵列。所述控制器逻辑上再分为若干用于管理不同类 型的指令的执行的单元。举例来说,阵列控制单元发出完全在PE内执 行的指令,例如算术和逻辑操作、程序控制和寄存器之间的数据的移动。 加载/存储(LS)单元发出用于在PE与其存储器之间移动数据的指令。 输入/输出(I/O)单元发出用于将数据移入处理器和将数据从处理器移 出的指令。这些单元中的每一者在PE阵列内使用不同的硬件,且因此 由每个单元控制的操作可同时执行。 通常,如图1中所示,当前SIMD体系结构提供与每个PE关联的 存储器。这意味着存在用于外部/共享存储器(“单”存储器)和用于每 个PE存储器(“多”存储器)的单独地址空间,这由图2中的存储器映 射来表示。 在当前技术发展水平下,如果需要将数据与其它PE共享或被移入 到外部存储器/从外部存储器移出,那么与PE关联的本地存储器必须直 接由程序员来管理。必须将数据显式地传递到与每个PE关联的存储器 内的工作区位置/从与每个PE关联的存储器内的工作区位置显式地传递 数据。此存储器映射为PE专有,此存储器映射对其他实体是不可见的。 这增加了程序员对在这些单独空间之间移动数据进行显式管理的负担。 如图3所示,本发明通过将所有PE的存储器映射到单个地址空间 作为可唯一地寻址的范围而使得能够存取其它PE的存储器。当需要在 阵列内PE之间移动数据时,使用直接存储器复制操作。 在最简单的情况下,用于存取PE存储器的存储器地址是保存数据 的PE的识别符号码(图4的左侧)与所述PE的存储器中的地址(图4 的右侧)的结合。如图中所示,这将所有PE存储器映射到地址空间中 的连续区块中。然而,此简单模型假定PE存储器大小为2的乘方。因 此,编译器可容易地在PE与外部存储器之间传送数据,而无需显式地 使用数据移动指令序列。所有这一切都可使用常规C语法来实施。程序 员可使用这些特征,而无需知道其实际存取机制,也不需要知道它如何 执行的。 可使用更复杂的存储器映射,使得PE存储器的区块不连续,或处 理不是2的乘方的存储器大小。这可通过允许每个PE存取超过其实体 本地存储器的范围的地址来有效地“虚拟化”PE存储器,所述存取将转 向全局存储器,但到达被视为似乎专用于所述PE的区域,如图5中所 示。从PE的观点来看,唯一的差异在于对对应于PE本地的存储器的地 址的存取将更快。 可使用其它地址映射。举例来说,在向量处理中,交错来自每个PE 的存储器的字可能是有用的。如果存在N个PE,每一者具有关联的存 储器,那么存储器映射中的最初的N个字将对应于来自各个PE中的每 一者的第一个字,其次的N个字将对应于来自每个PE的第二个字,等 等。此概念的变化可用于DSP或图像处理应用中,尤其在映射可动态地 变化,例如对于FFT产生“蝶式”地址时是可用的。 实施方案 如图6中所表示的本发明的优选实施方案使用双向ClearConnect“总 线”(CCB)。然而,并非简单地是字面意义上的“总线”,所述总线实际 上是数据包交换互连网络。可参考我们的英国专利申请案0321186.9(英 国专利第2348974号)来获得ClearConnect总线的更多细节。节点2沿 “总线”而间隔排列,使得每一PE1可连接到其相应的存储器区块3, 且连接到每一其它存储器区块(不管另一PE的存储器区块或另一存储 器是否算在一起)。CCB的端部处的节点4连接到外部接口或另一CCB 网络,其总体结构如图6所示。 使ClearConnect总线尤其适合于此应用的ClearConnect总线的特征 为: ·其对任何数目的节点来说都是模块化且可缩放的 ·所有地址解码、路由、仲裁和控制都在每个节点处分布、在本地 且独立地被执行 ·模块化结构允许每个总线段上发生多个同时传递。 ·另外,在每个节点内,穿过所述节点的每个路线都可支持同时传 递。 ·总线是无阻塞的;可在每个节点处包括缓冲以确保其始终准备好 接受数据。 ·存在得到保证的递送:一旦数据包已经发送,发送者就可肯定所 述数据包将(最终)到达目的地。 由于CCB的模块化性质及其对多个独立同时交易支持,所以毫无争 议地所有PE仍然可存取其自身的存储器。然而,尽管等待时间较长, 该体系结构能使每一PE1都能够存取每一其它PE的存储器3。如图7 所示,存储器存取被路由到/从适当的PE的适当位置和发出请求的PE 单元的寄存器堆5。寄存器地址字段用于指定结果数据的目的地,且PE 识别符字段用于将结果路由回发出请求的PE。在图7中的6处一起指示 所述两个字段。类似地,PE识别符字段用于将交易路由到目标存储器, 且存储器存取字段用于指定根据情况将要读取/写入的位置。图7中的8 处总体展示这一情况。PE之间的代表性交易由经由三个节点2连接左上 PE与右下存储器的虚线指示,如图7所示。 使用ClearConnect总线的另一益处在于,PE存储器与寄存器堆之间 的带宽由于总线的高度同时性的缘故而最大化,如图8所示。在图8中, 出于说明性目的而使用多种不同虚线/点划线来展示PE与PE存储器之 间的多种示范性交易。 数据在写入到存储器3之前,在ClearConnect节点2中被缓冲。此 处的充分缓冲确保总线在多个交易寻址到单个存储器时不会停止。此缓 冲也可用于使每一节点处的存储器传递同步;这允许存储器传递占用单 个循环周期,而不用占用多个循环周期,因为每个节点都执行其自身的 写入。接着,存储器传递可周期挪用;即在存储器原本闲置时发生。当 数据被传回PE寄存器时,可完成这项任务。为了简单起见,下文的描 述中省略了此细节。 作为以链的形式级联的节点的替代形式,所述节点可以网格的形式 配置。实体配置对处理器来说是不重要的,只要节点仍可以刚才对于级 联配置所描述的方式操作。 由于向存储器的远程区块进行的传递的等待时间较长,所以提供经 修改的加载/存储单元(共享的加载-存储(SLS)单元),其与其它PE 操作同时且独立于其它PE操作而处理这些任务。这还允许PE执行过程 继续,同时这些存储器操作在进行中,其中SLS单元为对PE存储器的 存取进行仲裁。注意,此处的机制可代替用于每个PE到其本地存储器 的现存加载/存储机制,或可加上现存加载/存储机制而使用;后一情况 允许同时使用两个加载/存储机制。 处理器可在PE间和其它非本地传递发生时执行来自其它线程的指 令。在多任务实施方案中,切换到新的线程,持续传递的持续时间,可 能不是有效的。然而,编译器可对传递进行排定,使得存在在传递发生 时可从同一线程执行的其它指令。在SMT实施方案中,在传递发生时可 运行来自任何可用线程的指令。 在PE与存储器区块之间不需要存在一对一映射。如图9所示,可 存在由多个PE(在此情况下为两个PE)共享的一个存储器区块。这可 能是合乎需要的,因为一个大存储器区块比多个小区块在面积方面更有 效。然而,多个小区块可提供较快存取。本发明提供的灵活性允许面积 与性能的最佳折衷。 所谓的“端节点”(例如图9中的节点9)可放置在阵列内允许存取 等待时间优化的任何地方。端节点用于介接到外部存储器或另一类似处 理器。通过具有两个或两个以上此类端节点,可连接多个处理器以创建 多处理器系统。接着,可由任何PE使用通常寻址方案来存取系统中的 所有存储器,不管是PE存储器还是外部存储器。在多处理器系统中, 将通过组合目标存储器中的物理位置、PE识别号码与处理器识别号码来 形成全局存储器地址。 附接到总线的所述存储器区块中的一些存储器区块可实施为数据高 速缓冲存储器。当所述高速缓冲存储器必须刷新或取得数据时,仅SLS 单元将停止,其它PE操作可继续运行。此时可完成线程切换以确保阵 列保持占用。 在大阵列中,可通过在节点之间添加额外连接来减少将数据从一端 传递到另一端的等待时间。存在用于提供此类路由的多种已知方法,例 如网格、树型或超正方体网络。 冗余CCB节点、PE和存储器的添加可用于增加产率。通过将个别 地址重新分派给附近的节点并在未经修改的情况下通过有缺陷的PE的 CCB节点而投送所有通信量,来跳过发生故障的PE或存储器或两者。 SLS(共享的加载/存储单元) 目前,标准加载/存储(LS)单元在指令序列的控制下处理每个PE 的存储器与寄存器堆之间数据的移动。LS单元向所有PE供应控制信号、 寄存器堆地址和存储器地址。可从我们的英国专利编号为第2348974号 获得我们的标准加载/存储控制器的更多细节。 共享的加载/存储(SLS)单元在负责管理共享存储器交易这一点上 是类似的。图10示意说明SLS 10如何与PE 1和“总线”/CC节点2相 互作用。共享的加载存储控制器10从每个PE接收“交易激活”(E)标 记值为11,且从每个总线节点2接收“交易进行中”(T)标记值为12。 共享的加载存储控制器10向所有PE发出控制信号(包括存储器和寄存 器地址)。在一个实施方案中,共享的加载存储控制器10还将存储器控 制信号发送到存储器区块3。在替代实施方案中,存储器控制信号由每 个总线节点2产生。由每个存储器使用的地址(和用于写入的数据)来 自总线节点。或门13的链使每个PE1和每个节点2能够将其状态传送 回SLS 10。 使SLS不同于现存加载存储单元的特征是,共享交易所花费的时间 取决于源PE与目的地PE之间的距离。这是可变且可能未知的值。其也 可能对于每一PE来说是不同的。因此,不能预先知道共享的加载或存 储交易完成所花费的时间。 数据包可在每次循环时到达存储器中的每一者,因此一个可能的实 施方案是SLS单元发送控制信号以在每次循环时执行存储器存取(读取 或写入)。仅那些已经从相应的CC节点接收交易的存储器将实际上执行 存储器交易。此方法的优势是简单;缺点是存储器写入操作将需要在多 个循环内展开,从而可能干扰存取存储器的其它单元。更有效的方法是 SLS等待所有交易包都到达其目标存储器且接着对存储器控制信号进行 一次循环操作。或者,可使用两种方法的组合,其中一定数目的存储器 存取被“分批”并同时执行。 SLS必须接收关于PE和总线节点的全局状态的信息,以确定交易 是否发生或是否存在待解决交易未解决。当参与交易的所有PE都已经 被满足时,SLS可终止共享的加载/存储交易。这基于每一PE上的“交 易激活”标记和CCB活动标记。此全局状态通过任意配置的逻辑网络被 收集;可能通过总线结构本身或单独网络被反馈,所述单独网络对状态 信号进行或操作使其在一起。每个PE都可设定本地交易激活标记以指 示其是否希望参与共享存储器交易。 SLS单元必须以与标准LS单元相同的方式与阵列控制器内的其它 控制机制(例如寄存器互锁、其它加载/存储单元和标识机制)相互作用。 SLS和LS单元可能同时进行操作,从而以逐个循环的方式对公共资源 的存取进行仲裁。 为了控制交易,SLS连续地对全局寄存器堆和存储器控制信号进行 排序,直到所有交易都已完成为止。 通常,SLS单元提供用于交易处理的寄存器堆地址,在每个PE本 地产生存储器地址。对于一些传递来说,PE可能优选在本地产生寄存器 地址,或存储器地址可能优选由SLS单元提供。 存储器地址可由PE使用标准寻址模式中的任何一者来供应。这些 地址可隐式地对另一PE进行寻址(基于上文所述的地址映射)。或者, 程序员可能希望显式地参考PE号码,在此情况下,识别符与存储器地 址在本地组合以形成共享存储器地址。SLS也可能提供基址或偏移量, 所述基址或偏移量被添加到由PE提供的存储器地址。所产生的共享存 储器地址与数据一起越过CCB而传输,且用于操纵沿CCB到达目的地 PE的交易。在目的地PE处,存储器地址字段被提取且用于控制向存储 器读取或写入数据。 特定操作 在此部分中,现将描述一些特定操作。 共享写入 共享写入可使用“缓冲直写式”或非缓冲直写式(确认式)操作。 缓冲直写式意味着PE不等待确认写入交易已经完成:一旦写入交易已 经离开PE的交易缓冲器,则只有CCB上的活动指示其进程。一旦CCB 上的所有活动都停止,则所有的写入已经完成。 将详细描述缓冲直写式。为了起始写入操作,SLS单元将寄存器堆地 址传播到所有的PE。仅可交易式PE将参与写入操作。接着,SLS单元传 递将待写入地址和数据从每个可交易式PE传递到CCB接口上。当CCB“交 易进行中”信号被激活时,禁止PE进行进一步交易。CCB使用地址的识 别符字段来操纵含有到达目的地PE的地址和数据的包。根据数据必须 越过CCB而行进的距离,这可能占用可变数目的循环。CCB自发地操 作,沿PE阵列向上或向下投送交易。所有PE可能同时激活交易,从而 充分开发CCB的同时传递能力。 当数据到达其目的地时,使用从包中提取的存储器地址将所述数据 写入到PE存储器。在每个循环时,包可到达目的地PE存储器,因此 SLS单元连续地对SRAM控制进行排序,直到CCB上的所有活动都停 止为止。SLS单元接着用信号通知指令/线程排序器单元写入完成。如果 发生对单个PE存储器的多次写入,那么不保证次序得到保存,而是排 序将仍然进行直到完成为止。 确认式写入 当写入需要被确认时,操作类似于下文所述的读取;当发送写入数 据时,PE不关闭其“交易激活”标记。源PE识别符包括在交易包中, 使得可将结果传回。当将数据写入到存储器中时,产生响应包(以与读 取响应相同的方式,但其不含有数据)。一旦PE接收到结果包,其关闭 交易激活标记。 如同共享读取交易一样,处理器可在等待写入被确认时执行来自另 一线程的指令。 区块写入 PE可能使用由SLS发出的“区块复制”命令来产生共享写入序列。 这提供寄存器和存储器基址及计数。随后的操作对连续的寄存器堆和连 续的存储器地址进行排序以实施区块操作。每个PE在交易被发出时对 交易进行计数,且一旦已经发送了所请求的数目,那么就清除交易激活 标记。SLS进行排序,直到区块中所有PE进行的所有写入都完成为止。 传播写入 也可能使用共享写入机制将数据从PE写入到所有存储器。从所有参与的经 启用的PE产生特殊的“传播”多共享写入交易。每个PE可将不同数据传 播到不同的存储器地址。CCB检测此模式,且在每个CCB节点处,其复制 所述交易,从而将包复制到本地附接的存储器,并将所述包转发到下一节 点。到达CCB的端部的任何交易都被抛弃,或在附接有另一处理器时可继 续前进。 在操作期间,SLS等待直到所有的CCB活动都停止为止,以确定传 播已经完成。如果所有的PE都被启用,即所有的PE都正对所有存储器 进行写入,那么可产生相当大数目的交易。 共享读取 共享读取具有两个阶段的分离的交易操作。读取交易阶段产生前往 存储器的请求。一旦读取交易到达,就通过使用内嵌于所述请求中的返 回地址而将读取交易反射回其来源。因此,共享读取操作比共享写入交 易花费更长时间。 为了起始读取操作,SLS单元将寄存器堆地址传播到所有的PE。仅 可交易式PE将参与活动的任一部分。接着,SLS单元将共享存储器地 址、发出请求的PE的识别符和目的地寄存器地址从每个可交易式PE传 递到CCB接口上。激活CCB“交易进行中”信号。PE的识别符和寄存 器地址存储在总线上的包中以便被用作读取数据的返回地址。 CCB通过使用共享存储器地址中的目的地PE识别符来使所述包转 向目的地PE。视数据必须沿CCB而行进的距离而定,这可能占用可变 数目的循环。CCB自发地操作,沿PE阵列向上或向下投送交易。所有 PE可能都可激活交易,从而充分开发CCB的同时传递能力。 当包到达目的地PE时,使用从包中提取的存储器地址从存储器中 读取数据。将数据、返回PE识别符和寄存器地址加载到CCB包中。产 生返回CCB交易,且使数据转向回其来源。当包回到发源的PE时,使 用在包中编码的寄存器地址将数据写入到PE寄存器堆。接着,禁止所 述PE进行进一步交易。 SLS单元继续对SRAM和寄存器写入控制信号进行排序,直到CCB 上的所有活动都停止且所有交易激活标记都关闭为止。SLS单元接着用 信号通知排序器单元读取完成。 如果发生从单个PE存储器进行多次读取,那么不保证所述次序, 而是排序将仍然进行直到完成为止。 传播读取 如同传播写入一样,单个读取操作可将数据传回所有PE中的相同 寄存器。在此情况下,每个CCB节点复制从存储器存取传回的数据,因 此所述数据被复制到每一PE。 区块读取 PE可能从由SLS给出的区块读取命令中产生一系列共享读取。SLS 区块命令将提供寄存器堆和存储器基址以及计数。随后的操作对连续的 寄存器堆和连续的存储器地址进行排序以实施区块操作。PE进行排序, 直到所有的交易都完成为止。 外部交易 可扩展相同基础机制以允许存取外部存储器或在不同处理器中的 PE阵列之间进行存取。外部装置经由总线的端节点(CCBEN)经由合 适的接口而连接。在阵列中的任何PE的范围外的地址将最终到达端节 点。这些存取可针对同一芯片上的存储器/处理器或针对芯片外装置。 外部写入 如上文所述,共享写入可为记入式。这意味着如果共享写入中的任 一者被寻址使得其转向CCBEN,那么所述交易从总线处有效地消失,且 SLS可认为写入交易完成。一旦写入交易已经离开处理器,就不需要关 于其活动的任何进一步反馈。 然而,可能需要等待写入的确认,以便使分离的处理器同步或确保 数据完整性。确认式写入具有两个阶段的分离的交易操作,即写入交易 和确认交易。写入交易阶段产生写入请求,使用数据的地址字段将所述 写入请求转向其目的地。一旦写入交易到达其目的地,接收器就产生确 认交易包,使用内嵌于所述请求中的返回地址字段将其发送回其来源(在 此情况下为作为发送方的CCBEN)。 CCBEN通过在交易离开和返回时对交易进行计数来对已经以此方 式转换的所有交易进行记录。一旦已经接收到所有的确认,就为SLS产 生指示所有的确认式写入交易都已经完成的信号。此过程中不涉及个别 PE。 处理器可在等待所有写入被确认时执行来自其它线程的指令。 外部读取 共享读取具有两个阶段的分离的交易操作。 如果共享读取经由CCBEN寻址到外部装置,那么SLS单元使活动 继续,如同正常共享读取操作已经发生那样,只是已经在外部发送的交 易可能比本地共享读取占用更多循环来完成。因此,即使不存在更多的 CCB活动,许多的交易激活标记也不可能已经停用。SLS单元可使用此 状态来向阵列控制器指示现在可发生线程切换。 在以后的某一时间,CCBEN上将出现一个或一个以上返回交易。用 信号向阵列控制器通知此情况,以指示线程切换可能是必要的,且恢复 所有PE的状态。一旦线程状态恢复,SLS单元就可重新启动且可允许 交易进行。现在,操作作为正常共享读取而继续。 传入的交易 当交易从外部来源(通常另一PE阵列)到达CCBEN时,用信号通 知SLS交易已经开始。SLS将产生必要的控制信号以对由所述交易寻址 的PE存储器进行读取或写入。将如上所述产生读取数据返回交易,唯 一的差异是其目的地将在此阵列外。一旦总线上的所有活动都停止,SLS 就将停止(不存在可交易式PE)。 如果外部交易在本地共享存储器存取发生时到达,那么传入的交易 可能停止,直到本地交易已经完成为止。同一机制允许任何外部装置(例 如,主机/调试处理器)存取PE存储器。 总结 虽然上文的描述已经陈述了本发明的主要特征,且权利要求书详细 说明了本发明的实质要素,但以下的优势和特征列表是可由本发明以其 优选形式或实施方案实现的关键特征的有用概括。 ·MTAP的多线程性质隐藏了共享的加载/存储的等待时间。 ·PE存储器的全局化和统一的寻址简化了编程模型。 ·对程序员来说,对所有存储器类型的存取是完全连续的。因此, 针对大批芯片上RAM的透明高带宽交易是可行的。 ·编译器可得到关于各种地址范围和传递类型的等待时间的信息; 这将允许编译器(使用标准,已知技术)对数据移动进行排定和优化。 ·PE存储器可被“虚拟化”,即它们可呈现为具有比每个PE上实体 上存在的存储器更多的存储器。 ·处理器透明地支持不同处理器中的PE阵列之间的存取。 ·到达/来自不同PE和存储器的传输可在总线上(在不同节点处) 同时发生,从而使存储器交易带宽自动最大化。 ·允许多个对一个(many-to-one)和一个对多个(one-to-many)交 易(例如广播)。 ·交易自然地在CCB上排队。 ·提供同时共享的加载/存储、“正常”多加载/存储和ALU操作。 ·共享交易可能比多交易占用更多循环,且因此编译器可预先对共 享交易进行排定以使活动交迭。 ·允许更有效地分割存储器区块和对PE进行分配。 ·通过添加由改变CCB节点寻址而映射到其中的冗余PE来修补有 缺陷的部分。 ·存储器可提供高速缓存。