CN103699497A - 一种缓存分配方法及装置 - Google Patents
一种缓存分配方法及装置 Download PDFInfo
- Publication number
- CN103699497A CN103699497A CN201310710756.0A CN201310710756A CN103699497A CN 103699497 A CN103699497 A CN 103699497A CN 201310710756 A CN201310710756 A CN 201310710756A CN 103699497 A CN103699497 A CN 103699497A
- Authority
- CN
- China
- Prior art keywords
- sub
- cache blocks
- length
- preset length
- cache
- 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
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000007599 discharging Methods 0.000 claims description 21
- 230000006399 behavior Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供了一种缓存分配方法及装置,从不同预设长度中,确定长度不小于需要分配的缓存长度的预设长度,并从确定的预设长度中,确定长度最小的预设长度;从配置的各子缓存块中,确定最小的预设长度对应的且使用状态为空闲的子缓存块,并将确定的空闲子缓存块进行分配,其中,各子缓存块为基于所述不同预设长度,分别将同一缓存块划分为多个长度相等的子缓存块。与现有技术中,无论需要分配的缓存是大还是小均分配固定大小的子缓存块相比,提高了对缓存的利用率,使得对缓存块的划分和分配更加合理。本发明涉及计算机技术领域。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种缓存分配方法及装置。
背景技术
缓存的管理和分配在计算机编程领域、网络通信领域等领域中都有很广泛的应用。因为在很多情况下都需要对一些临时数据进行临时存储,例如,一个程序的运行需要为该程序分配缓存,从计算机网络上接收到数据包需要为该数据包分配缓存。现有技术中,对缓存管理和分配的方法主要有如下几种:
第一种,基于先进先出队列的缓存管理方法。在该方法中,将缓存块划分成固定长度的子缓存块,用一个队列来保存各个空闲的子缓存块的地址,当需要分配子缓存块时,从队列的队列头取出一个子缓存块地址,将该子缓存块进行分配,当子缓存块被释放之后,即该子缓存块的状态又变为空闲,将该子缓存块的址插入到队列的队尾。
第二种,基于位图的缓存管理方法。在该方法中,将缓存块划分成多个缓存区间,每个缓存区间包括多个固定长度的子缓存块,针对每个缓存区间,使用一个一维位图的各个比特位表征该缓存区间中各个子缓存块的状态,例如,当位图的某比特位为1时,表征该比特位对应的子缓存块的状态为被占用,当位图某比特位为0时,表征该比特位对应的子缓存块的状态为空闲。为每个缓存区间分配一块内存,对该缓存区间中的各个子缓存块进行管理,例如,该缓存区间中各子缓存块的大小、地址范围等。
以接收到网络传输的数据包,为该数据包分配子缓存块为例,当接收到数据包,为该数据包分配子缓存块时,为该数据包分配长度相同的子缓存块,当接收到的数据包小于子缓存块的长度,为小数据包分配大子缓存块,降低了缓存的利用率,当接收到的数据包大于子缓存块的大小,将由于无子缓存块可为数据包分配而导致数据包丢失。
发明内容
本发明实施例提供了一种缓存分配方法及装置,用以解决现有技术中对缓存块的划分以及分配不合理的问题。
基于上述问题,本发明实施例提供的一种缓存分配方法,包括:
从不同预设长度中,确定长度不小于需要分配的缓存长度的预设长度,并从确定的预设长度中,确定长度最小的预设长度;
从配置的各子缓存块中,确定所述最小的预设长度对应的且使用状态为空闲的子缓存块,并将确定的空闲子缓存块进行分配,其中,所述各子缓存块为基于所述不同预设长度,分别将同一缓存块划分为多个长度相等的子缓存块。
本发明实施例提供的一种缓存分配装置,包括:
第一确定模块,用于从不同预设长度中,确定长度不小于需要分配的缓存长度的预设长度,并从确定的预设长度中,确定长度最小的预设长度;
第二确定模块,用于从配置的各子缓存块中,确定所述最小的预设长度对应的且使用状态为空闲的子缓存块;
分配模块,用于将所述第二确定模块确定的空闲子缓存块进行分配,其中,所述各子缓存块为基于所述不同预设长度,分别将同一缓存块划分为多个长度相等的子缓存块。
本发明实施例的有益效果包括:
本发明实施例提供的一种缓存分配方法及装置,从不同预设长度中,确定长度不小于需要分配的缓存长度的预设长度,并从确定的预设长度中,确定长度最小的预设长度;从配置的各子缓存块中,确定最小的预设长度对应的且使用状态为空闲的子缓存块,并将确定的空闲子缓存块进行分配,其中,各子缓存块为基于所述不同预设长度,分别将同一缓存块划分为多个长度相等的子缓存块。针对不同的预设长度,每种预设长度对应一种缓存划分方式,在不同的划分方式中,划分的子缓存块具有不同的长度,在接收到缓存分配请求时,可以根据需要分配的缓存长度,从所有不小于该需要分配的缓存长度的各预设长度中,确定最小的预设长度;从针对该最小的预设长度划分的多个子缓存块所中确定一个使用状态为空闲的子缓存块,并将该子缓存块进行分配。这样,能够根据需要分配的缓存块的大小选择合适的子缓存块进行分配,与现有技术中,无论需要分配的缓存是大还是小均分配固定大小的子缓存块相比,提高了对缓存的利用率,使得对缓存块的划分和分配更加合理。
附图说明
图1为本发明实施例提供的一种缓存分配方法的流程图;
图2为本发明实施例1提供的一种缓存分配方法的流程图;
图3a-3f为本发明实施例提供的缓存分配示意图;
图4为本发明实施例2提供的一种缓存分配方法的流程图;
图5为本发明实施例3提供的一种缓存分配方法的流程图;
图6为本发明实施例4提供的一种缓存分配方法的流程图;
图7为本发明实施例提供的一种缓存分配装置的结构示意图。
具体实施方式
本发明实施例提供了一种缓存分配方法及装置,以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明实施例提供一种缓存分配方法,如图1所示,包括:
S101、从不同预设长度中,确定长度不小于需要分配的缓存长度的预设长度。
S102、从确定的预设长度中,确定长度最小的预设长度。
S103、从配置的各子缓存块中,确定S102中确定的最小的预设长度对应的且使用状态为空闲的子缓存块,并将确定的空闲子缓存块进行分配,其中,配置的各子缓存块为基于不同预设长度,分别将同一缓存块划分为多个长度相等的子缓存块。
进一步地,上述步骤S102中,从所有不小于需要分配的缓存长度的各预设长度中,确定最小的预设长度,能够从待分配的子缓存块中确定出长度不小于需要分配的缓存长度,并且长度最接近需要分配的缓存长度的子缓存块。使得缓存的利用率高。
进一步地,上述步骤S103中,可以预先设置多个不同的预设长度,每种预设长度对应一种划分方式,针对每种划分方式,将同一缓存块划分为多个长度相等的子缓存块,每个子缓存块的长度为该划分方式对应的预设长度。
下面结合附图,用具体实施例对本发明提供的方法及装置进行详细描述。
实施例1:
本发明实施例1提供了一种缓存分配方法,如图2所述,具体包括:
S201、从不同预设长度中,确定长度不小于需要分配的缓存长度的预设长度。
S202、从确定的预设长度中,确定长度最小的预设长度。
S203、根据基于S202中确定的长度最小的预设长度划分的各子缓存块所对应的二维比特图中表征各子缓存块使用状态的比特值,确定一个使用状态为空闲的子缓存块,其中,二维比特图为分别为基于不同预设长度划分的各子缓存块建立的对应的二维比特图,并且,二维比特图中的各比特位与该二维比特图所对应的各子缓存块一一对应,二维比特图中的比特位的比特值表征与该比特位对应的子缓存块的使用状态,且该比特位在二维比特图中的行号和列号之间的数值关系,用于表征与该比特位对应的子缓存块的相对地址。
进一步地,本步骤中,针对每个预设长度,为针对该预设长度划分的多个子缓存块建立对应的二维比特图,该二维比特图中的各个比特位与针对该预设长度划分的各个子缓存块一一对应,也就是说,该二维比特图的总行数与总列数的乘积为针对该预设长度划分的子缓存块的个数,且该二维比特图中的每个比特位对应一个该预设长度的子缓存块。
S204、根据S203中确定的空闲子缓存块对应的比特位在二维比特图中的行号和列号,确定该空闲子缓存块的地址,并将该空闲子缓存块进行分配。
进一步地,针对每个二维比特图,设该二维比特图的起始行为第0行,起始列为第0列,则位于第i行第j列的比特位表征的与该比特位对应的子缓存块的相对地址addij由下式确定:
addij=(i×X+j)×z;
其中,i、j均为非负整数,X表征该二维比特图的总列数,z表征与该二维比特图对应的各子缓存块的长度。
下面以一个具体的例子对本发明实施例1提供的子缓存块相对地址确定方法进行说明。
假设缓存块大小为4M,预设长度分别为128字节、256字节、512字节、1024字节和2048字节。针对上述不同预设长度中的每个预设长度,分别将该4M的缓存块划分为多个长度相等的子缓存块,也就是说,针对预设长度128字节,可以将该4M的缓存划分为32K(4M/128字节=32K)个长度相等的子缓存块,每个子缓存块的大小为128字节;针对预设长度256字节,可以将4M的缓存划分为16K(4M/256字节=16K)个长度相等的子缓存块,每个子缓存块的大小为256字节;针对预设长度512字节,可以将4M的缓存划分为8K(4M/512字节=8K)个长度相等的子缓存块,每个子缓存块的大小为512字节;针对预设长度1024字节,可以将4M的缓存划分为4K(4M/1024字节=4K)个长度相等的子缓存块,每个子缓存块的大小为1024字节;针对预设长度2048字节,可以将4M的缓存划分为2K(4M/2048字节=2K)个长度相等的子缓存块,每个子缓存块的大小为2048字节。
针对每个预设长度,为针对该预设长度划分的多个子缓存块建立对应的二维比特图,该二维比特图的总行数与总列数的乘积等于针对该预设长度划分的子缓存块的个数,且该二维比特图中的每个比特位与具有该预设长度的子缓存块一一对应。以预设长度为128字节为例,可以将4M的缓存划分为128×256的二维比特图,如图3a所示,该二维比特图的总行数为256(第0行~第255行),总列数为128(第0列~第127列)。在该比特图中,有128×256=32k个比特位,与将4M的缓存划分成32K个长度为128字节的子缓存块的划分方式中,得到的子缓存块的个数相等,并且该二维比特图中的比特位与划分的子缓存块一一对应,每一个比特位表征一个长度为128字节的子缓存块。且该二维比特图中,每个比特位的比特值表征该比特位对应的子缓存块的当前使用状态,例如,可以用1表征该比特位对应的子缓存块的当前状态为被占用,可以用0表征该比特位对应的子缓存块的当前状态为空闲。
同理,针对预设长度256字节,可以将4M的缓存划分为64×256的二维比特图,如图3b所示,该二维比特图的总行数为256(第0行~第255行),总列数为64(第0列~第63列);针对预设长度512字节,可以将4M的缓存划分为32×256的二维比特图,如图3c所示,该二维比特图的总行数为256(第0行~第255行),总列数为32(第0列~第31列);针对预设长度1024字节,可以将4M的缓存划分为16×256的二维比特图,如图3d所示,该二维比特图的总行数为256(第0行~第255行),总列数为16(第0列~第15列);针对预设长度2048字节,可以将4M的缓存划分为8×256的二维比特图,如图3e所示,该二维比特图的总行数为256(第0行~第255行),总列数为8(第0列~第7列)。进一步地,在针对某预设长度划分的多个子缓存块,确定对应的二维比特图时,该二维比特图的总行数和总列数只要满足总行数与总列数的乘积等于针对该预设长度划分的子缓存块的个数即可,不一定按照本实施例的划分方式,本实施例只是举例说明。
下面介绍如何根据二维比特图中的每个比特位在该二维比特图中的行号和列号之间的数值关系,确定该比特位对应的子缓存块的相对地址。下面以图3a中,针对预设长度为128字节,将4M的缓存划分为128×256的二维比特图为例。根据本发明实施例提出的位于第i行第j列的比特位表征的与该比特位对应的子缓存块的相对地址addij由下式确定:addij=(i×X+j)×z;其中,i、j均为非负整数,X表征该二维比特图的总列数,z表征与该二维比特图对应的预设长度。针对图3a中,位于第0行,第1列的比特位,i=0,j=1,X=128,z=128,则该比特位对应的子缓存块的相对地址为:add01=(0×128+1)×128=128,即该子缓存块的相对地址为0x128;针对图3a中,位于第1行,第2列的比特位,i=1,j=2,X=128,z=128,则该比特位对应的子缓存块的相对地址为:add12=(1×128+2)×128=16640,即该子缓存块的相对地址为0x16640。
进一步地,因为计算机中,缓存的地址由二进制表示,在二进制中,乘法操作相当于向左移位,也就是说,二进制数左移1位相当于将该二进制数的数值乘以2,那么,本发明实施例提出的根据二维比特图中的每个比特位在该二维比特图中的行号和列号之间的数值关系,确定该比特位对应的子缓存块的相对地址的方法,还可以通过移位的方式实现,即:
针对每个二维比特图,设该二维比特图的总行数、总列数、以及与该二维比特图对应的各子缓存块的长度均可以表示为2n,n为非负整数,且该二维比特图的起始行为第0行,起始列为第0列,则位于第i行第j列的比特位对应的子缓存块的相对地址addij由下式确定:
addij=(i<<log2X+j)<<log2z;
其中,i、j均为非负整数,X表征该二维比特图的总列数,z表征与该二维比特图对应的各子缓存块的长度,<<为向左移位运算符,运算规则为将二进制数向左平移,例如:i<<log2X表征将二进制数i向左平移log2X位,i左移之后移出的低log2X位补0。
下面以图3a中,针对预设长度为128字节,将4M的缓存划分为128×256的二维比特图为例。针对图3a中,位于第0行,第1列的比特位,i=0,j=1,X=128,z=128,则该比特位对应的子缓存块的相对地址为:add01=(0<<log2128+1)<<log2128=128,即该子缓存块的相对地址为0x128;针对图3a中,位于第1行,第2列的比特位,i=1,j=2,X=128,z=128,则该比特位对应的子缓存块的相对地址为:add12=(1<<log2128+2)<<log2128=16640,即该子缓存块的相对地址为0x16640。
进一步地,针对每个二维比特图中的每个比特位,与该比特位对应的子缓存块的绝对地址为该缓存块的绝对起始地址与该子缓存块的相对地址的和。也就是说,本发明实施例提供的根据二维比特图中的每个比特位在该二维比特图中的行号和列号之间的数值关系,确定的该比特位对应的子缓存块的相对地址,为该子缓存块的相对位于第0行第0列的比特位对应的子缓存块的相对地址的起始相对地址,该子缓存块的绝对起始地址为该子缓存块的相对地址与被划分的缓存块的绝对起始地址的和。
进一步地,本发明实施例提供的根据二维比特图中的每个比特位在该二维比特图中的行号和列号之间的数值关系,确定该比特位对应的子缓存块的相对地址的方法,设置二维比特图的起始行为第0行,起始列为第0列,使得位于第0行,第0列的比特位对应的子缓存块的相对地址为0,这样可以便于将缓存块划分为的子缓存块的绝对地址的计算,对于起始行和起始列设置为非0,并采用本发明的思想确定子缓存块的相对地址方法也属于本发明的保护范围。
进一步地,为了便于实现本发明提供的一种缓存划分方法,可以将不同预设长度作为二维比特图的第三维,如图3f所示,使得本发明实施例提供的缓存划分方法可以作为基于三维比特图的缓存划分方法。当接收到分配缓存的请求时,可以根据请求分配的缓存大小查找三维比特图的第三维,再根据确定的第三维的预设长度对应的二维比特图查找空闲的子缓存块进行分配。
实施例2:
本发明实施例2中,提供了一种缓存分配方法,如图4所示,包括如下步骤:
S401、从不同预设长度中,确定长度不小于需要分配的缓存长度的预设长度。
S402、从确定的预设长度中,确定长度最小的预设长度。
S403、从配置的各子缓存块中,确定S402中确定的最小的预设长度对应的且使用状态为空闲的子缓存块,并将确定的空闲子缓存块进行分配。
S404、将分配的子缓存块的使用状态更新为被占用。
S405、从基于各第一预设长度划分的各子缓存块中,确定与分配的子缓存块具有如下位置关系之一的第一子缓存块,其中,第一预设长度为所有预设长度中除S402中确定的最小的预设长度之外的各预设长度:
该第一子缓存块的全部与S403分配的子缓存块的部分具有重叠位置关系、该第一子缓存块的部分与S403分配的子缓存块的全部具有重叠位置关系、该第一子缓存块的部分与S403分配的子缓存块的部分具有重叠位置关系。
本步骤中,由于针对多个预设长度对缓存块进行不同方式的划分时,针对的是同一块缓存,因此,当将针对某一个预设长度划分的多个子缓存块中的某个子缓存块分配之后,被划分的缓存块对应于该子缓存块的部分被占用,那么在其他划分方式中,与该被占用子缓存块有重叠部分的子缓存块也相当于被占用,不能再进行分配了。下面以图3a和图3b中的两种划分子缓存块的方式举例说明:
在图3a中,针对128×256的二维比特图,位于该二维比特图第0行第0列的比特位对应的子缓存块长度为128字节,在图3b中,针对64×256的二维比特图,位于该二维比特图第0行第0列的比特位对应的子缓存块长度为256字节,当位于128×256的二维比特图的第0行第0列的比特位对应的子缓存块占用时,位于64×256的二维比特图的第0行第0列的比特位对应的子缓存块的部分被占用,那么该64×256的二维比特图的第0行第0列的比特位对应的子缓存块应该被标记为被占用;当位于64×256的二维比特图的第0行第0列的比特位对应的子缓存块被占用时,位于128×256的二维比特图的第0行第0列的比特位对应的子缓存块、以及位于128×256的二维比特图的第0行第1列的比特位对应的子缓存块均被占用,那么该位于128×256的二维比特图的第0行第0列的比特位对应的子缓存块、以及位于128×256的二维比特图的第0行第1列的比特位对应的子缓存块均应标记为被占用。
S406、当确定的第一子缓存块的当前使用状态为空闲时,将该确定的第一子缓存块的使用状态更新为被占用。
例如,在图3a中,针对128×256的二维比特图,位于该二维比特图第0行第0列的比特位对应的子缓存块被占用时,在图3b中,针对64×256的二维比特图,位于该二维比特图第0行第0列的比特位对应的子缓存块被标记为被占用,当位于128×256的二维比特图的第0行第1列的比特位对应的子缓存块被占用时,尽管该子缓存块与位于64×256的二维比特图的第0行第0列的比特位对应的子缓存块重叠,但是位于64×256的二维比特图的第0行第0列的比特位对应的子缓存块已经被标记为被占用,就不需要再次标记了。
实施例3:
本发明实施例3中,提供了一种缓存分配方法,如图5所示,包括如下步骤:
S501、从不同预设长度中,确定长度不小于需要分配的缓存长度的预设长度。
S502、从确定的预设长度中,确定长度最小的预设长度。
S503、从配置的各子缓存块中,确定S502中确定的最小的预设长度对应的且使用状态为空闲的子缓存块,并将确定的空闲子缓存块进行分配。
S504、将分配的子缓存块的使用状态更新为被占用。
S505、从基于各第一预设长度划分的各子缓存块中,确定与分配的子缓存块具有如下位置关系之一的第一子缓存块,其中,第一预设长度为所有预设长度中除S502中确定的最小的预设长度之外的各预设长度:
该第一子缓存块的全部与S503分配的子缓存块的部分具有重叠位置关系、该第一子缓存块的部分与S503分配的子缓存块的全部具有重叠位置关系、该第一子缓存块的部分与S503分配的子缓存块的部分具有重叠位置关系。
S506、当确定的第一子缓存块的当前使用状态为空闲时,将该确定的第一子缓存块的使用状态更新为被占用。
S507、将用于为该确定的第一子缓存块进行占用计数的计数器的数值增加一个计数单位。
本步骤中,可以为每个子缓存块设置占用计数器,当需要将该子缓存块标记为被占用时,不论此时该子缓存块是否已经被标记为被占用,均为计数器的数值增加一个计数单位。
进一步地,本步骤S506与步骤S507的执行没有严格的先后顺序。
S508、当任一子缓存块被释放时,将该释放子缓存块的使用状态更新为空闲。
S509、从基于各第二预设长度划分的各子缓存块中,确定与该释放子缓存块具有如下位置关系之一的第二子缓存块,其中,第二预设长度为所有预设长度中除该释放子缓存块的长度之外的各预设长度:
该第二子缓存块的全部与该释放子缓存块的部分具有重叠位置关系、该第二子缓存块的部分与该释放子缓存块的全部具有重叠位置关系、该第二子缓存块的部分与该释放子缓存块的部分具有重叠位置关系。
S510、将用于为该第二子缓存块进行占用计数的计数器的数值减小一个计数单位。
S511、当用于为该第二子缓存块进行占用计数的计数器的数值为零时,将该第二子缓存块的使用状态更新为空闲。
本实施例中,由于针对多个预设长度对缓存块进行不同方式的划分时,针对的是同一块缓存,因此,当将针对某一个预设长度划分的多个子缓存块中的某个被占用的子缓存块被释放之后,在其他划分方式中,与该被占用子缓存块有重叠部分的子缓存块也相当于被释放。下面以图3a和图3b中的两种划分子缓存块的方式举例说明:
在图3a中,针对128×256的二维比特图,位于该二维比特图第0行第0列的比特位对应的子缓存块长度为128字节,位于该二维比特图第0行第1列的比特位对应的子缓存块长度为128字节,在图3b中,针对64×256的二维比特图,位于该二维比特图第0行第0列的比特位对应的子缓存块长度为256字节,与位于128×256的二维比特图第0行第0列的比特位对应的子缓存块以及第0行第1列的比特位对应的子缓存块重叠。
当位于128×256的二维比特图的第0行第0列的比特位对应的子缓存块占用时,该子缓存块对应的占用计数器数值加一个计数单位,位于64×256的二维比特图的第0行第0列的比特位对应的子缓存块的部分被占用,那么该64×256的二维比特图的第0行第0列的比特位对应的子缓存块应该被标记为被占用,且该子缓存块对应的占用计数器数值加一个计数单位;当位于128×256的二维比特图的第0行第1列的比特位对应的子缓存块占用时,该子缓存块对应的占用计数器数值加一个计数单位,位于64×256的二维比特图的第0行第0列的比特位对应的子缓存块的另一部分被占用,由于该64×256的二维比特图的第0行第0列的比特位对应的子缓存块已经被标记为被占用,则将该子缓存块对应的占用计数器数再增加一个计数单位,此时该64×256的二维比特图的第0行第0列的比特位对应的子缓存块对应的占用计数器数值为两个计数单位;当位于128×256的二维比特图的第0行第0列的比特位对应的子缓存块、以及位于128×256的二维比特图的第0行第1列的比特位对应的子缓存块均被释放时,那么该位于64×256的二维比特图的第0行第0列的比特位对应的子缓存块对应的占用计数器才能被清零,才能将该位于64×256的二维比特图的第0行第0列的比特位对应的子缓存块标记为空闲。
实施例4:
本发明实施例4中,提供了一种缓存分配方法,本实施例中预设长度均为2的正整数次幂,如图6所示,包括如下步骤:
S601、从不同预设长度中,确定长度不小于需要分配的缓存长度的预设长度。
S602、从确定的预设长度中,确定长度最小的预设长度。
S603、从配置的各子缓存块中,确定S602中确定的最小的预设长度对应的且使用状态为空闲的子缓存块,并将确定的空闲子缓存块进行分配。
S604、当任一子缓存块被释放时,将该释放子缓存块的使用状态更新为空闲。
S605、从基于各第三预设长度划分的各子缓存块中,将子缓存块的全部与该释放子缓存块的部分具有重叠位置关系的子缓存块的使用状态更新为空闲,其中,第三预设长度为所有预设长度中长度小于该释放子缓存块的长度的各预设长度。
本步骤中,当一个子缓存块被释放,可以将其他划分方式中,长度小于该子缓存块且位置关系为完全与该子缓存块重叠的子缓存块释放,而对于长度大于该子缓存块且位置关系为部分与该子缓存块重叠的子缓存块,或者长度小于该子缓存块且位置关系为部分与该子缓存块重叠的子缓存块,还需要进一步确定这些子缓存块不与该子缓存块重叠的部分的使用状态。
下面以图3a、图3b和图3c中的三种划分子缓存块的方式举例说明:
假设在图3a中,针对128×256的二维比特图,位于该二维比特图第0行第0列的比特位对应的子缓存块、以及位于该二维比特图第0行第1列的比特位对应的子缓存块被占用,在图3b中,针对64×256的二维比特图,位于该二维比特图第0行第0列的比特位对应的子缓存块被占用,在图3c中,针对32×256的二维比特图,位于该二维比特图第0行第0列的比特位对应的子缓存块被占用。当位于64×256的二维比特图第0行第0列的比特位对应的子缓存块被释放时,将位于128×256的二维比特图第0行第0列的比特位对应的子缓存块、以及位于该二维比特图第0行第1列的比特位对应的子缓存块均标记为空闲。而位于32×256的二维比特图第0行第0列的比特位对应的子缓存块则不能马上标记为空闲,因为位于64×256的二维比特图第0行第0列的比特位对应的子缓存块仅与位于32×256的二维比特图第0行第0列的比特位对应的子缓存块的部分重叠,还需要确定与位于32×256的二维比特图第0行第0列的比特位对应的子缓存块另一部分重叠的子缓存块是为空闲。
S606、从基于各第四预设长度划分的各个子缓存块中,确定子缓存块的部分与该释放子缓存块的全部具有重叠位置关系的第三子缓存块,其中,第四预设长度为所有预设长度中长度大于该释放子缓存块的长度的各预设长度。
S607、针对每个第三子缓存块,从基于该释放子缓存块的长度划分的、除该释放子缓存块之外的各个子缓存块中,确定子缓存块的全部与该第三子缓存块的部分具有重叠位置关系的各第四子缓存块。
进一步地,本步骤可以具体实施为:确定第三子缓存块的长度与该释放子缓存块的长度的比值2n中的n的值,其中,n为不小于1的整数;
确定该释放子缓存块的相对位置;其中,根据下式确定任一子缓存块的相对位置posij:posij=i<<log2X+j;i、j分别为该任一子缓存块对应的比特位在二维比特图中的行数和列数,X为该任一子缓存块对应的比特位所在二维比特图的总列数,posij为二进制形式;
当该释放子缓存块的相对位置的后n位为全0时,则从基于该释放子缓存块的长度划分的、地址大于该释放子缓存块的各子缓存块中,依次确定各子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全1的子缓存块,将确定出的所有子缓存块确定为第四子缓存块;
当该释放子缓存块的相对位置的后n位为全1时,则从基于该释放子缓存块的长度划分的、地址小于该释放子缓存块的各子缓存块中,依次确定各子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全0的子缓存块,将确定出的所有子缓存块确定为第四子缓存块;
当该释放子缓存块的相对位置的后n位为非全0且非全1时,则从基于该释放子缓存块的长度划分的、地址大于该释放子缓存块的各子缓存块中,依次确定各子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全1的子缓存块,并从基于该释放子缓存块的长度划分的、地址小于该释放子缓存块的各子缓存块中,依次确定子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全0的子缓存块,将确定出的所有子缓存块确定为第四子缓存块。
本实施例中,当预设长度均为2的正整数次幂时,假设第一预设长度大于第二预设长度,第一预设长度对第二预设长度的倍数也为2的正整数次幂,即2n,n为正整数,并且第一预设长度的一个子缓存块,与第二预设长度的2n个子缓存块完全重叠,那么,第二预设长度的2n个子缓存块的地址与n有关。也就是说,第二预设长度的2n个子缓存块的地址是连续的,并且第二预设长度的2n个子缓存块的相对位置(也就是2n个子缓存块地址之间的差异部分)分别为:0到2n-1。
下面以图3a和图3c中的两种划分子缓存块的方式举例说明:
假设被释放的子缓存块为位于128×256的二维比特图第0行第0列的比特位对应的子缓存块,确定的一个第三子缓存块为位于32×256的二维比特图第0行第0列的比特位对应的子缓存块,确定第四子缓存块的过程如下:
位于32×256的二维比特图第0行第0列的比特位对应的子缓存块长度为512(29)字节,位于128×256的二维比特图第0行第0列的比特位对应的子缓存块长度为128(27)字节,确定29与27之间的比值为22,得到n=2,那么与位于32×256的二维比特图第0行第0列的比特位对应的子缓存块完全重叠的位于128×256的二维比特图中的子缓存块存在4个,并且4个地址连续子缓存块的相对位置以二进制表示分别为:00、01、10和11。
被释放位于128×256的二维比特图第0行第0列的比特位对应的子缓存块的相对位置为00,那么从地址大于该相对位置为00的子缓存块的子缓存块中将相对位置为01、10和11三个子缓存块,即位于128×256的二维比特图第0行第1列的比特位对应的子缓存块、128×256的二维比特图第0行第2列的比特位对应的子缓存块、以及128×256的二维比特图第0行第3列的比特位对应的子缓存块确定为第四子缓存块。
S608、当各第四子缓存块的使用状态均为空闲时,将该第三子缓存块的使用状态更新为空闲。
当位于128×256的二维比特图第0行第1列的比特位对应的子缓存块、128×256的二维比特图第0行第2列的比特位对应的子缓存块、以及128×256的二维比特图第0行第3列的比特位对应的子缓存块的使用状态均为空闲时,可以将第三子缓存块,也就是位于32×256的二维比特图第0行第0列的比特位对应的子缓存块的使用状态更新为空闲。
基于同一发明构思,本发明实施例还提供了一种缓存分配装置,由于这些装置所解决问题的原理与前述缓存分配方法相似,因此该装置的实施可以参见前述方法的实施,重复之处不再赘述。
本发明实施例提供了一种缓存分配装置,如图7所示,包括:
第一确定模块701,用于从不同预设长度中,确定长度不小于需要分配的缓存长度的预设长度,并从确定的预设长度中,确定长度最小的预设长度;
第二确定模块702,用于从配置的各子缓存块中,确定所述最小的预设长度对应的且使用状态为空闲的子缓存块;
分配模块703,用于将所述第二确定模块702确定的空闲子缓存块进行分配,其中,所述各子缓存块为基于所述不同预设长度,分别将同一缓存块划分为多个长度相等的子缓存块。
进一步地,所述第二确定模块702具体用于根据基于所述最小的预设长度划分的各子缓存块所对应的二维比特图中,表征各子缓存块使用状态的比特值,确定一个使用状态为空闲的子缓存块;其中,二维比特图为分别为基于所述不同预设长度划分的各子缓存块建立的对应的二维比特图,并且,二维比特图中的各比特位与该二维比特图所对应的各子缓存块一一对应,二维比特图中的比特位的比特值表征与该比特位对应的子缓存块的使用状态,且该比特位在二维比特图中的行号和列号之间的数值关系,用于表征与该比特位对应的子缓存块的相对地址;
所述分配模块703,具体用于根据确定的空闲子缓存块对应的比特位在二维比特图中的行号和列号,确定所述空闲子缓存块的地址,并将所述空闲子缓存块进行分配。
进一步地,所述装置还包括:状态更新模块704和第三确定模块705;
所述状态更新模块704,用于将所述空闲子缓存块进行分配之后,将分配的子缓存块的使用状态更新为被占用;当所述第三确定模块705确定的第一子缓存块的当前使用状态为空闲时,将该确定的第一子缓存块的使用状态更新为被占用;
所述第三确定模块705,用于从基于各第一预设长度划分的各子缓存块中,确定与所述分配的子缓存块具有如下位置关系之一的第一子缓存块,其中,所述第一预设长度为所有预设长度中除所述最小的预设长度之外的各预设长度:
该第一子缓存块的全部与所述分配的子缓存块的部分具有重叠位置关系、该第一子缓存块的部分与所述分配的子缓存块的全部具有重叠位置关系、该第一子缓存块的部分与所述分配的子缓存块的部分具有重叠位置关系。
进一步地,所述装置还包括:计数模块706和第四确定模块707;
所述计数模块706,用于将用于为该确定的第一子缓存块进行占用计数的计数器的数值增加一个计数单位;将用于为所述第四确定模块707确定的第二子缓存块进行占用计数的计数器的数值减小一个计数单位;
所述状态更新模块704,还用于当任一子缓存块被释放时,将该释放子缓存块的使用状态更新为空闲;当用于为所述第四确定模块确定的第二子缓存块进行占用计数的计数器的数值为零时,将该第二子缓存块的使用状态更新为空闲
所述第四确定模块707,用于从基于各第二预设长度划分的各子缓存块中,确定与该释放子缓存块具有如下位置关系之一的第二子缓存块,其中,所述第二预设长度为所有预设长度中除该释放子缓存块的长度之外的各预设长度:
该第二子缓存块的全部与该释放子缓存块的部分具有重叠位置关系、该第二子缓存块的部分与该释放子缓存块的全部具有重叠位置关系、该第二子缓存块的部分与该释放子缓存块的部分具有重叠位置关系。
进一步地,所述装置还包括:第五确定模块708;
所述状态更新模块704还用于当所述不同预设长度均为2的正整数次幂,且任一子缓存块被释放时,将该释放子缓存块的使用状态更新为空闲;从基于各第三预设长度划分的各子缓存块中,将子缓存块的全部与该释放子缓存块的部分具有重叠位置关系的子缓存块的使用状态更新为空闲,其中,所述第三预设长度为所有预设长度中长度小于该释放子缓存块的长度的各预设长度;当所述第五确定模块确定的所述各第四子缓存块的使用状态均为空闲时,将该第三子缓存块的使用状态更新为空闲;
所述第五确定模块708,用于从基于各第四预设长度划分的各个子缓存块中,确定子缓存块的部分与该释放子缓存块的全部具有重叠位置关系的第三子缓存块,其中,所述第四预设长度为所有预设长度中长度大于该释放子缓存块的长度的各预设长度;针对每个第三子缓存块,从基于该释放子缓存块的长度划分的、除该释放子缓存块之外的各个子缓存块中,确定子缓存块的全部与该第三子缓存块的部分具有重叠位置关系的各第四子缓存块。
进一步地,所述第五确定模块708具体用于确定所述第三子缓存块的长度与该释放子缓存块的长度的比值2n中的n的值,其中,n为不小于1的整数;确定该释放子缓存块的相对位置;其中,根据下式确定任一子缓存块的相对位置posij:posij=i<<log2X+j;i、j分别为该任一子缓存块对应的比特位在二维比特图中的行数和列数,X为该任一子缓存块对应的比特位所在二维比特图的总列数,posij为二进制形式;当该释放子缓存块的相对位置的后n位为全0时,则从基于该释放子缓存块的长度划分的、地址大于该释放子缓存块的各子缓存块中,依次确定各子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全1的子缓存块,将确定出的所有子缓存块确定为第四子缓存块;当该释放子缓存块的相对位置的后n位为全1时,则从基于该释放子缓存块的长度划分的、地址小于该释放子缓存块的各子缓存块中,依次确定各子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全0的子缓存块,将确定出的所有子缓存块确定为第四子缓存块;当该释放子缓存块的相对位置的后n位为非全0且非全1时,则从基于该释放子缓存块的长度划分的、地址大于该释放子缓存块的各子缓存块中,依次确定各子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全1的子缓存块,并从基于该释放子缓存块的长度划分的、地址小于该释放子缓存块的各子缓存块中,依次确定子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全0的子缓存块,将确定出的所有子缓存块确定为第四子缓存块。
上述各单元的功能可对应于图1至图2、图4至图6所示流程中的相应处理步骤,在此不再赘述。
本发明实施例提供的一种缓存分配方法及装置,从不同预设长度中,确定长度不小于需要分配的缓存长度的预设长度,并从确定的预设长度中,确定长度最小的预设长度;从配置的各子缓存块中,确定最小的预设长度对应的且使用状态为空闲的子缓存块,并将确定的空闲子缓存块进行分配,其中,各子缓存块为基于所述不同预设长度,分别将同一缓存块划分为多个长度相等的子缓存块。针对不同的预设长度,每种预设长度对应一种缓存划分方式,在不同的划分方式中,划分的子缓存块具有不同的长度,在接收到缓存分配请求时,可以根据需要分配的缓存长度,从所有不小于该需要分配的缓存长度的各预设长度中,确定最小的预设长度;从针对该最小的预设长度划分的多个子缓存块所中确定一个使用状态为空闲的子缓存块,并将该子缓存块进行分配。这样,能够根据需要分配的缓存块的大小选择合适的子缓存块进行分配,与现有技术中,无论需要分配的缓存是大还是小均分配固定大小的子缓存块相比,提高了对缓存的利用率,使得对缓存块的划分和分配更加合理。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明实施例可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (15)
1.一种缓存分配方法,其特征在于,包括:
从不同预设长度中,确定长度不小于需要分配的缓存长度的预设长度,并从确定的预设长度中,确定长度最小的预设长度;
从配置的各子缓存块中,确定所述最小的预设长度对应的且使用状态为空闲的子缓存块,并将确定的空闲子缓存块进行分配,其中,所述各子缓存块为基于所述不同预设长度,分别将同一缓存块划分为多个长度相等的子缓存块。
2.如权利要求1所述的方法,其特征在于,从配置的各子缓存块中,确定所述最小的预设长度对应的且使用状态为空闲的子缓存块,具体包括:
根据基于所述最小的预设长度划分的各子缓存块所对应的二维比特图中表征各子缓存块使用状态的比特值,确定一个使用状态为空闲的子缓存块;
其中,二维比特图为分别为基于所述不同预设长度划分的各子缓存块建立的对应的二维比特图,并且,二维比特图中的各比特位与该二维比特图所对应的各子缓存块一一对应,二维比特图中的比特位的比特值表征与该比特位对应的子缓存块的使用状态,且该比特位在二维比特图中的行号和列号之间的数值关系,用于表征与该比特位对应的子缓存块的相对地址;
将确定的空闲子缓存块进行分配,具体包括:
根据确定的空闲子缓存块对应的比特位在二维比特图中的行号和列号,确定所述空闲子缓存块的地址,并将所述空闲子缓存块进行分配。
3.如权利要求2所述的方法,其特征在于,针对每个二维比特图,设该二维比特图的起始行为第0行,起始列为第0列,则位于第i行第j列的比特位对应的子缓存块的相对地址addij由下式确定:
addij=(i×X+j)×z;
其中,i、j均为非负整数,X表征该二维比特图的总列数,z表征与该二维比特图对应的各子缓存块的长度。
4.如权利要求2所述的方法,其特征在于,针对每个二维比特图,设该二维比特图的总行数、总列数、以及与该二维比特图对应的各子缓存块的长度均表示为2n,n为非负整数,且该二维比特图的起始行为第0行,起始列为第0列,则位于第i行第j列的比特位对应的子缓存块的相对地址addij由下式确定:
addij=(i<<log2X+j)<<log2z;
其中,i、j均为非负整数,X表征该二维比特图的总列数,z表征与该二维比特图对应的各子缓存块的长度,<<为向左移位运算符。
5.如权利要求1-4任一项所述的方法,其特征在于,将所述空闲子缓存块进行分配之后,还包括:
将分配的子缓存块的使用状态更新为被占用;
从基于各第一预设长度划分的各子缓存块中,确定与所述分配的子缓存块具有如下位置关系之一的第一子缓存块,其中,所述第一预设长度为所有预设长度中除所述最小的预设长度之外的各预设长度:
该第一子缓存块的全部与所述分配的子缓存块的部分具有重叠位置关系、该第一子缓存块的部分与所述分配的子缓存块的全部具有重叠位置关系、该第一子缓存块的部分与所述分配的子缓存块的部分具有重叠位置关系;
当确定的第一子缓存块的当前使用状态为空闲时,将该确定的第一子缓存块的使用状态更新为被占用。
6.如权利要求5所述的方法,其特征在于,还包括:
将用于为该确定的第一子缓存块进行占用计数的计数器的数值增加一个计数单位;
当任一子缓存块被释放时,还包括:
将该释放子缓存块的使用状态更新为空闲;
从基于各第二预设长度划分的各子缓存块中,确定与该释放子缓存块具有如下位置关系之一的第二子缓存块,其中,所述第二预设长度为所有预设长度中除该释放子缓存块的长度之外的各预设长度:
该第二子缓存块的全部与该释放子缓存块的部分具有重叠位置关系、该第二子缓存块的部分与该释放子缓存块的全部具有重叠位置关系、该第二子缓存块的部分与该释放子缓存块的部分具有重叠位置关系;
将用于为该第二子缓存块进行占用计数的计数器的数值减小一个计数单位;
当用于为该第二子缓存块进行占用计数的计数器的数值为零时,将该第二子缓存块的使用状态更新为空闲。
7.如权利要求1-4任一项所述的方法,其特征在于,所述不同预设长度均为2的正整数次幂;
当任一子缓存块被释放时,还包括:
将该释放子缓存块的使用状态更新为空闲;
从基于各第三预设长度划分的各子缓存块中,将子缓存块的全部与该释放子缓存块的部分具有重叠位置关系的子缓存块的使用状态更新为空闲,其中,所述第三预设长度为所有预设长度中长度小于该释放子缓存块的长度的各预设长度;
从基于各第四预设长度划分的各个子缓存块中,确定子缓存块的部分与该释放子缓存块的全部具有重叠位置关系的第三子缓存块,其中,所述第四预设长度为所有预设长度中长度大于该释放子缓存块的长度的各预设长度;
针对每个第三子缓存块,从基于该释放子缓存块的长度划分的、除该释放子缓存块之外的各个子缓存块中,确定子缓存块的全部与该第三子缓存块的部分具有重叠位置关系的各第四子缓存块;并
当所述各第四子缓存块的使用状态均为空闲时,将该第三子缓存块的使用状态更新为空闲。
8.如权利要求7所述的方法,其特征在于,从基于该释放子缓存块的长度划分的、除该释放子缓存块之外的各个子缓存块中,确定子缓存块的全部与所述第三子缓存块的部分具有重叠位置关系的各第四子缓存块,具体包括:
确定所述第三子缓存块的长度与该释放子缓存块的长度的比值2n中的n的值,其中,n为不小于1的整数;
确定该释放子缓存块的相对位置;其中,根据下式确定任一子缓存块的相对位置posij:posij=i<<log2X+j;i、j分别为该任一子缓存块对应的比特位在二维比特图中的行数和列数,X为该任一子缓存块对应的比特位所在二维比特图的总列数,posij为二进制形式;
当该释放子缓存块的相对位置的后n位为全0时,则从基于该释放子缓存块的长度划分的、地址大于该释放子缓存块的各子缓存块中,依次确定各子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全1的子缓存块,将确定出的所有子缓存块确定为第四子缓存块;
当该释放子缓存块的相对位置的后n位为全1时,则从基于该释放子缓存块的长度划分的、地址小于该释放子缓存块的各子缓存块中,依次确定各子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全0的子缓存块,将确定出的所有子缓存块确定为第四子缓存块;
当该释放子缓存块的相对位置的后n位为非全0且非全1时,则从基于该释放子缓存块的长度划分的、地址大于该释放子缓存块的各子缓存块中,依次确定各子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全1的子缓存块,并从基于该释放子缓存块的长度划分的、地址小于该释放子缓存块的各子缓存块中,依次确定子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全0的子缓存块,将确定出的所有子缓存块确定为第四子缓存块。
9.如权利要求1-4任一项所述的方法,其特征在于,基于所述不同预设长度划分的各子缓存块的绝对地址分别为所述缓存块的绝对起始地址与该子缓存块的相对地址的和。
10.一种缓存分配装置,其特征在于,包括:
第一确定模块,用于从不同预设长度中,确定长度不小于需要分配的缓存长度的预设长度,并从确定的预设长度中,确定长度最小的预设长度;
第二确定模块,用于从配置的各子缓存块中,确定所述最小的预设长度对应的且使用状态为空闲的子缓存块;
分配模块,用于将所述第二确定模块确定的空闲子缓存块进行分配,其中,所述各子缓存块为基于所述不同预设长度,分别将同一缓存块划分为多个长度相等的子缓存块。
11.如权利要求10所述的装置,其特征在于,所述第二确定模块具体用于根据基于所述最小的预设长度划分的各子缓存块所对应的二维比特图中,表征各子缓存块使用状态的比特值,确定一个使用状态为空闲的子缓存块;其中,二维比特图为分别为基于所述不同预设长度划分的各子缓存块建立的对应的二维比特图,并且,二维比特图中的各比特位与该二维比特图所对应的各子缓存块一一对应,二维比特图中的比特位的比特值表征与该比特位对应的子缓存块的使用状态,且该比特位在二维比特图中的行号和列号之间的数值关系,用于表征与该比特位对应的子缓存块的相对地址;
所述分配模块,具体用于根据确定的空闲子缓存块对应的比特位在二维比特图中的行号和列号,确定所述空闲子缓存块的地址,并将所述空闲子缓存块进行分配。
12.如权利要求10-11任一项所述的装置,其特征在于,还包括:状态更新模块和第三确定模块;
所述状态更新模块,用于将所述空闲子缓存块进行分配之后,将分配的子缓存块的使用状态更新为被占用;当所述第三确定模块确定的第一子缓存块的当前使用状态为空闲时,将该确定的第一子缓存块的使用状态更新为被占用;
所述第三确定模块,用于从基于各第一预设长度划分的各子缓存块中,确定与所述分配的子缓存块具有如下位置关系之一的第一子缓存块,其中,所述第一预设长度为所有预设长度中除所述最小的预设长度之外的各预设长度:
该第一子缓存块的全部与所述分配的子缓存块的部分具有重叠位置关系、该第一子缓存块的部分与所述分配的子缓存块的全部具有重叠位置关系、该第一子缓存块的部分与所述分配的子缓存块的部分具有重叠位置关系。
13.如权利要求12所述的装置,其特征在于,还包括:计数模块和第四确定模块;
所述计数模块,用于将用于为该确定的第一子缓存块进行占用计数的计数器的数值增加一个计数单位;将用于为所述第四确定模块确定的第二子缓存块进行占用计数的计数器的数值减小一个计数单位;
所述状态更新模块,还用于当任一子缓存块被释放时,将该释放子缓存块的使用状态更新为空闲;当用于为所述第四确定模块确定的第二子缓存块进行占用计数的计数器的数值为零时,将该第二子缓存块的使用状态更新为空闲
所述第四确定模块,用于从基于各第二预设长度划分的各子缓存块中,确定与该释放子缓存块具有如下位置关系之一的第二子缓存块,其中,所述第二预设长度为所有预设长度中除该释放子缓存块的长度之外的各预设长度:
该第二子缓存块的全部与该释放子缓存块的部分具有重叠位置关系、该第二子缓存块的部分与该释放子缓存块的全部具有重叠位置关系、该第二子缓存块的部分与该释放子缓存块的部分具有重叠位置关系。
14.如权利要求10-11任一项所述的装置,其特征在于,还包括:第五确定模块;
所述状态更新模块还用于当所述不同预设长度均为2的正整数次幂,且任一子缓存块被释放时,将该释放子缓存块的使用状态更新为空闲;从基于各第三预设长度划分的各子缓存块中,将子缓存块的全部与该释放子缓存块的部分具有重叠位置关系的子缓存块的使用状态更新为空闲,其中,所述第三预设长度为所有预设长度中长度小于该释放子缓存块的长度的各预设长度;当所述第五确定模块确定的所述各第四子缓存块的使用状态均为空闲时,将该第三子缓存块的使用状态更新为空闲;
所述第五确定模块,用于从基于各第四预设长度划分的各个子缓存块中,确定子缓存块的部分与该释放子缓存块的全部具有重叠位置关系的第三子缓存块,其中,所述第四预设长度为所有预设长度中长度大于该释放子缓存块的长度的各预设长度;针对每个第三子缓存块,从基于该释放子缓存块的长度划分的、除该释放子缓存块之外的各个子缓存块中,确定子缓存块的全部与该第三子缓存块的部分具有重叠位置关系的各第四子缓存块。
15.如权利要求14所述的装置,其特征在于,所述第五确定模块具体用于确定所述第三子缓存块的长度与该释放子缓存块的长度的比值2n中的n的值,其中,n为不小于1的整数;确定该释放子缓存块的相对位置;其中,根据下式确定任一子缓存块的相对位置posij:posij=i<<log2X+j;i、j分别为该任一子缓存块对应的比特位在二维比特图中的行数和列数,X为该任一子缓存块对应的比特位所在二维比特图的总列数,posij为二进制形式;当该释放子缓存块的相对位置的后n位为全0时,则从基于该释放子缓存块的长度划分的、地址大于该释放子缓存块的各子缓存块中,依次确定各子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全1的子缓存块,将确定出的所有子缓存块确定为第四子缓存块;当该释放子缓存块的相对位置的后n位为全1时,则从基于该释放子缓存块的长度划分的、地址小于该释放子缓存块的各子缓存块中,依次确定各子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全0的子缓存块,将确定出的所有子缓存块确定为第四子缓存块;当该释放子缓存块的相对位置的后n位为非全0且非全1时,则从基于该释放子缓存块的长度划分的、地址大于该释放子缓存块的各子缓存块中,依次确定各子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全1的子缓存块,并从基于该释放子缓存块的长度划分的、地址小于该释放子缓存块的各子缓存块中,依次确定子缓存块的相对位置的后n位,直到确定出相对位置的后n位为全0的子缓存块,将确定出的所有子缓存块确定为第四子缓存块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310710756.0A CN103699497B (zh) | 2013-12-19 | 2013-12-19 | 一种缓存分配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310710756.0A CN103699497B (zh) | 2013-12-19 | 2013-12-19 | 一种缓存分配方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103699497A true CN103699497A (zh) | 2014-04-02 |
CN103699497B CN103699497B (zh) | 2017-01-04 |
Family
ID=50361031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310710756.0A Expired - Fee Related CN103699497B (zh) | 2013-12-19 | 2013-12-19 | 一种缓存分配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103699497B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106527998A (zh) * | 2016-11-28 | 2017-03-22 | 建荣半导体(深圳)有限公司 | 一种优化sd卡读写性能的方法、装置和一种sd卡 |
CN106843753A (zh) * | 2016-12-30 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种分布式存储中协议使用缓存的方法及装置 |
CN106909460A (zh) * | 2017-01-24 | 2017-06-30 | 广东德诚网络科技有限公司 | 数据缓冲方法、装置及存储介质 |
US9734070B2 (en) | 2015-10-23 | 2017-08-15 | Qualcomm Incorporated | System and method for a shared cache with adaptive partitioning |
CN107451070A (zh) * | 2016-06-01 | 2017-12-08 | 腾讯科技(深圳)有限公司 | 一种数据的处理方法和服务器 |
CN108108307A (zh) * | 2016-11-24 | 2018-06-01 | 中移(杭州)信息技术有限公司 | 一种资源处理方法及终端 |
CN111045605A (zh) * | 2019-12-12 | 2020-04-21 | 海光信息技术有限公司 | 利用处理器缓存和安全处理器改进系统安全性的技术方案 |
US10762594B2 (en) * | 2017-12-27 | 2020-09-01 | Fujitsu Limited | Optimized memory access for reconstructing a three dimensional shape of an object by visual hull |
CN114124850A (zh) * | 2022-01-26 | 2022-03-01 | 浙江宇视系统技术有限公司 | 一种网络通信方法及装置、存储介质 |
CN115426081A (zh) * | 2022-08-11 | 2022-12-02 | 中国人民解放军战略支援部队信息工程大学 | 一种数据包的转发装置及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105929A1 (en) * | 2000-04-28 | 2003-06-05 | Ebner Sharon M. | Cache status data structure |
CN1556475A (zh) * | 2004-01-02 | 2004-12-22 | 中兴通讯股份有限公司 | 嵌入式实时操作系统中内存释放的方法 |
CN101609432A (zh) * | 2009-07-13 | 2009-12-23 | 中国科学院计算技术研究所 | 共享缓存管理系统及方法 |
CN102270207A (zh) * | 2010-06-02 | 2011-12-07 | 中国科学院计算技术研究所 | 一种面向在线多媒体信息挖掘的数据缓存方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1248465C (zh) * | 2002-11-01 | 2006-03-29 | 华为技术有限公司 | 网络通信中数据发送/接收缓冲区的管理方法 |
-
2013
- 2013-12-19 CN CN201310710756.0A patent/CN103699497B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105929A1 (en) * | 2000-04-28 | 2003-06-05 | Ebner Sharon M. | Cache status data structure |
CN1556475A (zh) * | 2004-01-02 | 2004-12-22 | 中兴通讯股份有限公司 | 嵌入式实时操作系统中内存释放的方法 |
CN101609432A (zh) * | 2009-07-13 | 2009-12-23 | 中国科学院计算技术研究所 | 共享缓存管理系统及方法 |
CN102270207A (zh) * | 2010-06-02 | 2011-12-07 | 中国科学院计算技术研究所 | 一种面向在线多媒体信息挖掘的数据缓存方法和系统 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9734070B2 (en) | 2015-10-23 | 2017-08-15 | Qualcomm Incorporated | System and method for a shared cache with adaptive partitioning |
CN107451070B (zh) * | 2016-06-01 | 2020-08-04 | 腾讯科技(深圳)有限公司 | 一种数据的处理方法和服务器 |
CN107451070A (zh) * | 2016-06-01 | 2017-12-08 | 腾讯科技(深圳)有限公司 | 一种数据的处理方法和服务器 |
CN108108307A (zh) * | 2016-11-24 | 2018-06-01 | 中移(杭州)信息技术有限公司 | 一种资源处理方法及终端 |
CN106527998B (zh) * | 2016-11-28 | 2019-05-03 | 建荣半导体(深圳)有限公司 | 一种优化sd卡读写性能的方法、装置和一种sd卡 |
CN106527998A (zh) * | 2016-11-28 | 2017-03-22 | 建荣半导体(深圳)有限公司 | 一种优化sd卡读写性能的方法、装置和一种sd卡 |
CN106843753A (zh) * | 2016-12-30 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种分布式存储中协议使用缓存的方法及装置 |
CN106909460B (zh) * | 2017-01-24 | 2018-06-05 | 广东德诚科教有限公司 | 数据缓冲方法、装置及存储介质 |
CN106909460A (zh) * | 2017-01-24 | 2017-06-30 | 广东德诚网络科技有限公司 | 数据缓冲方法、装置及存储介质 |
US10762594B2 (en) * | 2017-12-27 | 2020-09-01 | Fujitsu Limited | Optimized memory access for reconstructing a three dimensional shape of an object by visual hull |
CN111045605A (zh) * | 2019-12-12 | 2020-04-21 | 海光信息技术有限公司 | 利用处理器缓存和安全处理器改进系统安全性的技术方案 |
CN111045605B (zh) * | 2019-12-12 | 2023-10-20 | 海光信息技术股份有限公司 | 利用处理器缓存和安全处理器改进系统安全性的技术方案 |
CN114124850A (zh) * | 2022-01-26 | 2022-03-01 | 浙江宇视系统技术有限公司 | 一种网络通信方法及装置、存储介质 |
CN115426081A (zh) * | 2022-08-11 | 2022-12-02 | 中国人民解放军战略支援部队信息工程大学 | 一种数据包的转发装置及方法 |
CN115426081B (zh) * | 2022-08-11 | 2024-06-25 | 中国人民解放军战略支援部队信息工程大学 | 一种数据包的转发装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103699497B (zh) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103699497A (zh) | 一种缓存分配方法及装置 | |
CN101901248B (zh) | 一种布隆过滤器的生成、更新以及查询元素方法和装置 | |
CN105159610B (zh) | 大规模数据处理系统及方法 | |
CN100382048C (zh) | 一种内存管理方法 | |
CN104077233A (zh) | 单通道卷积层及多通道卷积层处理方法和装置 | |
EP2799989A2 (en) | Apparatus and method of parallel processing execution | |
CN108804383B (zh) | 基于度量空间的支撑点并行枚举方法及装置 | |
KR102594657B1 (ko) | 비순차적 리소스 할당을 구현하는 방법 및 장치 | |
US20130219394A1 (en) | System and method for a map flow worker | |
CN111382114B (zh) | 一种用于片上网络的数据传输方法、装置及电子设备 | |
CN105718319B (zh) | 一种内存池版图解析方法和内存池装置 | |
CN103853500A (zh) | 一种基于海量数据的数据分配方法、装置及系统 | |
CN112559165A (zh) | 内存管理方法、装置、电子设备及计算机可读存储介质 | |
CN106775470B (zh) | 一种数据存储的方法及系统 | |
CN103605756A (zh) | 用于联机分析处理的数据处理方法和装置 | |
CN103257931A (zh) | 成形的寄存器堆读取 | |
CN105045670A (zh) | 中央处理器和图形处理器负载均衡的方法和系统 | |
CN114270319A (zh) | 在机器学习计算单元之间重新分配张量元素 | |
CN103617123A (zh) | 一种通过内存块实现内存管理的方法及系统 | |
CN103106147A (zh) | 内存分配方法及系统 | |
CN103064794B (zh) | 实现mpls标签高效管理的方法 | |
CN106844690A (zh) | 一种数据分配方法、装置和计算设备 | |
US20160179802A1 (en) | Method, apparatus and computer program product for improved storage of key-value pairs | |
CN106933882B (zh) | 一种大数据增量计算方法和装置 | |
US9177006B2 (en) | Radix sort with read-only key |
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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 510663 No. 10 Shenzhou Road, Guangzhou Science City, Guangdong Province Patentee after: Jingxin Network System Co.,Ltd. Address before: 510663 No. 10 Shenzhou Road, Guangzhou Science City, Guangdong Province Patentee before: COMBA TELECOM SYSTEMS (CHINA) Ltd. |
|
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: 20170104 |