分配缓存空间的方法和装置以及缓存控制器的制作方法

文档序号:6610258阅读:167来源:国知局
专利名称:分配缓存空间的方法和装置以及缓存控制器的制作方法
技术领域
本发明涉及数据存储技术,特别是涉及分配緩存(Cache)空间的方法 和装置以及援存控制器。
背景技术
随着信息技术的高速发展,目前出现了能够提供数据存储业务的网络存 储控制系统。图1是网络存储控制系统的结构示意图。参见图1,网络存储 控制系统中主要包括用于存储数据的磁盘阵列和执行读写操作的主机处理 器。另外,由于主机处理器的工作频率远大于磁盘阵列的工作频率,因此, 为了提高数据读写的效率,网络存储控制系统中还包括工作频率介于主机处 理器和磁盘阵列之间的緩存控制器和Cache。
图2是在现有技术中Cache的空间划分示意图。参见图2,为了更好地 管理Cache的存储空间,在现有技术中,首先设定空间大小固定的Cache颗 粒,然后按照Cache颗粒划分Cache的存储空间,这样,从逻辑上,Cache 的存储空间则由多个Cache颗粒组成。比如,Cache的存储空间为100KB, Cache颗粒为2KB,那么,Cache的存储空间则由5 0个Cache颗粒组成。
利用图2所示的Cache的空间划分方式,现有技术将外部数据写入磁盘 阵列的过程包括主机处理器将外部发来的数据写入指令发送给緩存控制 器;緩存控制器根据数据写入指令中携带的空间申请信息,确定当前写操作 所需的Cache空间的大小,然后根据所需的Cache空间大小确定需要占用的 Cache颗粒的个数,比如为3个Cache颗粒,将数据写入指令中携带的数据 写入该3个Cache颗粒中;磁盘阵列扫描緩存控制器,确定有新写入的数据 后,从上述的3个Cache颗粒中读取该新写入的数据,从而完成了外部数据
写入磁盘阵列的过程。
由以上描述可以看出,在现有技术中,在将数据保存到Cache中时,是 以Cache颗粒为单位进行保存,也就是说,数据必须占用整数个Cache颗粒。 而又由于Cache颗粒的大小是固定的,因此,在将数据保存到Cache中时, 就必然会出现部分Cache颗粒的空间有剩余,即出现Cache碎片。参见图3 , 比如,需保存的数据为5KB, Cache颗粒为2KB,那么,需要占用的Cache 颗粒的个凄t为『5/2』=3,其中,符号f』表示向上取整。而由于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空间,极大地增强了本发明的实用 性。


图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管理 对象,可以4艮容易通过一个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:从空闲空间链表中取出对应1 KB的Cache空间的Cache管理 对象。
这里,由于空闲空间链表中现有的Cache管理对象A所指示的Cache 空间的大小1024KB大于所需占用的Cache空间大小1KB,因此,在本步骤 中,不能直接将该Cache管理对象A取出,而是首先将Cache管理对象A 进行拆分,使得拆分后的一个Cache管理对象指示的Cache空间的大小对应 1KB,比如,将Cache管理对象A拆分成Cache管理对象Al以及Cache管 理对象A2。参见图7, Cache管理对象A1的起始地址为0X0,长度为1KB, 这样,则可以从空闲空间链表中取出Cache管理对象Al,相应地,空闲空 间確连表中只剩下Cache管理对象A2,其起始地址为0X400,长度为1023KB, 头指针和尾指针均为空。
步骤506:将数据写入所取出的Cache管理对象Al指示的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 的起始地址为OXCOO,长度为2KB,这样,则可以从空闲空间链表中取出 Cache管理对象A221,相应地,空闲空间链表中只剩下Cache管理对象A222, 其起始地址为0X1400,长度为1019KB,头指针和尾指针均为空。
依此过程执行,参见图7,比如,在第n次分配Cache空间后,Cache 空间中只剩余3KB的空闲空间,那么,空闲空间链表中当前仅有 一个Cache 管理对象An,其起始地址为0X0FF400,长度为3KB,头指针和尾指针均为

步骤507:检测到有Cache空间释放其保存的数据,转变为空闲空间后, 将释放数据的每一段地址连续的空闲空间组成一个Cache管理对象。
比如,为第一次写操作分配的Cache管理对象Al指示的Cache空间释 放了其保存的数据,那么,将该Cache空间重新组成一个Cache管理对象, 记为Cache管理对象2,其起始地址为0X0,长度为1KB;并且,为第三次 写操作分配的Cache管理对象A221指示的Cache空间也释放了其保存的数 据,那么,将该Cache空间重新组成一个Cache管理对象,记为Cache管理 对象3,其起始地址为OXCOO,长度为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空间的起始地址为OXCOO,长度为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管理对象 Anl和Cache管理对象An2,其中,Cache管理对象Anl指示的Cache空间 的长度为2.5KB, Cache管理对象An2指示的Cache空间的长度为0.5KB, 这样,Cache管理对象Anl和Cache管理对象2共同指示的Cache空间的大 小则为3.5KB,正好对应所需占用的Cache空间大小,此时,则从空闲空间 链表中取出Cache管理对象Anl以及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管理对象的信息直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应用单元。参见图9,所述链表单元保存的空闲空间链表中包括一个以上的Cache管 理对象,每一个Cache管理对象包括指示前一个Cache管理对象的起始地址的
头指针、Cache管理对象自身的起始地址和长度、以及指示后一个Cache管理 对象的起始地址的尾指针;所述Cache管理驱动单元,用于根据Cache应用单元的申请、链表单元保 存的空闲空间链表中各Cache管理对象包括的头指针、起始地址和长度、尾指 针,执行从空闲空间链表中取出Cache管理对象的处理。另外,本发明还提出了一种分配緩存空间的装置。该装置包括缓存控制器 和Cache,其中,緩存控制器的内部结构和功能可以利用上述本发明实施例中 描述的緩存控制器来实现。总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的 保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改 进等,均应包含在本发明的保护范围之内。
权利要求
1、 一种分配緩存空间的方法,其特征在于,该方法包括 确定当前写操作所需占用的緩存Cache空间大小;为当前写操作分配所需占用的Cache空间大小的Cache空间; 将数据写入所分配的Cache空间中。
2、 根据权利要求1所述的方法,其特征在于,该方法进一步包括利用 Cache中当前的空闲空间组成Cache管理对象,通过预先设置的空闲空间链表 连接Cache管理对象;所述为当前写操作分配所需占用的Cache空间大小的Cache空间的步骤包 括从空闲空间链表中取出对应所需占用的Cache空间大小的Cache管理对象;所述将数据写入所分配的Cache空间中的步骤包括将数据写入所取出的 Cache管理对象指示的Cache空间。
3、 根据权利要求2所述的方法,其特征在于,所述利用Cache中当前的空 闲空间组成Cache管理对象的步骤包括将当前Cache中每一段地址连续的空 闲空间组成一个Cache管理对象。
4、 根据权利要求3所述的方法,其特征在于,所述从空闲空间链表中取出 对应所需占用的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管理对象。
5、 根据权利要求4所述的方法,其特征在于,所述从空闲空间链表中取出 为从空闲空间链表中按照从前至后的顺序取出;或者,从空闲空间链表中随 机取出。
6、 根据权利要求2至5中任意一项所述的方法,其特征在于,所述Cache 管理对象包括指示空闲空间链表中前一个Cache管理对象的起始地址的头指 针、Cache管理对象所指示空间的起始地址和长度、以及指示空闲空间链表中 后一个Cache管理对象的起始地址的尾指针;根据所需占用的Cache空间大小、空闲空间链表中各Cache管理对象包括 的头指针、起始地址和长度、尾指针,执行从空闲空间链表中取出Cache管理对象的步骤。
7、 一种缓存控制器,其特征在于,包括Cache应用单元,用于确定当前写操作所需占用的Cache空间大小,向Cache 管理驱动单元申请所需占用的Cache空间大小,根据Cache管理驱动单元发来 的Cache空间信息,将数据写入Cache空间中;Cache管理驱动单元,用于根据Cache应用单元的申请,为当前写操作分 配所需占用的Cache空间大小的Cache空间,将所分配的Cache空间信息发送 至Cache应用单元。
8、 根据权利要求7所述的緩存控制器,其特征在于,该緩存控制器进一步 包括链表单元,用于保存空闲空间链表;并且,所述Cache管理驱动单元进一步利用Cache中当前的空闲空间組成Cache 管理对象,将组成的Cache管理对象连接到链表单元保存的空闲空间链表中, 根据Cache应用单元的申请,从链表单元保存的空闲空间链表中取出对应所需 占用的Cache空间大小的Cache管理对象,将取出的Cache管理对象的信息作 为所分配的Cache空间信息发送至Cache应用单元;所迷Cache应用单元,用于根据Cache管理对象的信息,将数据写入该Cache 管理对象指示的Cache空间。
9、 根据权利要求8所述的缓存控制器,其特征在于,所述Cache管理驱动 单元利用当前Cache中每一段地址连续的空闲空间组成一个Cache管理对象。
10、 根据权利要求9所述的緩存控制器,其特征在于,所述Cache管理驱 动单元中包括检测执行子单元,用于接收Cache应用单元的申请,根据该申请进行检测, 在检测出任意一个Cache管理对象指示的Cache空间的大小大于所需占用的 Cache空间大小时,将携带该Cache管理对象的信息的拆分指示发送至管理对 象处理子单元,并且,在检测出整数个Cache管理对象指示的Cache空间的大 小对应所需占用的Cache空间大小时,将该整数个Cache管理对象的信息直接 发送至分配执行子单元,并且,在检测出任意一个Cache管理对象指示的Cache 空间的大小小于所需占用的Cache空间大小时,将合并指示发送至管理对象处 理子单元;管理对象处理子单元,用于在接收到拆分指示时,根据拆分指示中携带的 Cache管理对象的信息,将该Cache管理对象拆分成第一 Cache管理对象以及 其他Cache管理对象,其中,第一 Cache管理对象指示的Cache空间大'J 、对应 所需占用的Cache空间大小,将第一 Cache管理对象的信息发送至分配执行子 单元,并且,在接收到合并指示时,确定满足所需占用的Cache空间大小的Cache 管理对象的最小数量,从该最小数量中的一个Cache管理对象中拆分出第二 Cache管理对象,该第二 Cache管理对象以及所述最小数量中的其他Cache管 理对象共同指示的Cache空间的大小对应所需占用的Cache空间大小,将第二 Cache管理对象以及所述最小数量中的其他Cache管理对象的信息发送至分配 执行子单元;分配执行子单元,根据接收到的Cache管理对象的信息,从链表单元保存 的空闲空间链表中取出对应的Cache管理对象,将取出的Cache管理对象的信 息作为所分配的Cache空间信息发送至Cache应用单元。
11、 根据权利要求8所述的緩存控制器,其特征在于,所述链表单元保存 的空闲空间链表中包括一个以上的Cache管理对象,每一个Cache管理对象包 括指示前一个Cache管理对象的起始地址的头指针、Cache管理对象所指示空 间的起始地址和长度、以及指示后一个Cache管理对象的起始地址的尾指针;所述Cache管理驱动单元,用于根据Cache应用单元的申请、各Cache管 理对象包括的头指针、起始地址和长度、尾指针,执行从链表单元保存的空闲 空间链表中取出Cache管理对象的处理。
12、 一种分配緩存空间的装置,其特征在于,包括Cache以及如权利要求 7至11中任意一项所述的緩存控制器。
全文摘要
本发明公开了一种分配缓存空间的方法和装置以及一种缓存控制器。该方法包括确定当前写操作所需占用的缓存(Cache)空间大小;为当前写操作分配所需占用的Cache空间大小的Cache空间;将数据写入所分配的Cache空间中。缓存控制器包括Cache应用单元和Cache管理驱动单元。本发明提高了Cache空间的利用率。
文档编号G06F12/08GK101122886SQ20071012130
公开日2008年2月13日 申请日期2007年9月3日 优先权日2007年9月3日
发明者刘介良, 辉 安, 赖守锋 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1