分配缓存空间的方法和装置以及缓存控制器转让专利

申请号 : CN200710121301.X

文献号 : CN101122886B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 安辉赖守锋刘介良

申请人 : 杭州华三通信技术有限公司

摘要 :

本发明公开了一种分配缓存空间的方法和装置以及一种缓存控制器。该方法包括:确定当前写操作所需占用的缓存(Cache)空间大小;为当前写操作分配所需占用的Cache空间大小的Cache空间;将数据写入所分配的Cache空间中。缓存控制器包括:Cache应用单元和Cache管理驱动单元。本发明提高了Cache空间的利用率。

权利要求 :

1.一种分配缓存空间的方法,其特征在于,利用Cache中当前的空闲空间组成Cache管理对象,通过预先设置的空闲空间链表连接Cache管理对象;该方法包括:确定当前写操作所需占用的缓存Cache空间大小;

从空闲空间链表中取出对应所需占用的Cache空间大小的Cache管理对象;

将数据写入所取出的Cache管理对象指示的Cache空间。

2.根据权利要求1所述的方法,其特征在于,所述利用Cache中当前的空闲空间组成Cache管理对象的步骤包括:将当前Cache中每一段地址连续的空闲空间组成一个Cache管理对象。

3.根据权利要求2所述的方法,其特征在于,所述从空闲空间链表中取出对应所需占用的Cache空间大小的Cache管理对象的步骤包括:当空闲空间链表中任意一个Cache管理对象指示的Cache空间的大小大于所需占用的Cache空间大小时,将该Cache管理对象拆分成第一Cache管理对象以及其他Cache管理对象,其中,第一Cache管理对象指示的Cache空间大小对应所需占用的Cache空间大小,从空闲空间链表中取出第一Cache管理对象;

当整数个Cache管理对象指示的Cache空间的大小对应所需占用的Cache空间大小时,直接从空闲空间链表中取出该整数个Cache管理对象;

当空闲空间链表中任意一个Cache管理对象指示的Cache空间的大小小于所需占用的Cache空间大小时,确定满足所需占用的Cache空间大小的Cache管理对象的最小数量,从该最小数量中的一个Cache管理对象中拆分出第二Cache管理对象,该第二Cache管理对象以及所述最小数量中的其他Cache管理对象共同指示的Cache空间的大小对应所需占用的Cache空间大小,从空闲空间链表中取出第二Cache管理对象以及所述最小数量中的其他Cache管理对象。

4.根据权利要求3所述的方法,其特征在于,所述从空闲空间链表中取出为:从空闲空间链表中按照从前至后的顺序取出;或者,从空闲空间链表中随机取出。

5.根据权利要求1至4中任意一项所述的方法,其特征在于,所述Cache管理对象包括:指示空闲空间链表中前一个Cache管理对象的起始地址的头指针、Cache管理对象所指示空间的起始地址和长度、以及指示空闲空间链表中后一个Cache管理对象的起始地址的尾指针;

根据所需占用的Cache空间大小、空闲空间链表中各Cache管理对象包括的头指针、起始地址和长度、尾指针,执行从空闲空间链表中取出Cache管理对象的步骤。

6.一种缓存控制器,其特征在于,包括:

链表单元,用于保存空闲空间链表;

Cache应用单元,用于确定当前写操作所需占用的Cache空间大小,向Cache管理驱动单元申请所需占用的Cache空间大小,根据Cache管理驱动单元发来的Cache空间信息,将数据写入该Cache管理对象指示的Cache空间中;

Cache管理驱动单元,用于利用Cache中当前的空闲空间组成Cache管理对象,将组成的Cache管理对象连接到链表单元保存的空闲空间链表中,根据Cache应用单元的申请,从链表单元保存的空闲空间链表中取出对应所需占用的Cache空间大小的Cache管理对象,将取出的Cache管理对象的信息作为所分配的Cache空间信息发送至Cache应用单元。

7.根据权利要求6所述的缓存控制器,其特征在于,所述Cache管理驱动单元利用当前Cache中每一段地址连续的空闲空间组成一个Cache管理对象。

8.根据权利要求7所述的缓存控制器,其特征在于,所述Cache管理驱动单元中包括:

检测执行子单元,用于接收Cache应用单元的申请,根据该申请进行检测,在检测出任意一个Cache管理对象指示的Cache空间的大小大于所需占用的Cache空间大小时,将携带该Cache管理对象的信息的拆分指示发送至管理对象处理子单元,并且,在检测出整数个Cache管理对象指示的Cache空间的大小对应所需占用的Cache空间大小时,将该整数个Cache管理对象的信息直接发送至分配执行子单元,并且,在检测出任意一个Cache管理对象指示的Cache空间的大小小于所需占用的Cache空间大小时,将合并指示发送至管理对象处理子单元;

管理对象处理子单元,用于在接收到拆分指示时,根据拆分指示中携带的Cache管理对象的信息,将该Cache管理对象拆分成第一Cache管理对象以及其他Cache管理对象,其中,第一Cache管理对象指示的Cache空间大小对应所需占用的Cache空间大小,将第一Cache管理对象的信息发送至分配执行子单元,并且,在接收到合并指示时,确定满足所需占用的Cache空间大小的Cache管理对象的最小数量,从该最小数量中的一个Cache管理对象中拆分出第二Cache管理对象,该第二Cache管理对象以及所述最小数量中的其他Cache管理对象共同指示的Cache空间的大小对应所需占用的Cache空间大小,将第二Cache管理对象以及所述最小数量中的其他Cache管理对象的信息发送至分配执行子单元;

分配执行子单元,根据接收到的Cache管理对象的信息,从链表单元保存的空闲空间链表中取出对应的Cache管理对象,将取出的Cache管理对象的信息作为所分配的Cache空间信息发送至Cache应用单元。

9.根据权利要求7所述的缓存控制器,其特征在于,所述链表单元保存的空闲空间链表中包括一个以上的Cache管理对象,每一个Cache管理对象包括指示前一个Cache管理对象的起始地址的头指针、Cache管理对象所指示空间的起始地址和长度、以及指示后一个Cache管理对象的起始地址的尾指针;

所述Cache管理驱动单元,用于根据Cache应用单元的申请、各Cache管理对象包括的头指针、起始地址和长度、尾指针,执行从链表单元保存的空闲空间链表中取出Cache管理对象的处理。

10.一种分配缓存空间的装置,其特征在于,包括Cache以及如权利要求7至11中任意一项所述的缓存控制器。

说明书 :

技术领域

本发明涉及数据存储技术,特别是涉及分配缓存(Cache)空间的方法和装置以及缓存控制器。

背景技术

随着信息技术的高速发展,目前出现了能够提供数据存储业务的网络存储控制系统。图1是网络存储控制系统的结构示意图。参见图1,网络存储控制系统中主要包括用于存储数据的磁盘阵列和执行读写操作的主机处理器。另外,由于主机处理器的工作频率远大于磁盘阵列的工作频率,因此,为了提高数据读写的效率,网络存储控制系统中还包括工作频率介于主机处理器和磁盘阵列之间的缓存控制器和Cache。
图2是在现有技术中Cache的空间划分示意图。参见图2,为了更好地管理Cache的存储空间,在现有技术中,首先设定空间大小固定的Cache颗粒,然后按照Cache颗粒划分Cache的存储空间,这样,从逻辑上,Cache的存储空间则由多个Cache颗粒组成。比如,Cache的存储空间为100KB,Cache颗粒为2KB,那么,Cache的存储空间则由50个Cache颗粒组成。
利用图2所示的Cache的空间划分方式,现有技术将外部数据写入磁盘阵列的过程包括:主机处理器将外部发来的数据写入指令发送给缓存控制器;缓存控制器根据数据写入指令中携带的空间申请信息,确定当前写操作所需的Cache空间的大小,然后根据所需的Cache空间大小确定需要占用的Cache颗粒的个数,比如为3个Cache颗粒,将数据写入指令中携带的数据写入该3个Cache颗粒中;磁盘阵列扫描缓存控制器,确定有新写入的数据后,从上述的3个Cache颗粒中读取该新写入的数据,从而完成了外部数据写入磁盘阵列的过程。
由以上描述可以看出,在现有技术中,在将数据保存到Cache中时,是以Cache颗粒为单位进行保存,也就是说,数据必须占用整数个Cache颗粒。而又由于Cache颗粒的大小是固定的,因此,在将数据保存到Cache中时,就必然会出现部分Cache颗粒的空间有剩余,即出现Cache碎片。参见图3,比如,需保存的数据为5KB,Cache颗粒为2KB,那么,需要占用的Cache颗粒的个数为『5/2』=3,其中,符号『』表示向上取整。而由于3个Cache颗粒可提供6KB的存储空间,因此,1个Cache颗粒的空间则会出现剩余,形成1KB的Cache碎片。这样,参见图4,在网络存储控制系统中存在大量数据写入操作时,则往往会导致大量Cache颗粒的空间有剩余,形成大量的Cache碎片,从而极大地降低了Cache空间的利用率。

发明内容

有鉴于此,本发明的一个目的在于提供一种分配Cache空间的方法,本发明的再一个目的在于提供一种缓存控制器,本发明的另一个目的在于提供一种分配Cache空间的装置,以便于提高Cache空间的利用率。
为了达到上述目的,本发明的技术方案是这样实现的:
一种分配缓存空间的方法,利用Cache中当前的空闲空间组成Cache管理对象,通过预先设置的空闲空间链表连接Cache管理对象;该方法包括:
确定当前写操作所需占用的Cache空间大小;
从空闲空间链表中取出对应所需占用的Cache空间大小的Cache管理对象;
将数据写入所取出的Cache管理对象指示的Cache空间。
一种缓存控制器,包括:
链表单元,用于保存空闲空间链表;
Cache应用单元,用于确定当前写操作所需占用的Cache空间大小,向Cache管理驱动单元申请所需占用的Cache空间大小,根据Cache管理驱动单元发来的Cache空间信息,将数据写入该Cache管理对象指示的Cache空间中;
Cache管理驱动单元,用于利用Cache中当前的空闲空间组成Cache管理对象,将组成的Cache管理对象连接到链表单元保存的空闲空间链表中,根据Cache应用单元的申请,从链表单元保存的空闲空间链表中取出对应所需占用的Cache空间大小的Cache管理对象,将取出的Cache管理对象的信息作为所分配的Cache空间信息发送至Cache应用单元。
由此可见,在本发明中,根据当前写操作所需占用的Cache空间大小来分配Cache空间,而没有采用现有技术中分配整数个Cache颗粒的作法,从而使得Cache中没有剩余的无法被分配的空间,提高了Cache空间的利用率。
较佳地,在本发明中,可以利用空闲空间链表来连接指示空闲Cache空间的各个Cache管理对象,并且,各个Cache管理对象可以动态调整,在分配Cache空间时,直接分配对应的各个Cache管理对象,这样,Cache管理对象相当于本发明利用的Cache颗粒,但由于其大小能够根据需分配的Cache空间大小来进行动态调整,因此,很容易实现充分利用Cache空间资源,保证没有空闲的无法被分配的Cache空间,极大地增强了本发明的实用性。

附图说明

图1是网络存储控制系统的结构示意图。
图2是在现有技术中Cache的空间划分示意图。
图3是在现有技术中一次数据写入后出现Cache碎片的示意图。
图4是在现有技术中大量数据写入后出现大量Cache碎片的示意图。
图5是在本发明一个实施例中为需要保存的数据分配Cache空间的流程图。
图6是在本发明一个实施例中Cache管理对象的组成示意图。
图7是在本发明一个实施例中空闲空间链表中的Cache管理对象与Cache空闲空间的示意图。
图8是在本发明一个实施例中提出的缓存控制器的基本结构示意图。
图9是在本发明一个实施例中提出的缓存控制器的优化结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
为了提高Cache空间的利用率,在每次将数据写入Cache时,则必须使得为数据分配的Cache空间的大小与数据实际需要占用的空间的大小一致。因此,本发明提出了一种分配Cache空间的方法。在该方法中,确定当前写操作所需占用的Cache空间大小;为当前写操作分配所需占用的Cache空间大小的Cache空间;将数据写入所分配的Cache空间中。
在本发明方法中,较佳地,可以利用链表来维护Cache中没有被使用的Cache空间,这样,则可以从链表中随意取出所需占用的Cache空间大小的空闲Cache空间。
图5是在本发明一个实施例中为需要保存的数据分配Cache空间的流程图。参见图5,在本发明一个较佳实施例中,采用链表方式为需要保存的数据分配Cache空间的过程具体包括以下步骤:
步骤501:预先设置空闲空间链表。
步骤502:预先设置Cache管理对象。
这里,设置Cache管理对象是为了在后续过程中,能够通过可动态调整的Cache管理对象来指示Cache中每一段具体的Cache空间。
并且,为了便于维护Cache管理对象,参见图6,Cache管理对象的组成可以包括:指示空闲空间链表中前一个Cache管理对象的起始地址的头指针、Cache管理对象所指示空间的起始地址和长度、以及指示空闲空间链表中后一个Cache管理对象的起始地址的尾指针。利用图6所示的Cache管理对象,可以很容易通过一个Cache管理对象找到其它Cache管理对象,这样,则可以方便地找到Cache中的每一段空闲空间。
步骤503:在Cache初始化状态时,利用Cache中当前的空闲空间组成一个Cache管理对象,将该Cache管理对象连接到空闲空间链表中。
这里,在Cache初始化状态时,Cache中的所有空间均处于空闲状态,因此,可以将Cache中的所有空间组成一个Cache管理对象,记为Cache管理对象A,将Cache管理对象A连接到空闲空间链表中。这样,参见图7,以Cache总的存储空间为1024KB为例,由于当前的空闲空间链表中仅连接了一个Cache管理对象A,因此,Cache管理对象A的头指针和尾指针均为空,并且,Cache管理对象A的起始地址为0X0,长度为1024KB。
步骤504:在接收到第一次写操作请求后,根据该写操作请求确定本次写操作所需占用的Cache空间大小。
这里,比如,第一次写操作需要占用1KB大小的Cache空间。
步骤505:从空闲空间链表中取出对应1KB的Cache空间的Cache管理对象。
这里,由于空闲空间链表中现有的Cache管理对象A所指示的Cache空间的大小1024KB大于所需占用的Cache空间大小1KB,因此,在本步骤中,不能直接将该Cache管理对象A取出,而是首先将Cache管理对象A进行拆分,使得拆分后的一个Cache管理对象指示的Cache空间的大小对应1KB,比如,将Cache管理对象A拆分成Cache管理对象A1以及Cache管理对象A2。参见图7,Cache管理对象A1的起始地址为0X0,长度为1KB,这样,则可以从空闲空间链表中取出Cache管理对象A1,相应地,空闲空间链表中只剩下Cache管理对象A2,其起始地址为0X400,长度为1023KB,头指针和尾指针均为空。
步骤506:将数据写入所取出的Cache管理对象A1指示的Cache空间。
在业务进行的初始阶段,Cache中空闲的空间较多,因此,每次从空闲空间链表中取出Cache管理对象时,均按照步骤505中拆分的处理从空闲空间链表中取出Cache管理对象。
比如,接收到第二次写操作请求,该第二次写操作需要占用2KB大小的Cache空间,由于空闲空间链表中现有的Cache管理对象A2所指示的Cache空间的大小1023KB大于所需占用的Cache空间大小2KB,因此,首先将Cache管理对象A2进行拆分,使得拆分后的一个Cache管理对象指示的Cache空间的大小对应2KB,比如,将Cache管理对象A2拆分成Cache管理对象A21以及Cache管理对象A22。参见图7,Cache管理对象A21的起始地址为0X400,长度为2KB,这样,则可以从空闲空间链表中取出Cache管理对象A21,相应地,空闲空间链表中只剩下Cache管理对象A22,其起始地址为0XC00,长度为1021KB,头指针和尾指针均为空。
再如,接收到第三次写操作请求,该第三次写操作需要占用2KB大小的Cache空间,由于空闲空间链表中现有的Cache管理对象A22所指示的Cache空间的大小1021KB大于所需占用的Cache空间大小2KB,因此,首先将Cache管理对象A22进行拆分,使得拆分后的一个Cache管理对象指示的Cache空间的大小对应2KB,比如,将Cache管理对象A22拆分成Cache管理对象A221以及Cache管理对象A222。参见图7,Cache管理对象A221的起始地址为0XC00,长度为2KB,这样,则可以从空闲空间链表中取出Cache管理对象A221,相应地,空闲空间链表中只剩下Cache管理对象A222,其起始地址为0X1400,长度为1019KB,头指针和尾指针均为空。
依此过程执行,参见图7,比如,在第n次分配Cache空间后,Cache空间中只剩余3KB的空闲空间,那么,空闲空间链表中当前仅有一个Cache管理对象An,其起始地址为0X0FF400,长度为3KB,头指针和尾指针均为空。
步骤507:检测到有Cache空间释放其保存的数据,转变为空闲空间后,将释放数据的每一段地址连续的空闲空间组成一个Cache管理对象。
比如,为第一次写操作分配的Cache管理对象A 1指示的Cache空间释放了其保存的数据,那么,将该Cache空间重新组成一个Cache管理对象,记为Cache管理对象2,其起始地址为0X0,长度为1KB;并且,为第三次写操作分配的Cache管理对象A221指示的Cache空间也释放了其保存的数据,那么,将该Cache空间重新组成一个Cache管理对象,记为Cache管理对象3,其起始地址为0XC00,长度为2KB。
步骤508:将当前组成的Cache管理对象2和Cache管理对象3连接到空闲空间链表中。
本步骤的一种较佳实现方式为:将Cache管理对象2和Cache管理对象3依次连接到空闲空间链表的尾部,这样,参见图7所示,此时的空闲空间链表则包括3个Cache管理对象,依次为:Cache管理对象An,其指示的Cache空间的起始地址为0X0FF400,长度为3KB,头指针为空,尾指针指向Cache管理对象2的起始地址;Cache管理对象2,其指示的Cache空间的起始地址为0X0,长度为1KB,头指针指向Cache管理对象An的起始地址,尾指针指向Cache管理对象3的起始地址;Cache管理对象3,其指示的Cache空间的起始地址为0XC00,长度为2KB,头指针指向Cache管理对象2的起始地址,尾指针为空。
当然,在本步骤中,也可以将Cache管理对象2和Cache管理对象3随意连接到空闲空间链表中的一个位置,比如,将Cache管理对象2连接到空闲空间链表的头部即Cache管理对象An之前,将Cache管理对象3连接到空闲空间链表的尾部即Cache管理对象An之后,此时空闲空间链表中每一个Cache管理对象的头尾指针需要进行相应修改。
参见图7,在利用上述步骤504至步骤508的过程进行空闲空间的分配和回收后,Cache中的空闲空间则由多段连续的空闲空间组成,每一段连续的空闲空间对应空闲空间链表中的一个Cache管理对象。
步骤509:再次接收到一个写操作请求,根据该写操作请求确定本次写操作所需占用的Cache空间大小,从空闲空间链表中取出对应所需占用的Cache空间大小的Cache管理对象。
比如,本步骤中所需占用的Cache空间大小为4KB。执行到本步骤,由于Cache空间已经被分配多次,任意一个Cache管理对象指示的空闲空间的大小均小于本次写操作所需占用的Cache空间大小,因此,必须使用多个Cache管理对象指示的空闲空间来进行分配,而参见图7,本次写操作所需占用的Cache空间大小4KB正好可以由Cache管理对象An和Cache管理对象2这两个Cache管理对象指示的Cache空间来提供,因此,直接从空闲空间链表中取出Cache管理对象An和Cache管理对象2。
再如,本步骤中所需占用的Cache空间大小为3.5KB。执行到本步骤,由于Cache空间已经被分配多次,任意一个Cache管理对象指示的空闲空间的大小均小于本次写操作所需占用的Cache空间大小,因此,必须使用多个Cache管理对象指示的空闲空间来进行分配,而参见图7,任意整数个Cache管理对象指示的Cache空间的大小不对应所需占用的Cache空间大小。这样,在本步骤中,首先需要确定满足所需占用的Cache空间大小3.5KB的Cache管理对象的最小数量,从图7中可以看出,该最小数量为2,即最少需要两个Cache管理对象来提供所需占用的Cache空间,比如选用Cache管理对象An和Cache管理对象2;其次,由于Cache管理对象An和Cache管理对象2总共对应的Cache空间的大小为4KB大于所需占用的3.5KB,因此,还需对其中一个进行拆分,比如,将Cache管理对象An拆分成Cache管理对象An1和Cache管理对象An2,其中,Cache管理对象An1指示的Cache空间的长度为2.5KB,Cache管理对象An2指示的Cache空间的长度为0.5KB,这样,Cache管理对象An1和Cache管理对象2共同指示的Cache空间的大小则为3.5KB,正好对应所需占用的Cache空间大小,此时,则从空闲空间链表中取出Cache管理对象An1以及Cache管理对象2。
步骤510:将数据写入所取出的各个Cache管理对象指示的Cache空间。
需要说明的是,在分配Cache空间的过程中,在从空闲空间链表中取出Cache管理对象时,可以从空闲空间链表中按照从前至后的顺序取出,比如,当前所需占用的Cache空间为2KB,空闲空间链表中链表头位置的Cache管理对象和链表尾部的Cache管理对象指示的Cache空间均为2KB,那么,则可以从空闲空间链表中取出链表头位置的Cache管理对象,来作为分配的Cache空间。当然,在从空闲空间链表中取出Cache管理对象时,也可以从空闲空间链表中随机取出满足所需占用的Cache空间的Cache管理对象。
还需要说明的是,参见图6和图7,由于Cache管理对象包括:指示空闲空间链表中前一个Cache管理对象的起始地址的头指针、Cache管理对象对应空间的起始地址和长度、以及指示空闲空间链表中后一个Cache管理对象的起始地址的尾指针。因此,在上述图5所示流程中,当需要根据所需占用的Cache空间大小分配Cache空间时,具体可以根据空闲空间链表中各Cache管理对象包括的头指针、起始地址和长度、尾指针,来逐个搜索Cache管理对象,从而确定出一个或多个可以满足所需占用的Cache空间大小的Cache管理对象。
本发明还提出了一种缓存控制器。图8是在本发明一个实施例中提出的缓存控制器的基本结构示意图。参见图8,在本发明一个实施例中,缓存控制器可以包括:
Cache应用单元,用于确定当前写操作所需占用的Cache空间大小,向Cache管理驱动单元申请所需占用的Cache空间大小,根据Cache管理驱动单元发来的Cache空间信息,将数据写入所分配的Cache空间中;
Cache管理驱动单元,用于根据Cache应用单元的申请,为当前写操作分配所需占用的Cache空间大小的Cache空间,将所分配的Cache空间信息发送至Cache应用单元。
较佳地,缓存控制器可以利用链表方式来维护Cache中没有被使用的Cache空间,以便从链表中随意取出所需占用的Cache空间大小的空闲Cache空间。此时,参见图9,缓存控制器进一步包括链表单元,用于保存空闲空间链表;并且,
所述Cache管理驱动单元进一步利用Cache中当前的空闲空间组成Cache管理对象,将组成的Cache管理对象连接到链表单元保存的空闲空间链表中,根据Cache应用单元的申请,从链表单元保存的空闲空间链表中取出对应所需占用的Cache空间大小的Cache管理对象,将取出的Cache管理对象的信息发送至Cache应用单元;
所述Cache应用单元,用于根据Cache管理对象的信息,将数据写入该Cache管理对象指示的Cache空间。
在本发明一个实施例中,缓存控制器中的Cache管理驱动单元在组成Cache管理对象时,具体是利用当前Cache中每一段地址连续的空闲空间组成一个Cache管理对象。
在本发明的又一个实施例中,缓存控制器的Cache管理驱动单元中包括检测执行子单元、管理对象处理子单元和分配执行子单元,这三个子单元用于配合完成根据Cache应用单元的申请从链表单元保存的空闲空间链表中取出对应所需占用的Cache空间大小的Cache管理对象的处理,具体实现包括:
检测执行子单元,用于接收Cache应用单元的申请,根据该申请进行检测,在检测出任意一个Cache管理对象指示的Cache空间的大小大于所需占用的Cache空间大小时,将携带该Cache管理对象的信息的拆分指示发送至管理对象处理子单元,并且,在检测出整数个Cache管理对象指示的Cache空间的大小对应所需占用的Cache空间大小时,将该整数个Cache管理对象的信息直接发送至分配执行子单元,并且,在检测出任意一个Cache管理对象指示的Cache空间的大小小于所需占用的Cache空间大小时,将合并指示发送至管理对象处理子单元;
管理对象处理子单元,用于在接收到拆分指示时,根据拆分指示中携带的Cache管理对象的信息,将该Cache管理对象拆分成第一Cache管理对象以及其他Cache管理对象,其中,第一Cache管理对象指示的Cache空间大小对应所需占用的Cache空间大小,将第一Cache管理对象的信息发送至分配执行子单元,并且,在接收到合并指示时,确定满足所需占用的Cache空间大小的Cache管理对象的最小数量,从该最小数量中的一个Cache管理对象中拆分出第二Cache管理对象,该第二Cache管理对象以及所述最小数量中的其他Cache管理对象共同指示的Cache空间的大小对应所需占用的Cache空间大小,将第二Cache管理对象以及所述最小数量中的其他Cache管理对象的信息发送至分配执行子单元;
分配执行子单元,根据接收到的Cache管理对象的信息,从链表单元保存的空闲空间链表中取出对应的Cache管理对象,将取出的Cache管理对象的信息作为所分配的Cache空间信息发送至Cache应用单元。
参见图9,所述链表单元保存的空闲空间链表中包括一个以上的Cache管理对象,每一个Cache管理对象包括指示前一个Cache管理对象的起始地址的头指针、Cache管理对象自身的起始地址和长度、以及指示后一个Cache管理对象的起始地址的尾指针;
所述Cache管理驱动单元,用于根据Cache应用单元的申请、链表单元保存的空闲空间链表中各Cache管理对象包括的头指针、起始地址和长度、尾指针,执行从空闲空间链表中取出Cache管理对象的处理。
另外,本发明还提出了一种分配缓存空间的装置。该装置包括缓存控制器和Cache,其中,缓存控制器的内部结构和功能可以利用上述本发明实施例中描述的缓存控制器来实现。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。