一种基于“包‑电路”交换技术的动态转向路由算法的制作方法

文档序号:11959687阅读:190来源:国知局
本发明涉及一种基于“包-电路”交换技术的动态转向路由算法,属于片上网络通讯
技术领域

背景技术
:随着半导体工艺的不断发展,集成电路集成度的大幅提高以及工作频率的不断上升,传统总线结构的多功能片上系统(SoC)的扩展性差、并行度低以及全局时钟同步困难等缺点逐渐显露出来。为了克服总线型SoC的固有缺点,片上网络(NoC)的概念被提了出来。NoC具有良好的地址空间及可拓展性,较强的并行处理能力,同时采用全局同步局部异步的机制有效的解决了全局时钟带来的功耗和面积增加等问题,成为解决片上通信的主流技术之一。片上网络的研究包括:拓扑结构、路由算法和交换技术等方面,拓扑结构决定了片上网络中路由节点和资源节点在网络中位置与连接,目前已实现了多种拓扑结构,例如Mesh、Torus、树形、Fat-tree、星型等结构,Mesh结构由于其结构简单易于拓展与实现而得到广泛的使用,图1所示为一个典型的Mesh结构的片上网络。路由算法决定数据在网络中的传输路径,是影响NoC性能的重要因素之一,按照一定路由算法设计的路由器,其性能将直接影响片上网络的通信效率,从而对NoC性能产生重要影响。交换技术是指数据在路由节点间的交互机制,“包-电路”交换技术是一种适用于与大批量数据传输的交换方式,其特点是将数据的传输分为三个阶段:链路建立阶段,数据传输阶段和链路撤销阶段。常用于虫孔、存储转发和虚通道交换技术的路由算法大多适用于通信量不大的数据传输,因此很难发挥“包-电路”交换技术在大批量数据传输中的优势。技术实现要素:本发明为克服了现有技术的不足之处,提出了一种基于“包-电路”交换技术的动态转向路由算法,以期能减小网络中发生拥塞的概率,实现数据流在网络中的平均分布,提高网络的利用率,同时还能提高链路建立的成功率,提高网络的平均吞吐量,减小平均包延迟,提高数据传输的效率,从而提高系统整体性能。本发明为达到上述目的所采用的技术方案是:本发明一种基于“包-电路”交换技术的动态转向路由算法,其特点是应用于包含若干个路由节点、若干个资源节点和若干条互连通道所组成的片上网络中;所述路由节点包括:输入控制器、地址译码器、仲裁器、交叉开关、输出控制器;当前路由节点的输入控制器接收来自上游路由节点或资源节点的路由请求后,向所述上游节点或资源节点反馈链路建立情况,并根据所述链路建立情况控制自身输入控制器的工作状态,同时将接收到的路由请求发送到自身地址译码器;所述当前路由节点的地址译码器接收来自不同的输入控制器的路由请求,并按照优先级顺序处理各个路由请求;所述地址译码器从所述路由请求提取路由的目的节点坐标,从而根据所述当前路由节点的坐标和所述目的节点的目标确定所述当前节点的可能路由方向;以可能路由方向作为所述当前节点的后继选择方向;从而确定在所述后继选择方向上的后继节点的可能路由方向;进而将所述后继选择方向、后继节点的可能路由方向以及路由请求发送到仲裁器;所述当前路由节点的仲裁器接收所述后继选择方向、后继节点的可能路由方向以及路由请求后,根据所述当前路由节点和所述后继节点的输出端口占用情况,按照优先级顺序选择所述路由请求在所述当前路由节点上的可用输出端口;若存在可用输出端口,则产生一个互连信号给所述控制交叉开关,若不存在可用输出端口,则向所述当前路由节点的输入控制器反馈失败信号,用于重新确定当前路由节点的输入控制器的工作状态;所述当前路由节点的交叉开关接收来自所述仲裁器的互连信号,从而控制当前路由节点相应的输入控制器和输出控制器相连;所述当前路由节点的输出控制器接收来自所述输入控制器的路由请求,并将其传输到所述后继节点,同时将所述后继节点反馈的链路建立情况发送到所述当前路由节点的输入控制器,从而实现动态改变路由路径。本发明所述的动态转向路由算法的特点也在于,假设所述当前节点坐标为(X,Y),所述目的节点的坐标为(DEST_X,DEST_Y);任意一个路由节点具有五个方向,包括:东向、南向、西向、北向和本地方向;则所述当前节点的可能路由方向是按如下原则确定:a.若DEST_X>X,则可能的路由方向为东向;b.若DEST_X<X,则可能的路由方向为西向;c.若DEST_Y>Y,则可能的路由方向为南向;d.若DEST_Y<Y,则可能的路由方向为北向;e.若DEST_X=X且DEST_Y=Y,则可能的路由方向为本地方向。3、根据权利要求2所述的动态转向路由算法,其特征是,所述后继选择方向上的后继节点的可能路由方向是按如下方式确定:a.若当前节点的可能路由方向为东向,则根据所述原则比较目的节点坐标(DEST_X,DEST_Y)和东向上的后继节点坐标(X+1,Y),从而确定后继节点的可能路由方向;b.若当前节点的可能路由方向为南向,则根据所述原则比较目的节点坐标(DEST_X,DEST_Y)和南向上的后继节点坐标(X,Y+1),从而确定后继节点的可能路由方向;c.若当前节点的可能路由方向为西向,则根据所述原则比较目的节点坐标(DEST_X,DEST_Y)和西向上的后继节点坐标(X-1,Y),从而确定后继节点的可能路由方向;d.若当前节点的可能路由方向为北向,则根据所述原则比较目的节点坐标(DEST_X,DEST_Y)和北向上的后继节点坐标(X,Y-1),从而确定后继节点的可能路由方向;e若当前节点可能的路由方向为本地方向,则不进行比较。所述仲裁器是按如下方式选择在所述当前路由节点上的可用输出端口:a.若所述当前节点的可能路由方向为东向,则判断当前节点的东向输出端口是否可用,若不可用,则直接反馈失败信号;若可用,则继续按优先级顺序判断东向上的后继节点的可能路由方向上的输出端口是否可用;若存在可用的输出端口,则选择东向的输出端口作为所述当前路由节点上的可用输出端口;若不存在可用的输出端口,则反馈失败信号;b.若所述当前节点的可能路由方向为南向,则判断当前节点的南向输出端口是否可用,若不可用,则直接反馈失败信号;若可用,继续按优先级顺序判断南向的所述后继节点的可能路由方向上的输出端口是否可用;若存在可用的输出端口,则选择南向的输出端口作为所述当前路由节点上的可用输出端口;若不存在可用输出端口,则反馈失败信号;c.若所述当前节点的可能路由方向为西向,则判断当前节点的西向输出端口是否可用,若不可用,则直接反馈失败信号;若可用,继续按优先级顺序判断西向的所述后继节点的可能路由方向上的输出端口是否可用;若存在可用的输出端口,则选择西向的输出端口作为所述当前路由节点上的可用输出端口;若不存在可用输出端口,则反馈失败信号;d.若所述当前节点的可能路由方向为北向,则判断当前节点的北向输出端口是否可用,若不可用,则直接反馈失败信号;若可用,继续按优先级顺序判断北向的所述后继节点的可能路由方向上的输出端口是否可用;若存在可用的输出端口,则选择北向的输出端口作为所述当前路由节点上的可用输出端口;若不存在可用输出端口,则反馈失败信号;e.若所述当前节点的可能路由方向为本地方向,则直接判断所述当前节点的本地方向输出端口是否可用,若可用,则选择本地方向的输出端口作为所述当前路由节点上的可用输出端口;若不可用,则反馈失败信号。与现有技术相比,本发明的有益技术效果体现在:1、本发明算法为一种自适应路由算法,能根据片上网络中的流量分布和拥塞情况等信息选择适当的路径进行数据传输,动态的改变传输路径,减少了网络中拥塞发生的概率,使数据流在网络中均匀的分布,避免了数据集中地经过网络中的某条路径或某个路由节点,避免了传输“热点”的出现。2、本发明的路由算法在选择路径时,不会选择偏离目的节点的路径,是一种最短路径路由算法,同时不会向180度方向回折,以避免数据在某条路径间重复路由。同时,该路由算法可以在链路拥塞时,返回失败信号,重新建立链路,有效的避免了死锁和活锁的发生。3、本发明根据当前路由节点和下游路由节点的端口使用情况,选择无拥塞的路径,可以提前预先判断后继节点的端口使用情况,以避免传输到下一节点时不存在可用端口,而撤销并重建链路,一方面可以提高链路建立的成功率,从而提高了网络的吞吐量,减小了网络的平均包延迟;另一方面,本发明可以减少在数据传输过程中建立链路的次数,从而降低了功耗,提高了数据传输效率。附图说明图1为典型的4X4mesh网络的结构示意图;图2为本发明实施例中单个路由节点的结构图;图3为本发明实施例中可能路由方向的示意图;图4为本发明实施例中路由算法流程图。具体实施方式在本实施例中,一种基于“包-电路”交换技术的动态转向路由算法,是应用于包含若干个路由节点、若干个资源节点和若干条互连通道所组成的片上网络中;该算法应用于“包-电路”交换技术的链路请求阶段,根据当前路由节点和下游路由节点的输出端口占用情况进行路由仲裁,动态改变路由路径。同时路由算法在路由时,不会向请求方向回折,同时不会选择远离目的节点的路径,可以有效的避免死锁和活锁等问题。如图2所示,路由节点包括::输入控制器、地址译码器、仲裁器、交叉开关、输出控制器。当前路由节点的输入控制器接收来自上游路由节点或资源节点的路由请求后,向上游节点或资源节点反馈链路建立情况,并根据链路建立情况控制自身输入控制器的工作状态,同时将接收到的路由请求发送到自身地址译码器;每个路由节点具有5个输入控制器,分别为:东向输入控制器、南向输入控制器、西向输入控制器、北向输入控制器和本地输入控制器。本地输入控制器与资源节点相连,东向、南向、西向和北向输入控制器分别与四个相邻路由节点相连。当前路由节点的地址译码器接收来自不同的输入控制器的路由请求,并按照优先级顺序处理各个路由请求;地址译码器从路由请求提取路由的目的节点坐标,从而根据当前路由节点的坐标和目的节点的目标确定当前节点的可能路由方向;以可能路由方向作为当前节点的后继选择方向;从而确定在后继选择方向上的后继节点的可能路由方向;进而将后继选择方向、后继节点的可能路由方向以及路由请求发送到仲裁器。以顶点上的路由器相连通的两条互连通道分别为X轴和Y轴,建立坐标系OXY;并以X轴的正方向为东向,以X轴的负方向为西向,以Y轴的正方向为北向,以Y轴的负方向为南向。假设当前节点坐标为(X,Y),目的节点的坐标为(DEST_X,DEST_Y);任意个路由节点具有五个方向,包括:东向、南向、西向、北向和本地方向;则当前节点的可能路由方向是按如下原则确定:a.若DEST_X>X,则可能的路由方向为东向;b.若DEST_X<X,则可能的路由方向为西向;c.若DEST_Y>Y,则可能的路由方向为南向;d.若DEST_Y<Y,则可能的路由方向为北向;e.若DEST_X=X且DEST_Y=Y,则可能的路由方向为本地方向。用一个5位的local_dest信号从低到高依次为本地方向、东向、南向、西向和北向以记录在本地的可能路由方向,具体的位置如图3所示。后继选择方向上的后继节点的可能路由方向是按如下方式确定:a.若当前节点的可能路由方向为东向,则根据原则比较目的节点坐标(DEST_X,DEST_Y)和东向上的后继节点坐标(X+1,Y),从而确定后继节点的可能路由方向;b.若当前节点的可能路由方向为南向,则根据原则比较目的节点坐标(DEST_X,DEST_Y)和南向上的后继节点坐标(X,Y+1),从而确定后继节点的可能路由方向;c.若当前节点的可能路由方向为西向,则根据原则比较目的节点坐标(DEST_X,DEST_Y)和西向上的后继节点坐标(X-1,Y),从而确定后继节点的可能路由方向;d.若当前节点的可能路由方向为北向,则根据原则比较目的节点坐标(DEST_X,DEST_Y)和北向上的后继节点坐标(X,Y-1),从而确定后继节点的可能路由方向;e若当前节点可能的路由方向为本地方向,则不进行比较。同样用一个5位的next_dest信号从低到高依次为本地方向、东向、南向、西向和北向以记录在本地的可能路由方向。动态转向路由算法的流程图如图4所示。当前路由节点的仲裁器接收后继选择方向、后继节点的可能路由方向以及路由请求后,根据当前路由节点和后继节点的输出端口占用情况,按照优先级顺序选择路由请求在当前路由节点上的可用输出端口;若存在可用输出端口,则产生一个互连信号给控制交叉开关,若不存在可用输出端口,则向当前路由节点的输入控制器反馈失败信号,用于重新确定当前路由节点的输入控制器的工作状态。仲裁器是按如下方式选择在当前路由节点上的可用输出端口:a.若当前节点的可能路由方向为东向,则判断当前节点的东向输出端口是否可用,若不可用,则直接反馈失败信号;若可用,则继续按优先级顺序判断东向上的后继节点的可能路由方向上的输出端口是否可用;若存在可用的输出端口,则选择东向的输出端口作为当前路由节点上的可用输出端口;若不存在可用的输出端口,则反馈失败信号;b.若当前节点的可能路由方向为南向,则判断当前节点的南向输出端口是否可用,若不可用,则直接反馈失败信号;若可用,继续按优先级顺序判断南向的后继节点的可能路由方向上的输出端口是否可用;若存在可用的输出端口,则选择南向的输出端口作为当前路由节点上的可用输出端口;若不存在可用输出端口,则反馈失败信号;c.若当前节点的可能路由方向为西向,则判断当前节点的西向输出端口是否可用,若不可用,则直接反馈失败信号;若可用,继续按优先级顺序判断西向的后继节点的可能路由方向上的输出端口是否可用;若存在可用的输出端口,则选择西向的输出端口作为当前路由节点上的可用输出端口;若不存在可用输出端口,则反馈失败信号;d.若当前节点的可能路由方向为北向,则判断当前节点的北向输出端口是否可用,若不可用,则直接反馈失败信号;若可用,继续按优先级顺序判断北向的后继节点的可能路由方向上的输出端口是否可用;若存在可用的输出端口,则选择北向的输出端口作为当前路由节点上的可用输出端口;若不存在可用输出端口,则反馈失败信号;e.若当前节点的可能路由方向为本地方向,则直接判断当前节点的本地方向输出端口是否可用,若可用,则选择本地方向的输出端口作为当前路由节点上的可用输出端口;若不可用,则反馈失败信号。当前路由节点的交叉开关接收来自仲裁器的互连信号,从而控制当前路由节点相应的输入控制器和输出控制器相连,交叉开关采用全互连的方式实现输入控制器和输出控制器的连接,将进入输入控制器的路由请求和数据传输到输出控制器,同时将链路的建立情况从输出控制器传输到输入控制器。当前路由节点的输出控制器接收来自输入控制器的路由请求,并将其传输到后继节点,同时将后继节点反馈的链路建立情况发送到当前路由节点的输入控制器,从而实现动态改变路由路径。本实施例采用动态转向路由算法的路由器节点构成4X4的mesh片上网络,并在Xilinx开发板Vertex760上通过VerilogHDL实现,其硬件资源消耗如表1所示:表1资源类型查找表(LUT)寄存器(Register)资源消耗641210705当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1