CN115580572B - 路由方法、路由节点、路由装置和计算机可读存储介质 - Google Patents
路由方法、路由节点、路由装置和计算机可读存储介质 Download PDFInfo
- Publication number
- CN115580572B CN115580572B CN202211148701.0A CN202211148701A CN115580572B CN 115580572 B CN115580572 B CN 115580572B CN 202211148701 A CN202211148701 A CN 202211148701A CN 115580572 B CN115580572 B CN 115580572B
- Authority
- CN
- China
- Prior art keywords
- bypass
- routing node
- routing
- hop count
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000004044 response Effects 0.000 claims abstract description 65
- 235000008694 Humulus lupulus Nutrition 0.000 claims description 96
- 230000005540 biological transmission Effects 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 14
- 238000010586 diagram Methods 0.000 description 19
- 230000007246 mechanism Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000003247 decreasing effect Effects 0.000 description 4
- 235000003642 hunger Nutrition 0.000 description 3
- 230000037351 starvation Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/302—Route determination based on requested QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种用于片上网络中的对象路由节点的路由方法、路由节点、路由设备和计算机可读存储介质。该路由方法包括:接收第一旁路请求,第一旁路请求包括仲裁信息;根据仲裁信息,判断是否根据第一旁路请求在对象路由节点建立旁路通路;根据是否在所述对象路由节点建立所述旁路通路的判断结果,对所述仲裁信息进行更新,并且向下一路由节点提供更新后的仲裁信息;以及响应于在对象路由节点建立旁路通路,在建立旁路通路之后,响应于接收对应于第一旁路请求的路由数据包,通过旁路通路向下一路由节点提供路由数据包。该方法能够提高旁路通路的灵活性,有效地简化了电路逻辑并减小了硬件开销。
Description
技术领域
本公开的实施例涉及一种路由方法、路由节点、路由装置和计算机可读存储介质。
背景技术
随着处理器芯片核数的不断增多,片上系统(System-On-Chip,SoC)已呈现出多核到众核的发展趋势。最近,业界已开发出内含1000核的处理器芯片。在如此大规模的众核系统中,全局互连可导致严重的片上同步出错、不可预知的通信时延以及巨大的功耗开销。为了缓解这些矛盾,片上网络(Network-on-Chip,NoC)的概念被提出,片上网络可以替代传统的总线互连或点到点互连,片上网络成为一种新的片上通信架构。
发明内容
本公开至少一个实施例提供一种用于片上网络中的对象路由节点的路由方法,包括:接收第一旁路请求,第一旁路请求包括仲裁信息;根据仲裁信息,判断是否根据第一旁路请求在对象路由节点建立旁路通路;根据是否在对象路由节点建立旁路通路的判断结果,对仲裁信息进行更新,并且向下一路由节点提供更新后的仲裁信息;以及响应于在对象路由节点建立旁路通路,在建立旁路通路之后,响应于接收对应于第一旁路请求的路由数据包,通过旁路通路向下一路由节点提供路由数据包。
例如,在本公开的至少一个实施例提供的路由方法中,仲裁信息包括剩余旁路跳数,根据仲裁信息,判断是否根据第一旁路请求在对象路由节点建立旁路通路,包括:判断剩余旁路跳数是否为0;响应于剩余旁路跳数不为0,从对象路由节点的多个输出端口选择目标输出端口;以及根据目标输出端口的工作状态,判断是否根据第一旁路请求在对象路由节点建立旁路通路。
例如,在本公开的至少一个实施例提供的路由方法中,仲裁信息还包括数据包头,响应于剩余旁路跳数不为0,从对象路由节点的多个输出端口选择目标输出端口,包括:根据数据包头,从对象路由节点的多个输出端口选择目标输出端口。
例如,在本公开的至少一个实施例提供的路由方法中,数据包头包括第一方向跳数和第二方向跳数,第一方向跳数指示数据包头从对象路由节点到达目标路由节点在第一方向上经过的路由节点的个数,第二方向跳数指示数据包头从对象路由节点到达目标路由节点在第二方向上经过的路由节点的个数,根据数据包头,从对象路由节点的多个输出端口选择目标输出端口,包括:根据对象路由节点中用于接收第一旁路请求的输入端口、第一方向跳数和第二方向跳数,确定数据包头的传输方向;以及根据传输方向,从对象路由节点的多个输出端口选择目标输出端口。
例如,在本公开的至少一个实施例提供的路由方法中,响应于剩余旁路跳数不为0,从对象路由节点的多个输出端口选择目标输出端口,包括:查询对象路由节点中存储的路由表,从对象路由节点的多个输出端口选择目标输出端口。
例如,在本公开的至少一个实施例提供的路由方法中,根据目标输出端口的工作状态,判断是否根据第一旁路请求在对象路由节点建立旁路通路,包括:响应于目标输出端口的工作状态为空闲,判断是否存在请求利用目标输出端口建立另一旁路通路的第二旁路请求;响应于存在请求利用目标输出端口建立另一旁路通路的第二旁路请求,判断第一旁路请求和第二旁路请求的优先级;以及响应于第一旁路请求的优先级高于第二旁路请求的优先级,建立旁路通路。
例如,在本公开的至少一个实施例提供的路由方法中,根据目标输出端口的工作状态,判断是否根据第一旁路请求在对象路由节点建立旁路通路,还包括:响应于第一旁路请求的优先级低于第二旁路请求的优先级,判断第二旁路请求的剩余旁路跳数是否为0;以及响应于第二旁路请求的剩余旁路跳数为0,根据第一旁路请求在对象路由节点建立旁路通路。
例如,在本公开的至少一个实施例提供的路由方法中,在对象路由节点沿直线传输的旁路请求的优先级高于在对象路由节点发生方向改变的旁路请求的优先级。
例如,在本公开的至少一个实施例提供的路由方法中,根据目标输出端口的工作状态,判断是否根据第一旁路请求在对象路由节点建立旁路通路,还包括:响应于目标输出端口的工作状态为被占用,不在对象路由节点建立旁路通路。
例如,在本公开的至少一个实施例提供的路由方法中,根据仲裁信息,判断是否根据第一旁路请求在对象路由节点建立旁路通路,还包括:响应于剩余旁路跳数为0,不在对象路由节点建立旁路通路。
例如,在本公开的至少一个实施例提供的路由方法中,还包括:响应于不在对象路由节点建立旁路通路,将数据包头和路由数据包分别存储到缓存队列中,以在缓存队列中等待转发至下一路由节点。
例如,在本公开的至少一个实施例提供的路由方法中,根据是否在对象路由节点建立旁路通路的判断结果,对仲裁信息进行更新,并且向下一路由节点提供更新后的仲裁信息,包括:响应于判断结果为在对象路由节点建立旁路通路,将剩余旁路跳数与1的差值作为更新后的剩余旁路跳数,并且向下一路由节点提供更新后的剩余旁路跳数;以及响应于判断结果为不在对象路由节点建立旁路通路,将剩余旁路跳数恢复为初始旁路跳数,并且向下一路由节点提供初始旁路跳数。
例如,在本公开的至少一个实施例提供的路由方法中,初始旁路跳数包括多个二进制位,每个二进制位均为1,剩余旁路跳数与1的差值通过剩余旁路跳数右移一位得到。
例如,在本公开的至少一个实施例提供的路由方法中,判断剩余旁路跳数是否为0,包括:获取剩余旁路跳数的最低位;以及响应于剩余旁路跳数的最低位为0,则剩余旁路跳数为0。
本公开至少一个实施例提供一种片上网络中的对象路由节点,包括:旁路请求接收单元,配置为接收第一旁路请求,第一旁路请求包括仲裁信息;仲裁单元,配置为根据仲裁信息,判断是否根据第一旁路请求在对象路由节点建立旁路通路;仲裁信息更新单元,配置为根据是否在对象路由节点建立旁路通路的判断结果,对仲裁信息进行更新,并且向下一路由节点提供更新后的仲裁信息;以及数据传输单元,配置为响应于在对象路由节点建立旁路通路,在建立旁路通路之后,响应于接收对应于第一旁路请求的路由数据包,通过旁路通路向下一路由节点提供路由数据包。
例如,在本公开的至少一个实施例提供的对象路由节点中,仲裁信息包括剩余旁路跳数和数据包头;旁路请求接收单元包括:剩余跳数接收子单元,配置为接收剩余旁路跳数;以及数据包头获取子单元,配置为获取数据包头;仲裁单元配置为:判断剩余旁路跳数是否为0;响应于剩余旁路跳数不为0,从对象路由节点的多个输出端口选择目标输出端口;以及根据目标输出端口的工作状态,判断是否根据第一旁路请求在对象路由节点建立旁路通路。
例如,在本公开的至少一个实施例提供的对象路由节点中,还包括:数据包头寄存器和第一多路选择器,数据包头寄存器配置为响应于不在对象路由节点建立旁路通路,存储仲裁单元提供的数据包头,并且向第一多路选择器提供控制信号,第一多路选择器与数据包头寄存器和数据包头获取子单元连接,第一多路选择器配置为根据控制信号,选择数据包头获取子单元提供的数据包头或者从数据包头寄存器获取的另一数据包头作为向下一路由节点提供的数据包头。
例如,在本公开的至少一个实施例提供的对象路由节点中,仲裁信息更新单元包括:计算子单元,配置为计算剩余旁路跳数与1的差值;以及选择子单元,配置为响应于判断结果为根据第一旁路请求在对象路由节点建立旁路通路,将剩余旁路跳数与1的差值作为更新后的剩余旁路跳数,响应于判断结果为不在对象路由节点建立旁路通路,将剩余旁路跳数恢复为初始旁路跳数。
例如,在本公开的至少一个实施例提供的对象路由节点中,初始旁路跳数包括多个二进制位,每个二进制位均为1,剩余旁路跳数与1的差值通过剩余旁路跳数右移一位得到,
计算子单元包括移位控制子单元,选择子单元包括第二多路选择器,移位控制子单元与第二多路选择器的第一端连接,且配置为将剩余旁路跳数右移1位,并且向第二多路选择器提供移位后的剩余旁路跳数;初始旁路跳数寄存器与第二多路选择器的第二端连接;第二多路选择器的第三端与数据包头寄存器连接以接收控制信号,第二多路选择器配置为根据控制信号选择初始旁路跳数或者移位后的剩余旁路跳数作为向下一路由节点提供的剩余旁路跳数。
例如,在本公开的至少一个实施例提供的对象路由节点中,仲裁单元包括低位获取子单元,配置为获取剩余旁路跳数的最低位,仲裁单元配置为根据最低位判断剩余旁路跳数是否为0。
例如,在本公开的至少一个实施例提供的对象路由节点中,数据传输单元包括:路由数据包接收子单元、路由数据包寄存器和第三多路选择器,路由数据包接收子单元配置为接收对应于第一旁路请求的路由数据包,路由数据包寄存器与路由数据包接收子单元连接,配置为获取路由数据包,第三多路选择器的第一端与路由数据包接收子单元连接,第三多路选择器的第二端与路由数据包寄存器连接,第三多路选择器的第三端与仲裁单元连接,第三多路选择器配置为根据仲裁单元的判断结果,选择路由数据包寄存器中的路由数据包或者数据包接收子单元的路由数据包输出至下一路由节点。
例如,在本公开的至少一个实施例提供的对象路由节点中,路由数据包寄存器还与仲裁单元连接,配置为响应于第三多路选择器选择路由数据包寄存器中的路由数据包输出至下一路由节点,存储来自数据包接收子单元的路由数据包。
本公开至少一个实施例提供一种路由设备,包括处理器;存储器,包括一个或多个计算机程序指令;一个或多个计算机程序指令被存储在所述存储器中,并由所述处理器执行时实现本公开任一实施例提供的用于片上网络中的对象路由节点的路由方法的指令。
本公开至少一个实施例提供一种计算机可读存储介质,非暂时性存储有计算机可读指令,当所述计算机可读指令由处理器执行时实现本公开任一实施例提供的用于片上网络中的对象路由节点的路由方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了一种应用旁路机制的片上网络的示意图;
图2A示出了本公开至少一个实施例提供的一种用于片上网络中的对象路由节点的路由方法的流程图;
图2B示出了本公开至少一个实施例提供的一种片上网络的示意图;
图3示出了本公开至少一个实施例提供的图2A中步骤S20的方法流程图;
图4示出了本公开至少一个实施例提供的图3中步骤S24的方法流程图;
图5示出了本公开至少一个实施例提供的一种片上网络的对象路由节点的方框图;
图6示出了本公开至少一个实施例提供的一种片上网络的对象路由节点的电路结构的示意图;
图7示出了本公开至少一个实施例提供的一种路由设备的示意框图;
图8示出了本公开至少一个实施例提供的另一种路由设备的示意框图;以及
图9示出了本公开至少一个实施例提供的一种计算机可读存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
片上网络是多核互联的主要组成部分,常见的可扩展片上网络拓扑主要有蝶形、环形、网格形(mesh)等。片上网络上的每个路由单元可以看作是由处理单元和路由节点组成。路由节点的主要功能是对数据包的存储和转发,直到数据包发送到目的路由节点。处理单元可以是各种功能模块,例如微处理器、DSP核、专用硬件资源等。
数据包都带有源信息和目的信息,当数据包进入路由节点之后,路由节点会根据源信息和目的信息确定输出端口,然后将数据包和输出端口信息存入缓存队列之中,接下来就从缓存队列之中将数据包取出并根据对应输出端口将数据包送出。随着核数的增加,片上网络的规模也越来越大,数据包的传输延时也会大大增加。例如,mesh网络是一种简单且易于扩展的拓扑结构,而且通过简单的XY路由策略就能够很好避免死锁。但是由于Mesh网络中所有路由节点之间并不是全相联的,所以随着mesh网络规模的增加数据包传输的跳数(Hop Count)也会增加。跳数表示两个路由节点之间的距离,当一个数据包从一个路由节点传到另一个相邻的路由节点上时,就称这个数据包经过的跳数为1。
为了降低数据包的传输延时,可以为每一个路由节点设置旁路机制,旁路机制为数据包不存入缓存队列而是直接输出到输出端口。因此,基于旁路机制,只要下游路由节点能够接收数据包,那么处于当前路由节点的这笔数据包便可以不用存入缓存队列,而直接绕过当前路由节点的缓存队列传到下游路由节点中。旁路机制可以大大降低数据包的传输延时。
图1示出了一种应用旁路机制的片上网络100的示意图。
如图1所示,该片上网络100为mesh网络。片上网络100包括多个处理单元101和多个路由节点R00~R03、R10~R13、R20~R23和R30~R33。
需要说明的是,多个处理单元101可以是不同类型的处理单元。例如可以是微处理器、DSP核、专用硬件资源等。
在片上网络100中包括用于传输旁路请求的旁路控制信号线102和用于传输数据包的数据线103。
需要说明的是,图1仅示出了mesh网络中第一行路由节点之间的旁路控制信号线102,实际上片上网络100还包含的其他的旁路控制信号线。例如,路由节点R00和路由节点R11之间也通过旁路控制信号线连接。
例如,一个路由请求为路由节点R00向路由节点R03发送数据包,路由路径为R00-R01-R02-R03。执行该路由请求的路由方法可以是路由节点R00先通过旁路控制信号线102分别向路由节点R01、路由节点R02和路由节点R03发送旁路请求,以便路由节点R01、路由节点R02和路由节点R03分别为路由节点R00建立旁路通路。然后,在建立旁路通路之后,路由节点R00提供的数据包通过数据线103依次经过路由节点R01、路由节点R02,最终到达路由节点R03。上述应用于片上网络100的路由方法,使得路由节点R00提供的数据包或者微片在一个周期内可以跨过多个节点,大大减小传输延时。旁路通路为输入端口到目标输出端口的通路,即数据包直接从输入端口到目标输出端口,不经过缓存队列缓存。
但是,片上网络100需要大量的旁路控制信号线来连接多个路由节点,导致硬件开销大,影响物理上的布局布线,并且每个路由节点都会收到来自其他多个路由节点的旁路请求,旁路通路的控制逻辑变得很复杂。
本公开的至少一个实施例提供了一种应用于片上网络中对象路由节点的路由方法。该路由方法包括:接收第一旁路请求,第一旁路请求包括仲裁信息;根据仲裁信息,判断是否根据第一旁路请求在对象路由节点建立旁路通路;根据是否在所述对象路由节点建立所述旁路通路的判断结果,对所述仲裁信息进行更新,并且向下一路由节点提供更新后的仲裁信息;以及响应于在对象路由节点建立旁路通路,在建立旁路通路之后,响应于接收对应于第一旁路请求的路由数据包,通过旁路通路向下一路由节点提供路由数据包。该路由方法不需要设置大量的旁路控制信号线,便能够减小传输延时,有效地简化了电路逻辑并减小了硬件开销,并且该路由方法能够缓解长时间的旁路通路引起一些数据微片无法从缓冲队列中出去导致的饿死现象。
图2A示出了本公开至少一个实施例提供的一种用于片上网络中的对象路由节点的路由方法的流程图。
如图2A所示,该路由方法包括步骤S10~步骤S40。
步骤S10:接收第一旁路请求,第一旁路请求包括仲裁信息。
步骤S20:根据仲裁信息,判断是否根据第一旁路请求在对象路由节点建立旁路通路。
步骤S30:根据是否在对象路由节点建立旁路通路的判断结果,对仲裁信息进行更新,并且向下一路由节点提供更新后的仲裁信息。
步骤S40:响应于在对象路由节点建立旁路通路,在建立旁路通路之后,响应于接收对应于第一旁路请求的路由数据包,通过旁路通路向下一路由节点提供路由数据包。
该路由方法使得旁路请求能够按照路由路径依次向下一路由节点传输,不需要在每个路由节点额外设置多个旁路控制信号线分别连接多个其他路由节点以通知各个其他路由节点建立旁路通路,从而该路由方法有效地简化了电路逻辑并减小了硬件开销。并且,该路由方法能够根据仲裁信息判断是否建立旁路通路,能够缓解长时间的旁路通路引起一些数据微片无法从缓冲队列中出去导致的饿死现象。
在本公开的实施例中,对象路由节点可以是片上网络中的任意一个路由节点。在一个路由路径中,对象路由节点可以作为中间路由节点,也可以作为源路由节点。在本公开的实施例中,将路由路径的源点(例如,路由节点R00)称为源路由节点,将路由路径的目的地(例如,路由节点R03)称为目的路由节点,位于路由路径的源点和目的地之间的路由节点称为中间路由节点(例如,路由节点R01和路由节点R02)。
对于步骤S10,若对象路由节点为一个路由路径中的中间路由节点,则接收来自上一路由节点的第一旁路请求。若对象路由节点为一个路由路径中的源路由节点,则接收来自处理单元的第一旁路请求。
在本公开的一些实施例中,仲裁信息包括剩余旁路跳数。剩余旁路跳数表示从对象路由节点开始数据包可以通过旁路通路传输的跳数。例如,若对象路由节点为路由路径中的中间路由节点,则接收上一路由节点提供的剩余旁路跳数。若对象路由节点为路由路径中的源路由节点,则确定初始旁路跳数以作为剩余旁路跳数。
在本公开的一些实施例中,例如为片上网络中的每个路由节点设置初始旁路跳数。初始旁路跳数表示在一个时钟周期内,从该路由节点开始可以通过旁路通路传输数据包的最大跳数。例如,对于源路由节点,剩余旁路跳数即为该源路由节点的初始旁路跳数。每当一个对象路由节点为数据包建立了的旁路通路,便消耗一个旁路跳数,因此对象路由节点向下一路由节点提供的剩余旁路跳数为该对象路由节点的剩余旁路跳数减1。
在本公开的另一些实施例中,仲裁信息还可以包括数据包头。数据包头例如可以包括源路由节点、目的路由节点等。利用数据包头能够进行路由计算以确定数据包的目标输出端口。例如,若对象路由节点为路由路径中的中间路由节点,则接收上一路由节点提供的数据包头。
在本公开的一些实施例中,仲裁信息可以由对象路由节点的上一路由节点或者处理单元提前一个周期提供给对象路由节点,以便对象路由节点在路由数据包到来之前建立好旁路通路。
对于步骤S20,例如若仲裁信息满足预设条件,则在对象路由节点建立旁路通路;若仲裁信息不满足预设条件,则不在对象路由节点建立旁路通路。
预设条件例如可以是剩余旁路跳数不为0,对象路由节点的目标输出端口空闲等。本领域技术人员可以根据实际需要设置预设条件。例如,仲裁信息包括传输时间,则预设条件可以是传输时间小于预设时间等。下文图3描述了步骤S20的实施例,请参考下文图3的描述。
对于步骤S30,对仲裁信息进行更新可以包括对剩余旁路跳数进行更新。例如,响应于判断结果为在对象路由节点建立旁路通路,将剩余旁路跳数与1的差值作为更新后的剩余旁路跳数,并且向下一路由节点提供更新后的剩余旁路跳数。
在本公开的一些实施例中,剩余旁路跳数可以采用一种特殊的编码方式。该编码方式例如为由多个值为1的二进制位表示初始旁路跳数,即,初始旁路跳数包括多个二进制位,每个二进制位均为1。在该初始旁路跳数的编码方式中,二进制位中值为1的位数即表示初始旁路跳数。例如,初始旁路跳数为1111b,表示初始旁路跳数为4,又例如,初始旁路跳数为111111b,表示初始旁路跳数为6。在该编码方式中,剩余旁路跳数与1的差值通过剩余旁路跳数右移一位得到。例如,1111b右移一位得到0111b,则剩余旁路跳数为3。又例如,剩余旁路跳数0111b与1的差值为0011b,即剩余旁路跳数0111b减1后得到的剩余旁路跳数为2。该特殊的编码方式简单,易于通过电路实现。
对仲裁信息进行更新除包括对剩余旁路跳数进行更新之外,还可以包括对数据包头进行更新。例如,数据包头包括第一方向跳数和第二方向跳数,第一方向跳数指示数据包头从对象路由节点到达目标路由节点在第一方向上经过的路由节点的个数,第二方向跳数指示数据包头从对象路由节点到达目标路由节点在第二方向上经过的路由节点的个数。
在本公开的一些实施例中,为了简化目标输出端口的计算逻辑对数据包头进行了定义。例如,若路由策略为XY路由策略,则数据包头中可以包含X方向跳数(Xhops)和Y方向跳数(Yhops)。X方向跳数为第一方向跳数的示例,Y方向跳数为第二方向跳数的示例。由于采用的XY路由策略,并且规定从源路由节点到目的路由节点至多有一次转向(左转或者右转),因此只要数据包头中的Xhops大于0则继续沿X方向直走,每沿X方向直走一次Xhops就减1,当Xhops减到0且Yhops大于0,数据包头就例如“左转”,接下来每次沿Y方向直走Yhops就减1,直到Xhops和Yhops都变成0,表示数据包头已传到目的节点。
因此,对仲裁信息进行更新还可以包括对数据包头中的X方向跳数(Xhops)和Y方向跳数(Yhops)进行更新。
图2B示出了本公开至少一个实施例提供的一种片上网络200的示意图。
如图2B所示,该片上网络200为mesh网络。片上网络200包括多个处理单元201和多个路由节点R'00~R'03、R'10~R'13、R'20~R'23和R'30~R'33。
需要说明的是,多个处理单元201可以是不同类型的处理单元。例如可以是微处理器、DSP核、专用硬件资源等。
该片上网络200中的每个路由节点不需要通过旁路控制信号线与多个其他路由节点连接,每个路由节点只需要与与其相邻的路由节点连接。
例如,路由路径为R'30-R'31-R'32-R'22-R'12-R'02,则从源路由节点R'30到目的路由节点R'02在X方向上的跳数为2,Y方向上的跳数为3。在源路由节点R'30设置数据包头中的Xhops为2,Yhops为3。当数据包头由源路由节点R'30传递到路由节点R'31时,路由节点R'31将数据包头中的Xhops更新为1,Yhops为3。当数据包头由路由节点R'31传递到路由节点R'32时,路由节点R'32将数据包头中的Xhops更新为0,Yhops为3。此时,路由节点R'32从与路由节点R'22连接的输出端口输出数据包头,使得数据包头左转。当数据包头传递到路由节点R'22时,路由节点R'22将数据包头中的Xhops更新为0,Yhops为2。路由节点R'22再向下一路由节点R'12提供更新后的Xhops和Yhops,直到Yhops被更新为0表明数据包头到达目的路由节点R'02。
对于步骤S40,路由数据包可以是源路由节点连接的处理单元和目的路由节点连接的处理单元之间的交互数据。
在本公开的一些实施例中,例如,对象路由节点在路由数据包来到之前的一个时钟周期建立。也即,上一路由节点或者处理单元提前一个周期将数据包头及剩余旁路跳数传给对象路由节点,使得对象路由节点在数据包来到之前的一个时钟周期建立旁路通路,从而对象路由节点在接收到第一旁路请求的路由数据包,直接通过旁路通路向下一路由节点提供路由数据包。例如,图2B中对象路由节点R'22包括端口1、端口2、端口3和端口4。在路由路径为R'30-R'31-R'32-R'22-R'12-R'02的路由数据包到来之前的一个时钟周期建立旁路通路,使得路由数据包从输入端口3直接到输出端口1。
图3示出了本公开至少一个实施例提供的图2A中步骤S20的方法流程图。
如图3所示,步骤S20可以包括步骤S21~步骤S24。
步骤S21:判断剩余旁路跳数是否为0。
步骤S22:响应于剩余旁路跳数为0,不在对象路由节点建立旁路通路。
步骤S23:响应于剩余旁路跳数不为0,从对象路由节点的多个输出端口选择目标输出端口。
步骤S24:根据目标输出端口的工作状态,判断是否根据第一旁路请求在对象路由节点建立旁路通路。
对于步骤S21,例如剩余旁路跳数采用上述特殊的编码方式,则步骤S21可以包括:获取剩余旁路跳数的最低位,以及响应于剩余旁路跳数的最低位为0,则剩余旁路跳数为0。
通过上述特殊的编码方式,在判断剩余旁路跳数是否为0时,只需要判断剩余旁路跳数中的最低位是否为0,从而使得易于判断剩余旁路跳数是否为0,提高了响应速度和建立旁路通路的效率。
对于步骤S22,例如若剩余旁路跳数为0,则是否根据第一旁路请求在对象路由节点建立旁路通路的判断结果为否,即,不在对象路由节点建立旁路通路。
当剩余旁路跳数为0时,不在对象路由节点建立旁路通路,使得一个时钟周期内的跳数小于最大跳数,至少部分地避免了由于数据包经过过多的旁路通路导致的数据包不稳定,保证了数据包的稳定性;并且,能够控制旁路通路的建立时间,缓解长时间的旁路通路引起一些数据微片无法从缓冲队列中出去导致的饿死现象。
对于步骤S23,在本公开的一些实施例中,例如根据数据包头,从对象路由节点的多个输出端口选择目标输出端口。
根据数据包头从对象路由节点的多个输出端口中选择目标输出端口包括:根据对象路由节点中用于接收第一旁路请求的输入端口、第一方向跳数和第二方向跳数,确定数据包头信息数据包头的传输方向;以及根据传输方向,从对象路由节点的多个输出端口选择目标输出端口。
如图2B所示,例如,路由路径为R'30-R'31-R'32-R'22-R'12-R'02,以对象路由节点为R'22为例说明步骤S23中根据数据包头从对象路由节点的多个输出端口中选择目标输出端口的实施方式。
例如,端口3作为输入端口接收路由节点R'32提供的第一旁路请求,对象路由节点R'22根据数据包头从端口1、端口2和端口4中选择目标输出端口。
路由节点R'32提供的第一旁路请求包括数据包头,此时数据包头中的Xhops为0,Yhops为3,因此数据包头沿Y方向直走,因此,目标输出端口为与路由节点R'12连接的输出端口1。
对于步骤S23,在本公开的另一些实施例中,例如通过查询对象路由节点中存储的路由表,从对象路由节点的多个输出端口选择目标输出端口。
例如,对于源路由节点可以通过查询路由表确定目标输出端口,并且数据包头中的Xhops和Yhops。
对于中间路由节点也可以通过查询路由表来确定目标输出端口。路由表可以是提前存储到路由节点中的,路由表例如可以包括源路由节点、目的路由节点和目标输出端口之间的对应关系,从而根据数据包头中的源路由节点和目的路由节点便可以确定目标输出端口。通过查询路由表确定目标输出端口的方法适用于包括路由表的对象路由节点,该方法能够简单快速地确定目标输出端口。
对于步骤S24,例如目标输出端口的工作状态包括空闲和被占用。例如,若目标输出端口的工作状态为空闲,则根据第一旁路请求在对象路由节点建立旁路通路。若目标输出端口的工作状态为被占用,则不建立旁路通路。
图4示出了本公开至少一个实施例提供的图3中步骤S24的方法流程图。
如图4所示,步骤S24可以包括步骤S241~步骤S243。
步骤S241:响应于目标输出端口的工作状态为空闲,判断是否存在请求利用目标输出端口建立另一旁路通路的第二旁路请求。
步骤S242:响应于存在请求利用目标输出端口建立另一旁路通路的第二旁路请求,判断第一旁路请求和第二旁路请求的优先级。
步骤S243:响应于第一旁路请求的优先级高于第二旁路请求的优先级,建立旁路通路。
该方法能够缓解两个旁路请求对目标输出端口的竞争导致的路由节点响应速度慢甚至宕机的技术问题。
对于步骤S241,例如对于图2B描述的示例中,对象路由节点R'22判断端口1的工作状态。若端口1的工作状态为空闲,则对象路由节点R'22判断是否存在请求利用端口1建立另一旁路通路的第二旁路请求。例如,若对象路由节点R'22在接收到来自对象路由节点R'32的第一旁路请求的同时,还接收到来自对象路由节点R'21的第二旁路请求,并且第二旁路请求的目标输出端口也为端口1,则对象路由节点R'21确定第二旁路请求也请求利用端口1建立另一旁路通路。该另一旁路通路为从输入端口4到输出端口1的旁路通路
对于步骤S242,例如在步骤S241的示例中,对象路由节点R'22判断来自对象路由节点R'32的第一旁路请求和来自对象路由节点R'21的第二旁路请求的优先级。
对于步骤S243,例如,若来自对象路由节点R'32的第一旁路请求的优先级高于来自对象路由节点R'21的第二旁路请求的优先级,则利用目标输出端口1为第一旁路请求建立从输入端口3到输出端口1的旁路通路。
如图4所示,步骤S24还可以包括步骤S244~步骤S245。
步骤S244:响应于第一旁路请求的优先级低于第二旁路请求的优先级,判断第二旁路请求的剩余旁路跳数是否为0。
步骤S245:响应于第二旁路请求的剩余旁路跳数为0,根据第一旁路请求在对象路由节点建立旁路通路。
对于步骤S244,例如若来自对象路由节点R'32的第一旁路请求的优先级低于来自对象路由节点R'21的第二旁路请求的优先级,则判断来自对象路由节点R'21的第二旁路请求的剩余旁路跳数是否为0。
对于步骤S245,例如若第二旁路请求的剩余旁路跳数为0,则根据第一旁路请求在对象路由节点R'22建立从输入端口3到输出端口1的旁路通路。
例如,若第一旁路请求的优先级低于第二旁路请求的优先级,且第二旁路请求的剩余旁路跳数不为0,则不为第一旁路请求建立从输入端口3到输出端口1的旁路通路,而为第二旁路请求建立从输入端口4到输出端口1的旁路通路。
在本公开的一些实施例中,在对象路由节点沿直线传输的旁路请求的优先级高于在对象路由节点发生方向改变的旁路请求的优先级。
例如,在上述示例中,来自对象路由节点R'32的第一旁路请求的传输方向为沿Y方向直走,来自对象路由节点R'21的第二旁路请求的传输方向为左转(即,在路由节点R'22处由沿X方向直走转变为沿Y方向直走),因此,在上述示例中,来自对象路由节点R'32的第一旁路请求的优先级高于来自对象路由节点R'21的第二旁路请求的优先级。
如图2A所示,路由方法除包括步骤S10~步骤S40之外,还可以包括步骤S50。
步骤S50:响应于不在对象路由节点建立旁路通路,将数据包头和路由数据包分别存储到缓存队列中,以在缓存队列中等待转发至下一路由节点。
例如,剩余旁路跳数为0,则将数据包头和路由数据包分别存储到缓存队列中,以在缓存队列中等待转发至下一路由节点。
又例如,剩余旁路跳数不为0,目标输出端口的工作状态为被占用,则将数据包头和路由数据包分别存储到缓存队列中,以在缓存队列中等待转发至下一路由节点。
又例如,剩余旁路跳数不为0,目标输出端口的工作状态为空闲,但是第一旁路请求的优先级低于第二旁路请求的优先级,且第二旁路请求的剩余旁路跳数不为0,则将数据包头和路由数据包分别存储到缓存队列中,以在缓存队列中等待转发至下一路由节点。
图5示出了本公开至少一个实施例提供的一种片上网络的对象路由节点500的方框图。
如图5所示,对象路由节点500可以包括旁路请求接收单元501、仲裁单元502、仲裁信息更新单元503和数据传输单元504。
旁路请求接收单元501配置为接收第一旁路请求,第一旁路请求包括仲裁信息。
例如,旁路请求接收单元501执行图2A中步骤S10。
仲裁单元502配置为根据仲裁信息,判断是否根据第一旁路请求在对象路由节点建立旁路通路。
例如,仲裁单元502执行图2A中步骤S20。
仲裁信息更新单元503配置为根据是否在对象路由节点建立旁路通路的判断结果,对仲裁信息进行更新,并且向下一路由节点提供更新后的仲裁信息。
例如,仲裁信息更新单元503执行图2A中步骤S30。
数据传输单元504配置为响应于在对象路由节点建立旁路通路,在建立旁路通路之后,响应于接收对应于第一旁路请求的路由数据包,通过旁路通路向下一路由节点提供路由数据包。
例如,数据传输单元504执行图2A中步骤S40。
该对象路由节点能够提高旁路通路的灵活性,有效地简化了电路逻辑并减小了硬件开销。
在本公开的至少一个实施例中,仲裁信息包括剩余旁路跳数和数据包头。旁路请求接收单元501包括剩余跳数接收子单元和数据包头获取单元。剩余跳数接收子单元配置为接收剩余旁路跳数。数据包头获取子单元配置为获取数据包头。仲裁单元502配置为判断剩余旁路跳数是否为0;响应于剩余旁路跳数不为0,从对象路由节点的多个输出端口选择目标输出端口;以及根据目标输出端口的工作状态,判断是否根据第一旁路请求在对象路由节点建立旁路通路。
需要说明的是,本公开的实施例中,对象路由节点500的各个单元与前述的路由方法的各个步骤对应,关于对象路由节点500的具体功能可以参考关于路由方法的相关描述,此处不再赘述。图5所示的对象路由节点500的组件和结构只是示例性的,而非限制性的,根据需要,该对象路由节点500还可以包括其他组件和结构。
图6示出了本公开至少一个实施例提供的一种片上网络的对象路由节点500的电路结构600的示意图。
如图6所示,电路结构600包括旁路请求接收单元501。旁路请求接收单元501例如可以包括数据包头获取单元511和剩余跳数接收子单元512。
数据包头获取单元511例如为数据包头获取端,数据包头获取端与相邻路由节点或者处理单元的数据包头输出端连接,以接收来自相邻路由节点或者处理单元的数据包头PktHdr。
剩余跳数接收子单元512例如为剩余跳数接收端,剩余跳数接收端与相邻路由节点或者处理单元的剩余旁路跳数输出端连接,以接收来自相邻路由节点的剩余旁路跳数BypHopsVect。
如图6所示,对象路由节点还包括数据包头寄存器601和多路选择器602。多路选择器602为第一多路选择器的示例。
数据包头寄存器601配置为响应于不在对象路由节点建立旁路通路,存储仲裁单元502提供的数据包头,并且向多路选择器602提供控制信号。如图6所示,数据包头寄存器601通过控制信号线611提供控制信号给多路选择器602。
如图6所示,数据包头寄存器601可以包括数据包头的缓存队列612。若不在对象路由节点建立旁路通路,则将第一旁路请求中的数据包头存储到数据包头的缓存队列612中。例如,数据包头寄存器601执行类似于上文图2A中的步骤S50,将数据包头存储到数据包头的缓存队列612中。
多路选择器602与数据包头寄存器601和数据包头获取子单元511连接,多路选择器602配置为根据控制信号,选择数据包头获取子单元511提供的数据包头或者从数据包头寄存器601获取的另一数据包头信息数据包头作为向下一路由节点提供的数据包头。
例如,如图6所示,多路选择器602的第一端与数据包头寄存器601电连接,第二端与数据包头获取子单元511电连接,第三端与控制信号线611连接。
例如,若控制信号线611为高电平,则多路选择器602选择输出数据包头寄存器601提供的另一数据包头信息。若控制信号线611为低电平,则多路选择器602选择输出数据包头获取子单元511提供的数据包头信息。
例如,数据包头寄存器601与仲裁单元502电连接,响应于仲裁单元502确定不在对象路由节点为第一旁路请求建立旁路通道,数据包头寄存器601向多路选择器发送高电平的控制信号;响应于仲裁单元502确定在对象路由节点为第一旁路请求建立旁路通道,数据包头寄存器601向多路选择器发送低电平的控制信号。
在本公开的一些实施例中,仲裁信息更新单元503包括计算子单元和选择子单元。计算子单元配置为计算剩余旁路跳数与1的差值。选择子单元配置为响应于判断结果为根据第一旁路请求在对象路由节点建立旁路通路,将剩余旁路跳数与1的差值作为更新后的剩余旁路跳数,响应于判断结果为不在对象路由节点建立旁路通路,将剩余旁路跳数恢复为初始旁路跳数。
例如,初始旁路跳数包括多个二进制位,每个二进制位均为1,剩余旁路跳数与1的差值通过剩余旁路跳数右移一位得到。
如图6所示,计算子单元包括移位控制子单元513,选择子单元包括多路选择器514。多路选择器514为第二多路选择器的示例。计算子单元例如可以为右移寄存器,右移寄存器将来自相邻路由节点的剩余旁路跳数BypHopsVect右移一位。移位控制子单元513例如执行类似于上文步骤S30中对剩余旁路跳数进行更新的相关操作。
移位控制子单元513与多路选择器514的第一端连接,且配置为将剩余旁路跳数右移1位,并且向多路选择器514提供移位后的剩余旁路跳数。
初始旁路跳数寄存器515与多路选择器514的第二端连接。初始旁路跳数寄存器515用于存储初始旁路跳数BypHopsMax。
多路选择器514的第三端与数据包头寄存器连接以接收控制信号。
多路选择器514配置为根据控制信号选择初始旁路跳数或者移位后的剩余旁路跳数作为向下一路由节点提供的剩余旁路跳数。
例如,响应于仲裁单元502确定不在对象路由节点为第一旁路请求建立旁路通道,控制信号为高电平,多路选择器514选择初始旁路跳数作为向下一路由节点提供的剩余旁路跳数,也即,将剩余旁路跳数恢复为初始旁路跳数。响应于仲裁单元502确定在对象路由节点为第一旁路请求建立旁路通道,控制信号为低电平,多路选择器514选择来自移位控制子单元513的剩余旁路跳数作为向下一路由节点提供的剩余旁路跳数。
如图6所示,仲裁单元502包括低位获取子单元516。低位获取子单元516配置为获取剩余旁路跳数的最低位BypHopsVect[0],仲裁单元502配置为根据最低位BypHopsVect[0]判断剩余旁路跳数是否为0。
在本公开的一些实施例中,数据传输单元504包括:路由数据包接收子单元517、路由数据包寄存器518和多路选择器519,多路选择器519为第三多路选择器的示例。
路由数据包接收子单元517配置为接收对应于第一旁路请求的路由数据包。路由数据包接收子单元517例如为路由数据包接收端,与相邻路由节点或者处理单元的路由数据包输出端连接,以接收来自相邻路由节点或者处理单元的路由数据包Win。
路由数据包寄存器518与路由数据包接收子单元517连接,配置为获取路由数据包。路由数据包寄存器518包括数据包缓冲队列603,由数据包缓冲队列603存储未建立旁路通路的路由数据包。
多路选择器519的第一端与路由数据包接收子单元517连接,多路选择器519的第二端与路由数据包寄存器518连接,多路选择器的第三端519与仲裁单元502连接。
多路选择器配置为根据仲裁单元502的判断结果,选择路由数据包寄存器518中的另一路由数据包或者数据包接收子单元517的路由数据包Win输出至下一路由节点。
路由数据包寄存器518还与仲裁单元502连接,配置为响应于多路选择器519选择路由数据包寄存器518中的另一路由数据包输出至下一路由节点,存储来自数据包接收子单元的路由数据包。例如,将来自数据包接收子单元的路由数据包存储到路由数据包缓冲队列603。例如,路由数据包寄存器518执行类似于上文图2A中的步骤S50,将路由数据包Win存储到路由数据包缓冲队列603中。
如图6所示,仲裁单元502根据数据包头PkHdr、剩余旁路跳数BypHopsVect和输出端口的工作状态判断是否在对象路由节点为第一旁路请求建立旁路通路。
在图6所示的电路结构中,例如给路由节点的每个端口设置一个初始旁路跳数寄存器515,初始旁路跳数寄存器515存储初始旁路跳数BypHopsMax。初始旁路跳数BypHopsMax表示从该路由节点开始可以通过旁路通路的跳数,路由节点提前一个周期将数据包头及剩余旁路跳数传给路由路径中的下一路由节点,下一路由节点接收到包头之后进行路由计算,如果计算出的目标输出端口没有被占用且剩余旁路跳数大于0,那么就建立输入到输出的B旁路通路,当路由数据包到来后直接通过旁路通路转发至输出端口。每当一个路由节点通过旁路通路将数据包头传给下一路由节点的剩余旁路跳数就减1。当剩余旁路跳数减到0时关闭旁路通道,等路由数据包到来就将其锁存到路由数据包寄存器518中,之后便将路由数据包存入数据包缓冲队列603中。在这里剩余旁路跳数BypHopsVect采用特殊编码(例如,0000b表示0,0001b表示1,0011b并表示2…)来表示剩余旁路跳数,每经过一个路由节点剩余旁路跳数BypHopVect右移一位表示减1,因此逻辑上只需要根据剩余旁路跳数BypHopsVect的最低位BypHopVect[0]来判断剩余旁路跳数是否大于0。
在二维Mesh网络中,采用XY路由策略,从源路由节点到目的路由节点的传输至多发生一次转向(左转或者右转),因此只需要在“直走”和例如“右转”上设置旁路通路。“直走”方向的数据包具有更高的优先级以获得建立旁路通路权限,只有“直走”方向BypHopsVect[0]无效时,才允许“右转”方向上的数据包建立旁路通路。
本公开的至少一个实施例利用现有Mesh网络连接,在XY路由策略下,剩余旁路跳数提前一个周期按照逐个递减的形式传递给各个路由节点,路由节点根据剩余旁路跳数跳数以及输出端口的计算结果使能路由通道,当数据包到来直接通过旁路通路转发至输出端口,理想情况下在一个周期能够跳过多个路由节点,从而大大降低了传输延时。
本公开的至少一个实施例还提供了一种路由设备,该路由设备包括处理器和存储器,存储器包括一个或多个计算机程序指令。一个或多个计算机程序指令被存储在所述存储器中,并由所述处理器执行时实现上述的用于片上网络中的对象路由节点的路由方法的指令。该路由设备能够提高旁路通路的灵活性,有效地简化了电路逻辑并减小了硬件开销。
图7为本公开一些实施例提供的一种路由设备的示意框图。如图7所示,该路由设备700包括处理器710和存储器720。存储器720用于存储非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器710用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器710运行时可以执行上文所述的路由方法中的一个或多个步骤。存储器720和处理器710可以通过总线系统和/或其它形式的连接机构(未示出)互连。
例如,处理器710可以是中央处理单元(CPU)、图形处理单元(GPU)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元。例如,中央处理单元(CPU)可以为X86或ARM架构等。处理器710可以为通用处理器或专用处理器,可以控制路由设备700中的其它组件以执行期望的功能。
例如,存储器720可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器710可以运行一个或多个计算机程序模块,以实现路由设备700的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
需要说明的是,本公开的实施例中,电子设备700的具体功能和技术效果可以参考上文中关于路由方法的描述,此处不再赘述。
图8为本公开一些实施例提供的另一种路由设备的示意框图。该路由设备800例如适于用来实施本公开实施例提供的路由方法。路由设备800可以是终端设备等。需要注意的是,图8示出的路由设备800仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图8所示,路由设备800可以包括处理装置(例如中央处理器、图形处理器等)810,其可以根据存储在只读存储器(ROM)820中的程序或者从存储装置880加载到随机访问存储器(RAM)830中的程序而执行各种适当的动作和处理。在RAM 830中,还存储有路由设备800操作所需的各种程序和数据。处理装置810、ROM 820以及RAM830通过总线840彼此相连。输入/输出(I/O)接口850也连接至总线840。
通常,以下装置可以连接至I/O接口850:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置860;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置870;包括例如磁带、硬盘等的存储装置880;以及通信装置890。通信装置890可以允许路由设备800与其他电子设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的路由设备800,但应理解的是,并不要求实施或具备所有示出的装置,路由设备800可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,上述路由方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述路由方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置890从网络上被下载和安装,或者从存储装置880安装,或者从ROM820安装。在该计算机程序被处理装置810执行时,可以实现本公开实施例提供的路由方法中限定的功能。
本公开的至少一个实施例还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储非暂时性计算机可读指令,当非暂时性计算机可读指令由计算机执行时可以实现上述的路由方法。利用该计算机可读存储介质,能够提高旁路通路的灵活性,有效地简化了电路逻辑并减小了硬件开销。
图9为本公开一些实施例提供的一种存储介质的示意图。如图9所示,存储介质900用于存储非暂时性计算机可读指令910。例如,当非暂时性计算机可读指令910由计算机执行时可以执行根据上文所述的路由方法中的一个或多个步骤。
例如,该存储介质900可以应用于上述路由设备700中。例如,存储介质900可以为图7所示的路由设备700中的存储器720。例如,关于存储介质900的相关说明可以参考图7所示的路由设备700中的存储器720的相应描述,此处不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (24)
1.一种用于片上网络中的对象路由节点的路由方法,包括:
接收第一旁路请求,其中,所述第一旁路请求包括仲裁信息;
根据所述仲裁信息,判断是否根据所述第一旁路请求在所述对象路由节点建立旁路通路;
根据是否在所述对象路由节点建立所述旁路通路的判断结果,对所述仲裁信息进行更新,并且向下一路由节点提供更新后的仲裁信息;以及
响应于在所述对象路由节点建立所述旁路通路,在建立所述旁路通路之后,响应于接收对应于所述第一旁路请求的路由数据包,通过所述旁路通路向所述下一路由节点提供所述路由数据包。
2.根据权利要求1所述的路由方法,其中,所述仲裁信息包括剩余旁路跳数,
根据所述仲裁信息,判断是否根据所述第一旁路请求在所述对象路由节点建立所述旁路通路,包括:
判断所述剩余旁路跳数是否为0;
响应于所述剩余旁路跳数不为0,从所述对象路由节点的多个输出端口选择目标输出端口;以及
根据所述目标输出端口的工作状态,判断是否根据所述第一旁路请求在所述对象路由节点建立所述旁路通路。
3.根据权利要求2所述的路由方法,其中,所述仲裁信息还包括数据包头,
响应于所述剩余旁路跳数不为0,从所述对象路由节点的多个输出端口选择目标输出端口,包括:
根据所述数据包头,从所述对象路由节点的所述多个输出端口选择所述目标输出端口。
4.根据权利要求3所述的路由方法,其中,所述数据包头包括第一方向跳数和第二方向跳数,所述第一方向跳数指示所述数据包头从所述对象路由节点到达目标路由节点在第一方向上经过的路由节点的个数,所述第二方向跳数指示所述数据包头从所述对象路由节点到达目标路由节点在第二方向上经过的路由节点的个数,
根据所述数据包头,从所述对象路由节点的所述多个输出端口选择所述目标输出端口,包括:
根据所述对象路由节点中用于接收所述第一旁路请求的输入端口、所述第一方向跳数和第二方向跳数,确定所述数据包头的传输方向;以及
根据所述传输方向,从所述对象路由节点的所述多个输出端口选择所述目标输出端口。
5.根据权利要求2所述的路由方法,其中,响应于所述剩余旁路跳数不为0,从所述对象路由节点的多个输出端口选择目标输出端口,包括:
查询所述对象路由节点中存储的路由表,从所述对象路由节点的所述多个输出端口选择所述目标输出端口。
6.根据权利要求2所述的路由方法,其中,根据所述目标输出端口的工作状态,判断是否根据所述第一旁路请求在所述对象路由节点建立所述旁路通路,包括:
响应于所述目标输出端口的工作状态为空闲,判断是否存在请求利用所述目标输出端口建立另一旁路通路的第二旁路请求;
响应于存在请求利用所述目标输出端口建立另一旁路通路的第二旁路请求,判断所述第一旁路请求和所述第二旁路请求的优先级;以及
响应于所述第一旁路请求的优先级高于所述第二旁路请求的优先级,建立所述旁路通路。
7.根据权利要求6所述的路由方法,其中,根据所述目标输出端口的工作状态,判断是否根据所述第一旁路请求在所述对象路由节点建立所述旁路通路,还包括:
响应于所述第一旁路请求的优先级低于所述第二旁路请求的优先级,判断所述第二旁路请求的剩余旁路跳数是否为0;以及
响应于所述第二旁路请求的剩余旁路跳数为0,根据所述第一旁路请求在所述对象路由节点建立所述旁路通路。
8.根据权利要求6所述的路由方法,其中,在所述对象路由节点沿直线传输的旁路请求的优先级高于在所述对象路由节点发生方向改变的旁路请求的优先级。
9.根据权利要求6所述的路由方法,其中,根据所述目标输出端口的工作状态,判断是否根据所述第一旁路请求在所述对象路由节点建立所述旁路通路,还包括:
响应于所述目标输出端口的工作状态为被占用,不在所述对象路由节点建立所述旁路通路。
10.根据权利要求2所述的路由方法,其中,根据所述仲裁信息,判断是否根据所述第一旁路请求在所述对象路由节点建立所述旁路通路,还包括:
响应于所述剩余旁路跳数为0,不在所述对象路由节点建立所述旁路通路。
11.根据权利要求9或10所述的路由方法,还包括:
响应于不在所述对象路由节点建立所述旁路通路,将数据包头和所述路由数据包分别存储到缓存队列中,以在所述缓存队列中等待转发至所述下一路由节点。
12.根据权利要求1所述的路由方法,其中,根据是否在所述对象路由节点建立所述旁路通路的判断结果,对所述仲裁信息进行更新,并且向下一路由节点提供更新后的仲裁信息,包括:
响应于所述判断结果为在所述对象路由节点建立所述旁路通路,将剩余旁路跳数与1的差值作为更新后的剩余旁路跳数,并且向所述下一路由节点提供所述更新后的剩余旁路跳数;以及
响应于所述判断结果为不在所述对象路由节点建立所述旁路通路,将所述剩余旁路跳数恢复为初始旁路跳数,并且向所述下一路由节点提供所述初始旁路跳数。
13.根据权利要求12所述的路由方法,其中,所述初始旁路跳数包括多个二进制位,每个二进制位均为1,
所述剩余旁路跳数与1的差值通过所述剩余旁路跳数右移一位得到。
14.根据权利要求13所述的路由方法,其中,判断所述剩余旁路跳数是否为0,包括:
获取所述剩余旁路跳数的最低位;以及
响应于所述剩余旁路跳数的最低位为0,则剩余旁路跳数为0。
15.一种片上网络中的对象路由节点,包括:
旁路请求接收单元,配置为接收第一旁路请求,其中,所述第一旁路请求包括仲裁信息;
仲裁单元,配置为根据所述仲裁信息,判断是否根据所述第一旁路请求在所述对象路由节点建立旁路通路;
仲裁信息更新单元,配置为根据是否在所述对象路由节点建立所述旁路通路的判断结果,对所述仲裁信息进行更新,并且向下一路由节点提供更新后的仲裁信息;以及
数据传输单元,配置为响应于在所述对象路由节点建立所述旁路通路,在建立所述旁路通路之后,响应于接收对应于所述第一旁路请求的路由数据包,通过所述旁路通路向下一路由节点提供所述路由数据包。
16.根据权利要求15所述的对象路由节点,其中,所述仲裁信息包括剩余旁路跳数和数据包头;
所述旁路请求接收单元包括:
剩余跳数接收子单元,配置为接收所述剩余旁路跳数;以及
数据包头获取子单元,配置为获取所述数据包头;
所述仲裁单元配置为:
判断所述剩余旁路跳数是否为0;
响应于所述剩余旁路跳数不为0,从所述对象路由节点的多个输出端口选择目标输出端口;以及
根据所述目标输出端口的工作状态,判断是否根据所述第一旁路请求在所述对象路由节点建立所述旁路通路。
17.根据权利要求16所述的对象路由节点,还包括:
数据包头寄存器和第一多路选择器,
所述数据包头寄存器配置为响应于不在所述对象路由节点建立所述旁路通路,存储所述仲裁单元提供的所述数据包头,并且向所述第一多路选择器提供控制信号,
所述第一多路选择器与所述数据包头寄存器和所述数据包头获取子单元连接,所述第一多路选择器配置为根据所述控制信号,选择所述数据包头获取子单元提供的数据包头或者从所述数据包头寄存器获取的另一数据包头作为向所述下一路由节点提供的数据包头。
18.根据权利要求17所述的对象路由节点,其中,所述仲裁信息更新单元包括:
计算子单元,配置为计算剩余旁路跳数与1的差值;以及
选择子单元,配置为响应于所述判断结果为根据所述第一旁路请求在所述对象路由节点建立所述旁路通路,将所述剩余旁路跳数与1的差值作为更新后的剩余旁路跳数,响应于所述判断结果为不在所述对象路由节点建立所述旁路通路,将所述剩余旁路跳数恢复为初始旁路跳数。
19.根据权利要求18所述的对象路由节点,其中,所述初始旁路跳数包括多个二进制位,每个二进制位均为1,所述剩余旁路跳数与1的差值通过所述剩余旁路跳数右移一位得到,
所述计算子单元包括移位控制子单元,所述选择子单元包括第二多路选择器,
所述移位控制子单元与所述第二多路选择器的第一端连接,且配置为将所述剩余旁路跳数右移1位,并且向所述第二多路选择器提供移位后的剩余旁路跳数;
所述对象路由节点还包括初始旁路跳数寄存器,所述初始旁路跳数寄存器与所述第二多路选择器的第二端连接;
所述第二多路选择器的第三端与所述数据包头寄存器连接以接收所述控制信号,
所述第二多路选择器配置为根据所述控制信号选择所述初始旁路跳数或者所述移位后的剩余旁路跳数作为向所述下一路由节点提供的剩余旁路跳数。
20.根据权利要求19所述的对象路由节点,其中,所述仲裁单元包括低位获取子单元,配置为获取所述剩余旁路跳数的最低位,
所述仲裁单元配置为根据所述最低位判断剩余旁路跳数是否为0。
21.根据权利要求15所述的对象路由节点,其中,所述数据传输单元包括:路由数据包接收子单元、路由数据包寄存器和第三多路选择器,
所述路由数据包接收子单元配置为接收对应于所述第一旁路请求的所述路由数据包,
所述路由数据包寄存器与所述路由数据包接收子单元连接,配置为获取所述路由数据包,
所述第三多路选择器的第一端与所述路由数据包接收子单元连接,所述第三多路选择器的第二端与所述路由数据包寄存器连接,所述第三多路选择器的第三端与所述仲裁单元连接,
所述第三多路选择器配置为根据所述仲裁单元的判断结果,选择所述路由数据包寄存器中的路由数据包或者所述路由数据包接收子单元的路由数据包输出至所述下一路由节点。
22.根据权利要求21所述的对象路由节点,路由数据包寄存器还与所述仲裁单元连接,配置为响应于所述第三多路选择器选择所述路由数据包寄存器中的路由数据包输出至所述下一路由节点,存储来自所述路由数据包接收子单元的路由数据包。
23.一种路由设备,包括:
处理器;
存储器,包括一个或多个计算机程序指令;
其中,所述一个或多个计算机程序指令被存储在所述存储器中,并由所述处理器执行时实现权利要求1-14任一项所述的用于片上网络中的对象路由节点的路由方法的指令。
24.一种计算机可读存储介质,非暂时性存储有计算机可读指令,其中,当所述计算机可读指令由处理器执行时实现权利要求1-14任一项所述的用于片上网络中的对象路由节点的路由方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211148701.0A CN115580572B (zh) | 2022-09-20 | 2022-09-20 | 路由方法、路由节点、路由装置和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211148701.0A CN115580572B (zh) | 2022-09-20 | 2022-09-20 | 路由方法、路由节点、路由装置和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115580572A CN115580572A (zh) | 2023-01-06 |
CN115580572B true CN115580572B (zh) | 2024-04-19 |
Family
ID=84581336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211148701.0A Active CN115580572B (zh) | 2022-09-20 | 2022-09-20 | 路由方法、路由节点、路由装置和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115580572B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117118934B (zh) * | 2023-10-25 | 2024-02-23 | 苏州元脑智能科技有限公司 | 三级clos互联网络、传输方法、系统、设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185751A (zh) * | 2010-12-13 | 2011-09-14 | 中国人民解放军国防科学技术大学 | 一种基于快速通道技术的单周期片上路由器 |
CN103270725A (zh) * | 2010-12-20 | 2013-08-28 | 阿尔卡特朗讯 | 配置用于分组数据业务的优化传送的网络的方法和网络节点 |
CN110620731A (zh) * | 2019-09-12 | 2019-12-27 | 中山大学 | 一种片上网络的路由装置及路由方法 |
CN113126904A (zh) * | 2019-12-30 | 2021-07-16 | 美光科技公司 | 存储器命令的功能仲裁和服务质量 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5895202B2 (ja) * | 2011-10-14 | 2016-03-30 | パナソニックIpマネジメント株式会社 | 中継器、中継器の制御方法、およびコンピュータプログラム |
-
2022
- 2022-09-20 CN CN202211148701.0A patent/CN115580572B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185751A (zh) * | 2010-12-13 | 2011-09-14 | 中国人民解放军国防科学技术大学 | 一种基于快速通道技术的单周期片上路由器 |
CN103270725A (zh) * | 2010-12-20 | 2013-08-28 | 阿尔卡特朗讯 | 配置用于分组数据业务的优化传送的网络的方法和网络节点 |
CN110620731A (zh) * | 2019-09-12 | 2019-12-27 | 中山大学 | 一种片上网络的路由装置及路由方法 |
CN113126904A (zh) * | 2019-12-30 | 2021-07-16 | 美光科技公司 | 存储器命令的功能仲裁和服务质量 |
Also Published As
Publication number | Publication date |
---|---|
CN115580572A (zh) | 2023-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8601423B1 (en) | Asymmetric mesh NoC topologies | |
JP5276220B2 (ja) | バス制御装置およびバス制御装置に指示を出力する制御装置 | |
JP6353084B2 (ja) | ネットワーク・オン・チップ設計向けのトランザクショナル・トラフィック仕様 | |
JP6216454B2 (ja) | ネットワークオンチップアーキテクチャにおけるシステムレベルシミュレーション | |
JP5083464B2 (ja) | ネットワークオンチップとネットワークルーティング方法とシステム | |
WO2014051778A1 (en) | Adaptive packet deflection to achieve fair, low-cost, and/or energy-efficient quality of service in network on chip devices | |
US20150003247A1 (en) | Mechanism to control resource utilization with adaptive routing | |
CN109189720B (zh) | 层次化片上网络拓扑结构及其路由方法 | |
JP6481427B2 (ja) | 演算処理装置,情報処理装置,及び情報処理装置の制御方法 | |
CN115580572B (zh) | 路由方法、路由节点、路由装置和计算机可读存储介质 | |
CN102780628B (zh) | 面向多核微处理器的片上互连网络路由方法 | |
US10547514B2 (en) | Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation | |
US10983910B2 (en) | Bandwidth weighting mechanism based network-on-chip (NoC) configuration | |
Alimi et al. | Network-on-chip topologies: Potentials, technical challenges, recent advances and research direction | |
CN105530206A (zh) | 一种基于Torus网络的双接入结构及其工作方式 | |
CN114707451A (zh) | 数字电路的版图规划方法、装置、电子设备、存储介质 | |
US11113223B1 (en) | Dual mode interconnect | |
CN111858096A (zh) | 一种基于目录的最近距离cache监听读的方法及系统 | |
US20180198682A1 (en) | Strategies for NoC Construction Using Machine Learning | |
CN117716676A (zh) | 用于芯片上及封包上的网络中的多维拓扑的路由器架构 | |
CN118474017B (zh) | 基于Torus网络结构的路由方法、Torus网络结构、基于Torus网络结构的路由装置、计算机设备和计算机可读存储介质 | |
US10990552B1 (en) | Streaming interconnect architecture for data processing engine array | |
JP5880169B2 (ja) | バス回路 | |
JP3758523B2 (ja) | 双方向リングネットワーク、ノード装置および双方向リングネットワーク制御方法 | |
US20230370392A1 (en) | Network-on-chip architecture for handling different data sizes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |