CN110806986B - 提高网络芯片报文存储效率的方法、设备及存储介质 - Google Patents
提高网络芯片报文存储效率的方法、设备及存储介质 Download PDFInfo
- Publication number
- CN110806986B CN110806986B CN201911064428.1A CN201911064428A CN110806986B CN 110806986 B CN110806986 B CN 110806986B CN 201911064428 A CN201911064428 A CN 201911064428A CN 110806986 B CN110806986 B CN 110806986B
- Authority
- CN
- China
- Prior art keywords
- address
- data
- ram
- memory
- linked list
- 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 62
- 230000015654 memory Effects 0.000 claims abstract description 176
- 238000005215 recombination Methods 0.000 claims abstract description 4
- 230000006798 recombination Effects 0.000 claims abstract description 4
- 238000004590 computer program Methods 0.000 claims description 11
- 238000011084 recovery Methods 0.000 claims description 5
- 238000013480 data collection Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 2
- 206010011906 Death Diseases 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种提高网络芯片报文存储效率的方法、设备及存储介质,所述方法包括:配置数据存储器,将其切分为N块小的RAM,并采用链表的方式对每块RAM进行管理;当任一输入接口接收到写数据请求,解析并获取输入接口对应的通道编号,根据通道编号访问通道写状态存储器获取通道写状态信息,若根据通道写状态信息确认至少一个RAM为空,则将数据写入数据存储器,并在数据写入后更新通道写状态存储器、链表控制存储器、链表信息存储器和地址控制存储器;当任一通道接收到读出调度请求时,根据链表存储器的存储信息重组数据进行读出,并更新通道写状态存储器、链表控制存储器、链表信息存储器和地址控制存储器;本发明提高数据存储器的存储效率。
Description
技术领域
本发明属于通信技术领域,主要涉及一种提高网络芯片报文存储效率的方法、设备及存储介质。
背景技术
在高密度网络芯片中,来自多通道的数据汇聚到数据收集模块并调度至芯片内部进行处理。通常,数据收集模块的输入有X个数据通道,位宽为W;数据收集模块将这些数据缓存在存储器中,并使用位宽为N*W的接口将数据发送给芯片内部处理模块;如图1所示,MAC接收报文,并将其通过宽度为W 的接口发送给数据收集模块,可以看出,一个长度为L的报文,将被分为N_in组数据;其中,N_in=int(L/W),int()为向上取整;经过数据收集模块缓存后,汇聚成N_out组位宽为N*W的数据发送给芯片内部处理模块,其中,N_out=int(L/(N*W));当报文发送到最后一组数据时,将产生一个“结束符”信号给数据收集模块,以指示当前数据为报文的最后一组数据。
在实际的网络部署中,可能会出现短时间数据收集模块输出带宽小于输入带宽的现象,称之为网络芯片超带宽;在网络芯片超带宽时,数据接收模块内部的存储器入口流量大于出口流量,引起存储器被占满,进而导致新的数据因为没有存储空间而被丢弃,因此,存储器深度P和其存储效率,直接影响了数据收集模块处理突发流量的能力。
存储器使用N块深度为P宽度为W的RAM实现,写数据时,先获取写地址Y(0<=Y<=P-1),并根据当前数据相对报文长度的偏移量将数据依次写进 RAM0到RAMN-1中。例如:报文的第一组数据写进RAM0的地址Y,报文的第二组数据写进RAM1的地址Y,以此类推;当该地址写满N个RAM或者数据收到结束符时,将发起调度请求,并按照一定的调度策略将N块RAM的数据同时读出,发送给芯片内部处理模块,后续新的数据将重新获取地址,从RAM0开始写入。
然而,当接收的数据较短或者报文长度刚好不够(N*W)整除时,例如刚写完RAM0就收到了“结束符”,此时该地址对应的RAM1到RAMN-1的物理空间将不能再写入其他数据,因为读端是将N块RAM的数据同时读出,如果再写了其他数据会导致错乱;可以看出,此时存储器的使用效率较低,特别的,当报文长度为W时,数据存储器的存储效率只有1/N。
发明内容
为解决上述技术问题,本发明的目的在于提供一种提高网络芯片报文存储效率的方法、网络芯片及可读存储介质。
为了实现上述发明目的之一,本发明一实施方式提供一种提高网络芯片报文存储效率的方法,所述方法包括:配置数据存储器,将数据存储器切分为N 块小的RAM,并采用链表的方式对每块RAM进行管理,其中每一块RAM按其排列顺序编号依次为0、1、2……N-1;
当任一输入接口接收到写数据请求,解析并获取输入接口对应的通道编号,根据所述通道编号访问通道写状态存储器获取通道写状态信息,若根据通道写状态信息确认至少一个RAM为空,则将数据写入数据存储器,并在数据写入后更新通道写状态存储器、链表控制存储器、链表信息存储器和地址控制存储器;
当任一通道接收到读出调度请求时,根据链表存储器的存储信息重组数据进行读出,并更新通道写状态存储器、链表控制存储器、链表信息存储器和地址控制存储器;
其中,所述通道写状态存储器存储通道写状态信息,所述通道写状态信息包括:数据偏移计数器的值、RAM地址偏移计数器的值、RAM地址和链表地址;所述链表控制存储器包括:头指针存储器、尾指针存储器、链表存储器以及链表状态存储器;所述链表信息存储器用于存储链表信息,其包括:任一数据写入数据存储器时使用的RAM地址和RAM地址偏移计数器的值;所述数据偏移计数器用于指示当前写入数据的偏移量;所述RAM地址偏移计数器用于指示当前写入数据的具体存储RAM的编号;所述RAM地址用于指示当前写入数据RAM的具体地址;链表地址用于记录链表的地址。
作为本发明一实施方式的进一步改进,所述方法还包括:在数据写入过程中,若通道对应的链表状态存储器为空,则使用通道编号作为地址,数据的链表地址作为值,分别写进头指针存储器和尾指针存储器中,同时,将链表状态存储器改为不空;
若通道对应的链表状态存储器不为空,则将数据的链表地址作为值,尾指针作为地址,写进链表存储器中,完成链接操作;同时,使用通道编号作为地址,数据的链表地址作为值,写进尾指针存储器中,完成尾指针更新操作;
在数据读出过程中,根据通道编号访问头指针存储器和尾指针存储器,判断头指针是否等于尾指针,若是,将对应通道的链表状态存储器置为空;否否,根据头指针访问链表存储器得到下一跳指针,将下一跳指针作为值,通道编号作为地址写进头指针存储器中。
作为本发明一实施方式的进一步改进,当任一输入接口接收到写数据请求时,所述方法具体包括:
若获取的RAM地址偏移计数器的值为0,判断是否可以获取到新的写入地址,若是,使用新的写入地址更新RAM地址,并将数据写入新的写入地址中,所述新的写入地址为编号为0的RAM中的其中一个具体地址,同时,将RAM 地址偏移计数器的值+1;若否,丢弃当前数据;
若获取的RAM地址偏移计数器的值不为0,则获取通道写状态存储器存储的RAM地址和RAM地址偏移计数器,并向其指向地址中写入当前数据;同时,若RAM地址偏移计数器的值未指向最后一个RAM,则将RAM地址偏移计数器的值+1,若RAM地址偏移计数器的值指向最后一个RAM,则将RAM地址偏移计数器的值置为0。
作为本发明一实施方式的进一步改进,当任一输入接口接收到写数据请求时,所述方法具体包括:
若获取的数据偏移计数器的值为0,则根据RAM地址和RAM地址偏移计数器的值更新链表地址,链表地址=RAM地址*N+RAM地址偏移计数器的值;同时,当写入数据携带结束符时,将数据偏移计数器置为0;当写入数据未携带结束符时,将数据偏移计数器的值+1;
若获取的数据偏移计数器的值不为0,且当写入数据携带结束符和/或数据偏移计数器的值指向最后一个RAM时,将数据偏移计数器置为0;当写入数据未携带结束且数据偏移计数器的值未指向最后一个RAM时,将数据偏移计数器的值+1。
作为本发明一实施方式的进一步改进,将数据偏移计数器置为0的同时,所述方法还包括:
使用新的链表地址和通道编号更新对应的通道写状态存储器;
将当前数据写入数据存储器时对应的RAM地址和RAM地址偏移计数器的值更新到链表信息存储器;
以及生成读出调度请求。
作为本发明一实施方式的进一步改进,当任一通道接收到读出调度请求时,所述方法具体包括:
对应某一通道接收到读出调度请求时,访问并查询链表控制存储器获取头指针,以头指针为关键字读取链表信息存储器获取链表信息,所述链表信息包括:首地址、首偏移、尾地址以及尾偏移;
首地址表示当前读出数据的第一分组的读地址;首地址=int(头指针/N);首偏移表示当前读出数据的第一分组写入RAM的编号,首偏移=头指针%N;尾地址表示当前读出数据的最后一个分组的读地址;其值为对应链表信息中的 RAM地址;尾偏移表示当前读出数据的最后一个分组写入RAM的编号,其值为对应链表信息中的RAM地址偏移计数器的值;
若首地址等于尾地址,则使用首地址读出首偏移至尾偏移之间的所有数据;
若首地址不等于尾地址,则使用首地址读出首偏移至最后一个RAM之间的所有数据,以及使用尾地址读出第一个RAM至尾偏移之间的所有数据;
按照写入顺序重组读出的数据进行输出。
作为本发明一实施方式的进一步改进,所述方法还包括:若重组后的读取数据不满N*W,则在其低位补0后再输出。
作为本发明一实施方式的进一步改进,当任一通道接收到读出调度请求,并在数据读出后,所述方法还包括:
若首地址等于尾地址且尾偏移指向最后一个RAM,或首地址不等于尾地址,则释放首地址进行地址回收;
当尾偏移未指向最后一个RAM时,通过读操作的通道编号读取通道写状态存储器,若当前读取的尾地址等于通道写状态存储器中的RAM地址,且通道写状态存储器中的RAM地址偏移计数器的值=尾偏移+1,则释放尾地址进行地址回收,同时,将通道写状态存储器中的RAM地址偏移计数器置为0。
为了实现上述发明目的之一,本发明一实施方式提供一种电子设备,包括存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述提高网络芯片报文存储效率的方法中的步骤。
为了实现上述发明目的之一,本发明一实施方式提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述提高网络芯片报文存储效率的方法中的步骤。
与现有技术相比,本发明的有益效果是:本发明的提高网络芯片报文存储效率的方法、设备及存储介质,通过全新的读写控制逻辑,将数据存储器切分为N块小的RAM,并使用链表的方式精确对每块RAM进行管理,充分利用数据存储器物理空间,大幅提高存数据储器的存储效率。
附图说明
图1是本发明一实施方式提供的提高网络芯片报文存储效率的方法的流程示意图;
图2是本发明一具体示例的网络芯片读写控制原理示意图。
具体实施方式
以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
结合图1、图2所示,本发明一实施方式提供的提高网络芯片报文存储效率的方法,所述方法包括:
配置数据存储器,将数据存储器切分为N块小的RAM,并采用链表的方式对每块RAM进行管理,其中每一块RAM按其排列顺序编号依次为0、1、 2……N-1;
当任一输入接口接收到写数据请求,解析并获取输入接口对应的通道编号,根据所述通道编号访问通道写状态存储器获取通道写状态信息,若根据通道写状态信息确认至少一个RAM为空,则将数据写入数据存储器,并在数据写入后更新通道写状态存储器、链表控制存储器、链表信息存储器和地址控制存储器;
当任一通道接收到读出调度请求时,根据链表存储器的存储信息重组数据进行读出,并更新通道写状态存储器、链表控制存储器、链表信息存储器和地址控制存储器;
具体如图2所示,数据存储器10用来缓存输入接口发送进来的报文数据,其由N块深度为P,宽度为W的物理RAM组成;存储器写控制模块20决定数据如何写入及存储,存储器读控制模块30决定如何读取数据以及如何维护地址;地址控制存储器40,用于存储数据存储器10的写地址;链表控制存储器 50用于控制常规的链表入队及出队操作,其包括:头指针存储器、尾指针存储器、链表存储器以及链表状态存储器等,当然,在本发明的其他实施方式中,所述链表控制存储器50还包括其他存储器,由于在本发明中仅涉及到上述列举的存储器,故对其他存储器未做进一步的说明。
通道写状态存储器60包括:数据偏移计数器、RAM地址偏移计数器、RAM 地址和链表地址;所述链表信息存储器70用于存储链表信息,链表信息包括:任一数据写入数据存储器10时使用的RAM地址和RAM地址偏移计数器的值。所述数据偏移计数器用于指示当前写入数据的偏移量;例如:某一写入数据包括三组,每一组依次占用编号为0、1、2的RAM的存储空间,则对于该写入数据,其第一组数据对应的数据偏移计数器的值指向编号为0的RAM,第二组数据对应的数据偏移计数器的值指向编号为1的RAM,第三组数据对应的数据偏移计数器的值指向编号为2的RAM;具体地,当将数据写进RAM时,如果当前的数据偏移计数器未指向最后一个RAM,即其值不等于N-1,则数据偏移计数器+1,否则数据偏移计数器置为0。所述RAM地址偏移计数器用于指示当前写入数据的具体存储RAM的编号,即表示数据写入RAM0到RAMN-1中的哪一块,当数据写进RAM时,如果当前的RAM地址偏移计数器未指向最后一个RAM,即其值不等于N-1,则RAM地址偏移计数器+1,否则RAM地址偏移计数器置为0。所述RAM地址用于指示当前写入数据RAM的具体地址;RAM 地址的范围为0到P-1;链表地址用于记录链表的地址。
需要说明的是,芯片在初始化时,写状态存储器需要全部配置为0。
本发明具体实现过程中,所述方法具体包括:在数据写入过程中,若通道对应的链表状态存储器为空,则使用通道编号作为地址,数据的链表地址作为值,分别写进头指针存储器和尾指针存储器中,同时,将链表状态存储器改为不空;
若通道对应的链表状态存储器不为空,则将数据的链表地址作为值,尾指针作为地址,写进链表存储器中,完成链接操作;同时,使用通道编号作为地址,数据的链表地址作为值,写进尾指针存储器中,完成尾指针更新操作;
在数据读出过程中,根据通道编号访问头指针存储器和尾指针存储器,判断头指针是否等于尾指针,若是,将对应通道的链表状态存储器置为空;否否,根据头指针访问链表存储器得到下一跳指针,将下一跳指针作为值,通道编号作为地址写进头指针存储器中。
本发明具体实施方式中,当任一输入接口接收到写数据请求时,根据RAM 地址偏移计数器的值进行数据更新,相应的,所述方法具体包括:若获取的RAM 地址偏移计数器的值为0,判断是否可以获取到新的写入地址,若是,使用新的写入地址更新RAM地址,并将数据写入新的写入地址中,所述新的写入地址为编号为0的RAM的其中一个具体地址,同时,将RAM地址偏移计数器的值+1;若否,丢弃当前数据;
若获取的RAM地址偏移计数器的值不为0,则获取通道写状态存储器60 存储的RAM地址和RAM地址偏移计数器,并向其指向地址中写入当前数据;同时,若RAM地址偏移计数器的值未指向最后一个RAM,则将RAM地址偏移计数器的值+1,若RAM地址偏移计数器的值指向最后一个RAM,则将RAM 地址偏移计数器的值置为0。
在该实施方式中,在确认RAM地址偏移计数器的值为0,且未能获取到新的写入地址时,表示数据存储器10的地址耗尽,此时,需要丢弃当前数据。
进一步的,当任一输入接口接收到写数据请求时,根据数据偏移计数器的值进行数据更新,相应的,所述方法具体包括:若获取的数据偏移计数器的值为0,则根据RAM地址和RAM地址偏移计数器的值更新链表地址,链表地址=RAM地址*N+RAM地址偏移计数器的值;同时,当写入数据携带结束符时,将数据偏移计数器置为0;当写入数据未携带结束符时,将数据偏移计数器的值+1;
若获取的数据偏移计数器的值不为0,且当写入数据携带结束符和/或数据偏移计数器的值指向最后一个RAM时,将数据偏移计数器置为0;当写入数据未携带结束且数据偏移计数器的值未指向最后一个RAM时,将数据偏移计数器的值+1。
进一步的,将数据偏移计数器置为0时,或者接收到结束符,或者表示已经收集满一组N*W的数据,此时所述方法还包括:使用新的链表地址和通道编号更新对应的通道写状态存储器60;更新链表信息,即将当前数据写入数据存储器10时对应的RAM地址和RAM地址偏移计数器的值更新到链表信息存储器70;以及生成读出调度请求。当任一通道接收到读出调度请求时,即存储器读控制模块30接收到调度请求后,会根据一定的策略,调度发出请求的通道中的数据,具体的,所述方法具体包括:
对应某一通道接收到读出调度请求时,访问并查询链表控制存储器50获取头指针,以头指针为关键字读取链表信息存储器70获取链表信息,所述链表信息包括:首地址、首偏移、尾地址以及尾偏移;
首地址表示当前读出数据的第一分组的读地址;首地址=int(头指针/N);int表示取整,首偏移表示当前读出数据的第一分组写入RAM的编号,即第一分组对应写在哪个RAM中,首偏移=头指针%N;%表示取余数,尾地址表示当前读出数据的最后一个分组的读地址;其值为对应链表信息中的RAM地址;尾偏移表示当前读出数据的最后一个分组写入RAM的编号,即最后一个分组对应写在哪个RAM中,其值为对应链表信息中的RAM地址偏移计数器的值;
若首地址等于尾地址,则使用首地址读出首偏移至尾偏移之间的所有数据;例如“首偏移”为1,“尾偏移”为3,则读取RAM1、RAM2、RAM3;若首地址不等于尾地址,则使用首地址读出首偏移至最后一个RAM之间的所有数据,以及使用尾地址读出第一个RAM至尾偏移之间的所有数据;
按照写入顺序重组读出的数据进行输出。
需要说明的是,为了保证数据的正确性,必须严格按照写的顺序将数据重新排列后再进行输出;具体的:如果首地址等于尾地址,则重组数据={RAM首偏移,..,RAM尾偏移},读地址为首地址。如果首地址不等于尾地址,则重组数据={RAM首偏移,..,RAMN-1,RAM0,..,RAM尾偏移},其中,RAM首偏移,..,RAMN-1的读地址为首地址,RAM0,..,RAM尾偏移的读地址为尾地址。
较佳的,所述方法还包括:若重组后的读取数据不满N*W,则在其低位补 0后再输出。
当任一通道接收到读出调度请求,并在数据读出后,需要对数据存储器10 地址进行回收,相应的,所述方法还包括:
若首地址等于尾地址且尾偏移等于指向最后一个RAM,或首地址不等于尾地址,说明首地址对应的RAM0到RAMN-1全被读取,此时,可以释放首地址进行地址回收;
当尾偏移未指向最后一个RAM时,通过读操作的通道编号读取通道写状态存储器60,若当前读取的尾地址等于通道写状态存储器60中的RAM地址,且通道写状态存储器60中的RAM地址偏移计数器的值=尾偏移+1,表示当前读的数据是该通道的最后一个数据;此时,可以释放尾地址进行地址回收,同时,将通道写状态存储器60中的RAM地址偏移计数器置为0。
本发明采用动态回收地址的方法,可以避免某些通道占据了某个写地址后,不再有数据写入导致该地址长时间被占用无法被回收的问题发生。
较佳的,本发明一实施方式提供一种电子设备,包括存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述提高网络芯片报文存储效率的方法中的步骤。
较佳的,本发明一实施方式提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述提高网络芯片报文存储效率的方法中的步骤。
通过上述方法,可以大幅提高数据存储器的使用效率。例如,当芯片接收的包长等于W时,采用传统的存储方法只能缓存P个报文,存储器使用效率为 1/N,而使用本发明的读写方法,可以缓存N*P个报文,数据存储器使用效率为100%;进一步的,在本发明的实现过程中,只要芯片接收的包长是W的整数倍,数据存储器的使用效率即可达到100%。
另外,需要说明的是,本发明中列举的输出数据位宽为输入数据位宽的N 倍,相对应的,存储器由N块RAM组成。这样设定是为了便于本发明的说明。熟悉本领域的开发人员很容易可以根据本发明揭示的方法,推导出输出/输入数据位宽倍数和数据存储器划分个数没有必然的相等关系。例如,输出位宽可以等于输入位宽,而数据存储器仍然可以划分为N(N为大于1整数)个小的RAM 来实现。此时数据存储器在报文长度较小时依然拥有很高的存储效率。
综上所述,本发明的提高网络芯片报文存储效率的方法、设备及存储介质,通过全新的读写控制逻辑,将数据存储器切分为N块小的RAM,并使用链表的方式精确对每块RAM进行管理,充分利用数据存储器物理空间,大幅提高存数据储器的存储效率。
以上所描述的系统实施方式仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件是逻辑模块,即可以位于芯片逻辑中的一个模块中,或者也可以分布到芯片内的多个数据处理模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请可用于众多通用或专用的通信芯片中。例如:交换芯片、路由器芯片,服务器芯片等等。
应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
Claims (10)
1.一种提高网络芯片报文存储效率的方法,其特征在于,所述方法包括:
配置数据存储器,将数据存储器切分为N块小的RAM,并采用链表的方式对每块RAM进行管理,其中每一块RAM按其排列顺序编号依次为0、1、2……N-1;
当任一输入接口接收到写数据请求,解析并获取输入接口对应的通道编号,根据所述通道编号访问通道写状态存储器获取通道写状态信息,若根据通道写状态信息确认至少一个RAM为空,则将数据写入数据存储器,并在数据写入后更新通道写状态存储器、链表控制存储器、链表信息存储器和地址控制存储器;
当任一通道接收到读出调度请求时,根据链表存储器的存储信息重组数据进行读出,并更新通道写状态存储器、链表控制存储器、链表信息存储器和地址控制存储器;
其中,所述通道写状态存储器存储通道写状态信息,所述通道写状态信息包括:数据偏移计数器的值、RAM地址偏移计数器的值、RAM地址和链表地址;所述链表控制存储器包括:头指针存储器、尾指针存储器、链表存储器以及链表状态存储器;所述链表信息存储器用于存储链表信息,其包括:任一数据写入数据存储器时使用的RAM地址和RAM地址偏移计数器的值;所述数据偏移计数器用于指示当前写入数据的偏移量,所述偏移量用于指示按位宽分割后的当前写入数据中,某段内容相对于其首段内容的数据偏移量;所述RAM地址偏移计数器用于指示当前写入数据的具体存储RAM的编号;所述RAM地址用于指示当前写入数据RAM的具体地址;链表地址=RAM地址*N+RAM地址偏移计数器的值。
2.根据权利要求1所述的提高网络芯片报文存储效率的方法,其特征在于,所述方法还包括:在数据写入过程中,若通道对应的链表状态存储器为空,则使用通道编号作为地址,使用数据的链表地址作为值,分别写进头指针存储器和尾指针存储器中,同时,将链表状态存储器改为不空;
若通道对应的链表状态存储器不为空,则将数据的链表地址作为值,将尾指针作为地址,写进链表存储器中,完成链接操作;同时,使用通道编号作为尾指针的地址,使用数据的链表地址作为尾指针的值,写进尾指针存储器中,完成尾指针更新操作;
在数据读出过程中,根据通道编号访问头指针存储器和尾指针存储器,判断头指针是否等于尾指针,若是,将对应通道的链表状态存储器置为空;若否,根据头指针访问链表存储器得到下一跳指针,将下一跳指针作为值,通道编号作为地址写进头指针存储器中。
3.根据权利要求1所述的提高网络芯片报文存储效率的方法,其特征在于,当任一输入接口接收到写数据请求时,所述方法具体包括:
若获取的RAM地址偏移计数器的值为0,判断是否可以获取到新的写入地址,若是,使用新的写入地址更新RAM地址,并将数据写入新的写入地址中,所述新的写入地址为编号为0的RAM中的其中一个具体地址,同时,将RAM地址偏移计数器的值+1;若否,丢弃当前数据;
若获取的RAM地址偏移计数器的值不为0,则获取通道写状态存储器存储的RAM地址和RAM地址偏移计数器,并向其指向地址中写入当前数据;同时,若RAM地址偏移计数器的值未指向最后一个RAM,则将RAM地址偏移计数器的值+1,若RAM地址偏移计数器的值指向最后一个RAM,则将RAM地址偏移计数器的值置为0。
4.根据权利要求1所述的提高网络芯片报文存储效率的方法,其特征在于,当任一输入接口接收到写数据请求时,所述方法具体包括:
若获取的数据偏移计数器的值为0,则根据RAM地址和RAM地址偏移计数器的值更新链表地址,链表地址=RAM地址*N+RAM地址偏移计数器的值;同时,当写入数据携带结束符时,将数据偏移计数器置为0;当写入数据未携带结束符时,将数据偏移计数器的值+1;
若获取的数据偏移计数器的值不为0,且当写入数据携带结束符和/或数据偏移计数器的值指向最后一个RAM时,将数据偏移计数器置为0;当写入数据未携带结束且数据偏移计数器的值未指向最后一个RAM时,将数据偏移计数器的值+1。
5.根据权利要求4所述的提高网络芯片报文存储效率的方法,其特征在于,将数据偏移计数器置为0的同时,所述方法还包括:
使用新的链表地址和通道编号更新对应的通道写状态存储器;
将当前数据写入数据存储器时对应的RAM地址和RAM地址偏移计数器的值更新到链表信息存储器;
以及生成读出调度请求。
6.根据权利要求1所述的提高网络芯片报文存储效率的方法,其特征在于,当任一通道接收到读出调度请求时,所述方法具体包括:
对应某一通道接收到读出调度请求时,访问并查询链表控制存储器获取头指针,以头指针为关键字读取链表信息存储器获取链表信息,所述链表信息包括:首地址、首偏移、尾地址以及尾偏移;
首地址表示当前读出数据的第一分组的读地址;首地址=int(头指针/N);首偏移表示当前读出数据的第一分组写入RAM的编号,首偏移=头指针%N;尾地址表示当前读出数据的最后一个分组的读地址;其值为对应链表信息中的RAM地址;尾偏移表示当前读出数据的最后一个分组写入RAM的编号,其值为对应链表信息中的RAM地址偏移计数器的值;
若首地址等于尾地址,则使用首地址读出首偏移至尾偏移之间的所有数据;
若首地址不等于尾地址,则使用首地址读出首偏移至最后一个RAM之间的所有数据,以及使用尾地址读出第一个RAM至尾偏移之间的所有数据;
按照写入顺序重组读出的数据进行输出。
7.根据权利要求6所述的提高网络芯片报文存储效率的方法,其特征在于,所述方法还包括:若重组后的读取数据不满N*W,则在其低位补0后再输出,所述W为所述每一块RAM的宽度。
8.根据权利要求6所述的提高网络芯片报文存储效率的方法,其特征在于,当任一通道接收到读出调度请求,并在数据读出后,所述方法还包括:
若首地址等于尾地址且尾偏移指向最后一个RAM,或首地址不等于尾地址,则释放首地址进行地址回收;
当尾偏移未指向最后一个RAM时,通过读操作的通道编号读取通道写状态存储器,若当前读取的尾地址等于通道写状态存储器中的RAM地址,且通道写状态存储器中的RAM地址偏移计数器的值=尾偏移+1,则释放尾地址进行地址回收,同时,将通道写状态存储器中的RAM地址偏移计数器置为0。
9.一种电子设备,包括存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-8任意一项所述提高网络芯片报文存储效率的方法中的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8任意一项所述提高网络芯片报文存储效率的方法中的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911064428.1A CN110806986B (zh) | 2019-11-04 | 2019-11-04 | 提高网络芯片报文存储效率的方法、设备及存储介质 |
PCT/CN2020/110163 WO2021088466A1 (zh) | 2019-11-04 | 2020-08-20 | 提高网络芯片报文存储效率的方法、设备及存储介质 |
US17/773,065 US20240143169A1 (en) | 2019-11-04 | 2020-08-20 | Method for Improving Message Storage Efficiency of Network Chip, Device, and Storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911064428.1A CN110806986B (zh) | 2019-11-04 | 2019-11-04 | 提高网络芯片报文存储效率的方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110806986A CN110806986A (zh) | 2020-02-18 |
CN110806986B true CN110806986B (zh) | 2022-02-15 |
Family
ID=69500985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911064428.1A Active CN110806986B (zh) | 2019-11-04 | 2019-11-04 | 提高网络芯片报文存储效率的方法、设备及存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240143169A1 (zh) |
CN (1) | CN110806986B (zh) |
WO (1) | WO2021088466A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110806986B (zh) * | 2019-11-04 | 2022-02-15 | 苏州盛科通信股份有限公司 | 提高网络芯片报文存储效率的方法、设备及存储介质 |
CN112600764B (zh) * | 2020-12-07 | 2022-04-15 | 苏州盛科通信股份有限公司 | 直通转发模式的调度方法、设备及存储介质 |
CN112463415B (zh) * | 2020-12-17 | 2024-02-06 | 苏州盛科通信股份有限公司 | 基于随机地址的多端口共享内存管理系统及方法 |
CN112822126B (zh) * | 2020-12-30 | 2022-08-26 | 苏州盛科通信股份有限公司 | 报文存储方法、报文出入队列方法及存储调度装置 |
CN113254364B (zh) * | 2021-05-24 | 2022-07-19 | 山东创恒科技发展有限公司 | 一种嵌入式系统用信息存储装置 |
CN113645140B (zh) * | 2021-07-06 | 2023-04-07 | 曙光信息产业(北京)有限公司 | 报文的统计方法、装置、存储介质及网络设备 |
CN113821457B (zh) * | 2021-10-11 | 2023-06-30 | 芯河半导体科技(无锡)有限公司 | 一种高性能读写链表缓存的装置及方法 |
CN113821191A (zh) * | 2021-10-13 | 2021-12-21 | 芯河半导体科技(无锡)有限公司 | 一种可配置fifo深度的装置及方法 |
CN115016742B (zh) * | 2022-08-08 | 2022-12-02 | 北谷电子有限公司 | 一种嵌入式设备的内存扩展方法 |
CN115168365B (zh) * | 2022-09-01 | 2022-12-02 | 浪潮通信信息系统有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN115499393B (zh) * | 2022-09-02 | 2024-05-07 | 深圳市楠菲微电子有限公司 | 一种基于网络接口芯片的tcp连接报文处理方法 |
CN115794443B (zh) * | 2023-01-29 | 2023-05-23 | 北京万里红科技有限公司 | 基于共享内存的多进程间通信的方法及装置 |
CN115952326B (zh) * | 2023-03-13 | 2023-05-09 | 北京云豹创芯智能科技有限公司 | 一种链表式数据结构及其数据处理方法、存储介质、电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1855881A (zh) * | 2005-04-28 | 2006-11-01 | 华为技术有限公司 | 动态共享存储器存储空间的实现方法 |
CN102455974A (zh) * | 2010-10-21 | 2012-05-16 | 上海宝信软件股份有限公司 | 一种内存消耗可控的高速内存申请释放管理系统及方法 |
CN106126435A (zh) * | 2016-06-28 | 2016-11-16 | 武汉日电光通信工业有限公司 | 一种实现链表流水操作的电路结构及操作方法 |
US10402315B1 (en) * | 2014-04-17 | 2019-09-03 | Bitmicro Networks, Inc. | Data storage system configured to write volatile scattered memory metadata to a non-volatile memory |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8059670B2 (en) * | 2007-08-01 | 2011-11-15 | Texas Instruments Incorporated | Hardware queue management with distributed linking information |
CN101551736B (zh) * | 2009-05-20 | 2010-11-03 | 杭州华三通信技术有限公司 | 基于地址指针链表的缓存管理装置和方法 |
SE536462C2 (sv) * | 2011-10-18 | 2013-11-26 | Mediatek Sweden Ab | Digital signalprocessor och basbandskommunikationsanordning |
CN105610814B (zh) * | 2015-12-25 | 2018-09-21 | 盛科网络(苏州)有限公司 | 降低报文转发延时的方法及系统 |
CN105743814A (zh) * | 2016-01-22 | 2016-07-06 | 盛科网络(苏州)有限公司 | 一种网络芯片内存管理方法 |
CN106603434B (zh) * | 2016-12-07 | 2019-08-02 | 盛科网络(苏州)有限公司 | 避免多通道数据传输过程中队头阻塞的系统及方法 |
CN109857342B (zh) * | 2019-01-16 | 2021-07-13 | 盛科网络(苏州)有限公司 | 一种数据读写方法及装置、交换芯片及存储介质 |
CN110806986B (zh) * | 2019-11-04 | 2022-02-15 | 苏州盛科通信股份有限公司 | 提高网络芯片报文存储效率的方法、设备及存储介质 |
-
2019
- 2019-11-04 CN CN201911064428.1A patent/CN110806986B/zh active Active
-
2020
- 2020-08-20 WO PCT/CN2020/110163 patent/WO2021088466A1/zh active Application Filing
- 2020-08-20 US US17/773,065 patent/US20240143169A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1855881A (zh) * | 2005-04-28 | 2006-11-01 | 华为技术有限公司 | 动态共享存储器存储空间的实现方法 |
CN102455974A (zh) * | 2010-10-21 | 2012-05-16 | 上海宝信软件股份有限公司 | 一种内存消耗可控的高速内存申请释放管理系统及方法 |
US10402315B1 (en) * | 2014-04-17 | 2019-09-03 | Bitmicro Networks, Inc. | Data storage system configured to write volatile scattered memory metadata to a non-volatile memory |
CN106126435A (zh) * | 2016-06-28 | 2016-11-16 | 武汉日电光通信工业有限公司 | 一种实现链表流水操作的电路结构及操作方法 |
Non-Patent Citations (1)
Title |
---|
IP 卫星网络接入网关中队列管理器的设计与实现;武东明 等;《通信技术》;20171031;全文 * |
Also Published As
Publication number | Publication date |
---|---|
US20240143169A1 (en) | 2024-05-02 |
WO2021088466A1 (zh) | 2021-05-14 |
CN110806986A (zh) | 2020-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110806986B (zh) | 提高网络芯片报文存储效率的方法、设备及存储介质 | |
US8499105B2 (en) | Buffer manager and buffer management method based on address pointer linked list | |
CN107220187B (zh) | 一种缓存管理方法、装置及现场可编程门阵列 | |
JP7074839B2 (ja) | パケット処理 | |
CN103731368B (zh) | 一种处理报文的方法和装置 | |
CN113535633A (zh) | 一种片上缓存装置和读写方法 | |
WO2011015055A1 (zh) | 一种存储管理的方法和系统 | |
CN108496161A (zh) | 数据缓存装置及控制方法、数据处理芯片、数据处理系统 | |
CN106899516A (zh) | 一种队列清空方法以及相关设备 | |
EP2219114A1 (en) | Method and apparatus for allocating storage addresses | |
CN107203330A (zh) | 一种面向读写数据流的闪存数据分布方法 | |
CN112822126B (zh) | 报文存储方法、报文出入队列方法及存储调度装置 | |
CN110058816A (zh) | 一种基于ddr的高速多用户队列管理器及方法 | |
CN106201778B (zh) | 信息处理方法及存储设备 | |
US7088731B2 (en) | Memory management for packet switching device | |
CN106375249B (zh) | 交换芯片的控制方法及控制系统 | |
CN101594201B (zh) | 链式队列管理结构整合错误数据过滤的方法 | |
CN109933303B (zh) | 一种多用户高速伪随机序列发生器电路及其工作方法 | |
CN112600764B (zh) | 直通转发模式的调度方法、设备及存储介质 | |
CN116955247B (zh) | 一种缓存描述符管理装置及其方法、介质、芯片 | |
CN106294191B (zh) | 处理表的方法、访问表的方法和装置 | |
CN112433839B (zh) | 实现网络芯片高速调度的方法、设备及存储介质 | |
CN100471175C (zh) | 一种报文存储转发的方法及报文存储转发电路 | |
CN110445730A (zh) | 基于WinPcap的网络数据实时采集存储方法和装置 | |
EP2341440A1 (en) | Memory block reclaiming judging apparatus and memory block managing system |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 215000 unit 13 / 16, 4th floor, building B, No.5 Xinghan street, Suzhou Industrial Park, Jiangsu Province Applicant after: Suzhou Shengke Communication Co.,Ltd. Address before: Xinghan Street Industrial Park of Suzhou city in Jiangsu province 215021 B No. 5 Building 4 floor 13/16 unit Applicant before: CENTEC NETWORKS (SU ZHOU) Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |