CN101689172B - 消息路由方案 - Google Patents

消息路由方案 Download PDF

Info

Publication number
CN101689172B
CN101689172B CN2008800149822A CN200880014982A CN101689172B CN 101689172 B CN101689172 B CN 101689172B CN 2008800149822 A CN2008800149822 A CN 2008800149822A CN 200880014982 A CN200880014982 A CN 200880014982A CN 101689172 B CN101689172 B CN 101689172B
Authority
CN
China
Prior art keywords
address
node
message
array
node address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2008800149822A
Other languages
English (en)
Other versions
CN101689172A (zh
Inventor
戴维·梅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xmos Ltd
Original Assignee
Xmos Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xmos Ltd filed Critical Xmos Ltd
Publication of CN101689172A publication Critical patent/CN101689172A/zh
Application granted granted Critical
Publication of CN101689172B publication Critical patent/CN101689172B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]

Abstract

节点阵列中的每个处理器节点具有各自的本地节点地址,并且每个本地节点地址包含地址重要性从最高到最低顺序排列的多个部分。每个节点包括:映射装置,用于将本地节点地址的每个部分映射到各个路由方向,以及切换装置,用于接收含有标识目标节点的目标节点地址的消息。该切换装置包括:用于比较本地节点地址与目标节点地址来识别最重要的非匹配部分的装置;以及用于在本地节点地址与目标节点地址不匹配的情况下,将消息沿映射到最重要的非匹配部分的方向路由到另一节点的装置。

Description

消息路由方案
技术领域
本发明涉及在处理器之间路由消息,特别涉及一种在处理器阵列的各节点间路由消息的方案或协议。
背景技术
如图1所示,集成电路1可被构造为处理器核(tile)2的阵列,每个处理器核包括一个独立的处理器4、存储器6和通信器8。多个处理器核2之间通过在芯片1内传输数据和控制消息的内部连线10进行连接。芯片上少量的处理器核通过外部连线12与外部设备耦合。可选地,或者另外,不同芯片上的处理器可以排列在一起来形成一个电路。
这种体系结构的优点在于,通过在设计阶段将若干较小的模块化处理器连接起来,厂商可以依据考虑中的应用或设备的处理与存储要求,甚至是它们特殊的成本、功率和区域目标(area target),容易地创造一种具有特殊性能的芯片或电路。
然而,通过阵列路由消息也存在一个困难。消息可能被延迟,可能未按最有效的路径进行路由,或者也可能被死锁。此外,在大的阵列中,路由协议可能会变得复杂而难以使用。
发明内容
根据本发明的一个方面,提供了一种处理器节点阵列,每个节点具有一个在阵列中标识自己的各自本地节点地址,每个本地节点地址包括多个寻址重要性(addressing significance寻址有效性)从最高到最低顺序排列的部分,并且每个节点包括:用于将本地节点地址的每个部分映射到各个路由方向的映射装置,以及一个用于接收含有标识目标节点的目标节点地址的消息的切换装置,该切换装置包括:用于比较本地节点地址与目标节点地址以识别最重要的非匹配部分的装置,以及装置,用于在本地节点地址与目标节点地址不匹配的情况下,沿该映射装置映射到本地节点地址的最重要的非匹配部分的方向将消息路由到另一个节点。优选地,但非必要地,每个所述部分是一位。
令人惊讶地是,发明人已经发现了通过将路由方向映射到节点地址的各个位上,就可以提供一种有效、快速、易实现的并免死锁的在n维处理器阵列中路由消息的协议。另一优点是,相同的简单方案对于具有任意数量的维度的任意尺寸的阵列都有效。
在实施例中,切换装置可以被配置成按每次一位的方式执行所述比较,并在遇到最重要非匹配位时中止比较。目标节点地址可以是切换装置所接收消息的最前面部分。目标节点地址可以被切换装置按从最重要位到最不重要位的顺序进行接收。
这些实施例是非常有益的,因为在许多节点处,切换装置在将消息转发到另外一个节点之前仅需要读取该消息的最前面几位。由于地址在消息剩余部分到达前就可以起作用,本技术有助于特快的“虫孔路由”(wormhole routing)。这样切换装置就可以迅速地以最小延迟建立起消息的路由。
映射装置可以包括一路由查询表。路由查询表可以是软件可编程的。映射装置可以包括一种路由算法。
多个节点可以排列成一个至少两维、至少三维或者至少四维的阵列。
每个节点可以包含至少一个本地处理器,并且切换装置可以被配置成在本地节点地址与目标节点地址匹配的情况下,将消息路由到本地处理器之一。切换装置可以被配置成一旦检测到匹配并在将消息路由到一个处理器之前,丢弃目标节点地址。
至少一个节点可以包括多个处理器,此外消息还可以包括一个标识节点内目标处理器的目标处理器地址,并且切换装置可以被配置成在目标节点地址与本地节点地址匹配的情况下,将消息路由到目标处理器。切换装置可以被配置成在将消息路由到目标处理器之前,丢弃目标处理器地址。
在至少一个节点处的至少一个处理器可以包括多个I/O通道,消息可进一步包括一个标识处理器内目标通道的目标通道地址,并且切换装置可以被配置成在目标节点地址与本地节点地址匹配的情况下,将消息路由到目标通道。
切换装置可以被配置成一旦那些位与本地节点地址相匹配,就从目标节点地址中丢弃一位或多位。例如,节点地址中涉及一个特定维度的部分,可以在消息位置被缩小到该维度内的具体坐标时被丢弃。
根据本发明的另一方面,提供了一种在处理器节点阵列中路由消息的方法,每个节点具有一个在阵列中标识自己的各自本地节点地址,并且每个本地节点地址包括多个寻址重要性从最高到最低顺序排列的部分,该方法包括:在一个节点处接收一条包含目标节点地址的消息;比较本地节点地址与目标节点地址来识别最重要的非匹配部分;以及在本地节点地址与目标节点地址不匹配情况下,咨询将本地节点地址的每个部分映射到各个路由方向上的映射装置,并且将消息(朝着由该映射装置映射到本地节点地址中最重要的非匹配部分的方向)路由到另一节点。
根据本发明的另一方面,提供了一种在n维处理器阵列的各节点之间路由消息的方法,其中n是一个整数,该方法包括:确定阵列中维度n的数量;在k=1...n的每个维度上,确定阵列的最大范围L(k),其中L按节点数进行计量;沿着k=1...n的每个维度,定义按二进制依次编号的坐标,该坐标覆盖的长度至少为L(k),使得每个节点通过在n维的每个维度中的各个坐标进行描述;沿着k=1...n的每个维度,分配m(k)位的地址部分来定位每个节点,使得2m(k)≥L(k),并且在各个m(k)位的地址部分沿着每个维度k存储节点的坐标;对于阵列中每个节点的每个地址部分,将一个独立的第一方向映射到值为0的任意位上以及将一个独立的第二方向映射到值为1的任意位上;以及通过参考多个所述地址与所述方向来路由消息。
根据本发明的另一方面,提供了一种为n维处理器阵列的节点分配地址的计算机程序产品,其中n是一个整数,该计算机程序包括用于执行下列步骤的代码:确定阵列中维度n的数量;在k=1...n的每个维度中,确定阵列的最大范围L(k),其中L按节点数计量;沿着k=1...n的每个维度,定义按二进制依次编号的坐标,该坐标覆盖的长度至少为L(k),使得每个节点可以通过一个在n维的每个维度上的各个坐标进行描述;沿着k=1...n的每个维度,分配m(k)位的地址部分来定位每个节点,使得2m(k)≥L(k),并且在各个m(k)位的地址部分沿着每个维度k存储节点的坐标;以及对于阵列中每个节点的每个地址部分,将一个独立的第一方向映射到值为0的任意位上以及将一个独立的第二方向映射到值为1的任意位上。
具体实施方式
为了更好地理解本发明,并表明其是如何实现的,现在通过实例参考相应的附图,附图中:
图1示出一个处理器阵列的实例;
图2是一个处理器节点的示意图;
图3示出一个适用于路由的消息格式;
图4示出一个一维处理器阵列;
图5示出一个二维4x4处理器阵列;
图6示出一个二维3x3处理器阵列;
图7示出一个三维3x3x2处理器阵列;
图8示出一个四维2x2x2x2处理器阵列;
图9是一个表示路由方法的流程图;以及
图10是一个表示分配地址与路由方向的方法的流程图。
图2示意性地示出了根据本发明的一个示例性实施例的处理器核2’。多个这样的核排列在一起形成一个组合结构或者阵列,并且阵列中的每个核2’包括一个系统切换装置16和多个双向系统链路18,每一个该链路均连接到阵列内的另一个核。系统链路18的一些或者全部均可以在各个方向上连接各个其他处理器,并且/或者系统链路18中的一些可以在同一个方向上连接至同一个处理器,使得一组系统链路18可以有效地作为一个具有更大容量的链路。该系统链路18可以是片上的或者是片间的。每个系统切换装置16限定了阵列内的一个节点。
在本实例中,核2’包括4个处理器4。每个处理器4可以具有多个不同的、可通过双向通道链路22和一个处理器切换装置14访问的I/O通道。处理器切换装置通过一个或多个双向处理器链路20连接到系统切换装置。该核2’还包括一个通过系统切换装置16可访问的路由查询表,后文将详细讨论。此外该核2’还可以包括外部链路和存储器,如RAM和ROM(图中未示出)。
在操作中,系统切换装置16接收来自一个本地处理器(即相同节点的一个处理器)或者一个不同节点的处理器的一条输入消息26。每个节点被分配一个用于在阵列内标识自己的地址,每个处理器被分配一个用于在各个节点内标识自己的地址,并且每个通道被分配一个用于在各个处理器内标识自己的地址。地址包括地址数据的部分总量(component quanta),在大多数情况下即单个的位。如图3所示,该消息包括一个报头27,该报头包括一个指定目标节点地址的目标节点部分28,一个指定目标处理器地址的目标处理器部分30,和一个指定目标通道地址的目标通道部分32。该消息还包括一个有效载荷34。在一个优选的实施例中,报头是2个字节(16位)长,包含8位的目标节点部分,4位的目标处理器部分以及4位的目标通道部分。这样允许上限到256个节点,4096个处理器与65536个通道,每个节点有16个处理器,每个处理器有16个通道。
系统切换装置16将它的本地节点地址(即它自己的节点地址)与消息的目标节点地址进行比较。如果匹配,则系统切换装置检查消息的目标处理器地址并将其路由到对应的处理器切换装置14。处理器切换装置14然后检查消息的目标通道地址并将其路由到对应的通道。注意在消息最终被发送到一个处理器4之前,报头27可以被丢弃,使得接收软件有利地从不需要看到报头。报头可以被部分地丢弃,使得节点地址部分28与处理器地址部分可以在消息被路由到处理器切换装置14前被丢弃,并且通道地址部分32可以在消息被路由到处理器切换装置14之后但是在消息被路由到处理器4之前被丢弃。
但是如果不匹配,系统切换装置16接收了一个去往另一个节点的消息,并且必须决定往哪个方向转发它,即在哪个系统链路18上转发消息以及接下来哪个节点应当接收它。记住阵列可以包括数十、数百甚至数千个节点,因此一个消息在到达目标之前,可能不得不在诸多节点之间进行中继。于是找出在阵列内最有效的路由不是一个简单工作。
根据本发明,这要通过咨询查询表24来实现。查询表24包括多个可能的路由方向,所述路由方向按照本地节点地址的各个位排列成表格形式,一个方向映射到每个独立的位。基于节点本地地址与消息目标地址之间的比较,系统切换装置16识别一个非匹配的位并查阅查询表24来确定哪个方向映射到该位上。
优选地,查询表是软件可编程的,使得用户可以把任意数量的处理器按照模块形式组合在一起,然后在必要时对路由进行编程。可选地,如果阵列是由供应商提前设计好的,该查询表可以替换为对该阵列的硬件编程。
图2中仅示出了一个查询表,但在实施例中每个节点上可以提供多个这样的查询表。例如,每个系统链路可以有一个查询表。这样有利于加快消息路由,因为减少了消息对查询表资源的竞争,从而可以允许多个消息同时进行路由。
在一个尤为有利的实施例中,系统切换装置16逐位地比较本地节点地址与目标节点地址,即每次比较一位,并且一旦发现最前面的非匹配位就中止比较。这使得路由特别快,因为在大多数节点中系统切换装置16在将消息转发到另一个节点前仅需要读取消息目标地址的一小部分。有时该切换装置仅需要读取1位。优选地,系统切换装置16从比较最重要的位开始,然后比较次重要的位,以此类推直到发现一个不匹配的位。在一个优选的实施例中,目标节点地址的最重要的位被正好放在报头27的开始处,使得路由方向常常仅通过读取消息的最前面的几位就可确定,有时甚至仅需读取第1位。
本技术有助于特别快的“虫孔路由”,因为地址在消息剩余部分到达前就可以起作用。这样系统切换装置16就可以迅速地以最小延迟建立起消息的路由。
路由查询表的应用通过参考图4中的实例被进一步详细说明,该图示出了根据本发明的一个实施例的简单一维阵列。
在本实例中,每个核2’仅包括一个单独的处理器4,因此处理器地址与节点地址相同。每个核还包括一个路由查询表24与一个系统切换装置16。此外,由于阵列是一维的,每个核2’至多与两个系统链路18相连。为了简洁,诸如处理器切换装置14、处理器链路20与通道链路22等细节未包括在内。
为了容纳8个节点,每个节点被分配一个3位的地址。因此,每个查询表24有三个条目,每个条目对应节点地址的每个位。每个条目可以指定两个可能的路由方向之一,向上(U)与向下(D)。查询表如下:
节点      节点地址      查询表
N1        000            DDD
N2        001            DDU
N3        010            DUD
N4        011            DUU
N5        100            UDD
N6        101            UDU
N7        110            UUD
N8        111            UUU
因此在本实例中,最重要的位标识了阵列的具体一半。在给定的一半中,次重要的位标识了阵列中的具体四分之一,而在给定的四分之一中,最不重要的位缩小到了一个具体节点。因此,如果一个消息在错误的一半中开始,相应的系统切换装置16仅通过本地地址与目标地址中最重要的位的一次比较就可以发现。参考查询表24,系统切换装置然后确定哪个方向映射到最重要的位,以及因此在哪个方向上路由消息以将其移向正确的一半。一旦消息是在正确的一半,相关的系统切换装置16必须执行至少两次比较,一是在最重要的位之间的比较,一是在次重要的位之间的比较。在次重要的位之间的比较告知系统切换装置16消息是否在错误的四分之一,并且如果是,则告知需要在哪个方向路由消息以将其移向正确的四分之一。然后应用类似的原理,用于在一旦消息被路由到正确的四分之一,则使用最不重要的位找到最终的目标节点。
出于说明的目的,考虑从节点N7到节点N2路由一个消息。在N7,N6与N5的任一节点中,系统切换装置仅比较最重要的位,并且由于它们不匹配,则参考查询表24来决定消息应当被向上路由。注意到在节点N7-N5,通过仅检查所收到的消息的单个位就可以快速地进行路由消息。在节点N4与N3,系统切换装置16必须凭借比较次重要的位来决定消息应当仍旧被向上路由,直到其到达目标节点N2。
当然要注意到最重要的位到最不重要的位命名的顺序仅是一个常规的约定。但是,为了本发明的目的,“重要”的含义被关联到节点在阵列内的位置,因此最重要的位将阵列分成两部分,次重要的位将这两部分分别再分成两个子部分,以此类推。也就是说,地址位的从最高到最低的重要性顺序对应于阵列的逐步缩小的空间划分。重要性顺序既不意味着这些位在消息的地址部分的排列顺序,也不意味着其在任何存储器等中的排列顺序。这些因素对于本发明并非必需的(即使如上面论述到的,在优选的实施例中最重要的位被放在报文27的开始处)。最重要的位到最不重要的位按照从左到右的形式读取,纯粹是为了文字表达的需要。
本方案的速度与简单性在更复杂的多维阵列中优势尤其显著。图5示意性示出了一个将本发明扩展到4x4二维阵列的示例。为了方便,每个核2’仅用其独立的系统链路18与独立的节点地址0000到1111来表示。
每个节点地址可以被视为包括两个不同部分:一个指定了在左右方向上坐标的部分,和一个指定了在上下方向上地址的坐标的部分。在本例中,两个最重要的位在阵列内从左到右记为00,01,10,11,两个最不重要的位在阵列内从上到下记为00,01,10,11。因此路由查询表将两个额外的方向,向左(L)和向右(R),映射到节点地址。每个节点的查询表如下:
节点       节点地址    查询表
N1          0000       RRDD
N2          0001       RRDU
N3     0010    RRUD
N4     0011    RRUU
N5     0100    RLDD
N6     0101    RLDU
N7     0110    RLUD
N8     0111    RLUU
N9     1000    LRDD
N10    1001    LRDU
N11    1010    LRUD
N12    1011    LRUU
N13    1100    LLDD
N14    1101    LLDU
N15    1110    LLUD
N16    1111    LLUU
在应用中,系统切换装置16首先接收一个消息并比较该消息目标节点地址的最重要的位与本地节点地址的最重要的位。通过确定最重要的位是否匹配,告知该切换装置16消息是否在该阵列左右方向上正确的一半内,即是在最左的两列还是最右的两列。如果不是,通过映射到最重要的位的路由方向,该查询表告知切换装置按哪个方向进行路由从而将消息传送到正确的一半。一旦在正确的一半内,次重要的位就可以缩小到正确的列。一旦在正确的列内,就将相同的处理方式应用于上下方向上最不重要的两位。
注意到这仅是一个关于哪一维的地址位被设定为最重要和最不重要的术语。也就是说,本发明同样可以很好地读取指定上下方向的位来首先为消息找出正确的行,而后读取在左右方向上的一对(pair)位来缩小到正确的列。为了本应用的目的,最重要的维简单地被作为第一地址部分来使用,最不重要的维作为最后一部分来使用。不同维的各部分的位也可以以交叉的方式使用和/或排列。本质上,这些及其他变动并不会改变本发明的基本原理,因为本质上讲,从最高到最低的地址位的重要性顺序意味着阵列的逐步缩小的空间划分。
图6示出了一个3x3二维阵列的示例。还是为了方便,每个核2’仅用它独立的系统链路18与其独立的节点地址0000到1010表示。本例示出了本发明如何在不规则的阵列或不具有方便地长度2n(n是整数)大小的边的阵列中提供路由。纯粹出于说明的目的,还给出了冗余节点地址的假设位置2”。3x3阵列的查询表如下:
节点  节点地址    查询表
N1    0000        RRDD
N2    0001        RRDU
N3    0010        RRUx
N4    0100        RLDD
N5    0101        RLDU
N6    0110        RLUx
N7    1000        LxDD
N8    1001        LxDU
N9    1010        LxUx
现有节点2’的地址和查询表与图5中4x4阵列中的相应节点相同,除了由于冗余节点地址,查询表中的一些条目因为没有可能被咨询到而实际上成为了“无关的(don’t care)”(x)。因此可以看到一个3x 3阵列如何可以有效地从一个4x4网格“裁剪”而来。相同的原理可以用于寻址(address,定位)不规则形状的阵列。
图7示出了一个将本发明扩展到3x3x2三维阵列的示例。它创建了两个新的方向,向前(F)和向后(B)。对于利用附加到节点地址上的一个额外的位来指定在向前-向后方向上的节点位置,本发明的原理是完全一致的。查询表如下:
节点  节点地址  查询表
N1     00000    RRDDB
N2     00010    RRDUB
N3     00100    RRUxB
N4     01000    RLDDB
N5     01010    RLDUB
N6     01100    RLUxB
N7     10000    LxDDB
N8     10010    LxDUB
N9     10100    LxUxB
N10    00001    RRDDF
N11    00011    RRDUF
N12    00101    RRUxF
N13    01001    RLDDF
N14    01011    RLDUF
N15    01101    RLUxF
N16    10001    LxDDF
N17    10011    LxDUF
N18    10101    LxUxF
因此在操作中,消息首先被路由到如图5和图6所描述的正确的列和行。系统切换装置16进而进行本地地址与目标地址的最不重要的位的比较。这样会告知切换装置16消息是否在正确的平面内(即前面或后面)。如果不是,则切换装置16参考路由表来决定按照哪个方向路由消息以到达正确的平面。
根据本发明的一个实施例,当消息的位置被缩小到一个具体维内的具体坐标上时,与特定维相关的节点地址部分可以被丢弃。因此以图7中阵列为例,一旦消息已经路由到正确的列,最重要的位与次最重要的位就不再需要且可以被丢弃了。类似地,一旦消息已经路由到正确的行,那么第三最重要的位与第四最重要的位就不再需要且可以被丢弃了。
当消息被路由时,个别的位甚至可以被丢弃,即一旦匹配就丢弃最重要的位,随后一旦匹配就丢弃次重要的位,以此类推。
丢弃目标地址中的某些部分或者个别位提高了路由速度,因为需要进行位比较的次数减少了。但是为了允许丢弃某些部分或者位,必须采用某种方法以基于缩短的地址来路由消息。一种实现该目的的方法就是为每个系统链路18提供分离的查询表24,位可以从某些链路的查询表中去掉。例如,再次参考图7的例子,如果消息首先在左右方向上进行路由,则链路18在上下方向和前后方向就不需要通过任何位来比较原始地址的前两个最重要的位。类似地,如果消息随后在上下方向上路由,则向前-向后方向链路18的查询表仅需要包含单个位。这也降低了某些查询表的大小,节省了资源。
本发明也可以扩展到四维或者更多维。当然,阵列仍然存在于三个空间维——术语“维”在这里简单地表示一个“自由度”。因此,对于有四维或者更多维的阵列来说,在阵列内至少有一个节点连接至四个或多个其他节点。这就意味着有四个或者多个可能的方向供消息进行路由。
图8示出了一个本发明扩展到2x2x2x2四维超立方体的示例,通常所说的octachoron。N1...N16的每个节点连接至其他四个节点,因此在任意给定的节点均有四个自由度来路由消息。
如图7中示例,存在左右、上下、前后三个自由度。图8的示例则提供了另外的链路18来增加一个第四自由度来路由消息。按随意的术语,创建的两个新方向在这里记为黄(Y)与绿(G),黄是绿的相反方向。每个节点的路由表如下:
节点    节点地址    路由表
1     0000    RDBY
2     0001    RDBG
3     0010    RDFY
4     0011    RDFG
5     0100    RUBY
6     0101    RUBG
7     0110    RUFY
8     0111    RUFG
9     1000    LDBY
10    1001    LDBG
11    1010    LDFY
12    1011    LDFG
13    1100    LUBY
14    1101    LUBG
15    1110    LUFY
16    1111    LUFG
图9是根据本发明的方法的流程图。当一个节点的系统切换装置16接收到消息的目标节点地址的第一位时,该方法从步骤100开始。为了便于描述,这里将任何给定时刻考虑中的地址位记为第i位。在步骤102,目标节点地址的第i位与本地节点地址的第i位进行比较。在步骤104,该方法根据目标地址的第i位是否与本地地址匹配来分支。如果它们不匹配,该方法继续执行步骤106,通过咨询查询表来决定基于第i位所映射的方向。在步骤108,消息在该方向上进行路由。然而,如果目标地址与本地地址的第i位匹配,该方法改为执行步骤110,在该步骤中确定节点地址的最后一位是否已经到达。如果已经达到,则消息已经到达了目的地,并且该方法分支到步骤112,在该步骤中将消息路由到一个本地处理器。如果最后一位未被获取,则该方法继续步骤114来考虑下一个地址位,并从步骤102开始重复本方法。
根据以上描述,也出现了一种模式用于对节点进行寻址并分配相应查询表的优选方法。该模式通过参考图10的流程图来描述。在步骤200,确定了阵列的维数n。在步骤202,对于k=1...n的每个维度,确定阵列的最大范围L(k),其中L按节点数计量。在步骤204,在k=1...n的每个维度上定义了坐标。坐标按二进制依次编号,该坐标覆盖的长度至少为L(k)。于是每个节点的位置可以通过一个在n维的每个维度上的各个坐标进行描述。在步骤206,沿着k=1...n的每个维度,分配m(k)位的地址部分来寻址每个节点,限制条件为2m(k)≥L(k),并且沿着维度k的节点的坐标可以这样被存储在各个m(k)位地址部分。在步骤208,通过将方向映射到节点地址位,得到每个节点的查询表。对于阵列中每个节点的每个地址部分,这包括将各个第一方向(例如右、下、后、黄)映射到值为0的任意位上,且将各个第二方向(例如左、上、前、绿)映射到值为1的任意位上。
例如,参照图7,地址与相应的查询表如下分配。第一,注意到阵列是三维的并有最大范围为3x3x2的节点。三个节点的一边需要两位地址部分,因为21<3<22。两个节点的一边仅需要一位地址部分。因此该阵列采用五位地址来定位节点,其中两个最重要的位用于在左右方向上定位节点,第三和第四最重要的位用于在上下方向上定位节点,最不重要的位则用于在前后方向定位节点。为了得出查询表,0和1在两个最重要位上分别被映射到右和左,在第三到第四最重要的位上分别映射到下和上,在最不重要的位上分别映射到后和前。
上述实施例仅通过示例方式进行描述。在其他实施例中,其他的定位模式对所属领域人员来说是显而易见的。此外,从最重要的位到最不重要的位的排列顺序可以改变,使得消息首先按面、其次按行、再次按列或者按行、然后按面、然后按列等顺序进行路由。此外,路由查询表可以被次优选的方式如路由算法所取代。其他配置也可以被本领域技术人员所实施,例如不同大小、形状和维数的阵列,包括未形成方便的几何形状的不规则阵列和树形结构的阵列。本发明的范围不限于所描述的实施例,其仅由权利要求限定。

