一种高阶路由器输入端口缓冲优化结构的制作方法

文档序号:15130852发布日期:2018-08-10 05:30阅读:198来源:国知局

本发明属于高性能计算机系统互连网络领域,尤其是对应用到高性能计算机系统互连分系统中的高阶路由器输入端口缓冲优化结构。



背景技术:

路由器是高性能互连系统中的核心组成部件,其功能是将从输入端口进入的报文正确转发到对应的输出端口。随着asic工艺技术的发展以及高性能计算机技术进步,基于高阶路由器构建高性能互连网络已成为主流趋势,而且,高阶路由器不断向更高阶方向发展。

kim等人在2006年isca会议上提出的基于瓦片(tile)结构的64端口yarc路由器芯片是高阶路由器芯片的经典结构。yarc路由器芯片设计了64个18.75gbps的双向端口,芯片的频率是800mhz,聚合片外带宽为2.4tbps,每个端口在单方向上由三个6.25gbps的不同信道组成。如图1所示,yarc高阶路由器结构包含64个具有相同结构的的瓦片并采用8行×8列的阵列布局方式,每个瓦片仅与同一行的其它七个瓦片、同一列的其它七个瓦片进行数据传输。yarc高阶路由器的瓦片结构如图2所示,报文首先被存储在输入缓冲中,经过路由计算和vc虚拟通道分配后经过行总线注入到对应的行缓冲中,然后报文仲裁通过8×8子交叉开关,经过列总线到达目的输出端口前的列缓冲里,最后报文获得输出端口的使用权注入到网络中。这样结构化的交换方式不仅避免了复杂交叉开关中的布线拥塞,而且非常有利于路由器芯片的前端、后端设计。

然而,由于片上资源受限、全局布线复杂度高等问题,yarc高阶路由器很难扩展到更高维度。每个瓦片中包含与本地输入端口、本地输出端口相关联的缓冲区与逻辑资源,另外yarc用n个子交叉开关代替了一个n端口的单级交叉开关,所有子交叉开关的面积开销以n2的速率增长。当yarc路由器端口数增加时,瓦片数量、仲裁逻辑、每个瓦片内部缓存与布线开销也直线增加。另一方面,子交叉开关维度决定着瓦片内部硬件实现负责度,而其又受同一行、同一列瓦片的端口数量所决定,无论我们怎么设计改造yarc结构,每个瓦片内部维持着一个相对稳定的硬件复杂度。如果能减少yarc高阶路由器内部瓦片数量,片上资源、功耗开销将会大幅度减少。

针对该问题,王克非等人提出基于多端口绑定技术的mbtr(multiportbindingtile-basedrouter,基于瓦片结构的多端口绑定路由器)高阶路由器(y.dai,k.wang,“ascalableandresilientmicroarchitecturebasedonmultiportbindingforhigh-radixrouterdesign”(基于多端口绑定技术的可扩展高阶路由器微体系结构设计),ipdps,2017)。mbtr高阶路由器每个输入端口都集成了路由计算模块和多路复用器,每个输出端口就像yarc一样使用了多路选择器。图3展示了一个64端口的mbtr路由器结构,mbtr高阶路由器将多个端口集成到一个瓦片内部,如图4所示,mbtr路由器每个瓦片内部集成4个端口,因此直接将瓦片的数量从yarc高阶路由器的64个降到了16个,与64个端口的yarc高阶路由器相比,每一行、每一列的瓦片数量都减少了50%,行缓冲区buffer数量也相应减少,从而获得了更低的面积与功耗开销。对于一个具有64个端口的高阶路由器来说这样可以节约50%到70%的缓冲开销以及布线复杂度。当报文切片进入输入端口后,路由计算模块计算得出切片的目的输出瓦片所在的行列数以及该瓦片内部的目的输出端口号,然后利用多路复用器将报文切片注入到对应行总线中,报文进入子交叉开关前的行缓冲区buffer里。然后子交叉开关根据行缓冲区buffer里切片请求的输出端口号进行仲裁转发,切片通过列总线到达列缓冲区buffer后,经过输出端口仲裁通过一个多路选择器离开输出端口注入到网络中。

mbtr高阶路由器包含16个相同的瓦片结构,16个相同的瓦片结构采用4行×4列的阵列布局方式,记第x行、第y列的瓦片为tile(x,y),0≤x≤3,0≤y≤3,x、y均为整数。每个瓦片仅与同一行的其它3个瓦片、同一列的其它3个瓦片进行数据传输。

