一种可动态切换工作模式的片上网络路由器及方法与流程

文档序号:13141992阅读:344来源:国知局
一种可动态切换工作模式的片上网络路由器及方法与流程

本发明涉及多核处理器片上系统技术领域,特别是一种可动态切换工作模式的片上网络路由器及方法。



背景技术:

随着多核处理器片上系统(multiprocessorsystem-on-chip,mpsoc)中集成的处理器核越来越多,基于数据包传输方式的片上网络(network-on-chip,noc)为各处理器核之间的互连提供了高效、可靠的通信架构。伴随处理器核数目的不断增多,片上暗硅(dark-silicon)问题也随之出现,即为了维持多核系统性能不超过散热设计功耗,部分处理器核需要处于关闭状态或者不能持续长时间的运行周期。针对暗硅问题,已有的解决方案均集中于优化片上处理器核的功耗,而没有考虑片上互连的优化设计。

然而,若对片上互连不进行优化设计,片上网络组件(路由器、网络接口)就必须一直保持在工作状态,否则被随意关闭的路由器会阻止节点间地数据包传输以及对共享资源的访问,且会使得片上网络功耗开销在片上资源功耗开销中所占的比例进一步上升。由于路由器是片上网络互连架构中的重要组件,也是互连网络中消耗功耗最多的部分,故设计低功耗的片上网络路由器是面向暗硅问题中优化片上互连设计的重要手段。



技术实现要素:

本发明所要解决的技术问题是克服现有技术的不足而提供一种可动态切换工作模式的片上网络路由器及方法,本发明可动态切换于多种工作模式的片上网络路由器包括直通模式、无缓存模式和混合缓存模式三种工作模式,可依据多核处理器片上系统不同的运行状况和通信负载在各种工作模式间动态切换。

本发明为解决上述技术问题采用以下技术方案:

根据本发明提出的一种可动态切换工作模式的片上网络路由器,包括电源门控pg控制器、第一至第三门控模块、直通模块、输入端口、输入端口控制模块、输入混合缓存区、路由模块、输出端口控制模块和输出端口;所述路由模块包括路由计算模块、仲裁分配模块和交叉开关模块,所述输入端口包括东输入端口、西输入端口、南输入端口、北输入端口和本地输入端口,输出端口包括东输出端口、西输出端口、南输出端口、北输出端口和本地输出端口;pg控制器与第一至第三门控模块的输入端分别连接,第一至第三门控模块的输出端分别与输入混合缓存区、路由模块、直通模块分别连接,第一至第三门控模块、输入端口控制模块、输出端口控制模块分别与电源连接;其中,

pg控制器,用于根据关断信号en和第一唤醒信号wu1、第二唤醒信号wu2、第三唤醒信号wu3的状态产生第一门控信号pg1、第二门控信号pg2和第三门控信号pg3;第一门控信号pg1输出至第一门控模块,第二门控信号pg2输出至第二门控模块,第三门控信号pg3输出至第三门控模块;当路由器所连的资源内核无任务执行时,关断信号en为1;当路由器所连的资源内核有任务执行时,关断信号en为0;

第一至第三门控模块,用于根据各自接收的第一门控信号pg1、第二门控信号pg2、第三门控信号pg3,来决定输出的虚拟电源vdd1、vdd2、vdd3的值,以实现对其所连的输入混合缓存区、路由模块、直通模块的门控;

直通模块包括计数器、注入率计算函数器、第一阈值比较器和直通单元;其中,

计数器,用来对当前路由器中到来的完整数据包进行计数,得到数据访问次数cnt1;输出cnt1和经历的总时钟周期数至注入率计算函数器;

注入率计算函数器,用于根据cnt1和经历的总时钟周期数计算得到当前的数据包注入率rate,输出rate至比较器;

第一阈值比较器,用于将rate和设定第一阈值进行比较,得到第一唤醒信号wu1并将其输入到pg控制器中;

仲裁分配模块包括输入仲裁模块、偏转判断模块、偏转数目计数器、偏转率计算函数模块、第二阈值比较器、竞争判断模块、竞争数目计数器、竞争率计算函数模块和第三阈值比较器;其中,

输入仲裁模块,用于在多个输入端口请求相同的最佳输出端口情况下,采用仲裁算法进行仲裁,控制交叉开关模块进行输入端口和输出端口的数据交换;产生的微片仲裁结果输出至偏转判断模块和竞争判断模块;

