CN106302238A - 一种队列管理方法及装置 - Google Patents
一种队列管理方法及装置 Download PDFInfo
- Publication number
- CN106302238A CN106302238A CN201510241030.6A CN201510241030A CN106302238A CN 106302238 A CN106302238 A CN 106302238A CN 201510241030 A CN201510241030 A CN 201510241030A CN 106302238 A CN106302238 A CN 106302238A
- Authority
- CN
- China
- Prior art keywords
- pointer
- queue
- chip
- ram
- operation request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000007726 management method Methods 0.000 title abstract description 20
- 238000000034 method Methods 0.000 claims abstract description 16
- 230000001360 synchronised effect Effects 0.000 claims abstract description 4
- 238000010586 diagram Methods 0.000 description 7
- 230000003247 decreasing effect Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/621—Individual queue per connection or flow, e.g. per VC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9015—Buffering arrangements for supporting a linked list
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9036—Common buffer combined with individual queues
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种队列管理方法,所述方法包括:确定当前的操作请求为报文描述符的入队操作请求,依据所述入队操作请求及片内随机存取存储器(RAM)的缓存情况,将所述报文描述符存储至片外双倍速率同步动态随机存储器(DDR)或片内RAM,并更新指针链表信息;确定当前的操作请求为报文描述符的出队操作请求,获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符,并更新指针链表信息;其中,所述位置信息包括片内RAM位置信息及片外DDR位置信息。本发明还公开了一种队列管理装置。
Description
技术领域
本发明涉及通信技术领域中队列管理的相关技术,尤其涉及一种队列管理方法及装置。
背景技术
随着网络中数据业务流量越来越大,流量突发的现象频频发生。目前,队列管理的一种实施方法是采用固定分配空间,即每个队列分配固定的空间,不同队列的地址空间不能共享,该方法实施简单但由于不同队列的地址空间不能共享,容易造成空间浪费,并且当队列数较多时,每个队列分配的空间相当有限,抗突发能力弱;另一种实施方法是采用共享空间,给每个队列做一个链表,把属于同一队列的报文地址空间链接起来,该方法可提高缓存利用率,但控制复杂,尤其采用多链表方式下,同时面对网络突发瞬时超大流量,抗突发能力依然不够。
因此,提供一种队列管理的技术方案,能够在提高访问效率的同时有效的避免流量突发下的丢包情况,已成为亟待解决的问题。
发明内容
有鉴于此,本发明实施例期望提供一种队列管理方法及装置,能够在提高访问效率、降低功耗的同时有效的避免流量突发下的丢包情况。
为达到上述目的,本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种队列管理方法,所述方法包括:
确定当前的操作请求为报文描述符的入队操作请求,依据所述入队操作请求及片内随机存取存储器(RAM,Random-Access Memory)的缓存情况,将所述报文描述符存储至片外双倍速率同步动态随机存储器(DDR,Double DataRate)或片内RAM,并更新指针链表信息;
确定当前的操作请求为报文描述符的出队操作请求,获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符,并更新指针链表信息;其中,所述位置信息包括片内RAM位置信息及片外DDR位置信息。
上述方案中,所述依据所述入队操作请求及片内RAM的缓存情况,将所述报文描述符存储至片外DDR或片内RAM包括:
依据所述入队操作请求确定当前片内RAM的缓存已达上限时,计算片外DDR地址,并依据得到的片外DDR地址将所述报文描述符存储至片外DDR;
确定当前片内RAM的缓存未达到上限时,提取所述入队操作请求中的队列号,并依据所述队列号将所述报文描述符存储至片内RAM。
上述方案中,确定当前的操作请求为报文描述符的入队操作请求时,所述更新指针链表信息包括:
提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列尾指针及空闲头指针,更新所述队列尾指针指向所述空闲头指针当前所指示的地址,然后将所述空闲头指针指向所述指针链表中的下一个地址。
上述方案中,确定当前的操作请求为报文描述符的出队操作请求时,所述更新指针链表信息包括:
提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列头指针及空闲尾指针,更新所述空闲尾指针指向所述队列头指针当前所指示的地址,然后将所述队列头指针指向所述指针链表中的下一个地址。
上述方案中,所述获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符包括:
提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列头指针,确定所述队列头指针在所述指针链表中的位置处于片外DDR时,计算片外DDR地址,依据得到的片外DDR地址读取片外DDR中对应的报文描述符;
确定所述队列头指针在所述指针链表中的位置处于片内RAM时,依据所述队列号读取片内RAM中对应的报文描述符。
本发明实施例还提供了一种队列管理装置,所述装置包括:第一处理模块及第二处理模块;其中,
所述第一处理模块,用于确定当前的操作请求为报文描述符的入队操作请求,依据所述入队操作请求及片内随机存取存储器RAM的缓存情况,将所述报文描述符存储至片外双倍速率同步动态随机存储器DDR或片内RAM,并更新指针链表信息;
所述第二处理模块,用于确定当前的操作请求为报文描述符的出队操作请求,获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符,并更新指针链表信息;其中,所述位置信息包括片内RAM位置信息及片外DDR位置信息。
上述方案中,所述第一处理模块,具体用于依据所述入队操作请求确定当前片内RAM的缓存已达上限时,计算片外DDR地址,并依据得到的片外DDR地址将所述报文描述符存储至片外DDR;
确定当前片内RAM的缓存未达到上限时,提取所述入队操作请求中的队列号,并依据所述队列号将所述报文描述符存储至片内RAM。
上述方案中,所述第一处理模块,具体用于提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列尾指针及空闲头指针,更新所述队列尾指针指向所述空闲头指针当前所指示的地址,然后将所述空闲头指针指向所述指针链表中的下一个地址。
上述方案中,所述第二处理模块,具体用于提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列头指针及空闲尾指针,更新所述空闲尾指针指向所述队列头指针当前所指示的地址,然后将所述队列头指针指向所述指针链表中的下一个地址。
上述方案中,所述第二处理模块,具体用于提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列头指针,确定所述队列头指针在所述指针链表中的位置处于片外DDR时,计算片外DDR地址,依据得到的片外DDR地址读取片外DDR中对应的报文描述符;
确定所述队列头指针在所述指针链表中的位置处于片内RAM时,依据所述队列号读取片内RAM中对应的报文描述符。
本发明实施例所提供的队列管理方法及装置;确定当前的操作请求为报文描述符的入队操作请求,依据所述入队操作请求及片内RAM的缓存情况,将所述报文描述符存储至片外DDR或片内RAM,并更新指针链表信息;确定当前的操作请求为报文描述符的出队操作请求,获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符,并更新指针链表信息;其中,所述位置信息包括片内RAM位置信息及片外DDR位置信息。如此,采用指针链表及片内加片外的方式对队列进行管理,并依据片内RAM的缓存情况决定报文描述符的存储位置,在提高访问效率、降低功耗的同时有效的避免流量突发下的丢包情况。
附图说明
图1为本发明实施例一队列管理方法流程示意图;
图2为本发明实施例指针链表RAM初始化示意图;
图3为本发明实施例各个RAM间数据关系示意图;
图4为本发明实施例二队列管理方法流程示意图;
图5为本发明实施例队列管理装置组成结构示意图。
具体实施方式
在本发明实施例中,确定当前的操作请求为报文描述符的入队操作请求,依据所述入队操作请求及片内RAM的缓存情况,将所述报文描述符存储至片外DDR或片内RAM,并更新指针链表信息;确定当前的操作请求为报文描述符的出队操作请求,获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符,并更新指针链表信息;其中,所述位置信息包括片内RAM位置信息及片外DDR位置信息。
实施例一
图1所示为本发明实施例一队列管理方法流程示意图;如图1所示,本发明实施例队列管理方法包括:
步骤101:确定当前的操作请求为报文描述符的入队操作请求,依据所述入队操作请求及片内RAM的缓存情况,将所述报文描述符存储至片外DDR或片内RAM,并更新指针链表信息;
这里,所述依据所述入队操作请求及片内RAM的缓存情况,将所述报文描述符存储至片外DDR或片内RAM包括:
依据所述入队操作请求确定当前片内RAM的缓存已达上限时,计算片外DDR地址,并依据得到的片外DDR地址将所述报文描述符存储至片外DDR;
确定当前片内RAM的缓存未达到上限时,提取所述入队操作请求中的队列号,并依据所述队列号将所述报文描述符存储至片内RAM。
进一步的,所述确定当前片内RAM的缓存已达上限包括:
依据预设的片内RAM的缓存大小及缓存计数器实时记录的当前指针链表中非空闲指针的数量确定当前片内RAM的缓存是否已达上限,如果当前指针链表中非空闲指针的数量小于预设的片内RAM的缓存大小,确定当前片内RAM的缓存未达到上限,否则,确定当前片内RAM的缓存已达上限;
这里,所述片内RAM用于缓存报文描述符信息,其大小可依据实际需要进行设定,在一实施例中,所述片内RAM的大小为4k,即片内RAM的地址为0~4k-1,即所述片内RAM的深度为4×1024个地址。
进一步的,所述计算片外DDR地址包括:
依据所述片内RAM的大小及缓存计数器记录的当前指针链表中非空闲指针的数量计算片外DDR地址;所述片外DDR地址可以为基地址+链表片内位置偏移;其中,所述基地址为系统配置的、报文描述符存储在片外DDR中的基地址;所述链表片内位置偏移为一个相对地址,若所述基地址为4k,则所述链表片内位置偏移为0,如果所述基地址为4k+1,则所述链表片内位置偏移为1。
进一步的,所述更新指针链表信息包括:
提取所述入队操作请求中的队列号,依据所述队列号读取尾指针RAM中对应的队列尾指针及指针链表RAM中的空闲头指针,更新所述队列尾指针指向所述空闲头指针当前所指示的地址,然后将所述空闲头指针指向所述指针链表中的下一个地址;
这里,所述尾指针RAM用于存储所有队列的队列尾指针,并指示每个队列的队列状态;其中,所述队列状态包括:空和非空;所述尾指针RAM的大小/深度可依据实际情况进行设定,优选的,所述尾指针RAM的深度等于队列数,在本实施例中,所述尾指针RAM的深度为256个地址,初始化所述尾指针RAM后的最高比特为1或全为1,可知初始化的队列状态为空;
相应的,还存在头指针RAM用于存储所有队列的队列头指针,并指示每个队列的队列状态;其中,所述队列状态包括:空和非空;所述头指针RAM的大小/深度可依据实际情况进行设定,优选的,所述头指针RAM的深度等于队列数,在本实施例中,所述头指针RAM的深度为256个地址,初始化所述头指针RAM后的最高比特为1或全为1,可知初始化的队列状态为空;
所述指针链表RAM用于存储所述指针链表,使队列指针链表及空闲指针链表共享一块RAM,由此可以不用单独的先入先出队列(FIFO,First Input FirstOutput)来存储空闲指针,节省了硬件资源;所述指针链表RAM大小可依据实际需要进行设定,在一实施例中,所述片内RAM的大小为4k,所述指针链表包括了指向下一个地址的指针,初始化为一张空指针链表,如图2所示,ptr RAM为指针链表RAM,对其进行初始化,ptr RAM的地址从0~8191,ptr RAM中存储的内容是下一个地址值,由此形成一张指针链表形式;所述指针链表包括非空闲指针及空闲指针;其中,所述非空闲指针的数目表征了片内RAM及片外DDR中报文描述符所占用的地址的总数目,每入队一次报文描述符,非空闲指针的数目加一,相应的,每出队一次报文描述符,非空闲指针的数目减一;所述片内RAM与所述指针链表RAM的一部分存在一一对应关系,所述片内RAM中为报文描述符信息,所述指针链表RAM中为对应的地址信息;如图3所示为本发明实施例各个RAM间数据关系示意图;
在图3中,head_ptr ram为头指针RAM,tail_ptr ram为尾指针RAM,ptr ram为指针链表RAM,desc ram为片内RAM;其中,指针链表RAM中黑色的为一个队列中的队列成员,共有6个队列成员,为了便于说明,按顺序分别标记为1至6(均为虚拟标记),前一个数据块中存储的是后一个数据块的地址信息,因为标号6是该队列的最后一个数据,因此该指针链表RAM中的数据为无效数据;根据头指针及尾指针可知该队列的队列号为11,标号1对应的数据块的地址由头指针RAM地址11存储的值确定,标号6对应的数据块地址由尾指针RAM地址11中存储的值确定。
步骤102:确定当前的操作请求为报文描述符的出队操作请求,获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符,并更新指针链表信息;
这里,所述位置信息包括片内RAM位置信息及片外DDR位置信息;
所述获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符包括:
提取所述入队操作请求中的队列号,依据所述队列号读取头指针RAM中对应的队列头指针,确定所述队列头指针在所述指针链表中的位置处于片外DDR时,计算片外DDR地址,依据得到的片外DDR地址读取片外DDR中对应的报文描述符;
确定所述队列头指针在所述指针链表中的位置处于片内RAM时,依据所述队列号读取片内RAM中对应的报文描述符。
进一步的,所述更新指针链表信息包括:
提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列头指针及空闲尾指针,更新所述空闲尾指针指向所述队列头指针当前所指示的地址,然后将所述队列头指针指向所述指针链表中的下一个地址。
实施例二
图4所示为本发明实施例二队列管理方法流程示意图;如图4所示,本发明实施例队列管理方法包括:
步骤401:接收操作请求并判断是报文描述符的入队操作请求还是出队操作请求,如果是入队操作请求,执行步骤402;如果是出队操作请求,执行步骤404。
步骤402:依据所述入队操作请求及片内RAM的缓存情况,将所述报文描述符存储至片外DDR或片内RAM;
本步骤具体包括:依据所述入队操作请求确定当前片内RAM的缓存已达上限时,计算片外DDR地址,并依据得到的片外DDR地址将所述报文描述符存储至片外DDR;
确定当前片内RAM的缓存未达到上限时,提取所述入队操作请求中的队列号,并依据所述队列号将所述报文描述符存储至片内RAM。
进一步的,所述确定当前片内RAM的缓存已达上限包括:
依据预设的片内RAM的缓存大小及缓存计数器实时记录的当前指针链表中非空闲指针的数量确定当前片内RAM的缓存是否已达上限,如果当前指针链表中非空闲指针的数量小于预设的片内RAM的缓存大小,确定当前片内RAM的缓存未达到上限,否则,确定当前片内RAM的缓存已达上限;
这里,所述片内RAM用于缓存报文描述符信息,其大小可依据实际需要进行设定,在本实施例中,所述片内RAM的大小为4k,即片内RAM的地址为0~4k-1,即所述片内RAM的深度为4×1024个地址。
步骤403:更新指针链表信息,并执行步骤406;
本步骤具体包括:提取所述入队操作请求中的队列号,依据所述队列号读取尾指针RAM中对应的队列尾指针及指针链表RAM中的空闲头指针,更新所述队列尾指针指向所述空闲头指针当前所指示的地址,然后将所述空闲头指针指向所述指针链表中的下一个地址;
这里,所述尾指针RAM用于存储所有队列的队列尾指针,并指示每个队列的队列状态;其中,所述队列状态包括:空和非空;所述尾指针RAM的大小/深度可依据实际情况进行设定,优选的,所述尾指针RAM的深度等于队列数,在本实施例中,所述尾指针RAM的深度为256个地址,初始化所述尾指针RAM后的最高比特为1或全为1,可知初始化的队列状态为空;
相应的,还存在头指针RAM用于存储所有队列的队列头指针,并指示每个队列的队列状态;其中,所述队列状态包括:空和非空;所述头指针RAM的大小/深度可依据实际情况进行设定,优选的,所述头指针RAM的深度等于队列数,在本实施例中,所述头指针RAM的深度为256个地址,初始化所述头指针RAM后的最高比特为1或全为1,可知初始化的队列状态为空;
所述指针链表RAM用于存储所述指针链表,使队列指针链表及空闲指针链表共享一块RAM,由此可以不用单独的FIFO来存储空闲指针,节省了硬件资源;所述指针链表RAM大小可依据实际需要进行设定,在本实施例中,所述片内RAM的大小为4k,所述指针链表包括了指向下一个地址的指针,初始化为一张空指针链表,如图2所示,ptr RAM为指针链表RAM,对其进行初始化,ptr RAM的地址从0~8191,ptr RAM中存储的内容是下一个地址值,由此形成一张指针链表形式;所述指针链表包括非空闲指针及空闲指针;其中,所述非空闲指针的数目表征了片内RAM及片外DDR中报文描述符所占用的地址的总数目,每入队一次报文描述符,非空闲指针的数目加一,相应的,每出队一次报文描述符,非空闲指针的数目减一;所述片内RAM与所述指针链表RAM的一部分存在一一对应关系,所述片内RAM中为报文描述符信息,所述指针链表RAM中为对应的地址信息;如图3所示为本发明实施例各个RAM间数据关系示意图;
在图3中,head_ptr ram为头指针RAM,tail_ptr ram为尾指针RAM,ptr ram为指针链表RAM,desc ram为片内RAM;其中,指针链表RAM中黑色的为一个队列中的队列成员,共有6个队列成员,为了便于说明,按顺序分别标记为1至6(均为虚拟标记),前一个数据块中存储的是后一个数据块的地址信息,因为标号6是该队列的最后一个数据,因此该指针链表RAM中的数据为无效数据;根据头指针及尾指针可知该队列的队列号为11,标号1对应的数据块的地址由头指针RAM地址11存储的值确定,标号6对应的数据块地址由尾指针RAM地址11中存储的值确定。
步骤404:获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符;
这里,所述位置信息包括片内RAM位置信息及片外DDR位置信息;
本步骤具体包括:提取所述入队操作请求中的队列号,依据所述队列号读取头指针RAM中对应的队列头指针,确定所述队列头指针在所述指针链表中的位置处于片外DDR时,计算片外DDR地址,依据得到的片外DDR地址读取片外DDR中对应的报文描述符;
确定所述队列头指针在所述指针链表中的位置处于片内RAM时,依据所述队列号读取片内RAM中对应的报文描述符。
步骤405:更新指针链表信息;
本步骤具体包括:提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列头指针及空闲尾指针,更新所述空闲尾指针指向所述队列头指针当前所指示的地址,然后将所述队列头指针指向所述指针链表中的下一个地址。
步骤406:结束本次处理流程。
实施例三
图5为本发明实施例队列管理装置组成结构示意图;如图5所示,本发明实施例队列管理装置组成包括:第一处理模块51及第二处理模块52;其中,
所述第一处理模块51,用于确定当前的操作请求为报文描述符的入队操作请求,依据所述入队操作请求及片内随机存取存储器RAM的缓存情况,将所述报文描述符存储至片外双倍速率同步动态随机存储器DDR或片内RAM,并更新指针链表信息;
所述第二处理模块52,用于确定当前的操作请求为报文描述符的出队操作请求,获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符,并更新指针链表信息;其中,所述位置信息包括片内RAM位置信息及片外DDR位置信息。
进一步的,所述第一处理模块51依据所述入队操作请求及片内随机存取存储器RAM的缓存情况,将所述报文描述符存储至片外DDR或片内RAM,包括:
所述第一处理模块51依据所述入队操作请求确定当前片内RAM的缓存已达上限时,计算片外DDR地址,并依据得到的片外DDR地址将所述报文描述符存储至片外DDR;
确定当前片内RAM的缓存未达到上限时,提取所述入队操作请求中的队列号,并依据所述队列号将所述报文描述符存储至片内RAM;
其中,所述第一处理模块51确定当前片内RAM的缓存已达上限包括:
所述第一处理模块51依据预设的片内RAM的缓存大小及缓存计数器实时记录的当前指针链表中非空闲指针的数量确定当前片内RAM的缓存是否已达上限,如果当前指针链表中非空闲指针的数量小于预设的片内RAM的缓存大小,确定当前片内RAM的缓存未达到上限,否则,确定当前片内RAM的缓存已达上限;
这里,所述片内RAM用于缓存报文描述符信息,其大小可依据实际需要进行设定,在一实施例中,所述片内RAM的大小为4k,即片内RAM的地址为0~4k-1,即所述片内RAM的深度为4×1024个地址。
进一步的,确定当前的操作请求为报文描述符的入队操作请求时,所述第一处理模块51更新指针链表信息包括:
所述第一处理模块51提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列尾指针及空闲头指针,更新所述队列尾指针指向所述空闲头指针当前所指示的地址,然后将所述空闲头指针指向所述指针链表中的下一个地址;
这里,所述尾指针RAM用于存储所有队列的队列尾指针,并指示每个队列的队列状态;其中,所述队列状态包括:空和非空;所述尾指针RAM的大小/深度可依据实际情况进行设定,优选的,所述尾指针RAM的深度等于队列数,在本实施例中,所述尾指针RAM的深度为256个地址,初始化所述尾指针RAM后的最高比特为1或全为1,可知初始化的队列状态为空;
相应的,还存在头指针RAM用于存储所有队列的队列头指针,并指示每个队列的队列状态;其中,所述队列状态包括:空和非空;所述头指针RAM的大小/深度可依据实际情况进行设定,优选的,所述头指针RAM的深度等于队列数,在本实施例中,所述头指针RAM的深度为256个地址,初始化所述头指针RAM后的最高比特为1或全为1,可知初始化的队列状态为空;
所述指针链表RAM用于存储所述指针链表,使队列指针链表及空闲指针链表共享一块RAM,由此可以不用单独的先入先出队列(FIFO,First Input FirstOutput)来存储空闲指针,节省了硬件资源;所述指针链表RAM大小可依据实际需要进行设定,在一实施例中,所述片内RAM的大小为4k,所述指针链表包括了指向下一个地址的指针,初始化为一张空指针链表,如图2所示,ptr RAM为指针链表RAM,对其进行初始化,ptr RAM的地址从0~8191,ptr RAM中存储的内容是下一个地址值,由此形成一张指针链表形式;所述指针链表包括非空闲指针及空闲指针;其中,所述非空闲指针的数目表征了片内RAM及片外DDR中报文描述符所占用的地址的总数目,每入队一次报文描述符,非空闲指针的数目加一,相应的,每出队一次报文描述符,非空闲指针的数目减一;所述片内RAM与所述指针链表RAM的一部分存在一一对应关系,所述片内RAM中为报文描述符信息,所述指针链表RAM中为对应的地址信息;如图3所示为本发明实施例各个RAM间数据关系示意图;
在图3中,head_ptr ram为头指针RAM,tail_ptr ram为尾指针RAM,ptr ram为指针链表RAM,desc ram为片内RAM;其中,指针链表RAM中黑色的为一个队列中的队列成员,共有6个队列成员,为了便于说明,按顺序分别标记为1至6(均为虚拟标记),前一个数据块中存储的是后一个数据块的地址信息,因为标号6是该队列的最后一个数据,因此该指针链表RAM中的数据为无效数据;根据头指针及尾指针可知该队列的队列号为11,标号1对应的数据块的地址由头指针RAM地址11存储的值确定,标号6对应的数据块地址由尾指针RAM地址11中存储的值确定。
进一步的,所述第二处理模块52获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符,包括:
所述第二处理模块52提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列头指针,确定所述队列头指针在所述指针链表中的位置处于片外DDR时,计算片外DDR地址,依据得到的片外DDR地址读取片外DDR中对应的报文描述符;
确定所述队列头指针在所述指针链表中的位置处于片内RAM时,依据所述队列号读取片内RAM中对应的报文描述符。
进一步的,确定当前的操作请求为报文描述符的出队操作请求时,所述第二处理模块52更新指针链表信息包括:
所述第二处理模块52提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列头指针及空闲尾指针,更新所述空闲尾指针指向所述队列头指针当前所指示的地址,然后将所述队列头指针指向所述指针链表中的下一个地址。
在本发明实施例中,所述第一处理模块51及第二处理模块52均可由服务器中的中央处理器(CPU,Central Processing Unit)或数字信号处理器(DSP,Digital Signal Processor)、或现场可编程门阵列(FPGA,Field Programmable GateArray)、或集成电路(ASIC,Application Specific Integrated Circuit)实现。
以上所述,仅为本发明较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种队列管理方法,其特征在于,所述方法包括:
确定当前的操作请求为报文描述符的入队操作请求,依据所述入队操作请求及片内随机存取存储器RAM的缓存情况,将所述报文描述符存储至片外双倍速率同步动态随机存储器DDR或片内RAM,并更新指针链表信息;
确定当前的操作请求为报文描述符的出队操作请求,获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符,并更新指针链表信息;其中,所述位置信息包括片内RAM位置信息及片外DDR位置信息。
2.根据权利要求1所述方法,其特征在于,所述依据所述入队操作请求及片内RAM的缓存情况,将所述报文描述符存储至片外DDR或片内RAM包括:
依据所述入队操作请求确定当前片内RAM的缓存已达上限时,计算片外DDR地址,并依据得到的片外DDR地址将所述报文描述符存储至片外DDR;
确定当前片内RAM的缓存未达到上限时,提取所述入队操作请求中的队列号,并依据所述队列号将所述报文描述符存储至片内RAM。
3.根据权利要求1或2所述方法,其特征在于,确定当前的操作请求为报文描述符的入队操作请求时,所述更新指针链表信息包括:
提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列尾指针及空闲头指针,更新所述队列尾指针指向所述空闲头指针当前所指示的地址,然后将所述空闲头指针指向所述指针链表中的下一个地址。
4.根据权利要求1或2所述方法,其特征在于,确定当前的操作请求为报文描述符的出队操作请求时,所述更新指针链表信息包括:
提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列头指针及空闲尾指针,更新所述空闲尾指针指向所述队列头指针当前所指示的地址,然后将所述队列头指针指向所述指针链表中的下一个地址。
5.根据权利要求1或2所述方法,其特征在于,所述获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符包括:
提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列头指针,确定所述队列头指针在所述指针链表中的位置处于片外DDR时,计算片外DDR地址,依据得到的片外DDR地址读取片外DDR中对应的报文描述符;
确定所述队列头指针在所述指针链表中的位置处于片内RAM时,依据所述队列号读取片内RAM中对应的报文描述符。
6.一种队列管理装置,其特征在于,所述装置包括:第一处理模块及第二处理模块;其中,
所述第一处理模块,用于确定当前的操作请求为报文描述符的入队操作请求,依据所述入队操作请求及片内随机存取存储器RAM的缓存情况,将所述报文描述符存储至片外双倍速率同步动态随机存储器DDR或片内RAM,并更新指针链表信息;
所述第二处理模块,用于确定当前的操作请求为报文描述符的出队操作请求,获取所述出队操作请求对应的队列头指针在所述指针链表中的位置信息,依据所述位置信息读取对应的报文描述符,并更新指针链表信息;其中,所述位置信息包括片内RAM位置信息及片外DDR位置信息。
7.根据权利要求6所述装置,其特征在于,所述第一处理模块,具体用于依据所述入队操作请求确定当前片内RAM的缓存已达上限时,计算片外DDR地址,并依据得到的片外DDR地址将所述报文描述符存储至片外DDR;
确定当前片内RAM的缓存未达到上限时,提取所述入队操作请求中的队列号,并依据所述队列号将所述报文描述符存储至片内RAM。
8.根据权利要求6或7所述装置,其特征在于,所述第一处理模块,具体用于提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列尾指针及空闲头指针,更新所述队列尾指针指向所述空闲头指针当前所指示的地址,然后将所述空闲头指针指向所述指针链表中的下一个地址。
9.根据权利要求6或7所述装置,其特征在于,所述第二处理模块,具体用于提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列头指针及空闲尾指针,更新所述空闲尾指针指向所述队列头指针当前所指示的地址,然后将所述队列头指针指向所述指针链表中的下一个地址。
10.根据权利要求6或7所述装置,其特征在于,所述第二处理模块,具体用于提取所述入队操作请求中的队列号,依据所述队列号读取对应的队列头指针,确定所述队列头指针在所述指针链表中的位置处于片外DDR时,计算片外DDR地址,依据得到的片外DDR地址读取片外DDR中对应的报文描述符;
确定所述队列头指针在所述指针链表中的位置处于片内RAM时,依据所述队列号读取片内RAM中对应的报文描述符。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510241030.6A CN106302238A (zh) | 2015-05-13 | 2015-05-13 | 一种队列管理方法及装置 |
PCT/CN2015/092929 WO2016179968A1 (zh) | 2015-05-13 | 2015-10-27 | 一种队列管理方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510241030.6A CN106302238A (zh) | 2015-05-13 | 2015-05-13 | 一种队列管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106302238A true CN106302238A (zh) | 2017-01-04 |
Family
ID=57247731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510241030.6A Withdrawn CN106302238A (zh) | 2015-05-13 | 2015-05-13 | 一种队列管理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106302238A (zh) |
WO (1) | WO2016179968A1 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106982175A (zh) * | 2017-04-05 | 2017-07-25 | 数据通信科学技术研究所 | 一种基于ram的通信控制单元和通信控制方法 |
CN107025184A (zh) * | 2016-02-01 | 2017-08-08 | 深圳市中兴微电子技术有限公司 | 一种数据管理方法及装置 |
CN108632171A (zh) * | 2017-09-07 | 2018-10-09 | 北京视联动力国际信息技术有限公司 | 一种基于视联网的数据处理方法和装置 |
CN109474543A (zh) * | 2017-09-07 | 2019-03-15 | 深圳市中兴微电子技术有限公司 | 一种队列资源管理方法、装置及存储介质 |
CN109656515A (zh) * | 2018-11-16 | 2019-04-19 | 深圳证券交易所 | 队列消息的操作方法、装置和存储介质 |
CN109697022A (zh) * | 2017-10-23 | 2019-04-30 | 深圳市中兴微电子技术有限公司 | 一种报文描述符pd的处理方法、装置及计算机可读存储介质 |
CN111459417A (zh) * | 2020-04-26 | 2020-07-28 | 中国人民解放军国防科技大学 | 一种面向NVMeoF存储网络的无锁传输方法及系统 |
CN112822126A (zh) * | 2020-12-30 | 2021-05-18 | 盛科网络(苏州)有限公司 | 报文存储方法、报文出入队列方法及存储调度装置 |
CN113157465A (zh) * | 2021-04-25 | 2021-07-23 | 无锡江南计算技术研究所 | 基于指针链表的消息发送方法及装置 |
CN114785714A (zh) * | 2022-03-01 | 2022-07-22 | 阿里巴巴(中国)有限公司 | 一种报文传输时延检测方法、存储介质及设备 |
CN114817091A (zh) * | 2022-06-28 | 2022-07-29 | 井芯微电子技术(天津)有限公司 | 基于链表的fwft fifo系统、实现方法及设备 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306945B (zh) * | 2019-07-30 | 2023-05-12 | 安徽寒武纪信息科技有限公司 | 数据同步方法及装置以及相关产品 |
CN111124355B (zh) * | 2019-12-12 | 2023-04-07 | 东软集团股份有限公司 | 信息处理方法、装置、可读存储介质及电子设备 |
CN111143065B (zh) * | 2019-12-25 | 2023-08-22 | 杭州安恒信息技术股份有限公司 | 一种数据处理方法、装置、设备及介质 |
CN111488496B (zh) * | 2020-04-30 | 2023-07-21 | 湖北师范大学 | 一种基于滑动窗口的Tango树构建方法及系统 |
CN114244917B (zh) * | 2020-08-31 | 2023-06-02 | 华为技术有限公司 | 一种数据传输方法、装置及系统 |
CN112615796B (zh) * | 2020-12-10 | 2023-03-10 | 北京时代民芯科技有限公司 | 一种兼顾存储利用率与管理复杂度的队列管理系统 |
CN113225307B (zh) * | 2021-03-18 | 2022-06-28 | 西安电子科技大学 | 卸载引擎网卡中描述符预读取的优化方法、系统及终端 |
CN114610661B (zh) * | 2022-03-10 | 2024-06-11 | 北京百度网讯科技有限公司 | 数据处理装置、方法和电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499956A (zh) * | 2008-01-31 | 2009-08-05 | 中兴通讯股份有限公司 | 分级缓冲区管理系统及方法 |
US7822051B1 (en) * | 2007-10-24 | 2010-10-26 | Ethernity Networks Ltd. | Method and system for transmitting packets |
CN102130833A (zh) * | 2011-03-11 | 2011-07-20 | 中兴通讯股份有限公司 | 一种高速路由器流量管理芯片链表存储管理方法及系统 |
US8266344B1 (en) * | 2009-09-24 | 2012-09-11 | Juniper Networks, Inc. | Recycling buffer pointers using a prefetch buffer |
CN102957629A (zh) * | 2011-08-30 | 2013-03-06 | 华为技术有限公司 | 队列管理的方法和装置 |
CN103179050A (zh) * | 2011-12-20 | 2013-06-26 | 中兴通讯股份有限公司 | 数据包入队和出队管理方法及数据包处理装置 |
Family Cites Families (2)
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 |
US8542693B2 (en) * | 2007-08-01 | 2013-09-24 | Texas Instruments Incorporated | Managing free packet descriptors in packet-based communications |
-
2015
- 2015-05-13 CN CN201510241030.6A patent/CN106302238A/zh not_active Withdrawn
- 2015-10-27 WO PCT/CN2015/092929 patent/WO2016179968A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7822051B1 (en) * | 2007-10-24 | 2010-10-26 | Ethernity Networks Ltd. | Method and system for transmitting packets |
CN101499956A (zh) * | 2008-01-31 | 2009-08-05 | 中兴通讯股份有限公司 | 分级缓冲区管理系统及方法 |
US8266344B1 (en) * | 2009-09-24 | 2012-09-11 | Juniper Networks, Inc. | Recycling buffer pointers using a prefetch buffer |
CN102130833A (zh) * | 2011-03-11 | 2011-07-20 | 中兴通讯股份有限公司 | 一种高速路由器流量管理芯片链表存储管理方法及系统 |
CN102957629A (zh) * | 2011-08-30 | 2013-03-06 | 华为技术有限公司 | 队列管理的方法和装置 |
CN103179050A (zh) * | 2011-12-20 | 2013-06-26 | 中兴通讯股份有限公司 | 数据包入队和出队管理方法及数据包处理装置 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107025184A (zh) * | 2016-02-01 | 2017-08-08 | 深圳市中兴微电子技术有限公司 | 一种数据管理方法及装置 |
CN106982175B (zh) * | 2017-04-05 | 2019-08-23 | 数据通信科学技术研究所 | 一种基于ram的通信控制单元和通信控制方法 |
CN106982175A (zh) * | 2017-04-05 | 2017-07-25 | 数据通信科学技术研究所 | 一种基于ram的通信控制单元和通信控制方法 |
CN108632171A (zh) * | 2017-09-07 | 2018-10-09 | 北京视联动力国际信息技术有限公司 | 一种基于视联网的数据处理方法和装置 |
CN109474543A (zh) * | 2017-09-07 | 2019-03-15 | 深圳市中兴微电子技术有限公司 | 一种队列资源管理方法、装置及存储介质 |
CN109474543B (zh) * | 2017-09-07 | 2023-11-14 | 深圳市中兴微电子技术有限公司 | 一种队列资源管理方法、装置及存储介质 |
CN109697022A (zh) * | 2017-10-23 | 2019-04-30 | 深圳市中兴微电子技术有限公司 | 一种报文描述符pd的处理方法、装置及计算机可读存储介质 |
CN109697022B (zh) * | 2017-10-23 | 2022-03-04 | 深圳市中兴微电子技术有限公司 | 一种报文描述符pd的处理方法、装置及计算机可读存储介质 |
CN109656515A (zh) * | 2018-11-16 | 2019-04-19 | 深圳证券交易所 | 队列消息的操作方法、装置和存储介质 |
CN111459417B (zh) * | 2020-04-26 | 2023-08-18 | 中国人民解放军国防科技大学 | 一种面向NVMeoF存储网络的无锁传输方法及系统 |
CN111459417A (zh) * | 2020-04-26 | 2020-07-28 | 中国人民解放军国防科技大学 | 一种面向NVMeoF存储网络的无锁传输方法及系统 |
CN112822126A (zh) * | 2020-12-30 | 2021-05-18 | 盛科网络(苏州)有限公司 | 报文存储方法、报文出入队列方法及存储调度装置 |
CN112822126B (zh) * | 2020-12-30 | 2022-08-26 | 苏州盛科通信股份有限公司 | 报文存储方法、报文出入队列方法及存储调度装置 |
CN113157465B (zh) * | 2021-04-25 | 2022-11-25 | 无锡江南计算技术研究所 | 基于指针链表的消息发送方法及装置 |
CN113157465A (zh) * | 2021-04-25 | 2021-07-23 | 无锡江南计算技术研究所 | 基于指针链表的消息发送方法及装置 |
CN114785714A (zh) * | 2022-03-01 | 2022-07-22 | 阿里巴巴(中国)有限公司 | 一种报文传输时延检测方法、存储介质及设备 |
CN114785714B (zh) * | 2022-03-01 | 2023-08-22 | 阿里巴巴(中国)有限公司 | 一种报文传输时延检测方法、存储介质及设备 |
CN114817091A (zh) * | 2022-06-28 | 2022-07-29 | 井芯微电子技术(天津)有限公司 | 基于链表的fwft fifo系统、实现方法及设备 |
CN114817091B (zh) * | 2022-06-28 | 2022-09-27 | 井芯微电子技术(天津)有限公司 | 基于链表的fwft fifo系统、实现方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2016179968A1 (zh) | 2016-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106302238A (zh) | 一种队列管理方法及装置 | |
CN108234348B (zh) | 一种队列操作中的处理方法及装置 | |
EP3166269B1 (en) | Queue management method and apparatus | |
US11425057B2 (en) | Packet processing | |
WO2016078313A1 (zh) | 数据写入方法及装置 | |
EP3206123B1 (en) | Data caching method and device, and storage medium | |
CN107613529B (zh) | 消息处理方法以及基站 | |
US20220066699A1 (en) | Data read/write method and apparatus, and exchange chip and storage medium | |
WO2015184706A1 (zh) | 统计计数设备及其实现方法、具有统计计数设备的系统 | |
CN107783727B (zh) | 一种内存设备的访问方法、装置和系统 | |
CN103888377A (zh) | 报文缓存方法及装置 | |
CN110457251A (zh) | 一种多处理器间的数据通信方法及装置 | |
CN112698959A (zh) | 一种多核通信方法和装置 | |
CN101197786B (zh) | 缓存管理方法和缓存管理系统 | |
CN114945009A (zh) | PCIe总线连接的设备间进行通信的方法、设备及系统 | |
CN104065588A (zh) | 一种数据包调度和缓存的装置及方法 | |
CN103533090A (zh) | 单个物理网口模拟为多个逻辑网口的映射方法与装置 | |
CN115827506A (zh) | 数据写入方法、数据读取方法、装置、处理核和处理器 | |
CN106254270A (zh) | 一种队列管理方法及装置 | |
CN108090018A (zh) | 数据交换方法及系统 | |
CN100512218C (zh) | 一种数据报文的发送方法 | |
CN104052831A (zh) | 一种基于队列的数据传输方法、装置及通信系统 | |
CN112306693A (zh) | 数据包的处理方法和设备 | |
CN102055671A (zh) | 一种多应用发包的优先级管理方法 | |
CN107846328B (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20170104 |