CN104081357A - 使用多级单元设置本地检查点 - Google Patents

使用多级单元设置本地检查点 Download PDF

Info

Publication number
CN104081357A
CN104081357A CN201280068638.8A CN201280068638A CN104081357A CN 104081357 A CN104081357 A CN 104081357A CN 201280068638 A CN201280068638 A CN 201280068638A CN 104081357 A CN104081357 A CN 104081357A
Authority
CN
China
Prior art keywords
data
checkpoint
level unit
level
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201280068638.8A
Other languages
English (en)
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN104081357A publication Critical patent/CN104081357A/zh
Pending legal-status Critical Current

Links

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/1072Adding 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 multilevel 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • 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/1407Checkpointing the instruction stream
    • 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
    • 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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5678Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using amorphous/crystalline phase transition storage elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5685Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using storage elements comprising metal oxide memory material, e.g. perovskites
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0059Security or protection circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • 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
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • 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
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • G11C2013/0076Write operation performed depending on read result
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Chemical & Material Sciences (AREA)
  • Materials Engineering (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本文描述了使用多级单元设置本地检查点。示例性方法包括将第一数据存储在多级单元的第一级中。将第二数据存储在该多级单元的第二级中,第二数据代表第一数据的检查点。将第一数据从该多级单元的第一级拷贝到第二级,以创建检查点。

Description

使用多级单元设置本地检查点
政府利益的声明
本发明根据由能源部授予的合同号DE—SC0005026在政府支持下做出。政府对本发明有某些权利。
背景技术
高性能计算(HPC)系统一般用于复杂数学和/或科学信息的计算。这样的计算可包括化学相互作用的模拟、信号分析、结构分析的模拟等。由于它们的复杂性,HPC系统完成这些计算常常是明显耗费时间的(例如小时、天、星期等)。例如硬件故障、应用程序漏洞、存储器毁坏、系统故障等的错误可能在计算期间出现,并将所计算的数据保持在毁坏和/或不一致的状态。当这样的错误出现时,HPC系统重新开始计算,这可明显增加完成计算的处理时间。
为了缩短重新计算的处理时间,利用检查点来在计算期间存储在不同点处所计算的数据的版本。当错误出现时,计算系统从最近的检查点恢复数据,并从恢复的检查点重新开始计算。以这种方式,检查点可用于通过防止系统必须完全重新开始计算来减少计算的处理时间。
附图说明
图1描绘示例性多级单元(MLC)非易失性随机存取存储器(NVRAM)配置。
图2是使用图1的MLC NVRAM的示例性存储块的方框图。
图3是可用于使用图2的示例性存储块来实现本地检查点的示例性存储控制器的方框图。
图4是每个单元具有两个位的多级单元的方框图。
图5是每个单元具有两个位的可替代多级单元的方框图。
图6是每个单元具有三个位的多级单元的方框图。
图7是每个单元具有四个位的多级单元的方框图。
图8是每个单元具有四个位的多级单元的方框图。
图9是表示可被执行来实现图3的示例性存储控制器以执行检查点操作的示例性机器可读指令的流程图。
图10是表示可被执行来实现图3的示例性存储控制器以执行检查点操作的示例性机器可读指令的流程图。
图11是代表可被执行来实现图3的示例性存储控制器以执行电阻编码的示例性机器可读指令的流程图。
图12是能够执行图9、10和/或11的示例性机器可读指令以实现图3的示例性存储控制器的示例性处理器平台的方框图。
具体实施方式
本文公开的示例性方法、装置和制品能够使用多级单元(MLC)非易失性随机存取存储器(NVRAM)来实现版本存储器。为了实现版本存储器,本文公开的例子利用多级单元(MLC)来对工作数据和一个或多个数据检查点进行编码。示例性工作数据存储在多级单元的第一位中,而示例性检查点数据存储在多级单元的第二位中。本文公开的示例性版本存储技术可用于实现比已知的检查点技术相对更快和更能量有效的检查点。
最近的NVRAM存储技术(例如相变存储器(PCRAM)、忆阻器等)比传统的存储技术具有更高的存储密度。这样的较高密度NVRMA存储技术被预期用在较新的计算系统中。然而,设计者、工程师和用户面临着由于例如存储器泄漏、系统故障、应用程序漏洞等错误产生的NVRAM毁坏的风险。因此,本文公开的例子可用于将NVRAM中的数据恢复到稳定的状态,以消除或实质上降低毁坏的风险。
已知的系统使用多版本数据结构、检查点日志过程等来实现从错误中恢复。然而,在这种以前的系统中使用多版本数据结构需要可访问那些多版本数据结构的特别设计的软件应用程序。因此,这些已知数据结构的使用限于具有这样特别设计的软件应用程序的计算系统。在一些已知的系统中,检查点日志过程依赖于将存储器拷贝到分开的位置以创建检查点的能力。然而,因为利用很多存储操作来创建检查点,因此拷贝存储器可能花费过长的时间,且可能易于发生错误。为了克服错误,检查点日志系统创建所拷贝的数据的日志,以在检查点过程期间能够从错误中恢复。然而,这些机制引起性能和能力的相当大的开销。
本文公开的示例性方法、装置和制品在高性能计算(HPC)系统中实现检查点。本文公开的例子通过将检查点数据存储在同一多级单元的额外层中来实现示例性检查点操作,其中工作数据存储在额外层中。通过将检查点数据存储在同一单元中,该数据可更容易寻址,且存储器写操作相对更快,这是因为正被设置检查点的数据未被传输到单独的存储位置(例如远程检查点服务器、在同一计算系统中的单独存储设备、计算系统的同一存储设备的单独存储位置等)。
本文公开的例子使用多级单元(MLC)非易失性随机存储器(NVRAM)来存储信息。MLC NVRAM使用存储单元的物理属性值来指示、编码或代表所存储的信息。物理属性值是指存储单元的可测量的属性或特性。在本文公开的例子中,物理属性值表示电阻值。然而,可使用对应于所使用的存储技术的任何其它适当类型的属性,例如电容值、原子自旋值等。因此,可以此外或可替代地关于本文公开的例子使用任何其它类型的存储器。
本文公开的例子使用多级单元(MLC)非易失性随机存储器(NVRAM)来实现检查点。当多级单元被分成较小的电阻范围时,额外的数据位可存储在单元中。例如,具有四个电阻范围的多级单元可存储两个数据位。在这样的例子中,第一电阻范围对0-0的第一数据状态进行编码;第二电阻范围对0-1的第二数据状态进行编码;第三电阻范围对1-0的第三数据状态进行编码;以及第四电阻范围对1-1的第四数据状态进行编码。当使用多级单元时,在不同电阻范围之间的转变耗费时间和能量。转变到较大的电阻范围(例如由较高电阻编码的电阻范围)比转变到较小的电阻范围(例如由较低电阻编码的电阻范围)使用相对更多的时间和能量。在一些例子中,电阻范围编码被改变,使得在检查点操作期间,存储器操作从较大的电阻范围转变到较小的电阻范围,从而减小用于创建检查点的时间和能量。
图1描绘示例性多级单元(MLC)非易失性随机存取存储器(NVRAM)配置。第一示例性NVRMA单元110使用表示布尔值“0”(例如状态S0)的第一电阻范围(例如低电阻值)和表示布尔值“1”(例如状态S1)的第二电阻范围(例如高电阻值),来在每个单元存储一个位(例如具有位b0的单级NVRAM单元)。通过将NVRAM单元分成如示例性MLC NVRAM单元120和130所示的较小的电阻范围,更多的信息可被存储在NVRAM单元中,从而产生较高密度存储器。示例性NVRAM单元120在每个单元存储两个位(例如代表位b1和b0的四个电阻范围),且示例性NVRAM单元130在每个单元使用三个位(例如代表位b2、b1和b0的八个电阻范围)。在图1的所示例子中,每个MLC NVRAM单元120和130通过使用单元电阻的较细粒度量化来存储多个位。因此,MLC NVRAM用于增加存储密度,这是因为更多的位存储在相同数量的NVRAM单元中。
与其它类型的存储器(例如动态随机存取存储器(DRAM))不同,NVRAM具有非对称操作特性。写NVRAM比读NVRAM更耗费时间和能量。此外,与单级单元(例如第一示例性NVRAM单元110)比较,读和写操作在使用MLC NVRAM时使用更多的存储周期。在MLC NVRAM中,读使用多个步骤来准确地解析存储在NVRAM单元中的电阻级。此外,读MLC(例如单元120和130)的最高有效位花费较少的时间,这是因为读电路不需要以读MLC的最低有效位所需的精确度确定单元电阻。类似地,写MLC NVRAM单元比单级单元花费更长的时间,这是因为写使用了一系列读操作来验证正确的值已被写入NVRAM单元。因此,使用已知的技术恢复MLC NVRAM中的破坏的数据可能是过度耗费时间和能量的。
图2是被显示有具有四个多级存储单元的示例性存储块200的示例性检查点配置,其中一个存储单元以附图标记215示出。在其它例子中,存储块200可包括任何数量的多级单元。在所示例子中,使用具有第一级205(例如最高有效位(MSB))和第二级210(例如最低有效位(LSB))的两位每单元MLC NVRAM(例如图1的NVRAM单元120)来实现存储块200的各单元。在一些例子中,存储在第一级205中的数据代表工作数据,且存储在第二级210中的数据代表检查点数据。在一些例子中,作为检查点操作的一部分,工作数据从第一级205被拷贝到第二级210。
如在本文使用的,检查点是指特定时间点的存储状态,其中在该特定时间点,存储内容被存储或保存在存储器中,作为用于随后用来从错误、故障和/或毁坏中恢复的检查点数据。在所示例子中,基于来自使用存储块200执行计算的应用程序的检查点指令不时地(例如周期性地和/或非周期性地)创建检查点,以指示新检查点何时被存储。此外或可替代地,可使用触发检查点的创建的任何其它周期性和/或非周期性方法。例如,检查点可在设定数量的读和/或写操作之后(例如在一个读和/或写操作之后,在一百个读和/或写操作之后,在十亿个读和/或写操作之后,等等)被创建,可在一时间(例如一分钟、15分钟、一小时等)之后被创建,和/或可在任何其它适当的时间被创建。
虽然所示例子的多级单元215被示为两位每单元MLC,但本文公开的例子可关于每个单元具有多于两个位的MLC(例如每个单元具有三个位、每个单元具有四个位等)来实现。在一些例子中,每个单元额外的位用于存储额外的检查点。例如,第一层205可存储工作数据,第二层210可存储第一检查点数据,以及第三层可存储第二检查点数据。在一些例子中,位被组合成多位组合。例如,每个单元具有四个位的MLC可被分组成两个两位组,从而使工作数据的两个位能够存储在一个两位组中,以及检查点数据的一个集合存储在第二两位组中。
图3是可用于使用图2的示例性存储块200来实现版本存储器的示例性存储控制器305的方框图。图1的所示例子的存储控制器305包括检查点处理器310、存储器读取器320和存储器写入器330。
图3的示例性检查点处理器310由执行指令的处理器实现,但此外或可替代地,它可由专用集成电路(ASIC)、可编程逻辑器件(PLD)和/或现场可编程逻辑器件(FPLD)和/或其它电路实现。所示例子的检查点处理器310基于创建检查点的指令来创建检查点。
图3的示例性存储器读取器320由执行指令的处理器实现,但此外或可替代地,可由ASIC、DSP、FPGA和/或其它电路实现。在一些例子中,示例性存储器读取器320由与检查点处理器310相同的处理器实现。在所示例子中,示例性存储器读取器320响应于读请求而从存储单元215的一层读取数据,以提供该数据和/或在检查点操作期间使用该数据。在一些例子中,存储器读取器320响应于读请求从存储单元215的工作层读取数据。在一些例子中,存储器读取器320不响应于读请求从除了工作层以外的层读取数据。不响应于读请求而从除了工作层以外的层读取数据使存储器读取器320能够更快地读取存储在存储单元的工作层中的数据。
图3的示例性存储器写入器330由执行指令的处理器实现,但此外或可替代地,可以由ASIC、DSP、FPGA和/或其它电路实现。在一些例子中,示例性存储器读取器330由与存储器读取器320和/或检查点处理器310相同的处理器实现。在所示例子中,示例性存储器读取器330响应于写请求和/或在检查点操作期间将数据写入存储单元215的一层。
图4是每个单元具有两个位的多级单元400的方框图。在所示例子中,两个位被表示为b1405和b0410。示例性多级单元400包括通过改变多级单元400的电阻而编码的四个数据状态。第一状态S0420代表0-0的二进制数据并由第一电阻编码。第二状态S1425代表0-1的二进制数据并由第二电阻编码。第二电阻大于第一电阻。第三状态S2430代表1-0的二进制数据并由第三电阻编码。第三电阻大于第一电阻并大于第二电阻。第四状态S3435代表1-1的二进制数据并由第四电阻编码。第四电阻大于第一电阻、第二电阻和第三电阻中的每一个。因此,电阻编码被排序,使得它们代表递增的二进制数字的标准排序。
在所示例子中,工作位由b1405表示。检查点位由b0410表示。在正常操作期间,检查点位未被修改。因此,当工作位b1405的内容被修改且检查点位b0410中的检查点数据为0时,第一状态S0420和第三状态S2430将在彼此之间转变。第一工作数据状态转变450在1(如在第三状态S2430中的)和0(如在第一状态S0420中的)之间修改工作位405。检查点数据在第一工作数据状态转变450期间保持为0。此外,当工作位b1405的内容被修改且检查点位b0410中的检查点数据为1时,第二状态S1425和第四状态S3435将在彼此之间转变。第二工作数据状态转变455在1(如在第四状态S3435中的)和0(如在第二状态S1425中的)之间修改工作位405。检查点数据在第二工作数据状态转变455期间保持为1。
在检查点操作期间,存储在工作位b1405中的数据被拷贝到检查点位b0410。第一检查点转变470代表可操作为将第一状态S0420的工作位b1405(0)拷贝到检查点位b0410的状态转变。在所示例子中,第一检查点转变470不将多级单元400转变到不同的状态(例如多级单元400保持在第一状态S0420),这是因为存储在工作位b1405中的值(0)已经存储在检查点位b0410中。第二检查点转变475代表可操作为将第二状态S1425的工作位b1405(0)拷贝到检查点位b0410的状态转变。在所示例子中,第二检查点转变475将多级单元400从第二状态S1425转变到第一状态S0420。因此,由多级单元400编码的电阻在第二检查点转变475期间降低。第三检查点转变480代表可操作为将第三状态S2430的工作位b1405(1)拷贝到检查点位b0410的状态转变。在所示例子中,第三检查点转变480将多级单元400从第三状态S2430转变到第四状态S3435。因此,由多级单元400编码的电阻在第三检查点转变480期间增加。第四检查点转变485代表可操作为将第四状态S3435的工作位b1405(1)拷贝到检查点位b0410的状态转变。在所示例子中,第四检查点转变485不将多级单元400转变到不同的状态(例如多级单元400保持在第四状态S3435),这是因为存储在工作位b1405中的值(1)已经存储在检查点位b0410中。
图5是每个单元具有两个位的可替代多级单元500的方框图。在所示例子中,状态编码(S0,S1,S2和S3)被排序,使得状态S0对应于最小电阻,而状态S2对应于最大电阻。如上解释的,在多级单元500的不同电阻范围之间的转变消耗时间和能量。转变到较大电阻范围(例如由较高电阻编码的电阻范围)比转变到较小电阻范围(例如由较低电阻编码的电阻范围)使用相对更多的时间和能量。因此,改变图5的电阻编码,使得在检查点操作期间,存储操作将从较大电阻范围转变到较小电阻范围,从而降低用于创建检查点的时间和能量。
在所示例子中,两个规则用于图5的多级单元500的状态编码。首先,基于所存储的值将工作位b1405分组在一起。将工作位分组实现了工作位b1405的简单和快速读取,这是因为多级单元500的电阻级只需要彼此明显区分开以确定工作位b1405(例如而不是需要将更多的电阻级彼此区分开以确定工作位b1405和检查点位b0410)。其次,检查点位b0410被编码,使得检查点降低多级单元500的电阻。因此,与图4的例子比较,图5的所示例子反转第三状态S2530和第四状态S3535的电阻编码的排序。
在图5的所示例子中,第一状态S0520代表0-0的二进制数据并由第一电阻编码。第二状态S1525代表0-1的二进制数据并由第二电阻编码。第二电阻大于第一电阻。第三状态S2530代表1-0的二进制数据并由第三电阻编码。第三电阻大于第一电阻并大于第二电阻。第四状态S3535代表1-1的二进制数据并由第四电阻编码。第四电阻大于第一电阻和第二电阻但小于第三电阻。
在图5的所示例子中,当工作位b1405的内容被修改且检查点位b0410中的检查点数据为0时,第一状态S0520和第三状态S2530将在工作操作期间在彼此之间转变。第一工作数据状态转变550在1(如在第三状态S2530中的)和0(如在第一状态S0520中的)之间修改工作位405。检查点位b0410中的检查点数据在第一工作数据状态转变450期间保持为0。在所示例子中,图5的第一工作数据状态转变550比图4的第一工作数据状态转变450消耗更多的时间和能量。此外,当工作位b1405的内容被修改且检查点位b0410中的检查点数据为1时,第二状态S1525和第四状态S3535将在工作操作期间在彼此之间转变。第二工作数据状态转变555在1(如在第四状态S3535中的)和0(如在第二状态S1525中的)之间修改工作位b1405。检查点位b0410中的检查点数据在第二工作数据状态转变555期间保持为1。
在所示例子中,图4的工作数据状态转变450和455以及检查点转变470、475、480和480作为整体比图5的工作数据状态转变550和555以及检查点转变570、575、580和585消耗更多的时间和能量。在检查点操作期间,存储在工作位b1405中的数据被拷贝到检查点位b0410。第一检查点转变570代表可操作为将第一状态S0520的工作位b1405(0)拷贝到检查点位b0410的状态转变。在所示例子中,第一检查点转变570不将多级单元500转变到不同的状态(例如多级单元500保持在第一状态S0520中),这是因为存储在工作位b1405中的值(0)已经存储在检查点位b0410中。
第二检查点转变575代表可操作为将第二状态S1525的工作位b1405(0)拷贝到检查点位b0410的状态转变。在所示例子中,第二检查点转变580将多级单元500从第二状态S1525转变到第一状态S0520。因此,由多级单元400编码的电阻在第二检查点转变575期间降低。
第三检查点转变580代表可操作为将第三状态S2530的工作位b1405(1)拷贝到检查点位b0410的状态转变。在所示例子中,第三检查点转变575将多级单元500从第三状态S2530转变到第四状态S3535。因此,由多级单元500编码的电阻在第三检查点转变580期间降低。当与图4的所示例子比较时,由图5的多级单元500编码的电阻在第三检查点转变580期间降低而不是增加(如在图4的第三检查点转变480中的)。因为减小多级单元的电阻的转变比增加多级单元的电阻的转变消耗更少的时间和能量,因此图5的所示例子的多级单元500实现了相比对其二进制编码使用传统排序(例如图4的状态排序)的多级单元而言使用更少的时间和能量的检查点操作。
第四检查点转变585代表可操作为将第四状态S3535的工作位b1405(1)拷贝到检查点位b0410的状态转变。在所示例子中,第四检查点转变585不将多级单元500转变到不同的状态(例如多级单元500保持在第四状态S3535中),这是因为存储在工作位b1405中的值(1)已经存储在检查点位b0410中。
图6是每个单元具有三个位的多级单元600的方框图。在所示例子中,状态编码(S0,S1,S2,S3,S4,S5,S6和S7)被排序,使得状态S0对应于最小电阻,而状态S4对应于最大电阻。在图6的所示例子中,多级单元600存储两个检查点状态。多级单元600包括工作位b2605、第一检查点位b1610和第二检查点位b0615。在工作操作期间,多级单元600在各种状态之间转变(630)。例如,工作数据状态转变630在对应于检查点位b1610和b0615中所存储的检查点值的状态S0(代表0-0-0的数据)和状态S4(代表1-0-0的数据)、状态S1(代表0-0-1的数据)和状态S5(代表1-0-1的数据)、状态S2(代表0-1-0的数据)和S6(代表1-1-0的数据)以及S3(代表0-1-1的数据)和状态S7(代表1-1-1的数据)中的相应状态之间转变多级单元600。在这样的工作状态转变(其中工作位b2605被修改)期间,第一检查点位b1610和第二检查点位b0615保持不变。例如,如果所存储的检查点数据是0-1,则用于修改工作位b2605的工作状态转变630在状态S1和S5之间转变多级单元600,使得检查点位b1610和b0615中的检查点数据保持不变。
在检查点操作期间,检查点转变640在状态S0、S1、S2、S3、S4、S5、S6和S7中的不同状态之间转变多级单元600,使得存储在第一检查点位b1610中的数据被拷贝到第二检查点位b0615,存储在工作位b2605中的数据被拷贝到第一检查点位b0610。在这样的检查点操作期间,多级单元600从较高电阻编码转变到较低电阻编码。例如,状态S4(代表1-0-0的数据)转变到具有比该状态S4低的电阻编码的状态S6(代表1-1-0的数据)。
图7是每个单元具有四个位的多级单元700的方框图。在所示例子中,状态编码(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14和S15)被排序,使得状态S0对应于最小电阻,而状态S8对应于最大电阻。在图7的所示例子中,多级单元700存储三个检查点状态。多级单元700包括工作位b3705、第一检查点位b2710、第二检查点位b1715和第三检查点位b0720。此外或可替代地,可使用任何数量的位,例如5位、10位、16位、32位等,来增加可被存储的检查点状态的数量。图7的所示例子示出多级单元700的状态编码的示例性排序。然而,此外或可替代地,可以使用状态编码的其它排序。
在工作操作期间,工作状态转变730在对应于所存储的检查点值的所示状态S0(代表0-0-0-0的数据)、S1(代表0-0-0-1的数据)、S2(代表0-0-1-0的数据)、S3(代表0-0-1-1的数据)、S4(代表0-1-0-0的数据)、S5(代表0-1-0-1的数据)、S6(代表0-1-1-0的数据)、S7(代表0-1-1-1的数据)、S8(代表1-0-0-0的数据)、S9(代表1-0-0-1的数据)、S10(代表1-0-1-0的数据)、S11(代表1-0-1-1的数据)、S12(代表1-1-0-0的数据)、S13(代表1-1-0-1的数据)、S14(代表1-1-1-0的数据)和S15(代表1-1-1-1的数据)中的相应状态之间转变多级单元700。在这样的工作状态转变期间,第一检查点位b2710、第二检查点位b1715和第三检查点位b0720保持不变。例如,如果所存储的检查点数据是0-0-0,则用于修改工作位b3705的工作状态转变730在状态S0和S8之间转变多级单元700,使得检查点位b2710、b1715和b0720中的检查点数据保持不变。
在检查点操作期间,检查点转变740将多级单元700转变到这样一种状态,在该状态中,存储在第二检查点位b1715中的数据被拷贝到第三检查点位b0720,存储在第一检查点位b2710中的数据被拷贝到第二检查点位b1715,以及存储在工作位b3705中的数据被拷贝到第一检查点位b2710。在这样的检查点操作期间,多级单元700从较高电阻编码转变到较低电阻编码。例如,状态S4(代表0-1-0-0的数据)转变到状态S2(代表0-0-1-0的数据)。
图8是每个单元具有四个位的多级单元800的方框图。在图8的所示例子中,多个位被分组以形成位组。工作位组b3b2805代表两个位,且检查点位组b1b0810代表两个位。此外或可替代地,可在位组中使用任何其它数量的位。此外,可使用任何数量的位组。在所示例子中,每个单元的位数量(例如每个单元四个位)按照每个位组的位数量平分(例如每个位组两个位)。在一些例子中,每个单元的位数量未按照每个位组的位数量均匀划分。在这样的例子中,不使用其余位。然而,在一些例子中,利用其余位,来例如存储状态信息或其它类型的信息。
图8的所示例子示出多级单元800的状态编码的示例性排序。在所示例子中,状态编码(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14和S15)被排序,使得状态S0对应于最小电阻,而状态S14对应于最大电阻。如在所示例子中所示的,具有工作位组b3b2805的相同值的编码被分组在一起。按照工作位组b3b2805将状态编码分组实现了更快的读操作,这是因为多级单元800的电阻级只需要彼此足够区分开以确定工作位组b3b2805的值。此外,如在所示例子中示出的,状态编码被排序,使得在具有工作位组b3b2805的相同值的状态编码的每个分组内,具有与工作位组b3b2805相同的值的检查点位组b1b0810是最低电阻。使具有与工作位组b3b2805相同的值的检查点位组b1b0810作为最低电阻实现了有效的检查点操作,这是因为多级单元800的电阻在检查点操作期间降低。因此,例如状态S14、S13和/或S12的排序可改变。
在工作操作期间,工作状态转变830在状态S0到S15中的不同状态之间转变多级单元800。例如,多级单元800可基于写入工作位组b3b2805的数据在状态S0、状态S4、状态S8和S12之间转变。在所示例子中,存储在检查点位组b1b0810中的值在工作操作期间保持相同。
在检查点操作期间,检查点转变840将多级单元800转变到这样一种状态,在该状态中,存储在工作位组b3b2805中的数据被拷贝到检查点位组b1b0810。因此,多级单元800从较高电阻编码转变到较低电阻编码(840)。例如,状态S7(代表0-1-1-1的数据)转变到状态S5(代表0-1-0-1的数据)。
虽然在图3中示出了实现存储控制器305的示例性方式,但图3所示的元件、过程和/或设备中的一个或多个可以以任何其它方式组合、划分、重新布置、省略、消除和/或实现。此外,示例性检查点处理器310、示例性存储器读取器320、示例性存储器写入器330和/或更一般地图3的示例性存储控制器305可由硬件、软件、固件和/或硬件、软件和/或固件的任何组合实现。因此,例如示例性检查点处理器310、示例性存储器读取器320、示例性存储器写入器330和/或更一般地图3的示例性存储控制器305中的任意一个可由一个或多个电路、可编程处理器、专用集成电路(ASIC)、可编程逻辑器件(PLD)和/或现场可编程逻辑器件(FPLD)等实现。当本专利的装置或系统权利要求中的任一个被理解为涵盖纯软件和/或固件实现时,示例性检查点处理器310、示例性存储器读取器320和/或示例性存储器写入器330中的至少一个特此被明确地定义为包括用于存储软件和/或固件的有形计算机可读存储介质,例如存储器、DVD、CD、蓝光盘等。仍然进一步地,图3的示例性存储控制器305除了或代替图3所示的元件、过程和/或设备还可包括一个或多个元件、过程和/或设备,和/或可包括任意或全部所示元件、过程和/或设备中的多于一个。
代表用于实现图3的存储控制器305的示例性机器可读指令的流程图在图9、10和/或11中示出。在这些例子中,机器可读指令包括待由处理器(例如在下面关于图12讨论的示例性处理器平台1200中示出的处理器1212)执行的一个或多个程序。程序可嵌入在存储于诸如CD-ROM、软盘、硬盘驱动器、数字通用盘(DVD)、蓝光盘或与处理器1212相关的存储器之类的计算机可读存储介质上的软件中,但整个程序和/或其部分可以可替代地由除了处理器1212以外的设备执行和/或嵌入在固件或专用硬件中。此外,虽然关于在图9、10和/或11中所示的流程图描述了示例性程序,但此外或可替代地,可以使用实现示例性存储控制器305的很多其它方法。例如,块的执行顺序可改变,和/或所描述的一些块可改变、消除或组合。
如上面提到的,可使用存储在有形计算机可读介质上的编码指令(例如计算机可读指令)来实现图9、10和/或11的示例性过程,有形计算机可读介质例如为硬盘驱动器、闪存、只读存储器(ROM)、光盘(CD)、数字通用盘(DVD)、高速缓冲存储器、随机存取存储器(RAM)和/或信息被存储任何持续时间(例如延长的时间段、永久地、短暂时刻,用于信息的临时缓冲和/或缓存)的任何其它存储介质。如在本文使用的,术语“有形计算机可读介质”被明确地定义为包括任何类型的计算机可读存储介质且不包括传播信号。此外或可替代地,可使用存储在非临时计算机可读介质上的编码指令(例如计算机可读指令)来实现图9、10和/或11的示例性过程,非临时计算机可读介质例如为硬盘驱动器、闪存、只读存储器、光盘、数字通用盘、高速缓冲存储器、随机存取存储器和/或信息被存储任何持续时间(例如延长的时间段、永久地、短暂时刻,用于信息的临时缓冲和/或缓存)的任何其它存储介质。如在本文使用的,术语“非临时计算机可读介质”被明确地定义为包括任何类型的计算机可读介质且不包括传播信号。如在本文使用的,当短语“至少”用作权利要求的前序中的过渡词时,它以与术语“包括”是开放的相同的方式是开放的。因此,在前序中使用“至少”作为过渡词的权利要求可包括除了在该权利要求中明确列举的那些元件以外的元件。
图9是代表可被执行来实现图3的示例性存储控制器305以执行检查点操作的示例性机器可读指令900的流程图。图9的所示例子描绘当单个检查点状态存储在多级单元(例如图4的多级单元400、图5的多级单元500、图8的多级单元800)中时可被使用的示例性机器可读指令900。如关于图10描述的,图9的示例性机器可读指令900可被补充有额外的指令,以适应存储多个检查点状态的多级单元。
图9的示例性方法在块905开始。在所示例子中,在块905之前,工作模式操作出现,在此期间,执行一个或多个工作状态转变(例如图4、5和/或8的工作状态转变450、455、550、555和/或830中的一个或多个)。在工作模式操作期间,存储控制器305使多级单元400、500和/或800在不同的状态之间转变,同时确保图4和/或5的检查点位b0410和/或图8的检查点位组b1b0810代表与在工作数据转变之前相同的值(例如检查点位和/或检查点位组不改变)。
现在具体转向图9的所示例子,检查点处理器310确定是否应创建检查点(块905)。在所示例子中,响应于所接收的检查点请求来创建检查点。在一些例子中,检查点处理器310从请求读和/或写的应用程序中接收创建检查点的请求。此外或可替代地,可使用触发检查点的创建的任何其它周期性和/或非周期性方法。例如,检查点处理器310可在每个读和/或写操作之后创建检查点,检查点处理器310可以以一时间间隔(例如一分钟、15分钟、一小时等)创建检查点。
如果检查点处理器310没有创建检查点,则控制返回到块905,在块905处检查点处理器310继续确定是否应创建检查点。当检查点处理器310创建检查点(块905)时,存储器读取器320读取存储在多级单元的工作位置(例如图4和/或5的工作位b1405,图8的工作位组b3b2805,等等)中的数据(块910)。存储器写入器330将从多级单元的工作位置读取的数据写入检查点位置(例如图4和/或5的检查点位b0410,图8的检查点位组b1b0810,等等)(块915)。检查点处理器310接着确定是否有待被设置检查点的额外多级单元(块920)。如果额外的多级单元将被设置检查点,则控制返回到块910,在块910处额外的多级单元被设置检查点。如果没有额外的多级单元被设置检查点,则存储控制器305确定其是否应继续监控检查点请求(块935)。如果存储控制器305确定其应继续监控检查点请求(块935),则控制返回到块905,在块905处检查点处理器310确定另一检查点何时应被创建。否则,图10的示例性方法结束。
图10是代表可被执行来实现图3的示例性存储控制器305以执行检查点操作的示例性机器可读指令1000的流程图。图10的所示例子描绘当多个检查点状态存储在多级单元(例如图6的多级单元600、图7的多级单元700,等等)中时可使用的示例性机器可读指令1000。
图10的示例性过程在块1005开始。在所示例子中,在块1005之前,工作模式操作出现,在此期间,一个或多个工作状态转变(例如图6和/或7的工作状态转变630和/或730中的一个或多个)被执行。在工作模式操作期间,存储控制器305使多级单元600和/或700在不同的状态之间转变,同时确保图6和/或7的检查点位b0615、b1610、b0720、b1715和/或b2710代表与在工作数据转变之前相同的值。
现在具体转向图10的所示例子,检查点处理器310确定是否应创建检查点(块1005)。在所示例子中,响应于所接收的检查点请求来创建检查点。在一些例子中,检查点处理器310从请求读和/或写的应用程序接收创建检查点的请求。此外或可替代地,可使用触发检查点的创建的任何其它周期性和/或非周期性方法。例如,检查点处理器310可在每个读和/或写操作之后创建检查点,检查点处理器310可以以一时间间隔(例如一分钟、15分钟、一小时等)创建检查点。
如果检查点处理器310没有创建检查点(块1005),则控制返回到块1005,在块1005处检查点处理器310继续确定是否应创建检查点。当检查点处理器310创建检查点(块1005)时,存储器读取器320读取存储在第一检查点位置(例如检查点位b1610,检查点位b2710,等等)中的第一检查点数据(块1010)。然后通过存储器写入器330将第一检查点数据存储在多级单元的第二检查点位置(例如检查点位b0615,检查点位b1715,等等)中(块1015)。存储器读取器320然后将从工作位置(例如工作位b2605,工作位b3705,等等)中读取工作数据。存储器写入器330将工作数据写入第一检查点位置(例如检查点位b1610,检查点位b2710,等等)(块1025)。检查点处理器310确定是否有待被设置检查点的额外的多级单元(块1030)。如果额外的多级单元将被设置检查点,则控制返回到块1010,在块1010处额外的多级单元被设置检查点。如果没有额外的多级单元被设置检查点,则存储控制器305确定其是否应继续监控检查点请求(块1035)。如果存储控制器305确定其应继续监控检查点请求(块1035),则控制返回到块1005,在块1005处检查点处理器确定应何时创建检查点。否则,图10的示例性方法结束。
图11是代表可被执行来实现图3的示例性存储控制器305以执行电阻编码的示例性机器可读指令1100的流程图。图11的示例性过程当存储器读取器320从多级单元(例如图5的多级单元500,图6的多级单元600,图7的多级单元700,图8的多级单元800,等等)读取第一电阻(块1105)时在块1105开始。检查点处理器310使第一电阻与第一多位值相关联(块1110)。在所示例子中,第一多位值(例如由图5的状态S2530代表的多位值)代表多级单元的多层。存储器读取器320从多级单元读取第二电阻(块1115)。在所示例子中,第二电阻小于第一电阻。检查点处理器310使第二电阻与具有大于第一多位值的二进制表示的第二多位值(例如由图5的状态S3535代表的多位值)相关联(块1120)。在一些例子中,第二电阻大于第一电阻,且第一电阻的二进制表示小于第一多位值的二进制表示。
图12是能够执行图9、10和11的示例性机器可读指令以实现图3的示例性存储控制器的示例性处理器平台1200的方框图。处理器平台1200可以是例如服务器、个人计算机、移动电话(例如蜂窝电话)、个人数字助理(PDA)、互联网器具或任何其它类型的计算设备。
本例的系统1200包括处理器1212。例如,处理器1212可由来自任何期望系列或制造商的一个或多个微处理器或控制器实现。
处理器1212包括本地存储器1213(例如高速缓冲存储器)并经由总线1218与包括易失性存储器1214和非易失性存储器1216的主存储器通信。易失性存储器1214可由同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)和/或任何其它类型的随机存取存储器设备实现。所示例子的非易失性存储器1216由多级单元(MLC)非易失性随机存取存储器(NVRAM)实现。然而,非易失性存储器1216可由任何其它期望类型的存储器设备(例如闪存、相变存储器(PCRAM)、忆阻器等)实现。对主存储器1214、1216的访问由存储控制器305控制。在所示例子中,存储控制器305包括如关于图3描述的检查点处理器310、存储器读取器320和存储器写入器330。
处理器平台1200还包括接口电路1220。接口电路1220可通过任何类型的接口标准,例如以太网接口、通用串行总线(USB)和/或PCI express接口来实现。
一个或多个输入设备1222连接到接口电路1220。输入设备1222允许用户将数据和命令输入到处理器1212中。输入设备可由例如键盘、鼠标、触摸屏、轨迹板、轨迹球、isopoint和/或语音识别系统实现。
一个或多个输出设备1224也连接到接口电路1220。输出设备1224可由例如显示设备(例如液晶显示器、阴极射线管显示器(CRT)、打印机和/或扬声器)实现。接口电路1220因此一般包括图形驱动卡。
接口电路1220还包括例如调制解调器或网络接口卡的通信设备,以便于经由网络1226(例如以太网连接、数字用户线(DSL)、电话线、同轴电缆、蜂窝电话系统等)与外部计算机交换数据。
处理器平台1200还包括用于存储软件和数据的一个或多个大容量存储设备1228。这样的大容量存储设备1228的例子包括软盘驱动器、硬盘驱动器、光盘驱动器和数字通用盘(DVD)驱动器。
图9、10和/或11的编码指令1232可存储在大容量存储设备1228中、易失性存储器1214中、非易失性存储器1216中、本地存储器1213中和/或例如CD或DVD的可移动存储介质上。
从前文中,将认识到,所公开的方法、装置和制品使用多级(MLC)非易失性随机存取存储器(NVRAM)来实现本地检查点。有利地,检查点使用比传统检查点系统更少的时间和能量。因此,检查点在NVRAM中是快速和强大的,并实现一致的数据管理。
虽然本文公开了某些示例性方法、装置和制品,本专利的涵盖范围不限于此。相反,本专利涵盖完全落在本专利的权利要求的范围内的所有方法、装置和制品。

