CN110618788A - 响应于意外断电而管理原子写入组到持久存储器的刷新 - Google Patents
响应于意外断电而管理原子写入组到持久存储器的刷新 Download PDFInfo
- Publication number
- CN110618788A CN110618788A CN201910410293.3A CN201910410293A CN110618788A CN 110618788 A CN110618788 A CN 110618788A CN 201910410293 A CN201910410293 A CN 201910410293A CN 110618788 A CN110618788 A CN 110618788A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- memory
- persistent memory
- instruction
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- 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/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0638—Organizing or formatting or addressing of data
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/521—Atomic
-
- 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/1008—Correctness of operation, e.g. memory ordering
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/311—In host system
-
- 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/465—Structured object, e.g. database record
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及响应于意外断电而管理原子写入组到持久存储器的刷新。高速缓存中的一组高速缓存行可以被标识为这样的高速缓存行:直到针对该组高速缓存行的所有高速缓存行写入已经完成,才被刷新到持久存储器。
Description
技术领域
本公开涉及持久存储器,并且特别地涉及管理原子写入组到持久存储器的刷新。
背景技术
数据库是有组织的数据集合。关系数据库是表、查询以及其他元素的集合。数据库管理系统(DBMS)是计算机软件应用,该数据库管理系统与其他计算机软件应用以及数据库交互以捕获并分析数据。
计算机系统可以包括中央处理单元(CPU),该中央处理单元典型地包括多个级别的高速缓冲存储器。高速缓存是易失性存储器,例如,静态随机存取存储器(SRAM),该静态随机存取存储器对存储在主存储器中的数据的副本进行存储。主存储器典型地包括易失性存储器,例如,动态随机存取存储器(DRAM)。易失性存储器是这样的存储器:如果到设备的电力被中断,则该存储器的状态(以及因此存储在存储器中的数据)是不确定的。非易失性存储器(NVM)设备是这样的存储器:即使到设备的电力被中断,该存储器的状态也是确定的。
与将数据存储在存储设备(例如,硬盘驱动器(HDD)或固态驱动器(SSD))上的传统数据库系统相比,存储器内数据库(IMDB)系统是将数据存储在主存储器中的数据库管理系统。主存储器可以是非易失性存储器。IMDB提供非常高的查询/秒来支持基于实时分析的快速决策。
如果到系统的电力意外地中断,则存储在易失性存储器中(例如,在CPU中的高速缓存中)的、处于将要写入非易失性存储器中的存储器内数据库的过程中的数据可能丢失。
附图说明
当进行以下详细描述并且在参考附图时,要求保护的主题的实施例的特征将变得显而易见,在附图中,相同的附图标记描述相同的部分,并且其中:
图1是计算机系统的实施例的框图,该计算机系统包括处理器核心以将写入组一起从处理器高速缓存提交到持久存储器;
图2示出了指令(例如,MOV指令)通过在图1中所示的系统中的存储器层次结构将数据存储到持久存储器采用的数据路径;
图3是示出图2中所示的L1数据高速缓存132b中的高速缓存条目的框图;以及
图4是由图2中所示的核心中的任一核心执行以将高速缓存中的写入组提交到持久存储器的方法的流程图。
虽然将参考要求保护的主题的说明性实施例来进行以下详细描述,但是说明性实施例的许多替换、修改和变型将对本领域技术人员是显而易见的。因此,旨在宽泛地看待要求保护的主题,并且仅仅如所附权利要求中阐述的来定义要求保护的主题。
具体实施方式
异步DRAM自刷新(ADR)是平台级别功能,其中电力供应用信号通知平台控制中心(PCH)电力故障即将发生。PCH将电力故障通知传播到CPU。CPU内的内部单元最终用信号通知内部存储器控制器,使得内部存储器控制器将存储器子系统中的写入未决队列刷新到非易失性存储器。非易失性存储器可以是持久存储器,该持久存储器是就地写入字节可寻址非易失性存储器。
具有ADR异步DRAM自刷新(ADR)或者增强型异步DRAM自刷新(eADR)的电力故障保护系统可能具有足够的备用电力,以便如果到系统的电力被中断,则将存储在易失性存储器中的所有数据(其可以包括存储器控制器队列、处理器高速缓存以及在I/O控制器中的缓冲器中的写入数据)写入计算机系统中的持久存储器。例如,CPU可以执行诸如高速缓存行写回(CLWB)、高速缓存行刷新(CLFLUSH)以及高速缓存行刷新最优(CLFLUSHOPT)之类的指令,以当到系统的电力被中断时刷新来自CPU中的易失性高速缓存的数据。CLWB指令将存储在高速缓存中的值写入持久存储器,并且还将值保留在高速缓存中以执行对高速缓存的下一次存取。CLFLUSHOPT指令刷新高速缓存行并且允许并发。
然而,存在需要将写入组一起提交到持久存储器的场景,例如,“全部提交或无提交”。例如,如果应用正处于针对“优选联系人”更新存储在持久存储器中的存储器内数据库中的记录的过程中,“优选联系人”包括姓名、电话号码以及电子邮件的字段,则当“优选联系人”条目更新时,所有字段必须在持久存储器中一起更新。在当时发生电力故障的情况下仅一个字段(例如,姓名字段)更新导致存储在持久存储器中的“优选联系人”的记录中的电话号码以及电子邮件地址不匹配。
在实施例中,高速缓存中的一组高速缓存行可以被标识为这样的高速缓存行:直到针对该组高速缓存行的所有高速缓存行写入已经完成,才被刷新到持久存储器。该组高速缓存行可以被称为原子写入组。写入组是原子的,使得如果所有的写入不能被成功执行,则组中的写入中的任一写入都不被执行。
将参考下面讨论的细节来描述本发明的各种实施例和方面,并且附图将示出各种实施例。以下说明书和附图是对本发明的说明而不应被解释为限制本发明。描述了许多具体细节以提供对本发明的各种实施例的透彻理解。然而,在某些实例中,没有描述公知的或常规的细节以便于提供对本发明的实施例的简洁讨论。
在说明书中对“一个实施例”或“实施例”的引用表示结合该实施例描述的特定特征、结构或特性可以包括在本发明的至少一个实施例中。在说明书各种位置出现的短语“在一个实施例中”不一定全都指代同一实施例。
将参考下面讨论的细节来描述本发明的各种实施例和方面,并且附图将示出各种实施例。以下说明书和附图是对本发明的说明而不应被解释为限制本发明。描述了许多具体细节以提供对本发明的各种实施例的透彻理解。然而,在某些实例中,没有描述公知的或常规的细节以便于提供对本发明的实施例的简洁讨论。
在说明书中对“一个实施例”或“实施例”的引用表示结合该实施例描述的特定特征、结构或特性可以包括在本发明的至少一个实施例中。在说明书各种位置出现的短语“在一个实施例中”不一定全都指代同一实施例。
图1是计算机系统100的实施例的框图,该计算机系统100包括处理器核心以将写入组一起从处理器高速缓存提交到持久存储器。计算机系统100可以对应于计算设备,包括但不限于服务器、工作站计算机、台式计算机、膝上型计算机和/或平板计算机。
计算机系统100包括片上系统(SOC或SoC)104,该片上系统将处理器、图形、存储器和输入/输出(I/O)控制逻辑组合到一个SoC封装中。SoC 104包括至少一个中央处理单元(CPU)计算复合体108、存储器控制器114和图形处理器单元(GPU)110。在其他实施例中,存储器控制器114可以在SoC 104外部。
在图1中所示的实施例中,CPU计算复合体108包括两个处理器(也称为处理器核心(“核心”)102),以及由CPU计算复合体108中的处理器核心102共享的2级(L2)高速缓存106。每个核心102包括1级(L1)高速缓存132。在其他实施例中,CPU计算复合体108可以具有两个以上的处理器核心102,并且每个处理器核心102可以具有2级高速缓存106。处理器核心102使用1级高速缓存132和2级高速缓存106来减少从计算机系统100中的外部存储器存取数据的时间。1级高速缓存132和2级高速缓存106将来自频繁使用的存储器位置的数据副本存储在易失性存储器126和持久存储器128中。1级高速缓存132可以包括用于存储数据的数据高速缓存以及用于存储指令的指令高速缓存。
尽管未示出,但是(多个)处理器核心102中的每个处理器核心可以在内部包括执行单元、预取缓冲器、指令队列、分支地址计算单元、指令解码器、浮点单元、退出单元等。根据一个实施例,CPU计算复合体108可以对应于单核心或多核心通用处理器,例如,由公司提供的那些处理器。
存储器控制器114可以经由存储器总线130(例如,Gen-Z(genzconsortium.org)、Open CAPI(opencapi.org)、CCIX(ccixconsortium.com)或其他差分接口技术)耦合到持久存储器128和易失性存储器126。持久存储器128是就地写入字节可寻址非易失性存储器。持久存储器128可以包括字节可寻址就地写入三维交叉点存储器设备,或其他字节可寻址就地写入NVM设备,例如,单级或多级相变存储器(PCM)或具有开关的相变存储器(PCMS)、使用硫属化合物相变材料(例如,硫属化合物玻璃)的NVM设备、电阻式存储器(包括金属氧化物基、氧空位基和导电桥随机存取存储器(CB-RAM))、纳米线存储器、铁电随机存取存储器(FeRAM、FRAM)、结合忆阻器技术的磁阻随机存取存储器(MRAM)、自旋移矩(STT)-MRAM、基于自旋电子磁结存储器的设备、基于磁性隧道结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备,或上述设备中的任何设备的组合,或其他非易失性存储器。
易失性存储器是这样的存储器:如果到设备的电力被中断则该存储器的状态(以及因此存储在存储器中的数据)是不确定的。动态易失性存储器要求刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括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处获得。
I/O适配器116可以包括外围组件互连快速(PCIe)适配器,该外围组件互连快速适配器使用NVMe(NVM快速)通过PCIe(外围组件互连快速)协议通过总线144通信地耦合到SSD118中的主机接口。非易失性存储器快速(NVMe)标准为主机软件定义了寄存器级别接口,以通过外围组件互连快速(PCIe)(其为高速串行计算机扩展总线)来与非易失性存储器子系统(例如,固态驱动器(SSD))进行通信。NVM快速标准可以在www.nvmexpress.org处获得。PCIe标准可以在www.pcisig.com处获得。
图形处理器单元(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(NVM快速)以及SATA(串行ATA(高级技术附件))。
另外地,可能存在一个或多个无线协议I/O适配器。无线协议的示例用于个域网(例如,IEEE 802.15以及蓝牙4.0);无线局域网(例如,基于IEEE 802.11的无线协议);以及蜂窝协议以及其他。
图2示出了指令(例如,MOV指令)通过在图1中所示的系统中的存储器层次结构将数据存储到持久存储器128采用的数据路径。如结合图1讨论的,每个核心102包括L1高速缓存132,该L1高速缓存132包括L1指令高速缓存132a以及L1数据高速缓存132b。在所示的实施例中,每个核心102与其他核心102共享L2高速缓存106。在其他实施例中,每个核心102可以包括L2高速缓存106并且共享3级(L3)高速缓存。数据以固定大小的块(称为高速缓存行或高速缓存块)在存储器(持久存储器128和易失性存储器126)与高速缓存(1级高速缓存132和2级高速缓存106)之间传输。
当核心102中的加载/存储执行单元202执行存储指令(例如,MOV指令)以将数据存储在(将数据写入)持久存储器128中的位置时,核心102首先在L1数据高速缓存132b中检查对应的高速缓存条目。如果存储器位置在L1数据高速缓存132b中的高速缓存条目中,则高速缓存命中发生。在高速缓存命中的情况下,核心102立即将数据写入L1数据高速缓存132b中的高速缓存行中。
如果核心102在L1数据高速缓存132b中没有找到与持久存储器128中的存储器位置相对应的高速缓存条目,则高速缓存未命中发生。对于高速缓存未命中,在L1数据高速缓存132b中分配新的高速缓存条目,并且将要写入持久存储器128中的存储器位置的数据存储在L1数据高速缓存132b中的新条目中。
耦合到CPU模块的存储器控制器114将存储在1级数据高速缓存132b和2级高速缓存106中的数据写入持久存储器128。当执行存储指令(例如,MOV指令)以将数据存储在存储器中时,将要被存储的数据典型地存储在CPU 108中的L1数据高速缓存132b或L2高速缓存106中。可以执行诸如高速缓存行写回(CLWB)之类的写入指令,以从CPU 108中的L1数据高速缓存132b以及L2高速缓存106刷新数据。在已经从L1数据高速缓存132b和L2高速缓存106刷新了要存储的数据之后,可以将数据存储在存储器控制器114中的写入未决队列(WPQ)204中。存储在L1数据高速缓存132b以及L2高速缓存106中的数据还可以在电力故障发生的情况下使用称为异步DRAM刷新(ADR)的平台级别特征被刷新到持久存储器。还可以使用仅内核WPQ刷新命令来刷新WPQ 204,以确保将数据立即刷新到持久存储器。
图3是示出图2中所示的L1数据高速缓存132b中的高速缓存条目300的框图。当高速缓存行从持久存储器128复制到L1数据高速缓存132b时,在L1数据高速缓存132b中分配高速缓存条目300。高速缓存条目300将存储在持久存储器128(高速缓存行)中的数据的副本存储在数据块字段304中。高速缓存条目300还包括标签字段302以及标志字段306。存储在标签字段302中的标签包括与高速缓存行相关联的持久存储器地址的一部分。标志字段306存储包括有效位(“V”)308、脏位(“D”)310以及不刷新位(“DNF”)312的元数据。如果脏位310被置位,则由于从持久存储器128读取高速缓存行,在L1数据高速缓存132b中的相关联的高速缓存行已经由核心102写入。
图4是由图2中所示的核心102中的任一核心执行以将高速缓存中的写入组提交到持久存储器的方法的流程图。该写入组可以被称为原子写入组、原子区域、临界分区或原子分区。
在实施例中,原子区域或原子分区的大小(“S”)在L1高速缓存的大小内(即,小于或等于L1高速缓存的大小)。L1高速缓存可以是大约20千字节(KB)并且对于每个核心是私有的。原子分区在“每线程”的基础上在每个L1高速缓存中实现。
典型地,软件应用中的原子区域或原子分区小于L1高速缓存的大小。可以使用BEGIN_GROUP_COMMIT指令来指定原子区域的起点,并且使用END_GROUP_COMMIT指令来指定原子区域的终点。如果不能成功地提交原子区域,则BEGIN_GROUP_COMMIT指令可以采用提供与回退指令地址的相对偏移的操作数。在执行BEGIN_GROUP_COMMIT指令之前,在L1高速缓存中的每个高速缓存行中的不刷新位(“DNF”)312是清零的(例如,设置为逻辑“0”)。
在框400处,BEGIN_GROUP_COMMIT指令指示要一起写入持久存储器的写入组由核心102执行。处理继续到框402处。
在框402处,响应于BEGIN_GROUP_COMMIT指令,主锁定位被置位(例如,置位为逻辑“1”),指示在L1数据高速缓存132b中的被标记为“不刷新”(例如,不刷新位(“DNF”)312被置位为逻辑“1”)的高速缓存行将不被写入持久存储器128。主锁定位可以是在核心中的寄存器中的预留位,并且可以被称为“不刷新”锁定。通过置位“不刷新”位312(例如,置位为逻辑“1”),将在L1数据高速缓存132b中的高速缓存行标记为“不刷新”。如果在此时发生电力故障,则因为“不刷新”位312在L1数据高速缓存132b中的高速缓存行中的任一高速缓存行中都未被置位,所以所有高速缓存行被写入持久存储器。处理继续到框404处。
在框404处,对于由核心102中的加载和存储执行单元202执行的每个存储指令,数据最初存储在L1数据高速缓存132b中的高速缓存行300中。除了数据之外,在L1数据高速缓存132b中的每个高速缓存行300存储元数据(例如,图3中所示的标志位306)。在实施例中,预留元数据中的可以被称为“不可刷新”位或“不刷新”位312的一个位,以指示高速缓存行300是否可以刷新到持久存储器128。“不刷新”位312用作跟踪机制,以将作为提交到持久存储器128的组的一部分的高速缓存行标记为在电力故障时不要刷新的高速缓存行。
除了标记作为提交到持久存储器的组的一部分的每个高速缓存行之外,在原子分区中间不允许进行读取所有权(RFO)操作。RFO是高速缓存一致性协议中的操作。RFO操作将与地址相对应的数据的最新可用版本提取至处理器高速缓存中。该提取可以来自主存储器(DRAM)或持久存储器,或来自另一核心中的私有高速缓存。如果相同的地址刚刚由另一核心写入并且尚未从该核心的高速缓存中刷新,则提取典型地从该另一核心的高速缓存发生,使得数据的最新版本在该另一核心的私有高速缓存中。
“不刷新”位312的默认状态是清零的(例如,逻辑“0”),即,在电力故障时刷新高速缓存行。主锁定位用作针对在核心中的L1数据高速缓存中的“不刷新”位312的锁定。当主锁定被置位时,在存储数据的每个高速缓存行中的“不刷新”位被置位(例如,置位为逻辑“1”)。如果在此时发生电力故障,则自执行BEGIN_GROUP_COMMIT处理器指令以来用于L1高速缓存的存储中的任一个将不被刷新到持久存储器128。处理继续到框406处。
在框406处,响应于由核心102执行的END_GROUP_COMMIT指令,主锁定位被清零(例如,设置为“0”)以指示用于要一起提交的写入组的数据已经存储在L1数据高速缓存132b中。如果在此时发生电力故障,则因为主锁定位被清零并且在L1数据高速缓存132b中的每个高速缓存行的“不刷新”位312的状态被忽略,所以即使高速缓存行300的“不刷新”位312被置位,在L1数据高速缓存132b中的所有高速缓存行300也被写入持久存储器128。使用主锁定位使得在组提交结束时清零每个“不刷新”位312是原子的。处理继续到框408处。
在框408处,针对L1数据高速缓存132b中的高速缓存行300置位的“不刷新”位312被清零(例如,设置为逻辑“0”)。处理继续到框410处。
在框410处,存储在高速缓存行300中的数据块304中的数据被写入持久存储器128,并且在L1数据高速缓存132b中的高速缓存行300可以用于存储其他数据。处理完成。
已经描述了其中原子区域的大小在L1数据高速缓存132b的大小内的实施例。如果原子区域的大小大于L1数据高速缓存132b的大小,则不是如结合图4描述的那样执行原子刷新,而是如果在原子组提交期间存在电力故障,则可以将撤销日志或重做日志存储在持久存储器128的另一区域中以撤销或重做对持久存储器128的写入。为了撤消写入,将原始数据的影子副本存储在持久存储器128中,使得如果在原子组提交期间存在电力故障,则取回影子副本。为了重做写入,将组提交数据写入持久存储器128中的另一位置(提前写入),使得如果在原子组提交期间出现电力故障,则在电力恢复之后,数据写入可以从其他持久位置重新开始,并且原子组提交可以完成。
如果原子区域的大小在L1数据高速缓存132b的大小内,并且高速缓存行由于冲突而被驱逐,则中断事务并且如之前描述的使用撤销日志或重做日志,而不是执行原子刷新。
在另一实施例中,原子区域的大小可以在高速缓存层次结构的大小内,而不是仅仅在高速缓存层次结构中的第一级高速缓存(L1数据高速缓存132b)的大小内。在一个实施例中,高速缓存层次结构包括在核心102中的L1数据高速缓存132b和L2高速缓存106。在另一实施例中,除了在核心102中的L1数据高速缓存132b和L2高速缓存106之外,高速缓存层次结构还包括外部DRAM高速缓存(例如,易失性存储器126)。
在具有多级高速缓存的高速缓存层次结构中,如果较高级别高速缓存中的所有块也存在于较低级别高速缓存中,则较低级别高速缓存包含较高级别高速缓存。如果较低级别高速缓存包含较高级别高速缓存中不存在的块,则较低级别高速缓存不包含较高级别高速缓存。
在不包含性的高速缓存层次结构中,在所有级别(即,L1、L2和L3(最后一级高速缓存(LLC)))之间仅存在数据的一个副本。当高速缓存行从一个高速缓存级别被驱逐到高速缓存层次结构中的另一个高速缓存级别时,将继承“不刷新”位。
在包含性的高速缓存层次结构中,低于任何给定级别的每个级别具有数据的相同副本,即,最后一级(其具有最大容量)存储L1高速缓存和L2高速缓存中存储的数据的超集。同样地,L2是L1的超集。考虑到在包含性高速缓存层次结构中的这种复制,只有在高速缓存层次结构中的“最后的高速缓存级别”(L2或L3)才具有“不刷新”位。
本文示出的流程图提供了各种处理动作的序列的示例。流程图可以指示要由软件或固件例程执行的操作以及物理操作。在一个实施例中,流程图可以示出有限状态机(FSM)的状态,该有限状态机可以以硬件和/或软件来实现。尽管以特定序列或顺序示出,但除非另有指示,否则可以修改动作的顺序。因此,示出的实施例应该仅被理解为示例,并且过程可以以不同顺序执行,并且一些动作可以并行执行。另外地,在各种实施例中可以省略一个或多个动作;因此,并非在每个实施例中要求所有的动作。其他过程流是可能的。
就本文描述的各种操作或功能而言,可以将各种操作或功能描述或定义为软件代码、指令、配置和/或数据。内容可以是可以直接执行的(“对象”或“可执行的”形式)、源代码或差异代码(“增量”或“补丁”代码)。本文描述的实施例的软件内容可以经由其上存储有内容的制品提供,或者经由操作通信接口以经由通信接口发送数据的方法提供。机器可读存储介质可以使得机器执行描述的功能或操作,并且包括以可以由机器(例如,计算设备、电子系统等)访问的形式存储信息的任何机制,例如,可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪速存储器设备等)。通信接口包括与硬连线、无线、光学等介质中的任一介质接合以与另一设备通信的任何机制,例如,存储器总线接口、处理器总线接口、互联网连接、磁盘控制器等。可以通过提供配置参数和/或发送信号来配置通信接口,以准备通信接口来提供描述软件内容的数据信号。可以经由发送到通信接口的一个或多个命令或信号来访问通信接口。
本文描述的各种组件可以是用于执行描述的操作或功能的模块。本文描述的每个组件包括软件、硬件或这些软件和硬件的组合。组件可以实现为软件模块、硬件模块、特殊用途硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。
除了本文描述的内容之外,在不脱离本发明的所公开的实施例以及实现方式的范围的情况下,可以对本发明的所公开的实施例以及实现方式进行各种修改。
因此,本文的说明和示例应该被解释为说明性的而不是限制意义的。应该仅通过参考所附权利要求来衡量本发明的范围。
Claims (18)
1.一种处理器,包括:
包括至少一个高速缓存行的高速缓存;以及
耦合到所述高速缓存的核心,所述核心包括:
执行单元,所述执行单元用于响应于执行第一指令而对锁定进行置位,所述锁定用于将一组高速缓存行标记为直到针对一组高速缓存行的所有高速缓存行写入已经完成才被刷新到持久存储器,所述持久存储器耦合到所述处理器。
2.根据权利要求1所述的处理器,其中所述第一指令用于标记组提交的开始。
3.根据权利要求2所述的处理器,其中当所述锁定被置位时,所述执行单元用于将要被写入持久存储器的数据存储到在所述一组高速缓存行中的高速缓存行,并且对所述高速缓存行中的位进行置位,以防止在电力故障的情况下所述高速缓存行到持久存储器的刷新。
4.根据权利要求3所述的处理器,其中所述执行单元用于在数据已经被存储在所述一组高速缓存行中的所有高速缓存行中之后,响应于执行第二指令而清零针对所述一组高速缓存行的所述锁定。
5.根据权利要求4所述的处理器,其中所述第二指令用于标记所述组提交的结束。
6.根据权利要求5所述的处理器,其中所述执行单元用于在所述锁定已经被清零之后,清零在所述一组高速缓存行中的每个高速缓存行中的所述位。
7.一种系统,包括:
持久存储器;以及
耦合到所述持久存储器的处理器,所述处理器包括:
包括至少一个高速缓存行的高速缓存;以及
耦合到所述高速缓存的核心,所述核心包括:
执行单元,所述执行单元响应于执行第一指令而对锁定进行置位,所述锁定用于将一组高速缓存行标记为直到针对所述一组高速缓存行的所有高速缓存行写入已经完成才被刷新到所述持久存储器。
8.根据权利要求7所述的系统,其中所述第一指令用于标记组提交的开始。
9.根据权利要求8所述的系统,其中当所述锁定被置位时,所述执行单元用于将要被写入持久存储器的数据存储到在所述一组高速缓存行中的高速缓存行,并且对所述高速缓存行中的位进行置位,以防止在电力故障的情况下所述高速缓存行到持久存储器的刷新。
10.根据权利要求9所述的系统,其中所述执行单元用于在数据已经被存储在所述一组高速缓存行中的所有高速缓存行中之后,响应于执行第二指令而清零针对所述一组高速缓存行的所述锁定。
11.根据权利要求10所述的系统,其中所述第二指令用于标记所述组提交的结束。
12.根据权利要求11所述的系统,其中所述执行单元用于在所述锁定已经被清零之后,清零在所述一组高速缓存行中的每个高速缓存行中的所述位。
13.一种方法,包括:
将要被写入持久存储器的数据存储在处理器中的高速缓存中的高速缓存行中;
由在所述处理器中的核心中的执行单元执行第一指令以对锁定进行置位,所述锁定用于将一组高速缓存行标记为直到针对所述一组高速缓存行的所有高速缓存行写入已经完成才被刷新到所述持久存储器。
14.根据权利要求13所述的方法,其中所述第一指令用于标记组提交的开始。
15.根据权利要求14所述的方法,还包括:
当所述锁定被置位时,将要被写入持久存储器的数据存储到在所述一组高速缓存行中的高速缓存行,并且对所述高速缓存行中的位进行置位,以防止在电力故障的情况下所述高速缓存行到持久存储器的刷新。
16.根据权利要求15所述的方法,还包括:
在数据已经被存储在所述一组高速缓存行中的所有高速缓存行中之后,响应于执行第二指令而清零针对所述一组高速缓存行的所述锁定。
17.根据权利要求16所述的方法,其中所述第二指令用于标记所述组提交的结束。
18.根据权利要求17所述的方法,还包括:
在所述锁定已经被清零之后,清零在所述一组高速缓存行中的每个高速缓存行中的所述位。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/012,515 | 2018-06-19 | ||
US16/012,515 US10885004B2 (en) | 2018-06-19 | 2018-06-19 | Method and apparatus to manage flush of an atomic group of writes to persistent memory in response to an unexpected power loss |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110618788A true CN110618788A (zh) | 2019-12-27 |
Family
ID=68724838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910410293.3A Pending CN110618788A (zh) | 2018-06-19 | 2019-05-17 | 响应于意外断电而管理原子写入组到持久存储器的刷新 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10885004B2 (zh) |
CN (1) | CN110618788A (zh) |
DE (1) | DE102019113049A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637284A (zh) * | 2020-12-09 | 2021-04-09 | 北京金山云网络技术有限公司 | 重做日志的存储方法和装置、电子设备和存储介质 |
TWI779944B (zh) * | 2021-07-29 | 2022-10-01 | 旺宏電子股份有限公司 | 維持資料一致性之記憶系統及其操作方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10847198B2 (en) * | 2018-11-01 | 2020-11-24 | Spin Memory, Inc. | Memory system utilizing heterogeneous magnetic tunnel junction types in a single chip |
US10866890B2 (en) * | 2018-11-07 | 2020-12-15 | Arm Limited | Method and apparatus for implementing lock-free data structures |
US10971681B2 (en) | 2018-12-05 | 2021-04-06 | Spin Memory, Inc. | Method for manufacturing a data recording system utilizing heterogeneous magnetic tunnel junction types in a single chip |
US10725912B2 (en) * | 2018-12-19 | 2020-07-28 | Micron Technology, Inc. | Power loss protection in memory sub-systems |
US11263180B2 (en) * | 2019-02-23 | 2022-03-01 | National Tsing Hua University | Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device |
WO2021056780A1 (zh) * | 2019-09-25 | 2021-04-01 | 掌阅科技股份有限公司 | 信息显示方法、阅读器、计算机存储介质、墨水屏阅读设备以及投屏显示系统 |
US11455251B2 (en) * | 2020-11-11 | 2022-09-27 | Advanced Micro Devices, Inc. | Enhanced durability for systems on chip (SOCs) |
US20210182187A1 (en) * | 2020-12-24 | 2021-06-17 | Intel Corporation | Flushing Cache Lines Involving Persistent Memory |
CN116244216B (zh) * | 2023-03-17 | 2024-03-01 | 摩尔线程智能科技(北京)有限责任公司 | 缓存控制方法、装置、缓存行结构、电子设备和存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6279080B1 (en) * | 1999-06-09 | 2001-08-21 | Ati International Srl | Method and apparatus for association of memory locations with a cache location having a flush buffer |
US6760815B1 (en) * | 2000-06-02 | 2004-07-06 | Sun Microsystems, Inc. | Caching mechanism for a virtual heap |
US10452549B2 (en) * | 2017-08-17 | 2019-10-22 | Intel Corporation | Method and apparatus for page table management |
GB2571539B (en) * | 2018-02-28 | 2020-08-19 | Imagination Tech Ltd | Memory interface |
-
2018
- 2018-06-19 US US16/012,515 patent/US10885004B2/en active Active
-
2019
- 2019-05-17 CN CN201910410293.3A patent/CN110618788A/zh active Pending
- 2019-05-17 DE DE102019113049.2A patent/DE102019113049A1/de active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637284A (zh) * | 2020-12-09 | 2021-04-09 | 北京金山云网络技术有限公司 | 重做日志的存储方法和装置、电子设备和存储介质 |
TWI779944B (zh) * | 2021-07-29 | 2022-10-01 | 旺宏電子股份有限公司 | 維持資料一致性之記憶系統及其操作方法 |
US11704246B2 (en) | 2021-07-29 | 2023-07-18 | Macronix International Co., Ltd. | Memory system for maintaining data consistency and operation method thereof |
Also Published As
Publication number | Publication date |
---|---|
DE102019113049A1 (de) | 2019-12-19 |
US20190384837A1 (en) | 2019-12-19 |
US10885004B2 (en) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10885004B2 (en) | Method and apparatus to manage flush of an atomic group of writes to persistent memory in response to an unexpected power loss | |
US10394710B2 (en) | Storage class memory (SCM) memory mode cache system | |
US9898410B2 (en) | Hybrid main memory using a fine-grain level of remapping | |
CN109643275B (zh) | 存储级存储器的磨损均衡设备和方法 | |
EP3696680B1 (en) | Method and apparatus to efficiently track locations of dirty cache lines in a cache in a two level main memory | |
US11580029B2 (en) | Memory system, computing system, and methods thereof for cache invalidation with dummy address space | |
US11016905B1 (en) | Storage class memory access | |
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 | |
US20210096778A1 (en) | Host managed buffer to store a logical-to physical address table for a solid state drive | |
NL2030989B1 (en) | Two-level main memory hierarchy management | |
US10872041B2 (en) | Method and apparatus for journal aware cache management | |
US10747439B2 (en) | Method and apparatus for power-fail safe compression and dynamic capacity for a storage device | |
US20190004715A1 (en) | Selective data flush in a storage drive | |
EP4016310A1 (en) | Logical to physical address indirection table in a persistent memory in a solid state drive | |
US20190042372A1 (en) | Method and apparatus to recover data stored in persistent memory in a failed node of a computer cluster | |
US9396110B2 (en) | Non-volatile hybrid memory | |
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 |