本发明涉及多核或众核结构下片上网络的路由结构设计领域,特别涉及一种面向多地址共享数据路由包的路由器、路由方法及其芯片
背景技术:
随着高性能计算的发展,高性能计算即将进入E级时代,为了不断挖掘高性能计算下特定应用的并行性,在处理器片上往往采用了大规模处理核心的结构。由于片上网络承担了不同处理器核心之间通信,提高片上网络通信效率因而可以有效提高程序并行效率,然而处理核心数目的增加也给片上网络的设计带来的新的挑战,对于一些传输延迟敏感的应用或执行模式的实际性能在很大程度上依赖于片上网络的传输效率。可以发现一般处理器核向片上网络发送的大部分消息的目的地址不同但是数据相同的特性,例如一些众核结构中的同步消息,处理核心上cache的一致性消息,以及数据流众核结构中的操作数消息等。
在最新的数据流众核结构中,大量运算的操作数需要通过片上网络传递,造成片上网络上传输消息量巨大,严重影响了数据流众核片上处理器核接收消息的延迟,并且数据流众核处理器核的性能很依赖接收操作数带宽。基于以上情况出现了将传统的单地址单数据包格式改成多地址共享数据包格式,新的路由包相比于传统的数据包可以大量减少片上网络上传输消息量,从而减少片上网络传输延迟,提高数据流众核处理器核的运算吞吐量。
目前现有的基于多地址共享数据片上网络路由结构通常应用的是图1所示的,这种路由结构一个路由包路由后会分成一到多个路由包,并送往对应的队列中储存,也就是一个差别不是很大的路由包可能在多个队列中存多次,虽然这种设计很简单,但是造成寄存器空间成倍浪费,同时也增加了路由器的功耗。并且随着众核的发展,片上网络中路由器个数越来越多,利用传统的设计会使芯片的面积过大,造成设计无法流片。
如果能妥善利用多地址共享数据路由包的特点,将片上路由器结构中加上多队列共享缓存,这样可以充分利用路由包多地址共享数据的特性,并且相比传统片上路由器的设计可以成倍减少片上路由器的寄存器面积和功耗。
技术实现要素:
针对现有技术的不足,本发明首先提出一种面向多地址共享数据路由包的路由器,通过多个输入端口向对应的多个输出端口传输包含了多地址共享数据的原始路由包,其特征在于,所述路由器的每个输入端口和输出端口之间包括:
路由算法模块,用于接收由所述输入端口发送的所述原始路由包,并从所述原始路由包中获取每个地址的路由端口去向,统计共享数据的地址复用次数,生成删除了所有地址有效位的裁剪路由包,并根据所述路由端口去向生成地址有效位组合信息;
缓存模块,与所述路由算法模块相连,用于存储所述裁剪路由包和所述地址复用次数;
队列模块,与所述路由算法模块及所述缓存模块相连,用于存储所述地址有效位组合信息;
仲裁模块,与所述缓存模块和所述队列模块相连,用于将所述队列模块和所述缓存模块中存储的内容重新组合以形成新的多地址共享数据路由包。
根据本发明提出的面向多地址共享数据路由包的路由器,所述地址复用次数为原始路由包中的有效地址个数,或所述地址复用次数为原始路由包中包含的所有端口去向的种类数。
根据本发明提出的面向多地址共享数据路由包的路由器,所述缓存模块中存储的所述裁剪路由包每被读取一次,则所述地址复用次数减一,当所述地址复用次数为零时,停止从所述缓存模块中读取数据。
根据本发明提出的面向多地址共享数据路由包的路由器,其中,与每一个所述路由算法模块相连的队列模块包括一个或多个,每一个队列模块对应一个固定的路由端口去向,根据原路由包中多个地址路由后的端口方向,每个地址有效位被送往对应路由端口去向的队列模块中存储。
本发明同时还提出一种面向多地址共享数据路由包的路由方法,通过多个输入端口向对应的多个输出端口传输包含了多地址共享数据的原始路由包,包括以下步骤:
通过路由算法模块接收由所述输入端口发送的所述原始路由包,并从所述原始路由包中获取每个地址的路由端口去向,统计共享数据的地址复用次数,生成删除了所有地址有效位的裁剪路由包,并根据所述路由端口去向生成地址有效位组合信息;
所述裁剪路由包和所述地址复用次数存储至与所述路由算法模块相连的缓存模块中;
将所述地址有效位组合信息存储至与所述路由算法模块及所述缓存模块相连的队列模块中;
通过仲裁模块将所述队列模块和所述缓存模块中存储的内容重新组合以形成新的多地址共享数据路由包。
根据本发明提出的面向多地址共享数据路由包的路由方法,其中,所述地址复用次数为原始路由包中的有效地址个数,或所述地址复用次数为原始路由包中包含的所有端口去向的种类数。
根据本发明提出的面向多地址共享数据路由包的路由方法,其中,所述缓存模块中存储的所述裁剪路由包每被读取一次,则所述地址复用次数减一,当所述地址复用次数为零时,停止从所述缓存模块所述地址中读取数据。
根据本发明提出的面向多地址共享数据路由包的路由方法,其中,与每一个所述路由算法模块相连的队列模块包括一个或多个,每一个队列模块对应一个固定的路由端口去向,根据原路由包中多个地址路由后的端口方向,每个地址有效位被送往对应路由端口去向的队列模块中存储。
本发明同时提供一种包括上述内容中任一项所述的面向多地址共享数据路由包的路由器的芯片。
与现有技术相比,本发明的优点在于:
本发明利用多地址共享数据路由包的结构特性,在传统片上网络路由器设计上加上多队列共享缓存,避免路由后的多个类似的路由包在多个队列中储存,减少片上网络路由器中存储路由包信息的寄存器浪费,对比传统路由器结构,本发明可以大幅减少片上网络路由器存储寄存器的面积和功耗。
附图说明
图1为现有技术中传统路由结构设计图;
图2为本发明的多地址共享数据路由包结构图;
图3为本发明的面向多地址共享数据路由包的路由器结构;
图4为本发明中路由包路由到路由后信息存储示例图;
图5为本发明中仲裁选择到输出新的路由包示例图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明根据多地址共享数据路由包的结构特性,提出一种面向多地址共享数据路由包的新型片上路由器、路由方法、芯片。本发明中的多地址共享路由包的结构如图2所示,该结构分为两部分,一部分是包头,该包头含有多个地址201-204,另一部分是多地址共享的数据205,每个地址都有一位代表其地址有效位206。
本发明提出一种面向多地址共享数据路由包的新型片上路由器结构,具体实例结构如图3所示,该路由器结构有路由算法模块301-305,缓存模块306-310,成组的队列311-315,连接有多套缓存和队列的仲裁选择模块316-320。路由包在以上路由器结构大致执行流程如下:
步骤301:路由算法模块301-305接收路由包,通过路由得到路由包里面每个有效地址的端口去向,统计路由包地址复用次数。
步骤302:对原路由包裁去所有地址有效位,再与统计的路由包路由队列去向次数一并送往缓存模块306-310。
步骤303:根据路由包每个有效地址的端口去向,将每个地址有效位信息和路由包储存的缓存地址一起送往对应的队列311-315。
步骤304:仲裁模块316-320向选择的队列送去读队列请求,此时队列模块会将队首单元读出,将队首单元里的缓存地址送往所在输入端口的缓存中,并且将地址有效信息送往仲裁模块,缓存模块根据地址取出裁剪的路由包送往仲裁模块和更新裁剪的路由包的复用率,仲裁模块将队列读数据和缓存读数据组合形成新的多地址共享缓存路由包。
本发明还提出一种面向多地址共享数据路由包的新型片上路由器方法,从接收路由包到路由后信息存储的具体实例如图4所示,该输入端口为图3里面的东路端口,输入路由包401有3个地址有效,并且这3个地址的最后路由端口方向分别为西、北、南,具体执行流程如下:
步骤401:东路端口输入路由包401,路由算法模块402准备处理该路由包
步骤402:路由算法模块402路由路由包,得到送往队列的信息403-405和送往缓存的信息406,队列信息403里的左端两位代表修改后的路由包存储的缓存地址,右端四位1001代表原路由包的第1和第4地址是去向西队列,除了第1和第4位位都置0,意思为新的路由包从西端口出时第2到第3地址应该变成无效。由于原路由包所有地址共享相同数据,所以当前产生所有队列的信息403-405的缓存地址都是一样的。
步骤403:裁剪原路由包的所有地址有效位,得到新的裁剪路由包,除了裁剪了所有地址有效位外,原路由包的其他数据保持不变。准备送往缓存的信息406既包含新的裁剪路由包还包含该路由包的复用次数,该复用次数是由路由算法模块统计原路由包路由后队列去向的个数,因此该路由包的复用次数为3。
步骤404:输出西端口的队列407接收产生的队列信息403,输出北端口的队列408接收产生的队列信息404,输出南端口的队列409接收产的的队列信息405。
步骤405:缓存模块411将产生的缓存信息406送往对应的缓存地址10单元处。
路由后的信息在队列和缓存储存后,接下就是通过仲裁控制逻辑选择队列模块和对应的缓存模块,读选择的队列和缓存数据,然后组合队列和缓存数据产生新的路由包,最后送出输出端口。从仲裁选择到输出端口输出新的路由包的具体示例如图5所示,该示例是接着图4示例,详细运行流程如下:
步骤501:仲裁控制逻辑507在队列0-3中选择一个不为空的队列,当前选择了队列501,读队列队首信息,获得地址有效位信息505,缓存地址502,计算地址有效信息里面的地址有效个数503。
步骤502:队列模块将缓存地址10和需要减去的复用次数1送到缓存0,同时将地址有效位信息1001送往仲裁控制逻辑。
步骤503:缓存模块根据队列发送的缓存地址读取缓存数据,更新该缓存地址上数据的复用次数,然后将裁剪了所有地址有效位的原路由包506送往仲裁控制逻辑。
步骤504:仲裁控制逻辑根据获得地址有效信息和裁剪的路由包,组合恢复成新的路由包,此时合成的路由包508只有从西端口输出的地址才有效,其他的都无效。最后将新的路由包送出输出端口。
本发明还提出一种面向多地址共享数据路由包的新型片上路由芯片,该芯片上的片上路由器使用本发明提出的上述结构。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。