CN110247970B - 一种互连芯片动态共享缓冲装置 - Google Patents
一种互连芯片动态共享缓冲装置 Download PDFInfo
- Publication number
- CN110247970B CN110247970B CN201910520343.3A CN201910520343A CN110247970B CN 110247970 B CN110247970 B CN 110247970B CN 201910520343 A CN201910520343 A CN 201910520343A CN 110247970 B CN110247970 B CN 110247970B
- Authority
- CN
- China
- Prior art keywords
- address
- data
- read
- write
- buffer
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
针对现有超级计算机高速互连网络交换机中高数据位宽DAMQ在后端物理设计复杂性过大的技术问题,本发明提供一种互连芯片动态共享缓冲装置,包括:报文拆分模块、控制码组合模块、数据DAMQ和控制DAMQ,一个数据输入端口、一个读请求输入端口和一个数据输出端口;记控制DAMQ为DAMQ_CTRL,数据DAMQ为DAMQ_DATA。本发明通过将报文中的控制信息与数据分离,报文写入DAMQ时会被拆分成两部分,其中报文数据部分被写入DAMQ_DATA,报文的控制信息以及报文数据存储在DAMQ_DATA中的地址则被组合起来写入DAMQ_CTRL,DAMQ_CTRL通过控制码中的地址从DAMQ_DATA读出报文数据。本发明可以将DAMQ所需的寄存器数量降低为现有技术的2%左右,大幅降低后端布局布线困难,并降低物理设计成本。
Description
技术领域
本发明涉及超级计算机高速互连网络交换机输入端口的输入缓冲区,特别是一种互连芯片动态共享缓冲装置。
背景技术
互连网络是超级计算机的关键部件,用于实现超级计算机中的计算节点、输入输出节点、服务节点之间的高速数据传输与交换。
交换机是高速互连网络的核心设备,一般采用交叉开关来实现。交换机的内部结构主要包括数据缓冲区和交叉开关,数据缓冲区用于缓存不能及时处理的数据,交叉开关用于在不同的网络端口之间交换数据。交换机常用的数据缓冲方式有:输入缓冲,输出缓冲,输入输出联合缓冲,交叉点缓冲等。由于输入缓冲实现简单,成为交叉开关普遍采用的缓冲方式。随着交换机端口数目的增加,交换机采用多级交换结构,每一个输入端口和每一级交换的输入端口都需要缓冲区缓存报文,导致交换机中缓冲区的数目急剧增加。为了减小缓冲区占用的芯片面积,降低实现缓冲区的存储器带来的功耗开销,交换机中采用动态分配共享缓冲区管理方法,提高缓冲区利用率,减小缓冲区深度。具体做法是,为交换机每个输入端口设置一个缓冲区,由所有虚信道(Virtual Channel,VC)共享,输入端口接收到的数据被随机地缓存在共享缓冲区中,通过地址管理保证数据能够被正确的写入和读出。采用动态分配共享缓冲区可以提高缓冲区利用率,只要缓冲区中有空闲空间就可以接收任何一个VC的数据。我们将这种缓冲区称作多VC动态共享缓冲区。为了提高链路利用率,互连网络中的物理链路被划分为多个虚信道。在交换机的输入缓冲区中,设置与VC数目相同的虚拟数据队列,相同VC的数据被组织为虚拟链表,存取方式为先进先出(First In FirstOut,FIFO)。在有些交换机中,为了消除头部阻塞问题,设置与交换机输出端口数目相同的虚拟队列,输出到同一个输出端口的数据被保存在一个队列中,组织为链表方式,存取方式也为FIFO。
记VC数目为N(N为正整数),现有多VC动态共享缓冲区如图1所述,包含一个1个数据输入端口、1个读请求输入端口、1个数据输出端口,由VC号识别模块、N个读写地址管理模块即VC0到VCN-1读写地址管理模块、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二写请求与写数据选择模块、第二读请求选择模块、第一数据缓冲区、地址缓冲区、空闲地址缓冲区、第二读写地址管理模块、N个VC顶部缓冲区即VC0到VCN-1FIFO_TOP、以及N选1多路选择器组成。
数据输入端口与VC号识别模块、第一数据缓冲区、N个VC顶部缓冲区即VC0到VCN- 1FIFO-TOP相连,将N个VC的数据串行输入到VC号识别模块,同时,如果VC0到VCN-1的顶部缓冲区可以接收旁路数据,将数据直接旁路写入VC0到VCN-1的顶部缓冲区;否则,将数据写入第一数据缓冲区。
VC号识别模块与数据输入端口、VC0到VCN-1读写地址管理模块相连,从数据输入端口输入的数据中提取该数据的VC号i(0≤i≤N-1),生成VCi写请求,发送到VCi读写地址管理模块。
VCi读写地址管理模块与VC号识别模块、VCi顶部缓冲区即VCiFIFO_TOP、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二写请求与写数据选择模块、第二读请求选择模块、地址缓冲区和空闲地址缓冲区相连,从VC号识别模块接收VCi写请求,生成读空闲地址缓冲区的VCi第二读请求,发送到第二读请求选择模块;VCi读写地址管理模块接收从空闲地址缓冲区读出的空闲地址,将该地址保存为VCi写地址,生成VCi第一写请求,将VCi第一写请求与写地址发送到第一写请求与写地址选择模块。VCi读写地址管理模块从VCiFIFO_TOP接收对VCi的读请求,将VCi的读请求和读地址作为VCi第一读请求与读地址发送到第一读请求与读地址选择模块;生成VCi第二写请求,将VCi的读地址作为写数据,送给第二写请求与写数据选择模块。VCi读写地址管理模块接收从地址缓冲区读出的地址,将VCi的读地址更新为该地址。
第一写请求与写地址选择模块与VC1到VCN读写地址管理模块、数据缓冲区和地址缓冲区相连,串行接收VCi读写地址管理模块发出的VCi第一写请求与写地址,选择有效的写请求及其写地址分别生成第一写请求和第一写地址,发送给第一数据缓冲区和地址缓冲区。
第一读请求与读地址选择模块与VC0到VCN-1读写地址管理模块、第一数据缓冲区和地址缓冲区相连,串行接收VCi读写地址管理模块发出的VCi第一读请求与读地址,选择有效的读请求及其读地址分别生成第一读请求和第一读地址,发送给第一数据缓冲区和地址缓冲区。
第一数据缓冲区是具有独立的读写端口的双端口静态随机访问存储器SRAM(Static Random Access Memory),与数据输入端口、第一写请求与写地址选择模块、第一读请求与读地址选择模块、VC0到VCN-1顶部缓冲区相连,接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从数据输入端口接收数据并将其写入到第一写地址指向的存储器空间;第一数据缓冲区接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据到VC0到VCN-1顶部缓冲区。
地址缓冲区是具有独立的读写端口的双端口SRAM或者寄存器组,与第一写请求与写地址选择模块、第一读请求与读地址选择模块、VC0到VCN-1读写地址管理模块、空闲地址缓冲区相连,接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从空闲地址缓冲区接收空闲地址并将其写入到第一写地址指向的存储器空间;接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据作为读出的地址,发送到VC0到VCN-1读写地址管理模块。
第二写请求与写数据选择模块与VC0到VCN-1读写地址管理模块、第二读写地址管理模块、空闲地址缓冲区相连,串行接收VCi读写地址管理模块发送的第二写请求与写数据,选择有效的写请求,生成第二写请求,发送到第二读写地址管理模块和空闲地址缓冲区,选择有效的写数据作为写入的空闲地址写入到空闲地址缓冲区。
第二读请求选择模块与VC0到VCN-1读写地址管理模块、第二读写地址管理模块、空闲地址缓冲区相连,串行接收VCi读写地址管理模块发送的第二读请求,选择有效的读请求作为第二读请求发送到第二读写地址管理模块和空闲地址缓冲区。
第二读写地址管理模块与第二写请求与写数据选择模块、第二读请求选择模块、空闲地址缓冲区相连,接收第二写请求与写数据选择模块发送的第二写请求,将第二写地址加一,发送到空闲地址缓冲区;第二读写地址管理模块接收第二读请求选择模块发送的第二读请求,将第二读地址加一,发送到空闲地址缓冲区。
空闲地址缓冲区是具有独立的读写端口的双端口SRAM或者寄存器组,与第二写请求与写数据选择模块、第二读请求选择模块、第二读写地址管理模块相连,接收第二写请求,将写入的空闲地址写到第二写地址指向的位置;空闲地址缓冲区接收第二读请求,从第二读地址指向的位置输出数据作为读出的空闲地址,发送到地址缓冲区和VC0到VCN-1读写地址管理模块。
VCiFIFO_TOP由寄存器组组成。VCiFIFO_TOP与数据输入端口、第一数据缓冲区、VCi读写地址管理模块、N选1多路选择器相连,如果VCiFIFO_TOP可以接收旁路数据,将数据输入端口的数据直接旁路写入VCiFIFO_TOP。从读请求输入接口接收到VCi读请求输入,将数据从VCiFIFO_TOP读出输出给N选1多路选择器,然后,向VCi读写地址管理模块发出VCi读请求。VCiFIFO_TOP从第一数据缓冲区接收数据,缓存至VCiFIFO_TOP。
N选1多路选择器与VC0到VCN-1顶部缓冲区相连,从VC0到VCN-1顶部缓冲区相连接收VC0到VCN-1读出数据,然后选择其中一个数据通过数据输出端口输出。
在上述结构中,第一数据缓冲区和VC0到VCN-1顶部缓冲区中保存的数据为固定长度的报文切片,称为flit。报文在端节点被切分为flit,然后在网络中传输。不同长度的报文包含的flit数目不同。第一数据缓冲区的存储单元宽度与flit宽度相同,每个存储单元保存一个flit。第一数据缓冲区的深度由上一级发送端与缓冲区之间的链路传输延迟和链路带宽共同决定。VCiFIFO_TOP的存储单元宽度与flit宽度相同,深度根据设计需求设置,一般为3-5即可。
随着超级计算机系统峰值性能的快速提高,需要提高系统组装密度以避免系统中机柜数的爆炸式增长,要求互连网络中的交换芯片集成更多的网络端口。目前交换芯片的网络端口普遍超过16个,有的达到48个或64个,甚至超过100个,端口的VC数也从以前的2个或4个增加到32个或更多,每个交换芯片中可能包含高达300个左右的DAMQ。Flit的位宽也增加至高达600位以上。以32个VC,每个flit位宽为600位,VCiFIFO_TOP深度为3为例,则一个交换芯片中顶部缓冲区使用的寄存器大小将为300*32*600*3=17280000位。数量如此之大,将对后端的布局布线造成极大困难。
发明内容
为了降低高数据位宽DAMQ在后端物理设计复杂性,本发明提供了一种互连芯片动态共享缓冲装置,通过将报文中的控制信息与数据分离,大幅降低DAMQ所需的寄存器数量,降低后端布局布线困难,并降低物理设计成本。
本发明互连芯片动态共享缓冲装置包括:报文拆分模块、控制码组合模块、数据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_DATA相连,从控制码组合模块接收控制码,对N个VC的控制码动态共享存储,从读请求输入端接收到读请求,根据控制码得到读缓冲地址,然后将读缓冲地址发送给DAMQ_DATA。
作为本发明技术方案的进一步改进,DAMQ_CTRL由VC号识别模块、N个读写地址管理模块即VC0到VCN-1读写地址管理模块、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二写请求与写数据选择模块、第二读请求选择模块、第三数据缓冲区、地址缓冲区、空闲地址缓冲区、第二读写地址管理模块、N个第二VC顶部缓冲区即第二VC0到VCN- 1FIFO_TOP、以及N选1多路选择器组成。DAMQ_CTRL包含有1个数据输入端口,一个读请求输入端口,和1个数据输出端口。
数据输入端口与VC号识别模块、第三数据缓冲区、N个第二VC顶部缓冲区即第二VC0到VCN-1FIFO-TOP相连,DAMQ_CTRL通过数据输入端口将从控制码组合模块接收的控制码输入到VC号识别模块,同时,如果第二VC0到VCN-1的顶部缓冲区可以接收旁路数据,将控制码直接旁路写入第二VC0到VCN-1的顶部缓冲区;否则,将控制码写入第三数据缓冲区。
VC号识别模块与数据输入端口、VC0到VCN-1读写地址管理模块相连,从数据输入端口输入的控制码中提取该控制码的VC号i,生成VCi写请求,发送到VCi读写地址管理模块,0≤i≤N-1,i为整数。
VCi读写地址管理模块与VC号识别模块、VCi顶部缓冲区即VCiFIFO_TOP、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二写请求与写数据选择模块、第二读请求选择模块、地址缓冲区和空闲地址缓冲区相连,从VC号识别模块接收VCi写请求,生成读空闲地址缓冲区的VCi第二读请求,发送到第二读请求选择模块;VCi读写地址管理模块接收从空闲地址缓冲区读出的空闲地址,将该地址保存为VCi写地址,生成VCi第一写请求,将VCi第一写请求与写地址发送到第一写请求与写地址选择模块。VCi读写地址管理模块从VCiFIFO_TOP接收对VCi的读请求,将VCi的读请求和读地址作为VCi第一读请求与读地址发送到第一读请求与读地址选择模块;生成VCi第二写请求,将VCi的读地址作为写数据,送给第二写请求与写数据选择模块。VCi读写地址管理模块接收从地址缓冲区读出的地址,将VCi的读地址更新为该地址。
第一写请求与写地址选择模块与VC1到VCN读写地址管理模块、数据缓冲区和地址缓冲区相连,串行接收VCi读写地址管理模块发出的VCi第一写请求与写地址,选择有效的写请求及其写地址分别生成第一写请求和第一写地址,发送给第三数据缓冲区和地址缓冲区。
第一读请求与读地址选择模块与VC0到VCN-1读写地址管理模块、第三数据缓冲区和地址缓冲区相连,串行接收VCi读写地址管理模块发出的VCi第一读请求与读地址,选择有效的读请求及其读地址分别生成第一读请求和第一读地址,发送给第三数据缓冲区和地址缓冲区。
第三数据缓冲区是具有独立的读写端口的双端口静态随机访问存储器SRAM,与数据输入端口、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二VC0到VCN-1顶部缓冲区相连,接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从数据输入端口接收控制码并将其写入到第一写地址指向的存储器空间;第三数据缓冲区接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据到第二VC0到VCN-1顶部缓冲区。
地址缓冲区是具有独立的读写端口的双端口SRAM或者寄存器组,与第一写请求与写地址选择模块、第一读请求与读地址选择模块、VC0到VCN-1读写地址管理模块、空闲地址缓冲区相连,接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从空闲地址缓冲区接收空闲地址并将其写入到第一写地址指向的存储器空间;接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据作为读出的地址,发送到VC0到VCN-1读写地址管理模块。
第二写请求与写数据选择模块与VC0到VCN-1读写地址管理模块、第二读写地址管理模块、空闲地址缓冲区相连,串行接收VCi读写地址管理模块发送的第二写请求与写数据,选择有效的写请求,生成第二写请求,发送到第二读写地址管理模块和空闲地址缓冲区,选择有效的写数据作为写入的空闲地址写入到空闲地址缓冲区。
第二读请求选择模块与VC0到VCN-1读写地址管理模块、第二读写地址管理模块、空闲地址缓冲区相连,串行接收VCi读写地址管理模块发送的第二读请求,选择有效的读请求作为第二读请求发送到第二读写地址管理模块和空闲地址缓冲区。
第二读写地址管理模块与第二写请求与写数据选择模块、第二读请求选择模块、空闲地址缓冲区相连,接收第二写请求与写数据选择模块发送的第二写请求,将第二写地址加一,发送到空闲地址缓冲区;第二读写地址管理模块接收第二读请求选择模块发送的第二读请求,将第二读地址加一,发送到空闲地址缓冲区。
空闲地址缓冲区是具有独立的读写端口的双端口SRAM或者寄存器组,与第二写请求与写数据选择模块、第二读请求选择模块、第二读写地址管理模块相连,接收第二写请求,将写入的空闲地址写到第二写地址指向的位置;空闲地址缓冲区接收第二读请求,从第二读地址指向的位置输出数据作为读出的空闲地址,发送到地址缓冲区和VC0到VCN-1读写地址管理模块。
第二VCiFIFO_TOP由寄存器组组成。第二VCiFIFO_TOP与数据输入端口、第三数据缓冲区、VCi读写地址管理模块、N选1多路选择器、读请求输入端口相连,如果第二VCiFIFO_TOP可以接收旁路数据,将数据输入端口的控制码直接旁路写入第二VCiFIFO_TOP。从读请求输入端口接收到VCi读请求输入,将数据从第二VCiFIFO_TOP读出输出给N选1多路选择器,然后,向VCi读写地址管理模块发出VCi读请求。第二VCiFIFO_TOP从第三数据缓冲区接收数据,缓存至第二VCiFIFO_TOP。
N选1多路选择器与第二VC0到VCN-1顶部缓冲区以及外部DAMQ_DATA相连,从第二VC0到VCN-1顶部缓冲区相连接收VC0到VCN-1读出数据,即控制码,然后选择其中一个数据通过数据输出端口输出给DAMQ_DATA。
作为本发明技术方案的进一步改进,DAMQ_DATA包含第二数据缓冲区、第二空闲地址缓冲区和空闲地址管理器。第二数据缓冲区用于存储报文数据;第二数据缓冲区与空闲地址管理器、报文拆分模块、报文组合模块相连,第二数据缓冲区从报文拆分模块接收到报文数据,将第二空闲地址缓冲区的头指针Head转换成写缓冲地址wt_addr,作为报文数据在第二数据缓冲区中的存放地址,将报文数据缓存至第二数据缓冲区中wt_addr指向的地址,然后将wt_addr发送到报文组合模块,并将Head更新为报文数据指向的地址缓冲区保存的数据。空闲地址管理器与第二空闲地址缓冲区和第二数据缓冲区相连。空闲地址管理器通过头尾指针及第二空闲地址缓冲区把第二数据缓冲区中的空闲地址串成链表;当外部模块向第二数据缓冲区写数据时,空闲地址管理器将第二空闲地址缓冲区的头指针Head提供给第二数据缓冲区,作为第二数据缓冲区存储报文数据的地址;当从第二数据缓冲区读出一个数据时,该数据在第二数据缓冲区中的地址被返还空闲地址链。第二空闲地址缓冲区与空闲地址管理器相连;第二数据缓冲区的空闲地址通过地址链表构成虚拟队列,即为第二空闲地址缓冲区。
作为本发明技术方案的进一步改进,空闲地址管理器将读地址rd_addr返还给空闲地址链,返还方法如下:将第二数据缓冲区的读地址rd_addr转换成地址缓冲区地址addr_buf_addr,将addr_buf_addr写入空闲地址链尾指针Tail所指向的地址缓冲区位置,然后将Tail更新为addr_buf_addr。
作为本发明技术方案的进一步改进,第二VC0到VCN-1顶部缓冲区的深度根据共享缓冲区的读时序决定,第二VC0到VCN-1顶部缓冲区深度设为3,其中的存储单元分别标识为FIFO_TOP0,FIFO_TOP1,FIFO_TOP2。每个存储单元有三种状态:(1)2’b00:表明该存储单元中没有有效数据,而且没有预约第三数据缓冲区中的数据;(2)2’01:表明该存储单元中没有有效数据,但是已经预约了第三数据缓冲区中的数据;(3)2’b11:存储单元中有有效数据。
作为本发明技术方案的进一步改进,DAMQ_DATA中第二数据缓冲区和第二空闲地址缓冲区的存储单元宽度与报文切片的宽度相同,第二数据缓冲区的深度与第三数据缓冲区的深度相同,由上一级发送端与缓冲区之间的链路传输延迟和链路带宽共同决定。
作为本发明技术方案的进一步改进,第二空闲地址缓冲区采用寄存器阵列实现,其深度与第二数据缓冲区深度相同,宽度与第二数据缓冲区地址宽度相同,空闲地址通过地址链表构成虚拟队列。
本发明可以达到以下技术效果:
1.由于DAMQ_CTRL保证了整个DAMQ对于每个VC的数据都是先进先出,因此DAMQ_DATA仅需管理空闲地址,无需管理已经分配出去的存储空间,这相对于传统的DAMQ_NVC节省了N套队列管理模块;
2.DAMQ_CTRL中存储的是报文的控制信息以及报文数据存储在DAMQ_DATA中的地址,因此,DAMQ_CTRL中第一数据缓冲区的宽度由现有技术中的报文切片宽度减小为报文的控制信息以及报文数据存储在DAMQ_DATA中的地址位宽;(2)VC0到VCN-1顶部缓冲区的宽度与第一数据缓冲区相同,也由现有技术中的报文切片宽度减小为报文的控制信息以及报文数据存储在DAMQ_DATA中的地址位宽。举例来说,目前报文切片宽度高达600位,报文的控制信息一般为2位(即报文头/尾标志),报文数据存储在DAMQ_DATA中的地址位宽一般为10位(即缓冲区的深度为1024),因此,第一数据缓冲区和VC0到VCN-1顶部缓冲区的宽度由600降低至12。以每个交换芯片中包含300个DAMQ,报文切片的位宽为600位,VC数量为32,每个VC的顶部缓冲区深度为3为例,则背景技术中,一个交换芯片中顶部缓冲区使用的寄存器大小将为300*32*600*3=17280000位,而采用本发明技术方案后,一个交换芯片中顶部缓冲区使用的寄存器大小缩减为300*32*12*3=345600位,降低为原来的2%,大幅降低后端布局布线困难。
附图说明
图1是背景技术现有DAMQ结构图;
图2是本发明互连芯片动态共享缓冲装置总体结构图;
图3是本发明DAMQ中DAMQ_DATA结构图;
图4是本发明DAMQ中DAMQ_CTRL结构图。
具体实施方式
为了降低高数据位宽DAMQ在后端物理设计复杂性,本发明提供了一种互连芯片动态共享缓冲装置,通过将报文中的控制信息与数据分离,以降低后端布局布线困难,并降低物理设计成本。
如图2所示,本发明互连芯片动态共享缓冲装置包括:报文拆分模块、控制码组合模块、数据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_DATA整体结构如图3所示,包含第二数据缓冲区、第二空闲地址缓冲区和空闲地址管理器。第二数据缓冲区和第二空闲地址缓冲区的存储单元宽度与报文切片的宽度相同,第二数据缓冲区的深度与第三数据缓冲区的深度相同,由上一级发送端与缓冲区之间的链路传输延迟和链路带宽共同决定。第二空闲地址缓冲区采用寄存器阵列RA实现,其深度与第二数据缓冲区深度相同,宽度与第二数据缓冲区地址宽度相同。空闲地址通过地址链表构成虚拟队列。第二数据缓冲区用于存储报文数据;第二数据缓冲区与空闲地址管理器、报文拆分模块、报文组合模块相连,第二数据缓冲区从报文拆分模块接收到报文数据,将第二空闲地址缓冲区的头指针Head转换成写缓冲地址wt_addr,作为报文数据在第二数据缓冲区中的存放地址,将报文数据缓存至第二数据缓冲区中wt_addr指向的地址,然后将wt_addr发送到报文组合模块,并将Head更新为报文数据指向的地址缓冲区保存的数据。空闲地址管理器与第二空闲地址缓冲区和第二数据缓冲区相连。空闲地址管理器通过头尾指针及第二空闲地址缓冲区把第二数据缓冲区中的空闲地址串成链表;当外部模块向第二数据缓冲区写数据时,空闲地址管理器将第二空闲地址缓冲区的头指针Head提供给第二数据缓冲区,作为第二数据缓冲区存储报文数据的地址;当从第二数据缓冲区读出一个数据时,该数据在第二数据缓冲区中的地址被返还空闲地址链,返还方法如下:将第二数据缓冲区的读地址rd_addr转换成地址缓冲区地址addr_buf_addr,将addr_buf_addr写入空闲地址链尾指针Tail所指向的地址缓冲区位置,然后将Tail更新为addr_buf_addr。第二空闲地址缓冲区第二数据缓冲区的空闲地址通过地址链表构成虚拟队列,即为第二空闲地址缓冲区。
DAMQ_CTRL与读请求输入端口、控制码组合模块、DAMQ_DATA相连,从控制码组合模块接收控制码,对N个VC的控制码动态共享存储,从读请求输入端接收到读请求,根据控制码得到读缓冲地址,然后将读缓冲地址发送给DAMQ_DATA。
DAMQ_CTRL的结构与背景中的DAMQ结构完全一致,不同之处在于:(1)DAMQ_CTRL中第一数据缓冲区存储的是报文的控制信息以及报文数据存储在DAMQ_DATA中的地址,因此,第一数据缓冲区的宽度由背景技术中的报文切片宽度减小为报文的控制信息以及报文数据存储在DAMQ_DATA中的地址位宽;(2)DAMQ_CTRL中VC0到VCN-1顶部缓冲区的宽度,也由背景技术中的报文切片宽度减小为报文的控制信息以及报文数据存储在DAMQ_DATA中的地址位宽;(3)DAMQ_CTRL中的数据即为控制码。为了与背景技术中的第一数据缓冲区以及VC0到VCN-1顶部缓冲区区分开来,记DAMQ_CTRL中与第一数据缓冲区对应的数据缓冲区记为第三数据缓冲区,DAMQ_CTRL中与VC0到VCN-1顶部缓冲区对应的顶部缓冲区记为第二VC0到VCN-1顶部缓冲区,即第二VC0FIFO_TOP、……、VCiFIFO_TOP、……VCN-1FIFO_TOP。举例来说,目前报文切片宽度高达600位,报文的控制码为2位(即报文头/尾标志),报文数据存储在DAMQ_DATA中的地址位宽一般为10位(即缓冲区的深度为1024),因此,第一数据缓冲区和VC0到VCN-1顶部缓冲区的宽度由600降低至12。
如图4所示,DAMQ_CTRL由VC号识别模块、N个读写地址管理模块即VC0到VCN-1读写地址管理模块、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二写请求与写数据选择模块、第二读请求选择模块、第三数据缓冲区、地址缓冲区、空闲地址缓冲区、第二读写地址管理模块、N个第二VC顶部缓冲区即第二VC0到VCN-1FIFO_TOP、以及N选1多路选择器组成。DAMQ_CTRL包含有1个数据输入端口,一个读请求输入端口,和1个数据输出端口。
数据输入端口与VC号识别模块、第三数据缓冲区、N个第二VC顶部缓冲区即第二VC0到VCN-1FIFO-TOP相连,DAMQ_CTRL通过数据输入端口将从控制码组合模块接收的控制码输入到VC号识别模块,同时,如果第二VC0到VCN-1的顶部缓冲区可以接收旁路数据,将控制码直接旁路写入第二VC0到VCN-1的顶部缓冲区;否则,将控制码写入第三数据缓冲区。
VC号识别模块与数据输入端口、VC0到VCN-1读写地址管理模块相连,从数据输入端口输入的控制码中提取该控制码的VC号i(0≤i≤N-1),生成VCi写请求,发送到VCi读写地址管理模块。
VCi读写地址管理模块与VC号识别模块、VCi顶部缓冲区即VCiFIFO_TOP、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二写请求与写数据选择模块、第二读请求选择模块、地址缓冲区和空闲地址缓冲区相连,从VC号识别模块接收VCi写请求,生成读空闲地址缓冲区的VCi第二读请求,发送到第二读请求选择模块;VCi读写地址管理模块接收从空闲地址缓冲区读出的空闲地址,将该地址保存为VCi写地址,生成VCi第一写请求,将VCi第一写请求与写地址发送到第一写请求与写地址选择模块。VCi读写地址管理模块从VCiFIFO_TOP接收对VCi的读请求,将VCi的读请求和读地址作为VCi第一读请求与读地址发送到第一读请求与读地址选择模块;生成VCi第二写请求,将VCi的读地址作为写数据,送给第二写请求与写数据选择模块。VCi读写地址管理模块接收从地址缓冲区读出的地址,将VCi的读地址更新为该地址。
第一写请求与写地址选择模块与VC1到VCN读写地址管理模块、数据缓冲区和地址缓冲区相连,串行接收VCi读写地址管理模块发出的VCi第一写请求与写地址,选择有效的写请求及其写地址分别生成第一写请求和第一写地址,发送给第三数据缓冲区和地址缓冲区。
第一读请求与读地址选择模块与VC0到VCN-1读写地址管理模块、第三数据缓冲区和地址缓冲区相连,串行接收VCi读写地址管理模块发出的VCi第一读请求与读地址,选择有效的读请求及其读地址分别生成第一读请求和第一读地址,发送给第三数据缓冲区和地址缓冲区。
第三数据缓冲区是具有独立的读写端口的双端口静态随机访问存储器SRAM,与数据输入端口、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二VC0到VCN-1顶部缓冲区相连,接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从数据输入端口接收控制码并将其写入到第一写地址指向的存储器空间;第三数据缓冲区接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据到第二VC0到VCN-1顶部缓冲区。
地址缓冲区是具有独立的读写端口的双端口SRAM或者寄存器组,与第一写请求与写地址选择模块、第一读请求与读地址选择模块、VC0到VCN-1读写地址管理模块、空闲地址缓冲区相连,接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从空闲地址缓冲区接收空闲地址并将其写入到第一写地址指向的存储器空间;接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据作为读出的地址,发送到VC0到VCN-1读写地址管理模块。
第二写请求与写数据选择模块与VC0到VCN-1读写地址管理模块、第二读写地址管理模块、空闲地址缓冲区相连,串行接收VCi读写地址管理模块发送的第二写请求与写数据,选择有效的写请求,生成第二写请求,发送到第二读写地址管理模块和空闲地址缓冲区,选择有效的写数据作为写入的空闲地址写入到空闲地址缓冲区。
第二读请求选择模块与VC0到VCN-1读写地址管理模块、第二读写地址管理模块、空闲地址缓冲区相连,串行接收VCi读写地址管理模块发送的第二读请求,选择有效的读请求作为第二读请求发送到第二读写地址管理模块和空闲地址缓冲区。
第二读写地址管理模块与第二写请求与写数据选择模块、第二读请求选择模块、空闲地址缓冲区相连,接收第二写请求与写数据选择模块发送的第二写请求,将第二写地址加一,发送到空闲地址缓冲区;第二读写地址管理模块接收第二读请求选择模块发送的第二读请求,将第二读地址加一,发送到空闲地址缓冲区。
空闲地址缓冲区是具有独立的读写端口的双端口SRAM或者寄存器组,与第二写请求与写数据选择模块、第二读请求选择模块、第二读写地址管理模块相连,接收第二写请求,将写入的空闲地址写到第二写地址指向的位置;空闲地址缓冲区接收第二读请求,从第二读地址指向的位置输出数据作为读出的空闲地址,发送到地址缓冲区和VC0到VCN-1读写地址管理模块。
第二VCiFIFO_TOP由寄存器组组成。第二VCiFIFO_TOP与数据输入端口、第三数据缓冲区、VCi读写地址管理模块、N选1多路选择器、读请求输入端口相连,如果第二VCiFIFO_TOP可以接收旁路数据,将数据输入端口的控制码直接旁路写入第二VCiFIFO_TOP。从读请求输入端口接收到VCi读请求输入,将数据从第二VCiFIFO_TOP读出输出给N选1多路选择器,然后,向VCi读写地址管理模块发出VCi读请求。第二VCiFIFO_TOP从第三数据缓冲区接收数据,缓存至第二VCiFIFO_TOP。第二VC0到VCN-1顶部缓冲区的深度根据共享缓冲区的读时序决定,如果第一拍给出读地址,第三拍输出数据,第二VC0到VCN-1顶部缓冲区的深度设置为3。目前带寄存的存储器读时序普遍为第一拍给出读地址、第三拍输出数据,因此,第二VC0到VCN-1顶部缓冲区深度设为3,其中的存储单元分别标识为FIFO_TOP0,FIFO_TOP1,FIFO_TOP2。每个存储单元有三种状态:(1)2’b00:表明该存储单元中没有有效数据,而且没有预约第一数据缓冲区中的数据;(2)2’01:表明该存储单元中没有有效数据,但是已经预约了第一数据缓冲区中的数据;(3)2’b11:存储单元中有有效数据;另外,2’b10为不存在的状态。
N选1多路选择器与第二VC0到VCN-1顶部缓冲区以及外部DAMQ_DATA相连,从第二VC0到VCN-1顶部缓冲区相连接收VC0到VCN-1读出数据,即控制码,然后选择其中一个数据通过数据输出端口输出给DAMQ_DATA。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
Claims (8)
1.一种互连芯片动态共享缓冲装置,其特征在于,包括:报文拆分模块、控制码组合模块、数据DAMQ和控制DAMQ,一个数据输入端口、一个读请求输入端口和一个数据输出端口;记控制DAMQ为DAMQ_CTRL,数据DAMQ为DAMQ_DATA;记互连芯片动态共享缓冲装置包含的虚信道VC数目为N,N为正整数;
报文拆分模块与数据输入端口、控制码组合模块、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_DATA相连,从控制码组合模块接收控制码,对N个VC的控制码动态共享存储,从读请求输入端口接收到读请求,根据控制码得到读缓冲地址,然后将读缓冲地址发送给DAMQ_DATA。
2.如权利要求1所述的互连芯片动态共享缓冲装置,其特征在于,DAMQ_CTRL由VC号识别模块、N个读写地址管理模块即VC0到VCN-1读写地址管理模块、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二写请求与写数据选择模块、第二读请求选择模块、第三数据缓冲区、地址缓冲区、空闲地址缓冲区、第二读写地址管理模块、N个第二VC顶部缓冲区即第二VC0到VCN-1FIFO_TOP、以及N选1多路选择器组成;DAMQ_CTRL包含有1个数据输入端口,一个读请求输入端口,和1个数据输出端口;
数据输入端口与VC号识别模块、第三数据缓冲区、N个第二VC顶部缓冲区即第二VC0到VCN-1FIFO-TOP相连,DAMQ_CTRL通过数据输入端口将从控制码组合模块接收的控制码输入到VC号识别模块,同时,如果第二VC0到VCN-1的顶部缓冲区可以接收旁路数据,将控制码直接旁路写入第二VC0到VCN-1的顶部缓冲区;否则,将控制码写入第三数据缓冲区;
VC号识别模块与数据输入端口、VC0到VCN-1读写地址管理模块相连,从数据输入端口输入的控制码中提取该控制码的VC号i,生成VCi写请求,发送到VCi读写地址管理模块,0≤i≤N-1,i为整数;
VCi读写地址管理模块与VC号识别模块、VCi顶部缓冲区即VCi FIFO_TOP、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二写请求与写数据选择模块、第二读请求选择模块、地址缓冲区和空闲地址缓冲区相连,从VC号识别模块接收VCi写请求,生成读空闲地址缓冲区的VCi第二读请求,发送到第二读请求选择模块;VCi读写地址管理模块接收从空闲地址缓冲区读出的空闲地址,将该地址保存为VCi写地址,生成VCi第一写请求,将VCi第一写请求与写地址发送到第一写请求与写地址选择模块;VCi读写地址管理模块从VCiFIFO_TOP接收对VCi的读请求,将VCi的读请求和读地址作为VCi第一读请求与读地址发送到第一读请求与读地址选择模块;生成VCi第二写请求,将VCi的读地址作为写数据,送给第二写请求与写数据选择模块;VCi读写地址管理模块接收从地址缓冲区读出的地址,将VCi的读地址更新为该地址;
第一写请求与写地址选择模块与VC1到VCN读写地址管理模块、数据缓冲区和地址缓冲区相连,串行接收VCi读写地址管理模块发出的VCi第一写请求与写地址,选择有效的写请求及其写地址分别生成第一写请求和第一写地址,发送给第三数据缓冲区和地址缓冲区;
第一读请求与读地址选择模块与VC0到VCN-1读写地址管理模块、第三数据缓冲区和地址缓冲区相连,串行接收VCi读写地址管理模块发出的VCi第一读请求与读地址,选择有效的读请求及其读地址分别生成第一读请求和第一读地址,发送给第三数据缓冲区和地址缓冲区;
第三数据缓冲区是具有独立的读写端口的双端口静态随机访问存储器SRAM,与数据输入端口、第一写请求与写地址选择模块、第一读请求与读地址选择模块、第二VC0到VCN-1顶部缓冲区相连,接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从数据输入端口接收控制码并将其写入到第一写地址指向的存储器空间;第三数据缓冲区接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据到第二VC0到VCN-1顶部缓冲区;
地址缓冲区是具有独立的读写端口的双端口SRAM或者寄存器组,与第一写请求与写地址选择模块、第一读请求与读地址选择模块、VC0到VCN-1读写地址管理模块、空闲地址缓冲区相连,接收第一写请求与写地址选择模块发送的第一写请求和第一写地址,从空闲地址缓冲区接收空闲地址并将其写入到第一写地址指向的存储器空间;接收第一读请求与读地址选择模块发送的第一读请求和第一读地址,从第一读地址指向的存储器空间输出数据作为读出的地址,发送到VC0到VCN-1读写地址管理模块;
第二写请求与写数据选择模块与VC0到VCN-1读写地址管理模块、第二读写地址管理模块、空闲地址缓冲区相连,串行接收VCi读写地址管理模块发送的第二写请求与写数据,选择有效的写请求,生成第二写请求,发送到第二读写地址管理模块和空闲地址缓冲区,选择有效的写数据作为写入的空闲地址写入到空闲地址缓冲区;
第二读请求选择模块与VC0到VCN-1读写地址管理模块、第二读写地址管理模块、空闲地址缓冲区相连,串行接收VCi读写地址管理模块发送的第二读请求,选择有效的读请求作为第二读请求发送到第二读写地址管理模块和空闲地址缓冲区;
第二读写地址管理模块与第二写请求与写数据选择模块、第二读请求选择模块、空闲地址缓冲区相连,接收第二写请求与写数据选择模块发送的第二写请求,将第二写地址加一,发送到空闲地址缓冲区;第二读写地址管理模块接收第二读请求选择模块发送的第二读请求,将第二读地址加一,发送到空闲地址缓冲区;
空闲地址缓冲区是具有独立的读写端口的双端口SRAM或者寄存器组,与第二写请求与写数据选择模块、第二读请求选择模块、第二读写地址管理模块相连,接收第二写请求,将写入的空闲地址写到第二写地址指向的位置;空闲地址缓冲区接收第二读请求,从第二读地址指向的位置输出数据作为读出的空闲地址,发送到地址缓冲区和VC0到VCN-1读写地址管理模块;
第二VCi FIFO_TOP由寄存器组组成;第二VCi FIFO_TOP与数据输入端口、第三数据缓冲区、VCi读写地址管理模块、N选1多路选择器、读请求输入端口相连,如果第二VCi FIFO_TOP可以接收旁路数据,将数据输入端口的控制码直接旁路写入第二VCiFIFO_TOP;从读请求输入端口接收到VCi读请求输入,将数据从第二VCiFIFO_TOP读出输出给N选1多路选择器,然后,向VCi读写地址管理模块发出VCi读请求;第二VCiFIFO_TOP从第三数据缓冲区接收数据,缓存至第二VCiFIFO_TOP;
N选1多路选择器与第二VC0到VCN-1顶部缓冲区以及外部DAMQ_DATA相连,从第二VC0到VCN-1顶部缓冲区相连接收VC0到VCN-1读出数据,然后选择其中一个数据通过数据输出端口输出给DAMQ_DATA。
3.如权利要求1所述的互连芯片动态共享缓冲装置,其特征在于,DAMQ_DATA包含第二数据缓冲区、第二空闲地址缓冲区和空闲地址管理器;
第二数据缓冲区用于存储报文数据;第二数据缓冲区与空闲地址管理器、报文拆分模块、报文组合模块相连,第二数据缓冲区从报文拆分模块接收到报文数据,将第二空闲地址缓冲区的头指针Head转换成写缓冲地址wt_addr,作为报文数据在第二数据缓冲区中的存放地址,将报文数据缓存至第二数据缓冲区中wt_addr指向的地址,然后将wt_addr发送到报文组合模块,并将Head更新为报文数据指向的地址缓冲区保存的数据;
空闲地址管理器与第二空闲地址缓冲区和第二数据缓冲区相连;空闲地址管理器通过头尾指针及第二空闲地址缓冲区把第二数据缓冲区中的空闲地址串成链表;当外部模块向第二数据缓冲区写数据时,空闲地址管理器将第二空闲地址缓冲区的头指针Head提供给第二数据缓冲区,作为第二数据缓冲区存储报文数据的地址;当从第二数据缓冲区读出一个数据时,该数据在第二数据缓冲区中的地址被返还空闲地址链;
第二空闲地址缓冲区与空闲地址管理器相连;第二空闲地址缓冲区将第二数据缓冲区的空闲地址通过地址链表构成虚拟队列。
4.如权利要求2所述的互连芯片动态共享缓冲装置,其特征在于,第二VC0到VCN-1顶部缓冲区的深度根据共享缓冲区的读时序决定,第二VC0到VCN-1顶部缓冲区深度设为3,其中的存储单元分别标识为FIFO_TOP0,FIFO_TOP1,FIFO_TOP2;每个存储单元有三种状态:(1)2’b00:表明该存储单元中没有有效数据,而且没有预约第三数据缓冲区中的数据;(2)2’01:表明该存储单元中没有有效数据,但是已经预约了第三数据缓冲区中的数据;(3)2’b11:存储单元中有有效数据。
5.如权利要求3所述的互连芯片动态共享缓冲装置,其特征在于,空闲地址管理器将读地址rd_addr返还给空闲地址链,返还方法如下:将第二数据缓冲区的读地址rd_addr转换成地址缓冲区地址addr_buf_addr,将addr_buf_addr写入空闲地址链尾指针Tail所指向的地址缓冲区位置,然后将Tail更新为addr_buf_addr。
6.如权利要求3所述的互连芯片动态共享缓冲装置,其特征在于,DAMQ_DATA中第二数据缓冲区的深度由上一级发送端与缓冲区之间的链路传输延迟和链路带宽共同决定。
7.如权利要求3所述的互连芯片动态共享缓冲装置,其特征在于,第二空闲地址缓冲区采用寄存器阵列实现,其深度与第二数据缓冲区深度相同,宽度与第二数据缓冲区地址宽度相同,空闲地址通过地址链表构成虚拟队列。
8.如权利要求1~7中任意一项所述的互连芯片动态共享缓冲装置,其特征在于,报文控制信息长度为两位,分别为报文的头/尾标志位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910520343.3A CN110247970B (zh) | 2019-06-17 | 2019-06-17 | 一种互连芯片动态共享缓冲装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910520343.3A CN110247970B (zh) | 2019-06-17 | 2019-06-17 | 一种互连芯片动态共享缓冲装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110247970A CN110247970A (zh) | 2019-09-17 |
CN110247970B true CN110247970B (zh) | 2021-12-24 |
Family
ID=67887300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910520343.3A Active CN110247970B (zh) | 2019-06-17 | 2019-06-17 | 一种互连芯片动态共享缓冲装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110247970B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111259457A (zh) * | 2020-01-16 | 2020-06-09 | 源源通科技(青岛)有限公司 | 一种用于分享芯片数据的方法和装置 |
CN111597141B (zh) * | 2020-05-13 | 2022-02-08 | 中国人民解放军国防科技大学 | 一种面向超高阶互连芯片的分级交换结构及死锁避免方法 |
CN111641622B (zh) * | 2020-05-21 | 2022-01-07 | 中国人民解放军国防科技大学 | 一种融合网络接口卡、报文编码方法及其报文传输方法 |
CN111611180B (zh) * | 2020-06-29 | 2023-06-13 | 中国人民解放军国防科技大学 | 一种支持多协议的动态共享缓冲区 |
CN116868555A (zh) * | 2021-02-20 | 2023-10-10 | 华为技术有限公司 | 一种交换系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103220230A (zh) * | 2013-05-14 | 2013-07-24 | 中国人民解放军国防科学技术大学 | 支持报文交叉存储的动态共享缓冲方法 |
CN108111438A (zh) * | 2018-01-23 | 2018-06-01 | 中国人民解放军国防科技大学 | 一种高阶路由器行缓冲优化结构 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10944694B2 (en) * | 2016-12-06 | 2021-03-09 | Hewlett Packard Enterprise Development Lp | Predictive arbitration circuit |
-
2019
- 2019-06-17 CN CN201910520343.3A patent/CN110247970B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103220230A (zh) * | 2013-05-14 | 2013-07-24 | 中国人民解放军国防科学技术大学 | 支持报文交叉存储的动态共享缓冲方法 |
CN108111438A (zh) * | 2018-01-23 | 2018-06-01 | 中国人民解放军国防科技大学 | 一种高阶路由器行缓冲优化结构 |
Non-Patent Citations (2)
Title |
---|
A DAMQ shared buffer scheme for network-on-chip;Jin Liu 等;《Proceedings of the Fifth IASTED International Conference CIRCUITS, SIGNALS AND SYSTEMS》;20070704;第53-58页 * |
A Multi-VC Dynamically Shared Buffer with Prefetch for Network on Chip;Heying Zhang 等;《2012 IEEE Seventh International Conference on Networking, Architecture, and Storage》;20121231;第320-327页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110247970A (zh) | 2019-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110247970B (zh) | 一种互连芯片动态共享缓冲装置 | |
EP1192753B1 (en) | Method and apparatus for shared buffer packet switching | |
JP3241045B2 (ja) | マルチポート共有メモリインタフェースおよび関連の方法 | |
CN111611180B (zh) | 一种支持多协议的动态共享缓冲区 | |
US6795886B1 (en) | Interconnect switch method and apparatus | |
EP0492025B1 (en) | High-speed multi-port FIFO buffer circuit | |
US7506081B2 (en) | System and method of maintaining high bandwidth requirement of a data pipe from low bandwidth memories | |
US6138219A (en) | Method of and operating architectural enhancement for multi-port internally cached dynamic random access memory (AMPIC DRAM) systems, eliminating external control paths and random memory addressing, while providing zero bus contention for DRAM access | |
CN113986792B (zh) | 一种数据位宽转换方法及通信设备 | |
CN104407992B (zh) | 一种基于双端口寄存器阵列的四端口存储器 | |
CN110705195A (zh) | 一种基于fpga的跨时钟域深度自行配置fifo系统 | |
US6470021B1 (en) | Computer network switch with parallel access shared memory architecture | |
EP1508225B1 (en) | Method for data storage in external and on-chip memory in a packet switch | |
US6957309B1 (en) | Method and apparatus for re-accessing a FIFO location | |
JPH10285173A (ja) | Atmセル処理装置 | |
US8923315B2 (en) | Packet router having a hierarchical buffer structure | |
US6314489B1 (en) | Methods and systems for storing cell data using a bank of cell buffers | |
KR101560015B1 (ko) | 메모리 영역으로의 복수의 프로세서의 액세스를 제어하는 방법 및 상기 방법을 구현하기 위한 메시지 메모리를 구비한 통신 모듈 | |
CN111831209B (zh) | 数据存取装置及系统 | |
US6885591B2 (en) | Packet buffer circuit and method | |
US6671274B1 (en) | Link list operable to increase memory bandwidth in a transmission system | |
CN111585918B (zh) | 一种应用于存储转发机制交换机的存储转发装置和方法 | |
US20040215869A1 (en) | Method and system for scaling memory bandwidth in a data network | |
CN115473862B (zh) | 避免交换芯片组播包队头阻塞的方法及系统 | |
KR100335692B1 (ko) | 선입선출을 이용한 비동기 전송 모드 셀의 다중화 방법 |
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 |