如图4所示,tile(x,y)包括四个输入端口、四个输出端口、四个输入缓冲、四个路由模块rc(routecomputing)、四个行总线、16个行缓冲、一个16×16子交叉开关(xbar16×16)、16个列缓冲、四个完全相同的四选一多路选择器(xbar4×1);四个输入端口分别记为in(x,y,0)、……、in(x,y,r)、……、in(x,y,3);四个输出端口分别记为out(x,y,0)、……、out(x,y,c)、……、out(x,y,3);四个多路选择器分别记为xbar(x,y,0)、……、xbar(x,y,c)、……、xbar(x,y,3);四个输入缓冲分别记为ib(x,y,0)、……、ib(x,y,r)、……、ib(x,y,3);四个路由模块分别记为rc(x,y,0)、……、rc(x,y,r)、……、in(x,y,3);四个行总线分别记为r(x,y,4y)、……、r(x,y,4y+r)、……、r(x,y,4y+3);16个行缓冲分别记为rb(x,y,0)、……、rb(x,y,i)、……、rb(x,y,15);16个列缓冲分别记为cb(x,y,0)、……、cb(x,y,j)、……、cb(x,y,15);0≤i≤15,0≤j≤15,0≤r≤3,0≤c≤3,i、j、r、c均为整数;

输入缓冲ib(x,y,r)与输入端口in(x,y,r)、路由模块rc(x,y,r)相连,报文从输入端口in(x,y,r)进入并缓存到输入缓冲ib(x,y,r),等待路由模块rc(x,y,r)读出;

路由模块rc(x,y,r)与输入缓冲ib(x,y,r)、行总线r(x,y,4y+r)相连;路由模块rc(x,y,r)从输入缓冲ib(x,y,r)读出报文,根据报文的请求输出端口查询路由表,经过路由计算、虚拟通道分配得到其对应的输出端口号p以及其分配得到的虚拟通道号v,然后将p、v值以及报文提交给行总线r(x,y,4y+r),p、v均为整数,输出端口p中信息包含输出端口所在的目的瓦片tile(x_dest,y_dest);

行总线r(x,y,4y+r)与路由模块rc(x,y,r)相连,并连接着同一行4个瓦片的行缓冲,即tile(x,0)的行缓冲rb(x,0,r)、……tile(x,y)的行缓冲rb(x,y,4y+r)、……、tile(x,3)的行缓冲rb(x,3,12+r);来自路由模块的报文通过行总线r(x,y,4y+r)输出到与目的瓦片位于同一列的相应瓦片的行缓冲里,即行总线r(x,y,4y+r)将报文输出到tile(x,y_dest)的行缓冲rb(x,y_dest,4*y_dest+r);

行缓冲rb(x,y,i)与行总线r(x,i/4,i)以及16×16子交叉开关相连,行缓冲rb(x,y,i)从行总线r(x,i/4,i)接收并缓存报文,提交给16×16子交叉开关进行仲裁,其中,“/”为整除运算符;

16×16子交叉开关有16个输出端口,记为out(x,y,0)、……、out(x,y,t)、……、out(x,y,15),0≤t≤15,t为整数;16×16子交叉开关与行缓冲rb(x,y,0)、……、rb(x,y,i)、……、rb(x,y,15)相连,并与同一列的4个瓦片的16个列缓冲一一关联,记m=t/4,n=tmod4,其中,“mod”为数学求模运算符,则out(x,y,t)与tile(x,m)的列缓冲cb(x,m,4n+m)相连;来自行缓冲rb(x,y,0)、……、rb(x,y,i)、……、rb(x,y,15)的报文经过16×16子交叉开关仲裁后通过列通道进入到目的瓦片的列缓冲区,即输出到tile(x,m)的列缓冲cb(x,m,4n+m),m值为y_dest;

来自同一列的4个瓦片的报文被存储在瓦片tile(x,y)的16个列缓冲里;列缓冲cb(x,m,4n+m)与tile(x,m)的子交叉开关的输出端口out(x,y,t)相连,并与四选一多路选择器xbar(x,y,n)相连;列缓冲cb(x,m,4n+m)从out(x,y,t)接收并缓存报文,并提交给四选一多路选择器xbar(x,y,n);

