基于网络信息的片上网络路由器调度方法

文档序号:7887248阅读:257来源:国知局
专利名称:基于网络信息的片上网络路由器调度方法
技术领域
本发明属于网络技术领域,涉及系统级芯片和片上网络路由器调度方法,适用于不同规模的片上网络业务在路由器中低阻塞快速通信。
背景技术
基于总线架构的片上系统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路由方法只有当分组到达与目的地址同一列的位置才进行转向,所以网络中的中间链路和路由器会因转发大量的分组而阻塞较为严重;而采用轮询仲裁策略的调度方法只是根据仲裁器里指针指向请求的位置而进行请求和响应的匹配,并没有考虑网络的其它信息和请求的类型,所以会导致本应该早离开路由器的分组等待了较长时间,两类因素最终导致了业务在网络中的分布并不均匀。

发明内容
本发明的目的在于针对上述现有技术的不足,提出一种基于网络信息的片上网络路由器调度方法,以减少网络的拥塞程度,降低网络的时延并提高网络的吞吐。为实现上述目的,本发明的技术包括如下步骤(I)设定路由器两阶段调度参数步骤网络拓扑为KXK 二维Mesh、路径为维序X-Y路由、队列存储空间为N个微片,网络中业务的传输是以分组为载体进行的,每个分组的大小为M个微片、路由器的输入、输出端口数目分别为5,由于每个输入端口设置了 n条虚信道,所以每个端口的先入先出队列数目为n,2彡n彡6,输入队列到输出端口的请求数目为C,0彡C彡30,输入端口接收到响应的数目为G,0彡G彡5,分组从源节点到目的节点的跳数为P,I彡P彡2XK-2,分组从当前节点到目的节点的跳数为Q,1彡P彡2XK-3,输入、输出端口锁虚信道数目分别为L、W, 0^L^n,0^ff^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)下一步输入仲裁单元和输出仲裁单元将重新进行初始化并执行下一次两阶段的调度,即返回步骤(I);本发明与现有技术相比具有如下优点I)现有路由器的公平调度并未考虑跳数因素,而本发明将分组在网络中从源节点到目的节点的跳数P和当前节点到目的节点的跳数Q引入到路由器两阶段的调度中,所以在路由器缓存较小、分组较长以及网络规模较大时,源节点到目的节点距离较大的分组能得到优先调度,提前释放路由器缓存资源,缓解了长分组在网络中可能阻塞多个路由器节点的情形,因此降低了网络时延并提高了吞吐量;2)现有路由器的公平调度并未考虑链路锁虚信道因素,而本发明将路由器的锁虚信道数目L、W引入到路由器两阶段的调度中,能使路由器输入阻塞严重的分组得到优先调度,且在输出链路阻塞较为严重的情况下,又能使同一端口内去往不同输出端口的分组优先进入空闲链路,提前释放路由器缓存资源,降低网络的局部阻塞,达到流量均衡。


图I是本发明路由器的调度示意图;图2是本发明路由器中用于存储输出响应的链表一结构图;图3是本发明路由器中用于存储调度结果的链表二结构图;图4是本发明路由器中用于存储输入请求的链表三结构图;图5是本发明的调度流程图。
具体实施例方式路由器在处理分组时,一方面,一个输出端口可能接收到了多个来自输入端口的请求,所以在输出端口会产生请求的竞争;另一方面,一个输入端口可能接收到来自多个输出端口的响应,所以在输入端口也会产生响应的竞争,两类竞争不但和网络的阻塞相关,而且也和时延、吞吐量相关。而这两类竞争通常可在路由器中设计两阶段的调度去解决。以下结合附图对本发明的路由器两阶段调度做详细描述。由于调度的过程和路由器的输入、输出端口,输入队列以及仲裁单元相关,这里首先介绍和调度相关的路由器组成部分。参照图1,本发明与调度相关的路由器包括5个输入、输出端口。每个输入端口包括n条虚信道、n个先入先出队列、n个请求过程、链表一、链表二以及输出仲裁单兀。由于每个端口设置了条虚信道,所以每个输入端口有n个先入先出队列,且先入先出队列总数和请求的总数均为5Xn,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。本发明与调度相关的路由器参数设定参见表一。表一
权利要求
1.一种基于网络信息的片上网络路由器调度方法,包括(1)设定路由器两阶段调度参数步骤设网络拓扑为K X K 二维Mesh、路径为维序X-Y路由、队列存储空间为N个微片,网络中业务的传输是以分组为载体进行的,每个分组的大小为M个微片、路由器的输入、输出端口数目分别为5,每个端口的先入先出队列数目为n,2彡n彡6,输入队列到输出端口的请求数目为C,0彡C彡30,输入端口接收到响应的数目为G,0彡G彡5,分组从源节点到目的节点的跳数为P,I彡P彡2XK-2,分组从当前节点到目的节点的跳数为Q,I彡Q彡2XK-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)输入端口的输出仲裁单元收集完路由器的调度结果链表的结果后,下一步输入仲裁单元和输出仲裁单元将重新进行初始化并执行下一次两阶段的调度,即返回步骤(I)。
2.根据权利要求I所述的基于网络信息的片上网络路由器调度方法,其中步骤(2)所述路由器的输入仲裁单元,是根据来自输入请求的数目C,源点到目的节点跳数P、当前节点到目的节点跳数Q和输入端口锁虚信道数目L选择出一个输入请求并响应。
3.根据权利要求I所述的基于网络信息的片上网络路由器调度方法,其中步骤(3)所述路由器的输出仲裁单元,是根据来自输出端口的响应数目G,源节点到目的节点跳数P、 当前节点到目的节点跳数Q和输出端口锁虚信道数目W选择一个响应并接受。
4.根据权利要求I所述的基于网络信息的片上网络路由器调度方法,其中步骤(2)中所述的路由器的链表一,包括发送请求的输入端口号、输入队列号,请求的输出端口号、 源节点到目的节点的跳数P、当前节点到目的节点的跳数Q和输入端口的锁虚信道数目L。
5.根据权利要求I所述的基于网络信息的片上网络路由器调度方法,其中步骤(3)中所述的路由器的链表二,包括发送请求的输入端口号、输入队列号、请求的输出端口号、源节点到目的节点的跳数P、当前节点到目的节点的跳数Q和输出端口的锁虚信道数目W。
6.根据权利要求I所述的基于网络信息的片上网络路由器调度方法,其中步骤(3)中所述的路由器的链表三,包括输入、输出端口号和输入队列号。
全文摘要
本发明公开了一种基于网络信息的片上网络路由器调度方法,主要解决由于路由器缓存空间有限和分组较长时网络阻塞严重的问题。其实现通过两个阶段完成,在第一阶段,输入仲裁单元按照从源节点到目的节点的跳数、当前节点到目的节点的跳数以及本地输入端口的锁虚信道数这三个参数选择输入队列为响应队列;在第二阶段,输出仲裁单元按照输出链路锁虚信道数、源节点到目的节点的跳数以及当前节点到目的节点的跳数这三个参数进行选择,通过两阶段的调度,为分组在片上网络路由器的输入和输出端口之间选择了一条最佳传输路径。本发明具有低时延、吞吐量高和分组链路流量均衡的优点,可优化片上网络路由器内部路径的分配。
文档编号H04L12/56GK102546417SQ20121001113
公开日2012年7月4日 申请日期2012年1月14日 优先权日2012年1月14日
发明者杨银堂, 王琨, 郑小富, 顾华玺, 鲍培蕾 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1