Claims (37)

1.一种处理器节点阵列,每个节点具有各自的本地节点地址,所述本地节点地址用于在所述阵列中标识所述每个节点,每个本地节点地址包括寻址重要性从最高到最低排序的多个部分,每个节点包括:
映射装置,用于将所述本地节点地址的每个部分映射到各自的路由方向;以及
切换装置,用于接收具有标识目标节点的目标节点地址的消息,所述切换装置包括:用于将所述本地节点地址与所述目标节点地址进行比较以识别最重要的非匹配部分的装置;以及用于在所述本地节点地址与所述目标节点地址不匹配的情况下,沿着所述映射装置映射到所述本地节点地址的最重要的非匹配部分的方向将所述消息路由到另一个节点的装置。
2.根据权利要求1所述的阵列,其中所述多个部分中的每一个是一位。
3.根据权利要求1或2所述的阵列,其中所述映射装置包括路由查询表。
4.根据权利要求3所述的阵列,其中所述路由查询表是软件可编程的。
5.根据权利要求1或2所述的阵列,其中所述映射装置被配置为执行路由算法。
6.根据权利要求1所述的阵列,其中每个节点包括至少一个本地处理器,所述切换装置被配置成在所述本地节点地址与所述目标节点地址匹配的情况下,将所述消息路由到所述本地处理器之一。
7.根据权利要求2所述的阵列,其中所述切换装置被配置成每次一位地执行所述比较,并在遇到最重要的非匹配位时中止比较。
8.根据权利要求1所述的阵列,其中所述目标节点地址是所述切换装置将要接收的消息的最前面的部分。
9.根据权利要求2所述的阵列,其中所述切换装置按照从最重要位到最不重要位的顺序接收所述目标节点地址。
10.根据权利要求1所述的阵列,其中所述阵列至少是二维的。
11.根据权利要求10所述的阵列,其中所述阵列至少是三维的。
12.根据权利要求11所述的阵列,其中阵列至少是四维的。
13.根据权利要求1所述的阵列,其中所述切换装置被配置成一旦检测到匹配并在将所述消息路由到处理器之前,丢弃所述目标节点地址。
14.根据权利要求1所述的阵列,其中至少一个节点包括多个处理器,其中所述消息还包括用于标识所述节点内的目标处理器的目标处理器地址,并且其中,所述切换装置被配置成在所述目标节点地址与所述本地节点地址匹配的情况下,将所述消息路由到所述目标处理器。
15.根据权利要求14所述的阵列,其中所述切换装置被配置成在将所述消息路由到所述目标处理器之前,丢弃所述目标处理器地址。
16.根据权利要求1所述的阵列,其中位于至少一个节点处的至少一个处理器包括多个I/O通道,其中所述消息还包括用于标识所述处理器内的目标通道的目标通道地址,并且其中,所述切换装置被配置成在所述目标节点地址与所述本地节点地址匹配的情况下,将所述消息路由到所述目标通道。
17.根据权利要求16所述的阵列,其中所述切换装置被配置成在将所述消息路由到所述目标通道之前,丢弃所述目标通道地址。
18.根据权利要求2所述的阵列,其中所述切换装置被配置成一旦所述目标节点地址中的一个或多个位与所述本地节点地址相匹配则从所述目标节点地址中丢弃所述一个或多个位。
19.一种在处理器节点阵列中路由消息的方法,每个节点具有各自的本地节点地址,所述本地节点地址用于在所述阵列中标识所述每个节点,并且每个本地节点地址包括寻址重要性从最高到最低排序的多个部分,所述方法包括:
在节点处接收包括目标节点地址的消息;
将所述本地节点地址与所述目标节点地址进行比较以识别最重要的非匹配部分;以及
在所述本地节点地址与所述目标节点地址不匹配的情况下,咨询将所述本地节点地址的每个部分映射到各个路由方向上的映射装置,并且沿着所述映射装置映射到所述本地节点地址的最重要的非匹配部分的方向将所述消息路由到另一节点。
20.根据权利要求19所述的方法,其中所述多个部分中的每一个是一位。
21.根据权利要求19或20所述的方法,其中所述映射装置包括路由查询表。
22.根据权利要求21所述的方法,其中所述路由查询表是软件可编程的。
23.根据权利要求19或20所述的方法,其中所述映射装置被配置为执行路由算法。
24.根据权利要求19所述的方法,其中每个节点包括至少一个处理器,并且所述方法还包括在所述本地节点地址与所述目标节点地址匹配的情况下,将所述消息路由到本地处理器之一。
25.根据权利要求20所述的方法,其中比较的步骤包括:每次一位地执行所述比较,并且在遇到最重要的非匹配位时中止比较。
26.根据权利要求19所述的方法,其中所述目标节点地址是将要接收的消息的最前面的部分。
27.根据权利要求20所述的方法,其中按照从最重要位到最不重要位的顺序接收所述目标节点地址。
28.根据权利要求19所述的方法,其中所述阵列至少是二维的。
29.根据权利要求28所述的方法,其中所述阵列至少是三维的。
30.根据权利要求29所述的方法,其中所述阵列至少是四维的。
31.根据权利要求19所述的方法,还包括:一旦检测到匹配并在将所述消息路由到处理器之前,丢弃所述目标节点地址。
32.根据权利要求19所述的方法,其中至少一个节点包括多个处理器,其中所述消息还包括用于标识所述节点内的目标处理器的目标处理器地址,并且其中,该方法还包括在所述目标节点地址与所述本地节点地址匹配的情况下,将所述消息路由到所述目标处理器。
33.根据权利要求32所述的方法,进一步包括:在将所述消息路由到所述目标处理器之前,丢弃所述目标处理器地址。
34.根据权利要求19所述的方法,其中至少一个节点的至少一个处理器包括多个I/O通道,其中所述消息还包括用于标识所述处理器内的目标通道的目标通道地址,并且其中,该方法还包括在所述目标节点地址与所述本地节点地址匹配的情况下,将所述消息路由到所述目标通道。
35.根据权利要求34的方法,包括:在将所述消息路由到所述目标通道前,丢弃所述目标通道地址。
36.根据权利要求20的方法,包括:一旦所述目标节点地址中的一个或多个位与所述本地节点地址相匹配,则从所述目标节点地址中丢弃所述一个或多个位。
37.一种在n维处理器阵列的节点之间路由消息的方法,其中n是整数,该方法包括:
确定所述阵列中维度n的数量;
在维度k=1...n的每个维度中,确定所述阵列的最大范围L(k),其中L按节点数进行计量;
沿着维度k=1...n的每个维度,定义以二进制依次编号的坐标,该坐标覆盖的长度至少为L(k),使得每个节点由n维的每个维度中的相应的坐标进行描述;
分配m(k)位的地址部分,用于沿着每个维度k=1...n寻址每个节点,使得2m(k)≥L(k),并且沿着每个维度k将所述节点的坐标存储在相应的m(k)位地址部分;以及
对于所述阵列中每个节点的每个地址部分,将各个第一方向映射到值为0的任意位上,以及将各个第二方向映射到值为1的任意位上;以及
通过参考多个所述地址和所述方向来路由消息。
CN2008800149822A 2007-03-14 2008-03-13 消息路由方案 Active CN101689172B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/717,621 2007-03-14
US11/717,621 US7962717B2 (en) 2007-03-14 2007-03-14 Message routing scheme
PCT/GB2008/000880 WO2008110806A1 (en) 2007-03-14 2008-03-13 Message routing scheme

Publications (2)

Publication Number Publication Date
CN101689172A CN101689172A (zh) 2010-03-31
CN101689172B true CN101689172B (zh) 2012-03-28

Family

ID=39430991

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008800149822A Active CN101689172B (zh) 2007-03-14 2008-03-13 消息路由方案

Country Status (8)

Country Link
US (2) US7962717B2 (zh)
EP (1) EP2140365B1 (zh)
JP (1) JP5398552B2 (zh)
KR (1) KR101415286B1 (zh)
CN (1) CN101689172B (zh)
AT (1) ATE492851T1 (zh)
DE (1) DE602008004130D1 (zh)
WO (1) WO2008110806A1 (zh)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9092212B2 (en) 2007-05-31 2015-07-28 James Arthur Dean Wallace Anderson Processors
GB0710377D0 (en) * 2007-05-31 2007-07-11 Univ Reading The Processors
US8122228B2 (en) * 2008-03-24 2012-02-21 International Business Machines Corporation Broadcasting collective operation contributions throughout a parallel computer
US8484440B2 (en) 2008-05-21 2013-07-09 International Business Machines Corporation Performing an allreduce operation on a plurality of compute nodes of a parallel computer
US8131975B1 (en) 2008-07-07 2012-03-06 Ovics Matrix processor initialization systems and methods
US8145880B1 (en) 2008-07-07 2012-03-27 Ovics Matrix processor data switch routing systems and methods
US7958341B1 (en) 2008-07-07 2011-06-07 Ovics Processing stream instruction in IC of mesh connected matrix of processors containing pipeline coupled switch transferring messages over consecutive cycles from one link to another link or memory
US8327114B1 (en) 2008-07-07 2012-12-04 Ovics Matrix processor proxy systems and methods
US8045546B1 (en) 2008-07-08 2011-10-25 Tilera Corporation Configuring routing in mesh networks
US8050256B1 (en) 2008-07-08 2011-11-01 Tilera Corporation Configuring routing in mesh networks
US8151088B1 (en) * 2008-07-08 2012-04-03 Tilera Corporation Configuring routing in mesh networks
US8281053B2 (en) 2008-07-21 2012-10-02 International Business Machines Corporation Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations
NL2002799C2 (en) * 2009-04-24 2010-10-26 Univ Delft Tech Data structure, method and system for address lookup.
US9135215B1 (en) * 2009-09-21 2015-09-15 Tilera Corporation Route prediction in packet switched networks
CN102130813B (zh) * 2010-01-15 2016-08-03 华为技术有限公司 伪线建立方法、系统及设备
US8665727B1 (en) * 2010-06-21 2014-03-04 Xilinx, Inc. Placement and routing for a multiplexer-based interconnection network
US8910178B2 (en) 2011-08-10 2014-12-09 International Business Machines Corporation Performing a global barrier operation in a parallel computer
US9495135B2 (en) 2012-02-09 2016-11-15 International Business Machines Corporation Developing collective operations for a parallel computer
KR101506208B1 (ko) * 2013-02-13 2015-03-26 라이트웍스 주식회사 네트워크 온 칩의 라우팅을 위한 이더넷 프리앰블 구성 방법
US10218524B2 (en) 2013-09-17 2019-02-26 Cisco Technology, Inc. Bit indexed explicit replication for layer 2 networking
US10003494B2 (en) 2013-09-17 2018-06-19 Cisco Technology, Inc. Per-prefix LFA FRR with bit indexed explicit replication
US11451474B2 (en) 2013-09-17 2022-09-20 Cisco Technology, Inc. Equal cost multi-path with bit indexed explicit replication
US9806897B2 (en) 2013-09-17 2017-10-31 Cisco Technology, Inc. Bit indexed explicit replication forwarding optimization
US9942053B2 (en) 2013-09-17 2018-04-10 Cisco Technology, Inc. Bit indexed explicit replication using internet protocol version 6
US10461946B2 (en) 2013-09-17 2019-10-29 Cisco Technology, Inc. Overlay signaling for bit indexed explicit replication
US9906378B2 (en) 2015-01-27 2018-02-27 Cisco Technology, Inc. Capability aware routing
US10341221B2 (en) 2015-02-26 2019-07-02 Cisco Technology, Inc. Traffic engineering for bit indexed explicit replication
US10116557B2 (en) 2015-05-22 2018-10-30 Gray Research LLC Directional two-dimensional router and interconnection network for field programmable gate arrays, and other circuits and applications of the router and network
EP3400688B1 (en) * 2016-01-04 2020-05-20 Gray Research LLC Massively parallel computer, accelerated computing clusters, and two dimensional router and interconnection network for field programmable gate arrays, and applications
US10630743B2 (en) 2016-09-23 2020-04-21 Cisco Technology, Inc. Unicast media replication fabric using bit indexed explicit replication
US10637675B2 (en) 2016-11-09 2020-04-28 Cisco Technology, Inc. Area-specific broadcasting using bit indexed explicit replication
US10496578B2 (en) 2017-01-06 2019-12-03 Samsung Electronics Co., Ltd. Central arbitration scheme for a highly efficient interconnection topology in a GPU
US10447496B2 (en) 2017-03-30 2019-10-15 Cisco Technology, Inc. Multicast traffic steering using tree identity in bit indexed explicit replication (BIER)
US10587534B2 (en) 2017-04-04 2020-03-10 Gray Research LLC Composing cores and FPGAS at massive scale with directional, two dimensional routers and interconnection networks
US10164794B2 (en) 2017-04-28 2018-12-25 Cisco Technology, Inc. Bridging of non-capable subnetworks in bit indexed explicit replication
CN109117333B (zh) * 2018-09-29 2023-04-07 深圳比特微电子科技有限公司 计算芯片及其操作方法
CN116578522B (zh) * 2023-07-13 2023-12-01 中电海康集团有限公司 基于众核架构的数据处理方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0501525A2 (en) * 1983-05-31 1992-09-02 W. Daniel Hillis Parallel processor
CN1862476A (zh) * 2006-04-19 2006-11-15 华中科技大学 一种超大容量的虚拟磁盘存储系统

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4661947A (en) * 1984-09-26 1987-04-28 American Telephone And Telegraph Company At&T Bell Laboratories Self-routing packet switching network with intrastage packet communication
US4651318A (en) * 1984-11-30 1987-03-17 At&T Bell Laboratories Self-routing packets with stage address identifying fields
US4679189A (en) * 1985-11-27 1987-07-07 American Telephone And Telegraph Company Alternate routing arrangement
JP2635031B2 (ja) * 1986-11-14 1997-07-30 株式会社日立製作所 並列計算機の相互結合方式
US5008882A (en) * 1987-08-17 1991-04-16 California Institute Of Technology Method and apparatus for eliminating unsuccessful tries in a search tree
JPH01126760A (ja) * 1987-11-11 1989-05-18 Toshiba Corp 並列計算機システム
GB8915135D0 (en) * 1989-06-30 1989-08-23 Inmos Ltd Message routing
US5422881A (en) * 1989-06-30 1995-06-06 Inmos Limited Message encoding
JPH05303558A (ja) * 1991-12-13 1993-11-16 Nec Corp アレイプロセッサのメッセージパケットルーティング方法および装置
JPH06243113A (ja) * 1993-02-19 1994-09-02 Fujitsu Ltd 並列計算機における計算モデルのマッピング法
JP3283319B2 (ja) * 1993-03-02 2002-05-20 松下電器産業株式会社 プロセサエレメント及び並列処理システム
US5583990A (en) * 1993-12-10 1996-12-10 Cray Research, Inc. System for allocating messages between virtual channels to avoid deadlock and to optimize the amount of message traffic on each type of virtual channel
US5430729A (en) * 1994-04-04 1995-07-04 Motorola, Inc. Method and apparatus for adaptive directed route randomization and distribution in a richly connected communication network
US5539739A (en) * 1994-09-29 1996-07-23 Intel Corporation Asynchronous interface between parallel processor nodes
JPH08185380A (ja) * 1994-12-28 1996-07-16 Hitachi Ltd 並列計算機
US5926101A (en) * 1995-11-16 1999-07-20 Philips Electronics North America Corporation Method and apparatus for routing messages in a network of nodes with minimal resources
WO1997005725A1 (en) * 1995-07-28 1997-02-13 British Telecommunications Public Limited Company Packet routing
US5602839A (en) * 1995-11-09 1997-02-11 International Business Machines Corporation Adaptive and dynamic message routing system for multinode wormhole networks
US6842430B1 (en) * 1996-10-16 2005-01-11 Koninklijke Philips Electronics N.V. Method for configuring and routing data within a wireless multihop network and a wireless network for implementing the same
SE9604491L (sv) * 1996-12-05 1998-06-06 Ericsson Telefon Ab L M Anordning och förfarande i överföringssystem
US6226710B1 (en) * 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
US6230252B1 (en) * 1997-11-17 2001-05-08 Silicon Graphics, Inc. Hybrid hypercube/torus architecture
US6643764B1 (en) * 2000-07-20 2003-11-04 Silicon Graphics, Inc. Multiprocessor system utilizing multiple links to improve point to point bandwidth
US6982976B2 (en) * 2000-08-11 2006-01-03 Texas Instruments Incorporated Datapipe routing bridge
US20030031126A1 (en) * 2001-03-12 2003-02-13 Mayweather Derek T. Bandwidth reservation reuse in dynamically allocated ring protection and restoration technique
US7027413B2 (en) * 2001-09-28 2006-04-11 Sun Microsystems, Inc. Discovery of nodes in an interconnection fabric
AU2002363142A1 (en) * 2001-10-31 2003-05-12 Doug Burger A scalable processing architecture
US7581081B2 (en) * 2003-03-31 2009-08-25 Stretch, Inc. Systems and methods for software extensible multi-processing
US7369561B2 (en) * 2003-07-17 2008-05-06 Samsung Electronics Co., Ltd. Apparatus and method for route summarization and distribution in a massively parallel router
KR101200598B1 (ko) * 2003-09-09 2012-11-12 실리콘 하이브 비.브이. 집적 데이터 프로세싱 회로 및 집적 회로 제조 방법
US7349981B2 (en) * 2003-12-18 2008-03-25 Intel Corporation System, apparatus, and method for string matching
US20100250784A1 (en) * 2009-03-26 2010-09-30 Terascale Supercomputing Inc. Addressing Scheme and Message Routing for a Networked Device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0501525A2 (en) * 1983-05-31 1992-09-02 W. Daniel Hillis Parallel processor
CN1862476A (zh) * 2006-04-19 2006-11-15 华中科技大学 一种超大容量的虚拟磁盘存储系统

Also Published As

Publication number Publication date
DE602008004130D1 (de) 2011-02-03
ATE492851T1 (de) 2011-01-15
KR20100015586A (ko) 2010-02-12
WO2008110806A8 (en) 2009-11-19
JP5398552B2 (ja) 2014-01-29
EP2140365B1 (en) 2010-12-22
US7962717B2 (en) 2011-06-14
CN101689172A (zh) 2010-03-31
US20110066825A1 (en) 2011-03-17
US20080229059A1 (en) 2008-09-18
WO2008110806A1 (en) 2008-09-18
EP2140365A1 (en) 2010-01-06
JP2010521731A (ja) 2010-06-24
KR101415286B1 (ko) 2014-07-04
US8185719B2 (en) 2012-05-22

Similar Documents

Publication Publication Date Title
CN101689172B (zh) 消息路由方案
US11223573B2 (en) Shortcut routing on segmented directional torus interconnection networks
EP2894572B1 (en) Method and device for programming a FPGA
US8401012B2 (en) Packet routing
KR20120050377A (ko) 전송 기능을 갖는 메모리 노드를 서로 접속한 스토리지 장치 및 데이터 처리 방법
JP4818920B2 (ja) 複数のプログラム可能なプロセッサを有する集積データ処理回路
CN102754102A (zh) 三维集成电路的设计支持装置及设计支持方法
EP0018754A1 (en) Speed independent selector switch for digital communication networks
Sibai A two-dimensional low-diameter scalable on-chip network for interconnecting thousands of cores
CN102546380B (zh) 修改的基于树的多播路由方案
US10469368B2 (en) Distributed routing table system with improved support for multiple network topologies
CN102893282B (zh) 用于在综合期间执行异步和同步复位去除的方法以及设备
JP2509947B2 (ja) ネットワ−ク制御方式
CN117176638A (zh) 一种路由路径确定方法及相关组件
CN201947293U (zh) 使用基于树的多播路由的网络、系统和处理器
CN110825689B (zh) 电子芯片的实现方法及电子芯片
KR102594944B1 (ko) 교착상태없는 변환을 위한 네트워크 온칩의 합성을 위한 시스템 및 방법
JPH05233566A (ja) アレイプロセッサのルーティング方法
CN114363245B (zh) 众核的片上网络数据传输方法、装置、设备及介质
Hamdi Topological properties of the directional hypercube
JP2006236362A (ja) マルチプロセッサシステム装置
An et al. Making shapes from modules by magnification
CN112988653A (zh) 数据处理电路、装置以及方法
Merry et al. A constant time algorithm for the channel assignment problem using the reconfigurable mesh
Stetsyura Possibilities of the application of fractal lines and grouped operations in multiprocessor systems with a rearrangeable structure for evolutionary computations

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant