分流器路由跳转方法、装置、介质、设备及其应用的多核系统

文档序号:1956714 发布日期:2021-12-10 浏览:4次 >En<

阅读说明:本技术 分流器路由跳转方法、装置、介质、设备及其应用的多核系统 (Diverter routing skip method, device, medium, equipment and multi-core system applying same ) 是由 陈克林 袁抗 吕正祥 杨力邝 陈旭 梁龙飞 于 2021-08-31 设计创作,主要内容包括:本申请提供分流器路由跳转方法、装置、介质、设备及其应用的多核系统,包括接收待转发数据包;对分流器的全部输出端口进行故障监测,并从无故障的输出端口中筛选出最近未使用的若干输出端口;从筛选出的所述若干输出端口中选择距离所述待转发数据包的目标地址最近的输出端口,以用于转发所述待转发数据包至所述目标地址。本发明实现了高容错性的分流器路由算法;本发明的分流器路由算法不仅保证了带宽在输出端口上近似均匀分配,同时数据包到目标地址间的距离较短。(The application provides a method, a device, a medium, equipment for route skipping of a flow divider and a multi-core system applying the same, and the method comprises the steps of receiving a data packet to be forwarded; fault monitoring is carried out on all output ports of the splitter, and a plurality of output ports which are not used recently are screened out from the output ports without faults; and selecting the output port closest to the target address of the data packet to be forwarded from the screened output ports so as to be used for forwarding the data packet to be forwarded to the target address. The invention realizes the high fault-tolerant shunt routing algorithm; the splitter routing algorithm of the invention not only ensures that the bandwidth is approximately and uniformly distributed on the output port, but also has shorter distance between the data packet and the target address.)

分流器路由跳转方法、装置、介质、设备及其应用的多核系统

技术领域

本申请涉及路由算法技术领域,特别是涉及分流器路由跳转方法、装置、介质、设备及其应用的多核系统。

背景技术

深度神经网络(DNN)研究近年来取得了飞速发展并得到初步应用。为了提升分类精度,深度神经网络越来越复杂。超过1000层的神经网络已经出现。当单片芯片的性能不够时,就需要多片芯片并行运算共同完成一项任务。

网格(mesh)阵列是一种典型的芯片内核间互联方式,多核组成一个矩形,每个核可以和东南西北四个相邻核直接通信,经过阵列中核的转发,每个核可以和阵列中任意一个其他核通信。芯片内网格往往接一个汇聚器,经过汇聚器后数据发到芯片外。芯片输入的数据往往接一个分流器,经过分流器后数据发给片内的网格。分流器接收到芯片输入数据包后,需要经过路由算法,将数据包转发到分流器的不同输出端口。

典型的分流器路由算法是轮转算法:第一个输出端口转发数据包,第二个输出端口转发数据包,…最后一个输出端口转发数据包,第一个输出端口接着转发数据包等等。但是,一般的分流器算法没有考虑每个输出端口是否可用,没有考虑到数据包在网格上的延时。

因此,本领域亟需一种能够兼顾容错性、带宽平衡和低延迟的分流器路由算法。

发明内容

鉴于以上所述现有技术的缺点,本申请的目的在于提供分流器路由跳转方法、装置、介质、设备及其应用的多核系统,用于解决现有技术中的分流器路由算法无法兼顾容错性、带宽平衡和低延迟的技术问题。

为实现上述目的及其他相关目的,本申请的第一方面提供一种多核系统中分流器路由跳转方法,包括:接收待转发数据包;对分流器的全部输出端口进行故障监测,并从无故障的输出端口中筛选出最近未使用的若干输出端口;从筛选出的所述若干输出端口中选择距离所述待转发数据包的目标地址最近的输出端口,以用于转发所述待转发数据包至所述目标地址。

于本申请的第一方面的一些实施例中,所述最近未使用的若干输出端口包括最近一个数据包传送过程中未使用过的输出端口,或者最近若干个数据包传送过程中未使用过的输出端口。

于本申请的第一方面的一些实施例中,使用长度为N的out_hist寄存器组记录N个输出端口路由结果,使用cur_out_hist_index指针指向当前待更新的out_hist寄存器,并执行如下步骤:将Neff个无故障端口按一定顺序赋值给对应数量的out_hist寄存器,并按照预设初始值赋值cur_out_hist_index指针;最近M个转发数据包所使用的输出端口信息已分别存储至寄存器out_hist((cur_out_hist_index-1)%Neff)~out_hist((cur_out_hist_index-M+1)%Neff)中;从N个输出端口中剔除这该M个寄存器中所存储的输出端口,并剔除故障端口,以得到(Neff-M)个输出端口;将所有(Neff-M)个输出端口与所述待转发数据包的目标地址做距离计算,且距离最近的输出端口j被选中来转发数据包;且所述cur_out_hist_index指针指向的寄存器被赋值j,所述cur_out_hist_index指针更新为(cur_out_hist_index+1)%Neff);其中,%运算是指取余运算。

为实现上述目的及其他相关目的,本申请的第二方面提供一种多核系统中分流器路由跳转装置,包括:数据接收模块,用于接收待转发数据包;端口监测模块,用于对分流器的全部输出端口进行故障监测;端口筛选模块,用于从无故障的输出端口中筛选出最近未使用的若干输出端口;端口选择模块,用于从筛选出的所述若干输出端口中选择距离所述待转发数据包的目标地址最近的输出端口,以用于转发所述待转发数据包至所述目标地址。

为实现上述目的及其他相关目的,本申请的第三方面提供一种多核系统,包括:网格阵列,包括若干行和若干列芯片内核,且各芯片内核与相邻芯片内核通信连接;分流器,连接所述网格阵列;其中,所述分流器包括多个输出端口,其从芯片接收待转发数据包后,对其全部输出端口进行故障监测,并从无故障的输出端口中筛选出最近未使用的若干输出端口;从筛选出的所述若干输出端口中选择距离所述待转发数据包的目标地址最近的输出端口,以用于转发所述待转发数据包至所述目标地址。

为实现上述目的及其他相关目的,本申请的第三方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述多核系统中分流器路由跳转方法。

为实现上述目的及其他相关目的,本申请的第四方面提供一种控制设备,包括:处理器及存储器;所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行所述多核系统中分流器路由跳转方法。

如上所述,本申请的分流器路由跳转方法、装置、介质、设备及其应用的多核系统,具有以下有益效果:(1)本发明实现了高容错性的分流器路由算法。(2)本发明的分流器路由算法不仅保证了带宽在输出端口上近似均匀分配,同时数据包到目标地址间的距离较短。

附图说明

图1显示为现有技术中一种分流器的结构示意图。

图2显示为本申请一实施例中多核系统中分流器路由算法的流程示意图。

图3显示为本申请一实施例中多核系统中分流器路由装置的结构示意图

图4显示为本申请一实施例中控制设备的结构示意图。

具体实施方式

以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,在下述描述中,参考附图,附图描述了本申请的若干实施例。应当理解,还可使用其他实施例,并且可以在不背离本申请的精神和范围的情况下进行机械组成、结构、电气以及操作上的改变。下面的详细描述不应该被认为是限制性的,并且本申请的实施例的范围仅由公布的专利的权利要求书所限定。这里使用的术语仅是为了描述特定实施例,而并非旨在限制本申请。空间相关的术语,例如“上”、“下”、“左”、“右”、“下面”、“下方”、“下部”、“上方”、“上部”等,可在文中使用以便于说明图中所示的一个元件或特征与另一元件或特征的关系。

在本申请中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”、“固持”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。

再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包含”、“包括”表明存在所述的特征、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。应当进一步理解,此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。

为了使本发明的目的、技术方案及优点更加清楚明白,通过下述实施例并结合附图,对本发明实施例中的技术方案的进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定发明。

如图1所示,展示了现有技术中一种分流器的结构示意图。分流器接收到芯片发来的数据包后,利用路由算法将所述数据包转发到分流器的不同输出端口。目前常用的典型的分流器路由算法是轮转算法,算法原理是:首先由第一个输出端口转发数据包,然后第二个输出端口转发数据包,以此类推,直至最后一个输出端口转发数据包,至此完成一个轮转;在完成上一个轮转后紧接着开始下一个轮转,又由第一个输出端口转发数据包,如此循环往复。

举例来说,若芯片输入数据包的目标地址是核(1,3),若采用轮转算法且当前轮到的输出端口是out5端口,将数据包从out5端口传输至核(1,3)需6跳,传输路径例如可以是:核(5,5)—核(4,5)—核(3,5)—核(2,5)—核(1,5)—核(1,4)—核(1,3),或者核(5,5)—核(5,4)—核(5,3)—核(4,3)—核(3,3)—核(2,3)—核(1,3)等。应理解的是,从核(5,5)到核(1,3)的跳转路径有多条,并不局限于上述示例。

轮转算法虽然有带宽平衡的优势,即每个输出端口分担一定的流量而使流量均匀,避免网格拥塞,但这种路由算法并没有考虑每个输出端口是否可用,也没有考虑到数据包在网格上的延时。例如在上述示例中,实际上out5端口并不是距离目标地址核(1,3)最近的端口,只是因为轮转算法当前正好轮转至out5端口,从而导致跳转数多进而大大增加了延时。

有鉴于此,本发明提出了一种应用于多核系统中的高效分流算法,能够兼顾容错性、带宽平衡和低延迟,下文将对本发明所提供的分流算法做进一步的解释说明。

如图2所示,展示了本发明在一实施例中的多核系统中分流器路由算法的流程示意图。应理解,本实施例的分流器路由算法可应用于控制器,如ARM(Advanced RISCMachines)控制器、FPGA(Field Programmable Gate Array)控制器、SoC(System on Chip)控制器、DSP(Digital Signal Processing)控制器、或者MCU(Micorcontroller Unit)控制器等;也可应用于智能手机、平板电脑、台式电脑、笔记本电脑、智能手环、智能头盔等设备;还可应用于服务器,所述服务器可以根据功能、负载等多种因素布置在一个或多个实体服务器上,也可以由分布的或集中的服务器集群构成。

在本实施例中,所述多核系统中分流器路由算法主要包括步骤S21~S23,下文将对各个步骤的实施过程及原理做详细的解释与说明。

步骤S21:接收待转发数据包。举例来说,分流器需从与之相连的主控设备接收数据包并获悉该数据包的目标地址。

步骤S22:对分流器的全部输出端口进行故障监测,并从无故障的输出端口中筛选出最近未使用的若干输出端口。

在一些示例中,若监测到有输出端口是故障端口,主控设备在测试后将故障信息存储,供分流器在利用路由算法进行数据包转发时避免从故障端口转发。另外,故障端口的监测方式例如有,先向待监测的输出端口发送测试数据,若在预设时长内未收到该输出端口的反馈数据或者反馈的数据不准确,则可确定该输出端口出现故障。应理解的是,出于说明性目的而提供以上示例,并且以上示例不应被理解成是限制性的;事实上,现有技术中任何能够用于对端口进行故障监测的技术方案,都可应用于本发明中。

在一些示例中,所述从无故障的输出端口中筛选出最近未使用的若干输出端口,可以是在最近一个数据包传送过程中未使用过的输出端口,也可以是最近若干个数据包传送过程中都未使用过的输出端口。

步骤S23:从筛选出的所述若干输出端口中选择距离所述待转发数据包的目标地址最近的输出端口,以用于转发所述待转发数据包至所述目标地址。

举例来说,假定分流器有N个输出端口,主控设备在对这N个输出端口进行故障监测后发现有K个输出端口有故障(K<N),那么有效的可用输出端口数为:Neff=N-K。另外,确定在最近的数据包转发过程中使用过M个输出端口,将这些使用过的输出端口剔除掉,因此实际上有效且未使用过的输出端口数为:Neff-M。从上述有效且未使用过的(Neff-M)个端口中挑选距离目标地址最短的端口作为数据包转发端口。

在一些示例中,所述多核系统中分流器路由算法的实现过程如下:使用长度为N的out_hist寄存器组记录N个输出端口路由结果。使用cur_out_hist_index指针指向当前待更新的out_hist寄存器,随后执行如下两个步骤:

步骤1、对out_hist寄存器和cur_out_hist_index指针进行初始化。具体来说,所有无故障端口按一定顺序赋值给对应数量的out_hist寄存器,并按照预设初始值赋值cur_out_hist_index指针。举例来说,所有无故障端口可被升序赋值给前Neff个out_hist寄存器,且cur_out_hist_index指针初始化为0。

步骤2、利用路由算法进行数据包转发。

out_hist((cur_out_hist_index-1)%Neff),out_hist((cur_out_hist_index-2)%Neff),…out_hist((cur_out_hist_index-M+1)%Neff)等寄存器存储了最近M个转发包使用的输出端口。从N个输出端口中剔除这M个寄存器中保存的端口,同时剔除有故障的端口得到备选端口列表,该列表中有(Neff-M)个端口。这些端口与数据包中的目标地址做距离运算,距离最短的端口j被选中作为本次输出端口。同时cur_out_hist_index指向的out_hist寄存器被赋值j,cur_out_hist_index更新为(cur_out_hist_index+1)%Neff)。需说明的是,上述%是指取余运算或取模运算。

为便于理解,现结合图1,并假定N=6,K=1,M=3,out2端口为故障端口。首先,对out_hist寄存器和cur_out_hist_index指针进行初始化,out_hist(0…4)=[0,1,3,4,5],cur_out_hist_index=0;其次,利用路由算法进行数据包转发。

第1个数据包到来,假定其目标地址为(dest_y=2,dest_x=4)。out_hist(2..4)保存了最近M个使用过的端口,因此输出端口3、4、5不是备选端口,剩余的输出端口中剔除故障端口2,所以只有输出端口0、1是可用的备选端口。又由于输出端口1相比于输出端口0,与目标地址(dest_y=2,dest_x=4)的距离更近,故本次路由结果为输出端口1,第1个数据包由out1端口转发至目标地址。另外,寄存器out_hist和指针cur_out_hist_index分别进行更新,更新结果如下:out_hist(0…4)=[1,1,3,4,5],cur_out_hist_index=1。

第2个数据包到来,假定其目标地址为(dest_y=3,dest_x=2)。out_hist(3..4)和out_hist(0)保存了最近M个使用过的端口,因此输出端口4、5、1不是备选端口,剩余的输出端口中剔除故障端口2,只有端口0、3是备选端口。又由于输出端口3相比于输出端口0,与目标地址(dest_y=3,dest_x=2)的距离更近,故本次路由结果为输出端口3,第2个数据包由out3端口转发至目标地址。另外,寄存器out_hist和指针cur_out_hist_index分别进行更新,更新结果如下:out_hist(0…4)=[1,3,3,4,5],cur_out_hist_index=2。

第3个数据包到来,假定其目标地址为(dest_y=0,dest_x=5)。out_hist(4)和out_hist(0…1)保存了最近M个使用过的端口,因此输出端口5、1、3不是备选端口,剩余的端口中剔除故障端口2,只有端口0、4是备选端口。又由于输出端口0相比于输出端口4,与目标地址(dest_y=0,dest_x=5)的距离更近,故本次路由结果为输出端口0,第3个数据包由out0端口转发至目标地址。另外,寄存器out_hist和指针cur_out_hist_index分别进行更新,更新结果如下:out_hist(0…4)=[1,3,0,4,5],cur_out_hist_index=3。

在一些示例中,当有且只有一个输出端口有效且未使用过时,上述路由算法就退化为高容错性的轮转算法,即当M=Neff-1,此时实际上只有一个输出端口可选。而当M=0时,Neff个输出端口一同参与距离计算,上述路由算法就退化为高容错性的最短路径算法或最小延迟算法。

通过使用本发明的多核系统中分流器路由算法,可实现高容错性的分流器路由算法,且本发明的分流器路由算法不仅保证了带宽在输出端口上近似均匀分配,同时数据包到目标地址间的距离较短。

如图3所示,展示了本发明在一实施例中多核系统中分流器路由跳转装置的结构示意图。本实施例中的分流器路由跳转装置300包括:数据接收模块301、端口监测模块302、端口筛选模块303、端口选择模块304。

所述数据接收模块301用于接收待转发数据包;端口监测模块302用于对分流器的全部输出端口进行故障监测;端口筛选模块303用于从无故障的输出端口中筛选出最近未使用的若干输出端口;端口选择模块304用于从筛选出的所述若干输出端口中选择距离所述待转发数据包的目标地址最近的输出端口,以用于转发所述待转发数据包至所述目标地址。

应理解,以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,端口监测模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上端口监测模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。

例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital signal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。

如图4所示,展示了本发明一实施例中控制设备的结构示意图。本实例提供的控制设备,包括:处理器41、存储器42、通信器43;存储器42通过系统总线与处理器41和通信器43连接并完成相互间的通信,存储器42用于存储计算机程序,通信器43用于和其他设备进行通信,处理器41用于运行计算机程序,使控制设备执行如上多核系统中分流器路由跳转方法的各个步骤。

上述提到的系统总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述多核系统中分流器路由跳转方法。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

于本申请提供的实施例中,所述计算机可读写存储介质可以包括只读存储器、随机存取存储器、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁存储设备、闪存、U盘、移动硬盘、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。另外,任何连接都可以适当地称为计算机可读介质。例如,如果指令是使用同轴电缆、光纤光缆、双绞线、数字订户线(DSL)或者诸如红外线、无线电和微波之类的无线技术,从网站、服务器或其它远程源发送的,则所述同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线电和微波之类的无线技术包括在所述介质的定义中。然而,应当理解的是,计算机可读写存储介质和数据存储介质不包括连接、载波、信号或者其它暂时性介质,而是旨在针对于非暂时性、有形的存储介质。如申请中所使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。

本发明还提供一种多核系统,包括网格阵列和分流器;网格阵列,包括若干行和若干列芯片内核,且各芯片内核与相邻芯片内核通信连接;分流器,连接所述网格阵列;其中,所述分流器包括多个输出端口,其从芯片接收待转发数据包后,对其全部输出端口进行故障监测,并从无故障的输出端口中筛选出最近未使用的若干输出端口;从筛选出的所述若干输出端口中选择距离所述待转发数据包的目标地址最近的输出端口,以用于转发所述待转发数据包至所述目标地址。因本实施例的实施方式与上文中的各实施例类似,故不再赘述。

综上所述,本申请提供分流器路由跳转方法、装置、介质、设备及其应用的多核系统,本发明实现了高容错性的分流器路由算法;本发明的分流器路由算法不仅保证了带宽在输出端口上近似均匀分配,同时数据包到目标地址间的距离较短。所以,本申请有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种计算机网络交换机

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!