处理器阵列的制作方法

文档序号:6479512阅读:321来源:国知局
专利名称:处理器阵列的制作方法
技术领域
本发明涉及一种处理器阵列,并具体涉及一种需一次与一个处理器,同时与所有处理器,或者同时与处理器的子集进行多位、双向、高带宽通信的大型处理器阵列。进行数据传输时可能需要这种通信,诸如将程序加载到处理器中,或者从处理器回读状态或结果信息,或者用于控制处理器阵列,如各处理器的同步启动、停止或单步执行。
背景技术
GB-A-2370380描述了一种大型处理器阵列,其中每个处理器(阵列元件)需要存储组成操作程序的指令,并且必须是可控的,以便根据需要运行操作程序。由于阵列元件在彼此之间传送数据,处理器必须至少近似保持同步。从而,它们必须同时启动(即开始运行其程序)。同样,如果在某时刻要将它们停止然后再重新启动,则它们必须同时被停止。
由于阵列元件数量庞大,并且由于其相对而言大规模的指令存储、数据存储、寄存器文件等,因此,最好能够迅速地为每个阵列元件加载程序。
由于处理器阵列的规模,难以使每个阵列元件之间的时滞(clockskew)量最小,并且实际上,从向阵列元件输送功率的观点出发,具有一定量的时滞是有益的。即,阵列元件必须在大约一个时钟周期内彼此同步。
为了同步控制处理器阵列,最简单的解决方法是按照并行扇出的方式将控制信号电告给所有阵列元件。这样做的局限性是一旦阵列大于一定规模的话会显得很笨拙。一旦信号必须传输的距离太长以致于使信号花费长于一个时钟周期的时间才能到达最远的阵列元件,则难以有效地使控制信号流水线化,并对所有操作条件平衡端点到达时间。这样就使可用的时钟速度具有上限,从而使通信带宽具有上限。此外,该方法不能很好地适于在一种模式下每次仅能够同一个处理器通话,而在另一种模式下立即能同所有处理器通话。
为了与多个端点进行高带宽通信,包交换或电路交换网络是一种很好的解决方案。不过,该方法的缺点在于在所有端点处通常是不同步的。对更远端点的等待时间要长于对较近端点的等待时间。这也要求网络节点相当智能,从而比较复杂。
还必须考虑比例放大性问题。在一种处理器阵列中工作良好的设计,对于稍大的阵列而言必须完全重新设计,而对于更小的阵列而言相对来说可能会效率较低。

发明内容
根据本发明,提供了如权利要求所述的内容。


