本发明涉及集成电路中的片上网络领域,尤其涉及一种基于重计算的三维片上路由装置及其方法。
背景技术:
随着三维集成电路的发展以及片上网络规模的不断扩大,在2005年研究人员首次提出三维片上网络(three-dimensionalnetworkonchip,3dnoc)。3dnoc缩短了物理连线长度,降低了数据传输延时,提高了芯片集成密度。在同等网络规模下,3dnoc相比具有平面局限性的2dnoc可以提高33%左右的性能,以其重要的学术价值和广阔的应用发展前景引起了学术界和工业界的广泛关注。作为三维片上网络数据包传输方式的决定者,三维片上路由方法不仅可以提高片上资源利用率,还决定着数据包传输延时和网络吞吐率,因此简单高效的三维片上路由方法对片上系统性能有着极为重要的影响。
三维片上路由器中的缓存可以用来存储竞争失败或等待传输的数据包,因此在片上路由器中引入缓存能够解决网络中的数据包冲突并提高带宽,然而,缓存的引入不仅增加了片上路由器的设计难度(数据包缓存逻辑和流量控制策略),还消耗了大量网络资源。比如,raw和trips处理器的缓存分别占用片上网络31%和35%的功耗。tile64处理器的缓存占用片上网络60%的面积。为了解决缓存带来的问题,端口缓存被完全移除的微缓存路由器架构被设计提出,当数据包彼此竞争同一输出端口而发生冲突或竞争时,只有高优先级的数据包能够顺利传输,其他竞争失败的数据包可以存储在旁路缓存等待下次竞争或转向到其他输出端口进行传输。一旦优先级机制无效,本不该被转向的高优先级数据包发生了错误的转向,导致该数据包远离目的节点,增加传输延时和数据包转向次数,降低网络传输性能。目前有基于age[1]、goldenpacket[2]和silverflit[3]的优先级机制,可是基于age的优先级分配机制会占用数据包头大量空间,而且需要在路由器的仲裁单元加入较大的比较器,造成资源浪费。基于goldenpacket和silverflit的优先级分配机制不能保证数据包在下游路由器具有同样的优先级。
[1]michelogiannakisg,sanchezd,dallywj,etal.evaluatingbufferlessflowcontrolforon-chipnetworks[c].acm/ieeeinternationalsymposiumonnetworks-on-chip.ieee,2010:9-16.
[2]fallinc,craikc,mutluo.chipper:alow-complexitybufferlessdeflectionrouter[c].internationalsymposiumonhighperformancecomputerarchitecture.ieee,2011:144-155.
[3]fallinc,nazariog,yux,etal.minbd:minimally-buffereddeflectionroutingforenergy-efficientinterconnect[c].ieee/acmsixthinternationalsymposiumonnetworks-on-chip.ieee,2012:1-10.
技术实现要素:
鉴于有效的数据包优先级分配与维护机制对于微缓存路由器架构具有重要的意义,本发明提供一种基于重计算的三维片上路由装置及其方法,能够有效的维护数据包优先级,以达到三维片上网络的实时处理功能。
为达到上述目的,本发明的技术方案是这样实现的:
一种基于重计算的三维片上路由装置,其特征在于,包括通过传输通道依次连接的输入端口、本地排出单元、地址计算单元、优先级排序单元、重计算单元,输出端口;其中:
本地排出单元,用于将本地数据包从传输通道排出到ip核;
地址计算单元,用于计算数据包的传输方式,根据当前节点和目的节点的位置坐标,通过计算决定数据包进行层间传输还是层内传输;
优先级排序单元,用于排序数据包;首先将各个数据包的优先级两两进行比较,得到比较结果,然后将各优先级比较结果进行累加,从而得到优先级排序结果;高优先级数据包优先选择最佳传输端口;
重计算单元,用于数据包优先级重计算,当数据包即将传输到下一装置时,重计算单元根据重计算策略重新计算数据包优先级。
进一步的,所述优先级排序单元和重计算单元之间还设有旁路缓存排出单元,用于排出不能从最佳端口输出的数据包至旁路缓存单元进行存储。
更进一步的,所述输入端口和本地排出单元之间还设有与旁路缓存单元连接的旁路缓存注入单元,用于将旁路缓存单元存储的数据包重新注入到传输通道。
进一步的,所述本地排出单元还连接排出缓存单元,不能及时排出的本地数据包优先进入排出缓存单元,在下一个时钟周期排出到ip核。
进一步的,从最佳端口输出的层间数据包不需要经过重计算单元,直接向层间下一装置传输;从最佳端口输出的层内数据包需要经过重计算单元重新计算优先级后再向层内下一装置传输。
本发明的另一方面,还提供了一种基于重计算的三维片上路由方法,包括:
1)注入数据包:ip核发出的本地数据包由本地注入单元进行注入;其他装置传输到本装置的数据包在输入端口进行注入;
2)检查数据包是否为本地数据包,如果是,从本地排出单元将数据包排出到ip核,此次传输结束;否则,转到步骤3);
3)根据数据包目的地址计算确定数据包传输方式是进行层间传输还是层内传输;
4)根据优先级排序数据包;
5)如果数据包可以从最佳端口输出,在满足重计算规则情况下,执行重计算并选择最佳端口传输到下一装置;否则,转到步骤6);
6)数据包从非最佳传输端口输出,在满足重计算规则且即将通过输出端口传输到下一装置时,进行优先级重计算,维护优先级信息。
进一步的,步骤1)中,还包括旁路缓存中存储的数据包由旁路缓存注入单元进行注入;步骤6)中,在数据包从非最佳传输端口输出之前,如果旁路缓存有空闲位置,将数据包存储到旁路缓存中,执行步骤1);否则,继续执行步骤6)。
进一步的,步骤2)中,所述本地排出单元还连接排出缓存单元,不能及时排出的本地数据包优先进入排出缓存单元,在下一个时钟周期排出到ip核。
进一步的,步骤4)所述根据优先级排序的方法为:
4.1)将每个传输通道中数据包的优先级都与其他数据包的优先级一一进行比较。如果被比较的数据包优先级较低,则将比较结果设置为1;否则,比较结果为0;
4.2)累加两两比较的结果;
4.3)将数据包的优先级与累加结果一一对应,方便排序结果输出;
4.4)输出优先级排序结果。
进一步的,步骤5)和步骤6)所述重计算规则为:从最佳端口输出的层间数据包不需要经过重计算,直接向层间下一装置传输;从最佳端口输出的层内数据包需要经过重计算优先级后再向层内下一装置传输。
与现有技术相比,本发明的有益效果为:
本发明提供的一种基于重计算的三维片上路由装置及其方法,由于本装置和方法中数据包优先级信息根据当前节点相对目的节点的方向(directiontodestination,dtd)进行优先级重计算,一方面可以保证数据包优先级是合理的。另一方面可以保证数据包优先级从数据包发出到接收一直有效,避免了产生错误转向的情况。
此外,通过在本地排出单元引入排出缓存,使不能及时排出的本地数据包可以暂时存储在排出缓存,很好地解决了本地数据包不能及时排出到ip核而被转向传输甚至形成绕路传输的问题,降低了本地数据包被转向传输以及绕路传输的次数,进而降低了数据包在网络中的传输延时。
附图说明
图1为本发明实施例提供的一种基于重计算的三维片上路由装置示意图;
图2为本发明实施例提供的一种基于重计算的三维片上路由方法流程示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
图1是根据实施例示出的一种基于重计算的三维片上路由装置图。该装置主要包括注入单元、排出单元、计算单元、缓存单元和优先级排序单元等,应用于三维片上网络领域中。
1)旁路缓存注入单元,用于注入数据包,当有传输通道空闲时,旁路缓存注入单元将其存储的数据包重新注入到通道;
2)本地排出单元,用于排出数据包,在本地端口空闲时,本地排出单元将本地数据包从传输通道排出到ip核。本地排出单元引入可以存储一个数据包大小的排出缓存,使不能及时排出的数据包优先进入缓存单元,在下一个时钟周期排出到ip核;
3)本地注入单元,用于注入本地数据包,当有传输通道空闲时,本地注入单元将ip核发出的数据包注入到通道;
4)地址计算单元,用于计算数据包的传输方式,根据当前节点和目的节点的位置坐标,地址计算单元通过计算决定数据包进行层间传输还是层内传输;
5)优先级排序单元,用于排序数据包,优先级排序单元首先将各个数据包的优先级两两进行比较,得到比较结果。然后将各优先级比较结果进行累加,从而得到优先级排序结果;
6)旁路缓存排出单元,用于排出数据包到旁路缓存,在旁路缓存有空闲位置的情况下,旁路缓存排出单元将不能从最佳端口输出的数据包存储到旁路缓存中,等待重新进入网络;
7)重计算单元,用于数据包优先级重计算,当数据包即将传输到下一装置时,重计算单元根据重计算策略重新计算数据包优先级;
8)旁路缓存单元,用于存储不能从最佳端口输出的数据包,数据包的存储与释放采用先入先出策略且每个时钟周期只能存储一个数据包。
图2是根据实施例示出的一种基于重计算的三维片上路由方法流程图,该流程图涵盖了数据包在此装置中路由的完整流程,主要包括注入数据包、判断数据包、计算传输方式、数据包排序、判断最佳输出端口与旁路缓存、排出数据包等流程。具体包括:
1)注入数据包,包括:本地注入,端口注入,旁路缓存注入
ip核发出的本地数据包由本地注入单元进行注入;
其他端口传输到此装置的数据包在输入端口进行注入;
旁路缓存中存储的数据包由旁路缓存注入单元进行注入。
2)检查数据包是否为本地数据包,如果是,从本地排出单元将数据包排出到ip核,此次传输结束;否则,转到步骤3);
3)根据目的地址计算确定数据包传输方式;
4)根据优先级排序数据包;
5)如果数据包可以从最佳端口输出,在满足重计算规则情况下,执行重计算并选择最佳端口传输到下一装置;否则,转到步骤6).;
6)如果旁路缓存有空闲位置,将数据包存储到旁路缓存中,等待重新注入,跳转到步骤1);否则,转到步骤7);
7)数据包只能从非最佳传输端口输出(即产生了转向),在满足重计算规则且即将传输到下一装置时,进行优先级重计算,维护优先级信息。
参照图1和图2,数据包最先进入输入端口,在输入端口与旁路缓存重新注入的数据包进行优先级比较,然后高优先级数据包顺利进入该装置开始向输出端口传输。
经过输入端口和旁路缓存注入单元的数据包在接下来的本地排出单元进行检查,如果是本地数据包,将该数据包传输到本地端口然后从本装置中排出;如果不是本地数据包,将数据包向装置中下一单元传输。
在本地排出阶段,如果本地排出端口被占用,数据包临时存储在排出缓存,等待在下个时钟周期排出。
数据包到达地址计算单元后,根据数据包中携带的目的地址计算出该数据包在此装置需要进行层间传输还是层内传输。如果目的节点与当前节点不在同层,那么该数据包需要层间传输,将该数据包优先级置为最高优先级;如果目的节点与当前节点位于同层,那么该数据包需要层内传输,不改变现有优先级。
数据包通过地址计算确定传输方式后到达优先级排序单元,在该单元将各个数据包的优先级两两进行比较,得到比较结果。然后将各优先级比较结果进行累加,从而得到优先级排序结果。优先级排序主要分为4个步骤:
步骤1将每个传输通道中数据包的优先级都与其他数据包的优先级一一进行比较。如果被比较的数据包优先级较低,则将比较结果设置为1;否则,比较结果为0。
步骤2累加两两比较的结果,累加和越大说明此数据包的优先级越高。因为在此装置中只有6个传输通道进行并行比较,所以每个数据包的累加结果仅用3位存储。
步骤3将数据包的优先级与累加结果一一对应,方便排序结果输出。
步骤4输出优先级排序结果。
在经过优先级排序单元排序后,高优先级数据包具有优先选择最佳传输端口的权利,可以根据dtd值选择最佳传输端口,如果最佳传输端口不被占用(即数据包可以从最佳端口输出),数据包传输到装置中的下一单元;否则,旁路缓存排出单元将数据包存储到旁路缓存,等待下次重新注入。
其中,从最佳端口输出的层间数据包不需要经过重计算单元而可以直接向层间下一装置传输;但从最佳端口输出的层内数据包需要经过重计算单元重新计算优先级后再向层内下一装置传输。
下面例举重计算单元重新计算数据包优先级的方法,但不限于该举例的方法。
例举,按照重计算策略,重计算单元重新计算数据包优先级的步骤包括:
步骤1根据数据包所选择的方向(n、e、w、s)进行dtd值重计算,其中距离目的节点最近的方向dtd值为0,最远的方向dtd值为2,其他情况dtd值为1。
步骤2dtd值重计算后,将dtd值与优先级相加作为数据包新的优先级。
按照上面步骤1和2,可以保证数据包优先级在下游装置不会发生改变,而且如果数据包从非最佳传输端口转向输出,那么该数据包可以获得较大的优先级,在下游装置中更可能获得优先选择最佳传输端口的权利。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
以上描述了本发明的基本原理、主要特征和实施方案等信息,但是本发明不受上述实施过程的限制,在不脱离发明精神和范围的前提下,本发明还可以有各种变化和改进。因此,除非这种变化和改进脱离了本发明的范围,它们应该被看作包含在本发明中。