xbar(x,y,n)与同一列4个瓦片的列缓冲out(x,0,4n)、out(x,1,4n)、out(x,2,4n)、out(x,3,4n)相连,xbar(x,y,n)从列缓冲out(x,0,4n)、out(x,1,4n)、out(x,2,4n)、out(x,3,4n)接收报文,经过四选一多路选择器输出到输出端口out(x,y,n)。

然而缓冲区buffer功耗、面积开销仍然占据片上功耗总开销、面积总开销的一半以上,这也为用高密度、低漏电、非易失性的自旋转移力矩磁存储器stt-ram(spintransfertorqueram)优化输入端口缓冲区buffer提供了契机。

stt-ram是一种非易失性存储器,它非常有希望代替现在的静态随机存取存储器sram成为下一代计算机系统的cache。stt-ram的存储单元的结构如图5所示。其使用磁隧道结mtj(magnetictunneljunction)作为基本单元来实现二元存储。每个mtj都包含两个铁磁层(ferromagneticlayer)和一个氧化层mgo(oxidelayer),氧化层夹在两个铁磁层之间。如图所示,mtj下方的铁磁层为参考层(referencelayer),上方的铁磁层为自由层(freelayer),每个铁磁层都有一个磁性方向,参考层的磁性方向固定而自由层的磁性方向可以通过在mtj两端施加不同方向的电流而改变。当两个铁磁层磁性方向相同时,mtj成低阻抗状态;当两个铁磁层磁性方向相反时,mtj成高阻抗状态。即通过改变mtj中的参考层的相对磁力方向来改变mtj的电阻值,以此来记录不同的逻辑状态。在不加电流的条件下,铁磁层的磁性方向不会自动改变,因此,stt-ram是非易失性的,数据可以在stt-ram存储器中保存10年甚至更长时间。

传统的高阶路由器需要高容量的输入端口缓冲buffer来覆盖长信用往返延迟,当瓦片内部某个输入端口流量比较大或者发生网络拥塞时,就需要大量的输入端口缓冲buffer来存储被阻塞的报文,这种情况下此输入端口就可以获得尽可能多的空间去存储报文切片直至这个缓冲buffer共享池资源被使用殆尽。大容量的输入端口缓冲buffer不仅能够有效的避免网络拥塞也能够改善整个网络的性能。一个简单而又直接的优化输入端口缓冲buffer方法就是用stt-ram介质替换sram,这样就能够增加大规模的存储容量。然而这种直接替换的方法也是一个得不偿失的选择,因为不同的输入端口缓冲buffer之间利用率差别很大。在真实的互连系统中,大多数输入端口缓冲buffer几乎没有被使用而一小部分buffer却已经被占满了。直接增加buffer容量会减小输入端口buffer利用率也会导致片上面积与功耗开销增加。

而且,stt-ram最明显的优点就是密度大,不太会被静态功耗及面积上的限制所影响,从而可以用来制作更大容量的片上缓存。但是stt-ram与sram相比却有着致命性的缺点,虽然stt-ram读操作的速度与功耗与sram相差无几,几乎相同,但是写操作的延迟和功耗都比较高,同等情况下sram写的速度大概是stt-ram的5~6倍左右,如果想利用stt-ram这种新型材料的高密度、低漏电和非易失性等特性来优化高阶路由器缓存,就必须要妥善解决其写操作延迟高的缺点。所以,为了有效利用stt-ram优化mbtr高阶路由器的输入端口缓冲,需要对mbtr高阶路由器的瓦片结构进行改进。



技术实现要素:

本发明针对现有mbtr高阶路由器输入端口缓冲容量不足且利用率不均衡问题,提供一种高阶路由器输入端口缓冲优化结构,利用stt-ram的高密度以及低漏电特性来优化片上缓存,将mbtr高阶路由器瓦片内部的四块输入端口缓冲buffer设置成一个根据输入端口负载请求动态分配存储空间的集中式输入端口缓冲,集中式输入端口缓冲内每个节点都是stt-rambuffer块,节点与节点之间用胖树拓扑(fattree)互连在一起。瓦片内部的每个输入端口可以申请使用池内所有的节点存储资源,只要这个节点还没有被同一瓦片内其他节点所使用。同时为了隐藏stt-ram长达4个时钟周期的写入延迟,每个stt-ram节点设置4个写指针,这4个写指针可以被同一瓦片内部所有输入端口所申请使用,然而一旦这个stt-ram节点被某个输入端口所占用,那么这4个写指针只能被这个输入端口用来隐藏stt-ram的高写入延迟。本发明在隐藏stt-ram高写入延迟的同时充分利用其材料特性,有效提高片上缓冲区容量的同时提高缓冲资源利用率。

