CN105283857B - 用于持久性存储器的多版本化非易失性存储器层级 - Google Patents
用于持久性存储器的多版本化非易失性存储器层级 Download PDFInfo
- Publication number
- CN105283857B CN105283857B CN201380076588.2A CN201380076588A CN105283857B CN 105283857 B CN105283857 B CN 105283857B CN 201380076588 A CN201380076588 A CN 201380076588A CN 105283857 B CN105283857 B CN 105283857B
- Authority
- CN
- China
- Prior art keywords
- data
- affairs
- volatile cache
- volatile
- 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.)
- Active
Links
Classifications
-
- 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
- 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
- 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
- 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/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
- 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/466—Transaction processing
- G06F9/467—Transactional 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/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/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/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- 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/466—Transaction processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本文公开了提供持久性存储器的示例方法和系统。一种示例系统包括存储从易失性高速缓存接收的数据的非易失性高速缓存。所述数据与事务相关联,并且当事务已提交时所述数据被标识为耐久的。示例系统包括当数据被标识为耐久的时存储从非易失性高速缓存接收的数据的非易失性存储器。
Description
背景技术
持久性存储器在长持续时间内存储数据。当该数据被维护或保留在未经改变的状态中使得其可以在稍后时间处在相同状态中被再调用或检索时,数据可以被称为持久性数据。通常,持久性数据由一个过程创建和存储,并且随后在稍后时间处由另一过程检索。
附图说明
图1A图示了包括示例非易失性高速缓存和示例非易失性存储器以提供持久性存储器的示例持久性存储器区。
图1B示出示例处理器系统中的图1A的示例持久性存储器区以提供用于对持久性数据结构的原子、一致且耐久的(durable)数据更新的多版本化非易失性存储器层级。
图2图示了图1A和1B的示例易失性高速缓存事务管理器和示例非易失性高速缓存事务管理器的示例配置。
图3图示了针对由图1A和1B的示例处理器系统运行的事务的示例时序图。
图4图示了图3的事务期间图2的示例队列。
图5是表示可以由逻辑或示例机器可读指令执行以将数据存储在使用图1A、1B和2的示例持久性存储器架构的图1A、1B和2的非易失性高速缓存和非易失性存储器中的示例过程的流程图。
图6是表示可以由逻辑或示例机器可读指令执行以执行持久性存储器更新的示例过程的流程图。
图7是表示可以由逻辑或示例机器可读指令执行以执行系统恢复的示例过程的流程图。
具体实施方式
非易失性存储器在没有所施加的功率的情况下存储和保留(例如维持)数据。一些非易失性存储器允许以精细粒度(例如一字节)执行读取和/或写入操作。由于增加的密度和可缩放性特性,以及在没有所施加的功率的情况下维持数据的能力,一些非易失性存储器技术(例如字节可寻址的非易失性存储器,诸如相变存储器、自旋转移矩存储器、忆阻器等)对于用作主存储器的诸如动态随机存取存储器(DRAM)之类的易失性存储器是优选的。字节可寻址的非易失性存储器可以用于实现甚至在应用和/或系统故障之后维护存储器中数据对象的状态的持久性存储。
在非易失性存储器中的数据更新过程期间,故障、存储器泄漏和/或使更新过程中断的应用错误可能破坏(corrupt)非易失性存储器中的数据。本文所公开的示例使得非易失性存储器系统能够执行安全数据更新使得在正常操作条件期间和在发生系统和/或应用故障时维护数据完整性和一致性。本文所公开的示例使得能够通过提供多版本化非易失性存储器层级以对非易失性持久性数据结构执行原子、一致且耐久的数据更新来维护非易失性存储器中的数据完整性和一致性。
原子数据更新是其中完整执行特定更新请求或过程的所有数据更新使得没有数据更新被留置部分未完成的数据更新。对数据结构的部分未完成数据更新的示例是在数据结构的节点被解分配(例如该节点不再被视为存储有效数据),但是另一节点仍旧指向经解分配的节点时。数据更新在其更新数据结构的一个或多个节点中的数据时提供跨数据结构中的数据的一致性使得数据节点之间的有意义的关系和排序得以维护使得数据结构保持在有效、可使用状态中。在一些示例中,如果未实现一致性,乱序数据更新可能导致不一致的状态,其可能造成无效、不可使用和不可恢复的数据结构。如本文所使用的,一致且可以从系统故障、功率丧失和/或意图/非意图系统关机事件存活下来的数据被称为耐久数据。为了实现耐久性,数据被直写到长期储存器(例如非易失性存储器),其中其在长持续时间内维持。在一些实例中,用户请求数据更新的结果应当在更新一结束就变为耐久的。在这样的实例中,数据更新的结果被立即或者尽可能快地驱逐(evict)到非易失性存储器。以此方式,可以使数据是耐久的,使得其在从系统故障和/或功率丧失(如果发生这样的事件的话)恢复之后可用于检索。在一些现有技术中,实现耐久性增加芯片外业务量和/或防止乱序操作调度。
在存储器管理系统中,事务用于更新数据、促进从故障中恢复,以及使得数据能够在系统故障的事件中是一致的。事务是单独且不可划分的操作或操作集,其必须全部被完整执行或者完全不执行。事务可以包括例如读取数个高速缓存行、更新从高速缓存行读取的数据以及将经更新的数据写入到高速缓存行。在这样的事务中,针对要成功完成的事务,所有读取、更新和写入必须被完成。在一些示例中,软件接口用于实现事务。其它接口可以附加或可替换地用于实现事务。
高速缓存系统使用多个类型的事务状态。事务状态的示例类型被称为未提交事务、提交中事务和已提交事务。在数据被指派给事务之后,但是在事务开始(例如以更新数据或者写入到数据)之前,事务被称为未提交事务。在事务运行的同时(例如在事务正从高速缓存行读取数据和/或将数据写入到高速缓存行的同时),事务被称为提交中事务。当提交中事务正更新数据/将数据写入到非易失性存储器时,并且在提交中事务结束更新/写入数据之前(例如与事务相关联的不可划分数据集直到提交中事务结束更新/写入所有不可划分数据集为止仅部分被更新),提交中事务已经写入到非易失性存储器的数据的任何部分被称为持久性数据。当事务完成运行时,其被称为已提交事务。一旦事务完成运行(例如事务是已提交事务)并且由事务更新的数据(例如与事务相关联的数据集)被存储在非易失性存储器中,数据被称为耐久的。因此,如果数据在非易失性存储器中是持久性的并且与数据相关联的事务是已提交事务则数据是耐久的。
一些现有技术采用基于软件的多版本化数据结构、重做或撤消记录、预写(write-ahead)记录或影式分页以提供非易失性存储器中的一致数据更新。然而,这样的技术招致性能和功率方面的增加的开销。例如,预写记录涉及将持久性数据更新的日志写入到主存储器(例如芯片外非易失性存储器)以提供原子性和耐久性。这样的数据业务量可能招致长等待时间并且增加存储器总线处的带宽需求。等待时间和/或带宽问题可能导致系统吞吐量降级。
在一些现有系统中,持久性存储器区包括仅非易失性主存储器,使得数据不被称为持久的,直到其从高速缓存直写到非易失性主存储器为止。本文所公开的示例系统和方法提供扩大或扩展持久性存储器区以包括非易失性高速缓存和非易失性主存储器的持久性存储器架构。因此,本文所公开的示例使得能够在数据一被存储在非易失性高速缓存中就维持数据,而不是等待直到其被存储在非易失性主存储器中。本文所公开的示例系统和方法相对于现有基于日志的持久性技术而言减少存储器等待时间和/或数据业务量。此外,本文所公开的示例系统和方法使得能够在更新存储在非易失性存储器中的存储器中数据的同时自动地维持数据。因此,本文所公开的示例系统和方法通过避免通常与现有基于日志的技术相关联的大量数据移动来改进系统吞吐量并且减少存储器功率消耗。
在现有存储器系统中,易失性和非易失性储存器的边界相对清晰。也就是说,易失性储存器包括高速缓存(其可以被直接寻址和硬件控制),并且非易失性储存器包括硬盘驱动器和固态驱动器(其可以是通过诸如文件读取、文件写入等之类的软件接口定向和访问的块)。对于其中软件控制易失性域(例如易失性存储器)与非易失性域(例如硬盘)之间的数据移动的系统,编程器写入故障保护(failsafe)软件或固件特征以防止旧(例如有效且一致)的数据被新的数据或未提交事务破坏。
然而,关于一些字节可寻址的非易失性存储器系统,易失性和非易失性储存器之间实现的边界不太清晰。脏(dirty)数据(例如已经改变的数据)可能首先存储在高速缓存层级中并且随后被驱逐到存储器的较低级别以最终存储在非易失性存储器中。然而,软件并不总是能够控制何时将脏数据直写到非易失性存储器。例如,与未提交事务相关联的脏数据可能被过早地驱逐到非易失性存储器,如果事务和/或系统故障在直写或数据更新期间能够重新建立数据一致性之前发生则这可能导致破坏数据完整性。在一些示例中,已提交事务的结果可能在事务被提交之后保持在易失性高速缓存层级中。软件然后可以单独清除(flush)每一个高速缓存行以迫使驱逐脏数据以被直写到非易失性存储器。然而,这样的软件干预是低效的。
对于诸如硬盘驱动器之类的现有非易失性储存器而言,用于原子性、一致性和/或耐久性的基于软件的支持是可接受的,因为磁性硬盘驱动器一般是缓慢的。因而,软件操作一般不使性能降级,因为这样的软件通常不比磁性硬盘驱动器更慢。然而,诸如固态存储器(例如相变存储器(PCM)、自旋转移矩存储器(STT-RAM)、忆阻器等)之类的最近兴起的非易失性存储器技术相对于诸如磁性硬驱动器之类的机电非易失性储存器而言操作得更快。照此,实现原子性、一致性和/或耐久性的基于软件的过程负面地影响具有固态非易失性存储器技术的存储器系统的性能。
本文所公开的示例系统和方法使用基于硬件的多版本化以提供原子性、一致性和/或耐久性。本文所公开的示例系统和方法提供还可以用于实现例如当数据被修改时保留数据的在先版本的多版本化存储器的非易失性存储器技术。本文所公开的示例系统和方法使得能够使用非易失性存储器层级来维护(例如以高速缓存行粒度)数据的多个版本。本文所公开的示例系统和方法提供使用非易失性高速缓存和非易失性主存储器来实现持久性存储器区的持久性存储器架构。因此,本文所公开的示例系统和方法使得能够在数据一被写入到非易失性高速缓存就使数据是持久性的。因此,本文所公开的示例系统和方法相对于用于确保数据持久性的现有基于日志的技术而言减少涉及维持数据的存储器等待时间和/或业务量。本文所公开的示例系统和方法维护持久性数据而不需要维护日志。本文所公开的示例无日志数据持久性技术通过避免通常在基于日志的技术中使用的大量数据移动而相对于现有系统增加系统吞吐量并且减少存储器功率消耗。
图1A图示了包括包含示例非易失性高速缓存102和示例非易失性存储器104的持久性存储器区101的示例系统100。示例非易失性高速缓存102存储从易失性高速缓存106接收的数据。本文所公开的示例使用持久性存储器区101来实现使得能够在示例非易失性高速缓存102中存储持久性数据结构的一个版本并且在示例非易失性存储器104中存储持久性数据结构的另一版本的多版本化持久性存储器。尽管示出非易失性高速缓存(例如非易失性高速缓存102)的一个级别,但是在一些示例中,可以在持久性存储器区101中提供非易失性高速缓存的更多级别以存储持久性数据的附加版本。在一些示例中,在持久性存储器区101中提供的非易失性高速缓存的每一个级别可以存储持久性数据的附加版本。
图1A的示例系统100是无日志的,因为示例系统100不要求用于记录以使得能够实现持久性存储器的附加操作。为了使得能够实现持久性存储器,图1A的示例系统100从示例易失性高速缓存106向示例非易失性高速缓存102发送与提交中事务(例如正被运行的事务)相关联的数据。一旦数据被写入到示例非易失性高速缓存102,数据就是持久性的。一旦将与提交中事务相关联的所有数据被写入到示例非易失性高速缓存102,并且事务变成已提交事务(例如完成运行的事务),数据就是耐久的并且可用于在从系统或功率故障恢复之后进行检索。
在所图示的示例中,在提交中事务正更新易失性高速缓存106中的数据的同时,示例系统100迫使脏数据(例如脏高速缓存行)在提交中事务完成之前(例如在与提交中事务相关联的所有数据在易失性高速缓存106中被更新之前)从示例易失性高速缓存106写回(例如直写)到示例非易失性高速缓存102。现有系统在将数据从易失性高速缓存写回到非易失性存储器之前等待直到提交中事务结束更新易失性高速缓存中的所有其相关联的数据。不同于这样的现有系统,本文所公开的示例允许在事务结束之前将数据写回到示例非易失性高速缓存102。例如,可以在提交中事务仍旧在运行的同时(例如在事务正更新另一相关联的高速缓存行的同时)将与提交中事务相关联的脏高速缓存行写回到非易失性高速缓存102。
在写回操作期间,被写回到非易失性高速缓存102的数据的状态在对应写回操作完成之后被视为持久性的。通过将数据状态保持为非持久性的直到写回完成,存储在非易失性存储器104中的数据的在先版本被维护为在写回操作失败的情况下可以恢复的一致版本。例如,如果示例系统100在将脏数据写入到示例非易失性高速缓存102时失败,脏数据将丢失(例如系统故障将造成丢失易失性高速缓存106的内容)。然而,示例系统100可以使用存储在示例非易失性存储器104中的对应耐久数据副本来滚回到所丢失的脏数据的在先的一致数据版本(例如最近的一致版本)。
在所图示的示例中,写回操作用于实现无日志持久性存储器管理。写回操作涉及从示例易失性高速缓存106驱逐脏数据,并且将被驱逐的脏数据写回到示例非易失性高速缓存102。在所图示的示例中,当事务正在运行(例如事务为提交中事务)时,通过示例易失性高速缓存事务管理器108实现操作(例如提交时清除操作)以促进将与提交中事务相关联的数据从示例易失性高速缓存106写回到示例非易失性高速缓存102。
一旦将与提交中事务相关联的所有数据存储在示例非易失性高速缓存102处并且事务变成已提交事务(例如事务完成运行),示例非易失性高速缓存事务管理器110将数据标记为耐久的。在一些示例中,可以作为脏行驱逐过程的部分而将数据从示例非易失性高速缓存102驱逐到示例非易失性存储器104(例如在类似于从已知易失性高速缓存向已知易失性主存储器的脏行驱逐的脏行驱逐过程中)。在一些示例中,一旦数据是耐久的(例如一旦与事务相关联的所有数据是持久性的并且事务变成已提交事务),示例非易失性高速缓存事务管理器110指导示例非易失性高速缓存102将数据驱逐到示例非易失性存储器104。
在所图示的示例中,示例易失性高速缓存事务管理器108追踪事务的状态(例如确定何时事务在提交中以及何时提交中事务变成已提交事务)以控制持久性存储器更新。在所图示的示例中,当示例易失性高速缓存事务管理器108确定事务正在运行(例如事务为提交中事务)时,示例易失性高速缓存事务管理器108发起数据从易失性高速缓存106向非易失性高速缓存102的写回。一旦数据被写入到非易失性高速缓存102(例如在提交中事务的写回操作之后),数据是持久性的而事务尚未是已提交事务。一旦事务完成运行(例如事务变成已提交事务),示例易失性高速缓存事务管理器108通知示例非易失性高速缓存事务管理器110事务为已提交事务。
在所图示的示例中,当与事务相关联的所有数据被存储在非易失性高速缓存102(例如数据是持久性的)并且事务是已提交事务时,示例非易失性高速缓存事务管理器110将数据的状态从持久性的改变成耐久的(例如将数据标记为耐久的)。一旦与已提交事务相关联的所有数据被存储在示例非易失性高速缓存102中,数据是耐久的并且可用于在从系统或功率故障恢复之后进行检索。
在一些示例中,可以作为脏行驱逐过程的部分而将数据从示例非易失性高速缓存102驱逐到示例非易失性存储器104。在一些示例中,示例非易失性高速缓存事务管理器110管理示例非易失性高速缓存102处的数据,并且控制数据向示例非易失性存储器104的驱逐。例如,示例非易失性高速缓存事务管理器110可以发起耐久数据从非易失性高速缓存102向非易失性存储器104的写回。
当相比于现有系统的基于日志的机制时,所图示的示例的系统100提供了从系统故障的改进的恢复。用于系统恢复的一些基于日志的机制要求系统定位日志存储在哪里并且找到相关日志条目(例如由于系统/应用故障所致的未完成事务的不完整日志条目和要被重放的日志条目)。这些日志条目可以通过比较标志(flag)(例如耐久或提交标志)来标识。在标识出要被重放的日志条目之后,基于日志的系统将首先删除不完整日志条目并且然后处理要被重放的日志条目。基于日志的系统复制来自日志条目的数据值并且基于日志条目中的地址而将它们重新存储(restore)在适当的存储器位置,因此系统可以滚回(例如利用撤消日志操作)或前滚(例如利用重做日志操作)到一致状态。使用现有系统的这样的基于日志的机制的系统恢复是漫长的过程。
在所图示的示例中,在系统故障和/或中断之后,示例非易失性高速缓存事务管理器110扫描示例非易失性高速缓存102并且使与未提交事务相关联的数据(例如不耐久的数据)无效。在一些示例中,可以提供单独的控制器和/或管理器以实现系统恢复。当示例系统100重启时,存储在示例非易失性高速缓存102处的已经被示例非易失性高速缓存事务管理器110标记为耐久的数据的在先版本和/或已经存储在示例非易失性存储器104中的数据的在先版本可以直接用于取代示例非易失性高速缓存102处的无效数据。在一些示例中,系统恢复可以使用硬件来实现。在一些示例中,系统恢复使用已被提供有运行系统恢复的固件和/或软件的处理器来实现。
图1B示出提供多版本化非易失性存储器层级以提供对持久性数据结构的原子、一致且耐久的数据更新的示例处理器系统100的另一示例中的图1A的示例持久性存储器区101。图1B的示例包括图1A的示例非易失性高速缓存102、示例非易失性存储器104、示例易失性高速缓存106、示例易失性高速缓存事务管理器108和示例非易失性高速缓存事务管理器110。在一些示例中,示例非易失性存储器104是主存储器的部分并且可以利用存储器总线与易失性存储器模块(例如包括DRAM)(未示出)通信。在图1B的示例中,示例核130和易失性高速缓存106是示例处理器128的部分。尽管未示出,但是在一些示例中,示例处理器128还可以包括非易失性高速缓存102。示例非易失性高速缓存102、示例非易失性存储器104、示例易失性高速缓存106、示例易失性高速缓存事务管理器108、示例非易失性高速缓存事务管理器110、示例核130和/或示例处理器128可以使用任何物理实现方式来实现。例如,非易失性高速缓存102和非易失性存储器104可以被封装在单个封装中。在一些示例中,非易失性高速缓存102可以堆叠在处理器128(例如CPU管芯)的顶部上。在一些示例中,非易失性存储器104可以在芯片外实现(例如使用双列直插式存储器模块(DIMM))。在又其他示例中,示例非易失性高速缓存102、示例非易失性存储器104、示例易失性高速缓存事务管理器108、示例非易失性高速缓存事务管理器110和/或示例处理器128可以实现为安装在印刷电路板(PCB)上的单独的器件。
在所图示的示例中,当事务正在运行(例如事务是提交中事务)时,示例易失性高速缓存事务管理器108管理使用提交中事务的多个写回操作将脏数据(例如脏高速缓存行)从示例易失性高速缓存106向示例非易失性高速缓存102的写回。在这样的写回操作期间,被写回到非易失性高速缓存102的数据状态在对应写回操作完成之后被视为是持久性的。在数据向非易失性高速缓存102的写回完成之后,存储在示例非易失性高速缓存102处的数据状态被视为持久性的。一旦与提交中事务相关联的所有数据被存储在示例非易失性高速缓存102处,事务变成已提交事务(例如事务完成运行),并且示例非易失性高速缓存事务管理器110将写回的数据标记为耐久的。在一些示例中,可以作为脏行驱逐过程的部分而将数据(例如耐久数据)从示例非易失性高速缓存102驱逐到示例非易失性存储器104。在一些示例中,当数据被标记为耐久时(例如当与事务相关联的所有数据是持久性的并且事务变成已提交事务时),示例非易失性高速缓存事务管理器110指导示例非易失性高速缓存102将数据驱逐到示例非易失性存储器104。
在所图示的示例中,易失性高速缓存106以示例易失性高速缓存数据结构112存储(或高速缓存)数据。在所图示的示例中,易失性高速缓存事务管理器108使用易失性高速缓存数据结构112来追踪更新易失性高速缓存106中的数据的事务(例如事务是未提交的、提交中的还是已提交的)以确定何时将这样的数据写回到示例非易失性高速缓存102。在所图示的示例中,示例数据结构112包括示例标签字段114、示例数据字段116、示例核标识符(CID)字段122、示例硬件线程标识符(HTID)字段124和示例事务标识符(TxID)字段126。
示例标签字段114用于追踪针对存储在数据结构112的示例数据字段116中的数据的数据关联。示例数据字段116表示在易失性高速缓存106中存储数据的高速缓存行或高速缓存行的部分。示例核标识符(CID)字段122存储执行对应于数据结构112的特定条目的事务的核(例如核130)的标识符。例如,核130可以发起事务,并且与事务相关联的数据可以被存储在示例数据字段116中。示例硬件线程标识符(HTID)字段124标识核(例如核130)使用以执行事务的硬件线程。示例事务标识符(TxID)字段126在示例数据字段116存储与事务相关联的数据(例如数据是未经改变的或不脏的)时标识事务。当事务标识符126被设置成零(0)时,数据字段116存储与事务不相关联的数据。在一些示例中,标签字段114、数据字段116、CID字段122、HTID字段124和/或TxID字段126被初始化到零(0)。在一些示例中,示例数据结构112具有更多或更少的字段。
在所图示的示例中,示例非易失性高速缓存102以示例非易失性高速缓存数据结构118存储(或高速缓存)数据,所述示例非易失性高速缓存数据结构118包括追踪存储在示例非易失性高速缓存102中的数据的状态的字段。在所图示的示例中,非易失性高速缓存事务管理器110使用数据状态来确定何时将这样的数据写回到示例非易失性存储器104。在所图示的示例中,示例数据结构118包括示例标签字段132、示例数据字段134、示例提交状态(C)字段136、示例核标识符(CID)字段138、示例硬件线程标识符(HTID)字段140和示例事务标识符(TxID)字段142。
示例标签字段132用于追踪针对存储在数据结构118的示例数据字段134中的数据的数据关联。示例数据字段134表示在非易失性高速缓存102中存储数据的高速缓存行或高速缓存行的部分。示例提交状态(C)字段136标识(例如存储在数据字段134中的)数据与提交中还是已提交事务相关联。示例核标识符(CID)字段138存储执行对应于数据结构118的特定条目的事务的核(例如核130)的标识符。例如,核130可以发起事务,并且与事务相关联的数据可以被存储在示例数据字段134中。示例硬件线程标识符(HTID)字段140标识核(例如核130)使用以执行事务的硬件线程。示例事务标识符(TxID)字段142在示例数据字段134存储与事务相关联的数据(例如数据是未经改变的或不脏的)时标识事务。当事务标识符142被设置成零(0)时,数据字段116存储与事务不相关联的数据。在一些示例中,标签字段132、数据字段134、C字段136、CID字段138、HTID字段140和/或TxID字段142被初始化到零(0)。在一些示例中,示例数据结构118具有更多或更少的字段。
在所图示的示例中,核130执行事务以在示例易失性高速缓存106处高速缓存数据(例如核130更新数据和在示例数据结构112的数据字段116中存储数据)。示例易失性高速缓存事务管理器108追踪由示例核130执行的事务。例如,示例易失性高速缓存事务管理器108为事务指派标识符,并且将标识符存储在对应事务标识符字段126中。此外,易失性高速缓存事务管理器108在对应CID字段122处存储核130的标识符,并且在HTID字段124处存储与核130相关联的硬件线程的标识符。当事务开始运行时,示例易失性高速缓存事务管理器108执行操作(例如提交时清除操作)以使易失性高速缓存106将与事务相关联的数据写回到示例非易失性高速缓存102。
当与事务相关联的数据被写回到示例非易失性高速缓存102时,数据被高速缓存在数据结构118的对应数据字段134中。当数据被写回到非易失性高速缓存102时,对应示例提交状态(C)字段136由示例非易失性高速缓存事务管理器110设置成零(0),因为数据与提交中事务相关联。当事务完成运行(例如事务变成已提交事务)时,示例非易失性高速缓存事务管理器110将提交状态(C)字段136更新成一(1),因为数据与已提交事务相关联。一旦与事务(例如在对应TxID字段142处标识的事务)相关联的所有数据被高速缓存在示例非易失性高速缓存102处,并且当针对与事务相关联的所有数据的对应提交状态(C)字段136被更新成一(1)时,数据是耐久的。在一些示例中,可以作为脏行驱逐过程的部分而将数据从示例非易失性高速缓存102驱逐到示例非易失性存储器104。在一些示例中,示例非易失性高速缓存事务管理器110使示例非易失性高速缓存102将数据写回到示例非易失性存储器104。
图2图示了图1A和1B的示例易失性高速缓存事务管理器108和示例非易失性高速缓存事务管理器110的示例配置。在所图示的示例中,示例易失性高速缓存事务管理器108和示例非易失性高速缓存事务管理器110管理针对示例易失性高速缓存106和示例非易失性高速缓存102处的数据的事务和存储器更新。所图示的示例的示例易失性高速缓存事务管理器108包括示例队列202、示例控制器204和示例计数器206。所图示的示例的示例非易失性高速缓存事务管理器110包括示例队列208和示例控制器210。
在所图示的示例中,示例队列202和示例队列208用于追踪与事务(例如由示例核130执行的事务)相关联的经高速缓存的数据(例如脏数据)。为了追踪与事务相关联的数据,示例队列202和示例队列208存储在易失性高速缓存106或非易失性高速缓存102处高速缓存的数据的地址。在一些示例中,队列202和队列208使用先入先出(FIFO)储存器来实现。在一些示例中,示例队列202和/或示例队列208分别包括类似于存储在示例易失性高速缓存106和示例非易失性高速缓存102中的那些的信息。也就是说,队列202和/或队列208可以包括核标识符(例如类似于图1B的核标识符(CID)字段122和138)、硬件线程标识符(例如类似于图1B的硬件线程标识符(HTID)字段124和140)和/或事务标识符(例如类似于图1B的事务标识符(TxID)字段126和142)。在一些示例中,示例队列202和/或示例队列208存储数据的副本(例如存储在图1B的数据字段116和134中的数据副本)。这样的信息和/或数据从易失性高速缓存106和/或非易失性高速缓存102获得,和/或由示例易失性高速缓存事务管理器108和/或示例非易失性高速缓存事务管理器110确定。在所图示的示例中,队列202和队列208使用易失性存储器实现并且因此如果系统100失去功率则存储在队列202和队列208中的信息将丢失。然而,在其它示例中,队列202和208可以使用非易失性存储器实现。队列202的示例实现方式在图4中图示。
示例控制器204使用示例队列202中的信息来确定何时实现操作(例如提交时清除操作)以使示例易失性高速缓存106将与事务相关联的数据从易失性高速缓存106写回到示例非易失性高速缓存102。示例控制器210使用示例队列208中的信息来确定何时使示例非易失性高速缓存102将与事务相关联的数据从非易失性高速缓存102写回到示例非易失性存储器104。
在所图示的示例中,当新的事务开始时,示例核130向示例易失性高速缓存事务管理器108发送事务开始信号(例如Tx_begin)。基于事务开始信号,示例控制器204更新示例事务计数器206(例如使计数器206增加)并且向要被存储在示例易失性高速缓存106处的数据(例如与事务相关联的数据)分配新的事务标识符。当与事务相关联的数据被高速缓存在易失性高速缓存106处时,控制器204将事务标识符存储在示例易失性高速缓存106的事务标识符(TxID)字段126(图1B)处。
在所图示的示例中,示例控制器204确定事务何时正在运行(例如事务何时为提交中事务)。当事务正在运行(例如执行特定操作)时,控制器204将与在易失性高速缓存106处执行的操作相关联的数据的地址存储在示例队列202中。当操作完成时(例如在事务在运行的同时),所图示的示例的示例控制器204指导示例易失性高速缓存106将与完成的操作相关联的数据从易失性高速缓存106写回到示例非易失性高速缓存102。在一些示例中,控制器204使用存储在队列202处的数据地址以将要被写回到示例非易失性高速缓存102的数据告知给示例易失性高速缓存106。
当事务结束(例如事务为已提交事务)时,示例核130向示例易失性高速缓存事务管理器108发送事务结束信号(例如Tx_end)。在一些示例中,易失性高速缓存事务管理器108在事务已经结束时告知示例非易失性高速缓存事务管理器110。如果另一新的事务开始,示例核130向示例易失性高速缓存事务管理器108发送另一事务开始信号,并且示例控制器204更新(例如增加)事务计数器206并且向要被存储在示例易失性高速缓存106处的数据(例如与新的事务相关联的数据)分配另一新的事务标识符。
在所图示的示例中,在与事务相关联的数据被从示例易失性高速缓存106写回到示例非易失性高速缓存102时,控制器210在示例队列208中存储与事务相关联的数据的地址。所图示的示例的控制器210确定是否与事务相关联的所有数据都已经从示例易失性高速缓存106写回到示例非易失性高速缓存102。如果与事务相关联的所有数据都已经被写回并且事务完成运行(例如事务为已提交事务),则示例控制器210将数据状态更新成耐久的。为了将数据状态更新成耐久的,示例控制器210将示例非易失性高速缓存102的提交状态(C)字段136(图1B)更新成一(1)。在一些示例中,作为脏行驱逐过程的部分而将数据从示例非易失性高速缓存102驱逐到示例非易失性存储器104。在一些示例中,一旦将提交状态(C)字段136设置成耐久的,示例控制器210指导示例非易失性高速缓存102将耐久数据写回到示例非易失性存储器104。在一些示例中,控制器210使用存储在队列208中的数据地址以将要被写回到示例非易失性存储器104的数据告知给示例非易失性高速缓存102。
虽然在图2中图示了实现图1A和1B的示例易失性高速缓存事务管理器108和示例非易失性高速缓存事务管理器110的示例方式,但是图2中所图示的元件、过程和/或设备中的一个或多个可以以任何其它方式组合、划分、重布置、省略、消除和/或实现。另外,示例队列202、示例控制器204、示例计数器206、示例队列208、示例控制器210和/或更一般地,图2的示例易失性高速缓存事务管理器108和/或示例非易失性高速缓存事务管理器110可以通过硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。因此,例如,示例队列202、示例控制器204、示例计数器206、示例队列208、示例控制器210和/或更一般地,示例易失性高速缓存事务管理器108和/或示例非易失性高速缓存事务管理器110中的任何一个可以通过一个或多个电路、一个或多个可编程处理器、一个或多个专用集成电路(ASIC)、一个或多个可编程逻辑器件(PLD)和/或一个或多个现场可编程逻辑器件(FPLD)等来实现。当阅读本专利的任何装置或系统权利要求以覆盖纯软件和/或固件实现方式时,在示例的至少一个处,队列202、示例控制器204、示例计数器206、示例队列208和/或示例控制器210由此被明确限定成包括存储软件和/或固件的有形计算机可读存储设备或存储盘,诸如存储器、DVD、CD、蓝光等。再进一步地,图2的示例易失性高速缓存事务管理器108和/或示例非易失性高速缓存事务管理器110可以包括附加于或代替于图2中所图示的那些的一个或多个元件、过程和/或设备,和/或可以包括多于一个的任何或全部所图示的元件、过程和设备。
图3图示了针对由图1A和1B的示例处理器系统100运行的事务的示例时序图300。在所图示的示例中,在时间302处,核130(图1B和2)发起事务A(Tx A)并且事务A开始。在时间304处,从示例易失性高速缓存106读取存储在地址Aa、Ab和Ac处的数据。以此方式,核130可以修改或更新数据。在时间306处,将基于原始存储在地址Aa处的在先数据的经更新数据在地址A0处写入到示例易失性高速缓存106。同样在时间306处,将基于原始存储在地址Ab处的在先数据的经更新数据在地址A1处写入到示例易失性高速缓存106。在时间308处,从示例易失性高速缓存106读取存储在地址Ad处的数据。以此方式,核130可以修改或更新数据。在时间310处,将基于原始存储在地址Ac处的在先数据的经更新数据在地址A2处写入到示例易失性高速缓存106。在一些示例中,地址Aa是地址A0,地址Ab是地址A1,并且地址Ac是地址A2。在这样的示例中,核130用易失性高速缓存106中的经更新数据盖写原始数据。
在时间312处,示例易失性高速缓存事务管理器108使示例易失性高速缓存106将存储在地址A0、A1和A2处的数据写回到示例非易失性高速缓存102。如图3中所示,可以在图3的事务A(TxA)仍旧在运行时(例如事务A在事务A已经结束之前处于提交中事务状态)将数据从示例易失性高速缓存106写回到示例非易失性高速缓存102。在一些示例中,核130可以在与图3的事务A相关联的所有数据被写回到示例非易失性高速缓存102之前开始另一事务以更新易失性高速缓存106中的数据。在一些示例中,A0、A1和A2以它们从示例易失性高速缓存106中读取和写入到示例易失性高速缓存106的次序被写回到示例非易失性高速缓存102。在一些示例中,A0、A1和A2可以以与它们从示例易失性高速缓存106读取和写入到示例易失性高速缓存106(例如在其中更新)的次序不同的次序被写回到示例非易失性高速缓存102(例如它们可以乱序或者无序地被写回到非易失性高速缓存102)。
一旦将存储在地址A0、A1和A2的数据写回到示例非易失性高速缓存102,数据就是持久性的。在时间314处,事务A结束。在所图示的示例中,存储在示例易失性高速缓存106中的地址Ad处的数据不脏(例如未被更新)并且因此,经更新版本未被写回到示例易失性高速缓存106。在时间316处,由于与事务A相关联的所有数据都存储在示例非易失性高速缓存102处并且事务A已经结束,因此示例非易失性高速缓存事务管理器110将数据状态更新成耐久的。在一些示例中,在时间316处,示例非易失性高速缓存事务管理器110指导示例非易失性高速缓存102将数据写回到示例非易失性存储器104。在一些示例中,在时间316处,作为脏行驱逐过程的部分而将数据从示例非易失性高速缓存102驱逐到示例非易失性存储器104。示例易失性高速缓存事务管理器108可以在事务A已经结束时告知示例非易失性高速缓存事务管理器110。
图4图示了在结合图3图示的事务期间图2的队列202的示例实现方式。在图4的示例中,队列202使用先入先出(FIFO)存储布置400来实现。当在时间306(图3)处经更新数据在地址A0和A1处被写入到示例易失性高速缓存106(图2)时,将地址A0和A1写入到FIFO 400中。当在时间310处经更新数据在地址A2处被写入到示例易失性高速缓存106时,将地址A2写入到FIFO 400中。示例易失性高速缓存事务管理器108(图2)使用FIFO 400来确定何时指导示例易失性高速缓存106将数据写回到示例非易失性高速缓存102。例如,在时间312处,示例易失性高速缓存事务管理器108确定地址A0、A1和A2处的数据已经被成功更新,并且指导示例易失性高速缓存106写回存储在地址A0处的经更新数据,然后是存储在地址A1处的经更新数据,然后是存储在地址A2处的经更新数据。在图4的示例中,由于地址A0为存储在FIFO 400中的第一地址,因此A0是来自FIFO 400要被处理的第一地址和要被示例易失性高速缓存事务管理器108标识以写回到非易失性存储器102的第一地址。
在图5、6和7中示出表示用于实现示例易失性高速缓存事务管理器108和示例非易失性高速缓存事务管理器110的示例机器可读指令的流程图。在该示例中,机器可读指令包括供处理器(例如图1B的处理器128)运行的程序。程序可以体现在存储于诸如CD-ROM、软盘、硬驱动器、数字多功能盘(DVD)、蓝光盘或与处理器相关联的存储器之类的有形计算机可读存储介质上的软件中,但是整个程序和/或其部分可以可替换地由除了处理器之外的设备运行和/或体现在固件或专用硬件中。另外,尽管参照图5、6和7中图示的流程图描述示例程序,但是可以可替换地使用实现示例易失性高速缓存事务管理器108和示例非易失性高速缓存事务管理器110的许多其它方法。例如,可以改变块的运行次序,和/或可以改变、消除或组合所描述的一些块。
如以上所提到的,图5、6和7的示例过程可以使用存储在诸如硬盘驱动器、闪速存储器、只读存储器(ROM)、压缩盘(CD)、数字多功能盘(DVD)、高速缓存、随机存取存储器(RAM)和/或其中在任何持续时间内(例如在延长的时间段内、永久地、用于简要实例、用于临时缓冲和/或用于高速缓存信息)存储信息的任何其它存储设备或存储盘之类的有形计算机可读存储介质上的编码指令(例如计算机和/或机器可读指令)来实现。如本文所使用的,术语有形计算机可读存储介质被明确限定成包括任何类型的计算机可读存储设备和/或存储盘并且排除传播信号。如本文所使用的,“有形计算机可读存储介质”和“有形机器可读存储介质”可互换地使用。此外或可替换地,图5、6和7的示例过程可以使用存储在诸如硬盘驱动器、闪速存储器、只读存储器、压缩盘、数字多功能盘、高速缓存、随机存取存储器和/或其中在任何持续时间内(例如在延长的时间段内、永久地、用于简要实例、用于临时缓冲和/或用于高速缓存信息)存储信息的任何其它存储设备或存储盘之类的非暂时性计算机和/或机器可读介质上的编码指令(例如计算机和/或机器可读指令)来实现。如本文所使用的,术语非暂时性计算机可读介质被明确限定成包括任何类型的计算机可读设备或盘并且排除传播信号。如本文所使用的,当措词“至少”被用作权利要求前序中的过渡术语时,其以与术语“包括”作为开放式的相同方式是开放式的。
图5是表示可以被运行以在使用图1A、1B和2的示例持久性存储器架构101的图1A、1B和2的非易失性高速缓存102和非易失性存储器104中存储数据的示例机器可读指令的流程图。
在所图示的示例中,当事务正在提交(例如事务正运行)时,示例易失性高速缓存事务管理器108(图1A、1B、2)指导易失性高速缓存106(图1A、1B、2)将与事务相关联的数据写回到示例非易失性高速缓存102(块502)。一旦数据被写入到示例非易失性高速缓存102,数据就是持久性的。一旦与提交中事务相关联的所有数据被写入到示例非易失性高速缓存102,并且事务变成已提交事务(例如事务完成运行),数据就是耐久的并且可用于在从系统或功率故障恢复之后进行检索。在所图示的示例中,当事务已提交并且与事务相关联的所有数据被存储在示例非易失性高速缓存102中时,示例非易失性高速缓存事务管理器110(图1A、1B、2)指导示例非易失性高速缓存102将数据写回到示例非易失性存储器104(块504)。在一些示例中,可以作为脏行驱逐过程的部分而将数据从示例非易失性高速缓存102驱逐到示例非易失性存储器104。图5的示例过程然后结束。
图6是表示可以被运行以执行图1A、1B和2的持久性存储器架构101处的持久性存储器更新的示例机器可读指令的流程图。在所图示的示例中,新的事务开始(块602)。例如,示例核130(图1B和2)向示例易失性高速缓存事务管理器108(图1A、1B、2)发送事务开始信号(例如Tx_begin)。基于事务开始信号,示例控制器204(图2)更新示例事务计数器206(图2)(例如使计数器206增加)(块604)。示例控制器204向存储在示例易失性高速缓存106(图1A、1B、2)处的数据(例如与事务相关联的数据)分配新的事务标识符(块606)。例如,当与事务相关联的数据被高速缓存在易失性高速缓存106处时,控制器204将事务标识符存储在示例易失性高速缓存106的事务标识符(TxID)字段126(图1B)处。
在所图示的示例中,示例控制器204确定事务何时正在运行(例如事务何时为提交中事务)(块608)。控制在块608处保持直到事务为提交中事务为止。当事务正在运行(例如执行对应于事务的特定操作)时,控制器204将与正在易失性高速缓存106处执行的操作相关联的数据的地址存储在示例队列202(图2)中。当操作完成时(例如在事务正在运行的同时),所图示的示例的示例控制器204指导示例易失性高速缓存106将与完成的操作相关联的数据从易失性高速缓存106写回到示例非易失性高速缓存102(图1A、1B、2)(块610)。在一些示例中,控制器204使用存储在队列202处的数据地址以将要被写回到示例非易失性高速缓存102的数据告知给示例易失性高速缓存106。在所图示的示例中,在与事务相关联的数据从示例易失性高速缓存106被写回到示例非易失性高速缓存102时,控制器210(图2)将与事务相关联的数据的地址存储在示例队列208(图2)中。
当事务结束(例如事务为已提交事务)时(块612),示例核130向示例易失性高速缓存事务管理器108发送事务结束信号(例如Tx_end)。控制保持在块612直到事务为已提交事务为止。在一些示例中,易失性高速缓存事务管理器108在事务已经结束时告知示例非易失性高速缓存事务管理器110。
所图示的示例的控制器210确定是否与事务相关联的所有数据都已经从示例易失性高速缓存106被写回到示例非易失性高速缓存102(块614)。控制保持在块614处直到与事务相关联的所有数据都已经被写回到示例非易失性高速缓存102为止。如果与事务相关联的所有数据都已经被写回到示例非易失性高速缓存102(块614),示例控制器210将数据状态更新成耐久的(块616)。为了将数据状态更新成耐久的,示例控制器210将示例非易失性高速缓存102的提交状态(C)字段136(图1B)更新成一(1)。在所图示的示例中,一旦提交状态(C)字段136被设置成耐久的,示例控制器210就指导示例非易失性高速缓存102将耐久数据写回到示例非易失性存储器104(块618)。在一些示例中,控制器210使用存储在队列208中的数据地址来将要被写回到示例非易失性存储器104的数据告知给示例非易失性高速缓存102。在一些示例中,作为脏行驱逐过程的部分而从示例非易失性高速缓存102向示例非易失性存储器104驱逐数据。
如果另一新的事务开始(块620),控制返回到块602并且示例核130向示例易失性高速缓存事务管理器108发送另一事务开始信号。如果另一新的事务未开始(块620),图6的示例过程结束。
图7是表示可以被运行以执行图1A、1B和/或2的示例系统100中的数据恢复的示例机器可读指令的流程图。在所图示的示例中,示例易失性高速缓存事务管理器108(图1A、1B、2)指导示例易失性高速缓存106(图1A、1B、2)使用例如事务将数据写回到示例非易失性高速缓存102(块702)。可以使用例如以上结合图6描述的过程来将数据从示例易失性高速缓存106写回到示例非易失性高速缓存102。在所图示的示例中,当数据从示例易失性高速缓存106被写回到示例非易失性高速缓存102时,发生写入中断(块704)。写入中断可以包括例如应用故障、程序故障、系统崩溃、功率故障等。在所图示的示例中,写入中断导致块702的写回不完整,并且因此导致未完成将与块702的事务相关联的所有数据写回到非易失性高速缓存102。在所图示的示例中,在发生写入中断之后,示例非易失性高速缓存事务管理器110执行数据恢复操作(块706)。也就是说,示例非易失性高速缓存事务管理器110恢复与在块704处中断的写入相关联的数据。例如,示例非易失性高速缓存事务管理器110扫描示例非易失性高速缓存102并且使与未提交事务相关联的数据(例如不耐久的数据)无效。在一些示例中,可以提供单独的控制器和/或管理器来实现系统恢复。当示例系统100重启时,已经由示例非易失性高速缓存事务管理器110标记为耐久的存储在示例非易失性高速缓存102处的数据的在先版本和/或已经存储在示例非易失性存储器104(图1A、1B、2)中的数据的在先版本可以用于直接取代示例非易失性高速缓存102处的无效数据。图7的示例过程然后结束。
尽管本文已经公开了某些方法、装置、系统和/或制造品,但是本专利的覆盖范围不限于此。相反,本专利覆盖合理落入在文字上或者在等同物的原则之下的随附权利要求的范围内的所有方法、装置和制造品。
Claims (17)
1.一种提供持久性存储器的系统,包括:
非易失性高速缓存,其用于存储从易失性高速缓存接收的数据,所述数据与事务相关联,所述数据要在事务由处理器系统执行的同时从易失性高速缓存接收,当与事务相关联的所有数据已经被存储在非易失性高速缓存中并且事务已经结束时数据被标识为耐久的;以及
非易失性存储器,其用于当数据被标识为耐久的时存储从非易失性高速缓存接收的数据。
2.权利要求1的系统,其中非易失性高速缓存存储数据的第一在先版本,并且非易失性存储器存储数据的第二在先版本。
3.权利要求2的系统,还包括非易失性高速缓存事务管理器,其用于执行数据恢复操作以在写入中断使数据从易失性高速缓存向非易失性高速缓存的写回中断之后从非易失性高速缓存恢复数据的第一在先版本或者从非易失性存储器恢复第二在先版本。
4.权利要求1的系统,其中所述数据以与其在易失性高速缓存中被更新的次序不同的次序从易失性高速缓存写回到非易失性高速缓存。
5.权利要求1的系统,其中事务是更新数据的操作集并且当操作集被运行时事务为已提交事务。
6.权利要求1的系统,还包括易失性高速缓存事务管理器,其用于确定非易失性高速缓存何时要从易失性高速缓存接收数据。
7.权利要求6的系统,其中当事务为未提交事务时,易失性高速缓存事务管理器指导易失性高速缓存将数据写入到非易失性高速缓存,当操作集的操作正在运行时事务变成提交中事务。
8.权利要求1的系统,还包括非易失性高速缓存事务管理器,其用于更新非易失性高速缓存的标签字段以指示数据是否为耐久的。
9.权利要求8的系统,其中如果与事务相关联的数据被存储在非易失性高速缓存中,非易失性高速缓存事务管理器确定数据是耐久的。
10.权利要求1的系统,还包括非易失性高速缓存事务管理器,其用于当与事务相关联的所有数据都被存储在非易失性高速缓存中并且事务为已提交事务时确定非易失性高速缓存要将数据写入到非易失性存储器。
11.权利要求1的系统,其中非易失性高速缓存与非易失性存储器并置或者位于处理器中。
12.一种提供持久性存储器的方法,包括:
将从易失性高速缓存接收的第一数据存储在非易失性高速缓存处,第一数据要在事务由处理器系统执行的同时从易失性高速缓存接收,当与事务相关联的所有数据已经被存储在非易失性高速缓存中并且事务已经结束时数据被标识为耐久的;
当数据被标识为耐久的时,将从非易失性高速缓存接收的第一数据存储在非易失性存储器处;以及
将从易失性高速缓存接收的第二数据存储在非易失性高速缓存处,第二数据是第一数据的版本。
13.权利要求12的方法,还包括执行数据恢复操作以在写入中断使第二数据从易失性高速缓存向非易失性高速缓存的写回中断之后从非易失性高速缓存或非易失性存储器恢复第一数据。
14.权利要求12的方法,其中第一数据以与其在易失性高速缓存中被更新的次序不同的次序从易失性高速缓存写回到非易失性高速缓存。
15.权利要求12的方法,其中事务是更新第一数据的操作集并且当操作集被运行时事务为已提交事务。
16.权利要求12的方法,其中当事务为提交中事务时,非易失性高速缓存要从易失性高速缓存接收数据,当操作集的操作正在运行时事务为提交中事务。
17.权利要求12的方法,其中当非易失性高速缓存的标签字段指示第一数据是耐久的时,非易失性高速缓存要将第一数据写入到非易失性存储器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/031600 WO2014142908A1 (en) | 2013-03-14 | 2013-03-14 | Multiversioned nonvolatile memory hierarchy for persistent memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105283857A CN105283857A (zh) | 2016-01-27 |
CN105283857B true CN105283857B (zh) | 2018-09-11 |
Family
ID=51537294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380076588.2A Active CN105283857B (zh) | 2013-03-14 | 2013-03-14 | 用于持久性存储器的多版本化非易失性存储器层级 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10241711B2 (zh) |
EP (1) | EP2972891B1 (zh) |
CN (1) | CN105283857B (zh) |
WO (1) | WO2014142908A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9535836B2 (en) * | 2013-03-13 | 2017-01-03 | Hewlett Packard Enterprise Development Lp | Non-volatile memory update tracking |
US9471494B2 (en) * | 2013-12-20 | 2016-10-18 | Intel Corporation | Method and apparatus for cache line write back operation |
US20160063051A1 (en) * | 2014-08-29 | 2016-03-03 | Netapp, Inc. | Methods for persisting data on nonvolatile memory for fast updates and instantaneous recovery and devices thereof |
US9430396B2 (en) * | 2014-12-22 | 2016-08-30 | Intel Corporation | Updating persistent data in persistent memory-based storage |
EP3229147A4 (en) * | 2014-12-24 | 2017-12-27 | Huawei Technologies Co., Ltd. | Transaction processing method, device and computer system |
US20160217177A1 (en) * | 2015-01-27 | 2016-07-28 | Kabushiki Kaisha Toshiba | Database system |
US20160283385A1 (en) * | 2015-03-27 | 2016-09-29 | James A. Boyd | Fail-safe write back caching mode device driver for non volatile storage device |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US10009438B2 (en) * | 2015-05-20 | 2018-06-26 | Sandisk Technologies Llc | Transaction log acceleration |
JP6334824B2 (ja) * | 2015-07-16 | 2018-05-30 | 東芝メモリ株式会社 | メモリコントローラ、情報処理装置および処理装置 |
CN105404673B (zh) * | 2015-11-19 | 2018-11-09 | 清华大学 | 基于nvram的高效文件系统构建方法 |
CN108701003B (zh) * | 2016-03-31 | 2022-04-26 | 英特尔公司 | 用于对远程节点的许多存储操作的原子写入的结构弹性支持 |
US10318175B2 (en) | 2017-03-07 | 2019-06-11 | Samsung Electronics Co., Ltd. | SSD with heterogeneous NVM types |
US10360149B2 (en) * | 2017-03-10 | 2019-07-23 | Oracle International Corporation | Data structure store in persistent memory |
US11194524B2 (en) | 2017-09-15 | 2021-12-07 | Qualcomm Incorporated | Apparatus and method for performing persistent write operations using a persistent write command |
US10606513B2 (en) | 2017-12-06 | 2020-03-31 | Western Digital Technologies, Inc. | Volatility management for non-volatile memory device |
US11579770B2 (en) | 2018-03-15 | 2023-02-14 | Western Digital Technologies, Inc. | Volatility management for memory device |
US11157319B2 (en) | 2018-06-06 | 2021-10-26 | Western Digital Technologies, Inc. | Processor with processor memory pairs for improved process switching and methods thereof |
US10866890B2 (en) | 2018-11-07 | 2020-12-15 | Arm Limited | Method and apparatus for implementing lock-free data structures |
US11740928B2 (en) * | 2019-08-26 | 2023-08-29 | International Business Machines Corporation | Implementing crash consistency in persistent memory |
US11928497B2 (en) * | 2020-01-27 | 2024-03-12 | International Business Machines Corporation | Implementing erasure coding with persistent memory |
US20230010516A1 (en) * | 2021-07-06 | 2023-01-12 | Vmware, Inc. | Input/output (i/o) quiescing for sequential ordering of operations in a write-ahead-log (wal)-based storage system |
US11886744B2 (en) * | 2021-12-15 | 2024-01-30 | Nvidia Corporation | Systems, methods, and apparatuses for making writes to persistent memory |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102006506A (zh) * | 2010-11-24 | 2011-04-06 | 深圳市同洲电子股份有限公司 | 一种视频服务器的分级存储管理方法及装置、视频服务器 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5732238A (en) | 1996-06-12 | 1998-03-24 | Storage Computer Corporation | Non-volatile cache for providing data integrity in operation with a volatile demand paging cache in a data storage system |
US6463513B1 (en) | 1999-09-07 | 2002-10-08 | International Business Machines Corporation | Cache storage optimization in a data storage library of a redundant copy synchronization token tracking system |
US6725342B1 (en) | 2000-09-26 | 2004-04-20 | Intel Corporation | Non-volatile mass storage cache coherency apparatus |
US7346917B2 (en) | 2001-05-21 | 2008-03-18 | Cyberview Technology, Inc. | Trusted transactional set-top box |
KR100484485B1 (ko) * | 2002-10-01 | 2005-04-20 | 한국전자통신연구원 | 비휘발성 메모리에의 데이터 저장 방법 및 장치 |
EP1510924B1 (en) | 2003-08-27 | 2008-07-23 | ARM Limited | Apparatus and method for handling transactions with writes and reads to EEPROM or Flash memories |
KR100746198B1 (ko) | 2005-07-08 | 2007-08-06 | 삼성전자주식회사 | 데이터 저장장치, 데이터 저장방법, 및 그 기록매체 |
US7558913B2 (en) * | 2006-06-20 | 2009-07-07 | Microsoft Corporation | Atomic commit of cache transfer with staging area |
US7761664B2 (en) | 2007-04-13 | 2010-07-20 | International Business Machines Corporation | Systems and methods for multi-level exclusive caching using hints |
US20100057984A1 (en) | 2008-08-26 | 2010-03-04 | Seagate Technology Llc | Memory hierarchy containing only non-volatile cache |
US8966181B2 (en) | 2008-12-11 | 2015-02-24 | Seagate Technology Llc | Memory hierarchy with non-volatile filter and victim caches |
US9003118B2 (en) * | 2009-01-09 | 2015-04-07 | Dell Products L.P. | Systems and methods for non-volatile cache control |
US8327076B2 (en) * | 2009-05-13 | 2012-12-04 | Seagate Technology Llc | Systems and methods of tiered caching |
KR101220607B1 (ko) * | 2009-12-29 | 2013-01-10 | 홍익대학교 산학협력단 | 비휘발성 램을 이용하여 연산 처리의 원자성을 보장하는 컴퓨팅 시스템 및 방법 |
US20120072449A1 (en) * | 2010-09-17 | 2012-03-22 | Microsoft Corporation | Object instance versioning |
US20120297147A1 (en) * | 2011-05-20 | 2012-11-22 | Nokia Corporation | Caching Operations for a Non-Volatile Memory Array |
US8499121B2 (en) * | 2011-08-31 | 2013-07-30 | Hewlett-Packard Development Company, L.P. | Methods and apparatus to access data in non-volatile memory |
-
2013
- 2013-03-14 EP EP13877967.3A patent/EP2972891B1/en active Active
- 2013-03-14 US US14/774,521 patent/US10241711B2/en active Active
- 2013-03-14 CN CN201380076588.2A patent/CN105283857B/zh active Active
- 2013-03-14 WO PCT/US2013/031600 patent/WO2014142908A1/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102006506A (zh) * | 2010-11-24 | 2011-04-06 | 深圳市同洲电子股份有限公司 | 一种视频服务器的分级存储管理方法及装置、视频服务器 |
Non-Patent Citations (1)
Title |
---|
Atomic Writes for Data Integrity and Consistency in Shared Storage Devices for Clusters;Michael okun等;《Proceeding of the fifth international conference on algorithms and architectures for parallel processing》;20021023;第3-4页 * |
Also Published As
Publication number | Publication date |
---|---|
US20160034225A1 (en) | 2016-02-04 |
WO2014142908A1 (en) | 2014-09-18 |
EP2972891A4 (en) | 2017-01-25 |
US10241711B2 (en) | 2019-03-26 |
EP2972891A1 (en) | 2016-01-20 |
CN105283857A (zh) | 2016-01-27 |
EP2972891B1 (en) | 2020-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105283857B (zh) | 用于持久性存储器的多版本化非易失性存储器层级 | |
US11907200B2 (en) | Persistent memory management | |
US10834224B2 (en) | Transaction log acceleration | |
US11960729B2 (en) | Method of increasing flash endurance by improved metadata management | |
CN104881371B (zh) | 持久性内存事务处理缓存管理方法与装置 | |
JP7115899B2 (ja) | ハイブリッドメモリにおける書き込み及びフラッシュ支援のためのメモリモジュール及びその動作方法 | |
US9183132B2 (en) | Storage device, computer system, and storage system | |
US7085955B2 (en) | Checkpointing with a write back controller | |
US7472230B2 (en) | Preemptive write back controller | |
US20140195564A1 (en) | Persistent data structures | |
US10346096B1 (en) | Shingled magnetic recording trim operation | |
WO2015020811A1 (en) | Persistent data structures | |
KR20170021287A (ko) | 비휘발성 데이터 저장장치 내부에서 원자적으로 복수의 기록 트랜잭션을 수행하는 장치 제어기 및 방법 | |
KR20040007395A (ko) | 플래시 메모리를 위한 포스트방식의 라이트-스루 캐시 | |
US9940071B2 (en) | Memory system that carries out an atomic write operation | |
US20090248984A1 (en) | Method and device for performing copy-on-write in a processor | |
CN107329696A (zh) | 一种保证数据崩溃一致性的方法及系统 | |
CN110515705A (zh) | 可扩展的持久性事务内存及其工作方法 | |
KR101220607B1 (ko) | 비휘발성 램을 이용하여 연산 처리의 원자성을 보장하는 컴퓨팅 시스템 및 방법 | |
KR102220468B1 (ko) | 트랜잭션 지원을 가진 선점형 캐시 후기록 | |
JP2006099802A (ja) | 記憶制御装置およびキャッシュメモリの制御方法 | |
WO2015186165A1 (ja) | ストレージシステム及びストレージシステムの制御方法 | |
US20230044942A1 (en) | Conditional update, delayed lookup | |
US11704246B2 (en) | Memory system for maintaining data consistency and operation method thereof | |
CN113778330A (zh) | 一种基于Flash存储器的事务处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20170122 Address after: American Texas Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Applicant before: Hewlett-Packard Development Company, L.P. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |