一种支持多协议的动态共享缓冲区的制作方法

文档序号:22083415发布日期:2020-09-01 19:44阅读:341来源:国知局
一种支持多协议的动态共享缓冲区的制作方法

本发明涉及超级计算机高速互连网络交换机输入端口的输入缓冲技术,具体涉及一种支持多协议的动态共享缓冲区。



背景技术:

互连网络是超级计算机的关键部件,用于实现超级计算机中的计算节点、输入输出节点、服务节点之间的高速数据传输与交换。

交换机是高速互连网络的核心设备,一般采用交叉开关来实现。交换机的内部结构主要包括数据缓冲区和交叉开关,数据缓冲区用于缓存不能及时处理的数据,交叉开关用于在不同的网络端口之间交换数据。交换机常用的数据缓冲方式有:输入缓冲,输出缓冲,输入输出联合缓冲,交叉点缓冲等。由于输入缓冲实现简单,成为交叉开关普遍采用的缓冲方式。随着交换机端口数目的增加,交换机采用多级交换结构,每一个输入端口和每一级交换的输入端口都需要缓冲区缓存报文,导致交换机中缓冲区的数目急剧增加。为了减小缓冲区占用的芯片面积,降低实现缓冲区的存储器带来的功耗开销,交换机中采用动态分配共享缓冲区管理方法,提高缓冲区利用率,减小缓冲区深度。具体做法是,为交换机每个输入端口设置一个缓冲区,由所有虚信道(virtualchannel,vc)共享,输入端口接收到的数据被随机地缓存在共享缓冲区中,通过地址管理保证数据能够被正确的写入和读出。采用动态分配共享缓冲区可以提高缓冲区利用率,只要缓冲区中有空闲空间就可以接收任何一个vc的数据。我们将这种缓冲区称作多vc动态共享缓冲区。为了提高链路利用率,互连网络中的物理链路被划分为多个虚信道。在交换机的输入缓冲区中,设置与vc数目相同的虚拟数据队列,相同vc的数据被组织为虚拟链表,存取方式为先进先出(firstinfirstout,fifo)。在有些交换机中,为了消除头部阻塞问题,设置与交换机输出端口数目相同的虚拟队列,输出到同一个输出端口的数据被保存在一个队列中,组织为链表方式,存取方式也为fifo。

随着超级计算机系统峰值性能的快速提高,需要提高系统组装密度以避免系统中机柜数的爆炸式增长,要求互连网络中的交换芯片集成更多的网络端口。导致交换芯片中顶部缓冲区使用的寄存器消耗巨大,对后端的布局布线造成极大困难。为了降低高数据位宽damq在后端物理设计复杂性,申请号为201910520343.3的中国发明专利申请提供了一种互连芯片动态共享缓冲区,通过将报文中的控制信息与数据分离,大幅降低damq所需的寄存器数量,降低后端布局布线困难,并降低物理设计成本。下面对申请号为201910520343.3的中国发明专利申请记载的互连芯片动态共享缓冲区进行详细介绍。

如图1所示,申请号为201910520343.3的中国发明专利申请记载的互连芯片动态共享缓冲区包括:报文拆分逻辑、控制码组合逻辑、数据damq和控制damq;记控制damq为damq_ctrl,数据damq为damq_data,具有一个数据输入端口、一个读请求输入端口和一个数据输出端口。报文拆分逻辑与数据输入端口、控制码组合逻辑、damq_data相连,从数据输入端口接收报文,将报文拆分成报文数据和报文控制信息,然后,将报文数据输出给damq_data,将报文控制信息输出给控制码组合逻辑。控制码组合逻辑与报文拆分逻辑、damq_data、damq_ctrl相连,从报文拆分逻辑接收报文控制信息即报文中的控制位,从damq_data接收报文数据存储在damq_data中的地址即写缓冲地址,将报文控制信息和写缓冲地址组合成控制码,并将控制码输出给damq_ctrl。damq_data与报文拆分逻辑、报文组合逻辑、damq_ctrl以及数据输出端相连。dama_data从报文拆分逻辑接收报文数据,将报文数据缓存至damq_data,将报文数据在damq_data中的存放地址记为写缓冲地址wt_addr,然后,将写缓冲地址wt_addr发送给控制码组合逻辑;damq_data从damq_ctrl接收控制码中的地址位即读缓冲地址,通过读缓冲地址从damq_data读出报文数据,通过报文输出端口将报文数据输出。由于damq_ctrl保证了整个damq对于每个vc的数据都是先进先出,因此damq_data仅需管理空闲地址,无需管理已经分配出去的存储空间,这相对于传统的damq_nvc节省了n套队列管理逻辑;而且damq_ctrl中存储的是报文的控制信息以及报文数据存储在damq_data中的地址,因此,damq_ctrl中第一数据缓冲区的宽度由现有技术中的报文切片宽度减小为报文的控制信息以及报文数据存储在damq_data中的地址位宽;(2)vc0到vcn-1顶部缓冲区的宽度与第一数据缓冲区相同,也由报文切片宽度减小为报文的控制信息以及报文数据存储在damq_data中的地址位宽,大幅降低后端布局布线困难。

但随着计算机高速发展,当前hpc中存在多套网络,包括专用系统高速互连网络、存储网络、以太网络、监控管理网络,相关功能存在一定重复建设、叠床架屋。下一代互连网络应尽可能实现多网络协议融合设计,在单套网络中实现现有的专用通信网络、以太网络、存储网络及监控网络的高效融合,简化hpc中的网络设计。而申请号为201910520343.3的中国发明专利申请中记载的互连芯片动态共享缓冲区只有一个damq_ctrl,只支持单端口动态共享缓冲,无法支持多协议融合设计。



技术实现要素:

本发明要解决的技术问题:针对现有技术的上述问题,提供一种支持多协议的动态共享缓冲区,本发明针对现有互连芯片输入缓冲damq设计无法同时支持多协议的问题,可提供多个相互独立、深度可配置的数据通道,每个数据通道用于存储一种协议的报文数据。

为了解决上述技术问题,本发明采用的技术方案为:

一种支持多协议的动态共享缓冲区,包括报文拆分逻辑、控制码组合逻辑、控制damq单元和数据damq单元,所述控制damq单元包括第一数据仲裁器、damq_ctrl1~damq_ctrlp一共p个控制damq、第二数据仲裁器、第一多路选择器,所述第一数据仲裁器用于将来自控制码组合逻辑的控制码仲裁后输出给damq_ctrl1~damq_ctrlp中的一者,所述第二数据仲裁器用于将来自外部的读请求仲裁后输出给damq_ctrl1~damq_ctrlp中的一者,所述第一多路选择器用于从damq_ctrl1~damq_ctrlp中选择一路输出到数据damq单元;所述控制damq单元包括第二多路选择器、p个空闲地址缓冲区、p个空闲地址管理器和数据缓冲区,第二多路选择器用于从第一~第p空闲地址管理器接收p个端口的空闲地址缓冲区头指针,从报文拆分逻辑接收写数据通道号,然后将写数据通道号所对应第i数据通道的空闲地址缓冲区头指针headi转换成写缓冲区地址wt_addr,作为报文数据在数据缓冲区的存放地址,然后将写缓冲区地址wt_addr发送到数据缓冲区和控制码组合逻辑;第一~第p空闲地址管理器中的任意第i空闲地址管理器与第i空闲地址缓冲区和第二多路选择器相连;p个空闲地址缓冲区和p个空闲地址管理器中任意第i空闲地址管理器通过头尾指针及第i空闲地址缓冲区把数据缓冲区中第i数据通道的空闲地址串成链表;当外部模块通过第i数据通道向数据缓冲区写数据时,第i空闲地址管理器将第i空闲地址缓冲区的头指针headi,经过第二多路选择器仲裁后提供给数据缓冲区,作为数据缓冲区存储报文数据的地址;当第i数据通道从数据缓冲区读出一个数据时,该数据在据缓冲区中的地址被返还给第i空闲地址管理器的空闲地址链;第i空闲地址缓冲区与第i空闲地址管理器相连;第i数据通道在数据缓冲区的空闲地址通过地址链表构成虚拟队列,构成第i空闲地址缓冲区,所述数据缓冲区用于存储p个数据通道的报文数据。

可选地,所述报文拆分逻辑与报文输入端口、控制码组合逻辑、第二多路选择器、数据缓冲区相连;所述报文拆分逻辑用于从报文输入端口接收报文,将报文拆分成报文控制信息、报文数据和写数据通道号;然后将报文控制信息输出给控制码组合逻辑,将报文数据输出给数据缓冲区,将写数据通道号输出给第二多路选择器。

可选地,所述控制码组合逻辑与报文拆分逻辑、第二多路选择器、第一数据仲裁器相连;所述控制码组合逻辑用于从报文拆分逻辑接收报文控制信息,从第二多路选择器接收报文数据存储在数据缓冲区中的地址作为写缓冲地址,将报文控制信息和写缓冲地址组合成控制码,并将控制码输出给第一数据仲裁器。

可选地,所述数据缓冲区中存储的p个数据通道的报文数据占用不同的连续地址空间,且任意第i数据通道在数据缓冲区的地址空间范围为:

上式中,port_depi表示第i数据通道在数据缓冲区占用的存储单元数,port_depk表示第k数据通道在数据缓冲区占用的存储单元数,p为数据缓冲区存储报文数据的数据通道数量;将报文数据存放在数据缓冲区中的地址记为写缓冲地址wt_addr,所述数据缓冲区从第二多路选择器接收写缓冲地址wt_addr,从报文拆分逻辑接收报文数据,然后将报文数据缓存在数据缓冲区中写缓冲地址wt_addr所指向的地址;所述数据缓冲区从第一多路选择器中接收对应数据通道控制码中的地址位即读缓冲区地址,通过读缓冲区地址从数据缓冲区中读出报文数据,然后通过报文数据输出端口将报文数据输出。

可选地,所述p个控制damq结构完全相同,且任意控制damq的结构包括vc号识别模块、读写地址管理模块vc0~vcn-1、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二写请求与写数据选择模块、第二读请求选择模块、第三数据缓冲区、地址缓冲区、空闲地址缓冲区、第二读写地址管理模块、第二vc顶部缓冲区vc0fifo_top~vcn-1fifo_top以及n选1多路选择器;其中:vc号识别模块用于从数据输入端口输入的控制码中提取该控制码的vc号j,生成vcj写请求,发送到vcj读写地址管理模块,0≤j≤n-1,j为整数;读写地址管理模块vc0~vcn-1用于从vc号识别模块接收vcj写请求,生成读空闲地址缓冲区的vcj第二读请求,发送到第二读请求选择模块;vcj读写地址管理模块接收从空闲地址缓冲区读出的空闲地址,将该地址保存为vcj写地址,生成vcj第一写请求,将vcj第一写请求与写地址发送到第一写请求与写地址选择模块;vcj读写地址管理模块从vcjfifo_top接收对vcj的读请求,将vcj的读请求和读地址作为vcj第一读请求与读地址发送到第一读请求与读地址选择模块;生成vcj第二写请求,将vcj的读地址作为写数据,送给第二写请求与写数据选择模块;vcj读写地址管理模块接收从地址缓冲区读出的地址,将vcj的读地址更新为该地址;第一写请求与写地址选择模块用于串行接收vcj读写地址管理模块发出的vcj第一写请求与写地址,选择有效的写请求及其写地址分别生成第一写请求和第一写地址,发送给第三数据缓冲区和地址缓冲区;第一读请求与读地址选择模块用于串行接收vcj读写地址管理模块发出的vcj第一读请求与读地址,选择有效的读请求及其读地址分别生成第一读请求和第一读地址,发送给第三数据缓冲区和地址缓冲区;第二写请求与写数据选择模块用于串行接收vcj读写地址管理模块发送的第二写请求与写数据,选择有效的写请求,生成第二写请求,发送到第二读写地址管理模块和空闲地址缓冲区,选择有效的写数据作为写入的空闲地址写入到空闲地址缓冲区;第二读请求选择模块用于串行接收vcj读写地址管理模块发送的第二读请求,选择有效的读请求作为第二读请求发送到第二读写地址管理模块和空闲地址缓冲区;第三数据缓冲区为具有独立的读写端口的双端口静态随机访问存储器sram,用于接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从数据输入端口接收控制码并将其写入到第一写地址指向的存储器空间;第三数据缓冲区接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据到第二vc0到vcn-1顶部缓冲区;地址缓冲区用于接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从空闲地址缓冲区接收空闲地址并将其写入到第一写地址指向的存储器空间;接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据作为读出的地址,发送到vc0到vcn-1读写地址管理模块;空闲地址缓冲区为具有独立的读写端口的双端口sram或者寄存器组,用于接收第二写请求,将写入的空闲地址写到第二写地址指向的位置;空闲地址缓冲区接收第二读请求,从第二读地址指向的位置输出数据作为读出的空闲地址,发送到地址缓冲区和vc0到vcn-1读写地址管理模块;第二读写地址管理模块用于接收第二写请求与写数据选择模块发送的第二写请求,将第二写地址加一,发送到空闲地址缓冲区;第二读写地址管理模块接收第二读请求选择模块发送的第二读请求,将第二读地址加一,发送到空闲地址缓冲区;第二vc顶部缓冲区vc0fifo_top~vcn-1fifo_top分别用于从读请求输入端口接收到vcj读请求输入,将数据从第二vcjfifo_top读出输出给n选1多路选择器,然后,向vcj读写地址管理模块发出vcj读请求;第二vcjfifo_top从第三数据缓冲区接收数据,缓存至第二vcjfifo_top;n选1多路选择器用于从第二vc0到vcn-1顶部缓冲区相连接收vc0到vcn-1读出数据,得到控制码,然后选择其中一个数据通过数据输出端口输出给第一多路选择器。