Claims (15)

1.一种使用多级单元设置本地检查点的方法,所述方法包括:
将第一数据存储在多级单元的第一级中;
将第二数据存储在所述多级单元的第二级中,所述第二数据代表所述第一数据的检查点;以及
将所述第一数据从所述多级单元的所述第一级拷贝到所述第二级,以创建所述检查点。
2.如权利要求1所述的方法,其中将所述第一数据从所述第一级拷贝到所述第二级包括从第一数据状态转变到第二数据状态。
3.如权利要求2所述的方法,其中所述第一数据状态由所述多级单元的第一物理属性值表示,所述第二数据状态由所述多级单元的第二物理属性值表示,其中所述物理属性值是电阻值、电容值和原子自旋值中的至少一个。
4.如权利要求3所述的方法,其中所述第一数据状态代表第一二进制值,所述第二数据状态代表第二二进制值,所述第一二进制值大于或等于所述第二二进制值。
5.如权利要求4所述的方法,其中所述第一物理属性值小于或等于所述第二物理属性值。
6.如权利要求1所述的方法,进一步包括响应于读请求来读取所述第一数据。
7.如权利要求6所述的方法,其中不响应于所述读请求来读取所述第二数据。
8.如权利要求1所述的方法,其中所述第一数据是单个位。
9.一种在多级单元中实现本地检查点的装置,所述装置包括:
检查点处理器,用于创建存储在所述多级单元的第一级中的第一数据的检查点,所述检查点存储在所述多级单元的第二级中;
存储器读取器,用于读取存储在所述多级单元中的数据;以及
存储器写入器,用于将数据写入所述多级单元。
10.如权利要求9所述的装置,其中所述存储器读取器用于响应于读请求来从所述多级单元的所述第一级中读取数据。
11.如权利要求10所述的装置,其中所述存储器读取器不响应于所述读请求来从所述多级单元的所述第二级中读取数据。
12.一种机器可读存储介质,所述机器可读存储介质包括指令,所述指令在被执行时使机器至少:
将第一数据存储在非易失性随机存取存储器(NVRAM)的多级单元的第一级中;
将第二数据存储在所述多级单元的第二级中,所述第二数据代表所述第一数据的检查点;以及
将所述第一数据从所述多级单元的所述第一级拷贝到所述第二级,以创建所述检查点。
13.如权利要求12所述的方法,其中将所述第一数据从所述第一级拷贝到所述第二级包括从第一数据状态转变到第二数据状态。
14.如权利要求13所述的方法,其中:
所述第一数据状态由所述多级单元的第一物理属性值表示,所述第一数据状态代表第一二进制值;以及
所述第二数据状态由所述多级单元的第二物理属性值表示,所述第二数据状态代表第二二进制值,其中所述物理属性值是电阻值、电容值和原子自旋值中的至少一个。
15.如权利要求14所述的方法,其中:
所述第一二进制值大于或等于所述第二二进制值;并且
所述第一物理属性值小于或等于所述第二物理属性值。
CN201280068638.8A 2012-04-27 2012-04-27 使用多级单元设置本地检查点 Pending CN104081357A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/035485 WO2013162598A1 (en) 2012-04-27 2012-04-27 Local checkpointing using a multi-level cell

