CN102957629B - 队列管理的方法和装置 - Google Patents

队列管理的方法和装置 Download PDF

Info

Publication number
CN102957629B
CN102957629B CN201110252554.7A CN201110252554A CN102957629B CN 102957629 B CN102957629 B CN 102957629B CN 201110252554 A CN201110252554 A CN 201110252554A CN 102957629 B CN102957629 B CN 102957629B
Authority
CN
China
Prior art keywords
logic query
queue
head pointer
message
logic
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
Application number
CN201110252554.7A
Other languages
English (en)
Other versions
CN102957629A (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.)
XFusion Digital 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 CN201110252554.7A priority Critical patent/CN102957629B/zh
Publication of CN102957629A publication Critical patent/CN102957629A/zh
Application granted granted Critical
Publication of CN102957629B publication Critical patent/CN102957629B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种队列管理的方法和装置。该队列管理的方法包括:报文进入实体队列时,依据所述实体队列对应的队列有效性标识确定由第一逻辑队列头指针所表示的第一逻辑队列和由第二逻辑队列头指针所表示的第二逻辑队列,其中所述第一逻辑队列和所述第二逻辑队列具有相同的尾指针;第一逻辑队列出队时,读取对应于所述第一逻辑队列头指针的调度参数信息;第二逻辑队列出队时,根据通过所述调度参数信息获得的最终调度结果读取报文描述符。从而,满足push型多层级调度器实现在调度前必须要先获取到调度参数信息然后才能进行队列调度选择的特殊功能需求,报文描述符仅需在调度器输出最终调度结果时才需从报文描述符表中读出,大大节省缓存资源。

Description

队列管理的方法和装置
技术领域
本发明实施例涉及通信业务服务质量,更具体地,涉及队列管理的方法和装置。
背景技术
QM(Queue Manager,队列管理器)作为实现通信业务QoS(Quality ofService,服务质量)特性的核心功能处理单元,需要与应用各种不同调度算法的调度器(scheduler)配合工作。多层级调度器有拉取(pull)型(从根(root)到叶(leaf))和推送(push)型(从leaf到root)两种基本的实现方式。
某些应用场景可能对调度算法的公平性指标要求较高,例如需要选择真正的基于虚拟时标比较的WFQ(Weighted Fair Queuing,加权公平队列)算法。在实现真正的比较贴近WFQ原始定义的调度器时,调度器需要首先获取到报文包长作为调度参数,然后才能开始从多个队列中进行比较、选择。这种WFQ调度器多采用push方式来实现。也就是,WFQ调度器需采用push方式实现,并且各层级子调度器在进行选择时必须要提前获取一些必要的调度参数信息(如报文包长)。
现有的与push型多层级调度器相配合的队列管理器使用传统的单链表队列管理器。这种传统的单链表队列管理器采用单EQ(enter queue,入队)单DQ(depart queue,出队)及一个头指针一个尾指针的单链表队列管理方式,将WFQ调度算法所需的调度参数信息以报文参数信息表形式存储在片内RAM(random access memory,随机存取存储器)中。实现QM的过程中,传统的push型多层级调度器需要把调度参数信息存储于片内,而且需要在各层级调度器之间传递报文描述符,这些都将对片内RAM资源产生巨大消耗。
发明内容
本发明实施例提供一种队列管理方法及队列管理装置,能够解决传统一头一尾单链表队列管理器在与push型多层级调度器配合时需要将部分表项内容反复存储于片内存储器而耗费大量片内缓存资源的问题。
一方面,一种队列管理的方法,包括:报文进入实体队列时,依据所述实体队列对应的队列有效性标识确定由第一逻辑队列头指针所表示的第一逻辑队列和由第二逻辑队列头指针所表示的第二逻辑队列,其中所述第一逻辑队列和所述第二逻辑队列具有相同的尾指针;第一逻辑队列出队时,读取对应于所述第一逻辑队列头指针的调度参数信息;第二逻辑队列出队时,根据通过所述调度参数信息获得的最终调度结果读取报文描述符。
另一方面,一种队列管理的装置,包括:入队单元,用于在报文进入实体队列时,依据所述实体队列对应的队列有效性标识确定由第一逻辑队列头指针所表示的第一逻辑队列和由第二逻辑队列头指针所表示的第二逻辑队列,其中所述第一逻辑队列和所述第二逻辑队列具有相同的尾指针;第一逻辑队列出队单元,用于在第一逻辑队列出队时,读取对应于所述第一逻辑队列头指针的调度参数信息;第二逻辑队列出队单元,用于在第二逻辑队列出队时,根据通过所述调度参数信息获得的最终调度结果读取报文描述符。
本发明实施例利用双逻辑队列,满足push型多层级调度器实现在调度前必须要先获取到调度参数信息然后才能进行队列调度选择的特殊功能需求,并且报文描述符仅需在调度器输出最终调度结果时才需从报文描述符表中读出,大大节省缓存资源。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的单实体队列双逻辑链表队列管理的示意图。
图2是根据本发明实施例的队列管理器与调度器关联关系的框图。
图3是根据本发明实施例的队列管理方法的流程示意图。
图4是根据本发明实施例的队列管理方法的确定两个逻辑队列的流程图。
图5是根据本发明实施例的队列管理方法的第一逻辑队列出队的流程图。
图6是根据本发明实施例的队列管理方法的第二逻辑队列出队的流程图。
图7是根据本发明实施例的队列管理装置的结构示意图。
图8是根据本发明实施例的队列管理装置中入队单元的结构示意图。
图9是根据本发明实施例的队列管理装置中第一逻辑队列出队单元的结构示意图。
图10是根据本发明实施例的队列管理装置中第二逻辑队列出队单元的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下将详细描述根据本发明实施例的基于单实体队列双逻辑链表的队列管理方法的实现。单实体队列双逻辑链表是指对每一个具体的实体队列而言都对应到两个逻辑链表。而这两个逻辑链表所对应的是同一个尾指针、两个头指针,即一个实体队列对应到两个逻辑队列。但对同一实体队列而言,总是一个逻辑队列出队在前,另一个逻辑队列出队在后。
图1是根据本发明实施例的单实体队列双逻辑链表队列管理的示意图。如图1所示,在由2个头指针和1个尾指针指示的双逻辑队列中,以Head1指针为头指针的逻辑队列包含5个报文,即报文A、报文B、报文C、报文W、报文X;而以Head0指针为头指针的逻辑队列仅包含3个报文,即报文C、报文W、报文X,其中头两个报文(即报文A和报文B)已出队。
从物理上来讲,每个实体队列对应到一条链表。然而,从逻辑上来讲,此实体队列表现为2个独立的逻辑链表,从而分别对应于2个逻辑链表的第一逻辑队列和第二逻辑队列各自独立地进行报文出队。
图2是根据本发明实施例的QM与调度器关联关系的框图。其中入队适配模块和出队适配模块完成队列管理器QM及调度器从输入输出时序到FIFO(First Input First Output,先入先出)时序的转换。QDRC(QDR controller)是QDR控制器,其中QDR是QDR SRAM(Quad Data Rate Static Random AccessMemory,四倍数据速率静态随机存取存储器)的缩写,QDR SRAM用于存储QM各表项及调度算法所需的各报文的参数信息。使用单实体队列双逻辑链表的队列管理器与调度器之间的配合关系如图2所示。从图2中可以看出,dq0位于调度器与QM之间,表示第一逻辑队列出队;dq1位于出队适配模块与QM之间,表示第二逻辑队列出队。
下表1说明根据本发明实施例的QM的表项结构。
[表1]
 Head1_Table  Head1
 Head0_Table  pkt_len,Head0
 Tail_Table  Tail
 Packet_Descriptor_Table  Pkt_des
 Link_Table  Link_vld,pkt_len,Next_ptr