可选地,所述第二vc顶部缓冲区vc0fifo_top~vcn-1fifo_top的深度为3,其中的存储单元分别标识为fifo_top0,fifo_top1,fifo_top2;每个存储单元的装填为下述三种状态之一:(1)没有有效数据、而且没有预约第三数据缓冲区中的数据;(2)没有有效数据,但是已经预约了第三数据缓冲区中的数据;(3)有有效数据。

可选地,所述数据缓冲区的存储单元宽度与所有协议中最长宽度的报文切片的宽度相同,数据缓冲区的深度是第一~第p空闲地址缓冲区深度之和;第i空闲地址缓冲区的深度与对应的第i个控制damq的第三数据缓冲区的深度相同。

可选地,所述p个空闲地址缓冲区采用寄存器阵列实现,其深度与第i个控制damq的第三数据缓冲区深度相同。

此外,本发明还提供一种网络交换机,该网络交换机的互连芯片中包含所述的支持多协议的动态共享缓冲区。

此外,本发明还提供一种计算机设备,该计算机设备的互连芯片中包含所述的支持多协议的动态共享缓冲区。

和现有技术相比,本发明具有下述优点:针对现有互连芯片输入缓冲damq设计无法同时支持多协议的问题,本发明包含改进的控制damq单元和数据damq单元,控制damq单元包括第一数据仲裁器、damq_ctrl1~damq_ctrlp一共p个控制damq、第二数据仲裁器、第一多路选择器,控制damq单元包括第二多路选择器、p个空闲地址缓冲区、p个空闲地址管理器和数据缓冲区,通过上述结构,可提供p个相互独立、深度可配置的数据通道,每个数据通道用于存储一种协议的报文数据,进而使得互连芯片同时支持多协议,在一套网络中支持多套网络协议,降低网络硬件实现开销。

附图说明

图1是背景技术互连芯片动态共享缓冲区总体结构。

图2是本发明支持多协议的动态共享缓冲区总体结构。

图3是本发明每个控制damq的逻辑结构图。

具体实施方式

如图2所示,本实施例支持多协议的动态共享缓冲区包括报文拆分逻辑、控制码组合逻辑、控制damq单元和数据damq单元,与图1所示现有缓冲装置相同,本实施例支持多协议的动态共享缓冲区针对控制damq单元和数据damq单元进行了改进以实现支持多协议。

如图2所示,控制damq单元包括第一数据仲裁器、damq_ctrl1~damq_ctrlp一共p个控制damq(任意第i个记为damq_ctrli,1≤i≤p,i为整数,p为数据通道数)、第二数据仲裁器、第一多路选择器,第一数据仲裁器用于将来自控制码组合逻辑的控制码仲裁后输出给damq_ctrl1~damq_ctrlp中的一者,第二数据仲裁器用于将来自外部的读请求仲裁后输出给damq_ctrl1~damq_ctrlp中的一者,第一多路选择器用于从damq_ctrl1~damq_ctrlp中选择一路输出到数据damq单元;

