CN101605100A - 队列存储空间的管理方法和设备 - Google Patents

队列存储空间的管理方法和设备 Download PDF

Info

Publication number
CN101605100A
CN101605100A CNA2009101519876A CN200910151987A CN101605100A CN 101605100 A CN101605100 A CN 101605100A CN A2009101519876 A CNA2009101519876 A CN A2009101519876A CN 200910151987 A CN200910151987 A CN 200910151987A CN 101605100 A CN101605100 A CN 101605100A
Authority
CN
China
Prior art keywords
pointer
queue
sub
message
team
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.)
Granted
Application number
CNA2009101519876A
Other languages
English (en)
Other versions
CN101605100B (zh
Inventor
伊学文
程贵锋
陈武茂
范嘉旗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN2009101519876A priority Critical patent/CN101605100B/zh
Publication of CN101605100A publication Critical patent/CN101605100A/zh
Application granted granted Critical
Publication of CN101605100B publication Critical patent/CN101605100B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

本发明实施例涉及一种队列存储空间的管理方法和设备,该队列存储空间的管理方法包括:将队列空闲指针链表中的队列空闲指针设置为块指针,每个块指针包括第一数量个子指针;若报文需要加入指定队列,判断指定队列申请的块指针内的第一数量个子指针是否用完或判断指定队列的长度是否为空;如果指定队列申请的块指针内的第一数量个子指针已用完或指定队列的长度为空,从队列空闲指针链表中为指定队列申请一个队列空闲指针作为新的块指针,根据新的块指针将报文加入指定队列。本发明实施例采用块指针管理队列存储空间,降低访问队列空闲指针链表和队列链表的次数,减少管理RAM所需带宽,在RAM固定的情况下提高队列管理能力,成本低。

Description

队列存储空间的管理方法和设备
技术领域
本发明涉及通信技术领域,特别涉及一种队列存储空间的管理方法和设备。
背景技术
报文或报文信息的入队、出队管理是通信处理芯片中常见的功能。随着网络流量的飞速发展,对队列管理模块(Queue Manager;简称:QM)的要求也越来越高,从流量从10G比特每秒(Giga bit pet second;简称Gbps)、20Gbps到40Gbps,甚至100Gbps。通常情况下,队列管理包括入队、出队两个基本操作。报文入队时,根据报文包含的队列号可以将报文存储到对应的队列空间中,在报文从出口出队时,可以从队列空间读出入队的报文。
在一个具体队列中,报文是按照顺序存入、顺序读出的,存储报文的队列空间总是有限的。现有的一种分配管理队列空间方法是固定独享分配地址空间:为每一个队列预先分配一大段连续空间,所有属于同一个队列报文按到达的顺序依次使用这个队列的连续空间。一般是把已有的队列存储空间平均分配给每个队列,进行队列的存储访问时,可以根据队列号以及队列内的报文顺序号计算出访问的地址。固定独享分配地址空间方法的处理非常简单,队列在发完一个包之后,可以顺序递增的计算出下一个包的地址。但是,固定独享分配地址空间的方法中地址空间不能共享,即使某个队列一个包都没有,它的地址空间也不会给别的队列用,造成了地址空间的浪费;并且由于地址空间有限,当队列数非常多的时候,每个队列分配到的空间就非常小了,抗突发能力较弱。
另一种分配管理队列空间的方法是共享空间队列,共享空间队列空间管理方法更为通用,尤其是在队列数目比较多的情况下。在共享空间队列空间管理中,空间由所有队列共享,当某个报文到达时给该报文分配一个地址空间。由于属于不同队列的报文交错到达,因此一个队列下各个报文存放的地址空间通常无法保证连续,需要给每个队列做一个链表,把属于同一个队列的报文的地址空间链接起来。共享空间队列空间管理的方法的优点是空间充分共享,缺点是需要操作链表。在报文出队的时候,首先要读出队列头;然后根据队列头中的信息,读出下一个报文的地址;再将这个地址作为新的队列头指针。
共享空间队列空间管理是一种基于链表的队列管理,一般包括以下4个方面:(1)空闲指针链表,进行指针的分配、回收处理;(2)队列的链表状态信息表,包括:每个队列的长度、此链表的头指针、尾指针;(3)队列链表,每个队列维护一个链表,把所有报文入队时申请的队列指针按照顺序链接起来;(4)队列报文信息,通过链表的指针直接访问。其中报文入队操作具体为:申请一个空闲指针,更新队列链表状态信息表的尾指针以及队列长度(长度加1),更新队列链表,把当前尾指针指向刚申请的空闲指针(链表增加一个节点)。报文出队操作具体为:根据队列链表状态信息表的头指针去读队列链表,得到头指针的下一个指针,更新链表状态信息表的队列长度(长度减1),刷新链表头指针为下一个指针。
现有的基于链表的队列管理方法,是一个报文分配一个独立地址。由于地址数量非常多,需要用一个随机存储器(Random Access Memory;简称:RAM)来存放。队列每发送一个报文,都需要刷新这个队列的头指针,需要先从RAM中读出队列下一个报文的地址,然后在将这个报文的地址写到队列头指针。假如RAM的读延时比较大,则头指针的刷新要花很长时间。而在头指针刷新完成之前,这个队列不能发下一个报文。影响队列发报文的速度。由于共享空间队列空间管理涉及空闲指针的分配回收、队列链表的管理,一般需要用FPGA片外RAM来存放队列指针链表。以流量为40Gbps的队列管理为例,包处理速率为60百万包每秒(Million Packet Per Second;简称:Mpps)次,在FPGA的200Mpps工作时钟频率的情况下,空闲指针的分配、回收、队列的链表更新则需要200Mpps/60Mpps=3周期(cycle),即每3个周期需要完成一次指针的分配、回收处理操作,链表的更新也要求3个周期处理完成。但链表本身的特点需要根据当前指针去读RAM,获取RAM的内容后才能得到下一个RAM的读地址,读取延迟也较大。而如果处理80Gbps/100Gbps时,则对RAM的要求更高,已经达到目前RAM、现场可编程门阵列(Field-Programmable Gate Array;简称:FPGA)工作频率的设计能力极限。
发明人在实现本发明的过程中至少发现现有技术至少存在如下问题:
采用共享队列空间管理的方法,可以支持的队列管理能力较低,如果需要支持更高的队列管理能力,则需要提升FPGA工作频率,并选用时钟频率更高、读延时更小的片外存储器RAM,不仅增加了成本,而且加大了设计难度。
发明内容
本发明实施例提供一种队列存储空间的管理方法和设备,用以解决现有技术中存在的队列管理能力低以及提高队列管理能力所需成本高、设计难度大的问题。
本发明实施例提供一种队列存储空间的管理方法,包括:
将队列空闲指针链表中的队列空闲指针设置为块指针,每个所述块指针包括第一数量个子指针;
若报文需要加入指定队列,判断所述指定队列申请的块指针内的第一数量个子指针是否用完或判断所述指定队列的长度是否为空;
如果所述指定队列申请的块指针内的第一数量个子指针已用完或所述指定队列的长度为空,从队列空闲指针链表中为所述指定队列申请一个队列空闲指针作为新的块指针,根据所述新的块指针将所述报文加入所述指定队列。
本发明实施例又提供一种队列存储空间的管理设备,包括:
设置模块,用于将队列空闲指针链表中的队列空闲指针设置为块指针,每个所述块指针包括第一数量个子指针;
判断模块,用于在报文需要加入指定队列时,判断所述指定队列已申请的块指针内的固定数量的子指针是否用完或判断所述指定队列的长度是否为空;
第一入队模块,用于在所述指定队列申请的块指针内的固定数量的子指针已用完或所述指定队列的长度为空时,从队列空闲指针链表中为所述指定队列申请一个队列空闲指针作为新的块指针,根据所述新的块指针将所述报文加入所述指定队列;
存储模块,用于存储所述队列空闲指针链表。
本发明实施例提供的队列存储空间的管理方法和设备,采用块指针对队列存储空间进行管理,可以降低对队列空闲指针链表和队列链表的访问次数,减少管理RAM所需的带宽,可以在RAM固定的情况下大幅提高队列管理能力,成本低、开发简单灵活。
附图说明
图1为本发明队列存储空间的管理方法第一实施例的流程图;
图2为本发明队列存储空间的管理方法第二实施例的流程图;
图3为本发明队列存储空间的管理方法第三实施例的示意图;
图4为本发明队列存储空间的管理方法第三实施例中报文入队的初始状态图;
图5为本发明队列存储空间的管理方法第三实施例中1号实线报文加入指定队列Q0的状态图;
图6为本发明队列存储空间的管理方法第三实施例中2号实线报文加入指定队列Q0的状态图;
图7为本发明队列存储空间的管理方法第三实施例中1号虚线报文加入指定队列Q1的状态图;
图8为本发明队列存储空间的管理方法第三实施例中2号虚线报文加入指定队列Q1的状态图;
图9为本发明队列存储空间的管理方法第三实施例中16号虚线报文加入指定队列Q1的状态图;
图10为本发明队列存储空间的管理方法第三实施例中17号虚线报文加入指定队列Q1的状态图;
图11为本发明队列存储空间的管理方法第三实施例中16号实线报文加入指定队列Q0的状态图;
图12为本发明队列存储空间的管理方法第三实施例中17号实线报文加入指定队列Q0的状态图;
图13为本发明队列存储空间的管理设备第一实施例的结构示意图;
图14为本发明队列存储空间的管理设备第二实施例的结构示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
图1为本发明队列存储空间的管理方法第一实施例的流程图,如图1所示,该队列存储空间的管理方法包括以下步骤:
步骤101、将队列空闲指针链表中的队列空闲指针设置为块指针,每个所述块指针包括第一数量个子指针。
队列本身的入队/出队操作是按照先进先出的顺序进行处理的。队列存储空间的管理设备在为队列进行指针分配时,可以预先将队列空闲指针链表中的空闲指针设置为块指针,每个所述块指针包括第一数量个子指针。第一数量可以根据具体的队列管理需求(例如:队列管理实际需要的处理能力和RAM工作时钟频率等)设置。
步骤102、若报文需要加入指定队列,判断所述指定队列申请的块指针内的第一数量个子指针是否用完或判断所述指定队列的长度是否为空,如果所述指定队列申请的块指针内的第一数量个子指针已用完或所述指定队列的长度为空,执行步骤103。
报文入队时,可以判断该报文需要加入的指定队列是否已经申请了块指针,也就是可以判断指定队列是否为空,如果为空,则该指定队列没有申请过块指针,需要执行步骤103。如果指定队列不为空即则该指定队列申请过块指针,需要判断指定队列申请的块指针内的子指针是否已经用完,具体方法为:判断所述子指针是否指示达到所述第一数量,如果是则所述指定队列申请的所述块指针内的第一数量个子指针用完。
例如:一般来说,子指针可以从“0000”开始,也就是“0000”对应第一个子指针,如果第一数量为“16”,则子指针为“1111”对应第16个子指针,当子指针为“1111”时可以指示此次循环计数已达到第一数量“16”,也可以指示块指针内的第一数量个子指针用完。
步骤103、从队列空闲指针链表中为所述指定队列申请一个队列空闲指针作为新的块指针,根据所述新的块指针将所述报文加入所述指定队列。
如果指定队列申请的块指针内的子指针已经用完,需要从队列空闲指针链表中为需要加入指定队列的报文申请一个队列空闲指针作为新的块指针,根据所述新的块指针将所述报文加入所述指定队列。
步骤103具体可以包括:
步骤1031、从队列空闲指针链表中为所述指定队列申请一个队列空闲指针作为新的块指针。
步骤1032、将所述新的块指针作为实际访问地址的高位地址,并将所述新的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为入队顺序计数器的数值,所述入队顺序计数器的初始值为零。
报文入队时,实际访问地址由高位地址和低位地址两部分组成,高位地址为申请的新的块指针;低位地址为新的块指针的子指针,其中子指针具体为入队顺序计数器的数值,入队顺序计数器记录的是当前加入指定队列的报文的循环次序。例如:队列空闲指针“0010”为新的块指针,入队顺序计数器的数值初始的二进制地址“0000”为子指针,则实际访问地址为“00100000”。
步骤1033、将所述报文加入所述指定队列中所述实际访问地址后,将所述入队顺序计数器的数值加“1”,将所述指定队列的长度加“1”。
例如:第一数量为“16”,当第1个报文入队时,将该第1个报文加入指定队列中实际访问地址“00100000”,并将入队顺序计数器的数值加“1”为“0001”,将实际访问地址更新为“00100001”,并将指定队列的长度加“1”。同理,入队顺序计数器的数值为“1”到“15”时,可以将15个报文依次加入指定队列。
步骤1034、将所述指定队列的队列链表当前的尾指针更新为所述新的块指针,并将所述队列空闲指针链表的头指针更新为下一个可用的队列空闲指针。
如果在步骤102中当判断得出指定队列申请的块指针内的第一数量个子指针未用完时,可以执行步骤104,具体为:
步骤104、根据已有的块指针将所述报文加入所述指定队列。
指定队列不为空时,已申请的块指针内的子指针可能未用完,也可能已用完。如果指定队列申请的块指针内的子指针没有用完,则不用申请队列空闲指针,而是使用已有的块指针内的子指针将所述报文加入指定队列。
其中步骤104具体可以包括:
步骤1041、将所述已有的块指针作为实际访问地址的高位地址,并将所述指定队列对应的已有的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为入队顺序计数器的数值,所述入队顺序计数器的初始值为零。
步骤1042、将所述报文加入所述指定队列中所述实际访问地址后,将所述入队顺序计数器的数值加“1”,将所述指定队列的长度加“1”。
例如:第一数量为“16”,当第16个报文入队时,将该第16个报文加入指定队列中实际访问地址“00101111”,将指定队列的长度加“1”,并将将入队顺序计数器的数值加“1”得到“0000”,将实际访问地址更新为“00100000”,此时相当于将入队顺序计数器清零。如果第一数量为“4”,且入队顺序计数器的数值从“0000”开始,则在入队顺序计数器为“0011”时清零。
在第一数量个报文加入指定队列之后,如果还有其他的报文需要加入指定队列,则队列存储空间的管理设备可以执行步骤103,再为该指定队列申请一个队列空闲指针;然后将队列空闲指针作为实际访问地址的高位地址,将子指针对应的入队顺序计数器记录的数值作为实际访问地址的低位地址,继续将第一数量个报文加入指定队列。直到将需要加入指定队列的报文处理完毕后,该入队操作才结束。
本实施例采用块指针对队列存储空间进行管理,块指针内的子指针个数即第一数量可以根据队列管理能力的需求和RAM的能力具体设计,根据块指针内的子指针对第一数量个需要加入指定队列的报文进行入队操作,降低了对队列空闲指针链表和队列链表的访问次数,减少管理RAM所需的带宽,在RAM固定的情况下大幅提高队列管理能力,成本低、开发简单、应用灵活。
图2为本发明队列存储空间的管理方法第二实施例的流程图,如图2所示,在本发明队列存储空间的管理方法第一实施例的基础上,该队列存储空间的管理方法还可以包括出队的过程,具体为:
步骤201、若所述指定队列中有报文需要出队,判断指定队列中当前出队报文对应的块指针内的子指针是否用完或所述报文出队后该指定队列是否为空,如果是,则执行步骤202,否则,执行步骤203。
在报文出队时,队列存储空间的管理设备可以根据指定队列的链表状态信息表读取指定队列的队列链表,判断所述报文对应的块指针内的所有子指针是否用完或者判断所述报文出队后该指定队列是否为空,其中判断报文对应的块指针内的所有子指针是否用完的方法为:判断所述报文对应的块指针内的子指针是否指示达到所述第一数量,如果是则所述报文对应的所述块指针内的第一数量个子指针用完。
步骤202、将所述报文对应的块指针释放,并将释放出的块指针加入所述队列空闲指针链表。
当所述报文对应的块指针内的所有子指针用完时,步骤202具体可以包括:
步骤2021、根据所述指定队列的链表状态信息表读取所述指定队列的队列链表。
步骤2022、将所述队列链表的头指针作为实际访问地址的高位地址,并将所述报文对应的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为出队顺序计数器的数值,所述出队顺序计数器的初始值为零。
其中队列链表的头指针指向的地址可以作为实际访问地址的高位地址,报文对应的块指针的子指针可以作为实际访问地址的低位地址,从而得到实际访问地址。其中报文对应的块指针的子指针为出队顺序计数器的数值,出队顺序计数器的数值为当前从指定队列出队的报文的循环次序。例如:链表状态信息表的头指针指向的地址为“0001”,入队顺序计数器的数值初始的二进制地址为“0000”,则实际访问地址为“00010000”。或者例如:队列链表的头指针指向的地址为“0011”入队顺序计数器的数值初始的二进制地址为“0000”,则实际访问地址为“00110000”。
步骤2023、所述指定队列中所述实际访问地址中的报文出队后,将所述指定队列的长度减“1”,将所述实际访问地址中的报文对应的块指针释放,并将释放出的块指针加入所述队列空闲指针链表。
步骤2024、将所述指定队列的队列链表当前的头指针更新为所述队列链表的下一指针,将所述队列空闲指针链表的尾指针或头指针更新为释放出的块指针。
例如:第一数量为“16”,指定队列中实际访问地址“00011111”,第16个报文从实际访问地址“00011111”出队时,将出队顺序号加“1”得到“0000”,将实际访问地址更新为“00010000”,此时可以将出队顺序计数器清零。将得到的实际访问地址的高位地址“0001”释放为队列空闲指针。释放出队列空闲指针后,可以将指定队列的队列链表的头指针更新为队列链表的下一指针后,将队列空闲指针链表的尾指针更新为上述例子中释放得到的队列空闲指针,例如:“0001”。
步骤203、不释放所述报文对应的块指针。
当所述报文对应的块指针内的所有子指针未用完时,不释放所述报文对应的块指针具体包括:
步骤2031、根据所述指定队列的链表状态信息表读取所述指定队列的队列链表。
步骤2032、将所述队列链表的头指针作为实际访问地址的高位地址,并将所述报文对应的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为出队顺序计数器的数值,所述出队顺序计数器的初始值为零。
步骤2033、所述指定队列中所述实际访问地址中的报文出队后,将所述出队顺序计数器的数值加“1”,将所述指定队列的长度减“1”,不释放所述报文对应的块指针。
例如:第一数量为“16”,当第1个报文出队时,将该第1个报文从对应的实际访问地址“00010000”出队后,将出队顺序计数器的数值加“1”为“0001”,将实际访问地址更新为“00010001”。同理,出队顺序计数器的数值为“1”到“15”时,执行步骤202则连续15个报文可以依次从指定队列出队。
在第一数量个报文从指定队列出队之后,如果指定队列中还有其他的报文需要出队,则队列存储空间的管理设备根据读取队列链表的当前的头指针,然后执行步骤201,将队列链表当前的头指针为实际访问地址的高位地址,将报文对应的块指针的子指针即出队顺序计数器记录的数值作为实际访问地址低位地址,将第一数量个报文从指定队列出队。直到将需要从指定队列出队的报文处理完毕后,该出队操作才结束。
本实施例根据块指针内的子指针对指定队列中第一数量个报文进行连续的出队操作,子指针的第一数量可以根据队列管理能力的需求和RAM的能力具体设计,通过实施本发明,可以降低对队列空闲指针链表和队列链表的访问次数,减少管理RAM所需的带宽,在RAM固定的情况下大幅提高队列管理能力,成本低,开发简单,应用灵活。
图3为本发明队列存储空间的管理方法第三实施例的示意图,如图3所示,在本发明队列存储空间的管理方法第一、第二实施例的基础上,以指定队列为队列0时为例,该队列存储空间的管理方法具体为:将队列空闲指针链表中的队列空闲指针设置为块指针,每个块指针包括第一数量个子指针;在报文入队操作时,如果指定队列申请的块指针内的第一数量个子指针已用完或指定队列的长度为空,队列存储空间的管理设备从队列空闲指针链表31中为队列0申请一个队列空闲指针“0001”,将队列链表状态信息表32中的尾指针Tail_Ptr_0更新为“0001”,将队列0的长度(Length)加“1”,并更新队列链表33,将队列链表当前的尾指针指向刚申请的队列空闲指针“0001”,此时队列链表增加一个节点。假设第一数量为“16”,在队列的报文表34进行入队操作时,将入队顺序计数器counter_i记录当前报文入队的循环次序(从“0000”到“1111”)作为子指针,将申请的队列空闲指针指向的地址“0001”与当前报文入队的循环次序(从“0000”到“1111”)结合,可以得到16个可用的实际访问地址Ptr_i_addr:从“00010000”到“00011111”,其中实际访问地址的高位地址Ptr_i为队列空闲指针,实际访问地址的低位地址addr为入队顺序计数器counter_i记录的当前报文入队的循环次序。然后,根据这16个实际访问地址可以将16个需要加入指定的队列0报文依次加入队列0。此外,如果还有需要加入队列0的报文,则为队列0再申请一个队列空闲指针例如“0011”,然后将“0011”与当前报文入队的循环次序(从“0000”到“1111”)结合得到16个可用的实际访问地址:从“00110000”到“00111111”,继续将需要加入指定队列0的报文依次加入队列0,如此重复直至将需要加入指定队列0的报文全部加入队列0为止。
在报文出队操作时,队列存储空间的管理设备根据队列的链表状态信息表32的头指针Head_Ptr_0读取队列链表33,可以从队列链表33得到队列0的头指针Next_Ptr_0,根据Next_Ptr_0可以获取队列链表33的下一个指针Next_Ptr_i。假设第一数量为“16”,在队列的报文表34进行出队操作时,可以将队列0的头指针Next_Ptr_0指向的地址Ptr_0作为实际访问地址的高位地址,将子指针即当前报文出队的循环次序作为实际访问地址的低位地址,生成实际访问地址,具体生成方法和入队操作时相同。根据生成的实际访问地址依次将队列0中的16个报文出队。并将实际访问地址的高位地址释放为队列空闲指针,然后将链表状态信息表的队列0的长度减“1”,并且将队列链表中队列0头指针刷新为下一个指针Next_Ptr_i。
下面以第一数量为“16”,制定队列为Q0、Q1为例,说明队列存储空间的管理的具体方法:
图4为本发明队列存储空间的管理方法第三实施例中报文入队的初始状态图,如图4所示,实线报文为需要加入指定队列Q0的报文,虚线报文为需要加入指定队列Q1的报文;指定队列Q0、Q1的初始为空;队列空闲指针链表初始的头指针为“0”,尾指针为N-1,长度为N;入队操作时,子指针对应的Q0、Q1的入队顺序计数器Counter_i的数值为报文入队的循环次序,出队操作时,子指针对应的出队顺序计数器Counter_o的数值为报文出队的循环次序,Counter_i、Counter_o初始值为“0”。
图5为本发明队列存储空间的管理方法第三实施例中1号实线报文加入指定队列Q0的状态图,如图5所示,1号实线报文是指定队列Q0的第一个报文,队列存储空间的管理设备需要为Q0申请一个队列空闲指针0,此时队列空闲指针链表的头指针更新为下一个可用指针“1”,长度减“1”更新为N-1。Q0的指针链表为0/0即Q0的头指针和尾指针都为“0”,此时Q0的长度为“1”,将队列空闲指针0作为实际访问地址的高位地址,将Q0的入队顺序计数器的数值“0”作为实际访问地址的低位地址,可以生成实际访问地址,根据实际访问地址可以将1号实线报文加入指定队列Q0。1号实线报文加入00后,用Counter_i0表示Q0的入队顺序计数器,则入队顺序计数器Counter_i0的数值加“1”后更新为“1”。
图6为本发明队列存储空间的管理方法第三实施例中2号实线报文加入指定队列Q0的状态图,如图6所示,2号实线报文加入指定队列Q0时,将队列空闲指针“0”作为实际访问地址的高位地址,将Q0的入队顺序计数器Counter_i0的数值“1”作为实际访问地址的低位地址,生成实际访问地址后,2号实线报文根据实际访问地址加入Q0成功后,只需要将Q0的入队顺序计数器的数值加“1”后更新为“2”,不需要申请新的队列空闲指针。Q0的指针链表还是0/0,但是Q0的长度更新为“2”。
图7为本发明队列存储空间的管理方法第三实施例中1号虚线报文加入指定队列Q1的状态图,如图7所示,1号虚线报文为加入指定队列Q1的第一个报文,需要从队列空闲指针链表中为Q1申请新的队列空闲指针“1”。队列空闲指针链表的头指针更新为下一个可用指针“2”,长度减“1”更新为N-2。Q1的指针链表为1/1即Q1的头指针和尾指针都为“1”,此时Q1的长度为“1”。将队列空闲指针“1”作为实际访问地址的高位地址,用Counter_i1表示Q1的入队顺序计数器,则将入队顺序计数器Counter_i1记录的报文入队的循环次序“0”,作为实际访问地址的低位地址,可以生成实际访问地址的,根据实际访问地址可以将1号实线报文加入指定队列Q1中。1号虚线报文加入01后,Q1的入队顺序计数器的数值加“1”后更新为“1”。
图8为本发明队列存储空间的管理方法第三实施例中2号虚线报文加入指定队列Q1的状态图,如图8所示,2号虚线报文加入指定队列Q1时,将队列空闲指针“1”作为实际访问地址的高位地址,将Q1的入队顺序计数器Counter_i1的数值“1”作为实际访问地址的低位地址,生成实际访问地址,2号虚线报文根据实际访问地址加入Q1成功后,Q1的指针链表还是1/1,但是Q0的长度更新为“2”。只需要将Q0的入队顺序计数器的数值加“1”后更新为“2”,不需要申请新的队列空闲指针。随后的3-15号虚线报文加入01的方法与2号虚线报文相同。
图9为本发明队列存储空间的管理方法第三实施例中16号虚线报文加入指定队列Q1的状态图,如图9所示,16号虚线报文加入指定队列Q1时,将队列空闲指针“1”作为实际访问地址的高位地址,将Q1的入队顺序计数器Counter_i1的数值“15”作为实际访问地址的低位地址,生成实际访问地址,16号虚线报文根据实际访问地址加入Q1成功后,Q1的指针链表还是1/1,但是Q1的长度更新为“16”,队列空闲指针“1”对应的块指针的子指针已经被全部使用。将Q1入队顺序计数器清零,表示下一个报文加入队列Q1时需要申请新的队列空闲指针。
图10为本发明队列存储空间的管理方法第三实施例中17号虚线报文加入指定队列Q1的状态图,如图10所示,17号虚线报文加入指定队列Q1时,需要从队列空闲指针链表中为Q1申请新的队列空闲指针“2”。队列空闲指针链表的头指针更新为下一个可用指针“3”,长度减“1”更新为N-3。Q1的指针链表为1/2即Q0的头指针为“1”、尾指针为“2”,此时Q1的长度为“2”。将队列空闲指针“2”作为实际访问地址的高位地址,将Q1的入队顺序计数器Counter_i1的数值“0”作为实际访问地址的低位地址,生成实际访问地址,17号虚线报文根据实际访问地址加入Q1成功后,Q1的长度更新为17。17号虚线报文加入Q1后,Q1入队顺序计数器的数值加“1”后更新为“1”。此时Q1的入队顺序计数器Counter_i1进行新一轮的0-15循环计数,队列存储空间的管理设备对需要加入Q1的报文进行新一轮入队操作。
图11为本发明队列存储空间的管理方法第三实施例中16号实线报文加入指定队列Q0的状态图,如图11所示,假设3-15号实线报文已按照与2号实线报文相同的方法加入Q0,16号实线报文加入指定队列Q0时,将队列空闲指针“0”作为高位地址,将Q0的入队顺序计数器Counter_i0记录的报文入队的顺序“15”作为实际访问地址的低位地址,生成实际访问地址的,16号实线报文根据实际访问地址成功加入Q0后,Q0的指针链表还是0/0,但是00的长度更新为“16”,队列空闲指针“1”对应的块指针的子指针已经被全部使用。将Q0的入队顺序计数器清零,表示下一个报文加入队列Q0时需要申请新的队列空闲指针。
图12为本发明队列存储空间的管理方法第三实施例中17号实线报文加入指定队列Q0的状态图,如图12所示,17号实线报文加入指定队列Q0时,需要从队列空闲指针链表中为Q0申请新的队列空闲指针“3”。队列空闲指针链表的头指针更新为下一个可用指针“4”,长度减“1”更新为N-4。Q0的指针链表为0/3即Q0的头指针为“0”、尾指针为“3”,此时Q0的长度为“2”。将队列空闲指针“3”作为高位地址,将Q0的入队顺序计数器Counter_i0的数值“0”作为实际访问地址的低位地址,生成实际访问地址,17号实线报文根据实际访问地址加入Q0成功后,Q0的长度更新为“17”。17号实线报文加入Q0后,Q0的入队顺序计数器的数值加“1”后更新为“1”。此时00的入队顺序计数器ounter_i0进行新一轮的0-15计数,队列存储空间的管理设备对需要加入Q0的报文进行新一轮的入队操作。
将上述1-17号实线报文和1-17号虚线报文分别加入指定队列Q0和Q1之后,队列的报文信息的存储地址,入队时可以根据{当前报文的块指针,counter_i}访问,出队时可以根据{当前报文的块指针,counter_o}访问。
出队时,可以从队列的链表状态信息表读取队列链表,根据出队顺序计数器Counter_o中记录的报文出队的顺序控制出队操作,当Counter_o计数到“15”后,如果当前队列的报文又出队,那么可以释放队列链表的首指针,将Counter_o清零,并更新队列空闲指针链表。但是Counter_o为“1”到“15”时,则仅进行出队操作,并不更新队列空闲指针链表。
以2M个队列指针为例,采用之前的一个指针控制一个报文的入队出队时,需要2M×21bit的RAM;而本发明实施例中采用一个指针生成16个实际访问地址,可以对指定队列的16个报文进行入队或者出队的操作,只需要128K×17bit的RAM,其中128K=2M/16。因此队列的链表状态信息表中,每个队列的头指针、尾指针记录存储的指针为17bit。此外本发明实施例中申请一个队列空闲指针,可以得到16个实际访问地址,那么对队列空闲指针链表的访问次数降低为原来的1/16,对RAM的带宽需求也降低为原来的1/16,从而可以明显降低对RAM的带宽需求。综上所述,本发明实施例的队列存储空间的管理方法降低了对队列空闲指针链表和队列链表的访问次数,减少管理RAM所需的带宽,可以在RAM固定的情况下大幅提高队列管理能力,成本低,开发简单,应用灵活。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图13为本发明队列存储空间的管理设备第一实施例的结构示意图,如图13所示,该队列存储空间的管理设备包括:设置模块51、判断模块52、第一入队模块53和存储模块55。其中设置模块51用于将队列空闲指针链表中的队列空闲指针设置为决指针,每个所述块指针包括第一数量个子指针。判断模块52用于在报文需要加入指定队列时,判断所述指定队列已申请的块指针内的第一数量个子指针是否用完或判断所述指定队列的长度是否为空。第一入队模块53用于在所述指定队列申请的块指针内的第一数量个子指针已用完或所述指定队列的长度为空时,从队列空闲指针链表中为所述指定队列申请一个队列空闲指针作为新的块指针,根据所述新的块指针将所述报文加入所述指定队列。存储模块55用于存储所述队列空闲指针链表。
具体地,队列本身的入队/出队操作是按照先进先出的顺序进行处理的。入队操作时,设置模块51将存储模块55中的队列空闲指针链表中的队列空闲指针设置为块指针,每个所述块指针包括第一数量个子指针,其中存储模块可以为RAM。当有报文需要加入指定队列时,判断模块52判断该指定队列申请的块指针内的第一数量个子指针是否用完或所述指定队列的长度为空,如果所述指定队列申请的块指针内的第一数量个子指针已用完或所述指定队列的长度为空,第一入队模块53可以从队列空闲指针链表中为所述指定队列申请一个队列空闲指针作为新的块指针,根据所述新的块指针将所述报文加入所述指定队列。具体可以参照本发明队列存储空间的管理方法第一、第二、第三实施例中的相关描述。
本实施例中,第一入队模块申请一个队列空闲指针后,可以采用块指针内的第一数量个子指针进行队列管理,其中第一数量可以根据队列管理能力的需求和RAM的能力灵活设计,根据块指针内的子指针对第一数量个需要加入指定队列的报文进行入队操作,降低了对队列空闲指针链表和队列链表的访问次数,减少管理RAM所需的带宽,可以在RAM固定的情况下大幅提高队列管理能力,成本低、开发简单、应用灵活。
图14为本发明队列存储空间的管理设备第二实施例的结构示意图,如图14所示,队列管理包括入队操作和出队操作,在本发明队列存储空间的管理设备第一实施例的基础上,该队列存储空间的管理设备在对指定队列进行入队操作时可以包括:入队顺序计数器61,用于记录当前加入所述指定队列的报文的循环次序。
进一步地,判断模块52包括:入队判断子模块521,用于判断所述子指针是否指示达到所述第一数量,如果是则所述指定队列申请的所述块指针内的第一数量个子指针用完。
如果所述指定队列申请的块指针内的第一数量个子指针已用完,则第一入队模块53可以包括:申请子模块531、第一子指针子模块532、第一入队子模块533和第一更新子模块534。其中申请子模块531用于从队列空闲指针链表中为所述指定队列申请一个队列空闲指针作为块指针。第一子指针子模块532用于将所述新的块指针作为实际访问地址的高位地址,并将所述新的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为入队顺序计数器的数值,所述入队顺序计数器的初始值为零。第一入队子模块533用于将所述报文加入所述指定队列中所述实际访问地址后,将所述入队顺序计数器的数值加1,将所述指定队列的长度加1。第一更新子模块534用于在将所述报文加入所述指定队列之后,将所述指定队列的队列链表当前的尾指针更新为所述新的块指针,并将所述队列空闲指针链表的头指针更新为下一个可用的队列空闲指针。
进一步地,该队列存储空间的管理设备还可以包括第二入队模块54,用于当所述指定队列申请的块指针内的第一数量个子指针未用完时,根据已有的块指针将所述报文加入所述指定队列。在所述指定队列申请的块指针内的第一数量个子指针未用完时,第二入队模块54包括:第二子指针子模块541和第二入队子模块542。其中第二子指针子模块541将所述已有的块指针作为实际访问地址的高位地址,并将所述指定队列对应的已有的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为入队顺序计数器的数值,所述入队顺序计数器的初始值为零。第二入队子模块542用于将所述报文加入所述指定队列中所述实际访问地址后,将所述入队顺序计数器的数值加1,将所述指定队列的长度加1。
具体地,设置模块51将存储模块55中的队列空闲指针链表中的队列空闲指针设置为块指针,每个所述块指针包括第一数量个子指针,其中存储模块可以为RAM。当有报文需要加入指定队列时,判断模块52判断该指定队列申请的块指针内的第一数量个子指针是否用完或指定队列是否为空,如果所述指定队列申请的块指针内的第一数量个子指针已用完或指定队列是否为空,申请子模块531从队列空闲指针链表中为所述报文申请一个队列空闲指针作为新的块指针,第一子指针子模块532将所述新的块指针作为实际访问地址的高位地址,并将所述指定队列的入队顺序计数器的数值作为所述实际访问地址的低位地址,得到所述实际访问地址,所述入队顺序计数器的初始值为零。然后第一入队子模块533将所述报文加入所述指定队列的实际访问地址后,将入队顺序计数器的数值加1,并将指定队列的长度加1。此时。第一更新子模块534可以将所述指定队列的队列链表当前的尾指针更新为所述新的块指针,并将所述队列空闲指针链表的头指针更新为下一个可用的队列空闲指针。如果指定队列申请的块指针内的第一数量个子指针未用完,第二入队模块54根据已有的块指针将所述报文加入所述指定队列。具体可以参照本发明第一、第二、第三实施例中入队操作的相关描述。
该队列存储空间的管理设备在对指定队列进行出队操作时,还可以包括:出队模块63,用于若所述指定队列中有报文需要出队,判断所述报文对应的块指针内的所有子指针是否用完或所述报文出队后该指定队列是否为空,如果是,则将所述报文对应的块指针释放,并将释放出的块指针加入所述队列空闲指针链表,否则,不释放所述报文对应的块指针。出队时,判断模块52可以包括:出队判断子模块523,用于判断所述报文对应的块指针内的子指针是否指示达到所述第一数量,如果是则所述报文对应的所述块指针内的第一数量个子指针用完。
进一步地,该队列存储空间的管理设备还包括:出队顺序计数器65,用于记录当前从所述指定队列出队的报文的循环次序。
再进一步地,出队模块63可以包括:读取子模块631、第一出队子模块632、第二出队子模块633和第二更新子模块634。其中,读取子模块631用于根据所述指定队列的链表状态信息表读取所述指定队列的队列链表,将所述队列链表的头指针作为实际访问地址的高位地址,并将所述报文对应的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为出队顺序计数器的数值,所述出队顺序计数器的初始值为零。第一出队子模块632用于当所述报文对应的块指针内的所有子指针未用完时,所述指定队列中所述实际访问地址中的报文出队后,将所述出队顺序计数器的数值加1,将所述指定队列的长度减1。第二出队子模块633用于当所述报文对应的块指针内的所有子指针用完时,所述指定队列中所述实际访问地址中的报文出队后,将所述指定队列的长度减1,将所述实际访问地址中的报文对应的块指针释放,并将释放出的块指针加入所述队列空闲指针链表。第二更新子模块634用于在将所述块指针加入所述队列空闲指针链表之后,将所述指定队列的队列链表当前的头指针更新为所述队列链表的下一指针,将所述队列空闲指针链表的尾指针或头指针更新为释放出的块指针。
存储模块中除了存储队列空闲指针链表之外,还可以存储指定队列的链表状态信息表和队列链表,以及入队顺序计数器和出队顺序计数器。
具体地,出队操作时,读取子模块631根据指定队列的链表状态信息表读取指定队列的队列链表后,将队列链表的头指针作为实际访问地址高位地址,并将子指针作为实际访问地址的低位地址,得到实际访问地址,其中子指针为出队顺序计数器65的数值。当所述报文对应的块指针内的所有子指针未用完时,第一出队子模块632将指定队列中实际访问地址中的报文出队后,将所述出队顺序计数器的数值加1,将所述指定队列的长度减1,此时并不释放报文对应的块指针。当所述报文对应的块指针内的所有子指针用完时,第二出队子模块633将所述指定队列中所述实际访问地址中的报文出队后,将所述指定队列的长度减1,将所述报文对应的块指针释放,并将所述块指针加入所述队列空闲指针链表,然后,第二更新子模块634将指定队列的队列链表当前的头指针更新为所述队列链表的下一指针,将队列空闲指针链表的尾指针或头指针更新为释放出的块指针。
本实施例可以根据块指针内的子指针对指定队列中第一数量个报文进行连续的入队或出队操作,子指针的第一数量可以根据队列管理能力的需求和RAM的能力具体设计,降低了对队列空闲指针链表和队列链表的访问次数,减少管理RAM所需的带宽,可以在RAM固定的情况下大幅提高队列管理能力,成本低,开发简单,应用灵活。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (18)

1、一种队列存储空间的管理方法,其特征在于,包括:
将队列空闲指针链表中的队列空闲指针设置为块指针,每个所述块指针包括第一数量个子指针;
若报文需要加入指定队列,判断所述指定队列申请的块指针内的第一数量个子指针是否用完或判断所述指定队列的长度是否为空;
如果所述指定队列申请的块指针内的第一数量个子指针已用完或所述指定队列的长度为空,从队列空闲指针链表中为所述指定队列申请一个队列空闲指针作为新的块指针,根据所述新的块指针将所述报文加入所述指定队列。
2、根据权利要求1所述的队列存储空间的管理方法,其特征在于,判断所述指定队列申请的块指针内的第一数量个子指针是否用完,包括:
判断所述子指针是否指示达到所述第一数量,如果是则所述指定队列申请的所述块指针内的第一数量个子指针用完。
3、根据权利要求1或2所述的队列存储空间的管理方法,其特征在于,从队列空闲指针链表中为所述指定队列申请一个队列空闲指针作为新的块指针,根据所述新的块指针将所述报文加入所述指定队列,包括:
从队列空闲指针链表中为所述指定队列申请一个队列空闲指针作为新的块指针;
将所述新的块指针作为实际访问地址的高位地址,并将所述新的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为入队顺序计数器的数值,所述入队顺序计数器的初始值为零;
将所述报文加入所述指定队列中所述实际访问地址后,将所述入队顺序计数器的数值加1,将所述指定队列的长度加1;
将所述指定队列的队列链表当前的尾指针更新为所述新的块指针,并将所述队列空闲指针链表的头指针更新为下一个可用的队列空闲指针。
4、根据权利要求1或2所述的队列存储空间的管理方法,其特征在于,还包括:当所述指定队列申请的块指针内的第一数量个子指针未用完时,根据已有的块指针将所述报文加入所述指定队列,具体包括:
将所述已有的块指针作为实际访问地址的高位地址,并将所述指定队列对应的已有的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为入队顺序计数器的数值,所述入队顺序计数器的初始值为零;
将所述报文加入所述指定队列中所述实际访问地址后,将所述入队顺序计数器的数值加1,将所述指定队列的长度加1。
5、根据权利要求1或2所述的队列存储空间的管理方法,其特征在于,还包括:
若所述指定队列中有报文需要出队,判断所述报文对应的块指针内的所有子指针是否用完或所述报文出队后该指定队列是否为空,如果是,则将所述报文对应的块指针释放,并将释放出的块指针加入所述队列空闲指针链表,否则,不释放所述报文对应的块指针。
6、根据权利要求5所述的队列存储空间的管理方法,其特征在于,所述判断所述报文对应的块指针内的所有子指针是否用完,包括:
判断所述报文对应的块指针内的子指针是否指示达到所述第一数量,如果是则所述报文对应的块指针内的第一数量个子指针用完。
7、根据权利要求5所述的队列存储空间的管理方法,其特征在于,所述将所述报文对应的块指针释放,并将释放出的块指针加入所述队列空闲指针链表,包括:
根据所述指定队列的链表状态信息表读取所述指定队列的队列链表,将所述队列链表的头指针作为实际访问地址的高位地址,并将所述报文对应的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为出队顺序计数器的数值,所述出队顺序计数器的初始值为零;
所述指定队列中所述实际访问地址中的报文出队后,将所述指定队列的长度减1,将所述实际访问地址中的报文对应的块指针释放,并将释放出的块指针加入所述队列空闲指针链表;
将所述指定队列的队列链表当前的头指针更新为所述队列链表的下一指针,将所述队列空闲指针链表的尾指针或头指针更新为释放出的块指针。
8、根据权利要求5所述的队列存储空间的管理方法,其特征在于,所述不释放所述报文对应的块指针,包括:
根据所述指定队列的链表状态信息表读取所述指定队列的队列链表,将所述队列链表的头指针作为实际访问地址的高位地址,并将所述报文对应的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为出队顺序计数器的数值,所述出队顺序计数器的初始值为零;
所述指定队列中所述实际访问地址中的报文出队后,将所述出队顺序计数器的数值加1,将所述指定队列的长度减1,不释放所述报文对应的块指针。
9、一种队列存储空间的管理设备,其特征在于,包括:
设置模块,用于将队列空闲指针链表中的队列空闲指针设置为块指针,每个所述块指针包括第一数量个子指针;
判断模块,用于在报文需要加入指定队列时,判断所述指定队列已申请的块指针内的固定数量的子指针是否用完或判断所述指定队列的长度是否为空;
第一入队模块,用于在所述指定队列申请的块指针内的固定数量的子指针已用完或所述指定队列的长度为空时,从队列空闲指针链表中为所述指定队列申请一个队列空闲指针作为新的块指针,根据所述新的块指针将所述报文加入所述指定队列;
存储模块,用于存储所述队列空闲指针链表。
10、根据权利要求9所述的队列存储空间的管理设备,其特征在于,所述判断模块包括:
入队判断子模块,用于判断所述子指针是否指示达到所述第一数量,如果是则所述指定队列申请的所述块指针内的第一数量个子指针用完。
11、根据权利要求9或10所述的队列存储空间的管理设备,其特征在于,还包括:
入队顺序计数器,用于记录当前加入所述指定队列的报文的循环次序。
12、根据权利要求11所述的队列存储空间的管理设备,其特征在于,所述第一入队模块包括:
申请子模块,用于从队列空闲指针链表中为所述指定队列申请一个队列空闲指针作为新的块指针;
第一子指针子模块,用于将所述新的块指针作为实际访问地址的高位地址,并将所述新的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为入队顺序计数器的数值,所述入队顺序计数器的初始值为零;
第一入队子模块,用于将所述报文加入所述指定队列中所述实际访问地址后,将所述入队顺序计数器的数值加1,将所述指定队列的长度加1;
第一更新子模块,用于在将所述报文加入所述指定队列之后,将所述指定队列的队列链表当前的尾指针更新为所述新的块指针,并将所述队列空闲指针链表的头指针更新为下一个可用的队列空闲指针。
13、根据权利要求11所述的队列存储空间的管理设备,其特征在于,还包括:
第二入队模块,用于当所述指定队列申请的块指针内的第一数量个子指针未用完时,根据已有的块指针将所述报文加入所述指定队列。
14、根据权利要求13所述的队列存储空间的管理设备,其特征在于,所述第二入队模块包括:
第二子指针子模块,用于将所述已有的块指针作为实际访问地址的高位地址,并将所述指定队列对应的已有的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为入队顺序计数器的数值,所述入队顺序计数器的初始值为零;
第二入队子模块,用于将所述报文加入所述指定队列中所述实际访问地址后,将所述入队顺序计数器的数值加1,将所述指定队列的长度加1。
15、根据权利要求9或10所述的队列存储空间的管理设备,其特征在于,还包括:
出队模块,用于若所述指定队列中有报文需要出队,判断所述报文对应的块指针内的所有子指针是否用完或所述报文出队后该指定队列是否为空,如果是,则将所述报文对应的块指针释放,并将释放出的块指针加入所述队列空闲指针链表,否则,不释放所述报文对应的块指针。
16、根据权利要求15所述的队列存储空间的管理设备,其特征在于,所述判断模块包括:
出队判断子模块,用于判断所述报文对应的块指针内的子指针是否指示达到所述第一数量,如果是则所述报文对应的所述块指针内的第一数量个子指针用完。
17、根据权利要求15所述的队列存储空间的管理设备,其特征在于,还包括:
出队顺序计数器,用于记录当前从所述指定队列出队的报文的循环次序。
18、根据权利要求15所述的队列存储空间的管理设备,其特征在于,所述出队模块包括以下模块的一个或者多个:
读取子模块,用于根据所述指定队列的链表状态信息表读取所述指定队列的队列链表,将所述队列链表的头指针作为实际访问地址的高位地址,并将所述报文对应的块指针的子指针作为所述实际访问地址的低位地址,得到所述实际访问地址,所述子指针为出队顺序计数器的数值,所述出队顺序计数器的初始值为零;
第一出队子模块,用于当所述报文对应的块指针内的所有子指针未用完时,所述指定队列中所述实际访问地址中的报文出队后,将所述出队顺序计数器的数值加1,将所述指定队列的长度减1;
第二出队子模块,用于当所述报文对应的块指针内的所有子指针用完或所述报文出队后该指定队列为空时,所述指定队列中所述实际访问地址中的报文出队后,将所述指定队列的长度减1,将所述实际访问地址中的报文对应的块指针释放,并将释放出的块指针加入所述队列空闲指针链表;
第二更新子模块,用于在将所述块指针加入所述队列空闲指针链表之后,将所述指定队列的队列链表当前的头指针更新为所述队列链表的下一指针,将所述队列空闲指针链表的尾指针或头指针更新为释放出的块指针。
CN2009101519876A 2009-07-15 2009-07-15 队列存储空间的管理方法和设备 Expired - Fee Related CN101605100B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101519876A CN101605100B (zh) 2009-07-15 2009-07-15 队列存储空间的管理方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101519876A CN101605100B (zh) 2009-07-15 2009-07-15 队列存储空间的管理方法和设备

Publications (2)

Publication Number Publication Date
CN101605100A true CN101605100A (zh) 2009-12-16
CN101605100B CN101605100B (zh) 2012-04-25

Family

ID=41470656

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101519876A Expired - Fee Related CN101605100B (zh) 2009-07-15 2009-07-15 队列存储空间的管理方法和设备

Country Status (1)

Country Link
CN (1) CN101605100B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102185767A (zh) * 2011-04-27 2011-09-14 杭州华三通信技术有限公司 一种缓存管理方法及系统
CN102999434A (zh) * 2011-09-15 2013-03-27 阿里巴巴集团控股有限公司 一种内存管理方法及装置
CN103365705A (zh) * 2012-03-27 2013-10-23 腾讯科技(深圳)有限公司 消息队列处理方法和装置
CN103581055A (zh) * 2012-08-08 2014-02-12 华为技术有限公司 报文的保序方法、流量调度芯片及分布式存储系统
CN104598194A (zh) * 2014-12-09 2015-05-06 中国航空工业集团公司第六三一研究所 一种头尾指针链表存储器的初始化方法及电路
CN105912273A (zh) * 2016-04-15 2016-08-31 成都欧飞凌通讯技术有限公司 一种报文共享储存管理的fpga实现方法
CN106254270A (zh) * 2015-06-15 2016-12-21 深圳市中兴微电子技术有限公司 一种队列管理方法及装置
CN106330770A (zh) * 2015-06-29 2017-01-11 深圳市中兴微电子技术有限公司 一种共享缓存分配方法及装置
CN106325758A (zh) * 2015-06-17 2017-01-11 深圳市中兴微电子技术有限公司 一种队列存储空间管理方法及装置
CN108521343A (zh) * 2018-03-26 2018-09-11 烽火通信科技股份有限公司 一种oam报文的处理方法及装置
CN109246033A (zh) * 2018-09-19 2019-01-18 郑州云海信息技术有限公司 一种请求处理方法、装置、设备及可读存储介质
US10205673B2 (en) 2014-10-14 2019-02-12 Sanechips Technology Co. Ltd. Data caching method and device, and storage medium
CN111078762A (zh) * 2019-12-27 2020-04-28 深圳市圆周率智能信息科技有限公司 一种数据处理方法和使用该方法的可穿戴设备及移动终端
CN111352781A (zh) * 2020-02-28 2020-06-30 天津飞腾信息技术有限公司 用于重传部件模块级验证的报文自动比对正确性检查方法及装置
CN111432899A (zh) * 2017-09-19 2020-07-17 Bae系统控制有限公司 用于管理对共享端口的多核访问的系统和方法
CN113242186A (zh) * 2015-03-31 2021-08-10 马维尔亚洲私人有限公司 用于使用多个链接的存储器列表的方法及装置
CN114817091A (zh) * 2022-06-28 2022-07-29 井芯微电子技术(天津)有限公司 基于链表的fwft fifo系统、实现方法及设备
WO2024222965A1 (zh) * 2023-04-28 2024-10-31 深圳市中兴微电子技术有限公司 流量管理系统、方法、芯片以及计算机可读存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100440854C (zh) * 2004-06-25 2008-12-03 中国科学院计算技术研究所 一种网络处理器的数据包接收接口部件及其存储管理方法
CN101094181B (zh) * 2007-07-25 2010-12-08 华为技术有限公司 报文入队和出队调度的装置及方法
CN101446984B (zh) * 2009-01-09 2011-04-13 成都市华为赛门铁克科技有限公司 一种文件存储方法、装置及文件删除方法和装置

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102185767A (zh) * 2011-04-27 2011-09-14 杭州华三通信技术有限公司 一种缓存管理方法及系统
CN102185767B (zh) * 2011-04-27 2014-07-16 杭州华三通信技术有限公司 一种缓存管理方法及系统
CN102999434A (zh) * 2011-09-15 2013-03-27 阿里巴巴集团控股有限公司 一种内存管理方法及装置
CN103365705B (zh) * 2012-03-27 2016-02-24 腾讯科技(深圳)有限公司 消息队列处理方法和装置
CN103365705A (zh) * 2012-03-27 2013-10-23 腾讯科技(深圳)有限公司 消息队列处理方法和装置
CN103581055A (zh) * 2012-08-08 2014-02-12 华为技术有限公司 报文的保序方法、流量调度芯片及分布式存储系统
CN103581055B (zh) * 2012-08-08 2016-12-21 华为技术有限公司 报文的保序方法、流量调度芯片及分布式存储系统
US10205673B2 (en) 2014-10-14 2019-02-12 Sanechips Technology Co. Ltd. Data caching method and device, and storage medium
CN104598194A (zh) * 2014-12-09 2015-05-06 中国航空工业集团公司第六三一研究所 一种头尾指针链表存储器的初始化方法及电路
CN104598194B (zh) * 2014-12-09 2017-10-24 中国航空工业集团公司第六三一研究所 一种头尾指针链表存储器的初始化方法及电路
CN113242186A (zh) * 2015-03-31 2021-08-10 马维尔亚洲私人有限公司 用于使用多个链接的存储器列表的方法及装置
CN106254270A (zh) * 2015-06-15 2016-12-21 深圳市中兴微电子技术有限公司 一种队列管理方法及装置
WO2016202113A1 (zh) * 2015-06-15 2016-12-22 深圳市中兴微电子技术有限公司 一种队列管理方法、装置及存储介质
CN106325758A (zh) * 2015-06-17 2017-01-11 深圳市中兴微电子技术有限公司 一种队列存储空间管理方法及装置
CN106325758B (zh) * 2015-06-17 2019-10-22 深圳市中兴微电子技术有限公司 一种队列存储空间管理方法及装置
CN106330770A (zh) * 2015-06-29 2017-01-11 深圳市中兴微电子技术有限公司 一种共享缓存分配方法及装置
CN105912273B (zh) * 2016-04-15 2019-05-24 成都欧飞凌通讯技术有限公司 一种报文共享储存管理的fpga实现方法
CN105912273A (zh) * 2016-04-15 2016-08-31 成都欧飞凌通讯技术有限公司 一种报文共享储存管理的fpga实现方法
CN111432899A (zh) * 2017-09-19 2020-07-17 Bae系统控制有限公司 用于管理对共享端口的多核访问的系统和方法
US11397560B2 (en) 2017-09-19 2022-07-26 Bae Systems Controls Inc. System and method for managing multi-core accesses to shared ports
CN108521343A (zh) * 2018-03-26 2018-09-11 烽火通信科技股份有限公司 一种oam报文的处理方法及装置
CN109246033B (zh) * 2018-09-19 2022-02-18 郑州云海信息技术有限公司 一种请求处理方法、装置、设备及可读存储介质
CN109246033A (zh) * 2018-09-19 2019-01-18 郑州云海信息技术有限公司 一种请求处理方法、装置、设备及可读存储介质
CN111078762A (zh) * 2019-12-27 2020-04-28 深圳市圆周率智能信息科技有限公司 一种数据处理方法和使用该方法的可穿戴设备及移动终端
CN111352781A (zh) * 2020-02-28 2020-06-30 天津飞腾信息技术有限公司 用于重传部件模块级验证的报文自动比对正确性检查方法及装置
CN114817091A (zh) * 2022-06-28 2022-07-29 井芯微电子技术(天津)有限公司 基于链表的fwft fifo系统、实现方法及设备
WO2024222965A1 (zh) * 2023-04-28 2024-10-31 深圳市中兴微电子技术有限公司 流量管理系统、方法、芯片以及计算机可读存储介质

Also Published As

Publication number Publication date
CN101605100B (zh) 2012-04-25

Similar Documents

Publication Publication Date Title
CN101605100B (zh) 队列存储空间的管理方法和设备
CN102377682B (zh) 基于定长单元存储变长分组的队列管理方法及设备
CN102437929B (zh) 队列管理中的数据出队方法及装置
CN101594302B (zh) 数据出队的方法及装置
CN101859279B (zh) 一种内存分配、释放方法及装置
CN106325758B (zh) 一种队列存储空间管理方法及装置
CN101488919B (zh) 存储地址分配方法和装置
CN102130833A (zh) 一种高速路由器流量管理芯片链表存储管理方法及系统
US6823432B2 (en) Method and apparatus for load distribution across memory banks with constrained access
CN106598495A (zh) 一种混合存储服务质量的控制方法及控制装置
US5493652A (en) Management system for a buffer memory having buffers of uniform size in which the buffers are divided into a portion of contiguous unused buffers and a portion of contiguous buffers in which at least some are used
CN103135957A (zh) 使用、管理多队列数据的共用缓存空间的方法和系统
CN102088398A (zh) Web并发事件处理方法及装置
CN107800644A (zh) 一种可动态配置的流水化令牌桶限速方法与装置
CN105656807A (zh) 一种网络芯片多通道数据传输方法及传输装置
CN101661429B (zh) 一种统计信息的存储方法及设备
CN101610197A (zh) 一种缓冲区管理方法及其系统
CN101848150B (zh) 维护多播计数器的计数值的方法及装置
CN103685062A (zh) 缓存管理方法及装置
CN100499563C (zh) 提高分组应用的存储器存取效率
CN102521157B (zh) 一种在fpga上实现板载存储资源管理的系统和方法
CN102118304B (zh) 一种信元交换方法和装置
CN102520879B (zh) 基于优先级的文件信息存储方法、装置及系统
CN100493000C (zh) 一种实现多逻辑通道计数的方法和装置
CN101566933B (zh) 一种配置缓存的方法、装置和电子设备及数据读写装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120425

Termination date: 20210715

CF01 Termination of patent right due to non-payment of annual fee