CN107463509B - 缓存管理方法、缓存控制器以及计算机系统 - Google Patents
缓存管理方法、缓存控制器以及计算机系统 Download PDFInfo
- Publication number
- CN107463509B CN107463509B CN201610396787.7A CN201610396787A CN107463509B CN 107463509 B CN107463509 B CN 107463509B CN 201610396787 A CN201610396787 A CN 201610396787A CN 107463509 B CN107463509 B CN 107463509B
- Authority
- CN
- China
- Prior art keywords
- data block
- cache
- linked list
- lru
- accessed
- 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.)
- Active
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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/217—Hybrid disk, e.g. using both magnetic and solid state storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供了应用于计算机系统中的缓存管理方法、缓存管理器和计算机系统,包括缓存控制器选择缓存中待替换的第一数据块,其中,第一数据块为最近最少使用LRU链表的第一位置记录的数据块,LRU链表用于记录所述缓存中被访问的数据块的信息;缓存控制器确定第一数据块的最大历史重用距离大于预设阈值,其中,第一数据块的最大历史重用距离是根据第一数据块至少两次被访问时在LRU链表中的位置获得;缓存控制器禁止从缓存中淘汰所述第一数据块。本发明实施例通过有选择的禁止从缓存中淘汰数据块,能够有效的避免数据中心中的具有缓存价值的数据块频繁的换入和换出缓存,进而减少对缓存不必要的写入。
Description
技术领域
本发明涉及通信领域,更具体的,涉及通信领域中的缓存管理方法、缓存控制器以及计算机系统。
背景技术
近年来,非易失性存储器(Non-Volatile Memory,NVM)发展迅速。固态硬盘(SolidState Drive,SSD)作为现阶段比较成熟的NVM产品已经在许多场景中得到了广泛的应用,例如数据中心、工作站等。SSD相对于硬盘驱动器(Hard Disk Drive,HDD)具有更低的延迟,但是SSD的每千兆字节(GB)的价格远远高于HDD,即HDD使用相对较低的价格就能换来更大的容量,但是HDD的性能受限于磁头的机械移动。因此,目前SSD经常被部署到动态随机存取存储器(Dynamic Random Access Memory,DRAM)和HDD之间作为缓存层,来平衡价格和性能的需求。
尽管SSD展现出了众多具有吸引力的优势,但是它确有一些固有的限制。首先,SSD的寿命有限,SSD以Flash芯片为基础,每个读写单元的可擦写次数均受到限制,当写入量过多时,部分单元开始失效,使得整体SSD容量变小乃至不可用。其次,SSD的读写性能不均衡,SSD以页为粒度进行读写,以更大的块为粒度进行擦除,并且在对一个位置进行覆盖写时,必须先对其进行擦除才能写入新数据,这样就造成了读/写速度的差异——读性能优于写性能。所以,过量的写入不仅会缩短SSD的寿命,还会影响系统的性能。为了更好的使用SSD缓存,应该避免对SSD不必要的写入。
现有技术通过使用Ghost Cache对进入SSD缓存(SSD Cache)的数据进行筛选,数据块只有在Ghost Cache中再次命中之后才会被允许进入缓存。但是现有技术中,对于一些缓存价值大的数据块可能被频繁的换入和换出缓存,造成了对SSD不必要的写入。
发明内容
本发明实施例提供了应用于计算机系统中的缓存管理方法、缓存控制器和计算机系统,能够有效避免数据中心中的数据块频繁的换入和换出缓存,进而减少对缓存不必要的写入。
第一方面,本发明实施例提供了应用于计算机系统中的缓存管理方法,该缓存管理方法包括:缓存控制器选择缓存中待替换的第一数据块,其中,所述第一数据块为最近最少使用LRU链表的第一位置记录的数据块,所述LRU链表用于记录所述缓存中被访问的数据块的信息;所述缓存控制器确定所述第一数据块的最大历史重用距离大于预设阈值,其中,所述第一数据块的最大历史重用距离是根据所述第一数据块至少两次被访问时所述第一数据块在所述LRU链表中的位置获得;所述缓存控制器禁止从所述缓存中淘汰所述第一数据块。
当该第一数据块的最大历史重用距离大于预设值时,表示该第一数据块具有一定的缓存价值,但是又不会被频繁的访问。如果按照现有技术中的缓存管理方法,该第一数据块将被频繁的换入换出缓存,造成SSD不必要的写入。
本发明实施例通过有选择的禁止从缓存中淘汰数据块,能够有效的避免数据中心中的具有缓存价值的数据块频繁的换入和换出缓存,进而减少对缓存不必要的写入。
可选的,该缓存管理方法还包括:
所述缓存控制器将所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置,所述第二位置与所述LRU链表的头部的距离比所述第一位置与所述LRU链表的头部的距离小,其中,所述LRU链表的头部记录有访问时间距离当前时间最近的数据块的信息;
所述缓存控制器更新所述第一数据块的最大历史重用距离,例如可以将最大历史重用距离更新为初始值。
这时,第一数据块存储在SSD缓存中,并且通过将该第一数据块记录在该LRU链表中的第二位置,能够使第一数据块继续记录在该LRU链表中,相当于重新赋予了该第一数据块一段存储周期。
可选的,所述第二位置为与所述LRU链表的头部相距所述最大历史重用距离的位置。这样,能够根据第一数据块的历史访问情况,确定第一数据块在缓存中新增加的存储周期的长短。
可选的,当所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后再一次被访问时,所述缓存控制器将所述第一数据块的最大历史重用距离更新为所述第一数据块在所述再第一次被访问时所述第一数据块在所述LRU链表中的位置与所述第二位置之间的距离。
本发明实施例在该第一数据块记录到第二位置时,可以将该第一数据块视为一个新的数据块,不考虑其在记录到第二位置之前的历史访问情况,并且在该第一数据块记录到该第二位置之后第一次被访问时,该第一数据块的最大历史重用距离为该第一数据块当前在该LRU链表中记录的位置与第二位置之间的距离。
可选的,当所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后再一次被访问时,所述缓存控制器将所述第一数据块的最大历史重用距离更新为所述LRU链表的头部的位置与所述第二位置之间的距离。
可选的,在所述缓存控制器将所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后,所述方法还包括:
所述缓存控制器减小预设的记录信息表的链表的长度,其中,所述记录信息表用于记录所述计算机系统中第一次被访问并且尚未被缓存到所述缓存中的数据块的信息。
该记录信息表的链表的长度可以减小C/(C-Cg),其中,C为该LRU链表的长度,Cg为记录信息表的链表的长度。当将记录信息表的链表的长度减小之后,能够提高记录信息表中存储的信息对应的数据块进入缓存的难度,使得记录在第二位置中的该第一数据块能够在缓存中存储的更久,因而可以进一步减小对SSD的写入。
可选的,该缓存管理方法还包括:
所述缓存控制器选择所述缓存中待替换的第二数据块,其中,所述第二数据块为所述LRU链表的第三位置记录的数据块;
所述缓存控制器确定所述第二数据块的最大历史重用距离不大于所述预设阈值,其中,所述第二数据块的最大历史重用距离是根据所述第二数据块至少两次被访问时所述第二数据块在所述LRU链表中的位置获得;
所述缓存控制器从所述缓存中淘汰所述第二数据块。
当该第二数据块的最大历史重用距离小于预设值时,表示该第二数据块在某一存储期间具有很强的缓存价值。因为现有技术中的缓存管理方法已经能够很好的缓存该第二数据块,不会造成该第二数据块频繁的换入换出缓存。当根据现有技术中的缓存管理方法确定该第二数据块需要被换出缓存时,代表该第二数据块已经失去热度,所以将该第二数据块从缓存中淘汰。
可选的,该缓存管理方法还包括:
所述缓存控制器选择所述缓存中待替换的第三数据块,其中,所述第三数据块为所述LRU链表的第四位置记录的数据块;
所述缓存控制器确定所述第三数据块的最大历史重用距离为初始值;
所述缓存控制器从所述缓存中淘汰所述第三数据块。
当该第三数据块的在LRU链表中没有被访问过时,说明该第三数据块本身缓存价值很小,可以将该第三数据块从缓存中淘汰。
当所述第一数据块在记录至所述第二位置之后被访问或者被淘汰出SSD缓存,所述缓存控制器增加所述记录信息表的链表的长度。
记录信息表的链表的长度可以增加C/Cg。当将记录信息表的链表的长度增加之后,能够降低记录信息表中存储的信息对应的数据块进入缓存的难度,使其他数据块能够更容易的存储到缓存中。
可选的,所述LRU链表包括L个段,所述L个段按照从所述LRU链表的头部至尾部的顺序依次从1至L顺序编号,所述LRU链表中的每个数据块记录在所述LRU链表中的位置为所述每个数据块所在的段的编号,其中,所述LRU链表的尾部记录有访问时间距当前时间最远的数据块的信息,L为大于1的正整数。
可选的,所述L个段中的前L-1个段记录的数据块的数量相等,所述L段中的第L个段中记录的数据块的数量小于或等于所述前L-1个段中每个段所记录的数据块的数量。
本发明实施例中,使用分段的方式管理LRU链表,可以方便的估计LRU链表中记录的数据块之间的距离。当每个分段记录相同数量的数据块时,可以更准确的确定LRU链表中两个数据块之间的距离。
可选的,所述第一位置、所述第三位置和所述第四位置均为所述LRU链表的尾部。
第二方面,本发明实施例提供了一种缓存控制器,该缓存控制器用于执行上述第一方面或第一方面的任意可能的实现方式中的方法,具体的,该缓存控制器包括用于执行上述第一方面或第一方面任意可能的实现方式中的方法的模块。
第三方面,本发明实施例提供了一种计算机系统,包括缓存以及缓存控制器,所述缓存用于缓存所述计算机系统中被访问的数据,所述缓存控制器用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。
第四方面,本发明实施例提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的计算机系统的总体架构图。
图2是本发明一个实施例的计算机系统的示意性结构图。
图3是本发明一个实施例的LRU链表的示意图。
图4是本发明一个实施例的缓存管理方法的示意性流程图。
图5是本发明一个实施例的LRU链表的示意图。
图6是本发明另一个实施例的缓存管理方法的示意性流程图。
图7是本发明一个实施例的缓存控制器的示意性框图。
图8是本发明另一个实施例的计算机系统的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
图1示出了本发明实施例提供的一种计算机系统架构图。缓存(Cache)是介于中央处理器(Central Processing Unit,CPU)和主存之间的小容量存储器,存取速度比主存快,接近CPU。它能高速地向CPU提供指令和数据,提高程序的执行速度。Cache技术是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。
实际应用中,Cache作为主存的缓冲存储器,可以由静态随机存取存储器(StaticRandom Access Memory,SRAM)、DRAM等易失性存储器来实现,有可以由固态硬盘(SolidState Drive,SSD)、相变存储器(Phase-change Random Access memory,PCM)、可变电阻式存储器(Resistive random-access memory,RRAM)等NVM来实现。Cache的所有控制逻辑可以由缓存控制器实现。
图2示出了本发明实施例的计算机系统的示意性结构图。缓存控制器22位于主机20中,用于对设备10中的缓存进行管理。主机20中包括块层21,缓存控制器22和驱动层23。设备10中包括外存HDD 11和SSD 12。在图2中,以SSD 12为缓存为例进行描述。如图2所示,缓存控制器22中包括SSD管理器221,SSD管理器221负责对SSD 12缓存的管理。实际应用中,SSD管理器221可以是一种处理器或控制芯片。缓存控制器22中包括多种软件模块,以便于对SSD中的数据块进行管理。例如,这些软件模块可以包括SSD管理器221。SSD管理器221中包括第一最近最少使用(Least Recently Used,LRU)管理器2211、模式分类器2212(pattern classifier)和替换过滤器2213(replacement filter)。缓存控制器22中还可以包括第二LRU管理器222。
第一LRU管理器2211负责对SSD缓存进行LRU管理。模式分类器2212跟踪一个数据块的访问,并判断其访问模式。替换管理器2213被嵌入到LRU流程中,当需要将一个数据块移出SSD缓存时,根据确定的待替换块的访问模式,有选择的将待替换块移动到SSD缓存中。SSD缓存中被访问的数据块的信息记录在第一LRU链表中。该数据块的信息可以为代表该数据块属性的信息,例如该数据块的地址。本发明实施例中,可以设置第一LRU链表的大小为C。
第二LRU管理器222负责对Ghost Cache进行LRU管理。Ghost Cache可以称为记录信息表,用于记录内存第一次被访问并且尚未被缓存到所述缓存中的数据块的信息。该数据块的信息可以称为该数据块的元数据。元数据为描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找以及文件记录等功能。应注意,这里,Ghost Cache并不是真正的缓存,其使用的目的是为了过滤缓存价值不高的数据。内存第一次访问的数据将其元数据放入第二LRU链表,当Ghost Cache中记录的元数据对应的数据再次被访问时,将该数据加入SSD缓存,即将该数据写入SSD缓存中。
本发明实施例中,可以设置第二LRU链表的大小为Cg。当元数据需要加入第二LRU链表并且第二LRU链表已满时,将第二LRU链表的尾部的元数据移出该第二LRU链表,之后将需要加入的元数据加入到第二LRU链表的头部。
本发明实施例中,LRU链表的头部记录有访问时间距离当前时间最近的数据块的信息,LRU链表的尾部记录有访问时间距当前时间最远的数据块的信息。还可以称头部位置为最近使用(Most Recently Used,MRU)位置,称尾部为LRU位置。
可选的,本发明实施例中,第一LRU链表可以包括L个段,L个段按照从链表头部至尾部的顺序依次从1至L顺序编号。这样,第一LRU链表中记录的每个数据块在该第一LRU链表中的位置为每个数据块所在的段的编号,SSD缓存中的两个数据块在第一LRU链表中的距离为这两个数据块的信息分别所在的段的编号的差值,其中,L为大于1的正整数。
可选的,所述L个段中的前L-1个段记录的数据块的数量相等,所述L段中的第L个段中记录的数据块的数量小于或等于所述前L-1个段中每个段所记录的数据块的数量。
本发明实施例中,使用分段的方式管理第一LRU链表,可以方便的估计第一LRU链表中记录的两个数据块之间的距离。当每个分段记录相同数量的数据块时,可以更准确的确定第一LRU链表中两个数据块之间的距离。
图3所示了本发明一个实施例的第一LRU链表的示意性结构图。该第一LRU链表可以包括4个等长的段。该第一LRU链表的头部所在的段的编号为1,按照从头部至尾部的顺序将各个段的编号依次确定为2、3、4,这样该第一LRU链表的尾部位于段4的尾部。应注意,链表中的段的编号可以用于标记数据块在缓存中的位置,第一LRU链表在逻辑上仍然为一个完整的链表。
本发明实施例中,第一LRU链表中的记录的数据块会不断的更新。当该链表的长度固定并且该链表中已满了时,如果需要在该链表中记录新的数据块,则需要先将链表尾部的数据块的信息移出该链表。这时,新记录的数据块的信息会被存放在该链表的头部,该链表中之前记录的数据块依次向链表尾部方向移动一个数据块的距离。
将链表尾部的数据块的信息移出该链表具体可以为将该链表的第L段的尾部的数据块的信息移出链表,然后依次将第1段中原先记录的数据块依次向第1段的尾部移动一个数据块的信息的距离,将原先记录在第1段的尾部的数据块的信息移动到第2段的头部,第2段至第L段的数据块的信息依次按照上述方式向每个段的尾部移动。然后,将该新记录的数据块的信息记录至该链表的第1段的头部。
并且,当第一LRU链表中记录的某个数据块被访问之后,该数据块的信息会被移动到该链表的头部。
如果该数据块被访问时所在的段的编号为p,将该数据块的信息被移动到该链表的头部具体可以为将该数据块的信息从第一LRU链表移出,然后依次将第1段至第p段中记录在该数据块之前的数据块向尾部方向移动一个数据块的距离,再将该被访问的数据块的信息移动到该链表的第1段的头部。
图4示出了本发明的一个实施例的应用于计算机系统的缓存管理方法100的具体流程图。该方法100包括:
S101,判断数据块B是否在SSD缓存中。
当SSD缓存中存在该数据块B时,下一步执行S102。当SSD缓存中不存在该数据块B时,下一步执行S104。
具体的,SSD缓存用于DRAM和HDD之间。当需要访问数据块B并且该数据块B没有存储在内存中时,需要在SSD缓存中查找是否存在该数据块B。
S102,确定数据块B的当前重用距离。
具体的,本发明实施例中,模式分类器能够跟踪该SSD缓存中的每个数据块的访问,统计每个数据块每次被访问时的当前重用距离。
本发明实施例中,第一LRU链表中记录的一个数据块当前被访问时在第一LRU链表中的位置与该数据块当前的上一次访问时在第一LRU链表中的位置之间的距离为该数据块的当前重用距离。
当一个新的数据块加入到SSD缓存中时,将该数据块的信息加入第一LRU链表的头部,可以初始化该数据块的当前重用距离为初始值。该初始值例如可以为一个负数。
当该数据块加入到该SSD缓存之后第一次被访问时,该数据块的当前重用距离为该数据块在第一次访问时在记录在第一LRU链表中的位置与该第一LRU链表的MRU位置之间的距离,即可以为该数据块当前的段的编号与1的差值。在该数据块第一次被访问之后,将该数据块记录在该第一LRU链表的MRU位置。
当该数据块加入到该SSD缓存之后第M次被访问,M为大于1的正整数时,该数据块的当前重用距离为该数据块在第M次访问时记录在第一LRU链表中的位置与该数据块第M-1次被访问时所记录在第一LRU链表的位置之间的距离。因为上一次(即M-1)访问之后,该数据块被记录在MRU位置,因此该数据块第M次被访问时的当前重用距离为该数据块在第M次访问时记录在第一LRU链表中的位置与该第一LRU链表的MRU位置之间的距离,即可以为该数据块第M次访问时所在的段的编号与1的差值。
例如,图3中的段1中的阴影部分表示数据块在一次被访问后被记录在链表的MRU位置,此时该数据块所在的段为段1。当该数据块在该次访问之后的下一次被访问时,该数据块所在的段的编号为3。这时,该数据块的当前重用距离为3-1=2。
这里,可以将记录在第一LRU链表的第一位置数据块确定为待替换的数据块。现有技术中会将该待替换的数据块直接淘汰出SSD缓存。而本发明实施例中,可以禁止将该待替换的数据块移出SSD缓存,并且在禁止将该待替换的数据块移出SSD缓存的同时,将该待替换的数据块记录在第一LRU链表中的第二位置。本发明实施例称将待替换的数据块继续存储在SSD缓存中的过程为重加。
当一个数据块被重加到SSD缓存中时,可以初始化该数据块的当前重用距离为初始值。该初始值例如可以为一个负数。
可选的,当该数据块重加到该SSD缓存之后第一次被访问时,该数据块的当前重用距离为该数据块在重加之后第一次被访问时记录在第一LRU链表中的位置与该第二位置之间的距离,即可以为该数据块当前的段的编号与第二位置的编号的差值。在该数据块重加之后第一次被访问之后,将该数据块记录到该第一LRU链表的MRU位置。
例如,数据块重加之后记录在第一LRU链表的第二位置,该第二位置所在的段的编号为2,在该数据块重加到SSD缓存之后第一次被访问时记录在第一LRU链表的段3的头部,此时该数据块所在的段为段3,则该数据块的当前重用距离为3-2=1。
可选的,当所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后再一次被访问时,所述缓存控制器将所述第一数据块的最大历史重用距离更新为所述LRU链表的头部的位置与所述第二位置之间的距离。
例如,数据块重加之后被记录在第一LRU链表的第二位置,该第二位置所在的段的编号为2,在该数据块重加到SSD缓存之后第一次被访问之后会记录在第一LRU链表的头部,此时该数据块所在的段为段1,则该数据块的当前重用距离为2-1=1。
当该数据块重加到该SSD缓存之后第N次被访问,N为大于1的正整数时,该数据块的当前重用距离为该数据块在重加之后第N次访问时记录在第一LRU链表中的位置为该数据块第N-1次被访问时所在的位置之间的距离。因为上一次(即N-1次)访问之后,该数据块被记录到MRU位置,因此该数据块第N次被访问时的当前重用距离为该数据块在第N次访问时记录在第一LRU链表中的位置与该第一LRU链表的MRU位置之间的距离,即可以为该数据块第N次访问时所在的段的编号与1的差值。
S103,根据B的当前重用距离,确定B的最大历史重用距离。
具体的,当B在加入到SSD缓存之后第i次被访问时,可以在前i次中每次获得的当前重用距离中,确定B的最大历史重用距离。
具体的,当第i次获得的当前重用距离小于或等于第i-1次获得最大历史重用距离时,该数据块的最大历史重用距离不变。当第i次获得的当前重用距离大于第i-1次获得的最大历史重用距离时,将第i次获得的当前重用距离作为该数据块的最大历史重用距离。
例如,当B被加入SSD缓存时,B的最大历史重用距离为初始值,例如为-1。
当B加入SSD缓存后第一次被访问时的当前重用距离为2,此时当前重用距离2大于-1,则确定B第一次被访问时的最大历史重用距离为2。
当B加入SSD缓存后第二次被访问时的当前重用距离为1,此时当前重用距离1小于B加入SSD缓存之后第一次被访问时的最大历史重用距离2,则不更新该数据块的最大历史重用距离。
当B加入SSD缓存后第三次被访问时的当前重用距离为3,此时当前重用距离3大于B加入到SSD缓存之后第二次被访问时的最大历史重用距离2,则将该数据块的最大历史重用距离更新为3。
又例如,当数据块被重加到SSD缓存时,该数据块的最大历史重用距离为初始值,例如为-1。
当B重加到SSD缓存后第一次被访问时的当前重用距离为2,此时当前重用距离2大于-1,则确定B重加后第一次被访问时的最大历史重用距离为2。
当B重加到SSD缓存后第二次被访问时的当前重用距离为1,此时当前重用距离1小于B重加到SSD缓存之后第一次被访问时的最大历史重用距离2,则不更新该数据块的最大历史重用距离。
当B重加到SSD缓存后第三次被访问时的当前重用距离为3,此时当前重用距离3大于B重加到SSD缓存之后第二次被访问时最大历史重用距离2,则将该数据块的最大历史重用距离更新为3。
S104,判断数据块B的元数据是否在Ghost Cache中。
当Ghost Cache中存在该数据块B的元数据时,下一步执行S105。当Ghost Cache中不存在该数据块B的元数据时,下一步执行S106。
S105,判断SSD缓存是否已满。
当数据块B的元数据在Ghost Cache中时,需要将数据块B加入到SSD缓存中。此时需要判断SSD缓存是否已满。当SSD缓存已满时,下一步执行S107,当SSD缓存没有满时,下一步执行S112。
S106,将B的元数据存入Ghost Cache。
也就是说,当访问的数据块既没有在SSD缓存中,其元数据也没有在Ghost Cache中时,将该数据块的元数据存入Ghost Cache中。具体的,可以将该元数据放入第二LRU链表的头部。执行完S106,流程结束。
S107,在SSD缓存中确定候选块。
具体的,当SSD缓存已满时,需要将该SSD缓存中的一个数据块移出SSD缓存,然后将数据块B加入到该SSD缓存中。本发明实施例中,称待替换的数据块为候选块。
可选的,S107中,由于第一LRU链表的LRU位置记录的数据块为最近最少使用的数据块,可以将该第一LRU链表的LRU位置记录的数据块作为候选块,该候选块例如为D。可以称该第一LRU链表的LRU位置为第一位置。
S108,确定候选块的访问模式。
具体的,本发明实施例中,模式分类器能够跟踪该SSD缓存中的每个数据块的访问,统计每个数据块每次被访问时的当前重用距离,并确定每个数据块的最大历史重用距离。当一个数据块D被确定为候选块时,模式分类器根据该候选块的最大历史重用距离,确定该候选块的访问模式。
本发明实施例中,可以设置第一阈值,根据该第一阈值和候选块的最大历史重用距离,确定候选块D的访问模式。
具体的,如果该数据块D在加入SSD缓存或重加到SSD缓存中没有被访问过,则此时该候选块D的最大历史重用距离为初始值,该候选块D的访问模式为第一访问模式,该第一访问模式也可以称为弱局部性。
如果该候选块D的最大历史重用距离小于第一阈值,该数据块缓存价值高,该候选块D的访问模式为第二访问模式,该第二访问模式也可以称为强局部性。
如果该候选块D的最大历史重用距离大于或等于第一阈值,该候选块D的访问模式为第三访问模式,该第三访问模式也可以称为中局部性。
应注意,第一阈值需要根据第一LRU链表包括的分段来确定。例如,如果该第一LRU链表包括L个段,则如果该候选块D的最大历史重用距离为Z,则Z必然为一个小于L的正整数。因此,第一阈值的取值范围为1至L。
S109,判断该候选块是否需要重加。当需要重加时,下一步执行S110,当不需要重加时,下一步执行S111。
替换过滤器可以从模式分类器中获取候选块的访问模式,并根据该候选块的访问模式,判断该候选块是否需要重加。
具体的,如果该候选块的访问模式为强局部性,则不重加该候选块。因为传统的LRU策略已经能够很好的缓存此类具有强局部性的数据块,不会造成具有强局部性的块被频繁的换入换出缓存。当根据LRU策略该块需要被换出缓存时,代表该数据块已经失去热度,所以重加这部分数据块不会带来任何好处。
如果该候选块的访问模式为弱局部性,则不重加该候选块。因为具有弱局部性的数据块在加入SSD缓存或者重加到SSD缓存后没有被访问过,说明其本身缓存价值很小,可以将其移出SSD缓存。
如果该候选块的访问模式为中局部性,则对该候选块进行重加。因为具有中局部性的数据块具有一定的缓存价值,但是又不会被频繁的访问。如果按照传统的LRU策略,具有中局部性的块可能会被频繁的换入换出缓存,造成SSD不必要的写入。本发明实施例中,将具有中局部性的候选块进行重加。
S110,将候选块重加到SSD缓存中。
具体的,将候选块D重加到SSD缓存中,并将候选块D记录到该第一LRU链表的第二位置中,该第二位置与第一LRU链表的头部的距离比该候选块第一位置与第一LRU链表的头部的距离小。之后初始化D的当前重用距离,例如将D的当前重用距离初始化为-1。
可选的,第二位置可以为与所述LRU链表的头部相距所述历史重用距离的位置。
具体的,在重加该数据块时,可以选择合适的上述第二位置。如果该第二位置太靠近第一LRU链表的MRU位置,D会在SSD缓存中滞留较长的时间。如果第二位置太靠近第一LRU链表的尾部(LRU)位置,D可能会被过早的换出SSD缓存。此时,可以将该数据块的最大历史重用距离作为指示,确定该第二位置,使得第二位置为与所述LRU链表的最近使用MRU位置相距所述最大历史重用距离的位置,这样,能够根据候选块的历史访问情况,确定合适的第二位置,使候选块在SSD缓存中具有合适的缓存时间。
例如,如图5所示,当候选块D为第一LRU链表的尾部的数据块,并且确定D的访问模式为中局部性时,根据D的最大历史重用距离,确定重加D的第二位置。例如,如果此时该候选块的最大历史重用距离为2时,则将该候选块记录在该第一LRU链表的编号为2的段的头部。
在将D重加到SSD缓存之后,原来记录在该第二位置的数据块以及记录在该第二位置之后的数据块依次向第一LRU链表的尾部移动一个数据块的距离。在执行完S110的步骤之后,下一步执行S107,即重新在SSD缓存中确定下一个候选块。例如,可以继续确定此时记录在该第一LRU链表的LRU位置的数据块为候选块。
可选的,本发明实施例中,在将数据块D重加到SSD缓存中之后,即将该数据块记录在第一LRU链表的第二位置之后,减小第二LRU链表的长度。
例如,第二LRU链表的长度可以减小C/(C-Cg)。当将第二LRU链表的长度减小之后,能够提高Ghost Cache中存储的元数据对应的数据块进入SSD缓存的难度,使得重加到SSD缓存中的数据块能够在SSD缓存中存储更久,因而可以进一步减小对SSD的写入。
可选的,在将所述候选块重加到所述SSD缓存中后,可以更新所述候选块的重用距离。
作为一例,当所述候选块在重加到所述SSD缓存之后,可以将所述候选块的最大历史重用距离更新为所述初始值。
可选的,当所述候选块在重加到所述SSD缓存之后第一次被访问时,可以将所述候选块的最大历史重用距离更新为所述候选块在重加之后第一次被访问时在记录在所述第一LRU链表中的位置与所述第二位置之间的距离。
因为按照现有技术中的缓存策略,候选块会被移出SSD缓存,而本发明实施例能够根据该候选块的访问模式,将该候选块重加到该SSD缓存中,相当于重新赋予了该候选块在该SSD缓存中一段存储周期。因此,在该候选块重加到SSD缓存中,可以将该候选块视为一个新的数据块,将其的当前重用距离初始化,即不考虑该候选块在重加到SSD缓存之前的历史访问情况。并且在该候选块重加到该SSD缓存之后第一次被访问时,该候选块的当前重用距离为该候选块当前记录在第一LRU链表中的位置与第二位置之间的距离。
可选的,当所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后再一次被访问时,所述缓存控制器将所述第一数据块的最大历史重用距离更新为所述LRU链表的头部的位置与所述第二位置之间的距离。
具体的,所述候选块在重加到所述SSD缓存之后确定D的最大历史重用距离可以参见上述S102和S103的描述,为避免重复,这里不再赘述。
可选的,本发明实施例中,当D在重加到SSD缓存中被访问或者D在重加到SSD缓存之后被淘汰时,可以增加第二LRU链表的长度。
例如,第二LRU链表的长度可以增加C/Cg。当将第二LRU链表的长度增加之后,能够降低Ghost Cache中存储的元数据对应的数据块进入SSD缓存的难度,使其他数据块能够更容易的存储到SSD缓存中。
S111,将候选块移出SSD缓存。
具体的,当该候选块的访问模式为弱访问模式或者强访问模式时,将该候选块移出SSD缓存,即从SSD缓存中淘汰该候选块,并将第一LRU链表中的该候选块的信息移出。同时,可以将第一LRU链表中记录的每个数据块依次向第一LRU链表的尾部移动一个数据块的距离。
S112,将数据块B存入SSD缓存中。
具体的,将数据块B存入SSD缓存中,并且将数据块B记录到第一LRU链表的头部。在将数据块B存入SSD缓存中时,可以设置数据块B的当前重用距离为初始值,例如为-1。
当流程从S105执行到S112时,该SSD缓存中没有存满,则可以将第一LRU链表中的每个数据块的信息依次向第一LRU链表的尾部移动一个数据块的距离,然后将该数据块记录到第一LRU链表的头部。
当执行完S112时,流程结束。
本发明实施例通过有选择的禁止从缓存中淘汰数据块,能够有效的避免数据中心中的具有缓存价值的数据块频繁的换入和换出缓存,进而减少对缓存不必要的写入。
图6示出了本发明实施例的一种应用与计算机系统中的缓存管理方法200的示意性流程图。该方法200包括:
S210,缓存控制器选择缓存中待替换的第一数据块,其中,所述第一数据块为最近最少使用LRU链表的第一位置记录的数据块,所述LRU链表用于记录所述缓存中被访问的数据块的信息。
该缓存可以为上述图4中的SSD缓存,该待替换的第一数据块可以为上述图4中的S107中的候选块,该LRU链表可以为上述图4中的第一LRU链表。具体的,可以参见上述图4中的S101、S104、S105和S107的描述,为避免重复,这里不再赘述。
S220,所述缓存控制器确定所述第一数据块的最大历史重用距离大于预设阈值,其中,所述第一数据块的最大历史重用距离是根据所述第一数据块至少两次被访问时所述第一数据块在所述LRU链表中的位置获得。
该最大历史重用距离可以为上述图4中S103中的最大历史重用距离。S220的过程具体的可以参见上述图4中的S108的描述,为避免重复,这里不再赘述。
S230,所述缓存控制器禁止从所述缓存中淘汰所述第一数据块。
具体的,S230可以参见上述图4中的S109的描述,为避免重复,这里不再赘述。
本发明实施例通过有选择的禁止从缓存中淘汰数据块,能够有效的避免数据中心中的具有缓存价值的数据块频繁的换入和换出缓存,进而减少对缓存不必要的写入。
可选的,在S230之后,所述缓存控制器将所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置,所述第二位置与所述LRU链表的头部的距离比所述第一位置与所述LRU链表的头部的距离小,其中,所述LRU链表的头部记录有访问时间距离当前时间最近的数据块的信息。
在所述缓存控制器将所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后,所述缓存控制器更新所述第一数据块的最大历史重用距离。
可选的,当所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后再一次被访问时,所述缓存控制器将所述第一数据块的最大历史重用距离更新为所述第一数据块在所述再一次被访问时所述第一数据块在所述LRU链表中的位置与所述第二位置之间的距离。
该第一位置可以为图4中S107中的第一位置,该第二位置可以为图4中S110中的第二位置。具体的,可以参见上述图4中S110的描述,为避免重复,这里不再赘述。
可选的,在所述缓存控制器将所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后,所述方法还包括:
所述缓存控制器减小预设的记录信息表的链表的长度,其中,所述记录信息表用于记录所述计算机系统中第一次被访问并且尚未被缓存到所述缓存中的数据块的信息。
被访问的数据块可以为上述图4中的数据块B,记录信息表可以为上述图4中的Ghost Cache,该记录信息表的链表可以为图4中的第二LRU链表。具体的,可以参见上述图4中的S110的描述,为避免重复,这里不再赘述。
可选的,该缓存管理方法还包括:
所述缓存控制器选择所述缓存中待替换的第二数据块,其中,所述第二数据块为所述LRU链表的第三位置记录的数据块;
所述缓存控制器确定所述第二数据块的最大历史重用距离不大于所述预设阈值,其中,所述第二数据块的最大历史重用距离是根据所述第二数据块至少两次被访问时所述第二数据块在所述LRU链表中的位置获得;
所述缓存控制器从所述缓存中淘汰所述第二数据块。
该第二数据块可以为上述图4中的候选块,具体的,可以参见上述图4中的S101、S104、S105、S107、S109和S111的描述,为避免重复,这里不再赘述。
可选的,该缓存管理方法还包括:
所述缓存控制器选择所述缓存中待替换的第三数据块,其中,所述第三数据块为所述LRU链表的第四位置记录的数据块;
所述缓存控制器确定所述第三数据块的最大历史重用距离为初始值,其中,所述第三数据块在所述LRU链表中没有被访问过;
所述缓存控制器从所述缓存中淘汰所述第三数据块。
该第三数据块可以为上述图4中的候选块,具体的,可以参见上述图4中的S101、S104、S105、S107、S109和S111的描述,为避免重复,这里不再赘述。
图7为本发明实施例提供的一种缓存控制器400的示意性框图。该缓存控制器400包括:
选择模块410,用于选择缓存中待替换的第一数据块,其中,所述第一数据块为最近最少使用LRU链表的第一位置记录的数据块,所述LRU链表用于记录所述缓存中被访问的数据块的信息;
确定模块420,用于确定所述第一数据块的最大历史重用距离大于预设阈值,其中,所述第一数据块的最大历史重用距离是根据所述第一数据块至少两次被访问时所述第一数据块在所述LRU链表中的位置获得;
控制模块430,用于禁止从所述缓存中淘汰所述第一数据块。
本发明实施例通过有选择的禁止从缓存中淘汰数据块,能够有效的避免数据中心中的具有缓存价值的数据块频繁的换入和换出缓存,进而减少对缓存不必要的写入。
可选的,缓存控制器还包括:
移动模块,用于将所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置,所述第二位置与所述LRU链表的头部的距离比所述第一位置与所述LRU链表的头部的距离小,其中,所述LRU链表的头部记录有访问时间距离当前时间最近的数据块的信息;
更新模块,用于更新所述第一数据块的最大历史重用距离。
可选的,所述更新模块还用于当所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后再一次被访问时,将所述第一数据块的最大历史重用距离更新为所述第一数据块在所述再第一次被访问时所述第一数据块在所述LRU链表中的位置与所述第二位置之间的距离。
可选的,所述控制模块430还用于:
减小预设的记录信息表的链表的长度,其中,所述记录信息表用于记录所述计算机系统中第一次被访问并且尚未被缓存到所述缓存中的数据块的信息。
可选的,所述选择模块410还用于选择所述缓存中待替换的第二数据块,其中,所述第二数据块为所述LRU链表的第三位置记录的数据块;
所述确定模块420还用于确定所述第二数据块的最大历史重用距离不大于所述预设阈值,其中,所述第二数据块的最大历史重用距离是根据所述第二数据块至少两次被访问时所述第二数据块在所述LRU链表中的位置获得;
所述控制模块430还用于从所述缓存中淘汰所述第二数据块。
可选的,所述选择模块410还用于选择所述缓存中待替换的第三数据块,其中,所述第三数据块为所述LRU链表的第四位置记录的数据块;
所述确定模块420还用于确定所述第三数据块的最大历史重用距离为初始值,其中,所述第三数据块在所述LRU链表中没有被访问过;
所述控制模块430还用于从所述缓存中淘汰所述第三数据块。
应理解,根据本申请实施例的缓存控制器400可对应于执行本申请实施例中的方法200中的缓存控制器,并且缓存控制器400中的各个模块的上述操作和/或功能可以用于执行上述方法200实施例中与缓存控制器对应的各个流程和/或步骤,为避免重复,在此不再赘述。
上面从模块化功能实体的角度对本发明实施例中的缓存控制器进行描述,下面对本发明实施例中的计算机系统进行描述,请参阅图8,本发明实施例中的计算机系统一个实施例包括:处理器510、缓存520、缓存控制器530和内存540。其中,缓存520用于缓存计算机系统中被访问的部分数据,处理器510用于处理内存540中的部分数据。
缓存控制器530用于:
选择所述缓存中待替换的第一数据块,其中,所述第一数据块为最近最少使用LRU链表的第一位置记录的数据块,所述LRU链表用于记录所述缓存中被访问的数据块的信息;
确定所述第一数据块的最大历史重用距离大于预设阈值,其中,所述第一数据块的最大历史重用距离是根据所述第一数据块至少两次被访问时所述第一数据块在所述LRU链表中的位置获得;
禁止从所述缓存中淘汰所述第一数据块。
可选的,所述缓存控制器530还用于:
将所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置,所述第二位置与所述LRU链表的头部的距离比所述第一位置与所述LRU链表的头部的距离小,其中,所述LRU链表的头部记录有访问时间距离当前时间最近的数据块的信息;
更新所述第一数据块的最大历史重用距离。
可选的,所述缓存控制器530还用于:
当所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后第一次被访问时,将所述第一数据块的最大历史重用距离更新为所述第一数据块在所述再第一次被访问时所述第一数据块在所述LRU链表中的位置与所述第二位置之间的距离。
可选的,在所述缓存控制器530将所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后,所述方法还包括:
所述缓存控制器530减小预设的记录信息表的链表的长度,其中,所述记录信息表用于记录所述计算机系统中第一次被访问并且尚未被缓存到所述缓存中的数据块的信息。
可选的,所述缓存控制器530还用于:
选择所述缓存中待替换的第二数据块,其中,所述第二数据块为所述LRU链表的第三位置记录的数据块;
确定所述第二数据块的最大历史重用距离不大于所述预设阈值,其中,所述第二数据块的最大历史重用距离是根据所述第二数据块至少两次被访问时所述第二数据块在所述LRU链表中的位置获得;
从所述缓存中淘汰所述第二数据块。
可选的,所述缓存控制器530还用于:
选择所述缓存中待替换的第三数据块,其中,所述第三数据块为所述LRU链表的第四位置记录的数据块;
确定所述第三数据块的最大历史重用距离为初始值,其中,所述第三数据块在所述LRU链表中没有被访问过;
从所述缓存中淘汰所述第三数据块。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例还提供一种实现访问请求处理方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者其他非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (18)
1.一种应用于计算机系统中的缓存管理方法,其特征在于,包括:
缓存控制器选择缓存中待替换的第一数据块,其中,所述第一数据块为最近最少使用LRU链表的第一位置记录的数据块,所述LRU链表用于记录所述缓存中被访问的数据块的信息;
所述缓存控制器确定所述第一数据块的最大历史重用距离大于预设阈值,其中,所述历史重用距离是所述第一数据块当前被访问时在所述LRU链表中的位置与所述第一数据块上一次访问时在所述LRU链表中的位置之间的距离,所述第一数据块的最大历史重用距离是所述第一数据块至少两次被访问时的所述历史重用距离中的最大值;
所述缓存控制器禁止从所述缓存中淘汰所述第一数据块。
2.根据权利要求1所述的缓存管理方法,其特征在于,还包括:
所述缓存控制器将所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置,所述第二位置与所述LRU链表的头部的距离比所述第一位置与所述LRU链表的头部的距离小,其中,所述LRU链表的头部记录有访问时间距离当前时间最近的数据块的信息;
所述缓存控制器更新所述第一数据块的最大历史重用距离。
3.根据权利要求2所述的缓存管理方法,其特征在于,还包括:
当所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后再一次被访问时,所述缓存控制器将所述第一数据块的最大历史重用距离更新为所述第一数据块在所述再一次被访问时所述第一数据块在所述LRU链表中的位置与所述第二位置之间的距离。
4.根据权利要求2所述的缓存管理方法,其特征在于,在所述缓存控制器将所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后,所述方法还包括:
所述缓存控制器减小预设的记录信息表的链表的长度,其中,所述记录信息表用于记录所述计算机系统中第一次被访问并且尚未被缓存到所述缓存中的数据块的信息。
5.根据权利要求1-4中任一项所述的缓存管理方法,其特征在于,还包括:
所述缓存控制器选择所述缓存中待替换的第二数据块,其中,所述第二数据块为所述LRU链表的第三位置记录的数据块;
所述缓存控制器确定所述第二数据块的最大历史重用距离不大于所述预设阈值,其中,所述第二数据块的历史重用距离是根据所述第二数据块至少两次被访问时所述第二数据块在所述LRU链表中的位置获得;
所述缓存控制器从所述缓存中淘汰所述第二数据块。
6.根据权利要求1-4中任一项所述的缓存管理方法,其特征在于,还包括:
所述缓存控制器选择所述缓存中待替换的第三数据块,其中,所述第三数据块为所述LRU链表的第四位置记录的数据块;
所述缓存控制器确定所述第三数据块的最大历史重用距离为初始值;
所述缓存控制器从所述缓存中淘汰所述第三数据块。
7.一种缓存控制器,其特征在于,包括:
选择模块,用于选择缓存中待替换的第一数据块,其中,所述第一数据块为最近最少使用LRU链表的第一位置记录的数据块,所述LRU链表用于记录所述缓存中被访问的数据块的信息;
确定模块,用于确定所述第一数据块的最大历史重用距离大于预设阈值,其中,所述历史重用距离是所述第一数据块当前被访问时在所述LRU链表中的位置与所述第一数据块上一次访问时在所述LRU链表中的位置之间的距离,所述第一数据块的最大历史重用距离是所述第一数据块至少两次次被访问时的所述历史重用距离中的最大值;
控制模块,用于禁止从所述缓存中淘汰所述第一数据块。
8.根据权利要求7所述的缓存控制器,其特征在于,缓存控制器还包括:
移动模块,用于将所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置,所述第二位置与所述LRU链表的头部的距离比所述第一位置与所述LRU链表的头部的距离小,其中,所述LRU链表的头部记录有访问时间距离当前时间最近的数据块的信息;
更新模块,用于更新所述第一数据块的最大历史重用距离。
9.根据权利要求8所述的缓存控制器,其特征在于,所述更新模块还用于:
当所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后再一次被访问时,将所述第一数据块的最大历史重用距离更新为所述第一数据块在所述再一次被访问时所述第一数据块在所述LRU链表中的位置与所述第二位置之间的距离。
10.根据权利要求8所述的缓存控制器,其特征在于,所述控制模块还用于:
减小预设的记录信息表的链表的长度,其中,所述记录信息表用于记录计算机系统中第一次被访问并且尚未被缓存到所述缓存中的数据块的信息。
11.根据权利要求7-10中任一项所述的缓存控制器,其特征在于,
所述选择模块还用于选择所述缓存中待替换的第二数据块,其中,所述第二数据块为所述LRU链表的第三位置记录的数据块;
所述确定模块还用于确定所述第二数据块的最大历史重用距离不大于所述预设阈值,其中,所述第二数据块的最大历史重用距离是根据所述第二数据块至少两次被访问时所述第二数据块在所述LRU链表中的位置获得;
所述控制模块还用于从所述缓存中淘汰所述第二数据块。
12.根据权利要求7-10中任一项所述的缓存控制器,其特征在于,
所述选择模块还用于选择所述缓存中待替换的第三数据块,其中,所述第三数据块为所述LRU链表的第四位置记录的数据块;
所述确定模块还用于确定所述第三数据块的最大历史重用距离为初始值,其中,所述第三数据块在所述LRU链表中没有被访问过;
所述控制模块还用于从所述缓存中淘汰所述第三数据块。
13.一种计算机系统,其特征在于,包括缓存以及缓存控制器,所述缓存用于缓存所述计算机系统中被访问的数据,所述缓存控制器用于:
选择所述缓存中待替换的第一数据块,其中,所述第一数据块为最近最少使用LRU链表的第一位置记录的数据块,所述LRU链表用于记录所述缓存中被访问的数据块的信息;
确定所述第一数据块的最大历史重用距离大于预设阈值,其中,所述历史重用距离是所述第一数据块当前被访问时在所述LRU链表中的位置与所述第一数据块上一次访问时在所述LRU链表中的位置之间的距离,所述第一数据块的最大历史重用距离是所述第一数据块至少两次被访问时的所述历史重用距离中的最大值;
禁止从所述缓存中淘汰所述第一数据块。
14.根据权利要求13所述的计算机系统,其特征在于,所述缓存控制器还用于:
将所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置,所述第二位置与所述LRU链表的头部的距离比所述第一位置与所述LRU链表的头部的距离小,其中,所述LRU链表的头部记录有访问时间距离当前时间最近的数据块的信息;
更新所述第一数据块的最大历史重用距离。
15.根据权利要求14所述的计算机系统,其特征在于,所述缓存控制器还用于:
当所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后再一次被访问时,将所述第一数据块的最大历史重用距离更新为所述第一数据块在所述再一次被访问时所述第一数据块在所述LRU链表中的位置与所述第二位置之间的距离。
16.根据权利要求14所述的计算机系统,其特征在于,在所述缓存控制器将所述第一数据块在所述LRU链表中从所述第一位置移动到所述LRU链表中的第二位置之后,还包括:
所述缓存控制器减小预设的记录信息表的链表的长度,其中,所述记录信息表用于记录所述计算机系统中第一次被访问并且尚未被缓存到所述缓存中的数据块的信息。
17.根据权利要求13-16中任一项所述的计算机系统,其特征在于,所述缓存控制器还用于:
选择所述缓存中待替换的第二数据块,其中,所述第二数据块为所述LRU链表的第三位置记录的数据块;
确定所述第二数据块的最大历史重用距离不大于所述预设阈值,其中,所述第二数据块的最大历史重用距离是根据所述第二数据块至少两次被访问时所述第二数据块在所述LRU链表中的位置获得;
从所述缓存中淘汰所述第二数据块。
18.根据权利要求13-16中任一项所述的计算机系统,其特征在于,所述缓存控制器还用于:
选择所述缓存中待替换的第三数据块,其中,所述第三数据块为所述LRU链表的第四位置记录的数据块;
确定所述第三数据块的最大历史重用距离为初始值,其中,所述第三数据块在所述LRU链表中没有被访问过;
从所述缓存中淘汰所述第三数据块。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610396787.7A CN107463509B (zh) | 2016-06-05 | 2016-06-05 | 缓存管理方法、缓存控制器以及计算机系统 |
PCT/CN2017/087138 WO2017211247A1 (zh) | 2016-06-05 | 2017-06-05 | 缓存管理方法、缓存控制器以及计算机系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610396787.7A CN107463509B (zh) | 2016-06-05 | 2016-06-05 | 缓存管理方法、缓存控制器以及计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107463509A CN107463509A (zh) | 2017-12-12 |
CN107463509B true CN107463509B (zh) | 2020-12-15 |
Family
ID=60545876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610396787.7A Active CN107463509B (zh) | 2016-06-05 | 2016-06-05 | 缓存管理方法、缓存控制器以及计算机系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107463509B (zh) |
WO (1) | WO2017211247A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110018971B (zh) * | 2017-12-29 | 2023-08-22 | 华为技术有限公司 | 缓存替换技术 |
CN110309079B (zh) * | 2018-03-27 | 2023-06-02 | 阿里巴巴集团控股有限公司 | 一种数据缓存的方法及装置 |
CN109086224B (zh) * | 2018-07-10 | 2022-10-21 | 暨南大学 | 一种自适应分类重用距离来捕捉热数据的缓存方法 |
CN109144431B (zh) * | 2018-09-30 | 2021-11-02 | 华中科技大学 | 数据块的缓存方法、装置、设备及存储介质 |
CN109710668B (zh) * | 2018-11-29 | 2021-05-04 | 中国电子科技集团公司第二十八研究所 | 一种多源异构数据访问中间件构建方法 |
CN109783402A (zh) * | 2018-12-28 | 2019-05-21 | 深圳竹云科技有限公司 | 一种动态调整缓存热点数据的方法 |
CN112306911B (zh) * | 2019-07-24 | 2022-12-13 | 中移(苏州)软件技术有限公司 | Cache替换方法、装置及计算机可读存储介质 |
CN112487029B (zh) * | 2020-11-11 | 2022-09-16 | 杭州电魂网络科技股份有限公司 | 渐进式缓存淘汰方法、装置、电子设备和存储介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1499382A (zh) * | 2002-11-05 | 2004-05-26 | 华为技术有限公司 | 廉价冗余磁盘阵列系统中高效高速缓存的实现方法 |
US20070156964A1 (en) * | 2005-12-30 | 2007-07-05 | Sistla Krishnakanth V | Home node aware replacement policy for caches in a multiprocessor system |
US20080313407A1 (en) * | 2007-06-13 | 2008-12-18 | Zhigang Hu | Latency-aware replacement system and method for cache memories |
US20090125465A1 (en) * | 2006-11-09 | 2009-05-14 | Erik Berg | System for and method of capturing application characteristics data from a computer system and modeling target system |
CN102364474A (zh) * | 2011-11-17 | 2012-02-29 | 中国科学院计算技术研究所 | 用于机群文件系统的元数据存储系统和管理方法 |
CN102760101A (zh) * | 2012-05-22 | 2012-10-31 | 中国科学院计算技术研究所 | 一种基于ssd 的缓存管理方法及系统 |
CN103049399A (zh) * | 2012-12-31 | 2013-04-17 | 北京北大众志微系统科技有限责任公司 | 一种针对包容性末级高速缓存的替换方法 |
CN103257935A (zh) * | 2013-04-19 | 2013-08-21 | 华中科技大学 | 一种缓存管理方法及其应用 |
CN103383666A (zh) * | 2013-07-16 | 2013-11-06 | 中国科学院计算技术研究所 | 改善缓存预取数据局部性的方法和系统及缓存访问方法 |
US20140129779A1 (en) * | 2012-11-06 | 2014-05-08 | Facebook, Inc. | Cache replacement policy for data with strong temporal locality |
CN104077242A (zh) * | 2013-03-25 | 2014-10-01 | 华为技术有限公司 | 一种缓存管理方法和装置 |
CN104090852A (zh) * | 2014-07-03 | 2014-10-08 | 华为技术有限公司 | 管理混合缓存的方法及设备 |
CN104572501A (zh) * | 2015-01-08 | 2015-04-29 | 北京航空航天大学 | 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法 |
CN104657461A (zh) * | 2015-02-10 | 2015-05-27 | 北京航空航天大学 | 基于内存与ssd协作式的文件系统元数据搜索缓存方法 |
CN104834608A (zh) * | 2015-05-12 | 2015-08-12 | 华中科技大学 | 一种异构内存环境下的缓存替换方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9323659B2 (en) * | 2011-08-12 | 2016-04-26 | Sandisk Enterprise Ip Llc | Cache management including solid state device virtualization |
CN104572491B (zh) * | 2014-12-30 | 2017-10-17 | 华为技术有限公司 | 一种基于固态硬盘的读缓存管理方法及装置 |
-
2016
- 2016-06-05 CN CN201610396787.7A patent/CN107463509B/zh active Active
-
2017
- 2017-06-05 WO PCT/CN2017/087138 patent/WO2017211247A1/zh active Application Filing
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1499382A (zh) * | 2002-11-05 | 2004-05-26 | 华为技术有限公司 | 廉价冗余磁盘阵列系统中高效高速缓存的实现方法 |
US20070156964A1 (en) * | 2005-12-30 | 2007-07-05 | Sistla Krishnakanth V | Home node aware replacement policy for caches in a multiprocessor system |
US20090125465A1 (en) * | 2006-11-09 | 2009-05-14 | Erik Berg | System for and method of capturing application characteristics data from a computer system and modeling target system |
US20080313407A1 (en) * | 2007-06-13 | 2008-12-18 | Zhigang Hu | Latency-aware replacement system and method for cache memories |
CN102364474A (zh) * | 2011-11-17 | 2012-02-29 | 中国科学院计算技术研究所 | 用于机群文件系统的元数据存储系统和管理方法 |
CN102760101A (zh) * | 2012-05-22 | 2012-10-31 | 中国科学院计算技术研究所 | 一种基于ssd 的缓存管理方法及系统 |
US20140129779A1 (en) * | 2012-11-06 | 2014-05-08 | Facebook, Inc. | Cache replacement policy for data with strong temporal locality |
CN103049399A (zh) * | 2012-12-31 | 2013-04-17 | 北京北大众志微系统科技有限责任公司 | 一种针对包容性末级高速缓存的替换方法 |
CN104077242A (zh) * | 2013-03-25 | 2014-10-01 | 华为技术有限公司 | 一种缓存管理方法和装置 |
CN103257935A (zh) * | 2013-04-19 | 2013-08-21 | 华中科技大学 | 一种缓存管理方法及其应用 |
CN103383666A (zh) * | 2013-07-16 | 2013-11-06 | 中国科学院计算技术研究所 | 改善缓存预取数据局部性的方法和系统及缓存访问方法 |
CN104090852A (zh) * | 2014-07-03 | 2014-10-08 | 华为技术有限公司 | 管理混合缓存的方法及设备 |
CN104572501A (zh) * | 2015-01-08 | 2015-04-29 | 北京航空航天大学 | 一种基于访存踪迹局部性分析的多核环境下共享缓存优化方法 |
CN104657461A (zh) * | 2015-02-10 | 2015-05-27 | 北京航空航天大学 | 基于内存与ssd协作式的文件系统元数据搜索缓存方法 |
CN104834608A (zh) * | 2015-05-12 | 2015-08-12 | 华中科技大学 | 一种异构内存环境下的缓存替换方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107463509A (zh) | 2017-12-12 |
WO2017211247A1 (zh) | 2017-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107463509B (zh) | 缓存管理方法、缓存控制器以及计算机系统 | |
US8843691B2 (en) | Prioritized erasure of data blocks in a flash storage device | |
CN107066393B (zh) | 提高地址映射表中映射信息密度的方法 | |
KR101894625B1 (ko) | 데이터 저장 시스템들에 대한 우선순위 기반 가비지 수집 | |
US9128847B2 (en) | Cache control apparatus and cache control method | |
US9747043B2 (en) | Write reordering in a hybrid disk drive | |
US9767032B2 (en) | Systems and methods for cache endurance | |
US8832357B2 (en) | Memory system having a plurality of writing mode | |
CN103207839B (zh) | 存储的高速缓存内的轨道清除的高速缓存管理方法和系统 | |
CA2942443C (en) | Method for storing data by storage device and storage device | |
US9772948B2 (en) | Determining a criterion for movement of data from a primary cache to a secondary cache | |
US9959054B1 (en) | Log cleaning and tiering in a log-based data storage system | |
US9003099B2 (en) | Disc device provided with primary and secondary caches | |
US20160026579A1 (en) | Storage Controller and Method for Managing Metadata Operations in a Cache | |
CN108762664B (zh) | 一种固态硬盘页级缓存区管理方法 | |
JP6711121B2 (ja) | 情報処理装置、キャッシュメモリ制御方法、およびキャッシュメモリ制御プログラム | |
CN104503703B (zh) | 缓存的处理方法和装置 | |
KR20120090965A (ko) | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 | |
US11138104B2 (en) | Selection of mass storage device streams for garbage collection based on logical saturation | |
CN110888600A (zh) | 一种面向nand闪存的缓冲区管理方法 | |
CN111580754B (zh) | 一种写友好的闪存固态盘缓存管理方法 | |
CN108664415B (zh) | 共享替换策略计算机高速缓存系统和方法 | |
TWI450271B (zh) | 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器 | |
JP2010538385A (ja) | セクタの集合を利用したキャッシュ運用方法及びキャッシュ装置 | |
KR101020781B1 (ko) | 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |