掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及多芯粒集成电路技术领域,具体涉及一种网算一体的芯粒间路由器及数据包聚合方法。

背景技术

多芯粒集成系统是把一些实现特定功能的芯粒(裸片)通过先进的封装技术整合为特定功能的系统芯片,与传统的单芯片集成方式相比,多芯粒集成技术在芯片性能功耗优化、成本以及商业模式多方面具有优势和潜力。深度神经网络(DNN)通过分割训练数据集/模型的方式部署到多芯粒集成系统上运行。每个芯粒并行处理训练数据中的不同子集来训练模型的本地副本,各芯粒处理完成后汇总训练结果,对参数进行汇总,再广播给各个节点更新本地模型,然后进行下一轮迭代。

在上述过程中,各芯粒向同一个芯粒传输数据的过程称为归约,一个芯粒向其它所有芯粒传输数据的过程称为广播。在一个归约过程和一个广播过程共同组成一次allreduce。all reduce其实是一种通信过程,将不同芯粒中的数据归约之后再把结果分发给各个芯粒。

现有技术中,即使是对于计算密集型应用,如神经网络训练任务,all reduce也可能成为性能瓶颈。由于多芯粒集成系统中芯粒与芯粒之间的通信带宽受限,跨芯粒的网络通信相较于芯粒内部通信耗时更长,深度神经网络在参数汇总阶段,如果网络传输速率慢,更易造成网络拥塞,增大网络延迟,从而导致整体性能下降,因此网络的通信性能成为了训练时的性能瓶颈。

目前针对all reduce的过程优化方法主要分为软件方法与硬件方法两种。软件算法有如文献J.PjeSivac-Grbovic.T.Angskun.G.Bosilca.G.E.Fagg.E.Gabriel.andJ.J.Dongarra,″Performance analysis of mpi collective operations;'ClusterComputing.vol.10.no.2.pp.127-143.2007和文献R.Rabenseifner."Optimization ofcollective reduction operations."In International Conference on ComputationalScience.Springer.2004.pp.I-9等,但这些算法增加了系统中的通讯量,导致了高延迟。硬件方法主要针对多台计算机组成的大规模并行系统,通过在交换机中集成运算单元以实现数据传输前先汇总数据以减少数据的传输量,但是此种设计针对的网络流量粒度较大,对运算单元功能要求复杂,因此并不能直接移植到芯片面积受限的多芯粒集成系统中。

发明内容

本发明的目的是为了解决现有技术中的上述缺陷,提供一种网算一体的芯粒间路由器及数据包聚合方法。

本发明的第一个目的可以通过采取如下技术方案达到:

一种网算一体的芯粒间路由器,所述路由器包括N个输入缓存、1个仲裁器、N个解析器、1个网内运算单元、N+1个路由计算单元、1个交叉开关和N个输出缓存,其中,

所述输入缓存连接芯粒或另一个芯粒间路由器的输出缓存,接收另一个芯粒间路由器的输出缓存传出的数据包或芯粒传出的数据包,并将数据包缓存,等待仲裁器仲裁;其中,数据包包括源地址、目标地址、网算标志位和数据部分;

所述仲裁器读取输入缓存中数据包的内容,对输入缓存中的数据包进行仲裁,决定哪个输入缓存中的数据包传输给解析器进行解析;

所述解析器接收输入缓存传输的数据包,并将数据包传输给路由计算单元或网内运算单元,解析器根据数据包的网算标志位判断该数据包是否需要进行网内运算,如果数据包的网算标志位的值等于0,则表明数据包不需要进行网内运算,解析器将数据包传输给路由计算单元;如果数据包的网算标志位的值不为0,则表明数据包需要进行网内运算,则解析器将本数据包传输给网内运算单元;

所述网内运算单元接收解析器传输的数据包,经过网内运算后将数据包传输给路由计算单元;

所述路由计算单元从解析器或网内运算单元接收数据包,并将数据包和路由运算结果传输给交叉开关,路由计算单元根据数据包中的目的地址,使用路由算法计算数据包对应的输出端口地址;对于由解析器传入的数据包,路由计算单元采用XY路由算法,即先对数据包按列转发,再对数据包按行转发;对于网内运算单元传入的数据包,路由计算单元采用归约树路由算法,其中,路由运算结果作为控制交叉开关状态的电信号,指示交叉开关应该将传入的数据包传输给哪一个输出缓存;

所述交叉开关从路由计算单元接收数据包和路由运算结果,交叉开关包括N个多路复用器,每一个多路复用器与一个输出缓存相连,根据路由运算结果,交叉开关通过多路复用器选择一个路由计算单元传出的数据包并将该数据包传输给对应的输出缓存;

所述输出缓存接收交叉开关传输的数据包,根据先来先服务原则向另一个芯粒间路由器的输入缓存或与本芯粒间路由器相连的芯粒传输数据包。

上述公开的芯粒间路由器首次增加解析器和网内运算单元,使芯粒间路由器能够对正在转发的数据包进行聚合操作。并且定义新的数据包格式,以配合解析器和网内运算单元工作。为了使得改进后的路由器能够更好的发挥聚合功能,还提出配套的归约树路由算法,使得更多的数据包能够在同一个路由器中相遇,尽可能多的执行聚合操作。

进一步地,所述数据包中源地址指示该数据包由网络中哪一颗芯粒产生,目标地址指示该数据包由网络中哪一颗芯粒接收,网算标志位用于区分该数据包是否需要进行网内运算,数据部分是该数据包要传输的具体通信内容。源地址帮助芯粒识别数据包的来源,保证芯粒对收到的数据包能够根据来源不同正确处理;目标地址用于在数据包转发阶段作为路由算法的输入;网算标志位用于为数据包分类,将不需要网内运算的数据包的网算标志位设为0,防止数据包被传输至网内运算单元,加快数据包的转发速度,同时,网算标志位将需要网内运算的数据包分为多组,网算标志位作为分组标识,只有同组的数据包会进行聚合,使得芯粒间路由器能够同时处理多组需要进行聚合的数据包;数据部分是芯粒要传输的具体数据。

进一步地,所述网内运算单元包括多路复用器、网算缓存、网算控制器、比较器和逻辑计算单元;网内运算单元的工作过程称为网内运算,具体过程如下:比较器对比解析器传入的数据包的网算标志位与网算缓存中数据包的网算标志位,如果两者不等,则网算控制器将网算缓存中的数据包传输给路由计算单元;如果两者相等,则网算控制器将解析器传入的数据包的数据部分与网算缓存中的数据包的数据部分传输至逻辑计算单元进行加法运算,运算结果传输至网算缓存,覆盖原有的数据部分,同时,解析器传入的数据包的源地址、目的地址和网算标志位传输至网算缓存。多路复用器将每个解析器连接到网内运算单元;网算缓存中可以暂存1个数据包,满足数据包聚合需要同时对两个数据包内容进行操作的要求;比较器对比数据包的网算标志位,将比较结果传输给网算控制器,网算控制器接收比较器的比较结果,控制网内缓存的输入和输出,比较器和网算控制器共同保证网内运算单元对同组的数据包进行聚合,对不同组的数据包能够先将缓存中的数据包发出,再将多路复用器传入的数据包存入网内缓存;逻辑计算单元对数据包内容进行浮点加法运算,得出数据包聚合结果的数据部分。

进一步地,所述归约树路由算法工作在mesh网络中,使用归约树路由算法使得需要进行网内运算的数据包的路由路径规划为树状,且使生成的树尽可能均衡,使得需要进行网内运算的数据包在转发过程中能够在相近的时间内经过同一个芯粒间路由器,芯粒间路由器的网内运算单元能够在此过程完成尽量多的计算任务,算法过程如下:

T1、设mesh网络的大小为n×n,共创建n

T2、根据芯粒在mesh网络中位置为Node集合的成员赋值,子节点数量设为0,芯粒的前驱节点设为空;

T3、使用n

T4、对于一个Node集合,邻接矩阵M的第(i×n+y)行记录了邻接信息,因此使用n

T5、更新图G,过程如下:

T5.1、在图G中计算与源点直接连通的节点到源点的最多路径长度为1,其余各点到源点的最短路径长度为无穷大;

T5.2、选出还未被访问的节点中到达源点最近的一个,记为u;

T5.3、记u已被访问;

T5.4、选择一个与u节点连通的节点,记为v;

T5.5、如果v未被访问且以u为中介点使源点到节点v的路径更短,则记节点v到源点的路径长度为节点u到源点的路径长度加一,并在v的候选前驱节点中加入u;

T5.6、对从u出发能到达的所有顶点重复步骤T5.4和步骤T5.5;

T5.7、在u的候选前驱节点中选择子节点数最大的节点,记为w;

T5.8、记录u的前驱为w,w的子节点数加1;

T5.9、重复步骤T5.2至步骤T5.7,直至所有节点都被访问;

T6、建立大小为n

T7、将集合R作为路由算法的结果,存入芯粒间路由器的路由计算单元中。

进一步地,所述仲裁器使用循环仲裁,轮询每个输入缓存中的数据包并将其作为解析器的输入。循环仲裁保证仲裁器对于每个输入缓存中的数据包能够平等地处理,避免个别数据包在输入缓存中存储时间过长。

