CN107003919A - 容错自动双列直插存储器模块刷新 - Google Patents

容错自动双列直插存储器模块刷新 Download PDF

Info

Publication number
CN107003919A
CN107003919A CN201580064297.0A CN201580064297A CN107003919A CN 107003919 A CN107003919 A CN 107003919A CN 201580064297 A CN201580064297 A CN 201580064297A CN 107003919 A CN107003919 A CN 107003919A
Authority
CN
China
Prior art keywords
processor
memory
equipment
nonvolatile memory
event
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.)
Granted
Application number
CN201580064297.0A
Other languages
English (en)
Other versions
CN107003919B (zh
Inventor
S.贾亚库马尔
M.J.库马尔
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 CN107003919A publication Critical patent/CN107003919A/zh
Application granted granted Critical
Publication of CN107003919B publication Critical patent/CN107003919B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0009Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
    • G11C14/0036Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell and the nonvolatile element is a magnetic RAM [MRAM] element or ferromagnetic cell
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • G11C5/148Details of power up or power down circuits, standby circuits or recovery circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/20Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2015Redundant power supplies
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • G11C14/0009Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
    • G11C14/0045Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell and the nonvolatile element is a resistive RAM element, i.e. programmable resistors, e.g. formed of phase change or chalcogenide material

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Power Engineering (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

描述容错自动DIMM(双列直插存储器模块)刷新或ADR的方法和设备。在一实施例中,处理器包括非易失性存储器以存储来自处理器的一个或多个易失性缓冲器的数据。来自处理器的一个或多个易失性缓冲器的数据响应要引起系统复位或关机的事件的发生而存储到非易失性存储器中。还公开并且要求保护其他实施例。

Description

容错自动双列直插存储器模块刷新
技术领域
本公开一般涉及电子学领域。更具体来说,一些实施例一般涉及容错自动双列直插存储器模块刷新。
背景技术
一般来说,用来存储计算系统中的数据的存储器能够是易失性的(要存储易失性信息)或者非易失性的(要存储永久信息)。易失性存储器中存储的易失性数据结构一般用于被要求支持程序的运行时期间的程序的功能性的暂时或中间信息。另一方面,非易失性(或永久存储器)中存储的永久数据结构在程序的运行时之外是可用的,并且能够再使用。
当数据写到永久存储器时,假定一旦存储操作完成则这种数据实际上写到永久存储器。但是,预计送往永久存储器的数据在存储操作的执行之后并且在数据实际上保存永久存储器之前仍然可驻留在易失性存储器/缓冲器中。如果系统故障(例如电力故障)在这个时间间隙期间发生,则预计送往永久存储器的数据可能丢失或损坏。
附图说明
参照附图提供详细描述。附图中,参考标号最左边的数字标识首次出现该参考标号的附图。不同附图中的相同参考标号的使用表示相似或相同项。
图1、图2、图5、图6和图7示出可用来实现本文所述的各个实施例的计算系统的实施例的框图。
图3示出按照一实施例、存在于处理器集成电路(IC)晶片的各种组件的框图。
图4A和图4B示出按照一些实施例的流程图。
具体实施方式
在以下描述中,提出许多具体细节,以便提供对各个实施例的透彻了解。但是,即使没有具体细节也可实施各个实施例。在其他情况下,没有详细描述众所周知的方法、过程、组件和电路,以免影响对具体实施例的理解。此外,可使用诸如集成半导体电路(“硬件”)、组织为一个或多个程序的计算机可读指令(“软件”)或者硬件和软件的某种组合之类的各种部件,来执行实施例的各个方面。为了便于本公开,提到“逻辑”将表示硬件、软件或者它们的某种组合。
如上所述,与易失性主存储器不同,永久存储器可用来持久地存储数据,使得所存储数据跨系统故障、复位和/或重启是可用的。软件认为当存储指令完成时写到永久存储器范围的数据立即达到持久性,但是数据仍然可能驻留在易失性缓冲器中(例如存储控制器写挂起队列或处理器高速缓存)。为了确保这些易失性缓冲器中的数据到达永久存储器,使用ADR(或自动DIMM(双列直插存储器模块)刷新)机制或PCOMMIT(其是按照指令集架构的指令)。
ADR机制能够用于对永久存储器的处理器生成的写操作或者针对永久存储器的入站输入/输出(IO或I/O)写操作。ADR是一种遗留机制(legacy mechanism),其响应AC(交流)电力故障而冲刷存储控制器缓冲器(例如写挂起队列)和IIO(集成IO)缓冲器(其在一实施例中保存入站数据)。增强ADR也可将这个电力故障保护扩展到处理器高速缓存。在电力故障的情况下,ADR和增强ADR(eADR)均依靠平台大容量电容来保持DC(直流)轨在短时间量被供电,以允许处理器冲刷其高速缓存和缓冲器。在上述情形的任一个中,基本前提是ADR应当始终成功,以防止任何数据丢失。类似地,如果使用PCOMMIT,则PCOMMIT的语义要求所有iMC(集成存储控制器)WPQ(写挂起队列)的全局冲刷,这可能限制性能。
为此,一些实施例提供容错ADR技术。例如,一实施例提供一种用于在ADR期间面临平台故障(例如链路或VR(电压调节器)故障)时取得NVDIMM(非易失性双列直插存储器模块)的可靠永久性的机制。在一个实施例中,处理器包括非易失性存储器以存储来自处理器的一个或多个易失性缓冲器的数据。来自处理器的一个或多个易失性缓冲器的数据响应要引起系统复位或关机的事件的发生而被存储到非易失性存储器中。所存储数据则能够在下一次重新引导时从非易失性存储器中恢复。
此外,本文所述的技术可在各种计算系统(例如,包括诸如台式、工作站、服务器、机架系统等的非移动计算装置以及诸如智能电话、平板、UMPC(超级移动个人计算机)、膝上型计算机、Ultrabook™计算装置、智能手表、智能眼镜、智能手环等的移动计算装置)中提供,包括参照图1-7所述的那些系统。更具体来说,图1示出按照一实施例的计算系统100的框图。系统100包括一个或多个处理器102-1至102-N(本文中一般称作“多个处理器102”或“处理器102”)。处理器102可经由互连或总线104进行通信。各处理器可包括各种组件,为了清楚起见,仅参照处理器102-1来论述其中一部分。相应地,其余处理器102-2至102-N的每个可包括参照处理器102-1所述的相同或相似组件。
在一实施例中,处理器102-1可包括一个或多个处理器核106-1至106-M(本文中称作“多个核106”或者更一般称作“核106”)、高速缓存108(其在各个实施例中可以是共享高速缓存或专用高速缓存)和/或路由器110。处理器核106可在单个集成电路(IC)芯片上实现。此外,芯片可包括一个或多个共享和/或专用高速缓存(例如高速缓存108)、总线或互连(例如总线或互连112)、逻辑120、逻辑150、存储控制器(例如参照图5-7所述的那些存储控制器)、非易失性存储器(NVM)152(例如包括闪速存储器、固态驱动器(SSD)等)或其他组件。
在一个实施例中,路由器110可用来在处理器102-1和/或系统100的各种组件之间进行通信。另外,处理器102-1可包括一个以上路由器110。另外,多个路由器110可进行通信,以便实现处理器102-1的内部或外部的各种组件之间的数据路由选择。
高速缓存108可存储数据(例如包括指令),其由处理器102-1的一个或多个组件、例如核106来使用。例如,高速缓存108可本地缓存在易失性存储器114中存储的数据,以供处理器102的组件进行更快的访问。如图1所示,存储器114可经由互连104与处理器102进行通信。在一实施例中,高速缓存108(其可被共享)可具有各个级,例如,高速缓存108可以是中间级高速缓存和/或最后一级高速缓存(LLC)。核106的每个还可包括第1级(L1)高速缓存(116-1)(本文中一般称作“L1高速缓存116)和/或第2级(L2)高速缓存(例如参照图3所述)。处理器102-1的各种组件可直接、经过总线(例如总线112)和/或存储控制器或集线器来与高速缓存108进行通信。
如图1所示,存储器114可经过易失性存储控制器120来耦合到系统100的其他组件。系统100还包括NVM存储控制器逻辑150,以便将NVM存储器152耦合到系统100的各种组件。在一些实施例中,存储器152包括非易失性存储器,例如纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)、闪速存储器、自旋矩转移随机存取存储器(STTRAM)、电阻随机存取存储器、字节可寻址3维交叉点存储器、PCM(相变存储器)等。
此外,即使存储控制器150示为耦合在互连104与存储器152之间,逻辑150也可位于系统100中的其他位置。例如,在各个实施例中,逻辑150(或者其部分)可设置在处理器102、控制器120等其中之一中。在一实施例中,逻辑150和NVM 152包含在SSD中。此外,逻辑150控制对一个或多个NVM装置152的访问(例如,其中一个或多个NMV装置在一些实施例中设置在相同集成电路晶片上),如本文针对各个实施例所述。另外,在一实施例中,存储控制器120和NVM控制器150可结合为单个控制器。
图2示出按照一实施例的二级系统主存储器的框图。一些实施例针对系统主存储器200,其包括存储器的两级(备选地称作“2LM”),存储器的两级包括系统磁盘级存储的缓存子集(除了例如运行时数据之外)。这个主存储器包括:第一级存储器210(本文中备选地称作“近存储器”),其包括由例如易失性存储器114(例如包括DRAM(动态随机存取存储器))、NVM 152等所组成的更小更快的存储器;以及第二级存储器208(本文中备选地称作“远存储器”),其包括更大更慢(相对近存储器)的易失性存储器(例如存储器114)或者非易失性存储器存储装置(例如NVM 152)。
在一实施例中,远存储器对主操作系统(OS)作为“主存储器”来提供,而近存储器是远存储器的高速缓存,其对OS是透明的,因而使以下所述实施例看起来与一般主存储器解决方案是相同的。二级存储器的管理可通过经由主中央处理器(CPU)102(其在本文中可互换地称作“处理器”)所运行的逻辑和模块的组合进行。近存储器可经由一个或多个高带宽低等待时间链路、总线或互连来耦合到主系统CPU,以供有效处理。远存储器可经由一个或多个低带宽高等待时间链路、总线或互连(如与近存储器相比)来耦合到CPU。
参照图2,主存储器200向CPU 102提供对系统磁盘存储存储器(例如图5的磁盘驱动器528或图6的数据存储装置648)的内容的运行时数据存储和访问。CPU可包括高速缓冲存储器,其存储主存储器200的内容的子集。远存储器可包括如本文所述的易失性或者非易失性存储器。在这类实施例中,近存储器210服务于远存储器208的低等待时间和高带宽(即,用于CPU 102访问)高速缓存,近存储器210可具有相当低的带宽和更高等待时间(即,用于CPU 102访问)。
在一实施例中,近存储器210由近存储控制器(NMC)204来管理,而远存储器208由远存储控制器(FMC)206来管理。FMC 206向系统OS报告作为主存储器的远存储器208(即,系统OS将远存储器208的大小识别为系统主存储器200的大小)。系统OS和系统应用“不知道”近存储器210的存在,因为它是远存储器208的“透明”高速缓存。
CPU 102还包括2LM引擎模块/逻辑202。“2LM引擎”是一种逻辑构造,其可包括硬件和/或微码扩展,以支持二级主存储器200。例如,2LM引擎202可保持全标签表,全标签表跟踪远存储器208的所有架构上可见元件的状态。例如,当CPU 102尝试访问主存储器200中的特定数据段时,2LM引擎202确定数据段是否包含在近存储器210中;如果不是的话,则2LM引擎202取远存储器208中的数据段,并且随后将数据段写到近存储器210(与高速缓存未命中相似)。要理解,因为近存储器210充当远存储器208的“高速缓存”,所以2LM引擎202还可运行数据预取或类似高速缓存效率过程。
此外,2LM引擎202可管理远存储器208的其他方面。例如,在远存储器208包括非易失性存储器(例如NVM 152)的实施例中,要理解,非易失性存储器、例如闪存因大量读/写而经受存储器段的降级。因此,2LM引擎202可按照对系统软件是透明的方式来运行包括磨损均衡、坏区块避免等的功能。例如,运行磨损均衡逻辑可包括从远存储器208中的清洁未映射段的空闲池选择具有较低擦除循环计数的段。
在一些实施例中,近存储器210的大小可比远存储器208要小,但是准确比率可基于例如预计系统使用而改变。在这类实施例中,要理解,因为远存储器208可包括更密集和/或更廉价非易失性存储器,所以主存储器200的大小可廉价和有效并且与系统中的DRAM(即,近存储器210)的量无关地增加。
在一个实施例中,远存储器208采取压缩形式来存储数据,以及近存储器210包括对应未压缩版本。因此,当近存储器210请求远存储器208(其在一实施例中可能是非易失性DIMM)的内容时,FMC 206检索内容,并且按照调整成匹配使用中的压缩算法的固定有效载荷大小将它返回(例如256B传输)。
如上所述,用于解决计算系统中的容错的当前解决方案造成各种问题。例如,一些当前解决方案可造成下列问题:
(1)ADR或eADR机制中的一个固有风险是,平台在AC电力故障时冲刷这些数据的任何故障一般导致数据丢失。例如,这些故障可因链路错误、事务重试、VR故障等而发生,这可能防止数据在AC电力故障之后在所提供保持时间之内被提交给永久存储器;
(2)周期地冲刷缓冲器的运行时机制通过称作PCOMMIT的ISA(指令集架构)来提供。问题是,PCOMMIT仅用于处理器生成的写操作,以及入站IO写操作仍然需要依靠ADR来取得永久性;和/或
(3)PCOMMIT还因与在运行时冲刷WPQ并且取回完成所关联的等待时间而影响对永久存储器装置的数据吞吐量。它还要求现有软件需要被修改以理解PCOMMIT。
为了解决这些问题,一实施例在面临平台故障时确保驻留在易失性缓冲器(例如(一个或多个)存储器缓冲器、(一个或多个)IIO缓冲器等)中的数据的持久性。它还对处理器生成的写操作和入站IO写操作均取得这个方面。这在没有PCOMMIT指令的情况下对处理器生成的写操作来取得,这又确保数据吞吐量以及软件不必被修改以理解PCOMMIT指令。
在一实施例中,(例如较小)非易失性影子缓冲器设置在处理器内部。这在正常操作下未使用。响应ADR事件的发生,处理器使易失性缓冲器的内容快照(或副本)进入这个非易失性存储装置。这能够充当WPQ和IIO缓冲器中的数据的非易失性备份存储装置。但是,如果NV影子缓冲器设置在处理器晶片外部,则链路等待时间(即备份缓冲器与易失性缓冲器之间的链路)可能允许或者可能不允许实际备份完成(或者甚至开始)的任何时间。
一旦易失性缓冲器的快照(snap-shot)在处理器内部备份,ADR机制则能够开始生效(或者接管),以便将易失性缓冲器冲刷到永久存储器。如果这个冲刷成功,则能够丢弃备份数据。如果冲刷不成功(例如因平台错误或故障),则数据能够从备份镜像中恢复。
此外,在一些实施例中,备份存储可基于非易失性技术,例如PCM、3维交叉点存储器和/或自旋矩转移随机存取存储器(STTRAM)。这些技术提供永久性,而没有与闪速存储装置关联的较大写等待时间。
图3示出按照一实施例、存在于处理器集成电路(IC)晶片300的各种组件的框图。例如,在各个实施例中,处理器晶片300可包括与参照图1-2和图5-7的处理器所述组件相同或相似的组件。如所示,处理器晶片300包括多个处理器核(标记为核0至核7)、耦合到各处理器核的L1/L2以及LLC池(它们在处理器核之间共享)和Cbox逻辑(标记为Cbox 0至Cbox7,例如以便提供LLC装置之间的相干性)。每个LLC可包括LLC的20MB分片(slice),但是可根据实现来使用其他分片大小。
参照图3,一个或多个互连或总线302(例如参照图1所述的互连104/112)如所示耦合处理器晶片300的各种组件。处理器晶片300还包括用于与(例如两个)快速路径互连(QPI)链路进行通信(例如基于QPI分组生成逻辑306所形成的分组)的物理层(PHY)304。另一个物理层逻辑308促进与(例如4)SMI(可缩放存储器互连)通道的通信。
如本文所述,WPQ或存储器缓冲器一般表示写挂起队列(WPQ)或者iMC 310内部的缓冲器(图3中标记为“P1”)。WPQ中的数据等待被提交给存储器,不过是全局可见的。这在ADR事件时被冲刷到存储器。另外,ADR一般表示遗留机制,其提供外部触发,其在被激活时使WPQ(在概念上称作“ADR安全区”)中的数据被冲刷到NVDIMM。ADR引脚通过早期AC电力检测电路来触发。AC电力丢失的检测暗示ADR进入的系统可用的DC电力的某个量。“保持时间”是电力供应设计、系统电力消耗和大容量电容的函数。一般来说,硬件应当保证“ADR安全区”中的所有数据在“保持时间”到期之前被冲刷并且提交给永久存储器。此外,本文所述的ADR事件一般表示引起系统复位或关机的事件。ADR覆盖AC电力故障、CF9复位和热跳闸。
一个实施例包括下列组件:NVM 152(处理器的易失性缓冲器的备份或者任何其他ADR事件)以及从备份镜像中恢复数据并且在下一次重新引导时将它提交给存储器的能力。此外,如图3的框图所示,iMC 310中的缓冲器(示为P1)和IIO切换器312中的缓冲器(示为P2)在到永久存储器的途中驻留。处理器晶片300内部的NVM 152设想为足够大以适应易失性缓冲器(例如包括WPQ、IIO缓冲器等的存储器缓冲器中的一个或多个)中存储的数据。组合IIO缓冲器和WPQ大小可小于100个高速缓存行,并且因此低容量存储装置应当是充分的。另外,处理器晶片300内部的NVM 152在一实施例中被设想成共享与(一个或多个)处理器核相同的电力轨,以允许NVM至少保持操作与发送待备份数据的(一个或多个)处理器核同样长。在一个实施例中,处理器晶片300可包括一个或多个电容器(例如存储提供给NVM和/或(一个或多个)处理器核的附加电荷),以增加NVM和/或(一个或多个)处理器核在电力故障或ADR事件之后保持为操作的时间量。另外,处理器晶片300可包括接近晶片300的组件(例如处理器核和/或PCU 314)的一个或多个传感器(未示出),以检测AC电力丢失或ADR事件。这些传感器又能够引起如本文所述的对NVM 152的数据备份的开始。
此外,通过软件进行的任何存储操作一旦发布到这个简图中所示的缓冲器(P1/P2)则被认为完成。数据在到NVDIMM的途中仍然驻留在这些缓冲器中对软件是透明的,并且在这点上的软件将此看作是永久数据。在这点上的任何系统电力故障或复位可引起静默数据破坏,因为软件将这个数据看作被提交给永久存储装置。ADR是一种平台特征,其向处理器300中的PCU 314(电力控制单元)提供关于平台AC轨已经出故障的指示。DC轨可以是活动的,直到平台保持时间为止,并且冲刷应当在这个时间之内完成。例如,与保持时间一致的定时器可被启动,并且一旦到期则引起系统复位。PCU则向iMC(有时称作“ASyncSR”)发送消息。响应接收这个消息,iMC阻止所有其他事务,排出WPQ和IIO缓冲器,并且使存储器进入自行刷新,在该点上,冲刷被认为是成功的。如果DC轨在存储器进入自行刷新之前失去电力,则冲刷失败并且数据可能丢失。
在一个实施例中,NVM 152还例如在预定位置提供/存储位标志(其可称作“NvBackUpVaild”)。取决于实现,如果设置这个标志,则NV备份中的数据被认为是有效的。以及如果标志被清除,则NV备份数据被认为是无效的(并且不应当使用)。
图4A示出按照一实施例、响应故障指示而执行的方法400的流程图。例如,方法400可响应接收指示电力故障(或者另一个ADR事件)已经开始而被执行(例如在图3的iMC 310中)。在一个实施例中,参照图1-3和图5-7所述的各种组件可用来执行参照图4A所述操作的一个或多个。在一实施例中,方法400的一个或多个操作在逻辑(例如固件)、例如图1的逻辑150和/或控制器120和/或参照其他附图所述的其他存储控制器(例如IMC 310)中实现。
参照图1至图4A,在操作404(例如响应ADR事件以及来自PCU 314的后一AsyncSR命令),阻止其他事务。操作406获得易失性缓冲器的快照,并且将它们存储在NV备份(例如NVM152)中。在操作408,NV备份标志被设置(或者清除,这取决于实现)。在操作410,沿用正常ADR流程(例如,易失性缓冲器冲刷并且主存储器/DIMM进入自行刷新)。在操作412,NV备份标志被清除(或者设置,这取决于实现)。
此外,操作410(正常ADR流程)易受平台错误和故障的影响。如果冲刷成功,则NvBackUpValid在操作412被清除,并且因此能够丢弃备份内容。但是,如果冲刷失败或者在保持时间之前可能没有完成,则该系统复位。
图4B示出按照一实施例、在下一次重新引导时恢复数据的方法450的流程图。例如,方法450可在图4A的操作412之后的重新引导期间执行(例如,图4B的左边通过BIOS(基本输入/输出系统)以及图4B的右边通过iMC 310)。在各个实施例中,参照图1-3和图5-7所述的各种组件可用来执行参照图4B所述操作的一个或多个。在一实施例中,方法450的一个或多个操作在逻辑(例如固件)、例如BIOS、图1的逻辑150和/或控制器120和/或参照其他附图所述的其他存储控制器(例如IMC 310)中实现。
参照图1至图4B,在操作452(例如在图4A的操作412之后并且在下一次重新引导时),BIOS运行正常MRC(存储器参考代码),以及初始化存储器和NVDIMM,并且检查(454)NvBackUpValid位(例如在每个iMC中)。如果这个位被清除,则BIOS略过操作的其余部分,并且进入正常引导(460)。否则,如果设置该位(454),则BIOS向iMC发送命令(例如经由CSR写入)(456),以恢复备份。作为响应,iMC:阻止其他事务(462),排出任何未决事务(464),从NV备份中将内容恢复到WPQ (466),排出WPQ (468)(这时恢复数据),清除NvBackUpValid标志(469),开启事务(470),并且向BIOS回送指示恢复操作完成的状态(472)。
此外,在操作456(除了操作462的执行之外)之后,方法450执行操作458,以确定iMC恢复是否完成(例如在操作472之后),以及如果是的话,则在操作460进入正常引导。
在一些实施例中,没有利用PCOMMIT指令的IO永久性或处理器核永久性可执行如下。在ADR事件和来自PCU的后一AsyncSR命令时,iMC:(1) iMC获得NVDIMMTQP(事务挂起队列)中的写入的快照;(2) iMC阻止对NVDIMM的其他入站读/写;(3) 获得缓冲器的快照,并且将它们存储在NV备份中;(4) 设置NvBackUpValid标志;(5) 继续进行正常ADR流程(例如向非易失性存储控制器发送NVDIMM TPQ中的写入,并且在发送所有快照写入之后,iMC向NVDIMM发送ADR电力故障命令);(6) iMC然后清除NvBackUpValid。
此外,上述操作(5)(正常ADR流程)易受平台错误和故障的影响。如果冲刷成功,则NvBackUpValid被清除,并且因此能够丢弃备份内容。但是,如果冲刷失败或者在保持时间之前可能没有完成,则该系统复位。在下一次重新引导时,BIOS:(a) 运行正常MRC,并且初始化存储器和NVDIMM;(b) 检查iMC中的NvBackUpValid位;(c) 如果NvBackUpValid位被清除,则BIOS略过步骤的其余部分,并且进入正常引导;(d) 如果设置NvBackUpValid位,则BIOS向iMC发送命令(例如经由CSR写操作),以恢复备份。iMC则:(i) 阻止其他事务;(ii)排出任何未决事务;(iii) 从NV备份中将内容恢复到WPQ;(iv) 排出WPQ(这时恢复数据);(v) 清除NvBackUpValid标志;(vi) 开启事务;以及(vii) 向BIOS回送指示恢复完成的状态信息。
相应地,当前实现不保证软件认为是持久的数据的持久性。虽然当前解决方案可适用于正常条件,但是任何平台故障或错误条件(例如链路错误、重试、VR故障等)可引起数据丢失。这不是可接受的,因为软件已经将数据写到永久存储器,并且认为它是持久的,以及平台应当守“承诺”以使它持久。为此,一实施例甚至在面临平台故障或错误条件时也确保数据完整性。通过当AC电力出故障时立即备份易失性缓冲器,它确保将这些缓冲器冲刷到永久存储器的失败没有引起数据丢失,以及能够在下一次重新引导期间恢复,并且在OS(操作系统)切换之前提交给它所送往的永久存储器范围。
图5示出按照本发明的一实施例的计算系统500的框图。计算系统500可包括一个或多个中央处理器(CPU)502或处理器,其经由互连网络(或总线)504进行通信。处理器502可包括通用处理器、网络处理器(其处理通过计算机网络503所传递数据)、应用处理器(例如蜂窝电话、智能电话等中使用的应用处理器)或者其他类型的处理器(包括简化指令集计算机(RISC)处理器或复杂指令集计算机(CISC))。可利用各种类型的计算机网络503,包括有线(例如以太网、千兆位、光纤等)或者无线网络(例如蜂窝、3G(第三代蜂窝电话技术或者第三代无线论坛(UWCC))、5G、低功率嵌入(LPE)等)。此外,处理器502可具有单核或多核设计。具有多核设计的处理器502可将不同类型的处理器核集成在同一个集成电路(IC)晶片上。具有多核设计的处理器502还可实现为对称或不对称多处理器。
在一个实施例中,处理器502的一个或多个可与图1的处理器102相同或相似。例如,处理器502的一个或多个可包括核106和/或高速缓存108的一个或多个。另外,可由系统500的一个或多个组件来执行参照图1-4所述的操作。
芯片组506还可与互连网络504进行通信。芯片组506可包括图形和存储控制集线器(GMCH)508。GMCH 508可包括存储控制器510(其在一个实施例中可与图1的存储控制器120相同或相似),存储控制器510与存储器114进行通信。系统500还可包括各种位置(例如图5所示的那些位置,但是能够在系统500的其他位置中(未示出))中的逻辑150(例如耦合到NVM 152)。另外,NVM 152可存在于例如图5所示的各种位置。
存储器114可存储数据,包括由CPU 502或者计算系统500中包含的任何其他装置所运行的指令序列。在本发明的一个实施例中,存储器114可包括一个或多个易失性存储装置(或存储器),例如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或者其他类型的存储装置。还可利用非易失性存储器,例如硬盘、闪存、字节可寻址3维交叉点存储器(例如PCM)、电阻随机存取存储器、NAND存储器、NOR存储器和STTRAM。附加装置可经由互连网络504进行通信,例如多个CPU和/或多个系统存储器。
GMCH 508还可包括与图形加速器516进行通信的图形接口514。在本发明的一个实施例中,图形接口514可经由加速图形端口(AGP)或外设部件互连(PCI)(或PCI express(PCIe)接口)与图形加速器516进行通信。在本发明的一个实施例中,显示器517(例如平板显示器、触摸屏等)可经过例如信号转换器与图形接口514进行通信,其中信号转换器将存储装置、例如视频存储器或系统存储器中存储的图像的数字表示转化为由显示器来解释和显示的显示信号。由显示装置所产生的显示信号可在由显示器517进行解释并且随后在显示器517上显示之前经过各种控制装置。
集线器接口518可允许GMCH 508和输入/输出控制集线器(ICH)520进行通信。ICH520可提供到I/O装置(其与计算系统500进行通信)的接口。ICH 520可经过诸如外设部件互连(PCI)桥接器、通用串行总线(USB)控制器或者其他类型的外围桥接器或控制器之类的外围桥接器(或控制器)524来与总线522进行通信。桥接器524可提供CPU 502与外围装置之间的数据通路。可利用其他类型的拓扑。另外,多个总线可经过多个桥接器或控制器来与ICH520进行通信。此外,在各个实施例中,与ICH 520进行通信的其他外设可包括电子集成驱动器(IDE)或者(一个或多个)小型计算机系统接口(SCSI)硬盘驱动器、(一个或多个)USB端口、键盘、鼠标、(一个或多个)并行端口、(一个或多个)串行端口、(一个或多个)软盘驱动器、数字输出支持(例如数字视频接口(DVI))或者其他装置。
总线522可与音频装置526、一个或多个磁盘驱动器528和网络接口装置530(其例如经由有线或无线接口来与计算机网络503进行通信)进行通信。如所示,网络接口装置530可耦合到天线531,以便与网络503无线(例如,经由电气和电子工程师协会(IEEE)802.11接口(包括IEEE 802.11a/b/g/n等)、蜂窝接口、3G、5G、LPE等)通信。其他装置可经由总线522进行通信。在一些实施例中,各种组件(例如网络接口装置530)还可与GMCH 508进行通信。此外,理器502和GMCH 508可以相结合以形成单个芯片。另外,在其他实施例中,图形加速器516可包含在GMCH 508中。
此外,计算系统500可包括易失性和/或非易失性存储器(或存储装置)。例如,非易失性存储器可包括下列一个或多个:只读存储器(ROM),可编程ROM(PROM),可擦PROM(EPROM),电EPROM(EEPROM),磁盘驱动器(例如528),软盘,光盘ROM(CD-ROM),数字多功能光盘(DVD),闪速存储器,磁-光盘,或者能够存储电子数据(例如包括指令)的其他类型的非易失性机器可读介质。
图6示出按照一实施例、按照点对点(PtP)配置来设置的计算系统600。具体来说,图6示出一种系统,其中处理器、存储器和输入/输出装置通过多个点对点接口来互连。参照图1-5所述的操作可由系统600的一个或多个组件来执行。
如图6所示,系统600可包括若干处理器,为了清楚起见仅示出其中的两个,即处理器602和604。处理器602和604各可包括本地存储控制器集线器(MCH)606和608,以实现与存储器610和612的通信。存储器610和/或612可存储各种数据,例如参照图1和/或图5的存储器114或NVM 152所述的那些数据。另外,在一些实施例中,MCH 606和608可包括图1的存储控制器120和/或逻辑150。另外,NVM 152可存在于例如图6所示的各种位置。
在一个实施例中,处理器602和604可以是参照图5所述的处理器502其中之一。处理器602和604可分别使用点对点(PtP)接口电路616和618、经由PtP接口614来交换数据。另外,处理器602、604均可使用点对点接口电路626、628、630、632经由各个PtP接口622、624来与芯片组620交换数据。芯片组620还可例如使用PtP接口电路637、经由高性能图形接口636来与高性能图形电路634交换数据。如参照图5所述,在一些实施例中,图形接口636可耦合到显示装置(例如显示器517)。
如图6所示,图1的核106和/或高速缓存108的一个或多个可位于处理器602和604中。但是,其他实施例可存在于图6的系统600的其他电路、逻辑单元或装置中。此外,其他实施例可分布于图6所示的若干电路、逻辑单元或装置。
芯片组620可使用PtP接口电路641来与总线640进行通信。总线640可具有与其通信的一个或多个装置,例如总线桥接器642和I/O装置643。经由总线644,总线桥接器642可与诸如键盘/鼠标645、通信装置646(例如调制解调器、网络接口装置或者可与计算机网络503进行通信的其他通信装置,如参照网络接口装置530所述,包括经由天线531)、音频I/O装置和/或数据存储装置648之类的其他装置进行通信。数据存储装置648可存储代码649,其可由处理器602和/或604来运行。
在一些实施例中,本文所述组件的一个或多个能够实现于芯片上系统(SOC)装置上。图7示出按照一实施例的SOC封装的框图。如图7所示,SOC 702包括一个或多个中央处理器(CPU)核720、一个或多个图形处理器单元(GPU)核730、输入/输出(I/O)接口740和存储控制器742(其可与存储控制器120和/或逻辑150相似或相同)。SOC封装702的各种组件可耦合到互连或总线,例如本文中参照其他附图所述。另外,SOC封装702可包括更多或更少组件,例如本文中参照其他附图所述。此外,SOC封装720的各组件可包括一个或多个其他组件,例如本文中参照其他附图所述。在一个实施例中,SOC封装702(及其组件)在一个或多个集成电路(IC)晶片上提供,即,其封装到单个半导体装置上。
如图7所示,SOC封装702经由存储控制器742来耦合到存储器760(其可与本文参照其他附图所述的存储器相似或相同)。在一实施例中,存储器760(或者其一部分)能够集成在SOC封装702上。
I/O接口740可例如经由互连和/或总线来耦合到一个或多个I/O装置770,例如本文中参照其他附图所述。(一个或多个)I/O装置770可包括键盘、鼠标、触摸板、显示器、图像/视频捕获装置(例如照相装置或摄像录像机)、触摸屏、扬声器等中的一个或多个。此外,在一实施例中,SOC封装702可包括/集成逻辑150和/或存储控制器120。备选地,逻辑150和/或存储控制器120可设置在SOC封装702外部(即,作为分立逻辑)。另外,NVM 152可存在于例如图7所示的各种位置。
以下示例涉及其他实施例。示例1包括一种设备,其包括:处理器,包括非易失性存储器以存储来自处理器的一个或多个易失性缓冲器的数据;以及用于响应引起系统复位或关机的事件的发生而使来自处理器的一个或多个易失性缓冲器的数据存储到非易失性存储器中的逻辑。示例2包括示例1的设备,还包括电力控制单元(PCU)以生成信号以指示事件的发生。示例3包括示例1的设备,还包括一个或多个传感器,以检测事件的发生。示例4包括示例1的设备,其中,处理器和非易失性存储器要耦合到同一电力轨。示例5包括示例1的设备,还包括一个或多个电容器,其耦合到非易失性存储器以增加非易失性存储器在事件的发生之后保持为操作的时间量。示例6包括示例1的设备,包括用于响应事件的发生而阻止其他事务的逻辑。示例7包括示例1的设备,其中,逻辑要更新标志以指示来自处理器的一个或多个易失性缓冲器的数据存储到非易失性存储器中的开始。示例8包括示例1的设备,其中,逻辑要更新标志以指示来自处理器的一个或多个易失性缓冲器的数据存储到非易失性存储器中的完成。示例9包括示例1的设备,其中,事件对应于交流(AC)电力故障。示例10包括示例1的设备,其中,处理器包括逻辑。示例11包括示例1的设备,其中,一个或多个易失性缓冲器要包括一个或多个非易失性DIMM(双列直插存储器模块)。示例12包括示例1的设备,其中,非易失性存储器要包括下列一个或多个:纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)、闪速存储器、自旋矩转移随机存取存储器(STTRAM)、电阻随机存取存储器、字节可寻址3维交叉点存储器、相变存储器(PCM)。示例13包括示例1的设备,其中,具有一个或多个处理器核的处理器、非易失性存储器和逻辑中的一个或多个处于同一集成电路晶片上。
示例14包括一种方法,其包括:把来自处理器的一个或多个易失性缓冲器的数据存储在处理器的非易失性存储器中;以及响应引起系统复位或关机的事件的发生而使来自处理器的一个或多个易失性缓冲器的数据存储到非易失性存储器中。示例15包括示例14的方法,还包括电力控制单元(PCU)以生成信号以指示事件的发生。示例16包括示例14的方法,还包括一个或多个传感器,其检测事件的发生。示例17包括示例14的方法,其中,处理器和非易失性存储器耦合到同一电力轨。示例18包括示例14的方法,其中,一个或多个电容器耦合到非易失性存储器以增加非易失性存储器在事件的发生之后保持为操作的时间量。示例19包括示例14的方法,包括响应事件的发生而阻止其他事务。示例20包括示例14的方法,还包括更新标志以指示来自处理器的一个或多个易失性缓冲器的数据存储到非易失性存储器中的开始。示例21包括示例14的方法,还包括更新标志以指示来自处理器的一个或多个易失性缓冲器的数据存储到非易失性存储器中的完成。示例22包括示例14的方法,其中,事件对应于交流(AC)电力故障。
示例23包括其中包含一个或多个指令的计算机可读介质,指令在运行于处理器时将处理器配置成执行进行下列步骤的一个或多个操作:把来自处理器的一个或多个易失性缓冲器的数据存储在处理器的非易失性存储器中;以及响应引起系统复位或关机的事件的发生而使来自处理器的一个或多个易失性缓冲器的数据存储到非易失性存储器中。示例24包括示例23的计算机可读介质,还包括一个或多个指令,其在运行于处理器时将处理器配置成执行使电力控制单元(PCU)生成信号以指示事件的发生的一个或多个操作。示例25包括示例23的计算机可读介质,还包括一个或多个指令,其在运行于处理器时将处理器配置成执行使一个或多个传感器检测事件的发生的一个或多个操作。
示例26包括一种系统,其包括:显示装置,显示一个或多个图像;处理器,耦合到显示装置,包括非易失性存储器以存储来自处理器的一个或多个易失性缓冲器的数据;以及用于响应引起系统复位或关机的事件的发生而使来自处理器的一个或多个易失性缓冲器的数据存储到非易失性存储器中的逻辑。示例27包括权利要求26的系统,还包括电力控制单元(PCU)以生成信号以指示事件的发生。示例28包括权利要求26的系统,还包括一个或多个传感器,以检测事件的发生。示例29包括权利要求26的系统,其中,处理器和非易失性存储器要耦合到同一电力轨。示例30包括权利要求26的系统,还包括一个或多个电容器,其耦合到非易失性存储器以增加非易失性存储器在事件的发生之后保持为操作的时间量。示例31包括权利要求26的系统,包括用于响应事件的发生而阻止其他事务的逻辑。示例32包括权利要求26的设备,其中,逻辑要更新标志以指示来自处理器的一个或多个易失性缓冲器的数据存储到非易失性存储器中的开始。示例33包括权利要求26的设备,其中,逻辑要更新标志以指示来自处理器的一个或多个易失性缓冲器的数据存储到非易失性存储器中的完成。示例34包括权利要求26的系统,其中,事件对应于交流(AC)电力故障。示例35包括权利要求26的系统,其中,处理器包括逻辑。示例36包括权利要求26的系统,其中,一个或多个易失性缓冲器要包括一个或多个非易失性DIMM(双列直插存储器模块)。示例37包括权利要求26的系统,其中,非易失性存储器包括下列一个或多个:纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)、闪速存储器、自旋矩转移随机存取存储器(STTRAM)、电阻随机存取存储器、字节可寻址3维交叉点存储器、相变存储器(PCM)。示例38包括权利要求26的系统,其中,具有一个或多个处理器核的处理器、非易失性存储器和逻辑中的一个或多个处于同一集成电路晶片上。
示例39包括一种设备,其包括用于执行如以上权利要求中的任一项所述的方法的部件。
示例40包括机器可读存储装置,其包括机器可读指令,其在被运行时实现如以上权利要求中的任一项所述的方法或实现设备。
在各个实施例中,本文中例如参照图1-7所述的操作可实现为硬件(例如电路)、软件、固件、微码或者它们的组合,其可作为计算机程序产品来提供,例如包括有形(例如非暂时)机器可读或计算机可读介质,其上存储了用来将计算机编程为执行本文所述过程的指令(或软件过程)。另外,术语“逻辑”作为举例可包括软件、硬件或者软件和硬件的组合。机器可读介质可包括存储装置,例如针对图1-7所述的存储装置。
另外,这类有形计算机可读介质可作为计算机程序产品来下载,其中程序可通过数据信号(例如在载波或其他传播介质中)、经由通信链路(例如总线、调制解调器或网络连接)从远程计算机(例如服务器)传递到请求计算机(例如客户端)。
本说明书中提到“一个实施例”或“一实施例”表示结合该实施例所述的特定特征、结构或特性可包含在至少一个实现中。词语“在一个实施例中”在本说明书的各个位置的出现可以或者可以不是全部指同一个实施例。
在本描述和权利要求书中,还可使用术语“耦合”和“连接”连同其派生。在一些实施例中,“连接”可用来表示两个或更多元件相互直接物理或电气接触。“耦合”可表示两个或更多元件直接物理或者电接触。但是,“耦合”也可表示两个或更多元件可以不是相互直接接触,但仍然可相互协作或交互。
因此,虽然通过结构特征和/或方法动作特定的语言描述了实施例,但是要理解,要求保护的主题可以并不局限于所述的具体特征或动作。特定特征和动作而是作为实现要求保护的主题的示例形式来公开。

