CN104541241B - 用于非易失性存储器的留存日志操作 - Google Patents

用于非易失性存储器的留存日志操作 Download PDF

Info

Publication number
CN104541241B
CN104541241B CN201380044838.4A CN201380044838A CN104541241B CN 104541241 B CN104541241 B CN 104541241B CN 201380044838 A CN201380044838 A CN 201380044838A CN 104541241 B CN104541241 B CN 104541241B
Authority
CN
China
Prior art keywords
information
nvm
variable
log
retention
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
CN201380044838.4A
Other languages
English (en)
Other versions
CN104541241A (zh
Inventor
F.齐乌尔亚洛夫
Q.蔡
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104541241A publication Critical patent/CN104541241A/zh
Application granted granted Critical
Publication of CN104541241B publication Critical patent/CN104541241B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F9/467Transactional memory
    • 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/1474Saving, restoring, recovering or retrying in transactions
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Retry When Errors Occur (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在一实施例中,可执行第一延迟的留存操作来将信息存储在包含在非易失性存储器(NVM)中的日志中。例如,信息可包含NVM中包含的变量的当前值。可执行第二延迟的留存操作来将信息存储在变量中。可执行第三延迟的留存操作来将指示日志被清除的信息存储在NVM中。例如,在第一、第二或第三延迟的留存操作之后,可执行刷新操作。刷新操作可将与第一、第二或第三延迟的留存操作中的至少一个关联的信息提交到NVM。

Description

用于非易失性存储器的留存日志操作
背景技术
计算装置可使用一个或多个存储系统来存储信息。例如,信息可包含数据和/或可执行指令。存储系统可包含主存储装置和辅助存储装置。主存储装置可以是可包含在计算装置中的处理器可直接访问的存储装置。处理器可经由可包含用于在处理器与主存储装置之间传输信息的供应的存储器总线而接入主存储装置。辅助存储装置可以是处理器不可直接访问的存储装置。此处,可经由可以是I/O总线的一部分的一个或多个输入/输出(I/O)信道在处理器与辅助存储装置之间传输信息。
附图说明
并入并且构成本说明书的一部分的附图图示一个或多个本文描述的实施例并且与描述一起解释这些实施例。在图中:
图1图示计算装置的示例实施例的框图;
图2图示与使用延迟的留存在非易失性存储器(NVM)中的数据的示例存储关联的时间线;
图3图示可用于记录与事务关联的信息的示例代码;
图4图示包含事务的示例代码;
图5图示可用于将信息存储在非易失性存储器(NVM)中的示例动作的流程图;以及
图6图示可用于将信息从包含在日志中的信息恢复到NVM的示例动作的流程图。
具体实施方式
下文的详细描述涉及附图。不同的图中的相同的参考标号可识别相同或类似的元件。而且,下文的详细描述不限制本发明。
计算装置(例如,智能电话、平板计算机、超级本、服务器)可包含非易失性存储器(NVM),计算装置可使用NVM来存储在计算装置丢失电力之后幸存的数据。例如,计算装置可包含处理器和NVM。处理器可使用NVM来存储计算装置的用户的地址簿。地址簿可包含可与用户经常使用计算装置呼叫的联系人关联的信息(例如,姓名、电话号码)。通过将地址簿存储在NVM中,信息可以被留存使得在计算装置丢失电力之后信息可保留在NVM中。在计算装置恢复电力之后,处理器可从NVM取回留存的信息。
图1图示可包含NVM 135的计算装置100的示例实施例的框图。NVM 135可以是与计算装置100关联的主存储装置130的一部分。参考图1,计算装置100可包含各种部件,例如,处理逻辑120、主存储装置130、辅助存储装置150、一个或多个输入装置160、一个或多个输出装置170以及一个或多个通信接口180。
应该注意到图1图示计算装置100的示例实施例。计算装置100的其它实施例可包含比图1中图示的部件更多或更少的部件。另外,可不同于图1中图示的来布置部件。例如,在计算装置100的一实施例中,辅助存储装置150可包含在提供“云”存储的远程站点处。站点可经由通信网络(例如,因特网)对于计算装置100可访问。通信接口180可用于对接计算装置100与通信网络。
而且,应该注意到由包含在计算装置100的其它实施例中的各种部件执行的功能可分布在不同于如本文所描述的部件之间。
计算装置100可包含可允许计算装置100中的部件(例如,处理逻辑120、辅助存储装置150、一个或多个输入装置160、一个或多个输出装置170和一个或多个通信接口180)之间通信的I/O总线110。除了别的以外,通信可包含在部件之间传输信息(例如,控制信息、数据)。
计算装置100可包含存储器总线190,它可使可存储在主存储装置130中的信息能在处理逻辑120与主存储装置130之间传输。信息可包含可由处理逻辑120执行、操纵和/或以其它方式处理的指令和/或数据。
处理逻辑120可包含用于解释、执行和/或以其它方式处理信息的逻辑。例如,信息可包含可存储在主存储装置130和/或辅助存储装置150中的信息。此外,信息可包含可由一个或多个输入装置160和/或通信接口180获得(例如,读取、接收)的信息。
处理逻辑120可包含各种异构硬件。例如,硬件可包含一个或多个处理器、微处理器、现场可编程门阵列(FPGA)、专用指令集处理器(ASIP)、专用集成电路(ASIC)、复杂可编程逻辑装置(CPLD)、图形处理单元(GPU)和/或其它类型的处理逻辑(例如,可解释、执行、操纵和/或以其它方式处理信息)中的一些组合。处理逻辑120可包括单个核或多个核。可用于实现处理逻辑120的处理器的示例是可从加利福尼亚州圣克拉拉的英特尔公司得到的Intel Xeon处理器。
辅助存储装置150可包含经由I/O总线110对于处理逻辑120可访问的存储装置。存储装置可存储用于处理逻辑120的信息。处理逻辑120可执行、解释、操纵和/或以其它方式处理信息。例如,信息可包含可实现本发明的一个或多个实施例的计算机可执行指令和/或数据。
例如,辅助存储装置150可包含可存储信息的一个或多个存储装置。存储装置可以是易失性的或非易失性的。例如,可包含在辅助存储装置150中的存储装置可包含磁盘驱动器、光盘驱动器、随机接入存储器(RAM)盘驱动器、闪速驱动器、固态驱动器(SSD)和/或其它存储装置。信息可存储在包含在存储装置中的一个或多个非暂时性有形的计算机可读媒体上。可包含在存储装置中的非暂时性有形的计算机可读媒体的示例可包含磁盘、光盘和/或存储器装置。存储器装置的示例可以是非易失性随机存取存储器(RAM)装置。
输入装置160可包含可用于将信息输入计算装置100的一个或多个装置。例如,装置可包含键盘、计算机鼠标、麦克风、照相机、跟踪球、陀螺装置(例如,陀螺仪)、迷你鼠标、触摸板、触屏笔、图形平板计算机、触摸屏、操作杆(等压或等距)、指向杆、加速度计、手掌鼠标、足鼠标、定位盘、眼球控制装置、手指鼠标、光笔、光枪、神经装置、眼睛追踪装置、方向盘、摇杆、滚轮、空间球、定向垫、跳舞垫、肥皂鼠标、触觉装置、感知装置、神经装置、多点输入装置、离散指向装置和/或一些其它输入装置。例如,信息可包含可使用指向装置(例如,计算机鼠标)输入计算装置100的空间(例如,连续的、多维的)数据。信息还可包含其它形式的数据,例如,可使用键盘输入的文本。
输出装置170可包含可从计算装置100输出信息的一个或多个装置。例如,装置可包含阴极射线管(CRT)、等离子体显示装置、发光二极管(LED)显示装置、液晶显示器(LCD)装置、真空荧光显示(VFD)装置、表面导电电子发射显示(SED)装置、场发射显示(FED)装置、触觉装置、感知装置、打印机、扬声器、视频投影仪、容积显示装置、绘图仪、触摸屏和/或一些其它输出装置。例如,处理逻辑120可指引输出装置170输出来自计算装置100的信息。信息可由输出装置170呈现(例如,显示、打印)。例如,信息可包含文本、图形用户接口(GUI)元件(例如,窗口、小部件和/或其它GUI元件)、音频(例如,音乐、声音)和/或可由输出装置170呈现的其它信息。
例如,通信接口180可包含用于对接计算装置100与一个或多个通信网络的逻辑并且使计算装置100能与耦合到通信网络的一个或多个实体(例如,节点)通信。例如,通信网络可包含因特网、广域网(WAN)、局域网(LAN)、3G和/或4G网络。通信接口180可包含一个或多个类似收发器的机制,其可使计算装置100能与耦合到通信网络的实体通信。通信接口180的示例可包含内置网络适配器、网络接口卡(NIC)、个人计算机存储器卡国际联合会(PCMCIA)网卡、卡总线网络适配器、无线网络适配器、通用串行总线(USB)网络适配器、调制解调器和/或合适于将计算装置100对接到通信网络的其它装置。
例如,主存储装置130可包含可存储计算机可执行指令和/或数据的一个或多个非暂时性有形的计算机可读媒体。主存储装置130可经由存储器总线190对于处理逻辑120可访问。计算机可执行指令和/或数据可实现操作系统(OS)132和应用(APP)134。处理逻辑120可执行、解释和/或以其它方式处理计算机可执行指令。计算机可执行指令和/或数据可包含可实现本发明的一个或多个实施例的计算机可执行指令和/或数据。
主存储装置130可包含易失性存储器131和非易失性(NVM)135。易失性存储器131可包含随机存取存储器和/或串行接入存储器。可使用可存储信息的一个或多个易失性存储器装置来实现易失性存储器131。信息可包含可由处理逻辑120执行的可执行指令和/或可由处理逻辑120操纵的数据。例如,易失性存储器装置可包含动态随机存取存储器(DRAM)装置、静态随机存取存储器装置、双倍数据率(DDR)同步随机存取存储器、晶闸管随机存取存储器(TRAM)和/或其它类型的易失性存储器装置。易失性存储器131可包含OS 132和APP134。
OS 132可以是可实现各种传统的操作系统功能的传统操作系统,例如,传统的操作系统功能可包含(1)调度APP 134的一个或多个部分来在处理逻辑120上运行(例如,尤其执行),(2)管理主存储装置130,以及(3)控制对计算装置100中的各种部件(例如,输入装置160、输出装置170、通信接口180、辅助存储装置150)和由这些部件接收和/或传送的信息的访问。
可用于实现OS 132的操作系统的示例可包含Linux操作系统、Microsoft Windows操作系统、Symbian操作系统、Mac OS操作系统和Android操作系统。可使用的Linux操作系统的发行是可从Red Hat Corporation, Raleigh, North Carolina得到的Red HatLinux。可使用的Microsoft Windows操作系统的版本包含可从Microsoft Inc., Redmond,Washington得到的Microsoft Windows Mobile、Microsoft Windows 7、MicrosoftWindows Vista以及Microsoft Windows XP操作系统。Symbian操作系统可从AccenturePLC, Dublin, Ireland得到。Mac OS操作系统可从Apple, Inc., Cupertino, California得到。Android操作系统可从Google, Inc., Menlo Park, California得到。
APP 134可以是可在计算装置100上的OS 132的控制下运行(执行)的软件应用。APP 134和/或OS 132可包含用于处理事务的供应(可涉及将信息存储在NVM 135中)。APP134和/或OS 132还可包含用于维持日志136的供应。可使用包含在APP 134和/或OS 132中的数据和/或计算机可执行指令来实现这些供应。
例如,NVM 135可包含随机存取存储器和/或串行存储器。可使用可存储信息的一个或多个非易失性存储器装置来实现NVM 135。例如,信息可包含可由处理逻辑120执行的可执行指令和/或可由处理逻辑120操纵的数据。例如,非易失性存储器装置可包含只读存储器(ROM)装置、可编程ROM(PROM)装置、可擦除PROM(EPROM)装置、,电可擦除PROM(EEPROM)装置、闪速存储器装置、铁电随机存取存储器(FeRAM)装置、磁阻随机存取存储器(MRAM)装置、相变存储器(PCM)装置、具有开关的PCM(PCMS)装置、基于纳米线的存储器装置、铁电晶体管随机存取存储器(FeTRAM)装置、电阻式随机存取存储器(RRAM)装置和/或其它类型的非易失性存储器装置。NVM 135可包含数据138和/或日志135。
数据138可包含与可由APP 134和/或OS 132处理的事务关联的信息(例如,数据)。日志136可包含可用于恢复包含在数据138中的信息的信息。可以用许多不同的方式实现日志136(例如,作为链表、栈数据结构、数组)。将在以下另外讨论可包含在数据138和日志136中的信息的细节。
应该注意到虽然在图1中将日志136和数据138示为包含在主存储装置130中的NVM135中,但是其它变化是可能的。例如,日志136和/或数据138可包含在NVM中,NVM可包含在辅助存储装置150中。在另一示例中,数据138和/或日志136可存储在可经由通信网络(例如,在云存储中)访问的NVM中。此处,可经由一个或多个通信接口180来访问数据138和/或日志136。注意以上示例变化包含用于存储日志136和/或数据138的可能的变化并且其它变化是可能的。
可使用延迟的留存将信息存储在NVM 135中。延迟的留存可涉及指示信息将留存在NVM 135中但是不指示信息实际上何时留存在NVM 135中。采用延迟的留存来将信息写入NVM 135的操作(例如,可执行指令)可在信息到NVM 135的实际写入之前完成执行。
与延迟的留存相比,立即的留存可涉及将信息立即留存到NVM 135。此处,直到将信息写入(提交)到NVM 135之后,采用立即的留存来将信息写入NVM 135的操作才可完成。
例如,假设计算装置100(图1)实现(1)“nvstore”指令(采用延迟的留存来将信息写入NVM 136)和(2)“nvflush”指令(采用立即的留存来将由“nvstore”指令写入的信息立即留存到NVM 135)。计算装置100可首先执行“nvstore”指令来将信息写入NVM 135中的位置。注意由于“nvstore”指令采用延迟的留存来将信息写入NVM 135,实际上可在“nvstore”指令完成执行之后某个时间将信息写入位置。因此,“nvstore”指令的执行的完成不保证信息被实际写入NVM 135中的位置并且在“nvstore”指令完成执行之后读取NVM 135中的位置的指令不一定读取由“nvstore”指令写入的信息。
现在假设计算装置100在“nvstore”指令之后执行“nvflush”指令并且“nvflush”指令在将信息实际写入NVM 135中的位置之前执行。由于“nvflush”指令采用立即的留存并且在“nvstore”指令之后被执行,在“nvflush”指令完成执行之前,将与“nvstore”指令关联的信息写入NVM 135中的位置。因此,在“nvflush”指令执行之后读取位置的指令将读取由“nvstore”指令写入的信息。
图2图示可帮助解释上述“nvstore”和“nvflush”指令的操作的时间线200。参考图2,在时间T0处,计算装置100可执行第一“nvstore”指令来将信息(由“A”表示)存储在NVM135中的第一位置(由“L1”表示)处。在时间T1处,计算装置100可执行第二“nvstore”指令来将数据(由“B”表示)存储在NVM 135中的第二位置(由“L2”表示)处。在时间Tn处,计算装置100执行“nvflush”指令来确保由第一和第二“nvstore”指令写入的信息被提交(实际被写入)到NVM 135。
行210指示将由第一“nvstore”指令指定的信息写入NVM 135所花的时间。行212指示将由第二“nvstore”指令指定的信息写入NVM 135所花的时间。注意行210示出在第一“nvstore”指令完成执行之后某个时间由第一“nvstore”指令指定的信息被写入NVM 135。类似地,行212示出在第二“nvstore”指令完成执行之后某个时间由第二“nvstore”指令指定的信息被写入NVM 135。因此,信息的实际留存可被视为是延迟的,因为在“nvstore”指令完成执行之后的某个时间处信息可被实际留存到NVM 135。
也应该注意到写入由第一“nvstore”指令指定的信息所花的时间可与第二“nvstore”指令的执行重叠。因此,采用延迟的留存可使指令执行能与将信息写入NVM 135重叠并且可由此提升利用“nvstore”指令来将信息存储在NVM 135中的应用的性能。
除了上述以外,行210和212也指示当“nvflush”指令完成执行时,由第一和第二“nvstore”指令指定的信息被提交到NVM 135。换句话说,当“nvflush”指令完成执行时,保证将由第一和第二“nvstore”指令写入的信息写入NVM 135。因此,“nvflush”指令可被称为将信息立即留存到NVM 135。
涉及排序的一个或多个规则可与上述“nvstore”和“nvflush”指令关联。例如,可与上述“nvstore”和“nvflush”指令关联的第一规则可指示由多个“nvstore”指令指定的信息是以执行“nvstore”指令的顺序被提交到NVM 135。因此,根据第一规则,在以上示例中,因为第一“nvstore”指令在第二“nvstore”指令之前执行,所以在将由第二“nvstore”指令指定的信息提交到NVM 135之前,将由第一“nvstore”指令指定的信息提交到NVM 135。
例如,可与上述“nvstore”和“nvflush”指令关联的第二规则可指示可能不重新排序由在“nvflush”指令之前执行的“nvstore”指令指定的信息的提交,使得在“nvflush”指令完成执行之后将信息提交到NVM 135。因此,在以上示例中,第一和第二“nvstore”指令是在“nvflush”指令之前执行。根据第二规则,在此示例中,在“nvflush”指令完成执行之前,将由第一和第二“nvflush”指令指定的信息提交到NVM 135。另外,根据第二规则,在“nvflush”指令完成执行之后,将不允许将由第一和/或第二“nvstore”指令指定的信息提交到NVM 135。
下文的示例可有助于理解以上示例排序规则。返回参考图2,第一“nvstore”指令在第二“nvstore”指令之前执行。如上所述,第一“nvstore”指令指定将由“A”表示的信息存储在NVM 135中的位置“L1”中。类似地,第二“nvstore”指令指定将由“B”表示的信息存储在NVM 135中的位置“L2”中。现在假设,“L1”和“L2”是NVM 135中的相同位置。遵循第一规则,由“A”表示的信息会被存储在位置中并且以后由“B”表示的信息会被存储在相同位置中,重写由“A”表示的信息。如果将信息存储在NVM 135中不遵循第一规则并且由第一和第二“nvstore”指令指定的信息到NVM 135的提交可被重新排序,则被写入NVM 135中的位置的实际信息可能是未知的。换句话说,如果允许将信息提交到NVM 135的重新排序,则会不清楚由第二“nvstore”指定的信息是否被由第一“nvstore”指令指定的信息重写或由第一“nvstore”指令指定的信息是否被由第二“nvstore”指令指定的信息重写。
关于第二规则,在图2中,“nvflush”指令遵循第一和第二“nvstore”指令。因此,在时间Tn处将由第一和第二“nvstore”指令写入的信息提交到NVM 135。如果在NVM 135中存储信息不遵循第二规则,则可能不清楚何时将由第一和/或第二“nvstore”指令指定的信息实际写入NVM 135。例如,如果由第二“nvstore”指令指定的信息在“nvflush”指令完成执行之后被提交到NVM 135,则“nvflush”指令的执行的完成可不保证由第二“nvstore”指令写入的信息被实际提交到NVM 135。
当实现持久的事务时,重叠写入NVM的操作的执行可以是有利的。持久的事务可包含涉及将与事务关联的信息存储在持久介质(例如,NVM 135)中的事务。
例如,考虑包含可将信息存储在NVM 135中的持久事务的以下代码:
begin transaction
nvstore varName,“John Q.”;
nvstore varSurname,“Public”;
nvstore varPhone,“555-0199”;
end transaction
nvflush
事务涉及将值“JohnQ.”、“Public”以及“555-0199”分别存储在包含在NVM 135中的名为“varName”、“varSurname”和“varPhone”的变量中。可执行遵循事务的“nvflush”指令以确保在“nvflush”完成执行之前将值提交到NVM 135中的变量,因此,可遵循“nvflush”指令的代码可依靠包含在变量中的值。
注意因为“nvstore”指令可延迟变量的留存,所以“nvstore”指令可能不指示何时将变量实际留存到NVM 135。因此,直到“nvflush”指令成功完成执行,才可认为将事务提交到NVM 135。
在涉及写入NVM 135的信息的延迟的留存方案中,如果发生阻止将信息提交到NVM135的事件,则可产生问题。例如,假设当计算装置100丢失电力时,计算装置100执行以上事务来防止“nvflush”指令的执行。因为“nvflush”指令未被执行,所以不清楚事务中的所有数据是否都已提交到NVM 135。因此,关于事务的NVM 135的状态可能是未知的。
消除当在写入NVM 135时使用延迟的留存时可产生的问题的一个方式可以是维持日志。例如,日志可保持可用于将NVM 135的状态回退到已知状态的信息。
图3图示可用于维持可保持信息的日志的示例代码300,信息可用于回退包含在NVM 135的信息。例如,代码300可包含在APP 134和/或OS 132中来记录回退信息。例如,信息可与包含在数据138中的一个或多个变量关联。
参考图3,代码300包含名为“log”的函数310、名为“clear_log”的函数312以及名为“is_log_clear”的函数314。函数310包含是变量的地址的输入参数。如以下另外将描述的,可使用延迟的留存操作(例如上述的“nvstore”指令)将变量可存储在NVM 135中。在函数310中,使用延迟的留存操作(在此示例中“nvstore”指令)将变量的当前值和变量的地址写入日志中的条目(名为“logBuffer”)。可将日志维持在还可保持变量的NVM 135中。日志中的条目由名为“ind”的变量识别,它还可包含在NVM 135中。递增“ind”的值来指向日志中的下一可用条目并且使用延迟的留存操作将递增的值写入“ind”。
应该注意的是本文描述的“nvstore”指令是延迟的留存操作的示例实施例。延迟的留存操作的其它实施例可以用不同于指令的其它方式来实现。例如,可在可能不涉及指令的硬件中实现延迟的留存操作。
此外,应该注意到可使用可不同于本文描述的“nvstore”指令而操作的指令来实现延迟的留存操作的其它实施例。例如,本文描述的“nvstore”指令将值写入NVM 135中的位置。例如,延迟的留存操作的其它实施例可包含可将多个数据值写入NVM 135中的多个位置的指令。例如,函数310可采用这样的指令来将变量的地址、变量的当前值和/或“ind”的值写入NVM 135中。
“clear_log”函数312将名为“ind”变量设置为指示日志被清除(即,日志不包含任何信息)的已知值。在此示例中,零值指示日志被清除。“clear_log”函数312使用延迟的留存操作将变量“ind”设置为零。
“is_log_clear”函数314返回指示日志是否被清除的结果。具体地,“is_log_clear”函数314从NVM 135读取“ind”的值并且比较它与指示日志被清除(在此示例中为零)的已知值。函数314基于比较的结果来返回比较的布尔结果(例如,真、假)。
在事务中可调用以上功能来记录信息,例如,信息可用于回退使用延迟的留存操作由事务写入的包含在NVM 135中的变量的状态。记录的信息可用于从可阻止由延迟的留存操作写入的信息被提交到NVM 135的事件中恢复。
图4图示包含用于记录与事务440关联的信息的代码的示例代码400。例如,代码400可包含在APP 134和/或OS 132中。参考图4,事务400在行420处开始并且在行434处结束。在行424处,“nvstore”指令用于将字符串“JohnQ.”存储在NVM 135中的名为“varName”的变量中。在行428处,“nvstore”用于将字符串“Public”存储在NVM 135中的名为“varSurname”的变量中,并且在行432处,“nvstore”用于将字符串“555-0199”存储在NVM135中的名为“varPhone”的变量中。
行422、426和430记录变量“varName”、“varSurname”和“varPhone”的地址和值。在行424、428和432处分别执行“nvstore”指令之前,记录的值包含变量的值。
例如,假设在行424、428以及432处执行以上“nvstore”指令之前,变量“varName”、“varSurname”和“varPhone”包含数据138中的值“Jane”、“Doe”和“555-0100”。在行422处的代码可使创造日志136中的条目用于包含变量“varName”的地址和值“Jane”的变量“varName”。类似地,在行426处的代码可使创造日志136中的条目用于包含变量“varSurname”的地址和值“Doe”的变量“varSurname”,并且在行430处的代码可使创造日志136中的条目用于包含变量“varPhone”的地址和值“555-0100”的变量“varPhone”。注意以上三个日志条目是使用延迟的留存操作(在此示例中它是“nvstore”指令)来创造。
在行436处,调用功能“clear_log”。如上所述,“clear_log”功能使用“nvstore”指令来将名为“ind”的变量设置为指示日志被清除的已知值。在行438处,执行“nvflush”指令。“nvflush”指令确保将由以前的“nvstore”指令指定的信息写入NVM。因此,在此示例中,在“nvflush”指令的执行之后,NVM 135中的变量“varName”、“varSurname”和“varPhone”分别包含值“JohnQ.”、“Public”和“555-0199”。此外,NVM 135中的变量“ind”包含值“0”,因此指示日志被清除。
图5图示可用于将信息存储在包含在NVM中的变量中的示例动作的流程图。参考图5,在框510处,可执行第一延迟的留存操作,其涉及将关于变量的信息存储在日志中。例如,变量和日志可包含在NVM 135中。延迟的留存操作可包含上述的“nvstore”指令。执行延迟的留存操作可包含执行“nvstore”指令。存储在日志中的信息可包含NVM 135中的变量的位置(例如,变量的地址)和变量的当前值。日志可能够包含多个条目并且信息可存储在包含在日志中的条目中。
在框512处,可执行第二延迟的留存操作,其涉及将信息存储在变量中。例如,第二延迟的留存操作可包含“nvstore”指令并且执行操作可包含执行指令。执行指令可包含使用延迟的留存将信息存储在变量中。存储的信息可覆写可包含在变量中的现存信息。
在框514处,执行第三延迟的留存操作,其涉及将指示日志被清除的信息存储在NVM中。例如,第三延迟的留存操作还可以是“nvstore”操作并且执行操作可包含执行指令。执行“nvstore”指令可包含将第二变量中的值(指示日志被清除)存储在NVM 135中。此处,例如,第二变量可保持指向日志中的“下一可用的条目”的索引。将第二变量设置为指向日志中的特定条目(例如,第一条目)可提供日志被清除的指示。注意可使用其它方式来指示日志被清除。例如,第二变量可指示日志中的多个条目并且将第二变量设置为已知值(例如,零)可指示日志被清除。类似地,例如,第二变量可包含可设置为指示日志是否被清除的标记。
在框516处,执行刷新操作,其涉及提交与第一、第二或第三延迟的留存操作中的至少一个关联的信息。例如,假设第一、第二或第三延迟的留存操作包含执行将信息存储在NVM 135中的“nvstore”指令,例如以上所述的。另外,例如,假设与第一延迟的留存操作关联的信息已经被写入NVM 135但是与第二和第三延迟的留存操作关联的信息还没有被写入NVM 135。与第二和第三延迟的留存操作关联的信息可被认为是“显著的”,因为信息还没有被写入NVM 135。在框516处执行的刷新操作可将显著的信息写入NVM 135。
包含在上述的日志中的信息可用于从其中与事务关联的信息可能没有被完全提交到NVM的情况中恢复。例如,返回参考图4,假设计算装置100正在执行代码400来将与事务440关联的信息存储NVM 135中。例如,现在假设发生故障状况(例如,功率故障、硬件故障),它使代码400的执行在行438处的“nvflush”指令的执行之前突然停止。NVM 135的状态可以是未知的,因为不清楚与包含在事务中的“nvstore”指令关联的信息是否被实际提交到NVM135(由于“nvstore”指令的延迟的留存本质)。上述的日志可用于从故障状况中恢复并且恢复NVM 135中的信息。
图6图示可用于利用以上描述的日志的示例动作以从可在应用的执行期间发生的故障状况中恢复并且基于包含在日志中的信息恢复NVM中的信息的流程图。参考图6,在框610处,可启动应用来作为可采取来从故障状况中恢复的恢复动作的一部分。在故障状况之后启动应用可使应用进入恢复状态。
在框612处,可执行检查来确定日志是否被清除。可在NVM中维持可指示日志是否被清除的变量。例如,可将上述的变量“ind”维持在NVM中。将变量设置为零值可提供日志被清除的指示。在框612处,可执行检查来确定变量“ind”是否指示日志被清除。
如果在框612处确定日志被清除,则在框624处可继续应用执行。清除的日志可指示在日志中没有信息来恢复到NVM。如果在框612处确定日志没有被清除,则在框614处可获得来自最后的日志条目的信息。
在框616处,可基于从日志条目获得的信息来恢复NVM中的数据。例如,从日志条目获得的信息可包含NVM中的变量的位置和值。通过在获得的位置处将获得的值写入NVM,可在NVM中恢复变量的值。使用延迟的留存操作可将获得的值写入NVM。
在框618处,可执行检查来确定日志是否包含以前的条目。如果在框618处确定日志不包含以前的条目,则在框622处可设置日志来指示日志被清除并且在框624处可继续应用的执行。否则,如果在框618处确定日志包含以前的条目,则在框620处获得来自以前的条目的信息。然后控制进行到框616。注意可对于日志中的剩余条目重复在框616到620处的动作。
实施例的以上描述旨在提供图示和描述,但是不意图是穷尽的或将本发明限于公开的精确形式。按照以上教导,修改和变化是可能的或可从本发明的实践获得。例如,虽然上面已经关于图5和6描述一系列动作,但是在其它实现中可修改动作的顺序。另外,可并行地执行非相关动作。
而且,如本文所使用的,例如,除非以其它方式陈述,术语“用户”旨在被广泛地解释为包含计算装置(例如,固定计算装置、移动计算装置)或计算装置的用户。
将显而易见的是在本文中描述的一个或多个实施例可以用软件和/或硬件的许多不同形式来实现。用于实现本文描述的实施例的软件代码和/或专用硬件不限制本发明。因此,没有参考具体软件代码和/或专用硬件来描述实施例的操作和行为,要理解的是人们能够设计软件和/或硬件以基于本文的描述来实现实施例。
另外,可使用可由处理逻辑(例如,处理逻辑120)执行的计算机可执行指令来实现本发明的某些特征。计算机可执行指令可存储在一个或多个非暂时性有形的计算机可读存储媒体上。媒体可以是易失性或非易失性并且例如可包含DRAM、SRAM、闪速存储器、可移动磁盘、不可移动磁盘、等等。
本文使用的元件、动作或指令不应解释为对本发明是关键或必要的,除非如此明确描述。而且,如本文所使用的,冠词“一”旨在包含一个或多个项目。在意指仅一个项目的情况下,使用术语“一个”或类似语言。另外,除非以其它方式明确陈述,短语“基于”旨在意味着“至少部分基于”。
意图是本发明不限于以上公开的特定实施例,而是本发明将包含落入所附权利要求的范围内的任何和所有特定实施例和等同物。

Claims (27)

1.一种用于存储信息的方法,包括:
执行第一延迟的留存操作来将信息存储在包含在非易失性存储器(NVM)中的日志中,所述信息包含所述NVM中包含的变量的当前值;
执行第二延迟的留存操作来将信息存储在所述变量中;
执行第三延迟的留存操作来将指示所述日志被清除的信息存储在所述NVM中;以及
执行刷新操作来将与所述第一、第二或第三延迟的留存操作中的至少一个关联的信息提交到所述NVM。
2.如权利要求1所述的方法,其中由所述第一延迟的留存操作存储的所述信息还包含所述变量的地址。
3.如权利要求1所述的方法,其中由所述第三延迟的留存操作存储的所述信息存储在指示所述日志中的下一条目的包含在所述NVM中的变量中。
4.如权利要求1所述的方法,其中由所述第三延迟的留存操作存储的所述信息存储在指示所述日志中的多个条目的包含在所述NVM中的变量中。
5.如权利要求1所述的方法,其中由所述第三延迟的留存操作存储的所述信息包含指示所述日志是否被清除的标记。
6.如权利要求1所述的方法,其中所述第一、第二或第三延迟的留存操作中的所述至少一个包含可由处理逻辑执行的可执行指令。
7.如权利要求6所述的方法,其中所述指令被执行来执行所述第一、第二或第三延迟的留存操作中的至少一个。
8.一个或多个有形的非暂时性计算机可读介质,其存储用于由处理逻辑的执行的一个或多个可执行指令,所述一个或多个可执行指令包含:
一个或多个可执行指令,用于使用第一延迟的留存操作来将信息存储在包含在非易失性存储器(NVM)中的日志中,所述信息包含所述NVM中包含的变量的当前值;
一个或多个可执行指令,用于使用第二延迟的留存操作来将信息存储在所述变量中;
一个或多个可执行指令,用于使用第三延迟的留存操作来将指示所述日志被清除的信息存储在所述NVM中;以及
一个或多个可执行指令,用于将显著的信息提交到所述NVM,所述显著的信息包含与所述第一、第二或第三延迟的留存操作中的至少一个关联的信息。
9.如权利要求8所述的介质,其中由所述第一延迟的留存操作存储的所述信息还包含所述变量的地址。
10.如权利要求8所述的介质,其中由所述第三延迟的留存操作存储的所述信息存储在指示所述日志中的下一条目的包含在所述NVM中的变量中。
11.如权利要求8所述的介质,其中由所述第三延迟的留存操作存储的所述信息存储在指示所述日志中的多个条目的包含在所述NVM中的变量中。
12.如权利要求8所述的介质,其中还包括:
一个或多个指令,用于确定所述日志未被清除;
一个或多个指令,用于从所述日志获得由所述第二延迟的留存操作存储的所述信息;以及
一个或多个指令,用于基于所述获得的信息来恢复包含在所述变量中的信息。
13.如权利要求12所述的介质,其中所述变量中的所述信息是通过使用将所述获得的信息写入所述变量的延迟的留存操作来恢复。
14.一种计算系统,包括:
处理逻辑,用于:
执行第一操作,其使用延迟的留存操作将信息存储在包含在非易失性存储器(NVM)中的日志中,所述信息包含所述NVM中包含的变量的当前值;
执行第二操作,其使用延迟的留存将信息存储在所述变量中;
执行第三操作,其使用延迟的留存将指示所述日志被清除的信息存储在所述NVM中;以及
将显著的信息提交到所述NVM,所述显著的信息包含与所述第一、第二或第三操作中的至少一个关联的信息。
15.如权利要求14所述的系统,其中由所述第一操作存储的所述信息还包含所述变量的地址。
16.如权利要求14所述的系统,其中由所述第三操作存储的所述信息存储在指示所述日志中的下一条目的包含在所述NVM中的所述变量中。
17.如权利要求14所述的系统,其中由所述第三操作存储的所述信息存储在指示所述日志中的多个条目的包含在所述NVM中的所述变量中。
18.如权利要求14所述的系统,其中由所述第三操作存储的所述信息包含指示所述日志是否被清除的标记。
19.如权利要求14所述的系统,其中所述第一、第二或第三延迟的操作中的所述至少一个包含可由处理逻辑执行的可执行指令。
20.如权利要求19所述的系统,其中所述指令被执行来执行所述第一、第二或第三操作中的至少一个。
21.一种用于存储信息的装置,包括:
用于执行第一延迟的留存操作来将信息存储在包含在非易失性存储器(NVM)中的日志中的部件,所述信息包含所述NVM中包含的变量的当前值;
用于执行第二延迟的留存操作来将信息存储在所述变量中的部件;
用于执行第三延迟的留存操作来将指示所述日志被清除的信息存储在所述NVM中的部件;以及
用于执行刷新操作来将与所述第一、第二或第三延迟的留存操作中的至少一个关联的信息提交到所述NVM的部件。
22.如权利要求21所述的装置,其中由所述第一延迟的留存操作存储的所述信息还包含所述变量的地址。
23.如权利要求21所述的装置,其中由所述第三延迟的留存操作存储的所述信息存储在指示所述日志中的下一条目的包含在所述NVM中的变量中。
24.如权利要求21所述的装置,其中由所述第三延迟的留存操作存储的所述信息存储在指示所述日志中的多个条目的包含在所述NVM中的变量中。
25.如权利要求21所述的装置,其中由所述第三延迟的留存操作存储的所述信息包含指示所述日志是否被清除的标记。
26.如权利要求21所述的装置,其中所述第一、第二或第三延迟的留存操作中的所述至少一个包含可由处理逻辑执行的可执行指令。
27.如权利要求26所述的装置,其中所述指令被执行来执行所述第一、第二或第三延迟的留存操作中的至少一个。
CN201380044838.4A 2012-09-28 2013-06-13 用于非易失性存储器的留存日志操作 Active CN104541241B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/630548 2012-09-28
US13/630,548 US9015404B2 (en) 2012-09-28 2012-09-28 Persistent log operations for non-volatile memory
PCT/US2013/045606 WO2014051744A1 (en) 2012-09-28 2013-06-13 Persistent log operations for non-volatile memory

Publications (2)

Publication Number Publication Date
CN104541241A CN104541241A (zh) 2015-04-22
CN104541241B true CN104541241B (zh) 2018-12-28

Family

ID=50386339

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380044838.4A Active CN104541241B (zh) 2012-09-28 2013-06-13 用于非易失性存储器的留存日志操作

Country Status (4)

Country Link
US (1) US9015404B2 (zh)
EP (1) EP2901267B1 (zh)
CN (1) CN104541241B (zh)
WO (1) WO2014051744A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9015404B2 (en) 2012-09-28 2015-04-21 Intel Corporation Persistent log operations for non-volatile memory
US9792066B2 (en) 2015-02-23 2017-10-17 International Business Machines Corporation Handling failure of a command to add a record to a log
US20170091254A1 (en) * 2015-09-24 2017-03-30 Kshitij A. Doshi Making volatile isolation transactions failure-atomic in non-volatile memory

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1659603A (zh) * 2002-04-24 2005-08-24 伊特伦电学计量公司 使用快闪存储器存储计量数据的方法
CN102150142A (zh) * 2008-12-27 2011-08-10 株式会社东芝 存储器系统和控制存储器系统的方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7222214B2 (en) 2004-03-25 2007-05-22 Lucent Technologies Inc. Device-level address translation within a programmable non-volatile memory device
KR100515890B1 (ko) 2005-03-07 2005-09-20 주식회사 퓨전소프트 효율적인 데이터베이스 복구방법
EP1712985A1 (en) 2005-04-15 2006-10-18 Deutsche Thomson-Brandt Gmbh Method and system for storing logical data blocks into flash-blocks in multiple non-volatile memories which are connected to at least one common data I/O bus
WO2008078207A2 (en) 2006-12-22 2008-07-03 International Business Machines Corporation System and method for recovery of memory transactions
US7774646B2 (en) * 2007-07-23 2010-08-10 Netapp, Inc. Surviving storage system takeover by replaying operations in an operations log mirror
TWI373773B (en) 2008-05-27 2012-10-01 Phison Electronics Corp Storage sysetm having multiple non-volatile memory, and controller and access method thereof
US8069366B1 (en) * 2009-04-29 2011-11-29 Netapp, Inc. Global write-log device for managing write logs of nodes of a cluster storage system
TW201044411A (en) 2009-06-15 2010-12-16 Jmicron Technology Corp Data interleaving method for storage device and related storage device
US8990476B2 (en) * 2009-10-01 2015-03-24 Micron Technology, Inc. Power interrupt management
WO2013147820A1 (en) * 2012-03-29 2013-10-03 Intel Corporation System and method for managing persistence with a multi-level memory hierarchy including non-volatile memory
US9015404B2 (en) 2012-09-28 2015-04-21 Intel Corporation Persistent log operations for non-volatile memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1659603A (zh) * 2002-04-24 2005-08-24 伊特伦电学计量公司 使用快闪存储器存储计量数据的方法
CN102150142A (zh) * 2008-12-27 2011-08-10 株式会社东芝 存储器系统和控制存储器系统的方法

Also Published As

Publication number Publication date
EP2901267A4 (en) 2016-06-29
EP2901267A1 (en) 2015-08-05
US9015404B2 (en) 2015-04-21
EP2901267B1 (en) 2017-12-20
CN104541241A (zh) 2015-04-22
WO2014051744A1 (en) 2014-04-03
US20140095766A1 (en) 2014-04-03

Similar Documents

Publication Publication Date Title
US11030131B2 (en) Data processing performance enhancement for neural networks using a virtualized data iterator
CN103477314B (zh) 具有至少两个触摸屏的信息显示装置及其信息显示方法
CN107025185A (zh) 数据存储装置及其操作方法
CN104111812A (zh) 显示控制方法和装置
CN106062723A (zh) 禁用与存储器设备相关联的命令
CN109154904A (zh) 数据改写装置、数据改写程序
CN104541241B (zh) 用于非易失性存储器的留存日志操作
JP2010086541A5 (zh)
US9304612B2 (en) Off-screen input capture for mobile device
CN110090444A (zh) 游戏中行为记录创建方法、装置、存储介质及电子设备
US20140365873A1 (en) Computing devices for generating content layout
WO2016101816A1 (zh) 一种即时通讯中的信息显示方法及装置
CN107544869A (zh) 一种数据恢复方法和装置
CN106354378B (zh) 一种快速选中多个目标的方法和装置
CN114581565A (zh) 动画路径可视化编辑方法、装置、计算机设备、存储介质
US20180349058A1 (en) Buffer-based update of state data
CN110007858A (zh) 存储空间分配方法及装置
CN105308584B (zh) 非易失性存储器接口
CN111368234B (zh) 窗口调整方法、设备及存储介质
US11288766B2 (en) System and method for displaying high quality images on controls based on display scaling
CN105408876B (zh) 在存储设备中加标签
JP2021022385A5 (ja) プログラム、情報処理方法、端末
CN109885507A (zh) 半导体装置
CN105320610B (zh) 数据储存装置及操作数据储存装置的方法
EP3816744B1 (en) Control device for industrial machine, setting system for control device for industrial machine, method of setting control device for industrial machine, and program

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant