一种缓存管理系统与方法

文档序号:7627659阅读:175来源:国知局
专利名称:一种缓存管理系统与方法
技术领域
本发明涉及通信领域,特别是涉及一种在存储-转发式交换系统中的缓存管理系统与方法。
背景技术
一般地,在存储-转发式交换网络系统中,从外部端口进入系统的数据帧经输入接口模块存储到共享缓存(RAM)模块的缓存单元,而缓存管理模块通过缓存地址指针管理共享缓存模块的缓存单元;然后,数据帧的主体始终保存在共享缓存模块的缓存单元中,只有缓存地址指针在系统中传递;直到转发指令下达到输出接口模块,再由输出接口模块根据缓存地址指针把数据帧从共享缓存模块的缓存单元中读出并发送到外部端口。
在上述过程中,“将数据帧存入共享缓存模块”和“将数据帧从共享缓存模块中读出”时,为了操作方便,通常的做法是根据数据帧的大小将共享缓存模块划分成许多小的缓存单元,每个缓存单元可以存一个、多个或者一定数目的数据帧,每个缓存单元都对应一个缓存地址指针,相应地,利用缓存管理模块对这些缓存地址指针进行管理,并负责将缓存地址指针对应的空闲缓存单元分配给输入接口模块使用,并从输出接口模块回收使用完的缓存地址指针。
常见的一种缓存管理系统,其以先进先出模块(First In First Out,FIFO),形式管理缓存地址指针,它提供一个用于保存所有缓存地址指针的FIFO模块,FIFO模块由多个FIFO单元组成,每个FIFO单元存储一个缓存地址指针,FIFO单元的数量等于缓存块总数,以保存全部地址指针。如果用RAM实现该FIFO模块,若缓存块总数为2m,则该RAM至少为“m×2m”位(bit),以1M个缓存块为例,1M缓存块需要一个20bit×1M=20Mbits的RAM。
这一系统还包括一个FIFO读地址单元,其指向下一个可用的空闲FIFO缓存地址指针;一个FIFO写地址单元,其指向回收的FIFO缓存地址指针。
当FIFO模块处于“满”状态时,即FIFO模块中所有的缓存地址指针都是空闲缓存指针时,FIFO读地址单元和FIFO写地址单元的值相等。
当系统复位后,FIFO模块中存放全部的空闲缓存地址指针,如图1所示,其中,FIFO读地址指示了第一个可用的空闲缓存块的FIFO地址为0,FIFO写指针指示了回收的指针为0,即处于“满”状态,“读地址”和“写地址”相等。
分配缓存时,从FIFO模块“读地址”单元中读出一个地址指针,FIFO中空闲缓存个数减一;归还缓存时,将归还的缓存指针写入FIFO“写地址”单元中,FIFO模块中空闲缓存个数加一。
如图1所示为处于正常运行过程中的FIFO内容和控制状态,“FIFO读地址”指示下一个将可分配的空闲缓存,其位于FIFO地址指针90单元中,“FIFO写地址”指示回收的地址应写入FIFO地址56的单元中,FIFO中有效空闲缓存数为1M-(90-56)。
但是这种方法有如下的缺点缺点一需要较大的硬件逻辑资源RAM根据所需RAM资源的公式“m×2m”可知,每个缓存单元所需RAM资源为(m×2m)/2m=m。当缓存单元总数增大时,每个缓存单元消耗的RAM资源也急剧增大。交换系统发展趋势是交换带宽不断提高,所需的缓存不断增大,该方案不适用于缓存单元总数较大的交换系统。
缺点二控制逻辑复杂,可靠性差对于具有复杂功能的存储-转发式交换系统,由于输入接口模块众多,并且存在多播和广播的情况,且需要回收缓存地址指针,因此,需要分配缓存地址指针或者需要回收缓存地址指针往往有多个,这就造成FIFO的控制逻辑和缓存管理的设计变得比较复杂。
由于系统本身设计缺陷或受外界干扰(电磁干扰),有的缓存地址指针没有能回收,或者回收了错的缓存地址指针,或者缓存管理模块或者其他模块发生错误,或者由于其他一些未知的原因造成分配出去的缓存块没有被正确回收,就会导致该系统的缓存泄漏,这样会造成缓存泄漏(有的缓存没有被回收)或缓存管理混乱。
缓存泄漏是一种致命的错误,它可能验证降低网络系统的传输效率,增加网络系统的丢包率,严重时可能导致网络瘫痪。

发明内容
本发明的目的在于克服上述缺陷,提供的一种缓存管理系统和方法,其简化控制逻辑,提高可靠性,用较少的硬件逻辑资源,实现简单的缓存管理方式。
为实现本发明目的而提供的一种缓存管理系统,包括输入接口模块,输出接口模块,数据转发通道,共享缓存模块,缓存管理模块,所述缓存管理模块包括计数器,用于当计数器的值相对应的共享缓存模块的缓存单元被分配出去时,计数器的值改变,对应下一个缓存管理模块的缓存地址;同时,缓存管理模块根据计数器的值对缓存单元中的数据进行有效性检查。
所述计数器包括高位部分和低位部分。
所述计数器的低位部分计数值与共享缓存模块中缓存单元的总数相等。
所述的计数器为二进制计数器、二进制循环计数器或者增1、减1的简单二进制循环计数器。
本发明还提供了一种缓存管理装置,具有缓存管理模块,其特征在于,所述缓存管理模块包括计数器(41),用于当计数器(41)的值相对应的缓存单元被分配出去时,计数器(41)的值改变,对应下一个缓存管理模块的缓存地址;同时,缓存管理模块根据计数器(41)的值对缓存地址对应的数据进行有效性检查。
所述计数器(41)包括高位部分和低位部分。
所述的计数器(41)为二进制计数器或者二进制循环计数器或者增1、减1的简单二进制循环计数器。
本发明还提供了一种缓存管理方法,包括下列步骤步骤一输入接口模块从网络接收到数据,从缓存管理模块中获取缓存地址,并将接收到的数据存储到该地址对应的共享缓存模块的缓存单元中;步骤二缓存管理模块的计数器的值相对应的缓存地址的缓存单元被分配出去,同时计数器的值改变,对应下一个缓存地址;
步骤三当转发指令通过数据转发通道通知输出接口模块转发数据后,缓存管理模块根据计数器的值对缓存单元中的输出数据进行有效性检查;对输出数据进行有效性检查包括下列步骤步骤1将输出数据扩展缓存地址和当前计数器的值进行比较;步骤2如果当前计数器的值与输出数据扩展缓存地址的差小于缓存单元总数,则缓存地址指针有效,其对应缓存的数据有效;否则,缓存地址指针无效。
步骤四输出接口模块根据有效的输出数据缓存地址指针从相应的共享缓存模块的缓存单元中读出数据,并发送到外部端口;如果是无效的缓存地址指针,输出接口将不输出数据。
所述计数器包括高位部分和低位部分。
所述低位部分的值与共享缓存模块中缓存单元的总数相等。
所述的计数器为二进制计数器、二进制循环计数器或者增1,减1的简单二进制循环计数器。
因此,步骤二中所述的计数器的值改变,对应下一个缓存地址包括下列步骤步骤A计数器的值的低位部分增1;步骤B计数器低位部分循环计数,因此扩展缓存地址中的缓存地址指针也循环计数,实现共享缓存模块中的缓存单元循环分配。
本发明的有益效果是本发明提供了一种应用于包交换网络中网络节点的缓存管理方法,其实现了一种简单的缓存管理方法,可以有效地避免缓存泄漏,其实现简单,成本低,使用资源少,可靠性更高。


图1是FIFO形式管理缓存地址指针示意图;图2是本发明的缓存管理系统结构示意图;图3是本发明扩展缓存地址指针示意图。
具体实施例方式
下面结合附图2、3进一步详细描述本发明的一种缓存管理系统和方法。
本发明的高可靠性缓存管理系统,包括输入接口模块1,输出接口模块3,数据转发通道5,共享缓存模块2和缓存管理模块4。
所述缓存管理模块4包括计数器41,所述的计数器41为2进制计数器。
如图3所示计数器41分为两部分,低位部分表示缓存地址指针,从0开始到共享缓存模块2的缓存单元总数减1,高位部分表示缓存地址指针的扩展部分,也就是最大缓存时间的扩展位数。
低位部分最大计数值加1后等于缓存单元的总数,低位部分循环一圈,就是共享缓存的全部缓存单元全部分配一次,如缓存单元总数为1M时,低位部分就需要20位。
高位部分的位数决定最大缓存时间的扩展倍数,位数越多扩展倍数越大,如果高位部分为n位,那么扩展的缓存时间为(2n-1)×最大扩展时间,如缓存块的总数为1M,每个缓存地址指针确定的缓存单元大小为1Kb,接口速率为10Gbps时,缓存最大时间为100ms。如果高位部分为10位,那么扩展的缓存时间为(210-1)×100ms,即102.3s;如果高位部分为20位,那么扩展的缓存时间为(220-1)×100ms,即104857.5s。
下面结合所述的缓存管理系统进一步详细说明本发明的缓存管理方法(一)输入接口模块1从网络接收到数据,从缓存管理模块4中获取缓存地址,并将接收到的数据存储到该地址对应的共享缓存模块2的缓存单元中当输入接口模块1接收到数据帧并存储到共享缓存模块的存储单元时,缓存管理模块4进行缓存单元分配,缓存管理模块4将循环计数器41的值,即计数器的高位部分加上低位部分,作为扩展缓存地址,其包括高位部分扩展地址和低位部分缓存地址指针,将接收到的数据帧存储到扩展缓存地址的缓存地址指针对应的缓存单元中;(二)缓存管理模块4的计数器41的值相对应的缓存地址的缓存单元被分配出去,同时计数器41的值改变,对应下一个缓存地址然后计数器41的值的低位部分增1,计数器低位部分循环计数,因此扩展缓存地址中的缓存地址指针也循环计数,实现共享缓存模块2中的缓存单元循环分配;(三)当转发指令通过数据转发通道5通知输出接口模块3转发数据后,缓存管理模块4根据计数器41的值对缓存单元中的输出数据进行有效性检查在系统对数据处理过程中,数据帧的主体将始终保存在共享缓存模块2的缓存单元中,只有扩展缓存地址在系统中传递,直到转发指令下达到输出接口模块3时,再由输出接口模块3根据扩展缓存地址的缓存地址指针把数据从相应的共享缓存的缓存单元中读出并发送到外部端口。
本实施例对输出数据缓存地址指针,即输出接口模块3的扩展缓存地址的缓存地址指针进行有效性检查将输出数据扩展缓存地址和当前循环计数器41的值,即系统正在分配的扩展缓存地址针进行比较。
如果当前循环计数器41的值与输出数据扩展缓存地址的差小于缓存单元总数,说明该输出数据扩展缓存地址没有被再次分配出去,即缓存地址指针有效,其对应缓存的数据有效。
检查的公式如下,满足下列公式时,就认为数据帧对应的缓存地址指针有效当前循环计数器的值减去输出数据扩展缓存地址得到的值小于共享缓存模块的缓存单元总数(四)输出接口模块3根据有效的输出数据缓存地址指针从相应的共享缓存模块2的缓存单元中读出数据,并发送到外部端口;如果是无效的缓存地址指针,输出接口将不输出数据数据帧存入缓存单元时,输入接口模块1从数据帧中提取出用于对帧进行转发的信息,与数据帧的扩展缓存地址一起,发送到数据转发通道5,数据转发通道5根据这些信息对数据帧进行转发查找操作,获得数据帧的目的端口。
输出接口模块3收到来自数据转发通道的帧信息后,根据其中携带的扩展缓存地址指针,把数据帧从共享缓存的缓存单元中读出来,发送到外部输出端口。
最大缓存时间是定义的一个时间,其根据缓存能力而定的,当全部缓存以最大速率分配一次的时间为最大缓存时间。
计数器41循环分配一圈的时间后,最小为“最大缓存时间”,缓存重新分配。
当共享缓存达到最大缓存时间时,由于扩展缓存地址指针在系统中传递的时间受转发指令控制,可能会超过共享缓存的最大缓存时间,而由于计数器41低位部分采用循环计数器进行缓存管理,超过共享缓存的最大缓存时间时,对应的缓存地址指针可能再次被分配,造成数据覆盖。
下面对本发明的计数器举一个简单的例子计数器的低位部分为22,即00~11,共享缓存模块共有4个存储单元。
数据帧自000开始存入共享缓存单元,存储到000单元,然后计数器增1,继续存入数据,直至011单元;这时,当前计数器的值循环一次,而000缓存单元的数据已经被转发,001缓存单元中的数据还没有被转发。
计数器循环后,重新开始存入数据,计数器的高位增1,为100,在100缓存单元中存入数据,计数器增1,指向101缓存单元,以101为扩展地址,写入原来001单元中,覆盖原来的数据。
这时,如果输出模块单元要转发001中的数据,则检查数据有效性,即101-001=100,其大于等于最大存储单元个数4,因此其不是有效数据,不予转发。
如果输出接口模块继续转发010中的数据,而这时010单元中的数据还没有被覆盖。则检查数据有效性,即101-010=011,则数据有效,其中的数据被转发出去。
输出接口模块继续转发011中的数据,而这时也没有数据存入缓存单元,计数器的值仍为101,检查数据有效性,即101-011=010,则数据有效,其中的数据被转发出去。
本发明采用循环计数器进行缓存管理,所以缓存地址指针不需要回收。
扩展缓存地址指针的扩展部分引入后,确保至少在扩展最大缓存时间内,可以检测出输出接口模块3中的缓存地址指针的有效性,扩展缓存地址指针的扩展部分引入后,系统传递扩展缓存地址指针时,需额外记录扩展部分,增加硬件资源RAM,如系统传递扩展缓存地址指针使用的单元数等于缓存单元总数,当缓存单元总数为2m,由需要额外的RAM大小为扩展部分bit数×2mbits。以1M个缓存单元为例,扩展部分为10位,1M个缓存块需一个10bit×1M=10Mbits的RAM本发明简化了缓存管理逻辑控制复杂度,其采用计数器41进行缓存管理,方式简单,而且不用使用复杂容易出错的FIFO控制逻辑,实现高稳定的工作,且对于具有复杂功能的存储-转发式交换系统,如多播数据转发过程中的控制逻辑和缓存管理的设计变得比较简单。
同时,本发明也扩展最大缓存时间,其采用扩展缓存地址指针格式,在输出数据时进行缓存地址指针有效性判断,确保在扩展缓存最大时间内,输出数据有效。而且也可以灵活依据硬件逻辑RAM资源,确定扩展部分位数。如果RAM资源多,可以将扩展部分位数增大;如果RAM资源不多,可以将扩展部分位数减小。
本实施例是为了更好地理解本发明进行的详细的描述,而并不是对本发明所保护的范围的限定,因此,本领域普通技术人员不脱离本发明的主旨情况下,未经创造性劳动而对本发明所做的改变,是在本发明的保护范围内的。
权利要求
1.一种缓存管理系统,包括输入接口模块(1),输出接口模块(3),数据转发通道(5),共享缓存模块(2),缓存管理模块(4),其特征在于,所述缓存管理模块(4)包括计数器(41),用于当计数器(41)的值相对应的共享缓存模块(2)的缓存单元被分配出去时,计数器(41)的值改变,对应下一个缓存管理模块(4)的缓存地址;同时,缓存管理模块(4)根据计数器(41)的值对缓存单元中的数据进行有效性检查。
2.根据权利要求1所述的缓存管理系统,其特征在于,所述计数器(41)包括高位部分和低位部分。
3.根据权利要求2所述的缓存管理系统,其特征在于,所述计数器(41)的低位部分计数值与共享缓存模块(2)中缓存单元的总数相等。
4.根据权利要求3所述的缓存管理系统,其特征在于,所述的计数器(41)为二进制计数器或者二进制循环计数器或者增1、减1的简单二进制循环计数器。
5.一种缓存管理装置,具有缓存管理模块,其特征在于,所述缓存管理模块包括计数器(41),用于当计数器(41)的值相对应的缓存单元被分配出去时,计数器(41)的值改变,对应下一个缓存管理模块的缓存地址;同时,缓存管理模块根据计数器(41)的值对缓存地址对应的数据进行有效性检查。
6.根据权利要求5所述的缓存管理装置,其特征在于,所述计数器(41)包括高位部分和低位部分。
7.根据权利要求6所述的缓存管理装置,其特征在于,所述的计数器(41)为二进制计数器或者二进制循环计数器或者增1、减1的简单二进制循环计数器。
8.一种缓存管理方法,其特征在于,包括下列步骤步骤一输入接口模块(1)从网络接收到数据,从缓存管理模块(4)中获取缓存地址,并将接收到的数据存储到该地址对应的共享缓存模块(2)的缓存单元中;步骤二缓存管理模块(4)的计数器(41)的值相对应的缓存地址的缓存单元被分配出去,同时计数器(41)的值改变,对应下一个缓存地址;步骤三当转发指令通过数据转发通道(5)通知输出接口模块(3)转发数据后,缓存管理模块(4)根据计数器(41)的值对缓存单元中的输出数据进行有效性检查;步骤四输出接口模块(3)根据有效的输出数据缓存地址指针从相应的共享缓存模块(2)的缓存单元中读出数据,并发送到外部端口;如果是无效的缓存地址指针,输出接口将不输出数据。
9.根据权利要求8所述的缓存管理方法,其特征在于,所述步骤三中对输出数据进行有效性检查包括下列步骤步骤1将输出数据扩展缓存地址和当前计数器(41)的值进行比较;步骤2如果当前计数器(41)的值与输出数据扩展缓存地址的差小于缓存单元总数,则缓存地址指针有效,其对应缓存的数据有效;否则,缓存地址指针无效。
10.根据权利要求9所述的缓存管理方法,其特征在于,所述计数器(41)包括高位部分和低位部分。
11.根据权利要求10所述的缓存管理方法,其特征在于,所述低位部分的值与共享缓存模块(2)中缓存单元的总数相等。
12.根据权利要求11所述的缓存管理方法,其特征在于,所述的计数器(41)为二进制计数器或者二进制循环计数器或者增1、减1的简单二进制计数器。
13.根据权利要求12所述的缓存管理方法,其特征在于,步骤二中所述的计数器(41)的值改变,对应下一个缓存地址包括下列步骤步骤A计数器(41)的值的低位部分增1;步骤B计数器(41)低位部分循环计数,因此扩展缓存地址中的缓存地址指针也循环计数,实现共享缓存模块(2)中的缓存单元循环分配。
全文摘要
一种缓存管理系统与方法,包括输入接口模块(1),输出接口模块(3),数据转发通道(5),共享缓存模块(2),缓存管理模块(4),所述缓存管理模块(4)包括计数器(41),用于计数器(41)的值对应的共享缓存模块(2)的缓存单元被分配出去时,计数器(41)的值改变,对应下一个缓存管理模块(4)的缓存地址;同时,缓存管理模块(4)根据计数器(41)的值对缓存单元中的数据进行有效性检查。其简化控制逻辑,提高可靠性,用较少的硬件逻辑资源,实现简单的缓存管理方式。
文档编号H04L12/54GK1863132SQ20051012336
公开日2006年11月15日 申请日期2005年11月23日 优先权日2005年11月23日
发明者崔靖杰, 杜文华, 林郁, 林涛, 施学峰, 王万万, 谭锐 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1