专利名称:一种缓冲区管理方法及其系统的制作方法
技术领域:
本发明涉及高速数据传输与交换,具体涉及一种緩冲区管理方法及其系统。
背景技术:
在数据通信网络中,数据流量都非常大。这些数据流量在数据交换点完 成源端口与目的端口之间的互通,所述数据交换点包括交换机,路由器等。 在每个数据交换点, 一般由于数据处理的需要,都需要将从源端口进来的数 据净艮文进行緩存。
在数据通信领域中,通常使用大容量的存储器来存储从源端口进来的数
据。大容量的存储器通常为同步动态随机存储器(SDRAM),双倍数据传输同 步动态随机存储器(DDR SDRAM),四倍数据传输同步动态随机存储器(DDR2 SDRAM)等。存储器根据需要被分割为很多小块,这些小块被称为緩冲区 (Buffer)。对这些緩冲区进行有效地管理的机制及其具体实现,称为緩冲区管 理系统(Buffer Manager)。数据从源端口进来的时候,将发起申请緩存区操作。 数据从目的端口发送出去的时候,将发起释放緩存区操作。
如图1所示,传统緩冲区管理系统包括空闲緩冲区列表读写指针,空闲 緩冲区队列,控制逻辑,緩冲区回收三个部分。大容量的外部存储器是,皮管 理的目标。外部存储器根据需要被分割成很多小块,每个小块依顺序赋予地 址,称为緩冲区地址。空闲緩沖区队列保存的为未分配出去的缓冲区地址。 其工作原理如下(-)初始化,如图2所示,在系统初始化阶段需要将空闲緩 沖区队列初始化,其内容为依顺序排列的缓冲区地址,读指针初始化成O,写 指针初始化为缓冲区总数加1。在该阶段,空闲缓冲区列表为满状态。(二)分 配过程,如图3所示,当外部有緩冲区申请请求时,从空闲緩冲区队列中取 得一个空闲緩冲区地址,读指针加1;曰释放过程,如图4所示,当外部有緩沖区释放请求时,响应释放请求,将待释放的緩冲区地址列入空闲緩冲区 队列,写指针加l。
由于数据緩存能力的需要,选用的存储器的容量一般很大,緩沖区的数
量一般也比较大。假如管理1M的緩冲区数量,那么每个緩沖区的地址为 20bit,管理这些緩沖区占用的空间至少为lM*20=20Mbit。如此巨大的空间 消耗,迫使传统緩沖区管理系统将空闲緩冲区列表的内容(緩冲区指针)存 放在芯片的外部存储器中。而緩沖区管理系统则位于芯片内部,其负责维护 空闲緩冲区队列的读写指针。此种方式要求緩沖区管理系统在每一个申请和 释放的时候都需要读写外部存储器各一次。由于外部存储器通常表现出显著 延迟,使得緩沖区管理系统的效率受到影响。
同时,釆用传统的緩冲区管理系统,如果需要有緩沖区的自动回收系统, 其必须为每个緩冲区至少分配2比特Bit空间,记录当前緩冲区的分配状态和 回收状态。在此种情况下,传统的緩冲区管理系统在分配緩冲区时,置緩冲 区的分配状态Bit为有效,同时置緩冲区的回收状态Bit为无效。传统的緩沖 区管理系统的回收方法通过定时遍历所有的缓冲区,查看緩冲区的状态,然 后更新緩冲区的状态。如果緩冲区的分配状态Bit为有效,而回收状态Bit为 无效,则置回收状态Bit为有效。如果緩冲区的分配状态Bit为有效,而回收 状态Bit为有效,则置分配状态Bit和回收状态Bit为无效。另外,此2Bit的 访问不能和空闲緩沖区队列一起访问,其原因是空闲緩冲区队列中的内容为 乱序的。所以,如果采用自动回收系统,在对緩沖区进行回收时,还将增加 对外部存储器的读写访问各一次,对性能造成严重影响。
考虑到緩冲区回收功能,传统的缓冲区管理系统管理1M的缓冲区数量, 其所需的空间至少为lM*20+lM*2 = 22Mbit,其空间所需巨大,且性能低 下。
发明内容
本发明需要解决的技术问题是如何提供一种緩冲区管理方法及其系统, 可以无须读写外部存储器完成緩冲区的申请和释放。
本发明的上述第一个技术问题这样解决,提供一种緩冲区管理方法,包括以下步骤
1.1) 建立外部存储器的緩冲区状态表并将其记录索引与各自緩冲区地址
对应;所述索引和地址的宽度一致,所述状态包括分配状态和未分配状态, 未分配状态也称空闲状态;
1.2) 根据对应请求和所述緩沖区状态表分配或回收緩冲区并对所述緩沖 区状态表进行维护。
按照本发明提供的管理方法,所述记录索引与对应緩冲区地址完全相同。
按照本发明提供的管理方法,所述緩沖区状态表由若干緩冲区状态子表 构成,所述缓沖区状态子表标识码ID作为高位和所述緩沖区状态子表的记录 索引作为低位构成各自緩冲区地址。
按照本发明提供的管理方法,所述步骤1.2)中分配包括轮询所述緩冲区 状态表找到一个未分配緩沖区,在获得申请请求之后将该未分配緩冲区对应 索引作为被分配緩冲区地址提供给所述外部存储器并将对应緩冲区状态置为 分配^1大态。
按照本发明提供的管理方法,所述步骤1.2)中回收包括以被释放緩冲区 地址作为緩冲区状态表的索引并将对应緩沖区状态置为空闲状态。
按照本发明提供的管理方法,所述步骤1.2)采用仲裁机制处理多个同时 的所述请求。
按照本发明提供的管理方法,该管理方法还建立并维护回收緩沖区状态 表,所述步骤1.2)中回收包括根据所述回收緩冲区状态表对所述缓沖区状态 表进行操作。
按照本发明提供的管理方法,所述步骤1.2)中回收是定时启动的。
按照本发明提供的管理方法,所述緩冲区状态表由若干緩沖区状态子表 构成时,所述步骤1.2)中回收是分区进行的,即 一次定时仅对当前正在操 作的緩冲区状态子表中的緩沖区进行的。
本发明的上述另一个技术问题这样解决,提供一种緩沖区管理系统,连 接管理外部存储器,该系统全部内置于与所述外部存储器连接的包含记录索 引与緩冲区地址宽度一致、数值相同或一一对应的緩冲区状态表的芯片内,
6其中数值不相同的——对应情况一般仅限于通过简单加减可转换为数值相同 的情况。
本发明提供的一种緩冲区管理方法及其系统,通过记录索引与緩沖区地
址直接对应,避免存放多Bit緩冲区地址指针而仅须维护lBit的緩沖区状态, 从而使全套系统可以在芯片内部完全实现,避免申请和释;^丈緩冲区时对外部 存储器的读写,与传统的緩冲区管理办法相比,大量节省存储器的空间耗费, 并大幅提高性能表现,具有资源消耗非常低的特点,进一步将整个緩冲区状 态表分成多个子表,也大大提高了比传统方法快的多的响应速度。
图1为传统的缓冲区管理系统结构示意图2为图1所示系统的初始化过程;
图3为图1所示系统的申请流程图4为图1所示系统的释放流程图5为图1所示系统的回收控制过程;
图6为本发明改进后的分级緩冲区管理系统结构示意图;
图7为图2所示系统的初始化过程;
图8为图2所示系统的申请流程图9为图2所示系统的释放流程图10为图2所示系统的回收控制过程
具体实施例方式
首先,说明本发明组成、关键和特点
本发明内部将维护一个緩冲区状态表,其位宽为lbit,长度等于緩冲区 个数。緩冲区状态表的索引和各个緩冲区对应,索引宽度和緩沖区的地址宽 度一致,緩沖区状态表的内容标识了对应的緩冲区是否被分配,例如为l表 示未分配状态,为0则表示已分配状态。为加快响应速度,本发明将緩冲区状态表分成若干个子表进行维护,每个緩沖区状态子表都有1子表ID,子表
ID编号从0开始,依次编号1,2,3….。缓冲区状态子表ID作为高位和緩冲区 状态子表的索引作为低位,构成了緩冲区地址。另外,为实现緩冲区的回收 功能,本发明还包括緩冲区回收控制模块,其维护一张回收緩沖区状态表, 其内容标识为緩沖区回收标识,例如为0则表示不需回收,为1则表示需要 回收。回收缓冲区状态表的大小一般和緩冲区状态子表的大小相同(也可以 更小)。
本发明实现的緩冲区管理系统由四个主要部分构成,分別是緩冲区状态 子表,緩冲区状态子表维护模块,申请释放仲裁模块,待回收緩沖区状态表, 以及緩沖区回收控制模块。其中,緩冲区子表状态维护模块负责读写緩冲区 状态子表;申请释放仲裁模块则负责响应缓冲区的申请和释放操作并在有多 个申请释放请求的时候裁定响应哪个请求源同时选定待操作的緩冲区状态子 表;緩沖区回收控制模块则控制对已分配的缓冲区在一定时间未被释放的则 进行释放操作。本模块所有数据表项和信息都在芯片内部,不需要对外部存 储器进行任何访问。
采用本发明实现后,耗费的存储空间将大量减少,每个緩冲区只需要lbit 的空间,假如缓沖区个数为1024K,其消耗的空间将只是lMbit,而不是传统 的緩冲区管理系统的20Mbit。同时,本模块还将可以緩沖区分块处理,假如 管理1M数量的緩沖区,其可以分成10个1024K的缓冲区块,其将大幅提高 缓冲区管理器的处理速度。假如需要緩冲区回收功能,其额外所需的资源也 非常少。在采用本发明的緩冲区系统后,緩沖区可以分块回收,有i如管理lM 的緩沖区,其可以按照1K个緩冲区组成1块来进行回收,其额外所需的空间 是lKb,所以,其总资源消耗为1025Kbit。
第二步,结合附图进一步详细说明 一、系统结构
本发明一种快速低资源消耗的緩冲区管理系统,如附图6所示,该系统 包括五个部分緩冲区状态子表,緩沖区状态子表维护模块,申请释放仲裁 模块,待回收緩沖区状态表,以及緩冲区回收控制模块,它们的职责分别是
l)緩沖区状态子表此对应的是芯片内部的一块物理空间,其大小应为緩冲区状态子表维 护的緩冲区数量xlBit。其内容存放的是其对应的緩冲区状态。在系统初始化
阶段,此块空间应被初始化成"r,(未分配状态)。此表供緩冲区状态子表维 护模块进行读取和写入操作,同时还供緩冲区回收控制模块进行读取操作。
2) 緩冲区状态子表维护模块
完成对缓冲区状态子表的轮询和写入操作。在系统工作状态,其轮询其 负责管理的緩冲区状态子表,直至找出未分配的緩沖区,并给出找到未分配 緩沖区的标识。当申请释放仲裁模块将本模块的找到的未分配緩冲区分配后,
将对应的緩沖区状态子表中的内容置为"o"(已分配状态)。此后模块又启动
轮询,查找下一个未分配的緩沖区。同时,在系统工作状态,此模块还需要 响应緩沖区回收控制才莫块的回收请求,将需要回收的緩冲区对应的緩冲区状 态子表中的内容置为"r (未分配状态)。
3) 申请释放仲裁才莫块
此模块完成外部緩冲区释放和申请的仲裁操作以及内部各个緩冲区子表 的选择操作。当有多个申请请求源同时有效的时候,决定响应哪个申请请求 源,然后从已给出已找到未分配緩冲区的緩冲区子表中,调度出一缓冲区子 表,将其子表的索引作为缓冲区地址分配给申请请求源。当有多个释放请求 源同时有效的时候,决定响应哪个释放请求源,然后根据释放的緩冲区地址, 选中相应的緩沖区子表,进行緩冲区释放操作。緩冲区管理器可以服务多个 緩沖区使用者,使用者需要使用緩冲区时向緩冲区管理器发出申请请求,使 用完緩冲区后向缓沖区管理器发出释放该缓冲区请求,回收供以后使用。
4) 待回收緩沖区状态表
本模块联同緩沖区回收控制模块完成緩冲区的回收工作,防止緩冲区的 意外泄漏。在緩冲区回收控制模块启动时,本模块记录下正在操作中的緩冲 区状态子表中的所有緩冲区的状态。然后在等待一段时间之后,查看待回收 緩沖区表中各个緩冲区状态,如果还为"1"(记录为已分配状态),则进行回 收。在等待的时间过程中,如果有緩冲区发生了释放操作,且释放的緩冲区 恰好是正在操作中的緩冲区状态子表中的緩冲区,则需要将待回收緩冲区状 态表中相应的内容置为"0"(记录为未分配状态)。通过此方法,可以发现那
些超时未有释放操作的緩沖区。所有这类緩冲区,将被回收。5)緩冲区回收控制模块
本模块联同緩冲区回收控制模块完成緩冲区的回收工作,防止緩冲区的 意外泄漏。在緩沖区回收控制模块启动时,本模块读取正在操作中的緩冲区 状态子表中的所有緩冲区的状态,将其写入待回收緩冲区状态。然后在等待 一段时间之后,查看待回收緩冲区表中各个緩沖区状态,如果还为"0",则 进行回收。
二、工作原理,具体包括 (-)初始化
如图7所示,在系统初始化阶段,将所有緩冲区状态子表的内容都之对 应的緩冲区状态归'T,(未分配状态)。
仁)分配
如图8所示,在分配緩冲区时,收到緩沖区使用者的緩冲区申请请求后, 轮询各个緩冲区状态子表维护模块的已找到未分配緩冲区的标识,如果有效, 则将对应的緩冲区状态子表ID和索引作为緩冲区地址,联同申请响应信号一 起送出。同时,将对应緩冲区状态子表的索引指向的内容置为"0"(已分配 状态)。
(H)释放和回收
如图9和10所示,在释放缓冲区时,收到緩沖区使用者的释放请求后, 以被释放的緩冲区地址作为緩冲区状态表的索引,找到对应緩沖区状态子表,
并将对应的緩冲区状态子表的相应地址的内容置为"r (未分配状态)。同时, 如果緩沖区回收模块正在操作的緩冲区地址空间和此緩沖区状态子表对应的 緩冲区地址空间对应,则将释放的緩冲区对应的回收緩冲区状态表中的相应
Bit置为'T,。同时,緩冲区回收控制^t块为定时启动,每次操作一张緩冲 区状态子表。在緩冲区回收控制才莫块工作期间,其读取緩冲区状态子表中的 各个緩沖区状态,写入待回收緩冲区状态表。在等待一段时间后,缓冲区回 收控制模块查询待回收緩沖区状态表,如果某索引对应内容为"0",则将当 前緩冲区回收控制模块操作的緩沖区子表中对应的緩冲区的状态置为"1"(未 分配状态)。当整个待回收緩冲区状态表轮询完毕,则此次回收过程完成。依 靠定时器启动下次回收过程,其操作的对象则变成了下一张緩沖区状态子表。
权利要求
1、一种缓冲区管理方法,其特征在于,包括以下步骤1.1)建立外部存储器的缓冲区状态表并将其记录索引与各自缓冲区地址对应;所述索引和地址的宽度一致,所述状态包括分配状态和空闲状态;1.2)根据对应请求和所述缓冲区状态表分配或回收缓冲区并对所述缓冲区状态表进行维护。
2、 根据权利要求1所述管理方法,其特征在于,所述记录索引与对应 緩冲区地址完全相同。
3、 根据权利要求2所述管理方法,其特征在于,所述緩冲区状态表由 若干緩冲区状态子表构成,所述緩冲区状态子表标识码作为高位和所述緩沖 区状态子表的记录索引作为低位构成各自緩冲区地址。
4、 根据权利要求2所述管理方法,其特征在于,所述步骤1.2)中分配 包括轮询所述緩沖区状态表找到一个未分配緩冲区,在获得申请请求之后将 该未分配緩冲区对应索引作为被分配緩冲区地址提供给所述外部存储器并将 对应緩冲区状态置为分配状态。
5、 根据权利要求2所述管理方法,其特征在于,所述步骤1.2)中回收 包括以被释放緩冲区地址作为緩沖区状态表的索引并将对应緩冲区状态置为 空闲状态。
6、 根据权利要求1或2所述管理方法,其特征在于,所述步骤1.2) 采用仲裁机制处理多个同时的所述请求。
7、 根据权利要求1所述管理方法,其特征在于,该管理方法还建立并 维护回收緩冲区状态表,所述步骤1.2)中回收包括根据所述回收緩冲区状态 表对所述緩冲区状态表进行操作。
8、 根据权利要求7所述管理方法,其特征在于,所述步骤1.2)中回收 是定时启动的。
9、 根据权利要求3或8所述管理方法,其特征在于,所述步骤1.2) 中回收是对当前正在操作的緩沖区状态子表中的緩冲区进行的。
10、 一种緩冲区管理系统,连接管理外部存储器,其特征在于,该系统 全部内置于与所述外部存储器连接的包含记录索引与缓冲区地址宽度一致、 数值相同或——对应的緩冲区状态表的芯片内。
全文摘要
本发明涉及一种缓冲区管理方法及其系统,其中系统全部内置于与外部存储器连接的芯片内,方法包括建立外部存储器的缓冲区状态表并使其记录索引与各自缓冲区地址相同;根据对应请求和所述缓冲区状态表分配或回收缓冲区并对所述缓冲区状态表进行维护。这种方法及其系统通过记录索引与缓冲区地址直接对应,用存放缓冲区状态表替代存放缓冲区的指针,使全套系统可以在芯片内部完全实现,与传统的缓冲区管理办法相比,大量节省存储器的空间耗费,并大幅提高性能表现,进一步将整个缓冲区状态表分成多个子表,也大大提高了比传统方法快的多的响应速度。
文档编号H04L12/54GK101610197SQ20081010047
公开日2009年12月23日 申请日期2008年6月16日 优先权日2008年6月16日
发明者吴春华, 娄本刚 申请人:中兴通讯股份有限公司