CN108234348B - 一种队列操作中的处理方法及装置 - Google Patents
一种队列操作中的处理方法及装置 Download PDFInfo
- Publication number
- CN108234348B CN108234348B CN201611158994.5A CN201611158994A CN108234348B CN 108234348 B CN108234348 B CN 108234348B CN 201611158994 A CN201611158994 A CN 201611158994A CN 108234348 B CN108234348 B CN 108234348B
- Authority
- CN
- China
- Prior art keywords
- queue
- information
- descriptor
- message
- cache
- 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
- 238000003672 processing method Methods 0.000 title abstract description 38
- 238000012545 processing Methods 0.000 claims abstract description 89
- 238000013507 mapping Methods 0.000 claims abstract description 34
- 238000001514 detection method Methods 0.000 claims description 57
- 238000000034 method Methods 0.000 claims description 33
- 230000000694 effects Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000011897 real-time detection Methods 0.000 description 10
- 239000012634 fragment Substances 0.000 description 7
- 238000012546 transfer Methods 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
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/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/627—Queue scheduling characterised by scheduling criteria for service slots or service orders policing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种队列操作中的处理方法,包括:获取待处理的报文信息所属队列的队列号;在映射表中查询与所述队列号对应的队列描述符的存储位置信息和地址信息;根据所述队列描述符的存储位置信息和地址信息,获取队列描述符,将所述队列描述符搬移至寄存器中,并更新映射表中与所述队列号对应的队列描述符的存储位置信息和地址信息;根据所述队列描述符对所述待处理的报文信息进行队列操作,并在进行队列操作之后根据所述队列描述符、所述队列描述符更新后的存储位置信息和地址信息,对所述队列描述符进行更新。本发明还同时公开了一种队列操作的处理装置。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种队列操作中的处理方法及装置。
背景技术
在网络器件中,如网络处理器(Network Processor,NP)、交换接入(FabricAccess Processor,FAP)、交换机、网桥、或流量管理芯片均集成了队列管理功能,报文按队列进行处理。伴随着业务增长,网络器件需支持的队列数呈指数级增长,已达到512K甚至1M以上存储容量的队列,对于数量巨大的高密度队列进行排队管理的难度随之上升,队列和队列的标识符即队列描述符(Queue Descriptor,QD)的存储都需要占用大量存储容量,在保证性能的前提下,降低芯片成本是必须要考虑的问题。
现有技术中,已有专利文献描述采用低成本大容量的高密度片外缓存——动态随机存储器(DRAM),用来弥补片内缓存——静态随机存储器(SRAM)由于存储高密度队列和QD而导致存储容量不足的问题。例如专利文献US008180966B2《System and method foroperating a packet buffer in an intermediate node》提供了一种报文数据缓存方法,该方法采用DRAM结合小容量高速片内高速缓冲存储器(Cache)来存储队列和QD,解决了Cache存储容量不足的问题。每个队列在Cache中都有独立存储空间,Cache中存储若干队列的首报文的分片,并且QD也存储在Cache中,队列其余分片和尾分片则存储在DRAM中。新报文入队时,报文分片写入到存储在DRAM中的对应队列的尾部;新报文出队时,读取存储在Cache中的对应队列的首报文进行出队,如果存储在Cache中的报文分片已经全部出队,则会将新入队的报文分片存储在Cache中,或者会将存储在DRAM中的报文分片搬移至Cache中。
上述方法虽然从一定程度上弥补了SRAM存储队列和QD而导致存储容量不足的问题,然而,对于高密度队列,QD的存储也需要消耗大量的存储空间,例如有1M存储容量的队列数,每个队列的QD的存储容量需要80bit,则需要80Mbit存储容量的SRAM,如果所有的QD都存储在Cache中,则在现有工艺下实现成本巨大,因此,在队列操作中,对于QD的存储和处理方法需要改进。专利文献US7277990《Method and apparatus providing efficientqueue descriptor memory access》中提出了QD的存储处理改进方法。该改进方法中,QD存储在Cache或DRAM中,通过入队出队请求触发内容可寻址存储器(Content AddressableMemory,CAM),查询QD是否存储在Cache中,如果查询到,CAM返回QD在Cache中的存储地址,从Cache的对应存储地址中读取QD;如果未查询到,则从DRAM中读取QD,同时CAM将释放1个与触发操作无关队列的QD标签,腾出的QD标签表项存储新搬入的QD标签,排出的QD从Cache搬移至DRAM中。然而,该方法存在三个问题,第一,CAM的读写带宽不能任意扩展,当对CAM频繁写入时,此时CAM维护的队列号频繁变化,势必会影响CAM检索的效率;第二,同样容量的CAM比Cache占用更大的面积,功耗更大,CAM不能同时支持足够多的QD标签,故放在Cache的QD数量会受到CAM容量影响;第三,高速高性能流量管理需要大容量大操作带宽的片内QD存储,Cache不能同时支持大容量和大读写带宽。可见,队列操作中,该方法由于需要频繁访问Cache和DRAM来获取QD,从而导致QD的存取效率低。
因此,为解决在队列操作中QD存取效率低的问题,亟需寻找一种在队列操作中的处理方法。
发明内容
为解决现有存在的问题,本发明实施例期望提供一种队列操作中的处理方法及装置,能够提高在队列操作中QD的存取效率,实现QD的快速存取。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种队列操作中的处理方法,所述方法包括:
获取待处理的报文信息所属队列的队列号;
在映射表中查询与所述队列号对应的队列描述符的存储位置信息和地址信息;
根据所述队列描述符的存储位置信息和地址信息,获取队列描述符,将所述队列描述符搬移至寄存器中,并更新映射表中与所述队列号对应的队列描述符的存储位置信息和地址信息;
根据所述队列描述符对所述待处理的报文信息进行队列操作,并在进行队列操作之后根据所述队列描述符、所述队列描述符更新后的存储位置信息和地址信息,对所述队列描述符进行更新。
上述方案中,所述根据所述队列描述符对所述待处理的报文信息进行队列操作,包括:
基于所述队列描述符和所述队列号,按照预设的拥塞避免策略,确定待处理的报文信息入队时,根据所述队列描述符对所述待处理的报文信息进行入队操作;或者,
根据所述队列描述符对待处理的报文信息进行出队操作。
上述方案中,当所述队列操作为入队操作时,所述根据所述队列描述符对所述待处理的报文信息进行队列操作,并在进行队列操作之后根据所述队列描述符、所述队列描述符更新后的存储位置信息和地址信息,对所述队列描述符进行更新,包括:
申请指向动态随机存储器的报文缓存指针;
根据所述报文缓存指针,将所述待处理的报文信息以及报文缓存指针存储至所述动态随机存储器中;
根据所述报文缓存指针和已入队操作的报文信息,更新所述队列描述符,并将更新后的队列描述符存储至目标地址中,所述目标地址为所述队列描述符更新后的存储位置信息和地址信息所确定的地址。
上述方案中,当所述队列操作为出队操作时,所述根据所述队列描述符对所述待处理的报文信息进行队列操作,并在进行队列操作之后根据所述队列描述符、所述队列描述符更新后的存储位置信息和地址信息,对所述队列描述符进行更新,包括:
根据所述队列描述符,在所述动态随机存储器读取待处理的报文信息和下一个正在排队的报文缓存指针,并将所述待处理的报文信息进行出队;
释放已出队的报文信息的报文缓存指针;
根据所述下一个正在排队的报文缓存指针和所述已出队操作的报文信息,更新所述队列描述符,并将更新后的队列描述符存储至目标地址中,所述目标地址为所述队列描述符更新后的存储位置信息和地址信息所确定的地址。
上述方案中,所述对所述队列描述符进行更新之后,所述方法还包括:
检测更新前的队列描述符对应队列的队列号;
当更新后的队列描述符对应队列的队列号与所有更新前的队列描述符对应队列的队列号都不一致时,将存储在所述寄存器中更新后的所述队列描述符搬移至高速缓冲存储器中;
更新映射表中与队列号对应的更新后的所述队列描述符的存储位置信息和地址信息。
上述方案中,所述方法还包括:
实时检测所述高速缓冲存储器的空间使用情况,获得第一检测结果;
当所述第一检测结果大于预设的第一阈值时,将存储在所述高速缓冲存储器中、且活跃度小于预设的第二阈值的队列的队列描述符搬移至动态随机存储器内;
释放搬移出所述高速缓冲存储器的队列描述符的指针。
上述方案中,所述方法还包括:
实时检测所述寄存器的空间使用情况,获得第二检测结果;
当第二检测结果大于预设的第三阈值时,停止输出所述待处理的报文信息中的报文描述符和对待处理的报文信息进行入队操作,直至第二检测结果小于预设的第四阈值时,恢复输出所述待处理的报文信息中的报文描述符和对待处理的报文信息进行入队操作,所述预设的第四阈值小于所述预设的第三阈值。
本发明实施例还提供了一种队列操作中的处理装置,所述装置包括:获取模块、查询模块、第一搬移模块和第一处理模块;其中,
所述获取模块,用于获取待处理的报文信息所属队列的队列号;
所述查询模块,用于在映射表中查询与所述队列号对应的队列描述符的存储位置信息和地址信息;
所述第一搬移模块,用于根据所述队列描述符的存储位置信息和地址信息,获取队列描述符,将所述队列描述符搬移至寄存器中,并更新映射表中与所述队列号对应的队列描述符的存储位置信息和地址信息;
所述第一处理模块,用于根据所述队列描述符对所述待处理的报文信息进行队列操作,并在进行队列操作之后根据所述队列描述符、所述队列描述符更新后的存储位置信息和地址信息,对所述队列描述符进行更新。
上述方案中,所述第一处理模块,具体用于基于所述队列描述符和所述队列号,按照预设的拥塞避免策略,确定待处理的报文信息入队时,根据所述队列描述符对所述待处理的报文信息进行入队操作;或者,根据所述队列描述符对待处理的报文信息进行出队操作。
上述方案中,当所述队列操作为入队操作时,所述第一处理模块包括:申请单元、存储单元和第一更新单元;其中,
所述申请单元,用于申请指向动态随机存储器的报文缓存指针;
所述存储单元,用于根据所述报文缓存指针,将所述待处理的报文信息以及报文缓存指针存储至所述动态随机存储器中;
所述第一更新单元,用于根据所述报文缓存指针和已入队操作的报文信息,更新所述队列描述符,并将更新后的队列描述符存储至目标地址中,所述目标地址为所述队列描述符更新后的存储位置信息和地址信息所确定的地址。
上述方案中,当所述队列操作为出队操作时,所述第一处理模块包括:读取单元、释放单元和第二更新单元;其中,
所述读取单元,用于根据所述队列描述符,在所述动态随机存储器读取待处理的报文信息和下一个正在排队的报文缓存指针,并将所述待处理的报文信息进行出队;
所述释放单元,用于释放已出队的报文信息的报文缓存指针;
所述第二更新单元,用于根据所述下一个正在排队的报文缓存指针和所述已出队操作的报文信息,更新所述队列描述符,并将更新后的队列描述符存储至目标地址中,所述目标地址为所述队列描述符更新后的存储位置信息和地址信息所确定的地址。
上述方案中,所述装置还包括:第一检测模块、第二搬移模块和更新映射表模块;其中,
所述第一检测模块,用于检测更新前的队列描述符对应队列的队列号;
所述第二搬移模块,用于当更新后的队列描述符对应队列的队列号与所有更新前的队列描述符对应队列的队列号都不一致时,将存储在所述寄存器中更新后的所述队列描述符搬移至高速缓冲存储器中;
所述更新映射表模块,用于更新映射表中与队列号对应的更新后的所述队列描述符的存储位置信息和地址信息。
上述方案中,所述装置还包括:第二检测模块、第三搬移模块和释放模块;其中,
所述第二检测模块,用于实时检测所述高速缓冲存储器的空间使用情况,获得第一检测结果;
所述第三搬移模块,用于当所述第一检测结果大于预设的第一阈值时,将存储在所述高速缓冲存储器中、且活跃度小于预设的第二阈值的队列的队列描述符搬移至动态随机存储器内;
所述释放模块,用于释放搬移出所述高速缓冲存储器的队列描述符的指针。
上述装置中,所述装置还包括:第三检测模块、第二处理模块;其中,
所述第三检测模块,用于实时检测所述寄存器的空间使用情况,获得第二检测结果;
所述第二处理模块,用于当第二检测结果大于预设的第三阈值时,停止输出所述待处理的报文信息中的报文描述符和对待处理的报文信息进行入队操作,直至第二检测结果小于预设的第四阈值时,恢复输出所述待处理的报文信息中的报文描述符和对待处理的报文信息进行入队操作,所述预设的第四阈值小于所述预设的第三阈值。
本发明实施例提供的队列操作中的处理方法及装置,首先,获取待处理的报文信息所属队列的队列号;然后,在映射(Map)表中查询与所述队列号对应的QD的存储位置信息和地址信息;根据所述QD的存储位置信息和地址信息,获取QD,将所述QD搬移至寄存器(Reg)中,并更新Map表中与所述队列号对应的QD的存储位置信息和地址信息;最后,根据所述QD对所述待处理的报文信息进行队列操作,并在进行队列操作之后根据所述QD、所述QD更新后的存储位置信息和地址信息,对所述QD进行更新。
可见,本发明实施例通过Map表查询与待处理的报文信息所属队列的队列号对应的QD的存储位置和存储地址;根据所述QD的存储位置和存储地址,从而获取QD,将所述QD搬移至Reg中,并更新Map中与所述队列号对应的QD的存储位置为Reg和存储地址为在Reg中的对应地址;根据所述QD对所述待处理的报文信息进行队列操作,在进行队列操作之后根据所述QD、所述QD更新后的存储位置和存储地址,对所述QD进行更新,从而保证了队列操作中的QD动态存取的实效性,提高了在队列操作中QD的存取效率,实现了QD的快速存取,保证了集成队列排队管理功能的***性能。
附图说明
图1为本发明队列操作中的处理方法实施例一的实现流程示意图之一;
图2为Map表中Reg、Cache以及DRAM间的映射关系示意图;
图3为本发明队列操作中的处理方法实施例一的实现流程示意图之二;
图4为本发明队列操作中的处理方法实施例一的实现流程示意图之三;
图5为本发明队列操作中的处理方法实施例二的实现流程示意图;
图6为Cache的使用空间的实时检测流程示意图;
图7为QD从Cache搬移至DRAM的实现流程示意图;
图8a为队列号与QD的映射关系示意图;
图8b为Cache活跃链表的结构示意图;
图8c为Cache空闲链表的结构示意图;
图9为Reg的使用空间的实时检测流程示意图;
图10为本发明队列操作中的处理方法实施例五的应用场景示意图之一;
图11为读取QD时的搬移流程示意图;
图12为本发明队列操作中的处理方法实施例五的应用场景示意图之二;
图13为本发明队列操作中的处理装置实施例一的组成结构示意图;
图14为图13所示处理装置中第一处理模块的细化组成结构示意图之一;
图15为图13所示处理装置中第一处理模块的细化组成结构示意图之二;
图16为本发明队列操作中的处理装置实施例二的组成结构示意图;
图17为Cache的使用空间的实时检测功能模块示意图;
图18为Reg的使用空间的实时检测功能模块示意图。
具体实施方式
本发明实施例提供的队列操作中的处理方法,主要应用在集成队列排队管理功能的***上,通过Map表查询与待处理的报文信息所属队列的队列号对应的QD的存储位置和存储地址;根据所述QD的存储位置和存储地址,从而获取QD,将所述QD搬移至Reg中,并更新Map中与所述队列号对应的QD的存储位置为Reg和存储地址为在Reg中的对应地址;根据所述QD对所述待处理的报文信息进行队列操作,在进行队列操作之后根据所述QD、所述QD更新后的存储位置和存储地址,对所述QD进行更新,能够提高队列操作中的QD的存取效率,实现QD的快速存取。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为本发明队列操作中的处理方法实施例一的实现流程示意图之一,参照图1所示,本实施例中队列操作中的处理方法包括以下步骤:
步骤101,获取待处理的报文信息所属队列的队列号;
这里,所述待处理的报文信息包括报文数据和报文描述符,所述报文描述符包括队列号和报文长度。
具体地,根据对待处理的报文信息进行队列操作的不同,获取队列号的方法也不同,队列操作包括入队操作和出队操作;在本实施例中,在入队操作中,从网络接收待处理的报文信息,根据报文信息中的报文描述符来确定队列号;在出队操作中,获取等待调度的端口信息和等待调度的队列信息,根据所述端口信息和队列信息,通过调度算法如RR调度算法或SP调度算法,计算得到队列号。
步骤102,在映射表中查询与所述队列号对应的队列描述符的存储位置信息和地址信息;
这里,所述Map表用来存储与队列号一一对应的QD的存储位置信息和地址信息;图2为Map表中Reg、Cache以及DRAM间的映射关系示意图,参照图2所示,Map表中每行表示与队列号对应的QD的存储位置信息和地址信息,如第一行序号“1”为队列号,“在Reg中”为与队列号1对应的QD的存储位置信息,表示与队列号1对应的QD存储在Reg中,“Reg pointer 5”为与队列号1对应的QD的地址信息,表示与队列号1对应的QD存储在Reg中pointer 5所指示的地址;在本实施例中,根据待处理的报文信息所属队列的队列号,在Map表查询与所述队列号对应的QD的存储位置信息和地址信息,存储位置信息表示与所述队列号对应的QD是存储在Reg中、还是Cache中、还是DRAM中,或QD显示队列为空,所述QD显示队列为空表示在Reg中、Cache中和DRAM中都不存在与所述队列号对应的QD;地址信息表示与所述队列号对应的QD的存储位置中的地址。
步骤103,根据所述队列描述符的存储位置信息和地址信息,获取队列描述符,将所述队列描述符搬移至寄存器中,并更新映射表中与所述队列号对应的队列描述符的存储位置信息和地址信息;
这里,基于所述QD的存储位置信息和地址信息确定一个具体地址,从确定的具体地址中读取QD;并根据所述QD的存储位置信息,将没有存储在Reg中的所述QD搬移至Reg中,更新Map表中与所述队列号对应的QD的存储位置信息为“在Reg中”,同时更新Map表中与所述队列号对应的QD的地址信息为“存储位置Reg中的地址”。
具体地,在本实施例中,根据所述QD的存储位置信息,判断所述QD是存储在Reg中、还是Cache中、还是DRAM中,或QD显示队列为空;当所述QD存储在Reg中时,则采用所述QD的地址信息中所指示的地址从Reg中读取QD,此时,由于所述队列描述存储在Reg中,不需要对其进行搬移操作和更新Map表操作;当所述QD存储在Cache中时,则采用所述QD的地址信息中所指示的地址从Cache中读取QD,此时,向Reg申请一个空闲地址,将存储在Cache中的所述QD搬移至Reg的所述空闲地址中,并更新Map表中与所述队列号对应的QD的存储位置信息和地址信息为“在Reg中,存储位置Reg中的地址”;当所述QD存储在DRAM中时,此时,所述QD的地址信息无意义,采用所述队列号从DRAM中与所述队列号对应的地址读取QD,向Reg中申请一个空闲地址,将存储在DRAM中的所述QD搬移至Reg的所述空闲地址中,并更新Map表中与所述队列号对应的QD的存储位置信息和地址信息为“在Reg中,存储位置Reg中的地址”;当所述QD显示队列为空时,此时,向Reg申请一个空闲地址,在所述空闲地址新建QD,并更新Map表中与所述队列号对应的QD的存储位置信息和地址信息为“在Reg中,存储位置Reg中的地址”。
步骤104,根据所述队列描述符对所述待处理的报文信息进行队列操作,并在进行队列操作之后根据所述队列描述符、所述队列描述符更新后的存储位置信息和地址信息,对所述队列描述符进行更新。
具体地,在入队操作中,从网络上接收待入队的报文信息,根据报文信息中的报文描述符确定队列号;或在出队操作中,获取等待调度的端口信息和等待调度的队列信息,根据所述端口信息和队列信息,通过调度算法如RR调度算法或SP调度算法,计算得到队列号;
在Map表查询与所述队列号对应的QD的存储位置信息和地址信息;
根据所述QD的存储位置信息,判断所述QD是存储在Reg中、还是Cache中、还是DRAM中,或QD显示队列为空;当所述QD存储在Reg中时,采用所述QD的地址信息中所指示的地址从Reg中读取QD;当所述QD存储在Cache中时,采用所述QD的地址信息中所指示的地址从Cache中读取QD,同时在Reg中申请一个空闲地址,将存储Cache中的所述QD搬移至Reg中的所述空闲地址中,并更新Map表中与所述队列号对应的QD的存储位置信息和地址信息为“在Reg中,存储位置Reg中的地址”;当所述QD存储在DRAM中时,此时,采用所述队列号从DRAM中与所述队列号对应的地址读取QD,同时在Reg中申请一个空闲地址,将存储在DRAM中的所述QD搬移至Reg中的所述空闲地址中,并更新Map表中与所述队列号对应的QD的存储位置信息和地址信息为“在Reg中,存储位置Reg中的地址”;当所述QD显示队列为空时,向Reg申请一个空闲地址,在所述空闲地址新建QD,并更新Map表中与所述队列号对应的QD的存储位置信息和地址信息为“在Reg中,存储位置Reg中的地址”;
根据所述QD对所述待处理的报文信息进行队列操作,并在进行队列操作之后根据所述QD、所述QD更新后的存储位置信息和地址信息,对所述QD进行更新。
可以理解的是,在队列操作中,根据Map表查询与队列号对应的QD的存储位置信息和地址信息,根据所述QD的存储位置信息和地址信息,获取QD;将所述QD搬移至Reg中,并更新Map表中与所述队列号对应的QD的存储位置信息和地址信息;根据所述QD、更新后的QD的存储位置信息和地址信息,对所述QD进行更新就能实现QD的快速存取是因为:Map表中存储着与队列号一一对应的QD的存储位置信息和地址信息,在队列操作中,通过查询Map表就能得到与所述队列号对应的QD的存储位置和存储地址,从而当QD存储在Cache或DRAM中时,只需要一次访问Cache或DRAM就能获取到QD,提高QD的获取效率,实现QD的快速获取;将存储在Cache或DRAM中的QD搬移至Reg中,并更新Map表中与所述队列号对应的QD的存储位置信息和地址信息,在队列操作之后,根据所述QD、所述QD更新后的存储位置信息和地址信息对所述QD进行更新,从而在更新所述QD时只需要访问Reg,提高QD的存储效率,实现QD的快速存储。
进一步地,图3为本发明队列操作中的处理方法实施例一的实现流程示意图之二,基于所述QD和所述队列号,按照预设的拥塞避免策略,确定待处理的报文信息入队时,根据所述QD对所述待处理的报文信息进行入队操作,参照图3所示,步骤104具体包括以下步骤:
步骤1041,申请指向动态随机存储器的报文缓存指针;
步骤1042,根据所述报文缓存指针,将所述待处理的报文信息以及报文缓存指针存储至所述动态随机存储器中;
步骤1043,根据所述报文缓存指针和已入队操作的报文信息,更新所述队列描述符,并将更新后的队列描述符存储至目标地址中,所述目标地址为所述队列描述符更新后的存储位置信息和地址信息所确定的地址。
这里,所述QD包括队列的首指针、队列的尾指针和队列深度,所述预设的拥塞避免策略可以为加权随机早期检测算法;在本实施例中,根据所述待处理的报文信息所属队列的QD和所述队列号,利用加权随机早期检测算法,判决所述待处理的报文信息是否入队;当判决报文信息不能入队时,将所述待处理的报文信息进行丢弃;当判决报文信息入队时,对所述待处理的报文信息进行入队操作。
具体地,根据所述QD和所述队列号,利用加权随机早期检测算法,确定报文信息入队时,申请指向DRAM的报文缓存指针;
将待处理的报文信息中的报文数据写入到报文缓存指针指向的DRAM报文数据缓存区域,将待处理的报文信息中的报文描述符写入到报文缓存指针指向的DRAM报文描述符缓存区域,并将报文缓存指针写入到DRAM报文缓存指针缓存区域;
对所述待处理的报文信息进行入队操作之后,将所述QD中的队列的尾指针更新为报文缓存指针,将所述QD中的队列深度更新为所述QD中的队列深度加上报文描述符中的报文长度,将更新后的QD存储至基于所述QD更新后的存储位置信息和地址信息所确定的地址中。
图4为本发明队列操作中的处理方法实施例一的实现流程示意图之三,当所述队列操作为出队操作时,参照图4所示,步骤104具体包括以下步骤:
步骤1044,根据所述队列描述符,在所述动态随机存储器读取待处理的报文信息和下一个正在排队的报文缓存指针,并将所述待处理的报文信息进行出队;
步骤1045,释放已出队的报文信息的报文缓存指针;
步骤1046,根据所述下一个正在排队的报文缓存指针和所述已出队操作的报文信息,更新所述队列描述符,并将更新后的队列描述符存储至目标地址中,所述目标地址为所述队列描述符更新后的存储位置信息和地址信息所确定的地址。
具体地,用QD中的队列的首指针从DRAM报文数据缓存区域读取报文数据,将报文数据进行出队,用QD中的队列的首指针从DRAM报文描述符缓存区域读取报文描述符,确定报文长度,用QD中的队列的首指针从DRAM报文缓存指针缓存区域读取报文缓存指针,并用QD中的队列的首指针从DRAM报文缓存指针缓存区域读取下一个在排队的报文缓存指针;
释放已出队的报文信息的报文缓存指针;
对所述待处理的报文信息进行出队操作之后,将所述QD中的队列的首指针更新为下一个在排队的报文缓存指针,将所述QD中的队列深度更新为所述QD中的队列深度减去报文描述符中的报文长度,将更新后的QD存储至基于所述QD更新后的存储位置信息和地址信息所确定的地址中。
图5为本发明队列操作中的处理方法实施例二的实现流程示意图,参照图5所示,本实施例的队列操作中的处理方法,是在本发明队列操作中的处理方法实施例一的步骤104之后还包括:
步骤105,检测更新前的队列描述符对应队列的队列号;
步骤106,当更新后的队列描述符对应队列的队列号与所有更新前的队列描述符对应队列的队列号都不一致时,将存储在所述寄存器中更新后的所述队列描述符搬移至高速缓冲存储器中;
步骤107,更新映射表中队列号对应的更新后的所述队列描述符的存储位置信息和地址信息。
基于实施例一中队列操作中的处理方法,在本实施例中,对入队操作中的处理方法的具体实现举例进行详细说明。
从网络上接收待处理的报文信息,根据所述待处理的报文信息中的报文描述符确定队列号为2和报文长度为128;
参照图2所示,在Map表查询到与队列号2对应的QD的存储位置信息为“在Cache中”和地址信息为“Cache pointer 1”,根据QD的存储位置信息和地址信息,确定QD存储在Cache中的指针pointer 1指向的地址1,从该地址中读取QD,在Reg中申请一个空闲地址6,将存储在Cache中的所述QD搬移至Reg中,并更新Map表中与所述队列号2对应的QD的存储位置信息和地址信息为“在Reg中,Reg pointer 6”;
根据所述QD和队列号2的出端口,利用加权随机早期检测算法,确定报文信息入队时,申请指向DRAM的报文缓存指针;
将待处理的报文信息中的报文数据写入到报文缓存指针指向的DRAM报文数据缓存区域,将待处理的报文信息中的报文描述符写入到报文缓存指针指向的DRAM报文描述符缓存区域,并将报文缓存指针写入到DRAM报文缓存指针缓存区域;
对待处理的报文信息进行入队操作之后,将与队列号2对应的QD中的队列的尾指针更新为报文缓存指针,将与队列号2对应的QD中的队列深度更新为与队列号2对应的QD中的队列深度加上报文长度128,将更新后的QD存储至Reg的地址6中;
更新与队列号2对应的QD之后,检测到更新前的QD对应的队列号为5和10;
队列号2与队列号5和队列号10都不一致,此时在Cache中申请一个空闲地址6,将存储在Reg的地址6中的QD搬移至Cache的地址6中;
更新Map表中与队列号2对应的QD的存储位置信息和地址信息为“在Cache中,Cache pointer 6”。
进一步地,基于实施例一中队列操作中的处理方法,在本实施例中,对出队操作中的处理方法的具体实现举例进行详细说明。
获取等待调度的端口信息和等待调度的队列信息,根据所述端口信息和队列信息,通过RR调度算法,计算得到队列号为65536;
参照图2所示,在Map表查询到与队列号65536对应的QD的存储位置信息为“在DRAM中”和地址信息为“Null”,此时,采用队列号65536从DRAM的地址65536中读取QD,在Reg中申请一个空闲地址7,将存储在DRAM中的所述QD搬移至Reg中,并更新Map表中与所述队列号65536对应的QD的存储位置信息和地址信息为“在Reg,Reg pointer 7”;
用所述QD中的队列的首指针从DRAM的报文数据缓存区域读取报文数据,并对报文数据进行出队,用所述QD中的队列的首指针从DRAM的报文描述符缓存区域读取报文描述符,确定报文长度为128,并用所述QD中的队列的首指针从DRAM的报文缓存指针缓存区域读取报文缓存指针和下一个正在排队的报文缓存指针;
释放已出队的报文数据的报文缓存指针;
进行出队操作之后,将与队列号65536对应的QD中的队列的首指针更新为下一个正在排队的报文缓存指针,将与队列号65536对应的QD中的队列深度更新为与队列号65536对应的QD中的队列深度减去报文长度128,将更新后的QD存储至Reg的地址7中;
更新与队列号65536对应的QD之后,检测到更新前的QD对应的队列号为4和9;
队列号65536与队列号4和队列号9都不一致,此时在Cache中申请一个空闲地址7,将存储在Reg的地址7中的QD搬移至Cache的地址7中;
更新Map表中与队列号65536对应的QD的存储位置信息和地址信息为“在Cache中,Cache pointer 7”。
进一步地,由于需要将正在进行队列操作处理的QD搬移至Reg中,同时需要将已完成队列操作处理并存储在Reg中的QD搬移至Cache中,因此,为了保证Cache有足够空间能够存储队列操作处理中的QD,保证队列操作处理的正常进行,在本发明队列操作中的处理方法实施例三中,还可以对Cache的使用空间进行实时检测。
图6为Cache的使用空间的实时检测流程示意图,参照图6所示,本发明队列操作中的处理方法还包括:
步骤201,实时检测所述高速缓冲存储器的空间使用情况,获得第一检测结果;
步骤202,当所述第一检测结果大于预设的第一阈值时,将存储在所述高速缓冲存储器中、且活跃度小于预设的第二阈值的队列的队列描述符搬移至动态随机存储器内,使得所述高速缓冲存储器的空间满足预设条件;
所述预设的第一阈值可以根据实际需要进行设置,例如该第一阈值的取值范围可以为90%到98%的百分值;在本实施例中,可以以第一阈值为95%为例进行详细说明。
将存储在Reg中的QD搬移至Cache中时,表示进行了一次队列操作处理,因此,在本实施例中,所述队列的活跃度可以以QD存储至Cache后的时间长短来划分,例如存储在Cache中最长时间没有进行队列操作处理的QD的队列的活跃度最低,可以设置为0,当检测到有QD从Reg搬移至Cache中时,说明有队列正在进行队列操作处理,此时队列活跃,可以设置队列的活跃度为10,其余的队列的活跃度可以设置为1到9的整数值。
所述预设的第二阈值可以根据实际需要进行设置,在本实施例中,可以以第二阈值为0.5为例进行详细说明。
步骤203,释放搬移出所述高速缓冲存储器的队列描述符的指针。
具体地,实时检测Cache的空间使用情况,获得第一检测结果;
当第一检测结果大于95%时,并且存储在Cache中的QD对应的队列的活跃度小于0.5时,将所述QD搬移至DRAM中;
释放搬移出Cache的所述QD的指针。
图7为QD从Cache搬移至DRAM的实现流程示意图,参照图7所示,QD从Cache搬移至DRAM的实现流程包括以下步骤:
步骤301,将存储在Cache中的所有QD对应的队列号建立一条双向链表;若有与队列号qN对应的QD从Reg释放到Cache中的触发事件,则执行步骤302;若有与队列号qM对应的QD从Cache搬移至Reg中的触发事件,则执行步骤303;
步骤302,将队列号qN加入到链表尾部,链表深度加1,执行步骤304;
步骤303,将队列号qM从链表中剔除,并连接好队列号qM的上下节点;
步骤304,检测链表深度即Cache中存在的QD对应的队列号的数量(即队列数量),判断链表深度是否大于预设的第一阈值,若链表深度大于预设的第一阈值,则执行步骤305,否则执行步骤307;
步骤305,将Cache活跃链表中的首队列号对应的QD搬移至DRAM中;
步骤306,释放搬移出Cache的所述QD的指针;
步骤307,不搬移Cache中的QD。
为说明当链表深度大于预设的第一阈值时,将Cache活跃链表中的首队列号对应的QD搬移至DRAM中的原因,首先对队列号与QD的映射关系、Cache活跃链表和Cache空闲链表进行介绍。
图8a为队列号与QD的映射关系示意图,参照图8a所示,Cache链表深度为1024,能够存储1024个队列号对应的QD,队列号qnum与Cache中的QD的映射深度为1024,队列号与Cache中QD存在一一对应关系,如图8a中Cache-qnum表所示。
图8b为Cache活跃链表的结构示意图,参照图8b所示,Cache活跃链表下一跳RAM深度为1024,每一个表项存储对应Cache指针的上一个节点(即上一个cache指针)和下一个节点(即下一个cache指针),并且Cache活跃链表中也包含了活跃链表的首指针和活跃链表的尾指针,指示活跃链表的首尾节点对应的Cache地址;在图8b中,Cache活跃链表节点数有4个,这4个节点分别表示Cache地址0、1、2和3的连接关系。
图8c为Cache空闲链表的结构示意图,参照图8c所示,Cache空闲链表包含空闲链表的首指针和空闲链表的尾指针,指示空闲链表的首尾节点对应的Cache空闲地址,Cache空闲链表下一跳RAM用来管理Cache的空闲地址。
然后,将进行队列操作处理的事件称为活跃事件,Cache活跃链表中的首队列号的队列是链表中所有队列号的队列当中最长时间没有发生过活跃事件的队列,即活跃度最低的队列,Cache活跃链表中的尾队列号的队列是最近发生过一次活跃事件的队列,因此,当链表深度大于预设的第一阈值时,将Cache活跃链表中的首队列号对应的QD搬移至DRAM中。
进一步地,结合图8a、图8b和图8c对QD从Cache搬移至DRAM的具体实现流程进行详细说明。
当检测到有与队列号n对应的QD从Reg搬移至Cache事件时,向Cache空闲链表申请地址cp,以cp为地址将QD写入到Cache中,将队列号n写入到Cache-qnum表中;针对Cache活跃链表下一跳RAM,以Cache活跃链表的尾指针为地址,将cp写入到下一个节点,以cp为地址将Cache活跃链表的尾指针写入到上一个节点,并将cp更新为活跃链表的尾指针,链表深度加1;
当检测到有与队列号m的QD从Cache中的地址cp'搬移至Reg事件时,从Cache中的地址cp'读取与队列号m对应的QD,同时在Reg空闲链表申请空闲地址将存储在Cache中的所述QD搬移至Reg中;以cp'为地址读取Cache活跃链表下一跳RAM,得到队列号m的上一跳x和下一跳y,以队列号x为地址将队列号y写入到下一个节点,以队列号y为地址将队列号x写入到上一个节点,即将队列号m从活跃链表中删除,将队列号x和队列号y连接起来,同时将Cache活跃链表深度减1;
预先设定支持的活跃队列数量即第一阈值为Cache_th,若Cache链表深度大于Cache_th,用Cache活跃链表的首指针读取存储在Cache中的QD和Cache-qnum表中的队列号,将所述队列号对应的QD搬移至DRAM中。
进一步地,为了保证Reg有足够空间能够存储队列操作处理的QD,保证队列操作处理的正常进行,在本发明队列操作中的处理方法实施例四中,还可以对Reg的使用空间进行实时检测。
图9为Reg的使用空间的实时检测流程示意图,参照图9所示,本发明队列操作中的处理方法还包括:
步骤401,实时检测所述寄存器的空间使用情况,获得第二检测结果;
步骤402,当第二检测结果大于预设的第三阈值时,停止输出所述待处理的报文信息中的报文描述符和对待处理的报文信息进行入队操作,直至第一检测结果小于预设的第四阈值时,恢复输出所述待处理的报文信息中的报文描述符和对待处理的报文信息进行入队操作,所述预设的第四阈值小于所述预设的第三阈值。
这里,所述预设的第三阈值可以根据实际需要进行设置,例如该第三阈值的取值范围可以为90%到98%的百分值;在本实施例中,可以以第三阈值为95%为例进行详细说明。
所述预设的第四阈值可以根据实际需要进行设置,例如该第四阈值的取值范围可以为80%到88%的百分值;在本实施例中,可以以第四阈值为85%为例进行详细说明。
具体地,实时检测Reg的空间使用情况,获得第二检测结果;
当第二检测结果大于95%时,停止输出报文信息中的报文描述符,并停止报文信息入队流程,直至第二检测结果小于85%时,恢复输出报文信息中的报文描述符,并恢复报文信息入队流程。
在本发明队列操作中的处理方法实施例五中,为说明本发明队列操作中的处理方法的实际应用,结合应用场景图对本发明队列操作中的处理方法进行详细阐述。
本发明队列操作的处理方法主要应用在网络器件队列管理***上,图10为本发明队列操作中的处理方法实施例五的应用场景示意图之一,参照图10所示,该应用场景包括入向报文缓存模块、出向报文缓存模块、拥塞避免模块、入队处理模块、队列调度模块、出队处理模块、报文缓存管理模块、Map表、QD管理模块以及QD缓存模块;其中,QD管理模块包括搬移管理模块,QD缓存模块包括DRAM、Reg和Cache。
首先结合图10介绍队列操作处理中读取QD时的搬移流程,图11为读取QD时的搬移流程示意图,参照图11所示,读取QD时的搬移流程具体包括以下步骤:
步骤501,Map表接收拥塞避免模块或入队模块或出队模块的查询请求信息,所述查询请求信息包括队列号;
步骤502,在Map表中查询与队列号对应的QD的存储位置信息和地址信息,发送给QD管理模块;
步骤503,QD管理模块中的搬移管理模块根据Map表查询到的QD的存储位置信息和地址信息,对QD进行处理,当QD的存储位置信息指示QD存储在Reg中时,执行步骤504;当QD的存储位置信息指示QD存储在Cache中时,执行步骤505;当QD的存储位置信息指示QD存储在DRAM中时,执行步骤508;
步骤504,从基于QD的存储位置信息和地址信息所确定的地址中获取QD,执行步骤5010;
步骤505,向Reg中申请空闲指针;
步骤506,从基于QD的存储位置信息和地址信息所确定的地址中获取QD,同时将存储在Cache中的QD搬移至Reg空闲指针指向的地址中;
步骤507,释放已搬移出Cache的所述QD的指针,执行步骤5010;
步骤508,向Reg中申请空闲指针;
步骤509,从基于QD的存储位置信息和地址信息所确定的地址中获取QD,同时将存储在DRAM中的QD搬移至Reg空闲指针指向的地址中;
步骤5010,将QD返回给拥塞避免模块或入队处理模块或出队处理模块。
然后结合图10介绍入队操作处理流程,从网络接收报文信息,存入入向报文缓存模块,将报文信息中的报文描述符发送给拥塞避免模块,拥塞避免模块根据所述报文描述符确定报文信息所属队列的队列号,并将所述队列号发送给Map表申请查询与所述队列号对应的QD;
Map表接收拥塞避免模块的查询申请,由查询申请触发Map表查询与所述队列号对应的QD的存储位置信息和地址信息,发送给QD管理模块;
QD管理模块从基于QD的存储位置信息和地址信息所确定的地址中获取QD,并由QD管理模块中的搬移管理模块将存储在Cache或DRAM中的QD搬移至Reg中;更新Map表中与所述队列号对应的QD的存储位置信息和地址信息,将所述QD、所述QD更新后的存储位置信息和地址信息发送给拥塞避免模块;
拥塞避免模块接收到所述QD和所述QD更新后的存储位置信息和地址信息后,读取所述队列号的出端口,根据所述QD和所述队列号的出端口,利用加权随机早期检测算法判决进入的报文信息是否可以入队,将判决结果、所述队列号的出端口、QD和报文信息中的报文描述符经过入队操作流水线发送给入队处理模块;并在判决结果指示报文信息不入队时,拥塞避免模块根据所述队列号判决是否需要将存储在Reg中的QD释放,当所述队列号与正在进行队列操作处理的队列号都不一致时,拥塞避免模块判决将存储在Reg中的QD释放,此时,搬移管理模块将存储在Reg中与所述队列号对应的QD搬移至Cache;
入队处理模块接收判决结果、所述队列号的出端口、所述QD和报文信息中的报文描述符,根据判决结果,对报文信息进行处理,当判决结果指示报文信息不入队时,入队处理模块从入向报文缓存模块读取报文数据后直接将报文数据丢弃;当判决结果指示将报文信息入队时,入队处理模块向Map表发起查询申请,获取与所述队列号对应的QD和所述QD更新后的存储位置信息和地址信息;
入队处理模块向报文缓存管理模块申请报文缓存指针,经入队操作流水线将报文信息写入到报文缓存指针指向的DRAM中;对报文信息进行入队操作处理之后,入队处理模块对所述QD进行更新,并将更新的QD存储至基于所述QD更新后的存储位置信息和地址信息所确定的地址中;入队处理模块处理完成后,入队的报文信息供队列调度模块调度;
拥塞避免模块根据所述队列号判决是否需要将存储在Reg中的与所述队列号对应的QD释放,当所述队列号与正在进行队列操作处理的队列号都不一致时,拥塞避免模块判决将存储在Reg中的QD释放,此时,搬移管理模块将存储在Reg中与所述队列号对应的QD搬移至Cache中。
最后结合图10介绍出队操作处理流程,队列调度模块获取等待调度的端口信息和队列信息,根据所述端口信息和队列信息,通过调度算法,计算得到队列号,发送给出队处理模块;
出队处理模块将所述队列号发送给Map表申请查询与所述队列号对应的QD;
Map表接收出队处理模块的查询申请,由查询申请触发Map表查询与所述队列号对应的QD的存储位置信息和地址信息,发送给QD管理模块;
QD管理模块从基于QD的存储位置信息和地址信息所确定的地址中获取QD,并由QD管理模块中的搬移管理模块将存储在Cache或DRAM中的QD搬移至Reg中;更新Map表中与所述队列号对应的QD的存储位置信息和地址信息,将所述QD、所述QD更新后的存储位置信息和地址信息发送给出队处理模块;
出队处理模块用QD中的队列的首指针读取DRAM中的报文信息、报文缓存指针和下一个正在排队的报文缓存指针;对报文信息进行出队操作处理之后,出队队处理模块对所述QD进行更新,并将更新的QD存储至基于所述QD更新后的存储位置信息和地址信息所确定的地址中;
拥塞避免模块根据所述队列号判决是否需要将存储在Reg中的与所述队列号对应的QD释放,当所述队列号与正在进行队列操作处理的队列号都不一致时,拥塞避免模块判决将存储在Reg中的QD释放,此时,搬移管理模块将存储在Reg中与所述队列号对应的QD搬移至Cache中。
为了保证Reg和Cache有足够空间能够存储队列操作处理的QD,搬移管理模块实时检测Reg和Cache的空间使用情况;当搬移管理模块检测到Cache的使用空间大于预设的第一阈值时,将Cache中活跃度最低的队列的QD搬移至DRAM中,释放搬移出Cache的QD的指针;当搬移管理模块检测到Reg的使用空间大于预设的第三阈值时,反压入向报文缓存模块,停止输出报文描述符,并停止报文信息入队流程,直到搬移管理模块检测到Reg的使用空间小于预设的第四阈值时,恢复输出报文描述符和报文信息入队流程。
进一步地,图12为本发明队列操作中的处理方法实施例五的应用场景示意图之二,参照图12所示,从网络上接收Cell,根据Cell携带的端口号,在Map表中查询与端口号对应的QD的存储位置信息和地址信息,从而从基于QD的存储位置信息和地址信息所确定的地址中读取QD,根据QD确定队列的尾指针和队列深度,其中端口号可等同于队列号;将Cell写入到队列尾部,更新对应QD中的队列的尾指针为当前入队Cell的存储地址,将QD中的队列深度加上当前入队Cell长度,将Cell数据写入到DRAM中Cell数据缓存区域,将Cell指针写入到DRAM中Cell指针缓存区域,此时,入队操作处理完成;出队时,按照队列间RR调度规则选择输出调度队列号,根据队列号,在Map表中查询与队列号对应的QD的存储位置信息和地址信息,从而从基于QD的存储位置信息和地址信息所确定的地址中读取QD,根据QD确定队列的首指针和队列深度,用队列的首指针从DRAM中读取Cell数据进行输出,用队列的首指针从DRAM中读取下一个正在排队的Cell指针,并将QD中的队列的首指针更新为该指针,将QD中的队列深度更新为QD中的队列深度减去当前出队Cell长度,此时,出队操作处理完成。
可见,本发明队列操作中的处理方法还可以应用在信元Cell按虚拟输出队列VOQ排队输出管理的装置上,因此,本发明队列操作中的处理方法的应用并不局限于网络器件队列管理***,所有集成队列排队管理功能的***或装置上都可应用。
本发明还提供一种队列操作中的处理装置,用于实现本发明队列操作中的处理方法的具体细节,达到相同的效果。
图13为本发明队列操作中的处理装置实施例一的组成结构示意图,参照图13所示,本实施例中队列操作中的处理装置包括:获取模块61、查询模块62、第一搬移模块63和第一处理模块64;其中,
所述获取模块61,用于获取待处理的报文信息所属队列的队列号;
所述查询模块62,用于在映射表中查询与所述队列号对应的队列描述符的存储位置信息和地址信息;
所述第一搬移模块63,用于根据所述队列描述符的存储位置信息和地址信息,获取队列描述符,将所述队列描述符搬移至寄存器中,并更新映射表中与所述队列号对应的队列描述符的存储位置信息和地址信息;
所述第一处理模块64,用于根据所述队列描述符对所述待处理的报文信息进行队列操作,并在进行队列操作之后根据所述队列描述符、所述队列描述符更新后的存储位置信息和地址信息,对所述队列描述符进行更新。
可选地,所述第一处理模块64,具体用于基于所述队列描述符和所述队列号,按照预设的拥塞避免策略,确定待处理的报文信息入队时,根据所述队列描述符对所述待处理的报文信息进行入队操作;或者,根据所述队列描述符对待处理的报文信息进行出队操作。
图14为图13所示处理装置中第一处理模块的细化组成结构示意图之一,参照图14所示,当所述队列操作为入队操作时,所述第一处理模块64包括:申请单元641、存储单元642和第一更新单元643;其中,
所述申请单元641,用于申请指向动态随机存储器的报文缓存指针;
所述存储单元642,用于根据所述报文缓存指针,将所述待处理的报文信息以及报文缓存指针存储至所述动态随机存储器中;
所述第一更新单元643,用于根据所述报文缓存指针和已入队操作的报文信息,更新所述队列描述符,并将更新后的队列描述符存储至目标地址中,所述目标地址为所述队列描述符更新后的存储位置信息和地址信息所确定的地址。
图15为图13所示处理装置中第一处理模块的细化组成结构示意图之二,参照图15所示,当所述队列操作为出队操作时,所述第一处理模块64包括:读取单元644、释放单元645和第二更新单元646;其中,
所述读取单元644,用于根据所述队列描述符,在所述动态随机存储器读取待处理的报文信息和下一个正在排队的报文缓存指针,并将所述待处理的报文信息进行出队;
所述释放单元645,用于释放已出队的报文信息的报文缓存指针;
所述第二更新单元646,用于根据所述下一个正在排队的报文缓存指针和所述已出队操作的报文信息,更新所述队列描述符,并将更新后的队列描述符存储至目标地址中,所述目标地址为所述队列描述符更新后的存储位置信息和地址信息所确定的地址。
图16为本发明队列操作中的处理装置实施例二的组成结构示意图,本实施例的队列操作中的处理装置除了包括获取模块61、查询模块62、第一搬移模块63和第一处理模块64外,还包括:第一检测模块65、第二搬移模块66和更新映射表模块67;其中,
所述第一检测模块65,用于检测更新前的队列描述符对应队列的队列号;
所述第二搬移模块66,用于当更新后的队列描述符对应队列的队列号与所有更新前的队列描述符对应队列的队列号都不一致时,将存储在所述寄存器中更新后的所述队列描述符搬移至高速缓冲存储器中;
所述更新映射表模块67,用于更新映射表中与队列号对应的更新后的所述队列描述符的存储位置信息和地址信息。
由于需要将正在进行队列操作处理的QD搬移至Reg中,同时需要将已完成队列操作处理并存储在Reg中的QD搬移至Cache中,因此,为了保证Cache有足够空间能够存储队列操作处理中的QD,保证队列操作处理的正常进行,在本发明队列操作中的处理装置实施例三中,还可以对Cache的使用空间进行实时检测。
具体地,图17为Cache的使用空间的实时检测功能模块示意图,参照图17所示,Cache的使用空间的实时检测功能模块包括:第二检测模块71、第三搬移模块72和释放模块73;其中,
所述第二检测模块71,用于实时检测所述高速缓冲存储器的空间使用情况,获得第一检测结果;
所述第三搬移模块72,用于当所述第一检测结果大于预设的第一阈值时,将存储在所述高速缓冲存储器中、且活跃度小于预设的第二阈值的队列的队列描述符搬移至动态随机存储器内;
所述释放模块73,用于释放搬移出所述高速缓冲存储器的队列描述符的指针。
为了保证Reg有足够空间能够存储队列操作处理的QD,保证队列操作处理的正常进行,在本发明队列操作中的处理装置实施例四中,还可以对Reg的使用空间进行实时检测。
具体地,图18为Reg的使用空间的实时检测功能模块示意图,参照图18所示,Reg的使用空间的实时检测功能模块包括:第三检测模块81、第二处理模块82;其中,
所述第三检测模块81,用于实时检测所述寄存器的空间使用情况,获得第二检测结果;
所述第二处理模块82,用于当第二检测结果大于预设的第三阈值时,停止输出所述待处理的报文信息中的报文描述符和对待处理的报文信息进行入队操作,直至第二检测结果小于预设的第四阈值时,恢复输出所述待处理的报文信息中的报文描述符和对待处理的报文信息进行入队操作,所述预设的第四阈值小于所述预设的第三阈值。
在实际应用中,所述获取模块61、查询模块62、第一搬移模块63、第一处理模块64、第一检测模块65、第二搬移模块66、更新映射表模块67、第二检测模块71、第三搬移模块72、释放模块73、第三检测模块81、第二处理模块82、以及申请单元641、存储单元642、第一更新单元643、读取单元644、释放单元645和第二更新单元646均可由位于移动终端中的中央处理器(CPU,Central Processing Unit)、微处理器(MPU,Micro Processor Unit)、数字信号处理器(DSP,Digital Signal Processor)、或现场可编程门阵列(FPGA,FieldProgrammable Gate Array)等实现。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
Claims (14)
1.一种队列操作中的处理方法,其特征在于,所述方法包括:
获取待处理的报文信息所属队列的队列号;
在映射表中查询与所述队列号对应的队列描述符的存储位置信息和地址信息,所述存储位置信息表示与所述队列号对应的队列描述符是存储在寄存器中、还是高速缓冲存储器中、还是动态随机存储器,或所述队列描述符显示队列为空,所述地址信息表示与所述队列号对应的队列描述符的存储位置信息中的地址;
根据所述队列描述符的存储位置信息和地址信息,获取队列描述符,当所述队列描述符显示队列为空或所述队列描述符存储在高速缓冲存储器或动态随机存储器时,将所述队列描述符搬移至寄存器中,并更新映射表中与所述队列号对应的队列描述符的存储位置信息和地址信息;
根据所述队列描述符对所述待处理的报文信息进行队列操作,并在进行队列操作之后根据所述队列描述符、所述队列描述符更新后的存储位置信息和地址信息,对所述队列描述符进行更新。
2.根据权利要求1所述的方法,其特征在于,所述根据所述队列描述符对所述待处理的报文信息进行队列操作,包括:
基于所述队列描述符和所述队列号,按照预设的拥塞避免策略,确定待处理的报文信息入队时,根据所述队列描述符对所述待处理的报文信息进行入队操作;或者,
根据所述队列描述符对待处理的报文信息进行出队操作。
3.根据权利要求2所述的方法,其特征在于,当所述队列操作为入队操作时,所述根据所述队列描述符对所述待处理的报文信息进行队列操作,并在进行队列操作之后根据所述队列描述符、所述队列描述符更新后的存储位置信息和地址信息,对所述队列描述符进行更新,包括:
申请指向动态随机存储器的报文缓存指针;
根据所述报文缓存指针,将所述待处理的报文信息以及报文缓存指针存储至所述动态随机存储器中;
根据所述报文缓存指针和已入队操作的报文信息,更新所述队列描述符,并将更新后的队列描述符存储至目标地址中,所述目标地址为所述队列描述符更新后的存储位置信息和地址信息所确定的地址。
4.根据权利要求2所述的方法,其特征在于,当所述队列操作为出队操作时,所述根据所述队列描述符对所述待处理的报文信息进行队列操作,并在进行队列操作之后根据所述队列描述符、所述队列描述符更新后的存储位置信息和地址信息,对所述队列描述符进行更新,包括:
根据所述队列描述符,在所述动态随机存储器读取待处理的报文信息和下一个正在排队的报文缓存指针,并将所述待处理的报文信息进行出队;
释放已出队的报文信息的报文缓存指针;
根据所述下一个正在排队的报文缓存指针和所述已出队的报文信息,更新所述队列描述符,并将更新后的队列描述符存储至目标地址中,所述目标地址为所述队列描述符更新后的存储位置信息和地址信息所确定的地址。
5.根据权利要求1所述的方法,其特征在于,所述对所述队列描述符进行更新之后,所述方法还包括:
检测更新前的队列描述符对应队列的队列号;
当更新后的队列描述符对应队列的队列号与所有更新前的队列描述符对应队列的队列号都不一致时,将存储在所述寄存器中更新后的所述队列描述符搬移至高速缓冲存储器中;
更新映射表中与队列号对应的更新后的所述队列描述符的存储位置信息和地址信息。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
实时检测所述高速缓冲存储器的空间使用情况,获得第一检测结果;
当所述第一检测结果大于预设的第一阈值时,将存储在所述高速缓冲存储器中、且活跃度小于预设的第二阈值的队列的队列描述符搬移至动态随机存储器内;
释放搬移出所述高速缓冲存储器的队列描述符的指针。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
实时检测所述寄存器的空间使用情况,获得第二检测结果;
当第二检测结果大于预设的第三阈值时,停止输出所述待处理的报文信息中的报文描述符和对待处理的报文信息进行入队操作,直至第二检测结果小于预设的第四阈值时,恢复输出所述待处理的报文信息中的报文描述符和对待处理的报文信息进行入队操作,所述预设的第四阈值小于所述预设的第三阈值。
8.一种队列操作中的处理装置,其特征在于,所述装置包括:获取模块、查询模块、第一搬移模块和第一处理模块;其中,
所述获取模块,用于获取待处理的报文信息所属队列的队列号;
所述查询模块,用于在映射表中查询与所述队列号对应的队列描述符的存储位置信息和地址信息,所述存储位置信息表示与所述队列号对应的队列描述符是存储在寄存器中、还是高速缓冲存储器中、还是动态随机存储器,或所述队列描述符显示队列为空,所述地址信息表示与所述队列号对应的队列描述符的存储位置信息中的地址;
所述第一搬移模块,用于根据所述队列描述符的存储位置信息和地址信息,获取队列描述符,当所述队列描述符显示队列为空或所述队列描述符存储在高速缓冲存储器或动态随机存储器时,将所述队列描述符搬移至寄存器中,并更新映射表中与所述队列号对应的队列描述符的存储位置信息和地址信息;
所述第一处理模块,用于根据所述队列描述符对所述待处理的报文信息进行队列操作,并在进行队列操作之后根据所述队列描述符、所述队列描述符更新后的存储位置信息和地址信息,对所述队列描述符进行更新。
9.根据权利要求8所述的装置,其特征在于,所述第一处理模块,具体用于基于所述队列描述符和所述队列号,按照预设的拥塞避免策略,确定待处理的报文信息入队时,根据所述队列描述符对所述待处理的报文信息进行入队操作;或者,根据所述队列描述符对待处理的报文信息进行出队操作。
10.根据权利要求9所述的装置,其特征在于,当所述队列操作为入队操作时,所述第一处理模块包括:申请单元、存储单元和第一更新单元;其中,
所述申请单元,用于申请指向动态随机存储器的报文缓存指针;
所述存储单元,用于根据所述报文缓存指针,将所述待处理的报文信息以及报文缓存指针存储至所述动态随机存储器中;
所述第一更新单元,用于根据所述报文缓存指针和已入队操作的报文信息,更新所述队列描述符,并将更新后的队列描述符存储至目标地址中,所述目标地址为所述队列描述符更新后的存储位置信息和地址信息所确定的地址。
11.根据权利要求9所述的装置,其特征在于,当所述队列操作为出队操作时,所述第一处理模块包括:读取单元、释放单元和第二更新单元;其中,
所述读取单元,用于根据所述队列描述符,在所述动态随机存储器读取待处理的报文信息和下一个正在排队的报文缓存指针,并将所述待处理的报文信息进行出队;
所述释放单元,用于释放已出队的报文信息的报文缓存指针;
所述第二更新单元,用于根据所述下一个正在排队的报文缓存指针和所述已出队的报文信息,更新所述队列描述符,并将更新后的队列描述符存储至目标地址中,所述目标地址为所述队列描述符更新后的存储位置信息和地址信息所确定的地址。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:第一检测模块、第二搬移模块和更新映射表模块;其中,
所述第一检测模块,用于检测更新前的队列描述符对应队列的队列号;
所述第二搬移模块,用于当更新后的队列描述符对应队列的队列号与所有更新前的队列描述符对应队列的队列号都不一致时,将存储在所述寄存器中更新后的所述队列描述符搬移至高速缓冲存储器中;
所述更新映射表模块,用于更新映射表中与队列号对应的更新后的所述队列描述符的存储位置信息和地址信息。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:第二检测模块、第三搬移模块和释放模块;其中,
所述第二检测模块,用于实时检测所述高速缓冲存储器的空间使用情况,获得第一检测结果;
所述第三搬移模块,用于当所述第一检测结果大于预设的第一阈值时,将存储在所述高速缓冲存储器中、且活跃度小于预设的第二阈值的队列的队列描述符搬移至动态随机存储器内;
所述释放模块,用于释放搬移出所述高速缓冲存储器的队列描述符的指针。
14.根据权利要求9所述的装置,其特征在于,所述装置还包括:第三检测模块、第二处理模块;其中,
所述第三检测模块,用于实时检测所述寄存器的空间使用情况,获得第二检测结果;
所述第二处理模块,用于当第二检测结果大于预设的第三阈值时,停止输出所述待处理的报文信息中的报文描述符和对待处理的报文信息进行入队操作,直至第二检测结果小于预设的第四阈值时,恢复输出所述待处理的报文信息中的报文描述符和对待处理的报文信息进行入队操作,所述预设的第四阈值小于所述预设的第三阈值。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611158994.5A CN108234348B (zh) | 2016-12-13 | 2016-12-13 | 一种队列操作中的处理方法及装置 |
PCT/CN2017/088613 WO2018107681A1 (zh) | 2016-12-13 | 2017-06-16 | 一种队列操作中的处理方法、装置及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611158994.5A CN108234348B (zh) | 2016-12-13 | 2016-12-13 | 一种队列操作中的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108234348A CN108234348A (zh) | 2018-06-29 |
CN108234348B true CN108234348B (zh) | 2020-09-25 |
Family
ID=62557883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611158994.5A Active CN108234348B (zh) | 2016-12-13 | 2016-12-13 | 一种队列操作中的处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108234348B (zh) |
WO (1) | WO2018107681A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656515A (zh) * | 2018-11-16 | 2019-04-19 | 深圳证券交易所 | 队列消息的操作方法、装置和存储介质 |
JP7241194B2 (ja) | 2019-02-22 | 2023-03-16 | 華為技術有限公司 | メモリ管理方法及び装置 |
CN112804156A (zh) * | 2019-11-13 | 2021-05-14 | 深圳市中兴微电子技术有限公司 | 一种拥塞避免方法和装置及计算机可读存储介质 |
EP4072084A4 (en) * | 2019-12-25 | 2022-12-28 | Huawei Technologies Co., Ltd. | MESSAGE BUFFERING METHOD, INTEGRATED CIRCUIT SYSTEM AND STORAGE MEDIA |
CN111526097B (zh) * | 2020-07-03 | 2020-10-30 | 新华三半导体技术有限公司 | 一种报文调度方法、装置及网络芯片 |
CN112350996A (zh) * | 2020-10-15 | 2021-02-09 | 中国船舶重工集团公司第七一六研究所 | 一种可适应协议升级的通信报文解析***及方法 |
CN113343735B (zh) * | 2021-08-05 | 2021-11-05 | 深圳市成为信息技术有限公司 | 一种读写器的标签处理方法、读写器及存储介质 |
CN114401072B (zh) * | 2021-12-12 | 2024-02-06 | 西安电子科技大学 | 一种基于hinoc协议的拆帧重排序队列的动态缓存控制方法及*** |
CN114844847A (zh) * | 2021-12-14 | 2022-08-02 | 合肥哈工轩辕智能科技有限公司 | 一种高可靠性的实时消息分发方法及装置 |
CN115277607B (zh) * | 2022-07-15 | 2023-12-26 | 天津市滨海新区信息技术创新中心 | 一种异构***复杂流量情况下的两级拟态判决方法 |
CN115242726B (zh) * | 2022-07-27 | 2024-03-01 | 阿里巴巴(中国)有限公司 | 队列的调度方法和装置及电子设备 |
CN115277644B (zh) * | 2022-07-29 | 2024-07-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种总线数据传输***、方法、设备及存储介质 |
CN115955441A (zh) * | 2022-11-22 | 2023-04-11 | 中国第一汽车股份有限公司 | 一种基于tsn队列的管理调度方法、装置 |
CN117193669B (zh) * | 2023-11-06 | 2024-02-06 | 格创通信(浙江)有限公司 | 一种报文描述符离散存储方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750245A (zh) * | 2012-05-29 | 2012-10-24 | 中国人民解放军国防科学技术大学 | 报文接收方法、报文接收模块、装置及*** |
CN103546392A (zh) * | 2012-07-12 | 2014-01-29 | 中兴通讯股份有限公司 | 队列单周期调度方法和装置 |
CN103914341A (zh) * | 2013-01-06 | 2014-07-09 | 中兴通讯股份有限公司 | 数据队列出队管控方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7277990B2 (en) * | 2004-09-30 | 2007-10-02 | Sanjeev Jain | Method and apparatus providing efficient queue descriptor memory access |
US9256555B2 (en) * | 2012-12-20 | 2016-02-09 | Oracle International Corporation | Method and system for queue descriptor cache management for a host channel adapter |
-
2016
- 2016-12-13 CN CN201611158994.5A patent/CN108234348B/zh active Active
-
2017
- 2017-06-16 WO PCT/CN2017/088613 patent/WO2018107681A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750245A (zh) * | 2012-05-29 | 2012-10-24 | 中国人民解放军国防科学技术大学 | 报文接收方法、报文接收模块、装置及*** |
CN103546392A (zh) * | 2012-07-12 | 2014-01-29 | 中兴通讯股份有限公司 | 队列单周期调度方法和装置 |
CN103914341A (zh) * | 2013-01-06 | 2014-07-09 | 中兴通讯股份有限公司 | 数据队列出队管控方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108234348A (zh) | 2018-06-29 |
WO2018107681A1 (zh) | 2018-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108234348B (zh) | 一种队列操作中的处理方法及装置 | |
US7366865B2 (en) | Enqueueing entries in a packet queue referencing packets | |
US6779084B2 (en) | Enqueue operations for multi-buffer packets | |
US7269179B2 (en) | Control mechanisms for enqueue and dequeue operations in a pipelined network processor | |
WO2018018896A1 (zh) | 内存管理装置和方法 | |
US10200313B2 (en) | Packet descriptor storage in packet memory with cache | |
US20040034743A1 (en) | Free list and ring data structure management | |
US20030147409A1 (en) | Processing data packets | |
US9025608B2 (en) | Route switching device and data cashing method thereof | |
US11425057B2 (en) | Packet processing | |
US7568082B2 (en) | Memory controller and method for writing to a memory | |
US8223788B1 (en) | Method and system for queuing descriptors | |
CN112948313B (zh) | 一种会话数据的管理方法和装置 | |
WO2016019554A1 (zh) | 一种队列管理的方法和装置 | |
CN101197786B (zh) | 缓存管理方法和缓存管理*** | |
WO2017005761A1 (en) | Method for managing a distributed cache | |
CN113891396A (zh) | 数据包的处理方法、装置、计算机设备和存储介质 | |
CN106294191B (zh) | 处理表的方法、访问表的方法和装置 | |
US7822051B1 (en) | Method and system for transmitting packets | |
TWI223747B (en) | Increasing memory access efficiency for packet applications | |
CN104378295B (zh) | 表项管理装置及表项管理方法 | |
CN101453386A (zh) | 网络的封包撷取方法 | |
TWI792728B (zh) | 封包處理加速裝置 | |
CN114584623B (zh) | 流量请求清理方法、装置、存储介质以及计算机设备 | |
CN111131197B (zh) | 一种过滤策略管理***及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |