一种FPGA中的片上网络的路由节点调度方法与流程

文档序号:31676593发布日期:2022-09-28 02:19阅读:74来源:国知局
一种FPGA中的片上网络的路由节点调度方法与流程
一种fpga中的片上网络的路由节点调度方法
技术领域
1.本发明涉及fpga技术领域,尤其是一种fpga中的片上网络的路由节点调度方法。


背景技术:

2.fpga被广泛应用于移动通信、数据中心、自动驾驶以及航天等领域,新型应用对fpga的带宽、存储和数据能力的需求不断提高,因此为了优化通信性能,越来越多的做法开始在fpga内部集成片上网络。
3.片上网络是由大量的路由节点以网络架构互联而成,每个路由节点包含多个输入口和输出口,通过内部的开关互联阵列,可以实现不同输入口与输出口之间的路径联通。路由节点是片上网络的关键部件,它负责fpga内部的各个ip核之间的业务转发,路由节点的多个输入口会有多个不同的业务需要处理,因此路由节点必须对不同业务进行调度。常见的传统做法是循环遍历处理各个输入口来的业务,调度方式较为单一,且常常影响业务性能。


技术实现要素:

4.本技术人针对上述问题及技术需求,提出了一种fpga中的片上网络的路由节点调度方法,本技术的技术方案如下:
5.一种fpga中的片上网络的路由节点调度方法,该片上网络中的路由节点内包括调度控制器,调度控制器执行的方法包括:在一个调度周期内,调度控制器按照预定调度顺序依次使能路由节点的各个输入口,每个时刻最多只有一个输入口被使能,路由节点通过被使能的输入口接收数据包;存在至少两个输入口在一个调度周期内的被使能次数不同。
6.其进一步的技术方案为,输入口的通信重要度越高、在一个调度周期内被使能次数越多,输入口的通信重要度与输入口连接的功能模块和/或与输入口传输的信息相关。
7.其进一步的技术方案为,输入口的通信重要度与输入口传输的信息类型、传输速率、吞吐量、负载量以及时延要求中的至少一种相关。
8.其进一步的技术方案为,同一个路由节点内的调度控制器在相邻两个调度周期内遵循的预定调度顺序相同或不同。
9.其进一步的技术方案为,调度控制器基于fpga的动态可重配功能在线更新预定调度顺序。
10.其进一步的技术方案为,片上网络中不同路由节点内部的偏向输入口位于fpga内的同一条信号传输路径上,每个路由节点内部的偏向输入口是路由节点内部被使能次数不是最少的输入口。
11.其进一步的技术方案为,路由节点中的每个输入口在一个调度周期内均至少被使能一次,或者,路由节点中存在至少一个输入口在调度周期内始终未被使能。
12.其进一步的技术方案为,当路由节点通过当前被使能的第i个输入口完成数据包接收后,当调度控制器检测到第i+1个输入口的有效反馈信号时,调度控制器使能第i+1个
输入口、路由节点通过被使能的第i+1个输入口接收数据包;当调度控制器检测到第i+1个输入口的无效反馈信号时,调度控制器跳过第i+1个输入口,并检测第i+2个输入口的反馈信号;
13.其中,第i+1个输入口是预定调度顺序中第i个输入口的下一个输入口,第i+2个输入口是预定调度顺序中第i+1个输入口的下一个输入口,有效反馈信号是输入口处有待传输的数据包时反馈的信号,无效反馈信号是输入口处没有待传输的数据包时反馈的信号。
14.其进一步的技术方案为,路由节点内部包括内置存储器,当调度控制器检测到内置存储器未满时,按照预定调度顺序使能下一个输入口并通过被使能的输入口接收数据包;当调度控制器检测到内置存储器已满时,暂停使能任何输入口,直到内置存储器有剩余存储容量时,按照预定调度顺序使能下一个输入口并通过被使能的输入口接收数据包。
15.其进一步的技术方案为,路由节点通过被使能的输入口接收一个数据包并存入内置存储器中,或者,路由节点通过被使能的输入口、在内置存储器的剩余存储容量的约束下接收多个数据包并存入内置存储器中。
16.其进一步的技术方案为,片上网络中任意两个路由节点内部的内置存储器的存储容量相同或不同。
17.其进一步的技术方案为,路由节点内还包括移位寄存器,调度控制器连接并控制移位寄存器输出包括q个控制位的移位控制信号,每个控制位分别对应一个输入口,且一个输入口对应一个或多个控制位;一个输入口对应的控制位的数量与输入口在一个调度周期内的被使能次数正相关,一个输入口对应的控制位的位数与预定调度顺序匹配;一个输入口唯一对应的一个控制位直接输出作为输入口的使能信号;对应于同一个输入口的多个控制位经过或处理后作为对应输入口的使能信号。
18.本技术的有益技术效果是:
19.本技术公开了一种fpga中的片上网络的路由节点调度方法,该方法针对包含多个输入口同时有数据包待传输路由节点的情况,利用路由节点内的调度控制器按照预定调度顺序对各个输入口进行有倾向性的调度控制,不同的输入口传送数据包的频率可以不同,从而可以增加通信重要度的输入口被使能的次数,使得该输入口处的数据包传送更及时、得到更好的传输效率,这种调度方法可以很好的匹配不同业务的传输要求,以实现片上网络较优的传输性能。
20.另外,该路由节点调度方法易于由可编程逻辑实现,且结合fpga的动态可重配功能,可以在线调节预定调度顺序,无需断开网络,调整方式简单,也可以动态满足fpga工作过程中不同场景下的传输需求。
附图说明
21.图1是片上网络的一种常见网络结构示意图。
22.图2是一个实施例中的路由节点的内部结构示意图。
23.图3是另一个实施例中的路由节点内部的控制示意图。
具体实施方式
24.下面结合附图对本技术的具体实施方式做进一步说明。
25.本技术公开了一种fpga中的片上网络的路由节点调度方法,一种常见的fpga中的片上网络(noc)的示意图如图1所示,片上网络中包括若干个noc节点,图1以包括9个noc节点为例,每个noc节点包括路由节点r及其相连的网络接口ni以及fpga中的功能模块ip。每个路由节点r包括若干个输入口和输出口,不同的noc节点通过各自的路由节点r利用输入口和输出口相连。
26.不管片上网络具体结构如何,路由节点r都是片上网络中实现信息互连路由的重要组件,而每个路由节点都包括多个输入口/输出口,以用于与不同方向的其他路由节点相连,比如图2示出了一种路由节点的一种结构示意图,路由节点包括5组输入输出,每组输入输出分别包括一个输入口和一个输出口,输入口1和输出口1用于连接网络接口ni,而其他4组输入输出可以用于与东南西北各个方向的其他路由节点的输入输出对应相连。
27.不管路由节点中的输入输出具体包括多少个,如何排布,在本技术中,路由节点内包括调度控制器,该调度控制器产生各个输入口的使能信号输出给各个输入口。比如图2中,调度控制器分别产生使能信号en1、en2、en3、en4和en5依次提供给输入口1、输入口2、输入口3、输入口4和输入口5以控制输入口的工作状态,并结合本技术的调度方法实现调度。当一个输入口获取到有效的使能信号而被使能时,可以正常从外部接收数据包传入该路由节点中;当该输入口获取到无效的使能信号而未被使能时,不接收数据进入该路由节点。由于本技术重点关注对输入口的调度方法,因此本技术以及附图中都不详细描述调度控制器对输出口的控制。
28.基于路由节点的该种节点结构,调度控制器执行的方法包括:在一个调度周期内,调度控制器按照预定调度顺序依次使能路由节点的各个输入口,每个时刻最多只有一个输入口被使能,路由节点通过该被使能的输入口接收数据包。在一个调度周期内,存在至少两个输入口在一个调度周期内的被使能次数不同。比如图2中,输入口1、2、3、4在一个调度周期内均被使能一次,而输入口5在一个调度周期内被使能两次。再比如输入口1、3、4在一个调度周期内均被使能一次,而输入口5在一个调度周期内被使能两次,输入口2在一个调度周期内被使能三次。
29.预定调度顺序可以自定义设置,一般情况下,一个输入口不会连续被使能,也即同一个输入口在预定调度顺序中间隔其他的输入口,这是因为各输入口的数据包具有时间不定性、不可测性,当输入口1传输完了所有数据包后,若按预定调度顺序再次使能输入口1则并不能实现有效的数据接收。另外预定调度顺序还需要考虑各个输入口的等待时间。
30.具体的各个输入口被使能的次数可以自定义协调,但无论各个输入口具体被使能次数是多少次,在一个调度周期内,输入口之间的被使能次数一定存在多与少的区别。也即本技术与常规的公平按序轮换遍历导通各个输入口的做法不同,在本技术中,路由节点中的各个输入口不是同等重要的,存在偏向性,输入口在一个调度周期内被使能的次数越多,路由节点更偏向于从该输入口接收数据、从该输入口接收数据的频率越高。
31.所以一个输入口的通信重要度越高、该输入口在一个调度周期内被使能次数越多,而输入口的通信重要度与该输入口连接的功能模块和/或与输入口传输的信息相关:(1)输入口连接的功能模块与通信重要度的关系。连接不同功能模块的输入口的通信重要度可以预先定义,一种实现方式是,fpga中存在一些特殊的功能模块,这些特殊的功能模块往往是对通信需求度较高的功能模块,比如高速串口。当输入口没有连接这些特殊的功能
模块时,输入口为基础值的通信重要度;输入口连接这些特殊的功能模块时,输入口的通信重要度高于基础值。(2)输入口传输的信息与通信重要度的关系。输入口的通信重要度与输入口传输的信息类型、传输速率、吞吐量、负载量以及时延要求中的至少一种相关,用于传输不同信息类型信息的输入口的通信重要度可以预先定义,一种实现方式是,存在一些特殊的优先级较高的信息,当输入口用于传输这些信息时,输入口为基础值的通信重要度;当输入口用于传输这些信息时,输入口的通信重要度高于基础值。常见的特殊的优先级较高的信息比如用于指示系统不正常操作的警告信息、实现qos(quality of service)功能的信号。其他部分,信息的传输速率越高和/或吞吐量越大和/或负载量越大和/或时延要求越高,输入口的通信重要度越高。以上分别介绍了输入口连接的功能模块以及输入口传输的信息对输入口的通信重要度的影响,实际两个部分可以综合多项指标考虑各个输入口的通信重要度,方法是类似的,选取哪些指标类型如何综合确定各个输入口的通信重要度,可以根据实际需要设定。
32.在一个实施例中,各个输入口还向调度控制器提供反馈信号,比如基于图2的结构,如图3所示,输入口1~5还依次向调度控制器提供反馈信号rdy1~rdy5。当输入口处有待传输的数据包时、向调度控制器提供有效反馈信号;当输入口处没有待传输的数据包时、向调度控制器提供无效反馈信号。当通过当前被使能的第i个输入口完成数据接收后,调度控制器并不直接使能第i+1个输入口,第i+1个输入口是第i个输入口的预定调度顺序的下一个输入口。而是在检测到第i+1个输入口的有效反馈信号时,调度控制器才向第i+1个输入口提供有效的使能信号、使能第i+1个输入口,使得路由节点通过第i+1个输入口接收数据包。若检测到第i+1个输入口的无效反馈信号,则表示第i+1个输入口没有待传输的数据包,此时即便使能第i+1个输入口也无法进行有效的数据接收,则调度控制器直接跳过第i+1个输入口,并在检测到预定调度顺序的下一个输入口、也即第i+2个输入口的有效反馈信号时使能第i+2个输入口,否则继续跳过至预定调度顺序的下一个输入口、也即第i+3个输入口,并重复上述过程。
33.路由节点在同一个输入口接收数据包后,可以直接通过相应的输出口输出实现信息转发。但是为了平衡数据收发速率,如图2和3所示,路由节点内部包括内置存储器,所有的输入口连接内置存储器、可以将接收到的数据包存入内置存储器中。所有的输出口连接内置存储器,内置存储器中的数据包通过输出口输出。fpga的片上网络中,各个路由节点的内置存储器的存储容量均相等,或者存在至少两个路由节点的内置存储器的存储容量不同。比如一个路由节点的内置存储器可以容纳2个数据包,而另一个路由节点的内置存储器可以容纳4个数据包。
34.则在图2所示的实施例中,调度控制器并不直接按照预定调度顺序直接使能下一个输入口,而是在检测到内置存储器未满时,按照预定调度顺序使能下一个输入口并通过被使能的输入口接收数据包。当调度控制器检测到内置存储器已满时,暂停使能任何输入口,直到该路由节点的内置存储器有剩余存储容量时,按照预定调度顺序使能下一个输入口并通过被使能的输入口接收数据包。在图2所示的实施例中也是类似的,本技术不再赘述。
35.当内置存储器未满时,调度控制器按照预定调度顺序使能下一个输入口,此时路由节点通过该输入口接收数据包,一个实施例中,路由节点通过被使能的输入口接收一个
数据包并存入内置存储器中。另一个实施例中,路由节点通过被使能的输入口、在内置存储器的剩余存储容量的约束下接收多个数据包并存入内置存储器中,也即每次可以接收多个数据包,但也要保证内置存储器的剩余存储容量可以容纳下这些数据包。
36.在一个实施例中,路由节点中的每个输入口在一个调度周期内均至少被使能一次。或者在另一个实施例中,路由节点中存在至少一个输入口在调度周期内始终未被使能。也即可以始终制对应输入口的使能信号无效、以断开某一个或多个输入口,从而达到控制流量,或优先传送目的。网络节点断开输入口的决定可以受控于上层全局或者由网络节点内部产生。片上网络中有一个或多个路由节点内存在始终断开的输入口。进一步的,路由节点内的全部或部分电路由可重构逻辑组成,则基于fpga的动态可重配功能可以在线实现对输入口的恒定断开,无需暂停网络系统。
37.在一个实施例中,如图3所示,调度控制器实现的上述按预定调度顺序使能的调度过程可以通过移位寄存器来实现。则路由节点内还包括移位寄存器,调度控制器连接并控制移位寄存器输出包括q个控制位的移位控制信号,每个控制位分别对应一个输入口,且一个输入口对应一个或多个控制位。一个输入口对应的控制位的数量与该输入口在一个调度周期内的被使能次数正相关,一个输入口对应的控制位的位数与预定调度顺序匹配。一个输入口唯一对应的一个控制位直接输出作为输入口的使能信号;对应于同一个输入口的多个控制位经过或处理后作为对应输入口的使能信号。
38.比如在图3所示的例子中,假设预定调度顺序是:输入口1