从表1中可以看到各表与其中存储的表项的对应关系。在第二逻辑队列头指针表Head1_Table中存储第二逻辑队列头指针Head1,在第一逻辑队列头指针表Head0_Table中存储第一逻辑队列头指针Head0和调度参数信息(例如报文包长pkt_len),在尾指针表Tail_Table中存储尾指针Tail,在报文描述符表Packet_Descriptor_Table中存储报文描述符Pkt_des,在报文链表Link_Table中存储链表表项有效性标识Link_vld、报文包长pkt_len和下一个报文指针Next_ptr。
在本发明实施例中,由于QM的两个头指针表、尾指针表、报文链表以及报文描述符表占用庞大空间,为了节省芯片片内存储资源,可将QM各表项及调度算法所需的各报文的参数信息存储于片外RAM中,例如使用一片外挂QDR II SSRAM(synchronous static random access memory,同步静态随机存取存储器)来存储QM的上述表项。
另外片内还需使用队列有效性表Queue_valid,其中存储的每个队列有效性标识Queue_vld为2比特位宽,其中该标识的高位queue_valid1用于表示第二逻辑队列(以Head1来指示)是否非空,标识的低位queue_valid0用于表示第一逻辑队列(以Head0来指示)是否非空。
图3是根据本发明实施例的队列管理方法的流程示意图。
步骤301,报文进入实体队列时,依据所述实体队列对应的队列有效性标识,确定由第一逻辑队列头指针所表示的第一逻辑队列和由第二逻辑队列头指针所表示的第二逻辑队列,其中第一逻辑队列和第二逻辑队列具有相同的尾指针。
这里,上述队列有效性标识,例如,可以为2比特位宽,其中该标识的高位用于表示第二逻辑队列是否非空,该标识的低位用于表示第一逻辑队列是否非空。通常,设置标识位为0,代表该标识位所对应的逻辑队列是空队列;设置标识位为1,代表该标识位所对应的逻辑队列是非空队列。
由于第一逻辑队列和第二逻辑队列具有相同的尾指针和不同的头指针,从而两个逻辑队列具有不同的队列长度。例如,如图1中的一个例子。参照表1的表项结构可知,第一逻辑队列头指针存储于第一逻辑队列头指针表中,第二逻辑队列头指针存储于第二逻辑队列头指针表中,尾指针存储于队列尾指针表中。
在确定由第一逻辑队列头指针所表示的第一逻辑队列和由第二逻辑队列头指针所表示的第二逻辑队列过程中,首先,依据队列有效性标识将调度参数信息写入第一逻辑队列头指针表和/或报文链表;报文链表除了存储有调度参数信息外,还存储有链表表项有效性标识和下一个报文指针。之后,更新队列有效性标识,以分别表示由第一逻辑队列头指针所表示的第一逻辑队列和由第二逻辑队列头指针所表示的第二逻辑队列是否非空;最后,将报文描述符写入与报文链表对应的报文描述符表。特别是,在依据队列有效性标识将调度参数信息写入报文链表时,需要设置报文链表有效性标识为表示该报文链表的表项有效的值。链表表项有效性标识采用不同的取值来表示该链表表项是否有效,例如,取值为0时表示该链表表项无效,而取值为1则表示链表表项有效。
步骤302,第一逻辑队列出队时,读取对应于第一逻辑队列头指针的调度参数信息。
在对已确定的双逻辑队列进行出队的情况下,可以首先依据更新后的队列有效性标识从第一逻辑队列头指针表中读取对应于第一逻辑队列头指针的调度参数信息。之后,依据以第一逻辑队列头指针为地址从报文链表中读取的链表表项有效性标识,以报文链表中的下一个报文指针和调度参数信息更新第一逻辑队列头指针表中的第一逻辑队列头指针和调度参数信息,或者更新队列有效性标识的低位以指示所述第一逻辑队列为空队列。
在读取出调度参数信息后,调度器根据读取的调度参数信息通过调度算法确定最终的调度结果。
步骤303,第二逻辑队列出队时,根据通过调度参数信息获得的最终调度结果读取报文描述符。
具体地,依据更新后的队列有效性标识以第二逻辑队列头指针为地址从报文描述符表中读取报文描述符。再依据以第二逻辑队列头指针为地址从报文链表中读取的链表表项有效性标识,以报文链表中的下一个报文指针更新第二逻辑队列头指针表的第二逻辑队列头指针,或者更新队列有效性标识以指示第二逻辑队列为空队列。最后释放第二逻辑队列头指针。
由此可见,总是第一逻辑队列出队在前,第二逻辑队列出队在后。
通过报文进入实体队列时确定两个逻辑队列,可以利用这两个逻辑队列一前一后出队的操作满足push型多层级调度器实现在调度前必须要先获取到调度参数信息然后才能进行队列调度选择的特殊功能需求,并且报文描述符仅需在调度器输出最终调度结果时才需从报文描述符表中读出,大大节省缓存资源。
下面将结合图4至图6,通过入队、出队过程来详细描述根据本发明实施例的队列管理方法的具体过程。
图4是根据本发明实施例的确定两个逻辑队列的流程图。
首先,在步骤401,从空闲链表中弹出新的空闲头指针。同时,在步骤402,从尾指针表Tail_Table中读取队列尾指针Tail。再在步骤403中根据队列有效性表Queue_valid中读取到的队列有效性标识Queue_vld的低位queue_valid0判断第一逻辑队列头指针Head0所表示的第一逻辑队列是否为空。如果是空:说明本次入队报文为Head0所表示第一逻辑队列的第一个报文,则在步骤404,需要在第一逻辑队列头指针表Head0_Table中将第一逻辑队列指针Head0和报文包长pkt_len更新为空闲头指针和新入队报文包长;如果不为空:则说明本次入队报文不是第一个报文,需要继续结合队列有效性标识Queue_vld的高位queue_valid1判断决定下一步应该进行的操作。具体地,在步骤405,根据队列有效性表Queue_valid中读取到的队列有效性标识Queue_vld的高位queue_valid1判断第二逻辑队列头指针Head1所表示的第二逻辑队列是否为空。如果是空:说明本次入队报文为第二逻辑队列头指针Head1所表示的第二逻辑队列的第一个报文,则在步骤406,需要在第二逻辑队列头指针表Head1_Table中以空闲头指针更新第二逻辑队列头指针Head1;如果不为空:则说明本次入队报文不是第一个报文,则在步骤407,需要以尾指针Tail为地址把空闲头指针、新入队报文包长pkt_len写入报文链表Link_Table中,并置报文链表Link_Table中的链表表项有效性标识Link_vld以表示报文链表Link_Table的表项有效,例如链表表项有效性标识Link_vld的值为1,否则用链表表项有效性标识Link_vld的值为0表示报文链表Link_Table的表项无效。并在步骤408中将空闲头指针作为新的队列尾指针写入到尾指针表Tail_Table中。同时在步骤409,更新队列有效性标识Queue_vld的低位queue_valid0和高位queue_valid1,它们分别用来指示Head0和Head1所代表的两个逻辑队列是否非空。例如,取值0表示为空,取值1表示非空。步骤410,最后需要将新入队报文描述符写入报文描述符表Pkt_Descriptor_Table。
以下将结合图5和图6具体描述如何基于两个逻辑队列实现满足先获取调度参数信息然后才进行队列调度选择的功能需求。
图5是根据本发明实施例的队列管理方法的第一逻辑队列出队的流程图。如图5所示,首先,在步骤501,从第一逻辑队列头指针表Head0_Table中读取第一逻辑队列头指针Head0,接着,在步骤502结合从队列有效性表Queue_valid中读取到的队列有效性标识Queue_vld的低位queue_valid0判断第一逻辑队列头指针Head0所表示的第一逻辑队列是否为空。如果为空,则在步骤503中表示第一逻辑队列已空,本次调度为空调度;如果为非空,则在步骤504中读取第一逻辑队列头指针Head0所对应的调度参数信息,如报文包长Pkt_len。然后,在步骤505,以第一逻辑队列头指针Head0为地址读取报文链表Link_Table的链表表项有效性标识Link_vld。如果该标识Link_vld为1,则在步骤506中以从报文链表Link_Table中读出的调度参数信息(如报文包长pkt_len)和下一个报文指针Next_ptr更新第一逻辑队列头指针表Head0_Table中的报文包长pkt_len和第一队列头指针Head0。如果该标识Link_vld为0,则在步骤507中更新队列有效性标识Queue_vld的低位queue_valid0,指示第一逻辑队列为空。
图6是根据本发明实施例的队列管理方法的第二逻辑队列出队的流程图。如图6所示,首先,在步骤601,从第二逻辑队列头指针表Head1_Table中读取第二逻辑队列头指针Head1。接着,再在步骤602中从队列有效性表Queue_valid中读取队列有效性标识Queue_vld的高位queue_valid1。如果为空,则在步骤603中表示第二逻辑队列已空,本次调度为空调度;如果为非空,则在步骤604中以第二逻辑队列头指针Head1为地址从报文描述符表Packet_Descriptor_Table中读取报文描述符Pkt_des。接着,在步骤605,以第二逻辑队列头指针Head1为地址读取报文链表Link_Table的链表表项有效性标识Link_vld。如果该表项Link_vld为1,则在步骤606以报文链表Link_Table中读出的下一个报文指针Next_ptr更新第二逻辑队列头指针表Head1_Table中的第二逻辑队列头指针Head1。如果该链表表项有效性标识Link_vld为0,则在步骤607更新队列有效性标识Queue_vld的高位queue_valid1,指示该第二逻辑队列为空。最后,在步骤608以空闲尾指针为地址,将第二逻辑队列头指针Head1写入报文链表Link_Table中,此时总是将链表表项有效性标识Link_vld置为0,将空闲尾指针更新为第二逻辑队列头指针Head1。即,释放第二逻辑队列头指针。
根据本发明实施例的基于具有两个头指针和一个尾指针的双逻辑队列的队列管理方法,可满足push型多层级调度器实现时所需的双出队需求,即一个是调度器开始工作前需要提前获取队列的报文参数信息的出队需求,另一个是报文描述符出队需求。在保证QM性能的同时,节省了芯片片内内存空间。
下面将结合图7至图10,详细描述根据本发明实施例的队列管理装置的结构。
图7是根据本发明实施例的队列管理装置的结构示意图。如图7所示,队列管理装置70包括入队单元71、第一逻辑队列出队单元72和第二逻辑队列出队单元73。其中入队单元71用于在报文进入实体队列时,依据所述实体队列对应的队列有效性标识确定由第一逻辑队列头指针所表示的第一逻辑队列和由第二逻辑队列头指针所表示的第二逻辑队列,其中所述第一逻辑队列和所述第二逻辑队列具有相同的尾指针。第一逻辑队列出队单元72读取对应于所述第一逻辑队列头指针的调度参数信息。第二逻辑队列出队单元73根据通过所述调度参数信息获得的最终调度结果读取报文描述符。
可选地,设置队列有效性标识为2比特位宽,其中该标识的高位用于表示第二逻辑队列是否非空,该标识的低位用于表示第二逻辑队列是否非空。
图7的队列管理装置70可执行上述图3至图6的方法实施例的各个过程,为避免重复,不再赘述。
根据本发明实施例的队列管理装置可以实现两个逻辑队列一前一后出队的操作,从而满足push型多层级调度器实现在调度前必须要先获取到调度参数信息然后才能进行队列调度选择的特殊功能需求,并且报文描述符仅需在调度器输出最终调度结果时才需从报文描述符表中读出,大大节省缓存资源。
图8是根据本发明实施例的队列管理装置中入队单元的结构示意图。如图8所示,入队单元71包括写调度参数信息模块711、第一更新模块712和写报文描述符模块713。写调度参数信息模块711依据所述队列有效性标识将调度参数信息写入第一逻辑队列头指针表和/或报文链表。然后,第一更新模块712更新所述队列有效性标识。最后,写报文描述符模块713将报文描述符写入与所述报文链表对应的报文描述符表。可选地,入队单元还包括设置模块714,用于当调度参数信息写入报文链表时,设置报文链表的链表表项有效性标识为表示该报文链表的表项有效的值。
图9是根据本发明实施例的队列管理装置中第一逻辑队列出队单元的结构示意图。如图9所示,第一逻辑队列出队单元72包括第一读取模块721和第二更新模块722。第一读取模块721依据更新后的队列有效性标识从第一逻辑队列头指针表中读取对应于第一逻辑队列头指针的调度参数信息。然后,第二更新模块722依据以第一逻辑队列头指针为地址从报文链表中读取的链表表项有效性标识,以报文链表中的下一个报文指针和调度参数信息更新第一逻辑队列头指针表的第一逻辑队列头指针和调度参数信息,或者更新队列有效性标识以指示第一逻辑队列为空队列。
图10是根据本发明实施例的队列管理装置中第二逻辑队列出队单元的结构示意图。如图10所示,第二逻辑队列出队单元73包括第二读取模块731、第三更新模块732和释放模块733。第二读取模块731依据更新后的队列有效性标识以所述第二逻辑队列头指针为地址从所述报文描述符表中读取所述报文描述符。然后,第三更新模块732依据以第二逻辑队列头指针为地址从报文链表中读取的链表表项有效性标识,以报文链表中的下一个报文指针更新第二逻辑队列头指针表的第二逻辑队列头指针,或者更新队列有效性标识以指示第二逻辑队列为空队列。释放模块733用于在第三更新模块732更新第二逻辑队列头指针或队列有效性标识之后释放所述第二逻辑队列头指针。
由上述结构介绍可知,第一逻辑队列出队单元72的操作总是先于第二逻辑队列出队单元73的操作。
上述队列管理方法以及装置可应用于TM(traffic management,流量管理)处理芯片系统。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (18)

1.一种队列管理的方法,其特征在于,包括:
报文进入实体队列时,依据所述实体队列对应的队列有效性标识,确定由第一逻辑队列头指针所表示的第一逻辑队列和由第二逻辑队列头指针所表示的第二逻辑队列,其中所述第一逻辑队列和所述第二逻辑队列具有相同的尾指针;
第一逻辑队列出队时,读取对应于所述第一逻辑队列头指针的调度参数信息;
第二逻辑队列出队时,根据通过所述调度参数信息获得的最终调度结果读取报文描述符。
2.根据权利要求1所述的方法,其特征在于,所述确定由第一逻辑队列头指针所表示的第一逻辑队列和由第二逻辑队列头指针所表示的第二逻辑队列包括:
依据所述队列有效性标识将调度参数信息写入第一逻辑队列头指针表和/或报文链表;
更新所述队列有效性标识;
将报文描述符写入与所述报文链表对应的报文描述符表。
3.根据权利要求2所述的方法,其特征在于,在依据队列有效性标识将调度参数信息写入报文链表时,所述确定由第一逻辑队列头指针所表示的第一逻辑队列和由第二逻辑队列头指针所表示的第二逻辑队列还包括:设置报文链表的链表表项有效性标识为表示该报文链表的表项有效的值。
4.根据权利要求2或3所述的方法,其特征在于,在依据所述队列有效性标识将调度参数信息写入第一逻辑队列头指针表时,所述读取对应于所述第一逻辑队列头指针的调度参数信息包括:
依据更新后的所述队列有效性标识从所述第一逻辑队列头指针表中读取对应于所述第一逻辑队列头指针的所述调度参数信息。
5.根据权利要求4所述的方法,其特征在于,在所述读取对应于所述第一逻辑队列头指针的所述调度参数信息之后,所述方法还包括:依据以所述第一逻辑队列头指针为地址从所述报文链表中读取的链表表项有效性标识,以所述报文链表中的下一个报文指针和所述调度参数信息更新所述第一逻辑队列头指针表中的所述第一逻辑队列头指针和调度参数信息,或者更新所述队列有效性标识以指示所述第一逻辑队列为空队列。
6.根据权利要求2所述的方法,其特征在于,所述根据通过所述调度参数信息获得的最终调度结果读取报文描述符包括:
依据更新后的所述队列有效性标识以所述第二逻辑队列头指针为地址从所述报文描述符表中读取所述报文描述符。
7.根据权利要求6所述的方法,其特征在于,在所述读取所述报文描述符之后,所述方法还包括:依据以所述第二逻辑队列头指针为地址从所述报文链表中读取的链表表项有效性标识,以所述报文链表中的下一个报文指针更新所述第二逻辑队列头指针,或者更新所述队列有效性标识以指示所述第二逻辑队列为空队列。
8.根据权利要求7所述的方法,其特征在于,在更新所述第二逻辑队列头指针或者更新所述队列有效性标识之后,所述方法还包括:释放所述第二逻辑队列头指针。
9.根据权利要求1所述的方法,其特征在于,所述队列有效性标识为2比特位宽,其中所述队列有效性标识的高位用于表示所述第二逻辑队列是否非空,所述队列有效性标识的低位用于表示第一逻辑队列是否非空。
10.一种队列管理的装置,其特征在于,包括:
入队单元,用于在报文进入实体队列时,依据所述实体队列对应的队列有效性标识确定由第一逻辑队列头指针所表示的第一逻辑队列和由第二逻辑队列头指针所表示的第二逻辑队列,其中所述第一逻辑队列和所述第二逻辑队列具有相同的尾指针;
第一逻辑队列出队单元,用于在第一逻辑队列出队时,读取对应于所述第一逻辑队列头指针的调度参数信息;
第二逻辑队列出队单元,用于在第二逻辑队列出队时,根据通过所述调度参数信息获得的最终调度结果读取报文描述符。
11.根据权利要求10所述的装置,其特征在于,所述入队单元包括:
写调度参数信息模块,用于依据所述队列有效性标识将调度参数信息写入第一逻辑队列头指针表和/或报文链表;
第一更新模块,用于更新所述队列有效性标识;
写报文描述符模块,用于将报文描述符写入与所述报文链表对应的报文描述符表。
12.根据权利要求11所述的装置,其特征在于,所述入队单元还包括设置模块,用于设置报文链表的链表表项有效性标识为表示该报文链表的表项有效的值。
13.根据权利要求11或12所述的装置,其特征在于,所述第一逻辑队列出队单元包括:
第一读取模块,用于在依据所述队列有效性标识将调度参数信息写入第一逻辑队列头指针表时,依据更新后的所述队列有效性标识从所述第一逻辑队列头指针表中读取对应于所述第一逻辑队列头指针的所述调度参数信息。
14.根据权利要求13所述的装置,其特征在于,所述第一逻辑队列出队单元还包括:
第二更新模块,用于依据以所述第一逻辑队列头指针为地址从所述报文链表中读取的链表表项有效性标识,以所述报文链表中的下一个报文指针和所述调度参数信息更新所述第一逻辑队列头指针表的所述第一逻辑队列头指针和调度参数信息,或者更新所述队列有效性标识以指示所述第一逻辑队列为空队列。
15.根据权利要求11所述的装置,其特征在于,所述第二逻辑队列出队单元包括:
第二读取模块,用于依据更新后的所述队列有效性标识以所述第二逻辑队列头指针为地址从所述报文描述符表中读取所述报文描述符。
16.根据权利要求15所述的装置,其特征在于,所述第二逻辑队列出队单元还包括:
第三更新模块,用于依据以所述第二逻辑队列头指针为地址从所述报文链表中读取的链表表项有效性标识,以所述报文链表中的下一个报文指针更新所述第二逻辑队列头指针,或者更新所述队列有效性标识以指示所述第二逻辑队列为空队列。
17.根据权利要求16所述的装置,其特征在于,所述第二逻辑队列出队单元还包括:释放模块,用于释放所述第二逻辑队列头指针。
18.根据权利要求10所述的装置,其特征在于,所述队列有效性标识为2比特位宽,其中所述队列有效性标识的高位用于表示所述第二逻辑队列是否非空,所述队列有效性标识的低位用于表示第二逻辑队列是否非空。
CN201110252554.7A 2011-08-30 2011-08-30 队列管理的方法和装置 Active CN102957629B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110252554.7A CN102957629B (zh) 2011-08-30 2011-08-30 队列管理的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110252554.7A CN102957629B (zh) 2011-08-30 2011-08-30 队列管理的方法和装置

Publications (2)

Publication Number Publication Date
CN102957629A CN102957629A (zh) 2013-03-06
CN102957629B true CN102957629B (zh) 2015-07-08

Family

ID=47765876

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110252554.7A Active CN102957629B (zh) 2011-08-30 2011-08-30 队列管理的方法和装置

Country Status (1)

Country Link
CN (1) CN102957629B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104348750B (zh) * 2013-07-31 2019-07-26 中兴通讯股份有限公司 OpenFlow网络中QoS的实现方法及装置
CN106302238A (zh) * 2015-05-13 2017-01-04 深圳市中兴微电子技术有限公司 一种队列管理方法及装置
CN107153580B (zh) * 2016-03-04 2020-08-18 北京忆恒创源科技有限公司 获取队列精确状态的装置及其方法
CN105912273B (zh) * 2016-04-15 2019-05-24 成都欧飞凌通讯技术有限公司 一种报文共享储存管理的fpga实现方法
WO2020168563A1 (zh) * 2019-02-22 2020-08-27 华为技术有限公司 一种存储器的管理方法及装置
CN112070557B (zh) * 2020-09-16 2023-10-10 中国工商银行股份有限公司 一种可扩展计费规则的处理方法及装置
CN115242726B (zh) * 2022-07-27 2024-03-01 阿里巴巴(中国)有限公司 队列的调度方法和装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101009649A (zh) * 2006-01-24 2007-08-01 三星电子株式会社 网络处理器中的队列管理
CN101594302A (zh) * 2009-07-01 2009-12-02 华为技术有限公司 数据出队的方法及装置
CN101656658A (zh) * 2008-08-21 2010-02-24 中兴通讯股份有限公司 一种提高队列管理中出队效率的方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6987760B2 (en) * 2001-03-05 2006-01-17 International Business Machines Corporation High speed network processor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101009649A (zh) * 2006-01-24 2007-08-01 三星电子株式会社 网络处理器中的队列管理
CN101656658A (zh) * 2008-08-21 2010-02-24 中兴通讯股份有限公司 一种提高队列管理中出队效率的方法和装置
CN101594302A (zh) * 2009-07-01 2009-12-02 华为技术有限公司 数据出队的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
林闯等.基于Intel网络处理器的路由器队列管理:设计、实现与分析.《计算机学报》.2003,第26卷(第9期),第1068-1077页. *

Also Published As

Publication number Publication date
CN102957629A (zh) 2013-03-06

Similar Documents

Publication Publication Date Title
CN102957629B (zh) 队列管理的方法和装置
CN108549610A (zh) 一种NVMe扩展的实现方法及固态硬盘
CN101594299B (zh) 基于链表的交换网络中队列缓冲管理方法
CN103069757A (zh) 一种报文重组重排序方法、装置和系统
CN101150485A (zh) 一种零拷贝缓冲区队列网络数据发送的管理方法
CN102253898B (zh) 一种图像数据的内存管理方法及装置
CN106547612A (zh) 一种多任务处理方法及装置
EP2830269B1 (en) Message processing method and device
US8281103B2 (en) Method and apparatus for allocating storage addresses
CN111177017B (zh) 一种内存分配方法及装置
CN101150486A (zh) 一种零拷贝缓冲区队列网络数据接收的管理方法
EP3657744B1 (en) Message processing
CN106407224A (zh) 一种键值存储系统中文件压实的方法和装置
CN105653484A (zh) 一种数据分块压缩多通道传输方法
CN108462649B (zh) 降低onu中拥塞状态下高优先级数据传输时延的方法和装置
CN111949568A (zh) 一种报文处理方法、装置及网络芯片
CN101877666A (zh) 基于零拷贝方式的多应用程序报文接收方法和装置
CN101645935B (zh) 基于QoS指标和Web服务输出参数的Web服务组合方法和装置
CN111666344A (zh) 异构数据同步方法及装置
EP2846522B1 (en) Method and server for executing program
CN106254270A (zh) 一种队列管理方法及装置
CN103902228A (zh) 一种变长数据存取方法
CN111259014B (zh) 一种fpga的单向链表数据存储方法及系统
US8392466B2 (en) Method and apparatus for automated processing of a data stream
CN114625805B (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
TR01 Transfer of patent right

Effective date of registration: 20211220

Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province

Patentee after: Super fusion Digital Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right