数据队列出队管控方法和装置制造方法及图纸

技术编号:10204086 阅读:133 留言:0更新日期:2014-07-12 03:23
本发明专利技术公开了一种数据队列出队管控方法和装置,其方法包括:接收队列调度指令,获取队列首地址和出队子指针,组合成绝对地址;按照绝对地址的顺序,获取出队节点的子节点信息,写入重组队列;按照奇偶顺序,交叉预取下次出队节点的子节点信息,写入奇偶链表;监测开始标志,按照开始标志到达的先后顺序,依次将数据报文的调度序号写入排序队列中;按照调度序号顺序,依次将重组队列中出队节点的子节点信息取出,指向对应的数据报文存储位置,发送数据报文出队指令。本发明专利技术使用“节点汇聚”方式实现单链表队列管控,通过单链表实现大规模队列管控,保证线速,节省片外QDR存储器存储空间及管脚,结构简单易实现。

【技术实现步骤摘要】
数据队列出队管控方法和装置
本专利技术涉及到数据处理
,特别涉及到数据队列出队管控方法和装置。
技术介绍
随着网络业务和容量的不断增长,对于流量管控芯片的处理能力要求越来越高。流量管控芯片实现大规模队列管控时,比较常见的是采用链表的方式,将数据报文存储于片外DDR (Double Data Rate)存储器中,数据报文对应的索引地址以队列的形式,存储在片外QDR (Quad Data Rate,4倍数据倍率)存储器中,在出队操作时,获取索引地址,将索引地址对应的数据报文读出,完成数据报文出队。队列的管控主要是对报文存储的管控,包括入队和出队两步,队列按照一定的原贝U,将属于同一队列的数据报文划分为一个或者多个节点,存储在缓存空间里,多个节点组成一个汇聚节点,多个汇聚节点组成一条队列链表;队列与队列之间逻辑相互独立,每一队列维护一条队列链表。在入队和出队过程中,缓存根据调度指令给出的读写命令,对索引地址和数据报文进行存储和读出,实现数据流的管控。队列管控有两种方式,一是为每一队列分配固定的存储空间,二是所有的队列共享同一存储空间。在大规模队列的情况下,采用固定分配存储空间的方式会造成每组队列分配的存储空间很小,对突发流量的吸收能力比较弱,同时存储空间的浪费比较严重。因此在大规模的队列管控中基本都采用共享存储空间的方式。现有的共享存储空间的队列管控技术主要采用单链表和多链表的实现方式,实现队列管控中链表的存储。如果采用传统的单链表结构,片外QDR存储器的读写延时导致单队列出队不能满足出入队速率要求,同时会大量占用SRAM (Static Random Access Memory,静止随机存储器)资源,使用FPGA(Field — Programmable Gate Array,现场可编程门阵列)实现时,无论对于器件管脚分配还是布局布线都是巨大的挑战;如果采用多链表结构,依然存在大量SRAM资源被占用的缺点,并且使用FPGA实现时,器件管脚分配和布局布线比单链表方案的难度更大。同时,采用单链表实现队列管控的方式主要是将队列中每个节点的地址指针存储在链表中,需要读出一个节点之后才能得到下一个节点的地址,考虑到QDR存储器的读延时,不能满足出队处理的速率要求。
技术实现思路
本专利技术的主要目的为提供一种提高大规模队列出队速率的数据队列出队管控方法和装置。本专利技术提出一种数据队列出队管控方法,包括步骤:接收队列调度指令,获取队列描述符中的队列首地址和所述队列的出队链表中出队节点的出队子指针,组合成出队节点的绝对地址;按照当前链表中出队节点的绝对地址的顺序,获取当前链表中出队节点的子节点信息,写入重组队列,重新组合为数据报文;按照当前链表中出队节点的奇偶顺序,交叉预取下次出队节点的子节点信息,写入奇偶链表,并从奇偶链表中预取下次出队节点的报文尾标识;监测所述重组队列中出队节点的子节点信息中包括的数据报文的开始标志,按照所述开始标志到达的先后顺序,依次将数据报文的调度序号写入排序队列中;按照所述排序队列中出队数据报文的调度序号顺序,依次将重组队列中存储的出队节点的子节点信息取出,指向对应的数据报文存储位置,发送数据报文出队指令。优选地,所述按照当前链表中出队节点的绝对地址的顺序,获取当前链表中出队节点的子节点信息,写入重组队列,重新组合为数据报文;按照当前链表中出队节点的奇偶顺序,交叉预取下次出队节点的子节点信息,写入奇偶链表,并从奇偶链表中预取下次出队节点的报文尾标识的步骤具体包括:按照当前链表中出队节点的绝对地址的奇偶顺序,将当前链表中出队节点划分为奇数节点和偶数节点;根据当前奇数节点的绝对地址,获取当前奇数节点的子节点信息,写入重组队列;预读下一奇数节点的子节点信息,写入奇链表;根据当前偶数节点的绝对地址,获取当前偶数节点的子节点信息,写入重组队列;预读下一偶数节点的子节点信息,写入偶链表;根据下一奇数节点的绝对地址,获取下一奇数节点的子节点信息,写入重组队列;预读再下一奇数节点的子节点信息,写入奇链表;根据下一偶数节点的绝对地址,获取下一偶数节点的子节点信息,写入重组队列;预读再下一偶数节点的子节点信息,写入偶链表;以此类推,直至当前链表中所有节点的子节点信息均写入重组队列。优选地,所述监测所述重组队列中出队节点的子节点信息中包括的数据报文的开始标志,按照所述开始标志到达的先后顺序,依次将数据报文的调度序号写入排序队列中的步骤具体包括:监测所述重组队列中出队节点的子节点信息中包括的数据报文的开始标志和所述开始标志到达的先后顺序;将首个到达的开始标志对应的节点的调度列号写入排序队列中;依次将与所述首个到达的开始标志对应的节点属于同一重组队列的数据报文的调度序号写入排序队列中;在当前写入节点的子节点信息中包括报文尾标识时,下一个到达的节点作为开始标志对应的节点,将下一个到达的节点的调度序号写入排序队列中;依次将与所述下一个到达的开始标志对应的节点属于同一重组队列的数据报文的调度序号与入排序队列中;以此类推,直至所有重组队列的所有数据报文的调度序号均写入排序队列中。优选地,所述按照当前链表中出队节点的奇偶顺序,交叉预取下次出队节点的子节点信息,写入奇偶链表,并从奇偶链表中预取下次出队节点的报文尾标识的步骤之后还包括:在当前写入节点的子节点信息中包括报文尾标识时,判断所述队列在出队后是否为空;当所述队列在出队后为非空时,提取当前写入节点的子节点信息中包括的下一链表首节点的地址,预读下一链表首节点的子节点信息;按照下一链表中出队节点的绝对地址的奇偶顺序,交叉获取下一链表中出队节点的子节点信息,写入重组队列。优选地,所述在当前写入节点的子节点信息中包括报文尾标识时,判断所述队列在出队后是否为空的步骤之后还包括:当所述队列在出队后为空时,释放队列调度指令,停止写入重组队列。本专利技术还提出一种数据队列出队管控装置,包括:地址生成模块,用于接收队列调度指令,获取队列描述符中的队列首地址和所述队列的出队链表中出队节点的出队子指针,组合成出队节点的绝对地址;重组队列模块,用于按照当前链表中出队节点的绝对地址的顺序,获取当前链表中出队节点的子节点信息,写入重组队列,重新组合为数据报文;预读队列模块,用于按照出队节点的奇偶顺序,交叉预取下次出队节点的子节点信息,写入奇偶链表,并从奇偶链表中预取下次出队节点的报文尾标识;排序队列模块,用于监测所述重组队列中出队节点的子节点信息中包括的数据报文的开始标志,按照所述开始标志到达的先后顺序,依次将数据报文的调度序号写入排序队列中;出队指令模块,用于按照所述排序队列中出队数据报文的调度序号,依次将重组队列中存储的出队节点的子节点信息取出,指向对应的数据报文存储位置,发送数据报文出队指令。优选地,所述重组队列模块具体用于:按照当前链表中出队节点的绝对地址的奇偶顺序,将当前链表中出队节点划分为奇数节点和偶数节点;根据当前奇数节点的绝对地址,获取当前奇数节点的子节点信息,写入重组队列;预读下一奇数节点的子节点信息,写入奇链表;根据当前偶数节点的绝对地址,获取当前偶数节点的子节点信息,写入重组队列;预读下一偶数节点的子节点信息,写入偶链表;根据下一奇数节点的绝对地址,获取下一奇数节本文档来自技高网
...

【技术保护点】
一种数据队列出队管控方法,其特征在于,包括步骤:接收队列调度指令,获取队列描述符中的队列首地址和所述队列的出队链表中出队节点的出队子指针,组合成出队节点的绝对地址;按照当前链表中出队节点的绝对地址的顺序,获取当前链表中出队节点的子节点信息,写入重组队列,重新组合为数据报文;按照当前链表中出队节点的奇偶顺序,交叉预取下次出队节点的子节点信息,写入奇偶链表,并从奇偶链表中预取下次出队节点的报文尾标识;监测所述重组队列中出队节点的子节点信息中包括的数据报文的开始标志,按照所述开始标志到达的先后顺序,依次将数据报文的调度序号写入排序队列中;按照所述排序队列中出队数据报文的调度序号顺序,依次将重组队列中存储的出队节点的子节点信息取出,指向对应的数据报文存储位置,发送数据报文出队指令。

【技术特征摘要】
1.一种数据队列出队管控方法,其特征在于,包括步骤: 接收队列调度指令,获取队列描述符中的队列首地址和所述队列的出队链表中出队节点的出队子指针,组合成出队节点的绝对地址; 按照当前链表中出队节点的绝对地址的顺序,获取当前链表中出队节点的子节点信息,写入重组队列,重新组合为数据报文;按照当前链表中出队节点的奇偶顺序,交叉预取下次出队节点的子节点信息,写入奇偶链表,并从奇偶链表中预取下次出队节点的报文尾标识; 监测所述重组队列中出队节点的子节点信息中包括的数据报文的开始标志,按照所述开始标志到达的先后顺序,依次将数据报文的调度序号写入排序队列中; 按照所述排序队列中出队数据报文的调度序号顺序,依次将重组队列中存储的出队节点的子节点信息取出,指向对应的数据报文存储位置,发送数据报文出队指令。2.根据权利要求1所述的数据队列出队管控方法,其特征在于,所述按照当前链表中出队节点的绝对地址的顺序,获取当前链表中出队节点的子节点信息,写入重组队列,重新组合为数据报文;按照当前链表中出队节点的奇偶顺序,交叉预取下次出队节点的子节点信息,写入奇偶链表,并从奇偶链表中预取下次出队节点的报文尾标识的步骤具体包括: 按照当前链表中出队节点的绝对地址的奇偶顺序,将当前链表中出队节点划分为奇数节点和偶数节点; 根据当前奇数节点的绝对地址,获取当前奇数节点的子节点信息,写入重组队列;预读下一奇数节点的子节点信息,写入奇链表; 根据当前偶数节点的绝对地址,获取当前偶数节点的子节点信息,写入重组队列;预读下一偶数节点的子节点信息,写入偶链表; 根据下一奇数节点的绝对地址,获取下一奇数节点的子节点信息,写入重组队列;预读再下一奇数节点的子节点信息,写入奇链表; 根据下一偶数节点的绝对地址,获取下一偶数节点的子节点信息,写入重组队列;预读再下一偶数节点的子节点信息,写入偶链表; 以此类推,直至当前链表中所有节点的子节点信息均写入重组队列。3.根据权利要求1所述的数据队列出队管控方法,其特征在于,所述监测所述重组队列中出队节点的子节点信息中包括的数据报文的开始标志,按照所述开始标志到达的先后顺序,依次将数据报文的调度序号写入排序队列中的步骤具体包括: 监测所述重组队列中出队节点的子节点信息中包括的数据报文的开始标志和所述开始标志到达的先后顺序; 将首个到达的开始标志对应的节点的调度列号写入排序队列中; 依次将与所述首个到达的开始标志对应的节点属于同一重组队列的数据报文的调度序号与入排序队列中; 在当前写入节点的子节点信息中包括报文尾标识时,下一个到达的节点作为开始标志对应的节点,将下一个到达的节点的调度序号写入排序队列中; 依次将与所述下一个到达的开始标志对应的节点属于同一重组队列的数据报文的调度序号与入排序队列中; 以此类推,直至所有重组队列的所有数据报文的调度序号均写入排序队列中。4.根据权利要求1至3任一项所述的数据队列出队管控方法,其特征在于,所述按照当前链表中出队节点的奇偶顺序,交叉预取下次出队节点的子节点信息,写入奇偶链表,并从奇偶链表中预取下次出队节点的报文尾标识的步骤之后还包括: 在当前写入节点的子节点信息中包括报文尾标识时,判断所述队列在出队后是否为空; 当所述队列在出队后为非空时,提取当前写入节点的子节点信息中包括的下一链表首节点的地址,预读下一链表首节点的子节点信息; 按照下一链表中出队节点的绝对地址的奇偶顺序,交叉获取下一链表中出队节点的子节点信...

【专利技术属性】
技术研发人员:赵姣
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:广东;44

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

1