CN103257932B - 用于管理计算机可读高速缓存系统中的数据的方法和系统 - Google Patents
用于管理计算机可读高速缓存系统中的数据的方法和系统 Download PDFInfo
- Publication number
- CN103257932B CN103257932B CN201310016876.0A CN201310016876A CN103257932B CN 103257932 B CN103257932 B CN 103257932B CN 201310016876 A CN201310016876 A CN 201310016876A CN 103257932 B CN103257932 B CN 103257932B
- Authority
- CN
- China
- Prior art keywords
- span
- speed cache
- block
- tracking block
- 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.)
- Expired - Fee Related
Links
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- 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/0871—Allocation or management of cache space
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/462—Track or segment
Abstract
本公开内容涉及用于管理计算机可读高速缓存系统中的数据的方法和系统。保持与配置在第二高速缓存中的跨距和针对所述跨距的占用率计数有关的信息,所述占用率计数指示所述跨距被有效跟踪块和无效跟踪块填充的程度。确定要从第一高速缓存降级的跟踪块。形成包括所确定的要降级的跟踪块的第一跨距。将来自第一跨距的跟踪块添加到第二高速缓存中的第二跨距,第二跨距具有指示跨距为空的占用率计数。基于第二高速缓存中的跨距的占用率计数,确定第二高速缓存中的目标跨距。基于第二高速缓存中的跨距的占用率计数,确定第二高速缓存中的具有有效跟踪块的至少两个源跨距。用来自所述源跨距的有效跟踪块填充所述目标跨距。
Description
技术领域
本发明涉及用于通过使用第二高速缓存中的跨距(stride)内的有效跟踪块(track)的占用率,将跟踪块从第一高速缓存降级到第二高速缓存,以便合并第二高速缓存内的跨距的计算机程序产品、系统和方法。
背景技术
高速缓存管理系统将最近作为读写操作结果访问的存储设备内的跟踪块缓存到比存储所请求跟踪块的存储设备更快的存取存储设备(诸如存储器)内。对较快的存取高速缓存存储器内的跟踪块的后续读请求以比从较慢的存取存储返回所请求跟踪块更快的速度而被返回,从而减小读延迟。高速缓存管理系统还可以在涉及存储设备的修改跟踪块被写到高速缓存存储器时、并在修改跟踪块被写出到诸如硬盘驱动器的存储设备之前,对写请求返回完成。对于存储设备的写延迟通常比写到高速缓存存储器的延迟长很多。因此,使用高速缓存还减少写延迟。
高速缓存管理系统可以保持一个链接列表,该链接列表对于存储在高速缓存内的每个跟踪块具有一个条目,其可以包括在写到存储设备之前缓存在高速缓存内的写数据或读数据。在通常使用的最近最少使用(LRU)高速缓存技术中,如果高速缓存中的跟踪块被访问,即,高速缓存“命中”,那么LRU列表中针对被访问跟踪块的条目被移动到该列表的最近最多使用(MRU)端。如果所请求跟踪块不在高速缓存内,即,高速缓存缺失,那么高速缓存中其条目位于列表的LRU端的跟踪块可被去除(或离台回到存储),并且针对从存储登台到高速缓存的跟踪块数据的条目被添加到LRU列表的MRU端。采用这种LRU高速缓存技术,被更频繁访问的跟踪块可能被保持在高速缓存内,而较不频繁访问的数据将更可能被从列表的LRU端去除,以便在高速缓存中为新访问的跟踪块留出位置。
本领域中对用于使用存储系统内的高速缓存的改进技术存在需求。
发明内容
提供了用于通过使用第二高速缓存中的跨距中的有效跟踪块的占用率以合并第二高速缓存中的跨距来将跟踪块从第一高速缓存降级到第二高速缓存的计算机程序产品、系统和方法。保持与配置在第二高速缓存中的跨距和针对所述跨距的占用率计数有关的信息,所述占用率计数指示所述跨距被有效跟踪块和无效跟踪块填充的程度。确定要从第一高速缓存降级的跟踪块。形成包括所确定的要降级的跟踪块的第一跨距。将来自第一跨距的跟踪块添加到第二高速缓存中的第二跨距,第二跨距具有指示跨距为空的占用率计数。基于第二高速缓存中的跨距的占用率计数,确定第二高速缓存中的目标跨距。基于第二高速缓存中的跨距的占用率计数,确定第二高速缓存中的具有有效跟踪块的至少两个源跨距。用来自所述源跨距的有效跟踪块填充所述目标跨距。
附图说明
图1示出了计算环境的实施例。
图2示出了第一高速缓存管理信息的实施例。
图3示出了第二高速缓存管理信息的实施例。
图4示出了第一高速缓存控制块的实施例。
图5示出了第二高速缓存控制块的实施例。
图6示出了跨距信息的实施例。
图7示出了第二高速缓存RAID配置的实施例。
图8示出了存储RAID配置的实施例。
图9示出了降级要提升到第二高速缓存的来自第一高速缓存的未修改非顺序跟踪块的操作的实施例。
图10示出了将跟踪块添加到第一高速缓存的操作的实施例。
图11示出了将来自第一跨距的跟踪块添加到第二跨距的操作的实施例。
图12示出了释放第二高速缓存内的空间的操作的实施例。
图13示出了释放第二高速缓存内的跨距的操作的实施例。
图14示出了确定源跨距以合并到第二高速缓存内的目标跨距中的操作的实施例。
图15示出了处理对跟踪块的请求以返回到读请求的操作的实施例。
具体实施方式
描述的实施例提供了如下技术,该技术用于提升跨距中的来自第一高速缓存的跟踪块,使得这些跟踪块可以作为完整跨距写而被写到第二高速缓存内的跨距,以便改进高速缓存提升操作的效率。此外,在跟踪块作为跨距从第一高速缓存14被提升到第二高速缓存18时,根据高速缓存降级算法(诸如LRU算法)在跟踪块的基础上将跟踪块从第二高速缓存18降级。为了保持第二高速缓存中的空闲跨距可用于存储来自第一高速缓存的跟踪块的跨距,第二高速缓存内的部分满(即,具有有效和无效跟踪块)的跨距可被合并到一个跨距内。描述的实施例基于第二高速缓存内的跨距中的有效跟踪块的占用率来选择源跨距以便合并到目标跨距内。
图1示出了计算环境的实施例。多个主机2a、2b、...2n可以通过网络6向存储控制器4递交输入/输出(I/O)请求,以便访问存储10内的卷8(例如,逻辑单元号、逻辑设备、逻辑子系统等)处的数据。存储控制器4包括处理器联合体12(处理器联合体12包括一个或多个具有单核或多核的处理器)、第一高速缓存14和第二高速缓存18。第一高速缓存14和第二高速缓存18缓存在主机2a、2b、...2n和存储10之间传递的高速缓存数据。
存储控制器4具有存储器20,存储器20包括存储管理器22和高速缓存管理器24,存储管理器22用于管理在主机2a、2b、...2n和存储10之间传递的跟踪块的传递,高速缓存管理器24管理第二高速缓存18以及第一高速缓存14内在主机2a、2b、...2n和存储10之间传递的数据。跟踪块可以包括配置在存储10内的任意数据单元,诸如磁道、逻辑块地址(LBA)等,其是更大的跟踪块分组(诸如卷、逻辑设备等)的一部分。高速缓存管理器24保持第一高速缓存管理信息26和第二高速缓存管理信息28以便管理第一高速缓存14和第二高速缓存18中的读(未修改的)和写(修改的)跟踪块。
存储管理器22和高速缓存管理器24在图1中被示为装入存储器20中并由处理器联合体12执行的程序代码。可替代地,某些或所有功能可被实现在存储控制器4内的硬件设备中,诸如专用集成电路(ASIC)。
第二高速缓存18可以将跟踪块存储在日志结构化阵列(LSA)32内,其中跟踪块以接收顺序被顺序地写,从而提供写到第二高速缓存18的跟踪块的时间排序。在LSA中,已经存在于LSA内的跟踪块的以后版本被写到LSA32的尾部。在可替代实施例中,第二高速缓存18可以用LSA之外的格式存储数据。
存储器20还包括第二高速缓存RAID配置信息34,第二高速缓存RAID配置信息34提供用于确定如何形成跟踪块的跨距以便存储在第二高速缓存18中的RAID配置有关的信息。在一个实施例中,第二高速缓存18可由多个存储设备(诸如分离的闪存存储器设备)组成,使得由来自第一高速缓存14的跟踪块形成的跨距被划分在形成第二高速缓存18的分离的存储设备上,诸如分离的固态存储设备(SSD)。在其它实施例中,第二高速缓存18可以包括单个存储设备(诸如一个闪存存储器),使得跟踪块如第二高速缓存RAID配置信息34所定义的那样以跨距进行分组,但是跟踪块作为跨距被写到实现第二高速缓存18的单个设备(诸如一个闪存存储器)。针对第二高速缓存RAID配置34配置的跨距的跟踪块可被写到第二高速缓存18设备内的LSA32。第二高速缓存RAID配置34可以指定不同的RAID级别,例如,级别5、10等。
存储器20还包括存储RAID配置信息36,存储RAID配置信息36提供用于确定如何将来自第一高速缓存14或第二高速缓存18(如果第二高速缓存18应当存储修改的数据的话)的跟踪块写到存储系统10的RAID配置有关的信息,其中离台跨距中的跟踪块被划分在存储设备上,诸如存储系统10内的盘。
在一个实施例中,第一高速缓存14可以包括诸如动态随机存取存储器(DRAM)之类的随机存取存储器(RAM),并且第二高速缓存18可以包括诸如固态设备之类的闪存存储器,并且存储10由一个或多个诸如硬盘驱动器和磁带之类的顺序存取存储设备组成。存储10可以包括单个顺序存取存储设备,或可以包括存储设备阵列,诸如简单磁盘捆绑(JBOD)、直接存取存储设备(DASD)、廉价磁盘冗余阵列(RAID)、虚拟化设备等。在一个实施例中,第一高速缓存14是比第二高速缓存18快的存取设备,并且第二高速缓存18是比存储10快的存取设备。另外,第一高速缓存14可以具有比第二高速缓存18高的单位存储成本,并且第二高速缓存18可以具有比存储10内的存储设备高的单位存储成本。
第一高速缓存14可以是存储器20的一部分,或被实现为单独的存储器设备,诸如DRAM。
网络6可以包括存储区域网络(SAN)、局域网(LAN)、广域网(WAN)、互联网和内联网等。
图2示出了第一高速缓存管理信息26的实施例,第一高速缓存管理信息26包括:跟踪块索引50,提供第一高速缓存14内的跟踪块到控制块目录52内的控制块的索引;未修改顺序LRU列表54,提供第一高速缓存14内的未修改顺序跟踪块的时间排序;修改LRU列表56,提供第一高速缓存14内的修改的顺序和非顺序跟踪块的时间排序;未修改非顺序LRU列表58,提供第一高速缓存14内的未修改非顺序跟踪块的时间排序;以及跨距信息60,提供与由第一高速缓存14内的未修改非顺序跟踪块构成的跨距有关的信息以作为完整跨距写而写到第二高速缓存18。
在某些实施例中,当确定第一高速缓存18满时,使用修改LRU列表56将修改跟踪块从第一高速缓存14离台到存储10,使得第一高速缓存18中这些离台跟踪块的拷贝。
一旦修改非顺序跟踪块被从第一高速缓存14离台到存储10,高速缓存管理器24就可以将离台跟踪块指定为第一高速缓存14内的未修改非顺序跟踪块,并且将新指定的未修改跟踪块的指示添加到未修改非顺序LRU列表58,其有资格从未修改非顺序LRU列表58被提升到第二高速缓存14。可通过更新第一高速缓存控制块104来改变离台的修改跟踪块的状态,以在字段106中将离台的修改非顺序跟踪块指示为未修改。从而,第一高速缓存14中的未修改非顺序跟踪块可以包括根据修改LRU列表56离台到了存储10的修改非顺序跟踪块或读数据。从而,变为LRU列表58内的未修改跟踪块的离台的修改跟踪块可被提升到第二高速缓存14,以便可用于后续的读请求。在这些实施例中,第二高速缓存14包括缓存未修改非顺序跟踪块的只读高速缓存。
图3示出了第二高速缓存管理信息28的实施例,第二高速缓存管理信息28包括:跟踪块索引70,提供第二高速缓存18内的跟踪块到控制块目录72内的控制块的索引;未修改列表74,提供第二高速缓存18内的未修改跟踪块的时间排序;以及跨距信息78,提供与写到第二高速缓存18的跟踪块的跨距有关的信息。在一个实施例中,第二高速缓存18仅存储未修改的非顺序跟踪块。在其他实施例中,第二高速缓存18还可以存储修改的和/或顺序的跟踪块。
所有LRU列表54、56、58和74可以包括根据识别的跟踪块被最后访问的时间排序的第一高速缓存14和第二高速缓存18内的跟踪块的跟踪块ID。LRU列表54、56、58和74具有指示最近最多访问的跟踪块的最近最多使用(MRU)端和指示最近最少使用或访问的跟踪块的LRU端。添加到高速缓存14和18的跟踪块的跟踪块ID被添加到LRU列表的MRU端,并且从高速缓存14和18降级的跟踪块从LRU端被访问。跟踪块索引50和70可以包括分散索引表(SIT)。可以使用替代类型的数据结构来提供高速缓存14和18内的跟踪块的时间排序。
非顺序跟踪块可以包括在线线上交易处理(OLTP)跟踪块,其通常包括不是完全随机并且具有某种引用局部性(即,具有被重复访问的可能性)的小块写。
图4示出了控制块目录52中的第一高速缓存控制块100条目的实施例,该条目包括控制块标识符(ID)102、第一高速缓存14内的跟踪块的物理位置的第一高速缓存位置104、指示跟踪块是修改的还是未修改的信息106、指示跟踪块是顺序还是非顺序访问的信息108、以及指示跟踪块的降级状态(诸如未降级、准备降级和降级完成)的信息110。
图5示出了第二高速缓存控制块目录72中的第二高速缓存控制块120条目的实施例,该条目包括:控制块标识符(ID)122;LSA位置124,其中跟踪块位于LSA32内;指示跟踪块是修改的还是未修改的修改/未修改信息126;指示跟踪块是有效还是无效的有效/无效标记128;以及指示其中包括跟踪块的跨距的跨距130。如果跟踪块在第一高速缓存14内被更新,或者如果跟踪块从第二高速缓存18被降级,那么第二高速缓存18内的跟踪块被指示为无效。
图6示出了针对将在第二高速缓存18内形成的一个跨距的跨距信息60、78的实例130,实例130包括:跨距标识符(ID)132;包括在跨距132内的存储10的跟踪块134;指示跨距内的有效跟踪块的数目的占用率136;以及跨距132内的跟踪块的总数138,其中跨距内的无效的跟踪块有资格进行垃圾回收操作。跨距的占用率可以包括跨距内的有效跟踪块的数目,或者可以是有效跟踪块相对于总跟踪块138的百分比。
图7示出了第二高速缓存RAID配置34的实施例,保持第二高速缓存RAID配置34以确定如何根据第一高速缓存14内的跟踪块形成第二高速缓存18内的跟踪块的跨距。RAID级别140指示RAID配置(例如,RAID1、RAID5、RAID6、RAID10等)以使用存储用户数据的跟踪块的数据盘(datadisk)的数目(m)142、以及存储根据数据盘142计算的奇偶校验的奇偶校验盘(paritydisk)的数目(p)144,其中p可以是1或更大,指示用于存储计算的奇偶校验块的盘的数目。未修改奇偶校验可选标记146指示是否应该为正被提升到第二高速缓存18的第一高速缓存14内的未修改非顺序跟踪块计算奇偶校验。该可选标记146允许仅仅在跨距内包括未修改非顺序跟踪块,以便仅用未修改非顺序跟踪块填充跨距。可以在LSA32中指示第一高速缓存14内的未修改非顺序跟踪块的跨距,其中跨距的跟踪块被划分在形成第二高速缓存18的m加p个存储设备上。可替代地,第二高速缓存18可以包括少于n个设备。
图8示出了存储RAID配置36的实施例,保持存储RAID配置36以确定如何形成第二高速缓存18内的修改跟踪块的跨距,从而划分在存储10的盘上。RAID级别150指示使用存储用户数据的跟踪块的数据盘的数目(m)152、以及存储根据数据盘152计算的奇偶校验的奇偶校验盘的数目(p)154的RAID配置,其中p可以是1或更大,指示用于存储计算的奇偶校验块的盘的数目。来自第二高速缓存18的跟踪块的跨距可被划分在存储系统10内的盘上。
在一个实施例中,第二高速缓存34和存储36RAID配置可以提供不同参数,或具有相同参数,诸如不同的RAID级别、数据盘、奇偶校验盘等。
图9示出了由高速缓存管理器24执行的用于使要提升到第二高速缓存18的来自第一高速缓存14的未修改非顺序跟踪块降级的操作的实施例,其中当需要空间时,可以从未修改非顺序LRU列表58的LRU端选择未修改非顺序跟踪块。在启动(在方框200)操作以降级所选择的未修改非顺序跟踪块时,被选择降级的未修改非顺序跟踪块的降级状态110(图4)被设置为(在方框202)“就绪”。高速缓存管理器24使用(在方框204)第二高速缓存RAID配置信息34形成来自第一高速缓存14的跟踪块的第一跨距,以便提升到第二高速缓存18内的跨距。例如,形成跟踪块的第一跨距可以包括基于针对第二高速缓存定义为具有n个设备的RAID配置34来形成RAID配置的跨距,所述n个设备包括用于存储数据的跟踪块的m个设备和存储根据m个设备的数据的跟踪块计算的奇偶校验数据的至少一个奇偶校验设备p。另外,在第二高速缓存包括至少n个固态存储设备的实施例中,跟踪块的第一跨距可以在没有奇偶校验的情况下被划分在n个固态存储设备上,以形成第二跨距。
高速缓存管理器24处理(在方框206)未修改非顺序LRU列表58,以确定在未修改非顺序跟踪块的控制块100中具有就绪的降级状态110的未修改非顺序跟踪块的数目。如果高速缓存管理器24确定(在方框208)未修改非顺序跟踪块的数目足够形成一个跨距,则高速缓存管理器24填充(在方框210)具有就绪的降级状态110的未修改非顺序跟踪块的第一跨距。在一个实施例中,第一跨距可以从未修改非顺序LRU列表58的LRU端开始被填充,并且针对跨距中的数据盘使用足够的跟踪块。如果(在方框212)RAID配置指示奇偶校验盘,则高速缓存管理器24计算(在方框212)包括在跨距内的未修改非顺序跟踪块的奇偶校验,并且在该跨距中包括奇偶校验数据(用于p个奇偶校验盘)。如果(在方框208)第一高速缓存14中不存在足够的未修改非顺序跟踪块来填充第一跨距,那么控制结束,直到可获得足够数目的具有降级就绪状态的未修改非顺序跟踪块来填充第一跨距。
在填充第一跨距(在方框210和212)之后,高速缓存管理器24确定(在方框214)第二高速缓存18中的空闲第二跨距,来自第一跨距的跟踪块被包括在该空闲第二跨距内。来自第一跨距的跟踪块作为完整跨距写被写或划分(在方框216)到形成第二高速缓存18的设备上的第二跨距。当以来自第一跨距的跟踪块填充第二高速缓存18内的第二跨距时,高速缓存管理器24将针对第二跨距的跨距信息130的占用率136指示(在方框218)为满。高速缓存管理器24将包括在该跨距内的未修改非顺序跟踪块的降级状态110更新(在方框220)为降级“完成”。
虽然图9的操作被描述为降级要提升到第二高速缓存18的来自第一高速缓存14的未修改非顺序跟踪块,但是在替代实施例中,该操作可应用于降级不同类型的跟踪块,诸如修改的顺序的跟踪块等。
通过描述的实施例,来自第一高速缓存14的未修改跟踪块被收集并作为跨距写到第二高速缓存18,使得一个输入/输出(I/O)操作被用于传输多个跟踪块。
图10示出了由高速缓存管理器24执行的用于将跟踪块添加(即,提升)到第一高速缓存14的操作的实施例,该跟踪块可以包括来自主机2a、2b...2n的写或修改跟踪块、经历读请求并作为结果被移动到第一高速缓存14的第二高速缓存18中的非顺序跟踪块、或者在高速缓存14和18中都未找到并从存储10中检索到的读请求数据。当接收到(在方框250)要添加到第一高速缓存14的跟踪块时,如果(在方框252)跟踪块的拷贝已经包括在第一高速缓存14中(即,所接收的跟踪块是写),那么高速缓存管理器24更新(在方框254)第一高速缓存14中的跟踪块。如果(在方框252)跟踪块还没有处于高速缓存中,那么高速缓存管理器24针对要添加的跟踪块创建(在方框256)控制块100(图4),以指示第一高速缓存14中的位置104以及该跟踪块是修改的还是未修改的106以及是顺序的还是非顺序的108。该控制块100被添加到第一高速缓存14的控制块目录52。高速缓存管理器24向第一高速缓存跟踪块索引50添加(在方框258)条目,该条目具有要添加的跟踪块的跟踪块ID、以及到控制块目录52中所创建的高速缓存控制块100的索引。条目被添加(在方框260)到要添加的跟踪块的跟踪块类型的LRU列表54、56或58的MRU端。如果(在方框262)要添加的跟踪块是修改非顺序跟踪块,并且如果(在方框264)如根据第二高速缓存跟踪块索引70所确定的那样要添加的跟踪块的拷贝在第二高速缓存18中(即,跟踪块的老版本),那么第二高速缓存18中的跟踪块的拷贝是无效的(在方框266),诸如通过将针对跟踪块的老版本的高速缓存控制块120中的有效/无效标记128设置为无效。高速缓存管理器24可以进一步减少(在方框268)包括无效跟踪块的第二高速缓存18中的跨距130的有效跟踪块136(占用率计数)。如果(在方框262)要添加的跟踪块是未修改的或顺序的,那么第二高速缓存18不包括添加到第二高速缓存18的跟踪块的拷贝(老版本)(方框264的否分支),或者在减少有效跟踪块136(在方框268)之后,接着控制结束。
图11示出了由高速缓存管理器24执行的用于将来自第一高速缓存14的第一跨距的跟踪块添加到第二高速缓存18内的第二跨距的操作的实施例。高速缓存管理器24创建(在方框302)针对第二跨距的跨距信息130(图6),以指示来自第一跨距的跟踪块134正被添加并指示占用率136为满。对于正被添加的第一跨距内的每个跟踪块,在方框304到326执行操作的循环。高速缓存管理器24添加(在方框302)正被提升到第二高速缓存18内的LSA32的跟踪块的指示(诸如跟踪块ID)。如果(在方框308)正被添加的跟踪块已经在第二高速缓存18中(即,跟踪块的老版本),则高速缓存管理器24确定(在方框318)第二高速缓存18中包括跟踪块的老版本的跨距以便通过来自第一高速缓存14的跟踪块更新,并且使所确定的具有跟踪块的老版本的跨距中的跟踪块无效(在方框320)。高速缓存管理器24减少(在方框322)第二高速缓存18内包括无效的跟踪块的老版本的跨距的有效跟踪块136(占用率计数)。高速缓存管理器24更新(在方框324)针对该跟踪块的高速缓存控制块120,以指示LSA32中的位置124、数据是未修改的126、以及跟踪块是有效的128。
如果(在方框308)跟踪块还没有在第二高速缓存18中,那么高速缓存管理器24对于要添加的跟踪块创建(在方框312)控制块120(图5),以指示LSA32中的跟踪块位置124以及跟踪块是修改的还是未修改的126。向第二高速缓存跟踪块索引70添加(在方框314)条目,该条目具有被提升的跟踪块的跟踪块ID以及到第二高速缓存18的控制块目录72中所创建的高速缓存控制块120的索引。从方框324或314,高速缓存管理器24在未修改LRU列表74的MRU端处指示(在方框316)被提升的跟踪块,诸如通过将跟踪块ID添加到MRU端。
图12示出了由高速缓存管理器24执行的用于为要添加到第二高速缓存18的新跟踪块(即,从第一高速缓存14降级的跟踪块)释放第二高速缓存18中的空间的操作的实施例。当启动该操作(在方框350)时,高速缓存管理器24从未修改LRU列表74的LRU端确定(在方框352)第二高速缓存18中的未修改跟踪块,并使所确定的未修改跟踪块无效(在方框354),而不将被无效的未修改跟踪块离台到存储10。被无效的未修改跟踪块从未修改LRU列表74被去除(在方框356),并且在对于跟踪块的高速缓存控制块120中将该跟踪块指示为无效128。高速缓存管理器24减少(在方框358)包括要降级的被无效跟踪块的第二高速缓存18内的跨距的有效跟踪块136(占用率计数)。
第二高速缓存18内的未修改跟踪块可以包括添加到第一高速缓存14的读跟踪块或者从第一高速缓存14离台的修改跟踪块。此外,被高速缓存管理器24选择来从第二高速缓存18降级的跟踪块可以来自在第二高速缓存18中形成的不同的跨距。此外,第二高速缓存18中的跨距可以包括有效跟踪块和无效跟踪块两者,其中通过从第二高速缓存18降级或者通过在第一高速缓存18中更新跟踪块来使跟踪块无效。
在某些实施例中,通过使用分别用于第一高速缓存14和第二高速缓存18的分离的LRU列表58和74以确定要降级的跟踪块,高速缓存管理器24使用不同的跟踪块降级算法来确定要从第一高速缓存14和第二高速缓存18降级的跟踪块。用于选择第一高速缓存14和第二高速缓存18中的降级的跟踪块的算法可以考虑第一高速缓存14和第二高速缓存18中的跟踪块的特性,以便确定要首先降级的跟踪块。
图13示出了由高速缓存管理器24执行的释放第二高速缓存18内的跨距以使得可用于第一高速缓存14内的跟踪块的跨距的操作的实施例。当启动(在方框370)释放第二高速缓存18内的跨距的操作时,高速缓存管理器确定(在方框372)空闲跨距(即,占用率计数(有效跟踪块的数目、有效跟踪块的百分比)136为零的跨距)的数目是否小于空闲跨距阈值。例如,高速缓存管理器24可以确保总是有至少两个或某个其它数目的空闲跨距可用于由第一高速缓存14跟踪块形成的跨距。如果空闲跨距的数目不低于该阈值,那么控制结束。否则,如果(在方框372)空闲跨距的数目低于该阈值,那么高速缓存管理器24基于第二高速缓存18内的跨距的占用率计数136来确定(在方框374)第二高速缓存18内的可用目标跨距,诸如通过优先选择具有零或最低占用率计数的跨距。高速缓存管理器24还基于第二高速缓存内的跨距的占用率计数来确定(在方框376)第二高速缓存18中具有有效跟踪块136的至少两个源跨距,诸如除了目标跨距之外的具有最低占用率计数的跨距。
高速缓存管理器24然后用来自源跨距的有效跟踪块填充(在方框378)目标跨距,并将添加到目标跨距的源跨距中的跟踪块无效(在方框380)。通过从源跨距添加到目标跨距的有效跟踪块的数目来减少(在方框382)每个源跨距的占用率计数136。
图14示出了由高速缓存管理器24执行的确定用于图13中的合并操作的目标跨距和源跨距的操作的实施例。当启动(在方框400)该操作时,高速缓存管理器24基于占用率136(例如,有效跟踪块的数目、有效跟踪块的百分比)从小到大给跨距排序(在方框402)。高速缓存管理器24选择(在方框404)第二高速缓存18中具有第二高速缓存18内的跨距的最低占用率计数136的一个跨距作为目标跨距。如果多个跨距具有零占用率计数136,那么可以使用额外的选择因子来选择具有零占用率计数的跨距之一用作目标跨距,诸如最小跨距ID号132。可替代地,在第二高速缓存18包括一个或多个固态存储设备(SSD)的实施例中,高速缓存管理器24可以使用耗损均衡算法来选择空的跨距作为目标跨距,以便使得对跨距的写操作均匀。
高速缓存管理器24基于排序后的占用率来选择(在方框406)第二高速缓存18中具有最低占用率计数136的至少两个跨距作为源跨距。例如,在一个实施例中,高速缓存管理器24可以选择第二高速缓存18内的跨距中除了目标跨距之外的具有最低占用率计数136的跨距,直到所选择的跨距内的有效跟踪块136的数目至少等于目标跨距内的跟踪块的数目。高速缓存管理器24可以仅选择足够的源跨距以填充所有或更少的目标跨距。
图15示出了由高速缓存管理器24执行的从高速缓存14和18以及存储10检索对于读请求的被请求跟踪块的操作的实施例。处理读请求的存储管理器22可以向高速缓存管理器24提交针对被请求跟踪块的请求。当接收到(在方框450)针对跟踪块的请求时,高速缓存管理器24使用(在方框454)第一高速缓存跟踪块索引50来确定所有被请求跟踪块是否在第一高速缓存14内。如果(在方框454)所有被请求跟踪块不都在第一高速缓存14内,那么高速缓存管理器24使用(在方框456)第二高速缓存跟踪块索引70来确定在第二高速缓存18内而不在第一高速缓存14内的任意被请求跟踪块。如果(在方框458)存在未在第一高速缓存14和第二高速缓存18中找到的任意被请求跟踪块,那么高速缓存管理器24根据第二高速缓存跟踪块索引70来确定(在方框460)在存储10内而不在第一高速缓存14和第二高速缓存18内的任意被请求跟踪块。高速缓存管理器24然后将第二高速缓存18和存储10内的任意所确定的跟踪块提升(在方框462)到第一高速缓存14。高速缓存管理器24使用(在方框464)第一高速缓存跟踪块索引50从第一高速缓存14检索被请求跟踪块以返回给读请求。针对被检索跟踪块的条目被移动(在方框466)到LRU列表54、56、58的MRU端以包括针对被检索跟踪块的条目。
通过图15的操作,高速缓存管理器24从最高级别高速缓存14起检索被请求跟踪块,然后在去到存储10之前首先从第二高速缓存18检索被请求跟踪块,因为高速缓存14和18会具有被请求跟踪块的最近修改版本。首先在第一高速缓存14中寻找最近版本,如果不在第一高速缓存14中,那么在第二高速缓存18中寻找,并且如果不在高速缓存14和18两者中,那么在存储10中寻找。
描述的实施例提供了如下技术,该技术将第一高速缓存中的跟踪块分组在根据第二高速缓存的RAID配置所定义的跨距中,使得第一高速缓存中的跟踪块可以被分组到针对第二高速缓存的跨距中。缓存在第二高速缓存中的跟踪块然后可被分组到根据存储的RAID配置所定义的跨距中,并然后被写到存储系统。描述的实施例允许完整跨距写被用于将第一高速缓存中的被降级跟踪块提升到第二高速缓存,以通过将整个跨距作为单个I/O操作提升到第二高速缓存来节省资源。
描述的实施例提供了如下技术,该技术通过基于跨距中的有效跟踪块的占用率计数将来自多个源跨距的跟踪块合并到目标跨距中,来释放第二高速缓存18中的跟踪块的跨距。跨距在第二高速缓存中被释放以使得可用于以跨距提升来自第一高速缓存14的跟踪块,从而跟踪块可作为完整跨距写被写到第二高速缓存18中的跨距,以改善高速缓存提升操作的效率。此外,在跟踪块从第一高速缓存14作为跨距被提升到第二高速缓存18时,根据高速缓存降级算法(诸如LRU算法)在逐个跟踪块的基础上从第二高速缓存18降级跟踪块。
描述的操作可使用标准编程和/或工程技术被实现为方法、装置或计算机程序产品,以产生软件、固件、硬件或其任意组合。因此,实施例的方面可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,实施例的方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
除非另外明确指出,术语“实施例”、“一实施例”、“多个实施例”、“该实施例”、“该多个实施例”、“一个或多个实施例”、“某些实施例”和“一个实施例”表示“本发明(多个)的一个或多个(但不是全部)实施例”。
除非另外明确指出,术语“包括”、“包含”、“具有”以及它们的变型表示“包括但不限于”。
除非另外明确指出,项目的列举列表不暗示着任意或所有项目是相互排他的。
除非另外明确指出,术语“一个”、“一”和“该”表示“一个或多个”。
除非另外明确指出,彼此通信的设备不需要彼此连续通信。另外,彼此通信的设备可以通过一个或多个中间介质直接或间接通信。
对具有彼此通信的若干组件的实施例的描述不暗示着需要所有这样的组件。相反,描述各种可选组件以便说明本发明的各种可能实施例。
另外,虽然处理步骤、方法步骤、算法等可被顺序地描述,但是这样的处理、方法和算法可被配置为以替代的顺序工作。换言之,可被描述的步骤的任意序列或顺序不必然指示需要以该顺序执行这些步骤。这里描述的处理的步骤可被以任意实际顺序执行。此外,某些步骤可被同时执行。
当单个设备或物品在这里被描述时,很明显可以使用多于一个设备/物品(不论它们是否配合)取代单个设备/物品。类似地,在多于一个设备或物品在这里被描述的情况下(不论它们是否配合),很明显可以使用单个设备/物品取代该多于一个设备或物品,或者可以使用不同数目的设备/物品而不是所示数目的设备或程序。设备的功能和/或特征可被可替代地通过未被明确描述为具有这样的功能/特征的一个或多个其它设备来体现。从而,本发明的其它实施例不需要包括设备本身。
附图所示的操作示出了以某种顺序发生的某些事件。在可替代实施例中,某些操作可以以不同的顺序被执行、修改或去除。并且,步骤可被添加到上述的逻辑并仍然符合描述的实施例。此外,这里描述的操作可以顺序地发生,或者某些操作可被并行处理。另外,操作可通过单个处理单元或者通过分布式处理单元被执行。
出于说明和描述的目的给出了本发明的各种实施例的上述描述。其不旨在是穷尽的或将本发明局限于精确的公开形式。根据上面的教导可以做出许多修改和变形。本发明的范围旨在不受该具体描述的限制,而是由所附权利要求限定。上面的说明书、例子和数据提供了对本发明的组成的制造和使用的完整描述。因为可以进行本发明的许多实施例而不脱离本发明的精神和范围,所以本发明存在于下面所附的权利要求中。
Claims (19)
1.一种用于管理计算机可读高速缓存系统中的数据的方法,所述计算机可读高速缓存系统包括第一高速缓存、第二高速缓存和由存储设备组成的存储系统,所述方法包括:
保持与配置在第二高速缓存中的跨距和所述跨距的占用率计数有关的信息,所述占用率计数指示所述跨距被有效跟踪块和无效跟踪块填充的程度,其中不具有有效跟踪块的跨距为空;
确定要从第一高速缓存降级的跟踪块;
形成包括所确定的要降级的跟踪块的第一跨距;
将来自第一跨距的跟踪块添加到第二高速缓存中的第二跨距,第二跨距具有指示跨距为空的占用率计数;
基于第二高速缓存中的跨距的占用率计数,确定第二高速缓存中的目标跨距;
基于第二高速缓存中的跨距的占用率计数,确定第二高速缓存中的具有有效跟踪块的至少两个源跨距;以及
用来自所述源跨距的有效跟踪块填充所述目标跨距。
2.如权利要求1所述的方法,其中,所述方法还包括:
使添加到所述目标跨距的源跨距中的跟踪块无效;以及
通过从所述源跨距添加到所述目标跨距的有效跟踪块的数目减少所述源跨距中的每一个的占用率计数。
3.如权利要求1所述的方法,其中,确定目标跨距包括:
选择第二高速缓存中的具有第二高速缓存中的跨距的最低占用率计数的一个跨距作为所述目标跨距。
4.如权利要求3所述的方法,其中,所述方法还包括:
选择第二高速缓存中的除了所述目标跨距之外的具有第二高速缓存中的跨距的最低占用率计数的至少两个跨距作为所述源跨距。
5.如权利要求4所述的方法,其中,选择第二高速缓存中的所述至少两个跨距作为所述源跨距还包括:
选择除了所述目标跨距之外的具有第二高速缓存中的跨距的最低占用率计数的多个源跨距,直到所选择的源跨距中的有效跟踪块的数目至少等于所述目标跨距中的跟踪块的数目。
6.如权利要求4所述的方法,其中,最低占用率计数被确定为有效跟踪块的最低数目和有效跟踪块的最低百分比中的一个。
7.如权利要求1所述的方法,其中,所述方法还包括:
确定要从第二高速缓存降级的第二高速缓存中的一个跨距中的一个跟踪块;
降级所确定的要从第二高速缓存降级的跟踪块;
使所确定的要在第二高速缓存中降级的跟踪块无效;以及
减少包括所确定的要降级的跟踪块的跨距的占用率计数。
8.如权利要求1所述的方法,其中,第一高速缓存是比第二高速缓存快的存取设备,以及其中,第二高速缓存是比所述存储设备快的存取设备。
9.如权利要求1所述的方法,其中,第一高速缓存包括动态随机存取存储器(RAM),第二高速缓存包括多个闪存设备,以及存储系统由比所述闪存设备慢的多个存取设备组成。
10.如权利要求1所述的方法,其中,所述方法还包括:
接收对第一高速缓存中的跟踪块的写;
确定接收所述写的跟踪块是否包括在第二高速缓存中;
响应于确定第一高速缓存中被写的跟踪块包括在第二高速缓存中,使第一高速缓存中更新的第二高速缓存中的跟踪块无效;以及
减少包括第二高速缓存中的被无效的跟踪块的第二高速缓存中的跨距的占用率计数。
11.如权利要求1所述的方法,其中,所述方法还包括:
确定具有指示跨距为空的占用率计数的跨距的数目是否低于预定的空闲跨距阈值;以及
其中,响应于确定具有指示跨距为空的占用率计数的跨距的数目低于所述预定的空闲跨距阈值,执行确定所述目标跨距、确定所述至少两个源跨距和所述填充。
12.如权利要求1所述的方法,其中形成跟踪块的第一跨距包括基于针对第二高速缓存定义为具有n个设备的独立磁盘冗余阵列(RAID)配置,形成针对RAID配置的跨距,所述n个设备包括用于存储数据的跟踪块的m个设备和用于存储根据所述m个设备的数据的跟踪块所计算的奇偶校验数据的至少一个奇偶校验设备。
13.如权利要求12所述的方法,其中,第一高速缓存包括动态随机存取存储器(DRAM),以及其中,第二高速缓存包括n个固态存储设备,其中,来自第一高速缓存的跟踪块的第一跨距在所述n个固态存储设备上被划分,以形成第二高速缓存中的第二跨距,其中,第一高速缓存存储包括修改数据或未修改数据以及顺序数据或非顺序数据的跟踪块,以及其中,要提升到第二高速缓存的形成在第一高速缓存中的跨距中的跟踪块包括未修改非顺序数据。
14.一种与存储系统通信的系统,包括:
处理器;
所述处理器能访问的第一高速缓存;
所述处理器能访问的第二高速缓存;
计算机可读存储介质,具有包含在其中由所述处理器执行以进行操作的计算机可读程序代码,所述操作包括:
保持与配置在第二高速缓存中的跨距和所述跨距的占用率计数有关的信息,所述占用率计数指示所述跨距被有效跟踪块和无效跟踪块填充的程度,其中不具有有效跟踪块的跨距为空;
确定要从第一高速缓存降级的跟踪块;
形成包括所确定的要降级的跟踪块的第一跨距;
将来自第一跨距的跟踪块添加到第二高速缓存中的第二跨距,第二跨距具有指示跨距为空的占用率计数;
基于第二高速缓存中的跨距的占用率计数,确定第二高速缓存中的目标跨距;
基于第二高速缓存中的跨距的占用率计数,确定第二高速缓存中的具有有效跟踪块的至少两个源跨距;以及
用来自所述源跨距的有效跟踪块填充所述目标跨距。
15.如权利要求14所述的系统,其中,所述操作还包括:
使添加到所述目标跨距的源跨距中的跟踪块无效;以及
通过从所述源跨距添加到所述目标跨距的有效跟踪块的数目减少所述源跨距中的每一个的占用率计数。
16.如权利要求14所述的系统,其中,确定目标跨距包括:
选择第二高速缓存中的具有第二高速缓存中的跨距的最低占用率计数的一个跨距作为所述目标跨距。
17.如权利要求16所述的系统,其中,所述操作还包括:
选择第二高速缓存中的除了所述目标跨距之外的具有第二高速缓存中的跨距的最低占用率计数的至少两个跨距作为所述源跨距。
18.如权利要求14所述的系统,其中,所述操作还包括:
确定要从第二高速缓存降级的第二高速缓存中的一个跨距中的一个跟踪块;
降级所确定的要从第二高速缓存降级的跟踪块;
使所确定的要在第二高速缓存中降级的跟踪块无效;以及
减少包括所确定的要降级的跟踪块的跨距的占用率计数。
19.如权利要求14所述的系统,其中,所述操作还包括:
确定具有指示跨距为空的占用率计数的跨距的数目是否低于预定的空闲跨距阈值;以及
其中,响应于确定具有指示跨距为空的占用率计数的跨距的数目低于所述预定的空闲跨距阈值,执行确定所述目标跨距、确定所述至少两个源跨距和所述填充。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/352,224 US8825957B2 (en) | 2012-01-17 | 2012-01-17 | Demoting tracks from a first cache to a second cache by using an occupancy of valid tracks in strides in the second cache to consolidate strides in the second cache |
US13/352,224 | 2012-01-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103257932A CN103257932A (zh) | 2013-08-21 |
CN103257932B true CN103257932B (zh) | 2016-03-16 |
Family
ID=48780807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310016876.0A Expired - Fee Related CN103257932B (zh) | 2012-01-17 | 2013-01-17 | 用于管理计算机可读高速缓存系统中的数据的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US8825957B2 (zh) |
CN (1) | CN103257932B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9824041B2 (en) * | 2014-12-08 | 2017-11-21 | Datadirect Networks, Inc. | Dual access memory mapped data structure memory |
WO2017000124A1 (zh) * | 2015-06-29 | 2017-01-05 | 华为技术有限公司 | 目录中表项合并的方法以及设备 |
US9996476B2 (en) | 2015-09-03 | 2018-06-12 | International Business Machines Corporation | Management of cache lists via dynamic sizing of the cache lists |
US10120811B2 (en) | 2015-09-29 | 2018-11-06 | International Business Machines Corporation | Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage |
US10095628B2 (en) | 2015-09-29 | 2018-10-09 | International Business Machines Corporation | Considering a density of tracks to destage in groups of tracks to select groups of tracks to destage |
US10241918B2 (en) | 2015-09-29 | 2019-03-26 | International Business Machines Corporation | Considering a frequency of access to groups of tracks to select groups of tracks to destage |
KR20170075396A (ko) | 2015-12-23 | 2017-07-03 | 고려대학교 산학협력단 | 메모리 시스템 |
CN106293543B (zh) * | 2016-08-25 | 2019-03-12 | 中国科学院计算技术研究所 | 一种基于捎带回收的瓦记录raid写顺序化方法及装置 |
US11314691B2 (en) * | 2020-02-28 | 2022-04-26 | International Business Machines Corporation | Reserved area to improve asynchronous data replication performance |
US11321201B2 (en) * | 2020-03-13 | 2022-05-03 | International Business Machines Corporation | Using a mirroring cache list to mirror modified tracks |
US11321234B2 (en) | 2020-03-13 | 2022-05-03 | International Business Machines Corporation | Using a mirroring cache list to demote modified tracks from cache |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1074916A2 (en) * | 1999-08-04 | 2001-02-07 | Lsi Logic Corporation | Hardware mechanism for managing cache structures in a data storage system |
CN1290890A (zh) * | 1999-10-01 | 2001-04-11 | 国际商业机器公司 | 利用高速缓存器管理raid存储系统的方法和系统 |
CN1967507A (zh) * | 2005-11-18 | 2007-05-23 | 国际商业机器公司 | 数据存储控制器及用于管理其中的高速缓存数据的方法 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4464713A (en) | 1981-08-17 | 1984-08-07 | International Business Machines Corporation | Method and apparatus for converting addresses of a backing store having addressable data storage devices for accessing a cache attached to the backing store |
US5860090A (en) | 1995-10-20 | 1999-01-12 | Informix Software, Inc. | Append-only storage in a disk array using striping and parity caching |
US5860091A (en) | 1996-06-28 | 1999-01-12 | Symbios, Inc. | Method and apparatus for efficient management of non-aligned I/O write request in high bandwidth raid applications |
US20010029574A1 (en) * | 1998-06-18 | 2001-10-11 | Rahul Razdan | Method and apparatus for developing multiprocessore cache control protocols using a memory management system generating an external acknowledgement signal to set a cache to a dirty coherence state |
JP2000057039A (ja) * | 1998-08-03 | 2000-02-25 | Canon Inc | アクセス制御方法及び装置及びファイルシステム及び情報処理装置 |
US6321240B1 (en) | 1999-03-15 | 2001-11-20 | Trishul M. Chilimbi | Data structure partitioning with garbage collection to optimize cache utilization |
US6925515B2 (en) | 2001-05-07 | 2005-08-02 | International Business Machines Corporation | Producer/consumer locking system for efficient replication of file data |
WO2003001383A2 (en) | 2001-06-26 | 2003-01-03 | Sun Microsystems, Inc. | Using an l2 directory to facilitate speculative loads in a multiprocessor system |
US6748488B2 (en) | 2001-09-28 | 2004-06-08 | Sun Microsystems, Inc. | Storage array having multiple erasure correction and sub-stripe writing |
US6785771B2 (en) * | 2001-12-04 | 2004-08-31 | International Business Machines Corporation | Method, system, and program for destaging data in cache |
US7107385B2 (en) | 2002-08-09 | 2006-09-12 | Network Appliance, Inc. | Storage virtualization by layering virtual disk objects on a file system |
US6904498B2 (en) | 2002-10-08 | 2005-06-07 | Netcell Corp. | Raid controller disk write mask |
US6996676B2 (en) | 2002-11-14 | 2006-02-07 | International Business Machines Corporation | System and method for implementing an adaptive replacement cache policy |
US7012835B2 (en) * | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US7386663B2 (en) * | 2004-05-13 | 2008-06-10 | Cousins Robert E | Transaction-based storage system and method that uses variable sized objects to store data |
US7885921B2 (en) | 2004-11-18 | 2011-02-08 | International Business Machines Corporation | Managing atomic updates on metadata tracks in a storage system |
US20060155934A1 (en) | 2005-01-11 | 2006-07-13 | Ramakrishnan Rajamony | System and method for reducing unnecessary cache operations |
US7698501B1 (en) | 2005-04-29 | 2010-04-13 | Netapp, Inc. | System and method for utilizing sparse data containers in a striped volume set |
US8504597B2 (en) | 2005-09-09 | 2013-08-06 | William M. Pitts | Distributed file system consistency mechanism extension for enabling internet video broadcasting |
JP4766240B2 (ja) | 2005-11-08 | 2011-09-07 | 日本電気株式会社 | ファイル管理方法、装置、およびプログラム |
US7444478B2 (en) | 2005-11-18 | 2008-10-28 | International Business Machines Corporation | Priority scheme for transmitting blocks of data |
US7650341B1 (en) | 2005-12-23 | 2010-01-19 | Hewlett-Packard Development Company, L.P. | Data backup/recovery |
US7702870B2 (en) | 2006-01-19 | 2010-04-20 | Network Appliance Inc. | Method and apparatus for defragmentation and for detection of relocated blocks |
US20080005520A1 (en) | 2006-06-09 | 2008-01-03 | Siegwart David K | Locality with parallel hierarchical copying garbage collection |
US7562203B2 (en) | 2006-09-27 | 2009-07-14 | Network Appliance, Inc. | Storage defragmentation based on modified physical address and unmodified logical address |
JP2008108145A (ja) | 2006-10-26 | 2008-05-08 | Hitachi Ltd | 計算機システム及びこれを用いたデータの管理方法 |
JP5031341B2 (ja) | 2006-11-30 | 2012-09-19 | 株式会社日立製作所 | 記憶システム及びデータ管理方法 |
US7721043B2 (en) | 2007-01-08 | 2010-05-18 | International Business Machines Corporation | Managing write requests in cache directed to different storage groups |
US20090210620A1 (en) | 2008-02-19 | 2009-08-20 | Jibbe Mahmoud K | Method to handle demand based dynamic cache allocation between SSD and RAID cache |
US7958310B2 (en) | 2008-02-27 | 2011-06-07 | International Business Machines Corporation | Apparatus, system, and method for selecting a space efficient repository |
US9088591B2 (en) | 2008-04-28 | 2015-07-21 | Vmware, Inc. | Computer file system with path lookup tables |
TWI476610B (zh) | 2008-04-29 | 2015-03-11 | Maxiscale Inc | 同級間冗餘檔案伺服器系統及方法 |
KR101044521B1 (ko) | 2008-12-31 | 2011-06-27 | 엘에스산전 주식회사 | 네트워크에 연결된 슬레이브 장치들의 동기 제어장치 |
US20100191907A1 (en) * | 2009-01-26 | 2010-07-29 | Lsi Corporation | RAID Converter and Methods for Transforming a First RAID Array to a Second RAID Array Without Creating a Backup Copy |
US8180981B2 (en) | 2009-05-15 | 2012-05-15 | Oracle America, Inc. | Cache coherent support for flash in a memory hierarchy |
US8255627B2 (en) | 2009-10-10 | 2012-08-28 | International Business Machines Corporation | Secondary cache for write accumulation and coalescing |
US8838903B2 (en) | 2010-02-04 | 2014-09-16 | Dataram, Inc. | Priority ordered multi-medium solid-state storage system and methods for use |
US8578107B2 (en) | 2010-02-16 | 2013-11-05 | International Business Machines Corporation | Extent migration scheduling for multi-tier storage architectures |
US8688913B2 (en) | 2011-11-01 | 2014-04-01 | International Business Machines Corporation | Management of partial data segments in dual cache systems |
US8688914B2 (en) | 2011-11-01 | 2014-04-01 | International Business Machines Corporation | Promotion of partial data segments in flash cache |
-
2012
- 2012-01-17 US US13/352,224 patent/US8825957B2/en not_active Expired - Fee Related
-
2013
- 2013-01-17 CN CN201310016876.0A patent/CN103257932B/zh not_active Expired - Fee Related
- 2013-02-27 US US13/779,309 patent/US8832377B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1074916A2 (en) * | 1999-08-04 | 2001-02-07 | Lsi Logic Corporation | Hardware mechanism for managing cache structures in a data storage system |
CN1290890A (zh) * | 1999-10-01 | 2001-04-11 | 国际商业机器公司 | 利用高速缓存器管理raid存储系统的方法和系统 |
CN1967507A (zh) * | 2005-11-18 | 2007-05-23 | 国际商业机器公司 | 数据存储控制器及用于管理其中的高速缓存数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103257932A (zh) | 2013-08-21 |
US8832377B2 (en) | 2014-09-09 |
US20130304968A1 (en) | 2013-11-14 |
US20130185476A1 (en) | 2013-07-18 |
US8825957B2 (en) | 2014-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103257932B (zh) | 用于管理计算机可读高速缓存系统中的数据的方法和系统 | |
US8850106B2 (en) | Populating strides of tracks to demote from a first cache to a second cache | |
CN103207840B (zh) | 用于将不完整记录从第一缓存降级至第二缓存的系统和方法 | |
CN104040508B (zh) | 用于在高速缓存系统中管理数据的方法和系统 | |
US7783839B2 (en) | Using different algorithms to destage different types of data from cache | |
US8775729B2 (en) | Prefetching data tracks and parity data to use for destaging updated tracks | |
US8745325B2 (en) | Using an attribute of a write request to determine where to cache data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device | |
CN104145252A (zh) | 两级高速缓存系统中的自适应高速缓存提升 | |
US9471496B2 (en) | Demoting tracks from a first cache to a second cache by using a stride number ordering of strides in the second cache to consolidate strides in the second cache | |
JP6099059B2 (ja) | ストレージのためのトラックのキャッシュ管理するプログラム、システム、および方法 | |
CN111857540A (zh) | 数据存取方法、装置和计算机程序产品 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160316 Termination date: 20210117 |
|
CF01 | Termination of patent right due to non-payment of annual fee |