CN116686269A - 一种路由器及片上系统 - Google Patents
一种路由器及片上系统 Download PDFInfo
- Publication number
- CN116686269A CN116686269A CN202180089309.0A CN202180089309A CN116686269A CN 116686269 A CN116686269 A CN 116686269A CN 202180089309 A CN202180089309 A CN 202180089309A CN 116686269 A CN116686269 A CN 116686269A
- Authority
- CN
- China
- Prior art keywords
- message
- output port
- input port
- port
- 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.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种路由器及片上系统,用以在调度报文时提高带宽的利用率。该路由器包括多个输入端口和多个输出端口,每个输入端口用于针对输入的多个报文向各报文相应的输出端口发送请求消息;每个输出端口用于对接收到的请求消息进行仲裁,向获得仲裁的输入端口发送许可消息。采用上述方案,每个输入端口在向输出端口发送请求调度报文的请求消息时,可以针对输入的多个报文分别向多个输出端口发送请求,输入端口发送请求时并不受业务类型的限制。与现有技术相比,在输入端口向某个输出端口发送的请求消息未获得仲裁的情况下,该输入端口还可以获得其他输出端口的仲裁,输出端口的带宽利用率高。
Description
本申请涉及芯片技术领域,尤其涉及一种路由器及片上系统。
片上网络(network on chip,NoC)是片上系统(system on chip,SoC)的一种通信方法。图1示出了一种SoC内部互联总线的示意图。其中,片上网络路由器(router)负责实现主机(master)访问从机(slave)的路由:路由器根据每个主机发出的访问地址,决定将相应报文调度至某个输出节点(另一路由器或从机)。
由于主机对从机有不同的业务访问需求,因此路由器内部设置有多个虚拟通道(virtual channel,VC),每个虚拟通道用于传输一种业务类型的报文。图2示出了路由器内部的一种可能的结构示意图。该路由器包括两部分:输入端口(inport)和输出端口(outport)。输入端口可以划分出多个VC(图2中以划分两个VC为例),每个VC对应一个先入先出(first input first output,FIFO)的VC队列。VC队列会根据当前需要调度的报文,向对应的输出端口发送仲裁请求。输出端口中的仲裁器(arbitor)在接收到多个仲裁请求的情况下,根据发送仲裁请求的各个输入端口的优先级,仲裁出某个输入端口的某个VC队列进行报文的调度。
在一些场景下,采用上述报文调度方案会出现带宽损失的问题。如图3所示,当输入端口0和输入端口1的同一VC(比如VC0)均需要向输出端口0调度报文时,输入端口0和输入端口1都向输出端口0发送仲裁请求。假设输入端口0获得仲裁,那么输入端口0可以向输出端口0调度报文,输入端口1则暂时不能调度报文到输出端口0。由于输入端口1中的VC0队列是FIFO结构,因此输入端口1在调度至输出端口0的报文(简称报文0)未发送出去的情况下,即使输入端口1的VC0队列中还存在需要调度至输出端口1的报文(简称报文1),输入端口1由于VC0队列的头阻塞也无法申请向输出端口1调度报文,此时路由器的输出端口仅输出端口0在使用,而输出端口1未被使用,使得带宽被浪费。
综上,现有技术提供的报文调度方案中存在带宽浪费的问题。
发明内容
本申请实施例提供了一种路由器及片上系统,用以在调度报文时提高带宽的利用率。
第一方面,本申请实施例提供一种路由器,该路由器包括多个输入端口和多个输出端口。其中,多个输入端口中的每个输入端口用于针对输入的多个报文向各报文相应的输出端口发送请求消息;多个输出端口中的每个输出端口用于对接收到的请求消息进行仲裁,向获得仲裁的输入端口发送许可消息。
采用上述方案,每个输入端口在向输出端口发送请求调度报文的请求消息时,可以针对输入的多个报文分别向多个输出端口发送请求,输入端口发送请求时并不受业务类型的限制。与现有技术中每个输入端口针对一种业务类型仅可以向一个输出端口发送一条请求消息的方案相比,在输入端口向某个输出端口发送的请求消息未获得仲裁的情况下,该输 入端口还可以获得其他输出端口的仲裁,不会出现现有技术中所述的VC队列发生头阻塞的现象,因而输出端口的带宽利用率高。
在一种可能的设计中,各输入端口中配置有共享缓存,共享缓存中存储有多种业务类型的报文,每个输入端口用于针对共享缓存中存储的多个报文同时向各报文相应的输出端口发送请求消息,在接收到相应输出端口发送的许可消息之后,调度相应报文并且发送该报文到相应输出端口。
其中,共享缓存可以通过随机存取存储器RAM或寄存器实现。
采用上述方案,在每个输入端口中,该输入端口接收到的报文均存储在共享缓存中。该输入端口可以针对共享缓存中的多个报文同时向相应的输出端口发送请求消息,使得多个输出端口可以同时对接收到的请求消息进行仲裁并确定获得仲裁的请求消息,提高了报文调度的效率。
进一步地,可以设定共享缓存中,第一业务类型的报文的存储空间小于或等于第一门限值,第二业务类型的报文的存储空间小于或等于第二门限值。
采用上述方案,在共享缓存中,针对不同业务类型的报文设置不同的存储空间上限(水线),以避免共享缓存的存储空间被部分业务类型的报文占用,导致其他业务类型的报文的存储空间受限。
此外,每个输入端口中可以维护有多个链表,每个链表对应于该输入端口支持的相应的业务类型和相应的输出端口,每个链表用于记录需要向相应输出端口调度的相应业务类型的报文。
进一步地,每个输入端口可以针对记录有要调度的报文的各个链表向相应的输出端口分别发送请求消息,在接收到相应输出端口发送的许可消息之后,调度该链表中记录的报文并且发送该报文到相应输出端口。
在一种可能的设计中,第一方面提供的路由器包括第一输入端口、第二输入端口、第一输出端口和第二输出端口。
第一输入端口可以向第一输出端口发送第一请求消息,第一请求消息用于指示第一输入端口请求向第一输出端口调度第一业务类型的第一报文。
第二输入端口可以向第一输出端口发送第二请求消息,第二请求消息用于指示第二输入端口请求向第一输出端口调度第一业务类型的第二报文;第二输入端口还可以向第二输出端口发送第三请求消息,第三请求消息用于指示第二输入端口请求向第二输出端口调度第一业务类型的第三报文。
第一输出端口可以对第一请求消息和第二请求消息进行仲裁,向第一输入端口发送第一许可消息,第一许可消息用于指示允许第一输入端口向第一输出端口调度第一报文。
第二输出端口可以对第三请求消息进行仲裁,向第二输入端口发送第二许可消息,第二许可消息用于指示允许第二输入端口向第二输出端口调度第三报文。
采用上述方案,第二输入端口在未获得第一输出端口的仲裁的情况下,第二输入端口还可以获得第二输出端口的仲裁。与现有技术相比,采用上述方案,由于输入端口针对需要调度至不同输出端口的报文,可以分别向相应的不同输出端口发送请求消息,因而第二输入端口向第一输出端口调度第二报文的请求未获得仲裁的情况下,第二输入端口可以获得第二输出端口的仲裁而向第二输出端口调度第三报文,即不会出现现有技术中提到的VC队列发生头阻塞的现象,因而输出端口的带宽利用率高。
在一种可能的设计中,第一输入端口还可以向第一输出端口发送第一接受消息,第一接受消息用于指示第一输入端口接受第一输出端口的许可;将第一报文调度至第一输出端口;向第一输出端口发送第一释放消息,第一释放消息用于指示第一报文调度完成。
采用上述方案,第一输入端口向第一输出端口发送第一许可消息之后,可以锁定第一输入端口和第一输出端口之间的传输关系。第一输入端口在第一报文调度完成后向第一输出端口发送第一释放消息,第一输出端口被释放,第一输入端口和第一输出端口之间的传输关系解除。第一输入端口可以针对第一共享缓存中待调度的报文重新发送请求消息。第一输出端口可以再次接收输入端口发送的请求消息,并对接收到的请求消息进行仲裁,开始下一次报文调度。
在一种可能的设计中,第二输入端口还可以向第二输出端口发送第二接受消息,第二接受消息用于指示第二输入端口接受第二输出端口的许可;将第三报文调度至第二输出端口;向第二输出端口发送第二释放消息,第二释放消息用于指示第三报文调度完成。
采用上述方案,第二输入端口向第二输出端口发送第二许可消息之后,可以锁定第二输入端口和第二输出端口之间的传输关系。第二输入端口在第三报文调度完成后向第二输出端口发送第二释放消息,第二输出端口被释放,第二输入端口和第二输出端口之间的传输关系解除。第二输入端口可以针对第二共享缓存中待调度的报文重新发送请求消息。第二输出端口可以再次接收输入端口发送的请求消息,并对接收到的请求消息进行仲裁,开始下一次报文调度。
此外,第一输入端口还可以向多个输出端口中的第三输出端口发送第四请求消息,该第四请求消息用于指示第一输入端口请求向第三输出端口调度第一业务类型的第四报文;第三输出端口,用于对第四请求消息进行仲裁,向第一输入端口发送第三许可消息,第三许可消息用于指示允许第一输入端口向第三输出端口调度第四报文。
采用上述方案,第一输出端口和第三输出端口均裁定第一输入端口获得仲裁,并分别向第一输入端口发送第一许可消息和第三许可消息,第一输入端口选择先向第一输出端口调度第一报文,向第一输出端口发送第一接受消息。由于第三输出端口未接收到接受消息,因而第三输出端口后续可以接收其他输入端口的请求,用于其他报文的调度,从而提高输出端口的带宽利用率。
在一个可能的设计中,第一输入端口还可以向第一输出端口发送第五请求消息,第五请求消息用于指示第一输入端口请求向第一输出端口调度第二业务类型的第五报文;第一输出端口,还用于对第五请求消息进行仲裁,确定不允许第一输入端口调度第五报文。
在上述方案中,第一输入端口同时向第一输出端口发送两种业务类型的请求消息,第一输出端口对这两条请求消息(第一请求消息和第五请求消息)进行仲裁,确定第一请求消息获得仲裁、第五请求消息未获得仲裁。
在一种可能的设计中,第一输入端口还可以向第二输出端口发送第六请求消息,第六请求消息用于指示第一输入端口请求向第二输出端口调度第一业务类型的第六报文;第二输出端口,还用于对第六请求消息进行仲裁,确定不允许第一输入端口调度第六报文。
在上述方案中,第一输入端口还请求向第二输出端口调度第一业务类型的第六报文,第二输出端口对接收到的第三请求消息和第六请求消息进行仲裁,确定允许第二输入端口调度第三报文,不允许第一输入端口调度第六报文。因此,第二输出端口向第二输入端口发送第二许可消息,并未向第一输入端口发送许可消息。
第二方面,本申请实施例还提供一种片上系统,包括主机、从机以及第一方面及其任一可能的设计中提供的路由器,路由器用于将主机发送的报文路由至从机。
另外,第二方面中任一种可能设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
图1为现有技术提供的一种SoC内部互联总线的示意图;
图2为现有技术提供的一种路由器内部的结构示意图;
图3为现有技术提供的一种输入端口发生头阻塞的示意图;
图4为本申请实施例提供的一种共享缓存的示意图;
图5为本申请实施例提供的一种路由器的结构示意图;
图6为本申请实施例提供的一种第一输入端口和第一输出端口的交互流程示意图;
图7为本申请实施例提供的一种第二输入端口和第二输出端口的交互流程示意图;
图8为本申请实施例提供的另一种路由器的结构示意图;
图9为本申请实施例提供的一种片上系统的结构示意图。
下面,首先对本申请实施例的应用场景进行介绍。
本申请实施例可应用于图1所示的片上系统。该片上系统包括主机、路由器和从机。路由器负责实现主机访问从机的路由:路由器根据每个主机发出的访问地址,决定将相应报文路由至某个输出节点(下一级路由器或从机)。
需要说明的是,图1所示的SoC中包括两级路由:路由器0和路由器1位于第一级,路由器2和路由器3位于第二级。第一级路由用于将报文从主机调度至第二级路由;第二级路由用于将报文从第一级路由调度至从机。实际应用中,SoC中可以包括一级路由,也可以包括多级路由,并不限于图1所示的两级路由。此外,主机、从机和路由器的数量也不限于图1中所示。
在图1所示的SoC中,每个路由器包括多个输入端口和多个输出端口。当某个输入端口需要向某个输出端口调度报文时,该输入端口向该输出端口发送仲裁请求,输出端口在接收到多个仲裁请求的情况下根据发送仲裁请求的各个输入端口的优先级,仲裁出某个输入端口进行报文的调度。
现有技术中,如图2所示,输入端口中包括多个FIFO队列,每个FIFO队列用于存储输入端口的上一级端口(比如主机或上一级路由)发送的一种业务类型的报文。
与现有技术不同的是,本申请实施例中,输入端口将输入的报文(例如,上一级发送的报文)存储在共享缓存中。共享缓存可用于存储多种业务类型的报文,报文在共享缓存中并不是以队列的形式存储,因而共享缓存中的报文在调度时不受先进先出规则的限制。
具体地,如图4所示,每个输入端口中的共享缓存可以划分为多个存储区域,包括多个第一缓存区域以及一个第二缓存区域。其中,每个第一缓存区域用于存储上一级发送的、单一业务类型的报文,第二缓存区域可以存储多种业务类型的报文。
其中,配置第一缓存区域的作用是使得该输入端口可以接收上一级发送的任一业务类 型的报文,即为每一业务类型的报文预留一定的存储空间(也可以称为预留credit)。比如,输入端口可调度报文的业务类型有N种,N≥1,那么共享缓存中可以配置N个第一缓存区域,每个第一缓存区域用于存储单一业务类型的报文。在第二缓存区域存储已满的情况下,由于针对每一业务类型还配置有第一缓存区域,那么输入端口仍可以接收上一级发送的任一业务类型的报文。
需要说明的是,在输入端口的共享缓存中,第一缓存区域和第二缓存区域可以从硬件层面划分,也可以从软件层面划分,本申请实施例对第一缓存区域和第二缓存区域的划分方式不做具体限定。假设采用随机存取存储器(random access memory,RAM)来例化共享缓存,那么,在一种可能的示例中,可以设定RAM中的部分存储阵列对应第一缓存区域,另一部分存储阵列对应第二缓存区域。在另一种可能的示例中,可以设定部分寻址空间对应第一缓存区域,另一部分寻址空间对应第二缓存区域。在又一种可能的示例中,第一缓存区域和第二缓存区域是动态变化的,并不严格规定哪些阵列或哪些地址对应某一种缓存区域,只要在共享缓存中为每一种业务类型预留有(与第一缓存区域大小相同的)存储空间即可;比如,输入端口接收到上一级发送的业务类型1的报文1并存储在共享缓存中,那么报文1的存储区域可以视为为业务类型1预留的第一缓存区域;输入端口又接收到上一级发送的业务类型1的报文2并存储在共享缓存中,那么此时报文2的存储区域可以视为为业务类型1预留的第一缓存区域,报文1的存储区域则视为第二缓存区域。
在共享缓存中,报文在调度时不受先进先出规则的限制。比如,输入端口先接收到上一级发送的业务类型1的报文1并存储在共享缓存中,报文1需要调度至输出端口1;然后,该输入端口接收到上一级发送的业务类型1的报文2并存储在共享缓存中,报文2需要调度至输出端口2。输入端口可以同时分别向输出端口1和输出端口2发送仲裁请求,分别请求调度报文1和报文2。也就是说,对于需要调度至不同输出端口的多个报文,输入端口可以针对多个报文分别向相应的不同输出端口发送仲裁请求,若该输入端口在输出端口1处获得仲裁,则该输入端口可以将报文1调度至输出端口1;若该输入端口在输出端口2获得仲裁,则该输入端口可以将相应的报文2调度至输出端口2;若该输入端口在输出端口1和输出端口2均获得仲裁,则该输入端口可以选择调度报文1或调度报文2。
此外,本申请实施例中,业务类型的划分可以有多种方式。比如,对传输时延敏感的报文被划分为一种业务类型,对传输时延不敏感的报文被划分为另一种业务类型;再比如,访问主机0的报文被划分为一种业务类型,访问主机1的报文被划分为另一种业务类型。本申请实施例对业务类型的划分方式不做具体限定。
下面将结合附图对本申请实施例作进一步地详细描述。
需要说明的是,本申请实施例中,多个是指两个或两个以上。另外,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
本申请实施例提供一种路由器。该路由器包括多个输入端口和多个输出端口。其中,每个输入端口用于针对输入的多个报文向各报文相应的输出端口发送请求消息;每个输出端口用于对接收到的请求消息进行仲裁,向获得仲裁的输入端口发送许可消息。
也就是说,每个输入端口在向输出端口发送请求调度报文的请求消息时,可以针对输入的多个报文分别向多个输出端口发送请求,输入端口发送请求时并不受业务类型的限制。与现有技术中每个输入端口针对一种业务类型仅可以向一个输出端口发送一条请求消息 的方案相比,在输入端口向某个输出端口发送的请求消息未获得仲裁的情况下,该输入端口还可以获得其他输出端口的仲裁,不会出现现有技术中所述的VC队列发生头阻塞的现象,因而输出端口的带宽利用率高。
此外,各输入端口中配置有共享缓存,共享缓存中存储有多种业务类型的报文,每个输入端口用于针对共享缓存中存储的多个报文同时向各报文相应的输出端口发送请求消息,在接收到相应输出端口发送的许可消息之后,调度相应报文并且发送该报文到相应输出端口。
也就是说,在每个输入端口中,该输入端口接收到的报文均存储在共享缓存中。该输入端口可以针对共享缓存中的多个报文同时向相应的输出端口发送请求消息。比如,该输入端口可以向第一输出端口发送请求调度第一业务类型的报文的请求消息,同时也向第二输出端口发送请求调度第一业务类型的报文的请求消息。
参见图5,在一个具体示例中,路由器500包括第一输入端口501、第二输入端口502、第一输出端口503和第二输出端口504。其中,第一输入端口501可以向第一输出端口503发送第一请求消息,第一请求消息用于指示第一输入端口501请求向第一输出端口503调度第一业务类型的第一报文;第二输入端口502可以向第一输出端口503发送第二请求消息,第二请求消息用于指示第二输入端口502请求向第一输出端口503调度第一业务类型的第二报文;第二输入端口502还可以向第二输出端口504发送第三请求消息,第三请求消息用于指示第二输入端口502请求向第二输出端口504调度第一业务类型的第三报文;第一输出端口503可以对第一请求消息和第二请求消息进行仲裁,向第一输入端口501发送第一许可消息,第一许可消息用于指示允许第一输入端口501向第一输出端口503调度第一报文;第二输出端口504可以对第三请求消息进行仲裁,向第二输入端口502发送第二许可消息,第二许可消息用于指示允许第二输入端口502向第二输出端口504调度第三报文。
在本申请实施例提供的路由器500中,针对第一业务类型的报文,第一输入端口501向第一输出端口503发送第一请求消息,以请求调度第一报文;第二输入端口502分别向第一输出端口503和第二输出端口504发送第二请求消息和第三请求消息,以请求调度第二报文和第三报文。也就是说,本申请实施例中,输入端口针对需要调度至不同输出端口的报文,可以分别向相应的不同输出端口发送请求消息,比如第二输入端口502分别向第一输出端口503和第二输出端口504发送第二请求消息和第三请求消息。
第一输出端口503接收到第一请求消息和第二请求消息后,根据第一输入端口501和第二输入端口502的优先级进行仲裁,确定第一输入端口501获得仲裁、第二输入端口502未获得仲裁,第一输入端口501和第一输出端口503之间可以建立传输关系。由于第二输入端口502还向第二输出端口504发送第三请求消息,第二输出端口504进行仲裁后确定第二输入端口502获得仲裁,第二输入端口502和第二输出端口504之间也可以建立传输关系。
路由器500中,第二输入端口502在未获得第一输出端口503的仲裁的情况下,第二输入端口502还可以获得第二输出端口504的仲裁。与现有技术相比,本申请实施例中,由于输入端口针对需要调度至不同输出端口的报文,可以分别向相应的不同输出端口发送请求消息,因而第二输入端口502向第一输出端口503调度第二报文的请求未获得仲裁的情况下,第二输入端口502可以获得第二输出端口504的仲裁而向第二输出端口504调度 第三报文,即不会出现现有技术中提到的VC队列发生头阻塞的现象,因而输出端口的带宽利用率高。
需要说明的是,为了便于说明,图5中仅示出了路由器500包括第一输入端口501、第二输入端口502、第一输出端口503和第二输出端口504。实际应用中,路由器500中可以包括多个输入端口和多个输出端口,本申请实施例对输入端口和输出端口的数量不做具体限定。
本申请实施例提供的路由器500中,输入端口针对需要调度至不同输出端口的报文,可以分别向相应的不同输出端口发送请求消息。本申请实施例中,第一输入端口501中需要调度的多个报文可以存储在第一共享缓存中,第一共享缓存中存储的报文的调度顺序不受先进先出规则的限制。同样地,第二输入端口502中需要调度的多个报文可以存储在第二共享缓存中,第二共享缓存中存储的报文的调度顺序也不受先进先出规则的限制。
以第二共享缓存为例,第二共享缓存中可以用于存储多种业务类型的报文。第二共享缓存可以包括多个第三缓存区域以及一个第四缓存区域,多个第三缓存区域中的每个第三缓存区域用于存储第二输入端口502的上一级端口发送的、单一业务类型的报文(即针对每一业务类型的报文预留一定的存储空间),第四缓存区域用于存储多种业务类型的报文。
同样地,第一共享缓存可以包括多个第一缓存区域和一个第二缓存区域。
应理解,本申请实施例中,路由器500中可以包括多个输入端口,每个输入端口中均配置共享缓存。如前所述,在共享缓存中,报文不是以队列的形式存储,每个报文的调度顺序不受先进先出规则的限制。
此外,在共享缓存中,可以针对不同业务类型的报文设置不同的存储空间上限(水线),以避免共享缓存的存储空间被部分业务类型的报文占用,导致其他业务类型的报文的存储空间受限。下面以针对第一共享缓存设置存储空间上限为例进行说明。
比如,可以设定第一共享缓存中,第一业务类型的报文的存储空间小于或等于第一门限值,第二业务类型的报文的存储空间小于或等于第二门限值。其中,第一门限值与第二门限值可以相同,也可以不同。
再比如,可以设定第二缓存区域中,第一业务类型的报文的存储空间小于或等于第三门限值,第二业务类型的报文的存储空间小于或等于第四门限值。其中,第三门限值与第四门限值可以相同,也可以不同。
示例性地,第一共享缓存中包括16个存储空间,路由器500支持的业务类型有两种,业务类型1和业务类型2,若为每种业务类型预留2个存储空间,则第二缓存区域包括12(16-2*2=12)个存储空间。那么,可以设定第二缓存区域中业务类型1的存储空间上限为8,业务类型2的存储空间上限为8;或者设定第二缓存区域中业务类型1的存储空间上限为6,业务类型2的存储空间上限为8。
需要说明的是,本申请实施例中,可以对每种业务类型的报文均设定存储空间上限,也可以仅对部分业务类型的报文设定存储空间上限。不同业务类型的报文,其存储空间的上限值可以相同,也可以不同。
实际应用中,输入端口中配置的共享缓存(比如第一共享缓存或第二共享缓存)可以通过RAM或寄存器实现,即可以采用RAM或寄存器来例化共享缓存。在输入端口调度报文的业务类型较多、数据量较大的情况下,与采用寄存器来例化共享缓存的方案相比,采用RAM例化共享缓存可以减少面积和功耗的损失。
此外,本申请实施例中,在输入端口的共享缓存中,可以针对需要向不同输出端口调度的不同业务类型的报文维护不同的链表(状态)。每个链表对应于该输入端口支持的相应的业务类型和相应的输出端口,每个链表用于记录需要向相应输出端口调度的相应业务类型的报文。
那么,每个输入端口可以针对记录有要调度的报文的各个链表向相应的输出端口分别发送请求消息,在接收到相应输出端口发送的许可消息之后,调度该链表中记录的报文并且发送该报文到相应输出端口。
具体地,每个链表中,可以维护有需要调度至某一输出端口的某一业务类型的报文的调度顺序。每个输入端口所述维护的链表的数量,等于该输入端口支持的业务类型的数量与路由器中包括的输出端口的数量的乘积。
示例性地,路由器500中包括四个输入端口(输入端口1、输入端口2、输入端口3和输入端口4)和四个输出端口(输出端口1、输出端口2、输出端口3和输出端口4),假设每个输入端口处理的业务类型有两种,业务类型1和业务类型2。那么,以输入端口1为例,假设输入端口1的共享缓存中存储有14个报文,这14个报文的业务类型及对应的输出端口可以如下表1所示。
表1
业务类型1 | 业务类型2 | |
输出端口1 | 报文1 | 报文2、报文3 |
输出端口2 | 报文4、报文5、报文6 | 报文7 |
输出端口3 | 报文8、报文9 | 报文10、报文11、报文12 |
输出端口4 | 报文13 | 报文14 |
在输入端口1的共享缓存中,可以维护有8(4*2=8)个链表。每个链表中记录有需要向一个输出端口调度的一种业务类型的多个报文的调度顺序。比如,针对需要调度至输出端口1的业务类型2的报文所维护的链表中,记录有报文2和报文3的调度顺序,即先调度报文2,后调度报文3;再比如,针对需要调度至输出端口2的业务类型1的报文所维护的链表中,记录有报文4、报文5和报文6的调度顺序,即先调度报文4,再调度报文5,最后调度报文6。
需要说明的是,在另一种可能的示例中,输入端口中维护的多个链表中,也可以仅记录需要调度至某一输出端口的某一业务类型的多个报文,但是对多个报文的调度顺序不做限定。
此外,需要说明的是,共享缓存中维护的链表的具体内容会根据该输入端口中报文的接收和发送情况进行更新。
比如,在报文1已经调度完成后,表1中输出端口1-业务类型1这一链表中的内容为空;此后,若输入端口1再次接收到需要调度至输出端口1的业务类型1的报文15,则输出端口1-业务类型1这一链表中的内容修改为报文15。
再比如,在报文10已经调度完成后,表1中输出端口3-业务类型2这一链表中的内容修改为报文11、报文12;此后,若输入端口1再次接收到需要调度至输出端口3的业务类型2的报文16和报文17,则输出端口3-业务类型2这一链表中的内容修改为报文11、报文12、报文16、报文17。
现有技术中,每个输入端口针对每一种业务类型的报文维护一个先进先出的队列,在 需要调度至某一输出端口的某一业务类型的报文未获得仲裁时,该业务类型中需要调度至其他输出端口的报文即发生阻塞,导致其他输出端口未得到利用。而本申请实施例中,共享缓存中针对向不同输出端口调度的不同业务类型的报文维护不同的链表。那么,需要调度至不同输出端口的报文之间的传输互不影响,从而使得输出端口的带宽利用率得到了提高。
此外,本申请实施例中,第一输入端口501还可以:向第一输出端口503发送第一接受消息,第一接受消息用于指示第一输入端口501接受第一输出端口503的许可;将第一报文调度至第一输出端口503;向第一输出端口503发送第一释放消息,第一释放消息用于指示第一报文调度完成。具体地,第一输入端口501和第一输出端口503之间的交互流程可以如图6所示。
第一输入端口501向第一输出端口503发送第一许可消息之后,第一输入端口501和第一输出端口503之间的传输关系已锁定。第一输入端口501可以将第一报文从第一共享缓存中调度至第一输出端口503;在第一报文调度完成后,第一输入端口501可以向第一输出端口503发送第一释放消息,以指示第一报文调度完成。
向第一输出端口503发送第一释放消息之后,第一输出端口503被释放,第一输入端口501和第一输出端口503之间的传输关系解除。第一输入端口501可以针对第一共享缓存中待调度的报文重新发送请求消息(即开始下一次握手申请)。第一输出端口503可以再次接收输入端口发送的请求消息,并对接收到的请求消息进行仲裁,开始下一次报文调度。
第一输入端口501和第一输出端口503之间进行一次报文调度的过程中,二者之间的消息交互可以通过四个步骤实现:1第一输入端口501向第一输出端口503发送第一请求消息;2、第一输出端口503向第一输入端口501发送第一许可消息;3、第一输出端口503向第一输入端口501发送第一接受消息;4、第一输出端口503向第一输入端口501发送第一释放消息。本申请实施例中,将上述交互过程称为“四步握手机制”,即通过四条消息的交互完成第一输入端口501和第一输出端口503的一次握手。
此外,本申请实施例中,第二输入端口502还可以:向第二输出端口504发送第二接受消息,第二接受消息用于指示第二输入端口502接受第二输出端口504的许可;将第三报文调度至第二输出端口504;向第二输出端口504发送第二释放消息,第二释放消息用于指示第三报文调度完成。具体地,第二输入端口502和第二输出端口504之间的交互流程可以如图7所示。
第二输入端口502向第二输出端口504发送第二许可消息之后,第二输入端口502和第二输出端口504之间的传输关系已锁定。第二输入端口502可以将第三报文从第二共享缓存中调度至第二输出端口504;在第三报文调度完成后,第二输入端口502可以向第二输出端口504发送第二释放消息,以指示第三报文调度完成。
向第二输出端口504发送第二释放消息之后,第二输出端口504被释放,第二输入端口502和第二输出端口504之间的传输关系解除。第二输入端口502可以针对第二共享缓存中待调度的报文重新发送请求消息(即开始下一次握手申请)。第二输出端口504可以再次接收输入端口发送的请求消息,并对接收到的请求消息进行仲裁,开始下一次报文调度。
同样地,第二输入端口502和第二输出端口504之间的交互过程也采用前述“四步握 手机制”,此处不再赘述。
具体地,在路由器500中,输入端口和输出端口之间的交互可以基于时钟周期进行。在每个时钟周期内,输入端口可以根据共享缓存中维护的链表,针对存储在共享缓存中的报文发送多个请求消息。具体地,输入端口在某个时钟周期内发送的请求消息的数量与共享缓存中维护的链表的数量相同。
如前所述,输入端口可以针对向不同输出端口调度的不同业务类型的报文维护不同的链表,比如在表1的示例中,在当前的时钟周期内,输入端口1的共享缓存中维护有八个链表,每个链表中记录有需要向一个输出端口调度的一种业务类型的多个报文的调度顺序。那么,在当前时钟周期内,输入端口1可以发送八个请求消息,这八个请求消息分别是:1、请求向输出端口1调度业务类型1的报文1的请求消息;2、请求向输出端口1调度业务类型2的报文2的请求消息;3、请求向输出端口2调度业务类型1的报文4的请求消息;4、请求向输出端口2调度业务类型2的报文7的请求消息;5、请求向输出端口3调度业务类型1的报文8的请求消息;6、请求向输出端口3调度业务类型2的报文10的请求消息;7、请求向输出端口4调度业务类型1的报文13的请求消息;8、请求向输出端口4调度业务类型2的报文14的请求消息。
当通过前述仲裁机制使得输入端口与输出端口建立传输关系后,输入端口可以向输出端口调度报文。具体地,以第二输入端口502和第二输出端口504为例,第二输入端口502向第二输出端口504发送第二接受消息之后,第二输入端口502可以在发送第二接受消息的时钟周期立即开始向第二输出端口504调度第三报文,也可以在下一个时钟周期开始向第二输出端口504调度第三报文。第三报文的调度可以在一个时钟周期之内完成,也可以在多个时钟周期内完成,视第三报文的大小而定。
此外,共享缓存中维护的链表的更新也可以基于时钟周期进行。即,在每个时钟周期内,共享缓存中维护的链表的具体内容会根据上一时钟周期内该输入端口中报文的接收和发送情况进行更新。
进一步地,在链表更新以后,输入端口可以根据更新后的链表发送请求调度报文的请求消息。也就是说,在每个时钟周期,共享缓存中的链表进行更新,输入端口在当前时钟周期根据更新后的链表分别向相应的不同输出端口发送请求消息。
在前面的示例中,主要介绍了第一输入端口501和第一输出端口503之间进行报文传输的交互过程,以及第二输入端口502和第二输出端口504之间进行报文传输的交互过程。实际应用中,路由器500中可以包括更多个输入端口和更多个输出端口。下面通过几个具体示例对其他场景进行介绍。
情况一
路由器500还包括第三输出端口;第一输入端口501还用于向第三输出端口发送第四请求消息,第四请求消息用于指示第一输入端口501请求向第三输出端口调度第一业务类型的第四报文;第三输出端口用于对第四请求消息进行仲裁,向第一输入端口501发送第三许可消息,第三许可消息用于指示允许第一输入端口501向第三输出端口调度第四报文。
在情况一中,第一输入端口501向第一输出端口503和第三输出端口均发送调度报文的请求消息,第一输出端口503和第三输出端口均裁定第一输入端口501获得仲裁,并分别向第一输入端口501发送第一许可消息和第三许可消息,即第一输入端口501接收到两条许可消息。在本申请实施例中,第一输入端口501选择先向第一输出端口503调度第一 报文,那么,第一输入端口501向第一输出端口503发送第一接受消息,而并未向第三输出端口发送接受消息。
由于第三输出端口未接收到接受消息,因而第三输出端口后续可以接收其他输入端口的请求,用于其他报文的调度,从而提高输出端口的带宽利用率。
情况二
第一输入端口501还用于向第一输出端口503发送第五请求消息,第五请求消息用于指示第一输入端口501请求向第一输出端口503调度第二业务类型的第五报文;第一输出端口503还用于对第五请求消息进行仲裁,确定不允许所述第一输入端口501调度第五报文。
其中,第二业务类型和第一业务类型是不同的业务类型。
也就是说,第一输入端口501可以同时向第一输出端口503发送两种业务类型的请求消息,第一输出端口503对这两条请求消息(第一请求消息和第五请求消息)进行仲裁,确定第一请求消息获得仲裁、第五请求消息未获得仲裁,即确定允许第一输入端口501调度第一业务类型的报文,不允许第一输入端口501调度第二业务类型的报文。
情况三
第一输入端口501还用于:向第二输出端口504发送第六请求消息,第六请求消息用于指示第一输入端口501请求向第二输出端口504调度第一业务类型的第六报文;第二输出端口504还用于对第六请求消息进行仲裁,确定不允许第一输入端口501调度第六报文。
也就是说,第一输入端口501还请求向第二输出端口504调度第一业务类型的第六报文,第二输出端口504对接收到的第三请求消息和第六请求消息进行仲裁,确定允许第二输入端口502调度第三报文,不允许第一输入端口501调度第六报文。因此,第二输出端口504向第二输入端口502发送第二许可消息,并未向第一输入端口501发送许可消息。
在一种示例中,采用本申请实施例提供的路由器500,针对第一业务类型的报文,第一输入端口501向第一输出端口503发送第一请求消息,以请求调度第一报文;第二输入端口502分别向第一输出端口503和第二输出端口504发送第二请求消息和第三请求消息,以请求调度第二报文和第三报文。第一输出端口503接收到第一请求消息和第二请求消息后,根据第一输入端口501和第二输入端口502的优先级进行仲裁,确定第一输入端口501获得仲裁、第二输入端口502未获得仲裁,第一输入端口501和第一输出端口503之间建立传输关系。由于第二输入端口502还向第二输出端口504发送第三请求消息,第二输出端口504进行仲裁后确定第二输入端口502获得仲裁,第二输入端口502和第二输出端口504也可以建立传输关系。
路由器500中,第二输入端口502在未获得第一输出端口503的仲裁的情况下,由于第二输入端口502还针对第一业务类型的第三报文向第二输出端口504发送了第三请求消息,因而第二输入端口502还可以获得第二输出端口504的仲裁。与现有技术相比,路由器500中,由于输入端口针对需要调度至不同输出端口的报文,可以分别向相应的不同输出端口发送请求消息,因而第二输入端口502向第一输出端口503调度第二报文的请求未获得仲裁的情况下,第二输入端口502可以获得第二输出端口504的仲裁,第二输入端口502可以向第二输出端口504调度第三报文,即不会出现现有技术中提到的VC队列发生头阻塞的现象,因而输出端口的带宽利用率高。
本申请实施例还提供一种路由器,该路由器可以如图8所示。该路由器包括输入端口 0、输入端口1、输出端口0和输出端口1。可以理解,为了便于描述,这里仅示出两个输入端口和两个输出端口,但是可以有更多个输入端口和更多个输出端口,取决于实际需要和实际的应用场景。该路由器要路由的业务类型可以有两种,业务类型0(VC0)和业务类型1(VC1)。可以理解,这里业务类型不限于两种,可以有更多种,取决于实际应用场景。
在每个输入端口中均配置有共享缓存。共享缓存中包括VC0预留缓存(VC0credit)、VC1预留缓存(VC1credit)以及通用缓存(common buffer)。其中,输入端口0中的VC0预留缓存、VC1预留缓存可以视为前述多个第一缓存区域的一个具体示例,输入端口0中的通用缓存可以视为前述第二缓存区域的一个具体示例。输入端口1中的VC0预留缓存、VC1预留缓存可以视为前述多个第三缓存区域的一个具体示例,输入端口1中的通用缓存可以视为前述第四缓存区域的一个具体示例。共享缓存中针对不同的业务类型及输出端口维护不同的链表(状态),即维护有VC0-输出端口0、VC1-输出端口0、VC0-输出端口1和VC1-输出端口1四个链表。输入端口可以根据输出端口的仲裁结果以及自身维护的链表调度共享缓存中的报文。
每个输出端口中配置有仲裁器,用于对输入端口发送的针对不同业务类型的报文进行调度的请求消息进行仲裁。具体地,每个输出端口中包括仲裁器0、仲裁器1和仲裁器2。仲裁器0用于对调度业务类型0的报文的请求进行仲裁,仲裁器1用于对调度业务类型1的报文的请求进行仲裁;仲裁器2用于根据仲裁器0和仲裁器1的仲裁结果进行仲裁,最终确定哪一请求获得仲裁。比如,输出端口0中的仲裁器0接收到业务类型0的请求1和请求2,判断请求1获得仲裁;仲裁器1接收到业务类型1的请求3和请求4,判断请求4获得仲裁;仲裁器2对仲裁器0和仲裁器1的仲裁结果进行仲裁,最终确定请求4获得仲裁。那么,输出端口0即确定请求4获得仲裁,向发送请求4的输入端口发送许可消息。
其中,本申请实施例中,输入端口和输出端口之间的交互过程可以如下。
1、输入端口0根据每个VC的调度需求对两个输出端口发送REQ(前述请求消息的一个具体示例)。具体地,输入端口0向输出端口0发送调度VC0类型报文的REQ1和调度VC1类型报文的REQ2;输入端口0向输出端口1发送调度VC0类型报文的REQ3和调度VC1类型报文的REQ4。
同时,输入端口1根据每个VC的调度需求对两个输出端口发送REQ。具体地,输入端口1向输出端口0发送调度VC0类型报文的REQ5和调度VC1类型报文的REQ6;输入端口1向输出端口1发送调度VC0类型报文的REQ7和调度VC1类型报文的REQ8。
2、输出端口0中的仲裁器0收到REQ1和REQ5后,根据优先级等条件进行仲裁,确定REQ1获得仲裁;输出端口0中的仲裁器1收到REQ2和REQ6后,根据优先级等条件进行仲裁,确定REQ2获得仲裁;输出端口2中的仲裁器2对仲裁器0的仲裁结果(REQ1)和仲裁器1的仲裁结果(REQ2)进行仲裁,确定REQ1获得仲裁,然后向输入端口0返回GRANT(前述第一许可消息的一个具体示例),指示REQ1获得仲裁。
同时,输出端口1中的仲裁器0收到REQ3和REQ7后,根据优先级等条件进行仲裁,确定REQ7获得仲裁;输出端口1中的仲裁器1收到REQ4和REQ8后,根据优先级等条件进行仲裁,确定REQ8获得仲裁;输出端口1中的仲裁器2对仲裁器0的仲裁结果(REQ7)和仲裁器1的仲裁结果(REQ8)进行仲裁,确定REQ7获得仲裁,然后向输入端口1返回GRANT(前述第二许可消息的一个具体示例),指示REQ7获得仲裁。
3、输入端口0收到GRANT后,向输出端口0返回ACCEPT(前述第一接受消息的一个具体示例);输入端口1收到GRANT后,向输出端口1返回ACCEPT(前述第二接受消息的一个具体示例)。
4、输入端口0向输出端口0返回ACCEPT后,即锁定了输入端口0与输出端口0的传输关系。此时,输入端口0开始向输出端口1调度VC0类型的报文,待发送完需要调度的报文后,返回SWITCH信号(前述第一释放消息的一个具体示例),释放输出端口0的仲裁锁定,开始下一次握手申请。
输入端口1向输出端口1返回ACCEPT后,即锁定了输入端口1与输出端口1的传输关系。此时,输入端口1开始向输出端口1调度VC0类型的报文,待发送完需要调度的报文后,返回SWITCH信号(前述第二释放消息的一个具体示例),释放输出端口1的仲裁锁定,开始下一次握手申请。
在图8所示的路由器中,输入端口0向输出端口0调度VC0类型报文的REQ1获得仲裁,输入端口0和输出端口0建立传输关系,而输入端口1向输出端口0调度VC0类型报文的REQ5未获得仲裁。由于输入端口1还向输出端口1发送了请求调度VC0类型报文的REQ7,REQ7可以获得输出端口1的仲裁。因此,输入端口1中VC0类型报文的调度不会发生阻塞,即输入端口1可以与输出端口1建立传输关系,向输出端口1调度VC0类型的报文。因此,采用图8所示的路由器,可以提高输出端口的带宽利用率。
需要说明的是,图8所示的路由器中未详尽描述的实现方式及其技术效果可以参见路由器500中的相关描述,此处不再赘述。
基于同一发明构思,本申请实施例还提供一种片上系统。参见图9,该片上系统900包括主机901、从机902和前述路由器500。
其中,路由器500用于将主机901发送的报文路由至从机902。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (13)
- 一种路由器,其特征在于,包括:多个输入端口,所述多个输入端口中的每个输入端口用于针对输入的多个报文向各报文相应的输出端口发送请求消息;多个输出端口,所述多个输出端口中的每个输出端口用于对接收到的请求消息进行仲裁,向获得仲裁的输入端口发送许可消息。
- 如权利要求1所述的路由器,其特征在于,各输入端口中配置有共享缓存,所述共享缓存中存储有多种业务类型的报文,每个输入端口用于针对共享缓存中存储的多个报文同时向各报文相应的输出端口发送请求消息,在接收到相应输出端口发送的许可消息之后,调度相应报文并且发送该报文到相应输出端口。
- 如权利要求1或2所述的路由器,其特征在于,所述每个输入端口中维护有多个链表,每个链表对应于该输入端口支持的相应的业务类型和相应的输出端口,每个链表用于记录需要向相应输出端口调度的相应业务类型的报文。
- 如权利要求3所述的路由器,其特征在于,每个输入端口用于针对记录有要调度的报文的各个链表向相应的输出端口分别发送请求消息,在接收到相应输出端口发送的许可消息之后,调度该链表中记录的报文并且发送该报文到相应输出端口。
- 如权利要求1~4中任一项所述的路由器,其特征在于,所述多个输入端口中的第一输入端口,用于向第一输出端口发送第一请求消息,所述第一请求消息用于指示所述第一输入端口请求向所述第一输出端口调度第一业务类型的第一报文;所述多个输入端口中的第二输入端口,用于向所述第一输出端口发送第二请求消息,所述第二请求消息用于指示所述第二输入端口请求向所述第一输出端口调度所述第一业务类型的第二报文;向第二输出端口发送第三请求消息,所述第三请求消息用于指示所述第二输入端口请求向所述第二输出端口调度所述第一业务类型的第三报文;所述多个输出端口中的第一输出端口,用于对所述第一请求消息和所述第二请求消息进行仲裁,向所述第一输入端口发送第一许可消息,所述第一许可消息用于指示允许所述第一输入端口向所述第一输出端口调度所述第一报文;所述多个输出端口中的第二输出端口,用于对所述第三请求消息进行仲裁,向所述第二输入端口发送第二许可消息,所述第二许可消息用于指示允许所述第二输入端口向所述第二输出端口调度所述第三报文。
- 如权利要求5所述的路由器,其特征在于,所述第一输入端口还用于:向所述第一输出端口发送第一接受消息,所述第一接受消息用于指示所述第一输入端口接受所述第一输出端口的许可;将所述第一报文调度至所述第一输出端口;向所述第一输出端口发送第一释放消息,所述第一释放消息用于指示所述第一报文调 度完成。
- 如权利要求5或6所述的路由器,其特征在于,所述第一输入端口还用于:向所述多个输出端口中的第三输出端口发送第四请求消息,所述第四请求消息用于指示所述第一输入端口请求向所述第三输出端口调度所述第一业务类型的第四报文;所述第三输出端口,用于对所述第四请求消息进行仲裁,向所述第一输入端口发送第三许可消息,所述第三许可消息用于指示允许所述第一输入端口向所述第三输出端口调度所述第四报文。
- 如权利要求5~7任一项所述的路由器,其特征在于,所述第二输入端口还用于:向所述第二输出端口发送第二接受消息,所述第二接受消息用于指示所述第二输入端口接受所述第二输出端口的许可;将所述第三报文调度至所述第二输出端口;向所述第二输出端口发送第二释放消息,所述第二释放消息用于指示所述第三报文调度完成。
- 如权利要求5~8任一项所述的路由器,其特征在于,所述第一输入端口还用于:向所述第一输出端口发送第五请求消息,所述第五请求消息用于指示所述第一输入端口请求向所述第一输出端口调度第二业务类型的第五报文;所述第一输出端口,还用于对所述第五请求消息进行仲裁,确定不允许所述第一输入端口调度所述第五报文。
- 如权利要求5~9任一项所述的路由器,其特征在于,所述第一输入端口还用于:向所述第二输出端口发送第六请求消息,所述第六请求消息用于指示所述第一输入端口请求向所述第二输出端口调度所述第一业务类型的第六报文;所述第二输出端口,还用于对所述第六请求消息进行仲裁,确定不允许所述第一输入端口调度所述第六报文。
- 如权利要求2~10任一项所述的路由器,其特征在于,所述共享缓存中,所述第一业务类型的报文的存储空间小于或等于第一门限值,所述第二业务类型的报文的存储空间小于或等于第二门限值。
- 如权利要求2~11任一项所述的路由器,其特征在于,所述共享缓存通过随机存取存储器RAM或寄存器实现。
- 一种片上系统,其特征在于,包括主机、从机以及如权利要求1~12任一项所述的路由器,所述路由器用于将所述主机发送的报文路由至所述从机。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/074543 WO2022160307A1 (zh) | 2021-01-30 | 2021-01-30 | 一种路由器及片上系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116686269A true CN116686269A (zh) | 2023-09-01 |
Family
ID=82652933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180089309.0A Pending CN116686269A (zh) | 2021-01-30 | 2021-01-30 | 一种路由器及片上系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116686269A (zh) |
WO (1) | WO2022160307A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104104617B (zh) * | 2014-08-07 | 2017-10-17 | 曙光信息产业(北京)有限公司 | 一种报文仲裁方法及装置 |
US9660942B2 (en) * | 2015-02-03 | 2017-05-23 | Netspeed Systems | Automatic buffer sizing for optimal network-on-chip design |
CN105721355A (zh) * | 2016-01-29 | 2016-06-29 | 浪潮(北京)电子信息产业有限公司 | 一种片上网络路由传输报文的方法及片上网络路由 |
CN111224883B (zh) * | 2019-11-26 | 2022-04-19 | 中国人民解放军国防科技大学 | 一种高阶路由器的瓦片结构及其构建的高阶路由器 |
-
2021
- 2021-01-30 CN CN202180089309.0A patent/CN116686269A/zh active Pending
- 2021-01-30 WO PCT/CN2021/074543 patent/WO2022160307A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022160307A1 (zh) | 2022-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7143219B1 (en) | Multilevel fair priority round robin arbiter | |
US10838891B2 (en) | Arbitrating portions of transactions over virtual channels associated with an interconnect | |
Tamir et al. | High-performance multi-queue buffers for VLSI communications switches | |
US7764689B2 (en) | Method and apparatus for arbitrating data packets in a network system | |
US8155134B2 (en) | System-on-chip communication manager | |
US8190801B2 (en) | Interconnect logic for a data processing apparatus | |
US9602436B2 (en) | Switching device | |
JP2008536391A (ja) | 待ち時間の削減のためのネットワークオンチップ環境及び方法 | |
US7142555B2 (en) | Method and apparatus for switching data using parallel switching elements | |
US7020161B1 (en) | Prescheduling arbitrated resources | |
US6728790B2 (en) | Tagging and arbitration mechanism in an input/output node of a computer system | |
US6681274B2 (en) | Virtual channel buffer bypass for an I/O node of a computer system | |
US8040907B2 (en) | Switching method | |
US8145823B2 (en) | Parallel wrapped wave-front arbiter | |
CN113010464A (zh) | 数据处理装置及设备 | |
CN116686269A (zh) | 一种路由器及片上系统 | |
US6839784B1 (en) | Control unit of an I/O node for a computer system including a plurality of scheduler units each including a plurality of buffers each corresponding to a respective virtual channel | |
US20070248097A1 (en) | Message switching system | |
US20030097499A1 (en) | Starvation avoidance mechanism for an I/O node of a computer system | |
US20240163222A1 (en) | Virtual Channel Buffer Bypass | |
JP5691419B2 (ja) | 要求転送装置及び要求転送方法 | |
US9413665B2 (en) | CPP bus transaction value having a PAM/LAM selection code field | |
GB2341765A (en) | Bus idle usage | |
GB2341772A (en) | Primary and secondary bus architecture |
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 |