具有多个可编程处理器的集成数据处理电路的制作方法

文档序号:6492824阅读:294来源:国知局
专利名称:具有多个可编程处理器的集成数据处理电路的制作方法
技术领域
本发明涉及具有设置成二维矩阵形式的多个可编程处理器的集成数据处理电路。
在本领域中并行处理器的阵列是已知的。这样的阵列促进了处理任务的高速并行执行。在实践中,已发现这样的阵列的速度取决于处理器之间的通信的需要。已经提出了各种各样的通信体系结构。
DE 3812823描述了一种晶片机(transputer)网络。晶片机(最初是由Inmos制造的)包含处理器,并典型地包含四个通信信道,经由所述信道处理器可以耦合至处理器阵列中的四个邻居。处理器之间的通信通过信道流动。当消息必须在阵列中不是紧靠的邻居的两个处理器之间进行通信的时候,该消息传播通过中间的计算机。所述信道也支持广播消息(针对所有晶片机的)。晶片机可以在第一次收到广播消息的时候将其传给它们的所有邻居。
在实践中,为彼此遥远的晶片机之间的通信使用中间晶片机已证明是太大的负担。因此DE 3812823描述了,除了晶片机之外还使用通信处理器来处理消息传输。
作为另一实例,Fujitsu AP1000并行计算机公开了多个处理器,所述处理器是以矩阵的方式组织的单元的一部分(不同的单元包含在不同印刷电路板上)。这种并行计算机使用多个通信网络,包括用于在单元之间通信的所谓的T-网,以及用于从主机到单元的广播通信的B-网。每个单元包含一个与处理器相邻的路由控制器,T-网将单元的每个路由控制器链接到四个邻近单元的路由控制器。路由控制器能够在处理器之间路由信息。B-网包括许多总线和用于与所述总线通信的环状通信结构,其中每一总线耦合至一组处理器。主计算机连接到该环状结构。
假如处理速度是潜在高的,那么在针对许多不同应用的专用集成电路中采用处理器阵列就是有吸引力的。为了支持这种不同应用,所希望的是提供用于自动生成任意规模的处理器阵列的电路说明的设计库。但是,通信结构的设计呈现出设计上的瓶颈。已知的通信结构不容易缩放。也就是说,要从根本上说的话(if at all),它们仅仅对于具有特定范围内的规模的阵列来说是最佳的。通信等待时间在阵列按比例放大时增大。这意味着为了最佳的结果,通信结构必须根据阵列的规模来重新设计。这使得由库生成的处理器阵列不是效率低就是难以设计。
其中,本发明的一个目的是提供具有可缩放通信结构的高效率的处理器阵列。
其中,本发明的一个目的是提供自动生成高效率的处理器阵列和它们的通信结构的电路设计的设计生成器。
本发明提供根据权利要求1的集成数据处理电路。根据本发明,使用至少两种通信结构来用于集成电路上的阵列中的处理器之间的通信。在处理器之间采用基于操作数的最近邻居通信,从而处理器能够非常有效率地将操作数传给它们的邻居,而不必另外传送地址。此外,采用树型结构的通信网络,且路由器电路将具有地址的消息从根路由器电路传给被寻址的处理器。每一个路由器电路选择通过该树到所述处理器的路径的一部分。因此,对于具有足够规模的阵列来说,在树中存在至少两个层次的路由器电路,每一层次上的路由器从消息的地址获得例如不同的片段,来决定该消息将路由至该树的下一层次中的哪一个路由器电路。因此,通过改变树结构中路由器电路的层次数,可以容易地缩放该矩阵。优选地,在树的所有层次上的所有路由器电路都具有到该树的下一层次上的路由器或处理器的相同预定数量的输出端。这进一步简化了自动设计。
在一个实施例中,该树是四叉树。在典型的四叉树中,处理器矩阵是由行和列构成的方阵,其中行数和列数都是二的相同次幂。在该树的最低层次上,该矩阵分成由方块构成的阵列,每一个方块延续两行和列,并且在最低层次上的路由器电路各自具有到相应方块中的四个处理器的连接。在下一较高层次上,所述方块的阵列分成2×2方块的较高层次的方块,在这下一较高层次上的路由器电路各自具有到用于该方块的四个路由器电路的连接,就这样继续下去。
在另一个实施例中,树结构也用于在来自阵列的处理器之间传输消息。在这种情况下,消息首先从处理器朝着该树的根路由器电路传播,直到它到达覆盖源处理器和目的处理器两者的路由器,然后向下回到目的处理器。在另外的实施例中,优选为每一路由器电路提供仲裁电路,来处理来自根路由器电路的消息与来自处理器的消息冲突和/或来自多个处理器的消息冲突的情况。
本发明的这些和其它目的以及有利方面将在下列附图的说明中加以说明。


图1示出了一个处理器阵列;图2示出了一个树结构;图3示出了一个处理器;图4示出了一个路由器电路;图5示出了另一个路由器电路的消息部分;图6示出了另一个路由器电路的握手部分。
图1示出了一个具有主计算机10、处理器12的阵列(为了清晰起见只有一个标注了参考数字)以及路由器电路16、18、19的电路。处理器经由最近邻居连接14(为了清晰起见只有一个标注了参考数字)来进行连接的。主计算机10经由树结构中的路由器电路16、18、19连接到处理器12。
图2示出了该树结构的组织图(在这个图中省去了最近邻居连接14)。该树结构具有由路由器电路16、18、19构成的若干层。主计算机10连接到根路由器电路19,该根路由器电路19又连接到四个下一较低层次的路由器电路18,该路由器电路18又各自连接到四个下下一层次的路由器电路16(为了清晰起见只有一个标注了参考数字),该路由器电路16又各自连接到四个处理器12,所述处理器12形成该树结构的最低层次上的叶子。
图3示出了处理器12的实施例。该处理器包含处理电路20(该电路可以包含诸如算术逻辑单元、指令存储器、程序计数器等功能元件)、寄存器堆22、存储器24、输出单元26和许多输入单元28a-d。处理电路20具有连接到寄存器堆22的操作数读取输入端和结果输出端。输入单元28a-d的输入端用于从邻近的处理器(未示出)接收操作数,并且其连接到寄存器堆22,从而处理电路20能够从输入单元28a-d读取操作数。处理电路20的结果输出端和输出选择输出端21一起连接到输出单元26。输出单元26的输出端用于将操作数输出到各个相邻的处理器(未示出)。存储器24连接到处理电路20,从而处理电路20能够对存储器24进行寻址,以便从存储器24读取数据或向其写入数据。存储器24具有一个输入和输出端25,用于连接到路由器电路之一(未示出)。
在操作中,处理器12执行指令的程序。可用指令集包括从输入单元28a-d接收来自所选择的邻近处理器12的操作数的指令。该指令集还包括经由输出单元26将操作数的结果输出到所选择的邻近处理器12的指令。这样的指令的一个实例是“LOAD A,B”,其中A是要传送的操作数的寄存器地址,而B是标识要将来自寄存器A的操作数传送到的邻居的虚拟寄存器地址。这样的LOAD指令可以用传统的取数、译码、执行、写指令循环来加以执行。应该理解,这种类型的通信是完全本地的向一个邻近处理器12的写入不影响任何其它处理器12。
路由器电路16、18、19用于将消息从主计算机10通信到处理器12。一个典型的消息包含该消息所打算送给的处理器12的地址A,后面是消息净荷数据。该地址优选包含与标识各个处理器12所必需的一样多的位。在阵列由64个处理器12构成的情况下,该地址优选包含六个位。
图4示出了路由器电路的一个实例。该路由器电路包括多路分配器40和用于存储地址的开头两位的两位寄存器42。两位寄存器42控制多路分配器40,该多路分配器40将所接收到的消息路由至它的输出端中的一个,这个输出端是通过所述两位进行选择的。
在操作中,主计算机10将消息发送到根路由器电路19。根路由器电路19从消息的地址A中提取开头两位,并使用这两位来控制下一层次的路由器电路18的选择,其中,根路由器电路19有选择地将所述消息,优选的是没有地址A的开头两位的消息传输至所选择的路由器电路18。
所选择的下一层次的路由器电路18接收该消息,并提取消息的原始地址A的第三和第四位(如果根路由器电路19已扣留地址A的最初的开头两位,那么就是该地址的开头两个所接收到的位)。所选择的下一层次的路由器电路18又使用这两位来控制下下层次的路由器电路16的选择,下一层次的路由器电路18有选择地将消息,优选的是没有该地址A的开头两位(最初是第三和第四位)的消息传输至所选择的路由器电路16。
类似地,所选择的最低层次的路由器电路16从原始地址中提取第五和第六位,使用这些位来控制选择一个处理器12,并将该消息传输至所选择的处理器12,其中该消息用于将数据写入到存储器24中(例如,在标准缓冲区中,或在由该消息中的另一个地址所寻址的位置中)。
应该理解,在每一路由器电路16、18、19中使用地址A的前两位并且传输剩余的位只是一个有利的实施例,其使得使用一致的路由器电路16、18、19成为可能,且缓冲信息的需求最小。在不偏离本发明的情况下,路由器电路16、18、19可以使用该地址的位的其它子集来控制路由。优选地,在特定层次上的所有路由器电路16、18、19使用来自该地址的相同的位,但是甚至这个也不是必需的只要主计算机10提供适当的地址,就可以到达任何处理器12。代替除去已经使用的位,可以传输所有的位,在这种情况下,可以对在不同层次上的路由器加以编程,以使用该地址的不同位,或者路由器可以重新排列这些位(例如,对这些位进行移位,并将在消息一端移出的位在另一端移回进来)。
在支持组播通信的更进一步的实施例中,该消息具有掩码M,可以为每一地址位,或为由地址位所构成的对、或由地址位所构成的更大的组提供各自的掩码。当设置了掩码时,路由器电路16、18、19将相应的地址位视为“不理会”,并且将该消息传给由所述地址位的不同值所寻址的所有下一较低的路由器电路或处理器12。因此,例如,通过提供三个掩码,可以将在每一层次上的路由器电路16、18、19设置为广播至所选择的较低层次的路由器电路或处理器,或者广播至全部的路由器电路或处理器。例如,在掩码为011的情况下,根路由器电路19将该消息发送给所选择的路由器电路,但是所有较低层次的路由器电路都将该消息传输给所有较低层次的电路,从而十六个处理器被寻址。
应该理解,图1和2中所示的体系结构仅仅是作为实例而给出的。并不是所有处理器12都必需连在同一层次上处理器可以代替任何路由器电路连在该树结构上。这是可以做到的,例如如果处理器的数量不是二的幂。原则上,处理器可以与一个以上的路由器电路相连(该处理器具有多个输入端)。因此处理器可以具有一个以上的地址。代替一比四的路由器电路,可以使用其它分支比(优选的是二的幂,例如一比二或一比八)。
可以采用不同形状或大小的其它区域,而不是将由处理器构成的2×2块连到路由器电路。
在另外的实施例中,处理器12被设置来通过路由器电路向上发送另外的消息。来自处理器12的另外的消息包含地址,该地址可以选择另一处理器12和/或主计算机10。这个实施例的路由器电路基本上包括两个部分,一个用于消息的向下传输(朝着处理器12),而一个用于向上传输(离开处理器12)。此外,提供交叉连接用于将另外的消息从上部传给下部。下部大体上与在前面描述的相似。路由器电路的上部与下部相似,只是采用多路复用器来从所选择的较低层次的路由器电路或处理器12传送另外的消息,而不是将消息分发给较低层次的路由器电路或处理器的多路分配器40。交叉连接被设置来检查向上传送的另外的消息是不是对由路由器电路“服务”的处理器寻址(即,可以通过向下传送消息而到达的)。如果是这样的话,则该另外的消息被送到下部,并如前所述那样加以传输。对于该另外的消息来说,可以使用与向下的消息相同类型的地址。但是在一个实施例中,使用了与处理器相关的地址。例如,如果源的地址包含位(a0,a1,a2,…)而目的地的地址包含位(b0,b1,b2,),那么该另外的消息的相对地址C就是(a0+b0,a1+b1,a2+b2,…),其中“+”表示异或。在这种情况下,通过验证在相对地址C中所有供较高层次的路由器电路使用的地址位都是零,就可以在路由器电路中检测该消息是否应该从向上的传输交换(cross over)到向下的传输。当路由器电路向上传送该另外的消息时,它改变对应于路由器电路或处理器12的选择的那些地址位,其中从所选择的路由器电路或处理器12接收所述另外的消息。
例如,如果具有地址010111的处理器12将另外的消息传输给地址为011001的处理器,那么相对地址C就是001110。刚一接收到地址C,较低层次的路由器电路16就确定C的前四位不是零,因此在修改最后两位之后将该另外的消息传输给下一较高层次的路由器电路18,从而该地址变成C’=001101。下一较高层次的路由器电路18确定C的前两位是零,因此在修改中间的由位构成的对C”=001001之后,将该另外的消息转为发送成向下传输。这个地址的最后四位现在用来控制向下的路由。以这种方式,仅需要使路由器适合于它所在的层次,而不用适合于它服务的矩阵部分。
优选地,使用仲裁机构来保证消息不冲突。原则上,在设置了处理器和主计算机的程序从而不会出现冲突的消息时,这不是必需的。在那种情况下,一旦检测到任何消息就可以传送它(例如,通过传输来自不同的源的消息信号的逻辑OR,并且如果没有消息的话,使消息信号为逻辑零)。
但是,优选地,至少对来自主计算机10和来自处理器12的消息之间的冲突进行检测和仲裁,例如通过将优选权给予来自主计算机10的消息。这使得可以与处理器中运行的程序无关地发送来自主计算机10的消息。在进一步的实施例中,对来自处理器12的消息之间的冲突也进行仲裁。这使得可以运行程序的任意组合。仲裁电路是与向上和向下的路径以及交叉耦合平行地设置的。可以使用任何仲裁机构,诸如例如常规的请求和确认的握手此类的。在这个实施例中,处理器12和主计算机10在应该发送一消息的时候断言一请求信号,仲裁器(a)选择应该回答的请求,(b)向该消息的目的地传输该请求,(c)从目的地接收该请求的确认,(d)将该确认传输回源头。当然可以使用其它已知类型的仲裁结构,诸如菊链(daisy-chained)仲裁,或诸如12C总线中使用的那样的等等。
图5和6示出了一路由器电路的实施例的部分,该路由器电路使用了请求和确认的握手。基本上图5示出了该路由器电路的消息部分,而图6则示出了握手部分。这两个部分具有相似的结构,具有两个平行的路径,一条从上到下而一条从下到上,以及这两条路径之间的交叉(cross over)。
图5包括图4中所示的部件多路分配器40和两位的寄存器42。来自两位寄存器42的选择信号由A表示。此外,图4示出了用于多路传输“来自下面”-即来自较低层次的路由器电路或处理器的消息的第一多路复用器50。地址检测器52,检测来自下面的消息的地址是不是对由该路由器所服务的区域内的处理器进行寻址,如果是这样的话就生成信号C,以使该消息交换(cross-over)。第二多路分配器54用于在信号D的控制下将来自下面的消息传送给第二多路复用器56或较高层次的路由器电路。第二多路复用器56将来自较高层次的路由器电路或中央处理器的“从上面”接收的消息多路传输到多路分配器40和两位寄存器42。
图6示出了该路由器电路的握手部分。这个部分包含第一握手多路复用电路60,该电路具有与“下面”的处理器和路由器电路的握手接口。如果必要的话,握手多路复用电路60在未完成的请求之间进行仲裁,确认获胜的请求,在请求已获胜的信号线B上生成继续(follow on)请求和信号。信号线B控制输入端,消息是通过图5的第一多路复用器50从该输入端传送的。请求多路分配器64由图5的交换选择信号C来加以控制,它将继续请求传送给“上面的”路由器电路或使其交换到第二握手多路分配电路66(应该明白,可以延迟地生成所述继续请求,以允许消息的地址被分析以生成信号C)。
如果有必要的话,第二握手多路分配电路66在未完成(outstanding)的交换请求和来自上面的请求之间进行仲裁,确认获胜的请求,在请求已获胜的信号线D上生成进一步的继续请求和信号。信号D控制第二多路复用器56。该进一步的继续请求被传送至第二握手多路分配器68,其将所述进一步的继续请求传送至用于所选择的路由器电路的“来自上面的”握手的握手输入端,所述选择的路由器电路是通过来自两位寄存器42的信号A来加以选择的(再一次,可以有延迟地生成所述进一步的继续请求,以允许从该消息生成信号C)。多路复用器64和多路分配器60、68经由所选择的握手连接以相互相反的方向传送请求和确认信号。这些握手电路60、66、68本身是已知的。
到现在应该可以认识到,本发明提供了一种非常规则的结构,该结构在集成电路布图的自动生成期间可以容易地加以缩放。在设计阶段,根据应用来选择处理器矩阵的规模。放置处理器,且连接邻近的处理器。根据处理器的数量来选择树结构中的层次的数量(可任选的是根据该矩阵的宽度和长度的最大值)。为每一层次添加路由器电路,并且路由器电路连接到较低和较高层次上的路由器电路,或者连接到处理器12或主计算机10。如果路由器电路消去或重新排列地址位,从而相关位总是在该消息中的同一位置上,那么路由器电路就甚至不需要根据使用它的层次来加以适应。
权利要求
1.一种集成数据处理电路,包括以二维矩阵的方式设置的可编程处理器(12),在该矩阵中每一个处理器(12)具有与它的邻近处理器(12)的专用操作数传输连接;包括路由器电路(16,18,19)的通信结构,该路由器电路以树状结构的方式彼此分层地耦合并与所述处理器分层地耦合,所述处理器(12)形成该树状结构的叶节点,所述路由器电路(16,18,19)被设置来有选择地经由穿过该树状结构的路径,将具有地址的消息从根路由器电路(19)路由至被寻址的处理器(12),所述路由器电路(16,18,19)各自在该地址的控制下选择该路径的一部分。
2.如权利要求1所述的集成数据处理电路,每个所述处理器(12)支持经由所述专用操作数传输连接中所选择出一个来传输命令的操作数的命令。
3.如权利要求1所述的数据处理电路,其中该地址包含多个位,每一个路由器电路(16,18,19)被设置来选择所述位的一个片段,所述路由器电路(16,18,19)仅根据该片段中的位来控制到所述树状结构中的直接后继路由器电路(16,18,19)和/或处理器的路由,沿着从所述根路由器电路(19)到各个处理器的每一条路径的后继路由器电路(16,18,19)各自选择不同的片段。
4.如权利要求1所述的数据处理电路,其中每一个特定路由器电路(16,18,19)与该矩阵中的一个区域相关,该区域包含通过该树状结构与所述特定路由器电路(16,18,19)直接或间接耦合的那些处理器(12),与任何在层次上较高的路由器电路(18,19)相关的在层次上较高的区域被分成在层次上较低的路由器电路(16,18)的空间上分离的后继区域,所述在层次上较低的路由器电路(16,18)直接连接到所述在层次上较高的路由器电路(18,19)。
5.如权利要求4所述的数据处理电路,其中该树状结构形成四叉树,每一个路由器电路与在层次上较低的四个路由器电路(16,18)和/或处理器(12)耦合,将所述较高的区域分成与所述在层次上较低的四个路由器电路(16,18)和/或处理器中相应的一个相关的四个区域。
6.如权利要求5所述的数据处理电路,其中该地址包含多个位,每一个路由器被设置来选择由所述位中的两个位构成的片段,该路由器电路仅根据该片段中的所述位来控制到该树状结构中的直接后继路由器电路(16,18)和/或处理器(12)的路由,沿着从所述根路由器电路(19)到各个处理器(12)的每一条路径的后继路由器电路各自选择不同的片段。
7.如权利要求1所述的数据处理电路,其中所述路由器电路(16,18,19)还被设置来,在朝向所述根路由器电路(19)的第一方向上经由穿过该树状结构的第一子路径,从所述处理器(12)中的特定第二处理器,对具有所述处理器(12)中的特定第一处理器的进一步地址的进一步消息进行路由,直到该进一步的消息到达服务于被寻址的所述处理器中的所述第一处理器的路由器电路(16,18,19),随后交换到朝向所述处理器(12)中的所述第一处理器的、经由穿过该树状结构的第二子路径的传输,所述路由器电路(16,18,19)在该进一步的地址的控制下选择所述第一和第二子路径。
8.如权利要求7所述的数据处理电路,该数据处理电路包括仲裁电路(60,66),各自与所述路由器电路(16,18,19)中相应的一个相关,所述仲裁电路被设置来对来自所述根路由器电路(19)的消息和交叉上的所述进一步的消息之间的冲突进行仲裁。
9.如权利要求8所述的数据处理电路,其中该仲裁电路(60,66)被设置来对来自不同的所述处理器的所述进一步消息之间的冲突进行仲裁。
10.如权利要求1所述的数据处理电路,包括公共控制单元,被设置来将处理中使用的参数发送至在消息中所选择的一个处理器(12)。
11.一种制造集成电路的方法,该方法包括选择处理器(12)的二维矩阵的尺寸;利用设计计算机生成在该矩阵中对所述处理器(12)进行布图的指令;利用所述设计计算机生成对在该矩阵中的相邻处理器(12)对之间的专用操作数传输连接进行布图的指令;利用所述设计计算机自动生成指令来对路由器电路(16,18,19)进行布图,所述路由器电路以树状结构的方式彼此分层地耦合并与所述处理器(12)分层地耦合,所述处理器(12)形成该树状结构的叶节点,所述路由器电路(16,18,19)被设置来有选择地经由穿过该树状结构的路径,将具有地址的消息从根路由器电路(19)路由至被寻址的处理器(12),所述路由器电路(16,18,19)各自在该地址的控制下选择该路径的一部分,所述设计计算机选择该树状结构中路由器电路(16,18,19)的层次的数量;根据所生成的布图来制造所述集成电路。
全文摘要
一种集成数据处理电路包含可编程处理器的矩阵。在该矩阵中每一个处理器(12)具有到它邻近处理器(12)的专用操作数传输连接,典型地是用于传送传输命令的操作数。附加的树通信结构包含彼此分层地相连或与处理器分层地相连的路由器电路(16,18,19)。处理器(12)形成该树结构的叶节点,路由器(16,18,19)被设置来有选择地经由穿过该树结构的路径,将具有地址的消息从根路由器电路(19)路由至被寻址的处理器(12),该路由器电路(16,18,19)在该地址的控制下各自选择该路径的一部分。
文档编号G06F15/173GK1849598SQ200480025715
公开日2006年10月18日 申请日期2004年8月20日 优先权日2003年9月9日
发明者缅诺·M·林德韦, 埃德温·J·范达伦 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1