图1为根据本发明的处理器阵列的方框示意图。
图2在图1的阵列中主节点的第一实施例的方框示意图。
图3为图1的阵列中主节点的第二实施例的方框示意图。
图4为图1的阵列中次节点的方框示意图。
图5为图1阵列的一部分的更详细的方框示意图。
图6为图1阵列的第二部分的更详细的方框示意图。
图7和8表示在使用中图1阵列的各部分。
具体实施例方式
图1表示均通过总线5与列驱动器1相连的处理器4的阵列。如图所示,该阵列由水平行和垂直列的阵列元件4组成,不过对于本发明而言阵列元件的实际物理位置并不重要。每行阵列元件分成子组6。一个子组6内的阵列元件4通过相应行节点3在水平总线段7上连接到一起。水平总线段7通过相应列节点2与垂直总线8相连。每一子组6包含列节点2在一个时钟周期内易于与之通信的那些阵列元件。从而,垂直总线8作为主总线,列节点2作为主总线节点,水平总线段7作为次总线,行节点3作为次总线节点。如下面参照图5更详细描述的,通过列驱动器1分别驱动每个垂直总线8。其用作通信路由部件和功率保存装置。
每个总线5,7,8实际上是一对单向、多位总线,每个方向一个总线,不过为了清楚起见将它们表示成一条线。
列节点2分别采取图2和3中所示的两种不同形式。图2表示不具有垂直流水线级的列节点,图3表示具有垂直流水线级的列节点。
在图2所示的列节点10中,携带来自列驱动器1的数据的垂直总线8的输出部分,从入口12通过节点10向出口15直线传导。在接头26处还分接到另一总线25。总线25通过一条短的抽头式延迟线18与水平总线段7的输出部分13相连。抽头式延迟线18使到达水平总线段7的信号延迟时钟信号的预定整数倍。携带数据到列驱动器1的水平总线段7的返回路径部分14,也通过一条短的抽头式延迟线19与总线20相连。延迟线19将返回信号延迟时钟周期的预定整数倍。延迟线19中的延迟最好与延迟线18中的延迟相同,不过延迟线19中的延迟可以选择为与延迟线18中的延迟不同,只要设定不同节点10中的延迟,使向所有端点发送信号时和当从所有端点接收信号时具有相同的总延迟即可。在逐位逻辑或功能元件17中,总线20与输入端16处安装的垂直总线的返回路径组合,形成用于输出端11的返回路径垂直总线信号。
图3表示列节点22的另一种形式。下面用相同附图标记表示列节点22中与图2中所示列节点10的特征具有相同功能的特征,并不再进行描述。与列节点10相比,列节点22具有垂直流水线级。从而,具有插入垂直总线8的输出部分中、将输出信号延迟一个时钟周期的流水线寄存器23,和插入垂直总线8的返回路径中、同样将返回信号延迟一个时钟周期的流水线寄存器24。
这两种列节点10,22都在垂直总线8与水平总线段7之间为阵列元件4的子组6提供连接。具有垂直流水线级的列节点22使总垂直总线路径长于单个时钟周期。不具有垂直流水线级的列节点10能够在不向垂直总线路径加入流水线级的条件下提供连接。如下面更详细描述的,将两种类型的列节点彼此结合使用,能够充分实现流水线操作,在不降低时钟速度的条件下进行高带宽通信,而不会有不必要的过大,进而使效率低下的总流水线深度。
图4更详细地表示图1中所示类型的行节点3。携带有来自列驱动器1的数据的水平总线7的输出部分,从入口51通过节点到出口53直线传导。在接头50处,其也分接另一总线60。总线60与阵列元件接口57相连。
阵列元件接口57通过总线55和56与如图1中所示的一个阵列元件相连。阵列元件接口57翻译总线协议,以确定所接收的通信是否是针对与该行节点相连的特定阵列元件的。在接口57中接收从与该行节点3相连的阵列元件读取的信息,并输出到总线59上。在输入端54处设置携带有用于列驱动器1的数据的水平总线7的返回路径部分。在逐位逻辑或功能元件58中,总线59与水平总线7的返回部分组合,形成用于输出端52的返回路径水平信号。
图5更详细地表示图1中所示的一个行子组6。在所示示例中,子组6包括四个阵列元件4,不过取决于一个时钟周期内列驱动器1可以与之有效通信的元件数量,子组中阵列元件数可以多于或少于四个。四个阵列元件4通过相应行节点3与水平总线7相连。在输出水平总线段13上接收数据(图2和3中所示),并在水平总线段13的返回路径部分14上输出(图2和3中也表示出)。使输出水平总线段在远端62处未被连接。在远端63处,通过逻辑全零或接地来终止返回路径水平总线段。这样就避免破坏任何返回路径数据,返回路径数据可通过任何水平节点3而在逻辑上或(OR)操作到总线7上。
图6更详细地表示图1中的列驱动器1。在该示例中,列数为4,不过列数可多于或少于4个。在平行于与相应列连接的四个垂直总线中每一个的输出部分33,35,37,39布线的总线31上,从阵列控制处理器(未示出)接收用于阵列元件4的输出数据。总线31通过相应的逐位、逻辑与(AND)功能元件43与输出部分33,35,37,39相连。逻辑与(AND)功能元件43还从协议窥探模块42接收使能信号44。协议窥探模块42监视总线31上的通信,并基于数据中的地址信号适当地产生单独使每列或者使所有列有效的使能信号。
在逐位、逻辑或(OR)功能元件41中组合与相应列连接的四个垂直总线中每一个的返回路径部分34,36,38,40,以产生将数据从阵列元件4传送到阵列控制处理器的总返回路径总线32。
如图6中所示,列驱动器与四列相连。不过,当阵列包含大量元件4,和/或子组6仅包含少量元件4时,列数可能会较大。在此情形中,需要附加的流水线级以保证到或从所有端点的延迟保持相等。例如,可在一个或多个分支33-40,和/或在或(OR)门41的一个或多个输入端,和/或在一个或多个与(AND)门43的输入端中设置附加的流水线寄存器。
从而,总输出路径总线与附加的某些流水线级和某些高级开关简单地并联。高级开关执行阵列元件寻址功能部分,且有助于保存功率。
总返回路径总线与某些附加的流水线级简单地逻辑或(OR)扇入。由于总线的等待时间恒定,由于阵列控制处理器一次仅读取一个阵列元件,并且由于未被寻址的阵列元件将逻辑全零传送到总线上,不需要仲裁。
依然允许严格的流水线读取访问,且不使用三态总线。
图7和8表示列节点的两种可能结构。在这两种结构中,更靠近列总线驱动器的列节点利用其抽头式延迟线引入比远离列总线驱动器更长的延迟。
在图7中,最靠近列总线驱动器的列节点是具有垂直流水线级的节点22,如图3中所示和图7中用实心圆所表示出的,并且其后的每个第四列节点也具有垂直流水线级,而其他列节点是不具有垂直流水线级的节点10,如图2中所示和图7中用圆圈所表示出的。在图8中,最靠近列总线驱动器的列节点是具有垂直流水线级的节点22,如图3中所示和图8中用实心圆所表示出的,并且其后的每个第三列节点也具有垂直流水线级,而其他列节点为不具有垂直流水线级的节点10,如图2中所示和图8中用圆圈所表示的。具有垂直流水线级的节点的实际间隔取决于物理实施。将这样来选择间隔,以便使用最少数量的具有垂直流水线级的节点,同时保持在所有操作条件下总线正确操作。具有流水线级的节点可以规则地间隔开,或者如果需要的话可以不规则地间隔开。这就表明了该方法的可扩展性,因为所有这些都改变的是总等待时间,而非带宽。
图7和8还表示出每个列节点中抽头式延迟线18,19的示例结构。在图7中,在距列总线驱动器1最远距离的列节点,即节点74处开始,抽头式延迟线18,19具有延迟时间D,将延迟时间D设定为最小延迟时间,即在本例中为0个时钟周期。从而,通过向上移动列,且在每次通过流水线式节点22时将延迟时间增加1个时钟周期,来分配延迟时间。因而,在图7中,流水线式节点75中抽头式延迟线18,19依然具有延迟时间D=0,因为在该节点中水平分支处于流水线寄存器23,24之后。用具有延迟时间D=1时钟周期的抽头式延迟线18,19构成下一节点76。重复这一过程,直到到达最靠近列总线驱动器的列节点为止。因而,水平总线段上的所有端点到列顶部都具有相同等待时间。
在图8中可以看到一种相同的抽头式延迟线结构图案。因而,在距列总线驱动器1最远的列节点78中,抽头式延迟线18,19具有延迟时间D,将延迟时间D设定为最小延迟时间,即在本例中为0时钟周期。此外,通过向上移动列,且每次通过流水线式节点22时将延迟时间增加1个时钟周期来分配延迟时间。因此,在图8中,用具有延迟时间D=1时钟周期的抽头式延迟线18,19构成节点79。重复这一过程直到到达最靠近列总线驱动器的列节点为止。
当抽头式延迟线18的延迟时间设定为0时钟周期时,与该抽头式延迟线相连的端点实际上由前一个垂直总线流水线寄存器23来驱动。这样可极大地增大流水线寄存器上的载荷。从而,实际上,可将抽头式延迟线18,19中的最小延迟时间选择为1个时钟周期,而非0个,以减小该载荷。
在该总线结构上传输的信号中,将各阵列元件的寻址编码成行、垂直总线列和子组列。列总线驱动器1可以解码垂直总线列信息,有选择地使列有效,或者如果使用广播型地址,则可以使所有列有效。行节点3解码行信息和子组列信息,从而必须用由其位置得出的信息来构成。在本发明该示例中,列节点2并不主动地解码行信息,因为在这一点上,如果过度复杂的话则节省能量是不值得的。不过,在其他实施例中,列节点可以按照列驱动器和行节点相同的方式,通过窥探总线协议来解码该信息。
如果总线动作到达某一阵列元件且所有地址方面匹配的话,则寻址该阵列元件。如果使用单寻址,则如果行地址和子组列地址与其自己的地址相匹配,目的阵列元件就解码通信。如果使用广播型地址,则为了与不止一个阵列元件进行通信,行节点必须基于某些其他的识别参数,如阵列元件类型,来进行区分。可根据哪一种方式最有效,通过单独的控制线或者通过使用“保留”地址来标记广播寻址。
通过将特定数据写入阵列元件内的控制寄存器位置中,实现对阵列元件的控制,如同步开始、停止或单步操作。在广播通信中,为了一起进行寻址,在每个阵列元件的内存映射中这些控制位置必须处于相同的位置。可用于发出单步控制命令,指示阵列元件开始一个步骤,然后停止该步骤,因为通信协议中开销的寻址令牌避免开始和停止命令彼此靠近。
为了避免大的时滞引发的问题,例如寄存器配置或被破坏,通过在节点中的某些点处设置缓冲器(加速或延迟信号)也是有益的。例如,在图2或3所示列节点的情形中,可以插入延迟缓冲器以防止在总线20和25中,以及分接头点26前后和OR门17后的垂直总线8中发生破坏。在如图4中所示的行节点的情形中,可以插入延迟缓冲器以防止在总线59中发生破坏。
从而,提供一种实现大致恒定等待时间的结构。在与最远阵列元件这段距离上的通信被适当地流水线化,而故意使与较近阵列元件的通信过流水线化(over-pipelined),从而使对所有端点元件的等待时间都为相同数量的时钟周期。这样就能够实现高带宽,并且无需重新设计即可依比例放大。
通信本身采取令牌流的方式,并将处理器阵列视作分级内存映射,即阵列元件的内存映射,每个阵列元件具有其自己的程序、数据和控制位置内存映射。使用令牌来标记阵列元件地址,子地址和读/写数据。为了在控制功能的同时寻址所有阵列元件(或子集),存在特定的保留地址。
下面更详细地描述可与该处理器阵列结合使用令牌式通信协议。
输出总线是20位总线,包括4个有效高态标志和16位数据字段。