技术方案如下:

一种高阶路由器输入端口缓冲优化结构,包括四个输入端口、四个输出端口、集中式输入端口缓冲、四个路由模块、四个行总线、16个行缓冲、一个16×16子交叉开关、16个列缓冲、四个完全相同的四选一多路选择器;

输入端口、输出端口、路由模块、行总线、行缓冲、子交叉开关、列缓冲、四选一多路选择器与背景技术的结构完全相同,背景技术中的四个输入缓冲替换成集中式输入端口缓冲;

记第x行、第y列的高阶路由器输入端口缓冲优化结构为opttile(x,y),0≤x≤3,0≤y≤3,x、y均为整数;四个输入端口分别记为in(x,y,0)、……、in(x,y,r)、……、in(x,y,3);四个输出端口分别记为out(x,y,0)、……、out(x,y,c)、……、out(x,y,3);四个多路选择器分别记为xbar(x,y,0)、……、xbar(x,y,c)、……、xbar(x,y,3);四个路由模块分别记为rc(x,y,0)、……、rc(x,y,r)、……、in(x,y,3);四个行总线分别记为r(x,y,4y)、……、r(x,y,4y+r)、……、r(x,y,4y+3);16个行缓冲分别记为rb(x,y,0)、……、rb(x,y,i)、……、rb(x,y,15);16个列缓冲分别记为cb(x,y,0)、……、cb(x,y,j)、……、cb(x,y,15);0≤i≤15,0≤j≤15,0≤r≤3,0≤c≤3,i、j、r、c均为整数;

集中式输入端口缓冲与四个输入端口in(x,y,0)、……、in(x,y,r)、……、in(x,y,3)和四个路由模块rc(x,y,0)、……、rc(x,y,r)、……、in(x,y,3)相连,报文从输入端口in(x,y,0)、……、in(x,y,r)、……、in(x,y,3)进入并缓存到集中式输入端口缓冲,等待路由模块rc(x,y,0)、……、rc(x,y,r)、……、in(x,y,3)读出;

路由模块rc(x,y,r)与集中式输入端口缓冲、行总线r(x,y,4y+r)相连;路由模块rc(x,y,r)从集中式输入端口缓冲读出报文,根据报文的请求输出端口查询路由表,经过路由计算、虚拟通道分配得到其对应的输出端口号p以及其分配得到的虚拟通道号v,然后将p、v值以及报文提交给行总线r(x,y,4y+r),p、v均为整数,输出端口p中信息包含输出端口所在的目的瓦片opttile(x_dest,y_dest);

行总线r(x,y,4y+r)与路由模块rc(x,y,r)相连,并连接着同一行4个瓦片的行缓冲,即opttile(x,0)的行缓冲rb(x,0,r)、……opttile(x,y)的行缓冲rb(x,y,4y+r)、……、opttile(x,3)的行缓冲rb(x,3,12+r);来自路由模块的报文通过行总线r(x,y,4y+r)输出到与目的瓦片位于同一列的相应瓦片的行缓冲里,即行总线r(x,y,4y+r)将报文输出到opttile(x,y_dest)的行缓冲rb(x,y_dest,4*y_dest+r);

行缓冲rb(x,y,i)与行总线r(x,i/4,i)以及16×16子交叉开关相连,行缓冲rb(x,y,i)从行总线r(x,i/4,i)接收并缓存报文,提交给16×16子交叉开关进行仲裁,其中,“/”为整除运算符;

16×16子交叉开关有16个输出端口,记为out(x,y,0)、……、out(x,y,t)、……、out(x,y,15),0≤t≤15,t为整数;16×16子交叉开关与行缓冲rb(x,y,0)、……、rb(x,y,i)、……、rb(x,y,15)相连,并与同一列的4个瓦片的16个列缓冲一一关联,记m=t/4,n=tmod4,其中,“mod”为数学求模运算符,则out(x,y,t)与opttile(x,m)的列缓冲cb(x,m,4n+m)相连;来自行缓冲rb(x,y,0)、……、rb(x,y,i)、……、rb(x,y,15)的报文经过16×16子交叉开关仲裁后通过列通道进入到目的瓦片的列缓冲区,即输出到opttile(x,m)的列缓冲cb(x,m,4n+m),m值为y_dest;