进一步地,所述输入缓存使用多个固定长度的队列存储数据包。使用队列存储数据包保证了芯粒间路由器在接收到多个数据包时能够逐个进行处理。固定队列长度降低了电路的复杂度,减小了芯粒间路由器的面积。

本发明的第二个目的可以通过采取如下技术方案达到:

一种基于网算一体的芯粒间路由器的数据包聚合方法,所述数据包聚合方法包括以下步骤:

S1、当数据包进入网算一体的芯粒间路由器,首先暂存在输入缓存中,由仲裁器进行仲裁;

S2、仲裁器读取输入缓存中数据包的内容,对输入缓存中的数据包进行循环仲裁,轮询每个输入缓存中的数据包并决定哪个输入缓存中的数据包传输给解析器进行解析;

S3、经过仲裁器后,数据包进入解析器,在解析器中,路由器将根据数据包的网算标志位判断该数据包是否需要进行网内运算,如果数据包的网算标志位的值等于0,则表明本数据包不需要进行网内运算,跳过步骤S4和S5,执行步骤S6,如果数据包的网算标志位的值不为0,则表明本数据包需要进行网内运算,执行步骤S4;

S4、数据包进入网内运算单元后记为数据包A,如果网算控制器检查网算缓存中没有缓存数据包,则数据包A存入网算缓存,工作结束;如果网内运算单元的网算缓存中存有的数据包,记为数据包B,则首先将数据包A的数据部分传输给逻辑计算单元,数据包A和数据包B的网算标志位进入比较器进行比较,比较器将结果传输至网算控制器中,如果两个数据包的网算标志位不相等,则网算控制器控制网算缓存将数据包B输出,将网算缓存清空,同时将网算缓存中数据部分置0,输入逻辑计算单元,将数据包A的源地址、目标地址、网算标志位存入网算缓存;如果两个数据包的网算标志位相等,则网算控制器控制网算缓存将数据包B的数据部分输入逻辑计算单元,将数据包A的源地址、目标地址、网算标志位存入网算缓存并覆盖数据包B的源地址、目标地址、网算标志位;

S5、逻辑计算单元对数据包A的数据部分和数据包B的数据部分进行浮点加法运算,运算结果存入网算缓存并覆盖网算缓存中原本的数据部分,最后网算控制器将数据包传输给路由计算单元;

S6、路由计算单元根据数据包中的目的地址,使用路由算法计算数据包,对应的输出端口,对于由解析器传入的数据包,路由计算单元采用XY路由算法,对于网内运算单元传入的数据包,路由计算单元采用归约树路由算法;

S7、数据包进入交叉开关,交叉开关通过多路复用器选择一个路由计算单元传出的数据包并将该数据包传输给对应的输出缓存;

S8、输出缓存根据先来先服务原则向路由器外传输数据包。

进一步地,所述网内运算单元中网算控制器记录网算缓存中是否存有数据包,以及数据包在网算缓存中存在的时长,如果数据包在网算缓存中存在时间超过预设阈值周期,网算控制器控制网算缓存将该数据包传输给路由计算单元。设置预设阈值周期可以避免以下两个问题:一、数据包在缓存中缓存过长时间等待聚合,影响数据包转发效率;二、当网络中只剩下一个需要进行网内运算的数据包,且该数据包还没有到达目标地址时,该数据包将被存在网算缓存中永远无法经过转发到达目标地址。

本发明相对于现有技术具有如下的优点及效果:

1.本发明减少了同一时间内,多芯粒集成系统的芯粒间网络中的数据包数量,减小了芯粒间网络的通信负载,提高了多芯粒集成系统的通信效率。

2.本发明将数据包的聚合任务转移到数据包传输过程中完成,减轻了芯粒的工作负载,减小了多芯粒集成系统完成神经网络训练任务的耗时。

3.本发明提出的微架构设计占用面积小,符合芯粒间路由器对芯片面积的限制。

4.本发明具有良好的泛用性,即使多芯粒集成系统中同时存在需要进行网内运算的数据包和不需要进行网内运算的数据包,芯粒间路由器都能够正确完成数据包转发和数据包聚合任务。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明提出的网算一体的芯粒间路由器微架构示意图;

图2是本发明中数据包结构以及数据包在芯粒间路由器内的数据通路示意图;

图3是本发明中网内运算单元结构图;

图4是本发明中网内运算单元工作流程图;

图5是本发明中16个芯粒组成的多芯粒集成系统的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

本实施例提出了一种网算一体的芯粒间路由器,在16个芯粒组成的多芯粒集成系统中。其中,多芯粒集成系统的芯粒间网络拓扑采用mesh网络。多芯粒集成系统的总体架构图如图5所示。

网算一体的芯粒间路由器微架构层设计如图1所示,包括部件与部件的连接关系。网算一体的芯粒间路由器主要功能是在多芯粒集成系统的芯粒间网络中完成数据包的转发和网内运算任务。芯粒间网络的数据包包括源地址、目标地址、网算标志位和数据部分,源地址指示该数据包由网络中哪一颗芯粒产生,目标地址指示该数据包由网络中哪一颗芯粒接收,网算标志位用于区分该数据包是否需要进行网内运算,数据部分是该数据包要传输的具体通信内容。转发是指根据数据包的目的地址,将数据包从一个芯粒间路由器传输至下一个芯粒间路由器。网内运算是指在数据包的转发过程中,将多个网算标志位相同的数据包的数据部分相加得到运算结果,并产生一个包括了运算结果的新数据包进行转发,丢弃参与运算的其它数据包。在图5所示的芯粒间网络中,共有4个芯粒间路由器最多与其它4个芯粒间路由器相连接,这4个芯粒间路由器的部件包括5个输入缓存、5个解析器、1个网内运算单元、6个路由计算单元、1个仲裁器、1个交叉开关、5个输出缓存;共有8个芯粒间路由器最多与其它3个芯粒间路由器相连接,这8个芯粒间路由器的部件包括4个输入缓存、4个解析器、1个网内运算单元、5个路由计算单元、1个仲裁器、1个交叉开关、4个输出缓存;共有4个芯粒间路由器最多与其它2个芯粒间路由器相连接,这4个芯粒间路由器的部件包括3个输入缓存、3个解析器、1个网内运算单元、4个路由计算单元、1个仲裁器、1个交叉开关、3个输出缓存。各部件的具体作用如下:

一个输入缓存连接芯粒,其余输入缓存连接另一个芯粒间路由器的输出缓存,输入缓存接收另一个芯粒间路由器的输出缓存传出的数据包或芯粒传出的数据包,并使用长度为12字节的队列将数据包缓存,等待仲裁器仲裁;其中,数据包包括源地址、目标地址、网算标志位和数据部分。

仲裁器读取输入缓存中数据包的内容,对输入缓存中的数据包进行仲裁,决定哪个输入路由计算单元中的数据可以传输给交叉开关。仲裁器使用循环仲裁,轮询地选择每个输入缓存中的数据包,并将其作为解析器的输入。

解析器接收输入缓存传输的数据包,经过解析后将数据包传输给路由计算单元或网内运算单元。解析是指根据数据包的网算标志位判断该数据包是否需要进行网内运算,如果数据包的网算标志位的值等于0,则表明本数据包不需要进行网内运算,解析器将本数据包传输给路由计算单元;如果数据包的网算标志位的值不为0,则表明本数据包需要进行网内运算,则解析器将本数据包传输给网内运算单元。

网内运算单元包括多路复用器、网算缓存,网算控制器、比较器和逻辑计算单元,其中,网内运算过程如下:比较器对比解析器传入的数据包的网算标志位与网算缓存中数据包的网算标志位,如果两者不等,则网算控制器将网算缓存中的数据包传输给路由计算单元;如果两者相等,则网算控制器将解析器传入的数据包的数据部分与网算缓存中的数据包的数据部分传输至逻辑计算单元进行加法运算,运算结果传输至网算缓存,覆盖原有的数据部分,同时,解析器传入的数据包的源地址、目的地址和网算标志位传输至网算缓存。

路由计算单元从解析器或网内运算单元接收数据包,经过路由计算后将数据包和路由运算结果传输给交叉开关。所述路由计算是指根据数据包中的目的地址,使用路由算法计算数据包应该发往哪个输出端口。对于由解析器传入的数据包,路由计算单元采用XY路由算法,对于网内运算单元传入的数据包,路由计算单元采用归约树路由算法。路由运算结果是指控制交叉开关状态的电信号,指示交叉开关应该将传入的数据包传输给哪一个输出缓存。

交叉开关从路由运算单元接收数据包和路由运算结果,将数据包传输给输出缓存。该交叉开关包括N个多路复用器。每一个多路复用器与一个输出缓存相连,根据路由运算结果,交叉开关通过多路复用器选择1个路由计算单元传出的数据包并将其传输给对应的输出缓存。输出缓存接收交叉开关传输的数据包,根据先来先服务原则向另一个芯粒间路由器的输入缓存或与本芯粒间路由器相连的传输数据包。

根据硬件仿真结果,在45nm工艺下,本芯粒间路由器占用面积70902.3μm

