一种队列管理方法和装置制造方法及图纸

技术编号:14139743 阅读:102 留言:0更新日期:2016-12-10 15:10
本发明专利技术公开了一种队列管理方法和装置,减少实体队列占用的网络芯片内部的存储资源,降低芯片成本和功耗。本发明专利技术提供一种队列管理方法,包括:将第一报文存储到第一宏单元包括的第一缓存单元,第一宏单元入队到第一实体队列,第一宏单元包括:连续的N个缓存单元,第一缓存单元属于N个缓存单元;根据第一报文的报文长度对第一宏单元存储了第一报文之前的平均报文长度进行修正,得到第一宏单元的当前平均报文长度;根据第一宏单元和第一实体队列生成第一宏单元对应的队列信息,第一宏单元对应的队列信息包括:第一宏单元在第一实体队列中的宏单元标识、第一宏单元内部的头指针、第一宏单元内部的尾指针和第一宏单元的当前平均报文长度。

【技术实现步骤摘要】

本专利技术涉及计算机
,尤其涉及一种队列管理方法和装置
技术介绍
随着网络技术的发展,人们对网络带宽需求增大,对相关设备的带宽、服务质量(英文全称:Quality of Service,英文简称:QoS)和成本都提出了很高的要求,体现在网络芯片上就要求其可以缓存和处理更多的报文、具备精准的调度能力和更低的芯片成本,这些都体现在产品的竞争力上。网络芯片中的流量管理(英文全称:Traffic Manage,英文简称:TM)芯片的主要功能就是对报文的缓存、入队、调度和出队。其中,对报文的缓存、入队和出队是由队列管理模块来完成的,主要是对队列的链表的操作。对报文的调度是由调度模块来完成的,如果考虑成本去增大每个报文的长度信息的粒度,又会影响调度的准确性、造成很大的突发和抖动。现有技术中常见的队列管理流程可包括如下步骤:1、从网络芯片的入口接收报文;2、将接收到的报文缓存在网络芯片外的随机存储器;3、报文缓存之后生成报文描述符(英文全称:Packet Descriptor,英文简称:PD),然后将PD入队到对应的实体队列中,入队由队列管理模块来完成。其中,PD是描述报文的信息,包括实体队列中的某一个报文指向的下一个报文的指针等。在目前的队列管理方案中至少存在如下问题:因为大带宽的设备要求缓存更多的报文,通常报文数据都缓存在片外的随机存储器中,但报文的队列信息(包括链表的头指针、下一个报文指针和链表的尾指针)和每个报文的长度通常都放在芯片的内部,除队列的头指针和尾指针是按实体队列来维护之外,下一个报文指针和报文长度是按照每个报文来维护的,这些信息用于维护实体队列的链表和保证调度的QoS。下一个报文指针就会占用很大的片内缓存资源,这会带来芯片成本的增加,但同时上述的下一个报文指针又是完成正常芯片功能和性能所不可或缺的。以100十亿(英文全称:Gigabit,英文简称:G)字节的处理能力的芯片而言,一般需要缓存的短报文的数量都会达到几百千(英文全称:Kilobit,英文简称:K)个报文的量级,甚至1百万(英文全称:Megabit,英文简称:M)个报文的量级了。以缓存1M个报文为例,每个报文需要用20比特(英文名称:bit)的指针来表示,这样芯片内部要保存的下一个报文指针的相关资源就要20Mbit,这样的数量会占用很大的芯片内存储资源,会带来芯片成本和功耗的增加。
技术实现思路
本专利技术实施例提供了一种队列管理方法和装置,减少实体队列占用的网络芯片内部的存储资源,降低芯片成本和功耗。为解决上述技术问题,本专利技术实施例提供以下技术方案:第一方面,本专利技术实施例提供一种队列管理方法,包括:将第一报文存储到第一宏单元包括的第一缓存单元,所述第一宏单元入队到第一实体队列,所述第一宏单元包括:连续的N个缓存单元,所述N为大于或等于2的自然数,所述第一缓存单元属于所述N个缓存单元;根据所述第一报文的报文长度对所述第一宏单元存储了所述第一报文之前的平均报文长度进行修正,得到第一宏单元的当前平均报文长度;根据所述第一宏单元和所述第一实体队列生成所述第一宏单元对应的队列信息,所述第一宏单元对应的队列信息包括:所述第一宏单元在所述第一实体队列中的宏单元标识、所述第一宏单元内部的头指针、所述第一宏单元内部的尾指针和所述第一宏单元的当前平均报文长度。本专利技术实施例中对于连续的多个缓存单元可封装为一个宏单元,并且宏单元可入队到实体队列中,例如第一宏单元入队到第一实体队列,实体队列的管理是以宏单元为粒度来使用缓存单元的资源,不需要存储每个报文指向的下一个报文的指针,由于本专利技术实施例中对于一个宏单元只需要维护宏单元内部的平均报文长度,也不需要存储每个报文的报文长度,因此本专利技术实施例中在网络芯片外缓存报文的规模相同的情况下,减小了网络芯片内实体队列占用的网络芯片内部的存储资源,从而可以降低网络芯片的成本和功耗。结合第一方面,在第一方面的第一种可能的实现方式中,所述第一实体队列,至少包括:第一宏单元和在所述第一实体队列中处于所述第一宏单元之前且相邻的第二宏单元,所述方法还包括:从所述第一实体队列中确定出需要报文出队的宏单元为第二宏单元,所述第二宏单元对应的队列信息包括:所述第二宏单元在所述第一实体队列中的宏单元标识、所述第二宏单元内部的头指针、所述第二宏单元内部的尾指针和所述第二宏单元的当前平均报文长度;根据所述第二宏单元内部的头指针读取到需要出队的第二报文,并修改所述第二宏单元内部的头指针对应的偏移值。在本专利技术实施例中第二宏单元入队到第一实体队列,实体队列的管理是以宏单元为粒度来使用缓存单元的资源,不需要存储每个报文指向的下一个报文的指针,当第二宏单元需要出队时,可以根据第二宏单元内部的头指针读取到需要出队的第二报文,并修改所述第二宏单元内部的头指针对应的偏移值,因此本专利技术实施例中不需要存储每个报文的报文长度也可以完成报文的出队,减小了网络芯片内实体队列占用的网络芯片内部的存储资源,从而可以降低网络芯片的成本和功耗。结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据所述第二宏单元内部的头指针读取到需要出队的第二报文之后,所述方法还包括:将所述第二宏单元的当前平均报文长度发送给调度器和限速器,以使所述调度器根据所述第二宏单元的当前平均报文长度刷新所述调度器的权重,所述限速器根据所述第二宏单元的当前平均报文长度刷新所述限速器的令牌。本专利技术实施例中不需要存储第二宏单元内各个报文的真实长度,只需要维护报文平均长度即可,可以以宏单元粒度进行刷新调度器和限速器,对调度的效果没有影响。结合第一方面或第一方面的第一种可能或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述第一宏单元和所述第一实体队列生成所述第一宏单元对应的队列信息之后,所述方法还包括:根据所述第一宏单元对应的队列信息维护所述第一实体队列的链表。本专利技术实施例中对第一实体队列的管理可以通过链表的方式来完成,链表中的队尾指针可以指向刚入队的第一宏单元,实现对实体队列的管理。结合第一方面或第一方面的第一种可能或第二种可能的实现方式,在第一方面的第四种可能的实现方式中,所述将第一报文存储到第一宏单元包括的第一缓存单元,包括:将所述第一宏单元内部的尾指针分配给第一报文,并修改所述第一宏单元内部的尾指针对应的偏移值。本专利技术实施例中第一宏单元中在写入第一报文时修改第一宏单元内部的尾指针对应的偏移值,从而通过宏单元的尾指针可以指向新增加的报文。结合第一方面或第一方面的第一种可能或第二种可能的实现方式,在第一方面的第五种可能的实现方式中,所述根据所述第一报文的报文长度对所述第一宏单元存储了所述第一报文之前的平均报文长度进行修正,得到第一宏单元的当前平均报文长度,包括:获取所述第一宏单元存储所述第一报文之前已经存储的所有报文数量;根据所述已经存储的所有报文数量、所述第一宏单元存储了所述第一报文之前的平均报文长度和所述第一报文的报文长度计算第一宏单元的当前平均报文长度。本专利技术实施例中可以第一宏单元在有新的报文写入时修改第一宏单元的当前平均报文长度,而不需要记录每个报文的真实长度,减小了网络芯片内实体队列占用的网络芯片内部的存储资源,从而可以降低网络芯片的成本和功耗。本文档来自技高网
...
一种队列管理方法和装置

【技术保护点】
一种队列管理方法,其特征在于,包括:将第一报文存储到第一宏单元包括的第一缓存单元,所述第一宏单元入队到第一实体队列,所述第一宏单元包括:连续的N个缓存单元,所述N为大于或等于2的自然数,所述第一缓存单元属于所述N个缓存单元;根据所述第一报文的报文长度对所述第一宏单元存储了所述第一报文之前的平均报文长度进行修正,得到第一宏单元的当前平均报文长度;根据所述第一宏单元和所述第一实体队列生成所述第一宏单元对应的队列信息,所述第一宏单元对应的队列信息包括:所述第一宏单元在所述第一实体队列中的宏单元标识、所述第一宏单元内部的头指针、所述第一宏单元内部的尾指针和所述第一宏单元的当前平均报文长度。

【技术特征摘要】
1.一种队列管理方法,其特征在于,包括:将第一报文存储到第一宏单元包括的第一缓存单元,所述第一宏单元入队到第一实体队列,所述第一宏单元包括:连续的N个缓存单元,所述N为大于或等于2的自然数,所述第一缓存单元属于所述N个缓存单元;根据所述第一报文的报文长度对所述第一宏单元存储了所述第一报文之前的平均报文长度进行修正,得到第一宏单元的当前平均报文长度;根据所述第一宏单元和所述第一实体队列生成所述第一宏单元对应的队列信息,所述第一宏单元对应的队列信息包括:所述第一宏单元在所述第一实体队列中的宏单元标识、所述第一宏单元内部的头指针、所述第一宏单元内部的尾指针和所述第一宏单元的当前平均报文长度。2.根据权利要求1所述的方法,其特征在于,所述第一实体队列,至少包括:第一宏单元和在所述第一实体队列中处于所述第一宏单元之前且相邻的第二宏单元,所述方法还包括:从所述第一实体队列中确定出需要报文出队的宏单元为第二宏单元,所述第二宏单元对应的队列信息包括:所述第二宏单元在所述第一实体队列中的宏单元标识、所述第二宏单元内部的头指针、所述第二宏单元内部的尾指针和所述第二宏单元的当前平均报文长度;根据所述第二宏单元内部的头指针读取到需要出队的第二报文,并修改所述第二宏单元内部的头指针对应的偏移值。3.根据权利要求2所述的方法,其特征在于,所述根据所述第二宏单元内部的头指针读取到需要出队的第二报文之后,所述方法还包括:将所述第二宏单元的当前平均报文长度发送给调度器和限速器,以使所述调度器根据所述第二宏单元的当前平均报文长度刷新所述调度器的权重,所述限速器根据所述第二宏单元的当前平均报文长度刷新所述限速器的令牌。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述第一宏单元和所述第一实体队列生成所述第一宏单元对应的队列信息之后,所述方法还包括:根据所述第一宏单元对应的队列信息维护所述第一实体队列的链表。5.根据权利要求1至3中任一项所述的方法,其特征在于,所述将第一报文存储到第一宏单元包括的第一缓存单元,包括:将所述第一宏单元内部的尾指针分配给第一报文,并修改所述第一宏单元内部的尾指针对应的偏移值。6.根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述第一报文的报文长度对所述第一宏单元存储了所述第一报文之前的平均报文长度进行修正,得到第一宏单元的当前平均报文长度,包括:获取所述第一宏单元存储所述第一报文之前已经存储的所有报文数量;根据所述已经存储的所有报文数量、所述第一宏单元存储了所述第一报文之前的平均报文长度和所述第一报文的报文长度计算第一宏单元的当前平均报文长度。7.一种队列管理装置,其特征在于,包括:存储模块,用于将第一报文存储到第一...

【专利技术属性】
技术研发人员:郑盛巍丁德宏杨雄
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1