基于网络信息的片上网络路由器调度方法
技术领域
本发明属于网络技术领域,涉及系统级芯片和片上网络路由器调度方法,适用于不同规模的片上网络业务在路由器中低阻塞快速通信。
背景技术
基于总线架构的片上系统SoC是采用知识产权IP核复用技术进行集成电路的设计,这些IP核通常是通用处理器、数字信号处理器DSP、微处理器ARM、存储器模块RAM等等。随着半导体工艺的发展和芯片处理器主频的快速增长,单硅芯片上集成的IP核越来越多,SoC总线架构面临诸多问题,主要表现在三个方面:(1)地址空间问题。由于同一时刻只允许一对节点通信,当通信数量增多时,地址空间有限而无法支持较多IP核之间的互连,限制了系统的可扩展性。(2)长互连线问题。随着与总线相连IP核数目的增加,总线长度随之增加,此时互连线时延成为IP核之间通信时延的主要组成部分。(3)功耗问题。系统级芯片工作在百万门以上集成度和高时钟频率下,巨大的功耗使芯片封装及可靠性不能够得到保证,同时也缩短了芯片的寿命周期。采用总线架构的设计方法越来越不能满足超大规模集成电路VLSI设计的需求。因此为了能更好地组织芯片上的众多IP核,需要采用可扩展性好、模块化、可重用性好、高性能的互连结构。
国外研究机构于2000年提出的片上网络NoC结构,将计算机网络技术引入到芯片设计中,来寻求解决采用总线架构的SoC发展瓶颈问题。NoC采用全局异步局部同步策略将各个IP核用路由器、链路等资源连接起来。可以解决SoC系统设计所面临的诸多难题。因此,NoC的研究已经成为了当今学术界和工业界的研究热点。
方格子Mesh拓扑结构由于具有形状规则、易于部署等优点,因此广泛应用于片上网络设计中,当前大多数商用NoC芯片采用的是基于Mesh拓扑结构的片上互连方式。Mesh常采用的路由算法为维序X-Y路由,因为这种路由算法不但具有无死锁特性,而且实现简单,不会影响路由器关键路径长度,大多数商用NoC芯片所采用的就是这种路由算法。
片上路由器是NoC的关键部件,它负责各个IP核之间的业务转发,完成了交换机制、路由算法、流控、调度等关键技术。其中调度决定了业务在路由器中离开的顺序。片上网络常见的调度算法主要包括基于优先级和基于公平策略两类方式,其中采用公平策略的轮询算法实现简单,因此在路由器的调度设计中应用较多。
虫孔路由器是片上网络常用的路由器结构,因为该路由器对缓存队列的要求比较低,每个端口设置一个缓存队列,每个缓存队列为一个微片,大大降低了芯片的面积。但是这种路由器队头阻塞较为严重,所以网络的吞吐并不高,而且由于队头阻塞导致的队列等待时延也较长。为了缓解队头阻塞问题,研究人员提出了虚信道路由器结构,这种路由器采用时分复用的方式将链路和带宽进行共享,不但缓解了队头阻塞问题而且较好地提高了网络性能,这种虚信道路由器通过为每个端口设置虚信道来共享缓存单元,每条虚信道都设置了独享的先入先出队列,但是由于芯片面积和功耗的限制,每个端口的队列长度有限,存放业务分组的长度也很有限,所以当分组长度较长并且网络的业务负载较大时,一个分组的微片可能被阻塞在多个路由器节点或链路中,而已阻塞的微片会进一步阻塞网络中的其它分组,最终使整个网络拥塞极其严重并迅速饱和,时延增大、吞吐迅速下降。另外,在基于Mesh拓扑网络上,对于不同的业务模式,采用维序X-Y路由方法和轮询仲裁策略容易导致网络中间区域的路由器和链路阻塞较为严重,这主要是因为维序X-Y路由方法只有当分组到达与目的地址同一列的位置才进行转向,所以网络中的中间链路和路由器会因转发大量的分组而阻塞较为严重;而采用轮询仲裁策略的调度方法只是根据仲裁器里指针指向请求的位置而进行请求和响应的匹配,并没有考虑网络的其它信息和请求的类型,所以会导致本应该早离开路由器的分组等待了较长时间,两类因素最终导致了业务在网络中的分布并不均匀。
发明内容
本发明的目的在于针对上述现有技术的不足,提出一种基于网络信息的片上网络路由器调度方法,以减少网络的拥塞程度,降低网络的时延并提高网络的吞吐。
为实现上述目的,本发明的技术包括如下步骤:
(1)设定路由器两阶段调度参数步骤:
网络拓扑为K×K二维Mesh、路径为维序X-Y路由、队列存储空间为N个微片,网络中业务的传输是以分组为载体进行的,每个分组的大小为M个微片、路由器的输入、输出端口数目分别为5,由于每个输入端口设置了n条虚信道,所以每个端口的先入先出队列数目为n,2≤n≤6,输入队列到输出端口的请求数目为C,0≤C≤30,输入端口接收到响应的数目为G,0≤G≤5,分组从源节点到目的节点的跳数为P,1≤P≤2×K-2,分组从当前节点到目的节点的跳数为Q,1≤P≤2×K-3,输入、输出端口锁虚信道数目分别为L、W,0≤L≤n,0≤W≤n;
(2)每个输出端口的输入仲裁单元为来自输入端口的请求分配一个响应步骤:
2a)每个输出端口的输入仲裁单元根据路由器的链表一中的计数值C,判断输入端发送请求的数目,如果C=0,则表示该端口未收到请求,再继续查询路由器的链表一中的计数值C;如果C=1,表示只有一个输入请求,输入仲裁单元将该请求对应的输入端口号、队列号以及请求的输出端口号,均存储在路由器的链表二中,执行步骤2e);如果C>1,执行步骤2b);
2b)如果各输入队列请求的源节点到目的节点跳数P都不相同,则将P值最大的对应输入端口号、队列号以及P值最大队列请求的输出端口号,均存储在路由器的链表二中,再执行步骤2e);否则执行步骤2c);
2c)如果各输入队列请求的当前节点到目的节点跳数Q都不相同,则将Q值最大的对应输入端口号、队列号以及Q值最大队列请求的输出端口号,均存储在路由器的链表二中,再执行步骤2e);否则执行步骤2d);
2d)如果各输入队列请求对应的输入端口锁虚信道数目L都不相同,则将L值最大的对应输入端口号、队列号以及L值最大队列请求的输出端口号,均存储在路由器的链表二中,再执行步骤2e);否则在L值相等的输入队列中随机地选择一个输入队列,并将随机选择的输入端口号、队列号以及随机选择的输入队列对应输出端口号存储在路由器的链表二中,执行步骤2e);
2e)每个输出端口的输入仲裁单元将存储在路由器的链表二的输入、输出端口号以及输入队列号发送到输入端口的输出仲裁单元;
(3)每个输入端口的输出仲裁单元接收来自输出端口的响应步骤:
3a)每个输入端口的输出仲裁单元根据路由器中匹配响应链表中的计数值G,判断输出端发送响应的数目,如果G=0,则表示该端口未收到响应,再查询判断路由器的链表二中计数值G;如果G=1,则表示只有一个响应,该输入端口的输出仲裁单元将接收到响应的输入端口号、队列号以及有确认信息的输出端口号,均存储在路由器的链表三中,再执行步骤3e);如果G>1,执行步骤3b);
3b)如果有确认信息的输出端口参数W都不相同,则将接收到响应的输入端口号、队列号以及W最小对应的输出端口号,均存储在路由器的链表三中,再执行步骤3e);否则执行步骤3c);
3c)如果各接收请求队列的参数P各不相同,则将接收到响应的P值最大的输入端口号、队列号以及发送请求P值最大的输入队列所请求的输出端口号,均存储在路由器的链表三中,再执行步骤3e);否则执行步骤3d);
3d)如果各接收请求队列的参数Q各不相同,则将接收到响应的Q值最大的输入端口号、队列号以及Q值最大输入队列请求的输出端口号,均存储在路由器的链表三中,再执行步骤3e);否则在接收到响应的输入队列中随机地选择一个输入队列,并将随机选择的队列对应输入端口号、队列号以及随机选择输入队列对应请求的输出端口号,均存储在路由器的链表三中,执行步骤3e);
3e)下一步输入仲裁单元和输出仲裁单元将重新进行初始化并执行下一次两阶段的调度,即返回步骤(1);
本发明与现有技术相比具有如下优点:
1)现有路由器的公平调度并未考虑跳数因素,而本发明将分组在网络中从源节点到目的节点的跳数P和当前节点到目的节点的跳数Q引入到路由器两阶段的调度中,所以在路由器缓存较小、分组较长以及网络规模较大时,源节点到目的节点距离较大的分组能得到优先调度,提前释放路由器缓存资源,缓解了长分组在网络中可能阻塞多个路由器节点的情形,因此降低了网络时延并提高了吞吐量;
2)现有路由器的公平调度并未考虑链路锁虚信道因素,而本发明将路由器的锁虚信道数目L、W引入到路由器两阶段的调度中,能使路由器输入阻塞严重的分组得到优先调度,且在输出链路阻塞较为严重的情况下,又能使同一端口内去往不同输出端口的分组优先进入空闲链路,提前释放路由器缓存资源,降低网络的局部阻塞,达到流量均衡。
附图说明
图1是本发明路由器的调度示意图;
图2是本发明路由器中用于存储输出响应的链表一结构图;
图3是本发明路由器中用于存储调度结果的链表二结构图;
图4是本发明路由器中用于存储输入请求的链表三结构图;
图5是本发明的调度流程图。
具体实施方式
路由器在处理分组时,一方面,一个输出端口可能接收到了多个来自输入端口的请求,所以在输出端口会产生请求的竞争;另一方面,一个输入端口可能接收到来自多个输出端口的响应,所以在输入端口也会产生响应的竞争,两类竞争不但和网络的阻塞相关,而且也和时延、吞吐量相关。而这两类竞争通常可在路由器中设计两阶段的调度去解决。
以下结合附图对本发明的路由器两阶段调度做详细描述。
由于调度的过程和路由器的输入、输出端口,输入队列以及仲裁单元相关,这里首先介绍和调度相关的路由器组成部分。
参照图1,本发明与调度相关的路由器包括5个输入、输出端口。每个输入端口包括n条虚信道、n个先入先出队列、n个请求过程、链表一、链表二以及输出仲裁单元。由于每个端口设置了条虚信道,所以每个输入端口有n个先入先出队列,且先入先出队列总数和请求的总数均为5×n,2≤n≤6,其中101是第一个输入端口,102是第一个输入端口的第一个先入先出队列,103是第一个先入先出队列的请求过程,104是第一个输出仲裁单元。图2所示的链表一,包括响应的数目G,输入端口号、队列号,响应的输出端口号,源节点到目的节点的跳数P、当前节点到目的节点的跳数Q以及输出端口方向的锁虚信道数目W;图3所示的链表二,包括输入端口号、队列号以及输出端口号,其它四个输入端口分别是111、112、113、114。
每个输出端口包括响应过程,输入仲裁单元以及链表三。其中105是第一个输出端口的输入仲裁单元,106是第一个输出端口仲裁单元的响应过程。图4所示的链表三,包括请求数目C、有输入请求的输入端口号、队列号以及请求的输出端口号,源节点到目的节点的跳数P、当前节点到目的节点的跳数Q以及输入端口方向的锁虚信道数目L,其它四个仲裁单元分别是107、108、109、110。
本发明与调度相关的路由器参数设定参见表一。
表一
参照图5,本发明路由器调度方法包括如下步骤:
步骤1,每个输出端口的输入仲裁单元为来自输入端口的请求分配一个响应。
1a)以第一个输出端口的输入仲裁单元105为例,输入仲裁单元根据路由器中链表一的计数值C,判断输入端口发送请求的数目,如果C等于零,则说明仲裁单元105没有接收到请求,再继续查询路由器链表一中的计数值C,如果C等于1,则说明仲裁单元105只接收到一个请求,此时输入仲裁单元105将该请求对应的输入端口号、队列号以及请求的输出端口号,均存储在路由器中的链表二中,并执行步骤2;如果C大于1,执行骤1b),路由器的输入仲裁单元107、108、109、110操作相同;
1b)以第一个输出端口的输入仲裁单元105为例,由于此时仲裁单元105接收到了多个请求,则输入仲裁单元105首先按照源节点到目的节点的跳数P进行选择,如果源节点到目的节点的跳数P最大值唯一,则输入仲裁单元105将P值最大对应的输入端口号、队列号以及请求的输出端口号,均存储在路由器的链表二中,并执行步骤2;否则执行步骤1c),路由器的输入仲裁单元107、108、109、110操作相同;
1c)以第一个输出端口的输入仲裁单元105为例,由于此时最大P值对应的队列数不唯一,则输入仲裁单元105按照当前节点到目的节点的跳数Q进行选择,如果当前节点到目的节点的跳数Q最大值唯一,则路由器的输入仲裁单元将Q最大对应的输入端口号、队列号和请求的输出端口号,均存储在路由器的链表二中,并执行步骤2;否则执行步骤1d),路由器的输入仲裁单元107、108、109、110操作相同;
1d)以第一个输出端口的输入仲裁单元105为例,由于此时最大Q值对应的队列数不唯一,则输入仲裁单元105按照锁信道数目L进行比较,如果输入端口锁虚信道数目L值唯一,则输入仲裁单元105将锁虚信道数目L最大对应的输入端口号、队列号以及请求输出端口号存储在链表二中,并执行步骤2;否则执行步骤1e),路由器的输入仲裁单元107、108、109、110操作相同;
1e)以第一个输出端口的输入仲裁单元105为例,由于最大锁虚信道数目L对应的输入队列不唯一,则输入仲裁单元105将从队列中随机地选择一个输入队列作为响应队列,并将该输入端口号、队列号以请求及输出端口号存储在链表二中,并执行步骤1f),路由器的输入仲裁单元107、108、109、110操作相同;
1f)以第一个输出端口的输入仲裁105单元为例,输入仲裁单元105完成了对输入请求的响应,而路由器的其它输入仲裁单元107、108、109、110也都完成了响应。第一阶段输入仲裁单元对输入请求的响应完成,执行步骤2。
步骤2,每个输入端口的输出仲裁单元接收来自输出端口的响应。
2a)以第一个输入端口101内的先入先出队列为例,输出仲裁单元104查询101内的所有先入先出队列是否有来自输出端口的响应,根据链表二中响应数目G的值,判断输出端口响应的数目,如果G等于零,则表示没有收到响应,再继续查询链表二中的计数值G;如果G等于1,则表示输入端口101内只有一个队列接收到响应,此时输出仲裁单元104将按照收到响应队列对应的输入端口号、队列号以及响应的输出端口号存储在链表三中,并执行步骤2f);否则转步骤2b),路由器其它四个端口111、112、113、114的输出仲裁单元操作相同;
2b)以第一个输入端口101内的先入先出队列为例,输出仲裁单元104查询链表的W值,如果响应端口的锁虚信道数目W最小值唯一,则仲裁单元104将最小锁虚信道数目W对应的输入端口号、输入队列号以及响应的输出端口号存储在链表三中,并执行步骤2f),否则执行步骤2c),路由器其它四个端口111、112、113、114的输出仲裁单元操作相同;
2c)以第一个输入端口101内的先入先出队列为例,输出仲裁单元104根据源节点到目的节点跳数P进行选择,如果源节点到目的节点跳数P不相等,则仲裁单元104将节点到目的节点跳数P最大的输入端口号、队列号以及响应的输出端口号存储在链表三中,并执行步骤2f),否则执行步骤2d),路由器其它四个端口111、112、113、114的输出仲裁单元操作相同;
2d)以第一个输入端口101内的先入先出队列为例,输出仲裁单元104根据当前节点到目的节点跳数Q进行比较,如果当前节点到目的节点跳数Q最大值唯一,则仲裁单元104将跳数Q最大对应的输入端口号、队列号以及响应的输出端口存储在链表三中,执行步骤2f),否则执行步骤2e),路由器其它四个端口111、112、113、114的输出仲裁单元操作相同;
2e)以第一个输入端口101内的先入先出队列为例,输出仲裁单元104将从102的先入先出队列中随机地选择一个输入队列作为调度的结果,并将该队列所在的输入端口号、队列号以及响应的输出端口存储在链表三中,执行步骤2f),路由器其它四个端口111、112、113、114的输出仲裁单元操作相同;
2f)以第一个输入端口101内的先入先出队列为例,输出仲裁单元104完成了对输出响应的选择过程,而路由器其它四个端口111、112、113、114的输出仲裁单元也都完成了对输出的选择,执行步骤3;
步骤3,路由器完成了一次两阶段的调度后,返回步骤1进入下次调度。