偏转判断模块,用于根据产生的微片仲裁结果,得到偏转信号def,偏转信号def输出至偏转数目计数器;当def值为0则代表此时无微片争夺情况产生,不会有任何微片被偏转;当def值为1则表示有偏转情况产生;

偏转数目计数器,用于当有偏转情况产生即def值为1,偏转数目信号def_num的值就加1,输出偏转数目信号def_num至偏转率计算函数模块;

偏转率计算函数模块,用于根据def_num和当前网络的总时钟周期数,计算此时该路由器的微片偏转率def_rate,输出def_rate至第二阈值比较器;

第二阈值比较器,用于将def_rate与设定第二阈值进行比较,得到第二唤醒信号wu2输出至pg控制器;

竞争判断模块,用于产生竞争信号com并将其输出至竞争数目计数器;当无微片争夺情况产生,竞争信号com值为0;当有微片争夺情况产生,竞争信号com值为1;

竞争数目计数器,用于输出偏转数目信号com_num至竞争率计算函数模块,一旦有竞争发生com_num的值就加1;

竞争率计算函数模块,根据com_num和当前网络的总时钟周期数,计算此时该路由器的微片争夺率com_rate并将其输出至第三阈值比较器;

第三阈值比较器,用于将com_rate与设定第三阈值进行比较,得到第三唤醒信号wu3并将其输出至pg控制器;

输入端口控制模块,用于当接收到关断信号en的值为1时,将东输入端口、西输入端口、南输入端口、北输入端口到来的微片输入至直通单元;当接收到关断信号en的值为0时,将输入端口传输过来的微片保存至输入混合缓存区;

直通单元,根据路由器所处网络的位置,设置输入端口与输出端口的连接形式,从而将接收的微片输出至输出端口,从而实现将输入微片转发至网络中的相邻路由器节点;

输入混合缓存区,用于存放微片并将其输出至路由计算模块;

路由计算模块,用于对输入混合缓存区中的微片进行解析,采用路由算法计算获得微片的下一个转发方向,为微片选择在网络中的最佳输出端口;解析后的微片通过仲裁分配模块和交叉开关模块转发至所选择的输出端口。

作为本发明所述的一种可动态切换工作模式的片上网络路由器进一步优化方案,所述直通模块设定所有输入端口与输出端口之间只有一条固定连接路径,即只有从当前路由器的固定路径两端方向到来的微片,才被转发到相应输出端口;且每个路由器直通模块根据路由器在网络中的位置选择的直通路径,必须保证要能在二维网格结构中形成一个能连接到所有节点的单向环;其中,每个路由器选择的直通路径共有6种形式,分别是东南方向连通、西南方向连通、西北方向连通、东北方向连通、东西方向连通和南北方向连通。

作为本发明所述的一种可动态切换工作模式的片上网络路由器进一步优化方案,所述仲裁算法支持一种基于偏转次数和路由跳数的仲裁机制;其中,基于偏转次数和路由跳数的仲裁机制包含输入微片优先级判断法和空闲输出端口分配法;当出现多个输入微片同时争夺同一输出端口时,首先用输入微片优先级判断法对各输入微片进行优先级排序,优先级最高的得到最佳输出端口,其余的则再次用空闲输出端口分配法确定优先级最高的输出端口为最合适的空闲输出端;

输入微片优先级判断法:用于对请求同一最佳输出端口的微片进行优先级排序,用微片的偏转次数和总路由跳数相结合来判断优先级高低;其中,偏转次数最大的优先级最高,相同偏转次数时比较微片在网络中已经历的路由总跳数,已经历的路由总跳数大的优先级高,此方法保证,被偏转最多且在网络中存在时间最久的微片具有最高优先级,能够被传输至最佳输出端口;

空闲输出端口分配法:对路由器的各输出端口也进行优先级排序,对每一个到来的包头微片,计算出其当前所在路由器各个输出端的优先级,并且微片每到一个路由器均要重新计算更新一次。

作为本发明所述的一种可动态切换工作模式的片上网络路由器进一步优化方案,输入仲裁模块包括状态机、轮询仲裁模块、基于偏转次数和路由跳数的仲裁模块、空闲端口偏转模块和输出判断模块;第二唤醒信号wu2和第三唤醒信号wu3还输出至状态机;

状态机,用于根据接收的第二唤醒信号wu2和第三唤醒信号wu3,输出使能控制信号enable至轮询仲裁模块、基于偏转次数和路由跳数的仲裁模块、空闲端口偏转模块和输出判断模块;

轮询仲裁模块,用于根据enable,对微片的最佳输出端口和包头信息采用轮询机制,输出各微片的仲裁结果至输出判断模块;

基于偏转次数和路由跳数的仲裁模块,用于对微片的最佳输出端口和包头信息采用基于偏转次数和路由跳数的仲裁机制,得到各微片的仲裁结果和空闲端口集合,各微片的仲裁结果输出至输出判断模块,空闲端口集合输出至空闲端口偏转模块;

空闲端口偏转模块,用于输出偏转结果;

输出判断模块,用于根据当前的使能控制信号enable得到各输入微片最终选择的输出端口,以此来作为交叉开关模块的控制信息,将路由器的输入微片传输至相应输出端口。

作为本发明所述的一种可动态切换工作模式的片上网络路由器进一步优化方案,输入混合缓存区是由sram和stt-ram混合构建;输入至输入混合缓存区的微片通过数据读写及迁移机制,实现微片到输入混合缓存区的写入和读出操作;所述数据读写及迁移机制是,到来的微片在访问某输入端口时,初始只能写入输入混合缓存区的sram中,当多个同时到来的微片数据竞争同一输出端口时,再把仲裁失败的微片迁移到stt-ram中缓存;当读数据信号有效时,微片会从输入混合缓存区中按顺序被依次读出。

基于本发明所述的一种可动态切换工作模式的片上网络路由器的动态切换方法,当某路由器所连处理器核处于长期空闲或者不工作状态时,则关闭其路由功能并打开直通模块,使其工作在直通模式下;

当路由器的网络通信注入率由低逐渐增加到设定第一阈值时,若此路由器初始工作在直通模式下,则将其直通模块的电源关断并唤醒除输入混合缓存区以外的其它模块,将其切换到无缓存模式下进行微片的路由传输;

当工作在无缓存模式下路由器的微片偏转率超过设定第二阈值时,将各个输入端口的输入混合缓存区唤醒,将路由器切换到混合缓存模式下工作;

当工作在混合缓存模式下路由器的输入微片争夺率低于设定第三阈值,则将各方向的输入混合缓存区用电源门控技术再度进行关断,将其重新切换到无缓存模式下继续工作,所有到来的微片数据不再存放到输入混合缓存区中,而是直接在输入端口控制模块进行解析后,进入路由计算模块获得微片的下一个转发方向,得到最佳输出端口。

作为本发明所述的一种可动态切换工作模式的片上网络路由器的动态切换方法进一步优化方案,直通工作模式:是指路由器只能接收从其它路由器传来的微片,并在直通模块中对微片进行定向转发;

无缓存工作模式:各方向到来的输入微片直接传至路由计算模块,得到最佳输出端口信息,并在仲裁分配模块中选择出最终输出端口,最终从交叉开关模块传至对应输出端口;此模式下输入混合缓存区不工作;

混合缓存工作模式:所有输入微片在经过输入端口控制模块的解析后,首先存储到各方向的输入混合缓存区中,然后微片的包头信息进入路由计算模块计算最佳输出端口,接着进入仲裁分配模块,采用轮询方式进行仲裁来判断输入、输出端口的连接关系,最后仲裁成功的微片从最佳输出端口传输至下一跳相邻路由节点,而仲裁失败的微片则依旧存储在输入混合缓存区中,等待下一次重新参与路由。

作为本发明所述的一种可动态切换工作模式的片上网络路由器的动态切换方法进一步优化方案,所述设定第一阈值是路由器节点的微片注入率为0.06微片/周期,设定第二阈值是路由器节点的微片偏转率为0.07微片/周期,设定第三阈值是路由器节点的微片争夺率为0.04微片/周期。

本发明采用以上技术方案与现有技术相比,具有以下技术效果:

(1)本发明可动态切换于多种工作模式的片上网络路由器包括直通模式、无缓存模式和混合缓存模式三种工作模式,可依据多核处理器片上系统不同的运行和通信状况在各工作模式间进行动态切换;

(2)本发明相比基本结构的虫孔路由器,在增加了较小面积开销的情况下,通过模式间的动态切换能有效降低路由器功耗,从而面向暗硅问题达到优化多核系统功耗的目的。

附图说明

图1是可动态切换于多种工作模式的路由器总体结构图。

图2是pg控制器的状态转换图;其中,(a)为en为0即有任务要执行,(b)为en为1即无任务要执行。

图3是4*4noc中各路由器的直通路径示意图。

图4是输入仲裁模块的内部结构和对应状态转换图,其中,(a)为内部结构图,(b)为状态转换图。

图5是无缓存工作模式下的微片输入优先级判断法流程图。

图6是无缓存工作模式下的微片空闲端口分配法流程图。

图7是混合输入缓存区的内部结构图。

图8是混合输入缓存区中微片的读写与迁移过程图;其中,(a)为sram缓存区的数据读写过程图,(b)为混合缓存区的数据读写、迁移过程图。

图9是直通到无缓存模式切换的内部结构图。

图10是无缓存到混合缓存模式切换的内部结构图。

图11是混合缓存到无缓存模式切换的内部结构图。

具体实施方式

下面结合附图对本发明的技术方案做进一步的详细说明:

本发明一种可动态切换工作模式的片上网络路由器,是在基本虫孔片上网络路由器结构上增加pg控制器、三个门控晶体管以及直通模块,同时还对原输入仲裁分配模块进行了修改设计,并用stt-ram和sram以一定比例构成的输入混合缓存区,替代传统的纯sram输入缓存区来实现的。本发明的路由器结构如图1所示。

本发明的路由器支持三种工作模式,即直通模式、无缓存模式和混合缓存模式。

当路由器初始工作在直通模式下时,其路由计算、仲裁分配等功能被关闭,且不可进行本地输入微片的发送和接收,只能接收从相邻路由器传来的微片,并在直通模块中对其进行定向转发。此模式下的路由器功耗最低,但只适合在网络注入率较低时使用;

当路由器工作在无缓存模式下时,各方向到来的输入微片直接传至路由计算模块,得到最佳输出端口信息,并在仲裁分配模块中按本发明提出的基于偏转次数和路由跳数的仲裁机制选择合适的输出端口,最终从交叉开关模块传至对应输出端口。此模式下的输入混合缓存区不工作,因此路由器功耗大大降低,但仅适合在数据包偏转率较低时使用;

当路由器工作在混合缓存模式下时,可进行本地数据的发送和接收、路由计算、数据转发等所有功能,即所有输入微片在经过输入端口控制模块的解析后,首先存储到各方向的混合缓存区中,然后包头信息进入路由计算模块计算最佳输出端口,接着进入仲裁分配模块,采用轮询方式进行仲裁来判断输入、输出端口的连接关系,最后仲裁成功的微片从最佳输出端口传输至下一跳相邻路由节点,而仲裁失败的微片则依旧存储在输入端的混合缓存区中,等待下一次重新参与路由。由于输入混合缓存区是由sram和stt-ram以一定比例混合构建,到来的微片需要通过本发明所设计的数据读写及迁移机制,实现到混合缓存区的写入和读出操作。此模式下的路由器功耗最高,但比起基本纯sram缓存的路由器还是有所下降。

pg控制器用来决定路由器当前的工作模式。当路由器被选为直通模式时,pg控制器输出门控信号控制所连门控晶体管关闭路由器的部分路由模块,只打开输入端口控制模块、输出端口模块以及新增的直通模块;当路由器为无缓存模式时,pg控制器输出门控信号将直通模块关闭,同时打开除输入混合缓存区以外的路由计算、仲裁分配等路由模块;当路由器为混合缓存模式时,pg控制器输出门控信号打开混合输入缓存区。

pg控制器的状态转换过程如图2所示。图2中的(a)为en为0即有任务要执行时pg控制器的状态转换图,图2中的(b)为en为1即无任务要执行时pg控制器的状态转换图,其中状态转换过程中的输入信号是en、wu1、wu2和wu3,输出信号是pg1、pg2、pg3。它是根据路由器所连内核的关断信号en和三个唤醒信号wu1、wu2和wu3来进行直通模式、无缓存模式和混合缓存模式间的切换。本发明使用的是细粒度电源门控技术来对路由器中各模块进行独立开关,将每个路由器划分为可独立门控的三个模块,分别是与门控信号pg1相连的输入混合缓存区、与门控信号pg2相连的路由计算等模块和与门控信号pg3相连的直通模块。除此之外,输入、输出端模块均不需门控,与实际电源vdd相连即可。这三个模块分别由三个门控晶体管控制,所有门控晶体管均与实际电源vdd相连,根据各自输入的门控信号pgn,来决定输出的虚拟电源vdd1、vdd2、vdd3的值,以实现对所连模块的电源门控。

pg控制器会根据网络中路由器所连资源内核有无任务需要执行的工作状态,即关断信号en来判定路由器的初始工作模式。当复位信号(rst)有效时,若关断信号en为0则代表当前路由器不可被关断,初始会工作在混合缓存模式下进行数据转发,此时输出的门控信号为001,pg1和pg2都为0,只有与直通模块相连的pg3值为1,表示只有直通模块的虚拟电源vdd3无效即被关断,其它两类模块的虚拟电源vdd1与vdd2均等于实际电源vdd。关断信号en为1时则相反,表示此节点在网络初始运作时,处于路由功能完全关断的状态,即工作在直通模式下,此时输出的门控信号为110,只有控制直通模块的门控信号pg3为0,代表其虚拟电源vdd3有效,而其它两类模块将被切断电源供给。路由器的初始工作模式确定后,要结合网络运行过程中产生的三个唤醒信号wu1、wu2和wu3来进行三种工作模式的动态切换。

在路由器工作在无缓存或混合缓存模式下执行通信任务(关断信号en等于0)时,如果不再有任务产生(信号en变为1)则切换到直通模式,输出门控信号110;反之(关断信号en依然为0),若路由器工作在混合缓存模式下,当唤醒信号wu3从0变为1时要切换到无缓存模式,输出门控信号为101,若路由器工作在无缓存模式下,当唤醒信号wu2从0变为1时要切换到混合缓存模式,输出门控信号为001;而无论当前工作在何种模式下,若复位信号rst变为1时均要切换到混合缓存模式,输出门控信号为001。

在路由器的初始关断信号en等于1(无任务需要执行)而工作在直通模式下时,如果有新的通信任务需要产生则直接切换到无缓存模式,输出门控信号为101;反之,路由器工作在直通模式下时,当仅有唤醒信号wu1有效为1时,会被切换到无缓存模式,输出门控信号为101;随后,当工作在无缓存模式下,唤醒信号wu2变为1时,路由器要被切换到混合缓存工作模式,输出门控信号为001;此时,当唤醒信号wu3有效从0变为1后,路由器再度被切换到无缓存模式,输出门控信号为101;除了上述几种情况,无论路由器当前处于哪种工作模式,一旦复位信号rst有效,均要切换到直通模式。

直通模块仅在路由器工作在直通模式下时打开,其功能类似于一个开关,用于将某输入端口到来的微片数据直接按所选路径传送至某固定输出端,不需要经过传统的路由仲裁、开关分配等完成微片的传输交换,所以直通模式下的路由器节点退化为开关,微片在传输时只消耗开关连接的链路功耗。网络中各个路由器输入输出相连方式是不同的,它们具体如何互连与处于网络中的位置有关,只有从当前节点的固定路径两端方向到来的微片,才可以被转发到相应输出端口,其它输入端口到来的微片则会被丢弃,需要重新从源节点发送。当出现极端情况即所有路由器均被关断时,为了进一步保证网络的连通性,要求网络中的任意两个路由器之间依旧能互相通信。因而本发明规定每个路由器直通模块选择的路径,必须保证要能在二维网格结构中形成一个能连接到所有节点的单向环,如图3所示,由图可知在二维网格片上网络中一共会存在6种形式的直通路径,分别是东南方向连通、西南方向连通、西北方向连通、东北方向连通、东西方向连通和南北方向连通。

输入端口控制模块,用于在接收到的节点关断信号en有效(值为1)时,将东输入端口、西输入端口、南输入端口、北输入端口的微片数据输入至直通模块;当接收到的关断信号值为0时,将输入端口传输过来的微片数据保存至输入缓存区。

仲裁分配模块,用于在多个输入端口请求相同的最佳输出端口情况下,采用规定的仲裁算法进行仲裁,控制交叉开关模块进行输入端口和输出端口的数据交换。为了同时支持无缓存和混合缓存模式下的数据微片仲裁功能,本发明对基本虫孔路由器中的仲裁分配模块进行了修改,不仅支持传统的轮询仲裁算法,还支持本发明提出的一种基于偏转次数和路由跳数的仲裁机制。该模块用使能控制信号enable来对不同工作模式下路由器选用的仲裁机制进行动态配置,其内部电路结构以及状态转换过程如图4所示,图4中的(a)为输入仲裁模块的内部结构图。该模块的输入信号除了从路由计算模块得到的各微片最佳输出端口结果,以及各输入微片的包头信息外,还包括两个唤醒信号wu2、wu3,输出的结果是所有输入微片最终选择的输出端口。所有到来微片的最佳输出端口和包头信息要同时输入到两个仲裁判断模块中,而两个唤醒信号则要输入到一个状态机中,根据状态机的输出信号enable来进行仲裁机制的选择。轮询仲裁模块中使用的是传统的轮询机制,输出的是各微片的仲裁结果;而偏转仲裁模块中使用的是本发明提出的仲裁偏转分配机制,输出的是各微片的仲裁和偏转结果。将上述两个模块的输出传至输出判断模块,根据当前的使能信号enable得到各输入微片最终选择的输出端口,以此来作为交叉开关的控制信息,将路由器的输入微片传输至相应输出端口。此模块中的状态转换过程如图4中的(b)所示,其中状态转换过程中的输入信号是wu2和wu3,输出信号是enable:当唤醒信号wu2为0时,使能控制信号enable的值为1,代表原轮询仲裁机制功能被禁止,处于非工作状态,而本发明提出的基于偏转次数和路由跳数的仲裁机制会被调用,成为路由器工作在无缓存模式时的一部分。当wu2为1而wu3为0时,使能信号enable的值变为0,此时路由器工作在混合缓存模式下,原轮询仲裁模块被调用。