来自同一列的4个瓦片的报文被存储在瓦片opttile(x,y)的16个列缓冲里;列缓冲cb(x,m,4n+m)与opttile(x,m)的子交叉开关的输出端口out(x,y,t)相连,并与四选一多路选择器xbar(x,y,n)相连;列缓冲cb(x,m,4n+m)从out(x,y,t)接收并缓存报文,并提交给四选一多路选择器xbar(x,y,n);

xbar(x,y,n)与同一列4个瓦片的列缓冲out(x,0,4n)、out(x,1,4n)、out(x,2,4n)、out(x,3,4n)相连,xbar(x,y,n)从列缓冲out(x,0,4n)、out(x,1,4n)、out(x,2,4n)、out(x,3,4n)接收报文,经过四选一多路选择器输出到输出端口out(x,y,n)。

作为本发明技术方案的进一步改进:

所述集中式输入端口缓冲内每个节点都是stt-rambuffer块,节点之间用胖树拓扑互连在一起;

所述集中式输入端口缓冲根据输入端口负载请求动态分配存储空间,瓦片内部的每个输入端口申请使用集中式输入端口缓冲内所有未被同一瓦片内其他节点所使用的节点存储资源;

所述集中式输入端口缓冲内每个stt-ram节点设置4个写指针,这4个写指针可以被同一瓦片内部所有输入端口所申请使用;

所述集中式输入端口缓冲进一步采用动态分配多队列技术damq(dynamicallyallocatedmulti-queue)优化高阶路由器,使用动态分配多队列技术后,集中式输入端口缓冲内的资源被所有虚拟通道所共享,根据每个虚拟通道的需求动态分配资源。

与现有技术相比,本发明的有益效果是:

●利用stt-ram的高密度以及低漏电特性来优化片上缓存,将mbtr高阶路由器瓦片内部的四块输入端口缓冲buffer设置成一个根据输入端口负载请求动态分配存储空间的集中式输入端口缓冲,集中式输入端口缓冲内每个节点都是stt-rambuffer块,节点之间用胖树拓扑互连在一起;瓦片内部的每个输入端口可以申请使用池内所有的节点存储资源只要这个节点还没有被同一瓦片内其他节点所使用。同时为了隐藏stt-ram长达4个时钟周期的写入延迟,每个stt-ram节点设置4个写指针,这4个写指针可以被同一瓦片内部所有输入端口所申请使用,然而一旦这个stt-ram节点被某个输入端口所占用,那么这4个写指针只能被这个输入端口用来隐藏stt-ram的高写入延迟。本发明在隐藏stt-ram高写入延迟的同时充分利用其材料特性,有效提高片上缓冲区容量的同时提高缓冲资源利用率;

●本发明集中式输入端口缓冲进一步采用动态分配多队列技术damq优化高阶路由器,使用动态分配多队列技术后,集中式输入端口缓冲内的资源被所有虚拟通道所共享,根据每个虚拟通道的需求动态分配资源,从而弱化了固定虚拟通道大小对路由器性能造成的影响,进而能够充分利用缓冲区资源、改善高阶路由器性能;

●本发明高阶路由器输入端口缓冲优化结构只改变了高阶路由器瓦片内部的结构,并没有改变瓦片与瓦片之间的连接方式,因此这种行缓冲优化结构设计方式易于移植到其他类似yarc结构的高阶路由器中,可扩展性高。

附图说明

图1背景技术yarc高阶路由器结构示意图;

图2背景技术yarc高阶路由器内部瓦片结构示意图;

图3背景技术mbtr高阶路由器结构示意图;

图4背景技术mbtr高阶路由器内部瓦片结构示意图;

图5背景技术stt-ram存储单元结构示意图;

图6是本发明高阶路由器输入端口缓冲优化结构示意图;

图7是本发明实施例集中式输入端口缓冲内节点之间胖树拓扑互连示意图。

具体实施方式

图1是背景技术yarc高阶路由器结构示意图。如图1所示,yarc高阶路由器结构包含64个具有相同结构的瓦片并采用8行×8列的阵列布局方式,每个瓦片仅与同一行的其它七个瓦片、同一列的其它七个瓦片进行数据传输。yarc高阶路由器的瓦片结构如图2所示,报文首先被存储在输入缓冲中,经过路由计算和vc虚拟通道分配后经过行总线注入到对应的行缓冲中,然后报文仲裁通过8×8子交叉开关,经过列总线到达目的输出端口前的列缓冲里,最后报文获得输出端口的使用权注入到网络中。这样结构化的交换方式不仅避免了复杂交叉开关中的布线拥塞,而且非常有利于路由器芯片的前端、后端设计。

图3展示了一个64端口的mbtr路由器结构,mbtr高阶路由器将四个端口集成到一个瓦片内部,因此直接将瓦片的数量从yarc高阶路由器的64个降到了16个,行缓冲区buffer数量也相应减少,从而获得了更低的面积与功耗开销。

mbtr高阶路由器包含16个相同的瓦片结构,16个相同的瓦片结构采用4行×4列的阵列布局方式,记第x行、第y列的瓦片为tile(x,y),0≤x≤3,0≤y≤3,x、y均为整数。每个瓦片仅与同一行的其它3个瓦片、同一列的其它3个瓦片进行数据传输。

如图4所示,tile(x,y)包括四个输入端口、四个输出端口、四个输入缓冲、四个路由模块rc(routecomputing)、四个行总线、16个行缓冲、一个16×16子交叉开关(xbar16×16)、16个列缓冲、四个完全相同的四选一多路选择器(xbar4×1);四个输入端口分别记为in(x,y,0)、……、in(x,y,r)、……、in(x,y,3);四个输出端口分别记为out(x,y,0)、……、out(x,y,c)、……、out(x,y,3);四个多路选择器分别记为xbar(x,y,0)、……、xbar(x,y,c)、……、xbar(x,y,3);四个输入缓冲分别记为ib(x,y,0)、……、ib(x,y,r)、……、ib(x,y,3);四个路由模块分别记为rc(x,y,0)、……、rc(x,y,r)、……、in(x,y,3);四个行总线分别记为r(x,y,4y)、……、r(x,y,4y+r)、……、r(x,y,4y+3);16个行缓冲分别记为rb(x,y,0)、……、rb(x,y,i)、……、rb(x,y,15);16个列缓冲分别记为cb(x,y,0)、……、cb(x,y,j)、……、cb(x,y,15);0≤i≤15,0≤j≤15,0≤r≤3,0≤c≤3,i、j、r、c均为整数;

输入缓冲ib(x,y,r)与输入端口in(x,y,r)、路由模块rc(x,y,r)相连,报文从输入端口in(x,y,r)进入并缓存到输入缓冲ib(x,y,r),等待路由模块rc(x,y,r)读出;

路由模块rc(x,y,r)与输入缓冲ib(x,y,r)、行总线r(x,y,4y+r)相连;路由模块rc(x,y,r)从输入缓冲ib(x,y,r)读出报文,根据报文的请求输出端口查询路由表,经过路由计算、虚拟通道分配得到其对应的输出端口号p以及其分配得到的虚拟通道号v,然后将p、v值以及报文提交给行总线r(x,y,4y+r),p、v均为整数,输出端口p中信息包含输出端口所在的目的瓦片tile(x_dest,y_dest);

行总线r(x,y,4y+r)与路由模块rc(x,y,r)相连,并连接着同一行4个瓦片的行缓冲,即tile(x,0)的行缓冲rb(x,0,r)、……tile(x,y)的行缓冲rb(x,y,4y+r)、……、tile(x,3)的行缓冲rb(x,3,12+r);来自路由模块的报文通过行总线r(x,y,4y+r)输出到与目的瓦片位于同一列的相应瓦片的行缓冲里,即行总线r(x,y,4y+r)将报文输出到tile(x,y_dest)的行缓冲rb(x,y_dest,4*y_dest+r);

行缓冲rb(x,y,i)与行总线r(x,i/4,i)以及16×16子交叉开关相连,行缓冲rb(x,y,i)从行总线r(x,i/4,i)接收并缓存报文,提交给16×16子交叉开关进行仲裁,其中,“/”为整除运算符;

16×16子交叉开关有16个输出端口,记为out(x,y,0)、……、out(x,y,t)、……、out(x,y,15),0≤t≤15,t为整数;16×16子交叉开关与行缓冲rb(x,y,0)、……、rb(x,y,i)、……、rb(x,y,15)相连,并与同一列的4个瓦片的16个列缓冲一一关联,记m=t/4,n=tmod4,其中,“mod”为数学求模运算符,则out(x,y,t)与tile(x,m)的列缓冲cb(x,m,4n+m)相连;来自行缓冲rb(x,y,0)、……、rb(x,y,i)、……、rb(x,y,15)的报文经过16×16子交叉开关仲裁后通过列通道进入到目的瓦片的列缓冲区,即输出到tile(x,m)的列缓冲cb(x,m,4n+m),m值为y_dest;

来自同一列的4个瓦片的报文被存储在瓦片tile(x,y)的16个列缓冲里;列缓冲cb(x,m,4n+m)与tile(x,m)的子交叉开关的输出端口out(x,y,t)相连,并与四选一多路选择器xbar(x,y,n)相连;列缓冲cb(x,m,4n+m)从out(x,y,t)接收并缓存报文,并提交给四选一多路选择器xbar(x,y,n);

xbar(x,y,n)与同一列4个瓦片的列缓冲out(x,0,4n)、out(x,1,4n)、out(x,2,4n)、out(x,3,4n)相连,xbar(x,y,n)从列缓冲out(x,0,4n)、out(x,1,4n)、out(x,2,4n)、out(x,3,4n)接收报文,经过四选一多路选择器输出到输出端口out(x,y,n)。

图5是背景技术stt-ram存储单元结构示意图。其使用磁隧道结mtj(magnetictunneljunction)作为基本单元来实现二元存储。每个mtj都包含两个铁磁层(ferromagneticlayer)和一个氧化层mgo(oxidelayer),氧化层夹在两个铁磁层之间。如图所示,mtj下方的铁磁层为参考层(referencelayer),上方的铁磁层为自由层(freelayer),每个铁磁层都有一个磁性方向,参考层的磁性方向固定而自由层的磁性方向可以通过在mtj两端施加不同方向的电流而改变。当两个铁磁层磁性方向相同时,mtj成低阻抗状态;当两个铁磁层磁性方向相反时,mtj成高阻抗状态。即通过改变mtj中的参考层的相对磁力方向来改变mtj的电阻值,以此来记录不同的逻辑状态。在不加电流的条件下,铁磁层的磁性方向不会自动改变,因此,stt-ram是非易失性的,数据可以在stt-ram存储器中保存10年甚至更长时间。

图6是本发明高阶路由器输入端口缓冲优化结构示意图。一种高阶路由器输入端口缓冲优化结构,包括四个输入端口、四个输出端口、集中式输入端口缓冲、四个路由模块、四个行总线、16个行缓冲、一个16×16子交叉开关、16个列缓冲、四个完全相同的四选一多路选择器;

输入端口、输出端口、路由模块、行总线、行缓冲、子交叉开关、列缓冲、四选一多路选择器与背景技术的结构完全相同,背景技术中的四个输入缓冲替换成集中式输入端口缓冲;

记第x行、第y列的高阶路由器输入端口缓冲优化结构为opttile(x,y),0≤x≤3,0≤y≤3,x、y均为整数;四个输入端口分别记为in(x,y,0)、……、in(x,y,r)、……、in(x,y,3);四个输出端口分别记为out(x,y,0)、……、out(x,y,c)、……、out(x,y,3);四个多路选择器分别记为xbar(x,y,0)、……、xbar(x,y,c)、……、xbar(x,y,3);四个路由模块分别记为rc(x,y,0)、……、rc(x,y,r)、……、in(x,y,3);四个行总线分别记为r(x,y,4y)、……、r(x,y,4y+r)、……、r(x,y,4y+3);16个行缓冲分别记为rb(x,y,0)、……、rb(x,y,i)、……、rb(x,y,15);16个列缓冲分别记为cb(x,y,0)、……、cb(x,y,j)、……、cb(x,y,15);0≤i≤15,0≤j≤15,0≤r≤3,0≤c≤3,i、j、r、c均为整数;

集中式输入端口缓冲与四个输入端口in(x,y,0)、……、in(x,y,r)、……、in(x,y,3)和四个路由模块rc(x,y,0)、……、rc(x,y,r)、……、in(x,y,3)相连,报文从输入端口in(x,y,0)、……、in(x,y,r)、……、in(x,y,3)进入并缓存到集中式输入端口缓冲,等待路由模块rc(x,y,0)、……、rc(x,y,r)、……、in(x,y,3)读出;

路由模块rc(x,y,r)与集中式输入端口缓冲、行总线r(x,y,4y+r)相连;路由模块rc(x,y,r)从集中式输入端口缓冲读出报文,根据报文的请求输出端口查询路由表,经过路由计算、虚拟通道分配得到其对应的输出端口号p以及其分配得到的虚拟通道号v,然后将p、v值以及报文提交给行总线r(x,y,4y+r),p、v均为整数,输出端口p中信息包含输出端口所在的目的瓦片opttile(x_dest,y_dest);

行总线r(x,y,4y+r)与路由模块rc(x,y,r)相连,并连接着同一行4个瓦片的行缓冲,即opttile(x,0)的行缓冲rb(x,0,r)、……opttile(x,y)的行缓冲rb(x,y,4y+r)、……、opttile(x,3)的行缓冲rb(x,3,12+r);来自路由模块的报文通过行总线r(x,y,4y+r)输出到与目的瓦片位于同一列的相应瓦片的行缓冲里,即行总线r(x,y,4y+r)将报文输出到opttile(x,y_dest)的行缓冲rb(x,y_dest,4*y_dest+r);

行缓冲rb(x,y,i)与行总线r(x,i/4,i)以及16×16子交叉开关相连,行缓冲rb(x,y,i)从行总线r(x,i/4,i)接收并缓存报文,提交给16×16子交叉开关进行仲裁,其中,“/”为整除运算符;

16×16子交叉开关有16个输出端口,记为out(x,y,0)、……、out(x,y,t)、……、out(x,y,15),0≤t≤15,t为整数;16×16子交叉开关与行缓冲rb(x,y,0)、……、rb(x,y,i)、……、rb(x,y,15)相连,并与同一列的4个瓦片的16个列缓冲一一关联,记m=t/4,n=tmod4,其中,“mod”为数学求模运算符,则out(x,y,t)与opttile(x,m)的列缓冲cb(x,m,4n+m)相连;来自行缓冲rb(x,y,0)、……、rb(x,y,i)、……、rb(x,y,15)的报文经过16×16子交叉开关仲裁后通过列通道进入到目的瓦片的列缓冲区,即输出到opttile(x,m)的列缓冲cb(x,m,4n+m),m值为y_dest;

来自同一列的4个瓦片的报文被存储在瓦片opttile(x,y)的16个列缓冲里;列缓冲cb(x,m,4n+m)与opttile(x,m)的子交叉开关的输出端口out(x,y,t)相连,并与四选一多路选择器xbar(x,y,n)相连;列缓冲cb(x,m,4n+m)从out(x,y,t)接收并缓存报文,并提交给四选一多路选择器xbar(x,y,n);

xbar(x,y,n)与同一列4个瓦片的列缓冲out(x,0,4n)、out(x,1,4n)、out(x,2,4n)、out(x,3,4n)相连,xbar(x,y,n)从列缓冲out(x,0,4n)、out(x,1,4n)、out(x,2,4n)、out(x,3,4n)接收报文,经过四选一多路选择器输出到输出端口out(x,y,n)。

本发明针对现有mbtr高阶路由器输入端口缓冲容量不足且利用率不均衡问题,提供一种高阶路由器输入端口缓冲优化结构,利用stt-ram的高密度以及低漏电特性来优化片上缓存,将mbtr高阶路由器瓦片内部的四块输入端口缓冲buffer设置成一个根据输入端口负载请求动态分配存储空间的集中式输入端口缓冲,集中式输入端口缓冲内每个节点都是stt-rambuffer块,节点与节点之间用胖树拓扑互连在一起。瓦片内部的每个输入端口可以申请使用池内所有的节点存储资源,只要这个节点还没有被同一瓦片内其他节点所使用。同时为了隐藏stt-ram长达4个时钟周期的写入延迟,每个stt-ram节点设置4个写指针,这4个写指针可以被同一瓦片内部所有输入端口所申请使用,然而一旦这个stt-ram节点被某个输入端口所占用,那么这4个写指针只能被这个输入端口用来隐藏stt-ram的高写入延迟。本发明在隐藏stt-ram高写入延迟的同时充分利用其材料特性,有效提高片上缓冲区容量的同时提高缓冲资源利用率。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。

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