返回路径为17位总线,包括有效高态合法标志和16位数据字段

在阵列元件的全部地址空间没有被全部填满时需要VALID标志。否则难以区分失效地址和偶然为零的数据。
基本写操作—在输出总线上发送命令的顺序如下AEID,<阵列元件地址>
ADDR,<寄存器/内存位置>
WRITE,<数据字>
用户可按照需要重复上述序列多次,逐个地写入多个位置AEID,<阵列元件地址1>
ADDR,<阵列元件1中的寄存器/内存位置>
WRITE,<数据字>
AEID,<阵列元件地址2>
ADDR,<阵列元件2中的寄存器/内存位置>
WRITE,<数据字>等。
如果AEID相同,则无需重复它AEID,<阵列元件地址1>
ADDR,<寄存器/内存位置1>
WRITE,<阵列元件1中用于位置1的数据字>
ADDR,<寄存器/内存位置2>
WRITE,<阵列元件1中用于位置2的数据字>等。
在每种情形中,只要阵列元件存在并且寄存器或内存位置存在和可写入(有些位置是只读的,有些位置在阵列元件停止时是只写的,在阵列元件运行时是不可写的),就将数据写入该阵列元件位置中。
自动增量写操作-在写入单个阵列元件内多个相继连续的寄存器或内存位置时,为了节省时间(如在加载阵列元件的程序时人们常常会做的那样),使用重复WRITE命令。行节点中的接口将自动增大阵列元件内所使用的地址。例如AEID,<阵列元件地址>
ADDR,<起始寄存器或内存位置-“A”>
WRITE,<用于位置A的数据>
WRITE,<用于位置A+1的数据>
WRITE,<用于位置A+2的数据>
WRITE,<用于位置A+3的数据>等。
在内存映射中存在间隙,或者需要移动到另一阵列元件时,再次使用ADDR或AEID标志,为自动增加设定新起点,例如AEID,<阵列元件地址>
ADDR,<起始寄存器或内存位置-“A”>
WRITE,<用于位置A的数据>
WRITE,<用于位置A+1的数据>
WRITE,<用于位置A+2的数据>
ADDR,<新起始寄存器或内存位置-“B”>
WRITE,<用于位置B的数据>
WRITE,<用于位置B+1的数据>
AEID,<新阵列元件地址>
ADDR,<寄存器或内存位置>
WRITE,<数据字>等。
非增量写操作-在要求不自动增加寄存器或内存位置地址时,与WRITE标志一起保持ADDR标志AEIS,<阵列元件地址>
ADDR,<寄存器位置-“A”>
ADDR,WRITE,<用于位置A的数据>
ADDR,WRITE,<用于位置A的新数据>
应当注意的是,在处理器阵列继续运行的命令3与4之间,可能存在长时间周期的总线无效。实际上,这些总线操作中的任何操作都无需在连续脉冲串中进行。在任何点处可存在任意长度的间隙。协议如同状态机那样工作,不具有任何类型的超时。
广播写操作-可一次写入所有阵列元件,或者逐组地写入阵列元件的子集。可由外部控制信号表示这种广播寻址,或者通过使用特定数字作为AEID地址而实现这种广播寻址。
在用于GB-A-2370380中所述处理器阵列的实施例中,可以在15位内在单个元件的基础上来寻址整个阵列,从而可以预留16位AEID地址的最高位,表示在进行广播型通信。
为了选择广播而非单阵列元件寻址,设定AEID数据字段的MSB。从而较低位可表示希望寻址哪种阵列元件类型。在我们示例的处理器阵列中,具有8种阵列元件类型,它们的目的地被硬接线到其行节点电路结构中

从而,例如为了寻址所有类型7阵列元件AEID,<0x8040>
ADDR,<...>等。
为了一起寻址所有类型1,类型2和类型4阵列元件AEID,<0x800b>
ADDR,<...>
等。
基本读请求操作-基本读操作非常类似于基本写操作,区别在于最后标志,并且忽略数据字段AEID,<阵列元件地址>
ADDR,<寄存器或内存位置>
READ,<不关心>
只要阵列元件存在并且寄存器或内存位置存在且可读(如果阵列元件停止则某些位置是只读的,并且在阵列元件运行时是不可读的),就能成功地读取该位置。从阵列元件读取出的数据字将向上发送给返回路径总线,在本例中将存储在FIFO中以备将来检索。
自动增量读操作-也非常类似于相应的写操作AEID,<阵列元件地址>
ADDR,<起始寄存器或内存位置-“A”>
READ,<不关心>(将从位置A获取数据)READ,<不关心>(将从位置A+1获取数据)等。
非增量读操作-在不需要自动增加寄存器或内存位置地址时,与READ标志一起保持ADDR标志AEID,<阵列元件地址>
ADDR,<寄存器位置-“A”>
ADDR,READ,<不关心>(将从位置A获取数据)ADDR,READ,<不关心>(将从位置A获取数据)如果希望对寄存器轮询特征信息-例如位误差率度量,则其可能是有用的。
广播读操作-我们示例处理器阵列中的硬件不排除执行广播读操作,不过其使用性相当有限。从多个阵列元件读取回的数据,被一起逐位取或。在逐个地检查每个阵列元件以找出特定一个之前,快速检查多个阵列元件中同一寄存器是否非零。
组合操作-如上所示,总线的令牌式结构允许任意长度命令的多种排列,并在经常接收的命令中产生捷径。例如,可用于产生执行内存检测部分的数据流-读和写内存的每个相继位置AEID,<阵列元件地址>
ADDR,<起始内存位置-“A”>
ADDR,READ,<不关心>(将从位置A获取数据,地址不增大)WRITE,<数据字>(将数据写到位置A,地址增大)ADDR,READ,<不关心>(将从位置A+1获取数据,地址不增大)WRITE,<另一数据字>(将另一数据字写到位置A+1,地址增大)等。
从而,描述了一种处理器阵列和其中使用的一种通信协议,使阵列元件能充分地同步操作。
权利要求
1.一种处理器阵列,包括多个主总线,各主总线与一个主总线驱动器相连,并且每个主总线上具有相应的多个主总线节点;与所述主总线节点连接的相应多个次总线;分别与一个次总线连接的多个处理器元件;以及与主总线节点有关的延迟元件,用于将与不同次总线连接的处理器元件的通信延迟不同的量,以便在所述处理器元件的操作之间实现一定程度的同步。
2.如权利要求1所述的处理器阵列,其中每个所述主和次总线是双向总线,用于将数据从主总线驱动器向处理器元件传送,并且用于将数据从处理器元件向主总线驱动器传送。
3.如权利要求1所述的处理器阵列,其中每个主总线节点包括用于将信号从主总线驱动器抽取到相应主总线上的抽头,以及用于将抽取出的信号延迟的延迟线。
4.如权利要求3所述的处理器阵列,其中至少部分所述主总线节点包括延迟元件,用于延迟相应主总线上来自主总线驱动器的信号。
5.如权利要求1所述的处理器阵列,其中每个主总线节点包括用于将来自相应次总线的信号组合到相应主总线上的装置,以及用于将来自相应次总线的信号延迟的延迟线。
6.如权利要求5所述的处理器阵列,其中所述用于组合的装置包括逐位逻辑或门。
7.如权利要求5所述的处理器阵列,其中至少某些所述的主总线节点包括延迟元件,用于延迟相应主总线上朝向主总线驱动器传输的信号。
8.如权利要求1所述的处理器阵列,其中每个处理器元件在相应次总线节点处与相应次总线相连。
9.如权利要求1所述的处理器阵列,其中每个次总线节点包括用于将信号从主总线驱动器抽取到相应次总线上的抽头,以及用于判断所抽取出的信号是否供连接到该处的处理器元件使用的接口。
10.如权利要求1所述的处理器阵列,其中每个次总线节点包括用于将来自相应处理器元件的信号组合到相应次总线上的装置。
11.如权利要求10所述的处理器阵列,其中所述用于组合的装置包括逐位逻辑或门。
12.如权利要求1所述的处理器阵列,其中主总线驱动器具有输入总线,以及确定所述多个主总线中哪一个应当接收所述输入总线上的数据的检测器。
13.如权利要求12所述的处理器阵列,其中主总线驱动器的输入总线通过相应与门的第一输入端与所述多个主总线中的每一个相连,并且如果确定所述多个主总线其中之一应当接收所述输入总线上的数据,则所述检测器用于向相应与门的第二输入端发送使能信号。
14.如权利要求1所述的处理器阵列,其中与物理上更靠近主总线驱动器的主总线节点有关的延迟元件,将与次总线连接的处理器元件的通信延迟比与物理上远离主总线驱动器的主总线节点有关的延迟元件更长的延迟时间,延迟与同连接于其他主总线节点的次总线相连的处理器元件的通信。
全文摘要
披露了一种处理器阵列,实现大致恒定的等待时间。适于在与最远阵列元件相距的距离上进行通信流水线化,同时故意使与较近阵列元件的通信过流水线化(over-pipelined),从而使所有端点元件的等待时间为相同数量的时钟周期。该处理器阵列具有多个主总线,各主总线与主总线驱动器相连,并且每个主总线上具有相应的多个主总线节点;与所述主总线节点相连的相应的多个次总线;多个处理器元件,每个处理器元件与一个次总线相连;以及与主总线节点有关的延迟元件,用于将与连接不同次总线的处理器元件的通信延迟不同的量,以便在所述处理器元件的操作之间实现一定程度的同步。
文档编号G06F15/80GK1761954SQ200480007220
公开日2006年4月19日 申请日期2004年1月26日 优先权日2003年1月27日
发明者J·M·诺兰 申请人:皮科芯片设计有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1