CN104937577B - 支持扩展写入的存储器模块控制器 - Google Patents
支持扩展写入的存储器模块控制器 Download PDFInfo
- Publication number
- CN104937577B CN104937577B CN201380072007.8A CN201380072007A CN104937577B CN 104937577 B CN104937577 B CN 104937577B CN 201380072007 A CN201380072007 A CN 201380072007A CN 104937577 B CN104937577 B CN 104937577B
- Authority
- CN
- China
- Prior art keywords
- write
- memory
- data
- command
- processor
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Computer Hardware Design (AREA)
Abstract
示例方法和装置公开了支持向存储器的扩展写入。本文公开的示例方法包括:在没有处理器干预的情况下将与写入请求相关联的恢复信息存储在存储器中,所述恢复信息用于促进在写入被中断的情况下重做或取消由写入请求所请求的写入,所述写入请求是从处理器接收的并且包括目的地址和新数据;以及如果写入没有被中断,则在没有处理器干预的情况下将新数据写入到存储器中的目的地址。
Description
背景技术
一些计算系统使用随机存取存储器(RAM)设备作为中间存储装置,以用于对也被存储在长期大容量存储设备(例如,磁性存储器、光学存储器、闪速存储器等等)中的数据的相对快速的访问。按照这种方式,计算系统能够通过将来自长期大容量存储设备的数据拷贝到中间RAM设备以及通过访问来自RAM设备的数据来实行更快速的数据访问。
用于长期存储装置的固态存储器设备包括非易失性随机存取存储器(NVRAM),比如相变ram(PCRAM)、忆阻器和自旋转移矩随机存取存储器(STT-RAM)。NVRAM是持久存储器,其即使在电力被去除时也保持其中存储的数据。
附图说明
图1A是表示由根据本公开的教导而实现的示例存储器模块控制器所处理的存储器访问命令的示例命令流程图。
图1B是具有存储器模块的示例处理器系统,所述存储器模块具有图1A的示例存储器模块控制器。
图2图示了表示由图1A和图1B的示例存储器模块控制器所处理的示例原子写入命令的示例命令格式。
图3图示了表示由图1A和图1B的示例存储器模块控制器所处理的示例写时拷贝(copy-on-write,COW)写入命令的示例命令格式。
图4是图1A、图1B、图2和/或图3的示例存储器模块控制器。
图5是表示可以被执行为执行原子写入命令的过程的示例流程图。
图6是表示可以被执行为实行存储器的恢复的过程的示例流程图。
图7是表示可以被执行为执行COW写入命令的过程的示例流程图。
具体实施方式
可以使用本文公开的示例方法、装置和制造品来实现存储器模块控制器,所述存储器模块控制器处理原子写入命令和/或写时拷贝(COW)命令。这些存储器模块控制器可以记录与用于在处理中断方面使用的命令相关联的恢复信息。本文公开的示例还能够实现存储器模块控制器,所述存储器模块控制器基于来自处理器的单个命令和/或使用比现有系统所要求的更少的处理器干预来对存储器实行多存储器访问过程。可以使用所公开的示例来实现在具有非易失性存储器(例如,闪速设备、忆阻器设备、PCRAM设备、STT-RAM设备等)和/或易失性存储器(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等)的存储器模块中的存储器模块控制器。所公开的示例结合包括非易失性存储器和/或易失性存储器和/或其他伪非易失性存储器(例如,具有短期应急电力(例如,来自电池或超级电容器)的动态随机存取存储器(DRAM)和非易失性后备存储库(例如,等同于DRAM存储容量的闪速存储容量))的任何合适类型的持久存储装置而是有用的,所述易失性存储器具有允许该易失性存储器操作为长期存储设备的恒定电源(例如,备用电池)。
在本文公开的示例中,系统可以包括具有集成存储器控制器的处理器、存储器总线、以及具有存储器模块控制器和存储器的存储器模块。系统使用户能够存储和访问存储器中的数据或计算机可读指令以通过指令的执行来实现其他过程。处理器的存储器控制器控制由处理器经由存储器总线而实行的存储器访问操作(例如,读取、写入等)。存储器模块的存储器模块控制器控制存储器并且可以在没有处理器(或存储器控制器)干预的情况下实行存储器访问操作。
如本文所描述的,处理器是能够实行许多计算任务的通用处理单元。相比之下,存储器模块控制器不是通用的,而是专门用于控制存储器的。因此,如本文所描述的,存储器模块控制器不是处理器。此外,如本文所描述的,存储器控制器是处理器的代理。因此,当本文中对处理器进行引述时,所理解的是,同样的引述可以指的是处理器和/或存储器控制器。
通过要求比现有系统所要求的相对更少的由外部处理器或设备(例如,存储器控制器)进行的干预,所公开的示例使存储器模块能够以自主的方式实行操作。按照这种方式,通过要求比现有系统中更少的与处理器和/或存储器控制器的外部通信,所公开的示例使存储器模块能够相对更高效地实行存储器操作。
所公开的示例存储器模块控制器可以将来自处理器和/或存储器控制器的存储器访问请求或命令排队或缓存,以随后实行一个或多个存储器访问操作而无需由处理器和/或存储器控制器进行的另外干预。因此,本文公开的示例存储器模块控制器能够自主管理和实行存储器操作,而不要求来自其他处理器和/或存储器控制器的外部控制和通信。
本文公开的示例实质上降低了在存储器中存储或更新数据(例如,经由原子写入命令或写时拷贝(COW写入)命令)时从外部处理器和/或存储器控制器要求的总线通信量。
本文公开的示例存储器模块控制器可以用在具有固态存储设备的存储器模块中。本文公开的示例存储器模块控制器以相对少的来自外部处理器和/或存储器控制器的牵涉(例如,在外部存储器总线上较少的命令和数据移动)来实行原子写入和/或COW操作。例如,所公开的存储器模块控制器可以接收来自处理器的请求或命令(例如,原子写入或COW写入)以在存储器模块中在存储器位置处写入或更新数据,并且通过实行多个存储器访问(例如,记录恢复信息,向目的地址写入数据,以及擦除恢复信息)来执行请求或命令,以在目的地址处写入和/或更新数据,而不要求超出从处理器接收的初始请求或命令之外的另外的处理器干预。
本文公开的示例存储器模块控制器可以接收原子命令,并作为响应而将相关联的恢复信息记录在非易失性日志中。当由于故障停止(fail-stop)事件(例如,系统崩溃、应用崩溃、电力故障,在一些示例中导致系统重启的事件)而出现对于对应原子操作的中断时,存储器模块控制器能够取回恢复信息并取消(undo)或重做(redo)未决的原子写入。在一些示例中,在故障停止事件之后(例如,涉及中断之后对操作的恢复),处理器检查随机存取存储器的非易失性日志区域,并指示存储器模块控制器取消或重做日志中的任何未决的原子写入命令(例如,先前未完成的)。在一些示例中,在重启之后,存储器模块控制器可以自动重做或取消日志中存储的未决原子写入命令,而不要求任何处理器干预(例如,不需要处理器提示存储器模块控制器实行先前未完成的原子写入命令)。在其他示例中,处理器检查在故障停止事件之后的日志;如果它发现一个或多个原子写入是未决的,它就使用(由存储器模块控制器提供的)日志中的恢复信息来生成重做或取消每个未决的原子写入所需要的命令。然后,它可以发出一个或多个命令来擦除所有恢复信息(例如,日志内容)或将所有未决的原子写入都标记为已完成(例如,不再未决)。
本文公开的示例方法可以涉及将与原子写入相关联的恢复信息记录在存储器模块中的日志中。在一些示例中,将提交记录(commit record)附到日志,以指示其恢复信息被存储于日志中的原子写入的执行已完成。因此,如果出现中断(例如,系统崩溃、电力故障等),能够使用相关联的提交记录的存在或不存在来确定其恢复信息已被存储于日志中的特定原子写入命令是否的确已被完全执行。然后,所公开的示例存储器模块控制器能够取消和/或重做没有已知已经被完全执行的命令。在一些示例中,所公开的示例存储器模块控制器基于来自处理器的指令来取消或重做原子写入命令。在其他示例中,所公开的示例存储器模块控制器在没有处理器(或存储器控制器)干预的情况下自动取消或重做未决的原子写入命令。
一些所公开的针对COW写入的示例方法涉及首先从存储器的第一地址读取第一数据。在这样的示例中,第一地址在由存储器模块控制器从处理器接收到的COW写入命令中被指定。这样的所公开的示例方法还涉及使用位于相同COW写入命令中的修改数据来更新第一数据,并将所更新的数据存储在存储器的第二地址处。在这样的示例中,第二地址在相同的写入命令中被指定。在一些示例中,更新第一数据包括通过用新数据在给定偏移处替换第一数据来更新第一数据。在这样的示例中,偏移和新数据在相同的写入命令中被指定。
一些所公开的用于向存储器执行命令的示例装置包括至少一个存储器模块(例如,随机存取存储器(RAM)模块或(一种或多种)其他类型的固态存储器模块)。在一些示例中,存储器模块包括非易失性存储器。在一些示例中,存储器模块包括非易失性存储区域(例如,日志)。在一些示例中,存储器模块是动态随机存取存储器(DRAM),其具有恒定电源(例如,备用电池)以遍及电力故障始终而存留存储器内容。
图1A图示了由根据本公开的教导而实现的存储器模块130的示例存储器模块控制器140所处理的存储器访问命令的示例流。在所图示的示例中,示例存储器模块控制器140与示例写入中断检测器105、示例处理器110和示例存储器150相通信。尽管图1A中示出了单个处理器110,然而一个或多个处理器可以被耦合到存储器模块控制器140并且除处理器110之外而被使用。
示例写入中断检测器105可以位于处理器110中、位于存储器模块控制器140中或其他地方。写入中断检测器105可以确定来自处理器110的命令(例如,P1)的执行和/或存储器访问操作(例如,MMC-1 – MMC-N)何时已被中断(例如,由于电力故障、系统崩溃等)。可替换地,写入中断检测器105可以检测在电力故障或系统崩溃之后系统100何时已重启。
示例处理器110将示例命令P1发送至存储器模块控制器140。命令P1可以是原子写入命令或COW写入命令。
存储器模块控制器140接收命令P1并基于接收到的命令P1使用多个存储器访问操作(MMC-1 至 MMC-N)来访问存储器150。例如,当存储器模块控制器140接收原子写入命令时,存储器模块控制器140可以执行多个命令,比如将与写入命令相关联的恢复信息(例如,写入命令的目的地址和新数据)记录到日志区域(例如,经由MMC-1命令)、将新数据写入到目的地址(例如,经由MMC-2命令)、以及指示(例如,通过写入提交记录)命令被完成(例如,经由MMC-N命令)。
图1B图示了示例系统100。示例系统100包括具有示例集成存储器控制器112的图1A的示例处理器110。在所图示的示例中,处理器110经由示例存储器总线120与示例存储器模块130相通信。示例存储器控制器112是促进处理器110与存储器总线120之间的通信的接口。在一些示例中,存储器控制器112不被包括在示例处理器110中,而是替代地在处理器110外部并且与处理器110通信地耦合(例如,经由处理器110与单独的存储器控制器112之间的总线)。可以使用双数据速率(DDR)总线或任何其他合适类型的存储器总线来实现示例存储器总线120。示例存储器模块130包括图1A的示例存储器模块控制器140和示例存储器150。在一些示例中,使用高级存储器缓冲器和/或带寄存器式存储器(registered memory)中的寄存器来实现存储器模块控制器140。
在所图示的示例中,与所图示的示例的存储器模块控制器140相通信的存储器150是固态或IC存储器设备,比如非易失性RAM设备或易失性DRAM设备。在使用易失性DRAM来实现存储器150的示例中,使用备用电池来在主系统电力中的中断和/或系统崩溃的情况下能够实现存储器150中存储的数据的存留。
示例存储器150包括示例日志160和示例数据存储区域180。在所图示的示例中,日志160和示例数据存储区域180被组织为彼此分离(例如,作为按照并排组织的单独存储区域)。在一些示例中,示例日志被包含于示例数据存储区域180中。也就是说,日志160可以是经由(特殊)地址对于处理器110而言可访问的。日志160包括日志记录(例如,日志记录162LOG_RECORD[0]-LOG_RECORD[L-1])的数量(L)。在所图示的示例中,日志160是非易失性的(例如,位于NVRAM中)。存储器150的示例日志160不必要求大的存储容量,因为日志记录160典型地仅被保持到对应写入命令的完成为止。数据存储区域180包括可寻址存储位置182(例如,ADDR[0] – ADDR[N-1])的数量(N)。
一些示例使用多个日志。每个日志160可以是先入先出(FIFO)数据结构(例如,队列)。可以将新的日志记录162附到日志160的一端,并且可以将旧的记录从日志160的相反端去除。在恢复期间,可以从日志的一端向另一端处理日志160的日志记录162,其中这些日志记录162包含恢复信息,并且相关联的提交记录没有被用来重做或取消写入。在一些示例中,日志160被存储于存储器模块控制器140的缓冲器430而不是存储器150中。在其他示例中,恢复信息可以被存储于除日志外的数据结构中和/或存储于其他位置中。在另外的其他示例中,日志160可以不存在。
在所图示的示例中,存储器模块控制器140是存储器模块130的控制中心。示例存储器模块控制器140经由存储器总线120接收来自处理器110的命令(例如,图1A的命令P1)。在本文公开的示例中,存储器模块130可以被永久性地安装或装配在处理器系统100中,和/或存储器模块130可以被可拆卸地装配到或可附着到处理器系统100。
在所图示的示例中,存储器模块控制器140基于从与存储器总线120通信地耦合的处理器110和/或任何其他设备(例如,另一处理器等)接收到的命令来自主地控制存储器150。按照这种方式,处理器110能够如下面描述的对存储器模块控制器140卸载复杂的存储器过程。
在所图示的示例中,存储器模块控制器140与存储器150共同位于存储器模块130中。在一些示例中,使用印刷电路板(PCB)来实现存储器模块130,并且将存储器模块控制器140与存储器150安装在PCB上。在其他示例中,使用三维(3D)堆叠芯片封装来实现存储器模块130,其中在封装的层之间具有物理芯片内互连的芯片中,实现存储器模块控制器140的集成电路(IC)设备和实现存储器150的IC设备被一个堆叠在另一个上面。在实现存储器模块130的3D堆叠芯片封装与处理器110分立的示例中,3D堆叠芯片封装被提供有用于例如经由存储器总线120与处理器110相通信的外部接口。例如在3D堆叠芯片封装包括处理器110的示例中,使用芯片内互连将存储器模块130与处理器110相连接。在另外的其他示例中,存储器模块130可以由多跳总线存储器模块(例如,小外形双列直插式存储器模块(SO-DIMM))、点到点总线存储器模块(例如,全缓冲DIMM(FBDIMM))、焊接存储器(soldered-onmemory)或多管芯封装(例如,片上系统(SOC)、系统级封装(SiP)等)来实现。
图2图示了可以用于使图1A和图1B的示例存储器模块控制器140执行原子写入命令的示例命令格式。在图2中,示出了三个不同的原子写入(AW)命令格式AW1、AW2、AW3来说明可以用于使存储器模块控制器140实行原子写入过程的不同命令格式。示例处理器110和示例存储器模块控制器140可以被配置成使用原子写入命令格式AW1、AW2、AW3中的任何一个或多个。如果多个原子写入格式(例如,原子写入命令格式AW1、AW2、AW3中的一个或多个或者任何其他原子写入命令格式)被系统100使用,则可以使用不同的命令标志符来使存储器模块控制器130能够区分它们。下面结合由存储器模块控制器140所实行的结果得到的存储器访问操作(MMC-1至MMC-N)来详细描述原子写入命令格式AW1、AW2、AW3的不同部分。在一些示例中,存储器模块控制器140检测到命令(例如,图1A的命令P1)是原子写入命令,并因此基于写入命令中的检测到的地址或地址格式来将与原子写入命令相关联的恢复信息存储在日志160中;当写入命令不包括检测到的地址或地址格式时,存储器模块控制器140并不将这些写入命令作为请求原子性来对待。
在图2的所图示的示例中,示例原子写入命令格式AW1被表示为:
[atomic-write][addr][data]。
在所图示的示例中,[atomic-write]是命令标志符(其指定了命令的类型),[addr]参数指定了存储器150中用于写入数据的目的地址(例如,目的地可寻址存储器位置),并且[data]参数是要写入到目的地址的新数据。在一些示例中,示例命令格式AW1类似于现有系统中的写入命令格式,除了在示例命令格式AW1中使用了不同的命令标志符(即,[atomic-write])。这可以允许处理器混合原子写入和非原子写入(例如,普通写入命令)。在一些示例中,原子地对待所有写入。
当所图示的示例的存储器控制器140从处理器110接收到以示例命令格式AW1的命令(例如,图1A的命令P1)时,所图示的示例的存储器模块控制器140实行存储器访问操作MMC-1至MMC-N,以对接收到的命令中所请求的指定位置处的数据实行更新。例如,存储器模块控制器140可以实行存储器访问操作MMC-1,以在图1B的日志条目162中,存储与接收到的原子写入命令相关联的恢复信息,该原子写入命令包括目的地址[addr](例如,与可寻址存储位置182相对应的地址)和新数据[data]。在这样的示例中,存储器模块控制器140可以实行存储器访问操作MMC-2,以将新数据写入与存储位置182相对应的目的地址[addr]。存储器模块控制器140可以实行存储器访问操作MMC-3,以将提交记录写为日志160的一端处的指示已完成原子写入操作的新日志条目162。也就是说,MMC-3将提交记录附加到日志160。
这样,存储器模块控制器140实行存储器访问操作MMC-1至MMC-N,而无需由处理器110在存储器总线120上的超出接收初始原子写入命令(例如,图1A的命令P1)之外进行的另外干预。
在所图示的示例中,命令格式AW2被如下表示:
[atomic-write]
[start flag] [dest addr 1] [length 1] [length-1-data-bytes]
[dest addr 2] [length 2] [length-2-data-bytes]
…
[dest addr n] [length n] [length-n-data-bytes]
[stop flag]。
示例原子写入命令格式AW2包括子写入,该子写入使存储器模块控制器140以原子形式向多个非邻接目的地可寻址存储器位置更新/写入数据(即,所有子写入都发生,或者没有子写入发生)。命令格式AW2表示复合原子写入命令。在所图示的示例中,非邻接目的地可寻址存储器地址([dest addr 1]、[dest addr 2]、至[dest addr n])可以具有低局部性或不具有局部性,因为它们跨存储器150而被定位并且被其他的非目的地可寻址存储器位置所分离。
在示例格式AW2中,使用起始标志([start flag])和停止标志([stop flag])来标识内附的子写入部分(例如,子写入1由[dest addr 1] [length 1] [length-1-data-bytes]表示,子写入2由[dest addr 2] [length 2] [length-2-data-bytes]表示,等等)的开始和结束。[length-i](其中1≤ i ≤ n)参数是在对应的目的地可寻址存储器位置[dest addr i]处要被更新的数据([length-i-data-bytes])的字节长度(或比特长度)。[length-i-data-bytes]参数是要写入到目的地可寻址存储器位置的数据。单个命令标志符[atomic-write]及其示例命令格式AW2的伴随的多个子写入可用于替换多个单个写入命令,以使存储器模块控制器140能够基于具有命令格式AW2的单个复合原子写入命令(例如,图1A的命令P1)实行多个写入操作(例如,多个对应的原子写入操作)。在所描述的示例中,由于复合原子写入命令(例如,具有命令格式AW2的原子写入命令)的子写入被原子地实行为一组,所以单个复合原子写入命令可以不等同于每个都与子写入之一相对应的一系列原子写入。
作为示例,当存储器模块控制器140接收到来自处理器110的以命令格式AW2的命令时,所图示的示例的存储器模块控制器140实行存储器访问控制操作(例如,MMC-1至MMC-N中的至少一个),以如接收到的命令中所标识的在指定的可寻址存储器位置处对数据实行多次更新。在所图示的示例中,存储器模块控制器140可以实行一个或多个存储器访问操作(例如,MMC-1至MMC-N中的至少一个),以将针对每个子写入的恢复信息存储在日志160中。存储器模块控制器140可以每个子写入存储一个日志记录162,或者存储器模块控制器140可以针对所有子写入存储单个日志记录162。因此,可以存在与每个子写入相关联的恢复信息,从而成为针对复合写入AW2的恢复信息。然后,存储器模块控制器140可以实行额外的存储器访问操作,以将[length-1-data-bytes]写入到 [dest addr 1],将[length-2-data-bytes]写入到[dest addr 2],……, 以及然后将[length-n-data-bytes]写入到[destaddr n]。
如本文描述的,在将数据的多个字节/字描述为从单个地址读取或向单个地址写入的情况下,数据实际上是从起始于给定地址的一系列顺序地址读取或向其写入的。这可以涉及到根据其颗粒度向存储器150的多个存储器访问操作。例如,从位置100读取4字节项可以涉及到读取来自位置100的第一字节、来自位置101的第二字节、来自位置102的第三字节和来自位置103的第四字节。
在一些示例中,存储器模块控制器140实行额外的存储器访问操作来读回恢复信息,以标识接下来要实行的(一个或多个)子写入的细节。最终,存储器模块控制器140可以实行存储器访问操作,以将单个提交记录162附到日志,从而将复合原子写入标记为已被完成。因此,存储器访问操作MMC-1至MMC-N能够根据从处理器110接收到的具有命令格式AW2的单个复合原子写入命令(例如,图1A的命令P1)来实行多个写入操作。这样,存储器模块控制器140实行存储器访问操作MMC-1至MMC-N,而无需由处理器110在超出接收以命令格式AW2的初始原子写入命令(例如,图1A的命令P1)之外进行的另外干预。
在一些示例中,命令格式AW2的起始标志[start flag]和/或停止标志[stopflag] 可以被省略。在这样的示例中,基于原子写入命令标志符([atomic-write])的存在和/或基于检测处理器110何时停止发送总线命令来暗示地址和数据参数的开始和/或结束。
在图2的所图示的示例中,原子写入命令格式AW3被表示为:
[write]<special addr> [addr]
[write]<special addr+offset> [data]。
在所图示的示例中,没有使用新的命令标志符(例如,[atomic-write])。取而代之地,使用特殊地址(例如,<special addr>)来指示正在请求原子写入。在命令格式AW3的第一行,示例[write] 参数是命令指示符(其指定了命令的类型)。<special addr>参数不必与任何实际物理地址相对应,而是取而代之地充当指示符来向存储器模块控制器140通知写入命令实际上是原子写入命令。[addr]参数是被用来计算目的地址的基本地址,后续接收到的数据(例如,AW3格式的第二行中的[data])要被写入到所述目的地址。在命令格式AW3的第二行中,[write]参数是命令标志符,<special addr+offset>指示用于基于来自AW3格式的第一写入命令的基本地址[addr]来计算目的地址的所编码的地址偏移值(offset),以及[data]参数是要被写入到目的地址的目的地可寻址存储器位置(例如,基本地址[addr] + offset)的数据。在所图示的示例中,存储器模块控制器140可以被配置成在接收到具有特殊目标地址(例如,在0..<limit>中,对于N,为<special address>+N)时,将数据[data]原子地写入到目的地可寻址存储器位置([addr]+offset)。在所图示的示例中,当存储器模块控制器140接收到具有特殊目标地址参数(<special addr>)的第一写入命令时,它被配置成等待具有带有已编码偏移的特殊目标地址参数(<special addr+offset>)的第二写入命令。示例存储器模块控制器140将第一写入命令和第二写入命令对待为单个原子写入命令(例如,图1A的命令P1)。在一些示例中,可以使用命令格式AW3的变形,其中存储器模块控制器140从处理器110接收以格式[write] <special addr+offset> [data]的多个偏移和数据,以指示存储器模块控制器140实行具有子写入的复合原子写入(类似于命令格式AW2)。在这样的示例中,每个子写入包括与基于基本地址[addr]和来自后续写入命令的后续已编码偏移值(offset)所计算的目的地址相对应的不同目的地可寻址存储器位置。此外,在这样的示例中,至特殊地址的写入命令可以被用来向存储器模块控制器140指示复合原子写入是完成的。
当所图示的示例的存储器模块控制器140从处理器110接收到以命令格式AW3的命令(例如,图1A的命令P1)时,所图示的示例的存储器模块控制器140实行存储器访问操作MMC-1至MMC-N,以对接收到的命令中所请求的指定可寻址存储器位置处的数据实行更新。存储器访问操作MMC-1至MMC-N可以按照与利用命令格式AW1的类似方式来实行,除了[addr],这里存在[addr]+offset。这样,存储器模块控制器140实行存储器访问操作MMC-1至MMC-N,而无需由处理器110在超出接收以命令格式AW3的初始原子写入命令(例如,图1A的命令P1)之外进行的另外干预。
在图2的所图示的示例中,在命令格式AW2的一些示例使用中,单个复合原子写入命令(例如,图1A的命令P1)中写入命令的多个目的地址可以具有高空间局部性,因为它们在连续可寻址存储器位置中物理相邻或彼此靠近,或者由能够使用偏移值来表示的地址数量分离。因此,在这样的示例中,取代提供多个完整的目的地址,可以将第一子写入的目的地址用作针对用于其余子写入的偏移的基本地址,从而在小的分散写入命令表现出足够的空间局部性的情况下节省更多带宽。因此,存储器模块控制器140可以向基于偏移值以及基于在来自处理器110的命令(例如,图1A的命令P1)中提供的基本地址所确定的目的地址实行一个或多个存储器访问操作(MMC-1—MMC-N)。
可以使用任何合适的技术来编码命令的信息。例如,取代使用起始地址和长度,可以使用起始地址和结束地址,其中结束地址是包含性的或排他性的。在一些示例中,数据的长度由预定值、长度字段或第一地址和第二地址之间的差值中的至少一个来确定(例如,长度可能是起始-结束或起始-结束+1)。此外,在一些示例中,长度可以按不同单位(例如,比特、字节、字等等)来度量。
图3图示了可以被用来使图1A和图1B的示例存储器模块控制器140执行COW写入命令的示例命令格式。在图3中,示出了两个不同的COW写入命令格式(COW1,COW2)来说明可以被用来使存储器模块控制器140实行COW写入的不同命令格式。示例处理器110和示例存储器模块控制器140可以被配置成使用COW写入命令格式COW1、COW2中的任何一个或两者。如果使用格式COW1、COW2两者,则可以使用不同的命令标志符来区分它们。下面结合由存储器模块控制器140实行的结果得到的存储器访问操作(MMC-1至MMC-N)来详细描述COW写入命令格式COW1、COW2的不同部分。
在图3的所图示的示例中,COW写入命令格式COW1被表示为:
[cow-write][addr-old][addr-new][sub-offset][sub-len][data]
在所图示的示例中,[cow-write]是命令标志符,[addr-old]参数是要从中读取旧/原始数据的可寻址存储器位置的第一地址,[addr-new]参数是要向其写入已更新数据的可寻址存储器位置的目的地址,[sub-len]参数指明了[data]的字节长度(或字节的数量),以及[data]参数是要被用来更新旧/原始数据的数据。[sub-offset]、[sub-len]和[data]一起构成修改数据。在命令格式COW1中,旧数据和新数据的长度可以是预定义的值S。在一个示例中,值S可以是缓存线的大小。在另一示例中,S是通过所使用的命令标志符的选择从预定的一组值当中确定的。在这样的示例中,命令格式COW1等同于将[addr-old]…[addr-old]+S-1拷贝到[addr-new]…[addr-new]+S-1,并然后将[data]写入到[addr-new]+[sub-offset]..[addr-new]+[sub-offset]+[sub-len]-1。因此,拷贝和写入可以相组合,使得旧数据被读出并且更新后的数据(例如,使用修改数据所更新的原始数据)被直接写入到目的地址[addr-new]。这可以避免向地址(例如,[addr-new]+[sub-offset])写入两次,首先利用原始数据的一部分,以及然后利用[data]的一部分。
当所图示的示例的存储器控制器140从处理器110接收到以命令格式COW1的命令(例如,图1A的命令P1)时,所图示的示例的存储器模块控制器140实行存储器访问操作MMC-1至MMC-N,以如接收到的命令中所请求的那样在指定的可寻址存储器位置处实行数据的写时拷贝。例如,存储器模块控制器140实行一个或多个存储器访问操作,以从位于第一地址[addr-old]处的可寻址存储器地址开始读取数据(原始数据)的S个字节。在这样的示例中,存储器模块控制器140可以实行额外的存储器访问操作,以从目的地址[addr-new]开始将已更新数据写入到S个目的地可寻址存储器位置。在这样的示例中,存储器模块控制器140通过在实行写入存储器访问操作之前用[data]替换以偏移[sub-offset]开始并且长度为[sub-len]的读取数据的部分,来更新读取数据。例如,存储器模块控制器140可以通过使用控制逻辑420和缓冲器430(参见图4)来内部地实行更新。这样,存储器模块控制器140实行存储器访问操作MMC-1至MMC-N,而无需由处理器在超出接收以命令格式COW1的初始COW写入命令(例如,图1A的命令P1)之外进行的另外干预。
在图3的所图示的示例中,COW写入命令格式COW2被表示为:
[cow-write][addr-old][len-old][addr-new][sub-offset][sub-len][data]。
在所图示的示例中,[cow-write]是命令标志符,[addr-old]参数是要从中读取旧/原始数据的可寻址存储器位置的第一地址(即,可寻址存储器位置的第一地址),[len-old]参数指明了要从第一或源可寻址存储器位置拷贝的数据的字节长度(或字节的数量),[addr-new]参数是要向其写入已更新数据的可寻址存储器位置的目的地址,[sub-len]参数指明了[data]的字节长度(或字节的数量),以及[data]参数是要被用来更新旧/原始数据的数据。[sub-offset]、[sub-len]和[data] 包括修改数据。COW2类似于COW1,但是允许明确地指定原始数据/正被更新的数据/已更新的数据的长度,而不是使用预定义的值S。
当所图示的示例的存储器控制器140从处理器110接收到以命令格式COW2 的命令(例如,图1A的命令P1)时,所图示的示例的存储器模块控制器140实行存储器访问操作MMC-1至MMC-N,以如接收到的命令中所请求的那样从指定的可寻址存储器位置处的数据向另一指定的可寻址存储器位置实行COW。例如,存储器模块控制器140实行一个或多个存储器访问操作,以从源地址[addr-old]读取旧/原始数据的长度[len-old]。在这样的示例中,存储器模块控制器140可以实行额外的存储器访问操作,以将具有长度[len-old]的已更新数据写入到目的地址[addr-new]处的目的地可寻址存储器位置。在这样的示例中,存储器模块控制器140可以通过在实行额外的存储器访问之前用[data]替换以偏移[sub-offset]开始并且长度为[sub-len]的读取数据的部分,来更新读取数据。例如,存储器模块控制器140能够通过使用控制逻辑420和缓冲器430来实行更新。这样,存储器模块控制器140实行存储器访问操作MMC-1至MMC-N而无需由处理器110 超出接收以命令格式COW2的初始COW写入命令(例如,图1A的命令P1)之外进行的另外干预。
除了命令格式COW1、COW2外或代替命令格式COW1、COW2,可以使用合适的技术来实现COW命令格式的其他示例变形。例如,[data]的长度可以是隐含的,或者修改数据可以包含形式[sub-offset]、[sub-length]、[data]的多元组,象征了原始数据的多个部分应当被替换。在其他示例中,修改数据可以指示算术操作要作用于的原始数据的一部分,所述算术操作诸如是对其进行递增或确定,或对其添加所供应的值。可以使用修改数据来在原始数据的给定点处(例如,在原始数据的第一偏移处)插入新数据,或从原始数据在给定点处(例如,原始数据的第二偏移处)删除给定量的信息。
在本文公开的示例中,在适当位置进行记录和更新以及用修改操作进行拷贝的操作是在存储器模块(例如,图1B的存储器模块130)内部实行的,而不是由处理器(例如,图1A、图1B、图2和/或图3的处理器110)或存储器控制器(例如,图1B的存储器控制器112)实行的。例如,由处理器110将要以原子写入(例如,图2的原子写入)进行写入的数据跨越存储器总线120发送至存储器模块130,并且存储器模块控制器140在存储器模块130之内将与原子写入命令相关联的恢复信息内部地存储到存储器150的日志区域160,而无需另外的处理器干预。在其他示例中,在COW写入(例如,图3的COW写入)期间要被拷贝的数据(例如,从源地址[addr_old]拷贝、更新、然后写入到目的地址[addr_new]的数据)没有从存储器模块130跨越存储器总线120被发送至处理器110,而是取而代之地在存储器模块130之内被内部地拷贝(例如,读取和写入)。因此,相比使用明显更多外部总线通信来写入数据的现有系统,本文公开的用于实行所公开的示例原子写入操作和COW写入操作的示例要求相对少的处理器干预和相对少的跨越外部存储器总线120的处理器通信。
图4是图1A、图1B、图2和图3的存储器模块控制器140的示例实现方式的框图。在图4的所图示的示例中,存储器模块控制器140包括示例总线接口410、示例控制逻辑420(例如,逻辑电路)、示例缓冲器430、示例存储器接口440和示例写入中断检测器450。示例存储器模块控制器总线402促进总线接口410、控制逻辑420、缓冲器430、存储器接口440和/或写入中断检测器450之间的通信。
尽管图4图示了实现存储器模块控制器140的示例方式,然而图4中所图示的元件、过程和/或设备中的一个或多个可以被组合、分割、重新布置、省略、消除和/或以任何其他方式实现。此外,示例总线接口410、示例控制逻辑420、示例缓冲器430、示例存储器接口440或示例写入中断检测器450、和/或更一般地,示例存储器模块控制器140,可以由硬件、软件、固件、和/或硬件、软件和/或固件的任意组合来实现。因此,例如,示例总线接口410、示例控制逻辑420、示例缓冲器430、示例存储器接口440或示例写入中断检测器450、和/或更一般地,示例存储器模块控制器140,可以由一个或多个电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)和/或现场可编程逻辑器件(FPLD)等来实现。另外进一步地,示例存储器模块控制器140可以包括除图4所图示那些之外的或取代图4所图示那些的一个或多个元件、过程和/或设备,和/或可以包括所图示的元件、过程和设备中任何一个以上或全部。
所图示的示例的存储器模块控制器140被提供有示例总线接口410以将存储器模块控制器140与图1B的外部存储器总线120通信地耦合。在所图示的示例中,总线接口410管理存储器模块控制器140和经由外部存储器总线120与之相连接的处理器110和/或任何其他设备(例如,其他处理器)之间的通信。
所图示的示例的存储器模块控制器140 被提供有控制逻辑420以管理对例如图1A、图1B、图2和图3的存储器150的存储器访问过程和操作。所图示的示例的控制逻辑420被配置成实行如本文描述的复合存储器访问操作,其使所连接的处理器(例如,处理器110)能够对存储器模块控制器140卸载存储器访问过程的操作。在所图示的示例中,使用逻辑电路来实现控制逻辑420。然而,可以附加地或可替换地使用软件和/或固件来实现控制逻辑420。
所图示的示例的存储器模块控制器140被提供有缓冲器430,以暂时存储进入的数据和/或经由总线接口410接收的命令,和/或暂时存储外出的数据以便经由总线接口410传送到其他设备(例如,处理器、外部存储器控制器等)。在一些示例中,使用总线接口410来暂时存储COW命令的原始数据。
所图示的示例的存储器模块控制器140被提供有存储器接口440,以将存储器模块控制器140通信地耦合到图1A、图1B、图2和图3的存储器150。在所图示的示例中,存储器接口440包括根据一个或多个技术特定的工业标准存储器接口(例如,由JEDEC固态技术协会采用的存储器接口标准,比如NVRAM接口、DRAM接口等)所实现的一个或多个技术特定的存储器控制器(例如,NVRAM控制器、DRAM控制器等)。例如,存储器接口440可以包括DRAM控制器,所述DRAM控制器具有用于控制预充电定时、行地址选通脉冲(RAS)定时、列地址选通脉冲(CAS)定时、自刷新模式、突发访问模式、低功率模式等的逻辑。
在所图示的示例中,存储器接口440是意在促进与机载于存储器模块130上的一种或多种特定类型的存储器的通信的存储器特定的接口,而总线接口410可以是但不必特定于任何具体类型的存储器技术。
所图示的示例的存储器接口440可以是可配置成被用在仅具有易失性DRAM的存储器模块中或仅具有非易失性RAM的存储器模块中。在一些示例中,存储器接口440能够实现具有不同类型的存储器的混合存储器模块,所述不同类型的存储器诸如是单个存储器模块上的不同类型的易失性存储器(例如,DRAM和SRAM),单个存储器模块上的不同类型的非易失性存储器(例如,PCRAM和忆阻器),和/或单个存储器模块上的不同类型的易失性和非易失性存储器(例如,DRAM和PCRAM,DRAM和忆阻器,等等)。在一些这样的示例中,为了实现这样的混合存储器模块,存储器接口440可以包括多种类型的技术特定的存储器控制器(例如,DRAM控制器、PCRAM控制器、忆阻器控制器、SRAM控制器等),使得存储器模块控制器140能够与相同存储器模块上的不同类型的存储器技术相通信。
图4的示例写入中断检测器450可以被用来实现图1A的写入中断检测器105。尽管写入中断检测器450被示为在存储器模块控制器140之内,然而其可以附加地或可替换地被提供在图1A、图1B、图2和图3的处理器110中,或在存储器模块控制器140和处理器110外部并且被通信地耦合到图1B的存储器总线120,或在与存储器模块控制器140相通信的任何其他设备(例如,另一处理器)内。
所图示的示例的写入中断检测器450确定命令(例如,写入命令、原子写入命令、COW写入命令等)是否已被中断。可替换地,写入中断检测器450可以确定系统100是否刚好已被重启。在一些示例中,存储器模块控制器140使用写入中断检测器450来确定是否要实行恢复操作(例如,在故障停止事件之后)。
图5、图6和/或图7中示出了表示用于实现图1A、图1B、图2、图3和图4的存储器模块控制器140的示例过程的流程图。在这些示例中,所述过程可以由图4的控制逻辑420来实行。在一些示例中,以上描述的逻辑电路可以实现控制逻辑420以实行示例过程。在一些示例中,用于配置控制逻辑420的程序或其部分可以被存储在有形计算机可读存储介质上,该有形计算机可读存储介质比如是固态只读存储器(ROM)设备、集成电路(IC)存储器设备、嵌入式硬件存储器、逻辑电路、闪速存储器、高速缓存、随机存取存储器(RAM)或与控制逻辑420相关联和/或被体现在固件或专用硬件中的存储器。此外,尽管参考图5、图6和/或图7所图示的流程图公开了示例过程,然而实现存储器模块控制器140的许多其他方法可以被可替换地使用。例如,方框的执行顺序可以被改变,和/或所描述的方框中的一些可以被改变、消除或组合。
如上面提到的,图5、图6和/或图7的示例过程可以由控制逻辑420实现。可以使用有形计算机可读介质来配置控制逻辑420,所述有形计算机可读介质诸如是固态只读存储器(ROM)设备、集成电路(IC)存储器设备、嵌入式硬件存储器、逻辑电路、闪速存储器、高速缓存、随机存取存储器(RAM)和/或任何其他存储介质,在其中信息针对任何持续时间(例如,针对延长的时间段、永久性地、简短情形、针对暂时缓冲和/或针对信息的缓存)而被存储。如本文所使用的,术语有形计算机可读介质被清楚限定为包括任何类型的计算机可读存储装置并且排除传播信号。附加地或可替换地,可以使用存储在非暂时性计算机可读介质上的程序来配置控制逻辑420,所述非暂时性计算机可读介质诸如是硬盘驱动器、闪速存储器、只读存储器、紧致盘、数字通用盘、高速缓存、随机存取存储器和/或任何其他存储介质,在其中信息针对任意持续时间(例如,针对延长的时间段、永久性地、简短情形、针对暂时缓冲和/或针对信息的缓存)而被存储。如本文所使用的,术语非暂时性计算机可读介质被清楚地限定为包括任何类型的计算机可读介质并且排除传播信号。如本文所使用的,当短语“至少”在权利要求的前序中被用作过渡术语时,其按照与术语“包括”是开放式的那样相同的方式而是开放式的。因此,在权利要求的前序中使用“至少”作为过渡术语的权利要求可以包括除了权利要求中清楚记载的那些元素以外的元素。
可以被图1A、图1B、图2和图4的存储器模块控制器140用来实行从处理器110(例如,图1A、图1B、图2)接收到的原子写入命令的示例过程500由图5中所示的示例流程图来表示。过程500是迭代的。存储器模块控制器140可以彼此并行地使用过程500处理多个命令。
在所图示的示例过程500中,存储器模块控制器140接收来自处理器110的命令(例如,后面是原子写入(诸如图1A的命令P1)的读取)以实行存储器访问操作。在所图示的示例中,在接收到原子写入命令时并且当没有被中断时,存储器模块控制器140存储恢复信息,并然后基于该单个原子写入命令实行写入,而不要求经由外部存储器总线120的来自处理器110的另外的命令。
最初,在图5的所图示的示例的方框510处,控制逻辑420(图4)确定是否已经经由总线接口410(图4)从处理器110(图1A和图1B)接收到新命令。在一些示例中,控制逻辑420确定命令是否正在缓冲器430(图4)的队列中等待。如果已接收到命令(方框510),则控制前进到方框520。如果尚未接收到命令(方框510),则控制逻辑420继续监视总线接口410和/或缓冲器430以确定是否已经从处理器110接收到命令。
在所图示的示例的方框520处,控制逻辑420确定接收到的命令是否是原子写入命令。例如,控制逻辑420可以基于在接收到的命令中指定的命令标志符(例如,使用原子写入命令格式AW1和AW2)和/或特殊地址(例如,使用原子写入命令格式AW3)来确定命令的类型,如上面结合图2所描述的。如果接收到的命令不是原子写入命令(方框520),则控制前进到方框525,在那里控制逻辑420和/或存储器接口440执行接收到的命令(例如,根据其命令标志符)。例如,控制逻辑420和/或存储器接口440可以执行读取命令、非原子写入命令、低功率过渡命令等。如果控制逻辑420确定接收到的命令是原子写入命令(方框520),则控制前进到方框530。
在方框530处,控制逻辑420使存储器接口440将与命令相关联的恢复信息存储在存储器150(图1A、图1B、图2)的一个或多个日志记录162(图1B)中。恢复信息可以包括(一个或多个)目的地址、新数据和/或(一个或多个)目的地址的先前内容。恢复信息被用于在写入被中断的情况下促进重做或取消由写入命令所请求的写入。
在方框540处,存储器接口440将原子写入命令的新数据写入到存储器150的与原子写入命令的(一个或多个)目的地址相对应的(一个或多个)目的地址。在图5的示例中,在方框540处,在没有来自处理器110的处理器(或存储器控制器)干预(例如,超出原始原子写入命令、指示消息等之外的额外写入请求)的情况下写入数据。在方框540之后,控制前进到方框550。
在所图示的示例的方框550处,存储器接口440写入提交记录以指示原子写入命令已被完成。在一些示例中,在方框550处,存储器模块控制器140可以从日志160去除不再需要的日志记录162,因为那些日志记录162不再与未决的原子写入相关联。因此,与原子写入相关联的恢复信息可以最终被擦除。在一些示例中,可以使用锁定(lock)来确保向日志160的附加是原子操作。在一些示例中,不使用提交记录,而是使用将未决的原子写入标记为不再未决的某种其他方法。
在方框550之后,控制逻辑420确定是否继续针对来自处理器110的另外的命令来监视总线接口410和/或缓冲器430(方框570)。如果控制逻辑420确定应当不再监视命令的接收(例如,系统正在进入关机或休眠模式,存储器模块130已与处理器110通信地断开连接,等等),则示例过程500结束。然而,如果控制逻辑420确定应当继续监视命令的接收,则控制返回到方框510,在那里控制逻辑420等候经由外部存储器总线120的来自处理器110或其他设备的下一个命令。
图5的上述原子写入过程可以被用来确保原子写入命令的原子性。因此,当原子写入过程被中断(例如,处理器110由于电力故障、系统崩溃等而重启)时,可以使用例如图6的过程600来实行恢复。在一些示例中,如果过程500被中断,则原子写入命令的处理中的一些可能没有被过程500完成。例如,如果写入被中断,则要由方框540来进行的向存储器写入新数据可能尚未被过程500所达成。
在图6中,过程600可以由图1A、图1B、图2和图4的存储器模块控制器140执行以实行从写入中断(例如,由于崩溃、失去电力等)的恢复。在方框610处,控制逻辑420(图4)确定是否实行恢复。在一些示例中,存储器模块控制器140基于来自写入中断检测器450的指示来确定是否实行中断写入恢复过程。例如,写入中断检测器450可以确定是否出现系统崩溃和/或电力故障(例如,基于系统崩溃标志、电力故障标志、重启标志等)。
在一些示例中,存储器模块控制器140基于从处理器110接收到的信息(例如,状态信息、恢复命令等),基于存储器150的状态(例如,日志区域160包括未完成的命令),基于正在实行的硬件恢复操作(例如,磁盘重建)等等,来确定是否实行恢复过程。例如,系统崩溃或电力故障可以中断对于实行原子写入命令的存储器访问操作的初始尝试。
在图6的所图示的示例中,存储器模块控制器140实行中断写入恢复过程,以通过重做或取消任何未决的(一个或多个)原子写入来恢复数据。在一些示例中,图6的过程600可以由经由外部存储器总线120向存储器模块控制器140发送命令的处理器110或其他设备发起,以实行恢复过程。最初,在图6的所图示的示例中,如果存储器模块控制器140没有要实行中断写入恢复(方框610),则控制逻辑420结束中断写入恢复过程600。如果存储器模块控制器140要实行中断写入恢复,则控制前进到方框620。
在所图示的示例的方框620处,控制逻辑420(图4)开始扫描日志160。在一些示例中,在方框620处,控制逻辑420设置指针来指向日志160的最早或最晚日志记录162。在要重做写入的一些示例中,可以从最旧向最新的日志记录162扫描日志160。在要取消写入的一些示例中,可以从最新向最旧的日志记录162扫描日志160。
在图6的方框630处,控制逻辑420检查日志160以确定是否还有日志160的日志记录162仍要被处理。如果没有日志记录162仍要被处理,则控制进行到方框680。如果的确有日志记录162仍要被处理,则控制进行到方框640。
在图6的方框640处,控制逻辑420检查扫描的当前日志记录162以确定当前日志记录162是否具有恢复信息。如果当前日志记录162不具有恢复信息,则控制进行到方框670。如果当前日志记录162的确包括恢复信息,则控制进行到方框650。
在图6的方框650处,控制逻辑420检查当前日志记录162是否与提交记录相关联。如果当前日志记录162与提交记录相关联,则当前日志记录162与不再未决的原子写入(即,它已被完成)相关联,并且控制进行到方框670。如果当前日志记录162不与提交记录相关联,则控制进行到方框660。在一些示例中,日志记录162可以通过每个日志记录(包括提交记录)与提交记录相关联,所述每个日志记录162(包括提交记录)包括与日志记录162相关联的命令的数目(例如,目前为止接收到的命令的计数);如果日志记录162和提交记录具有相同的命令数目,则认为日志记录162与提交记录相关联。
在方框660处,控制逻辑420可以实行与当前日志记录162中的恢复信息相对应的中断写入(或子写入)的重做(例如,控制逻辑将恢复信息中包括的新数据写入到恢复信息中包括的目的地址)。可替换地,控制逻辑420可以实行与当前日志记录162中的恢复信息相对应的中断写入(或子写入)的取消(例如,控制逻辑420将恢复信息中包括的旧数据写入到恢复信息中包括的目的地址)。在一些示例中,或者总是使用重做,或者总是使用取消。
在图6的方框670处,控制逻辑420前进到日志160中的下一个日志记录162。这可以涉及使指针沿着日志160正被扫描的方向前进到当前日志记录162。然后控制返回到方框630,以确定是否有更多的日志记录162仍要被处理。如果没有日志记录162仍要被处理,则控制前进到方框680。
如果没有日志记录仍要被处理(在方框630处),则可能已被中断的所有未决原子写入都已经被重做或取消。因此,在方框680处,控制逻辑420可以按照原子的方式擦除整个日志160。这样的过程擦除所有恢复信息并指示不再存在未决的原子写入。在一些示例中,控制逻辑420在其完成针对对应写入命令处理与给定原子写入(或复合原子写入)命令相关联的日志记录之后将提交记录写入到日志160。如果恢复本身被中断,则这样的过程可以节省资源。
在一些示例中,在原子写入的中断之后(例如,在与图1A的P1相关联的恢复信息被记录在存储器150的日志160(图1B)中和/或被存储器模块控制器140接收时),运行于处理器110上的固件、软件和/或硬件可以被配置成检查存储器150的日志160。在一些示例中,处理器110可以向存储器模块控制器140发送多个命令,以实行存储器访问操作来发起中断写入恢复过程(例如,示例过程600)。在一些示例中,在向存储器150恢复电力时或者在被处理器110命令时,存储器150的硬件(例如,固态设备、硬盘驱动器等)中的恢复工具(例如,恢复软件、固件等)和/或与存储器150相关联的硬件设备独立地自动实行从写入中断的恢复过程(例如,示例过程600)。
在不同的示例中,过程600不由存储器模块控制器140相对自主地实行。而是,过程600由处理器110使用提供给处理器110以用于取消或重做写入的恢复信息来实行。也就是说,处理器110借助于存储器模块控制器140使用存储器命令来读取日志160;在与过程600类似的过程之后,处理器110向存储器150发出适当的非原子写入命令以重做或取消每个未决原子写入。然后,处理器110可以使用另一命令来擦除日志160。在处理器110要实行恢复的示例中,存储器模块控制器140可以被配置成比如果存储器模块控制器140要实行恢复的情况下实行更少的任务。
可以由图1A、图1B、图3或图4的存储器模块控制器140执行来实行从处理器110(图1A、图1B、图3)接收到的COW写入命令的示例过程700由图7中所示的流程图表示。在所图示的示例过程700中,处理器110向存储器模块控制器140发送单个命令(例如,COW写入)以实行多存储器访问操作。示例存储器模块控制器140基于来自处理器110的单个COW写入命令来实行多存储器访问操作,而不要求经由外部存储器总线120的来自处理器110的另外的命令。
最初,在图7的所图示的示例的方框710处,控制逻辑420(图4)确定是否已经经由总线接口410(图4)从处理器110(图1A、图1B和图3)接收到命令。在一些示例中,控制逻辑420确定命令是否正在缓冲器430(图4)的队列中等待。如果已经接收到命令(方框710),则控制前进到方框720。如果尚未接收到命令(方框710),则控制继续在方框710处监视总线接口410和/或缓冲器430以确定是否已经从处理器110接收到命令。
在所图示的示例的方框720处,控制逻辑420确定接收到的命令是否是COW写入命令。例如,控制逻辑420可以基于命令消息中的命令标志符(例如,图3的命令格式COW1和COW2的[cow-write]标志符)来确定接收到的命令的类型,如上面结合图3描述的。如果接收到的命令是非COW写入命令(方框720),则控制前进到方框725,在那里控制逻辑420和/或存储器接口440执行接收到的命令(例如,根据接收到的命令的命令标志符)。例如,控制逻辑420和/或存储器接口440可以执行读取命令、普通写入命令、或原子写入命令、低功率过渡命令等。如果控制逻辑420确定接收到的命令是COW写入命令(方框720),则控制前进到方框730。
在图7的方框730、740和750中,控制逻辑420使用存储器接口440来执行COW写入命令,而无需由处理器110进行的另外干预。例如,在方框730处,存储器接口440从第一可寻址位置182读取原始数据。第一可寻址位置182(例如,图1B的ADDR[1])在旧(或源)地址参数(例如,图3的COW1和COW2的[addr-old]参数)中被指定。原始数据可以被保持在缓冲器430中或者被拷贝到在新或目的地址参数(例如,图3的COW1和COW2的[addr-new]参数)中指定的第二可寻址位置182(例如,图1B的ADDR[3])。
在方框740处,存储器接口440使用修改数据来更新原始数据以创建已更新数据。可以对缓冲器430中保持的原始数据或者对第二可寻址位置182处的原始数据的拷贝实行这种更新。可以通过用新数据替换在第一偏移处开始的原始数据的一部分来进行更新。
在所图示的示例的方框750处,存储器接口440根据COW写入命令在存储器150的第二可寻址位置处存储已更新数据。这可以涉及拷贝来自存储器缓冲器430的已更新数据。在一些示例中,通过首先将原始数据拷贝到存储器150的第二可寻址位置并原地修改它,来同时实行方框740和750。在其他示例中,通过修改原始数据同时将它从存储器150的第一可寻址位置拷贝到存储器150的第二可寻址位置,来同时或基本上上同时地实行方框740和750。例如,存储器接口440可以将来自没有被第一偏移(例如,原始数据的将不被改变的(一个或多个)部分)覆盖的第一可寻址位置的原始数据拷贝到第二可寻址位置,并将新数据写入到第二可寻址位置加上第一偏移。可以实现读取原始数据、修改原始数据和/或存储原始数据的其他合适的技术。
在一些示例中,在原始数据具有相当大的长度的情况下,方框730、740和750可以被重复若干次。例如,可以读取、更新和存储原始数据的第一部分,之后是读取、更新和存储原始数据的第二部分。在一些示例中,并行地实行这些方框。
在方框750之后,控制逻辑420确定是否继续针对接收到的命令监视总线接口410和/或缓冲器430(方框760)。如果控制逻辑420确定存储器模块140不再监视命令的接收(例如,系统将进入关机,存储器模块130已经与处理器110可通信地断开连接,等等),则示例过程700结束。然而,如果控制逻辑420确定存储器模块要继续监视命令的接收(方框760),则控制返回到方框710,在那里控制逻辑420等候经由外部存储器总线120的来自处理器110或其他设备的下一个命令。
尽管彼此独立地示出和描述了图5至图7的示例过程,然而在一些示例中,图5至图7的示例过程中的任何一个或多个可以在相同的系统上通过使用相同和/或不同的存储器模块或存储器节点来一起并行地实行或逐个实行。例如,图5和图7可以均由单个存储器模块控制器140来实现,使得图5被实现为执行原子写入命令并且图7被实现为执行COW写入命令。
本文描述的示例方法和装置通过使用随机存取存储器中的非易失性日志和/或COW,能够实现更高效地使用系统的外部存储器总线以及确保存储器的一致更新。
尽管本文已公开了某些示例方法、装置和/或制造品,然而本专利的覆盖范围不限于此。相反,本专利覆盖清楚地落入本专利的权利要求的范围之内的所有方法、装置和制造品。
Claims (22)
1.一种方法,包括:
在没有处理器干预的情况下将与写入请求相关联的恢复信息存储在存储器中,所述恢复信息用于促进在写入被中断的情况下重做或取消由写入请求所请求的写入,所述写入请求是从处理器接收的并且包括目的地址和新数据;以及
如果写入没有被中断,则在没有处理器干预的情况下将新数据写入到存储器中的目的地址。
2.根据权利要求1所述的方法,其中,在没有处理器干预的情况下存储恢复信息包括:在没有处理器干预的情况下,将恢复信息存储在存储器的非易失性日志中。
3.根据权利要求1所述的方法,进一步包括:
在中断写入的系统崩溃或电力故障之后,执行以下各项中的至少一个:在没有处理器干预的情况下,基于恢复信息来重做写入或取消写入。
4.根据权利要求2所述的方法,进一步包括:
如果写入被中断,则在没有处理器干预的情况下使用恢复信息将新数据写入到存储器中的目的地址。
5.根据权利要求1所述的方法,进一步包括:
在写入的中断之后,向处理器提供恢复信息以在取消或重做写入时使用。
6.一种装置,包括:
总线接口,用于从处理器接收用于向存储器写入的写入请求,所述写入请求包括目的地址和新数据;以及
逻辑电路,用于引起在没有处理器干预的情况下把与写入请求相关联的恢复信息存储在存储器中,所述恢复信息用于促进在写入被中断的情况下重做或取消与写入请求相关联的写入。
7.根据权利要求6所述的装置,其中,如果写入没有被中断,所述逻辑电路进一步被配置成:
将新数据写入到存储器中的目的地址,以及
在新数据被写入到目的地址之后,在没有处理器干预的情况下擦除恢复信息。
8.根据权利要求6所述的装置,其中,所述逻辑电路进一步被配置成:
将目的地址和新数据存储为恢复信息;以及
在执行写入请求的存储器访问操作的尝试的中断之后,将新数据写入到存储器中的目的地址。
9.根据权利要求6所述的装置,其中,所述逻辑电路进一步被配置成:
读取存储器中目的地址的内容;
将目的地址和所读取的内容存储为恢复信息;以及
在写入的中断之后,将所读取的内容写入到存储器中的目的地址。
10.根据权利要求6所述的装置,其中,所述逻辑电路和总线接口共同位于存储器的存储器模块中。
11.根据权利要求6所述的装置,其中,所述恢复信息被存储在存储器中的日志中。
12.一种包括指令的有形计算机可读存储介质,所述指令在被执行时,使机器至少执行以下各项:
向存储器模块发出包括目的地址和新数据的写入请求,
其中,响应于接收到写入请求并且在没有执行指令的机器的干预的情况下,存储器模块存储与写入请求相关联的恢复信息,以促进在写入中断的情况下取消写入或重做写入。
13.一种装置,包括:
总线接口,用于从处理器接收写时拷贝写入命令,所述写时拷贝写入命令包括第一地址、第二地址和修改数据;以及
逻辑电路,用于在没有处理器干预的情况下从存储器中的第一地址读取第一数据,使用修改数据更新第一数据,以及将已更新数据存储在存储器中的第二地址处。
14.根据权利要求13所述的装置,其中,所述修改数据包括偏移和新数据,并且所述逻辑电路进一步用于通过用新数据在所述偏移处替换第一数据来使用修改数据更新第一数据。
15.根据权利要求13所述的装置,其中,所述逻辑电路进一步用于通过以下各项中的至少一个来使用修改数据更新第一数据:在第一数据中的第一偏移处插入新数据,或在第一数据中的第二偏移处删除数据。
16.根据权利要求13所述的装置,其中,第一数据的长度由以下各项中的至少一个来确定:预定值、写时拷贝写入命令的长度字段、或写时拷贝写入命令的第一地址与第三地址之间的差值。
17.根据权利要求13所述的装置,其中,所述逻辑电路和总线接口共同位于存储器的存储器模块中。
18.一种方法,包括:
在没有处理器干预的情况下,从存储器中的第一地址读取第一数据,所述第一地址在从处理器接收到的写时拷贝写入命令中被指定;
在没有处理器干预的情况下,使用写时拷贝写入命令的修改数据来更新第一数据;以及
在没有处理器干预的情况下,将已更新数据存储在写时拷贝写入命令的第二地址处。
19.根据权利要求18所述的方法,其中,所述修改数据包括偏移和新数据,并且所述方法进一步包括通过用新数据在所述偏移处替换第一数据来使用修改数据更新第一数据。
20.根据权利要求18所述的方法,进一步包括通过以下各项中的至少一个来使用修改数据更新第一数据:在第一数据的第一偏移处插入新数据,或在第一数据的第二偏移处删除旧数据。
21.根据权利要求18所述的方法,其中,第一数据的长度由以下各项中的至少一个来确定:预定值、写时拷贝写入命令的长度字段、或写时拷贝写入命令的第一地址与第三地址之间的差值。
22.一种包括指令的有形计算机可读存储介质,所述指令在被执行时使机器至少执行以下各项:
向存储器模块发送写时拷贝写入请求,所述写时拷贝写入请求包括第一地址、第二地址和修改数据,
其中,响应于接收到写入请求并且在没有处理器干预的情况下,存储器模块从存储器中的第一地址读取第一数据,使用修改数据更新第一数据,并将已更新数据存储在存储器中的第二地址处。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2013/032414 WO2014143023A1 (en) | 2013-03-15 | 2013-03-15 | Memory module controller supporting extended writes |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN104937577A CN104937577A (zh) | 2015-09-23 |
| CN104937577B true CN104937577B (zh) | 2018-11-30 |
Family
ID=51537374
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201380072007.8A Expired - Fee Related CN104937577B (zh) | 2013-03-15 | 2013-03-15 | 支持扩展写入的存储器模块控制器 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US20150370655A1 (zh) |
| KR (1) | KR20150132101A (zh) |
| CN (1) | CN104937577B (zh) |
| TW (1) | TWI606343B (zh) |
| WO (1) | WO2014143023A1 (zh) |
Families Citing this family (23)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2531011A (en) * | 2014-10-07 | 2016-04-13 | Ibm | Initializing I/O Devices |
| TWI596612B (zh) * | 2015-12-04 | 2017-08-21 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
| CN106873901B (zh) * | 2015-12-11 | 2020-02-07 | 群联电子股份有限公司 | 存储器管理方法、存储器控制电路单元与存储器存储装置 |
| US10296250B2 (en) * | 2016-06-08 | 2019-05-21 | Intel Corporation | Method and apparatus for improving performance of sequential logging in a storage device |
| CN108363670B (zh) * | 2017-01-26 | 2020-07-14 | 华为技术有限公司 | 一种数据传输的方法、装置、设备和系统 |
| US10387261B2 (en) * | 2017-05-05 | 2019-08-20 | Dell Products L.P. | System and method to capture stored data following system crash |
| KR102398201B1 (ko) * | 2017-06-30 | 2022-05-17 | 삼성전자주식회사 | 프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치 |
| US10490245B2 (en) | 2017-10-02 | 2019-11-26 | Micron Technology, Inc. | Memory system that supports dual-mode modulation |
| US11403241B2 (en) | 2017-10-02 | 2022-08-02 | Micron Technology, Inc. | Communicating data with stacked memory dies |
| US10355893B2 (en) | 2017-10-02 | 2019-07-16 | Micron Technology, Inc. | Multiplexing distinct signals on a single pin of a memory device |
| US10446198B2 (en) | 2017-10-02 | 2019-10-15 | Micron Technology, Inc. | Multiple concurrent modulation schemes in a memory system |
| US10725913B2 (en) | 2017-10-02 | 2020-07-28 | Micron Technology, Inc. | Variable modulation scheme for memory device access or operation |
| KR102353859B1 (ko) * | 2017-11-01 | 2022-01-19 | 삼성전자주식회사 | 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈 |
| KR102415218B1 (ko) * | 2017-11-24 | 2022-07-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
| US11500570B2 (en) * | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
| CN111240581B (zh) * | 2018-11-29 | 2023-08-08 | 北京地平线机器人技术研发有限公司 | 存储器访问控制方法、装置和电子设备 |
| US10901734B2 (en) | 2019-03-01 | 2021-01-26 | Micron Technology, Inc. | Memory mapping using commands to transfer data and/or perform logic operations |
| KR102674032B1 (ko) * | 2019-12-26 | 2024-06-12 | 삼성전자주식회사 | 리페어 동작을 수행하는 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법 |
| CN112667161B (zh) * | 2020-12-25 | 2023-11-10 | 北京科银京成技术有限公司 | 文件系统的数据处理方法、装置、设备及介质 |
| US11947839B2 (en) | 2021-05-10 | 2024-04-02 | Samsung Electronics Co., Ltd. | Storage device, system, and method for customizable metadata |
| TWI779944B (zh) * | 2021-07-29 | 2022-10-01 | 旺宏電子股份有限公司 | 維持資料一致性之記憶系統及其操作方法 |
| US11650759B2 (en) * | 2021-08-03 | 2023-05-16 | Kioxia Corporation | Method and apparatus of managing a non-volatile memory using an in-memory journal |
| JP7621915B2 (ja) * | 2021-09-06 | 2025-01-27 | キオクシア株式会社 | 情報処理装置 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5732238A (en) * | 1996-06-12 | 1998-03-24 | Storage Computer Corporation | Non-volatile cache for providing data integrity in operation with a volatile demand paging cache in a data storage system |
| US7130958B2 (en) * | 2003-12-02 | 2006-10-31 | Super Talent Electronics, Inc. | Serial interface to flash-memory chip using PCI-express-like packets and packed data for partial-page writes |
| US7650459B2 (en) * | 2006-12-21 | 2010-01-19 | Intel Corporation | High speed interface for non-volatile memory |
| US7984325B2 (en) * | 2008-06-30 | 2011-07-19 | Kabushiki Kaisha Toshiba | Storage control device, data recovery device, and storage system |
| CN102568566A (zh) * | 2010-12-20 | 2012-07-11 | Lsi公司 | 用于存储器备份的电力隔离 |
Family Cites Families (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3754288B2 (ja) * | 1999-12-27 | 2006-03-08 | 三洋電機株式会社 | 制御装置 |
| JP4037605B2 (ja) * | 2000-12-04 | 2008-01-23 | 株式会社東芝 | 不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法 |
| JP4058322B2 (ja) * | 2002-10-07 | 2008-03-05 | 株式会社ルネサステクノロジ | メモリカード |
| US7930589B2 (en) * | 2005-06-17 | 2011-04-19 | Analog Devices, Inc. | Interrupt-responsive non-volatile memory system and method |
| KR100850515B1 (ko) * | 2007-01-24 | 2008-08-05 | 삼성전자주식회사 | 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법 |
| US8200914B2 (en) * | 2008-01-03 | 2012-06-12 | International Business Machines Corporation | Apparatus, system, and method for a read-before-write storage controller instruction |
| US20090193189A1 (en) * | 2008-01-30 | 2009-07-30 | Formation, Inc. | Block-based Storage System Having Recovery Memory to Prevent Loss of Data from Volatile Write Cache |
| US7979626B2 (en) * | 2008-05-13 | 2011-07-12 | Microsoft Corporation | Flash recovery employing transaction log |
| KR20110039416A (ko) * | 2008-07-22 | 2011-04-18 | 엘에스아이 코포레이션 | 인터럽트된 기록 복구를 위한 데이터 저장 방법, 장치 및 시스템 |
| KR20100091379A (ko) * | 2009-02-10 | 2010-08-19 | 삼성전자주식회사 | 반도체 디스크 장치 및 그것의 프로그램 페일 처리 방법 |
| JP4660605B2 (ja) * | 2009-05-28 | 2011-03-30 | 株式会社東芝 | 復号装置、復号方法及び磁気ディスク装置 |
| JP4660612B2 (ja) * | 2009-07-09 | 2011-03-30 | 株式会社東芝 | 情報再生装置及び情報再生方法 |
| US8381059B2 (en) * | 2010-02-17 | 2013-02-19 | Micron Technology, Inc. | Error correction and recovery in chained memory architectures |
| US20110296131A1 (en) * | 2010-05-31 | 2011-12-01 | Samsung Electronics Co., Ltd | Nonvolatile memory system and the operation method thereof |
| US9047178B2 (en) * | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
| US9053809B2 (en) * | 2011-11-09 | 2015-06-09 | Apple Inc. | Data protection from write failures in nonvolatile memory |
| TWI480733B (zh) * | 2012-03-29 | 2015-04-11 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
| US8788880B1 (en) * | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
| US9400744B2 (en) * | 2012-10-30 | 2016-07-26 | Mangstor, Inc. | Magnetic random access memory journal for multi-level cell flash memory |
-
2013
- 2013-03-15 CN CN201380072007.8A patent/CN104937577B/zh not_active Expired - Fee Related
- 2013-03-15 US US14/764,609 patent/US20150370655A1/en not_active Abandoned
- 2013-03-15 KR KR1020157020802A patent/KR20150132101A/ko not_active Withdrawn
- 2013-03-15 WO PCT/US2013/032414 patent/WO2014143023A1/en not_active Ceased
-
2014
- 2014-01-24 TW TW103102680A patent/TWI606343B/zh not_active IP Right Cessation
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5732238A (en) * | 1996-06-12 | 1998-03-24 | Storage Computer Corporation | Non-volatile cache for providing data integrity in operation with a volatile demand paging cache in a data storage system |
| US7130958B2 (en) * | 2003-12-02 | 2006-10-31 | Super Talent Electronics, Inc. | Serial interface to flash-memory chip using PCI-express-like packets and packed data for partial-page writes |
| US7650459B2 (en) * | 2006-12-21 | 2010-01-19 | Intel Corporation | High speed interface for non-volatile memory |
| US7984325B2 (en) * | 2008-06-30 | 2011-07-19 | Kabushiki Kaisha Toshiba | Storage control device, data recovery device, and storage system |
| CN102568566A (zh) * | 2010-12-20 | 2012-07-11 | Lsi公司 | 用于存储器备份的电力隔离 |
Non-Patent Citations (1)
| Title |
|---|
| Unioning of the Buffer Cache and Journaling Layers with Non-volatile Memory;LEE,EUNJI,等;《PROCEEDINGS OF THE 11TH USENIX CONFERENCE OF FILE AND STORAGE TECHNOLOGIES》;20130215;第73-78页 * |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20150132101A (ko) | 2015-11-25 |
| US20150370655A1 (en) | 2015-12-24 |
| CN104937577A (zh) | 2015-09-23 |
| WO2014143023A1 (en) | 2014-09-18 |
| TWI606343B (zh) | 2017-11-21 |
| TW201502788A (zh) | 2015-01-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN104937577B (zh) | 支持扩展写入的存储器模块控制器 | |
| US10834224B2 (en) | Transaction log acceleration | |
| US10445236B2 (en) | Method to consistently store large amounts of data at very high speed in persistent memory systems | |
| US9218278B2 (en) | Auto-commit memory | |
| US10157142B2 (en) | Offload data transfer engine for a block data transfer interface | |
| CN109388340B (zh) | 数据存储装置及管理数据存储装置中的flr的方法 | |
| CN107111453B (zh) | 跨存储装置执行原子写入操作的系统和方法以及存储装置 | |
| US20190324859A1 (en) | Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive | |
| US10331568B2 (en) | Locking a cache line for write operations on a bus | |
| US9262344B2 (en) | Local locking in a bi-directional synchronous mirroring environment | |
| CN106062724B (zh) | 管理存储器模块上的数据的方法、存储器模块及存储介质 | |
| US9703701B2 (en) | Address range transfer from first node to second node | |
| US20170277452A1 (en) | Method to provide transactional semantics for updates to data structures stored in a non-volatile memory | |
| CN116472512A (zh) | 片上系统(soc)的增强的耐久性 | |
| WO2019109299A1 (zh) | 内存访问技术及计算机系统 | |
| TW202407547A (zh) | 儲存裝置以及處理自主機計算裝置至儲存裝置的命令的方法 | |
| US10606488B2 (en) | Selective data flush in a storage device | |
| US20240264750A1 (en) | Atomic Operations Implemented using Memory Services of Data Storage Devices | |
| US12481558B2 (en) | Flexible raid parity application for memory management | |
| TWI840795B (zh) | 主機系統及其操作方法 | |
| US12474854B2 (en) | Systems, methods, and apparatus for copy destination atomicity in devices |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C41 | Transfer of patent application or patent right or utility model | ||
| TA01 | Transfer of patent application right |
Effective date of registration: 20170122 Address after: Texas, USA Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT L.P. Address before: Texas, USA Applicant before: HEWLETT-PACKARD DEVELOPMENT Co.,L.P. |
|
| GR01 | Patent grant | ||
| GR01 | Patent grant | ||
| CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181130 |
|
| CF01 | Termination of patent right due to non-payment of annual fee |