本发明路由器提出的基于偏转次数和路由跳数的仲裁机制包含两个步骤,输入微片优先级判断和空闲输出端口分配。在无缓存工作模式下,当出现多个输入微片同时争夺同一输出端口时,此机制首先用输入优先级判断法对各输入微片进行优先级排序,优先级高的得到最佳输出端口,优先级低的则再次用空闲输出端口分配法确定最合适的空闲输出端。本发明仲裁偏转机制中的输入微片优先级判断法和空闲输出端口分配法的流程如图5和图6所示,下面对这两种方法进行详细介绍:

(1)输入微片优先级判断法:此方法用于对请求同一最佳输出端的微片进行优先级排序,用微片的偏转次数和总路由跳数相结合来判断优先级高低。其中,偏转次数最大的优先级最高,相同偏转次数时比较微片在网络中已经历的路由总跳数,较大的优先级较高。此方法可以保证,被偏转最多且在网络中存在时间最久的微片具有最高优先级,能够被传输至最佳输出端口。

(2)空闲输出端口分配法:该方法提出对路由器的各输出端口也进行优先级排序,对每一个到来的包头微片(一个数据包分成若干个微片,第一个才是包头微片,包含当前和目的路由器的地址信息,其余的是数据微片),计算出其当前所在路由器各个输出端的优先级,并且微片每到一个路由器均要重新计算更新一次。在(1)中因优先级较低而争夺失败的微片,可用该方法选择最合适即优先级最高的空闲端口进行偏转输出,由于争夺失败的微片不能被偏转到本地输出端口(会产生误传),在二维网格noc网络中,只需计算东南西北四个输出端口的优先级即可,每个输出端口优先级用2bit表示。用下列几种情况来详细描述各输出方向的优先级大小(流程图见图6所示,图中ycur表示当前节点的y维度地址,ydest表示目的节点的y维度地址)。

(a)输入微片的最佳输出端口为西端口时,西端口的优先级为2’b11,而与之完全相反的东输出端口的优先级为2’b00;

(b)当最佳输出端为东端口时,则东端口的优先级为2’b11,西端口的优先级为2’b00;

对于以上两种情况,结合包头微片中的当前路由器与目的路由器地址可得:若当前与目的节点的地址在同一y维度,则北端口和南端口的优先级均为2’b10;若不在同一y维度,如果当前节点的y维度地址大于目的节点的,那么北端口为2’b10而南端口为2’b01,否则北端口为2’b01而南端口为2’b10。

(c)当最佳输出端为北端口时,北端口的优先级为2’b11,而南端口的优先级为2’b00;

(d)当最佳输出端口为南端口,南端口的优先级为2’b11,北端口的为2’b00;

由于采用的是确定性路由算法,在以上两种情况中,东西端口的优先级都只能为2’b01。

实际上,在网络中争夺失败的微片会产生两种类型的偏转,一种是向完全相反的方向,另一种则是向其它端口方向(可能会仍旧处于另一条最短路由路径)。因而包头微片的偏转次数更新过程可以细分为如下情况:选择了最佳输出端口方向(最高优先级)的微片,偏转程度为2’b00,此时偏转次数不变;选择了完全相反方向(最低优先级)的微片,偏转程度为2’b11,输出的偏转次数加2;选择其它方向的为2’b01或2’b10,输出的偏转次数加1。

输入混合缓存区,是用传统存储器sram和新兴存储技术中的stt-ram以一定比例相混合构建的,用于存储各个方向到来的微片数据,可以最大化的结合两种存储器的优点,即stt-ram的大容量、零泄漏功耗和sram的对称读写性能。此模块中任意方向的缓存区均由多个虚拟通道vc构成,而每个vc都是由相同混合比例的sram与stt-ram组成,其内部结构如图7所示。假设每个vc的缓存深度均为4个微片,分别是2个微片深度的sram和2个微片深度的stt-ram。每个输入缓存区均可以存储多个微片,为了读写方便,缓存区用并行结构实现,即到来的微片可以直接顺序写入到某空闲位置或从中读出到其它模块,而不需要将所有的缓存区均完整遍历一遍。缓存区中的微片均要经历读写两种操作,由读写逻辑控制器来控制读写指针,以实现输入微片在缓存区的写入与读出。首先确定当前输入缓存区是否已满,如果没有则令写指针有效,将微片通过写操作存储到某空闲位置。然后,当读信号有效时,微片再从该位置被读出到其它模块,读操作完成后该输入缓存区就会多出一个空闲位置。

本发明路由器在输入混合缓存区中还应用了一种提出的数据读写与迁移机制,能够控制读写逻辑控制器中的读写指针对两种缓存区进行独立的读写操作。此机制规定到来的微片在访问某输入端口时,一开始只能被写入到sram中,当满足一定迁移条件时,才能从sram中被写入到stt-ram。但是当读数据信号有效时,微片会从混合缓存区中按顺序被依次读出。迁移条件如下所述:存放在sram缓存区的输入微片经过路由计算、仲裁分配等模块后,仲裁结果会再次输入到混合缓存区。其中,仲裁成功的微片会从sram中读出到交叉开关模块,争夺失败的微片也不再存储于sram,而是要向空闲的stt-ram缓存区进行写迁移。

此机制的详细读写与迁移过程如图8所示。在图8中的(a)中,假设网络中的数据包由6个微片组成。当第一个包头微片到来时,在cycle1写入到sram中并进行路由计算,cycle2时进行输出端的仲裁判断并将结果返回到缓存区。由于该微片争夺成功,将在cycle3被读出到交叉开关。由于所有微片都是流水线传输的,该数据包剩余的5个微片将在接下来的5个cycles内依次被输出至同一输出端,在cycle8完成一次完整路由传输。而图8中的(b)到来的包头微片首先也被写入到空闲sram缓存区。在cycle1时头微片被写入sram并进行路由计算,cycle2则开始仲裁分配并将结果返回到sram。由于该头微片仲裁失败,在cycle3时就要开始往空闲stt-ram迁移,其中包头微片将在cycle8被成功迁移写入到stt-ram(假定stt-ram的写延时为6个时钟周期),剩余的5个微片(属于同一数据包)也会在5个周期内顺序完成迁移。与此同时,图8中的(a)中存储在sram的数据包,也会在cycle8完成一次完整的路由传输。因此,存储在stt-ram的flit1将在cycle9重新参与路由,不再产生额外写延时,而且sram也将多出空闲位置来存储新微片。

除了上述模块,本发明路由器还需包括基本路由器模块:输入输出端口、路由计算模块、交叉开关以及输出端口模块。输入输出端口包括东输入输出端口、西输入输出端口、南输入输出端口、北输入输出端口、本地输入输出端口,分别通过链路连接东西南北向的其它路由单元和本地处理器核;路由计算模块处理来自四个方向和本地端口的路由请求,对输入缓冲区中的包头微片进行解析,根据选用的路由算法计算获得数据包的下一个转发方向,选择输出端口;交叉开关负责将路由器的输入通道连接到选定的目标输出通道,通过输出端口模块传输至相应输出端口。

本发明公开的路由器包括直通模式、无缓存模式和混合缓存模式,可依据多核处理器片上系统不同的运行和通信状况在三种工作模式间动态切换,以面向暗硅问题达到优化系统功耗的目的。在本发明中,每个路由器的工作模式切换主要与当前的网络通信状况,以及所连资源内核执行任务的情况有关,若当前路由器需要执行网络的通信任务而工作在无缓存或混合缓存模式下时,所连资源内核不再产生或接收通信任务,则此路由器将直接切换到直通工作模式;而若当前路由器初始因暗硅问题而工作在直通模式下时,所连资源内核有任务到来即需要重新参与网络间的通信交互,此路由器则会切换到无缓存工作模式进行路由。除了以上两种情况,其它各模式间的动态切换均要考虑当前的网络负载和运行情况,主要包括直通到无缓存模式、无缓存到混合缓存模式以及混合缓存到无缓存模式这三种切换,它们的切换过程详细介绍如下:

(1)直通到无缓存的模式切换过程:在路由器的直通模块中,增加了一个计数器和比较器,用于判断路由器何时要切换到无缓存工作模式,如下图9所示。首先,数据包计数器对当前路由器中到来的完整数据包进行计数,得到数据访问次数cnt1。然后将cnt1和经历的总时钟周期数clock_cycles输入到注入率计算函数器中,计算得到当前的数据包注入率rate。最后将rate传至阈值比较器和设定阈值1进行比较,得到唤醒信号wu1,并将其输入到pg控制器中,决定是否要进行路由器工作模式的切换。一旦计算所得的注入率超过设定阈值1,则说明当前路由器的利用率较高,即有越来越多的数据包需要经过此路由器传输至最终的目的节点,如果该路由器一直处于无需路由计算的直通模式,将会带来过大的数据包拥塞以及误传,最终可能会产生死锁。故当唤醒信号wu1变为有效(节点访问率超过阈值1)时,pg控制器中的状态机就会进行状态转换,各个门控信号的值也会发生变化,此时当前路由器会被切换到无缓存工作模式。

(2)无缓存到混合缓存的模式切换过程:在无缓存模式中,争夺最佳端口失败的输入微片将会被偏转至其它空闲端口,意味着此微片脱离了既定的最短路由路径,这样的微片偏转情况多了以后,网络发生拥塞、活锁的概率也会大幅度增加。因此,我们在无缓存模式路由器中的空闲端口偏转模块内增加一个模式切换结构如图10所示,当该路由器带来的偏转率高于设定阈值2时,就将其切换到混合缓存工作模式。首先,输入仲裁模块产生的微片仲裁结果会输入到偏转判断模块中,得到偏转信号def,其值为0则代表此时无微片争夺情况产生,不会有任何微片被偏转;值为1则表示有偏转情况产生。然后,偏转信号def输入到偏转数目计数器中,输出偏转数目信号def_num,一旦有偏转发生def_num的值就要加1。接着def_num和当前网络的总时钟周期数clock_cycles一起输入到偏转率计算函数中,计算此时该路由器的微片偏转率def_rate。最后将def_rate传至阈值比较器中与设定阈值2进行比较,得到唤醒信号wu2。当唤醒信号wu2也变为有效时,pg控制器中输出的各个门控信号的值会再度发生变化,当前路由器会被切换到正常的混合缓存工作模式。

(3)混合缓存到无缓存的模式切换过程:当路由器工作在混合缓存模式中时,争夺最佳端口失败的输入微片将会被存储到输入缓存区,当微片竞争率比较低时可以切换到无缓存模式,以降低功耗。因此,我们在混合缓存模式路由器中的仲裁分配模块内增加一个如图11的模式切换器,当路由器的微片竞争率高于设定阈值3时,就将其切换到无缓存模式。首先,输入仲裁模块产生的微片仲裁结果会输入到竞争判断模块中,得到竞争信号com,其值为0则代表此时无微片争夺情况产生;值为1则表示有微片争夺情况产生。然后,信号com输入到竞争数目计数器中,输出偏转数目信号com_num,一旦有竞争发生com_num的值就要加1。接着com_num和当前网络的总时钟周期数clock_cycles一起输入到竞争率计算函数中,计算此时该路由器的微片争夺率com_rate。最后传至阈值比较器中与设定阈值3进行比较,得到唤醒信号wu3。当唤醒信号wu3也变为有效时,pg控制器中输出的各个门控信号的值会再度发生变化,路由器被切换到无缓存工作模式。

本发明路由器的三个切换阈值分别是:所述设定阈值1是路由器节点的微片注入率为0.06微片/周期,即平均100个cycles内有6个微片访问此路由器;所述设定阈值2是节点的微片偏转率为0.07微片/周期,即此路由器平均在100个cycles内有7个微片发生了最佳路径偏转;所述设定阈值3是节点的微片争夺率为0.04微片/周期,即平均在100个cycles内有产生4次最佳输出端口的争夺。

应用上述方法可以构成可动态切换于多种工作模式的片上网络路由器,适用于各种尺寸的规则互连网络,可实现暗硅问题下片上网络的互连优化,并且可以依据多核处理器片上系统不同的运行和通信状况在各种工作模式间切换,以达到优化多核系统功耗的目的。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替代,都应当视为属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1