CN111638996B - 一种保证非易失内存中故障原子性的方法及系统 - Google Patents

一种保证非易失内存中故障原子性的方法及系统 Download PDF

Info

Publication number
CN111638996B
CN111638996B CN202010407572.7A CN202010407572A CN111638996B CN 111638996 B CN111638996 B CN 111638996B CN 202010407572 A CN202010407572 A CN 202010407572A CN 111638996 B CN111638996 B CN 111638996B
Authority
CN
China
Prior art keywords
log
transaction
data
nonvolatile memory
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
Application number
CN202010407572.7A
Other languages
English (en)
Other versions
CN111638996A (zh
Inventor
童薇
冯丹
刘景宁
魏学亮
朱蔚霖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN202010407572.7A priority Critical patent/CN111638996B/zh
Priority to PCT/CN2020/096295 priority patent/WO2021227188A1/zh
Priority to US17/763,926 priority patent/US11989090B2/en
Publication of CN111638996A publication Critical patent/CN111638996A/zh
Application granted granted Critical
Publication of CN111638996B publication Critical patent/CN111638996B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种保证非易失内存中故障原子性的方法及系统,属于计算机存储领域,包括:按照如下步骤执行由一个或多个需要保证故障原子性的操作封装而成的事务:依次执行当前事务内的各项操作,对于当前事务内的每个写操作,判断其对应的数据的最旧值是否被保存到非易失内存的日志中,若是,则为其创建UndoRedo日志项,否则,为其创建Redo日志项;根据日志项的类型采用相应的日志管理策略;执行完所有操作后,提交当前事务;当前事务执行完成;其中,UndoRedo日志项记录的信息包括:事务编号、写操作地址、对应数据的最旧值和新值;Redo日志项记录的信息包括:事务编号、写操作地址以及对应数据的新值。本发明能够减少NVMM中保证故障原子性造成的开销。

Description

一种保证非易失内存中故障原子性的方法及系统
技术领域
本发明属于计算机存储领域,更具体地,涉及一种保证非易失内存中故障原子性的方法及系统。
背景技术
在过去的几十年中,动态随机访问存储器(DynamicRandom Access Memory,DRAM)作为内存被广泛应用于计算机系统中。然而,近年来由于刷新功耗、工艺尺寸等限制,DRAM的发展遇到瓶颈,逐渐无法满足现在计算机系统对于内存的需求。而新型非易失存储器(Non-VolatileMemory,NVM)的出现为内存的发展提供了新的可能。典型的NVM包括相变存储器(Phase Change Memory,PCM)、自旋转移矩随机存储器(Spin Transfer TorqueRandom Access Memory,STT-RAM)、阻变式存储器(Resistive Random Access Memory,RRAM)等。这些NVM由于具备类似DRAM的性能以及低功耗、可字节寻址等特性,被视为最具潜力的DRAM替代品之一。此外,NVM还具备非易失性,即掉电时不丢失数据。因此,NVM作为内存时也被称为非易失内存(Non-VolatileMainMemory,NVMM)。NVMM让应用能够通过高速的内存接口访问持久性数据,避免了通过低速的I/O操作从磁盘、固态硬盘等外存中读取数据。
NVMM在为内存系统的发展带来新的可能性的同时,也为内存系统的设计带来了新的挑战。最重要的挑战之一是,为NVMM写操作提供高效的故障原子性支持。这是因为意外的系统故障(例如掉电、崩溃等)会中断当前正在执行的写操作,导致NVMM中存储的数据处于不完整更新的状态,从而造成数据损坏或丢失。而故障原子性保证了在系统故障后,能够将NVMM中的数据恢复到未被更新的或者被完整更新的状态。
为了提供故障原子性支持,现有的方法将一组写操作封装为一个事务,并通过日志保证事务的故障原子性。日志的基本思想是,先将写操作对应的数据保存到在NVMM中申请的日志区,然后执行写操作对NVMM中的数据进行更新。当系统故障发生后,可以利用日志将NVMM中的数据恢复到未被更新的或者被完整更新的状态。根据日志操作(例如日志的创建、保存等)的执行方式,提供故障原子性支持的方法可以划分为:基于软件日志的方法、基于硬件日志的方法。前者通过软件的方式在事务执行的关键路径上执行日志操作,故会造成较大的性能开销。而后者通过硬件的方式执行日志操作,使得日志操作能够与事务并行执行,从而减少了日志操作带来的性能开销。然而,现有的基于硬件日志的方法未能最小化日志开销,会在NVMM中保存冗余的日志数据,还会在写操作间引入非必要的顺序约束。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种保证非易失内存中故障原子性的方法及系统,其目的在于,减少NVMM中保证故障原子性造成的开销。
为实现上述目的,按照本发明的一个方面,提供了一种保证非易失内存中故障原子性的方法,包括:
按照如下步骤执行由一个或多个需要保证故障原子性的操作封装而成的事务:
(S1)依次执行当前事务内的各项操作,对于当前事务内的每个写操作,若其对应的数据的最旧值未被保存到非易失内存的日志中,则为其创建UndoRedo日志项,若其对应的数据的最旧值已被保存到非易失内存的日志中,则为其创建Redo日志项;
创建日志项的同时,根据日志项的类型采用相应的日志管理策略对所创建的日志项进行管理;
(S2)执行完当前事务内的所有操作后,提交当前事务;
(S3)当前事务执行完成;
其中,UndoRedo日志项记录的信息包括:事务编号、写操作地址、对应数据的最旧值和新值;Redo日志项记录的信息包括:事务编号、写操作地址以及对应数据的新值;数据的最旧值为当前事务刚开始执行时该数据的值,数据的新值为对应的写操作执行完成后该数据的值。
为了保证故障原子性,在事务恢复时,需要使用数据的最旧值或新值;本发明在执行事务内的写操作时,根据数据的状态,创建相应类型的日志项,具体来说,对于最旧值未被保存到非易失内存的日志中的数据,则为其创建UndoRedo日志项,该日志项中记录有事务编号、写操作地址、对应数据的最旧值和新值,对于最旧值已经被保存到非易失内存的日志中的数据,则为其创建Redo日志项,该日志项中仅记录有事务编号、写操作地址以及对应数据的新值,由此能够在保证故障原子性的同时,避免记录冗余的日志数据,从而能够在写回日志项时减少对NVMM的写操作,进而减少NVMM中保证故障原子性造成的性能和能耗开销。
进一步地,非易失内存的处理器中预先创建有积极日志缓存和懒惰日志缓存;
日志管理策略包括:积极写回策略和懒惰写回策略;步骤(S1)中,采用积极写回策略管理UndoRedo日志项,并且采用懒惰写回策略管理Redo日志项;
其中,采用积极写回策略管理UndoRedo日志项,包括:UndoRedo日志项创建后,先将其缓存在积极日志缓存内,经过预设的时间间隔后再将其写回非易失内存;时间间隔小于数据从处理器的一级缓存写回非易失内存所需的时间;
采用懒惰写回策略管理Redo日志项,包括:Redo日志项创建后,先将其缓存在处理器的一级缓存中,在该Redo日志项所在缓存行被驱逐或被其他事务更新时,将该Redo日志项缓存在懒惰日志缓存中;在懒惰日志缓存满后,将懒惰日志缓存中的Redo日志项写回非易失内存;懒惰写回策略在管理Redo日志项的过程中,会合并事务编号和写操作地址相同的日志项。
本发明采用积极写回策略管理UndoRedo日志项,能够将数据的最旧值被及时持久化到NVMM中,从而保证在系统故障后总是能够利用UndoRedo日志项中数据的最旧值,将NVMM中的数据恢复到被中断事务更新前的状态;本发明采用懒惰写回策略管理Redo日志项,能够尽可能合并缓存中事务编号和写操作地址相同的日志项,从而减少对NVMM的写操作,进而减少写操作带来的性能和能耗开销。总的来说,本发明采用积极写回策略管理UndoRedo日志项,并采用懒惰写回策略管理Redo日志项,能够在保证故障原子性的同时,减少对NVMM的写操作,进而减少写操作带来的性能和能耗开销。
进一步地,积极写回策略在管理UndoRedo日志项过程中,会合并事务编号和写操作地址相同的日志项。
本发明在管理UndoRedo日志项过程中也对事务编号和写地址相同的日志项进行合并,能够进一步减少对NVMM的写操作。
进一步地,将积极日志缓存或懒惰日志缓存中的日志项写回非易失内存,包括:
并行地采用多个不同的适用于非易失内存的编码策略对待写入非易失内存的日志项进行编码后,选择写开销最小的编码结果写入非易失内存。
本发明并行采用不同的编码策略进行编码,并选取写开销最小的编码策略,能够有效降低写操作带来的开销,同时避免反复尝试不同编码策略带来的延迟。
进一步地,将积极日志缓存或懒惰日志缓存中的日志项写回非易失缓存时,所采用的编码策略包括差异日志数据压缩策略;
差异日志数据压缩策略执行编码的方式包括:丢弃被日志项所对应的写操作更新前、后数据值未发生变化的部分,然后对剩余部分进行压缩,将压缩结果作为对日志项的编码结果。
本发明在将日志项写回NVMM时,所采用的编码策略之一为差异日志数据压缩策略,由此能够充分利用日志数据的特性,进一步避免冗余的日志数据被写入NVMM,从而能够减小写操作带来的性能和能耗开销。
进一步地,步骤(S2)中,提交当前事务,包括:
(S21)根据系统设置判断事务提交时是否需要保证事务的持久性,若需要保证事务的持久性,则转入步骤(S22);若不需要保证事务的持久性,则转入步骤(S23);
(S22)将积极日志缓存、懒惰日志缓存以及处理器的一级缓存中,属于当前事务的所有日志项均写回非易失内存;
(S23)创建当前事务的提交记录后,在非易失内存的日志区中写入当前事务的提交记录;
其中,提交记录中记录的信息包括:事务编号、日志项计数和ULog计数;日志项计数为在创建该提交记录时当前事务位于积极日志缓存、懒惰日志缓存、非易失内存的日志项的数量;ULog计数为创建该提交记录时一级缓存中属于当前事务且处于ULog状态的数据的条数,ULog状态表示数据被当前事务更新过,且该数据的最旧值被保存到非易失内存的日志中,而该数据的新值未被保存到非易失内存的日志中。
本发明在提交事务时,允许事务在被持久化前直接提交,避免了在事务提交的关键路径上等待事务持久化,从而进一步减少了因保证故障原子性而带来的开销。
进一步地,本发明提供的保证非易失内存中故障原子性的方法,还包括:
按照如下步骤执行事务恢复:
(R1)根据系统设置判断事务提交时是否需要保证事务的持久性,若需要保证事务的持久性,则转入步骤(R2);若不需要保证事务的持久性,则转入步骤(R4);
(R2)从头至尾扫描非易失内存的日志区,获得待恢复事务的提交记录,以及非易失内存的日志区中属于各事务的日志项,对于任意一个待恢复事务,若非易失内存的日志区中属于该事务的日志项的数量与其提交记录中的日志项计数相等,则判定该事务已提交;否则,判定该事务未提交;
(R3)将已提交的事务的日志项中数据的新值对应拷贝到写操作地址记录的位置,而将未提交的事务的UndoRedo日志项中数据的最旧值对应拷贝到写操作地址记录的位置,数据拷贝完成后转入步骤(R6);
(R4)从头至尾扫描非易失内存的日志区,获得待恢复事务的提交记录,以及非易失内存的日志区中属于各事务的日志项,对于任意一个待恢复的事务,若非易失内存的日志区中位于该事务提交记录前的日志项数量等于其提交记录中的日志项计数,且位于该事务提交记录后的Redo日志项数量等于其提交记录中的ULog计数,则判定该事务已持久化;否则,判定该事务及其后的事务均未持久化;
(R5)将已持久化的事务的日志项中数据的新值对应拷贝到写操作地址记录的位置,而将未持久化的事务的UndoRedo日志项中数据的最旧值对应拷贝到写操作地址记录的位置;
(R6)从日志区中删除所有日志项,恢复过程结束。
按照本发明的另一个方面,提供了一种非易失内存系统,包括:非易失内存和处理器;
处理器包括:一个或多个处理器核心、每个处理器核心私有的缓存、所有处理器核心共享的末级缓存、缓存控制器、日志控制器以及内存控制器;
处理器核心,用于在执行事务时,依次执行当前事务内的各项操作;
日志控制器,用于在执行事务时,对于当前事务内的每个写操作,若其对应的数据的最旧值未被保存到非易失内存的日志中,则为其创建UndoRedo日志项,若其对应的数据的最旧值已被保存到非易失内存的日志中,则为其创建Redo日志项;
日志控制器,还用于在创建日志项的同时,根据日志项的类型采用相应的日志管理策略对所创建的日志项进行管理;
内存控制器,用于向非易失内存发送读写操作;
每个处理器核心私有的缓存依据其存储结构分为一级缓存~N级缓存;处理器核心私有的缓存以及所有处理器核心共享的末级缓存用于缓存处理器执行各项操作时所需的数据;缓存控制器用于控制各缓存的读写;
其中,每个事务由一个或多个需要保证故障原子性的操作封装而成;UndoRedo日志项记录的信息包括:事务编号、写操作地址、对应数据的最旧值和新值;Redo日志项记录的信息包括:事务编号、写操作地址以及对应数据的新值;数据的最旧值为当前事务刚开始执行时该数据的值,数据的新值为对应的写操作执行完成后该数据的值;N为正整数。
进一步地,本发明提供的非易失内存系统,处理器还包括:积极日志缓存和懒惰日志缓存;
日志控制器采用积极写回策略管理UndoRedo日志项,并且采用懒惰写回策略管理Redo日志项;
其中,日志控制器采用积极写回策略管理UndoRedo日志项,包括:UndoRedo日志项创建后,先将其缓存在积极日志缓存内,经过预设的时间间隔后再由内存控制器将其写回非易失内存;时间间隔小于数据从处理器的一级缓存写回非易失内存所需的时间;
日志控制器采用懒惰写回策略管理Redo日志项,包括:Redo日志项创建后,先将其就地缓存在一级缓存中,在该Redo日志项所在缓存行被驱逐或被其他事务更新时,由内存控制器将该Redo日志项缓存在懒惰日志缓存中;在懒惰日志缓存满后,将懒惰日志缓存中的Redo日志项写回非易失内存;日志控制器采用懒惰写回策略在管理Redo日志项的过程中,会合并事务编号和写操作地址相同的日志项。
进一步地,本发明所提供的非易失内存系统中,非易失内存包括:NVMM控制器和NVMM阵列;NVMM控制器用于处理内存控制器发送的读写操作,NVMM阵列用于存放数据;
NVMM控制器包括多个编码器及相应的解码器,每个编码器用于执行一种适用于非易失内存的编码策略;
接收所述内存控制器发送的将日志项写回所述非易失内存的写操作后,所述NVMM控制器处理该请求的方式包括:并行地采用多个编码器对待写入非易失内存的日志项进行编码后,选择写开销最小的编码结果写入NVMM阵列。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明对于最旧值未被保存到非易失内存的日志中的数据,为其创建UndoRedo日志项,该日志项中记录有事务编号、写操作地址、对应数据的最旧值和新值,对于最旧值已经被保存到非易失内存的日志中的数据,则为其创建Redo日志项,该日志项中仅记录有事务编号、写操作地址以及对应数据的新值,由此能够在保证故障原子性的同时,避免记录冗余的日志数据,从而能够在写回日志项时减少对NVMM的写操作,进而减少NVMM中保证故障原子性造成的性能和能耗开销。
(2)本发明采用积极写回策略管理UndoRedo日志项,并采用懒惰写回策略管理Redo日志项,能够在保证故障原子性的同时,减少对NVMM的写操作,进而减少写操作带来的性能和能耗开销。
(3)本发明并行采用不同的编码策略进行编码,并选取写开销最小的编码策略,能够有效降低写操作带来的开销,同时避免反复尝试不同编码策略带来的延迟。
(4)本发明在将日志项写回NVMM时,所采用的编码策略之一为差异日志数据压缩策略,由此能够充分利用日志数据的特性,进一步避免冗余的日志数据被写入NVMM,从而能够减小写操作带来的性能和能耗开销。
(5)本发明在提交事务时,允许事务在被持久化前直接提交,避免了在事务提交的关键路径上等待事务持久化,从而进一步减少了因保证故障原子性而带来的开销。
附图说明
图1为本发明实施例提供的保证非易失内存中故障原子性的方法流程图;
图2为本发明实施例提供的事务提交流程图;
图3为本发明实施例提供的系统故障后的事务恢复流程图;
图4为本发明实施例提供的保证非易失内存中故障原子性的处理器结构示意图;
图5为本发明实施例提供的NVMM控制器结构示意图;
图6为本发明实施例提供的NVMM控制器中写操作处理流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
在本发明中,本发明及附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
为了减少NVMM中保证故障原子性造成的开销,本发明提供了一种保证非易失内存中故障原子性的方法及系统,其整体思路在于:充分利用日志数据的特性,为不同状态的数据创建不同类型的日志项,以尽量减少日志数据中的冗余数据,并相应采用不同的日志管理策略对所创建的日志项进行管理,同时在将日志项写回NVMM时,在编码的过程中,丢弃数据更新前后数据值中未发生变化的部分,以进一步减少对NVMM的写操作。
在执行事务的过程中,某一个写操作所对应的数据可能存在4种状态,分别以Clean、Dirty、URLog和ULog表示;其中,Clean状态表示数据未被当前事务更新过;Dirty态表示数据被当前事务更新过,且最旧值和新值均未被保存到NVMM的日志中;URLog状态表示数据被当前事务更新过,且最旧值和新值均被保存到NVMM的日志中;ULog状态表示数据被当前事务更新过,且最旧值被保存到NVMM的日志中,而新值尚未被保存到NVMM的日志中。数据的最旧值为当前事务刚开始执行时该数据的值,数据的新值为对应的写操作执行完成后该数据的值。
在本发明的一个实施例中,提供了一种保证非易失内存中故障原子性的方法,包括:
如图1所示,按照如下步骤执行由一个或多个需要保证故障原子性的操作封装而成的事务:
(S1)依次执行当前事务内的各项操作,对于当前事务内的每个写操作,若其对应的数据的最旧值未被保存到非易失内存的日志中,则为其创建UndoRedo日志项,若其对应的数据的最旧值已被保存到非易失内存的日志中,则为其创建Redo日志项;
创建日志项的同时,根据日志项的类型采用相应的日志管理策略对所创建的日志项进行管理;
基于以上关于数据状态的分析可知,本实施例为Clean和Dirty状态的数据创建UndoRedo日志项,为URLog和ULog状态的数据创建Redo日志项;
其中,UndoRedo日志项记录的信息包括:事务编号、写操作地址、对应数据的最旧值和新值;Redo日志项记录的信息包括:事务编号、写操作地址以及对应数据的新值;对于数据最旧值已经被保存到NVMM的写操作,本实施例为其创建的Redo日志项中没有记录冗余的数据最旧值,因此能够在写回日志项时减少对NVMM的写操作;
(S2)执行完当前事务内的所有操作后,提交当前事务;
(S3)当前事务执行完成。
为了进一步减少对NVMM的写操作,本实施例中,非易失内存的处理器中预先创建有积极日志缓存和懒惰日志缓存;
日志管理策略包括:积极写回策略和懒惰写回策略;步骤(S1)中,采用积极写回策略管理UndoRedo日志项,并且采用懒惰写回策略管理Redo日志项;
其中,采用积极写回策略管理UndoRedo日志项,包括:UndoRedo日志项创建后,先将其缓存在积极日志缓存内,经过预设的时间间隔后再将其写回非易失内存;时间间隔小于数据从处理器的一级缓存写回非易失内存所需的时间,从而保证日志项先于数据持久化;采用积极写回策略管理UndoRedo日志项,能够将数据的最旧值被及时持久化到NVMM中,从而保证在系统故障后总是能够利用UndoRedo日志项中数据的最旧值,将NVMM中的数据恢复到被中断事务更新前的状态;这里的中断事务指执行过程中因系统故障而被迫停止执行的事务;
采用懒惰写回策略管理Redo日志项,包括:Redo日志项创建后,先将其缓存在处理器的一级缓存中,在该Redo日志项所在缓存行被驱逐或被其他事务更新时,将该Redo日志项缓存在懒惰日志缓存中;在懒惰日志缓存满后,将懒惰日志缓存中的Redo日志项写回非易失内存;懒惰写回策略在管理Redo日志项的过程中,会合并事务编号和写操作地址相同的日志项;采用懒惰写回策略管理Redo日志项,能够尽可能合并缓存中事务编号和写操作地址相同的日志项,从而减少对NVMM的写操作,进而减少写操作带来的性能和能耗开销;
此外,积极写回策略管理UndoRedo日志项的过程中,同样可以合并事务编号和写操作地址相同的日志项,以减少对NVMM的写操作;
在本实施例中,采用先进先出(First Input First Output,FIFO)结构实现积极日志缓存和懒惰日志缓存,以保证日志项按正确的顺序写回NVMM。
本实施例中,将积极日志缓存或懒惰日志缓存中的日志项写回非易失内存,包括:
并行地采用多个不同的适用于非易失内存的编码策略对待写入非易失内存的日志项进行编码后,选择写开销最小的编码结果写入非易失内存;
本实施例可采用任意适用于非易失内存的编码策略,例如频繁模式压缩策略(FrequentPatternCompression,FPC)等;为了进一步减少对NVMM的写操作,本实施例中,还提出了一种新的编码策略,称之为差异日志数据压缩策略,差异日志数据压缩策略执行编码的方式包括:丢弃被日志项所对应的写操作更新前、后数据值未发生变化的部分,然后对剩余部分进行压缩,将压缩结果作为对日志项的编码结果;可以根据日志数据的特性预定义一些数据模式,并对数据模式制定相应的压缩结果,压缩时,根据剩余部分所匹配的数据模式确定相应的压缩结果,一些具体的数据模式和相应的压缩结果如表1所示:
表1中,压缩示例中的符号“→”表示压缩,“→”符号左边为匹配对应的数据模式的数据,“→”符号右边为对应的压缩结果;以“0x00000000→0x0”为例,表示匹配数据模式全0的数据0x00000000经压缩后,对应的压缩结果为0x0,以此类推;
表1
编号 数据模式 压缩示例
0 全0 0x00000000→0x0
1 每字节中2位数据的符号扩展 0x01F20101→0x65
2 每字节中4位数据的符号扩展 0x03F905FE→0x395E
3 1字节数据的符号扩展 0xFFFFFF80→0x80
4 2字节数据的符号扩展 0x00007FFF→0x7FFF
5 4字节数据的符号扩展 0xFF80000000→0x80000000
6 每字节低4位为0 0x10203040→0x1234
7 从最低有效位开始1字节为0 0x1234567800→0x12345678
应当说明的是,此处的压缩方式,以及表1所示的数据模式及对应的压缩结果,仅为示例性描述,不应理解为对本发明的唯一限定;
本实施例并行采用不同的编码策略进行编码,并选取写开销最小的编码策略,能够有效降低写操作带来的开销,同时避免反复尝试不同编码策略带来的延迟;应当说明的是,此处并行采用多中编码策略进行编码的方式,仅为本发明的一种优选实施例,不应理解为对本发明的唯一限定;在其他实施例中,也可仅使用任意一种编码策略进行编码。
本实施例中,步骤(S2)中,提交当前事务,如图2所示,包括:
(S21)根据系统设置判断事务提交时是否需要保证事务的持久性,若需要保证事务的持久性,则转入步骤(S22);若不需要保证事务的持久性,则转入步骤(S23);
(S22)将积极日志缓存、懒惰日志缓存以及处理器的一级缓存中,属于当前事务的所有日志项均写回非易失内存;
(S23)创建当前事务的提交记录后,在非易失内存的日志区中写入当前事务的提交记录;
其中,提交记录中记录的信息包括:事务编号、日志项计数和ULog计数;日志项计数为在创建该提交记录时当前事务位于积极日志缓存、懒惰日志缓存、非易失内存的日志项的数量;ULog计数为创建该提交记录时一级缓存中属于当前事务且处于ULog状态的数据的条数,ULog状态表示数据被当前事务更新过,且该数据的最旧值被保存到非易失内存的日志中,而该数据的新值未被保存到非易失内存的日志中;本实施例在提交事务时,允许事务在被持久化前直接提交,避免了在事务提交的关键路径上等待事务持久化,从而进一步减少了因保证故障原子性而带来的开销。
本实施例提供的保证非易失内存中故障原子性的方法,还包括:
如图3所示,按照如下步骤执行事务恢复:
(R1)根据系统设置判断事务提交时是否需要保证事务的持久性,若需要保证事务的持久性,则转入步骤(R2);若不需要保证事务的持久性,则转入步骤(R4);
(R2)从头至尾扫描非易失内存的日志区,获得待恢复事务的提交记录,以及非易失内存的日志区中属于各事务的日志项,对于任意一个待恢复事务,若非易失内存的日志区中属于该事务的日志项的数量与其提交记录中的日志项计数相等,则判定该事务已提交;否则,判定该事务未提交;
(R3)将已提交的事务的日志项中数据的新值对应拷贝到写操作地址记录的位置,而将未提交的事务的UndoRedo日志项中数据的最旧值对应拷贝到写操作地址记录的位置;由此能够将已提交的事务恢复到事务被完整更新的状态,实现这些事务的重现,同时将未提交的事务恢复到事务未被更新的,实现这些事务的回滚;
数据拷贝完成后转入步骤(R6);
(R4)从头至尾扫描非易失内存的日志区,获得待恢复事务的提交记录,以及非易失内存的日志区中属于各事务的日志项,对于任意一个待恢复的事务,若非易失内存的日志区中位于该事务提交记录前的日志项数量等于其提交记录中的日志项计数,且位于该事务提交记录后的Redo日志项数量等于其提交记录中的ULog计数,则判定该事务已持久化;否则,判定该事务及其后的事务均未持久化;
(R5)将已持久化的事务的日志项中数据的新值对应拷贝到写操作地址记录的位置,而将未持久化的事务的UndoRedo日志项中数据的最旧值对应拷贝到写操作地址记录的位置;由此能够将已持久化的事务恢复到事务被完整更新的状态,实现这些事务的重现,同时将未持久化的事务恢复到事务未被更新的,实现这些事务的回滚;
(R6)从日志区中删除所有日志项,恢复过程结束。
在本发明的另一个实施例中,提供了一种非易失内存系统,如图4所示,包括:非易失内存和处理器;
处理器包括:一个或多个处理器核心、每个处理器核心私有的缓存、所有处理器核心共享的末级缓存、缓存控制器、日志控制器以及内存控制器;
处理器核心,用于在执行事务时,依次执行当前事务内的各项操作;
日志控制器,用于在执行事务时,对于当前事务内的每个写操作,若其对应的数据的最旧值未被保存到非易失内存的日志中,则为其创建UndoRedo日志项,若其对应的数据的最旧值已被保存到非易失内存的日志中,则为其创建Redo日志项;
日志控制器,还用于在创建日志项的同时,根据日志项的类型采用相应的日志管理策略对所创建的日志项进行管理;
内存控制器,用于向非易失内存发送读写操作;
每个处理器核心私有的缓存依据其存储结构分为一级缓存~N级缓存;处理器核心私有的缓存以及所有处理器核心共享的末级缓存用于缓存处理器执行各项操作时所需的数据;缓存控制器用于控制各缓存的读写;
其中,每个事务由一个或多个需要保证故障原子性的操作封装而成;UndoRedo日志项记录的信息包括:事务编号、写操作地址、对应数据的最旧值和新值;Redo日志项记录的信息包括:事务编号、写操作地址以及对应数据的新值;N为正整数,如图4所示,在本实施例中,N=2,相应地,每个处理器核心私有的缓存包括一级缓存和二级缓存;
在本实施例中,日志控制器以8字节为粒度为事务内每个修改Clean和Dirty状态数据的写操作创建UndoRedo日志项,而为每个修改URLog和ULog状态数据的写操作创建Redo日志项;UndoRedo日志项具体包括:2位类型标记、16位事务编号、8位线程编号、48位写操作地址、8位修改标记、8字节(写操作更新前)数据的旧值、8字节(写操作更新后)数据的新值;Redo日志项具体包括:2位类型标记、16位事务编号、8位线程编号、48位写操作地址、8位修改标记、8字节数据的新值;类型标记用于标记日志项的类型;修改标记用于标记日志项的数据中哪些字节的值在写操作修改后发生变化;
如图2所示,本实施例提供的非易失内存系统中,处理器还包括:积极日志缓存和懒惰日志缓存;
日志控制器采用积极写回策略管理UndoRedo日志项,并且采用懒惰写回策略管理Redo日志项;
其中,日志控制器采用积极写回策略管理UndoRedo日志项,包括:UndoRedo日志项创建后,先将其缓存在积极日志缓存内,经过预设的时间间隔后再由内存控制器将其写回非易失内存;时间间隔小于数据从处理器的一级缓存写回非易失内存所需的时间;
日志控制器采用懒惰写回策略管理Redo日志项,包括:Redo日志项创建后,先将其就地缓存在一级缓存中,在该Redo日志项所在缓存行被驱逐或被其他事务更新时,由内存控制器将该Redo日志项缓存在懒惰日志缓存中;在懒惰日志缓存满后,将懒惰日志缓存中的Redo日志项写回非易失内存;日志控制器采用懒惰写回策略在管理Redo日志项的过程中,会合并事务编号和写操作地址相同的日志项;本实施例中,在每个一级缓存的缓存行中添加16位事务编号、8位线程编号、16位状态标记、64位修改标记;,状态标记用于标记缓存行中每8字节数据处于何种状态;修改标记用于标记数据中哪些字节的值在写操作后发生变化;
同样地,日志控制器采用积极写回策略管理UndoRedo日志项的过程中,可以合并事务编号和写操作地址相同的日志项;
在本实施例中,采用先进先出(First Input First Output,FIFO)结构实现积极日志缓存和懒惰日志缓存,以保证日志项按正确的顺序写回NVMM;
如图5所示,本实施例所提供的保非易失内存系统中,非易失内存包括:NVMM控制器和NVMM阵列;NVMM控制器用于处理内存控制器发送的读写操作,NVMM阵列用于存放数据;
NVMM控制器包括多个编码器及相应的解码器,每个编码器用于执行一种适用于非易失内存的编码策略;在本实施例中,编码器具体包括FPC编码器和DLDC编码器,FPC编码器用于执行现有的频繁模式压缩策略(FrequentPatternCompression,FPC),DLDC编码器用于执行差异日志数据压缩策略(DifferentialLogDataCompression,DLDC),差异日志数据压缩策略的具体原理,可参考上述方法实施例中的描述;相应地,解码器具体包括FPC解码器和DLDC解码器,FPC解码器用于对被频繁模式压缩策略压缩后的数据进行解码;DLDC解码器用于对被差异日志数据压缩策略压缩后的数据进行解码;
接收内存控制器发送的将日志项写回非易失内存的写操作后,NVMM控制器处理该请求的方式包括:并行地采用多个编码器对待写入非易失内存的日志项进行编码后,选择写开销最小的编码结果写入非易失内存;
为了实现上述编码过程,如图5所示,NVMM控制器还包括常规的比较器、IDM编码器,比较器用于比较FPC编码器和DLDC编码器压缩后数据的大小;IDM编码器用于根据压缩率选择合适的非完全数据映射策略(Incomplete Data Mapping,IDM)将数据映射为低写开销数据;相应地,NVMM控制器还包括常规的IDM解码器,IDM解码器用于对被非完全数据映射策略编码后的数据进行解码;
基于图5所示的NVMM控制器结构,NVMM控制器处理内存控制器发送的写请求的过程,如图6所示;对于将日志项写回非易失内存的写操作,采用上述并行地采用多个编码器对待写入非易失内存的日志项进行编码后,选择写开销最小的编码结果写入非易失内存的方法处理;对于将数据写回非易失内存的写操作,则采用常规的编码及写入方法处理。
如图5所示,NVMM控制器中还包括常规的写缓存、读缓存、写控制器和读控制器;写缓存和读缓存用于缓存写入和读出NVMM的数据,而写控制器和读控制器用于控制NVMM阵列的读写操作。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种保证非易失内存中故障原子性的方法,其特征在于,包括:
按照如下步骤执行由一个或多个需要保证故障原子性的操作封装而成的事务:
(S1)依次执行当前事务内的各项操作,对于当前事务内的每个写操作,若其对应的数据的最旧值未被保存到所述非易失内存的日志中,则为其创建UndoRedo日志项,若其对应的数据的最旧值已被保存到所述非易失内存的日志中,则为其创建Redo日志项;
创建日志项的同时,根据日志项的类型采用相应的日志管理策略对所创建的日志项进行管理;
(S2)执行完当前事务内的所有操作后,提交当前事务;
(S3)当前事务执行完成;
其中,所述UndoRedo日志项记录的信息包括:事务编号、写操作地址、对应数据的最旧值和新值;所述Redo日志项记录的信息包括:事务编号、写操作地址以及对应数据的新值;数据的最旧值为当前事务刚开始执行时该数据的值,数据的新值为对应的写操作执行完成后该数据的值;
所述非易失内存的处理器中预先创建有积极日志缓存和懒惰日志缓存;
所述日志管理策略包括:积极写回策略和懒惰写回策略;所述步骤(S1)中,采用积极写回策略管理UndoRedo日志项,并且采用懒惰写回策略管理Redo日志项;
其中,采用积极写回策略管理UndoRedo日志项,包括:UndoRedo日志项创建后,先将其缓存在所述积极日志缓存内,经过预设的时间间隔后再将其写回所述非易失内存;所述时间间隔小于数据从所述处理器的一级缓存写回所述非易失内存所需的时间;
采用懒惰写回策略管理Redo日志项,包括:Redo日志项创建后,先将其缓存在所述处理器的一级缓存中,在该Redo日志项所在缓存行被驱逐或被其他事务更新时,将该Redo日志项缓存在所述懒惰日志缓存中;在所述懒惰日志缓存满后,将所述懒惰日志缓存中的Redo日志项写回所述非易失内存;所述懒惰写回策略在管理Redo日志项的过程中,会合并事务编号和写操作地址相同的日志项。
2.如权利要求1所述的保证非易失内存中故障原子性的方法,其特征在于,所述积极写回策略在管理UndoRedo日志项过程中,会合并事务编号和写操作地址相同的日志项。
3.如权利要求1所述的保证非易失内存中故障原子性的方法,其特征在于,将所述积极日志缓存或所述懒惰日志缓存中的日志项写回所述非易失内存,包括:
并行地采用多个不同的适用于非易失内存的编码策略对待写入所述非易失内存的日志项进行编码后,选择写开销最小的编码结果写入所述非易失内存。
4.如权利要求1-3任一项所述的保证非易失内存中故障原子性的方法,其特征在于,将所述积极日志缓存或所述懒惰日志缓存中的日志项写回所述非易失内存时,所采用的编码策略包括差异日志数据压缩策略;
所述差异日志数据压缩策略执行编码的方式包括:丢弃被日志项所对应的写操作更新前、后数据值未发生变化的部分,然后对剩余部分进行压缩,将压缩结果作为对日志项的编码结果。
5.如权利要求1所述的保证非易失内存的故障原子性的方法,其特征在于,所述步骤(S2)中,提交当前事务,包括:
(S21)根据系统设置判断事务提交时是否需要保证事务的持久性,若需要保证事务的持久性,则转入步骤(S22);若不需要保证事务的持久性,则转入步骤(S23);
(S22)将所述积极日志缓存、所述懒惰日志缓存以及所述处理器的一级缓存中,属于当前事务的所有日志项均写回所述非易失内存;
(S23)创建当前事务的提交记录后,在所述非易失内存的日志区中写入当前事务的提交记录;
其中,所述提交记录中记录的信息包括:事务编号、日志项计数和ULog计数;日志项计数为在创建该提交记录时当前事务位于积极日志缓存、懒惰日志缓存、非易失内存的日志项的数量;ULog计数为创建该提交记录时所述一级缓存中属于当前事务且处于ULog状态的数据的条数,ULog状态表示数据被当前事务更新过,且该数据的最旧值被保存到所述非易失内存的日志中,而该数据的新值未被保存到所述非易失内存的日志中。
6.如权利要求5所述的保证非易失内存中故障原子性的方法,其特征在于,还包括:
按照如下步骤执行事务恢复:
(R1)根据系统设置判断事务提交时是否需要保证事务的持久性,若需要保证事务的持久性,则转入步骤(R2);若不需要保证事务的持久性,则转入步骤(R4);
(R2)从头至尾扫描所述非易失内存的日志区,获得待恢复事务的提交记录,以及所述非易失内存的日志区中属于各事务的日志项,对于任意一个待恢复事务,若所述非易失内存的日志区中属于该事务的日志项的数量与其提交记录中的日志项计数相等,则判定该事务已提交;否则,判定该事务未提交;
(R3)将已提交的事务的日志项中数据的新值对应拷贝到写操作地址记录的位置,而将未提交的事务的UndoRedo日志项中数据的最旧值对应拷贝到写操作地址记录的位置,数据拷贝完成后转入步骤(R6);
(R4)从头至尾扫描所述非易失内存的日志区,获得待恢复事务的提交记录,以及所述非易失内存的日志区中属于各事务的日志项,对于任意一个待恢复的事务,若所述非易失内存的日志区中位于该事务提交记录前的日志项数量等于其提交记录中的日志项计数,且位于该事务提交记录后的Redo日志项数量等于其提交记录中的ULog计数,则判定该事务已持久化;否则,判定该事务及其后的事务均未持久化;
(R5)将已持久化的事务的日志项中数据的新值对应拷贝到写操作地址记录的位置,而将未持久化的事务的UndoRedo日志项中数据的最旧值对应拷贝到写操作地址记录的位置;
(R6)从日志区中删除所有日志项,恢复过程结束。
7.一种非易失内存系统,其特征在于,包括:非易失内存和处理器;
所述处理器包括:一个或多个处理器核心、每个处理器核心私有的缓存、所有处理器核心共享的末级缓存、缓存控制器、日志控制器以及内存控制器;
所述处理器核心,用于在执行事务时,依次执行当前事务内的各项操作;
所述日志控制器,用于在执行事务时,对于当前事务内的每个写操作,若其对应的数据的最旧值未被保存到所述非易失内存的日志中,则为其创建UndoRedo日志项,若其对应的数据的最旧值已被保存到所述非易失内存的日志中,则为其创建Redo日志项;
所述日志控制器,还用于在创建日志项的同时,根据日志项的类型采用相应的日志管理策略对所创建的日志项进行管理;
所述内存控制器,用于向所述非易失内存发送读写操作;
每个处理器核心私有的缓存依据其存储结构分为一级缓存~N级缓存;处理器核心私有的缓存以及所有处理器核心共享的末级缓存用于缓存处理器执行各项操作时所需的数据;所述缓存控制器用于控制各缓存的读写;
其中,每个事务由一个或多个需要保证故障原子性的操作封装而成;所述UndoRedo日志项记录的信息包括:事务编号、写操作地址、对应数据的最旧值和新值;所述Redo日志项记录的信息包括:事务编号、写操作地址以及对应数据的新值;数据的最旧值为当前事务刚开始执行时该数据的值,数据的新值为对应的写操作执行完成后该数据的值;N为正整数;
所述处理器还包括:积极日志缓存和懒惰日志缓存;
所述日志控制器采用积极写回策略管理UndoRedo日志项,并且采用懒惰写回策略管理Redo日志项;
其中,所述日志控制器采用积极写回策略管理UndoRedo日志项,包括:UndoRedo日志项创建后,先将其缓存在所述积极日志缓存内,经过预设的时间间隔后再由所述内存控制器将其写回所述非易失内存;所述时间间隔小于数据从所述处理器的一级缓存写回所述非易失内存所需的时间;
所述日志控制器采用懒惰写回策略管理Redo日志项,包括:Redo日志项创建后,先将其就地缓存在一级缓存中,在该Redo日志项所在缓存行被驱逐或被其他事务更新时,由所述内存控制器将该Redo日志项缓存在所述懒惰日志缓存中;在所述懒惰日志缓存满后,将所述懒惰日志缓存中的Redo日志项写回所述非易失内存;所述日志控制器采用所述懒惰写回策略在管理Redo日志项的过程中,会合并事务编号和写操作地址相同的日志项。
8.如权利要求7所述的非易失内存系统,其特征在于,所述非易失内存包括:NVMM控制器和NVMM阵列;所述NVMM控制器用于处理所述内存控制器发送的读写操作,所述NVMM阵列用于存放数据;
所述NVMM控制器包括多个编码器及相应的解码器,每个编码器用于执行一种适用于非易失内存的编码策略;
接收所述内存控制器发送的将日志项写回所述非易失内存的写操作后,所述NVMM控制器处理请求的方式包括:并行地采用所述多个编码器对待写入所述非易失内存的日志项进行编码后,选择写开销最小的编码结果写入所述NVMM阵列。
CN202010407572.7A 2020-05-14 2020-05-14 一种保证非易失内存中故障原子性的方法及系统 Active CN111638996B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010407572.7A CN111638996B (zh) 2020-05-14 2020-05-14 一种保证非易失内存中故障原子性的方法及系统
PCT/CN2020/096295 WO2021227188A1 (zh) 2020-05-14 2020-06-16 一种保证非易失内存中故障原子性的方法及系统
US17/763,926 US11989090B2 (en) 2020-05-14 2020-06-16 Method and system for ensuring failure atomicity in non-volatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010407572.7A CN111638996B (zh) 2020-05-14 2020-05-14 一种保证非易失内存中故障原子性的方法及系统

Publications (2)

Publication Number Publication Date
CN111638996A CN111638996A (zh) 2020-09-08
CN111638996B true CN111638996B (zh) 2023-04-11

Family

ID=72330291

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010407572.7A Active CN111638996B (zh) 2020-05-14 2020-05-14 一种保证非易失内存中故障原子性的方法及系统

Country Status (3)

Country Link
US (1) US11989090B2 (zh)
CN (1) CN111638996B (zh)
WO (1) WO2021227188A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115794497B (zh) * 2023-02-08 2023-05-05 成都佰维存储科技有限公司 Ssd掉电解决方法、装置、可读存储介质及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104778126A (zh) * 2015-04-20 2015-07-15 清华大学 非易失性主存中事务数据存储优化方法及系统
CN104881371A (zh) * 2015-05-29 2015-09-02 清华大学 持久性内存事务处理缓存管理方法与装置
CN107728937A (zh) * 2017-09-15 2018-02-23 上海交通大学 一种使用非易失性内存介质的键值对持久存储方法及系统
CN108897642A (zh) * 2018-06-27 2018-11-27 清华大学 持久性事务内存系统中日志机制的优化方法及装置
CN109491837A (zh) * 2018-11-01 2019-03-19 郑州云海信息技术有限公司 一种非易失性内存储器的日志容错处理方法与装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103488549B (zh) 2013-09-29 2017-01-18 北大医疗信息技术有限公司 多镜像数据的回滚处理系统和回滚处理方法
US20150227319A1 (en) * 2014-02-12 2015-08-13 Lenovo (Singapore) Pte. Ltd. Non-volatile storage device image creation
US9336097B2 (en) 2014-02-27 2016-05-10 International Business Machines Corporation Salvaging hardware transactions
US9864774B2 (en) * 2015-06-23 2018-01-09 International Business Machines Corporation Granular buffering of metadata changes for journaling file systems
US10268502B2 (en) * 2017-06-29 2019-04-23 Intel Corporation Methods and apparatus to perform atomic transactions in nonvolatile memory under hardware transactional memory
US10430186B2 (en) * 2017-10-27 2019-10-01 Vmware, Inc. Speeding up transactions in non-volatile memory using hardware transactional memory
CN109460318B (zh) 2018-10-26 2021-01-01 珠海市时杰信息科技有限公司 一种可回滚档案采集数据的导入方法、计算机装置及计算机可读存储介质
CN110515705B (zh) 2019-08-07 2022-03-11 上海交通大学 可扩展的持久性事务内存及其工作方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104778126A (zh) * 2015-04-20 2015-07-15 清华大学 非易失性主存中事务数据存储优化方法及系统
CN104881371A (zh) * 2015-05-29 2015-09-02 清华大学 持久性内存事务处理缓存管理方法与装置
CN107728937A (zh) * 2017-09-15 2018-02-23 上海交通大学 一种使用非易失性内存介质的键值对持久存储方法及系统
CN108897642A (zh) * 2018-06-27 2018-11-27 清华大学 持久性事务内存系统中日志机制的优化方法及装置
CN109491837A (zh) * 2018-11-01 2019-03-19 郑州云海信息技术有限公司 一种非易失性内存储器的日志容错处理方法与装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
刘宁倩.NVM文件系统混合日志机制研究.中国优秀硕士学位论文全文数据库信息科技辑.2019,全文. *
徐远超 ; 闫俊峰 ; 万虎 ; 孙凤芸 ; 张伟功 ; 李涛 ; .新型非易失存储的安全与隐私问题研究综述.计算机研究与发展.2016,(09),全文. *
李勇,王冉,冯丹.一种适用于异构存储系统的缓存管理算法.计算机研究与发展.2016,全文. *
石伟 ; 汪东升 ; .基于非易失存储器的事务存储系统综述.计算机研究与发展.2016,(02),全文. *

Also Published As

Publication number Publication date
US20220334918A1 (en) 2022-10-20
US11989090B2 (en) 2024-05-21
WO2021227188A1 (zh) 2021-11-18
CN111638996A (zh) 2020-09-08

Similar Documents

Publication Publication Date Title
US10353812B2 (en) Apparatus and method of wear leveling of storage class memory by recording input group to output group address mapping
US10885004B2 (en) Method and apparatus to manage flush of an atomic group of writes to persistent memory in response to an unexpected power loss
US7089391B2 (en) Managing a codec engine for memory compression/decompression operations using a data movement engine
US10241711B2 (en) Multiversioned nonvolatile memory hierarchy for persistent memory
US6804162B1 (en) Read-modify-write memory using read-or-write banks
US11210020B2 (en) Methods and systems for accessing a memory
CN113312300B (zh) 一种融合数据传输和存储的非易失内存缓存方法
US10733101B2 (en) Processing node, computer system, and transaction conflict detection method
US11237758B2 (en) Apparatus and method of wear leveling for storage class memory using address cache
CN109165321B (zh) 一种基于非易失内存的一致性哈希表构建方法和系统
CN111638996B (zh) 一种保证非易失内存中故障原子性的方法及系统
CN111414320B (zh) 基于日志文件系统的非易失内存构建磁盘cache的方法及系统
US20230280940A1 (en) Memory controller for managing raid information
CN111522684A (zh) 一种同时纠正相变存储器软硬错误的方法及装置
US9323671B1 (en) Managing enhanced write caching
WO2016141817A1 (zh) 数据备份装置及方法
CN110348245B (zh) 基于nvm的数据完整性保护方法、系统、装置及存储介质
CN109542356B (zh) 面向容错的nvm持久化过程冗余信息的压缩方法和装置
US11249921B2 (en) Page modification encoding and caching
CN113722052A (zh) 一种基于数据双版本的非易失内存更新方法
CN113961150B (zh) 一种分布式持久性内存文件系统保持数据一致性的方法
US11704246B2 (en) Memory system for maintaining data consistency and operation method thereof
CN113190474B (zh) 一种提升stt-mram近似缓存能效的方法及系统
CN111190543A (zh) 一种线程间共享nvdimm存储资源的存储方法及系统
CN116361206A (zh) 一种可配置容量的地址转换缓冲标记控制器及其应用方法

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
GR01 Patent grant
GR01 Patent grant