CN115361336B - 具有缓存的路由器、路由交换网络系统、芯片及路由方法 - Google Patents
具有缓存的路由器、路由交换网络系统、芯片及路由方法 Download PDFInfo
- Publication number
- CN115361336B CN115361336B CN202211269441.2A CN202211269441A CN115361336B CN 115361336 B CN115361336 B CN 115361336B CN 202211269441 A CN202211269441 A CN 202211269441A CN 115361336 B CN115361336 B CN 115361336B
- Authority
- CN
- China
- Prior art keywords
- output port
- cache pool
- router
- routing
- cache
- 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
Images
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/60—Router architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3027—Output queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文公开具有缓存的路由器、路由交换网络系统、芯片及路由方法。具有缓存的路由器包括1个输入端口、M个输出端口、第一缓存池、与M个输出端口一一对应的M个先入先出FIFO队列、输入端口处理模块、和与M个输出端口一一对应的M个输出端口处理模块。输入端口处理模块用于从第一缓存池中选择一个空闲存储位置作为目标位置以存储路由数据,将目标位置的索引信息保存在路由器输出端口的FIFO队列中。输出端口处理模块用于从输出端口的FIFO队列中读取排在最先输出位置的索引信息,根据索引信息确定第一缓存池中的目标位置,从目标位置读取路由数据并输出至输出端口。本文的技术方案能够提高路由转发的效率和网络吞吐量,以及节省资源。
Description
技术领域
本文涉及但不限于集成电路技术领域,尤其涉及一种具有缓存的路由器、路由交换网络系统、芯片及路由方法。
背景技术
随着芯片工艺的不断发展和多核技术的广泛应用,片上的路由交换网络越来越普遍。
在片上的路由交换网络中,一般会用到路由器和仲裁器。路由器(Router)在集成电路中是一种电路结构,一般具有一个或多个输入端口,多个输出端口,作用是按照既定规则将数据传递到适当的输出端口。仲裁器(Arbiter)在集成电路中是一种电路结构,一般具有多个输入端口,一个或多个输出端口,作用是将多个输入端口到达的数据按照既定规则传递到适当的输出端口。
工作量证明(Proof of Work ,简称POW)机制需要进行大量的哈希运算以在特定难度值条件下找到符合条件的哈希值。将计算任务分布在多个计算单元上可以提高工作量证明的计算速度。但是,由于每一个计算任务都需要通过片上的路由交换网络访问各个存储单元,因此,路由交换网络的吞吐量成为影响工作量证明计算速度的重要因素。
发明内容
第一方面,本公开提供了一种具有缓存的路由器,包括:
1个输入端口、M个输出端口、第一缓存池、与M个输出端口一一对应的M个先入先出FIFO队列、输入端口处理模块、和与M个输出端口一一对应的M个输出端口处理模块;M为正整数;
所述输入端口处理模块,用于通过路由器的输入端口接收路由请求,所述路由请求中包含路由数据和路由端口信息;当所述路由器的第一缓存池中存在空闲存储位置时,选择一个空闲存储位置作为目标位置,将所述路由请求中的路由数据存入所述目标位置;根据所述路由请求中的路由端口信息确定所述路由器的目标输出端口,将所述目标位置的索引信息保存在所述目标输出端口的FIFO队列中;其中,每个输出端口对应一个FIFO队列;
所述输出端口处理模块,用于在输出端口得到输出指示后,从所述输出端口的FIFO队列中读取排在最先输出位置的索引信息,根据所述索引信息确定第一缓存池中的目标位置,从所述目标位置读取路由数据并输出至所述输出端口。
第二方面,本公开提供了一种路由方法,应用于具有缓存的路由器,包括:
通过路由器的输入端口接收路由请求;其中,所述路由请求中包含路由数据和路由端口信息;
当所述路由器的第一缓存池中存在空闲存储位置时,选择一个空闲存储位置作为目标位置,将所述路由请求中的路由数据存入所述目标位置;根据所述路由请求中的路由端口信息确定所述路由器的目标输出端口,将所述目标位置的索引信息保存在所述目标输出端口的FIFO队列中;其中,所述路由器包括一个输入端口和M个输出端口,每个输出端口对应一个FIFO队列,M为正整数;
在所述路由器的输出端口得到输出指示后,从所述输出端口的FIFO队列中读取排在最先输出位置的索引信息,根据所述索引信息确定第一缓存池中的目标位置,从所述目标位置读取路由数据并输出至所述输出端口。
第三方面,本公开提供了一种路由交换网络系统,包括上述N个具有缓存的路由器和M个仲裁器;N和M为正整数;
任意一个具有缓存的路由器包括1个输入端口和M个输出端口;
任意一个仲裁器具有N个输入端口和一个输出端口;
任意一个具有缓存的路由器的M个输出端口分别与M个仲裁器的输入端口一一连接;
任意一个仲裁器的N个输入端口分别与N个具有缓存的路由器的输出端口一一连接。
第四方面,本公开提供了一种芯片,包括上述路由交换网络系统。
本公开实施例提供了具有缓存的路由器、路由交换网络系统、芯片及路由方法。具有缓存的路由器包括1个输入端口、M个输出端口、第一缓存池、与M个输出端口一一对应的M个先入先出FIFO队列、输入端口处理模块、和与M个输出端口一一对应的M个输出端口处理模块。通过多个输出端口共用第一缓存池能够提高路由转发效率并且节省资源,通过为每一个输出端口设置对应的FIFO队列,能够提高每一个输出端口的路由转发效率,并且在FIFO 队列中存储路由数据的索引信息而不是路由数据能够节省资源。
附图说明
附图用来提供对本公开技术方案的理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开的技术方案,并不构成对本公开技术方案的限制。
图1为本公开实施例提供的一种具有缓存的路由器的结构示意图;
图2为本公开实施例提供的另一种具有缓存的路由器的结构示意图;
图3为本公开实施例提供的一种输入端口处理模块的结构示意图;
图4为本公开实施例提供的一种输出端口处理模块的结构示意图;
图5为本公开实施例提供的一种第二缓存池的示意图;
图6为本公开实施例提供的一种具有缓存的1*4路由器的结构示意图;
图7为本公开实施例提供的一种路由方法的流程图;
图8为本公开实施例提供的一种路由交换网络系统的结构示意图。
具体实施方式
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由所附权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由所附权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
如图1所示,本公开实施例提供了一种具有缓存的路由器,包括:
1个输入端口、M个输出端口、第一缓存池、与M个输出端口一一对应的M个先入先出FIFO队列、输入端口处理模块、和与M个输出端口一一对应的M个输出端口处理模块;M为正整数;
所述输入端口处理模块,用于通过路由器的输入端口接收路由请求,所述路由请求中包含路由数据和路由端口信息;当所述路由器的第一缓存池中存在空闲存储位置时,选择一个空闲存储位置作为目标位置,将所述路由请求中的路由数据存入所述目标位置;根据所述路由请求中的路由端口信息确定所述路由器的目标输出端口,将所述目标位置的索引信息保存在所述目标输出端口的FIFO队列中;其中,每个输出端口对应一个FIFO队列;
所述输出端口处理模块,用于在输出端口得到输出指示后,从所述输出端口的FIFO队列中读取排在最先输出位置的索引信息,根据所述索引信息确定第一缓存池中的目标位置,从所述目标位置读取路由数据并输出至所述输出端口。
上述实施例提供的具有缓存的路由器包括1个输入端口、M个输出端口、第一缓存池、与M个输出端口一一对应的M个先入先出FIFO队列、输入端口处理模块、和与M个输出端口一一对应的M个输出端口处理模块。通过多个输出端口共用第一缓存池能够提高路由转发效率并且节省资源,通过为每一个输出端口设置对应的FIFO队列,能够提高每一个输出端口的路由转发效率,并且在FIFO 队列中存储路由数据的索引信息而不是路由数据能够节省资源。
FIFO队列中最先存入的对象(索引信息)将被最先取出,每次取出一个对象后,存入时排在所述被取出对象之后的对象将自动成为下一次取出操作时排在最先输出位置的对象。
在一些示例性的实施方式中,如图2所示,所述具有缓存的路由器还包括:第一缓存池记录模块;
第一缓存池记录模块,用于通过a个第一记录寄存器记录第一缓存池中每个存储位置的占用情况信息;其中,a是第一缓存池的深度,也即第一缓存池的存储位置的总数。a为正整数。
在一些示例性的实施方式中,第一缓存池记录模块,用于在第一缓存池中某个存储位置存入路由数据后,将该存储位置对应的第一记录寄存器的数值设置为指示占用;在第一缓存池中某个存储位置的路由数据被读出后,将该存储位置对应的第一记录寄存器的数值设置为指示空闲。
在一些示例性的实施方式中,如图3所示,所述输入端口处理模块包括:输入端口控制单元、第一缓存池寻址单元、第一缓存池写控制单元和FIFO队列写控制单元;
输入端口控制单元,用于从输入端口接收路由请求,所述路由请求中包含路由数据和路由端口信息,将路由数据发送给第一缓存池写控制单元,将路由端口信息发送给FIFO队列写控制单元;
第一缓存池寻址单元,用于判断第一缓存池是否存在空闲存储位置,是则选择一个空闲存储位置作为目标位置,将所述目标位置的索引信息发送给第一缓存池写控制单元和FIFO队列写控制单元;
第一缓存池写控制单元,用于将所述路由请求中的路由数据存入第一缓存池中的所述目标位置;
FIFO队列写控制单元,用于根据路由端口信息确定所述路由器的目标输出端口,将所述目标位置的索引信息保存在所述目标输出端口的FIFO队列中;其中,每个输出端口对应一个FIFO队列。
在一些示例性的实施方式中,所述第一缓存池寻址单元,用于采用以下方式判断第一缓存池是否存在空闲存储位置:获取第一缓存池记录模块的a个第一记录寄存器的记录信息,根据所述记录信息判断第一缓存池是否存在空闲存储位置。
在一些示例性的实施方式中,第一缓存池写控制单元,还用于将所述路由请求中的路由数据存入第一缓存池中的所述目标位置后,通知第一缓存池记录模块将所述目标位置对应的第一记录寄存器的数值设置为指示占用。
在一些示例性的实施方式中,如图4所示,第i个输出端口(输出端口i)对应的输出端口处理模块包括:输出端口控制单元、第一缓存池读控制单元和FIFO队列读控制单元;1≤i≤M;
输出端口控制单元,用于从第i个输出端口得到输出指示,通知FIFO队列读控制单元;
FIFO队列读控制单元,用于从第i个输出端口对应的FIFO队列(FIFO队列i)中读取排在最先输出位置的索引信息,将所述索引信息发送至第一缓存池读控制单元;
第一缓存池读控制单元,用于根据所述索引信息从第一缓存池中读取路由数据并输出至对应的第i个输出端口。
在一些示例性的实施方式中,第一缓存池读控制单元,还用于根据所述索引信息从第一缓存池中读取路由数据后,通知第一缓存池记录模块将第一缓存池中被读取路由数据的存储位置对应的第一记录寄存器的数值设置为指示空闲。
在一些示例性的实施方式中,输入端口控制单元,还用于通过路由器的输入端口接收路由请求后,当所述路由器的第一缓存池中存在空闲存储位置时,通过所述输入端口向上级模块返回指示路由器已经准备好接收路由数据的响应消息;当所述路由器的第一缓存池中没有空闲存储位置时,通过所述输入端口向上级模块返回指示路由器未准备好接收路由数据的响应消息。
在一些示例性的实施方式中,输出端口控制单元,用于采用以下方式从第i个输出端口得到输出指示:通过第i个输出端口向下级模块发送数据输出请求,如果接收到所述下级模块返回的授权输出的响应信号,则确定得到输出指示。
在一些示例性的实施方式中,路由器的每个输出端口对应的FIFO队列的长度等于第一缓存池的深度。比如,第一缓存池的深度为16,则路由器的每个输出端口对应的FIFO队列的长度也为16。将路由器的每个输出端口对应的FIFO队列的长度设置为第一缓存池的深度,可以应对多个路由请求短时集中发往同一个输出端口的情况。
在一些示例性的实施方式中,如图5所示,所述具有缓存的路由器还包括:第二缓存池;所述第二缓存池的深度与任意一个输出端口的FIFO队列的长度的和大于或者等于第一缓存池的深度;
所述第二缓存池,用于缓存任意一个输出端口的路由数据在第一缓存池的存储位置的索引信息;
所述输入端口处理模块,用于根据所述路由请求中的路由端口信息确定所述路由器的目标输出端口后,还判断所述目标输出端口的FIFO队列是否已满,如果已满则将路由数据在第一缓存池的存储位置的索引信息和所述目标输出端口的信息一起保存在第二缓存池中,如果未满则将所述存储位置的索引信息保存在所述目标输出端口的FIFO队列中。
所述第二缓存池的深度与任意一个输出端口的FIFO队列的长度的和大于第一缓存池的深度。比如,第一缓存池的深度为16,路由器的任意一个输出端口的FIFO队列的长度为4,第二缓存池的深度可以设置为20。
在一些示例性的实施方式中,所述输出端口处理模块,还用于从所述输出端口的FIFO队列中读取排在最先输出位置的索引信息后,查询所述第二缓存池中是否存在所述输出端口的索引信息,是则将第二缓存池中最先存入的所述输出端口的路由数据的目标位置的索引信息保存在所述输出端口的FIFO队列中。
在一些示例性的实施方式中,所述第二缓存池通过寄存器堆实现或通过多个寄存器实现。
对于一个1*M的且第一缓存池的深度为K的路由器,如果多个输出端口不共用第二缓存池,则需要M个容量为K*的FIFO队列。如果多个输出端口共用一个深度为K的第二缓存池,每个输出端口拥有独立的队列长度为b的FIFO队列,则需要M个容量为的FIFO队列和1个容量为K*的第二缓存池。因此,通过多个输出端口共用第二缓存池,能够进一步减少资源的使用。
如图6所示,以具有1个输入端口4个输出端口的带缓存的路由器为例。所述路由器包括:输入端口、4个输出端口、寻址仲裁模块、缓存池空满记录模块、选通模块、4个FIFO队列、缓存池、缓存池写控制模块、4个缓存池读控制模块、4个FIFO队列读控制模块。假设缓存池的深度为8。缓存池空满记录模块包括8个第一记录寄存器。
路由器从输入端口接收到一个路由请求时会同时接收到数据信号、握手信号和路由端口信号。数据信号位宽可以很大,远大于FIFO队列的位宽。握手信号是上级模块与路由器的交互信号,比如一对握手信号wvalid和wready,wvalid(上级模块发送给路由器)表示有路由请求到达,wready(路由器发送给上级模块)表示当前路由器内有缓存空间可接收路由请求。路由端口信号是路由数据需要发往的路由器的输出端口
路由器的输出端口和下级模块(比如仲裁器)之间发送一对握手信号rvalid和grant。rvalid(路由器发送给下级模块)表示路由器中有去往下级模块的路由请求,grant(下级模块发送给路由器)表示下级模块响应了该路由请求,授权路由器在对应的输出端口输出。
寻址仲裁模块,用于通过路由器的输入端口接收路由请求,所述路由请求中包含路由数据和路由端口信息;获取缓存池空满记录模块的8个第一记录寄存器的记录信息,根据所述记录信息判断缓存池是否存在空闲存储位置,是则选择一个空闲存储位置作为目标位置,将所述目标位置的索引信息发送给缓存池写控制模块和选通模块。
缓存池写控制模块,用于将所述路由请求中的路由数据存入缓存池中的所述目标位置。
选通模块,用于根据路由端口信息确定所述路由器的目标输出端口,将所述目标位置的索引信息保存在所述目标输出端口的FIFO队列中;其中,每个输出端口对应一个FIFO队列。
输出端口i对应的缓存池读控制模块,用于通过输出端口i向下级模块发送数据输出请求,如果接收到所述下级模块返回的授权输出的响应信号,则确定得到输出指示;从输出端口i对应的FIFO队列(FIFO队列i)中读取排在最先输出位置的索引信息,将所述索引信息发送至缓存池读控制模块;1≤i≤4。
缓存池读控制模块,用于根据所述索引信息从缓存池中读取路由数据并输出至对应的输出端口i;1≤i≤4。
假定如下场景:假设缓存池的深度为8,路由器的缓存池中已经存在3个路由数据(路由数据1、路由数据2、路由数据3),路由数据1的目的端口是输出端口1,路由数据2的目的端口是输出端口2,路由数据3的目的端口是输出端口3。缓存池的位置1、2、3分别存放着路由数据1、路由数据2和路由数据3。输出端口1的FIFO队列(FIFO1)中存着路由数据1在缓存池中存储位置的索引信息,输出端口2的FIFO队列(FIFO2)中存着路由数据2在缓存池中存储位置的索引信息,输出端口3的FIFO队列(FIFO3)中存着路由数据3在缓存池中存储位置的索引信息。
在时刻1,有一个去往输出端口1的路由请求到达该路由器,寻址仲裁模块通过查询缓存池空满记录模块得到一个能映射缓存池中空闲地址的索引信号(比如,第4寄存器指示缓存池的位置4),并把该索引信号发送给缓存池写控制模块和选通模块。选通模块根据路由端口信息确定目的端口是输出端口1,将路由数据的存储位置的索引信号发送给输出端口1的FIFO队列(FIFO队列1)。缓存池写控制模块根据寻址仲裁模块发送的索引信号,将路由数据写入缓存池中,并通知缓存池空满记录模块将第4寄存器的数值(指示缓存池的位置4是否被占用)设置为指示占用。
在时刻2,有一个去往输出端口2的路由请求到达该路由器,寻址仲裁模块通过查询缓存池空满记录模块得到一个能映射缓存池中空闲地址的索引信号(比如,第5寄存器指示缓存池的位置5),并把该索引信号发送给缓存池写控制模块和选通模块。选通模块根据路由端口信息确定目的端口是输出端口2,将路由数据的存储位置的索引信号发送给输出端口2的FIFO队列(FIFO队列2)。缓存池写控制模块根据寻址仲裁模块发送的索引信号,将路由数据写入缓存池中,并通知缓存池空满记录模块将第5寄存器的数值(指示缓存池的位置5是否被占用)设置为指示占用。
在时刻3,输出端口1和输出端口2收到下级模块的授权输出信号,也即grant1和grant2信号为高(高电平有效),FIFO队列1输出当前排在队列最前的索引信息(第1寄存器指示缓存池的位置1),FIFO队列2输出当前排在队列最前的索引信息(第2寄存器指示缓存池的位置2)。缓存池读控制模块1获取FIFO队列1输出的索引信息,根据索引信息从缓存池中读出路由数据1并发送至输出端口1,通知缓存池空满记录模块将第1寄存器的数值设置为指示空闲。缓存池读控制模块2获取FIFO队列2输出的索引信息,根据索引信息从缓存池中读出路由数据2并发送至输出端口2,通知缓存池空满记录模块将第2寄存器的数值设置为指示空闲。
如图7所示,本公开实施例提供了一种路由方法,应用于具有缓存的路由器,包括:
步骤S10,通过路由器的输入端口接收路由请求;其中,所述路由请求中包含路由数据和路由端口信息;
步骤S20,当所述路由器的第一缓存池中存在空闲存储位置时,选择一个空闲存储位置作为目标位置,将所述路由请求中的路由数据存入所述目标位置;根据所述路由请求中的路由端口信息确定所述路由器的目标输出端口,将所述目标位置的索引信息保存在所述目标输出端口的FIFO队列中;其中,所述路由器包括一个输入端口和M个输出端口,每个输出端口对应一个FIFO队列,M为正整数;
步骤S30,在所述路由器的输出端口得到输出指示后,从所述输出端口的FIFO队列中读取排在最先输出位置的索引信息,根据所述索引信息确定第一缓存池中的目标位置,从所述目标位置读取路由数据并输出至所述输出端口。
上述实施例提供的应用于具有缓存的路由器的路由方法,通过多个输出端口共用第一缓存池能够提高路由转发效率并且节省资源,通过为每一个输出端口设置对应的FIFO队列,能够提高每一个输出端口的路由转发效率,并且在FIFO 队列中存储路由数据的索引信息而不是路由数据能够节省资源。在一些示例性的实施方式中,所述第一缓存池通过寄存器堆实现或通过多个寄存器实现。只要第一缓存池没有满,就可以一直接收来自输入端口的路由数据,因此第一缓存池越大,网络吞吐量越大,但是占用的资源也越多。寄存器堆或多个寄存器可以实现并发读取,因此可以实现路由转发效率的最大化。
寄存器堆(Regfile)是计算机芯片领域中的一种电路结构,指集群的定制化的寄存器组合,具有一端口写、多端口读的应用特点,并且内部的寄存器之间没有多余空间,因此相较于相同数量多个寄存器实现的电路,使用寄存器堆的电路占用更小的面积。
在一些示例性的实施方式中,所述方法还包括:
通过a个第一记录寄存器记录第一缓存池中每个存储位置的占用情况信息;其中,a是第一缓存池的深度,也即第一缓存池的存储位置的总数,a为正整数。
在一些示例性的实施方式中,通过a个第一记录寄存器记录第一缓存池中每个存储位置的占用情况信息,包括:在第一缓存池中某个存储位置存入路由数据后,将该存储位置对应的第一记录寄存器的数值设置为指示占用;在第一缓存池中某个存储位置的路由数据被读出后,将该存储位置对应的第一记录寄存器的数值设置为指示空闲。
在一些示例性的实施方式中,通过路由器的输入端口接收路由请求后,所述方法还包括:当所述路由器的第一缓存池中存在空闲存储位置时,所述路由器通过所述输入端口向上级模块返回指示路由器已经准备好接收路由数据的响应消息。
在一些示例性的实施方式中,通过路由器的输入端口接收路由请求后,所述方法还包括:当所述路由器的第一缓存池中没有空闲存储位置时,所述路由器通过所述输入端口向上级模块返回指示路由器未准备好接收路由数据的响应消息。
在一些示例性的实施方式中,所述路由器的输出端口得到输出指示,包括:通过路由器的输出端口向下级模块发送数据输出请求,如果接收到所述下级模块返回的授权输出的响应信号,则确定得到输出指示。
在一些示例性的实施方式中,第一缓存池的存储位置的索引信息的位宽由第一缓存池的深度确定,所述索引信息的位宽小于任意一个存储位置缓存的路由数据的位宽。比如,路由数据的位宽可以高达1024比特,当第一缓存池的深度为16时,第一缓存池包括16个存储位置,第一缓存池的存储位置的索引信息为0至15,也即第一缓存池的存储位置的索引信息的位宽可以是4比特,远小于路由数据的位宽。
在一些示例性的实施方式中,路由器的每个输出端口对应的FIFO队列的长度等于第一缓存池的深度。比如,第一缓存池的深度为16,则路由器的每个输出端口对应的FIFO队列的长度也为16。将路由器的每个输出端口对应的FIFO队列的长度设置为第一缓存池的深度,可以应对多个路由请求短时集中发往同一个输出端口的情况。
在一些示例性的实施方式中,当路由器的每个输出端口对应的FIFO队列的长度小于第一缓存池的深度时,所述方法还包括:
根据所述路由请求中的路由端口信息确定所述路由器的目标输出端口后,判断所述目标输出端口的FIFO队列是否已满,如果已满则将路由数据在第一缓存池的存储位置的索引信息和所述目标输出端口的信息一起保存在第二缓存池中,如果未满则将所述存储位置的索引信息保存在所述目标输出端口的FIFO队列中;
其中,所述第二缓存池用于缓存任意一个输出端口的路由数据在第一缓存池的存储位置的索引信息;所述第二缓存池的深度与任意一个输出端口的FIFO队列的长度的和大于或等于第一缓存池的深度。
在一些示例性的实施方式中,从所述输出端口的FIFO队列中读取排在最先输出位置的索引信息后,所述方法还包括:查询所述第二缓存池中是否存在所述输出端口的索引信息,是则将第二缓存池中最先存入的所述输出端口的路由数据的目标位置的索引信息保存在所述输出端口的FIFO队列中。
如图8所示,本公开实施例提供了一种路由交换网络系统,包括上述N个具有缓存的路由器和M个仲裁器;N和M为正整数;
任意一个具有缓存的路由器包括1个输入端口和M个输出端口;
任意一个仲裁器具有N个输入端口和一个输出端口;
任意一个具有缓存的路由器的M个输出端口分别与M个仲裁器的输入端口一一连接;
任意一个仲裁器的N个输入端口分别与N个具有缓存的路由器的输出端口一一连接。
上述实施例提供的路由交换网络系统包括N个具有缓存的路由器和M个仲裁器,每个具有缓存的路由器通过多个输出端口共用第一缓存池能够提高路由转发效率并且节省资源,通过为每一个路由器输出端口设置对应的FIFO队列,能够提高每一个路由器输出端口的路由转发效率,并且在FIFO 队列中存储路由数据的索引信息而不是路由数据能够节省资源。
路由器一般具有一个输入端口和多个输出端口,作用是按照既定规则将数据传递到适当的输出端口。仲裁器一般具有多个输入端口和一个输出端口,作用是将多个输入端口到达的数据按照既定规则传递到适当的输出端口。路由器的输入端口可以连接上级模块(比如计算模块等)。仲裁器的输出端口可以连接下级模块(比如存储控制器、片内总线控制器等)。
本公开实施例还提供了一种芯片,包括上述路由交换网络系统。
在一些示例性的实施方式中,所述芯片支持基于以太坊工作量证明机制的应用。
本领域普通技术人员可以理解,上文中所公开的装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (15)
1.一种具有缓存的路由器,包括:
1个输入端口、M个输出端口、第一缓存池、与M个输出端口一一对应的M个先入先出队列、输入端口处理模块、和与M个输出端口一一对应的M个输出端口处理模块;M为正整数;
所述输入端口处理模块,用于通过路由器的输入端口接收路由请求,所述路由请求中包含路由数据和路由端口信息;当所述路由器的第一缓存池中存在空闲存储位置时,选择一个空闲存储位置作为目标位置,将所述路由请求中的路由数据存入所述目标位置;根据所述路由请求中的路由端口信息确定所述路由器的目标输出端口,将所述目标位置的索引信息保存在所述目标输出端口的先入先出队列中;其中,每个输出端口对应一个先入先出队列;
所述输出端口处理模块,用于在输出端口得到输出指示后,从所述输出端口的先入先出队列中读取排在最先输出位置的索引信息,根据所述索引信息确定第一缓存池中的目标位置,从所述目标位置读取路由数据并输出至所述输出端口。
2.根据权利要求1所述的路由器,其特征在于:
所述输入端口处理模块包括:输入端口控制单元、第一缓存池寻址单元、第一缓存池写控制单元和先入先出队列写控制单元;
所述输入端口控制单元,用于从输入端口接收路由请求,所述路由请求中包含路由数据和路由端口信息,将路由数据发送给第一缓存池写控制单元,将路由端口信息发送给先入先出队列写控制单元;
所述第一缓存池寻址单元,用于判断第一缓存池是否存在空闲存储位置,是则选择一个空闲存储位置作为目标位置,将所述目标位置的索引信息发送给第一缓存池写控制单元和先入先出队列写控制单元;
所述第一缓存池写控制单元,用于将所述路由请求中的路由数据存入第一缓存池中的所述目标位置;
所述先入先出队列写控制单元,用于根据路由端口信息确定所述路由器的目标输出端口,将所述目标位置的索引信息保存在所述目标输出端口的先入先出队列中;其中,每个输出端口对应一个先入先出队列。
3.根据权利要求2所述的路由器,其特征在于:
第i个输出端口对应的输出端口处理模块包括:输出端口控制单元、第一缓存池读控制单元和先入先出队列读控制单元;1≤i≤M;
输出端口控制单元,用于从第i个输出端口得到输出指示,通知先入先出队列读控制单元;
先入先出队列读控制单元,用于从第i个输出端口对应的先入先出队列中读取排在最先输出位置的索引信息,将所述索引信息发送至第一缓存池读控制单元;
第一缓存池读控制单元,用于根据所述索引信息从第一缓存池中读取路由数据并输出至对应的第i个输出端口。
4.根据权利要求3所述的路由器,其特征在于:
所述具有缓存的路由器还包括:第一缓存池记录模块;
所述第一缓存池记录模块,用于通过a个第一记录寄存器记录第一缓存池中每个存储位置的占用情况信息;其中,a是第一缓存池的深度,a为正整数。
5.根据权利要求4所述的路由器,其特征在于:
所述第一缓存池寻址单元,用于采用以下方式判断第一缓存池是否存在空闲存储位置:获取第一缓存池记录模块的a个第一记录寄存器的记录信息,根据所述记录信息判断第一缓存池是否存在空闲存储位置。
6.根据权利要求4所述的路由器,其特征在于:
第一缓存池写控制单元,还用于将所述路由请求中的路由数据存入第一缓存池中的所述目标位置后,通知第一缓存池记录模块将所述目标位置对应的第一记录寄存器的数值设置为指示占用。
7.根据权利要求4所述的路由器,其特征在于:
第一缓存池读控制单元,还用于根据所述索引信息从第一缓存池中读取路由数据后,通知第一缓存池记录模块将第一缓存池中被读取路由数据的存储位置对应的第一记录寄存器的数值设置为指示空闲。
8.根据权利要求1-7中任一项所述的路由器,其特征在于:
路由器的每个输出端口对应的先入先出队列的长度等于第一缓存池的深度。
9.根据权利要求1-7中任一项所述的路由器,其特征在于:
所述具有缓存的路由器还包括:第二缓存池;所述第二缓存池的深度与任意一个输出端口的先入先出队列的长度的和大于或者等于第一缓存池的深度;
所述第二缓存池,用于缓存任意一个输出端口的路由数据在第一缓存池的存储位置的索引信息;
所述输入端口处理模块,用于根据所述路由请求中的路由端口信息确定所述路由器的目标输出端口后,还判断所述目标输出端口的先入先出队列是否已满,如果已满则将路由数据在第一缓存池的存储位置的索引信息和所述目标输出端口的信息一起保存在第二缓存池中,如果未满则将所述存储位置的索引信息保存在所述目标输出端口的先入先出队列中。
10.根据权利要求9所述的路由器,其特征在于:
所述输出端口处理模块,还用于从所述输出端口的先入先出队列中读取排在最先输出位置的索引信息后,查询所述第二缓存池中是否存在所述输出端口的索引信息,是则将第二缓存池中最先存入的所述输出端口的路由数据的目标位置的索引信息保存在所述输出端口的先入先出队列中。
11.一种路由交换网络系统,包括M个仲裁器和N个上述权利要求1-10中任一项所述的具有缓存的路由器;N和M为正整数;
任意一个具有缓存的路由器包括1个输入端口和M个输出端口;
任意一个仲裁器具有N个输入端口和一个输出端口;
任意一个具有缓存的路由器的M个输出端口分别与M个仲裁器的输入端口一一连接;
任意一个仲裁器的N个输入端口分别与N个具有缓存的路由器的输出端口一一连接。
12.一种芯片,包括:权利要求11所述的路由交换网络系统。
13.一种路由方法,应用于具有缓存的路由器,包括:
通过路由器的输入端口接收路由请求;其中,所述路由请求中包含路由数据和路由端口信息;
当所述路由器的第一缓存池中存在空闲存储位置时,选择一个空闲存储位置作为目标位置,将所述路由请求中的路由数据存入所述目标位置;根据所述路由请求中的路由端口信息确定所述路由器的目标输出端口,将所述目标位置的索引信息保存在所述目标输出端口的先入先出队列中;其中,所述路由器包括一个输入端口和M个输出端口,每个输出端口对应一个先入先出队列,M为正整数;
在所述路由器的输出端口得到输出指示后,从所述输出端口的先入先出队列中读取排在最先输出位置的索引信息,根据所述索引信息确定第一缓存池中的目标位置,从所述目标位置读取路由数据并输出至所述输出端口。
14.根据权利要求13所述的路由方法,其特征在于:
当路由器的每个输出端口对应的先入先出队列的长度小于第一缓存池的深度时,所述方法还包括:
根据所述路由请求中的路由端口信息确定所述路由器的目标输出端口后,判断所述目标输出端口的先入先出队列是否已满,如果已满则将路由数据在第一缓存池的存储位置的索引信息和所述目标输出端口的信息一起保存在第二缓存池中,如果未满则将所述存储位置的索引信息保存在所述目标输出端口的先入先出队列中;
其中,所述第二缓存池用于缓存任意一个输出端口的路由数据在第一缓存池的存储位置的索引信息;所述第二缓存池的深度与任意一个输出端口的先入先出队列的长度的和大于或者等于第一缓存池的深度。
15.根据权利要求13所述的路由方法,其特征在于:
所述方法还包括:通过a个第一记录寄存器记录第一缓存池中每个存储位置的占用情况信息;其中,a是第一缓存池的深度,a为正整数。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211269441.2A CN115361336B (zh) | 2022-10-18 | 2022-10-18 | 具有缓存的路由器、路由交换网络系统、芯片及路由方法 |
PCT/CN2023/108912 WO2024082747A1 (zh) | 2022-10-18 | 2023-07-24 | 具有缓存的路由器、路由交换网络系统、芯片及路由方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211269441.2A CN115361336B (zh) | 2022-10-18 | 2022-10-18 | 具有缓存的路由器、路由交换网络系统、芯片及路由方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115361336A CN115361336A (zh) | 2022-11-18 |
CN115361336B true CN115361336B (zh) | 2022-12-30 |
Family
ID=84008169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211269441.2A Active CN115361336B (zh) | 2022-10-18 | 2022-10-18 | 具有缓存的路由器、路由交换网络系统、芯片及路由方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115361336B (zh) |
WO (1) | WO2024082747A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115361336B (zh) * | 2022-10-18 | 2022-12-30 | 中科声龙科技发展(北京)有限公司 | 具有缓存的路由器、路由交换网络系统、芯片及路由方法 |
CN116233036B (zh) * | 2023-03-14 | 2023-08-25 | 上海耀芯电子科技有限公司 | 一种dma传输控制方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105897621A (zh) * | 2016-07-01 | 2016-08-24 | 中国航空无线电电子研究所 | 基于cioq结构的千兆afdx交换机及其交换方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841420B (zh) * | 2010-05-24 | 2011-11-23 | 中国人民解放军国防科学技术大学 | 面向片上网络的低延迟路由器结构 |
US9223618B2 (en) * | 2011-09-20 | 2015-12-29 | Intel Corporation | Multi-threaded queuing system for pattern matching |
CN104022950B (zh) * | 2014-06-10 | 2017-06-06 | 复旦大学 | 一种可共享和自配置缓存的路由器结构 |
CN105740168B (zh) * | 2016-01-23 | 2018-07-13 | 中国人民解放军国防科学技术大学 | 一种容错目录高速缓存控制器 |
CN114915594B (zh) * | 2022-07-14 | 2022-09-30 | 中科声龙科技发展(北京)有限公司 | 均衡路由的方法、网络互连系统、交叉开关装置及芯片 |
CN115361336B (zh) * | 2022-10-18 | 2022-12-30 | 中科声龙科技发展(北京)有限公司 | 具有缓存的路由器、路由交换网络系统、芯片及路由方法 |
-
2022
- 2022-10-18 CN CN202211269441.2A patent/CN115361336B/zh active Active
-
2023
- 2023-07-24 WO PCT/CN2023/108912 patent/WO2024082747A1/zh unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105897621A (zh) * | 2016-07-01 | 2016-08-24 | 中国航空无线电电子研究所 | 基于cioq结构的千兆afdx交换机及其交换方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115361336A (zh) | 2022-11-18 |
WO2024082747A1 (zh) | 2024-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115361336B (zh) | 具有缓存的路由器、路由交换网络系统、芯片及路由方法 | |
US8346884B2 (en) | Method and apparatus for a shared I/O network interface controller | |
US8214845B2 (en) | Context switching in a network on chip by thread saving and restoring pointers to memory arrays containing valid message data | |
US7324509B2 (en) | Efficient optimization algorithm in memory utilization for network applications | |
CN112152932B (zh) | 片上网络路由控制方法、片上网络路由器及可读存储介质 | |
KR20160117108A (ko) | 다수의 링크된 메모리 리스트들을 사용하기 위한 방법 및 장치 | |
US20060047874A1 (en) | Resource management apparatus | |
US6253262B1 (en) | Arbitrating FIFO implementation which positions input request in a buffer according to its status | |
JP2561261B2 (ja) | バッファ記憶アクセス方法 | |
US20060218313A1 (en) | DMA circuit and computer system | |
US6832310B1 (en) | Manipulating work queue elements via a hardware adapter and software driver | |
US11720279B2 (en) | Apparatus and methods for managing packet transfer across a memory fabric physical layer interface | |
US7240144B2 (en) | Arbitration of data transfer requests | |
CN115344515B (zh) | 实现访问控制的方法、片上计算系统及芯片 | |
JP2002024007A (ja) | プロセッサシステム | |
EP4070203B1 (en) | Apparatus and methods for managing packet transfer across a memory fabric physical layer interface | |
US7200690B2 (en) | Memory access system providing increased throughput rates when accessing large volumes of data by determining worse case throughput rate delays | |
US20240163222A1 (en) | Virtual Channel Buffer Bypass | |
US6976142B1 (en) | Method and system to provide simultaneous access by multiple pipelines to a table | |
JPH09269937A (ja) | プロセッサ間通信におけるパケット送信方法およびその装置 | |
CN118331480A (zh) | 存储器控制系统与存储器控制方法 | |
JP2000132527A (ja) | プロセッサ間通信制御装置 | |
KR100243414B1 (ko) | 가상연결단위의 큐잉장치 및 방법 | |
CN117312197A (zh) | 报文处理方法、装置、电子设备及非易失性存储介质 | |
JP2003036240A (ja) | マルチプロセッサ間通信装置 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230414 Address after: 10 Jialeng Road, Singapore # 09-11 Patentee after: Shenglong (Singapore) Pte. Ltd. Address before: 1605, floor 16, No. 9, North Fourth Ring West Road, Haidian District, Beijing 100080 Patentee before: SUNLUNE TECHNOLOGY DEVELOPMENT (BEIJING) Co.,Ltd. |
|
TR01 | Transfer of patent right |