CN102377682B - 基于定长单元存储变长分组的队列管理方法及设备 - Google Patents

基于定长单元存储变长分组的队列管理方法及设备 Download PDF

Info

Publication number
CN102377682B
CN102377682B CN201110411671.3A CN201110411671A CN102377682B CN 102377682 B CN102377682 B CN 102377682B CN 201110411671 A CN201110411671 A CN 201110411671A CN 102377682 B CN102377682 B CN 102377682B
Authority
CN
China
Prior art keywords
buffer memory
list item
output queue
parameter
information table
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.)
Expired - Fee Related
Application number
CN201110411671.3A
Other languages
English (en)
Other versions
CN102377682A (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.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CN201110411671.3A priority Critical patent/CN102377682B/zh
Publication of CN102377682A publication Critical patent/CN102377682A/zh
Application granted granted Critical
Publication of CN102377682B publication Critical patent/CN102377682B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于定长单元存储变长分组的队列管理方法及设备。其方法是:将队列存储空间划分成等大小的基本缓存单元,并为每个单元设置一个缓存描述符,将这些描述符存在缓存描述符存储表中形成链表;从缓存描述符存储表中为入队分组分配所需的缓存描述符,填写对应的表项信息,给出入队逻辑地址;从缓存描述符存储表中找出出队分组占用的缓存描述符,并给出出队逻辑地址;分组入队或出队后,更新空闲队列信息表和输出队列信息表;由入队逻辑地址,将分组分片搬到队列存储空间中,由出队逻辑地址,将分组分片从队列存储空间中搬出。本发明提高了队列存储空间的利用率,降低了队列维护的复杂度,可用于分组交换***中。

Description

基于定长单元存储变长分组的队列管理方法及设备
技术领域
本发明涉及数字交换技术领域,尤其涉及一种基于定长单元存储变长分组的队列管理方法及设备,可用于分组交换***中。
背景技术
分组交换是一种存储转发式的交换方式,其存储转发的基本数据单元是报文分组。分组的转发流程包括分组接收和缓存,输出端口查找,队列管理,出队调度,分组发送等步骤。队列管理是分组交换设备的重要功能,队列管理方法的优劣对交换设备的性能和成本有重要的影响。
队列管理通常包括入队和出队两个基本操作,入队是为进入***的分组分配存储空间,控制分组进入正确的输出队列中,出队是将输出队列中的分组读出,发送到相应的输出端口。分组能否成功入队取决于该分组所在的输出队列是否有足够的空闲空间,但是队列的长度总是有限的,因此如果数据流太大,而队列没有空间去暂存这些新到的分组时,队列中的一些分组就会被丢弃,常用的丢包机制有Drop Tail,DropFront,Random Drop等。当队列出现丢包,说明队列已经满,如果队列长时间工作在满或几乎满的状态,会对***的时延性能造成很大的影响,所以好的队列管理方法应该设法避免队列进入满或几乎满的状态。
现有的管理队列存储空间的方法有固定分配和共享缓存两种。固定分配法是给每个队列预先分配固定大小的一片连续的存储空间,一般是把全部的空间平均分配给所有的队列或按队列优先级进行一定的加权后按照各队列的权重分配。属于某个队列的分组独享该队列的空间。这种固定分配的方式简单,实现和管理也比较容易,但是当总的存储空间有限而队列很多时,分给每个队列的空间就很少了。由于各队列之间不能共享缓存,当某一队列到达的数据量很少时,其空间将被闲置,而其他的一些队列此时却可能因为没有空间而出现丢包。固定分配的方式对存储空间资源的利用率不高。
共享缓存法是一种比固定分配法更为通用的方法,一般使用链表的方式实现。所有空闲可用的空间被组织为一存储池,为所有的队列所共享,当某一队列有分组到来时,先到存储池申请入队空间,如果申请成功,申请到的空间将以链表的方式添加到该队列的队尾。当分组出队后,队列释放的空间也将回归存储池中。因为各队列的分组会交替到达,所以同一队列的不同分组是不连续存储的,因而需要用链表来组织。由于分组的长度是动态变化的,例如以太网帧长度从64字节到1518字节均有,所以在入队时为每个分组申请多大的队列空间对***的性能影响较大。有两种申请队列空间的方式,一是为每个分组申请固定大小的空间,该空间足以存放一个最大的分组,这种方式实现简单,但当进入***的分组中小分组的比例较大时,队列空间利用率较低。另一种方式是为每一个分组按其大小申请不一样大的队列空间,这种方法空间利用率高,但缺点在于由于每次分配的空间都不一样大,分组出队以后回收到存储池的将是不连续且大小不一样的小块空间,队列的维护以及从存储池中找出一块合适的空间分配给新到分组的搜索过程将比较复杂。
发明内容
本发明的目的在于针对上述已有技术的不足,提出的一种基于定长单元存储变长分组的队列管理方法及设备,以提高队列存储空间的利用率,降低队列维护的复杂度。
本发明是这样实现的:
一.本发明基于定长单元存储变长分组的队列管理方法,包括如下步骤:
(1)将分组交换***中用于存储分组的队列存储空间划分为m个等长度的基本缓存单元Buffer,并编号为Buffer0,Buffer1,...,Buffer(m-1),Buffer(m),当分组交换***中有分组进入时,将该分组分片存储到n个基本缓存单元Buffer中,m由队列存储空间的大小决定,n由分组的长度决定,m和n都是正整数且n<m;
(2)为每个基本缓存单元Buffer设置一个缓存描述符BD,并编号为BD0,BD1,...,BD(m-1),BD(m),每个BD编号与Buffer号和分组写入/读出队列存储空间的逻辑入队/出队地址相对应;
(3)分别配置缓存描述符存储表BD RAM、空闲队列信息表和输出队列信息表,并将所有的缓存描述符BD初始化到一条链表中,并用空闲队列信息表和输出队列信息表共同维护这条链表;
(4)在分组入队时,根据分组的大小计算出存储该分组需要的缓存描述符BD个数,然后访问空闲队列信息表和输出队列信息表,查看是否有足够的缓存描述符BD分配给该分组,如果有,则填写缓存描述符存储表BD RAM的相应表项,更新空闲队列信息表和输出队列信息表中相应的表项,给出分组逻辑入队地址,反之,则给出入队失败指示;
(5)当某一输出队列有分组出队时,读取并修改缓存描述符存储表BD RAM的相应表项,更新空闲队列信息表和输出队列信息表中相应的表项,给出该分组的逻辑出队地址;
(6)按照分组逻辑入队地址,将分组分片存储到队列存储空间中;按照分组逻辑出队地址,将分组分片从队列存储空间中搬出。
二.本发明基于定长单元存储变长分组的队列管理设备,包括:
共享缓存器,作为队列存储空间,用于缓存分组数据;
缓存描述符存储表BD RAM,用于存放缓存描述符BD,它由m个表项组成,每个表项有4项信息:第一分片标志位Fs、最后分片标志位F1、有效数据长度Lv和下一跳地址An,其中m为基本缓存单元Buffer的个数;
空闲队列信息表,用于存放空闲队列状态信息,它由1个表项组成,表项有3项信息:空闲队列长度L1、空闲队列尾指针Pt1和空闲队列头指针Ph1
输出队列信息表,用于存放输出队列状态信息,它由r个表项组成,一个表项对应一个输出队列且每个表项有4项信息:输出队列最大允许长度Lmax、输出队列长度L2、输出队列尾指针Pt2和输出队列头指针Ph2,其中r为输出队列的个数;
入队控制器,在有分组入队时开始工作,即根据分组的大小计算出存储该分组需要的缓存描述符BD个数,并通过读写选通开关,访问空闲队列信息表和输出队列信息表,查看是否有足够的缓存描述符BD分配给该分组,如果有,则填写缓存描述符存储表BD RAM的相应表项,更新空闲队列信息表和输出队列信息表中相应的表项,将分组逻辑入队地址发送给数据搬移器,反之,将入队失败指示发送给数据搬移器;
出队控制器,在有分组出队时开始工作,即通过读写选通开关,读取并修改缓存描述符存储表BD RAM的相应表项,更新空闲队列信息表和输出队列信息表中相应的表项,将出队分组的逻辑出队地址发送给数据搬移器;
读写选通开关,用于协调入队控制器和出队控制器有序的操作缓存描述符存储表BD RAM和输出队列信息表RAM,防止出现读写冲突;
数据搬移器,接收分组逻辑入队地址,将分组分片存储到共享缓存器中;接收分组逻辑出队地址,将分组分片从共享缓存器中搬出。
本发明与现有技术相比具有如下优点:
本发明由于根据入队分组的大小合理分配基本缓存单元Buffer的个数,相比不管分组大小都分配一块足够大的固定存储空间,提高了队列存储空间的利用率;同时由于本发明的队列存储空间的分配和回收都是以定长基本缓存单元Buffer为单位进行的,相比按与分组同等大小的存储空间为单位分配和回收存储空间的方法,降低了队列维护的复杂度。
附图说明
图1为本发明的总流程图;
图2为本发明中入队处理子流程图;
图3为本发明中出队处理子流程图;
图4为本发明的设备结构框图。
具体实施方式
为使本发明目的、技术方案以及优点更加清楚明白,以下参照附图并举实施例,对本发明进行近一步的详细说明。本发明所涉及的实施例为由64K*32位构成的256KB的队列存储空间,划分基本缓存单元Buffer大小为64Byte。
参照图1,本发明基于定长单元存储变长分组的队列管理方法,包括以下步骤:
步骤1:将分组交换***中用于存储分组的队列存储空间划分为4096个64Byte的基本缓存单元Buffer。
步骤2:为每个缓存描述符Buffer设置一个缓存描述符BD,两者构成一一对应的关系。
步骤3:分别配置缓存描述符存储表BD RAM、空闲队列信息表和输出队列信息表。
(3a)设置缓存描述符存储表BD RAM中的所有表项的参数:
将缓存描述符存储表BD RAM中所有表项的第一个参数,即第一分片标志位Fs置为0;
将缓存描述符存储表BD RAM中所有表项的第二个参数,即最后分片标志位F1置为0;
将缓存描述符存储表BD RAM中所有表项的第三个参数,即有效数据长度Lv为置0;
将缓存描述符存储表BD RAM中第i个表项的第四个参数,即下一跳地址An置为i+1,i为整数,且0≤i≤m-1,m为缓存描述符BD的个数,本实例m为4096。
(3b)设置空闲队列信息表中的所有表项的参数:
将空闲队列信息表中表项的第一个参数,即空闲队列长度L1置为m;
将空闲队列信息表中表项的第二个参数,即空闲队列尾指针Pt1置为m;
将空闲队列信息表中表项的第三个参数,即空闲队列头指针Ph1置为0。
(3c)设置输出队列信息表中的所有表项的参数:
将输出队列信息表中第j个表项的第一个参数,即输出队列最大允许长度Lmax置为Lj,0≤j≤r-1,r为输出队列的个数,Lj为大于1的正整数且
将输出队列信息表中所有表项的第二个参数,即输出队列长度L2置为0;
将输出队列信息表中所有表项的第三个参数,即输出队列尾指针Pt2置为0;
将输出队列信息表中所有表项的第四个参数,即输出队列头指针Ph2置为0。
步骤4:在分组入队时,执行分组入队处理相关操作。
参照图2,本步骤的具体实现如下:
(4a)利用公式计算得出存储入队分组需要的缓存描述符BD个数,其中为上取整运算,Lp为分组的大小,A为基本缓存单元Buffer的大小,N为存储该分组需要的缓存描述符BD个数,本实例A为64Byte,分组大小Lp为100Byte,则计算得N为2,但不局限于该参数;
(4b)判断入队条件:
(4b1)访问空闲队列信息表,读取表项的第一个参数,第一个参数为空闲队列长度L1
(4b2)访问输出队列信息表,得到入队分组所属的输出队列所对应的表项,读取该表项的第一个参数和第二个参数,第一个参数为最大允许队列长度Lmax,第二个参数为输出队列长度L2
(4b3)比较空闲队列长度L1与存储分组需要的缓存描述符BD个数N,若L1≥N,则置比较结果R1为1,反之置为0;
(4b4)将存储分组需要的缓存描述符BD个数N与输出队列长度L2求和,比较该和与最大允许队列长度Lmax,若N+L2≤Lmax,则置比较结果R2为1,反之置为0;
(4b5)若R1=1且R2=1,则满足入队条件,执行步骤(4d),反之,则不满足入队条件,执行步骤(4c);
(4c)给出入队失败指示,入队处理操作结束;
(4d)填写缓存描述符存储表BD RAM的相应表项,并给出分组入队逻辑地址:
(4d1)以空闲队列头指针Ph1为地址访问缓存描述符存储表BD RAM,得到特定表项,将该表项的第一个参数Fs写为1,第三个参数Lv写为64,若存储分组需要的缓存描述符BD个数N=1,则第二个参数F1写为1,反之写为0;
(4d2)将空闲队列头指针Ph1赋值给最后分片地址A1,再将表项的第四个参数An赋值给下一次访问地址At;并将空闲队列头指针Ph1的值作为分组入队逻辑地址给出;
(4d3)记分组剩余长度Lr=Lp-Lv,Lp为分组长度,Lv为该表项对应的基本缓存单元Buffer中存放的有效数据长度;记分组剩余占用缓存描述符BD数Nr=N-1,N为存储分组需要的缓存描述符BD个数;
(4d4)判断Nr是否为0,如果是,则执行步骤(4d8),反之,则执行步骤(4d5);
(4d5)以下一次访问地址At访问缓存描述符存储表BD RAM,得到特定表项,将该表项的第一个参数Fs写为0,若分组剩余占用缓存描述符BD数Nr=1,将第二个参数F1写为1,将第三个参数Lv写为Lr的值,反之,第二个参数F1写为0,第三个参数Lv写为64;
(4d6)将下一次访问地址At赋值给最后分片地址A1,再将表项的第四个参数An赋值给下一访问地址At;将下一次访问地址At的值作为分组入队逻辑地址给出;
(4d7)将分组剩余长度Lr减64,将分组剩余占用缓存描述符BD数Nr减1;返回步骤(4d4);
(4d8)以出队分组所属的输出队列尾指针访问缓存描述符存储表BD RAM,得到特定表项,将该特定表项的第四个参数An写为空闲队列头指针Ph1的值。
(4e)更新空闲队列信息表和输出队列信息表中相应的表项:
(4e1)访问空闲队列信息表,将表项的第一个参数L1减去存储分组需要的缓存描述符BD个数N的值,将第三个参数Ph1修改为下一次访问地址At的值;
(4e2)访问输出队列信息表,得到分组所属输出队列对应的表项,将该表项的第二个参数L2加上存储分组需要的缓存描述符BD个数N的值,将第三个参数Pt2修改为最后分片地址A1的值,入队处理操作结束。
步骤5:在分组出队时,执行出队处理相关操作。
参照图3,本步骤的具体实现如下:
(5a)读取并修改缓存描述符存储表BD RAM的相应表项,同时给出分组出队逻辑地址:
(5a1)以分组所属的输出队列头指针Ph2为地址访问缓存描述符存储表BDRAM,得到特定表项,读取该表项第二个参数F1和第四个参数An
(5a2)将输出队列头指针Ph2的值赋给最后分片地址A1,将表项的第四个参数An的值赋给下一次访问地址At,并将输出队列头指针Ph2的值作为分组出队逻辑地址给出;
(5a3)判断F1是否为1,如果是,则执行步骤(5a6),反之则执行步骤(5a4);
(5a4)以下一次访问地址At访问缓存描述符存储表BD RAM,得到特定表项,读取该表项第二个参数F1和第四个参数An,并将下一次访问地址At的值作为分组出队逻辑地址给出;
(5a5)将下一次访问地址At的值赋给最后分片地址A1,再将表项的第四个参数An的值赋给下一次访问地址At;返回执行步骤(5a3);
(5a6)以空闲队列尾指针Pt1为地址,访问缓存描述符存储表BD RAM,得到特定表项,将该表项的第四个参数An写为分组所属的输出队列头指针Ph2的值。
(5b)更新空闲队列信息表和输出队列信息表中相应的表项:
(5b1)访问空闲队列信息表,将表项的第一个参数L1加上存储分组需要的缓存描述符BD的个数N,将第二个参数Pt1修改为最后分片地址A1的值;
(5b2)访问输出队列信息表,得到分组所属输出队列对应的表项,将该表项的第二个参数L2减去存储分组需要的缓存描述符BD的个数N,将第三个参数Ph2修改为下一次访问地址At的值,出队处理操作结束。
步骤6:按照分组逻辑入队地址,将分组分片存储到队列存储空间中;按照分组逻辑出队地址,将分组分片从队列存储空间中搬出。
参照图4,本发明基于定长单元存储变长分组的队列管理设备,包括:
共享缓存器10、缓存描述符存储表BD RAM20、空闲队列信息表30、输出队列信息表40、入队控制器50、出队控制器60、读写选通开关70、数据搬移器80。其中入队控制器50与缓存描述符存储表BD RAM20、空闲队列信息表30及输出队列信息表40双向连接;出队控制器60与缓存描述符存储表BD RAM20、空闲队列信息表30及输出队列信息表40双向连接;数据搬移器80与入队控制器50及出队控制器60单向连接,并与共享缓存器10双向连接。其中:
所述的共享缓存器10,为输入分组提供足够的存储空间。
所述的缓存描述符存储表BD RAM20,用于存放所有缓存描述符BD,并维护着队列链表的连接关系。在有分组入队时接受入队控制器50的访问,填写相应表项的信息;在有分组出队时接受出队控制器60的访问,读取并修改相应表项的信息。其中,表项信息如表1所示,表中的第一分片标志位和最后分片标志位分别占1bit,取0或1;结合本实例基本缓存单元Buffer为64Byte,表1中的有效数据长度占7bit,取值范围从1~64,该参数占用bit数可根据实际划分基本缓存单元Buffer的大小做改动;结合本实例缓存描述符有4096个,表1中的下一跳地址占12bit,取值范围从0~4095,该参数的占用bit数可根据实际队列存储空间大小做扩展。
表1  缓存描述符存储表BD RAM表项信息
所述的空闲队列信息表30,用于存放空闲队列状态信息。在有分组入队或出队时,分别接受入队控制器50和出队控制器60的访问,并读取和修改空闲队列状态信息。其中,空闲队列状态信息如表2所示,结合本实例缓存描述符有4096个,表2中的空闲队列长度占13bit,取值范围从0~4096,表2中的空闲队列尾指针和空闲队列头指针分别占12bit,取值范围均从0~4095,这3项参数的占用bit数均可根据实际队列存储空间大小做扩展。
表2  空闲队列状态信息
所述的输出队列信息表40,用于存放各个输出队列的状态信息。在有分组入队或出队时,分别接收入队控制器50和出队控制器60的访问,并读取和修改输出队列的状态信息。其中,输出队列状态信息如表3所示,结合本实例缓存描述符有4096个,表3中的输出队列最大允许长度和输出队列长度分别占13bit,取值范围从0~4096,表3中的输出队列尾指针和输出队列头指针分别占12bit,取值范围从0~4095,这4项参数的占用bit数均可根据实际队列存储空间大小做扩展。
表3输出队列状态信息
所述的入队控制器50,主要完成7项功能:一是负责在分组入队时,计算该分组所需缓存描述符BD的个数,计算方法为,分组长度除以基本缓存单元Buffer的大小,然后再上取整;二是判断入队条件,如果空闲队列长度大于等于分组所需缓存描述符BD的个数,并且该分组所属输出队列长度加上分组所需缓存描述符BD的个数的和小于等于该输出队列最大允许长度,则允许分组入队,反之,不允许分组入队;三是在允许入队的情况下,通过读写选通开关70,以空闲队列头指针去访问缓存描述符存储表BD RAM20,填写相应表项的信息,以该表项信息中的下一跳地址继续访问缓存描述符存储表BD RAM20的下一个表项,并填写该表项的信息,直至访问完分配给入队分组的所有缓存描述符BD对应的表项为止,在访问缓存描述符存储表BDRAM20的同时,将访问的表项对应的缓存描述符BD编号作为分组入队逻辑地址传输给数据搬移器80;四是通过读写选通开关70,以入队分组所属的输出队列尾指针为地址访问缓存描述符存储表BD RAM20,修改表项信息中的下一跳地址为空闲队列头指针的值;五是在不允许入队的情况下,给出入队失败信号;六是访问空闲队列信息表30,更新空闲队列头指针和空闲队列长度,维护分组入队后空闲队列的状态信息;七是通过读写选通开关70,访问分组所属输出队列信息表40,更新输出队列尾指针和输出队列长度,维护分组入队后该输出队列的状态信息。其中:
所述的填写是指:假设当前访问的缓存描述符存储表BD RAM20中表项为w,对应的基本缓存单元Buffer中存放的数据为u;根据u是否分组的第一个分片、是否分组的最后一个分片及u的长度,分别填写表项w中的第一分片标志位、最后分片标志位和有效数据长度;
所述的更新,是指分组入队后对表2和表3中的相应参数做更新,具体包括4项内容:
一是假设原来表2中队列长度为e,则将该队列长度更新为e-N,N为分配给入队分组缓存描述符的个数;
二是假设原来表2中队列头指针为f,则将该队列头指针更新为b,b为最后访问的缓存描述符存储表BD RAM20中表项的下一跳地址;
三是假设原来表3中队列长度为g,则将该队列长度更新为g+N,N为分配给入队分组缓存描述符的个数;
四是假设原来表3中队列尾指针为h,则将该队列尾指针更新为a,a为最后访问的缓存描述符存储表BD RAM20中表项对应的缓存描述符编号。
所述的出队控制器60,主要完成3项功能:一是负责在分组出队时,通过读写选通开关70,以分组所属的输出队列头指针为地址去访问缓存描述符存储表BDRAM20,读取相应表项的信息,以信息中的下一跳地址继续访问缓存描述符存储表BD RAM的下一个表项,并读取相应表项的信息,直至访问完出队分组占用的所有缓存描述符BD对应的表项为止,在访问缓存描述符存储表BD RAM20的同时,将访问的表项对应的缓存描述符BD编号作为分组出队逻辑地址传输给数据搬移器80;二是通过读写选通开关70,以空闲队列尾指针为地址访问缓存描述符存储表BDRAM20,修改表项信息中的下一跳地址为出队分组所属的输出队列头指针的值;三是访问空闲队列信息表30,更新队列尾指针和队列长度,维护分组出队后空闲队列的状态信息;四是通过读写选通开关70,访问分组所属输出队列信息表40更新队列头指针和队列长度,维护分组出队后该输出队列的状态信息。其中所述的更新,是指分组出队后对表2和表3中的相应参数做更新,具体包括4项内容:假设原来表2中队列长度为e,则将该队列长度更新为e+N,N为出队分组所占用的缓存描述符的个数;假设原来表2中队列尾指针为f,则将该队列尾指针更新为b,b为最后访问的缓存描述符存储表BD RAM20中表项对应的缓存描述符编号;假设原来表3中队列长度为g,则将该队列长度更新为g-N,N为出队分组所占用的缓存描述符的个数;假设原来表3中队列尾指针为h,则将该队列尾指针更新为a,a为最后访问的缓存描述符存储表BD RAM20中表项的下一跳地址。
所述的读写选通开关70,用于协调入队控制器50和出队控制器60有序的访问缓存描述符存储表BD RAM20和输出队列信息表40,防止出现读写冲突。
所述的数据搬移器80,用于接收入队控制器50传输过来的分组逻辑入队地址并根据该地址将分组分片地依次存储到共享缓存器10中相应的基本缓存单元Buffer中,同时接收出队控制器60传输过来的分组出队逻辑地址并根据该地址将出队分组分片地依次从共享缓存器10相应的基本缓存单元Buffer中读出。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不限于此,任何熟悉该技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的改变或替换,都涵盖在本发明的保护范围内。

Claims (10)

1.一种基于定长单元存储变长分组的队列管理方法,包括如下步骤: 
(1)将分组交换***中用于存储分组的队列存储空间划分为m个等长度的基本缓存单元Buffer,并编号为Buffer0,Buffer1,…,Buffer(m-1),Buffer(m),当分组交换***中有分组进入时,将该分组分片存储到n个基本缓存单元Buffer中,m由队列存储空间的大小决定,n由分组的长度决定,m和n都是正整数且n<m; 
(2)为每个基本缓存单元Buffer设置一个缓存描述符BD,并编号为BD0,BD1,…,BD(m-1),BD(m),每个BD编号与Buffer号和分组写入/读出队列存储空间的逻辑入队/出队地址相对应; 
(3)分别配置缓存描述符存储表BD RAM、空闲队列信息表和输出队列信息表,并将所有的缓存描述符BD初始化到一条链表中,并用空闲队列信息表和输出队列信息表共同维护这条链表, 
所述缓存描述符存储表BD RAM,用于存放缓存描述符BD,它由m个表项组成,每个表项有4项信息:第一分片标志位Fs、最后分片标志位Fl、有效数据长度Lv和下一跳地址An,其中m为基本缓存单元Buffer的个数; 
所述空闲队列信息表,用于存放空闲队列状态信息,它由1个表项组成,表项有3项信息:空闲队列长度L1、空闲队列尾指针Pt1和空闲队列头指针Ph1; 
所述输出队列信息表,用于存放输出队列状态信息,它由r个表项组成,一个表项对应一个输出队列且每个表项有4项信息:输出队列最大允许长度Lmax、输出队列长度L2、输出队列尾指针Pt2和输出队列头指针Ph2,其中r为输出队列的个数; 
(4)在分组入队时,根据分组的大小计算出存储该分组需要的缓存描述符BD个数,然后访问空闲队列信息表和输出队列信息表,查看是否有足够的缓存描述符BD分配给该分组,如果有,则填写缓存描述符存储表BD RAM的相应表项,更新空闲队列信息表和输出队列信息表中相应的表项,给出分组逻辑入队地址,反之,则给出入队失败指示; 
(5)当某一输出队列有分组出队时,读取并修改缓存描述符存储表BD RAM的相应表项,更新空闲队列信息表和输出队列信息表中相应的表项,给出该分组的逻辑出队地址; 
(6)按照分组逻辑入队地址,将分组分片存储到队列存储空间中;按照分组逻辑出队地址,将分组分片从队列存储空间中搬出。 
2.根据权利要求1所述的基于定长单元存储变长分组的队列管理方法,其中步骤(3)所涉及的配置缓存描述符存储表BD RAM,包括如下操作: 
将缓存描述符存储表BD RAM中所有表项的第一个参数第一分片标志位Fs置为0; 
将缓存描述符存储表BD RAM中所有表项的第二个参数最后分片标志位Fl置为0; 
将缓存描述符存储表BD RAM中所有表项的第三个参数有效数据长度Lv为置0; 
将缓存描述符存储表BD RAM中第i个表项的第四个参数下一跳地址An置为i+1,i为整数,且0≤i≤m-1,m为缓存描述符BD的个数。 
3.根据权利要求1所述的基于定长单元存储变长分组的队列管理方法,其中步骤(3)中所涉及的配置空闲队列信息表,包括如下操作: 
将空闲队列信息表中表项的第一个参数空闲队列长度L1置为m,m为缓存描述符BD的个数; 
将空闲队列信息表中表项的第二个参数空闲队列尾指针Pt1置为m,m为缓存描述符BD的个数; 
将空闲队列信息表中表项的第三个参数空闲队列头指针Ph1置为0。 
4.根据权利要求1所述的基于定长单元存储变长分组的队列管理方法,其中步骤(3)所涉及的配置输出队列信息表,包括如下操作: 
将输出队列信息表中第j个表项的第一个参数输出队列最大允许长度Lmax置为Lj,0≤j≤r-1,r为输出队列的个数,Lj为大于1的正整数且
将输出队列信息表中所有表项的第二个参数输出队列长度L2置为0; 
将输出队列信息表中所有表项的第三个参数输出队列尾指针Pt2置为0; 
将输出队列信息表中所有表项的第四个参数输出队列头指针Ph2置为0。 
5.根据权利要求1所述的基于定长单元存储变长分组的队列管理方法,其中步骤(4)所述的根据分组的大小计算出存储该分组需要的缓存描述符BD个数,是利用公式进行计算,其中为上取整运算,Lp为分组的长度,A为基本缓存单元Buffer的大小,N为存储该分组需要的缓存描述符BD个数。 
6.根据权利要求1所述的基于定长单元存储变长分组的队列管理方法,其中步骤(4)所述的填写缓存描述符存储表BD RAM的相应表项,按如下步骤进行: 
(4a)以空闲队列头指针Ph1为地址访问缓存描述符存储表BD RAM,得到特定表项,将该表项的第一个参数Fs写为1,第三个参数Lv写为64,若存储分组需要的缓存描述符BD个数N=1,则将第二个参数Fl写为1,反之写为0; 
(4b)将空闲队列头指针Ph1的值赋给最后分片地址Al,再将表项的第四个参数An的值赋给下一次访问地址At; 
(4c)记分组剩余长度Lr=Lp-Lv,Lp为分组长度,Lv为该表项对应的基本缓存单元Buffer中存放的有效数据长度;记分组剩余占用缓存描述符BD数Nr=N-1,N为存储分组需要的缓存描述符BD个数; 
(4d)判断Nr是否为0,如果是,则执行步骤(4h),反之,则执行步骤(4e); 
(4e)以下一次访问地址At访问缓存描述符存储表BD RAM,得到特定表项,将该表项的第一个参数Fs写为0,若分组剩余占用缓存描述符BD数Nr=1,将第二个参数Fl写为1,将第三个参数Lv写为Lr的值,反之,将第二个参数Fl写为0,第三个参数Lv写为64; 
(4f)将下一次访问地址At的值赋给最后分片地址Al,再将表项的第四个参数An的值赋给下一访问地址At; 
(4g)将分组剩余长度Lr减64,将分组剩余占用缓存描述符BD数Nr减1;返回步骤(4d); 
(4h)以出队分组所属的输出队列尾指针访问缓存描述符存储表BD RAM,得到特定表项,将该特定表项的第四个参数An写为空闲队列头指针Ph1的值。 
7.根据权利要求1所述的基于定长单元存储变长分组的队列管理方法,其中步骤(4)所述的更新空闲队列信息表和输出队列信息表中相应的表项,按如下步骤进行: 
首先,访问空闲队列信息表,将表项的第一个参数L1减去存储分组需要的缓存描述符BD个数N的值,将第三个参数Ph1修改为下一次访问地址At的值; 
然后,访问输出队列信息表,得到分组所属输出队列对应的表项,将该表项的第二个参数L2加上存储分组需要的缓存描述符BD个数N的值,将第三个参数Pt2修改为最后分片地址Al的值。 
8.根据权利要求1所述的基于定长单元存储变长分组的队列管理方法,其中步骤(5)所述的读取并修改缓存描述符存储表BD RAM的相应表项,按如下步骤进行: 
(5a)以分组所属的输出队列头指针Ph2为地址访问缓存描述符存储表BD RAM,得到特定表项,读取该表项第二个参数Fl和第四个参数An; 
(5b)将输出队列头指针Ph2的值赋给最后分片地址Al,将表项的第四个参数An的值赋 给下一次访问地址At; 
(5c)判断Fl是否为1,如果是,则执行步骤(5f),反之则执行步骤(5d); 
(5d)以下一次访问地址At访问缓存描述符存储表BD RAM,得到特定表项,读取该表项第二个参数Fl和第四个参数An; 
(5e)将下一次访问地址At的值赋给最后分片地址Al,再将表项的第四个参数An的值赋给下一次访问地址At;返回执行步骤(5c); 
(5f)以空闲队列尾指针Pt1为地址,访问缓存描述符存储表BD RAM,得到特定表项,将该表项的第四个参数An写为分组所属的输出队列头指针Ph2的值。 
9.根据权利要求1所述的基于定长单元存储变长分组的队列管理方法,其中步骤(5)所述的更新空闲队列信息表和输出队列信息表中相应的表项,按如下步骤进行: 
首先,访问空闲队列信息表,将表项的第一个参数L1加上存储分组需要的缓存描述符BD个数N的值,将第二个参数Pt1修改为最后分片地址Al的值; 
然后,访问输出队列信息表,得到分组所属输出队列对应的表项,将该表项的第二个参数L2减去存储分组需要的缓存描述符BD的个数N,将第三个参数Ph2修改为下一次访问地址At的值。 
10.一种基于定长单元存储变长分组的队列管理设备,包括: 
将分组交换***中用于存储分组的队列存储空间划分为m个等长度的基本缓存单元Buffer,每个基本缓存单元Buffer中设置有一个缓存描述符BD,用于当分组交换***中有分组进入时,将该分组分片存储到n个基本缓存单元Buffer中,m由队列存储空间的大小决定,n由分组的长度决定; 
共享缓存器,作为队列存储空间,用于缓存分组数据; 
缓存描述符存储表BD RAM,用于存放缓存描述符BD,它由m个表项组成,每个表项有4项信息:第一分片标志位Fs、最后分片标志位Fl、有效数据长度Lv和下一跳地址An,其中m为基本缓存单元Buffer的个数; 
空闲队列信息表,用于存放空闲队列状态信息,它由1个表项组成,表项有3项信息:空闲队列长度L1、空闲队列尾指针Pt1和空闲队列头指针Ph1; 
输出队列信息表,用于存放输出队列状态信息,它由r个表项组成,一个表项对应一个输出队列且每个表项有4项信息:输出队列最大允许长度Lmax、输出队列长度L2、输出队列尾指针Pt2和输出队列头指针Ph2,其中r为输出队列的个数; 
入队控制器,在有分组入队时开始工作,即根据分组的大小计算出存储该分组需要的缓存描述符BD个数,并通过读写选通开关,访问空闲队列信息表和输出队列信息表,查看是否有足够的缓存描述符BD分配给该分组,如果有,则填写缓存描述符存储表BD RAM的相应表项,更新空闲队列信息表和输出队列信息表中相应的表项,将分组逻辑入队地址发送给数据搬移器,反之,将入队失败指示发送给数据搬移器; 
出队控制器,在有分组出队时开始工作,即通过读写选通开关,读取并修改缓存描述符存储表BD RAM的相应表项,更新空闲队列信息表和输出队列信息表中相应的表项,将出队分组的逻辑出队地址发送给数据搬移器; 
读写选通开关,用于协调入队控制器和出队控制器有序的操作缓存描述符存储表BD RAM和输出队列信息表RAM,防止出现读写冲突; 
数据搬移器,接收分组逻辑入队地址,将分组分片存储到共享缓存器中;接收分组逻辑出队地址,将分组分片从共享缓存器中搬出。 
CN201110411671.3A 2011-12-12 2011-12-12 基于定长单元存储变长分组的队列管理方法及设备 Expired - Fee Related CN102377682B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110411671.3A CN102377682B (zh) 2011-12-12 2011-12-12 基于定长单元存储变长分组的队列管理方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110411671.3A CN102377682B (zh) 2011-12-12 2011-12-12 基于定长单元存储变长分组的队列管理方法及设备

Publications (2)

Publication Number Publication Date
CN102377682A CN102377682A (zh) 2012-03-14
CN102377682B true CN102377682B (zh) 2014-07-23

Family

ID=45795676

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110411671.3A Expired - Fee Related CN102377682B (zh) 2011-12-12 2011-12-12 基于定长单元存储变长分组的队列管理方法及设备

Country Status (1)

Country Link
CN (1) CN102377682B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103795648A (zh) * 2012-10-30 2014-05-14 中兴通讯股份有限公司 一种队列调度方法、装置及***
CN104040977B (zh) * 2012-12-28 2016-10-05 华为技术有限公司 缓存报文的方法和装置
CN103685068B (zh) * 2013-12-06 2016-08-17 杭州华三通信技术有限公司 接收缓存描述符队列维护方法及设备
CN103685063B (zh) * 2013-12-06 2016-08-17 杭州华三通信技术有限公司 接收缓存描述符队列维护方法及设备
CN103685018B (zh) * 2013-12-25 2017-01-18 杭州华为数字技术有限公司 消息处理方法和装置及通信***
CN104125166B (zh) * 2014-07-31 2018-05-29 华为技术有限公司 一种队列调度方法及计算***
CN105162724B (zh) 2015-07-30 2018-06-26 华为技术有限公司 一种数据入队与出队方法及队列管理单元
CN105591979A (zh) * 2015-12-15 2016-05-18 曙光信息产业(北京)有限公司 报文的处理***和方法
CN108595371B (zh) * 2016-01-20 2019-11-19 北京中科寒武纪科技有限公司 用于向量运算的数据读取、写入及读写调度器及保留站
CN106209681B (zh) * 2016-06-28 2019-05-10 华为技术有限公司 一种队列管理方法和装置
US9996404B2 (en) * 2016-09-01 2018-06-12 Oracle International Corporation Message cache management for message queues
CN107818056B (zh) * 2016-09-14 2021-09-07 华为技术有限公司 一种队列管理方法及装置
CN108011704B (zh) * 2016-11-01 2020-10-09 中芯国际集成电路制造(上海)有限公司 半双工通信装置及其通信方法、半双工通信的装置
CN106789734B (zh) * 2016-12-21 2020-03-13 中国电子科技集团公司第三十二研究所 在交换控制电路中巨帧的控制***及方法
CN107220187B (zh) * 2017-05-22 2020-06-16 北京星网锐捷网络技术有限公司 一种缓存管理方法、装置及现场可编程门阵列
CN107948094B (zh) * 2017-10-20 2020-01-03 西安电子科技大学 一种高速数据帧无冲突入队处理的装置及方法
CN109802900B (zh) * 2017-11-16 2021-11-19 中兴通讯股份有限公司 报文缓存、读取方法、装置及计算机可读存储介质
CN110445721B (zh) * 2019-09-09 2021-12-14 迈普通信技术股份有限公司 一种报文转发方法及装置
CN112615796B (zh) * 2020-12-10 2023-03-10 北京时代民芯科技有限公司 一种兼顾存储利用率与管理复杂度的队列管理***
CN113032295B (zh) * 2021-02-25 2022-08-16 西安电子科技大学 一种数据包二级缓存方法、***及应用
CN113225307B (zh) * 2021-03-18 2022-06-28 西安电子科技大学 卸载引擎网卡中描述符预读取的优化方法、***及终端
CN113821457B (zh) * 2021-10-11 2023-06-30 芯河半导体科技(无锡)有限公司 一种高性能读写链表缓存的装置及方法
CN114020711B (zh) * 2021-11-10 2022-11-01 重庆紫光华山智安科技有限公司 存储空间处理方法、装置、电子设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6181705B1 (en) * 1993-12-21 2001-01-30 International Business Machines Corporation System and method for management a communications buffer
CN101281491A (zh) * 2008-05-12 2008-10-08 北京邮电大学 基于VxWorks的空间机器人中央处理器的内存模块及其管理方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4879382B2 (ja) * 2000-03-22 2012-02-22 富士通株式会社 パケットスイッチ、スケジューリング装置、廃棄制御回路、マルチキャスト制御回路、およびQoS制御装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6181705B1 (en) * 1993-12-21 2001-01-30 International Business Machines Corporation System and method for management a communications buffer
CN101281491A (zh) * 2008-05-12 2008-10-08 北京邮电大学 基于VxWorks的空间机器人中央处理器的内存模块及其管理方法

Also Published As

Publication number Publication date
CN102377682A (zh) 2012-03-14

Similar Documents

Publication Publication Date Title
CN102377682B (zh) 基于定长单元存储变长分组的队列管理方法及设备
CN110806986B (zh) 提高网络芯片报文存储效率的方法、设备及存储介质
CN1736066B (zh) 用于流量处理的包存储***
CN102193874B (zh) 用于管理存储器的缓存管理器和方法
US7315550B2 (en) Method and apparatus for shared buffer packet switching
US6414961B1 (en) ATM switching with virtual circuit FIFO buffers
CN107220187B (zh) 一种缓存管理方法、装置及现场可编程门阵列
CN108366111B (zh) 一种用于交换设备的数据包低时延缓存装置与方法
CN104133784B (zh) 一种报文缓存管理方法与装置
US7627672B2 (en) Network packet storage method and network packet transmitting apparatus using the same
US20050289255A1 (en) Buffer controller and management method thereof
EP3657744B1 (en) Message processing
CN101488919B (zh) 存储地址分配方法和装置
US20030121030A1 (en) Method for implementing dual link list structure to enable fast link-list pointer updates
CN101344861A (zh) 一种智能卡内存管理方法
CN102253898A (zh) 一种图像数据的内存管理方法及装置
CN105656807A (zh) 一种网络芯片多通道数据传输方法及传输装置
CN102255818B (zh) 一种驱动接收报文的方法及装置
CN101594201B (zh) 链式队列管理结构整合错误数据过滤的方法
CN101788956A (zh) 多通道数据存储方法、装置和多通道数据接收***
CN101232450A (zh) 数据分组处理设备
US7088730B2 (en) Ethernet switching architecture and dynamic memory allocation method for the same
CN103297350A (zh) 一种信元交换***的实现方法和交换设备
CN101610197A (zh) 一种缓冲区管理方法及其***
CN100397374C (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
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20120314

Assignee: BEIJING HANNUO SEMICONDUCTOR TECHNOLOGY Co.,Ltd.

Assignor: Xidian University

Contract record no.: 2016610000048

Denomination of invention: Queue management method and device based on variable-length packets stored in fixed-size location

Granted publication date: 20140723

License type: Exclusive License

Record date: 20161109

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140723

Termination date: 20211212