可伸缩多路径蠕虫洞互连.pdf

上传人:1** 文档编号:1121748 上传时间:2018-04-01 格式:PDF 页数:132 大小:6.30MB
返回 下载 相关 举报
摘要
申请专利号:

CN01820867.3

申请日:

2001.10.19

公开号:

CN1488216A

公开日:

2004.04.07

当前法律状态:

终止

有效性:

无权

法律详情:

专利权的视为放弃IPC(主分类):H04L 12/56放弃生效日:20040407|||实质审查的生效|||公开

IPC分类号:

H04L12/56

主分类号:

H04L12/56

申请人:

英特拉克蒂克控股公司;

发明人:

约翰·赫斯

地址:

美国新泽西州

优先权:

2000.10.19 US 09/693,359

专利代理机构:

北京市柳沈律师事务所

代理人:

马莹;邵亚丽

PDF下载: PDF下载
内容摘要

一族互连结构和交换器,使用该互连结构获得可伸缩性、低延迟和单芯片实现。所公开的互连结构和交换器支持广泛的应用,包括超级计算机互连、LAN交换器、IP和ATM交换器、电话中央局交换、视频点播服务器、巨型机数据库服务器互连、高速工作站互连,以及许多其它本领域技术人员公知的应用。

权利要求书

1: 一种互连结构,包括: 多个节点(202),其中,每个节点具有多个输入端口(240)和多个输 出端口(242); 与该多个节点相关的逻辑(1920);以及 节点X,其包括在该多个节点中并具有一输出端口opx; 所述节点X具有一组输入端口IPX,从而使一与节点X相关的逻辑能 够将进入IPX组的一个输入端的消息发送到输出端口opx; 该与节点X相关的逻辑是可操作的,从而使得在一消息M P 到达输入端 口组IPX的输入端口p,并且存在一从该输出端口opx到消息M P 的目标的 路径时,则只要输出端口opx没有被正通过节点X的消息阻塞,一条到达 输入端口组IPX的消息就会被发送到该输出端口opx。
2: 根据权利要求1所述的互连结构,其中: 与所述节点X相关的所述逻辑是可操作的,从而如果输入端口q这样 包括在所述输入端口组IPX中,即1)该输入端口q在向所述输入端口组IPX 发送消息时比所述节点p具有更高的优先权;以及2)消息M q 到达输入端 口q,且存在一路径从所述输出端口opx到消息M q 的目标,则该消息M q 将不被发送到所述输出端口opx。
3: 根据权利要求1所述的互连结构,进一步包括: 一互连结构输出端口,可以从输入端口组IPX的成员但不能从所述输 出端口opx到达该输出端口。
4: 根据权利要求1所述的互连结构,进一步包括: 可从输入端口组IPX中的输入端口到达的每个输出端口,其也都可从 所述输出端口opx到达。
5: 一种互连结构,包括: 多个互连节点(202),包括不同的节点F W 、F B 和F X ; 装置,用于发送多个信息通过多个节点,包括发送消息组S W 通过节点 F W ; 装置,用于通过节点F W 发送关于路由消息组S W 中消息的信息I,包括 通过节点F W 将消息组S W 中的部分消息路由到节点F X ;以及 装置,其与节点F B 相关联,用于使用信息I通过节点F B 路由消息。
6: 根据权利要求5所述的互连结构,进一步包括: 装置,用于从所述节点F W 向节点F B 发送控制信号C,其中包括由节 点F W 向节点F X 发送的消息的计数。
7: 一种互连结构,包括: 多个节点(202),包括节点X、节点组T和包括节点Y和Z的节点组 S; 多个连接节点的互连路径(204,208); 多个输出端口(242),其耦合多个节点;以及 逻辑(1920),控制通过节点到输出端口的数据流,其中: 节点X可以向组S中的任何节点发送数据; 节点组T包括可以选择地传送数据的节点,否则这些数据将由逻辑控 制通过节点X; 任何可以访问通过节点X的数据的输出端口,其也可以访问通过节点 Y的数据; 多个输出端口,包括输出端口O,其可以访问通过节点X的数据但不 能访问通过节点Z的数据; 逻辑,用于控制通过节点X的数据流,以这样最大化通过一个组T中 的节点发送的数据消息的数量,即,可从该组T中的节点访问的输出端口 的数量比可从节点X访问的输出端口的数量少。
8: 一种互连结构,包括: 多个节点(202),包括非交叉节点组F X 、F Y 、F Z 和F T ; 多个连接这些节点的互连路径(204,208); 多个输出端口,与该多个节点耦合;以及 逻辑(1920),控制通过节点到输出端口的数据流,其中: 节点X可以向多个节点发送数据,包括节点组F Y 和F Z 中的节点; 节点组F X 中的节点X具有一在节点组F Y 中的对应节点Y,为此可从 节点X和节点Y访问多个输出端口的子集; 节点组F X 中的节点X具有一在节点组F Z 中的对应节点Z,为此可从 节点X但不能从节点Z访问多个输出端口的一输出端口; 节点组T包括可以选择地传送数据的节点,否则这些数据由逻辑控制 通过节点组F X 中的节点;以及 逻辑,控制通过节点组F X 的数据流,以这样最大化从节点组F X 中的 节点发送到节点组F T 中的节点的数据消息的数量,即,可从节点组F T 中节 点访问的输出端口的数量比可从节点组FX中节点访问的输出端口数量少。
9: 一种互连结构,包括: 多个节点(202),包括节点X、节点组T和包括节点Y和Z的节点组 S; 多个连接节点的互连路径(204,208); 与多个节点耦合的多个输出端口;以及 逻辑(1920),控制通过节点到输出端口的数据流,其中: 节点X可以向组S中的任何节点发送数据; 节点组T包括可以选择地传送数据的节点,否则这些数据由逻辑控制 通过节点X; 任何可以访问通过节点X的数据的输出端口,其也可以访问通过节点 Y的数据; 多个输出端口,包括输出端口O,其可以访问通过节点X的数据但不 能访问通过节点Z的数据的;以及 逻辑,控制通过节点X的数据流,以这样最大化具有通过一组T中节 点发送的服务质量位的数据消息的数量,即,可从组T中该节点访问的输 出端口的数量比可从节点X访问的输出端口数量少。
10: 一种互连结构,包括: 多个节点(202),包括非交叉节点组F X 、F Y 、F Z 和F T ; 多个连接节点的互连路径(204,208); 与多个节点耦合的多个输出端口;以及 逻辑(1920),控制通过节点到输出端口的数据流,其中: 节点X可以向多个节点发送数据,包括节点组F Y 和F Z 中的节点; 节点组F X 中的节点X在节点组F Y 中有一对应节点Y,为此可从节点 X和节点Y访问多个输出端口的子集; 节点组F X 中的节点X在节点组F Z 中有一对应节点Z,为此可从节点 X但不能从节点Z访问多个输出端口中的一输出端口; 节点组T包括可以选择地传送数据的节点,否则这些数据由逻辑控制 通过节点组F X 中的节点; 逻辑,控制通过节点组F X 的数据流,以便这样最大化从节点组F X 中 节点发送到节点组F T 中节点的高质量消息的数量,即,可从节点组F T 中节 点访问的输出端口的数量比可从节点组F X 中节点访问的输出端口数量少。
11: 一种互连结构,包括: 多个节点(202),包括不同节点N F 、N A 和N E ; 在节点N F 、N A 和N E 外的多个交换器(618),用于控制通过节点N F 、 N A 和N E 的消息的路由; 多个连接节点的互连路径(204,208); 装置,用于发送包括消息M F 和消息M A 的多个消息通过该互连结构, 消息M F 包括一个或多个标题位; 装置,用于路由消息M F 以进入节点N F ; 装置,用于路由消息M A 以进入节点N A ;以及 装置,用于使用关于通过节点N F 将消息M F 路由到节点N E 的信息执行 一个或多个任务,包括: 路由消息M A 通过节点N A ;以及 设置多个交换器中的一个或多个。
12: 一种互连结构,包括: 多个互连节点(202),这些节点具有多个输入端口(240)和多个输出 端口(242),该多个互连节点包括节点X和包括在节点X多个输出端口中 的输出端口opx; 节点X的输入端口组IPX,该组IPX的每个输入端口都可以向节点X 输出端口opx发送数据; 输入端口组IPX的输入端口,其在向输出端口opx发送数据时具有这 样的优先权关系,即如果输入端口p是组IPX的成员,且消息M P 到达输入 端口p,则消息M P 在向输出端口opx发送时决不会被组IPX成员的消息 M q 阻塞,其中该成员在向输出端口opx发送数据时的优先权比输入端口p 的优先权低。
13: 根据权利要求12所述的互连结构,进一步包括: 一组所述节点X的输出端口OMP,其中,可将所述消息M P 发送至该 输出端口; 与所述节点X相关联的逻辑,该逻辑将输出端口OM P 排序,从最期望 发送通过消息M P 的到最不期望发送通过M P 的; 与节点X相关联的逻辑,向输出端口组OM P 的最期望的未被阻塞的成 员发送消息M P 。
14: 根据权利要求13所述的互连结构,其中, 所述互连结构是多级结构,该互连结构中的每个节点都位于从最高级L 到最低级0的层次结构上; 如果输出端口组OM P 的输出端口成员r连接到第n级上的节点nr,以 及输出端口组OM P 的输出端口成员s连接到第j级上的节点js,其中第n 级在层次结构上比第j级低,且存在一路径从节点nr到消息M P 的目标,则 与节点X相关联的逻辑将节点nr的等级设定为比节点js优先发送通过消息 M P 。
15: 一种互连结构,包括: 多个互连节点(202),这些节点具有多个输入端口(240)和多个输出 端口(242),该多个互连节点包括节点F和节点E,节点F具有包括输入端 口ipf的输入端口,节点E具有包括输出端口组OPE的多个输出端口,其 中在输出端口组OPE中的每个输出端口都能向输入端口ipf发送消息; 输出端口组OPE的成员在向输入端口ipf发送数据时具有这样的优先 权关系,即如果输出端口p属于输出端口组OPE,且消息M P 到达输出端口 p,则消息M P 在向输入端口ipf发送时决不会被输出端口组OPX成员的消 息M q 阻塞,其中该成员在向输入端口ipf发送数据时的优先权比输出端口 p的优先权低。
16: 根据权利要求15所述的互连结构,进一步包括: 一组输入端口IP,向其可以发送消息M P ,该输入端口组IP包括在多 个互连节点中;以及 与所述节点E相关联的逻辑,该逻辑将输入端口IP排序,从最期望用 于发送消息M P 的到最不期望用于发送消息M P 的,确定输入端口组IP的成 员是否被阻塞,并向输入端口组IP最期望的未被阻塞的成员发送消息M P 。
17: 根据权利要求16所述的互连结构,其中, 所述互连结构是多级结构,该互连结构中的每个节点都位于从最高级L 到最低级0的层次结构上; 如果输入端口组IP的输入端口成员nr在第n级上,输入端口组IP的 输入端口成员js在第j级上,且存在一路径从输入端口nr至消息M P 的目标, 则与节点E相关联的逻辑将输入端口nr的等级设定为比输入端口js优先接 收消息M P 。
18: 一种互连结构,包括: 设置为节点组的多个互连节点(202),该节点组中的节点具有多个输 入端口和多个输出端口; 该节点组的节点子集S; 输出端口子集T,其是节点子集S成员的输出端口的子集; 节点组的节点子集U; 输入端口子集V,其是节点子集U成员的输入端口的子集; 输出端口子集W,其是节点子集S成员的输出端口的子集,在子集W 中的输出端口由消息M P 定义,以包括将该消息M P 作为输入端口子集V成 员目标的输出端口; 交换的互连子结构X,包括接收来自输出端口子集T的数据,和向输 入端口子集V发送数据的互连; 该交换的互连子结构X的交换器设置集合,将输出端口子集T中的选 择消息发送到输入端口子集V中的消息目标;以及 逻辑(1920),确定在每个消息发送时刻的交换器设置集合,以便从输 出端口子集T向输入端口子集V发送最大数量的消息。
19: 根据权利要求18所述的互连结构,其中: 在每个消息发送时刻,在输出端口子集T的不被发送到输入端口子集 V的消息被发送到互连结构中节点的不包括在输入端口子集V中的输入端 口。

说明书


可伸缩多路径蠕虫洞互连

    【发明背景】

    本发明涉及计算和通信系统的互连结构。具体地说,本发明涉及可用在多级互连结构中的可伸缩低延迟交换器。

    在计算机科学和通信领域一直存在一个意义重大的尚未解决的问题:在全负载条件下,缺乏一种维持高流量和高交叉带宽的可伸缩式低延迟互连。现有的互连设计,例如Banyon、Omega和胖树网络、多级网格、环形和超立方体网络,在被加载了流量时都在不同程度上无法实现无限的伸缩性,也不支持低延迟和高流量。现有网络的几何结构是由19世纪的数学家开发的,甚至是更早的几何学家开发的,而他们从未设想过支持消息路由选择方法。

    所需要的是一种互连结构和合适的交换器,用于在该结构中形成可无限虚拟伸缩、并支持低延迟和高流量的互连。例如,非常适合于实施可伸缩交换器的多级、最小逻辑网络或互连结构已在美国专利US5996020和US6289021中详细描述。

    【发明内容】

    本发明涉及一系列互连结构、充分利用该互连结构以获得可伸缩性、低延迟以及单芯片实现的交换器。所记载的互连结构和交换器支持极为广泛的应用,包括超级计算机互连、LAN交换器、IP和ATM交换器、电话中央局交换、视频点播服务器、巨型机数据库服务器、高速工作站互连,以及许多其它本领域技术人员公知的应用。

    【附图说明】

    下面通过结合附图的详细说明,本发明的上述及其它目地、特征和优点会更加清楚。其中:

    图1A示出具有设置为多列多级的节点阵列和置换块的创新互连结构的框图,并示出了水平和垂直数据路径、垂直控制信号路径和输入/输出结构。

    图1B示出了具有设置为多列多级的节点阵列和置换块的互连结构的可选实施例,并示出了水平和对角数据路径以及垂直控制信号路径。

    图1C举例示出了多级、最小逻辑网络或互连结构的示意图。为了方便理解该互连结构,该图利用“节点”描述该结构,这些节点以多个设置在“圆柱”上的角度连接。虚线表示从输入端口到指定输出端口的消息路径;

    图2A简要说明在节点阵列内单元之间的局部互连示例。该图示出了位于水平数据路径上的单元的连接,或由数据路径“向上”和控制信号路径“向下”,通过置换块连接到相邻列中的单元、并垂直连接到同列中的单元的“行”;

    图2B是简化的单元图,以4个方向“北”、“南”、“东”和“西”示出了与其它单元的互连,以方便理解并定义说明书中使用的约定;

    图3A是一个表格,描述了包括各种预先定义位的消息格式,例如“通信量(traffic)”位、二进制编码位或指定目标行地址的位。该消息格式一般包括其后跟随有效载荷的标题。图3B是一个表示支持服务质量(QOS)编码的可选消息格式的表格。图3C是一个表格,说明当消息移动到下一级时,消息标题的修改;

    图4A详细示出了一个8行3列互连、数据的连接拓扑结构、单元的控制信号路径以及输入/输出(I/O)线路的示例。虚线说明蠕虫洞消息流。图4B简要示出8行5列互连的可选但功能性等效拓扑结构;

    图5A是表示两级和4列上的单元的简化框图,以说明蠕动穿过这两级中单元的消息。图5B也是表示两级和4列上的单元的简化方框图,描述被来自低级单元的控制信号阻塞的消息。尽管该消息被阻塞,它还总是具有一个空闲路径,可用于通过该互连继续蠕虫洞进程,并经向下移动到达另一列;

    图5C是表示采用图1B所示的对角拓扑结构的两级和4列上的单元简化方框图。消息蠕动穿过单元,但是可以暂时被控制信号阻塞。当第一消息当前被阻塞,图5C的互连拓扑结构与前视控制信号一起防止阻塞第二消息。第二消息立即移动到下一级而不被阻塞;

    图6A、6B和6C分别详细说明了三个内部状态下的单元,并示出了消息的“垂直”和“水平”移动以及控制信号的传送和接收;

    图7A至7F描述了一级互连结构,并说明多个用于形成该级结构的可选配置,该结构包括各种节点阵列、置换块和FIFO。特定的配置可能更有利于一个或多个各种应用;

    图8A是说明有效采用可用硅的互连结构的“阶梯效应”实施例方框图。一个源于输入设备,在互连结构内分叉,并从两个目标输出节点退出该互连结构的线路说明了消息蠕虫洞流示例的操作;

    图8B是表示阶梯效应互连结构的示意图;

    图8C是说明在通信量爆破条件下保持流量时减少输出连接数量的片上输出队列的简化框图。底行多列上的单元提供一个队列。

    图9是表示单元、行、信号路径、级和组之间关系的示意图。多数据路径从任意输入终端或设备延伸到任意输出终端或设备。

    图10是说明用于生成定义置换块结构的数字序列的操作的表格。

    图11A至11H详细示出了确定用于移动到下一列的消息的行到行连接路径的置换块。置换块操作基于图10所示的转换序列。

    图12A至12D详细示出了以顺序连接的M个1次置换块方式影响消息流的“M次”置换块。

    图13A是说明在水平和垂直互连路径上单元的紧密物理结构的框图。图13B是表示在水平和垂直互连路径上进行改进,以便更有效地使用硅和最小化单元至单元布线长度的物理布局的框图。所改进的布局在每级上产生“赛道溢出”(racetrack flow)。

    图14是示出具有超出典型2次幂大小和设计一类互连的11行互连结构的互连图。

    图15A至15D详细示出了可能用在图14所示的11行互连中的置换块示例,该互连超过了典型的2次幂大小和设计。

    图16说明了生成用于基数3设计的数字序列的操作,该设计是一类不同于2次幂设计的互连。

    图17详细示出了具有行至行连接路径的置换块,该连接路径用于移动到来自图16所示的基数3转换序列的下一列的消息。

    图18时表示采用基数3设计的1列3级的27行互连的详细互连图。多列形成一个完整的互连。

    图19A详细示出了一个与基数4节点和连接到其它单元的节点内控制信号相关的逻辑单元。该逻辑在确定消息路由选择的时刻检查两个标题位。

    图19B示出了形成基数4节点的4个基数4单元的互连和互通信。包括在单元中显示消息路由选择优先权以控制到低级的路径的线路。

    图19C详细示出了包括多个连接到南方的路径以减少拥塞的基数4节点的实施例。图19D详细示出了包括其它连接到南方的路径以进一步减少拥塞的基数4节点的另一实施例。

    图20A示出了基数4和具有连接以多列多级连接的单元的4行互连,并示出为平衡通信量溢出而在连续列上改变优先权的技术。

    图20B详细示出在1列16行互连中的基数4单元,并说明了在级与列之间的转换序列和单元组中的循环优先权。

    图20C详细示出了基数4互连实施例的1列和3级。

    图21A至21N以及21P是分别说明多个单元到单元的连接拓扑结构的框图,该拓扑结构用于传送消息和控制信息。所说明的结构独特的布局和拓扑结构在功能上相似。

    图22A是表示采用2单元节点的实施例的详细互连图,该节点具有一整套通过所述互连的连接路径。来自相同节点的多路径有效到达任意具有消除热点的分岔路径的目标行。

    图22B表示采用2单元节点的8行、4列互连示例的详细互连图,该节点具有从输入终端延伸到输出终端的多路径。来自相同节点的消息具有到任意输出的多路径,该输出具有消除热点的分岔路径。

    图23是说明2单元节点、蠕动穿过该节点的消息以及通过两级的数据和控制信号路径对该节点的连接的示意框图。

    图24A是表示在相同列但不同级的两个单元,并表示消息到达这两个单元的相对时间的框图。较低单元接收消息,并在消息到达较高级单元之前确定路由选择。该框图进一步关于在较低单元确定路由选择时的标题位说明在两个单元中的移位寄存器内容。

    图24B时表示用于两级单元的信息到达的时间图。下级使路由选择先于下一较高级。在不同级别上插入定时偏差,以解决传播延迟。还说明了消息定时和消息到达下一列的结束。

    图24C是说明互连的简化框图,该互连将图24B所示的定时信号和时钟分配到互连各级和各列的所有单元中。

    图24D是表示具有基于树的用于在一个节点阵列中向各节点等量发布定时信号的扇出(fanout)传统结构的示意图。

    图25是表示确定一条或多条消息进入节点的路由选择操作的简化流程图;

    图26是表示图23所示的2单元节点的连接状态表,并基于从西进入的消息的消息标题内容,结合从南接收的控制信号一起说明对节点内部连接的确定。

    图27是表示具有内部交换的4单元节点的示例方框图,该内部交换形成一整套至下一级的互连路径,并显示与在下级的多节点中的单元的连接。

    图28A和28B是用4单元节点形成的32行互连结构的详细互连图,并示出了连接到相邻行和级中单元的单元连接。图28C是表示级间置换块的示意图。

    图29A是表示在图1B和5C所示的对角拓扑结构的两级两列上复杂度增加的2单元节点的简化框图。该节点具有一整套互连路径和控制信号,并支持为在相邻列中的节点或单元竞争的单元优先权关系。图29B是说明另一种具有各种内部单元、交换和控制逻辑的2单元版本的简化框图,该版本与图29A所示的2单元节点拓扑结构不同而功能相同。

    图30示出了采用分形节点的互连结构。

    图31A是表示包含节点中连接细节的两级分形互连结构的互连框图。

    图31B是表示在保持分类顺序的同时将数据路由到总线底部的压缩装置。在一级上,路由较早消息的消息优先权高于到达同一级的新消息。

    图32是表示在互连内生成测试消息和控制信号、并监测消息通过互连的成功过程的内装自测试(BIST)子系统的简化框图。

    图33是表示无害地从互连中清楚单元、并由此执行片上自修补功能的有缺陷单元旁路的简化框图。

    图34是表示具有备用芯片的多芯片互连系统一半的框图。该备用芯片可以切换到该系统中以代替由缺陷的芯片。

    图35A是说明一种多芯片互连系统的框图,其中,图34所示的多芯片互连系统元件的两半进行互连,以形成一个完整的系统。备用芯片被切换到该系统中以代替有缺陷的芯片。图35B是将芯片切换到和切换出该系统的另一种结构的框图。

    图36A、36B和36C是表示在顶级的输入连接的简化框图,并分别说明不同排列,以满足不同应用的要求。图36D是说明接收到异步输入信号时的互连操作,在该输入信号中在任意时间到达的输入消息被路由到与该消息同步的特定列中。

    图37是表示在外部输入设备的定时要求之前向该设备提供外部控制信号的互连结构顶级的简化互连框图。该互连结构产生控制信号,并将消息连接到输入设备。

    图38是表示产生向外部输入设备发送的及时的控制信号、并显示采用返回阻塞消息以通知外部设备的外部“飞行时间”循环的附加结构简化互连框图。该阻塞消息返回到互连结构,以便再次尝试进入该结构。

    详细说明

    图1A和图1B是表示牢固的多路径互连100的两个实施例的框图,该多路径互连具有多行设置在多个垂直列和多级上的串行数据发送器和交换单元。在各列上,通过图1A所示互连中的垂直数据路径142结构、图1B所是互连路径中的对角数据路径110以及两个图中的垂直控制信号路径140来互连这些级。示出了K列,从0列到K-1列,示出了J+1级,从0级到J级。每一级都包含多行以执行串行数据传输114。水平行互连各级的节点阵列108、置换块110和先进先出串行显示装置(FIFO)112。

    消息形式的串行数据被允许通过数据输入端口进入互连100。数据输入元件102包括在一列或多列上的多个数据端口。从输入端口进入互连100的消息直接通过数据总线102进入顶级的节点阵列108。控制信号总线140和106上的信号说明可能无法获得相关数据路径来接受输入数据。通过每个垂直路径148上的数据输出线,从互连100中输出串行数据。每个数据列都连接到多个输出端口。外部控制信号164可以通知该互连外部设备已经准备好或还未准备好接受数据。在该互连的一些实施例中,控制信号164被省略,到达底级的消息被立即连接到输出端口。

    示出了K列。一列可能包含多个运送消息的独立数据传输路径。例如,互连结构可以具有K列,每列具有2J个下行传输路径,其中J+1是互连级数,并支持上行至2JK个输入端口和上行至2JK个输出端口。数据线的数量在同一实施例中可能不是2J。

    为了方便理解,认为消息一般在互连中是从左向右、从上到下流动的。注意:该习惯用法是人为施加的,以便说明在理论拓扑结构中的消息运动,而不是说明网络的结构空间限制。该拓扑结构可以折叠、扭曲、翻转、褶皱,或在相对位置对应于上述拓扑结构进行任何改变。到达一级右侧38的消息被路由到左侧,以便进入左侧136。时钟126控制节点阵列108、FIFOs112一级输入输出定时的定时。进入互连的消息时间由外部定时信号146进行控制。

    互连100的特性包括以下其中之一,但并不仅限于此:(1)采用控制信号来向可能使用该控制信号的交换单元通知消息路径的可用性;(2)总是可以使用一条来自单元的可选路径;(3)从任何输入连接到任何端口的多路径;(4)蠕动穿过互连的消息。

    在互连100中移动的串行消息总是具有可用路径,以便继续蠕虫洞运动,并且决不会被保留在缓存器中,这减小了通过互连的移动时间。与该重要特征相结合的还有全局定时模式,其允许在每个节点上在单个时钟周期内执行逻辑和控制,并使穿过互连的蠕虫洞消息传输成为可能。当消息在互连中跨越多个节点时进行蠕虫洞传输,其程度甚至达到在消息尾部进入输入端口之前消息标题(头?)就到达输出端口。当消息通过互连结构从一个节点到达另一个节点时,不需要任何形式的信号交换就执行蠕虫洞路由。

    在一些互连100的实施例中,输出控制逻辑162识别和路由已到达底级的消息,并将这些消息连接到合适的目标端口166。当两个或更多信息在同一时间周期内到达同一个输出端口,缓存器160可以用于存储随后从互连中输出的消息。外部控制信号164通知该输出端口该外部目标是否能接受消息。后面将详细讨论输出控制功能。在可选的实施例中,输出控制逻辑162和缓存器166都被省略,消息可直接从底级移动到各输出端口166。

    图1A示出了水平和垂直方向的消息路径以及垂直方向的控制信号。图1B示出了一个可选的实施例,其中消息水平或对角下行,且控制信号以垂直方向移动。在图1A中,在垂直数据路径中向下移动的数据立即移动到水平数据路径中的右侧,以便从给定的节点阵列移动到低一级且在其右侧列上的阵列。在图1B中,数据直接从节点阵列移动到低一级且在其右侧列上的阵列。

    图1C是说明4圆柱、8行网络的示意图,该网络示例表示多级、最小逻辑网络(MLML)。串行消息形式的数据从位于最外端圆柱上的网络INPUT(输入)端口进入网络,如图1C顶部的圆柱3所示,并从节点到节点相该消息标题中指定的目标输出端口移动。数据总是在一个时间周期内移动到另一个角度的节点上。消息向图1C中低一级所示的内圆柱移动,只要这样的移动使得该消息更接近于目标端口。

    该网络具有两种传输路径:一种用于数据,另一种用于控制信息。在所述实施例中,该网络中的所有节点都可能具有相同的设计。在其它实施例中,这些节点可能具有共同的其它设计和特性。节点接受来自位于相同圆柱上的节点的数据,或来自该节点圆柱外部圆柱的数据,并将数据发送到位于相同圆柱上的节点,或发送到该节点圆柱内部的圆柱。在给定级上的消息的第一位始终围绕该圆柱移动,从而使得消息始终围绕中心轴旋转移动。当消息位从圆柱移动到较内部的圆柱时,消息位与该内部圆柱上的消息精确同步。根据应用或实施例,数据可以进入一个或多个列或角度的互连或网络中,并能在一个或多个列或角度上退出。

    节点向位于较外部的圆柱发送控制信息,并从较内部的圆柱接收控制信息。控制信息被传送到在同一角度或列上的节点。控制信息还从最外部圆柱上的节点被传送到输入端口,以通知该输入端口能从输入端口接收消息的最外部圆柱上的节点何时不能接受消息。同样,无论何时输出端口不能接受数据,该输出端口都可以向最内部圆柱上的节点发送控制信息。总的来说,在任意圆柱上的节点都发送控制信号,以便通知节点或输入端口该控制信号发送节点无法接收消息。节点接收来自较内部圆柱上或在输出端口上的节点的控制信号。该控制信号通知该控制信号的接收者,它是否可以向位于接收节点的圆柱更内部的圆柱上的第三节点发送消息。

    在图1C所示的网络中,如果节点A向同一圆柱上的节点B发送消息,且节点B从较外部圆柱上的节点J接收数据,则节点A独立地向节点J发送控制信息。从节点A和J接收消息的节点B不参与节点A和J之间的控制信息交换。控制信号和数据路由拓扑结构以及消息路由模式将在后面详细说明。

    图1C中的术语“圆柱”和“角度”用于参考位置。这些术语分别类似于“级”和“列”。图1C中,数据水平或对角地从一个圆柱移动到下一个圆柱,控制信息向外发送到同一角度上的节点,类似于图1B中所示的布局。图1B的节点阵列108类似于在一个MLML网络角度上的一个圆柱中的节点列。参照图2A并结合图1A,节点阵列108包括R个单元202。节点阵列108位于互连100的一级和一列的交叉点上。所述互连100具有一个在水平行208上的单元,以及一个或多个在垂直路径210上的单元。行208是水平数据路径,用于从给定级上的一列向下一列传送消息。行208包含在数据总线114中。一级包括R个数据行208。一列包括R个垂直数据路径204以及R个垂直控制信号路径206。垂直数据路径204向下一下级串行传送消息,并且是数据总线142的成员。垂直路径206从下级上的单元向较高级上的单元传送控制信号,或者,如果该单元在顶级就向输入204传送控制信号。路径206上的控制信号通知该单元或上面的单元该发送信号的单元无法接受消息。单元202位于每个水平行208和垂直数据路径204的交叉点上。在一可选的实施例中,不同级上的行数可能不同。

    在一些实施例中,多个垂直数据和控制信号路径可以连接到一个或一组单元。这里使用的术语“单元”是指位于行208和垂直数据路径210的交叉点上的交换元件。从左侧接收消息的该单元可以通过以下两种方式之一交换消息:(1)水平交换到位于同一级下一列上的单元,或(2)下行交换到下级上的单元。在讨论互连与网络的文献中,术语“节点”通常用于指交换元件,例如互连中的单个交换器、一组交换器、一个或多个控制元件,或是诸如因特网的分散式网络一部分的完整交换器系统。在本说明的上下文中,“节点”是指单个单元,或在同一节点阵列中的一组互连单元。在简单实施例中,一个节点包括一个单元和用于该单元的控制逻辑。在其它示例中,一个节点包括多个单元以及用于这些单元的所有或大部分控制逻辑。

    置换块110生成水平移动的消息行到行的转换,并位于一些列之间。先进先出元件阵列是多个串行显示元件,后面表示为FIFO。FIFO112位于行208上。FIFO阵列112位于一列或多列之间。由于垂直数据路径204与对应控制信号垂直路径206相关联,因此,这对垂直路径表示为子列210。同样,消息输入端口214和相关联的控制信号输出216表示为输入端口240。数据输出路径218和相关联的控制信号输入端口220表示为输出端口242。

    数据通过输入端口214进入位于最顶部节点阵列中的单元202,并从位于最底级的单元退出到输出端口218。输入端口214的控制信号216可以通知外部输入设备相关联的输入端口无法接受数据。控制信号输入端口220接收来自外部设备的信号,这可能表示后者不能接收来自相关输出端口的数据。根据单元特性,显示为一行的数据路径204、控制信号路径206和数据行208可能各包括一个或多个信号路径。在同一节点阵列互连、并作为一个节点作用的单元将在后面讨论。

    参照图2B,为单元描述了方向习惯用法。单元202从北或西侧接受一条或多条消息,并向东或南侧传送消息。单元向北侧发送一个或多个控制信号,并从南侧接受一个或多个控制信号。如果消息直接或通过置换块移动到下一列,则将该消息描述为向东移动。同样,如果消息直接或通过置换块下行到下级,则将该消息描述为向南移动。采用方向作为习惯用法是为了表示流入或流出单元的数据或控制信号方向。在第L级、第C列的消息在下个时间步长移动到(1)第L级、第((C+1)mod K)列,或(2)第L-1级、第((C+1)mod K)列,其中K是列数。更为一般地,在留在同一级上或下行到下级期间,消息总是移动到下一个连续列而无需缓存。

    在光学波分多路复用(WDM)的实施例中,标题位可以全部在同一个采用不同波长传送不同标题位的时间隙内移动。可以在时域和频域中传送数据。

    图3A示出了非常合适的消息格式示例。进入互连100的消息包括具有值“1”的通信量位302、指明目标行或目标输出端口218的目标标题304,以及有效载荷306。通信量位302指明当前是否有消息。消息标题304是二进制编码的目标行数,例如地址308的最高有效位(MSB)首先出现,最低有效位310最后出现,下一个最高有效位326在MSB后面。在一个可选的实施例中,最低有效位最先出现。可选地在标题(未示出)之后对目标列进行编码。有效载荷306包括期望在互连100中从任意输入端口214传送到任意输出行或端口218的数据包。在互连100的一些实施例中,有效载荷306可以具有可变长度,最大为预定的最大长度。最大长度是一种定时功能。例如,允许短消息在一个时间周期或多个时间周期进入互连,较长的消息在其它时间进入,使消息长度不同的模式能以由外部命令控制的方式进行重复。消息300的总长包括通信量位302、标题304和有效载荷306。有效载荷306是串行数据流,例如共享存储器的高速缓存界线(cacheline)、在超级计算机中通信消息的内处理器、交换器或路由器中的ATM单元、以太网帧、交换器或路由器中的IP分组,或任何期望从互连输入端口传送到任意输出端口的其它数据。

    参照图3B,除了已讨论的一个标题或多个标题以及有效载荷之外,消息330可能还包括优先权位和/或服务质量(QOS)位332。这些位用在互连中,以指定一条消息是否具有高于另一条消息的优先权,以及/或如果互连由于其它消息通信而被阻塞,是否可以在互连中去掉特定的消息。可以在消息进入互连之前设置QOS位,例如以便指明低优先权的ATM(异步传输模式)单元或分组。也可以当消息在互连结构中时对QOS位进行修改,例如以便在互连结构中跟踪该消息的寿命。

    参照图3C,当消息300向南移动到下级时,MSBH1308从该消息中被删除。因此,下一个最高有效位H2326就成为该消息在下一下级上的MSB。标题长度改变的期望边缘效应是,标题的长度每级减少一位。MSB位去除优选最小化单元中所需的逻辑数量。当消息300到达目标输出端口时,标题304的所有位都已被删除,这减小了消息的传送时间。通信量位302作为该消息的第一位,和其它非行标题位一起被保留下来。如果消息的接收者需要目标地址,可以包含在有效载荷部分中。

    图4A是表示具有在单元之间互连的互连示例图,并描述了蠕动穿过的消息。每一级的互连拓扑结构都和图1C所示的多级最小逻辑网络相同。为清楚起见,该图每级只有8行、3列。其它实施例具有更多的行和列,例如每级64到1024行或更多行,12到24列或更多列,但不仅限于此。在保持有效流量和蠕虫洞消息传输的同时,互连规模向上没有限制。置换块110可以设置在列之间。在节点阵列108中使用了“恒等”布局。恒等布局是一种沿着所示对角方向的单元设置。置换块的布局将在后面结合图10进行说明。互连在每级上具有单个FIFO结构112,采用图7B所示的配置。图4A中的一些节点标有“+”,以指明消息通过互连结构的移动规则。在进行路由选择时,从第L级移动到第L-1级的消息使用标题位HL。在一些实施例中,位HL是该地址的最高有效位308。具有HL=1的消息从第L级,从第L级标有“+”的节点传送到第L-1级。具有HL=0的消息从第L级,从第L级不标有“+”的节点传送到第L-1级。通过第L级上节点的消息移动规则优选仅基于来自第L-1级上节点的通信量位、标题位HL和控制位。该控制位的目的是为了指明阻塞条件。通过假设没有出现阻塞而简化了图4A所示的消息流示例。

    消息M从第0列、第3级、第3行的北侧进入互连结构。点划线示出了在消息蠕动穿过互连结构时消息M的全路径。消息M进入位于第一节点阵列第3行的单元A。消息M的行标题304是“100”,以二进制符号指明了底级第4行的目标。从北进入单元的消息立即被向东路由。在退出第一节点阵列之后,消息向东移动,并通过置换块□□□1,其中该消息从第3行移动到第7行,并进入连接到南方,连接到位于第2级的上一组单元中的单元C的单元B。在图4A中,用“+”表示连接到上一组中单元的单元,例如单元C。术语“单元组”将在对图9的讨论中详细讨论。为清楚起见,路径410表示为包含两个信号的单线,这两个信号是:(1)向南的数据路径204,和(2)来自南方的控制信号206。消息M标题的MSB是“1”,指定在上一组中的目标单元。因此,单元B将消息向南路由到单元C。单元B通过删除当前MSB修改标题,该标题地址在向南被发送到第2级之前从“100”改为“00”。通过节点C的消息通过第4、5、6或7行的输出端口退出互连结构。

    从北进入单元的消息被向东路由,从而消息M从单元C通过置换块□□□1,从第7行向东移动到第4行的连接到较低组的单元D。H2是标题的新MSB。H2的值“0”表明消息M的目标是通过第0、1、4或5高度的输出端口退出结构。标题的MSB现在为表明较低组的“0”。单元D将消息向南路由到单元E。通过单元E的消息通过第4或第5行的输出端口退出互连结构。单元D将消息标题从“00”修改为“0”。在第1级,单元E将消息向东路由通过置换块□□□1,通过FIFO112,然后到达互连的右侧138。消息循环到西418,并进入第一列的同一行,即第5行。更适合的实施例具有超过三个如该例中所示的行,该信息并不这么快就进入FIFO。单元F连接到上一组。MSB“0”表示低一组。单元F将消息M向东路由到单元G。连接到低一组的单元G将消息向南向东发送到第4行,即目标行。消息移动到下一列,并在通过整个互连之后退出。图4A说明蠕动穿过互连的消息。图1C示出了蠕动穿过网络的消息的相似例,其中标题在尾部进入之前就已退出。没有被阻塞的消息在蠕动穿过互连结构时平均在每一级上都遇到单元1和5。

    3节点组简单示出了在所述互连结构中的连接关系。3节点组在不是第0级的任何一级上都具有第一节点,每级上的第一节点可以向与第一节点位于同一级上的第二节点发送消息。可访问以接收来自第一节点的消息的输出端口集和可从第二节点访问的输出端口集相同。第一节点也可以向第三节点发送消息。第三节点位于低于第一和第二节点级的级上。可访问以接收来自第三节点的消息的输出端口集不等于可从第一节点访问的输出端口集,但却是可从第一节点访问的输出端口集的子集。通过这种方式,当消息下降一级时,可访问输出端口目标的数量减少,由于消息从未向上移动一级,因此,消息在减小可访问输出端口的数量方面所作的进步不会失去。

    图4B示出了8行、5列的互连式示例的布局示例,该互连在拓扑结构上等效于图4A所示的5列互连实施例。每级上的布局都与图7C所示的结构相同,其中在列之间仅插入了一个FIFO,并且没有插入置换块,这使得在芯片上具有更多的空间用于控制逻辑。通过每个节点阵列中的特殊单元设置,同样达到了列之间的置换块效果。特别是,单元的位置由西侧和南侧的单元确定。用等同的配置描述第0级和第0列的布局。第0级的单元设置在相同的配置中,定义为从较低左侧到较高右侧的对角设置,如图所示。第0列中的单元在各级也设置在相同的配置中。保留的节点阵列108被设置为从左至右,从下到上的顺序:在第1列第1级的节点阵列中的单元位于第2列第1级的节点阵列单元之前,等等。第1级被设置在第2级之前,等等。通过检查同一行上向西的单元以及同一垂直路径上向南的单元,并将转换序列应用到当前单元级来确定单元位置。图10中将详细讨论转换序列。

    在第1级,在第0行上的单元可选地位于第0级单元上方,在第0、1、0、1…行上,如序列S21012所示。此外,在第1级的每行上,单元可选地位于第0、1、0、1…(mod 2)行上。在第2级上,第0行上的单元可选地位于第1级单元上方,以序列S41030位于第0、2、1、3、0行上,此外,在第1级的每行上,单元可选地位于第0、2、1、3、0…(mod 4)行上。在第3级,单元可选地以序列S81036位于第0、4、2、6、1、5、3、7、0…行上。还参照图4A,消息从第0行开始,在留在第3级的同时移动到右侧。置换块将消息从第0行置换到第4行,然后从第4行置换到第2行,从第2行到第6行,等等。从图1A、1B和1C所示的转换序列结构中形成的图4A和图4B所示的互连结构相似。

    参照图4B,所有行都向南连接到由转换序列定义的单元。消息总是在上一组和下一组之间交替(循环?)。连接到上一组的单元用“+”表示,以便说明交替连接的模式。当消息从最后一列,即第4列向东移动,该消息在向西循环到第0列时通过5次置换块。5次置换块的操作是继续转换序列Sn,这将在后面讨论。

    图4B描述了一种设置单元的方法,其中通过在节点阵列中对单元进行特设设置,达到了期望的每一列之间的置换块的中间级效应,具有优点地简化了集成电路芯片的布局。对于具有K列的互连结构,在各级中使用了一个K次置换块,达到了用于循环回到第一列的消息的被省略的置换块效果。该结果是。图4B中所示的布局在拓扑结构上与另一个在每一列之间都具有1次置换块的8行、5列交换器相同。

    当在不同级上的两条消息竞争同一个水平数据路径208时,由于下级的消息可能在互连上停留了更长的时间,因此下级上的消息具有优先权,即优先的逻辑分配。图5A和5B中说明了实施该优先权规则的合适结构。为清楚起见,每个节点阵列及示出了一个单元,任何可能位于列之间的置换块和/或FIFO都被省略。图5A和5B示出了单元设置,每个单元具有两级4列。单元A通过行208向东连接到同一级、下一列的单元B。

    图5A说明了消息M1502从北进入单元A的情况。通信量位302是“1”,表示当前有消息。当消息从北进入单元时,该消息保留在同一级上,并立即向东移动到下一列的单元上。因此,消息M1在行208上继续向东移动到单元B,从而示该消息在一个时间步长中下降了一级,并右移了一级。标题的最高有效位(MSB)制定了下级单元的特定组。单元B检查通信量位和MSB,并确定到目标的路径是否包括到单元B南部的单元。单元B没有从下被阻塞,并向单元F发送该消息。根据消息从北进入的规则,消息M1立即在行522上被向东路由到下一单元G。

    图5A说明从北进入单元、并立即向东移动到下一列单元B的消息M1流。检查标题,消息M1被向南路由到F,然后向东。允许消息M1从单元B下降到单元F,因为(1)消息M1的MSB表示到目标的连接包括单元F,(2)消息M1没有被其它消息阻塞,也就是说,来自F的行522可用。该例说明了允许消息没有延迟地移动到下一下级的情况。设置在单元A、B和F中的交换器用于从上述A直接连接到G。

    参照图5B,在另一示例中,同一消息M1从北进入单元A,并向东路由到单元B。另一消息M2在单元F,对消息M1具有优先权,通过以下两种方式:(1)消息M2对消息M1具有进入单元G的优先权,(2)消息M2在链接522使用中对消息M1具有优先权。当消息M1进入单元B时,消息M2已经从西进入单元F。单元F将消息M2在行522上向东路由到下一单元G。由于行522立即被消息M2占用,因此单元F无法接受来自北侧的消息,也就是来自单元B的消息。为了避免在消息M1和M2之间发生冲突,单元F向北向单元B发送控制信号206。由此,单元B被阻塞,不能向南发送消息M1。单元B被迫使类似地向北发送控制信号,以保护消息M1不与上述消息发生可能的冲突,并将消息M1向东路由到单元C;由此,防止可能在单元B上的消息M3向南下降。在一级上向东移动的消息通过到下一下级上的单元的连接,特定的连接可能包含或不包含连接到目标的路径。或者,向东移动的消息被连接到位于具有到消息目标的连接的组中单元。只要目标组没有被连接,该单元在同级上向东发送消息。单元C检查消息M1标题,并确定向南的该单元没有在目标组中。由此,单元C被迫将消息M1向东路由到单元D。为了防止与上述单元发生可能的冲突,单元C向北发送控制信号,由此防止可能在单元C上方的消息M4下降。在下一列,单元D连接到单元J,该单元在连接到消息M1目标的路径上,单元D没有被单元J阻塞。单元D检查当前的MSB和来自单元J的控制信号,并向单元J发送消息M1。单元F和J在消息M1的目标组中,而单元G没有。单元F忙,而单元J空闲,优选在连接到消息M1目标的路径上将消息M1发送到J。

    在图5B中描述了消息M1流,其中由于消息M2当前正直接在消息M1下移动,因此消息M1被阻塞而无法向南移动。消息M1保留在同级上,在找到可用的连接路径前访问另外两列中的单元。只要消息向东移动,就总是向北发送控制信号,这禁止了较高的单元向下发送可能导致冲突的消息。该互连拓扑结构和阻塞或忙信号的期望效果是,进入任何单元的消息优选总是具有向东的退出路径,以及一般向南的退出路径。消息在通过互连期间总在运动中,且从未由于缓存或存储而被保留。该消息不会停止向目标前进。

    图5A和5B示出了在每列上垂直连接的不同级上的单元对。例如,单元B和F为访问单元G而竞争。图5C示出了对角的单元互连,如图1B和1C中所说明的。利用对角互连,移动到下一下级的数据直接移动到下一列上的单元,而不是象水平/垂直设置中出现的那样,通过该单元直接向南然后向东。在本例中,单元F向北将控制信号发送到单元B,以通知单元B公共目标单元G将被来自单元F的消息占用。对角互连设计在拓扑结构上与图1A、5A和5B中所示的严格水平和垂直的布局相似。重要的区别在于:(1)对角设置中在各级之间具有对角的金属路径;(2)缺少交换器618以防止上级单元产生冲突;(3)在对角设置中,单元在西侧具有两个输入终端,而在北侧没有。

    图5C说明消息通过两行的定时和移动示例。消息进入单元的相对定时在互连的每级上从左向右、每列上从底向上进行。在图5C所示的示例中,消息到达的顺序是V、H、W、B、X、C、J和D。后面将结合图24A和24B中所示的定时图详细讨论定时。在本例中,没有信息进入单元V,从而单元V向上一级和与单元V同一列的单元H发送表示“空闲”的控制信号“0”,允许单元H向单元V和H的共同目标单元W发送消息。消息M1进入单元H,进入后被允许对角地向南移动到单元W。单元W检查消息M1的标题,并确定没有下行连接退出到消息目标;因此,单元W将该消息路由到同级的单元X。由于单元X被消息M1占用,单元W向南将忙信号“1”发送到单元B,同时单元B还接收消息M2。由于阻塞信号从下发出,因此单元B被迫将消息M2向东发送到同级的单元C。单元X没有被从下阻塞,并将消息M1向南朝目标发送。单元C没有被从下阻塞,并连接到单元J,该单元位于连接到消息M2的目标的路径上。单元J接收控制信号“1”,并被迫将消息M2向东路由。

    由此,单元W防止单元B将消息向南发送到单元X。在下一个时间周期,从单元X向东的路径开放,并可以使来自单元B的消息通行。如果单元W可以预见单元X将来的状态,则单元W就可以允许单元B发送向下的信息。但是这时单元W进行路由选择,无法获得下一列上的单元的状态,而单元W阻塞单元B。

    图6A、6B和6C示出了具有垂直连接的单元示例的框图,并说明了通过该单元的消息路由。说明的单元具有来自北侧N的消息进入路径,来自西侧W的消息进入路径,到东侧E的消息退出路径,到南侧S的消息退出路径,到北侧BN的单元忙输出路径以及来自南侧BS的单元忙输入路径。后面将会讨论具有到和来自各方向的多个路径的更复杂单元。从西侧进入节点W上单元的消息M2或者(1)向南路由到下一级,如图6A所示,或者(2)向东路由到下一列,如图6C所示。来自南侧204的消息总是向东路由,如图6A和6B所示。

    行208将一个单元的输出线E连接到同一级下一列上的另一个单元的输入线W。这里没有讨论可能位于列和/或级之间的置换块110和FIFO112。垂直数据路径204将输出线S向南连接到下级同一列上的另一个单元的输入线N。控制路径206将忙输出线BN向北连接到下一较高级同一列上的单元的输入线BS。延迟元件D604是1比特的串行寄存器,为控制逻辑进行的检查存储特殊的消息标题位,并调整后面将要详细讨论的级间的消息定时。每个消息位在通过延迟元件D期间按计划都会被延迟一个时钟周期。延迟元件的一个例子是触发器类型D,或时钟动态或静态移位寄存器。单元的内部控制逻辑检查到来消息的合适首位,这些位当前正存储在延迟元件中,并检查合适时刻的控制信号。然后,内部控制逻辑将内部门设置为将消息向东或向南传送。控制逻辑在垂直路径BN上向北发送状态信息,以便提供前视信息。

    在图6A所示的示例中,消息M2从西侧进入单元202。单元逻辑检查消息标题304,控制信号BS,并确定消息将在垂直路径S204上向南路由。在更令人期望的实施例中,当消息向南发送时删除标题地址MSB208,因此下一个最高有效位326就成为下一级的MSB。通信量位302保留在标题中。删除了MSB后,在输入线W和输出线S之间建立直接连接626,设置为两个延迟元件的旁路。单元位于状态600。由于删除了一个标题位,随后的消息流定时优选提前一个时钟周期。这加速了下一下级的消息在上一级消息之前,或早于上一级消息移动,期望使下级单元及时生成控制信号BN,以便上级可以应用控制信号。后面将详细讨论定时。

    由于消息M2向南移动,输出线E没有连接到来自西侧的输入信号,而是连接到北侧的输入线N。图6A中单元的状态600由“0”表示,其存储在一比特的寄存器锁存器612中。该锁存器也用于控制流过该单元的消息余数。控制信号BN连接到锁存器输出,并向北发送“0”,向上级的单元指明后者空闲,可以向南发送消息到输入线N。当来自西侧的消息M2向南路由,另一条来自北侧的消息M1被允许进入单元,并立即向东路由通过交换器618,以便在路径208上连接到下一列的单元。在从北向东移动的消息的飞行时间中没有出现延迟;实际上,来自北侧的消息M1直接连接到下一列,从而在一个时间周期内消息M1向下移动一级,并向右移动一列。从西向东移动的消息不通过任何延迟元件。从西向东移动的消息通过两个移位寄存器604。消息不在单元中缓存、维持、保留或存储。

    在图6B的示例中,或者没有来自西侧的消息,或者消息标题无效。在两种情况下都没有向南发送的消息,而来自北侧的输入直接通过交换器618连接到东侧。向北发送“0”值,以便向上级单元指明允许该单元向南发送消息。

    在图6C所示的示例中,消息M3在线路W上从西侧进入单元202。单元逻辑检查来自南侧的标题MSB308和控制信号。位308可能指明由于没有向南的路径连接到消息目标,因此消息无法下降,或者,控制信号可能指明消息从下被阻塞。在本例中,满足一个或两个条件,因此消息向东路由到输出线E。该单元位于状态640。值“1”表示图6C中的单元状态,存储在锁存器612中。控制信号BN连接到锁存器,并向上级单元发送逻辑“1”,以表明防止向南发送消息。北侧的单元推迟控制信号,不发送向下的消息。交换器618将第二延迟元件的输出线连接到东侧的输出线,并防止消息从北侧进入单元。当消息从西向东移动通过单元时,输出到南线S的输出信号被设置为“0”,这与不向南发送消息有着相同的效果。从西向东移动的消息M3在通过延迟元件期间按计划被延迟了两个时钟周期。

    图6A、6B和6C说明单元202的状态。在状态600中,当前具有消息,根据标题和阻塞信号的缺乏,该消息向南移动到最终连接到目标。同时,允许来自北侧的消息M1使用路径E来直接连接到下一列。在此情形中,当线路W上没有消息,或消息标题无效时,设置状态630,这允许来自北侧的消息使用向东的路径。不设置从西到任何单元输出线的连接,也不向南发送数据。在状态640中,消息从西向东移动,按计划被延迟两个时钟周期,而且没有消息可以从北侧进入。诸如时钟移位寄存器的延迟元件计量从西向东移动的消息速率。当消息向南移动时,相对于停留在原级上的消息提前消息定时,期望使下级有充分的时间来及时向北发送控制信号。

    在其它采用更快或更慢技术的实施例中,延迟元件的数量可能与所述的实施例不同。在所有情况中,单元在对信息作用之前足够的时间里接收来自下级的控制消息。图6A示出了从北向东连接的消息M1。该消息通过交换器618并按计划不被延迟。消息M2从西向南连接,消息通信量位302按计划被延迟一个时钟周期。消息M2的余数不被延迟,而实际的延迟包括连接路径门的传播延迟。图6B同样示出了从北向东连接的消息M1,该消息也不被延迟。图6C示出了从西向东通过两个延迟元件的消息M3630。。消息M3按计划被延迟两个时钟周期。

    结合图1A和1B,图7A到7F示出了互连100实施例的可选配置,说明互连一级上三个主要部件的不同设置。这些部件包括:(1)节点阵列108,(2)置换块110,(3)FIFO112。本例表示互连的单级。在一个实施例中,每一列分配了一个节点阵列,通常每一级具有至少一个FIFO阵列,通常每一级具有至少一个置换块。第0级没有使用置换块110。每一行中组合延迟元件的总延迟足够容纳全部消息,其中该组合延迟元件包括单元中的FIFO和移位寄存器。因此,重复阻塞的消息可以完全驻留在一级上循环,直到该消息最终能向南移动为止。

    图7A示出了紧随每个节点阵列108的每一列上的置换块110和FIFO阵列112。互连结构100的大多数实施例都优选支持蠕虫洞路由能力。每一列上的FIFO112和置换块110的相对顺序都是任意的,可以在前,也可以在后。如果每个在FIFO阵列112中缓存的FIFO的长度都小于消息300的长度,则该消息可以在其向南向下级移动之前跨越多列。到达最右端列138的消息向后702路由到第一列136。消息典型地跨越多级,其程度甚至达到有效载荷的第一部分在尾部进入互连结构之前就已退出互连结构100。

    图7B示出了和图1A和1B相同的置换块110、FIFO阵列112和节点阵列108顺序,并和图7A相似,除了每级上仅包括一个FIFO。一行上所有单元中的FIFO和移位寄存器都大得足够容纳全部消息。每行208上有一个FIFO,所有的FIFO都具有相同长度。列之间的置换块被省略,如图4B和7C所示,并且只包含了一个M次的置换块706。图7D是当列数足够大而无需置换块时所使用的布局。FIFO设置在具有期望低通信量的位置上。图7E示出了当通信量密度较低时适用的布局,例如当仅有一列用于输入,有足够数量的输出端口可用于处理期望的通信量负载。该布局没有从右向左的返回路径。假设从北侧进入的消息在到达最右端列726之前下降到下级。到达最右端节点阵列N’726的消息被向南发送到节点阵列N”724中的单元,如果没有输出路径用于来自北侧的消息,则该节点阵列N”不接受该消息。进入最左端单元N0722的消息不与来自西侧的消息竞争,因此立即移动到下一列。同样参照图6A和6C,N0中的单元只包括一个从北向东的直接连接,N’中的单元包括从西向南的直接连接,优选忽略控制逻辑。当向东发送另一条具有优先权的消息时,N”中的单元使用交换器618来拒绝来自北侧的消息。

    在单元的正常操作中,向南路由的消息从旁路通过单元的延迟元件,例如移位寄存器,并基于该路径上的门数量进行传播延迟。成功向南路由通过多个单元的消息可能积累一个传播延迟,该延迟可以相反地影响下级控制逻辑的正确操作。诸如一比特移位寄存器的延迟元件716位于每行上,以便重新调整定时,即被进行了不同累积延迟的消息位的前沿(leadingedge)。在退出延迟元件之后,所有消息进入具有相同定时的下一阵列。根据传播延迟与时钟周期的比率,延迟元件按计划位于每隔2到5列之后。图24B说明了处理传播延迟的可选方法。

    当列数K足够大时,一行的单元之间可以提供存储,以完全容纳消息,从而不再需要或不再使用FIFO,如图7F的实施例所示。当K=2N,且N大于互连的级数时,不使用或不需要置换块。典型的是,除了使用图7E所示的布局之外,所有级都具有相同的配置。第0级具有与其它级相同的配置,但是没有置换块。本例描述了各种实施例。也可以接受其它符合上述讨论的总规格的配置,他们在满足互连结构或网络的特殊性能和实施要求时可以具有特定的优点。

    图8A是非常适合称为“级联互连”的互连结构100的实施例。消息进入一列的顶部,以步进方式移动,每一步或向下或向右,当该消息被阻止向下移动时向右移动。消息在底级聚集。某些消息,例如为同一输出终端而竞争的消息,可能偏转进入FIFO,并从右循环返回一级最右侧列的左侧814。如果仅使用一列来接收输入消息,使用两或三列输出消息,则顶级的消息总是下降几列。最适合的布局是:(1)具有单个输入列802,(2)优选在顶级具有较少的列(节点阵列),(3)安排FIFO112的位置以减小消息进入FIFO112的可能性,(4)使用2单元节点以快速向下移动信息,以及(5)选择性地使用输出队列810以容纳过多的通信量。由于在广泛的条件范围下消息不会进入位于上级的FIFO,因此去掉上级的FIFO。由此将FIFO设置在最直接下行路径的左侧。

    顶级中最合适的行数等于输入端口的数量。输出端口的数量等于或大于输入端口的数量,以便输出列能方便地将消息从互连中排除出去。I/O管脚的数量是限制芯片设计的因素,因此,使用最大数量的硅来实现尽可能多的节点阵列。使用了2节点阵列,以便未阻塞的消息总是在下一列具有下行的路径。优选未阻塞的消息具有从互连左上方偏离“45度”的对角路径。FIFO非常适合于紧挨着该对角的左侧,如图8A所示。

    在正常通信量时,消息典型地只移动几列就到该对角路径的右侧。所有消息的组合移动是级联式流程。某些消息几乎不发生偏转就移动到该对角的相邻路径中。其它消息发生更多偏转,并进一步到达右侧的底部。输出列非常适合位于对角右侧的几列上,以便按期望聚集消息的主要部分。输出列834可能设置在紧挨着底级FIFO112的左侧,以便方便地在消息进入FIFO之前聚集消息。如果列834上的输出装置总是空闲,则可以省略底级FIFO。

    模拟示出了内部列的总数应当是级数的1.5到2倍。例如,具有7级的128行互连应当总共具有12到15列。由于消息在顶级时不太可能被阻塞,因此消息不可能在顶级通过所有列。因此,节点阵列不需要在所有列上都位于输入的右侧。优选省略顶级的FIFO和节点阵列,以减少硅的数量。

    该级联互连布局的一些实施例可以在每行上具有多个输出列,如图8A所示,为向同一目标移动的消息提供多个输出路径。如果接收设备可以一次处理多个消息,例如通过缓存,则可以进一步减小消息被阻塞的可能性。可选的实施例具有输出缓存器队列,每个地址具有一个输出端口,从而按期望减少了I/O端口的总数。

    参照图8C,芯片上输出队列810接受来自底级804上多个列的消息。为每个目标地址都分配了一个队列,且该队列中的每个缓存器都保持了一条消息。如果该队列为空,则到达底级的消息立即退出互连,或者路由到队列中的空时隙。如果该队列被充满,则该消息保留在底级行上,并尝试进入其它列上的队列。通过输出端口218从队列中排除消息。在一些实施例中,该队列接受来自外部输出设备的控制信号,指明何时该设备无法接受数据。

    ATM单元具有“服务质量”(QOS)位,指明是否可以在忙的条件下丢弃该单元。图3B示出了具有在互联中使用的QOS字段332的消息。当互连不忙时,很少有消息进入FIFO。在忙的条件下,消息可能被反复阻塞,并被迫在该消息最终进入FIFO的级上循环。在一个实施例中,当消息进入FIFO时检查QOS字段。如果互连忙,该消息可能被丢弃。

    在最简单的情况下,QOS字段为一个比特,例如在ATM单元中使用的QOS字段,如果设置了该比特,则当消息进入FIFO时丢弃该消息。在另一个实施例中,当消息进入FIFO时,QOS字段被递增/缩减,指明该消息循环的总次数。当一个确定值,例如0,到达时丢弃该消息。进入互连的消息可以具有不同的初始化QOS设置,以便按期望支持在消息中间具有广泛的优先权范围。当消息进入Q820地FIFO时,非常适合在一些较低级进行QOS处理。

    图8A所示的级联互连实施例是一种最合适的设计,该设计对消息不可能进入FIFO的所有输入端口、2单元节点的减少的延迟、顶级的低通信量密度和级联式流程使用单一的时钟信号。一列用于输入消息,多列用于输出消息。包括128个输入终端、每个地址具有三个输出端口的384个输出终端、7级、15个内部列以及蒙特卡洛通信量分布的模拟结构示出了消息在蠕动穿过互连结构期间平均要通过10个单元。在包括设置为256个输入端口和256个输出端口的512个I/O端口、8级、15个内部列、但使用图8C所示的输出缓存器的可选实施例中,消息在进入缓存器前要通过大约20个单元。输出缓存器用于平滑通信量中的起伏。片上缓存器的使用使得在管脚数量相同的情况下输入和输出端口的数量加倍。

    图8B是表示阶梯级互连结构的示意图。该阶梯级互连结构只有一个输入列,只有一个输出列,没有在后面从右到左的连接,也没有FIFO。互连100一些实施列的特性是,如果在同一周期内不向一个输出端口发送超过一条消息,则所有消息都建立从输入端口到输出端口的蠕虫洞连接路径。换句话说,如果没有多个输出端口向一个给定地址发送消息(如果只有一个输入端口向一个给定地址发送消息?),则所有消息蠕动到达各输出端口而不发生向左的偏转。有利的结果是不需要FIFO,且所有消息在同一时刻到达输出端口。该互连结构称为“阶梯级互连”。消息进入顶级的最左侧列850,当其靠近底级时以很小的程度展开(spread),在底级水平移动到最右侧列854上的输出端口,并且不会再循环。以粗线示出使消息通过互连结构的多个可能路径的两个例子。例如,线路852示出了相对更常在最终到达底部之前向右偏转的消息。图8A所示的阶梯级互连非常适合于当消息在一个周期内没有双重输出地址的情况。该阶梯级互连没有使用FIFO,比相同容量的级联互连使用了更少的节点阵列。一条合适的设计原则是顶级具有至少三列,且总列数应当约为级数的2倍。图8B中的例子具有8级、17列,并满足该设计原则。

    在一个偶尔违反无双重性规则的应用中,例如向同一地址发送了两个或更多消息,则只有一条消息将会成功。其它未成功的消息优选不阻止成功的消息到达目标输出端口。未成功的消息被偏转到下级的最右侧节点中,以便由收集装置L856聚集来用于进一步处理。

    在阶梯级互连的可选实施例中,通过为单个有效负载使用多个标题来支持消息的多点传输。当来自单个输入端口的有效负载在一个时间周期内被发送到多个输出端口时进行多点传输。每个标题为有效负载指定目标地址,且该地址可以是任意输出端口。仍然遵守在同一周期内没有输出端口可以接收来自多个输入端口的消息的原则。对第一标题进行如后所述的处理,控制逻辑设置为后面的有效负载指引方向的内部锁存器。紧跟在第一标题后,第二标题沿着第一标题的路径,直到到达为该级确定路由的地址位不同的单元为止。在此,以与第一标题不同的方向对第二标题进行路由。在该单元中的附加锁存器代表和控制从该单元出发的分岔流。换句话说,第二标题跟随第一标题,直到该地址指明不同的方向,并且该单元形成这样的连接,即,随后的通信量在两个方向上退出该单元。同样,第三标题沿着由前两个标题建立的路径,直到确定该级的标题位指明在其它方向上分岔为止。当标题从左向右移动通过单元时,该标题总是向上发送忙信号,表明无法接收来自上级的消息。

    对于第一、第二和任何其它标题,都遵循该原则。换句话说,当单元向上发送忙信息时,维持该控制信号,直到处理完所有的标题,以防止第二标题尝试使用第一标题建立的路径。所允许的标题数量是定时信号的功能,这可以设置在芯片外部。阶梯级互连的多点传输实施例可以在外部定时信号控制下,在不同时刻容纳具有一个、两个、三个或更多标题的消息。不进行多点传输的消息只有一个标题,后面跟随着一个空标题,例如全为0的标题,以代替第二和第三标题。一旦一个周期中的所有标题都被处理完毕,有效载荷就紧跟在最后一个标题后面,如上说述。

    阶梯级互连优选作用为自布线的纵横栏(self-wiring crossbar)。消息标题产生锁存的输入到输出连接,按期望将有效载荷从所有的输入端口并行传送到所有的输出端口。纵横栏的内部复杂度和控制的规模为N2,而阶梯级互连优选的规模为N·log2(N)。在具有256个端口的交换器例子中,纵横栏具有必须由外部处理器设置的64K次内部交换,而自布线阶梯级互连具有256×82阶,或16K个单元。

    在图8A和8B所示的实施例中,仅有一列用于输入端口,来自多个输入端口的消息可能在一个时间周期内都被寻址到同一输出。在输出端口与输入端口之比大于1而具有多个输出列的实施例中,可以容纳多个输入端口。然而,与多个相反,使用单个输出列可能是优选的,因为可以减小输出连接,即片上I/O端口的总数。通过在互连内优选将FIFO用作在输出端口间共享的缓存器,单个输出列可能按期望满足了波动输出条件。在其它通信量条件下,低级的行可以被定向为同一输出端口的消息充满。这些消息可以阻塞其它指向相邻端口的消息。图8C示出了为每个输出端口218使用片上对列810的实施例。当消息到达底级行806时,该消息随即被发送到该队列中可获得的最低时隙812。如果该队列为空,则该消息随即通过输出端口退出。如果队列充满,则该消息保留在底级行上,并再尝试进入位于连接到该队列的其它列上的队列。

    每个队列810都从外部连接到单个输出端口218,以便按期望将I/O管脚的总数减至最小,并减少网络中的阻塞量。从64到16384个输出端口的互连模拟示出了每个队列具有3到10个缓存器就足以容纳大多数输出速率波动,并按期望地保持底级不拥挤。根据FIFO从队列中删除消息。当消息在互连内被反复阻塞时,该消息可能比其它在晚些时候进入互连的消息需要更长时间来到达底级。结果是一连串发送到同一输出端口的消息可能毫无次序地退出。在可选的实施例中,基于时间戳或由消息标题中的序列号来填充队列中的位置。以“循环”方式清空队列,由此按期望地防止了排序序列的到达和退出。

    在互连的两种速率实施例中,消息以与底级行806兼容的时钟速率进入队列中的空时隙812,并以通常慢得多的其它时钟速率通过输出218退出。诸如视频点播交换器的应用接受分组或消息以很高的位速率进入交换器,并以较低速率发布这些消息。优选使用较少的高速输入端口以支持更大数量的输出端口。图36B示出了输入配置,其中相对较少的顶级行具有输入连接,这是适合于两种速率实施例的配置。

    互连网络包括多级,其中每级具有多个单元组。图9说明了6个单元组:U、V、W、X、Y和Z。U组902在三级中的最上级。数据可以通过标记为IN(输入)的线路进入U组中的确定单元。这些线路可能连接到上级,也可能从网络外的通信源接收数据。数据通过标记为OUT(输出)的线路910离开X、Y和Z组。这些线路可能连接到下级,也可能是互连的输出端口。V组和W组位于U组所在级下面的级上,X、Y和Z组也是如此,或位于更下级上。每组都包含一个或多个数据路径,每条路径被设置为回路或环形。U组中的单元A904连接到其它单元B、C、D、E等。在一些与单元数相比消息很长的实施例中,回路包括FIFO,从而可以将全部消息设置在一级内。在数据回路924中循环的消息具有多次机会下行移动到下级的组中单元,例如从U组到V、W、X、Y和Z组。进入单元B的消息有机会下降到V组的单元J中。或者,如果该消息从单元B移动到单元C,则该消息有机会下降到W组中的单元。在一些实施例中,V组和W组分别是较高组和较低组。

    只要单元J位于用消息目标端口连接单元B的路径上,进入单元B的消息就可能在连接912上下行移动到下级的单元J。单元L页连接到单元J;如果在同一时间间隔内的其它消息从单元L移动到单元J,则下级的单元L对单元B具有向单元J发送消息的优先权。单元L向上级单元B发送控制信号914告知这一优先权,通知单元B不要向下发送消息。在一些实施例中,下行路径912上的交换器922也由控制信号914开放,以防止任何来自被通知单元的消息与共享路径918上的消息冲突。当例如输入端口908的外部设备无法响应(honor)该控制信号时,交换器922有利地防止了消息发生冲突。在一些实施例中,下行路径940跳过一级或多级。

    一个单元组中的所有单元都具有到另一单元,或到FIFO的退出路径918,并且所有单元都具有到一个或多个共享同一个路径的其它单元的直接控制信号连接912或间接控制信号连接(未示出)。如果单元不向下发送消息,则该单元在路径918上向同一组中的另一单元发送消息。使用控制信号路由消息的重要优点是该单元总是可以获得退出路径。消息从不在单元中被缓存、存储、维持或保留,并总是运动着通过单元。此外,停留在级上的消息不会失去当前在向消息目标移动中获得的进步。换句话说,当该消息停留在当前组中时,它不会进一步远离目标。该消息迅速通过当前组中连接到较低组的其它单元,这些单元位于通向消息目标的路径上。

    参照图2A,数据环924对应于同级的一行或多行208,链路912对应于垂直数据路径210,链路918对应于列间的连接,而控制信号914对应于垂直信号路径206。在互连的一些实施例中,所有组形成从任意输入端口到任意输出端口的二进制树状连接路径集合。参照图9,很多路径任意输入端口退出到任意输出端口。

    消息M通过多个设置为J+1级体系的互连单元,这些级从最高级,即第J级,直到最低级,即第0级。互连结构传送多个通过多个输入端口进入该互连结构的未分类、多比特消息。多个消息中的单个消息M是自路由的,并利用蠕虫洞路由通过单元,在蠕虫洞路由中,该消息仅有一部分比特在两个单元之间传送,多比特的消息在多个单元之间扩展。单个消息M在包括4条路径的多条路径中移动,这些路径足以保证消息M通过标题指定的输出端口退出该互连结构。这4条路径是:(1)消息M从外部设备进入单元,该消息M指定一个或多个输出端口910;(2)消息M通过互连结构中的单元A904,而无需缓存到指定的输出端口;(3)消息M通过单元L移动,无需缓存到同级的另一单元J;以及(4)消息M通过单元B移动,无需缓存到更接近目标的级上的单元。

    图10是描述产生转换序列方法,即生成置换块布局操作的第一步的表格。最简单的序列S2是在两行之间的可选转换,可以用数字表示为0,1,0。2次幂的转换序列由转换序列S2、S4、S8、S16等构成。由两个序列生成转换序列S41030,即第一序列S2和增量为2的第二序列S21024。第一转换序列0,1,0的每个值后具有一个间隔(空白?)。在每个间隔(空白?)处插入序列S2+2,从而生成序列S4,即0,2,1,3,0。由序列S4和将S4增加4的序列生成转换序列S81036,从而生成转换序列0,4,2,6,1,5,3,7,0。同样,由序列S8和将序列S8增加8的序列生成转换序列S16,从而生成转换序列0,8,4,12,2,10,6,4,1,9,5,13,3,11,7,15,0。当下标R是2次幂时,优选通过继续应用这里和图10所示的增量及合并方法来生成转换序列SR,直到获得期望的R值为止。这些序列被称为遍历(ground-tour)序列。

    转换序列S4是0,2,1,3,0,2…。以0为原点符号,表达式S4[i]表示该转换序列中的第i个值。例如,S4[0]=0,S4[1]=2。注意转换序列S4在4个元素之后进行重复,也就是说,S4[i]=S4[i+1]。总之,转换序列Sn在n个元素之后进行重复,即,Sn[i]=Sn[i+1],其中i为非负整数。

    在此,定义术语“较低组”和“较高组”用于后面的用途。较低组包括所有位于转换序列Sn较低的半区数字中的行上的单元,较高组包括所有位于较高半区中的行。例如,假设转换序列S2(0,1,0,1,0…),第0行在较低组,第1行在较高组。对于转换序列S4(0,2,1,3,0…),第0行和第1行都位于较低组,第2行和第3行都位于较高组。在增量转换序列S4+4(4,6,5,7,4…)的例子中,第4和第5行都在较低组,第6和第7行在较高组。总之,关于组的“较高”和“较低”定义可以由行号、R和该行所在的级J的二进制表达式来确定。这些行由位RL、RL-1、RL-2…R-2、R1、R0表示为二进制形式,其中Ri是0或1。在第J级,当RJ=1时第R行定义为较高行,当RJ=0时定义为较低行。在8行的例子中,用二进制符号如下描述转换:

    在第0级(J=0)第000、010、100和110行在较低组,第001、011、101和111行在较高组(R0是最右位);

    在第1级(J=1)第000、001、100和101行在较低组,第010、010、011和111行在较高组(R1是中间位);

    在第2级(J=2)第000、001、010和011行在较低组,第100、101、110和111行在较高组(R2是最左位)。

    该创建消息转换序列的方法的期望结果是可选位置连续地在转换序列中点的下方和上方。例如,在8行的转换序列S8(0,4,2,6,1,5,3,7,0)中,第一可选位置集的值(0,2,1,3,0)全部小于第二集(4,6,5,7,4)的值。由此,沿着由序列S8定义的路径的消息总是在较低组和较高组之间交替,然后重复,这是由该方法对所有转换序列产生的一致结果。这种转换序列的其它有利结果是,如果消息M1和M2分别保留在同级上,消息M2将不再阻塞消息M1,直到两条消息都通过2J个列为止,其中J是消息M1的级号。在特殊的例子中,如果消息M1在第5级上被第4级的消息M1阻塞,则在消息M1和M2被再次校准之前,必须各自都被其它消息阻塞32(25)次,这是极不可能的事。由此,所述机构避免了扩大消息的阻塞。

    进入互连顶级的消息在下行到位于上半区行(较高组)和下半区行(较低组)中的行的连接之间交替。当消息到达具有向南到目标的连接的顶级单元时,消息下降到下个较低级,其范围减小为总行数的一半。例如,如果互连在每级具有16行,进入顶级的消息在较高的8个行号和较低的8个行号之间交替,也就是在较高组和较低组之间交替。MSB用于做出决定。在下一级,消息在各4行的组间交替(循环?),而在下个较低级,消息在各2行的组间交替。从16行的互连开始,每级的组大小是8,然后是4,然后是2,最后是1,这时消息已到达标题中指定的目标行,并退出互连。

    符号Pn,m用于指定置换块,其中n是置换块中的行数,m是置换序列的次数。置换序列的次数表示该序列中的转换量。第一次转换在两个节点之间转换。m次表示依次转换m个转换。“置换块”是指在同级相邻列上的单元之间的无源行到行连接集。图11A到11F示出了1、2、4和8行的转换序列布局。图11A是一行的转换序列□□□1的简单情况。序列S1(0,0,0…)指定横跨(straight-across)连接:0到0。输入行在置换块的左侧,输出行在右侧。图11B示出了来源于序列S2(0,1,0,1…)的转换序列□2,1。序列S2[0]连接到序列S2[1],也就是说,第0行连接到第1行。图11C示出了来自序列S4(0,2,1,3,0…)的转换序列□□□1。第0行连接到第2行,第1行连接到第3行,等等。图11E和11G分别来源于序列S8和S16。图11E示出了图形上生成置换块的可选方法(没有参考序列S8)。由位于左上方的4行置换序列□□□1、位于左下方的置换块□□□1下面的一系列4水平线路以及位于右侧的一组8个从上到下和从下到上连接的组合形成置换块□□□1。同样,可以通过如图11G所示将左上方的置换块□□□1、置换块□□□1下面的8条水平路线以及16行从上到下、从下到上的交叉设置到右侧来形成置换序列□□6,1。可以不确定地继续递归的图形方法,以获得任意的2次幂置换块。

    转换序列不必对所有行都相同,也无需以与级数或与其它类似规则相关的周期进行重复。例如,在第2级,可以使用转换序列0,1,1,0,2,2,3,3,而不是优选的转换序列S4(0,2,1,3,0…)。随机地,这样的转换序列不具有合理消息流、最小阻塞和低飞行时间的期望统计特性。图11D示出了不期望的转换块示例,即由通过中线的并联连接产生的简单布局□X4,1。值得注意的是,每条消息通过中线,以便始终在较高组和较低组之间交替。在其它实施例中,可以使用任何允许消息每级至少访问一次较高行和较低行的转换序列。这些转换序列的性能比遍历转换序列的性能差。

    图11F和11H示出了来源于随机混洗的置换块。图11F示出了来源于随机混洗的8行转换序列□R8,1。底部行组以随机方式连接到上半区中的行,而对于上半区中的行也以随机方式连接到底部行组。例如,第0、1、2和3行随机地与第6、4、5和7行连接,顶部行连接同样如此。图11H是16行的随机置换块□R16,1。在互连100的优选实施例中,互连的每一列中的转换序列都不相同。在可选的实施例中,可以在多个位置使用随机生成的模式。通过互连100的各种实施例的消息流模拟已经示出,例如图11F和13B所示的随机转换序列可以产生可接受的流量效率。优选的互连结构使用遍历转换序列。

    总之,由转换序列Sn生成的置换块□n,1的结构由以下规则给出:对于在(0,1,…,n-1)中的所有i,输入端口Sn[i]连接到输出端口Sn[i+1]。在保证每个连接都跨越中间路线的同时通过随机混洗行目标来生成随机置换块□Rn,1。

    转换序列S8描述了通过用于构成置换块□□,1的8行组的消息流。图4B和7C示出了在每级仅有一个置换块的布局。在这些例子中,列到列行连接都是横跨连接,也就是说,当消息向东移动时,该消息不会改变行号。两个改动将流描述修改为8行的转换序列S8。第一个改动是使用了m次的置换块706。第二个改动是对节点阵列中单元的不同内部级设置,如后所述。

    M次的置换块对消息流产生与M个顺序连接的(1次)置换块相同的效果。图12A至12D说明了M次置换块的例子。对于转换序列S8(0,4,2,6,1,5,3,7,0…),从第0行出发的消息在3步之后移动到第7行。置换块□□,3产生3个顺序连接的□□,1置换块的效果;图12B示出了通过4步产生的4次置换块□□,4。图12C示出了5步后生成的□□,5;图12D示出了7步之后生成的□□,7。未示出的□□,8与□□,0相同,后者是一组横跨连接。互连100的一个优选配置是每级使用单一的置换块,如图7C所示。可选的配置是每列使用单一的置换块,如图1A、1B、7A和7B所示。

    置换块□□,9与□□,1相同。总之,置换块Pn,m与置换块Pn,q相同,其中q=m+n·(整数)。通过以下规则给出置换块Pn,m的结构:对(0,1…,n-1)中的所有i,输入端口Sn[i]都与输出端口Sn[i+m]连接,其中m是转换序列的次数。随机转换块PRn,m的定义与PRn,1相同,其中m是奇数。当m是偶数时,该转换序列就是一种随机混洗,其中的连接不跨越中间线路。

    图4A和4B所示的框图布局说明将转换序列应用到通过互连结构的消息上。通过将单元紧紧地一起设置在与前面所述的稀疏配置相对的紧密“方形”布局中,图13A示出了更有效的硅使用情况。水平208和垂直210连接路径的特殊设置产生列间置换序列的效果。示出了5级、16行互连的3列和顶部的4级。未示出第0级。对消息跨越任意行的检查都证实获得了用于该级的遍历转换序列Sn。例如,第4级第0行遵循转换序列S16的顺序0,8,4…。该布局的期望边缘效应是单元始终位于相对接近连接到南侧和东侧的单元的位置。值得注意的,在该互连布局中不发生较长的跟踪,所有单元到单元的连接都具有相似的长度。

    图13A说明在每个节点阵列内紧密的单元位置,该节点单元优选最小化每级上单元到单元的最大距离。然而,右侧列必须循环回到最左侧的列。图13B示出了竞争道(racetrack)布局,其中返回路径1390被节点阵列占用,按期望将最大连接距离减至最小。一组FIFO(未示出)可以另外设置在该回路上。

    对于有些实施例,可以为互连结构配置非标准的特性,例如大小不是2次幂。图14与图1A相结合,示出了11行的互连。使2L大于或等于11的最小整数L是4(24=16`),从而互连结构具有第0级到第4级。每级有11行。在图9所示的结构中,顶级的11行属于一个单一组。当消息从第4级下降到第3级时,这些消息移动到两组中的一组。这些组尽量接近于大小相等。因此,第3级的底部组包括6行,而顶部组包括5行。从第4级移动到第3级的消息M也从位于第R行、第C列的第4级单元移动到第R行的第3级单元。如果C<K-1,其中K为总列数,则消息M移动到第C+1列,如果C=K-1,则M移动到第0列,也就是下一列。

    第2级包括4组。底部的两组接收来自第3级底部组的消息,后者包括6行,在第2组分为两个3行组。顶部的两组接收来自第3级顶部组的消息,后者包括5行,在第2级分为一个2行组和一个3行组。从第3级移动到第2级的消息从位于第R行、第C列的第3级单元移动到第R行的第2级单元。第1级包括的组是较高级的两倍;在此是8个组。一个3行组向下连接到一个1行组和一个2行组。一个2行组向下连接到两个1行组。这第1级的8个组分别包括2、1、2、1、2、1、1和1行,第0级包括11个1行组,每行都是一条消息的目标。与以前一样,从第1级移动到第0级的消息M向下移动到相同代号的行。

    参照图9,沿着行,即数据回路移动的消息通过向下连接或没有向下连接到与输出路径相连的行的单元。总之,完成了将消息发送到最终目标行的二进制树状方法。消息最初在顶级中从行到行进行较大的移动,随后在连续的较低级中进行较小的移动。在优选实施例中,顶级的消息交替地连接到位于上半区中的下一个较低级的单元,然后连接到较低级的下半区行。优选地,在到达向下连接到较低级单元的单元之前,向东移动的消息跨越的行数不超过两行,其中的较低级最终将消息连接到该消息指定的目标。在下一个较低级,行间的移动范围优选为前一级的一半。最后,当该消息到达第1级时,该消息在两行之间这样交替,即,在它能从其目标行退出互连之前,只检查一个该消息标题的保留位。

    级上的行数不必是2次幂,如图14所示。描述了生成11行转换序列的方法。其目的是产生指定消息在保留在任意给定级上的同时向东移动的行到行转换的行号置换。该方法的第一步是将R,即顶级的行数,在本例中为11,分为大致相等的两半。值11被分为两个整数:6和5。较大的值6总是写在首位。相似地分解两个结果值6和5。值6被分为3和3。值5被分为3和2。值3分为2和1。当达到2或1时停止该处理。

    在以下讨论中,序列“Sn”表示包含n个值的转换序列的序列。分解R之后,下个任务就是构成11行转换序列S11。前面处理的步骤颠倒过来:由序列S2和S1生成序列S3,由序列S3和S2生成序列S5,由序列S3和S3生成序列S6,最后由序列S6和S5生成序列S11。每种情况中,两个较小的转换序列用于产生较大的转换序列。转换序列S1定义为0,0…。转换序列S2定义为0,1,0,1…,这意味着向东移动的消息可选择向下连接到第0行和第1行的单元。转换序列S3由转换序列S2和S1通过将转换序列S2每个值后插入空白生成:0,_,1,_,…。下个没有包含在转换序列S2(0,1,0,1…)中的较大整数是2,所以将2添加到转换序列S1中,生成(2,2,…)。后面的转换序列(S1+2)位于S2的空白位置处。S3变为转换序列0,2,1,0,…。这意味着向东移动的设置在3行组上的消息可选地以该顺序访问第0、2、1、0、2、1、0…行。

    转换序列S5由转换序列S3和S2生成。较大的转换序列S3首先在每个值后面插入空白:0,_,1,_,2。下个不在序列S3中的较大整数是3,因此将3添加到序列S2(0,1)的每个值上。结果(3,4)插入到S3的空白位置。因此序列S5变为转换序列0,3,2,4,1,0…。转换序列S6由转换序列S3和S3加下个可用整数3生成。如前所述,序列S3在每个值后面插入空白:0,_,2,_,1,_。将3添加到序列S3,并将结果(3,5,4)插入到空白位置。转换序列S11由转换序列S6和S5生成。再次地,转换序列S6在每个值后面插入空白:0,_3,_,2,_,5_,1,_,4。下个较大整数6被添加到序列S6。结果转换序列是S11:0,6,3,9,2,8,5,10,1,7,4,0…。

    总之,产生转换序列Sn的一般方法是以顶级R的行数开始,并将行数分为两半。如果R是奇数,则获取总和为该值的最接近的两个整数,并将较大值写在前面。类似地分解由第一步产生的整数或整数对,并重复该过程,直到到达2和/或1为止。本例中的整数结果列表11,6,5,3,2,1,以相反顺序用于生成行转换序列。利用为序列S1和S2预先确定的转换序列,序列S3来源于序列对S2和S1,序列S5来源于序列对S3和S2,序列S6来源于序列对S3和S3,序列S11来源于序列对S6和S5。序列对的第一个值在每个数字后面留有一个空白位置,增加的第二个值就写在这空白位置处。增量值总是大于第一转换序列中最大整数的最小整数(下一个整数?)。任何转换序列都考虑通过重复该序列而具有无限长度,例如,序列S3(0,2,1)扩展为0,2,1,0,2,1,0,2,1,0…。

    用于当消息在给定级中向东移动时路由消息的方法的期望结果是,该消息交替地在下一个较低级中的两组之间移动。例如,当R为11,转换序列S11(0,6,3,9,2,8,5,10,1,7,4)将消息交替地放置在5行6、9、8、10、7的较高组和6行0、3、2、5、1、4的较低组上。当顶级消息的MSB为1时,目标行定义为在较高组中,如果消息碰巧在较低组中的行上,则该消息必须仅向东移动一列,以便优选地位于其它组中的行上。在下一个较低级上,出现相同的交替。因此,当下降到下一级时,消息具有大约50%的机会可以立即从该级向南移动,否则该消息仅再移动一列,到达消息可以随后向南移动的东侧。当消息通过互连100向南移动时,其平均每级访问大约1.5个单元。在奇数组的情况下,在一些列上,消息将不得不向东移动两列以到达目标组,对所有偶数号的组来说,这仅轻微地增加了每级的平均访问数。

    图15A到15D示出了转换序列S3、S5、S6和S11的置换块布局。序列S3的转换序列□□,1示出了在列间向东移动的消息遵循序列S3,即行到行序列0,2,1,0。在第0行的消息向下一列的第2行移动,第1行的消息向下一列第0行移动,第2行的消息向下一列的第1行移动。图15B示出了序列S5(0,3,2,4,1)的转换序列□5,1。对于其它行,第0行的消息移动到下一列的第3行,等等。图15C和15D分别示出了转换序列□6,1和□□□,1。

    图16示出了用于生成基数3互连结构的转换序列的方法。该方法类似于图10所示的用于基数2互连结构的方法。最小序列S33有3行,定义为0,1,2,0…。下个3次幂是9,序列由三个S33的副本生成。第一个副本在每个数字后面有一个空白。下一个序列增加下一个可获得的行号3,并写在每个数字右侧的第一个可获得的空白处。第三序列增加下个行号6,并写在另一个空白处。所生成的序列S39是0,3,6,1,4,7,2,5,8,0…。由相同的方法生成下个3次幂S327。S39在每个数字后面具有两个空白,后面的增量序列写在这两个空白处,以生成序列S327。

    使用S3N转换序列展开基数3置换块。图17示出了3行的置换块□3,1,由转换序列S33生成。置换块□9,1由置换序列S39生成。将转换序列□3,1设置在左上角,将6个水平行设置在转换序列□3,1下方,使3到6的交叉也可以图形生成置换块□9,1。置换块□27,1由转换序列S327生成。左上角的转换序列□9,1、转换序列□9,1下方的18个水平行和9-18的交叉说明了该图形方法。

    图18示出了一个基数3、27行互连的第1列。在所有3级的第0行上重复该恒等矩阵布局。基数3处理的优点是所处理的级数比基数2处理的少。例如,所述3级互连结构支持27个端口。基数2系统需要5级,并支持32个端口。基数3处理的缺点是,优选以具有两个二进制位的基数3符号表达消息标题,其中二进制位用于表达三个值0,1,2。基数3单元检查两个标题位,以确定是否应当向南发送消息。互连结构使用每个节点一个单元的设计;3单元设计可能很有利,但又涉及复杂性。在此省略该设计的详情,其可以通过2单元(基数2)设计的讨论推导出。互连100的实施例可以使用任意基数值,以展开系统。基数2很自然地通过二进制处理支持,并有效利用逻辑门和地址空间。基数不是2次幂的设计的优点是有限的。然而,更高次的基数系统在花费和性能上都超越了当前市场上可用的大型“低延迟”网络。

    与前面讨论的基数2的实施例相比,使用基数4设计的互连结构100例子减小了因子2,即级数。图19A示出了基数4单元。图19B说明了4个全都在同级上的节点A、B、C和D,它们使用控制信号路由信息。每个节点都有两个数据输入端口、两个控制信号输入端口、3个数据输出端口和两个控制信号输出端口。节点V(未示出)在节点A所在级下面的级上,并接收来自路线S0的数据。与节点V位于同级上的节点U(未示出)直接向节点V发送数据。与节点V位于同级上的节点W(未示出)直接从节点V接收数据。来自节点A或节点D的沿线路S0向下发送的数据,通过节点V并直接移动到节点W。节点V不能影响从路线S0到达的数据流。在节点V、A和D之间存在优先权关系,以便向节点W发送数据。节点V具有最高的优先权。节点A具有第二最高优先权,最后节点D具有向节点V发送数据的最低优先权。

    包括所有可从节点A到达的端口的系统输出端口组O,与可从节点B、C和D到达的系统输出端口组一致。每个节点输出端口S0、S1、S2和S3都导向下个较低级上的不同节点。可从下个较低级中的节点到达的输出端口组包含输出端口组O中输出端口的1/4。

    图19B中,节点A通过控制线BS0接收忙信号,并向节点D转播该信号。可选的设计包括直接从控制线BS0源延伸到节点D的路线,以及从节点A道节点D的控制线。控制信号用于控制数据流。由控制信号携带的特定路径并不重要。图19B的4个节点和在这4个节点下面的AND(与)门可以被视为一个单一节点X,具有8个数据输入端口、4个控制信号输入端口、8个数据输出端口和4个控制信号输出端口。

    来自南侧的数据输入信号总是通过该节点直接到达东侧。来自西侧的每个数据都能以三种方式被交换。从西侧退出到东侧的数据通过与输入端口位于同级上的输出端口退出。在输入端口之间存在优先权关系,其继承于该节点中各单元之间的优先权关系。在将数据发送出节点X输出端口S0方面,来自节点X输入端口W0的数据对来自节点X输入端口W3的数据具有优先权。

    对于每个设置来向节点SW(未示出)发送数据的节点X输出端口opx,节点X的输入端口IPX组设置来将数据发送出输出端口opx。输入端口组IPX中的最高等级成员向输入端口发出命令,通过输出端口opx向该输入端口组IPX的最低等级成员发送数据。这样,消息对输出端口opx的访问由基于位置的优先权模式定义。每个进入输入端口组IPX的消息都是目标。该目标可能是互连结构的输出端口,也可能是馈送其它结构的目标环。优先权关系存在于输入端口组IPX的成员之间,以便向输出端口opx发送数据。在该优先权关系中,输入端口p是输入端口IPX组的成员。

    如果消息MP到达输入终端组IPX的输入端口p,且从输出端口opx到消息MP目标存在路径,则将通过输出端口opx有条件地发送一条到达输入终端组IPX的消息。发送该消息的条件是,输出端口opx没有被不通过节点X传输的消息阻塞。如果输入端口q这样包括在输入终端组IPX中,即,1)在向输出端口opx发送方面,输入端口q的优先权比输入端口p高;2)消息MP到达输入端口q,从输出端口opx到消息MP目标存在路径,则不向输出端口opx发送消息MP。

    该例子将两级的逻辑和控制组和在一级中,如前所述。基数4节点向南侧提供4条输出路径,并复制通过两级向下发送消息的效果。另一期望特性是跳过省略的级,这可以减少通过互连结构的飞行时间,并产生较低的延迟。同样参照图9,一级上的单元连接到下个较低级的两组上,这两个组分别被称为“较高组”和“较低组”。基数4单元连接到下级的4个组中的一个,相对于二进制树状路径,这有效地创建了“基数4树”路径。多个单元互连到向南的共享路径。在所述基数4的实施例中,基数4单元连接到下面的4个组中的两个。在下一列,该单元连接到另外两个组。

    用于基数4互连的消息格式和标题与图3A所示的相同。参照图19A,单元A检查MSB1902、下个有效位1926以及通信量位1902,以确定该消息应当被发送到4个组中的哪一组。每个单元具有向南的两条路经。存在这样的优先权,即,该消息无法使用其中任何一条路经,因此必须向东路由。该路由类似于从状态640中的基数2单元向东路由的消息。如前所述,当向东发送消息时,控制信号BN1906通知在北侧共享该路径的单元。或者,标题可以指明在两个路径的其中一个S0或S2上向南的移动。在同一节点阵列中的另一单元共享路径S0,单元A在使用路径S0时对另一单元具有优先权。因此,如果消息标题指明通过路径S0的目标,且来自南方的控制信号指明该路径没有被阻塞,则单元A沿路径S0向下发送消息。单元A也向共享路径S0的单元D发送控制信号。当单元A试图在没有优先权的路径S2上发送消息时,单元A检查来自单元C的控制信号的状态,其中单元C在使用路径S2时具有优先权。基数4单元可能被就在下面的单元或同一节点阵列中的在使用共享路径S2时具有优先权的单元阻塞。单元A与另一单元D共享优先权输出路径S0,并用控制信号向单元D交流对路径S0的使用。单元A与单元C共享没有优先权的输出路径,并接收来自单元C的控制信号。

    图19B示出了在同一节点阵列中的4个基数4单元设置。单元A在使用路径S0时对单元D具有优先权,以点划线表示。当单元A在路径S0上向南发送消息时,单元A同时向单元D发送控制信号。每个单元具有两条向南的路径,颜色较深的路线表示哪条路径具有优先权。优先权设置为A-D-B-C-A,其中单元A对单元D具有优先权,单元D对单元B具有优先权,等等。当一个单元被指定在没有优先权的路径上发送消息时,该单元首先检查来自具有优先权的单元的控制信号。

    在所述例子中,构成基数4互连结构的基本建造块是可以转换4个来自东侧的信号,并将来自北侧的信号直接传送到东侧的节点。相同类型的其它节点可以用在相同的互连结构中。图19C和19D示出了这些实施例。

    图19C和19D中,路线S0导向位置W。可以认为位置W是节点或节点内的单元。与位置W同级的单元V在向位置W发送数据时具有优先权。在4个单元A、B、C和D中,没有一个单元在向位置W发送数据时对其它三个单元具有优先权。一个共用逻辑判定从单元A、B、C和D向位置W发送消息的线路竞争。可以认为单元A、B、C和D是单个节点。节点组O表示包含单一节点V的组。节点组R表示包含4个节点A、B、C和D的节点组。来自节点组O的消息在向位置W发送时对来自节点组R的消息具有优先权。

    图19C所示的节点包括4个2×2交换器1922以及在单元A、B、C和D的4个交换器1910。该节点可以将从西侧到达任意输入端口的消息发送到在东侧位于同一行的输出端口,或在南侧的任意输出端口。与该节点相关的控制逻辑1920接收16个输入位,包括来自南侧的4个忙信号、来自4个输入消息的通信量位以及两个来自每个输入消息的最够有效位。该逻辑设置在单元A、B、C和D的4个交换器,也设置4个2×2交换器。与节点相关的逻辑接受这16位作为一个输入信号,并产生代表节点状态的8位,包括忙信号。向北的忙信号可以由控制逻辑单元1920或节点A、B、C和D1910产生,如图19D所示。

    假设该逻辑采用的规则使用对节点A给予访问路径S0的最高优先权的优先权模式。假设节点A的消息将路径S0作为目标,节点B的消息将路径S0作为目标,节点C的消息将路径S1作为目标,节点D没有消息。考虑节点A的消息向节点A的目标移动时,仅允许一条消息向南移动,而其它规则允许两条消息向南移动。一组这样的例子示出了在使用任何将优先权严格基于位置的规则中的缺点。有效的策略是给定级的消息对来自较高级的消息以及对给定级可能基于其它模式具有优先权的消息具有优先权。两个这样的模式包括:(1)允许最大数量的消息下降一级;(2)根据标题中的服务质量(QOS)优先权位给予消息优先权。

    参照图19C和19D,复合节点N由多个单元、控制逻辑元件、输入端口、输出端口和交换器组成。复合节点包括个单元A、B、C和D、控制逻辑1920和交换器1930。复合节点N具有4个数据输入端口W1、W2、W3和W4以及8个输出端口。4个输出端口S0、S1、S2、S3组成输出端口组S。4个输出端口E0、E1、E2、E3组成输出端口组E。通过输出端口S传送的数据进入比节点N低一级、且位于节点N右侧的列上的节点。通过输出端口E传送的数据进入与节点N相同级、且位于节点N右侧的列上的节点。控制逻辑单元1920根据控制信号和通过输出端口组T发送的消息组的标题位确定控制选择。输出端口组T中的输出端口连接到节点N的输入端口。

    对每条进入复合节点N的消息,通过复合节点N存在一条到消息M指定的目标输出端口的路径。根据该消息的标题和由控制逻辑1920接收的控制信号,控制逻辑1920控制节点N中的交换器和节点之间的交换器。节点和交换器由逻辑单元1920设置,以增加或最大化可以向节点PM发送的消息M的数量,节点PM例如是1)节点PM在低于节点N所在级的级上;2)通过节点PM存在通向消息M的目标。

    图19D的节点具有一个额外的2×2交换器1930,并按期望可以对从西侧到达的消息进行任意置换。控制逻辑接受16位的输入信号,并产生10位来代表该节点的状态。即使在这种情况下,由于在节点A、B、C和D用于指定输出端口的消息之间仍然存在冲突,因此控制逻辑可能使用复杂的策略。

    在可选实施例中,控制通过图19C和19D中所示节点的消息流的逻辑可以使用消息标题中的QOS位,以便与较低优先权的消息相对照而给予较高优先权的消息较高的优先权,以移动到较低级。在一种情况下,优先权首先基于QOS设置,其次基于节点中的位置。

    图20A示出了基数4单元如何在节点阵列中以及在级之间相互连接。第0级的单元沿对角排列。第2级的单元A位于行-列-级位置[0,0,2]。第0行的单元连接到S4转换序列(0,2,1,3,0)的南侧,如每个单元上的符号所示。粗体显示的值表示具有优先权的路径。单元A与单元D共享到第0行的向南连接。单元A在使用第0行时对单元D具有优先权。在第0列、第2级,单元位于直接连接到具有优先权的南方的对角上。在下一列,即第1列,影响了转换序列S4的下两个位置,转换序列S4在后续列中重复。在第二次重复期间,在第一次重复中没有优先权的值被给予优先权。检查沿行粗体显示的值,示出了行上的相对优先权。在第2级,当消息向东通过任意两列移动时,该消息有机会下降到第0级的任意4行上。

    在节点阵列中展开第2级单元的方法从第一列开始,这里的单元沿对角设置。参考序列S4(0,2,1,3,0…),对与行号相同的值授予优先权。下个号码给出转换序列S4中该对值的另一个行号。例如,第0行上的单元A向南连接到第0行和第2行。由于0也是该单元的行号,因此值0具有优先权。在下一列,即第1列,单元A使用转换序列S4中的下两个值:1和3。这对值的第一个值具有优先权。同样,根据继续转换序列S4、并给予第一个值优先权的规则设置第1列的其余单元。在下一列,即第2列,又继续转换序列S4,由于仅在两列中满足该转换序列的所有4个值,因此,又重复该转换序列,但是以相反的优先权。第0行、第2列上的单元A向南连接到第0行和第2行,这是与第0列上的单元A相同的行。然而,消息流的优先权被反置,这由首要符号和控制信号箭头的相反方向指明。有利的结果是,向东通过4列的消息有机会向南下降到所有具有优先权的4行上,如果该消息没有从下面被阻塞,且其它连接的单元没有使用共享路径,则也有机会到达任何行。转换序列号S4确定单元对的互连。

    在本例中,消息跳过两级,按期望消除了奇数号级。检查两个标题地址位,单元具有能通向南方的4条路径中的两条。减少级数和控制逻辑量,有利地减小了传输时间。在所述控制模式中,两行共享一条向南消息路径,并具有公平的优先权分布。基数4单元与同一节点阵列中的其它单元以及在西侧和南侧的单元相组和,以获得期望的控制和消息流。与在单一路径实施例中向东移动的消息相比较,在基数4实施例中向东移动的消息优选具有几乎双倍的机会来沿着相同的两极向下移动。

    图20B示出了16行、基数4交换器的一列。两个共享向南的公用路径的单元通过连接单元2002和单元2004的同级控制信号进行通信。为简单起见,没有示出控制信号连接。通过将单元沿着各级的对角设置来给出基数4单元的布局。合适大小和次数的置换块位于节点阵列的东侧。基数4布局完成了转换序列的两步,因此,该转换序列的次数为2。在第4级使用转换块□□6,2,在第2级使用置换块□□□2。

    图20A讨论的处理产生基数4单元的布局。对于第4级,在南侧的互连模式与为旋转90度的置换块□□6,1给出的相同,并在向南的平行垂直路径上展开。在顶级上,由于所有16个单元都在同一列表中,因此16个单元之间的优先权循环复用。同样,第2级南侧的互连模式与为置换块□□,1给出的相同,该置换块在向南的垂直连接上展开。第2级上有4个优先权列表,与图19B所示的条件相似。

    图20B的互连具有以下特性,在第2级上,单元可以组合成4组,以形成如图19B所示的节点类型。然而,图20B中的每一组第4级节点都连接到至第4级其它节点的控制互连线。因此,第4级中的节点不能分解为4组,以形成如图19B所示的节点类型。在图20C所示的16行基数4互连中的节点可以组合成4组,以形成如图19B所示的节点类型。可以为互连中使用的置换做出许多选择。3个置换P4、Q4和R4用在交换阵列的列与列之间。置换S4可选的用于改善流量。当使用该置换S4时,每次仅在第4次时使用。第2级的行被分为4组,每组具有4行。在第0、1、2和3行上以及其它3组行上移动的消息可以只通过定点0、1、2和3上的输出端口退出。设计置换P4是为了使每个4单元节点都能向第2级上的4个行组中的每个组发送数据。

    参照图20C,第4级上节点2020最左侧的单元向第2级上的最左侧节点2024发送数据。从左侧起第二个单元2022向第2级每列中的左侧起第二个节点2028发送数据。对第4级上的4个节点中的每个继续该模式。置换Q4保证第2级上没有消息可以在后续时间步长中阻塞来自第4级上的相同节点的消息。置换R4保证在后续步长中没有第4级的消息阻塞第4级上的第二消息。置换S4进一步减小在4个或更多时间步长中保留在同一级上的消息之间的竞争。

    可以继续该模式,以便使用4单元节点构造更大的互连结构。每级64行的互连结构使用如下定义的置换P6、Q6、R6和S6:第6级上的最左侧节点具有连接到第4级上第0、16、32和48行的4个输出端口。最左侧节点的相邻节点具有连接到第1、17、33和49行输出端口。继续该处理,从而使从右起第n个节点具有连接到第0+n、16+n、32+n和48+n行的输出端口。置换Q6将底部60的行r变成第r+4行,顶部的4行r变成第r-60行。置换R4交换偶数和奇数行,置换S4将底部30偶数号码的行r变成第r+4行,将顶部两个偶数号码的行变成行R-60,并固定其余4行。产生置换P4、Q4、R4和S4的布线模式在64行的第2级重复4次。

    继续该处理,从而在每级包括256行的结构中,连接到第0、64、128和192行的最左侧节点具有4个输出端口。总之,每级包括4P行的结构在连接到下面一级上的第0、4P-1、2·4P-1和3·4P-1行的顶级具有最左侧节点,在顶级最左侧节点右侧的节点n连接到下面一级的第0+n、4P-1+n、2·4P-1+n和3·4P-1+n行。

    很多其它置换也能有效工作。一种产生好置换的方法是生成具有期望连接到下一列和较低级的随机置换,并由模拟通过该结构的通信量来评估不同的置换。

    在互连的许多例子中,单元向同级的一个单元和较低级的一个单元传送数据,如图21A和21B的拓扑结构中所描绘的,其中不是所有的节点都示出了所有的连接。在最简单的网络例子中,每个节点具有两个数据输入端口、两个数据输出端口、一个控制线输入端口和一个控制线输出端口。节点只包括一个单元。单元W和X在比单元A、B和C低的级上。单元A在第一列中,单元B和W在第二列中,单元C和X在第三列中。在最基本的例子中,不允许节点或单元一次接收超过一条信息。在图21A中,单元B和W都可以直接向单元X发送数据。在单元B和W之间,对于向单元X发送数据存在这样的优先权关系,即,在向单元X发送数据时单元W对单元B具有优先权。当单元W向单元X发送数据时,单元W也向单元B发送控制信号206,指明单元W已通过路径208向单元X发送了数据。在单元X在任意给定时间只能接收一条消息和单元W向单元X发送消息的例子中,单元B不能向单元B发送消息。当消息MA到达单元B,单元B的逻辑检查消息MA的标题,以确定单元X是否在从单元B到消息MA目标的路径上。仅在以下两个条件都被满足时单元B才向单元X发送消息MA:(1)在从单元B通过单元X到消息MA目标之间存在路径;以及(2)单元X没有被来自单元B的接收数据阻塞。单元的逻辑使用消息MA的标题信息以及来自单元W的控制信号,以便确定向何处发送消息MA。

    在图21A中,从单元B到单元X的消息互连线550、从单元W到单元X的消息互连线208以及从单元W到单元B的控制信号2106的控制互连线都是单独的线路。该配置引进两种用于向B传送数据的不同模式。在一种模式中,如图21B所示,从单元B到单元X的消息互连线通过单元W。通过这种方法,单元B使用单元W向单元X发送数据的相同消息互连线2108向单元X发送数据,从而使得从单元B到单元X的数据从单元B到路径2102上的单元W,然后从单元W到路径2108上的单元X。

    本领域普通技术人员可以预想其它用于设置支持从单元B或单元W向单元X传送消息的消息互连线和控制互连线,以及一个单元对其它单元具有优先权的模式。例如,图21D说明了从单元B到单元X、并通过单元V的消息互连线,从单元W到单元B的控制互连线通过单元U。进一步,控制互连线可以通过多个单元。在图21C中,单元W向单元B发送一个控制信号,向单元U发送一个控制信号。这些控制信号可能相等或不相等。从节点U到节点B的控制信号可能依赖或不依赖从节点W到节点U的控制信号。消息互连线和控制互连线的物理设置并不重要。然而,在向给定单元X发送数据的单元中,对于向单元X发送数据存在优先权,从而使单元W在向单元X发送数据时对单元B具有优先权。该方法使用控制信号来强迫执行优先权。该控制信号与其它网络中使用的信号交换不同:单元B不需要了解单元X的状态来向X发送消息。相反,单元B使用关于不同于单元X的单元的状态信息来确定向何处发送消息。实际上,指明不同于单元X的节点状态的控制信号可以通过单元X。控制信号经过的路径并不重要。该控制信号可以是单独信号或消息的一部分,其实质功能相同。通过生成控制信号、控制信号内容和节点互连拓扑结构的所述方法可以提高效率和流量。

    优先权基于位置的方法优点很多。由于单元W在比单元B低的级上,因此单元W的消息可能在网络上比单元B的消息待的时间更长。本方法与消息在网络上待了多久相关,并按期望给予更久的消息优先权。本方法还可以实施有利的特性,例如总是为消息存在一条退出单元的空闲路径,以及该空闲路径总是在通向消息输出端口的路由(路径?)上。此外,由于每条来自单元B的消息互连线都通向同级上的另一单元C,或者通向较低级的单元X,因此,消息在向目标输出端口前进的过程中决不会“失去方向”(lose ground)。这些期望特征可以实施在各种互连的大型集合中。

    在实施例的可选集合中,每个单元向同级上的一个或多个单元以及较低级上的两个或多个单元传送数据。图21E说明了一个包括控制单元B的电路的一部分,其中控制单元B具有到单元C、X和T的数据传输线。单元W在向单元X发送数据时对单元B具有优先权,单元S在向单元T发送数据时对单元B具有优先权。控制互连线从单元W延伸到单元B,并从单元S到单元B,以强迫执行优先权。图21F通过添加与单元B同级上的单元E、D和F扩展了图21E的说明。所添加的控制单元的附加优先权关系是:单元W在向单元X发送数据时对单元E具有优先权,单元S在向单元T发送数据时对单元E具有优先权。其它控制互连线从单元W延伸到单元E和单元B,并从单元S到单元E和单元B,以强迫执行该优先权关系。多个优先权分配指定了在单元B和单元E之间对于向单元X和单元T发送数据的优先权,包括以下4中分配:

    (1)单元E在向单元X和单元T发送数据时对单元B具有优先权;

    (2)单元B在向单元X和单元T发送时对单元E具有优先权;

    (3)单元B在向单元X发送数据时对单元E具有优先权;

    (4)单元E在向单元T发送数据时对单元B具有优先权。

    在第(1)种单元E在向单元X和单元T发送时对单元B具有优先权的情况中,添加了从单元E到单元B的控制互连线。图21G说明了一个可选例子,其中从单元W到单元S的控制互连线通过单元E。与单元E相关的逻辑可以修改通过单元E的控制信号,或者单元E在这方面被动,不改变这些信号。从单元E到单元B的控制信号指明从单元B到单元X的路径的可用性、从单元B到单元T的路径的可用性、两条路径的可用性,或两条路径的不可用性。

    参照图21G,单元B和E在同级上。对于互连结构的单元N,P(N)用于表示可从单元N访问的输出端口组。在互连结构的许多实施例中,可从单元B访问的输出端口P(B)与可从单元E访问的输出端口P(E)相同。输出端口组P(S)和P(W)不交叉,P(B)组是P(S)和P(W)组的组合。当消息MA向南逐级移动时,可由消息MA访问的输出端口组被减少,直到最终到达目标行为止。该消息移动一列到达右侧。很多单元到单元的互连拓扑结构都具有这些特性,包括图21A到21N所示的拓扑结构。互连、优先权和控制特性使得本互连结构与传统网络区别开来,不仅是单元和节点的特殊电路拓扑结构。例如,图21F到21L的电路在物理或拓扑结构上不同,但功能相似。

    在这里公开的许多例子中,不允许单元接受两条消息作为同一时间周期中的输入信号。在这些情况下,使用多种逻辑等效方法,以允许共享消息互连线。图21H说明了一个允许消息从单元B到单元X,或允许单元T通过单元E的例子。可选的,图21I说明了从单元E到单元X通过单元W的消息互连链路,以及从单元E到单元T通过单元S的消息互连链路。除了从单元E下移到单元T的消息首先分别通过单元S和W,并优选在电路中只使用水平和垂直线之外,图21J所示的互连结构在功能上等效于图21H中所示的结构。与图21I中的电路相比,图21J的电路优选允许两条消息进入每个单元T和X。对角结构可以用通过在下面同列上单元的连接路径,加上到下个单元的水平路径代替,如图21J所示。

    图21K说明了另一个从单元B或单元E到单元X和单元T的消息通过2×2交换器R2110的例子。该交换器由单元E和B设置在条2112或交叉2114位置。单元E在向单元X和T发送时对B具有优先权的情况等效于单元E在设置交换器R时对单元B具有优先权。该控制和优先权逻辑如下。单元W和S通知单元E是否阻塞单元E或单元T接收来自单元B或E的消息。如果消息MD到达单元E,则检查消息MD的标题以确定是单元X还是T在从单元E到消息MD目标的路径上。如果没有阻塞该路径上的单元接收消息MD,则单元E设置交换器R以沿着正确路径向消息目标发送消息MD。如果正确路径被阻塞,则向单元F发送消息MD,对交换器R的控制转交给单元B。同样,如果没有消息到达单元E,则对交换器R的控制也交给单元B。如果单元E设置交换器R,从而使消息MD可以朝着目标向下移动到另一级,当前具有消息MA,可以通过该配置的交换器朝目标移动,且单元X和T没有都被阻塞,则消息MA和MD通过交换器R朝着由消息MA和MD的消息标题指定的目标向下移动。这是单元B和E可以在同一时间向下一级向下发送消息的唯一条件。从单元E到单元B的控制信号指明单元X和T可以获得一条开放路径,以及单元B是否有权设置交换器R。如果从单元E到单元B的控制信号指明单元B有权设置交换器R,且消息MA到达单元B,则单元B检查MA的标题,以确定时单元X还是单元T在通向消息MA目标的路径上。如果没有阻塞该路径上的单元,则单元B设置交换器R,以使得消息MA继续朝目标移动,并向下将消息MA发送到下一级。当下一级上的单元被来自单元S、W或E的消息阻塞时,消息MA被发送到单元C。由于单元B对于向单元C发送具有最高优先权,因此该路径总是可用。此外,从单元C到消息目标行的跃距数与从单元B到同一行的跃距数相同。

    图21K也示出了单元B在向单元X发送消息时对单元E具有优先权以及单元E在向单元T发送消息时对单元B具有优先权的可选优先权模式。在该优先权模式中,只要消息可以通过并向目标移动,交换器R就设置在条位置2112。如果没有消息能在交换器位于当前位置时被正确向下发送到下一级,则该交换器被设置在交叉位置。因此,一个交换器位置对另一个具有优先权,在这种情况下即条位置对交叉位置,等效于单元B在向单元X发送时对单元E具有优先权,单元E在向单元T发送时对单元B具有优先权。单元B和E在该优先权模式下交换控制信号。控制互连线和消息互连线能以多种方式展开,以实施该逻辑。

    对于图22和23所示的2单元节点,两个单元B和E以及交换器R优选组合成一个节点P,如图21L所示。单元B和E各具有两个输入端口和两个输出端口,组合节点P具有4个输入端口和4个输出端口。向给定节点的输入端口发送消息的优先权不仅取决于发送节点的位置,还取决于消息进入的节点P的输入端口。图21M说明右图21I示出的单元B和E的电路形成的节点Y,其条件是交换器R提供从单元B和E到单元T和X的连接路径。与下面讨论的更为复杂的内部结构相比,节点Y的优点在于使用了相对很少的逻辑门。与图21A和21B所示的单一单元的节点的操作相比,节点Y的另一个优点是改善了处理效率。节点Y本质上和其它2单元节点一样,都具有很好的性能。在图1B、1C、21K、21L、21M以及其它图中,数据对角地向西移动到下一列的单元中。

    除了将两个较小单元的逻辑组合成更有效的计算单元,更大节点中的互连结构可以按期望比更小单元组合的互连结构更复杂。而图21K中所示的结构不支持从单元K到单元C、从单元D到单元C、从单元A到单元F或从单元J到单元F的消息,这些连接可以设置在图21L的节点P中。优选的,节点P可以将4条输入线中的任一条交换为4条输出线中的任一条。在其它实施例中,控制线通知单元J单元D、A和K的状态,并通知单元K单元A、D和J的状态。由于从节点P到单元C和单元F存在两条保证不阻塞的路径,因此节点P总是可以一次接受最多两条信息。同以前一样,单元A和D在向节点P发送消息时对单元K和J具有优先权。在单元K和J之间存在其它优先权关系。图21L的更复杂节点P在以下情况中比图21K的单元B和E更有优点,即,当消息可以向下移动到较低级时,而在图21K电路中消息仍留在同级。例如,如果消息当前在节点D和K而不在节点A和J,则两个消息都可以进入节点P,但只有节点D的消息可以进入图21K所示结构中的单元E。

    组合图21K中所示的两个较小单元B和E会生成图21L中的复杂连接节点。一旦这些单元被组合,则内部互连结构和该节点逻辑优选可以通过很多方法被扩大和充实。例如,超过两条互连线可以被插入到同级上的节点之间。图21N说明具有5条数据输入线和5条数据输出线的节点Q。该数据输出线中的3条连接到同级上的节点,另两条连接到下级上的节点。来自节点Q的3条数据输出线可以连接到3个独立节点C、F和K,如图21N所时,或两条或更多该线路连接到同一个节点。例如,所有来自节点Q的3条线路都可以连接到节点C,从而消息互连线可以是并行传送多个数据的数据总线。该数据总线可以并联连接,如电子总线,也可以是使用时分或波分多路复用传送多个信息的单一光纤。后面将更详细地讨论数据总线。

    优先权基于位置的模式可以用其它优先权模式组合。例如,标题中的信息,例如优先权位或QOS字段332,优选将更高或更低的优先权给予与其它消息竞争同一输出端口组的消息。图21L说明了其中节点A和D的消息对节点K和J的消息具有优先权,但在节点K和J的竞争消息之间的优先权可以基于标题中的优先权字段的电路。相同的技术可以优选用于节点P,从而对于目标都指定为节点X的节点P中的两条消息,具有较高优先权的消息竞争成功。在标题中表明的优先权可以在消息最初进入交换器之前被设置,也可以是消息在交换器中持续时间的指示符,还可以依赖于与应用相关的因素。还有其它技术允许某些优先权基于位置,而另一些优先权在不同时间随机指定。随机化具有的优点是使得某些不期望的流模式不能在互连中展开。

    图21A中所示的子电路示出了节点W和B,两个都可以向节点X发送数据。与节点B相关的逻辑使用涉及消息通过节点W路由的信息,以便通过节点B路由消息。信息通过节点W和节点B之间的控制信息传输线206。从节点B到节点X的数据传输线550以及从节点W到节点X的数据传输线208使得节点W和节点B可以直接向节点X发送数据。节点W在向节点X发送数据时对节点B具有优先权。从节点W直接到节点B的控制信号强迫执行优先权。在一些互连结构中,该路线的唯一目的就是传送控制信号。

    图21B的子电路示出了都可以向节点X发送数据的节点W和B。与节点B相关的逻辑使用涉及消息通过节点W路由的信息,以便通过节点B将消息路由到节点X。该信息通过节点W和B之间的控制信息传输线。该控制信息传输线仅用于从节点W向节点B发送数据。节点W可以直接向节点X发送数据。节点B通过线路205上的节点W间接向节点X发送数据。尽管节点B可以通过节点X发送数据,但节点B不能直接向节点X发送数据,因此节点W不能改变来自节点B的数据通过节点W的路线。该设计优选使用从节点W到节点X的数据传输线208,以便传输从节点W发送到节点X的消息,也传输从节点B发送到节点X的消息。

    图22A是包括2单元节点的8行、3列互连结构的示例框图,其中2单元节点如图21M所示。该互连结构包括每列上的节点阵列108和置换块110。节点Y包括两个单元E和B。从顶级(第3级)开始,每个节点Y包括两个单元,一个单元从第0、1、2和3行选择,另一个从第4、5、6和7行选择。在下个较低级,一个节点包括两个这样的单元:(a)一个单元从第0行和第1行选择,另一个从第2行和第3行选择;或(b)一个单元从第4行和第5行选择,另一个从第6行和第7行选择。由于置换块用在所有列之间,相同的布局用于给定级上的所有节点阵列中。由于第1级的每个2单元节点都连接到两个输出端口,因此,2单元互连不需要或不使用第0级。第1级上水平沿行移动的消息直接连接到两个端口。或者,第1级节点检查标题最低有效位310,并将消息路由到目标输出端口。

    在同一垂直路径上的单元是相同2单元节点Y的一部分。具有优先权的单元显示为圆形。分别进入第3级单元E和B的两条消息可能竞争向南的同一路径,也就是说,两条消息可能将同一组作为目标,但是E的消息具有优先权。在下一列该优先权相反。虚线表明从单元B开始的没有优先权的消息移动到单元C,在此该消息获得优先权,然后在下一列失去优先权。同样,点划线表明从单元E开始的有优先权的消息移动到单元F,在此该消息失去优先权,并优选不与来自B的消息竞争。该图示出了当消息沿行移动时优先权交替,且消息不互相阻塞(从各自的路径中离开?)。虚线和短划线分别示出了进入E和B的节点Y的消息按期望不会又在下一列竞争。单元E的消息移动到单元F,单元B的消息移动到单元C,其中单元C和单元F不是同一节点。从任意输入端口到任意输出端口存在多条路径。来源于同一节点的消息使用这多条路径到达目标。该路径按期望互相分岔,消除了在消息之间的重复竞争,并防止互连中的热点。

    转换序列S4(0,2,1,3,0…)定义了从第2级第0行开始水平移动的消息的高度(长度?height)。对于具有第一位的消息M,其从位于第3级第0行第0列的单元E移动到位于第3级第2行第1列的单元F,然后继续移动到第3级。该消息的第一位从高度0到高度2,然后到高度1,等等,从而使第一位沿着高度序列(0,2,1,3,0,2,1,3,0,…)移动。注意单元E下行连接到第2级第0行第0列的单元S。单元下行连接到第2级第1行第1列的单元T。当消息M的第一位通过交换器的顶级时继续该过程,该消息下行连接到第2级第(0,2,1,3,0,2,1,3,…)行上的单元,如点划线所示。此外,当消息通过第3级时,该消息下行连接到第2级上的节点,其高度在序列(7,4,6,5,7,4,6,5,7,…)中,如虚线所示。因此,在顶级任意一列上的消息优选连接到下一级的较高组和较低组,并实现置换块的期望特性。在每个单元上,未阻塞的消息总是向下连接到由该消息标题指定的目标。

    图22B示出了本质上等效于图22A所示布局的可选布局,但是删除了置换块。删除置换块按期望减小了硅和金属的使用量。通过沿行的特定单元设置达到了内列转换序列的效果。通过第3级4列移动的消息优选向下连接到第2级的全部8列。图13B示出了最大利用芯片空间和最小化单元到单元连接的最大距离的竞争道平面图。

    图4A的讨论已表明通过互连100移动的未阻塞消息平均每级要通过1.5个单元。消息随机通过一个单元,并有50%的机会不具有向下到消息目标的连接。不希望该消息必须经常移动到下一列。为了减少消息的飞行时间,2单元节点Y按期望连接到较高组和较低组。参照图23,2单元节点包括两个单元E和B,它们每个都能连接到较高组和较低组。节点逻辑检查来自西侧W1和W2的输入信号,以确定每条可能进入的消息的方向。2单元节点包括2×2交换器2310,其可以将来自两个输入端口中任一个的消息路由到南侧S1或S2的两个连接中的任一个。该节点还检查来自南侧的控制信号,以确定是否可以获得到目标组的路径。

    当来自西侧的两条消息竞争通过向南路径的同一可用组时,其中一条消息具有优先权。优先权通常由单元相对于下一列上其它单元的位置确定。优先权是这样交替的,即,在一列上没有优先权的消息在下一列上具有优先权,如图22所示。当来自西侧的每条消息都被指定移动到不同的组,且向南的路径没有被阻塞时,两条消息都按期望向南路由。当仅一条消息从西侧到达时,该消息按期望路由到向南的未阻塞路径。从北向东也有一个连接,允许从上面的单元访问东侧的路径。当从输入端口W1使用较低组无法获得消息时,输入端口N1连接到输出端口E1,当不使用较低组时,输入端口N2连接到输出端口E2。当来自西侧的消息无法路由到向南的可用路径时,该消息通过输出端口E1或E2向东发送。只要向东的路径正在使用,就向北发送控制信号。

    图23是图21M所示电路的更详细框图。图21F到21N的电路可以用于实施不同的优先权模式,并优选用于实施更复杂的内部互连。图21M和23的节点Y使用最小量的逻辑,并在互连结构100中有效运行。

    参照图5B,到达单元B的消息M1可能被指定向南移动到单元F,在此该消息立即在串联路径522上向东移动。然而,在较低级上向东移动的当前消息M2在使用来自单元F的共享路径时对消息M1具有优先权。为强迫执行优先权,较低的单元及时地向北发送控制信号,从而使较高的单元可以反应,不向下发送消息。因此,来自单元F的控制信号有足够的时间到达较高级的单元B,以便单元B对控制信号作出发应。最后,消息M2在消息M1到达单元B之前到达单元F。在适合的电路中,消息到达给定级的时间是在到达就在北侧的级之前一个时钟周期,Tc。

    消息持续通过沿行的单元和FIFO中的移位寄存器。消息M2的通信量位T302在消息M1的通信量位到达上面的单元之前一个时钟周期到达较低的单元。单元中的两个延迟元件作用为由时钟驱动的2位移位寄存器,如图24A所示。较低的单元接收定时信号2404,这使得较低的单元检查两位T和M,并使来自南侧的控制信号确定向哪个方向发送消息M2。单一单元节点控制逻辑只检查3位,以作出路由选择,这在一个时钟周期Tc内就可以轻松完成。在该例中,内部连接向东发送消息M2,控制信号“1”被向北发送。在较高单元接收消息的第一个两位之前,较低的单元就生成并发送控制信号。换句话说,当控制信号被发送到较高单元时,该较高单元只接收消息M1的通信量位。在下个时钟周期,较高单元使所有信息可用,以便确定向何处发送消息M1。2单元节点检查6位,以确定路由选择,该检查在一个时钟周期内就能轻松完成。

    在任意给定级,不同行上的消息以并行方式向东移动。每个消息的标题位以“垂直对准”方式这样向东移动,即,当所有其它消息在同一节点阵列中时,每个标题进入一个单元。同样,从同级节点中的单元向南下降的消息在垂直对准中一起移动。

    图24B示出了在不同级同列上的消息的相对定时。在给定列,较低级上的单元在较高级上的单元之前接收消息的第一位T。第J级路由选择信号RD[J]2404发生在第J+1级定时信号RD[J+1]2406之前一个时钟周期Tc,对于更高级依此类推。所有给定节点阵列108中的单元都同步运行,都由同一定时信号驱动。跟踪边缘2430指明了消息的结尾。在每个单元中都具有延迟元件而列之间没有FIFO的例子中,下一列的定时信号是在西侧的前一列之后两个时钟周期Tclm2408。参照图5A和6A,向南移动的消息从旁路经过单元的移位寄存器,并立即连接到下一列的单元;在这种情况下,当消息通过单元内的门626时,存在小传播延迟TP2426。向南移动的消息优选避免通过移位寄存器,但可能经历累积的传播延迟,该延迟与连续通过的单元数成正比。为保证向南移动时的延迟,较低级的时钟优选在各级延迟TP,从而使向南移动的消息按期望与其它从较低级西侧移动的消息同步。图7E示出了保证传播延迟的可选装置,其中在合适的列之间设置了一位的移位寄存器716。退出该移位寄存器的消息按期望同步,而无需考虑它们以前的路由。一些电路可能使用两种技术来建立和保证消息进入节点阵列的时间一致。

    消息具有预定的最大长度Lmax。消息传输时间Tm2430是用于全部消息通过单元的时间,也就是Tm=Lmax·Tc。在消息完成通过单元之后很短的时间里就允许随后的消息进入该单元。消息传输时间Tm确定和时发送下个定时信号2412。在下一列的节点阵列中的单元定时由每个单元中的延迟元件确定,一般是两个,加上可能位于一些列之间的FIFO的长度。

    所有级、所有输入和输出控制操作的定时信号都由时钟和控制子系统生成,它们向互连结构中的所有节点阵列发送定时信号。由于单元到单元通信的局域性:单元不必比相邻列或级上的单元通信得更远;同一节点阵列中的所有单元都具有相同的定时,因此定时规格被有利地简化了。单元和FIFO中的移位寄存器形成大量的交换元件。同级上的所有单元都使用相同的时钟。不同级上的时钟相互之间轻微交错,以保证向南通过单元时的传播延迟。不同级上交错的定时按期望满足了片上的功率要求。相对于图24C所示的较高级时钟2418,第J级的时钟2420被元件2456延迟了TP2426。按期望,该时钟信号很容易分布出去,延迟元件DP2456可以具有双功能,用作放大器或缓存器。在节点阵列内,使用树以扇形散开时钟,从而使所有节点都接收同一定时。

    同一定时信号以及同一时钟信号控制同一节点阵列中的所有单元。典型的是,两个移位寄存器包括在单元中,从而使留在级上的消息在两个时钟周期之后到达下一列。顶级第一列的消息定时信号2460通过两位移位寄存器D22450,以生成下一列(在同一级)的定时信号,对剩余列依此类推。如果FIFO包括在列之间,类似的FIFO就用作延迟元件,用于东侧节点(未示出)的定时信号。为了保证向南下降的消息的传播延迟TP,较低级的定时信号被延迟相同量2458。按期望,定时信号2460容易分布,延迟元件DP可以具有双功能,用作放大器或缓存器。图24C示出了优选通过相对少量延迟元件的从第一列开始的时钟信号传播延迟。互连结构100的大单芯片实施例优选仅使用少量的门来控制单元和节点,以提供可按期望承担高流量的大量列和级。

    定时和控制优选按比例逐步增加,以轻松支持大互连。由于驱动移位寄存器和FIFO的时钟在相邻级上出现偏差,因此按期望简化了片上功率分布,并最小化功率供应噪声。图24D是表示具有用于在一个节点阵列内向所有节点相等地发布定时信号的树状输出的传统结构的框图。

    当消息通过互连流动时,节点确定是否向东或向南路由该消息。所有消息路由都在节点内执行。图25是表示逻辑对单元或节点执行的操作的流程图。在启动或复位时,单元的输出终端和锁存器被设置为全零状态,表明没有从单元发送消息。消息一致和同步地通过一级。所有在同一级向东移动的消息的第一位都一致这样从西向东移动,在任意行上的消息与所有其它进入同一节点阵列的消息同时到达单元。一些单元组,或节点组,具有来自各个方向的多个输入信号路径。

    在时刻2402,通信量位302和MSB308已进入节点。对于每条来自西侧的输入路径,控制逻辑都查找通信量位,以确定当前是否存在消息。如果当前没有消息,则对该输入路径不执行进一步的消息处理。否则,该节点检查一个或多个标题位,以确定是否存在有效标题。如果不存在有效标题或不存在消息,则节点状态被重设为启动条件。由于无效消息从不被发送到较低级,因此对有效标题的测试只需要在互连顶级执行。对于来自西侧的每条输入路径,逻辑根据向南的可用连接确定合适的消息方向。例如,如果标题指明消息必须移动到较高组,且无法获得到较高组的连接,则不向南路由该消息。或者,如果该节点连接到通向目标的路径,则在该消息没有被阻塞的条件下向南路由该消息。向东发送不能向南路由的消息。当向东发送消息时,控制信号被发送到北侧,以指明无法接受来自上面的消息。

    对于每条具有向南连接到消息目标的连接路径的消息,控制逻辑通过检查来自南侧的控制信号确定该路径是否可用。或者,当存在超过一条通向南侧的输出路径时,进入节点的多条消息可能竞争通向南侧的有限数量的路径。当目前存在比可用路径更多的消息时,优先权模式用于确定向南路由的消息。当指定向南移动的消息被来自南侧的控制信号或被其它在同级试图使用同一路径的具有更高优先权的消息阻塞时,向东发送该消息。当向南发送消息时,从消息中删除标题MSB;由此,下个最高有效位变成较低级的MSB,而总是保留通信量位。一旦确定可以向南发送该消息,控制逻辑在下个时钟周期向南发送该通信量位,然后形成从西侧到南侧的连接,从而使当前MSB丢失,下个最高有效位变成较低级的MSB。节点中的锁存器或其它存储元件保持节点的连接状态直至下个消息周期。在消息结尾,节点被复位,并等待下个定时信号2402;在消息到达时刻,节点重新准备好处理下个消息或下个消息组。

    总之,全局定时信号用于通知节点何时检查单元移位寄存器中的标题位,以确定消息是否存在,如果消息存在,还要确定消息方向。当向东发送消息时,控制信号被发送到北侧的单元,从而使后者不向下发送消息。北侧的控制逻辑检查和强迫执行该控制信号。如果消息被指定向南移动,则节点检查合适的控制信号,以确定是否可以获得路径。如果多条消息在一个节点内竞争向南的有限路径,则使用优先权模式来确定向南移动的消息。每个节点的状态都保存在一个或多个锁存器获寄存器中,以控制消息路由直至消息结束信号。期望的控制逻辑和互连拓扑结构结果是,消息总是具有退出该单元的开放路径,该消息不必在单元中被缓存,且按照期望,使用最小数量的控制逻辑来执行路由选择。

    图6A到6C示出了单一单元节点的3个连接状态:从西到南和从北到东以及从西到东。参照图21M、23和26,2单元节点具有16个连接状态,标记为A到P。如果存在来自西侧的消息,可能被指定移动到较高组或较低组。路径W1的4个可能状态是:(1)当前没有消息(空)或标题无效;(2)当前存在消息,但被阻塞向南移动;(3)消息通过S1连接到较高组;或(4)消息通过路径S2连接到较低组。同样,路径W2也具有相同的4个条件。

    图26是2单元节点例子的16个状态的表格,其中输入路径W1对输入路径W2具有优先权。状态A代表两条输入路径上都没有消息的情况,因此,来自南侧N1和N2的两条连接分别连接到路径E1和E2。只要在路径W1或W2上没有消息,来自北侧的各输入信号都连接到东侧。状态B代表何时在路径W1中没有消息、且路径W2中的消息被阻塞,从而导致路径W2中的该消息向东发送的条件。当向东发送消息时,总是向北发送控制信号(未示出),以阻塞来自上面的消息。状态C代表何时在路径W1中没有消息、且指定路径W2中的未阻塞消息连接到路径S1的条件。2×2交换器2110将路径W2连接到路径S2。除了路径W2连接到路径S2之外,状态D类似于状态C。除了路径W1和W2的输入条件相反之外,状态E、I和M类似于状态B、C和D。状态F具有被阻止向南移动的输入信号。状态L和O代表两条消息进入单元,并都被路由到通向南侧的未阻塞路径上的情况。状态K和P代表何时指定两条消息移动到通向南侧的同一未阻塞路径的条件。由于路径W1具有优先权,路径W1在内部阻塞路径W2,即在节点内,路径W2连接到东侧。在该节点的可选版本中,路径W2对路径W1具有优先权。

    使用2单元节点的互连结构比单一单元版本具有更大的流量和更低的延迟。图27是表示具有来自西侧的4个输入连接和来自北侧的4个输入连接的4单元节点的框图;4单元节点包括4个单元A、B、C和D。该4单元节点按期望甚至比类似大小的2单元实施例提供更大的流量和更低的飞行时间,并可以认为是该2单元互连设计的延伸。同样,用于实施4单元节点的基于2单元节点设计的该方法可以扩展到N单元,其中N是偶数。4乘4交换器允许从西侧进入任意单元的消息连接到通向南侧较高组或较低组的任意路径。为每组形成两个连接。在超过两条消息竞争同一组的情况下,“A-B-C-D-A”优先权模式用于确定对另一行具有优先权的行。不向南路由的消息移动到下一列,在此重新安排优先权,其优选的结果是没有任何行对另一行具有始终如一的优先权。

    4单元节点与基数4节点的不同点在于:前者只检查标题位,并向下一级发送消息。后者检查两个标题位,消息跳过一级,以便在一个周期中前进两极。

    控制逻辑检查每条来自西侧的消息的通信量位和MSB,并结合来自南侧的4个控制信号,以确定如何路由该消息。逻辑确定具有向南可用路径的消息,并在多个消息竞争同一路径时应用优先权。当消息向东路由时,向北发送控制信号(未示出)。较低级上的单元E、F、G和H可以是内部不同的节点。

    图28A和28B说明表示4单元节点互连的布局,形成该互连结构的32行实施例。在顶级单元的第一列展开的是双水平V模式,如图所示。每条垂直线包含4个消息路径和4个控制信号。当第5级第0行的消息向东沿行移动时,其遵循转换序列S32。4单元节点包括显示在同一垂直线上的单元,这些单元指明在每一列上连接的行。转换序列□□-32确定南侧的输出端口如何连接到下一较低级的单元。向南的连接总是与北侧的单元相同的行。例如,最左侧的节点在第0、8、23和31行上具有单元。字母A、B、C和D表示第4级上的相同4行。这些连接显示为虚线。使用转换序列S32展开第5级第1列,在下一列同样如此。使用所示的两个双水平V模式展开第0列第4级上的单元;使用转换序列S16展开其余列。图28B示出了下面一级,即第3级的布局。4单元内级转换序列2810和2814如图28C所示。

    在任意顶级行上移动的消息都有机会向南移动到下一较低级上的单元。任意两条消息可以移动到两个未阻塞较高组单元,并同样移动到两个较低组单元。进入节点的单个消息具有到下一组的两个可能连接,从而有利的是当一个单元被阻塞时另一个还可用。当多个消息竞争向南的同一路径时应用优先权模式。沿着同一行向东路由不能向南移动的消息。4乘4交换器比2单元节点和前面描述的单一路径实施例为消息提供了更多的机会来向南移动。额外的控制逻辑的优点是,通过使路径保持更多的消息通信量,更有效地使用了连接到南侧的垂直路径。由于消息具有超过一条通向南侧的路径,因此与2单元节点相比,总阻塞率更低而有效流量更高。

    图29A示出了前面讨论的2单元节点的强化变形。交换器S2提供另一组向下的连接路径,有利地增加了流量。公平优先权模式用于增加互连容量。单元A和B在节点N1中,单元C和D在节点N2中。两个节点都在第J+1级第i列。参照图5C,所有单元都对角连接:节点向东南发送数据到下一较低级的下一列上的单元,节点接收来自同一列中节点的控制信号。2×2交换器S3允许两个节点N1和N2向单元M或N发送数据。单元M和N在第J级的较高组中,并可由单元A、B、C和D访问。单元K和L在第J级的较低组中,也能由单元A、B、C和D访问。单元A、B、C、D、E、F、G、H和I都在第i列,单元K、L、M、N在第i+1列。由序列H、A、B、C、D给定向单元K发送消息的优先权。由序列I、C、D、A、B给定向单元L发送消息的优先权。注意节点N1在使用单元K时对节点N2具有优先权,节点N2在使用L时对节点N1具有优先权。由序列E、B、A、D、C给定向单元M发送消息的优先权。由序列F、D、C、B、A给定向单元N发送消息的优先权。

    如果单元H具有向单元K发送的消息,则单元H向节点N1发送控制信号,阻止单元A和B向单元K发送消息。如果节点N1接收来自单元H的阻塞信号,或如果节点N1向单元K发送消息,则节点N1向节点N2发送阻塞信号。如果单元K没有被阻塞,则单元A的消息将较低组定为目标,节点N1设置“条”中或垂直连接位置的交换器S1。节点N1也向交换器S2发送控制,以将交换器S2设置在“条”位置中,这导致从单元A到单元K的连接,如粗线所示。如果单元H和单元A都不向单元K发送消息,则单元B具有下个优先权;如果单元B被指定向单元K发送消息,则交换器S1被设置在交叉,即对角连接位置,节点N1向节点N2发送阻塞信号,并将交换器S2设置在条形位置。假设单元K被阻塞,单元A被指定向较低单元发送消息,单元L没有被单元I、C或D中任何一个阻塞,则节点N1将交换器S1设置在交叉位置,向节点N2发送阻塞信号,并将交换器S2设置在交叉位置。同样,单元C和D在访问较低级的单元M和N时对单元A和B具有优先权,并能访问较低优先权上的单元K和L。如果单元H和I中仅一个向西发送消息到单元K或L,则单元A和B中任何一个都可以向单元K或L发送消息。在另一个例子中,单元A被指定向单元K或单元L发送消息,以避免来自单元H或单元I的消息。节点N1将交换器S2设置到通向单元K或单元L的可用连接上。优选的,如果在较低级存在可用路径,则较高级上4个单元中的任何一个都可以在公平优先权模式下访问可用路径。

    图29B示出了2单元节点的另一种变形,其中交换器S4是来自较低级单元的消息改变方向,以有利的删除该消息。内节点通信线没有示出。如果单元A或B中仅一个被指定向较低组发送消息,单元H或I中仅一个向西发送消息,则节点N3可以向下发送消息。在本例中,单元A被指定向南发送消息到单元K。单元A没有连接到单元L。节点N3将交换器S4设置为是来自单元H或I的消息向单元L移动,按期望允许单元A向单元K发送消息。在图29A中,节点N1将交换器S2设置为引导节点N1消息的方向。在图29B中,节点N3将交换器S4设置为引导来自较低级上不同节点的消息。总之,节点N3和N4将交换器S4设置为引导来自单元X的消息,其中单元X在本例中是单元H或I,与节点N3和N4中的单元不同。此外,单元X在不同于节点N3或N4的级上。节点N3控制两个交换器S5和S4。交换器S5在节点N3中引导来自单元A和B的消息,交换器S4控制来自不同于自身节点的消息的方向。

    在图29B中,单元A、B、C和D分别是2单元节点N3和N4的元件。或者,单元A、B、C和D可以被认为是在它们中间通信的单一单元节点:其中节点N3和N4的单元A、B、C和D包括一个单一的4单元节点,其具有8个输入端口和8个输出端口。此外,节点可以包括或不包括位于该节点附近的交换器,控制逻辑可以在节点内,或部分在节点内。不同于其中具有交换器的节点的单元或节点可以控制交换器,例如图29A和29B所示的交换器S2、S3、S4。

    在其中节点具有大量输入和输出连接的互连结构实施例中,内部逻辑变得非常复杂,以至于单个节点的复杂度就可以接近整个互连网络的复杂度。为减小大节点的复杂度,并简化定时和控制,每个复杂的单个节点优选由前面描述的“小节点”互连类型代替。

    图30是表示这样的实施例的两个顶级的框图,即,具有大量输入和输出端口的节点可以实施为使用一些这里所述的结构。换句话说,上述大型互连结构100是这样形成的:(1)用包含多个数据和控制路径的总线代替各数据和控制路径,以及(2)用较小的完整互连结构代替各节点。由于不同程度的自相似性,产生的互连结构被称为“分形互连结构”,节点互连成为“分形节点”。

    图30是出了两列具有代表性的连接。分形节点FB3102包括3级和很少的列,以处理大量输入端口和输出端口。多个输出路径在同级上相互连接,并下行到下一级。进入节点互连FB的数据被发送到下面一个可以是基数2设计的组中。当在分形节点中使用超过两级时,消息在向消息目标前进中移动更多,这等效于具有大于2的基数。

    参照图21F,两个节点S和W可以阻止节点E和B向节点T和X发送消息。除了每个数据和控制路径都被多路径代替,且具有到多级的连接之外,图30所示的结构与图21F所示的结构具有相似的大规模拓扑结构。图30所示的例子中,4条路径代替了一条路径。一些分形节点的实施例在水平方向和在对角方向具有相同的输入和输出连接。在另一个实施例中,级间的对角连接可以用垂直连接以图21J所示的单元方式代替。

    考虑图30所示的分形节点的例子。节点FB包括全部互连结构的不同级上的行。在本例中示出了3级,每级可以包括未示出的行。分形节点FB3002在第N级包括8行,在第N-1级包括4行,第N-2级包括4行,还具有多个内部列。分形节点可以从全部16行向跨越相同3级的另一个分形节点FC3004发送数据。在所有能向节点FC发送数据的节点中,节点FB具有最高的优先权,从而决不会阻止向节点FC发送来自节点FB的消息。

    节点FB的内部结构是较早所述的互连类型。第N级的行数大于第N-1级的行数,以便在该分形节点的顶级上有足够的空间使来自更高节点的所有消息有位置下降。多种程度的自由度允许更广泛的设计。本领域的普通技术人员可以找到很多方法来修改这里描述的互连结构,以便容许较多行向较少行发送的情况。

    图21P说明用于控制多个试图通过单个节点的消息的基本方法。第N级上的两个节点E和B被设置为向下发送数据到第N-1级上的节点X。第N-1级上的节点W在向节点X发送消息时具有最高的优先权。第N级的节点E在向节点X发送消息时具有第二最高的优先权。第N级的节点B在向节点X发送消息时具有最低的优先权。图21P示出了从节点W到节点E的控制线,以表明消息是否已从节点W发送到节点X。从节点E到节点B的控制线表明节点E或W是否向节点X发送了消息。

    参照图30,在给定的时间步长,第N级的节点FB被设置为向第N-1级的节点3010发送消息。在下个时间步长,节点FB被设置为向第N-1级的节点3020发送消息。由于第N-1级的节点数等于第N-2级的节点数,因此,这些级之间的互连模式与图1A、1B和1C所示的相同。当消息到达分形节点的最右侧列时,该消息不会回到该节点的最左侧列,而是前进到同级或较低级上的节点。通过这种方式,以蠕虫洞方式移动的给定消息可以分布在不同级的多个大节点中。

    在自相似互连结构中,分形节点是内部的互连结构。分形节点包括这里所描述的类型的节点。此外,分形节点连接在这里所述类型的结构中。N+1表示大结构中的级数,从最低级0级到最高级N级。第N级的分形节点包括没有固定目标位的8行,固定一个目标位的4行,以及固定两个目标位的4行。第N-1的分形节点包括固定一个目标位的8行,固定两个目标位的4行,以及固定3个目标位的4行。该模式继续向下通过大结构的各级。该大结构中的定时这样设置,即,在大于给定消息穿过小节点所需时间量的时间间隔内发送控制信号。这种更慢的时间有利地允许控制信号通过各种设备移动更大的距离。

    参照图30,分形节点FB在第N、N-1和N-2级。从节点FB的顶部8行中退出的消息被发送到下一列中的分形节点FC。来自底部8行的消息也可以移动到节点FC,但是,此外,这些消息可以移动到较低级上连接的其它节点。考虑节点FB的16行r0、r1、…、r15。从节点FB的底部4行中退出的消息可以移动到在第N-2上连接的节点。退出节点FB的第r0行的消息可以进入第N-2级节点FP的顶部8行中的任一个,其中进入节点FP的所有消息都输出标题地址最高有效位(0,0)。退出节点FB第r1行的消息可以进入第N-2级节点FQ的顶部8行中的任一个,其中进入节点FQ的所有消息都指向最高有效位为(0,1)的输出。同样,退出节点FB第r2行的消息可以进入第N-2级节点FR的顶部8行中的任一个,其中进入节点FR的所有消息都指向最高有效位为(1,0)的输出。最后,退出节点FB第r3行的消息可以进入第N-2级节点FS的顶部8行中的任一个,其中进入节点FS的所有消息都指向最高有效位为(1,1)的输出。退出节点FB第r4行和第r5行的消息可以进入第N-1级节点FT的顶部8行中的两个,其中进入节点FT的所有消息都指向第一位为0的输出。退出第r6行和第r7行的消息进入节点FX的顶部8行中的两个,其中进入节点FX的所有消息都指向第一位为1的输出端口。该互连模式继续向下通过大结构的各级。

    到达大网络最右侧列的消息可以重新循环,已进入最左侧的列。然而,分形节点中的网络具有这样的特性,即,退出最右侧列的消息继续前进到另一个分形节点。参照图31A,分形节点FX3110的顶部8行被设置为接收来自同级节点FW3112以及来自更高级节点FB3002的消息。节点FW向FB发送控制信号3114,以强迫执行FW在向FX发送消息时对FB具有的优先权。

    参照图31B,分形网络的一个实施例包括在分形节点的一些输出端口的附加逻辑。来自节点FB的第r6和r7行在标记为p0和p1的进入点进入节点FX的顶部8行中的两行。与节点FX同级的节点FW可以向节点FX发送消息。来自节点FW的两行向节点FX的进入点p0和p1发送消息。如果在给定时刻只有一条消息从第r6和r7行退出节点FW,则节点FW的交换器3142向p0发送该消息。如果在给定时刻,只有一条消息连接到p0和p1的节点FB端口,则节点FB的交换器3140向p1发送该消息,按期望允许两个节点都向节点FX发送消息。从节点FW到节点FB的控制信号表明向端口p0和p1发送的消息数量。节点FB的逻辑可以做出正确的选择来从节点FB向节点FX发送最大可能数量的消息。

    另一个实施例可能包括N个数据线,从节点FB下行到节点FX,以及来自节点FW的N个数据线,其中N大于2。从节点FW到节点FB的控制信号表明在节点FW可用的输入端口数量。使用该信息,结合向节点FX的较低端口发送消息的节点FW,节点FB向节点FX的可用输入端口发送消息,有利地向下发送了最大数量的消息。

    该模式还可以通过考虑与节点FB同一级的节点FE3150进一步推广。节点FE从节点FB接收关于节点FE可以向节点FX发送多少消息的信息。该模式要求控制信息从节点FW到节点FB,从节点FB到节点FE,可能的话从节点FE到节点FB。

    所有描述过的概括和相似模式对本领域普通技术人员来说都是很明显的。本例是一个小分形节点。本领域普通技术人员可以应用这些技术来构成更大的分形节点。由于施加到分形节点间控制信号上的松弛定时要求,可以有利地构成大型网络,其中每个分形节点都是芯片上的网络。此外,通过扩展该原理,本领域普通技术人员可以构成特别大型的网络,其中每个分形节点都是大型网络,该网络本身由芯片上的分形节点构成。这类网络的流量和效率可以有利地无限扩大规模。对大小的唯一限制来自于由分组约束施加的技术限制。通过使用允许构成任意大小的高性能互连的自相似或分形网络打破该约束。

    参照图32,可选内置自测试(BIST)子系统通过将测试消息发布到数据总线102和142中,以及通过监测该测试消息由连接到互连结构内的数据和控制信号路径和连接到数据输出路径148的连接3210通过该互连的过程和流程,从而测试互连结构100的操作。由BIST子系统发送的控制3216绕过其中有缺陷的元件,按期望使操作得以继续。内置自测试和任何补救旁路或其它修补的结果可可以从外部由状态信号3214告知。BIST子系统可能也产生关于互连结构活动和状态的当前和统计信息,并向外提供这些信息。

    图32示出了内置自测试(BIST)子系统3202的总框图,该子系统在合适时刻将一条或多条消息发送到顶级,并监测通过该互连结构的消息进程。发送多条竞争消息来验证BIST操作。BIST逻辑包括生成消息的消息表和/或这样的算法,即,当执行内置自测试时通过互连结构传送这些消息。优选产生足够的消息,以保证每个单元都将消息发送到南侧和东侧。

    可以在每个输入端口设置来自BIST子系统的连接,在每级上设置来自所有单元各控制信号和数据路径的连接。多条消息被这样注入一个输入端口,即,至少一条消息被另一条阻塞,以便有利地测试该单元的控制能力。通过在互连运行期间检查从该单元发送的控制信号并对消息流采样来监测成功的阻塞。在BIST序列期间,发送多个消息组合,从而每个单元都生成和接收控制信号。

    在完全覆盖的完整内置自测试中,互连结构中的每个单元都向南传送了至少一条消息,向东传送了一条消息,并生成和接收了至少一个控制信号。产生外部信号以表明BIST成功或失败程度。有利的是,可以在运行期间使进一步的消息通信量绕过差劲的或有缺陷的单元。有缺陷单元的表格或列表存储在BIST子系统中,并从消息处理中删除有缺陷的单元。图33示出了如何以无损于消息进程和流程的方式从电路中删除有缺陷的单元3302。BIST发送信号3306,以绕过没有连接有缺陷单元的元件。

    有缺陷单元可能通过向东、向南或向北发送全0、全1或随机信号而出现故障,也可能无法响应消息标题或控制信号。在任何情况下,有缺陷单元的输出都没有连接到消息处理中。旁路信号与有缺陷单元的控制信号组合,从而意味着“忙”的“1”总是被传送到上面的单元,以防止后者向有缺陷单元发送消息。同样,向南的输出信号被切断,从而向南的单元不能接收消息或无效数据。来自西侧的输入信号通过延迟元件3320围绕单元3312路由。该延迟元件是当单元从西向东发送消息时与单元具有相同延迟的小FIFO。从互连结构中删除在东侧和南侧的输出端口。该消息通过与从南侧被阻塞的单元功能类似的旁路。该旁路的唯一效果(net effect)是在特定列上的消息没有机会向南下降。典型的互连在内部包括了比支持I/O端口数量所需的更多的列。因此,通过旁路移动的消息仍然具有很多机会来向南移动。有缺陷单元旁路的组合是使用图8A所示级联设计的另一个原因。对于在每个节点阵列中都包括至少一个旁路的互连结构,可以获得更高的可靠性。对于每个节点都包括至少一个旁路元件的互连结构,还可以获得其它改进。

    本例示出了一个单元的旁路。为2单元和N单元节点实施的旁路相似。所遵循的原理是,不连接东侧和南侧的有缺陷输出端口,防止北侧的一个或多个有缺陷单元向南发送消息,并绕过从西到东的有缺陷路径。BIST子系统和有缺陷单元旁路是可选特性。蒙特卡洛模拟示出了具有1024到65536个I/O端口、使用图8A所示级联设计的互连可以维持大于90%的输入率,而没有任何输入阻塞。这里描述的互连结构可伸缩的互连容量大大超过了现有技术的实施能力。薄片规模技术是一种获得大型互连结构的途径。几个支持大量I/O端口的例子都组合了BIST子系统和有缺陷单元旁路,以应付芯片缺陷。

    图34示出了有多个互连芯片组成的大型互连系统的框图,该系统具有至少一个互连芯片3408用作备用或保留芯片的期望特性。在本例中,每个互连仅有4个输入端口和4个输出端口以简化该图。系统3402包括4个互连芯片,加上1个保留芯片3408、一个外部控制3416系统、一个输入多路复用器3404以及一个输出多路解调器3412。这些组件组成一个完整系统的一半。该系统I/O端口的总数是单一芯片上端口总数的平方。例如,在该配置中,4端口互连芯片支持总数为42或16个I/O端口的系统。两个一半系统3402前后设置,以形成完整的系统。

    当各互连芯片接通电源,嵌入的BIST子系统通知外部控制器3416操作是成功还是失败。控制器在系统运行期间监测芯片性能。在系统接通电源以及运行期间,可以从电路中删除一个互连芯片,并由保留芯片3408代替。输入多路复用器3404包括一系列将输入的消息引导到两个芯片之一的1×2交换器3406。每个芯片的输出端口连接到选择两个芯片之一、并将消息和控制信号向东路由到系统副本3402的多路解调器3414。

    图35A是包括两个有缺陷芯片旁路子系统3402的框图,该子系统前后设置,以形成一个完整的16×16系统。在本例中,互连芯片3504已被确定有缺陷。外部控制单元3416向输入3404和输出3412单元发送控制信息,以便将有缺陷芯片从该数据路径中排除出去。在本例中,本来通过第2号芯片3504的消息相反路由到第3号芯片,本来通过第3号芯片的消息现在通过保留芯片3408路由,等等。在两各子系统之间的互连将每个输出信号从左侧子系统的芯片路由到右侧子系统的4个芯片中任何一个的输入端口。由此,进入16个输入中任一个的消息按期望被传送到任一个最终输出端口。

    图35A示出了每各子系统中的4个互连芯片加上一个保留芯片。在一些实施例中,每块芯片支持的I/O端口的数量应当大于这里示出的4个,例如,在64到256的范围。因此,该系统的容量应当是642到2562。很有利的是,子系统包括多个保留芯片。在64×64系统的例子中,将一组8或16块芯片作为一块,其中具有一个保留芯片。因此,系统包括4块33个芯片,或8块9个芯片,按期望为多芯片缺陷提供了保留容量。

    图35B示出了控制单元3404的可选实施例,其中交换器3406的功能在每块芯片内部实施。在本例中,对每个内部I/O连接,每个芯片3510具有两个I/O端口。内部2×1输出交换器(未示出)执行与外部交换器3412相同的功能。本例子按期望以每块芯片包括两倍I/O端口的代价删除了输出单元3404和输出单元3412。这种代价由整个互连系统的N平方大小补偿。

    沿行移动的消息阻塞一列上的消息,但不阻塞下一列。在所述结构中,包括了尽可能多的行,以便提供大量机会使消息向南移动。由于用于实施节点的逻辑数量相对较小,由技术引起的主要限制是有限的I/O管脚数量。这产生了逻辑对该数量I/O端口的冗余。逻辑的相对冗余用于创建尽可能多的通过互连的路径,以便大大减小消息被阻塞的可能性。

    图36A示出了互连中的顶级,其中,可选列连接到输入端口,使I/O连接对逻辑的数量减小了1/2。两个右侧的列示出了另一个例子,其中节点阵列中的一半单元都连接到输入端口,而下一列上没有一个连接到输入端口,单元对I/O的比例是4∶1。图36B示出了2单元节点只有一个输入端口,从而使进入的未阻塞消息总是有机会向南移动的实施例。只有一列用于输入连接,从而相对于输出端口数量,更少的输入端口包括在内,这有利地降低了互连结构中的通信量密度,对一些应用也支持少对多I/O比例。

    参照图7C,沿行可获得足够的存储,以包含一个完整信息。对于大量的列,例如每列有两个或多个存储元件,可以获得足够的存储,以便在单元中容纳整条消息而无需使用独立的FIFO。逻辑用于单元比用于FIFO更有效。例如,具有约40列的互连结构可以容纳80位的消息长度,从而为向南移动提供了很多机会。如果在芯片上无法获得足够的逻辑,则FIFO用于弥补该缺陷。

    列总数与具有输入互连的列之比由I/O对逻辑的量确定。可用逻辑用于生成尽可能多的节点阵列,以便消息到达目标行,而在通过互连期间按期望经过很少的阻塞。图36C示出了使用2单元节点的例子,其中输入连接仅位于一列上。所述设计的优点是,外部输入设备按期望由单一定时信号控制,且单元对I/O的比例很高。由于消息只能在一个位置进入行中,因此进入顶级的消息有很多机会向南移动。在本例中,消息通信量密度相对很低,按期望产生可以忽略的阻塞,并达到很低的延迟。

    图24A和24B说明了消息必须在特定时刻到达单元,以便通过互连与其它消息同步路由。图36D示出了允许输入设备在任意时刻发送消息的结构。输入控制器和多路解调器3650检测通信量位302的到达,并将到达的消息路由到合适的列3652,以便于该列上的其它消息同步。弹性的延迟元件3654用于进行很小的定时调整,从而使所有消息同步地进入顶级。

    图24B示出了在相邻级上移动的消息的相对定时。单元具有有限的时间周期,一般是一个时钟周期,用于使该单元生成控制信号并传送到北侧。定时规格也适用于外部设备。顶级节点在该单元可以接收消息的第一位之前向外部设备发送控制信号。当I/O比例很高时,信号的离开和返回时间以及输入设备3710的处理要求都可能大大超过该时钟周期。

    图37示出了大大放松输入定时限制、并允许足够时间来生成、传送和响应控制信号的结构。该设计类似于图36C的单列或单一时钟输入,除了从一列3706获取控制信号,在东侧的另一列3708注入消息。单元3722的被阻塞消息M1向外部输入设备3710发送控制信号。外部设备就在外部设备将向输入端口214发送消息之前接收该信号。弹性的延迟元件3654可以用于进行定时调整。控制信号输出和消息输入之间的时间量通过获得沿行的单元和FIFO中移位寄存器的总位数并乘以时钟周期来计算。例如,时钟周期为十亿分之1.2秒,FIFO包括80位,在单列3706和输入列3708之间有10个单元(总共20位),则响应时间为十亿分之1.2·(80+20)=120秒。响应时间按期望要比与输入设备通信的电信号所需的离开和返回飞行时间加上该输入设备的处理时间的和长。消息M1在传送控制信号之后十亿分之几秒到达输入端口120。可能设置或调整FIFO的长度,以容纳外部响应时间的需要。当输入单元3728被阻塞时,交换级618不接受来自北侧,即外部输入设备的输入,并按期望防止任何不期望的消息进入互连结构。

    在单元3716的另一个被阻塞消息M2也向外部设备发送控制信号。由于在忙输出列和消息输入列之间存在大量列,因此消息M2可能在到达输入列之前向南3718移动。在这种情况下,生成“错误”控制信号。当互连在顶级变得拥挤时,“错误”控制信号有利地减小了输入通信量,从而当互连变得忙碌,并由此降低通过互连结构的总通信量密度时,产生按期望调整外部消息通信量接收的自动机制。由于在忙输出列和消息输入列之间没有输入连接,因此缺乏控制信号总是意味着相应的消息输入端口可用,且没有被阻塞。

    如果忙信号输出在直接导向FIFO的列中,则放松输入定时限制,但忙信号不会出现错误。

    图38飞行时间循环

    图38示出了处理外部响应时间限制的附加技术。在本结构中实际上是FIFO回路3840的外部信号路径用于缓存一条或多条消息。如果该回路为空,则允许输入设备3810将消息传送到回路中。当该消息到达输入端口3838时,允许该消息在顶级单元空闲的条件下进入该单元。如果该单元忙,则该消息通过片上FIFO3846,并试图访问其它列和行。如果每次尝试时该消息都被阻塞,则该消息循环返回同一或不同的输入设备,在此该消息将阻止该设备发送另一条消息到回路中。返回的消息按期望作用为控制信号,以通知外部输入设备该设备不能发送消息。在返回输入控制器3830之后,该消息被再次回发到互连中,以便再次尝试进入。FIFO3840和3842一起足够容纳一条或多条消息。虚线3850下的组件典型地置于芯片内部。

    尽管在此参照各种实施例对本发明进行了描述,但应当理解,这些实施例只是说明性的,本发明的范围并不仅限于此。可以对这些实施例做出许多修改、添加和改进。例如,本领域技术人员要实施必要的步骤,以提供这里公开的结构和方法,还要理解,过程参数、材料和尺寸是以示例的方式给出,可以进行修改,以完成所期望的结构以及在本领域范围内的修改。这里公开的实施例变形和修改可以基于本说明书,而不背离本发明权利要求的范围和精神。

    在权利要求中,除非特别指明,“一”都是指“一个或多个”。

可伸缩多路径蠕虫洞互连.pdf_第1页
第1页 / 共132页
可伸缩多路径蠕虫洞互连.pdf_第2页
第2页 / 共132页
可伸缩多路径蠕虫洞互连.pdf_第3页
第3页 / 共132页
点击查看更多>>
资源描述

《可伸缩多路径蠕虫洞互连.pdf》由会员分享,可在线阅读,更多相关《可伸缩多路径蠕虫洞互连.pdf(132页珍藏版)》请在专利查询网上搜索。

一族互连结构和交换器,使用该互连结构获得可伸缩性、低延迟和单芯片实现。所公开的互连结构和交换器支持广泛的应用,包括超级计算机互连、LAN交换器、IP和ATM交换器、电话中央局交换、视频点播服务器、巨型机数据库服务器互连、高速工作站互连,以及许多其它本领域技术人员公知的应用。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1