如图2所示,控制damq单元包括第二多路选择器、p个空闲地址缓冲区、p个空闲地址管理器和数据缓冲区,第二多路选择器用于从第一~第p空闲地址管理器接收p个端口的空闲地址缓冲区头指针,从报文拆分逻辑接收写数据通道号,然后将写数据通道号所对应第i数据通道的空闲地址缓冲区头指针headi转换成写缓冲区地址wt_addr,作为报文数据在数据缓冲区的存放地址,然后将写缓冲区地址wt_addr发送到数据缓冲区和控制码组合逻辑;第一~第p空闲地址管理器中的任意第i空闲地址管理器与第i空闲地址缓冲区和第二多路选择器相连;p个空闲地址缓冲区和p个空闲地址管理器中任意第i空闲地址管理器通过头尾指针及第i空闲地址缓冲区把数据缓冲区中第i数据通道的空闲地址串成链表;当外部模块通过第i数据通道向数据缓冲区写数据时,第i空闲地址管理器将第i空闲地址缓冲区的头指针headi,经过第二多路选择器仲裁后提供给数据缓冲区,作为数据缓冲区存储报文数据的地址;当第i数据通道从数据缓冲区读出一个数据时,该数据在据缓冲区中的地址被返还给第i空闲地址管理器的空闲地址链;第i空闲地址缓冲区与第i空闲地址管理器相连;第i数据通道在数据缓冲区的空闲地址通过地址链表构成虚拟队列,构成第i空闲地址缓冲区,数据缓冲区用于存储p个数据通道的报文数据。

如图2所示,报文拆分逻辑与报文输入端口、控制码组合逻辑、第二多路选择器、数据缓冲区相连;报文拆分逻辑用于从报文输入端口接收报文,将报文拆分成报文控制信息、报文数据和写数据通道号;然后将报文控制信息输出给控制码组合逻辑,将报文数据输出给数据缓冲区,将写数据通道号输出给第二多路选择器。

如图2所示,控制码组合逻辑与报文拆分逻辑、第二多路选择器、第一数据仲裁器相连;控制码组合逻辑用于从报文拆分逻辑接收报文控制信息,从第二多路选择器接收报文数据存储在数据缓冲区中的地址作为写缓冲地址,将报文控制信息和写缓冲地址组合成控制码,并将控制码输出给第一数据仲裁器。

数据缓冲区用于存储p个数据通道的报文数据,数据缓冲区与报文拆分逻辑、第二多路选择器、第一多路选择器及报文数据输出端口相连。

本实施例中,数据缓冲区中存储的p个数据通道的报文数据占用不同的连续地址空间,且任意第i数据通道在数据缓冲区的地址空间范围为:

上式中,port_depi表示第i数据通道在数据缓冲区占用的存储单元数,port_depk表示第k数据通道在数据缓冲区占用的存储单元数,p为数据缓冲区存储报文数据的数据通道数量;将报文数据存放在数据缓冲区中的地址记为写缓冲地址wt_addr,数据缓冲区从第二多路选择器接收写缓冲地址wt_addr,从报文拆分逻辑接收报文数据,然后将报文数据缓存在数据缓冲区中写缓冲地址wt_addr所指向的地址;数据缓冲区从第一多路选择器中接收对应数据通道控制码中的地址位即读缓冲区地址,通过读缓冲区地址从数据缓冲区中读出报文数据,然后通过报文数据输出端口将报文数据输出。

参见图2,第二多路选择器与第一~第p空闲地址管理器、数据缓冲区以及控制码组合逻辑相连;第二多路选择器从第一~第p空闲地址管理器接收p个端口的空闲地址缓冲区头指针,从报文拆分逻辑接收写数据通道号,然后,将写数据通道号所对应第i数据通道的空闲地址缓冲区头指针headi转换成写缓冲区地址wt_addr,作为报文数据在数据缓冲区的存放地址,然后将写缓冲区地址wt_addr发送到数据缓冲区和控制码组合逻辑。

参见图2,第一~第p空闲地址管理器中的任意第i空闲地址管理器与第i空闲地址缓冲区和第二多路选择器相连;第i空闲地址管理器通过头尾指针及第i空闲地址缓冲区把数据缓冲区中第i数据通道的空闲地址串成链表;当外部模块通过第i数据通道向数据缓冲区写数据时,第i空闲地址管理器将第i空闲地址缓冲区的头指针headi,经过第二多路选择器仲裁后提供给数据缓冲区,作为数据缓冲区存储报文数据的地址;当第i数据通道从数据缓冲区读出一个数据时,该数据在据缓冲区中的地址被返还给第i空闲地址管理器的空闲地址链;第i空闲地址缓冲区与第i空闲地址管理器相连;第i数据通道在数据缓冲区的空闲地址通过地址链表构成虚拟队列,构成第i空闲地址缓冲区;

参见图2,第一数据仲裁器与第一~第p控制damq及控制码组合逻辑相连;第一数据仲裁器从控制码组合逻辑接收控制码,然后根据控制码中的端口号将控制码写入对应数据通道的控制damq。

参见图2,第二数据仲裁器与第一~第p控制damq、第一多路选择器及读请求输入端口相连;第二数据仲裁器接收来自读请求输入端口的读请求,然后根据其中的数据通道号将读请求发送到对应数据通道的控制damq。

参见图2,第一多路选择器与第一~第p控制damq、数据缓冲区和读请求输入端口相连;第一多路选择器从第一~第p控制damq接收p个端口的控制码信息,从读请求输入端口接收读数据通道号;然后,将读数据通道号所对应第i数据通道的控制码信息转换成读缓冲区地址rd_addr,并将读缓冲区地址rd_addr发送到数据缓冲区。

本实施例中,p个控制damq构成的控制damq阵列与第一数据仲裁器、第二数据仲裁器及第一多路选择器相连;控制damq阵列包含p个damq_ctrl1~damq_ctrlp,p个控制damq结构完全相同,控制damq用于存储一个端口的数据,p个控制damq之间完全独立;控制damq从第一数据仲裁器接收控制码,对n个vc的控制码动态共享存储,从第二数据仲裁器接收到读请求,根据控制码得到读缓冲区地址,然后将读缓冲区地址发送给第一多路选择器,vc为虚信道,n为虚信道数。

如图3所示,p个控制damq结构完全相同,且任意控制damq的结构包括vc号识别模块、读写地址管理模块vc0~vcn-1、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二写请求与写数据选择模块、第二读请求选择模块、第三数据缓冲区、地址缓冲区、空闲地址缓冲区、第二读写地址管理模块、第二vc顶部缓冲区vc0fifo_top~vcn-1fifo_top以及n选1多路选择器;其中:

vc号识别模块用于从数据输入端口输入的控制码中提取该控制码的vc号j,生成vcj写请求,发送到vcj读写地址管理模块,0≤j≤n-1,j为整数;

读写地址管理模块vc0~vcn-1用于从vc号识别模块接收vcj写请求,生成读空闲地址缓冲区的vcj第二读请求,发送到第二读请求选择模块;vcj读写地址管理模块接收从空闲地址缓冲区读出的空闲地址,将该地址保存为vcj写地址,生成vcj第一写请求,将vcj第一写请求与写地址发送到第一写请求与写地址选择模块;

vcj读写地址管理模块从vcjfifo_top接收对vcj的读请求,将vcj的读请求和读地址作为vcj第一读请求与读地址发送到第一读请求与读地址选择模块;生成vcj第二写请求,将vcj的读地址作为写数据,送给第二写请求与写数据选择模块;vcj读写地址管理模块接收从地址缓冲区读出的地址,将vcj的读地址更新为该地址;

第一写请求与写地址选择模块用于串行接收vcj读写地址管理模块发出的vcj第一写请求与写地址,选择有效的写请求及其写地址分别生成第一写请求和第一写地址,发送给第三数据缓冲区和地址缓冲区;

第一读请求与读地址选择模块用于串行接收vcj读写地址管理模块发出的vcj第一读请求与读地址,选择有效的读请求及其读地址分别生成第一读请求和第一读地址,发送给第三数据缓冲区和地址缓冲区;

第二写请求与写数据选择模块用于串行接收vcj读写地址管理模块发送的第二写请求与写数据,选择有效的写请求,生成第二写请求,发送到第二读写地址管理模块和空闲地址缓冲区,选择有效的写数据作为写入的空闲地址写入到空闲地址缓冲区;

第二读请求选择模块用于串行接收vcj读写地址管理模块发送的第二读请求,选择有效的读请求作为第二读请求发送到第二读写地址管理模块和空闲地址缓冲区;

第三数据缓冲区为具有独立的读写端口的双端口静态随机访问存储器sram,用于接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从数据输入端口接收控制码并将其写入到第一写地址指向的存储器空间;第三数据缓冲区接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据到第二vc0到vcn-1顶部缓冲区;

地址缓冲区用于接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从空闲地址缓冲区接收空闲地址并将其写入到第一写地址指向的存储器空间;接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据作为读出的地址,发送到vc0到vcn-1读写地址管理模块;

空闲地址缓冲区为具有独立的读写端口的双端口sram或者寄存器组,用于接收第二写请求,将写入的空闲地址写到第二写地址指向的位置;空闲地址缓冲区接收第二读请求,从第二读地址指向的位置输出数据作为读出的空闲地址,发送到地址缓冲区和vc0到vcn-1读写地址管理模块;第二读写地址管理模块用于接收第二写请求与写数据选择模块发送的第二写请求,将第二写地址加一,发送到空闲地址缓冲区;第二读写地址管理模块接收第二读请求选择模块发送的第二读请求,将第二读地址加一,发送到空闲地址缓冲区;

第二vc顶部缓冲区vc0fifo_top~vcn-1fifo_top分别用于从读请求输入端口接收到vcj读请求输入,将数据从第二vcjfifo_top读出输出给n选1多路选择器,然后,向vcj读写地址管理模块发出vcj读请求;第二vcjfifo_top从第三数据缓冲区接收数据,缓存至第二vcjfifo_top;

n选1多路选择器用于从第二vc0到vcn-1顶部缓冲区相连接收vc0到vcn-1读出数据,得到控制码,然后选择其中一个数据通过数据输出端口输出给第一多路选择器。

参见图3,控制damq包含有1个数据输入端口,一个读请求输入端口,和1个数据输出端口;数据输入端口与vc号识别模块、第三数据缓冲区、第二vc0到vcn-1fifo-top相连,控制damq通过数据输入端口将从控制码组合逻辑接收的控制码输入到vc号识别模块,同时,如果第二vc0到vcn-1的顶部缓冲区可以接收旁路数据,将控制码直接旁路写入第二vc0到vcn-1的顶部缓冲区;否则,将控制码写入第三数据缓冲区。

参见图3,vc号识别模块与数据输入端口、vc0到vcn-1读写地址管理模块相连,从数据输入端口输入的控制码中提取该控制码的vc号j,生成vcj写请求,发送到vcj读写地址管理模块,0≤j≤n-1,j为整数。

参见图3,vcj读写地址管理模块与vc号识别模块、vcj顶部缓冲区vcjfifo_top、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二写请求与写数据选择模块、第二读请求选择模块、地址缓冲区和空闲地址缓冲区相连,从vc号识别模块接收vcj写请求,生成读空闲地址缓冲区的vcj第二读请求,发送到第二读请求选择模块;vcj读写地址管理模块接收从空闲地址缓冲区读出的空闲地址,将该地址保存为vcj写地址,生成vcj第一写请求,将vcj第一写请求与写地址发送到第一写请求与写地址选择模块;vcj读写地址管理模块从vcjfifo_top接收对vcj的读请求,将vcj的读请求和读地址作为vcj第一读请求与读地址发送到第一读请求与读地址选择模块;生成vcj第二写请求,将vcj的读地址作为写数据,送给第二写请求与写数据选择模块;vcj读写地址管理模块接收从地址缓冲区读出的地址,将vcj的读地址更新为该地址。

参见图3,第一写请求与写地址选择模块与vc1到vcn读写地址管理模块、数据缓冲区和地址缓冲区相连,串行接收vcj读写地址管理模块发出的vcj第一写请求与写地址,选择有效的写请求及其写地址分别生成第一写请求和第一写地址,发送给第三数据缓冲区和地址缓冲区。

参见图3,第一读请求与读地址选择模块与vc0到vcn-1读写地址管理模块、第三数据缓冲区和地址缓冲区相连,串行接收vcj读写地址管理模块发出的vcj第一读请求与读地址,选择有效的读请求及其读地址分别生成第一读请求和第一读地址,发送给第三数据缓冲区和地址缓冲区。

参见图3,第三数据缓冲区是具有独立的读写端口的双端口静态随机访问存储器sram,与数据输入端口、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二vc0到vcn-1顶部缓冲区相连,接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从数据输入端口接收控制码并将其写入到第一写地址指向的存储器空间;第三数据缓冲区接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据到第二vc0到vcn-1顶部缓冲区。

参见图3,地址缓冲区是具有独立的读写端口的双端口sram或者寄存器组,与第一写请求与写地址选择模块、第一读请求与读地址选择模块、vc0到vcn-1读写地址管理模块、空闲地址缓冲区相连,接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从空闲地址缓冲区接收空闲地址并将其写入到第一写地址指向的存储器空间;接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据作为读出的地址,发送到vc0到vcn-1读写地址管理模块。

参见图3,第二写请求与写数据选择模块与vc0到vcn-1读写地址管理模块、第二读写地址管理模块、空闲地址缓冲区相连,串行接收vcj读写地址管理模块发送的第二写请求与写数据,选择有效的写请求,生成第二写请求,发送到第二读写地址管理模块和空闲地址缓冲区,选择有效的写数据作为写入的空闲地址写入到空闲地址缓冲区。

参见图3,第二读请求选择模块与vc0到vcn-1读写地址管理模块、第二读写地址管理模块、空闲地址缓冲区相连,串行接收vcj读写地址管理模块发送的第二读请求,选择有效的读请求作为第二读请求发送到第二读写地址管理模块和空闲地址缓冲区。

参见图3,第二读写地址管理模块与第二写请求与写数据选择模块、第二读请求选择模块、空闲地址缓冲区相连,接收第二写请求与写数据选择模块发送的第二写请求,将第二写地址加一,发送到空闲地址缓冲区;第二读写地址管理模块接收第二读请求选择模块发送的第二读请求,将第二读地址加一,发送到空闲地址缓冲区。

参见图3,空闲地址缓冲区是具有独立的读写端口的双端口sram或者寄存器组,与第二写请求与写数据选择模块、第二读请求选择模块、第二读写地址管理模块相连,接收第二写请求,将写入的空闲地址写到第二写地址指向的位置;空闲地址缓冲区接收第二读请求,从第二读地址指向的位置输出数据作为读出的空闲地址,发送到地址缓冲区和vc0到vcn-1读写地址管理模块;

参见图3,第二vcjfifo_top由寄存器组组成;第二vcjfifo_top与数据输入端口、第三数据缓冲区、vcj读写地址管理模块、n选1多路选择器、读请求输入端口相连,如果第二vcjfifo_top可以接收旁路数据,将数据输入端口的控制码直接旁路写入第二vcjfifo_top;从读请求输入端口接收到vcj读请求输入,将数据从第二vcjfifo_top读出输出给n选1多路选择器,然后,向vcj读写地址管理模块发出vcj读请求;第二vcjfifo_top从第三数据缓冲区接收数据,缓存至第二vcjfifo_top。

参见图3,n选1多路选择器与第二vc0到vcn-1顶部缓冲区以及外部damq_data相连,从第二vc0到vcn-1顶部缓冲区相连接收vc0到vcn-1读出数据,即控制码,然后选择其中一个数据通过数据输出端口输出给第一多路选择器。

本实施例中,第二vc顶部缓冲区vc0fifo_top~vcn-1fifo_top的深度为3,其中的存储单元分别标识为fifo_top0,fifo_top1,fifo_top2;每个存储单元的装填为下述三种状态之一:(1)没有有效数据、而且没有预约第三数据缓冲区中的数据;(2)没有有效数据,但是已经预约了第三数据缓冲区中的数据;(3)有有效数据。

本实施例中,数据缓冲区的存储单元宽度与所有协议中最长宽度的报文切片的宽度相同,数据缓冲区的深度是第一~第p空闲地址缓冲区深度之和;第i空闲地址缓冲区的深度与对应的第i个控制damq的第三数据缓冲区的深度相同。

本实施例中,p个空闲地址缓冲区采用寄存器阵列实现,其深度与第i个控制damq的第三数据缓冲区深度相同。

综上所述,针对现有互连芯片输入缓冲damq设计无法同时支持多协议的问题,本实施例提供了一种支持多协议的动态共享缓冲区,包括:报文拆分逻辑、控制码组合逻辑、第一数据仲裁器、第二数据仲裁器、p个控制damq、第一多路选择器、第二多路选择器、p个空闲地址缓冲区、p个空闲地址管理器、数据缓冲区、一个报文输入端口、一个读请求输入端口和一个报文数据输出端口;其中,p为数据通道数,每个数据通道存储一种协议的数据。本发明可以提供多个相互独立、深度可配置的数据通道,每个数据通道用于存储一种协议的报文数据,进而使得互连芯片同时支持多协议,在一套网络中支持多套网络协议,降低网络硬件实现开销。

此外,本实施例还提供一种网络交换机,该网络交换机的互连芯片中包含前述的支持多协议的动态共享缓冲区。

此外,本实施例还提供一种计算机设备,该计算机设备的互连芯片中包含前述的支持多协议的动态共享缓冲区。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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