CN101122886B - 分配缓存空间的方法和装置以及缓存控制器 - Google Patents

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

Info

Publication number
CN101122886B
CN101122886B CN200710121301XA CN200710121301A CN101122886B CN 101122886 B CN101122886 B CN 101122886B CN 200710121301X A CN200710121301X A CN 200710121301XA CN 200710121301 A CN200710121301 A CN 200710121301A CN 101122886 B CN101122886 B CN 101122886B
Authority
CN
China
Prior art keywords
cache
management object
cache management
space
free space
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.)
Expired - Fee Related
Application number
CN200710121301XA
Other languages
English (en)
Other versions
CN101122886A (zh
Inventor
安辉
赖守锋
刘介良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN200710121301XA priority Critical patent/CN101122886B/zh
Publication of CN101122886A publication Critical patent/CN101122886A/zh
Application granted granted Critical
Publication of CN101122886B publication Critical patent/CN101122886B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

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

Description

分配缓存空间的方法和装置以及缓存控制器
技术领域
本发明涉及数据存储技术,特别是涉及分配缓存(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,其中,缓存控制器的内部结构和功能可以利用上述本发明实施例中描述的缓存控制器来实现。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

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中任意一项所述的缓存控制器。
CN200710121301XA 2007-09-03 2007-09-03 分配缓存空间的方法和装置以及缓存控制器 Expired - Fee Related CN101122886B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200710121301XA CN101122886B (zh) 2007-09-03 2007-09-03 分配缓存空间的方法和装置以及缓存控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200710121301XA CN101122886B (zh) 2007-09-03 2007-09-03 分配缓存空间的方法和装置以及缓存控制器

Publications (2)

Publication Number Publication Date
CN101122886A CN101122886A (zh) 2008-02-13
CN101122886B true CN101122886B (zh) 2010-06-09

Family

ID=39085225

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200710121301XA Expired - Fee Related CN101122886B (zh) 2007-09-03 2007-09-03 分配缓存空间的方法和装置以及缓存控制器

Country Status (1)

Country Link
CN (1) CN101122886B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739353B (zh) * 2008-11-06 2012-06-27 瑞昱半导体股份有限公司 可调适缓冲装置及其方法
KR101070511B1 (ko) * 2009-03-20 2011-10-05 (주)인디링스 Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법
CN101551736B (zh) 2009-05-20 2010-11-03 杭州华三通信技术有限公司 基于地址指针链表的缓存管理装置和方法
US8745618B2 (en) 2009-08-25 2014-06-03 International Business Machines Corporation Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments
CN101957800A (zh) * 2010-06-12 2011-01-26 福建星网锐捷网络有限公司 多通道缓存分配方法及装置
CN102289411B (zh) * 2011-06-27 2014-03-26 北京握奇数据系统有限公司 一种智能卡资源调度的方法和智能卡
CN103838679B (zh) 2012-11-22 2017-08-04 中兴通讯股份有限公司 一种缓存处理方法及装置
CN103336673A (zh) * 2013-07-10 2013-10-02 中国建设银行股份有限公司 用于自助设备的海量文件重复存储方法和装置
CN104899208A (zh) * 2014-03-05 2015-09-09 腾讯科技(深圳)有限公司 一种浏览器的缓存方法及装置
CN105224565A (zh) * 2014-06-24 2016-01-06 广州市动景计算机科技有限公司 文字缓存方法及装置
CN105302497B (zh) * 2015-11-24 2019-09-24 浪潮(北京)电子信息产业有限公司 一种缓存管理方法与系统
CN108572790B (zh) * 2017-04-20 2021-11-26 深圳市得一微电子有限责任公司 一种固态硬盘写入指令排序方法、固态硬盘
CN110674053B (zh) * 2019-09-30 2021-09-14 深圳忆联信息系统有限公司 Ssd数据存储节点管理方法、装置、计算机设备及存储介质
CN117806572A (zh) * 2024-03-01 2024-04-02 合肥康芯威存储技术有限公司 一种存储设备以及内存管理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1378143A (zh) * 2001-03-30 2002-11-06 深圳市中兴通讯股份有限公司 一种实现快速数据传递的方法
CN1427342A (zh) * 2001-12-21 2003-07-02 上海贝尔有限公司 一种内存管理系统及其分配方法
CN1936859A (zh) * 2005-09-30 2007-03-28 康佳集团股份有限公司 一种内存监控方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1378143A (zh) * 2001-03-30 2002-11-06 深圳市中兴通讯股份有限公司 一种实现快速数据传递的方法
CN1427342A (zh) * 2001-12-21 2003-07-02 上海贝尔有限公司 一种内存管理系统及其分配方法
CN1936859A (zh) * 2005-09-30 2007-03-28 康佳集团股份有限公司 一种内存监控方法

Also Published As

Publication number Publication date
CN101122886A (zh) 2008-02-13

Similar Documents

Publication Publication Date Title
CN101122886B (zh) 分配缓存空间的方法和装置以及缓存控制器
US8417901B2 (en) Combining write commands to overlapping addresses or to a specific page
US9189389B2 (en) Memory controller and memory system
US20070274303A1 (en) Buffer management method based on a bitmap table
CN103229136B (zh) 磁盘阵列刷盘方法及磁盘阵列刷盘装置
CN107203330B (zh) 一种面向读写数据流的闪存数据分布方法
CN104866428A (zh) 数据存取方法和数据存取装置
CN102023809A (zh) 存储系统、从存储系统读取数据的方法及写入数据的方法
US8127116B2 (en) Dependency matrix with reduced area and power consumption
CN109388590A (zh) 提升多通道dma访问性能的动态缓存块管理方法和装置
CN101673246A (zh) 一种高效的先进先出数据池读写方法
KR20160024546A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN104765574A (zh) 数据云端存储方法
CN108701089B (zh) 用于处理到可寻址单元的部分的顺序写入的方法和设备
US9455017B2 (en) Storage control device, storage device, information processing system, and storage control method
CN102541746A (zh) 一种队列的数据处理方法和系统
CN101174198B (zh) 数据存储系统及其数据存取方法
CN110427347A (zh) 重复数据删除的方法、装置、存储节点及存储介质
CN104252422A (zh) 内存访问方法和内存控制器
CN115080455A (zh) 一种计算机芯片、计算机板卡、存储空间分配方法及装置
CN106254270A (zh) 一种队列管理方法及装置
CN104834478A (zh) 一种基于异构混合存储设备的数据写入及读取方法
CN103577349B (zh) 在高速缓存中选择数据进行刷盘的方法和装置
CN116955222A (zh) 智能预取缓冲器和队列管理
US9047959B1 (en) Data storage device, memory control method, and electronic device with data storage device

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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., 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: 20100609

Termination date: 20200903