一种队列管理的方法和装置转让专利

申请号 : CN201480080687.2

文献号 : CN106537858B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陆玉春张健

申请人 : 华为技术有限公司

摘要 :

本发明实施例公开了一种队列管理的方法,包括:将PD队列写入DRAM中,所述PD队列包括多个PD,所述多个PD与第一报文队列包括的多个报文一一对应;将所述PD队列中至少一个PD写入SRAM中,所述至少一个PD包括所述PD队列的队列头。相应的,本发明实施例还公开了一种队列管理的装置。上述方案有助于提高报文队列的出队效率。

权利要求 :

1.一种队列管理的方法,其特征在于,包括:

将报文描述符PD队列写入动态随机访问存储器DRAM中,所述PD队列包括多个PD,所述多个PD与第一报文队列包括的多个报文一一对应;

将所述PD队列中至少一个PD写入静态随机访问存储器SRAM中,所述至少一个PD包括所述PD队列的队列头;

其中,所述将报文描述符PD队列写入DRAM中之后,以及所述将PD队列中至少一个PD写入SRAM中之前,所述方法还包括:确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值;

所述将所述PD队列中至少一个PD写入SRAM中具体包括:若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值,将所述PD队列中至少一个PD写入所述SRAM中。

2.根据权利要求1所述的方法,其特征在于,所述确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值,还包括:判定待激活报文队列的集合为空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;

所述将所述PD队列中至少一个PD写入SRAM中具体包括:若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值并且所述待激活报文队列的集合为空,将所述PD队列中至少一个PD写入所述SRAM中。

3.根据权利要求1所述的方法,其特征在于,所述确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值还包括:判定待激活报文队列的集合为非空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;

所述将所述PD队列中至少一个PD写入SRAM中具体包括:若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值且所述第一报文队列是所述待激活报文队列的集合中优先级最高的报文队列,将所述PD队列中至少一个PD写入所述SRAM中。

4.根据权利要求2所述的方法,其特征在于,所述将PD队列写入DRAM中还包括:将所述第一报文队列的状态标识为第一状态;

所述确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值还包括:将所述第一报文队列的状态修改为第二状态;

所述将所述PD队列中至少一个PD写入SRAM中具体包括:基于所述第二状态的指示,将所述PD队列中至少一个PD写入所述SRAM中。

5.根据权利要求3所述的方法,其特征在于,所述将PD队列写入DRAM中还包括:将所述第一报文队列的状态标识为第一状态;

所述确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值还包括:将所述第一报文队列的状态修改为第二状态;

所述将所述PD队列中至少一个PD写入SRAM中具体包括:基于所述第二状态的指示,将所述PD队列中至少一个PD写入所述SRAM中。

6.根据权利要求4所述的方法,其特征在于,还包括:

若所述第一报文队列的信用大于或者等于所述第一阈值且所述SRAM可用的存储空间的容量小于所述第二阈值,将所述第一报文队列的状态修改为第三状态;

将处于所述第三状态的所述第一报文队列加入所述待激活报文队列的集合中。

7.根据权利要求5所述的方法,其特征在于,还包括:

若所述第一报文队列的信用大于或者等于所述第一阈值且所述SRAM可用的存储空间的容量小于所述第二阈值,将所述第一报文队列的状态修改为第三状态;

将处于所述第三状态的所述第一报文队列加入所述待激活报文队列的集合中。

8.根据权利要求1-7任意一项所述的方法,其特征在于,还包括:确定第二报文队列的待入队报文是否满足预设的快包识别条件;

若所述待入队报文不满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述DRAM中;或者若所述待入队报文满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述SRAM中。

9.根据权利要求1-7任意一项所述的方法,其特征在于,所述DRAM包括多个存储块bank,所述DRAM中存储有多个报文队列对应的多个PD队列,所述多个PD队列的多个队列头分别存储在多个bank中,所述多个队列头与所述多个bank一一对应,所述多个PD队列与所述多个队列头一一对应。

10.根据权利要求8所述的方法,其特征在于,所述DRAM包括多个存储块bank,所述DRAM中存储有多个报文队列对应的多个PD队列,所述多个PD队列的多个队列头分别存储在多个bank中,所述多个队列头与所述多个bank一一对应,所述多个PD队列与所述多个队列头一一对应。

11.根据权利要求9所述的方法,其特征在于,还包括:

根据存储在所述多个bank中的所述多个队列头执行所述多个报文队列中的至少两个报文队列的出队操作。

12.根据权利要求10所述的方法,其特征在于,还包括:

根据存储在所述多个bank中的所述多个队列头执行所述多个报文队列中的至少两个报文队列的出队操作。

13.根据权利要求9所述的方法,其特征在于,还包括:

对所述多个PD队列中的至少两个PD队列执行出队操作,执行所述出队操作后所述至少两个PD队列分别包含了至少两个新的队列头;

若所述至少两个新的队列头存储于同一个bank中,接收到至少两个出队请求,将所述至少两个出队请求置入所述同一个bank对应的出队请求队列,并使用所述出队请求队列对所述至少两个出队请求进行响应,所述至少两个出队请求与所述至少两个PD队列一一对应。

14.根据权利要求10所述的方法,其特征在于,还包括:

对所述多个PD队列中的至少两个PD队列执行出队操作,执行所述出队操作后所述至少两个PD队列分别包含了至少两个新的队列头;

若所述至少两个新的队列头存储于同一个bank中,接收到至少两个出队请求,将所述至少两个出队请求置入所述同一个bank对应的出队请求队列,并使用所述出队请求队列对所述至少两个出队请求进行响应,所述至少两个出队请求与所述至少两个PD队列一一对应。

15.一种队列管理的装置,其特征在于,包括:

第一写入模块,用于将报文描述符PD队列写入动态随机访问存储器DRAM中,所述PD队列包括多个PD,所述多个PD与第一报文队列包括的多个报文一一对应;

第二写入模块,用于将所述第一写入模块写入的所述PD队列中至少一个PD写入静态随机访问存储器SRAM中,所述至少一个PD包括所述PD队列的队列头;

其中,还包括:

第一确定模块,用于所述第一写入模块将所述PD队列写入所述DRAM中之后,以及所述第二写入模块将所述PD队列中至少一个PD写入所述SRM中之前,确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值;

所述第二写入模块具体用于若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值,将所述PD队列中至少一个PD写入所述SRAM中。

16.如权利要求15所述的装置,其特征在于,所述第一确定模块还用于:判定待激活报文队列的集合为空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;

所述第二写入模块具体用于若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值并且所述待激活报文队列的集合为空,将所述PD队列中至少一个PD写入所述SRAM中。

17.如权利要求15所述的装置,其特征在于,所述第一确定模块还用于:判定待激活报文队列的集合为非空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;

所述第二写入模块具体用于若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值并且所述第一报文队列是所述待激活报文队列的集合中优先级最高的报文队列,将所述PD队列中至少一个PD写入所述SRAM中。

18.如权利要求16所述的装置,其特征在于,所述第一写入模块还用于:将所述第一报文队列的状态标识为第一状态;

所述第一确定模块还用于:

将所述第一报文队列的状态修改为第二状态;

所述第二写入模块具体用于基于所述第二状态的指示,将所述PD队列中至少一个PD写入所述SRAM中。

19.如权利要求17所述的装置,其特征在于,所述第一写入模块还用于:将所述第一报文队列的状态标识为第一状态;

所述第一确定模块还用于:

将所述第一报文队列的状态修改为第二状态;

所述第二写入模块具体用于基于所述第二状态的指示,将所述PD队列中至少一个PD写入所述SRAM中。

20.如权利要求18所述的装置,其特征在于,还包括:

修改模块,用于若所述第一报文队列的信用大于或者等于所述第一阈值且所述SRAM可用的存储空间的容量小于所述第二阈值,将所述第一报文队列的状态修改为第三状态;

加入模块,用于将处于所述第三状态所述第一报文队列加入所述待激活报文队列的集合中。

21.如权利要求19所述的装置,其特征在于,还包括:

修改模块,用于若所述第一报文队列的信用大于或者等于所述第一阈值且所述SRAM可用的存储空间的容量小于所述第二阈值,将所述第一报文队列的状态修改为第三状态;

加入模块,用于将处于所述第三状态所述第一报文队列加入所述待激活报文队列的集合中。

22.如权利要求15-21任意一项所述的装置,其特征在于,还包括:第二确定模块,用于确定第二报文队列的待入队报文是否满足预设的快包识别条件;

第三写入模块,用于若所述第二确定模块确定所述待入队报文不满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述DRAM中;或者第四写入模块,用于若所述第二确定模块确定所述待入队报文满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述SRAM中。

23.如权利要求15-21任意一项所述的装置,其特征在于,所述DRAM包括多个存储块bank,所述DRAM中存储有多个报文队列对应的多个PD队列,所述多个PD队列的多个队列头分别存储在多个bank中,所述多个队列头与所述多个bank一一对应,所述多个PD队列与所述多个队列头一一对应。

24.如权利要求22所述的装置,其特征在于,所述DRAM包括多个存储块bank,所述DRAM中存储有多个报文队列对应的多个PD队列,所述多个PD队列的多个队列头分别存储在多个bank中,所述多个队列头与所述多个bank一一对应,所述多个PD队列与所述多个队列头一一对应。

25.如权利要求23所述的装置,其特征在于,还包括:

第一出队模块,用于根据存储在所述多个bank中的所述多个队列头执行所述多个报文队列中的至少两个报文队列的出队操作。

26.如权利要求24所述的装置,其特征在于,还包括:

第一出队模块,用于根据存储在所述多个bank中的所述多个队列头执行所述多个报文队列中的至少两个报文队列的出队操作。

27.如权利要求23所述的装置,其特征在于,还包括:

第二出队模块,用于对所述多个PD队列中的至少两个PD队列执行出队操作,执行所述出队操作后所述至少两个PD队列分别包含了至少两个新的队列头;

响应模块,用于若所述至少两个新的队列头存储于同一个bank中,接收到至少两个出队请求,将所述至少两个出队请求置入所述同一个bank对应的出队请求队列,并使用所述出队请求队列对所述至少两个出队请求进行响应,所述至少两个出队请求与所述至少两个PD队列一一对应。

28.如权利要求24所述的装置,其特征在于,还包括:

第二出队模块,用于对所述多个PD队列中的至少两个PD队列执行出队操作,执行所述出队操作后所述至少两个PD队列分别包含了至少两个新的队列头;

响应模块,用于若所述至少两个新的队列头存储于同一个bank中,接收到至少两个出队请求,将所述至少两个出队请求置入所述同一个bank对应的出队请求队列,并使用所述出队请求队列对所述至少两个出队请求进行响应,所述至少两个出队请求与所述至少两个PD队列一一对应。

29.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质存储有计算机程序,其中,所述计算机程序用于指令相关的硬件,来完成权利要求1至14任意一项所述的方法。

30.一种队列的管理装置,其特征在于,包括处理器和存储器;

其中,所述存储器中存储程序代码;

所述处理器,用于调用存储器中存储的程序代码,以执行权利要求1至14任意一项所述的方法。

说明书 :

一种队列管理的方法和装置

技术领域

[0001] 本发明实施例涉及通信领域,尤其涉及队列管理的方法和装置。

背景技术

[0002] 网络带宽需求的增长对路由器容量和集成度提出了更高要求。路由器的单个线卡(英文:line card,简称:LC)的速率从10吉比特每秒(英文:gigabit per second,简称:Gbps)、40Gbps、100Gbps、200Gbps演进到400Gbps以及更高。路由器的单个线卡的处理能力也从15百万报文每秒(英文:mega packet per second,简称:Mpps)、60Mpps、150Mpps、
300Mpps演进到到600Mpps以及更高,这对路由器的线卡的存储器的速率带来挑战。
[0003] 对报文队列进行调度(包括报文入队和报文出队)可以通过对该报文队列对应的报文描述符(英文:packet descriptor,简称:PD)队列进行访问(包括对PD队列进行读操作和写操作)实现。现有技术中,PD队列存储在动态随机存取存储器(英文:dynamic random access memory,简称:DRAM)。因此,对报文队列进行调度时,需要通过对DRAM进行读操作和写操作实现。对DRAM进行访问时,DRAM的访问速率受到了DRAM的属性的限制。例如,报文队列的速率为300MPPS。DRAM的行循环时间(英文:Row Cycle Time,简称:tRC)约为40~50纳秒(英文:nanosecond,简称:ns)。DRAM的访问速率约为25MPPS。即使DRAM的访问速率可以提高到100MPPS,仍然无法满足300MPPS的报文队列的速率的需求。上述技术方案中,对PD队列进行读操作的速率受到了DRAM的属性的限制,影响了报文队列的出队效率。

发明内容

[0004] 本发明实施例所要解决的技术问题在于,提供一种队列的控制信息的管理方法和装置,可解决现有技术中DRAM存储器的容量和带宽的限制影响报文队列出队效率的问题。
[0005] 第一方面,提供了一种队列管理的方法,包括:
[0006] 将PD队列写入DRAM中,所述PD队列包括多个PD,所述多个PD与第一报文队列包括的多个报文一一对应;
[0007] 将所述PD队列中至少一个PD写入静态随机访问存储器(英文:static random access memory,简称:SRAM)中,所述至少一个PD包括所述PD队列的队列头。
[0008] 结合第一方面,在第一种可能的实现方式中,所述将PD队列写入DRAM中之后,以及所述将PD队列中至少一个PD写入SRAM中之前,所述方法还包括:
[0009] 确定所述第一报文队列的信用(英文:credit)大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值;
[0010] 所述将所述PD队列中至少一个PD写入SRAM中具体包括:
[0011] 若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值,将所述PD队列中至少一个PD写入所述SRAM中。
[0012] 结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值,还包括:
[0013] 判定待激活报文队列的集合为空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;
[0014] 所述将所述PD队列中至少一个PD写入SRAM中具体包括:
[0015] 若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值并且所述待激活报文队列的集合为空,将所述PD队列中至少一个PD写入所述SRAM中。
[0016] 结合第一种可能的实现方式,在第三种可能的实现方式中,所述确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值还包括:
[0017] 判定所述待激活报文队列的集合为非空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;
[0018] 所述将所述PD队列中至少一个PD写入SRAM中具体包括:
[0019] 若所述SRAM中可用的存储空间的容量大于或者等于第二阈值并且所述第一报文队列是所述待激活报文队列的集合中优先级最高的报文队列,将所述PD队列中至少一个PD写入所述SRAM中。
[0020] 结合第二或第三种可能的实现方式,在第四种可能的实现方式中,所述将PD队列写入DRAM中还包括:
[0021] 将所述第一报文队列的状态标识为第一状态;
[0022] 所述确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值还包括:
[0023] 将所述第一报文队列的状态修改为第二状态;
[0024] 所述将所述PD队列中至少一个PD写入SRAM中具体包括:
[0025] 基于所述第二状态的指示,将所述PD队列中至少一个PD写入所述SRAM中。
[0026] 结合第四种可能的实现方式中,在第五种可能的实现方式中,还包括:
[0027] 若所述第一报文队列的信用大于或者等于所述第一阈值且所述SRAM可用的存储空间的容量小于所述第二阈值,将所述第一报文队列的状态修改为第三状态;
[0028] 将处于所述第三状态的所述第一报文队列加入所述待激活报文队列的集合中。
[0029] 结合第一方面至第五种可能的实现方式中的任意一种,在第六种可能的实现方式中,还包括:
[0030] 确定第二报文队列的待入队报文是否满足预设的快包识别条件;
[0031] 若所述待入队报文不满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述DRAM中;或者
[0032] 若所述待入队报文满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述SRAM中。
[0033] 结合第一方面至第六种可能的实现方式中的任意一种,在第七种可能的实现方式中,所述DRAM包括多个存储块(英文:bank),所述DRAM中存储有多个报文队列对应的多个PD队列,所述多个PD队列的多个队列头分别存储在多个bank中,所述多个队列头与所述多个bank一一对应,所述多个PD队列与所述多个队列头一一对应。
[0034] 结合第七方面,在第八种可能的实现方式中,还包括:
[0035] 根据存储在所述多个bank中的所述多个队列头执行所述多个报文队列中的至少两个报文队列的出队操作。
[0036] 结合第七方面,在第九种可能的实现方式中,还包括:
[0037] 对所述多个PD队列中的至少两个PD队列执行出队操作,执行所述出队操作后所述至少两个PD队列分别包含了至少两个新的队列头;
[0038] 若所述至少两个新的队列头存储于同一个bank中,接收到至少两个出队请求,将所述至少两个出队请求置入所述同一个bank对应的出队请求队列,并使用所述出队请求队列对所述至少两个出队请求进行响应,所述至少两个出队请求与所述至少两个PD队列一一对应。
[0039] 第二方面,提供了一种队列管理的装置,包括:
[0040] 第一写入模块,用于将PD队列写入DRAM中,所述PD队列包括多个PD,所述多个PD与第一报文队列包括的多个报文一一对应;
[0041] 第二写入模块,用于将所述第一写入模块写入的所述PD队列中至少一个PD写入SRAM中,所述至少一个PD包括所述PD队列的队列头。
[0042] 结合第二方面,在第一种可能的实现方式中,还包括:
[0043] 第一确定模块,用于所述第一写入模块将所述PD队列写入所述DRAM中之后,以及所述第二写入模块将所述PD队列中至少一个PD写入所述SRM中之前,确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值;
[0044] 所述第二写入模块具体用于若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值,将所述PD队列中至少一个PD写入所述SRAM中。
[0045] 结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一确定模块还用于:
[0046] 判定待激活报文队列的集合为空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;
[0047] 所述第二写入模块具体用于若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值并且所述待激活报文队列的集合为空,将所述PD队列中至少一个PD写入所述SRAM中。
[0048] 结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述第一确定模块还用于:
[0049] 判定所述待激活报文队列的集合为非空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;
[0050] 所述第二写入模块具体用于若所述SRAM中可用的存储空间的容量大于或者等于第二阈值并且所述第一报文队列是所述待激活报文队列的集合中优先级最高的报文队列,将所述PD队列中至少一个PD写入所述SRAM中。
[0051] 结合第二方面的第二或第三种可能的实现方式,在第四种可能的实现方式中,所述第一写入模块还用于:
[0052] 将所述第一报文队列的状态标识为第一状态;
[0053] 所述第一确定模块还用于:
[0054] 将所述第一报文队列的状态修改为第二状态;
[0055] 所述第二写入模块具体用于基于所述第二状态的指示,将所述PD队列中至少一个PD写入所述SRAM中。
[0056] 结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:
[0057] 修改模块,用于若所述第一报文队列的信用大于或者等于所述第一阈值且所述SRAM可用的存储空间的容量小于所述第二阈值,将所述第一报文队列的状态修改为第三状态;
[0058] 加入模块,用于将处于所述第三状态所述第一报文队列加入所述待激活报文队列的集合中。
[0059] 结合第二方面至第五种可能的实现方式中的任意一种,在第六种可能的实现方式中,还包括:
[0060] 第二确定模块,用于确定第二报文队列的待入队报文是否满足预设的快包识别条件;
[0061] 第三写入模块,用于若所述第二确定模块确定所述待入队报文不满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述DRAM中;或者
[0062] 第四写入模块,用于若所述第二确定模块确定所述待入队报文满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述SRAM中。
[0063] 结合第二方面至第六种可能的实现方式中的任意一种,在第七种可能的实现方式中,所述DRAM包括多个bank,所述DRAM中存储有多个报文队列对应的多个PD队列,所述多个PD队列的多个队列头分别存储在多个bank中,所述多个队列头与所述多个bank一一对应,所述多个PD队列与所述多个队列头一一对应。
[0064] 结合第二方面的第七种可能的实现方式,在第八种可能的实现方式中,还包括:
[0065] 第一出队模块,用于根据存储在所述多个bank中的所述多个队列头执行所述多个报文队列中的至少两个报文队列的出队操作。
[0066] 结合第二方面的第八种可能的实现方式,在第九种可能的实现方式中,还包括:
[0067] 第二出队模块,用于对所述多个PD队列中的至少两个PD队列执行出队操作,执行所述出队操作后所述至少两个PD队列分别包含了至少两个新的队列头;
[0068] 响应模块,用于若所述至少两个新的队列头存储于同一个bank中,接收到至少两个出队请求,将所述至少两个出队请求置入所述同一个bank对应的出队请求队列,并使用所述出队请求队列对所述至少两个出队请求进行响应,所述至少两个出队请求与所述至少两个PD队列一一对应。
[0069] 上述技术方案具有如下有益效果:
[0070] 上述技术方案中,将第一报文队列对应的PD队列写入DRAM中,并将PD队列中包括队列头的至少一个PD写入SRAM中。因此,第一报文队列对应的PD队列中至少一个PD存储于SRAM中。对所述第一报文队列进行出队操作时,可以通过对所述PD队列进行读操作实现。在所述第一报文队列是先入先出(英文:first in first out,简称:FIFO)队列的情况下,可以通过对所述PD队列的队列头执行读操作实现对所述第一报文队列的出队操作。所述PD队列的队列头存储在所述SRAM中,对所述PD队列的队列头执行读操作是通过对所述SRAM进行读操作实现的。对SRAM进行读操作的速率不会受到DRAM的属性的限制。因此,上述技术方案中,PD队列的出队效率较高,有助于提高第一报文队列的出队效率。

附图说明

[0071] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0072] 图1是本发明实施例提供的一种队列管理的方法的流程示意图;
[0073] 图2是图1中SRAM的数据结构示意图;
[0074] 图3是图1中DRAM的数据结构示意图;
[0075] 图4是本发明实施例的一种快包识别的示意图;
[0076] 图5是本发明实施例提供的一种队列管理的装置的结构示意图;
[0077] 图6是本发明实施例提供的一种队列管理的装置的另一结构示意图。

具体实施方式

[0078] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
[0079] 如无相反的说明,本发明实施例涉及到的报文队列都可以是FIFO队列。本发明实施例提供的队列管理的方法的执行主体以及队列管理的装置都可以是存储器控制器(英文:memory controller)。举例来说,memory controller能够对DRAM以及SRAM进行控制。进一步的,本发明实施例提供的队列管理的方法的执行主体以及队列管理的装置都可以是流量管理芯片。所述流量管理芯片包含所述memory controller。举例来说,所述流量管理芯片可以通过所述memory controller与所述DRAM耦合。举例来说,所述流量管理芯片可以通过所述memory controller与所述SRAM耦合。进一步的,本发明实施例提供的队列管理的方法的执行主体以及队列管理的装置都可以是LC。所述LC包括所述流量管理芯片。进一步的,本发明实施例提供的队列管理的方法的执行主体以及队列管理的装置都可以是网络设备。所述网络设备包括所述线卡。所述网络设备可以是路由器、网络交换机、防火墙、负载均衡器、数据中心、基站、报文传送网(英文:packet transport network,简称:PTN)设备或者波分复用(英文:wavelength division multiplexing,简称:WDM)设备。
[0080] 如无相反的说明,本发明实施例涉及到的PD可以包含对应的报文的存储地址或者用于指向对应的报文的指针。此外,所述PD还可以包括所述对应的报文被接收的时间。此外,所述PD还可以包括所述对应的报文的报文头。
[0081] 如无相反的说明,本发明实施例涉及到的报文队列可以存储在DRAM或者SRAM中。本发明实施例不限定报文队列的存储位置。
[0082] 参见图1,为本发明实施例提供的一种队列管理方法的流程示意图。所述方法包括:
[0083] S101、将PD队列写入DRAM中,所述PD队列包括多个PD,所述多个PD与第一报文队列包括的多个报文一一对应。
[0084] 具体的,第一报文队列与PD队列关联。第一报文队列中包括的报文的数量和PD队列中包括的PD的数量相等。第一报文队列中的多个报文与PD队列中的多个PD一一对应。例如,流量管理芯片将第一报文队列对应PD队列写入DRAM中。
[0085] 示例性的,第一报文队列包括8个报文。第一报文队列关联的PD队列中也有8个PD。第一报文队列中的8个报文与PD队列中的8个PD一一对应。例如,流量管理芯片将PD队列写入DRAM中。
[0086] S102、将所述PD队列中至少一个PD写入SRAM中,所述至少一个PD包括所述PD队列的队列头。
[0087] 具体的,流量管理芯片将第一报文队列对应的PD队列中至少一个PD写入SRAM中。写入的至少一个PD包括PD队列的队列头。所述PD队列的队列头对应的PD用于描述所述第一报文队列中的队列头对应报文。所述第一报文队列中的队列头对应报文是所述多个报文中最先被接收到的报文。
[0088] 举例来说,S102还可以包括:删除所述DRAM中的所述至少一个PD。所述PD队列存储在所述SRAM以及所述DRAM中。
[0089] 可选的,所述将报文描述符PD队列写入DRAM中之后,以及所述将PD队列中至少一个PD写入SRAM中之前,所述方法还包括:
[0090] 确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值;
[0091] 所述将所述PD队列中至少一个PD写入SRAM中具体包括:
[0092] 若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值,将所述PD队列中至少一个PD写入所述SRAM中。
[0093] 具体的,第一报文队列的信用可以用于表示第一报文队列的可出队报文的数量或者可出队报文的字节的数量。流量管理芯片可从第一报文队列的队列描述符(英文:queue descriptor,简称:QD)中获取所述第一报文队列的信用。所述QD用于对所述第一报文队列进行描述。关于所述QD,可参考表3。流量管理芯片判断第一报文队列的信用是否大于或等于预设的第一阈值,同时判断SRAM中可用的存储空间的容量是否大于或等于预设的第二阈值。若确定第一报文队列的信用大于或等于预设的第一阈值且SRAM中可用的存储空间的容量大于或等于预设的第二预置,执行S102。
[0094] 举例来说,预设的第一阈值可以根据第一报文队列的优先级、队列长度、报文数、休眠时间以及SRAM中可用的存储空间的容量中的一个或者多个确定。例如,对于第一报文队列,其优先级越高、队列长度越长、报文数量越多或者休眠时间越长,则预先设置的第一阈值可以越小。反之,对于第一报文队列,其优先级越低、队列长度越短、报文数量越少或者休眠时间越短,则预先设置的第一阈值可以越大。
[0095] 举例来说,所述第一阈值用于标识第一报文队列的可出队报文的数量时,所述第一阈值可以大于或者等于1。所述第一阈值用于标识第一报文队列的可出队报文的字节的数量时,所述第一阈值可以大于或者等于第一报文队列中的一个报文的字节的数量。
[0096] 举例来说,预设的第二阈值大于或等于PD队列中一个PD的大小。这样PD队列中至少一个PD可以写入SRAM中。将PD队列中的PD写入SRAM中按照先进先出的原则进行写操作,PD队列的队列头最先写入SRAM中,队列尾最后写入SRAM中。
[0097] 示例性的,PD队列中每个PD的大小为8个字节,预设的第二阈值为8个字节。此时SRAM中可用的存储空间的容量为25个字节,则SRAM中可用的存储空间的容量大于第二阈值,SRAM中可用的存储空间可以最多写入3个PD。PD队列在写操作之前包括8个PD,流量管理芯片在满足上述容量限制条件后,可将PD队列中前3个PD写入SRAM中。
[0098] 可选的,在本发明的一些实施例中,所述确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值,还包括:
[0099] 判定待激活报文队列的集合为空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;
[0100] 所述将所述PD队列中至少一个PD写入SRAM中具体包括:
[0101] 若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值并且所述待激活报文队列的集合为空,将所述PD队列中至少一个PD写入所述SRAM中。
[0102] 具体的,流量管理芯片中可以维护一个待激活报文队列的集合。待激活报文队列的集合包括满足预设的待激活条件的报文队列。待激活条件为执行判定时报文队列的信用大于或等于第一阈值且执行判定时SRAM中可用的存储空间小于第二阈值。待激活报文队列的集合可以包括0个、1个或多个待激活报文队列。每个待激活报文队列对应一个优先级。待激活报文队列的优先级用于指示所述待激活报文队列对应的PD队列中的至少一个PD被写入所述SRAM的顺序。优先级高的待激活报文队列的对应的PD队列的至少一个PD先于优先级低的待激活报文队列对应的PD队列的至少一个PD被写入SRAM中。其中,每个至少一个PD分别包含对应的PD队列的队列头。待激活报文队列的集合为空表示待激活报文队列的集合中待激活报文队列的数量为0。待激活报文队列的集合为非空表示待激活报文队列的集合中待激活报文队列的数量大于0。
[0103] 示例性的,如图2所示,SRAM以Cache Line的形式管理,SRAM由Y个Cache Line组成,每个Cache Line内部有一个可选的QD缓存空间、X个PD缓存空间和一个用来管理Cache Line的CTRL表项,同时每个Cache Line还关联有一个表示该Cache Line的属性信息的BITMAP表项。其中,每个Cache Line只能被一个PD队列占用,一个PD队列可以占用多个Cache Line,每个Cache Line中的PD依次存放形成一个链表片段,多个Cache Line之间通过CTRL表项中的N_PTR指针连接形成单项链表,单向链表构成了报文队列的PD队列的队首部分,队首部分与报文队列存储在DRAM中的PD队列的队尾部分通过CTRL表项中的HH_PTR指针连接。占用多个Cache Line的PD队列的CTRL表项存放在首行的Cache Line中。
[0104] 表1所示的为CTRL表项的一个示例,表2所示的为BTIMAP表项的一个示例。
[0105]
[0106] 表1
[0107]名称 深度 注释
H_RDY_BITMAP 256 Cache Line中队首PD可以出队
VALID_BITMAP 256 Cache Line空闲
PD_FETCH_BITMAP 256 该Cache Line中的活动队列需要预取PD
SP_BITMAP 256 该Cache Line中的活动队列为绝对优先级队列
E×TENDED_BITMAP 256*4 扩展BITMAP
[0108] 表2
[0109] 流量管理芯片可通过BITMAP表项中的VALID_BITMAP来判断SRAM中的Cache Line是否可用,例如1表示可用,0表示占用。例如,假设SRAM中第1行的Cache Line为可用状态,第二阈值为1个PD的大小,第1行Cache Line可用的存储空间的容量为8个PD,大于第二阈值,流量管理芯片为第一报文队列分配第1行的Cache Line,第1行的Cache Line的PD缓存空间和QD缓存空间分别可存放8个PD和1个QD,此时可以将第一报文队列中8个PD写入SRAM的第1行Cache Line中。
[0110] 可选的,在本发明的一些实施例中,所述确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值还包括:
[0111] 判定所述待激活报文队列的集合为非空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;
[0112] 所述将所述PD队列中至少一个PD写入SRAM中具体包括:
[0113] 若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值且所述第一报文队列是所述待激活报文队列的集合中优先级最高的报文队列,将所述PD队列中至少一个PD写入所述SRAM中。
[0114] 具体的,流量管理芯片中维护一个待激活报文队列的集合。待激活报文队列的集合包括满足预设的待激活条件的报文队列,待激活条件为执行判定时报文队列的信用大于或等于第一阈值且执行判定时SRAM中可用的存储空间小于第二阈值。待激活报文队列的集合可以包括0个、1个或多个待激活报文队列。每个待激活报文队列对应一个优先级。待激活报文队列的优先级用于指示所述待激活报文队列对应的PD队列中的至少一个PD被写入所述SRAM的顺序。优先级高的待激活报文队列对应的PD队列中的至少一个PD先于优先级低的待激活报文队列对应的PD队列中的至少一个PD被写入SRAM中。其中,每个至少一个PD分别包含对应的PD队列的队列头。待激活报文队列的集合为空表示待激活报文队列的集合中待激活报文队列的数量为0。待激活报文队列的集合为非空表示待激活报文队列的集合中待激活报文队列的数量大于0。
[0115] 若第一报文队列是待激活报文队列的集合中优先级最高的报文队列,即第一报文队列位于待激活报文队列的头部,将第一报文队列关联的PD队列中至少一个PD写入SRAM中,至少一个PD包括第一报文队列的队列头。
[0116] 可选的,所述将PD队列写入DRAM中还包括:
[0117] 将所述第一报文队列的状态标识为第一状态;
[0118] 所述确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值还包括:
[0119] 将所述第一报文队列的状态修改为第二状态;
[0120] 所述将所述PD队列中至少一个PD写入SRAM中具体包括:
[0121] 基于所述第二状态的指示,将所述PD队列中至少一个PD写入所述SRAM中。
[0122] 具体的,第一报文队列的状态包括第一状态和第二状态,第一状态表示第一报文队列关联的PD队列全部存储在DRAM中;第二状态表示的第一报文队列关联的PD队列中一部分的PD存储在SRAM中,另一部分PD存储在DRAM中或者第一报文队列关联的PD队列全部存储在SRAM中。
[0123] 例如,第一报文队列关联的PD队列中PD数量为32个,如果PD队列中有28个PD存储在DRAM,4个PD存储在SRAM中或者32个PD全部存储在SRAM中,则表明第一报文队列处于第二状态;如果PD队列中32个PD全部存储在DRAM中,则表明第一报文队列处于第一状态。表1所示为队列的QD的示例,表2为队列中的报文的PD的示例。
[0124] 流量管理芯片确定第一报文队列的信用大于或等于预设的第一阈值且SRAM中可用的存储空间的容量大于或等于预设的第二阈值,以及判定待激活队列的集合为空,将第一报文队列的状态修改为第二状态,流量管理芯片可以从最新的QD中获取第一报文队列的信用和待激活队列集合的状态以及从CTRL表项中获取SRAM的存储空间的可用状态,表3所示的是QD的示意图,表4所示的是PD的示意图。
[0125]
[0126] 表3
[0127]
[0128] 表4
[0129] 可选的,在本发明的一些实施例中,所述队列管理的方法还包括:
[0130] 若所述第一报文队列的信用大于或者等于所述第一阈值且所述SRAM可用的存储空间的容量小于所述第二阈值,将所述第一报文队列的状态修改为第三状态;
[0131] 将处于所述第三状态的所述第一报文队列加入所述待激活报文队列的集合中。
[0132] 具体的,第一报文队列的状态还包括第三状态,若第一报文队列的信用大于或等于第一阈值且SRAM中可用的存储空间小于第二阈值,将第一报文队列的状态修改为第三状态。将第一报文队列加入待激活报文队列的集合中,则此时待激活报文队列的集合为非空[0133] 可选的,在本发明的一些实施例中,所述队列管理的方法还包括:
[0134] 确定第二报文队列的待入队报文是否满足预设的快包识别条件;
[0135] 若所述待入队报文不满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述DRAM中;或者
[0136] 若所述待入队报文满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述SRAM中。
[0137] 具体的,快包是指在入队后在很短时间内就会被调度出队的报文。在本发明的一些实施例中,识别方法可以是:检测到第二报文队列有待入队的报文时,生成待入队的报文的PD,从SRAM中分配的缓存空间中读取第二报文队列的QD,并根据待入队的报文的PD更新读取的QD,根据更新后的QD判断目第二报文队列是否满足预设的快包识别条件,快包识别条件满足以下公式:
[0138] CREDIT-Q_LEN-P_LEN>threshold1 (A)
[0139] CREDIT-PKT_NUM-1>threshold2 (B)
[0140] 其中CREDIT为第二报文队列的信用,Q_LEN为第二报文队列的队列长度,P_LEN为待入队的报文的长度,PKT_NUM为第二报文队列中的报文数,threshold1为第二报文队列的信用的阈值。threshold2为第二报文队列的信用的阈值。公式A适用于基于记账的调度器,公式B适用于逐包调度的调度器。
[0141] 示例性的,参见图4,流量管理芯片的片外设置有DRAM,片内设置有SRAM和Buffer,第二报文队列的状态为第二状态,第二报文队列对应的PD队列的一部分PD存储DRAM中,另一部分存储在SRAM中或者PD队列全部在SRAM中,Buffer用来缓冲写入DRAM的PD,其组织形式可以为FIFO结构。
[0142] 针对DRAM写PD的写请求进行负载均衡控制,保证写入的PD均匀的分布到DRAM中的不同bank中。片内设置SRAM用来存储第二报文队列的PD队列中的一部分PD或全部PD,第二报文队列通过预取的方式从DRAM中将PD读入SRAM,以提高DRAM总线效率。同时,对第二报文队列的待入队报文进行快包识别,当识别出待入队报文的为快包时,该待入队的报文的PD旁路掉DRAM而直接写入SRAM中等待出队调度,如果不为快包,该待入队的报文的PD通过Buffer缓冲后写入DRAM中。
[0143] 由上可见,本发明实施例引入快包识别机制,识别出待入队的报文为快包后,该待入队报文对应的PD会旁路掉DRAM直接进入SRAM中等待调度,这样可以有效的提高快包的出队效率。
[0144] 可选的,在本发明的一些实施例中,所述DRAM包括多个存储块bank,所述DRAM中存储有多个报文队列对应的多个PD队列,所述多个PD队列的多个队列头分别存储在多个bank中,所述多个队列头与所述多个bank一一对应,所述多个PD队列与所述多个队列头一一对应。
[0145] 具体的,DRAM包括多个存储块bank,DRAM中存储有多个报文队列对应的多个PD队列,多个PD队列的多个队列头分别存储在多个bank中,多个队列头与所述多个bank一一对应,多个PD队列与多个队列头一一对应。
[0146] 示例性的,本实施例中DRAM的结构如图4,所示,DRAM划分为Y行*X列的宏单元MCELL阵列,每个宏单元存储一个PD,每一列MCELL为一个bank,DRAM中bank的数量为X,M行MCELL组成一个内存块BLOCK。其中,M是0和Y之间的整数,M为2的整数次幂,每个BLOCK在位图BITMAP中设置有表示忙闲状态的比特位。例如,内存块BLOCK被占用时对应的比特位置1,内存块BLOCK可用时对应的比特位置0。同时,每个内存块关联有NEXT_PTR指针和VOID_PTR指针,NEXT_PTR指针指向下一个内存块,VOID_PTR指针指向该内存块中的第一个无效的宏单元MCELL,在无效的宏单元后所有的宏单元的数据都是无效的,一旦读操作读到VOID_PTR-1指针指向的宏单元将会触发回收该内存块。一个内存块只能分配给一个队列占用,每个队列的PD按照顺序存放在内存块中形成单向链表,位于同一内存块中的单向链表通过NEXT_PTR指针和VOID_PTR指针进行连接。
[0147] 管理DRAM需要的管理内存的大小计算为:内存块的数量*(1+NEXT_PTR位宽+VOID_PTR位宽)。例如,对于速率为100Gbps的报文队列,如果每个内存块BLOCK中包含8行宏单元MCELL(即M=8),管理DRAM的所需的内存容量约为:2*256K*(1+26)=14.15M比特;如果每个内存块BLOCK中包含16行宏单元MCELL(即M=16),管理内存的大小为:2*128K*(1+28)=7.424M比特。每个内存块BLOCK中包含的宏单元MCELL的行数越少,表明对DRAM的管理越精细,需要的管理内存越大,在实现过程中可根据实际需求设定M的值。
[0148] 针对每个内存块赋予一个类型T,T的值为内存块的编号对内存块的列数X取模运算,该内存块的起始宏单元(MCELL)地址相对于内存块的地址的偏移量为T。示例性的,内存块I*X+0/1/2/3/…/X,类型分别为0/1/2/3/…/X-1/X,起始MCELL宏单元分别位于bank 0/1/2/3/…/X-1/X,其中I为整数。
[0149] 可选的,在本发明的一些实施例中,所述队列管理的方法还包括:
[0150] 根据存储在所述多个bank中的所述多个队列头执行所述多个报文队列中的至少两个报文队列的出队操作。
[0151] 可选的,在本发明的一些实施例中,所述队列管理的方法还包括:
[0152] 对所述多个PD队列中的至少两个PD队列执行出队操作,执行所述出队操作后所述至少两个PD队列分别包含了至少两个新的队列头;
[0153] 若所述至少两个新的队列头存储于同一个bank中,接收到至少两个出队请求,将所述至少两个出队请求置入所述同一个bank对应的出队请求队列,并使用所述出队请求队列对所述至少两个出队请求进行响应,所述至少两个出队请求与所述至少两个PD队列一一对应。
[0154] 具体的,流量管理芯片中维护至少多个报文队列,每个报文队列对应一个PD队列,需要对多个PD队列中的至少两个PD队列执行出队操作,执行出队操作后至少两个PD队列分别包含了至少两个新的队列头。
[0155] 示例性的,流量管理芯片维护512K个报文队列,需要对其中的3个报文队列对应的PD队列执行出队操作,报文队列1对应PD队列1,报文队列2对应PD队列2,报文队列3对应PD队列3,每个PD队列中包括8个PD,假设需要对PD队列1前2个PD执行出队操作,则PD队列1的第3个PD成为新的队列头,对PD队列2队列头进行出队操作,则PD队列2的第2个PD成为新的队列头,对PD队列3的前3个PD执行出队操作,则PD队列3的第4个PD成为新的队列头。
[0156] 具体的,若至少两个新的队列头存储在DRAM的同一个bank中,接收到至少两个出队请求时,将至少两个出队请求放置于同一个bank对应的出队请求队列,其中,DRAM中每个bank对应一个出队请求队列,使用出队请求队列对至少两个出队请求进行响应,按照先进先出的顺序依次处理出队请求队列中的出队请求,避免DRAM发生拥塞。
[0157] 示例性的,PD队列1、PD队列2和PD队列3的新队列头都位于DRAM中的bank1中,3个PD队列同时接收到出队请求,将3个出队请求放置在出队请求队列中,放置的顺序可以是随机排列或按照PD队列的序号进行排列,流量管理芯片按照先进先出的顺序依次读取出队请求队列中的出队请求进行处理,避免DRAM中的bank1发生拥塞。
[0158] 参见图5,为本发明实施例的一种队列的管理装置的结构示意图。在本发明实施例中,所述队列管理的装置1包括第一写入模块10和第二写入模块11。所述队列管理的装置1可以用于执行图1所示的方法。关于本实施例涉及的术语的含义以及举例,可以参考图1对应的实施例。此处不再赘述。
[0159] 第一写入模块10,用于将PD队列写入DRAM中,所述PD队列包括多个PD,所述多个PD与第一报文队列包括的多个报文一一对应。
[0160] 第二写入模块11,用于将所述PD队列中至少一个PD写入SRAM中,所述至少一个PD包括所述PD队列的队列头。
[0161] 例如,所述第一写入模块10可以是用于对所述DRAM进行控制的memory controller。所述第二写入模块11可以是用于对所述SRAM进行控制的memory controller。
[0162] 可选的,在本发明的一些实施例中,所述队列管理的装置1还包括:
[0163] 第一确定模块,用于所述第一写入模块将所述PD队列写入所述DRAM中之后,以及所述第二写入模块将所述PD队列中至少一个PD写入所述SRM中之前,确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值;
[0164] 所述第二写入模块具体用于若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值,将所述PD队列中至少一个PD写入所述SRAM中。
[0165] 可选的,所述第一确定模块还用于:
[0166] 判定待激活报文队列的集合为空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;
[0167] 所述第二写入模块具体用于若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值并且所述待激活报文队列的集合为空,将所述PD队列中至少一个PD写入所述SRAM中。
[0168] 可选的,所述第一确定模块还用于:
[0169] 判定所述待激活报文队列的集合为非空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;
[0170] 所述第二写入模块具体用于若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值并且所述第一报文队列是所述待激活报文队列的集合中优先级最高的报文队列,将所述PD队列中至少一个PD写入所述SRAM中。
[0171] 可选的,所述第一写入模块还用于:
[0172] 将所述第一报文队列的状态标识为第一状态;
[0173] 所述第一确定模块还用于:
[0174] 将所述第一报文队列的状态修改为第二状态;
[0175] 所述第二写入模块具体用于基于所述第二状态的指示,将所述PD队列中至少一个PD写入所述SRAM中。
[0176] 可选的,在本发明的一些实施例中,所述队列的管理装置1还包括:
[0177] 修改模块,用于若所述第一报文队列的信用大于或者等于所述第一阈值且所述SRAM可用的存储空间的容量小于所述第二阈值,将所述第一报文队列的状态修改为第三状态;
[0178] 加入模块,用于将处于所述第三状态所述第一报文队列加入所述待激活报文队列的集合中。
[0179] 可选的,所述队列的管理装置1还包括:
[0180] 第二确定模块,用于确定第二报文队列的待入队报文是否满足预设的快包识别条件;
[0181] 第三写入模块,用于若所述第二确定模块确定所述待入队报文不满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述DRAM中;或者
[0182] 第四写入模块,用于若所述第二确定模块确定所述待入队报文满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述SRAM中。
[0183] 可选的,所述DRAM包括多个bank,所述DRAM中存储有多个报文队列对应的多个PD队列,所述多个PD队列的多个队列头分别存储在多个bank中,所述多个队列头与所述多个bank一一对应,所述多个PD队列与所述多个队列头一一对应。
[0184] 可选的,所述队列的管理装置1还包括:
[0185] 第一出队模块,用于根据存储在所述多个bank中的所述多个队列头执行所述多个报文队列中的至少两个报文队列的出队操作。
[0186] 可选的,在本发明的一些实施例中,所述队列的管理装置1还包括:
[0187] 第二出队模块,用于对所述多个PD队列中的至少两个PD队列执行出队操作,执行所述出队操作后所述至少两个PD队列分别包含了至少两个新的队列头;
[0188] 响应模块,用于若所述至少两个新的队列头存储于同一个bank中,接收到至少两个出队请求,将所述至少两个出队请求置入所述同一个bank对应的出队请求队列,并使用所述出队请求队列对所述至少两个出队请求进行响应,所述至少两个出队请求与所述至少两个PD队列一一对应。
[0189] 本发明实施例和上述方法实施例属于同一构思,其带来的技术效果也相同,具体请参照上述方法实施例的描述,此处不再赘述。
[0190] 参见图6,为本发明实施例提供的一种队列的管理装置的结构示意图。在本发明实施例中,所述队列管理的装置2包括处理器61、存储器62和通信接口63。通信接口63用于与外部设备进行通信。队列管理的装置中的处理器61的数量可以是一个或多个。图6中处理器61的数量为1。本发明的一些实施例中,处理器61、存储器62和通信接口63可通过总线或其他方式连接。图6中,处理器61、存储器62和通信接口63通过总线连接。所述队列管理的装置
2可以用于执行图1所示的方法。关于本实施例涉及的术语的含义以及举例,可以参考图1对应的实施例。此处不再赘述。
[0191] 其中,存储器62中存储程序代码。处理器61用于调用存储器62中存储的程序代码,用于执行以下操作:
[0192] 将PD队列写入DRAM中,所述PD队列包括多个PD,所述多个PD与第一报文队列包括的多个报文一一对应;
[0193] 将所述PD队列中至少一个PD写入SRAM中,所述至少一个PD包括所述PD队列的队列头。
[0194] 在本发明的一些实施例中,所述处理器61执行所述将PD队列写入DRAM中之后,以及所述将PD队列中至少一个PD写入SRAM中之前,还用于执行:
[0195] 确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值;
[0196] 所述处理器61执行所述将所述PD队列中至少一个PD写入SRAM中具体包括:
[0197] 若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值,将所述PD队列中至少一个PD写入所述SRAM中。
[0198] 在本发明的一些实施例中,处理器61执行所述确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值,还包括:
[0199] 判定待激活报文队列的集合为空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;
[0200] 所述处理器61执行所述将所述PD队列中至少一个PD写入SRAM中具体包括:
[0201] 若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值并且所述待激活报文队列的集合为空,将所述PD队列中至少一个PD写入所述SRAM中。
[0202] 在本发明的一些实施例中,所述处理器61执行所述确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值还包括:
[0203] 判定所述待激活报文队列的集合为非空,所述待激活报文队列的集合包括满足预设的待激活条件的报文队列,所述待激活条件为执行所述判定时报文队列的信用大于或者等于所述第一阈值且执行所述判定时所述SRAM中可用的存储空间的容量小于所述第二阈值;
[0204] 所述处理器执行所述将所述PD队列中至少一个PD写入SRAM中具体包括:
[0205] 若所述SRAM中可用的存储空间的容量大于或者等于所述第二阈值且所述第一报文队列是所述待激活报文队列的集合中优先级最高的报文队列,将所述PD队列中至少一个PD写入所述SRAM中。
[0206] 在本发明的一些实施例中,所述处理器61执行所述将PD队列写入DRAM中还包括:
[0207] 将所述第一报文队列的状态标识为第一状态;
[0208] 所述处理器61执行所述确定所述第一报文队列的信用大于或者等于预设的第一阈值且所述SRAM中可用的存储空间的容量大于或者等于预设的第二阈值还包括:
[0209] 将所述第一报文队列的状态修改为第二状态;
[0210] 所述处理器61执行所述将所述PD队列中至少一个PD写入SRAM中具体包括:
[0211] 基于所述第二状态的指示,将所述PD队列中至少一个PD写入所述SRAM中。
[0212] 在本发明的一些实施例中,所述处理器61还用于执行:
[0213] 若所述第一报文队列的信用大于或者等于所述第一阈值且所述SRAM可用的存储空间的容量小于所述第二阈值,将所述第一报文队列的状态修改为第三状态;
[0214] 将处于所述第三状态的所述第一报文队列加入所述待激活报文队列的集合中。
[0215] 在本发明的一些实施例中,处理器61还用执行:
[0216] 确定第二报文队列的待入队报文是否满足预设的快包识别条件;
[0217] 若所述待入队报文不满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述DRAM中;或者
[0218] 若所述待入队报文满足所述预设的快包识别条件,则将所述待入队报文的PD写入所述SRAM中。
[0219] 在本发明的一些实施例中,所述DRAM包括多个bank,所述DRAM中存储有多个报文队列对应的多个PD队列,所述多个PD队列的多个队列头分别存储在多个bank中,所述多个队列头与所述多个bank一一对应,所述多个PD队列与所述多个队列头一一对应。
[0220] 在本发明的一些实施例中,所述处理器61还用于执行:
[0221] 根据存储在所述多个bank中的所述多个队列头执行所述多个报文队列中的至少两个报文队列的出队操作。
[0222] 在本发明的一些实施例中,所述处理器61还用于执行:
[0223] 对所述多个PD队列中的至少两个PD队列执行出队操作,执行所述出队操作后所述至少两个PD队列分别包含了至少两个新的队列头;
[0224] 若所述至少两个新的队列头存储于同一个bank中,接收到至少两个出队请求,将所述至少两个出队请求置入所述同一个bank对应的出队请求队列,并使用所述出队请求队列对所述至少两个出队请求进行响应,所述至少两个出队请求与所述至少两个PD队列一一对应。
[0225] 上述技术方案中,将第一报文队列对应的PD队列写入DRAM中,并将PD队列中包括队列头的至少一个PD写入SRAM中。因此,第一报文队列对应的PD队列中至少一个PD存储于SRAM中。对所述第一报文队列进行出队操作时,可以通过对所述PD队列进行读操作实现。在所述第一报文队列是FIFO队列的情况下,可以通过对所述PD队列的队列头执行读操作实现对所述第一报文队列的出队操作。所述PD队列的队列头存储在所述SRAM中,对所述PD队列的队列头执行读操作是通过对所述SRAM进行读操作实现的。对SRAM进行读操作的速率不会受到DRAM的属性的限制。因此,上述技术方案中,PD队列的出队效率较高,有助于提高第一报文队列的出队效率。
[0226] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:Read-Only Memory,简称:ROM)或随机存储记忆体(英文:Random Access Memory,简称:RAM)等。