Claims (23)

1. 一种设备,包括:
处理器,包含非易失性存储器以存储来自所述处理器的一个或多个易失性缓冲器的数据;以及
逻辑,用于使来自所述处理器的所述一个或多个易失性缓冲器的所述数据响应要引起系统复位或关机的事件的发生而存储到所述非易失性存储器中。
2.如权利要求1所述的设备,还包括功率控制单元(PCU)以生成信号以指示所述事件的发生。
3.如权利要求1所述的设备,还包括一个或多个传感器以检测所述事件的发生。
4.如权利要求1所述的设备,其中,所述处理器和所述非易失性存储器要耦合到同一电力轨。
5.如权利要求1所述的设备,还包括耦合到所述非易失性存储器的一个或多个电容器,以增加所述非易失性存储器在所述事件的发生之后保持为操作的时间量。
6.如权利要求1所述的设备,包括用于响应所述事件的发生而阻止其他事务的逻辑。
7.如权利要求1所述的设备,其中,所述逻辑要更新标志以指示来自所述处理器的所述一个或多个易失性缓冲器的所述数据存储到所述非易失性存储器中的开始。
8.如权利要求1所述的设备,其中,所述逻辑要更新标志以指示来自所述处理器的所述一个或多个易失性缓冲器的所述数据存储到所述非易失性存储器中的完成。
9.如权利要求1所述的设备,其中,所述事件对应于交流(AC)电力故障。
10.如权利要求1所述的设备,其中,所述处理器要包括所述逻辑。
11.如权利要求1所述的设备,其中,所述一个或多个易失性缓冲器要包括一个或多个非易失性DIMM(双列直插存储器模块)。
12.如权利要求1所述的设备,其中,所述非易失性存储器要包括下列一个或多个:纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、磁阻随机存取存储器(MRAM)、闪速存储器、自旋矩转移随机存取存储器(STTRAM)、电阻随机存取存储器、字节可寻址3维交叉点存储器、相变存储器(PCM)。
13.如权利要求1所述的设备,其中,具有一个或多个处理器核的所述处理器、所述非易失性存储器和所述逻辑中的一个或多个处于同一集成电路晶片上。
14. 一种方法,包括:
把来自处理器的一个或多个易失性缓冲器的数据存储在所述处理器的非易失性存储器中;以及
使来自所述处理器的所述一个或多个易失性缓冲器的所述数据响应要引起系统复位或关机的事件的发生而存储到所述非易失性存储器中。
15.如权利要求14所述的方法,还包括功率控制单元(PCU),所述电力控制单元(PCU)生成信号以指示所述事件的发生。
16.如权利要求14所述的方法,还包括检测所述事件的发生的一个或多个传感器。
17.如权利要求14所述的方法,其中,所述处理器和所述非易失性存储器耦合到同一电力轨。
18.如权利要求14所述的方法,其中,一个或多个电容器耦合到所述非易失性存储器以增加所述非易失性存储器在所述事件的发生之后保持为操作的时间量。
19.如权利要求14所述的方法,包括响应所述事件的发生而阻止其他事务。
20.如权利要求14所述的方法,还包括更新标志以指示来自所述处理器的所述一个或多个易失性缓冲器的所述数据存储到所述非易失性存储器中的开始。
21.如权利要求14所述的方法,还包括更新标志以指示来自所述处理器的所述一个或多个易失性缓冲器的所述数据存储到所述非易失性存储器中的完成。
22.如权利要求14所述的方法,其中,所述事件对应于交流(AC)电力故障。
23.一种设备,包括用于执行如权利要求14至22中的任一项所述的方法的部件。
CN201580064297.0A 2014-12-24 2015-11-24 容错自动双列直插存储器模块刷新 Active CN107003919B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/583037 2014-12-24
US14/583,037 US20160188414A1 (en) 2014-12-24 2014-12-24 Fault tolerant automatic dual in-line memory module refresh
PCT/US2015/062555 WO2016105814A1 (en) 2014-12-24 2015-11-24 Fault tolerant automatic dual in-line memory module refresh

Publications (2)

Publication Number Publication Date
CN107003919A true CN107003919A (zh) 2017-08-01
CN107003919B CN107003919B (zh) 2022-06-21

Family

ID=56151351

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580064297.0A Active CN107003919B (zh) 2014-12-24 2015-11-24 容错自动双列直插存储器模块刷新

Country Status (6)

Country Link
US (1) US20160188414A1 (zh)
EP (1) EP3238077B1 (zh)
KR (1) KR102451952B1 (zh)
CN (1) CN107003919B (zh)
TW (1) TW201636770A (zh)
WO (1) WO2016105814A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144778A (zh) * 2018-07-27 2019-01-04 郑州云海信息技术有限公司 一种存储服务器系统及其备份方法、系统及可读存储介质
CN109753239A (zh) * 2017-11-08 2019-05-14 三星电子株式会社 半导体存储模块、半导体存储系统和访问其的方法
CN110750466A (zh) * 2019-10-18 2020-02-04 深圳豪杰创新电子有限公司 提高闪存擦写寿命的方法和装置
CN110955569A (zh) * 2019-11-26 2020-04-03 英业达科技有限公司 双列直插式存储器模块的测试方法、系统、介质及装置
CN111382465A (zh) * 2018-12-31 2020-07-07 美光科技公司 用以避免存储装置复位中的数据丢失的复位拦截
CN111819548A (zh) * 2018-02-08 2020-10-23 美光科技公司 存储器的部分保存
CN113282523A (zh) * 2021-05-08 2021-08-20 重庆大学 一种缓存分片的动态调整方法、装置以及存储介质

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10592416B2 (en) 2011-09-30 2020-03-17 Oracle International Corporation Write-back storage cache based on fast persistent memory
US10380021B2 (en) 2013-03-13 2019-08-13 Oracle International Corporation Rapid recovery from downtime of mirrored storage device
US10296462B2 (en) 2013-03-15 2019-05-21 Oracle International Corporation Method to accelerate queries using dynamically generated alternate data formats in flash cache
US9760430B2 (en) * 2015-08-28 2017-09-12 Dell Products L.P. System and method for dram-less SSD data protection during a power failure event
US20170109072A1 (en) * 2015-10-16 2017-04-20 SK Hynix Inc. Memory system
US10275160B2 (en) 2015-12-21 2019-04-30 Intel Corporation Method and apparatus to enable individual non volatile memory express (NVME) input/output (IO) Queues on differing network addresses of an NVME controller
US10514740B2 (en) * 2016-01-22 2019-12-24 Hitachi, Ltd. Computer device and computer-readable storage medium
US10394310B2 (en) * 2016-06-06 2019-08-27 Dell Products, Lp System and method for sleeping states using non-volatile memory components
US10200376B2 (en) 2016-08-24 2019-02-05 Intel Corporation Computer product, method, and system to dynamically provide discovery services for host nodes of target systems and storage resources in a network
US10133667B2 (en) * 2016-09-06 2018-11-20 Orcle International Corporation Efficient data storage and retrieval using a heterogeneous main memory
CN107797642B (zh) * 2016-09-07 2019-12-06 华为技术有限公司 一种备电方法及装置
US10176116B2 (en) 2016-09-28 2019-01-08 Intel Corporation Computer product, method, and system to provide discovery services to discover target storage resources and register a configuration of virtual target storage resources mapping to the target storage resources and an access control list of host nodes allowed to access the virtual target storage resources
US10262751B2 (en) 2016-09-29 2019-04-16 Intel Corporation Multi-dimensional optimization of electrical parameters for memory training
CN107885671B (zh) * 2016-09-30 2021-09-14 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
US20180095699A1 (en) * 2016-10-01 2018-04-05 National Tsing Hua University Memory system, memory device thereof, and method for writing to and reading from memory device thereof
US10698817B2 (en) * 2017-06-12 2020-06-30 Dell Products, L.P. Method for determining available stored energy capacity at a power supply and system therefor
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US10732836B2 (en) 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
US11016890B2 (en) 2018-02-05 2021-05-25 Micron Technology, Inc. CPU cache flushing to persistent memory
US10642695B2 (en) 2018-02-08 2020-05-05 Micron Technology, Inc. Storage backed memory package save trigger
KR102538679B1 (ko) * 2018-04-06 2023-06-02 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10990463B2 (en) 2018-03-27 2021-04-27 Samsung Electronics Co., Ltd. Semiconductor memory module and memory system including the same
TWI678622B (zh) 2018-06-15 2019-12-01 慧榮科技股份有限公司 資料儲存裝置的開發系統以及產品化方法
KR102649315B1 (ko) * 2018-12-03 2024-03-20 삼성전자주식회사 휘발성 메모리 장치를 포함하는 메모리 모듈 및 이를 포함하는 메모리 시스템
US11176042B2 (en) 2019-05-21 2021-11-16 Arm Limited Method and apparatus for architectural cache transaction logging
US11237960B2 (en) * 2019-05-21 2022-02-01 Arm Limited Method and apparatus for asynchronous memory write-back in a data processing system
WO2022139637A1 (en) * 2020-12-22 2022-06-30 Telefonaktiebolaget Lm Ericsson (Publ) Snapshotting pending memory writes using non-volatile memory

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055587A1 (en) * 2003-09-08 2005-03-10 Inventec Corporation Method of managing power of control box
US20060072369A1 (en) * 2004-10-04 2006-04-06 Research In Motion Limited System and method for automatically saving memory contents of a data processing device on power failure
CN1801121A (zh) * 2004-05-03 2006-07-12 微软公司 非易失性存储器高速缓存性能改进
US20060274566A1 (en) * 2005-06-02 2006-12-07 Daisaburo Takashima Memory system combining flash EEPROM and FeRAM
CN101135984A (zh) * 2007-01-08 2008-03-05 中兴通讯股份有限公司 硬件信息备份装置、运行信息备份及检测信息保存方法
CN101542449A (zh) * 2006-11-27 2009-09-23 Lsi公司 优化存储控制器高速缓存卸载电路性能和可靠性的系统
CN101563729A (zh) * 2006-12-20 2009-10-21 莫塞德技术公司 具有易失性和非易失性存储器的混合固态存储器系统
US20100199021A1 (en) * 2009-02-05 2010-08-05 International Business Machines Corporation Firehose Dump of SRAM Write Cache Data to Non-Volatile Memory Using a Supercap
US20100202240A1 (en) * 2009-02-11 2010-08-12 Stec, Inc. State of health monitored flash backed dram module
CN101904105A (zh) * 2007-10-17 2010-12-01 惠普开发有限公司 在更新期间使用高效的块备份和块恢复的移动手持送受话器
WO2013103335A1 (en) * 2012-01-03 2013-07-11 Hewlett-Packard Development Company, L.P. Backing up firmware during initialization of device
US20130205065A1 (en) * 2012-02-02 2013-08-08 Lsi Corporation Methods and structure for an improved solid-state drive for use in caching applications
US20140101370A1 (en) * 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
CN104025066A (zh) * 2011-12-29 2014-09-03 英特尔公司 用于能量高效计算的异构存储器晶片堆叠
CN104077246A (zh) * 2014-07-02 2014-10-01 浪潮(北京)电子信息产业有限公司 一种实现易失性存储器备份的装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3292864B2 (ja) * 1995-02-07 2002-06-17 株式会社日立製作所 データ処理装置
US6172902B1 (en) * 1998-08-12 2001-01-09 Ecole Polytechnique Federale De Lausanne (Epfl) Non-volatile magnetic random access memory
US6990603B2 (en) * 2002-01-02 2006-01-24 Exanet Inc. Method and apparatus for securing volatile data in power failure in systems having redundancy
US6822903B2 (en) * 2003-03-31 2004-11-23 Matrix Semiconductor, Inc. Apparatus and method for disturb-free programming of passive element memory cells
US6989327B2 (en) * 2004-01-31 2006-01-24 Hewlett-Packard Development Company, L.P. Forming a contact in a thin-film device
US7536506B2 (en) * 2004-06-21 2009-05-19 Dot Hill Systems Corporation RAID controller using capacitor energy source to flush volatile cache data to non-volatile memory during main power outage
US20060080515A1 (en) * 2004-10-12 2006-04-13 Lefthand Networks, Inc. Non-Volatile Memory Backup for Network Storage System
US7613915B2 (en) * 2006-11-09 2009-11-03 BroadOn Communications Corp Method for programming on-chip non-volatile memory in a secure processor, and a device so programmed
US8904098B2 (en) * 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
US8009499B2 (en) * 2008-06-16 2011-08-30 Hewlett-Packard Development Company, L.P. Providing a capacitor-based power supply to enable backup copying of data from volatile storage to persistent storage
JP2010020586A (ja) 2008-07-11 2010-01-28 Nec Electronics Corp データ処理装置
US7954006B1 (en) * 2008-12-02 2011-05-31 Pmc-Sierra, Inc. Method and apparatus for archiving data during unexpected power loss
US9128824B2 (en) 2012-12-24 2015-09-08 Intel Corporation In-place change between transient and persistent state for data structures on non-volatile memory
US9471516B2 (en) * 2013-08-14 2016-10-18 Facebook, Inc. Techniques for transmitting a command to control a peripheral device through an audio port

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055587A1 (en) * 2003-09-08 2005-03-10 Inventec Corporation Method of managing power of control box
CN1801121A (zh) * 2004-05-03 2006-07-12 微软公司 非易失性存储器高速缓存性能改进
US20060072369A1 (en) * 2004-10-04 2006-04-06 Research In Motion Limited System and method for automatically saving memory contents of a data processing device on power failure
US20060274566A1 (en) * 2005-06-02 2006-12-07 Daisaburo Takashima Memory system combining flash EEPROM and FeRAM
CN101542449A (zh) * 2006-11-27 2009-09-23 Lsi公司 优化存储控制器高速缓存卸载电路性能和可靠性的系统
CN101563729A (zh) * 2006-12-20 2009-10-21 莫塞德技术公司 具有易失性和非易失性存储器的混合固态存储器系统
CN101135984A (zh) * 2007-01-08 2008-03-05 中兴通讯股份有限公司 硬件信息备份装置、运行信息备份及检测信息保存方法
CN101904105A (zh) * 2007-10-17 2010-12-01 惠普开发有限公司 在更新期间使用高效的块备份和块恢复的移动手持送受话器
US20100199021A1 (en) * 2009-02-05 2010-08-05 International Business Machines Corporation Firehose Dump of SRAM Write Cache Data to Non-Volatile Memory Using a Supercap
US20100202240A1 (en) * 2009-02-11 2010-08-12 Stec, Inc. State of health monitored flash backed dram module
CN104025066A (zh) * 2011-12-29 2014-09-03 英特尔公司 用于能量高效计算的异构存储器晶片堆叠
WO2013103335A1 (en) * 2012-01-03 2013-07-11 Hewlett-Packard Development Company, L.P. Backing up firmware during initialization of device
US20130205065A1 (en) * 2012-02-02 2013-08-08 Lsi Corporation Methods and structure for an improved solid-state drive for use in caching applications
US20140101370A1 (en) * 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
CN104077246A (zh) * 2014-07-02 2014-10-01 浪潮(北京)电子信息产业有限公司 一种实现易失性存储器备份的装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
M. VIVEKANANDA REDDY 等: ""Scheduling in Grid: Rescheduling MPI applications using a fault-tolerant MPI implementation"", 《2007 2ND INTERNATIONAL CONFERENCE ON COMMUNICATION SYSTEMS SOFTWARE AND MIDDLEWARE》 *
周立功 等: ""SOPC开发流程及开发平台简介"", 《SOPC嵌入式系统基础教程》 *
王党辉等: "一种自主恢复的高可靠存储控制器设计", 《西北工业大学学报》 *
鄢贵海等: "计算机系统容错设计简述", 《集成技术》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109753239A (zh) * 2017-11-08 2019-05-14 三星电子株式会社 半导体存储模块、半导体存储系统和访问其的方法
CN109753239B (zh) * 2017-11-08 2023-11-21 三星电子株式会社 半导体存储模块、半导体存储系统和访问其的方法
CN111819548A (zh) * 2018-02-08 2020-10-23 美光科技公司 存储器的部分保存
CN109144778A (zh) * 2018-07-27 2019-01-04 郑州云海信息技术有限公司 一种存储服务器系统及其备份方法、系统及可读存储介质
CN111382465A (zh) * 2018-12-31 2020-07-07 美光科技公司 用以避免存储装置复位中的数据丢失的复位拦截
CN111382465B (zh) * 2018-12-31 2023-08-29 美光科技公司 存储装置及其操作方法
US11762565B2 (en) 2018-12-31 2023-09-19 Micron Technology, Inc. Reset interception to avoid data loss in storage device resets
CN110750466A (zh) * 2019-10-18 2020-02-04 深圳豪杰创新电子有限公司 提高闪存擦写寿命的方法和装置
CN110955569A (zh) * 2019-11-26 2020-04-03 英业达科技有限公司 双列直插式存储器模块的测试方法、系统、介质及装置
CN110955569B (zh) * 2019-11-26 2021-10-01 英业达科技有限公司 双列直插式存储器模块的测试方法、系统、介质及装置
CN113282523A (zh) * 2021-05-08 2021-08-20 重庆大学 一种缓存分片的动态调整方法、装置以及存储介质
CN113282523B (zh) * 2021-05-08 2022-09-30 重庆大学 一种缓存分片的动态调整方法、装置以及存储介质

Also Published As

Publication number Publication date
EP3238077A4 (en) 2018-11-14
WO2016105814A1 (en) 2016-06-30
US20160188414A1 (en) 2016-06-30
KR20170098802A (ko) 2017-08-30
TW201636770A (zh) 2016-10-16
EP3238077A1 (en) 2017-11-01
CN107003919B (zh) 2022-06-21
EP3238077B1 (en) 2022-08-03
KR102451952B1 (ko) 2022-10-11

Similar Documents

Publication Publication Date Title
CN107003919A (zh) 容错自动双列直插存储器模块刷新
CN105700907B (zh) 利用针对本地检查点的卸载程序模型
US11729044B2 (en) Service resiliency using a recovery controller
CN108616382B (zh) 升级网卡固件的方法、装置、网卡和设备
CN103988183B (zh) 2级存储器分级结构中的存储器侧高速缓存的动态部分断电
CN103262054B (zh) 用于自动提交存储器的装置、系统和方法
CN100549962C (zh) 用于置换资源控制器锁的所有权的装置、系统和方法
TWI465906B (zh) 用以執行無原子元資料之電力故障安全快取的技術
CN106463179B (zh) 利用存储器控制器处理数据错误事件的方法、装置和系统
US8862927B2 (en) Systems and methods for fault recovery in multi-tier applications
US20130097369A1 (en) Apparatus, system, and method for auto-commit memory management
CN106462520A (zh) 用于与非易失性双列直插式存储器模块的控制器通信的技术
CN106557145A (zh) 断电保护系统及其方法
CN113495799B (zh) 一种内存故障处理方法及相关设备
WO2021259351A1 (zh) 一种复位系统、数据处理系统以及相关设备
US20170199760A1 (en) Multi-transactional system using transactional memory logs
CN103984642A (zh) 冗余辅助储存器缓存的重建
CN108984329A (zh) 延迟错误处理
US11809253B2 (en) Managing ephemeral storage on a computing node
CN103365741A (zh) 用于虚拟机集群的快照和恢复的方法和设备
JP7385083B2 (ja) システムオンチップ(soc)のための強化された耐久性
CN107592927A (zh) 管理扇区高速缓存
CN110286852A (zh) 双控构架分布式存储系统、数据读取方法、装置和存储介质
CN104170307A (zh) 失效切换方法、装置和系统
US20220171672A1 (en) Storage of machine check exceptions

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