CN114641759A - 使用异构存储器类型的复制副本高速缓存 - Google Patents
使用异构存储器类型的复制副本高速缓存 Download PDFInfo
- Publication number
- CN114641759A CN114641759A CN202080077451.9A CN202080077451A CN114641759A CN 114641759 A CN114641759 A CN 114641759A CN 202080077451 A CN202080077451 A CN 202080077451A CN 114641759 A CN114641759 A CN 114641759A
- Authority
- CN
- China
- Prior art keywords
- data element
- performance portion
- cache
- access count
- data
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 43
- 238000000034 method Methods 0.000 claims abstract description 111
- 238000004590 computer program Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 26
- 230000004044 response Effects 0.000 description 18
- 239000007787 solid Substances 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 208000031339 Split cord malformation Diseases 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 239000000835 fiber Substances 0.000 description 4
- 238000004645 scanning capacitance microscopy Methods 0.000 description 4
- 238000013068 supply chain management Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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
- 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/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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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
-
- 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/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- 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/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of 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/28—Using a specific disk cache architecture
- G06F2212/282—Partitioned cache
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
- G06F2212/284—Plural cache memories being distributed
-
- 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/28—Using a specific disk cache architecture
- G06F2212/285—Redundant cache memory
- G06F2212/286—Mirrored cache memory
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种用于从包括异构存储器类型的高速缓存降级数据的方法,针对高速缓存中的数据元素,维护写入访问计数,在每次在高速缓存中更新数据元素时,写入访问计数被递增。高速缓存包括较高性能部分和较低性能部分。该方法根据高速缓存降级算法从较高性能部分中移除数据元素。如果数据元素也驻留在较低性能部分中并且写入访问计数低于第一阈值,则该方法将数据元素留在较低性能部分中。如果数据元素也驻留在较低性能部分中并且写入访问计数等于或高于第一阈值,则该方法从较低性能部分中移除该数据元素。
Description
技术领域
本发明涉及用于实现由异构存储器类型构成的高速缓存的系统和方法。
背景技术
在计算领域中,“高速缓存”通常是指用于存储最近访问的、频繁访问的、或将来可能访问的数据或指令的小型、快速存储器或存储设备。从高速缓存中读取或向高速缓存写入通常比访问其它存储器或存储设备更便宜(在访问时间和/或资源利用率方面)。一旦数据被存储在高速缓存中,就可以在高速缓存中访问它,而不是重新取回和/或重新计算数据,从而节省时间和资源两者。
高速缓存通常被提供为多级高速缓存。例如,缓存系统可以包括“主”和“次”缓存两者。当读取数据时,计算系统或设备可以首先在主高速缓存中查找数据,并且如果该数据不存在,则在次级高速缓存中查找该数据。如果数据不在任一高速缓存中,则计算系统或设备可以从驻留在高速缓存之后的盘驱动器或其他后端存储设备取回数据。当写入数据时,计算系统或设备可以将数据写入主高速缓存。该数据最终可以被降级到次级高速缓存或存储设备以在主高速缓存中腾出空间。
闪存和其它固态存储器设备可以潜在地创建具有比使用诸如动态随机存取存储器(DRAM)高速缓存的更昂贵的存储器的那些高速缓存大得多的存储容量的高速缓存。例如,存储级存储器(SCM)、非易失性类型的NAND闪存提供比固态驱动器(SSD)高得多的访问速度。SCM比DRAM便宜得多,但是具有比DRAM更高的延迟(微秒与纳秒相比)。因为SCM使用闪存来存储数据,SCM表现出一些与闪存相同的限制和缺陷,诸如写入周期限制和数据分段的问题。
发明内容
本发明已经响应于本领域的当前状态,并且特别地,响应于本领域中尚未被当前可用的系统和方法完全解决的问题和需要而被开发。因此,已经开发了使用异构存储器类型的实现高速缓存的系统和方法。本发明的特征和优点将从以下描述和所附权利要求书中变得更加完全清楚,或者可以通过如下文所述的本发明的实践来了解。
与前述一致,公开了一种用于从包括异构存储器类型的高速缓存降级数据的方法。该方法针对高速缓存中的数据元素维护写入访问计数,该数据元素在每次高速缓存中被更新时,该写入访问计数递增。高速缓存包括较高性能部分和较低性能部分。该方法根据高速缓存降级算法从较高性能部分中移除数据元素。如果数据元素也驻留在较低性能部分中并且写入访问计数低于第一阈值,则该方法将数据元素留在较低性能部分中。如果数据元素也驻留在较低性能部分中并且写入访问计数等于或高于第一阈值,则该方法从较低性能部分中移除该数据元素。
本文还公开并且要求保护对应的系统和计算机程序产品。
附图说明
为了容易地理解本发明的优点,将通过参考附图中示出的具体实施例来呈现对以上简要描述的本发明的更具体的描述。应当理解,这些附图仅描绘了本发明的典型实施例,并且因此不应被认为是对其范围的限制,将通过使用附图来更具体并且详细地描述和解释本发明的实施例,在附图中:
图1是示出了其中可以实现根据本发明的系统和方法的网络环境的一个示例的高级框图;
图2是示出了用于图1的网络环境中的存储系统的一个示例的高级框图;
图3是示出包括较高性能部分(例如,DRAM高速缓存)和较低性能部分(例如,SCM高速缓存)的高速缓存的高级框图;
图4是示出根据本发明的高速缓存管理模块的高级框图;
图5是示出了可以响应于较高性能部分中的读取命中而执行的方法的一个实施例的流程图;
图6是示出了可以响应于较低性能部分中的读取命中而执行的方法的一个实施例的流程图;
图7是示出了可以响应于较低性能部分中的读命中而执行的方法的备选实施例的流程图;
图8是示出了可以响应于读取未命中而执行的方法的一个实施例的流程图;
图9是示出了可以响应于写入而执行的方法的一个实施例的流程图;
图10是示出了当数据元素从较高性能部分降级时可以执行的方法的一个实施例的流程图;
图11是示出了当数据元素从较低性能部分降级时可以执行的方法的一个实施例的流程图;
图12是示出了可以响应于较低性能部分中的读取命中而执行的方法的备选实施例的流程图;以及
图13是示出了当数据元素从较高性能部分降级时可以执行的方法的备选实施例的流程图。
具体实施方式
容易理解,如在本文的附图中一般性描述和示出的,本发明的组件可以以各种不同的配置来布置和设计。因此,如附图中所表示的,本发明的实施例的以下更详细的描述不旨在限制所要求保护的本发明的范围,而仅仅是根据本发明的目前预期的实施例的某些示例的代表。通过参考附图,将更好地理解目前描述的实施例,其中,在所有附图中,相同的组件由相同的附图标记表示。
本发明可以被实现为系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储(多个)介质,所述计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不被解释为暂态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如互联网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言(诸如,Smalltalk、C++等)以及常规的过程式编程语言(诸如,“C”编程语言或类似的编程语言)。
计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用互联网服务提供方通过互联网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
本文中参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
参考图1,示出了网络环境100的一个示例。网络环境100被呈现以示出其中可以实现根据本发明的系统和方法的环境的一个示例。网络环境100是作为示例而非限制来呈现的。实际上,除了所示的网络环境100之外,本文公开的系统和方法可以适用于各种不同的网络环境。
如图所示,网络环境100包括由网络104互连的一个或多个计算机102、106。网络104可以包括例如局域网(LAN)104、广域网(WAN)104、互联网104、内联网104等。在某些实施例中,计算机102、106可以包括客户端计算机102和服务器计算机106(本文中被也称为“主机系统”106)。通常,客户端计算机102发起通信会话,而服务器计算机106等待来自客户端计算机102的请求。在某些实施例中,计算机102和/或服务器106可以连接到一个或多个内部或外部直接附接的存储系统110a(例如,硬盘驱动器阵列、固态驱动器阵列、磁带驱动器阵列等)。这些计算机102、106和直接连接存储系统110a可以使用诸如ATA、SATA、SCSI、SAS、光纤通道等协议进行通信。
在某些实施例中,网络环境100可以包括服务器106后面的存储网络108,诸如存储区域网络(SAN)108或LAN 108(例如,当使用网络附接的存储装置时)。该网络108可以将服务器106连接到一个或多个存储系统,诸如硬盘驱动器或固态驱动器的阵列110b、磁带库110c、单独的硬盘驱动器110d或固态驱动器110d、磁带驱动器110e、CD-ROM库等。为了访问存储系统110,主机系统106可以通过从主机系统106上的一个或多个端口到存储系统110上的一个或多个端口的物理连接进行通信。连接可以通过交换机、结构、直接连接等。在某些实施例中,服务器106和存储系统110可以使用诸如光纤通道(FC)的联网标准进行通信。
参考图2,示出了包含硬盘驱动器204和/或固态驱动器204的阵列的存储系统110的一个实施例。如图所示,存储系统110包括存储控制器200、一个或多个交换机202以及一个或多个存储驱动器204,例如硬盘驱动器204或固态驱动器204(诸如,基于闪存的驱动器204)。存储控制器200可以使一个或多个主机系统106(例如,运行诸如z/OS、zVM等的操作系统的开放系统和/或主机服务器106)能够访问一个或多个存储驱动器204中的数据。
在所选实施例中,存储控制器200包括一个或多个服务器206。存储控制器200还可以包括主机适配器208和设备适配器210,以将存储控制器200分别连接到主机系统106和存储驱动器204。多个服务器206a、206b可以提供冗余以确保数据总是可用于连接的主机系统106。因此,当一个服务器206a发生故障时,另一个服务器206b可以获得发生故障的服务器206a的I/O负载,以确保I/O能够在主机系统106与存储驱动器204之间继续。该过程可以被称为“故障转移”。
在所选实施例中,每个服务器206可以包括一个或多个处理器212和存储器214。存储器214可以包括易失性存储器(例如,RAM)以及非易失性存储器(例如,ROM、EPROM、EEPROM、硬盘、闪存等)。在某些实施例中,易失性和非易失性存储器可以存储在(多个)处理器212上运行并且用于访问存储驱动器204中的数据的软件模块。这些软件模块可以管理对存储驱动器204中的逻辑卷的所有读取和写入请求。
在所选实施例中,存储器214包括高速缓存218,诸如DRAM高速缓存218。无论何时主机系统106(例如,开放系统或主机服务器106)执行读取操作,执行读取的服务器206可以从存储驱动器204获取数据,并且在再次需要的情况下将其保存在其高速缓存218中。如果主机系统106再次请求数据,则服务器206可以从高速缓存218获取数据,而不是从存储驱动器204获取数据,从而节省时间和资源两者。类似地,当主机系统106执行写入时,接收写入请求的服务器106可以将该写入存储在其高速缓存218中,并且在稍后的时间将该写入离台(“destage”)到存储驱动器204。当写入被存储在高速缓存218中时,该写入也可以被存储在相对服务器206的非易失性存储(NVS)220中,使得该写入可以在第一服务器206发生故障的情况下被相对服务器206恢复。在某些实施例中,NVS 220被实现为相对服务器206中的电池支持的存储器。
具有与图2所示的体系结构类似的体系结构的存储系统110的一个示例是IBMDS8000TM企业存储系统。DS8000TM是高性能、高容量的存储控制器,提供被设计成支持连续操作的盘存储。然而,本文公开的系统和方法不限于与IBM DS8000TM企业存储系统110一起操作,而是可以与任何相当或类似的存储系统110一起操作,而不管与系统110相关联的制造方、产品名称、或组件名称。此外,可以从本发明的一个或多个实施例受益的任何存储系统都被认为落入本发明的范围内。因此,IBM DS8000TM通过示例的方式被呈现,并且不旨在是限制性的。
参考图3,如前所述,闪存和其它固态存储器设备可以潜在地创建具有比使用更昂贵的存储器(诸如,DRAM高速缓存)的那些高速缓存大得多的存储容量的高速缓存。例如,存储级存储器(SCM),非易失性类型的NAND闪存提供比固态驱动器(SSD)高得多的访问速度。SCM比DRAM便宜得多,但是具有比DRAM更高的延迟(微秒与纳秒相比)。因为SCM可以使用闪存来存储数据,SCM可以表现出与闪存相同的一些限制和缺陷,例如写入周期限制和数据分段的问题。由于其创建具有大得多的存储容量的高速缓存的潜力,需要有效地将诸如SCM的闪存并入高速缓存的系统和方法。理想地,这样的系统和方法将考虑闪存的限制和不足,诸如写入周期限制和数据分段问题。
图3是示出包括较高性能部分218A和较低性能部分218B的异构高速缓存218(即,由异构存储器类型组成的高速缓存218)的高级框图。在某些实施例中,较高性能部分218a由DRAM存储器构成,而较低性能部分218b由SCM存储器构成,尽管两者都不限于这些类型的存储器。较高性能部分218a和较低性能部分218b可以一起用于在诸如IBM DS8000TM企业存储系统的存储系统110内提供高速缓存218。因为构成较低性能部分218B的存储器可能比构成较高性能部分218A的存储器便宜,所以较低性能部分218B可以比较高性能部分218A可能更大得多。
如图所示,较高性能部分218a可以具有与其相关联的高速缓存目录300a、LRU(最近最少使用)列表302a、以及统计信息304a。高速缓存目录300a可以记录哪些数据元素存储在较高性能部分218a中以及它们存储在哪里。LRU列表302a可以被用于确定较高性能部分218a中的哪个数据元素是最近最少使用的。统计信息304可以包括针对驻留在较高性能部分218a中的每个数据元素(例如,磁道)的读取访问计数306a和写入访问计数308a。每次在较高性能部分218a中读取数据元素时,读取访问计数306可以被递增。每次在较高性能部分218a中修改数据元素时,可以递增写入访问计数308。
类似地,较低性能部分218b还可以包括高速缓存目录300b、LRU列表302b、以及统计信息304b。高速缓存目录300b可以记录哪些数据元素存储在较低性能部分218b中以及它们存储在哪里。LRU列表302b可以用于确定哪个数据元素是在较低性能部分218b中最近最少使用的。统计信息304b可以包括针对较低性能部分218b中的每个数据元素(例如,磁道)的读取访问计数306b和写入访问计数308b。在每次较低性能部分218b中读取对应数据元素时,读取存取计数306b可以在递增。在每次较低性能部分218B中修改对应数据元素时,写入存取计数308B可以递增。
参考图4,在某些实施例中,高速缓存管理模块400可以用于管理诸如图3中所示的异构高速缓存218,这样的高速缓存管理模块400可以被托管在存储控制器200内。高速缓存管理模块400可以包括各种子模块以提供各种特征和功能。这些模块可以以硬件、软件、固件或其组合来实现。高速缓存管理模块400和相关联的子模块是作为示例而非限制来呈现的。在不同的实施例中可以提供更多或更少的子模块。例如,一些子模块的功能可以被组合到单个或更少数量的子模块中,或者单个子模块的功能可以跨多个子模块而被分布。
如图所示,高速缓存管理模块400包括以下一项或多项:统计更新模块402、读取命中模块404、读取未命中模块406、写入模块408和降级模块410。统计更新模块402保持与异构高速缓存218相关联的统计304。例如,每次在异构高速缓存218中读取数据元素时,统计更新模块402更新相关联的读取访问计数306。类似地,每次在异构高速缓存218中更新数据元素时,统计更新模块402更新相关联的写入访问计数308。
当在异构高速缓存218中发生读取命中时,读取命中模块404执行各种动作。这可以包括较高性能部分218a中的读取命中或较低性能部分218b中的读取命中。将结合图5到图7讨论可以由读取命中模块404执行的多种方法500、方法600、方法700,相反,当在异构高速缓存218中发生读取未命中时,读取未命中模块406可以执行各种动作。将结合图8讨论可以由读取未命中模块406执行的方法800的一个实施例。
当在异构高速缓存218中更新数据元素时,写入模块408可以执行各种动作。将结合图9讨论可以由写入模块408执行的方法900的一个实施例,相反,降级模块410可以执行与从异构高速缓存218降级数据元素相关联的动作,以便清除异构高速缓存218中的存储空间。将结合图10和11讨论可以由降级模块410执行的各种方法1000、方法1100。
参考图5,示出了可以响应于在异构高速缓存218的较高性能部分218A中的读取命中而执行的方法500的一个实施例。如图所示,方法500确定502在较高性能部分218a中是否发生读取命中。即,方法500确定502响应于读取I/O请求,在较高性能部分218a中是否找到与该读取I/O请求相关联的数据元素。如果是,则方法500从较高性能部分218A取回504数据元素,并且将数据元素返回504到读取请求的发起方。方法500响应于读取命中而递增506与数据元素相关联的读取访问计数306a。
参考图6,示出了可以响应于较低性能部分218B中的读取命中而执行的方法600的一个实施例。如图所示,方法600确定602在异构高速缓存218的较低性能部分218b中是否发生读取命中。如果是,则方法600从较低性能部分218B取回604与读取请求相关联的数据元素,并且将其返回604给读取请求的发起方。方法600然后递增606与数据元素相关联的读取访问计数306b。
响应于读取命中,方法600还分配608较高性能部分218A中的足以容纳数据元素的空间。在某些实施例中,这可以包括:通过从较高性能部分218A降级最近最少使用的数据元素来清除较高性能部分218A中的空间。方法600然后将与读取请求相关联的数据元素从较低性能部分218B复制610到较高性能部分218A。然后,可以从较低性能部分218B中移除612数据元素。这可以在较高性能部分218a中留下数据元素的单个副本。
参考图7,示出了可以响应于较低性能部分218B中的读取命中而执行的方法700的备选实施例。该方法700可以代替图6的方法600而被执行。除了最后的步骤712之外,步骤702、704、706、708、710中的每个步骤与图6中公开的那些相似或相同。在步骤712中,仅当与数据元素相关联的读取访问计数306b低于所选择的阈值时,备选方法700才从较低性能部分218b中移除712数据元素。如果数据元素被频繁读取,则该步骤712在较低性能部分218b中保存数据元素的第二副本。在将来的时间点数据元素从较高性能部分218a降级的情况下,数据元素的副本将仍然驻留在较低性能部分218b中。这消除或者减少了当数据元素被降级时将数据元素从较高性能部分218A复制到较低性能部分218B的需要,这降低了处理器利用率。
参考图8,示出了可以响应于读取未命中而执行的方法800的一个实施例。当在异构高速缓存218的较高性能部分218A或较低性能部分218b中都不能找到所请求的数据元素时,可能发生读取未命中。如图所示,如果在步骤802处发生读取未命中,则方法800将数据元素从后端存储驱动器204带入804到异构高速缓存218的较高性能部分218中。方法800此时不将数据元素放置806在较低性能部分218B中。
参考图9,示出了可以响应于更新异构高速缓存218中的数据元素而执行的方法900的一个实施例。如图所示,方法900确定902是否请求对数据元素的写入。如果是,方法900将该数据元素写入904到异构高速缓存218的较高性能部分218A。方法900还将数据元素写入906NVS 220,以便如前所述的冗余。
在这一点上,方法900确定908数据元素(或其先前版本)是否包含在较低性能部分218B中。如果数据元素存储在较低性能部分218b中,则方法900将与数据元素相关联的统计信息304b(即,读取访问计数306b和写入访问计数308b)从较低性能部分218b复制910到较高性能部分218a。方法900然后从较低性能部分218b移除910数据元素。
参考图10,示出了可以在从较高性能部分218a降级(即,逐出)数据元素时执行的方法1000的一个实施例。当在较高性能部分218a中需要空间来容纳附加数据元素时,可能发生这种降级。如图所示,方法1000最初确定1002是否需要从较高性能部分218a降级数据。如果是,则方法1000分析与较高性能部分218a相关联的LRU列表302a,以确定1004最近最少使用的数据元素,该元素将从较高性能部分218a中的行列中移除。然后,方法1000从较高性能部分218a中移除1004该数据元素。
此时,方法1000确定1006从较高性能部分218A移除的数据元素是否是顺序数据。如果是,则不进行进一步的处理,因为将顺序数据添加到较低性能部分218b中是不利的。如果数据元素不是顺序的,则方法1000确定1008与数据元素相关联的读取访问计数306a是否大于指定的阈值,并且确定1010与数据元素相关联的写入访问计数308a是否小于指定阈值。如果这两个条件都为真,则方法1000将从较高性能部分218A降级的数据元素放置1012在较低性能部分218B中。本质上,如果数据元素被频繁读取(从而增强数据元素的未来读取性能)但被不频繁地写入,则方法1000将数据元素放置1012在较低性能部分218B中,因为对数据元素的过度写入可能对较低性能部分218B造成过度磨损。
参考图11,示出了可以在从较低性能部分218B降级(即,逐出)数据元素时执行的方法1100的一个实施例。当在较低性能部分218B中需要空间时,可能发生这种降级。如图所示,方法1100最初确定1102数据是否需要从较低性能部分218b降级。如果是,则方法1100分析与较低性能部分218b相关联的LRU列表302b,以确定1103哪个数据元素在行列中要从较低性能部分218b中移除。
此时,方法1100确定1104对于要移除的行的数据元素的读取访问计数306b是否大于阈值(以确定数据元素是否被频繁读取)。如果读取访问计数306b高于阈值,则方法1100将数据元素留在1106较低性能部分218b中,并且将对数据元素的引用移动到LRU列表302b的MRU(最近最多使用)端。换而言之,方法1100不从较低性能部分218B移除数据元素,因为其被确定为被频繁读取并且将受益于被保留在较低性能部分218B中。方法1100还重置1108(例如,设置为零)与数据元素相关联的读取访问计数306b。然后,方法1100返回到顶部(即,步骤1102),在该顶部,它可以分析将从较低性能部分218B移除的队列中的下一数据元素。
另一方面,如果在步骤1104处,与数据元素相关联的读取访问计数306b不高于阈值,则方法1100从较低性能部分218b移除1110数据元素。
一般参考图12和图13,如前所述,图5到图11中所示的方法一般配置为在异构高速缓存218中维护数据元素的单个副本。即,如果数据元素驻留在较高性能部分218A中,则它一般将不驻留在较低性能部分218B中(或将从其移除),反之亦然。这以在数据元素从较高性能部分218a降级时,必须将数据元素从较高性能部分218a复制到较低性能部分218b为代价来提供最佳的总体高速缓存容量,这可以增加处理器利用率。因此,在高速缓存容量与处理器利用率之间存在折衷。
在某些实施例中,图5到图11中所示的方法可以被修改以在大部分情况下在较高性能部分218A和较低性能部分218B两者中都维护数据元素的副本。尽管这可以减少总的高速缓存存储容量,但是通过减少在较高性能部分218A与较低性能部分218B之间复制数据元素的需要,可以有利地减少处理器利用率。
图12是示出了可以响应于较低性能部分218B中的读取命中而执行的备选方法1200的流程图。该方法1200可以在较高性能部分218A和较低性能部分218B中维护数据元素的复制副本的环境中执行。该方法1200可以用于替换图6中描述的方法600,其可以在仅维护单个副本的环境中使用。
如图所示,方法1200确定1202在较低性能部分218b中是否发生了读取命中。如果是,则方法1200从较低性能部分218b取回1204与读取请求相关联的数据元素,并且将数据元素返回1206到读取请求的发起方。方法1200递增1206与数据元素相关联的读取访问计数306b。
响应于读取命中,方法1200在较高性能部分218A中分配1208足以容纳数据元素的空间。方法1200然后将与读取请求相关联的数据元素从较低性能部分218B复制1210到较高性能部分218A。数据元素可以被留在1212较低性能部分218B中。这可以在较高性能部分218A和较低性能部分218B中提供数据元素的复制副本。
图13是示出了可以在将数据元素从较高性能部分218A降级时执行的备选方法1300的流程图。该方法1300还可以在较高性能部分218A和较低性能部分218B中维护数据元素的复制副本的环境中执行。该方法1300可以用于替换图10中描述的方法1000,其可以在仅维护单个副本的环境中使用。
如图所示,方法1300最初确定1302是否需要从较高性能部分218a降级数据。如果是,则方法1300分析与较高性能部分218a相关联的LRU列表302a,以确定1304哪个数据元素在行列中要从较高性能部分218a中移除。然后,方法1300从较高性能部分218a中移除1304该数据元素。
方法1300然后确定1306从较高性能部分218A移除的数据元素是否也驻留在较低性能部分218B中。如果是,则方法1300确定1308与数据元素相关联的写入访问计数308b是否低于阈值。本质上,该步骤1308确定数据元素是否被频繁更新。如果数据元素不被频繁更新(即,数据元素的写入访问计数308B低于阈值),则数据元素被留在1310较低性能部分218B中,因为数据元素将不会对较低性能部分218B造成过度磨损。另一方面,如果数据元素被频繁更新(即,用于数据元素的写入访问计数308B高于阈值),则方法1300从较低性能部分218B移除1312数据元素。
如果在步骤1306处,数据元素不在较低性能部分218B中,则方法1300确定1314从较高性能部分218A移除的数据元素是否是顺序数据。如果是,则不改变任何内容,因为将数据元素添加到较低性能部分218B将是不利的。如果数据元素不是顺序的,则方法1300确定1316与数据元素相关联的读取访问计数306b是否大于指定阈值,并且确定1318与数据元素相关联的写入访问计数308b是否小于指定阈值。如果是,则方法1300将从较高性能部分218A降级的数据元素放置1320在较低性能部分218B中。本质上,如果数据元素被频繁读取(从而增强针对数据元素的未来读取性能)但不被频繁更新,则方法1300将降级的数据元素放置1320在较低性能部分218b中,因为如果在具有写入周期限制的存储器类型(例如,SCM)中实现过度写入,则过度写入可能将过度磨损放置在较低性能部分218b上。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示代码的模块、段或部分,其包括用于实现指定的逻辑功能的(多个)可执行指令。还应当注意,在一些备选实现中,框中所标注的功能可以不按图中所标注的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。其它实现可能不需要所有公开的步骤来实现所需功能。还将注意,框图和/或流程图的每个框以及框图和/或流程图中的框的组合可以由执行指定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
Claims (20)
1.一种用于从包括异构存储器类型的高速缓存降级数据的方法,所述方法包括:
针对数据元素,维持写入访问计数,在每次数据元素在高速缓存中被更新时,所述写入访问计数被递增,所述高速缓存包括较高性能部分和较低性能部分;
根据高速缓存降级算法从所述较高性能部分移除所述数据元素;
确定所述数据元素是否也驻留在所述较低性能部分中并且所述写入访问计数是否低于第一阈值,并且如果是,则将所述数据元素留在所述较低性能部分中;以及
确定所述数据元素是否也驻留在所述较低性能部分中并且所述写入访问计数是否等于或高于所述第一阈值,并且如果是,则从所述较低性能部分移除所述数据元素。
2.根据权利要求1所述的方法,还包括:如果在从所述较高性能部分移除所述数据元素时,所述数据元素也没有驻留在所述较低性能部分中,与所述数据元素相关联的写入访问计数低于所述第一阈值,并且与所述数据元素相关联的读取访问计数高于第二阈值,则将所述数据元素放置在所述较低性能部分中。
3.根据权利要求2所述的方法,还包括:如果所述数据元素不是顺序数据元素,则仅将所述数据元素放置在所述较低性能部分中。
4.根据权利要求1所述的方法,其中所述数据元素是磁道。
5.根据权利要求1所述的方法,其中从所述较高性能部分移除所述数据元素包括:当所述较高性能部分已满时,从所述较高性能部分移除所述数据元素。
6.根据权利要求1所述的方法,其中所述较高性能部分由动态随机存取存储器(DRAM)组成,并且所述较低性能部分由存储级存储器(SCM)组成。
7.根据权利要求1所述的方法,其中所述较低性能部分具有比所述较高性能部分更大的存储容量。
8.一种用于从包括异构存储器类型的高速缓存降级数据的计算机程序产品,所述计算机程序产品包括其中体现有计算机可用程序代码的非暂态计算机可读存储介质,所述计算机可用程序代码被配置为当由至少一个处理器执行时,执行以下操作:
针对数据元素,维护写入访问计数,在每次数据元素在高速缓存中被更新时,所述写入访问计数被递增,所述高速缓存包括较高性能部分和较低性能部分;
根据高速缓存降级算法从所述较高性能部分移除所述数据元素;
确定所述数据元素是否也驻留在所述较低性能部分中并且所述写入访问计数是否低于第一阈值,并且如果是,则将所述数据元素留在所述较低性能部分中;以及
确定所述数据元素是否也驻留在所述较低性能部分中并且所述写入访问计数是否等于或高于所述第一阈值,并且如果是,则从所述较低性能部分移除所述数据元素。
9.根据权利要求8所述的计算机程序产品,其中所述计算机可用程序代码还被配置为,如果在从所述较高性能部分移除所述数据元素时,所述数据元素也没有驻留在所述较低性能部分中,与所述数据元素相关联的写入访问计数低于所述第一阈值,并且与所述数据元素相关联的读取访问计数高于第二阈值,则将所述数据元素放置在所述较低性能部分中。
10.根据权利要求9所述的计算机程序产品,其中所述计算机可用程序代码还被配置为,如果所述数据元素不是顺序数据元素,则仅将所述数据元素放置在所述较低性能部分中。
11.根据权利要求8所述的计算机程序产品,其中所述数据元素是磁道。
12.根据权利要求8所述的计算机程序产品,其中从所述较高性能部分移除所述数据元素包括:当所述较高性能部分已满时,从所述较高性能部分移除所述数据元素。
13.根据权利要求8所述的计算机程序产品,其中所述较高性能部分由动态随机存取存储器(DRAM)组成,并且所述较低性能部分由存储级存储器(SCM)组成。
14.根据权利要求8所述的计算机程序产品,其中所述较低性能部分具有比所述较高性能部分更大的存储容量。
15.一种用于从包括异构存储器类型的高速缓存降级数据的系统,所述系统包括:
至少一个处理器;以及
至少一个存储器设备,被可操作地耦合到所述至少一个处理器并且存储用于在所述至少一个处理器上执行的指令,所述指令使所述至少一个处理器:
针对数据元素,维护写入访问计数,在每次数据元素在高速缓存中被更新时,所述写入访问计数被递增,所述高速缓存包括较高性能部分和较低性能部分;
根据高速缓存降级算法从所述较高性能部分移除所述数据元素;
确定所述数据元素是否也驻留在所述较低性能部分中并且所述写入访问计数是否低于第一阈值,并且如果是,则将所述数据元素留在所述较低性能部分中;以及
确定所述数据元素是否也驻留在所述较低性能部分中并且所述写入访问计数是否等于或高于所述第一阈值,并且如果是,则从所述较低性能部分移除所述数据元素。
16.根据权利要求15所述的系统,其中所述指令还使所述至少一个处理器在从所述较高性能部分移除所述数据元素时,如果所述数据元素也没有驻留在所述较低性能部分中,与所述数据元素相关联的写入访问计数低于所述第一阈值,并且与所述数据元素相关联的读取访问计数高于第二阈值,则将所述数据元素放置在所述较低性能部分中。
17.根据权利要求16所述的系统,其中所述指令还使所述至少一个处理器,如果所述数据元素不是顺序数据元素,则仅将所述数据元素放置在所述较低性能部分中。
18.根据权利要求15所述的系统,其中从所述较高性能部分移除所述数据元素包括:当所述较高性能部分已满时,从所述较高性能部分移除所述数据元素。
19.根据权利要求15所述的系统,其中所述较高性能部分由动态随机存取存储器(DRAM)组成,并且所述较低性能部分由存储级存储器(SCM)组成。
20.根据权利要求15所述的系统,其中所述较低性能部分具有比所述较高性能部分更大的存储容量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/684,291 US11210227B2 (en) | 2019-11-14 | 2019-11-14 | Duplicate-copy cache using heterogeneous memory types |
US16/684,291 | 2019-11-14 | ||
PCT/IB2020/060304 WO2021094871A1 (en) | 2019-11-14 | 2020-11-03 | Duplicate-copy cache using heterogeneous memory types |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114641759A true CN114641759A (zh) | 2022-06-17 |
Family
ID=75909475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080077451.9A Pending CN114641759A (zh) | 2019-11-14 | 2020-11-03 | 使用异构存储器类型的复制副本高速缓存 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11210227B2 (zh) |
JP (1) | JP7523535B2 (zh) |
KR (1) | KR20220068263A (zh) |
CN (1) | CN114641759A (zh) |
AU (1) | AU2020382138B2 (zh) |
DE (1) | DE112020004641B4 (zh) |
GB (1) | GB2605057B (zh) |
WO (1) | WO2021094871A1 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109629A1 (en) * | 2006-11-04 | 2008-05-08 | Virident Systems, Inc. | Asymmetric memory migration in hybrid main memory |
US20080114930A1 (en) * | 2006-11-13 | 2008-05-15 | Hitachi Global Storage Technologies Netherlands B.V. | Disk drive with cache having volatile and nonvolatile memory |
US9043530B1 (en) * | 2012-04-09 | 2015-05-26 | Netapp, Inc. | Data storage within hybrid storage aggregate |
CN107193646A (zh) * | 2017-05-24 | 2017-09-22 | 中国人民解放军理工大学 | 一种基于混合主存架构的高效动态页面调度方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5434738B2 (ja) | 2010-03-26 | 2014-03-05 | 日本電気株式会社 | ディスク装置 |
US9442858B2 (en) * | 2012-07-13 | 2016-09-13 | Ianywhere Solutions, Inc. | Solid state drives as a persistent cache for database systems |
US9195578B2 (en) | 2012-08-24 | 2015-11-24 | International Business Machines Corporation | Systems, methods and computer program products memory space management for storage class memory |
US20140095778A1 (en) | 2012-09-28 | 2014-04-03 | Jaewoong Chung | Methods, systems and apparatus to cache code in non-volatile memory |
WO2014061064A1 (en) | 2012-10-18 | 2014-04-24 | Hitachi, Ltd. | Cache control apparatus and cache control method |
WO2015051506A1 (en) * | 2013-10-09 | 2015-04-16 | Advanced Micro Devices, Inc. | Enhancing lifetime of non-volatile cache by reducing intra-block write variation |
WO2015051503A1 (en) * | 2013-10-09 | 2015-04-16 | Advanced Micro Devices, Inc. | Enhancing lifetime of non-volatile cache by injecting random replacement policy |
KR102195896B1 (ko) * | 2014-01-10 | 2020-12-28 | 삼성전자주식회사 | 디스크 캐시 제어 장치 및 방법 |
KR20170109133A (ko) | 2016-03-17 | 2017-09-28 | 에스케이하이닉스 주식회사 | 하이브리드 메모리 장치 및 그의 데이터 관리 방법 |
US9933952B1 (en) * | 2016-03-31 | 2018-04-03 | EMC IP Holding Company LLC | Balancing allocated cache pages among storage devices in a flash cache |
US11237758B2 (en) | 2016-08-06 | 2022-02-01 | Wolley Inc. | Apparatus and method of wear leveling for storage class memory using address cache |
JP2018036711A (ja) | 2016-08-29 | 2018-03-08 | 富士通株式会社 | ストレージシステム,ストレージ制御装置および制御プログラム |
US10417141B2 (en) | 2017-05-22 | 2019-09-17 | Arm Limited | Method and apparatus for hardware management of multiple memory pools |
US20190073305A1 (en) | 2017-09-05 | 2019-03-07 | Qualcomm Incorporated | Reuse Aware Cache Line Insertion And Victim Selection In Large Cache Memory |
JP6829172B2 (ja) | 2017-09-20 | 2021-02-10 | キオクシア株式会社 | 半導体記憶装置 |
CN109960471B (zh) | 2019-03-29 | 2022-06-03 | 深圳大学 | 数据存储方法、装置、设备以及存储介质 |
-
2019
- 2019-11-14 US US16/684,291 patent/US11210227B2/en active Active
-
2020
- 2020-11-03 DE DE112020004641.9T patent/DE112020004641B4/de active Active
- 2020-11-03 JP JP2022527044A patent/JP7523535B2/ja active Active
- 2020-11-03 CN CN202080077451.9A patent/CN114641759A/zh active Pending
- 2020-11-03 GB GB2207396.9A patent/GB2605057B/en active Active
- 2020-11-03 AU AU2020382138A patent/AU2020382138B2/en active Active
- 2020-11-03 KR KR1020227014135A patent/KR20220068263A/ko active Search and Examination
- 2020-11-03 WO PCT/IB2020/060304 patent/WO2021094871A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109629A1 (en) * | 2006-11-04 | 2008-05-08 | Virident Systems, Inc. | Asymmetric memory migration in hybrid main memory |
US20080114930A1 (en) * | 2006-11-13 | 2008-05-15 | Hitachi Global Storage Technologies Netherlands B.V. | Disk drive with cache having volatile and nonvolatile memory |
US9043530B1 (en) * | 2012-04-09 | 2015-05-26 | Netapp, Inc. | Data storage within hybrid storage aggregate |
CN107193646A (zh) * | 2017-05-24 | 2017-09-22 | 中国人民解放军理工大学 | 一种基于混合主存架构的高效动态页面调度方法 |
Non-Patent Citations (2)
Title |
---|
JUNWHAN AHN.ETC: "prediction hybrid Cache:An Energy-Efficient STT-RAM Cache Architecture", 《IEEE TRANSACTION ON COMPUTERS》, vol. 65, no. 3, 20 May 2015 (2015-05-20), pages 940 - 951, XP011597994, DOI: 10.1109/TC.2015.2435772 * |
展旭升等: "优化内存系统能效的DRAM架构研究综述", 《高技术通讯》, vol. 28, no. 9, 15 October 2018 (2018-10-15), pages 794 - 812 * |
Also Published As
Publication number | Publication date |
---|---|
DE112020004641T5 (de) | 2022-06-15 |
JP7523535B2 (ja) | 2024-07-26 |
US20210149808A1 (en) | 2021-05-20 |
US11210227B2 (en) | 2021-12-28 |
GB2605057A (en) | 2022-09-21 |
DE112020004641B4 (de) | 2024-05-29 |
GB2605057B (en) | 2023-11-15 |
AU2020382138A1 (en) | 2022-04-28 |
GB202207396D0 (en) | 2022-07-06 |
JP2023502341A (ja) | 2023-01-24 |
WO2021094871A1 (en) | 2021-05-20 |
AU2020382138B2 (en) | 2023-11-09 |
KR20220068263A (ko) | 2022-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9285998B2 (en) | Tiered caching and migration in differing granularities | |
US20150286580A1 (en) | Management of partial data segments in dual cache systems | |
US9417808B2 (en) | Promotion of partial data segments in flash cache | |
US11281594B2 (en) | Maintaining ghost cache statistics for demoted data elements | |
US11221954B2 (en) | Storing metadata in heterogeneous cache to improve I/O performance | |
US11157418B2 (en) | Prefetching data elements within a heterogeneous cache | |
US9471253B2 (en) | Use of flash cache to improve tiered migration performance | |
US10007600B2 (en) | NVS thresholding for efficient data management | |
US11372778B1 (en) | Cache management using multiple cache memories and favored volumes with multiple residency time multipliers | |
US11150840B2 (en) | Pinning selected volumes within a heterogeneous cache | |
JP2015052853A (ja) | ストレージ制御装置、制御方法及びプログラム | |
US11550732B2 (en) | Calculating and adjusting ghost cache size based on data access frequency | |
US11182307B2 (en) | Demoting data elements from cache using ghost cache statistics | |
AU2020382138B2 (en) | Duplicate-copy cache using heterogeneous memory types | |
US11372764B2 (en) | Single-copy cache using heterogeneous memory types | |
US11194730B2 (en) | Application interface to depopulate data from cache | |
US11379382B2 (en) | Cache management using favored volumes and a multiple tiered cache memory | |
US11372761B1 (en) | Dynamically adjusting partitioned SCM cache memory to maximize performance |
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 |