现假设存在两个数据包,分别记为数据包E1和数据包E2,数据包E1由图5中第一行第一列的芯粒产生,需要发送给第二行第二列的芯粒,因此,源地址记为(1,1),目标地址记为(2,2),设网算标志位为103,数据部分为736.5;数据包E2由图5中第一行第三列的芯粒产生,需要发送给第二行第二列的芯粒,因此,源地址记为(1,3),目标地址记为(2,2),设网算标志位为103,数据部分为367.2。对于数据包E1和数据包E2,归约树路由算法工作过程如下:

F1、设mesh网络的大小为4×4,共创建16个Node集合用于表示网络中的芯粒,所述Node集合包括如下信息:芯粒在mesh网络中的x坐标和y坐标、子节点数量、前驱节点,其中x坐标取值记为x,y坐标取值记为y,定义Node集合的位置信息为该Node集合的x坐标和y坐标取值,记作(x,y);

F2、根据芯粒在mesh网络中位置为Node集合的成员赋值,子节点数量设为0,芯粒的前驱节点设为空;

F3、使用16×16大小的邻接矩阵M表示节点的连通关系,符号i和符号j表示大于等于1小于等于n之间的一个整数,对于矩阵的第(i×n+j)行,将第((i+1)×n+j)、第((i-1)×n+j)、第(i×n+j+1)、第(i×n+j-1)列赋值为1,表示连通,其余列赋值为0,表示不连通;

F4、对于一个Node集合,邻接矩阵M的第(i×n+y)行记录了邻接信息,因此使用n

F5、选择位置信息为(2,2)的Node集合作为源点,更新图G,过程如下:

F5.1、在图G中计算与源点直接连通的节点到源点的最多路径长度为1,其余各点到源点的最短路径长度为无穷大;

F5.2、选出还未被访问的节点中到达源点最近的一个,记为u;

F5.3、记u已被访问;

F5.4、选择一个与u节点连通的节点,记为v;

F5.5、如果v未被访问且以u为中介点使源点到节点v的路径更短,则记节点v到源点的路径长度为节点u到源点的路径长度加一,并在v的候选前驱节点中加入u;

F5.6、对从u出发能到达的所有顶点重复步骤T5.4和步骤T5.5;

F5.7、在u的候选前驱节点中选择子节点数最大的节点,记为w;

F5.8、记录u的前驱为w,w的子节点数加1;

F5.9、重复步骤F5.2至F5.7,直至所有节点都被访问;

F6、建立大小为16的集合R,针对图G,遍历图中每个节点,通过Node集合中的前驱成员v计算出每个节点的前驱节点坐标为(v→x×n,v→y),存入集合R中,其中,符号“v→x”表示从Node集合v中的x坐标,符号“v→y”表示从Node集合v中的y坐标;

F7、将集合R作为芯粒间网络的路由表,写入芯粒间网络的路由器中。

在本实施例中,经过步骤F1至步骤F7,得出在集合R中位于第一行第一列的芯粒间路由器的前驱节点为第一行第二列的芯粒间路由器;位于第一行第三列的芯粒间路由器的前驱节点为第一行第二列的芯粒间路由器;位于第一行第二列的芯粒间路由器的前驱节点为第二行第二列的芯粒间路由器。

数据包E1和数据包E2在转发过程中一定都会经过第一行第二列的芯粒间路由器,假设,数据包E1和数据包E2到达图5中第一行第二列的芯粒间路由器的时间间隔小于网算缓存中预设阈值周期,下面阐述数据包E1和数据包E2通过一个多芯粒聚合过程在图5中第一行第二列的芯粒间路由器中的聚合过程,包括以下步骤:

P1、数据包E1进入第一行第二列的芯粒间路由器,首先暂存在与第一行第一列的芯粒间路由器的输出缓存相连接的输入缓存中,等待仲裁器进行仲裁;

P2、数据包E2进入第一行第二列的芯粒间路由器,首先暂存在与第一行第三列的芯粒间路由器的输出缓存相连接的输入缓存中,等待仲裁器进行仲裁;

P3、仲裁器轮询每个输入缓存中的数据包,读取输入缓存中数据包E1的内容,发送控制信号将数据包E1由输入缓存传入解析器;

P4、数据包E1进入解析器,在解析器中,路由器将根据数据包E1的网算标志位数值103判断该数据包需要进行网内运算,将数据包E1传输给网内运算单元;

P5、数据包E1进入网内运算单元,网算控制器确定网算缓存为空,将数据包E1存入网算缓存;

P6、仲裁器读取输入缓存中数据包E2的内容,发送控制信号将数据包E2由输入缓存传入解析器;

P7、数据包E2进入解析器,在解析器中,路由器将根据数据包E2的网算标志位数值103判断该数据包需要进行网内运算,将数据包E2传输给网内运算单元;

P8、数据包E2进入网内运算单元,网算控制器检查网算缓存中存有的数据包E1,则首先将数据包E2的数据部分367.2传输给逻辑计算单元,数据包E2的网算标志位103和数据包E1的网算标志位103进入比较器进行比较,比较器将结果传输至网算控制器中,两个数据包的网算标志位相等,网算控制器控制网算缓存将数据包E1的数据部分736.5输入逻辑计算单元,将数据包E2的源地址、目标地址、网算标志位存入网算缓存并覆盖数据包E1的源地址、目标地址、网算标志位;

P9、逻辑计算单元对736.5和367.2进行浮点加法运算,运算结果1103.7存入网算缓存并覆盖网算缓存中原本的数据部分。网算控制器将网算缓存中的数据包传输给路由计算单元,记此数据包为E3,数据包E3的内容为源地址(1,3)、目标地址(2,2)、网算标志位103,数据部分1103.7;

P10、路由计算单元根据数据包E3中的目的地址,使用归约树路由算法计算出数据包对应的输出缓存是与图5中第二行第二列的芯粒间路由器连接的输出缓存。

P11、数据包E3进入交叉开关,交叉开关通过多路复用器选择数据包E3并将其传输给与图5中第二行第二列的芯粒间路由器连接的输出缓存。

P12、输出缓存根据先来先服务原则向路由器外传输数据包E3。

至此,数据包E1与数据包E2在第一行第二列的芯粒间路由器中的聚合过程结束,经过此次聚合过程,数据包E1和数据包E2聚合为数据包E3,多芯粒集成系统中芯粒间网络的数据包量减少了1。

实施例2

本实施例基于上述实施例1公开的网算一体的芯粒间路由器,在相同的系统总体架构下,提出基于网算一体的芯粒间路由器的数据包聚合方法在复杂情况下的工作过程。

现假设存在两个数据包,分别记为数据包H1和数据包H2,数据包H1由图5中第一行第一列的芯粒产生,需要发送给第三行第二列的芯粒,因此,源地址记为(1,1),目标地址记为(3,2),设网算标志位为101,数据部分为61.8;数据包H2由图5中第一行第三列的芯粒产生,需要发送给第三行第二列的芯粒,因此,源地址记为(1,3),目标地址记为(3,2),设网算标志位为101,数据部分为37.2。根据归约树路由算法可算得,位于第一行第一列的芯粒间路由器的前驱节点为第一行第二列的芯粒间路由器;位于第一行第三列的芯粒间路由器的前驱节点为第一行第二列的芯粒间路由器;位于第一行第二列的芯粒间路由器的前驱节点为第二行第二列的芯粒间路由器;位于第二行第二列的芯粒间路由器的前驱节点为第三行第二列的芯粒间路由器。因此,数据包H1和数据包H2在转发过程中一定都会经过第一行第二列的芯粒间路由器和第二行第二列的芯粒间路由器。

假设数据包H1和数据包H2到达第一行第二列的芯粒间路由器的时间间隔小于网算缓存中预设阈值周期,下面阐述数据包H1和数据包H2通过一个多芯粒聚合过程在图5中第一行第二列的芯粒间路由器中的聚合过程,包括以下步骤:

W1、数据包H1进入第一行第二列的芯粒间路由器,首先暂存在与第一行第一列的芯粒间路由器的输出缓存相连接的输入缓存中,等待仲裁器进行仲裁;

W2、数据包H2进入第一行第二列的芯粒间路由器,首先暂存在与第一行第三列的芯粒间路由器的输出缓存相连接的输入缓存中,等待仲裁器进行仲裁;

W3、仲裁器轮询每个输入缓存中的数据包,读取输入缓存中数据包H1的内容,发送控制信号将数据包H1由输入缓存传入解析器;

W4、数据包H1进入解析器,在解析器中,路由器将根据数据包H1的网算标志位数值101判断该数据包需要进行网内运算,将数据包H1传输给网内运算单元;

W5、数据包H1进入网内运算单元,网算控制器确定网算缓存为空,将数据包H1存入网算缓存;

W6、仲裁器读取输入缓存中数据包H2的内容,发送控制信号将数据包H2由输入缓存传入解析器;

W7、数据包H2进入解析器,在解析器中,路由器将根据数据包H2的网算标志位数值101判断该数据包需要进行网内运算,将数据包H2传输给网内运算单元;

W8、数据包H2进入网内运算单元,网算控制器检查网算缓存中存有的数据包H1,则首先将数据包H2的数据部分37.2传输给逻辑计算单元,数据包H2的网算标志位101和数据包H1的网算标志位101进入比较器进行比较,比较器将结果传输至网算控制器中,两个数据包的网算标志位相等,网算控制器控制网算缓存将数据包H1的数据部分61.8输入逻辑计算单元,将数据包H2的源地址、目标地址、网算标志位存入网算缓存并覆盖数据包H1的源地址、目标地址、网算标志位;

W9、逻辑计算单元对61.8和37.2进行浮点加法运算,运算结果99.0存入网算缓存并覆盖网算缓存中原本的数据部分。网算控制器将网算缓存中的数据包传输给路由计算单元,记此数据包为H3,数据包H3的内容为源地址(1,3)、目标地址(3,2)、网算标志位101,数据部分99.0;

W10、路由计算单元根据数据包H3中的目的地址,使用归约树路由算法计算出数据包对应的输出缓存是与图5中第二行第二列的芯粒间路由器连接的输出缓存。

W11、数据包H3进入交叉开关,交叉开关通过多路复用器选择数据包H3并将其传输给与图5中第二行第二列的芯粒间路由器连接的输出缓存。

W12、输出缓存根据先来先服务原则向路由器外传输数据包H3。

数据包H3在图5中第二行第二列的芯粒间路由器中的转发过程如下:

Z1、数据包H3进入第一行第二列的芯粒间路由器,首先暂存在与第一行第三列的芯粒间路由器的输出缓存相连接的输入缓存中,等待仲裁器进行仲裁;

Z2、仲裁器轮询每个输入缓存中的数据包,读取输入缓存中数据包H3的内容,发送控制信号将数据包H3由输入缓存传入解析器;

Z3、数据包H3进入解析器,在解析器中,路由器将根据数据包H3的网算标志位数值101判断该数据包需要进行网内运算,将数据包H3传输给网内运算单元;

Z4、数据包H3进入网内运算单元,网算控制器确定网算缓存为空,将数据包H3存入网算缓存;

Z5、数据包H3已经在网算缓存中存在超过预设阈值周期,网算控制器控制网算缓存将数据包H3传输给路由计算单元。

Z6、路由计算单元根据数据包H3中的目的地址,使用归约树路由算法计算出数据包对应的输出缓存是与图5中第三行第二列的芯粒间路由器连接的输出缓存。

Z7、数据包H3进入交叉开关,交叉开关通过多路复用器选择数据包H3,将该数据包传输给与图5中第三行第二列的芯粒间路由器连接的输出缓存。

Z8、输出缓存根据先来先服务原则向路由器外传输数据包H3。

在本实施例中,数据包H1和数据包H2在位于第一行第二列的芯粒间路由器内完成数据聚合;数据包H3在位于第二行第二列的芯粒间路由器在网算缓存中存在周期超过预设阈值周期,网算控制器将数据包转发给路由计算单元。上述过程体现出了设置数据包已经在网算缓存中存在的阈值周期希望避免的情况:如果数据包在网算缓存中可以无期限缓存,那么当网络中只剩下一个需要进行网内运算的数据包,且该数据包还没有到达目标地址时,该数据包将被存在网算缓存中永远无法经过转发到达目标地址。

实施例3

本实施例基于实施例1公开的网算一体的芯粒间路由器,在相同的系统总体架构下,提出基于网算一体的芯粒间路由器的数据包聚合方法在复杂情况下的工作过程。

现假设存在三个数据包,分别记为数据包K1、数据包K2和数据包K3,数据包K1由图5中第一行第一列的芯粒产生,需要发送给第二行第二列的芯粒,因此,源地址记为(1,1),目标地址记为(2,2),网算标志位为102,数据部分为15.0;数据包K2由图5中第一行第四列的芯粒产生,需要发送给第二行第二列的芯粒,因此,源地址记为(1,4),目标地址记为(2,2),网算标志位为102,数据部分为22.0;数据包K3由图5中第一行第三列的芯粒产生,需要发送给第三行第二列的芯粒,因此,源地址记为(1,3),目标地址记为(3,2),网算标志为位0,数据部分为22.0。根据归约树路由算法可算得,位于第一行第一列的芯粒间路由器的前驱节点为第一行第二列的芯粒间路由器;位于第一行第四列的芯粒间路由器的前驱节点为第一行第三列的芯粒间路由器;位于第一行第三列的芯粒间路由器的前驱节点为第一行第二列的芯粒间路由器;位于第一行第二列的芯粒间路由器的前驱节点为第二行第二列的芯粒间路由器。根据XY路由算法可得,数据包K3的转发过程中将依次经过位于第一行第三列的芯粒间路由器、位于第一行第二列的芯粒间路由器,位于第二行第二列的芯粒间路由器,位于第三行第二列的芯粒间路由器。因此,数据包K1、数据包K2和数据包K3在转发过程中一定都会经过第一行第二列的芯粒间路由器。现在假设三个数据包到达第一行第二列芯粒间路由器的顺序为:数据包K1、数据包K3、数据包K2,且数据包K1到达的时间和数据包K2到达的时间间隔小于网算缓存中预设阈值周期,下面阐述三个数据包在第一行第二列芯粒间路由器的转发过程:

L1、数据包K1进入第一行第二列的芯粒间路由器,首先暂存在与第一行第一列的芯粒间路由器的输出缓存相连接的输入缓存中,等待仲裁器进行仲裁;

L2、数据包K3进入第一行第二列的芯粒间路由器,首先暂存在与第一行第三列的芯粒间路由器的输出缓存相连接的输入缓存中,等待仲裁器进行仲裁;

L3、仲裁器轮询每个输入缓存中的数据包,读取输入缓存中数据包K1的内容,发送控制信号将数据包K1由输入缓存传入解析器;

L4、数据包K1进入解析器,在解析器中,路由器将根据数据包K1的网算标志位数值102判断该数据包需要进行网内运算,将数据包K1传输给网内运算单元;

L5、数据包K1进入网内运算单元,网算控制器确定网算缓存为空,将数据包K1存入网算缓存;

L6、仲裁器轮询每个输入缓存中的数据包,读取输入缓存中数据包K3的内容,发送控制信号将数据包K3由输入缓存传入解析器;

L7、数据包K3进入解析器,在解析器中,路由器将根据数据包K3的网算标志位数值0判断该数据包不需要进行网内运算,将数据包K3传输给路由计算单元;

L8、路由计算单元根据数据包K3中的目的地址,使用XY路由算法计算出数据包对应的输出缓存是与图5中第二行第二列的芯粒间路由器连接的输出缓存。

L9、数据包K3进入交叉开关,交叉开关通过多路复用器选择数据包K3,将该数据包传输给与图5中第二行第二列的芯粒间路由器连接的输出缓存。

L10、与图5中第二行第二列的芯粒间路由器连接的输出缓存根据先来先服务原则向路由器外传输数据包K3。

L11、数据包K2进入第一行第二列的芯粒间路由器,首先暂存在与第一行第三列的芯粒间路由器的输出缓存相连接的输入缓存中,等待仲裁器进行仲裁。

L12、仲裁器读取输入缓存中数据包K2的内容,发送控制信号将数据包K2由输入缓存传入解析器;

L13、数据包K2进入解析器,在解析器中,路由器将根据数据包K2的网算标志位数值102判断该数据包需要进行网内运算,将数据包K2传输给网内运算单元;

L14、数据包K2进入网内运算单元,网算控制器检查网算缓存中存有的数据包K1,则首先将数据包K2的数据部分22.0传输给逻辑计算单元,数据包K2的网算标志位102和数据包K1的网算标志位102进入比较器进行比较,比较器将结果传输至网算控制器中,两个数据包的网算标志位相等,网算控制器控制网算缓存将数据包K1的数据部分15.0输入逻辑计算单元,将数据包K2的源地址、目标地址、网算标志位存入网算缓存并覆盖数据包K1的源地址、目标地址、网算标志位;

L15、逻辑计算单元对15.0和22.02进行浮点加法运算,运算结果37.0存入网算缓存并覆盖网算缓存中原本的数据部分。网算控制器将网算缓存中的数据包传输给路由计算单元,记此数据包为K4,数据包K4的内容为源地址(1,4)、目标地址(2,2)、网算标志位102,数据部分37.0;

L16、路由计算单元根据数据包K4中的目的地址,使用归约树路由算法计算出数据包对应的输出缓存是与第二行第二列的芯粒间路由器连接的输出缓存。

L17、数据包K4进入交叉开关,交叉开关通过多路复用器选择数据包K4并将其传输给与第二行第二列的芯粒间路由器连接的输出缓存。

L18、与第二行第二列的芯粒间路由器连接的输出缓存根据先来先服务原则向路由器外传输数据包K4。

在本实施例中,K1和K2为需要进行网内运算的数据包,K3为不需要进行网内运算的数据包,芯粒间路由器对这三个数据包的转发过程体现了即使系统中同时存在需要进行网内运算的数据包和不需要进行网内运算的数据包,芯粒间路由器都能够正确完成转发和聚合任务。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

技术分类

06120115637478