CN1819544A - 一种基于bitmap表的缓存管理方法 - Google Patents
一种基于bitmap表的缓存管理方法 Download PDFInfo
- Publication number
- CN1819544A CN1819544A CNA2005100001452A CN200510000145A CN1819544A CN 1819544 A CN1819544 A CN 1819544A CN A2005100001452 A CNA2005100001452 A CN A2005100001452A CN 200510000145 A CN200510000145 A CN 200510000145A CN 1819544 A CN1819544 A CN 1819544A
- Authority
- CN
- China
- Prior art keywords
- address
- bitmap table
- buffer
- bit
- fifo
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种基于bitmap表的缓存管理方法,其核心为:将bitmap表划分为若干个至少包括1比特位的区域,分别根据各区域中的比特位的未占用状态确定并记录各区域的空闲状态,根据所述记录的各区域的空闲状态对缓存地址指针进行管理。本发明分配缓存地址指针的整个过程固定,易控制,且管理每个至少包含有1比特缓存空间的缓存单元消耗的RAM约为1比特,消耗资源较少;本发明能够实现平均每2个时钟周期完成一次缓存地址指针的分配过程,分配、回收缓存地址指针的效率高,且提高了缓存管理过程中的可控性,在消耗资源尽可能少的情况下,最大程度地提高了缓存的管理能力,使本发明的缓存管理方法能够满足高带宽对大缓存的需求。
Description
技术领域
本发明涉及网络通讯技术领域,具体涉及一种基于bitmap表的缓存管理方法。
背景技术
共享型存储-转发式交换芯片的总体框架如附图1所示。
共享型存储-转发式交换芯片的数据帧转发处理过程主要包括如下3个步骤:接收并缓存数据帧、数据转发、发送数据帧回收缓存。
接收并缓存数据帧:从外部端口进入芯片的数据帧经输入接口1缓存到共享缓存2中,共享缓存2一般为RAM(随机存储器)。数据帧在共享缓存2的分配由缓存管理4通过缓存地址指针管理。在以后的数据帧转发处理的过程中,数据帧的主体将始终保存在共享缓存2中,只有缓存地址指针在芯片中传递,直到转发指令下达到输出接口3,由输出接口3根据缓存地址指针把数据帧从共享缓存2中读出并发送到外部端口。
数据转发:数据帧在写入共享缓存2时,输入接口1从数据帧中提取出用于对该数据帧进行转发的信息,该信息与数据帧的缓存地址指针一起,发送到数据转发通道5,数据转发通道5根据其接收的转发信息对数据帧进行转发查找操作,以获得数据帧的目的端口,并将缓存地址指针与目的端口信息一起传输至输出接口3。
发送数据帧回收缓存:输出接口3根据数据转发通道5传输来的缓存地址指针将数据帧从共享缓存2中读出,并根据数据帧的目的端口信息将数据帧发送到外部输出端口。缓存管理4将相应的缓存回收。
在上述过程中缓存管理4对共享缓存的缓存地址指针分配及回收的管理方法主要有如下两种:
方法一:采用FIFO(先进先出)的形式对共享缓存的缓存地址指针进行分配及回收管理。
具体为:使用一个FIFO队列来保存共享缓存的所有空闲缓存地址指针,FIFO队列中的每个FIFO单元存放一个空闲缓存地址指针,FIFO队列的深度应等于共享缓存中缓存单元的总数,以便在共享缓存的所有缓存单元均为空闲时,存储全部缓存单元的缓存地址指针。使用“FIFO读地址”来指示共享缓存中第一个可用的空闲缓存地址指针,使用“FIFO写地址”来指示回收的缓存地址指针应存放的FIFO单元。当缓存管理4为数据帧分配缓存地址指针时,根据“FIFO读地址”读出一个空闲缓存地址指针,FIFO队列中空闲缓存地址指针的个数减一;当存储在缓存中的数据帧发送到外部端口、需要回收缓存地址指针时,将该缓存地址指针根据“FIFO写地址”写入FIFO单元中,FIFO队列中空闲缓存地址指针的个数增加一。
FIFO队列可以使用RAM来实现,如果共享缓存的缓存单元总数为2m,则需要m×2mbits的RAM来实现FIFO队列,即如果共享缓存的缓存单元总数为8K,则FIFO队列应该为13bit×8K=104Kbits的RAM,平均每个缓存单元消耗13bit的RAM。
***复位时,FIFO队列的初始状态如附图2所示。
在图2中,设定缓存单元的总数为8K,***复位时,共享缓存中的所有缓存单元都没有存放数据帧,因此,FIFO队列中应存放全部的8K个缓存地址指针,此时,FIFO处于“满”状态,“FIFO读地址”和“FIFO写地址”相等,均为0。
处于正常运行过程中的FIFO队列如附图3所示。
在图3中,设定“FIFO读地址”指示的下一个可分配的缓存地址指针存储于FIFO队列的地址为90的FIFO单元中,“FIFO写地址”指示的下一个回收的缓存地址指针应写入FIFO队列的地址为56的FIFO单元中,此时,FIFO队列中存储的缓存地址指针的总数为8K-(90-56)个。
采用该方法进行共享缓存的管理时,对FIFO队列进行一次访问就可以分配或回收一个缓存地址指针,分配和回收共享缓存的能力强,共享缓存的管理效率高。但是,由于FIFO队列的宽度和深度会随着共享缓存的缓存单元数目的增加而急剧增大,管理每个缓存单元消耗的RAM资源也会急剧增加,所以,该方法不适用于具有较大存储空间共享缓存的交换芯片。
方法二,使用Bitmap表和FIFO形式对共享缓存的缓存地址指针进行分配及回收管理。
Bitmap表是一个二维表,每个缓存地址指针对应Bitmap表中的1bit,Bitmap表可以使用RAM来实现。
常用的缓存地址指针与Bitmap表的映射关系为:缓存地址指针的高nbit作为Bitmap表的行地址,缓存地址指针的低mbit作为Bitmap表的列地址。行、列地址共同确定Bitmap表中的比特位为1时,表示对应的缓存地址指针被占用,为0时,表示对应的缓存地址指针空闲。如果直接从Bitmap表中搜索一个空闲缓存地址指针,可能会消耗很多个时钟周期,所以可以结合使用一个小的FIFO队列来进行缓存地址指针的管理。
具体为:在FIFO队列中预存一些共享缓存的空闲缓存地址指针,并设定FIFO的两个域值,一个为搜索域值,即低域值,一个为回收域值,即高域值。当FIFO中存储的空闲缓存地址指针超过回收域值时,将高于回收域值的缓存地址指针归还到Bitmap表中,Bitmap表中对应的bit置为0;当FIFO中存储的空闲缓存地址指针低于搜索域值,将自动从Bitmap表中搜索出一些空闲缓存地址指针,存放到FIFO中,Bitmap表中对应的bit置为1。
采用该方法进行缓存地址指针管理,在***复位时,Bitmap表的初始状态如附图4所示。
在图4中,共享缓存的缓存单元总数为8K个,Bitmap表的大小为(28×25)bit,由于0-31的缓存地址指针存储于FIFO队列中,所以,将这些缓存地址指针在Bitmap表中对应的比特位置为“1”。
处于正常运行过程中的Bitmap表如附图5所示。
在图5中,Bitmap表为“1”的比特位对应的缓存地址指针被占用,为“0”的比特位对应的缓存地址指针未被占用。在这里,缓存地址指针被占用包括:该缓存地址指针为空闲缓存地址指针,且存储于FIFO中,或者该缓存地址指针对应的缓存单元已被数据帧占用。
在分配缓存地址指针时,根据“FIFO读地址”从FIFO中读出一个缓存地址指针,FIFO中存储的缓存地址指针的总数减一;在回收缓存地址指针时,将回收的缓存指针根据“FIFO写地址”写入FIFO中,FIFO中存储的缓存地址指针的总数加一。
在正常情况下,该方法能够实现一个时钟周期分配或回收一个缓存地址指针,缓解了直接从Bitmap表中搜索空闲缓存指针的速度问题。但是,如果连续分配或回收缓存地址指针的总数超过FIFO的深度,使FIFO达到极限状态时,则需要直接对Bitmap表进行读写访问,从而可能会导致缓存地址指针的访问效率大大降低。
采用该方法进行共享缓存的管理,管理每个缓存单元消耗的RAM资源约为1bit,且不随缓存单元数量的变化而发生变化,资源消耗少,但是该方法在搜索空闲缓存地址指针时耗时不定,尤其在FIFO处于极限状态下,分配和回收缓存地址指针的能力差,使共享缓存的管理效率大大降低,该方法同样不适用于交换带宽较大的交换芯片。
发明内容
本发明的目的在于,提供一种基于bitmap表的缓存管理方法,通过将bitmap表划分为若干区域,存储各区域的空闲状态,使本发明能够在消耗资源尽量少的情况下,最大程度的提高缓存的管理效率。
为达到上述目的,本发明提供的一种基于bitmap表的缓存管理方法,包括:
a、将bitmap表划分为若干个至少包括1比特位的区域;
b、分别根据各区域中的比特位的未占用状态确定并记录各区域的空闲状态;
c、根据所述记录的各区域的空闲状态对缓存地址指针进行管理。
所述步骤a包括:
以bitmap表的行为单位将所述bitmap表划分为若干个区域。
所述步骤b包括:
b1、确定所述各区域的地址;
b2、将至少包含有预定个数的未占用状态的比特位的区域确定为空闲区域;
b3、存储所述空闲区域的地址。
设定所述bitmap表包括n行;
所述步骤a具体为:以所述bitmap表的一行为单位将所述bitmap表划分为n个区域;
其中:n为正整数;
且所述步骤b1具体为:
确定所述各区域的地址分别为:对应的bitmap表的行地址。
所述步骤b2具体为:
将至少包含有1个未占用状态的比特位的区域确定为空闲区域。
所述步骤b3包括:
将所述空闲区域的地址存储在先进先出队列或堆栈中。
设定所述bitmap表包括:n行;
且所述先进先出队列的深度为:n;
所述先进先出队列的宽度m为:当log2 n为整数时,m=log2 n;当log2 n不为整数时,m=(int(log2 n)+1);
其中:所述n、m为正整数;
所述先进先出队列的读地址指示先进先出队列中存储的下一个空闲区域的地址;
所述先进先出队列的写地址指示下一个空闲区域地址存储的先进先出队列的存储单元;
所述先进先出队列的初始状态为:存储各区域的地址的满状态。
所述步骤c进一步包括:
读取一个所述存储的空闲区域的地址;
根据所述读取的地址确定其对应的所述bitmap表的区域,并根据该区域中的未占用状态的比特位确定空闲缓存单元的缓存地址指针;
分配所述缓存地址指针,并将该缓存地址指针对应的bitmap表中的比特位设置为占用状态;
在确定该区域中包含的未占用状态的比特位没有达到预定个数时,将所述存储的该区域的地址删除。
所述步骤c包括:
将回收的缓存地址指针对应的bitmap表中的比特位设置为未占用状态;
在确定该区域中包含未占用状态的比特位达到预定个数,且该区域的地址没有存储时,存储该区域的地址。
所述方法还包括:当同时需要分配和回收缓存地址指针时,将所述回收的缓存地址指针直接分配。
通过上述技术方案的描述可明显得知,本发明通过将bitmap表划分为若干区域,并存储空闲区域的地址,在分配缓存地址指针时,只要缓存中存在空闲缓存单元,根据存储的空闲区域地址就一定能够获取至少一个空闲缓存地址指针,使分配缓存地址指针的整个过程固定,易控制;本发明在使用RAM来实现FIFO以存储空闲区域地址时,管理每个缓存单元消耗的RAM约为1比特,消耗资源较少,且基本上不会随缓存单元数量的变化而变化;本发明能够实现平均每3个时钟周期完成一次缓存地址的回收过程,而且当RAM为一个读端口一个写端口的RAM时,本发明能够实现平均每2个时钟周期完成一次缓存地址指针的分配过程,分配、回收缓存地址指针的效率较高;从而通过本发明提供的技术方案提高了缓存管理过程中的可控性,且在消耗资源尽可能少的情况下,最大程度的提高了缓存的管理效率,使本发明能够很好的适用于交换带宽较大的交换芯片中。
附图说明
图1是共享型存储-转发式交换芯片的总体框架示意图;
图2是现有技术中FIFO队列的初始状态示意图;
图3是现有技术中处于正常运行过程中的FIFO队列示意图;
图4是现有技术中Bitmap表的初始状态示意图;
图5是现有技术中处于正常运行过程中的Bitmap表示意图;
图6是本发明的Bitmap表的初始状态示意图;
图7是本发明的FIFO队列的初始状态示意图;
图8是本发明的分配缓存地址指针的时序图1;
图9是本发明的回收缓存地址指针的时序图;
图10是本发明的分配缓存地址指针的时序图2。
具体实施方式
本发明的核心是:将bitmap表划分为若干个至少包括1比特位的区域,分别根据各区域中的比特位的未占用状态确定并存储各区域的空闲状态,根据所述存储的各区域的空闲状态对缓存地址指针进行管理。
下面基于本发明的核心思想对本发明提供的技术方案做进一步的描述。
本发明的缓存管理方法是以Bitmap表为基础的,所以,凡是在对缓存进行管理时使用到Bitmap表的,本发明都可适用。本发明中的缓存包括共享缓存。
本发明首先需要将Bitmap表划分为若干个区域,然后,根据各区域中包含的比特位的未占用状态确定该区域是否为空闲区域,记录空闲状态的区域,如存储空闲区域的地址,这样,在进行缓存地址指针分配时,可以通过这些存储的空闲区域的地址到Bitmap表中的相应区域去查找,一定会获得至少一个空闲的缓存地址指针。上述存储的空闲区域应在缓存地址指针分配和回收过程中根据该区域中比特位的占用状态的变化而动态变化,以保证存储的空闲区域中一定包含有未占用状态的比特位,而且,还应该保证包含有预定个数的未占用状态的比特位的空闲区域一定被存储。
下面以一行为单位对Bitmap表进行划分为例,对Bitmap表的区域划分进行详细描述。
设定共享缓存具有8K个缓存单元,设定该共享缓存的Bitmap表为行、列分别为(28×25)bit的一个二维表。
以一行为单位对Bitmap表进行区域划分,则可以将Bitmap表划分为28个区域。每个区域的地址可以确定为Bitmap表的行地址。
如果一个区域中包含的未占用状态的比特位的个数达到预定个数,则确定该区域为空闲区域,将该空闲区域的地址即Bitmap表中相应的行地址存储。空闲区域的地址可以存储在FIFO队列中,也可以存储在堆栈中。
上述预定个数最小可以为1,最大应小于Bitmap表的总列数。预定个数可根据通信***的实际需要来选取。
为与现有技术中的FIFO队列进行区分,在本实施例中将存储空闲区域的地址的FIFO队列称为行空闲指示FIFO。
如果具有8K个缓存单元的共享缓存对应的Bitmap表为(28×25)bit,且使用行空闲指示FIFO存储空闲区域的地址时,FIFO队列的深度应该为28,FIFO队列的宽度应该为8bit。
如果使用RAM来实现行空闲指示FIFO,设定共享缓存的缓存单元为2x,则管理每个缓存单元消耗的RAM为:(2x+(x-5)×2(x-5))/2x=1+(x-5)/32,约为1比特,消耗资源较少,在缓存单元大幅度增加时,管理每个缓存单元消耗的RAM的变化量很小,可以认为管理每个缓存单元消耗的RAM基本上不随缓存单元数量的变化而变化。
为方便描述,下面以预定个数为1、空闲区域地址存储在行空闲指示FIFO队列为例,对本发明的缓存管理的过程进行说明。
行空闲指示FIFO的“FIFO读地址”指示队列中存储的下一个至少包含1个未占用状态的比特位的区域的地址,即Bitmap表中相应的行地址;“FIFO写地址”指示当Bitmap表中某行由不包括未占用状态的比特位,而转变为至少包含1个未占用状态的比特位时,该行对应的区域的地址即该行的行地址应存储的FIFO单元。
在***复位时,缓存中未存储任何数据帧,Bitmap表中所有的比特位都为未占用状态,如附图6所示。此时,行空闲指示FIFO中应保存Bitmap表中所有行的行地址,如附图7所示,行空闲指示FIFO中保存了256个行地址,行空闲指示FIFO处于“满”状态,行空闲指示FIFO的“FIFO读地址”与“FIFO写地址”相同,均为0。由于FIFO的深度为Bitmap表的行数,所以行空闲指示FIFO不会发生溢出现象。
在需要为数据帧分配缓存地址指针时,根据“FIFO读地址”从行空闲指示FIFO中读取一个行地址,根据该行地址到Bitmap表相应的行中去查找获取未占用状态的比特位,从获取的该未占用状态的比特位能够确定一个空闲缓存地址指针,将数据帧根据该缓存地址指针存储在缓存中,Bitmap表中该未占用状态的比特位的状态应由未占用状态转变为占用状态,并判断该比特位所在的行是否还至少包含一个未占用状态的比特位,如果该行至少包含一个未占用状态的比特位,说明该区域仍然为空闲区域,其地址仍然应存储在行空闲指示FIFO中,行空闲指示FIFO的“FIFO读地址”不发生改变,本次缓存地址指针的分配过程结束;如果该行中所有的比特位都为占用状态,则说明该区域不再为空闲区域,该区域的地址不应该再存储在行空闲指示FIFO中,“FIFO读地址”加一。本次缓存地址指针的分配过程结束。
在数据帧发送到外部端口,需要回收缓存地址指针时,根据该需要回收的缓存地址指针确定该指针对应的Bitmap表中的比特位,判断该比特位所在的行中的所有比特位是否都为占用状态,如果该行中所有的比特位都为占用状态,则在将回收的缓存地址指针对应的比特位的占用状态转变为未占用状态后,需要将该比特位所在行的行地址存储在行空闲指示FIFO中,根据“FIFO写地址”将该行的行地址存储在对应的FIFO单元中,“FIFO写地址”加一,本次缓存地址指针的回收过程结束;如果该比特位所在的行中的所有比特位不都为占用状态,则直接将该比特位的占用状态转变为未占用状态,本次缓存地址指针的回收过程结束。
如果在数据帧发送到外部端口,需要回收缓存地址指针时,需要分配缓存地址指针,则可以直接将需要回收的缓存地址指针进行分配,不需要再对行空闲指示FIFO及Bitmap表进行任何操作,进一步提高了缓存地址指针的分配、回收效率。
本发明中的行空闲指示FIFO在通过RAM来实现时,如果RAM为1RW(1个读写端口)的RAM,下面结合附图8对上述缓存地址指针分配的具体实现过程进行说明。
在图8中,在时钟周期1,如果行空闲指示FIFO为非空,即缓存中存在空闲缓存单元,则根据“FIFO读地址”从行空闲指示FIFO中读出一个行地址,经过RAM的响应时间,读出的行地址在时钟周期2有效。
在时钟周期3,用该行地址访问Bitmap表,读出该行地址对应的Bitmap表中相应的一行信息,在本实施例中设定Bitmap表通过RAM来实现,且包括256行、32列,则从Bitmap表中读出的一行信息为32bit,经过RAM的响应时间,读出的一行信息在时钟周期4有效。
在时钟周期5,从读出的一行信息中搜索一个未占用状态的比特位,并确定该比特位对应的空闲缓存地址指针。在本实施例中,缓存地址指针为13bit,缓存地址指针可以通过Bitmap表的行地址、列地址来确定,如缓存地址指针的高8bit为Bitmap表的行地址,缓存地址指针的低5bit为Bitmap表的列地址。
在时钟周期6,将该行信息中搜索出的未占用状态的比特位修改为占用状态,然后将修改后的该行信息写回Bitmap表对应的行中。
判断写回的该行信息中所有的比特位是否均为占用状态,如果均为占用状态,说明Bitmap表该行中所有比特位对应的缓存地址指针均被分配占用,该行地址不应继续存储在行空闲指示FIFO中,将行空闲指示FIFO的“FIFO读地址”加一,指向下一个有效的行地址索引;如果写回的该行信息中仍然包含有未占用状态的比特位,则说明Bitmap表该行中至少包含一个未占用状态的比特位,该行地址仍应存储在行空闲指示FIFO中,不对行空闲指示FIFO的“FIFO读地址”进行操作,该行地址仍然存储在行空闲指示FIFO中。
如果行空闲指示FIFO为1RW的RAM,则上述缓存地址指针回收的具体实现如附图9所示:
在图9中,在时钟周期1,以回收的缓存地址指针的高8bit作为读地址从Bitmap表中读出一行信息,经过RAM的响应时间,读出的行信息在时钟周期2有效。
在时钟周期3,将回收的缓存地址指针的低5bit作为列地址,将读出的行信息中对应的比特位改变为未占用状态,将修改后的该行信息写回Bitmap表对应的行中。
如果从Bitmap表中读出的行信息的所有比特位均为占用状态,说明Bitmap表的该行中所有比特位对应的缓存地址指针在回收该缓存指针前均被分配占用,该行地址没有存储在行空闲指示FIFO中,在回收该缓存地址指针后,该行中包含了1个未占用状态的比特位,应将该行地址存储在行空闲指示FIFO中,根据“FIFO写地址”将该行的行地址存储在对应的FIFO单元中,将“FIFO写地址”加一;如果从Bitmap表中读出的行信息中包含有未占用状态的比特位,说明Bitmap表的该行中所有比特位对应的缓存地址指针在回收该缓存指针前没有都被分配占用,该行地址已经存储在行空闲指示FIFO中了,不对行空闲指示FIFO的“FIFO写地址”进行操作。
从上述对图9的描述过程中可明显看出,本发明能够实现平均每3个时钟周期回收一个空闲缓存地址指针,在消耗资源较少的情况下,最大程度的提高了缓存地址指针的回收效率。
如果行空闲指示FIFO使用1R1W(一个读端口和一个写端口)的RAM来实现,且行空闲指示FIFO中至少存储了3个行地址时,可采用流水线的方式进行缓存地址指针的搜索过程,进一步提高了缓存地址指针分配的速率,下面结合附图10对缓存地址指针的分配的具体实现过程进行说明。
在图10中,在时钟周期1、2、3,根据行空闲指示FIFO的“FIFO读地址”从行空闲指示FIFO中连续读出三个行地址,经过RAM的响应时间,读出的行地址分别在时钟周期2、3、4有效。在连续的读行地址的过程中,每执行一次读操作,“FIFO读地址”加一。
分别在时钟周期3、4、5,用相应读出的行地址访问Bitmap表,连续读出这三个行地址分别对应的Bitmap表中相应的行信息,在本实施例中设定Bitmap表通过RAM来实现,且包括256行、32列,则从Bitmap表中读出的三行信息均为32bit,经过RAM的响应时间,上述读出的三行信息分别在时钟周期4、5、6有效。
在时钟周期5、6、7,分别从读出的三行信息中分别搜索一个未占用状态的比特位,并确定三个比特位分别对应的空闲缓存地址指针。在本实施例中,缓存地址指针为13bit,缓存地址指针可以通过Bitmap表的行地址、列地址来确定,如缓存地址指针的高8bit为Bitmap表的行地址,缓存地址指针的低5bit为Bitmap表的列地址。
在时钟周期6、7、8,分别将三行信息中搜索出的未占用状态的比特位修改为占用状态,然后将修改后的三行信息分别写回Bitmap表对应的行中。
分别判断写回的三行信息中所有的比特位是否均为占用状态,如果均为占用状态,说明Bitmap表该行中所有比特位对应的缓存地址指针均被分配占用,该行地址不应继续存储在行空闲指示FIFO中,将行空闲指示FIFO的“FIFO读地址”加一,指向下一个有效的行地址索引;如果写回的行信息中仍然包含有未占用状态的比特位,则说明Bitmap表该行中至少包含一个未占用状态的比特位,该行地址仍应存储在行空闲指示FIFO中,不对行空闲指示FIFO的“FIFO读地址”进行操作,该行地址仍然存储在行空闲指示FIFO中。
从上述对图10的描述过程中可明显看出,本发明能够实现平均每2个时钟周期分配一个空闲缓存地址指针,可以满足每2个时钟周期分配一个缓存地址指针的设计需要,在消耗资源较少的情况下,最大程度的提高了缓存地址指针的分配效率,提高了缓存的管理能力。
上述实施例中,是以FIFO队列存储空闲区域的地址进行描述的,空闲区域的地址同样可以存储在堆栈中。当使用堆栈来实现缓存管理时,其实现原理及过程与上述描述基本相同,在本实施例中不再详细描述。
上述实施例中,Bitmap表是以2n行进行描述的,Bitmap表也可以为n行,其中n为正整数,这样,Bitmap表应划分为n个区域,而FIFO队列的宽度m为:当log2 n为整数时,m=log2 n;当log2 n不为整数时,m=(int(log2 n)+1),其他实现过程与上述描述基本相同,在本实施例中不再详细描述。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化。
Claims (10)
1、一种基于bitmap表的缓存管理方法,其特征在于包括:
a、将bitmap表划分为若干个至少包括1比特位的区域;
b、分别根据各区域中的比特位的未占用状态确定并记录各区域的空闲状态;
c、根据所述记录的各区域的空闲状态对缓存地址指针进行管理。
2、如权利要求1所述的一种基于bitmap表的缓存管理方法,其特征在于所述步骤a包括:
以bitmap表的行为单位将所述bitmap表划分为若干个区域。
3、如权利要求1或2所述的一种基于bitmap表的缓存管理方法,其特征在于所述步骤b包括:
b1、确定所述各区域的地址;
b2、将至少包含有预定个数的未占用状态的比特位的区域确定为空闲区域;
b3、存储所述空闲区域的地址。
4、如权利要求3所述的一种基于bitmap表的缓存管理方法,其特征在于:
设定所述bitmap表包括n行;
所述步骤a具体为:以所述bitmap表的一行为单位将所述bitmap表划分为n个区域;
其中:n为正整数;
且所述步骤b1具体为:
确定所述各区域的地址分别为:对应的bitmap表的行地址。
5、如权利要求3所述的一种基于bitmap表的缓存管理方法,其特征在于所述步骤b2具体为:
将至少包含有1个未占用状态的比特位的区域确定为空闲区域。
6、如权利要求3所述的一种基于bitmap表的缓存管理方法,其特征在于所述步骤b3包括:
将所述空闲区域的地址存储在先进先出队列或堆栈中。
7、如权利要求6所述的一种基于bitmap表的缓存管理方法,其特征在于:
设定所述bitmap表包括:n行;
且所述先进先出队列的深度为:n;
所述先进先出队列的宽度m为:当log2 n为整数时,m=log2 n;当log2 n不为整数时,m=(int(log2 n)+1);
其中:所述n、m为正整数;
所述先进先出队列的读地址指示先进先出队列中存储的下一个空闲区域的地址;
所述先进先出队列的写地址指示下一个空闲区域地址存储的先进先出队列的存储单元;
所述先进先出队列的初始状态为:存储各区域的地址的满状态。
8、如权利要求3所述的一种基于bitmap表的缓存管理方法,其特征在于所述步骤c进一步包括:
读取一个所述存储的空闲区域的地址;
根据所述读取的地址确定其对应的所述bitmap表的区域,并根据该区域中的未占用状态的比特位确定空闲缓存单元的缓存地址指针;
分配所述缓存地址指针,并将该缓存地址指针对应的bitmap表中的比特位设置为占用状态;
在确定该区域中包含的未占用状态的比特位没有达到预定个数时,将所述存储的该区域的地址删除。
9、如权利要求3所述的一种基于bitmap表的缓存管理方法,其特征在于所述步骤c包括:
将回收的缓存地址指针对应的bitmap表中的比特位设置为未占用状态;
在确定该区域中包含未占用状态的比特位达到预定个数,且该区域的地址没有存储时,存储该区域的地址。
10、如权利要求3所述的一种基于bitmap表的缓存管理方法,其特征在于所述方法还包括:
当同时需要分配和回收缓存地址指针时,将所述回收的缓存地址指针直接分配。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100001452A CN100449504C (zh) | 2005-01-05 | 2005-01-05 | 一种基于bitmap表的缓存管理方法 |
PCT/CN2005/002220 WO2006084417A1 (fr) | 2005-01-05 | 2005-12-16 | Méthode de gestion de tampon basée sur une table de bitmap |
US11/773,733 US7733892B2 (en) | 2005-01-05 | 2007-07-05 | Buffer management method based on a bitmap table |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100001452A CN100449504C (zh) | 2005-01-05 | 2005-01-05 | 一种基于bitmap表的缓存管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1819544A true CN1819544A (zh) | 2006-08-16 |
CN100449504C CN100449504C (zh) | 2009-01-07 |
Family
ID=36792892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100001452A Expired - Fee Related CN100449504C (zh) | 2005-01-05 | 2005-01-05 | 一种基于bitmap表的缓存管理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7733892B2 (zh) |
CN (1) | CN100449504C (zh) |
WO (1) | WO2006084417A1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101551736B (zh) * | 2009-05-20 | 2010-11-03 | 杭州华三通信技术有限公司 | 基于地址指针链表的缓存管理装置和方法 |
CN101488919B (zh) * | 2009-02-13 | 2011-07-06 | 华为技术有限公司 | 存储地址分配方法和装置 |
WO2011109968A1 (zh) * | 2010-03-10 | 2011-09-15 | 中兴通讯股份有限公司 | Pucch的无线资源分配方法及无线资源管理器 |
CN101848135B (zh) * | 2009-03-24 | 2011-12-28 | 华为技术有限公司 | 芯片的统计数据的管理方法和装置 |
CN102411543A (zh) * | 2011-11-21 | 2012-04-11 | 华为技术有限公司 | 缓存地址的处理方法和装置 |
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
WO2013155673A1 (zh) * | 2012-04-17 | 2013-10-24 | 中兴通讯股份有限公司 | 片内共享缓存的管理方法及装置 |
CN103605478A (zh) * | 2013-05-17 | 2014-02-26 | 华为技术有限公司 | 存储地址标示、配置方法和数据存取方法及*** |
CN103856445A (zh) * | 2012-11-30 | 2014-06-11 | 北京北广科技股份有限公司 | 基于udp的语音数据业务的数据传输方法、装置和*** |
CN104133784A (zh) * | 2014-07-24 | 2014-11-05 | 大唐移动通信设备有限公司 | 一种报文缓存管理方法与装置 |
CN109284234A (zh) * | 2018-09-05 | 2019-01-29 | 珠海昇生微电子有限责任公司 | 一种存储地址分配方法及*** |
CN112835834A (zh) * | 2019-11-25 | 2021-05-25 | 瑞昱半导体股份有限公司 | 数据传输*** |
CN115426081A (zh) * | 2022-08-11 | 2022-12-02 | 中国人民解放军战略支援部队信息工程大学 | 一种数据包的转发装置及方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10136384B1 (en) * | 2014-10-14 | 2018-11-20 | Altera Corporation | Methods and apparatus for performing buffer fill level controlled dynamic power scaling |
CN104484129A (zh) * | 2014-12-05 | 2015-04-01 | 盛科网络(苏州)有限公司 | 一读一写存储器、多读多写存储器及其读写方法 |
DE102015209486A1 (de) * | 2015-05-22 | 2016-11-24 | Robert Bosch Gmbh | FIFO Speicher mit im Betrieb veränderbarem Speicherbereich |
CN106250321B (zh) | 2016-07-28 | 2019-03-01 | 盛科网络(苏州)有限公司 | 2r1w存储器的数据处理方法及数据处理*** |
US11080255B2 (en) * | 2018-07-09 | 2021-08-03 | Oracle International Corporation | Space-efficient bookkeeping for database applications |
CN113535633A (zh) * | 2020-04-17 | 2021-10-22 | 深圳市中兴微电子技术有限公司 | 一种片上缓存装置和读写方法 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5005167A (en) * | 1989-02-03 | 1991-04-02 | Bell Communications Research, Inc. | Multicast packet switching method |
US5371885A (en) * | 1989-08-29 | 1994-12-06 | Microsoft Corporation | High performance file system |
US5068892A (en) * | 1989-10-31 | 1991-11-26 | At&T Bell Laboratories | Route based network management |
US5535197A (en) * | 1991-09-26 | 1996-07-09 | Ipc Information Systems, Inc. | Shared buffer switching module |
JPH07321815A (ja) * | 1994-05-24 | 1995-12-08 | Nec Corp | 共有バッファ型atmスイッチおよびその同報制御方法 |
US5659794A (en) * | 1995-03-31 | 1997-08-19 | Unisys Corporation | System architecture for improved network input/output processing |
US5781549A (en) * | 1996-02-23 | 1998-07-14 | Allied Telesyn International Corp. | Method and apparatus for switching data packets in a data network |
EP0859534A3 (en) * | 1997-02-12 | 1999-12-08 | Kabushiki Kaisha Toshiba | ATM switch |
US6175900B1 (en) * | 1998-02-09 | 2001-01-16 | Microsoft Corporation | Hierarchical bitmap-based memory manager |
JP3451424B2 (ja) * | 1998-03-13 | 2003-09-29 | 富士通株式会社 | 共通バッファメモリ制御装置 |
US6310875B1 (en) * | 1998-03-30 | 2001-10-30 | Nortel Networks Limited | Method and apparatus for port memory multicast common memory switches |
US6657959B1 (en) * | 1998-06-27 | 2003-12-02 | Intel Corporation | Systems and methods for implementing ABR with guaranteed MCR |
US7210001B2 (en) * | 1999-03-03 | 2007-04-24 | Adaptec, Inc. | Methods of and apparatus for efficient buffer cache utilization |
TW445730B (en) * | 1999-11-30 | 2001-07-11 | Via Tech Inc | Output queuing scheme for forwarding packets in sequence |
US6658437B1 (en) * | 2000-06-05 | 2003-12-02 | International Business Machines Corporation | System and method for data space allocation using optimized bit representation |
TW513635B (en) * | 2000-11-24 | 2002-12-11 | Ibm | Method and structure for variable-length frame support in a shared memory switch |
JP2002281080A (ja) * | 2001-03-19 | 2002-09-27 | Fujitsu Ltd | パケットスイッチ装置およびマルチキャスト送出方法 |
MXPA03011964A (es) * | 2001-07-05 | 2004-03-26 | Matsushita Electric Ind Co Ltd | Aparato, medio, metodo de grabacion y programa de computadora relacionado. |
US7031331B2 (en) * | 2001-08-15 | 2006-04-18 | Riverstone Networks, Inc. | Method and system for managing packets in a shared memory buffer that serves multiple output links |
JP3698079B2 (ja) * | 2001-08-22 | 2005-09-21 | 日本電気株式会社 | データ転送方法、データ転送装置及びプログラム |
US7417986B1 (en) * | 2001-09-04 | 2008-08-26 | Cisco Technology, Inc. | Shared buffer switch interface |
TW580619B (en) * | 2002-04-03 | 2004-03-21 | Via Tech Inc | Buffer control device and the management method |
US7003597B2 (en) * | 2003-07-09 | 2006-02-21 | International Business Machines Corporation | Dynamic reallocation of data stored in buffers based on packet size |
CN100440171C (zh) * | 2004-02-24 | 2008-12-03 | 中国科学院声学研究所 | 一种嵌入式环境下音像录放装置的文件组织管理方法 |
-
2005
- 2005-01-05 CN CNB2005100001452A patent/CN100449504C/zh not_active Expired - Fee Related
- 2005-12-16 WO PCT/CN2005/002220 patent/WO2006084417A1/zh active Application Filing
-
2007
- 2007-07-05 US US11/773,733 patent/US7733892B2/en active Active
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488919B (zh) * | 2009-02-13 | 2011-07-06 | 华为技术有限公司 | 存储地址分配方法和装置 |
US8281103B2 (en) | 2009-02-13 | 2012-10-02 | Huawei Technologies Co., Ltd. | Method and apparatus for allocating storage addresses |
CN101848135B (zh) * | 2009-03-24 | 2011-12-28 | 华为技术有限公司 | 芯片的统计数据的管理方法和装置 |
CN101551736B (zh) * | 2009-05-20 | 2010-11-03 | 杭州华三通信技术有限公司 | 基于地址指针链表的缓存管理装置和方法 |
US8499105B2 (en) | 2009-05-20 | 2013-07-30 | Hangzhou H3C Technologies Co., Ltd. | Buffer manager and buffer management method based on address pointer linked list |
US8737331B2 (en) | 2010-03-10 | 2014-05-27 | Zte Corporation | Method for allocating radio resources of a PUCCH and radio resource manager |
WO2011109968A1 (zh) * | 2010-03-10 | 2011-09-15 | 中兴通讯股份有限公司 | Pucch的无线资源分配方法及无线资源管理器 |
CN102411543A (zh) * | 2011-11-21 | 2012-04-11 | 华为技术有限公司 | 缓存地址的处理方法和装置 |
CN102411543B (zh) * | 2011-11-21 | 2014-12-03 | 华为技术有限公司 | 缓存地址的处理方法和装置 |
WO2013155673A1 (zh) * | 2012-04-17 | 2013-10-24 | 中兴通讯股份有限公司 | 片内共享缓存的管理方法及装置 |
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
US9880937B2 (en) | 2012-05-02 | 2018-01-30 | Huawei Technologies Co., Ltd. | Dynamic set associative cache apparatus for processor and access method thereof |
CN103856445A (zh) * | 2012-11-30 | 2014-06-11 | 北京北广科技股份有限公司 | 基于udp的语音数据业务的数据传输方法、装置和*** |
CN103856445B (zh) * | 2012-11-30 | 2018-10-16 | 北京北广科技股份有限公司 | 基于udp的语音数据业务的数据传输方法、装置和*** |
CN103605478A (zh) * | 2013-05-17 | 2014-02-26 | 华为技术有限公司 | 存储地址标示、配置方法和数据存取方法及*** |
CN103605478B (zh) * | 2013-05-17 | 2016-12-28 | 华为技术有限公司 | 存储地址标示、配置方法和数据存取方法及*** |
CN104133784A (zh) * | 2014-07-24 | 2014-11-05 | 大唐移动通信设备有限公司 | 一种报文缓存管理方法与装置 |
CN104133784B (zh) * | 2014-07-24 | 2017-08-29 | 大唐移动通信设备有限公司 | 一种报文缓存管理方法与装置 |
CN109284234A (zh) * | 2018-09-05 | 2019-01-29 | 珠海昇生微电子有限责任公司 | 一种存储地址分配方法及*** |
CN109284234B (zh) * | 2018-09-05 | 2020-12-04 | 珠海昇生微电子有限责任公司 | 一种存储地址分配方法及*** |
CN112835834A (zh) * | 2019-11-25 | 2021-05-25 | 瑞昱半导体股份有限公司 | 数据传输*** |
CN112835834B (zh) * | 2019-11-25 | 2024-03-19 | 瑞昱半导体股份有限公司 | 数据传输*** |
CN115426081A (zh) * | 2022-08-11 | 2022-12-02 | 中国人民解放军战略支援部队信息工程大学 | 一种数据包的转发装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
US20070274303A1 (en) | 2007-11-29 |
WO2006084417A1 (fr) | 2006-08-17 |
US7733892B2 (en) | 2010-06-08 |
CN100449504C (zh) | 2009-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1819544A (zh) | 一种基于bitmap表的缓存管理方法 | |
CN1099678C (zh) | 非易失性半导体磁盘装置 | |
CN1306420C (zh) | 利用永久历史页表数据预取数据到高速缓存的装置和方法 | |
CN1295622C (zh) | 地址映射方法和映射信息管理方法及其闪速存储器 | |
CN1311363C (zh) | 生成内容地址的数据处理方法和可内容寻址的存储*** | |
CN105205009B (zh) | 一种基于大容量固态存储的地址映射方法及装置 | |
CN1154928C (zh) | 用于多任务设施信息处理***的资源管理方法和设备 | |
US8537613B2 (en) | Multi-layer memory system | |
CN1242330C (zh) | 执行并飞“异或”运算的方法和*** | |
CN1277226C (zh) | 分布式共享内存***数据维护方法 | |
CN1940922A (zh) | 一种提高搜索信息速度的方法及*** | |
CN1664790A (zh) | 增加数据存储容量的方法和装置 | |
CN1929451A (zh) | 一种解决Hash冲突的方法及装置 | |
CN1855881A (zh) | 动态共享存储器存储空间的实现方法 | |
CN1652253A (zh) | 存储卡和半导体器件 | |
CN1311366C (zh) | 快闪存储器的平行双轨使用方法 | |
CN1991791A (zh) | 使用非易失性存储器作为高速缓存的存储设备及运行方法 | |
CN106681668A (zh) | 一种基于固态盘缓存的混合式存储***及存储方法 | |
WO2013112124A1 (en) | Managing addressable memory in heterogeneous multicore processors | |
CN101079015A (zh) | 数据传送方法及*** | |
CN1719422A (zh) | 一种存储器文件数据虚拟存取方法 | |
CN1845093A (zh) | 一种属性可扩展的对象文件*** | |
CN1262934C (zh) | 具有不同资源访问方案的***集成代理程序 | |
CN101030173A (zh) | 地址转换设备 | |
CN1652088A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090107 Termination date: 20220105 |
|
CF01 | Termination of patent right due to non-payment of annual fee |