输入口2

输入口3

输入口1

输入口4

输入口5。则输入口1在一个调度周期内的被使能次数为2次,其余输入口都为1次,则输入口1对应的控制位的数量要多于其他输入口对应的控制位的数量,比如移位寄存器输出包括6个控制位的移位控制信号分别为c1~c6,则输入口1对应2位控制位分别为c1和c4,其他各个输入口分别对应1位控制器。输入口2唯一对应的一个控制位c2直接输出作为输入口2的使能信号en2,同理输入口3、4、5也是如此。而对应于同一个输入口1的控制位c1和c4则需要经过或处理后再输出作为输入口1的使能信号en1。另外,由于移位寄存器输出的移位控制信号的移位顺序是固定的,比如移位控制信号c1~c6第一次输出为100000,移位后输出010000,再移位后输出001000,因此为了保证移位控制信号移位后,是使能需要的输入口,所以每个输入口对应的控制位的位数需要与预定调度顺序匹配,位数是指控制位在移位控制信号中的位置。比如在图3所示的例子中,输入口1对应第一位控制位c1和第四位控制位c4,输入口2对应第二位控制位c2,输入口3对应第三位控制位c3,输入口4对应第五位控制位c5,输入口5对应第六位控制位c6,如此通过移位控制信号的移位才能实现上述预定调度顺序。调度控制器通过控制移位寄存器输出的移位控制信号移一位即可以使能下一个输入口,移两位即为使能跳过下一个输入口直接使能再下一个输入口。
39.如上所述,路由节点中的输入口是有偏向性的,被使能次数越多、偏向性越高,从全局角度看,片上网络中不同路由节点内部的偏向输入口位于fpga内的同一条信号传输路径上,每个路由节点内部的偏向输入口是路由节点内部被使能次数不是最少的输入口。也即在一条信号传输路径上,其经过多个路由节点处时都有较高的偏向性,从而可以在片上网络中形成一个优选的路径,提高该条信号传输路径的通信效率,满足一些特殊路径的通信需求,比如用于实现qor服务(限时优先传送)。
40.而在时间维度上,同一个路由节点内的调度控制器在相邻两个调度周期内遵循的
预定调度顺序相同或不同。也即路由节点内的调度控制器的预定调度顺序是可以变化的,从而可以根据网络负载或各个输入口的数据量的变动而动态调整预定调度顺序,实现不同的偏向,满足不同场景的需要。进一步的,路由节点内的全部或部分电路由可重构逻辑组成,则调度控制器基于fpga的动态可重配功能在线更新预定调度顺序,也即改变预定调度顺序的操作可以在线上完成,无需断开网络。比较典型的应用场景有:一般网络有可监控及调控负载的能力,当某特定节点常有阻塞时,上层可进行干预改变预定调度顺序以平衡负载,提升网络整体效率。另一个场景是:当路由节点连接的功能模块完成特定任务时或执行不同任务时,路由节点的输入口的数据量会有所变动,此时网络管理者可根据新分配的任务对路由节点的预定调度顺序。
41.理论上,各个网络节点采用的预定调度顺序一般由上层全局控制,也即上层对所有网络节点实现集中式控制,易于实现,且可以通过全局协调提供某些特定功能如qor服务(限时优先传送)。但是在一个实施例中,各个网络节点采用的预定调度顺序也可以由网络节点自己本地控制,也即所有网络节点实现分布式控制,分布式控制较有弹性,较易扩张。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1