Publications (1)

Publication Number Publication Date
CN104081357A true CN104081357A (zh) 2014-10-01

Family

ID=49483697

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280068638.8A Pending CN104081357A (zh) 2012-04-27 2012-04-27 使用多级单元设置本地检查点

Country Status (5)

Country Link
US (1) US10025663B2 (zh)
EP (1) EP2842036B1 (zh)
KR (1) KR101620772B1 (zh)
CN (1) CN104081357A (zh)
WO (1) WO2013162598A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304863B2 (en) * 2013-03-15 2016-04-05 International Business Machines Corporation Transactions for checkpointing and reverse execution
US9813851B2 (en) * 2013-08-14 2017-11-07 Case Global, Inc. Checkpoint system and process
KR20160115656A (ko) 2015-03-26 2016-10-06 김지환 지방 제거 장치 및 세포 분리 장치
US10754759B1 (en) * 2018-02-05 2020-08-25 Xilinx, Inc. Breakpointing circuitry that evaluates breakpoint conditions while running clock to target circuit

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410685A (en) * 1990-06-12 1995-04-25 Regents Of The University Of Michigan Non-intrinsive method and system for recovering the state of a computer system and non-intrusive debugging method and system utilizing same
US20090213653A1 (en) * 2008-02-21 2009-08-27 Anobit Technologies Ltd Programming of analog memory cells using a single programming pulse per state transition
CN100547565C (zh) * 2004-12-16 2009-10-07 桑迪士克股份有限公司 带多流更新跟踪的非易失性存储器和方法
CN102184141A (zh) * 2011-05-05 2011-09-14 曙光信息产业(北京)有限公司 检查点数据的存储方法和装置
WO2012050934A2 (en) * 2010-09-28 2012-04-19 Fusion-Io, Inc. Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8050903B1 (en) 1990-05-29 2011-11-01 Texas Instruments Incorporated Apparatus and method for checkpointing simulation data in a simulator
US6718435B2 (en) 2001-08-14 2004-04-06 International Business Machines Corporation Method and system for migrating data in a raid logical drive migration
US7366826B2 (en) 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
US7840768B2 (en) 2005-12-13 2010-11-23 Reliable Technologies, Inc. Memory-controller-embedded apparatus and procedure for achieving system-directed checkpointing without operating-system kernel support
US7206230B2 (en) 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
JP4560073B2 (ja) 2007-09-18 2010-10-13 株式会社東芝 不揮発性半導体記憶装置
US7818610B2 (en) 2007-09-27 2010-10-19 Microsoft Corporation Rapid crash recovery for flash storage
KR20090109823A (ko) * 2008-04-16 2009-10-21 삼성전자주식회사 저항체를 이용한 멀티 레벨 비휘발성 메모리 장치
US8139386B2 (en) * 2008-04-21 2012-03-20 Micron Technology, Inc. Memory, computing system and method for checkpointing
US8261158B2 (en) * 2009-03-13 2012-09-04 Fusion-Io, Inc. Apparatus, system, and method for using multi-level cell solid-state storage as single level cell solid-state storage
KR101169770B1 (ko) 2009-12-30 2012-07-31 배형진 이형강선망을 이용한 콘크리트 구조물 및 이의 보강공법
US8627033B2 (en) * 2010-12-20 2014-01-07 Microsoft Corporation Storage device migration and redirection
US8942035B2 (en) * 2011-03-23 2015-01-27 Seagate Technology Llc Non-sequential encoding scheme for multi-level cell (MLC) memory cells
KR101676932B1 (ko) 2012-03-02 2016-11-16 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 멀티-레벨 셀을 사용하여 버전화되는 메모리들

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410685A (en) * 1990-06-12 1995-04-25 Regents Of The University Of Michigan Non-intrinsive method and system for recovering the state of a computer system and non-intrusive debugging method and system utilizing same
CN100547565C (zh) * 2004-12-16 2009-10-07 桑迪士克股份有限公司 带多流更新跟踪的非易失性存储器和方法
US20090213653A1 (en) * 2008-02-21 2009-08-27 Anobit Technologies Ltd Programming of analog memory cells using a single programming pulse per state transition
WO2012050934A2 (en) * 2010-09-28 2012-04-19 Fusion-Io, Inc. Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol
CN102184141A (zh) * 2011-05-05 2011-09-14 曙光信息产业(北京)有限公司 检查点数据的存储方法和装置

Also Published As

Publication number Publication date
WO2013162598A1 (en) 2013-10-31
KR20140105856A (ko) 2014-09-02
US10025663B2 (en) 2018-07-17
EP2842036B1 (en) 2019-07-03
KR101620772B1 (ko) 2016-05-12
EP2842036A4 (en) 2015-11-04
EP2842036A1 (en) 2015-03-04
US20140351495A1 (en) 2014-11-27

Similar Documents

Publication Publication Date Title
CN111553473A (zh) 数据冗余方法及执行数据冗余方法的神经网络处理器
US7409623B2 (en) System and method of reading non-volatile computer memory
CN105637490A (zh) 用于在闪速存储器装置之间迁移数据的方法和系统
CN105683927A (zh) 用于重新平衡贮存在闪速存储器装置中的数据的方法和系统
US10970167B2 (en) Memory device
CN102221981A (zh) 管理层信息的方法和装置
US7257668B2 (en) Method and system for enhancing the endurance of memory cells
CN104081357A (zh) 使用多级单元设置本地检查点
TWI470432B (zh) 電子系統及其快閃記憶體管理方法
CN107918523A (zh) 数据储存装置及其数据写入方法
CN106155582B (zh) 非挥发性储存装置与控制器
CN112119380B (zh) 带有旁路的奇偶校验记录
KR20210006121A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
CN113849121A (zh) 用于访问条带形式的数据的存储器系统及其操作方法
CN109119126B (zh) 半导体器件和错误管理方法
CN104081362A (zh) 使用多级单元的版本存储器
CN109254867B (zh) 数据冗余方法及装置
US20200194080A1 (en) Consolidation of copy-back and write in pram blocks
US11119676B2 (en) Using spare bits in memory systems
US20240069740A1 (en) Systems and methods for extending useful life of solid state drives
US20220398036A1 (en) Systems and methods of determining degradation in analog compute-in-memory (acim) modules
US20220398037A1 (en) Systems and Methods of Compensating Degradation in Analog Compute-In-Memory (ACIM) Modules
CN100428175C (zh) 侦测资料错误码的方法
CN103678159A (zh) 数据储存装置及其数据写入方法
US20170329536A1 (en) Systems and methods for wear levelling in a storage array

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20141001