CN111581125A - 高效跟踪脏高速缓存行在二级主存储器的高速缓存中的位置的方法和装置 - Google Patents
高效跟踪脏高速缓存行在二级主存储器的高速缓存中的位置的方法和装置 Download PDFInfo
- Publication number
- CN111581125A CN111581125A CN202010052757.0A CN202010052757A CN111581125A CN 111581125 A CN111581125 A CN 111581125A CN 202010052757 A CN202010052757 A CN 202010052757A CN 111581125 A CN111581125 A CN 111581125A
- Authority
- CN
- China
- Prior art keywords
- cache
- dirty
- cache line
- memory
- line
- 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
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/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/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/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- 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/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了包括持久性存储器和高速缓存的二级主存储器。通过使用脏高速缓存行跟踪器来跟踪脏高速缓存行在高速缓存中的位置。脏高速缓存行跟踪器存储在高速缓存中,并且可以被缓存到用于持久性存储器的存储器控制器中。脏高速缓存行跟踪器可以用于绕过高速缓存查找、执行高效的脏高速缓存行清理以及使电池电量与二级主存储器中的高速缓存的容量解耦。
Description
技术领域
本公开涉及二级主存储器,并且特别涉及二级主存储器中的高速缓存管理。
背景技术
二级主存储器可以包括包含易失性存储器的第一级和包含持久性存储器的第二级。第二级作为“主存储器”向主机操作系统呈现,而第一级是用于对主机操作系统透明的第二级的高速缓存。第一级可以是直接映射的高速缓存,其中每个高速缓存行包括数据、元数据和纠错码(ECC)。元数据可以包括脏位、标签位和状态位。如果二级存储器的最小存储器读取粒度是高速缓存行,则读取数据、元数据和ECC以检查高速缓存行的脏位,以确定高速缓存行是干净的还是脏的。
附图说明
当进行以下详细描述并且在参考附图时,要求保护的主题的实施例的特征将变得显而易见,在附图中,相同的附图标记描述相同的部分,并且其中:
图1是计算机系统的框图,该计算机系统包括二级主存储器和脏高速缓存行跟踪器,该脏高速缓存行跟踪器用于跟踪脏高速缓存行在二级主存储器的第一级中的高速缓存(易失性存储器)中的位置;
图2是图1中示出的二级主存储器的第一级主存储器中的高速缓存行的概念图;
图3A是示出脏高速缓存行跟踪器的实施例的框图,该脏高速缓存行跟踪器用于跟踪图1中示出的高速缓存(二级主存储器的第一级主存储器)中的脏高速缓存行;
图3B是示出易失性存储器控制器中的脏高速缓存行跟踪器高速缓存的实施例的框图;
图4是示出脏高速缓存行跟踪器与高速缓存中的高速缓存行之间的关系的框图;
图5是示出使用脏高速缓存行跟踪器以绕过对高速缓存中的高速缓存行中的脏位的查找的流程图;
图6是示出使用经缓存的脏高速缓存行跟踪器来改进二级存储器中的带宽利用的流程图;以及
图7是示出在具有二级存储器的系统中使用经缓存的脏高速缓存行跟踪器来减少电池容量的流程图。
虽然将参考要求保护的主题的说明性实施例来进行以下详细描述,但是说明性实施例的许多替换、修改和变型将对本领域技术人员是显而易见的。因此,旨在宽泛地看待要求保护的主题,并且仅如所附权利要求书中阐述的来限定要求保护的主题。
具体实施方式
读取整个高速缓存行以检查高速缓存行中的一位既浪费了存储器带宽,又消耗了系统功率。与读取整个高速缓存行来检查针对二级主存储器的第一级中的高速缓存行的脏位的状态相反,通过使用脏高速缓存行跟踪器来跟踪脏高速缓存行在高速缓存中的位置。脏高速缓存行跟踪器存储在二级主存储器的第一级存储器中,并且被缓存到用于第一级存储器的存储器控制器中。脏高速缓存行跟踪器可以用于绕过高速缓存查找、执行高效的脏高速缓存行清理以及使电池电量与二级主存储器的第一级的容量解耦。
将参考下面讨论的细节来描述本发明的各种实施例和方面,并且附图将示出各种实施例。以下说明书和附图是对本发明的说明并且不应被解释为限制本发明。描述了许多具体细节以提供对本发明的各种实施例的透彻理解。然而,在某些实例中,没有描述公知的或常规的细节以便于提供对本发明的实施例的简洁讨论。
在说明书中对“一个实施例”或“实施例”的引用表示结合该实施例描述的特定特征、结构或特性可以包括在本发明的至少一个实施例中。在说明书中各种位置出现的短语“在一个实施例中”不一定全都指代同一实施例。
图1是计算机系统100的框图,该计算机系统100包括二级主存储器和脏高速缓存行跟踪器,该脏高速缓存行跟踪器用于跟踪脏高速缓存行在二级主存储器的第一级中的高速缓存(易失性存储器)中的位置。计算机系统100可以对应于计算设备,包括但不限于服务器、工作站计算机、台式计算机、膝上型计算机和/或平板计算机。
计算机系统100包括片上系统(SOC或SoC)104,该片上系统将处理器、图形、存储器和输入/输出(I/O)控制逻辑组合到一个SoC封装中。SoC104包括至少一个中央处理单元(CPU)模块108、易失性存储器控制器114和图形处理器单元(GPU)110。在其他实施例中,易失性存储器控制器114可以在SoC 104的外部。尽管未示出,但是(多个)处理器核心102中的每一个可以在内部包括一个或多个指令/数据高速缓存、执行单元、预取缓冲器、指令队列、分支地址计算单元、指令解码器、浮点单元、引退单元等。根据一个实施例,CPU模块108可以对应于单核心或双核心通用处理器,例如,由公司提供的那些处理器。在其他实施例中,CPU模块108可以对应于具有多于两个核心的多核心或许多核心处理器。
二级主存储器包括易失性存储器126中的高速缓存136(第一级主存储器,也可以称为“近”存储器)和持久性存储器132(第二级主存储器,也可以称为“远”存储器)。高速缓存136将存储在持久性存储器132中的数据缓存到高速缓存行中。如果存储在高速缓存136中的高速缓存行中的数据在从持久性存储器132复制之后没有被修改,则该高速缓存行是干净的。如果存储在高速缓存136中的高速缓存行中的数据在从持久性存储器132复制之后已经被写入,则该高速缓存行是脏的。持久性存储器132通信地耦合到持久性存储器控制器138,该持久性存储器控制器138通信地耦合到SoC 104中的CPU模块108。持久性存储器132可以被包括在诸如双列直插式存储器模块(DIMM)(可以称为非易失性双列直插式存储器模块(NVDIMM))之类的存储器模块上。
易失性存储器126中的高速缓存136中的脏高速缓存行跟踪器(“DCT”)150用于跟踪脏高速缓存行在高速缓存136中的位置。易失性存储器控制器114中的脏高速缓存行跟踪器高速缓存152可以用于缓存脏高速缓存行跟踪器。除了高速缓存136之外,应用130、操作系统(OS)142和高速缓存管理器134可以存储在易失性存储器126中。
持久性存储器132是非易失性存储器。非易失性存储器(NVM)设备是这样的存储器:即使到设备的电力被中断,该存储器的状态也是确定的。NVM设备可以包括块可寻址存储器设备(例如,NAND技术),或者更具体地,包括两阈值级别NAND闪速存储器(例如,单级单元(“SLC”)、两级单元(“MLC”)、四级单元(“QLC”)、三级单元(“TLC”)或某种其他NAND)。NVM设备还可以包括字节可寻址就地写入三维交叉点存储器设备,或其他字节可寻址就地写入存储器(也称为持久性存储器),例如,单级或两级相变存储器(PCM)或具有开关的相变存储器(PCMS)、使用硫属化合物相变材料(例如,硫属化合物玻璃)的NVM设备、电阻式存储器(包括金属氧化物基、氧空位基和导电桥随机存取存储器(CB-RAM))、纳米线存储器、铁电随机存取存储器(FeRAM、FRAM)、结合忆阻器技术的磁阻随机存取存储器(MRAM)、自旋移矩(STT)-MRAM、基于自旋电子磁结存储器的设备、基于磁性隧道结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备,或上述设备中的任何设备的组合或其他存储器。
高速缓存136是易失性存储器。易失性存储器是这样的存储器:如果到设备的电力被中断,则该存储器的状态(以及因此存储在存储器中的数据)是不确定的。动态易失性存储器要求刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)或诸如同步DRAM(SDRAM)之类的一些变体。如本文所描述的存储器子系统可以与以下多种存储器技术兼容:例如,DDR3(双倍数据速率版本3,由JEDEC(联合电子器件工程委员会)在2007年6月27日最初发布)、DDR4(DDR版本4,由JEDEC在2012年9月公布的初始规范)、DDR4E(DDR版本4)、LPDDR3(低功率DDR版本3,JESD209-3B,由JEDEC在2013年8月发布)、LPDDR4(LPDDR版本4,JESD209-4,由JEDEC在2014年8月最初公布)、WIO2(宽输入/输出版本2,JESD229-2,由JEDEC在2014年8月最初公布)、HBM(高带宽存储器,JESD325,由JEDEC在2013年10月最初公布)、DDR5(DDR版本5,目前由JEDEC讨论)、LPDDR5(目前由JEDEC讨论)、HBM2(HBM版本2,目前由JEDEC讨论)或者其他存储器技术或存储器技术的组合,以及基于这些规范的衍生物或扩展的技术。JEDEC标准可以在www.jedec.org处获得。
图形处理器单元(GPU)110可以包括一个或多个GPU核心以及可以存储用于GPU核心的图形相关数据的GPU高速缓存。GPU核心可以在内部包括一个或多个执行单元以及一个或多个指令高速缓存和数据高速缓存。另外地,图形处理器单元(GPU)110可以包含图1中未示出的其他图形逻辑单元,例如,一个或多个顶点处理单元、光栅化单元、媒体处理单元和编解码器。
在I/O子系统112内,存在一个或多个I/O适配器116,以将在(多个)处理器核心102内使用的主机通信协议转换为与特定I/O设备兼容的协议。适配器可以用于转换的协议中的一些协议包括外围组件互连(PCI)快速(PCIe);通用串行总线(USB);串行高级技术附件(SATA)以及电气和电子工程师协会(IEEE)1594“Firewire”。
(多个)I/O适配器116可以与外部I/O设备124通信,外部I/O设备124可以包括例如包括显示器和/或触摸屏显示器140、打印机、小键盘、键盘、有线和/或无线的通信逻辑的(多个)用户接口设备,以及包括硬盘驱动器(“HDD”)、固态驱动器(“SSD”)118、可移除存储介质、数字视频盘(DVD)驱动器、光盘(CD)驱动器、独立磁盘冗余阵列(RAID)、磁带驱动器或其他存储设备的(多个)存储设备。存储设备可以使用各种协议中的一种或多种协议来通过一条或多条总线通信地和/或物理地耦合到一起,这些协议包括但不限于SAS(串行附接SCSI(小型计算机系统接口))、PCIe(外围组件互连快速)、通过PCIe(外围组件互连快速)的NVMe(非易失性存储器快速)以及SATA(串行ATA(高级技术附件))。
另外地,可以存在一个或多个无线协议I/O适配器。无线协议的示例用于个域网(例如,IEEE 802.15和蓝牙4.0);无线局域网(例如,基于IEEE802.11的无线协议);以及蜂窝协议以及其他。
图2是图1中示出的二级主存储器的高速缓存136中的高速缓存行的概念图。高速缓存136可以经由用于高效处理的高带宽、低延迟的模块耦合到SoC 104。二级主存储器的持久性存储器132可以经由(与高速缓存136的模块相比)低带宽、高延迟的模块耦合到SoC104。
在实施例中,高速缓存136是同步动态随机存取存储器(例如,JEDEC DDR SDRAM),并且持久性存储器132是三维交叉点存储器设备(例如,3D XPointTM技术)。高速缓存136(二级主存储器的第一级存储器)被组织为直接映射的高速缓存。数据以固定大小的块(称为高速缓存行或高速缓存块)在持久性存储器132(二级主存储器的第二级)与高速缓存136之间传送。高速缓存行200包括数据202以及元数据和纠错码(ECC)204。元数据和纠错码(ECC)204包括ECC 214、标签206、有效位208和脏位210。当数据从持久性存储器132复制到高速缓存136中的高速缓存行中时,将所请求的存储器位置(存储在持久性存储器132中的数据的地址)存储在标签字段206中,并且将数据存储在高速缓存行200中的数据字段202中。
在实施例中,高速缓存136包括九个存储器芯片,其中用于高速缓存行的数据跨九个存储器芯片中的八个存储,并且用于高速缓存行的元数据和ECC存储在九个存储器芯片中的一个中。九个存储器芯片可能位于双列直插式存储器模块(DIMM)上。每个高速缓存行(其也可以称为高速缓存块)为64字节,其中八个存储器芯片中的每一个用于存储64字节高速缓存行的8字节。每个64字节的高速缓存行具有8字节的元数据和ECC。如图2中示出的,每个高速缓存块的标签206和元数据,包括脏位210,被存储在ECC芯片中。
图3A是示出脏高速缓存行跟踪器150的实施例的框图,该脏高速缓存行跟踪器150用于跟踪图1中示出的高速缓存136(二级主存储器的第一级主存储器)中的脏高速缓存行。
脏高速缓存行跟踪器150包括多个脏高速缓存行条目302,以快速且高效地跟踪脏高速缓存行200在高速缓存136中的位置。如结合图1所讨论的,脏高速缓存行跟踪器150存储在高速缓存136中。
图3B是示出易失性存储器控制器114中的脏高速缓存行跟踪器高速缓存152的实施例的框图。脏高速缓存行跟踪器高速缓存152包括多个脏高速缓存行跟踪器条目312。
图4是示出脏高速缓存行跟踪器300与高速缓存136中的高速缓存行200之间的关系的框图。在实施例中,脏高速缓存行跟踪器150中的每个脏高速缓存行条目302可以存储512个脏位,512个脏位中的每一个对应于高速缓存136中的512个连续高速缓存行200中的一个。高速缓存150中存在针对8个连续排400的一个脏高速缓存行条目,其中连续排400中的每个高速缓存排402具有64个高速缓存行200。脏高速缓存行条目302包括脏位向量304、有效(V)位306和ECC 310。有效位306的状态指示存储在脏位向量304中的数据是否有效。脏位向量304中的每一位对应于高速缓存136中的八个连续高速缓存排400中的高速缓存行200中的一个。脏位向量304中的脏位的状态指示高速缓存136中的对应的高速缓存行200是脏的还是干净的。
在实施例中,脏高速缓存行跟踪器150是静态随机存取存储器(SRAM)。每次改变脏位向量304中的脏位的状态以指示对应的高速缓存行脏(从逻辑“1”改变到逻辑“0”或从逻辑“0”改变到逻辑“1”)的时候,即,当数据被写入高速缓存136中的高速缓存行200时,脏高速缓存行跟踪器150中的脏位向量304中的对应的脏位被更新以反映该改变。在实施例中,高速缓存136中的脏高速缓存行跟踪器150被缓存到易失性存储器控制器114中的脏高速缓存行跟踪器高速缓存152中。脏高速缓存行跟踪器高速缓存152中的脏高速缓存行跟踪器条目312包括脏位向量304、有效(V)位306、标签308和ECC 310。标签308将第一排地址存储在高速缓存136中的与脏位向量304中的脏位相对应的连续排中。
在其中高速缓存136是512千兆字节(GB)的实施例中,512GB中的1GB被分配给脏高速缓存行跟踪器150(即,高速缓存136的0.02%)。脏高速缓存行跟踪器150中的脏高速缓存行条目302中的脏位向量304中的脏位指示对应的排402中的高速缓存行200是否是脏的。脏高速缓存行条目302被缓存到易失性存储器控制器114中的脏位跟踪器高速缓存152中。在实施例中,脏位跟踪器高速缓存152是组关联高速缓存。
在其中高速缓存136的0.02%被分配给脏高速缓存行跟踪器150的实施例中,通过改变标签308中最高有效位的状态,持久性存储器132中映射到脏高速缓存行跟踪器150的数据被重新映射到高速缓存136中的其他位置。图5是示出使用脏高速缓存行跟踪器以绕过对高速缓存136中的高速缓存行中的脏位的查找的流程图。
在框500处,如果接收到写入请求,则处理继续到框502。
在框502处,如果接收到插入请求,则处理继续到框504。
在框504处,读取易失性存储器控制器114中的脏位跟踪器高速缓存152中的脏高速缓存行条目302,以确定与要写入的高速缓存行200相关联的脏位的状态。当数据被写入高速缓存136中的高速缓存行200时(其中脏位210是逻辑“0”,从而指示高速缓存行是干净的,即,在从持久性存储器132复制之后没有被修改(写入)),对应的高速缓存行200块的脏位210从逻辑“0”(干净)改变为逻辑“1”(脏)。在将数据写入高速缓存行200之后,如果与高速缓存行相关联的脏位位于脏位跟踪器高速缓存152中的脏高速缓存行条目302中,则脏位从逻辑“0”(干净)改变为逻辑“1”(脏)。如果与高速缓存行相关联的脏位没有位于脏位跟踪器高速缓存152中的脏高速缓存行条目302中,则从脏高速缓存行跟踪器150获取脏高速缓存行条目302,将其插入到脏位跟踪器高速缓存152中,并且脏位从逻辑“0”(干净)改变为逻辑“1”(脏)。
在框506处,响应于在高速缓存136中插入高速缓存行的请求,在高速缓存中选择要从高速缓存136中逐出的脏高速缓存行。访问脏高速缓存行跟踪器高速缓存152以基于存储在脏高速缓存行跟踪器高速缓存152中的脏位的状态来选择脏高速缓存行。存储在脏高速缓存行中的经修改的数据被写回到持久性存储器132,并且对应的高速缓存行200的脏位210从逻辑“1”(脏)改变为逻辑“0”(干净),并且脏高速缓存行跟踪器高速缓存152中对应于被逐出的高速缓存行200的脏位从逻辑“1”(脏)改变为逻辑“0”(干净)。
图6是示出使用经缓存的脏高速缓存行跟踪器152来改进二级存储器中的带宽利用的流程图。
在框600处,监视持久性存储器带宽利用和高速缓存带宽利用。在实施例中,通过对读取队列和写入队列中的请求数量进行计数来监视带宽利用。如果可以高效地利用持久性存储器带宽和高速缓冲存储器带宽两者,则可以改进二级存储器的整体带宽利用。
在框602处,如果读取队列和写入队列中没有请求,则持久性存储器是空闲的。如果持久性存储器是空闲的,则处理继续到框604。如果持久性存储器不是空闲的,则处理继续到框600。
在框604处,如果高速缓存是带宽饱和的并且持久性存储器是空闲的,则处理继续到框606。如果高速缓存不是带宽饱和的并且持久性存储器是空闲的,则处理继续到框608。
在框606处,高速缓存是带宽饱和的并且持久性存储器是空闲的,读取高速缓存的请求可以从易失性存储器控制器114重定向到针对持久性存储器132的持久性存储器控制器138,以用于取决于与高速缓存中的高速缓存行(数据存储在其中)相关联的脏位的状态的服务。可以根据脏高速缓存行跟踪器高速缓存中的脏位的状态简单地确定对高速缓存的读取请求是否针对存储在高速缓存中的未经修改的数据,并且可以由持久性存储器提供服务。仅用于读取高速缓存中的、其中脏位为“0”的高速缓存行中存储的数据的请求(其可以称为“干净数据请求”)可以重定向到持久性存储器。如果请求用于读取高速缓存中的、其中脏位为“1”的高速缓存行中存储的数据(其可以称为“脏数据请求”),则访问不可以重定向到持久性存储器,因为存储在持久性数据中的数据是陈旧数据。
在框608处,当持久性存储器是空闲的并且高速缓存不是饱和的时,可以将高速缓存中的高速缓存行中的经修改的数据写回到持久性存储器。可以根据脏高速缓存行跟踪器高速缓存中的脏位的状态简单地确定存储要被写回到持久性存储器的经修改的数据(也称为“陈旧数据”)的高速缓存行。在持久性存储器空闲时写入经修改的数据(也称为“脏高速缓存行”或“脏块”)减少在高速缓存中逐出高速缓存行的时间,因为陈旧数据已经被写回到持久性存储器。
图7是示出在具有二级存储器的系统中使用脏高速缓存行跟踪器高速缓存152来减少电池容量的流程图。
高速缓存136是易失性存储器,并且可以包括电池供电的动态随机存取存储器(DRAM)。选择“电池容量”(由电池存储的电量的度量)以确保在失去到系统的电力的情况下可以将高速缓存136中的所有数据刷新到持久性存储器132。在没有任何优化的情况下,电池容量需要确保系统在失去电力事件后可以操作足够的时间段,以将存储在高速缓存136中的所有数据写入持久性存储器132。
在框700处,在系统中维护脏块的计数以跟踪高速缓存136中为脏的高速缓存行的数量。在包括具有固定容量的电池的系统中,当由电池向系统提供电力时可以写回到持久性存储器132的脏高速缓存行的数量代表可以在任何时间点修改的高速缓存行的数量的阈值(或脏高速缓存行预算)。
在框702处,如果高速缓存136中的脏高速缓存行的数量大于脏高速缓存行预算,则处理继续到框704。
在框704处,将存储在高速缓存中的脏高速缓存行中的数据写回到持久性存储器132,直到脏块的计数低于脏高速缓存行预算为止。
在使用脏高速缓存行跟踪器150来跟踪高速缓存136中的脏高速缓存行的二级主存储器中,在一个实施例中,电池容量仅需要确保在电力故障后可以将高速缓存内容的25%刷新到持久性存储器132。这显著地降低了二级主存储器的(基于电池容量的)电池成本。
本文示出的流程图提供了各种处理动作的序列的示例。流程图可以指示要由软件或固件例程执行的操作以及物理操作。在一个实施例中,流程图可以示出可以以硬件和/或软件实现的有限状态机(FSM)的状态。尽管以特定的序列或次序示出,但除非另有指示,否则可以修改动作的次序。因此,示出的实施例应仅被理解为示例,并且可以以不同的次序执行过程,并且一些动作可以并行执行。另外地,在各种实施例中,可以省略一个或多个动作;因此,并非在每个实施例中都要求所有的动作。其他过程流也是可能的。
就本文所描述的各种操作或功能而言,可以将各种操作或功能描述或定义为软件代码、指令、配置和/或数据。内容可以是直接可执行的(“对象”或“可执行的”形式)、源代码或差异代码(“增量”或“补丁”代码)。本文所描述的实施例的软件内容可以经由其上存储有内容的制品提供,或者经由操作通信接口以经由通信接口发送数据的方法提供。机器可读存储介质可以使得机器执行所描述的功能或操作,并且包括以机器(例如,计算设备、电子系统等)可访问的形式存储信息的任何机制,例如,可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪速存储器设备等)。通信接口包括与硬连线、无线、光学等介质中的任一介质接合以与另一设备通信的任何机制,例如,存储器总线接口、处理器总线接口、互联网连接、磁盘控制器等。可以通过提供配置参数和/或发送信号来配置通信接口,以准备通信接口来提供描述软件内容的数据信号。可以经由发送到通信接口的一个或多个命令或信号来访问通信接口。
本文所描述的各种组件可以是用于执行所描述的操作或功能的模块。本文所描述的每个组件包括软件、硬件或这些软件和硬件的组合。组件可以实现为软件模块、硬件模块、特殊用途硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。
除了本文所描述的内容之外,在不脱离本发明的所公开的实施例以及实现方式的范围的情况下,可以对本发明的所公开的实施例以及实现方式进行各种修改。
Claims (22)
1.一种装置,包括:
二级系统存储器,所述二级系统存储器包括:
持久性存储器;以及
易失性存储器,所述易失性存储器包括:
高速缓存,所述高速缓存包括多个高速缓存行,每个高速缓存行用于存储从所述持久性存储器读取的数据的副本;
脏高速缓存行跟踪器,所述脏高速缓存行跟踪器用于存储多个脏高速缓存行条目,每个脏高速缓存行条目用于存储N个脏位,每个脏位对应于所述高速缓存中的N个连续高速缓存行中的一个;以及
高速缓存管理器,所述高速缓存管理器用于读取脏高速缓存行条目中的所述N个脏位,以标识脏高速缓存行在所述高速缓存中的位置。
2.根据权利要求1所述的装置,其中,所述高速缓存管理器用于将与所述脏高速缓存行条目中的所述脏位相关联的所述脏高速缓存行写入所述持久性存储器。
3.根据权利要求1所述的装置,其中,所述高速缓存管理器用于监视所述脏高速缓存行跟踪器中的脏行的数量,并且在所述脏行的数量大于脏行的阈值数量时将脏高速缓存行写入持久性存储器。
4.根据权利要求1所述的装置,还包括:
易失性存储器控制器,所述易失性存储器控制器用于存储脏高速缓存行跟踪器高速缓存,所述脏高速缓存行跟踪器高速缓存用于存储所述脏高速缓存行跟踪器中存储的脏高速缓存行条目的副本。
5.根据权利要求4所述的装置,其中,所述易失性存储器控制器用于如果高速缓存是饱和的并且对应于与持久性存储器地址相关联的高速缓存行的脏位指示所述高速缓存行是干净的,则将数据直接写入所述持久性存储器地址。
6.根据权利要求1所述的装置,其中,所述持久性存储器是三维交叉点存储器。
7.根据权利要求1所述的装置,其中,所述易失性存储器是动态随机存取存储器。
8.一种方法,包括:
将从二级系统存储器中的持久性存储器读取的数据的副本存储在高速缓存中,所述二级系统存储器包括所述持久性存储器和易失性存储器,所述易失性存储器包括所述高速缓存,所述高速缓存包括多个高速缓存行,每个高速缓存行用于存储从所述持久性存储器读取的数据的副本;
将多个脏高速缓存行条目存储在脏高速缓存行跟踪器中,每个脏高速缓存行条目用于存储N个脏位,每个脏位对应于所述高速缓存中的N个连续高速缓存行中的一个;以及
由高速缓存管理器读取脏高速缓存行条目中的所述N个脏位,以标识脏高速缓存行在所述高速缓存中的位置。
9.根据权利要求8所述的方法,其中,所述高速缓存管理器用于将与所述脏高速缓存行条目中的所述脏位相关联的所述脏高速缓存行写入所述持久性存储器。
10.根据权利要求8所述的方法,其中,所述高速缓存管理器用于监视所述脏高速缓存行跟踪器中的脏行的数量,并且在所述脏行的数量大于脏行的阈值数量时将脏高速缓存行写入持久性存储器。
11.根据权利要求8所述的方法,还包括:
由易失性存储器控制器将所述脏高速缓存行跟踪器中存储的脏高速缓存行条目的副本存储在脏高速缓存行跟踪器高速缓存中。
12.根据权利要求11所述的方法,还包括:
如果所述高速缓存是饱和的并且对应于与持久性存储器地址相关联的高速缓存行的脏位指示所述高速缓存行是干净的,则由所述易失性存储器控制器将数据直接写入所述持久性存储器地址。
13.根据权利要求11所述的方法,其中,所述持久性存储器是三维交叉点存储器。
14.根据权利要求13所述的方法,其中,所述易失性存储器是动态随机存取存储器。
15.至少一种机器可读介质,包括多个指令,所述多个指令响应于由系统执行而使得所述系统执行根据权利要求8至14中任一项所述的方法。
16.一种装置,包括用于执行权利要求8至14中任一项所述的方法的模块。
17.一种系统,包括:
处理器;以及
二级系统存储器,其通信地耦合到所述处理器,所述二级系统存储器包括:
持久性存储器;以及
易失性存储器,所述易失性存储器包括:
高速缓存,所述高速缓存包括多个高速缓存行,每个高速缓存行用于存储从所述持久性存储器读取的数据的副本;
脏高速缓存行跟踪器,所述脏高速缓存行跟踪器用于存储多个脏高速缓存行条目,每个脏高速缓存行条目用于存储N个脏位,每个脏位对应于所述高速缓存中的N个连续高速缓存行中的一个;以及
高速缓存管理器,所述高速缓存管理器用于读取脏高速缓存行条目中的所述N个脏位,以标识脏高速缓存行在所述高速缓存中的位置。
18.根据权利要求17所述的系统,其中,所述高速缓存管理器用于将与所述脏高速缓存行条目中的所述脏位相关联的所述脏高速缓存行写入所述持久性存储器。
19.根据权利要求17所述的系统,其中,所述高速缓存管理器用于监视所述脏高速缓存行跟踪器中的脏行的数量,并且在所述脏行的数量大于脏行的阈值数量时将脏高速缓存行写入持久性存储器。
20.根据权利要求17所述的系统,还包括:
易失性存储器控制器,所述易失性存储器控制器用于存储脏高速缓存行跟踪器高速缓存,所述脏高速缓存行跟踪器高速缓存用于存储所述脏高速缓存行跟踪器中存储的脏高速缓存行条目的副本。
21.根据权利要求20所述的系统,其中,所述易失性存储器控制器用于如果高速缓存是饱和的并且对应于与持久性存储器地址相关联的高速缓存行的脏位指示所述高速缓存行是干净的,则将数据直接写入所述持久性存储器地址。
22.根据权利要求17所述的系统,其中,所述持久性存储器是三维交叉点存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/278,509 US11074188B2 (en) | 2019-02-18 | 2019-02-18 | Method and apparatus to efficiently track locations of dirty cache lines in a cache in a two-level main memory |
US16/278,509 | 2019-02-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111581125A true CN111581125A (zh) | 2020-08-25 |
Family
ID=66696866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010052757.0A Pending CN111581125A (zh) | 2019-02-18 | 2020-01-17 | 高效跟踪脏高速缓存行在二级主存储器的高速缓存中的位置的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11074188B2 (zh) |
EP (1) | EP3696680B1 (zh) |
CN (1) | CN111581125A (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10558569B2 (en) * | 2013-10-31 | 2020-02-11 | Hewlett Packard Enterprise Development Lp | Cache controller for non-volatile memory |
US11074189B2 (en) * | 2019-06-20 | 2021-07-27 | International Business Machines Corporation | FlatFlash system for byte granularity accessibility of memory in a unified memory-storage hierarchy |
US11526448B2 (en) | 2019-09-27 | 2022-12-13 | Intel Corporation | Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning |
US11656995B2 (en) * | 2019-11-26 | 2023-05-23 | Micron Technology, Inc. | Dynamic access granularity in a cache media |
US12019558B2 (en) * | 2020-12-15 | 2024-06-25 | Intel Corporation | Logical to physical address indirection table in a persistent memory in a solid state drive |
US12014081B2 (en) | 2020-12-15 | 2024-06-18 | Intel Corporation | Host managed buffer to store a logical-to physical address table for a solid state drive |
US20230114414A1 (en) * | 2021-09-28 | 2023-04-13 | Advanced Micro Devices, Inc. | Method and apparatus for protecting memory devices via a synergic approach |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8543766B2 (en) * | 2011-06-10 | 2013-09-24 | Freescale Semiconductor, Inc. | Writing data to system memory in a data processing system in which cache line states are tracked |
KR20150010150A (ko) | 2013-07-18 | 2015-01-28 | 삼성전자주식회사 | 메모리 시스템 및 이의 동작 방법 |
US10558569B2 (en) | 2013-10-31 | 2020-02-11 | Hewlett Packard Enterprise Development Lp | Cache controller for non-volatile memory |
US10152422B1 (en) | 2017-06-13 | 2018-12-11 | Seagate Technology Llc | Page-based method for optimizing cache metadata updates |
JP6429963B2 (ja) | 2017-09-14 | 2018-11-28 | 株式会社日立製作所 | ストレージ装置及びストレージ装置の制御方法 |
-
2019
- 2019-02-18 US US16/278,509 patent/US11074188B2/en active Active
-
2020
- 2020-01-17 CN CN202010052757.0A patent/CN111581125A/zh active Pending
- 2020-01-17 EP EP20152533.4A patent/EP3696680B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3696680B1 (en) | 2022-03-16 |
US11074188B2 (en) | 2021-07-27 |
EP3696680A1 (en) | 2020-08-19 |
US20190179764A1 (en) | 2019-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3696680B1 (en) | Method and apparatus to efficiently track locations of dirty cache lines in a cache in a two level main memory | |
US20200393974A1 (en) | Method of detecting read hotness and degree of randomness in solid-state drives (ssds) | |
KR101915073B1 (ko) | 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단 | |
US20190042413A1 (en) | Method and apparatus to provide predictable read latency for a storage device | |
US10885004B2 (en) | Method and apparatus to manage flush of an atomic group of writes to persistent memory in response to an unexpected power loss | |
CN107608910B (zh) | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 | |
US20190042460A1 (en) | Method and apparatus to accelerate shutdown and startup of a solid-state drive | |
US10599579B2 (en) | Dynamic cache partitioning in a persistent memory module | |
NL2030989B1 (en) | Two-level main memory hierarchy management | |
US20220229722A1 (en) | Method and apparatus to improve performance of a redundant array of independent disks that includes zoned namespaces drives | |
US12014081B2 (en) | Host managed buffer to store a logical-to physical address table for a solid state drive | |
US20170262222A1 (en) | Memory system data management | |
US10747439B2 (en) | Method and apparatus for power-fail safe compression and dynamic capacity for a storage device | |
EP4016310A1 (en) | Logical to physical address indirection table in a persistent memory in a solid state drive | |
WO2022216664A1 (en) | Method and apparatus to reduce nand die collisions in a solid state drive | |
US11561902B2 (en) | Cache operations in a hybrid dual in-line memory module | |
EP3772682A1 (en) | Method and apparatus to improve write bandwidth of a block-based multi-level cell non-volatile memory | |
US10872041B2 (en) | Method and apparatus for journal aware cache management | |
US20190042372A1 (en) | Method and apparatus to recover data stored in persistent memory in a failed node of a computer cluster | |
US20210333996A1 (en) | Data Parking for SSDs with Streams | |
US20220019533A1 (en) | Managing processing of memory commands in a memory subsystem with a high latency backing store | |
US20230297256A1 (en) | Elastic persistent memory regions |
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 |