一种存储管理的方法和系统的制作方法

文档序号:7711087阅读:192来源:国知局
专利名称:一种存储管理的方法和系统的制作方法
技术领域
本发明涉及数据通信技术中分组转发设备的存储管理方法,特别是涉及一种高速路由器流量管理芯片存储管理方法和系统。
背景技术
随着网络容量与业务不断地快速增长,分组转发设备,特别是i 各由器的接口速度迅速增加。为了实现报文的高速转发处理, 一般在路由器内部采用专门的流量管理芯片完成对高速凄t据流的管理,将"^艮文緩存后输出。
对于高端路由器等设备而言, 一个基本的要求是能缓存200ms线速的报文数据,40Gbps环境下,则至少拥有8Gb的存储能力。对于如此大的存储容量, 一般采用在流量管理芯片外挂存储芯片存储数据,在流量管理芯片内部采用链表结构进行管理。以链表的每个节点对应每个报文或分片的存储空间,预先记录链表首尾节点,对于链表除首尾节点之外的其他节点可以根据数量的多少存储在流量管理芯片内部或片外专门的存储器中。
为了能够应用到40Gbps的网络环境,流量管理芯片必须能够线速处理OC-768速度等级上的IP包。在OC-768速度等级上,典型的IP包长与IP包转发率之间的关系如图1。
因此,为了满足要求,芯片需提供100MPPS的分组处理能力。在100MHz的系统时钟下,100MPPS的分组处理能力,对应为每个周期应处理一个链表节点,然后利用该链表节点访问数据存储区。由于链表结构的固有特性,必须要以链表的当前节点作为依据去读取链表的下一个节点,在得到下一个节点之前,链表是无法继续有效进行工作的,而片内和片外的存储器都存在读取延迟(读取延迟指发起读操作到真正获得所要读取内容,存在时间间隔),片内存储器一般会有1-2个周期读取延迟,而片外存储器延迟更长。因为读取延迟的存在,普通的链表结构无法做到流水操作,也就无法满足每个周期
5处理一个链表节点要求。
普通单链表结构如图2所示,A0、 Al........ Dm.......为链表节点,
每个链表节点指向一块数据存储空间,在硬件实现中,预先记录链表的首尾节点内容,由于链表节点数量巨大,其他节点放入存储器保存。在同一队列的数据报文连续出列时,需要连续获取链表节点,保证报文数据的持续出队。访问链表时,由当前节点作为存储器的地址,读取链表的下一节点,然后再由读取到的链表节点作为存储器的读地址,继续去读下一节点。由于硬件存储器的固有读延迟,由当前节点作为读地址读取下一节点,到真正读取到该地址存储器的内容,需要若干个时钟周期,这一段时间内链表是无法有效使用的,因为必须使用读到的内容作为地址继续读取,才能使流水线持续工作。这样在实际高速、大容量网络环境下是无法满足需求的。
申请号200410010495.2的中国专利《具有链表处理器的存储管理系统》,提出了适合于处理链表数据文件的一个存储器管理系统(1800 )。该系统具有多个低容量高速存储器(1803 )和一个低速高容量的大容量存储器(1806 )。 一个访问流量调节器(1801 )生成请求以通过存储器读写链表文件。头部和尾部緩冲区以及链表的任何中间部分緩冲区,都被写入高速存储器。中间部分緩冲区立即从高速存储器被传输到上述大容量存储器,同时将链表的头緩冲区和尾緩冲区留在高速存储器中。在读操作中,从高速存储器中读出头和尾部緩冲区。将中间部分緩沖区从大容量存储器传输到上述高速存储器,并接着从该高速存储器中读出。该专利对于高速、大容量存储结构进行提出了一种方案,使用了链表,但对于链表的管理方法并没有具体涉及。
申请号200710038679.3的中国专利《一种快速检索数据的链表实现方法》提出了 一种快速检索数据的链表实现方法,将链表中的每一个节点的数据项都指向一个数组空间,在初始化时指定节点的数据项指向数组的类型;在初
始化时指定或默认每一个节点的数据项指向的数组的元素个数并设定每个元素的字节数,数据项指向的数组中的每个元素都具备一个唯一的索引号;链表可以为单向链表或双向链表;数组可以是动态分配的数组或指定的数组,整个链表中的数据为排序存放。该专利提出了一种链表结构,但没有解决高带宽、大容量环境下的硬件实现高速存储管理所遇到的难点。
由此可以看出,现有的技术并没有很好的解决上面提到的采用硬件实现高速、大容量存储管理所遇到的问题。

发明内容
本发明要解决的技术问题是提供一种便于硬件芯片实现的,适应高速、大容量存储管理的方法和系统。
为了解决上述问题,本发明提供了一种存储管理方法,包括
报文入队时,为所述报文建立n条链表,依次称为0号链表至n-l号链表,所述n不小于2,保存所述n条链表的首节点和尾节点,所述n条链表中每条链表包括若干个组块,每个组块内包含若干个区块,每个区块对应一个节点,同一组块内各区块的地址为基地址加偏移地址,同一组块内其各区块的基地址相同,其相邻区块偏移地址相差一指定值;
报文出队时,从0号链表开始,依次使用0号链表至n-l号链表的首个组块;然后依次使用0号链表至n-l号链表的下一组块;依此类推,直到报文结束;
其中,使用每个组块的方法为从该组块的首个区块开始,依次使用该组块中的每个区块,其中,根据当前使用的区块的偏移地址加上所述指定值得到下一区块的偏移地址;使用完每个组块时,使用该组块中区块的基地址得到该组块所在链表中下一组块的基地址。
进一步地,上述方法还可具有以下特点,为所述n条链表建立链表出队活动标志和链表空标志,为每个节点建立包尾标志,报文出队时,根据链表出队活动标志判断当前要使用的链表,根据链表空标志判断链表是否为空,根据包尾标志判断是否到达报文尾节点,使用完i号链表的某一组块时,将i号链表的链表出队活动标志设置为非活动,将i+l号链表的链表出队活动标志设置为活动,i=0,...,n-2;当链表的首节点等于尾节点时,将该链表的链表空标志设置为空。进一步地,上述方法还可具有以下特点,所述n条链表中,每个链表中每个组块包含的区块个数相同。
进一步地,上述方法还可具有以下特点,所述n条链表的组块中,同一组块内相邻区块的偏移地址相差1,每个组块的首个区块的偏移地址为0,使用完每个组块时,使用该组块中首个区块的基地址得到该组块所在链表中下一组块的基地址。
进一步地,上述方法还可具有以下特点,报文入队时,按如下方式建立n条链表
根据报文长度申请可用的组块,将第一个申请的组块分给O号链表,第二个申请的组块分给1号链表,依此类推,将第n个申请的组块分给n-l号链表,如果报文未结束,将第n+l个申请的组块分给0号链表,将第n+2个申请^组块分给1号链表,依此类推,直到报文结束;申请的组块数目由入队报文的总大小决定;每个链表的第一个组块的首个区块为该链表的首节点,每个链表的最后一个组块中使用到的最后一个区块为该链表的尾节点。
本发明还提供一种存储管理系统,包括报文入队管理模块和报文出队管理模块,其中
所述报文入队管理模块,用于在报文入队时,为所述报文建立n条链表,依次称为0号链表至n-l号链表,保存所述n条链表的首节点和尾节点,所述n条链表中每条链表包括若干个组块,每个组块内包含若干个区块,每个区块对应一个节点,同一组块内各区块的地址为基:l也址加偏移地址,同一组块内其各区块的基地址相同,其相邻区块偏移地址相差一指定值,所述n不小于2;
所述报文出队管理模块,用于在报文出队时,从0号链表开始,依次使用0号链表至n-l号链表的首个组块;然后依次使用0号链表至n-l号链表的下一组块;依此类推,直到报文结束;其中,使用每个组块的方法为从该组块的首个区块开始,依次使用该组块中的每个区块,其中,根据当前使用的区块的偏移地址加上所述指定值得到下一区块的偏移地址;使用完每个组块时,使用该组块中区块的基地址得到该组块所在链表中下一组块的基地址。
进一步地,上述系统还可具有以下特点,所述"R文入队管理^t块还用于
为所述n条链表建立链表出队活动标志和链表空标志,为每个节点建立包尾标志,所述报文出队管理模块,还用于在报文出队时,根据所述链表出队活动标志判断当前要使用的链表,根据链表空标志判断链表是否为空,根据包尾标志判断是否到达报文尾节点,使用完i号链表的某一组块时,将i号链表的链表出队活动标志设置为非活动,将i+l号链表的链表出队活动标志设置为活动,i=0,...,n-2;当链表的首节点等于尾节点时,将该链表的链表空标志设置为空。
进一步地,上述系统还可具有以下特点,所述报文入队管理模块建立的所述n条链表中每个链表中每个组块包含的区块个数相同。
进一步地,上述系统还可具有以下特点,所述报文入队管理模块建立的所述n条链表的组块中,同一组块内相邻区块的偏移地址相差1,每个组块的首个区块的偏移地址为0;所述报文出队管理模块在使用完每个组块时,使用该组块中首个区块的基地址得到该组块所在链表中下一组块的基地址。
进一步地,上述系统还可具有以下特点,所述报文入队管理模块用于在报文入队时,按如下方式建立n条链表
根据报文长度申请可用的组块,将第一个申请的组块分给O号链表,第二个申请的组块分给1号链表,依此类推,将第n个申请的组块分给n-l号链表,如果报文未结束,将第n+l个申请的组块分给0号链表,将第n+2个申请的组块分给l号链表,依此类推,直到报文结束;申请的组块数目由入队报文的总大小决定;每个链表的第一个组块的首个区块为该链表的首节点,每个链表的最后一个组块中使用的最后一个区块为该链表的尾节点。
本发明提供的 一种硬件易于实现的高速、大容量存储管理方法和系统,采用多链表管理数据存储空间,同时若干个相邻的链表节点汇聚成Chunk,使得每条链表的使用间隔加大,隐藏了硬件存储器的读取延迟,同时方便管理。
9


图1是OC-768速度等级上,典型的IP包长与IP包转发率的关系示意图2是现有单链表结构示意图3时本发明存储管理方法流程图4是本发明基本应用系统模型;
图5是本发明多链表和节点汇聚使用流程图6是本发明n=2、 m=3时多链表和节点汇聚结构示意图7是本发明多链表和节点汇聚使用示意图。
具体实施例方式
本发明的核心思想是,为报文建立多个链表,每个链表包含若干个组块(Chunk),每个组块包含若干个区块(Block) , block即节点,每个Chunk内各Block地址连续,出队时,轮流使用各个链表的组块,并且在使用完一个组块时,读取该组块所在链表的下一组块的地址,从而在下一次使用该链表时,已经从存储器中读出该组块的地址,可以直接使用该组块,避免了现有技术中由于存储器读取延迟而导致无法满足每个周期处理一个链表节点要求。
本发明提供一种存储管理方法,如图3所示,包括
步骤310,报文入队时,为所述报文建立n条链表,依次称为0号链表至n-l号链表,n不小于2,该n条链表中每条链表包括若干个Chunk,每个组块包含若干个Block,每个Block对应一个节点,同一 Chunk内的Block地址为基地址加偏移地址,同一 Chunk内其各Block的基地址相同,其相邻Block偏移地址相差一指定值;保存该n条链表的首节点和尾节点。
其中,每个Chunk内包含的Block数可以相同或不同,同一 Chunk内各Block的偏移地址可以相差X, X事先给定。
一种实现方式是,每个Chunk所包含的Block个数相同,为m+1,同一Chunk内的Block地址是连续的,即X = 1 ,所在地址表示为基地址+偏移地 址,同一 Chunk内的每个Block的基地址相同,实际上基地址也就是每个 Chunk的地址。
具体建立n条链表的方法为当某一队列有报文入队时,根据报文长度 申请空闲链表,即申请可用的Chunk,第 一个申请的Chunk分给0号链表, 第二个申请的Chunk分给1号链表,依此类推,前n个Chunk的每个首Block 节点记录为该队列n条链表的首指针(即首节点),至于申请的Chunk数目 由入队报文的总大小决定。同时,记录该队列的n条链表的尾指针(即尾节 点),为每条链表最后一个Chunk中使用到的最后一个Block节点,同样也 要记录链表活动标志和包尾标志。其他队列入队时,也进行相同处理,为每 个队列建立自己的n条链表。
步骤320,报文出队时,从0号链表开始,依次使用0号链表至n-1号 链表的首个组块;然后依次使用0号链表至n-l号链表的下一组块;依此类 推,直到报文结束。
其中,使用每个组块的方法为从该组块的首个区块开始,依次使用该 组块中的每个区块,其中,根据当前使用的区块的偏移地址加上所述指定值 得到下一区块的偏移地址;使用完每个组块时,使用该组块中区块的基地址 得到该组块所在链表中下一组块的基地址。
具体的说,首先使用0号链表的首个组块,使用完O号链表的首个组块 后,使用1号链表的首个组块,依次类推,直到使用完n-l号链表的首个组 块;使用完n-l号链表的首个组块后,使用0号链表的下一组块;使用完0 号链表的下一组块时,使用l号链表的下一组块;依次类推,直到报文结束。
当各Chunk均包含m+1个Block,且同一 Chunk内各节点的地址连续时, 报文出队时首先使用0号链表的首节点,即0号Chunk中的0号Block。然 后直接将节点地址中的偏移地址直接增加1,就可得到链表的下一节点,即O 号Chunk中的1号Block。当使用到编号为m的Block时用0号链表的首节 点的基地址读取0号链表的下一基地址,作为0号链表新的首节点。当0号 链表读取下一 Chunk地址时,更新标志位,同时使用1号链表的首节点,并 依次类推。当再次轮到使用0号链表时,0号链表新的首节点已经从存储器中读出,更新完毕,可以使用。
这样保证了链表可以每个周期都正常工作,直到进行到报文尾部,结束 一4仑出队才喿作。
报文入队时,还为所述n条链表建立链表入队活动标志,链表出队活动
标志和链表空标志,为每个节点建立包尾标志,报文出队时,根据链表出队 活动标志判断当前要使用的链表,根据链表空标志判断链表是否为空,根据 包尾标志判断是否到达报文尾节点,使用完i号链表的某一组块时,将i号 链表的链表出队活动标志设置为非活动,将i+l号链表的链表出队活动标志
设置为活动,i=0,...,n-2;当链表的首节点等于尾节点时,将该链表的链表空 标志设置为空。
本发明基本应用系统模型如图4所示,包括队列调度系统、队列緩存管 理系统、报文数据存储器和链表节点存储器,队列调度系统用于发起队列调 度请求至队列缓存管理系统,报文数据存储器用于存储报文数据,链表节点 存储器用于存储链表节点信息,本发明中,主要涉及队列緩存管理系统,该 队列緩存管理系统包括报文入队管理模块和报文出队管理模块,其中
报文入队管理模块,用于在报文入队时,为所述报文建立n条链表,依 次称为0号链表至n-l号链表,保存所述n条链表的首节点和尾节点,所述 n条链表中每条链表包括若干个组块,每个组块内包含若干个区块,每个区 块对应一个节点,同一组块内各区块的地址为基地址加偏移地址,同一组块 内其各区块的基地址相同,其相邻区块偏移地址相差一指定值,所述n不小 于2;
其中,报文入队管理模块具体按如下方式建立n条链表
根据报文长度申请可用的组块,将第一个申请的组块分给O号链表,第 二个申请的组块分给1号链表,依此类推,将第n个申请的组块分给n-l号 链表,如果报文未结束,将第n+l个申请的组块分给0号链表,将第n+2个 申请的组块分给l号链表,依此类推,直到报文结束;申请的组块数目由入 队报文的总大小决定;每个链表的第一个组块的首个区块为该链表的首节点,每个链表的最后一个组块中使用到的最后一个区块为该链表的尾节点。
报文出队管理模块,用于在报文出队时,从0号链表开始,依次使用0 号链表至n-l号链表的首个组块;然后依次使用0号链表至n-l号链表的下 一组块;依此类推,直到报文结束;其中,使用每个组块的方法为从该组 块的首个区块开始,依次使用该组块中的每个区块,其中,根据当前使用的 区块的偏移地址加上所述指定值得到下一区块的偏移地址;使用完每个组块 时,使用该组块中区块的基地址得到该组块所在链表中下一组块的基地址。
进一步的,所述报文入队管理模块还用于为所述n条链表建立链表活动 标志(包括链表入队活动标志和链表出队活动标志,链表入队活动标志指示 报文该入哪个链表,链表出队活动标志指示当前出队该使用哪个链表)和链 表空标志,为每个节点建立包尾标志,报文出队管理模块使用并维护这些标 志。报文出队管理模块在报文出队时,根据链表出队活动标志判断当前要使 用的链表,根据链表空标志判断链表是否为空,根据包尾标志判断是否到达 报文尾节点,使用完i号链表的某一组块时,将i号链表的链表出队活动标 志设置为非活动,将i+l号链表的链表出队活动标志设置为活动,i=0,...,n-2; 当链表的首节点等于尾节点时,将该链表的链表空标志设置为空。
所述报文入队管理模块建立的所述n条链表中每个链表中每个组块包含 的区块个数相同,每个链表的同一组块内相邻区块的偏移地址相差1,每个 组块的首个区块的偏移地址为0。所述报文出队管理模块在使用完每个组块 时,使用该组块中首个区块的基地址得到该组块所在链表中下一组块的基地
的基地址,具体使用哪个区块可以事先约定。
下面结合图5的流程,说明本发明方法在存储管理中的详细工作步骤。
对应报文数据存储空间,建立多链表结构,链表个数为n,链表节点对 应报文或分片的存储空间,每个链表都有各自的首尾节点,同时设置标志位, 为每个链表设置链表活动标志LinkActFlag (包括链表入队活动标志 LinkWActFlag和链表出队活动标志LinkRActFlag )和链表空标志
一组块
13LinkEmptyFlag,为每个节点设置包尾标志PktEopFlag,用来确定当前应该使 用的链表编号以及各个链表是否为空,以及是否到达报文的尾节点。其中, 每个Chunk所包含的Block个数为(m+l)。同一 Chunk内的Block地址是 连续的,所在地址表示为基地址+偏移地址,每个Block的基地址相同。
队列緩存管理系统入队时按照多链表和节点汇聚的结构建立链表对数据 緩存进行管理。才艮文出队时,队列緩存管理系统响应队列调度系统的出队请 求,开始新一轮次的工作,具体包括
步骤S502,队列緩存管理系统接收出P人请求,并且根据多链表和节点汇 聚结构中的链表出队活动标志确定当前应该使用哪一条链表。
根据链表出队活动标志确定当前应该使用哪个链表,对于n条链表,设 置位宽为n的链表出队活动标志LinkRActFlag[(n-l):O],每bit对应一条链表, 如LinkRActFlag[x]对应x号链表,当其值为'1,时,表明当前应该使用该 条链表。
根据链表空标志LinkEmptyFlag确定当前各个链表是否为空,设置位宽 为n的链表空标志LinkEmptyFlag[(n-l):O],每bit对应一条链表,当其值为 '1,时链表为空,'0,为非空。
步骤S504,确定当前选用的链表应该使用哪个Block,即哪个节点。
其中选中的链表首节点为基地址+y,表示当前使用的Block为该Chunk 中的y号Block。当y-m时,令y,+l,作为新的链表首节点,以便下次4吏 用;当y=m时,表示当前使用的Blcok为当前Chunk的最后一个Block,此 时以该Chunk的基地址作为读地址读取存储器,获取下一 Chunk的基地址, 同时将LinkRActFlag[x]更新为'0, , LinkRActFlag[x+l]更新为'1,,表示 下次开始使用另一条链表,x表示当前使用的链表标号。
当某条链表的首节点等于尾节点时,将对应的LinkEmptyFlag置'1,, 表示该链表空。
步骤S506,判断当前节点是否为出队报文数据的尾节点。
这其中,根据包尾标志PktEopFlag确定才艮文的尾节点。为T时,该 节点为本次出队才艮文的尾节点,本轮操作完成;为'0,时,该节点不是本次 出队报文的尾节点,返回到步骤S502,继续操作,直到输出报文尾节点,然后结束本轮操作。
下面结合一具体实例说明该方法的具体实现。
在OC-768速度等级上,为了满足要求,芯片需提供100MPPS的分组处 理能力。在100MHz的系统时钟下,100MPPS的分组处理能力,对应为每个 周期处理一个链表节点,利用该链表节点访问数据存储区。以11=2、 m=3为 例的多链表和节点汇聚结构为例,如图6所示,构建2条链表,每个Chunk 包含4个Block,同一 Chunk内的每个Block的地址是连续的,都是由基地 址+偏移地址。以链表0为例,A0、 Al、 A2、 A3四个Block组成一个Chunk, 基地址为X,每个Block的偏移地址分别为0、 1、 2、 3,同时以每个Chunk 的基地址作为指针指向该链表下一个Chunk的基地址。
使用时,队列緩存管理系统预先记录下n (本实施例中n为2 )条链表 的首尾节点,同时设置标志位,确定当前应该使用哪个链表以及每个链表是 否为空以及每个节点是否为报文的尾节点。队列緩存管理系统接收到队列调 度系统链表操作请求时,根据标志位,确定使用的链表编号。 一般最初使用 时,首先使用O号链表的首节点AO,然后下一周期将AO的偏移地址直接加 1,得到A1,继续使用。当使用到编号为m的Block时,即A3,送出A3的 同时,以其基地址读取下一 Chunk,并更新标志位。下个周期开始使用1号 链表,即送出BO,继续操作,等到使用B3时,以其基地址读取下一 Chunk, 并更新标志位。下个周期又重新开始使用0号链表,而此时O号链表新的首 节点CO已经从存储器中读出,并且准备完毕,可以-使用,如图7所示。这 样按顺序轮流操作,直到报文尾部结束本轮操作。
上例中,该应用完全满足了 100MPPS的分组处理需求,每个时钟周期 链表节点都是可以有效使用的。
与现有技术相比较,在硬件实现中本方法可以保证链表的高效使用,克 服了硬件自身读取延迟带来的问题。且根据实际应用环境,可更优的选取合 适的n和m进行组合,使得本方法面对不同的应用环境更加灵活有效。采用 本发明中的方法,使高速、大容量条件下的存储管理可以在硬件中简单有效 的实现。
权利要求
1、一种存储管理方法,其特征在于,包括报文入队时,为所述报文建立n条链表,依次称为0号链表至n-1号链表,所述n不小于2,保存所述n条链表的首节点和尾节点,所述n条链表中每条链表包括若干个组块,每个组块内包含若干个区块,每个区块对应一个节点,同一组块内各区块的地址为基地址加偏移地址,同一组块内其各区块的基地址相同,其相邻区块偏移地址相差一指定值;报文出队时,从0号链表开始,依次使用0号链表至n-1号链表的首个组块;然后依次使用0号链表至n-1号链表的下一组块;依此类推,直到报文结束;其中,使用每个组块的方法为从该组块的首个区块开始,依次使用该组块中的每个区块,其中,根据当前使用的区块的偏移地址加上所述指定值得到下一区块的偏移地址;使用完每个组块时,使用该组块中区块的基地址得到该组块所在链表中下一组块的基地址。
2、 如权利要求1所述的方法,其特征在于,为所述n条链表建立链表 出队活动标志和链表空标志,为每个节点建立包尾标志,报文出队时,根据 链表出队活动标志判断当前要使用的链表,根据链表空标志判断链表是否为 空,根据包尾标志判断是否到达报文尾节点,使用完i号链表的某一组块时, 将i号链表的链表出队活动标志设置为非活动,将i+l号链表的链表出队活 动标志设置为活动,i=0,...,n-2;当链表的首节点等于尾节点时,将该链表的 链表空标志设置为空。
3、 如4又利要求1所述的方法,其特征在于,所述n条l连表中,每个链 表中每个组块包含的区块个数相同。
4、 如权利要求l所述的方法,其特征在于,所述n条链表的组块中, 同一组块内相邻区块的偏移地址相差1,每个组块的首个区块的偏移地址为 0,使用完每个组块时,使用该组块中首个区块的基地址得到该组块所在链表 中下一组块的基地址。
5、 如权利要求1所述的方法,其特征在于,净艮文入队时,按如下方式建立n条链表根据报文长度申请可用的组块,将第一个申请的组块分给O号链表,第 二个申请的组块分给1号链表,依此类推,将第n个申请的组块分给n-l号 链表,如果报文未结束,将第n+l个申请的组块分给0号链表,将第n+2个 申请的组块分给l号链表,依此类推,直到报文结束;申请的组块数目由入 队报文的总大小决定;每个链表的第一个组块的首个区块为该链表的首节点, 每个链表的最后 一个组块中使用到的最后 一个区块为该链表的尾节点。
6、 一种存储管理系统,其特征在于,包括报文入队管理模块和报文出 队管理模块,其中所述报文入队管理模块,用于在报文入队时,为所述报文建立n条链表, 依次称为0号链表至n-l号链表,保存所述n条链表的首节点和尾节点,所 述n条链表中每条链表包括若干个组块,每个组块内包含若干个区块,每个 区块对应一个节点,同一组块内各区块的地址为基地址加偏移地址,同一组 块内其各区块的基地址相同,其相邻区块偏移地址相差一指定值,所述n不 小于2;所述报文出队管理模块,用于在报文出队时,从0号链表开始,依次使 用0号链表至n-l号链表的首个组块;然后依次使用0号链表至n-l号链表 的下一组块;依此类推,直到4艮文结束;其中,使用每个组块的方法为从 该组块的首个区块开始,依次使用该组块中的每个区块,其中,根据当前使 用的区块的偏移地址加上所述指定值得到下一区块的偏移地址;使用完每个 组块时,使用该组块中区块的基地址得到该组块所在链表中下一组块的基地 址。
7、 如权利要求6所述的系统,其特征在于,所述报文入队管理模块还 用于为所述n条链表建立链表出队活动标志和链表空标志,为每个节点建立 包尾标志,所述报文出队管理模块,还用于在报文出队时,根据所述链表出 队活动标志判断当前要使用的链表,根据链表空标志判断链表是否为空,根 据包尾标志判断是否到达报文尾节点,使用完i号链表的某一组块时,将i 号链表的链表出队活动标志设置为非活动,将i+l号链表的链表出队活动标 志设置为活动,i=0,...,n-2;当链表的首节点等于尾节点时,将该链表的链表空标志设置为空。
8、 如权利要求6所述的系统,其特征在于,所述报文入队管理模块建立的所述n条链表中每个链表中每个组块包含的区块个数相同。
9、 如权利要求6所述的系统,其特征在于,所述报文入队管理模块建立的所述n条链表的组块中,同一组块内相邻区块的偏移地址相差1,每个组块的首个区块的偏移地址为0;所述报文出队管理模块在使用完每个组块时,使用该组块中首个区块的基地址得到该组块所在链表中下一组块的基地址。
10、 如权利要求6所述的系统,其特征在于,所述报文入队管理模块用于在报文入队时,按如下方式建立n条链表根据报文长度申请可用的组块,将第一个申请的组块分给O号链表,第二个申请的组块分给1号链表,依此类推,将第n个申请的组块分给n-l号链表,如果报文未结束,将第n+l个申请的组块分给0号链表,将第n+2个申请的组块分给l号链表,依此类推,直到报文结束;申请的组块数目由入队报文的总大小决定;每个链表的第一个组块的首个区块为该链表的首节点,每个链表的最后一个组块中使用的最后一个区块为该链表的尾节点。
全文摘要
本发明提供了一种存储管理方法,包括报文入队时建立n条链表,保存该n条链表的首节点和尾节点,每条链表包括若干个组块,每个组块内包含若干个区块,同一组块内其各区块的基地址相同,其相邻区块偏移地址相差一指定值;报文出队时,依次使用0号链表至n-1号链表的首个组块;然后依次使用0号链表至n-1号链表的下一组块;依此类推,直到报文结束;使用每个组块时,依次使用该组块中的每个区块,根据当前使用的区块的偏移地址加上指定值得到下一区块的偏移地址;使用完每个组块时,使用该组块中区块的基地址得到下一组块的基地址。本发明还提供了一种存储管理系统。本发明通过加大链表使用间隔,实现了每个周期处理一个链表节点的要求。
文档编号H04L12/56GK101635682SQ20091016190
公开日2010年1月27日 申请日期2009年8月5日 优先权日2009年8月5日
发明者吴风波, 闯 王, 洁 肖 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1