CN105339902A - 版本化存储器实现 - Google Patents
版本化存储器实现 Download PDFInfo
- Publication number
- CN105339902A CN105339902A CN201380077063.0A CN201380077063A CN105339902A CN 105339902 A CN105339902 A CN 105339902A CN 201380077063 A CN201380077063 A CN 201380077063A CN 105339902 A CN105339902 A CN 105339902A
- Authority
- CN
- China
- Prior art keywords
- block
- sub
- version
- memory block
- storage version
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1072—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Retry When Errors Occur (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
根据示例,版本化存储器实现包括比较全局存储器版本与块存储器版本。全局存储器版本可以对应于多个存储器块,并且块存储器版本可以对应于该多个存储器块中的一个存储器块。对应于该多个存储器块中的该一个存储器块的多个子块的子块比特向量(SBV)可以被评估。基于比较和评估,可以关于检查点数据存储在该多个存储器块中的该一个存储器块的该多个子块中的一个的单元中的哪个等级做出确定。
Description
背景技术
检查点是计算系统中的故障容忍技术。检查点典型地包括:存储当前应用或系统状态的快照,例如通过将存储器复制到辅助位置以生成存储器版本,并且在稍后的时间处使用该存储器版本以用于在失效的情况下重新执行应用。例如,计算过程可以使用检查点来在计算过程期间的各种点处存储所计算的数据的存储器版本。在应用或系统失效的情况下,计算过程可能变得被破坏和/或生成不一致的结果。为了避免必须重启计算过程,对应于应用或系统失效之前的最近检查点的存储器版本被恢复,并且计算过程从所恢复的检查点继续。
附图说明
本公开内容的特征通过示例的方式而图示且不在以下(一个或多个)附图中加以限制,在附图中相似标号指示相似元件,在附图中:
图1图示了根据本公开内容的示例的1比特单元(下文中称为“2LC”)、2比特单元(下文中称为“4LC”)和3比特单元(下文中称为“8LC”)非易失性存储器(NVM)配置的示例;
图2图示了根据本公开内容的示例的使用2LCNVM的版本化存储器;
图3图示了根据本公开内容的示例的用于具有精细粒度数据更新的版本化存储器的检查点配置的框图;
图4图示了根据本公开内容的示例的版本化存储器实现装置;
图5A-5E图示了根据本公开内容的示例的使用图3的检查点配置的计算期间的存储器状态的框图;
图6图示了根据本公开内容的示例的供图4的版本化存储器实现装置执行图5A-5E的计算的操作序列的流程图;
图7图示了根据本公开内容的示例的供图4的版本化存储器实现装置从错误复原的操作序列的流程图;
图8图示了根据本公开内容的示例的供图4的版本化存储器实现装置执行读取操作的操作序列的流程图;
图9图示了根据本公开内容的示例的供图4的版本化存储器实现装置执行写入操作的操作序列的流程图;
图10图示了根据本公开内容的示例的用于版本化存储器实现的方法的流程图;
图11图示了根据本公开内容的示例的用于版本化存储器实现的方法的流程图的进一步细节;以及
图12图示了根据本公开内容的示例的计算机系统。
具体实施方式
出于简明性和说明性的目的,通过主要参照示例来描述本公开内容。在以下描述中,阐述了许多具体细节以便提供对本公开内容的透彻理解。然而将显而易见的是,可以在不限于这些具体细节的情况下实践本公开内容。在其它实例中,未详细描述一些方法和结构以便不会不必要地使本公开内容模糊。
贯穿本公开内容,术语“一”和“一个”意图标示特定元件中的至少一个。如本文使用的,术语“包括”意指包括但不限于,术语“包含”意指包含但不限于。术语“基于”意指至少部分地基于。
如下文进一步详细描述的,本文公开的版本化存储器实现装置、用于版本化存储器实现的方法以及非暂时性计算机可读介质总体涉及允许软件(即,机器可读指令)快速地将数据复制到辅助位置以便创建存储器版本并且快速地将数据从该存储器版本恢复到当前版本的版本化存储器系统的实现。
关于版本化存储器,图1分别在100、102和104处图示了根据本公开内容的示例的1比特单元(下文中称为“2LC”)、2比特单元(下文中称为“4LC”)和3比特单元(下文中称为“8LC”)非易失性存储器(NVM)配置的示例。2LC100可以存储每单元一个比特并使用第一电阻范围(例如低电阻值)来表示布尔“0”(例如状态S0)且使用第二电阻范围(例如高电阻值)来表示布尔“1”(例如状态S1)。4LC102和8LC104可以基于将单元划分成更小电阻范围,以存储更多信息,并由此创建更高密度的存储器。例如,4LC102可以存储每单元两个比特(例如用于表示比特b1和b0的四个电阻范围),并且8LC104可以存储每单元三个比特(例如用于表示比特b2、b1和b0的八个电阻范围)。4LC102和8LC104可以通过使用单元电阻的更精细粒度量化来存储多个比特。因而,4LC102和8LC104可以用于增加存储器密度,因为更多的比特存储在相同数目的NVM单元中。
如参照图2进一步详细描述的,本文公开的版本化存储器实现提供了2LCNVM中的版本化能力的实现。例如,2LCNVM存储器库可以被分解成两个集合(例如,偶数行和奇数行)。这两个行集合可以用于实现2LCNVM中的版本化能力。如本文进一步详细描述的,可以通过行缓冲器来复制数据,以便因而减小与数据向外部存储器控制器的传递相关联的延迟。版本化能力还可以通过使不同存储器库中的两个行(例如,存储器库中的一个行以及不同的存储器库中的协同定位的行)配对而在2LCNVM中实现。
本文公开的版本化存储器实现还可以提供针对2LCNVM和4LCNVM二者的精细粒度数据更新。精细粒度数据更新可以提供诸如例如NVM的性能和能量效率方面的改进之类的益处。根据示例,精细粒度数据更新可以是通过选择性地改变存储器块的一部分(下文中被标示为子块)来提供的。精细粒度数据更新可以是通过使用子块比特向量(SBV)追踪哪些子块被改变并且通过将子块和SBV用于关联的读取、写入和其它操作来实现的。例如,SBV可以包括对应于相应子块的比特并进一步指示哪些子块基于对比特的改变而改变。本文公开的版本化存储器实现技术还可以用于例如实现NVM中的快速检查点和快速数据更新。
如参照图3-6、8、10和11进一步详细描述的,本文公开的版本化存储器实现可以用于针对检查点配置从块(例如块n)和该块的子块(例如子块k)进行读取。检查点配置可以包括多个存储器块,其中每一个存储器块包括多个子块和对应的SBV以保持追踪个体子块是否被改变。从块进行读取可以包括将块版本(BV)与全局版本(GV)相比较。BV可以与存储器块相关联,并可以表示相应存储器块的版本号(例如序列版本号)。GV可以存储表示存储器块和其它存储器块中所存储的数据的最后检查点版本的全局存储器版本号(例如序列版本号)。检查点配置可以包括第一级别(例如工作版本(WV))和第二级别(例如检查点版本(CV))。关于从块进行读取,如果BV(n)≤GV,则读取可以从WV执行。否则,对于BV(n)>GV,读取可以基于与如本文所描述的读取操作相关联的失效过程而从WV或CV执行。
如参照图3-6和9-11进一步详细描述的,本文公开的版本化存储器实现可以用于向块(例如块n)和该块的子块(例如子块k)进行写入。例如,如果BV(n)<GV,则可以通过将第k个WV子块复制到第k个CV子块并且将新数据写入到第k个WV子块中来对子块执行写入作为第一写入。如果BV(n)=GV,则可以通过评估SBV并且基于该评估将新数据写入到第k个WV子块中来对子块执行写入。如果BV(n)>GV,则可以基于与如本文描述的写入操作相关联的失效过程来对子块执行写入。
如参照图3-7进一步详细描述的,本文公开的版本化存储器实现可以用于失效复原。例如,从失效的复原可以包括:使GV递减,利用经递减的GV重新执行与检查点配置相关联的前一迭代、事务或程序,并且在向前推GV之前,扫描所有BV以确定是否任何BV大于GV,将CV复制到WV并且将BV设定成等于GV。
本文公开的版本化存储器实现可以与需要存储器系统中的版本化能力的应用一起使用。例如,本文公开的版本化存储器实现可以适用于对NVM中的持久数据结构(例如NV堆、MNEMOSYNE、一致且耐久数据结构(CDDS)、失效原子msync)、NVM文件系统(例如字节可寻址持久文件系统(BPFS))和存储器中检查点的原子和耐久数据更新。
本文公开的版本化存储器实现可以提供计算系统中的检查点,并可以进一步提供NVM中的一致且耐久数据对象。根据示例,检查点操作可以通过版本化存储器实现装置、用于版本化存储器实现的方法、和/或在其上存储有用于版本化存储器实现的机器可读指令的非暂时性计算机可读介质而实现。根据示例,版本化存储器实现可以包括将全局存储器版本与块存储器版本相比较。全局存储器版本可以对应于多个存储器块,并且块存储器版本可以对应于该多个存储器块中的一个存储器块。与该多个存储器块中的该一个存储器块的多个子块相对应的SBV可以被评估。基于比较和评估,可以关于该多个存储器块中的该一个存储器块的该多个子块中的一个的单元中的哪个级别存储检查点数据做出确定。
图2图示了根据本公开内容的示例的使用2LCNVM的版本化存储器。图2的存储器库200可以包括例如2k个行,其中k为大于0的整数。2k个行可以被划分成k个行的两个集合,其中偶数行被指定为工作版本(WV)并且奇数行被指定为版本化存储器中的检查点版本(CV)。可替换地,奇数行可以被指定为WV并且偶数行可以被指定为版本化存储器中的CV。关于从WV向CV的数据复制,从WV(例如行2)向CV(例如行3)的数据流的示例图示了通过行缓冲器202进行的数据复制。数据复制还可以基于单个存储器库的两个数据行之间(即,如图2中所示)或不同存储器库中的映射而执行。对于不同存储器库,WV可以被指定为第一存储器库中的行x,并且关联的CV可以被指定为第二存储器库中的行x。对于不同存储器库的示例,从WV到CV的数据复制可以通过跨存储器库的总线之上的实际数据传递而执行。相比于依赖于NVM的4LC能力的版本化存储器(即,相同物理块(具有N个2比特单元)中的WV和CV(每N个比特)),使用2LCNVM的版本化存储器可以使用如下文进一步详细描述的寻址和版本管理的相同技术。
图3图示了根据本公开内容的示例的用于具有精细粒度数据更新的版本化存储器的检查点配置300的框图。如图3中所示,存储器块302的单元可以是使用图1的每单元两比特4LCNVM(例如NVM单元102)实现的。可替换地,检查点配置300可以使用2LCNVM替代如上文参照图2讨论的4LCNVM。检查点配置300可以包括多个存储器块302(注意:图3中所示的两个存储器块302(块0和块1)),其中每一个存储器块302包括多个子块304和对应子块比特向量(SBV)306以保持追踪个体子块的WV是否被改变。检查点配置300可以使用子块304和关联的SBV306、以及如本文描述的块版本(BV)310和全局版本308的评估来执行关联的读取、写入和其它操作。
GV308可以对应于存储器块302和其它存储器块(例如块1以及未示出的其它存储器块)。GV308可以存储表示存储器块302和其它存储器块中所存储的数据的最后检查点版本的全局存储器版本号(例如序列版本号)。GV308可以是系统状态的一部分,使得作为系统控制操作的一部分,在存储器中管理、更新和/或使用GV308。例如,GV308可以用于标示最后检查点何时出现。检查点可以被指定为在存储器的操作期间的下述点:在该点处,用于从错误、失效和/或破坏的复原的检查点数据在存储器中持久。GV308可以基于来自应用的检查点指令而不时地(例如周期性地和/或非周期性地)更新,该应用使用存储器块302执行计算以指示何时新检查点要被存储。附加地或可替换地,可以使用用于触发检查点的创建的任何其它周期性和/或非周期性方法。例如,检查点可以在每个读取和/或写入操作之后被创建,或者检查点可以在阈值量的时间(例如一分钟、十五分钟、一小时等)之后被创建。附加地或可替换地,检查点可以在存储于存储器中的应用数据的集群是自相一致的时被创建。例如,对于自相一致的方法,检查点可以通过下述操作而创建:在其中CV一致的状态中开始、暂时中断且然后恢复针对应用数据的不变量、对数据进行检查点处理、创建反映对数据的更新的新一致性CV、并且在需要的情况下返回到暂时中断且然后恢复针对应用数据的不变量的步骤。尽管结合存储器块302示出单个GV308,但是可以使用多个GV308来例如表示针对不同存储器区的版本号(例如,不同的GV可以用于一个或多个虚拟地址空间,诸如例如用于不同过程、用于一个或多个虚拟机等)。另外,具有带有相同、更少或更多级别的更少或更多存储器单元的任何数目的存储器块可以与GV308或者不同相应GV相关联。
BV310可以与存储器块302相关联,并可以表示相应存储器块302的版本号(例如序列版本号)。例如,图3的BV0表示块0。BV310可以存储在单独的存储器对象中作为元数据,其中存储器对象可以是存储数据(例如版本号)的一个或多个存储器块和/或位置。与不同存储器块相关联的BV可以存储在相同存储器对象中。
对于检查点配置300,每一个子块304可以包括两个2比特单元312,其中一个在参考标号312处示出。然而在其它示例中,每一个子块304可以包括任何数目的2比特单元。2比特单元312可以是每单元两比特的4LC(例如图1的NVM单元102),其具有第一级别314(例如工作版本(WV))和第二级别316(例如检查点版本(CV))。尽管4LC312被示出为每单元两比特的4LC,但是本文公开的示例可以结合具有每单元多于两个比特(例如8LC104)的4LC而实现。另外,尽管在所图示的示例中第一级别314由WV表示并且第二级别316由CV表示,但是任何其它级别可以用于表示WV和/或CV。例如,级别可以颠倒。
对于检查点配置300,BV310的值与GV308相比较,并且对应于子块304的SBV306的比特的值可以用于指示存储在特定子块304中的数据是否已被修改。例如,BV310可以与GV308相比较,并且SBV306的比特可以被评估以确定存储在对应子块304的WV或CV中的数据是否表示经检查点处理的数据。
GV308和BV310可以例如使用六十四比特计数器表示序列版本号而实现。当GV308和/或BV310被递增超出其最大值时,它们回滚到零。
相比于使用块(例如4kB)作为数据写入的单位的版本化存储器设计而言,由检查点配置300表示的版本化存储器可以提供更精细的写入粒度(例如64B),即使存储器阵列仍旧在其中使用更大(例如4kB)行缓冲器。在图3的示例中,可以通过将块302(例如4kB块)划分成子块304(例如均为64B的64个子块)来提供精细粒度数据更新。为了保持追踪个体子块304是否被改变,SBV306可以包括例如每子块304一个比特(例如,每4kB块302有64B子块304的64比特SBV)。在图3的示例中,块302被示出为8比特块,子块304被示出为2比特子块,并且SBV306被示出为4比特SBV。
图4图示了根据示例的版本化存储器实现装置400。参照图4,装置400被描绘为包括版本化模块402以针对如由检查点配置300图示的2LC或4LC版本化NVM将GV308与BV310相比较。针对每一个检查点配置300的GV308可以存储在可包括与不同存储器区相关联的多个GV的全局版本数据库404中。针对每一个存储器块302的BV310可以存储在块版本数据库406中。另外,SBV306可以存储在子块比特向量数据库408中。可替换地或附加地,针对每一个检查点配置300的GV308、针对每一个存储器块302的BV310和/或SBV306可以连同数据一起存储在如由检查点配置300图示的NVM(或者2LCNVM)中。存储器读取模块410可以基于相应存储器块302的GV308和BV310的比较以及对应于适当子块304的SBV306的比特的值的评估来从存储器块302和/或相应子块304的WV314或CV316进行读取。存储器写入模块412可以基于相应存储器块302的GV308和BV310的比较以及对应于适当子块304的SBV306的比特的值的评估来向存储器块302和/或相应子块304的WV314或CV316进行写入。
执行装置400中的各种其它功能的装置400的模块和其它组件可以包括存储在非暂时性计算机可读介质上的机器可读指令。此外或者可替换地,装置400的模块和其它组件可以包括硬件或者机器可读指令与硬件的组合。例如,装置400可以包括存储器控制器电路以实现装置400的各种操作。
版本化模块402可以执行诸如对SBV306、GV308和BV310的评估和/或改变之类的操作。版本化模块402可以确定是否应当创建检查点。例如,版本化模块402可以从应用接收创建检查点的请求,并基于所接收的请求来创建检查点。例如,版本化模块402可以在每个读取和/或写入操作之后创建检查点。
图5A-5E分别图示了根据本公开内容的示例的在使用检查点配置300的计算期间的存储器状态500、502、504、506和508的框图。从500到502、从502到504、从504到506以及从506到508的存储器状态的示例示出了通过时间而进行的进展,并且,不同存储器状态之间的持续时间可以相同或者可以不相同。
参照图5A,存储器块302的初始存储器状态500可以由被设定为0的BV310和GV308表示,并且其中存储器单元(例如存储器单元312)的WV314存储示例数据[00000000]。在图5A的示例中,存储器单元的CV316存储示例数据[11111111]。
参照图5B,存储器状态502可以表示执行周期的开始,在该执行周期期间,GV308响应于该执行周期的开始而被递增到1。对于存储器状态502,CV316可以保持在[11111111]。应当指出的是,如果检查点配置300的前一迭代改变了子块304中的一些,则SBV306中的一些比特可以是1(例如,如图5B中所示的[0011])。然而,如果关联的BV310小于GV308,则SBV可以被视为全0。
参照图5C,存储器状态504可以表示将示例数据值[11]写入到存储器块302(即,块0)的第二子块510的WV314的第一写入操作的结果。对于对应于存储器状态504的写入操作,SBV306(例如SBV0)中的所有比特可以基于对应于存储器块302的第二子块510的写入操作而更新(例如从[0011]到[0100])。因为当写入操作被发起时,GV308在前一存储器状态502处大于BV310,所以在存储器状态502期间存储于第二子块510的WV314中的数据可以被写入到第二子块510的CV316,如在存储器状态504处所示。来自在存储器状态502处发起的写入操作的新数据可以被写入在第二子块510的WV314中,如在存储器状态504处所示。第二子块510的CV316以及第一、第三和第四子块的WV314可以一起存储经检查点处理的数据512(例如[00000000]),并且WV314可以存储新写入的数据(例如[00110000])。在写入操作期间,BV310可以被设定为GV308的值,由此防止在下一检查点之前发生的随后写入(如GV308和BV310比较所指示)盖写经检查点处理的数据512(例如所遮蔽的数据)。此外,代替于将块0中的所有四个子块的CV316更新为[00],通过选择性地更新子块304(例如第二子块510)而提供的精细粒度数据更新提供了减小的能量和写入带宽使用,以及针对由检查点配置300表示的版本化存储器的增加的耐久性。
参照图5D,存储器状态506可以表示将示例数据值[11]写入到存储器块302(即,块0)的第三子块514的WV314的第二写入操作的结果。对于存储器状态506,SBV306(例如SBV0)中的一个比特可以被更新(即从[0100]到[0110]),因为BV310(例如BV0)已经等于GV308。在存储器状态504期间存储于第三子块514的WV314中的数据可以被写入到第三子块514的CV316,如在存储器状态506处所示。来自写入操作的新数据可以被写入在第三子块514的WV314中,如在存储器状态506处所示。第二和第三子块的CV316以及第一和第四子块的WV314可以一起存储经检查点处理的数据512(例如[00000000])并且WV314可以存储新写入的数据(例如[00111100])。在写入操作期间,因为BV310被设定为GV308的值,所以这防止在下一检查点之前发生的随后写入(如GV308和BV310比较所指示)盖写经检查点处理的数据512。
参照图5E,存储器状态508可以表示检查点操作的结果。图5E的检查点操作可以发生在图5D的执行周期的结尾处。然而,检查点操作可以发生在执行周期期间的点处(例如在中间计算已经完成之后)。检查点操作可以使GV308递增到值2。另外,当BV(例如BV310)低于GV308时,存储于SBV306中的比特可以被忽略(即,被视为全0)。紧接在检查点操作前存储于WV314中的数据可以表示最近数据(例如,在计算期间写入的数据)。由此,当GV308大于BV310时,经检查点处理的数据512可以由WV314表示。CV316可以存储来自前一检查点的过时数据。在检查点操作中使用的存储器修改可以更新GV308。
图6图示了根据本公开内容的示例的供图4的版本化存储器实现装置400执行图5A-5E的计算的操作序列的流程图600。参照图6,用圆圈圈起来的参考标号可以标示在执行周期期间的各种点处图5A-5E的存储器状态。操作序列600可以在块604处开始,并且在块604之前,存储器块302(参见图3)可以处于图5A的存储器状态500处,在其处尚未发生检查点处理。因为尚未发生检查点处理,所以图5A的GV308和BV310为零。
在块602处,版本化模块402可以初始化GV308和BV310。在图5A的存储器状态500中,GV308和BV310可以被设定为零,然而可以使用任何其它值。
在块604处,版本化模块402可以使GV308递增。通过使GV308递增,向存储器块302的随后写入操作(例如存储器状态504)可以使存储在特定子块304(例如第二子块510)的WV314中的数据作为检查点数据512存储于对应CV316中。表示读取和/或写入操作之前递增的GV308的存储器状态在图5B的示例存储器状态502中示出。在存储器状态502处,如果关联的BV310小于GV308,则版本化模块402可以将SBV视为全0。
在块606处,版本化存储器实现装置400可以对存储器块302的子块304执行所请求的读取和/或写入操作。参照图8进一步详细地讨论读取操作。参照图9进一步详细地讨论写入操作。
参照图5C和块606,可以接收和处理第一写入请求。第一写入请求的结果在图5C的存储器状态504中示出。第一写入请求可以指示要向存储器块302(例如块0)的第二子块510的WV314写入的新数据(例如[11])。基于GV308与BV310的比较,版本化模块402可以使存储器读取模块410读取第二子块510的WV314并使存储器写入模块412将从第二子块510的WV314读取的数据写入到对应CV316。存储器写入模块410可以将新数据写入到第二子块510的WV314。版本化模块402可以将BV310设定成等于GV308。版本化模块402可以进一步基于对应于存储器块302的第二子块510的写入操作来更新SBV306(例如SBV0)中的所有比特,例如从[0011]到[0100],这是首先清除所有SBV比特且然后设定对应于所更新的子块的比特的结果。
在块608处,版本化模块402可以确定是否应当创建检查点。参照图5A-5E的示例,检查点可以响应于所接收的检查点请求而创建。例如,版本化模块402可以从请求块606的读取和/或写入操作的应用接收创建检查点的请求。附加地或可替换地,可以使用用于触发检查点的创建的任何其它周期性和/或非周期性方法。例如,版本化模块402可以在每个读取和/或写入操作之后创建检查点,或者版本化模块402可以在一时间量(例如一分钟、十五分钟、一小时等)之后创建检查点。
如果版本化模块402不是要创建检查点,则控制返回到块606,其中版本化存储器实现装置400可以对存储器块302的子块304执行另一所请求的读取和/或写入操作。在图5D的示例中且在块606处,可以接收并处理第二写入请求。第二写入请求的结果在图5D的存储器状态506中示出。第二写入请求可以指示要向第三子块514写入的新数据。由于第一写入操作将BV310设定成等于GV308,则版本化模块402可以使存储器写入模块412将数据写入到第三子块514的WV314。版本化模块402可以将BV310设定成等于GV308。另外,版本化模块402可以更新SBV306中的一个比特(例如SBV0从[0100]到[0110]),设定对应于新更新的子块的比特,因为BV310(例如BV0)已经等于GV308。
在块610处,当要创建检查点时,版本化模块402可以使GV308递增。GV308的递增的示例结果在图5E的存储器状态508中示出。控制然后可以进行到块606,其中第一随后(例如,下一个)写入操作使版本化存储器实现装置400将数据从WV314复制到CV316(例如,如在504的示例存储器状态中那样)以持久作为检查点数据512。
图7图示了根据本公开内容的示例的供版本化存储器实现装置400从错误(例如失效、故障等)复原的操作序列的流程图700。
在块702处,版本化模块402可以检测错误指示。例如,错误指示可以是从对存储器块302和/或子块304中的数据执行计算的应用接收的。然而,附加地或可替换地,可以使用检测错误指示的任何其它方式,诸如例如检测系统错误何时已经发生、检测应用崩溃等。
在块704处,当检测到错误指示时,版本化模块402可以使GV308递减(例如前一GV值)。例如,GV308可以被设定为零,或者可替换地,可以响应于错误而使用任何其它值。通过使GV308递减,所有被破坏的存储器块302具有BV>GV,并且对于那些被破坏的块302和/或子块304,CV316可以被视为正确的数据,并且WV314可以被视为被破坏的数据。
在块706处,版本化模块402可以利用经递减的GV308重新执行与检查点配置300相关联的前一迭代、事务或程序。
在块708处,版本化模块402然后可以检查与每一个存储器块302和/或子块304相关联的BV310,并将其值大于GV308(在递减后)的每一个BV310设定为GV308。
在版本化模块402重设定GV308和BV310之后,随后的读取操作可以从适当子块304的CV316读取数据。另外,随后的写入操作可以将数据写入到适当子块304的WV314,并将BV310设定为GV308的值。可以利用经递减的GV308重新执行前一迭代、事务或程序。随着版本化存储器实现装置400从被破坏的块302进行读取以及向被破坏的块302进行写入(例如,参见参照图8和9的读取和写入操作中当BVn>GV时的情况),任何被破坏的块302可以被复原到正常状态。另外,在向前推GV308之前,所有BV310可以被扫描,并且如果BV310大于GV308,则CV316可以被复制到WV314,并且BV310可以被设定成等于GV308。
图8图示了根据本公开内容的示例的供版本化存储器实现装置400执行读取操作的操作序列的流程图800。
在块802处,版本化存储器实现装置400可以接收针对存储器块302(例如存储器块n)的特定子块304(例如子块k)的读取请求。
在块804处,版本化模块402可以确定GV308。例如,版本化模块402可以通过从全局版本数据库404读取GV308来确定GV308。
在块806处,版本化模块402可以确定与存储器块302(例如存储器块n)相关联的BV310(例如BV(n))。例如,版本化模块402可以通过从块版本数据库406读取BV310来确定BV310。
在块808处,版本化模块402可以针对特定存储器块302(例如存储器块n)将GV308与BV310相比较以识别应当读取适当子块304(例如子块k)的哪个级别。例如,版本化模块402可以确定适当子块304的第一层(例如WV314)应当在BV301被确定为小于或等于GV308时(即,如果(BV(n)<=GV))被读取。
在块810处,如果BV310被确定为小于或等于GV308,则存储器读取模块410可以读取存储在适当子块304(例如子块k)的第一层(例如WV314)中的数据。
在块812处,如果BV310被确定为小于或等于GV308,则可以忽略SBV306。
在块814处,如果版本化模块402确定BV310大于GV308,则版本化模块402可以生成失效的指示。如果针对适当子块304(例如子块k)的SBV306(例如SBV(k))被设定,则存储器读取模块410可以读取存储在适当子块304(例如子块k)的第二层(例如CV316)中的数据。
在块816处,如果针对适当子块304(例如子块k)的SBV306(例如SBV(k))没有被设定,则存储器读取模块410可以读取存储在适当子块304(例如子块k)的第一层(例如WV314)中的数据。
在块818处,对于其中SBV306被设定的子块,如果SBV(k)为1,则版本化模块402可以将针对适当子块304(例如子块k)的CV316复制到针对适当子块304(例如子块k)的WV314,且然后将BV(n)设定为GV-1。
在块820处,一旦存储器读取模块410已经从块302(例如存储器块n)的适当子块304(例如子块k)读取数据,版本化存储器实现装置400就可以以该数据对读取请求回复。
图9图示了根据本公开内容的示例的供版本化存储器实现装置400执行写入操作的操作序列的流程图900。
在块902处,版本化存储器实现装置400可以接收针对存储器块302(例如存储器块n)的特定子块304(例如子块k)的写入请求。写入请求可以包括存储器块302的地址、特定子块304以及要写入到特定子块304的数据。
在块904处,版本化模块402可以确定GV308。例如,版本化模块402可以通过从全局版本数据库404读取GV308来确定GV308。
在块906处,版本化模块402可以确定与存储器块302(例如存储器块n)相关联的BV310(例如BV(n))。例如,版本化模块402可以通过从块版本数据库406读取BV310来确定BV310。
在块908处,版本化模块402可以将GV308与BV310相比较以识别所接收的数据应当被写入到存储器块302的哪个级别。
在块910处,版本化模块402确定针对存储器块302(例如存储器块n)的BV310(例如BV(n))小于GV308(即,BV(n)<GV)。
在块912处,基于块910处的确定,版本化模块402可以将针对存储器块302(例如存储器块n)的所有SBV306比特重设定为0。
在块914处,存储器写入模块412可以将针对适当子块304(例如子块k)的WV314复制到针对适当子块304(例如子块k)的CV316,并将新数据写入到针对适当子块304(例如子块k)的WV314中。
在块916处,版本化模块402可以将针对存储器块302(例如存储器块n)的BV310(例如BV(n))设定为GV308。另外,版本化模块402可以将针对适当子块304(例如子块k)的SBV306(例如SBV(k))设定为1。
在块918处,版本化模块402确定针对存储器块302(例如存储器块n)的BV310(例如BV(n))等于GV308(即,BV(n)=GV)。
在块920处,如果版本化模块402确定针对适当子块304(例如子块k)的SBV306(例如SBV(k))被设定(即,已经脏),则存储器写入模块412可以将新数据写入到针对适当子块304(例如子块k)的WV314中,并且,针对适当子块304(例如子块k)的CV316可以保持不变。
在块922处,如果版本化模块402确定针对适当子块304(例如子块k)的SBV306(例如SBV(k))没有被设定(即,不脏),则存储器写入模块412可以将针对适当子块304(例如子块k)的WV314复制到针对适当子块304(例如子块k)的CV316,并将新数据复制到针对适当子块304(例如子块k)的WV314。
在块924处,版本化模块402可以将针对适当子块304(例如子块k)的SBV306(例如SBV(k))设定为1。
在块926处,版本化模块402确定针对存储器块302(例如存储器块n)的BV310(例如BV(n))大于GV308(即,BV(n)>GV)。另外,基于BV310大于GV308的确定,版本化模块402可以生成失效的指示。
在块928处,对于其中SBV306被设定的所有子块而言,存储器写入模块412可以将针对适当子块304的CV316复制到针对适当子块304的WV314。
在块930处,版本化模块402可以将所有SBV306比特重设定为零。
在块932处,存储器写入模块412可以将针对适当子块304(例如子块k)的WV314复制到针对适当子块304(例如子块k)的CV316,并将新数据写入到针对适当子块304(例如子块k)的WV314。
在块934处,版本化模块402可以将针对存储器块302(例如存储器块n)的BV310(例如BV(n))设定为GV308。另外,版本化模块402可以将针对适当子块304(例如子块k)的SBV306(例如SBV(k))设定为1。
在块936处,版本化存储器实现装置400可以确认写入请求。
图10和11分别图示了对应于在上文中详细描述其构造的版本化存储器实现装置400的示例的用于版本化存储器实现的方法1000和1100的流程图。方法1000和1100可以通过示例而非限制的方式参照图1-9而实现在版本化存储器实现装置400上。方法1000和1100可以在其它装置中实践。
参照图10,对于方法1000,在块1002处,可以将全局存储器版本(例如针对GV的值)与块存储器版本(例如针对BV(n)的值)相比较。全局存储器版本可以对应于多个存储器块,并且块存储器版本可以对应于该多个存储器块中的一个存储器块。
在块1004处,可以评估对应于该多个存储器块中的该一个存储器块的多个子块的SBV。
在1006处,基于比较和评估,可以关于检查点数据存储在该多个存储器块中的该一个存储器块的该多个子块中的一个的单元中的哪个级别做出确定。
参照图11,对于方法1100,在块1102处,可以将全局存储器版本(例如针对GV的值)与块存储器版本(例如针对BV(n)的值)相比较。全局存储器版本可以对应于多个存储器块,并且块存储器版本可以对应于该多个存储器块中的一个存储器块。
在块1104处,可以评估对应于该多个存储器块中的该一个存储器块的多个子块的SBV。
在块1106处,基于比较和评估,可以就检查点数据存储在该多个存储器块中的该一个存储器块的该多个子块中的一个的单元中的哪个级别做出确定。
在块1108处,版本化存储器实现可以包括:接收从该多个存储器块中的该一个存储器块(例如存储器块n)的子块(例如子块k)读取数据的指令(例如在版本化存储器实现装置400处);确定块存储器版本是否小于或等于全局存储器版本;以及基于块存储器版本小于或等于全局存储器版本的确定,从该子块的WV进行读取。
在块1110处,版本化存储器实现可以包括:接收从该多个存储器块中的该一个存储器块(例如存储器块n)的子块(例如子块k)读取数据的指令(例如在版本化存储器实现装置400处);确定块存储器版本是否大于全局存储器版本;以及基于块存储器版本大于全局存储器版本的确定,进一步确定针对对应于该子块的SBV的值是否被设定。基于针对对应于该子块的SBV的值被设定的确定,版本化存储器实现可以包括从该子块的CV进行读取。如果针对对应于该子块的SBV的值没有被设定,并且基于针对对应于该子块的SBV的值没有被设定的确定,版本化存储器实现可以包括从该子块的WV进行读取。另外,基于块存储器版本大于全局存储器版本的确定,版本化存储器实现可以包括:识别该多个存储器块中的该一个存储器块的针对其设定SBV的对应值的子块;以及对于所识别的子块,将所识别的子块的CV复制到所识别的子块的WV;以及将块存储器版本设定为前一全局存储器版本。
在块1112处,版本化存储器实现可以包括:接收向该多个存储器块中的该一个存储器块(例如存储器块n)的子块(例如子块k)写入数据的指令(例如在版本化存储器实现装置400处);确定块存储器版本是否小于全局存储器版本;以及基于块存储器版本小于全局存储器版本的确定,重设定SBV的值,将该子块的WV复制到该子块的CV,并且将所接收的数据写入到该子块的WV中。另外,基于块存储器版本小于全局存储器版本的确定,版本化存储器实现可以包括:将块存储器版本设定为全局存储器版本;以及将对应于该子块的SBV的值设定为预定值。
在块1114处,版本化存储器实现可以包括:接收向该多个存储器块中的该一个存储器块(例如存储器块n)的子块(例如子块k)写入数据的指令(例如在版本化存储器实现装置400处);确定块存储器版本是否等于全局存储器版本;以及基于块存储器版本等于全局存储器版本的确定,确定对应于该子块的SBV的值是否被设定;以及基于对应于该子块的SBV的值被设定的确定,将所接收的数据写入到该子块的WV中。另外,版本化存储器实现可以包括:接收向该多个存储器块中的该一个存储器块的子块写入数据的指令;确定块存储器版本是否等于全局存储器版本;以及基于块存储器版本等于全局存储器版本的确定,确定对应于该子块的SBV的值是否没有被设定;以及基于对应于该子块的SBV的值没有被设定的确定,将该子块的WV复制到该子块的CV;以及将所接收的数据写入到该子块的WV中。另外,基于对应于该子块的SBV的值没有被设定的确定,版本化存储器实现可以包括将对应于该子块的SBV的值设定为预定值。
在块1116处,版本化存储器实现可以包括:接收向该多个存储器块中的该一个存储器块(例如存储器块n)的子块(例如子块k)写入数据的指令(例如在版本化存储器实现装置400处);确定块存储器版本是否大于全局存储器版本;以及基于块存储器版本大于全局存储器版本的确定,识别该多个存储器块中的该一个存储器块的针对其设定SBV的对应值的子块;以及对于所识别的子块,将所识别的子块的CV复制到所识别的子块的WV,将SBV的值设定为预定值,将该子块的WV复制到该子块的CV,并且将所接收的数据写入到该子块的WV中。
图12示出了可与本文描述的示例一起使用的计算机系统1200。计算机系统表示包括可处于服务器或另一计算机系统中的组件的通用平台。计算机系统1200可以被用作用于装置400的平台。计算机系统1200可以通过处理器或其它硬件处理电路执行本文描述的方法、功能和其它过程。这些方法、功能和其它过程可以被体现为存储在计算机可读介质上的机器可读指令,该计算机可读介质可以是非暂时性的,诸如硬件存储设备(例如RAM(随机存取存储器)、ROM(只读存储器)、EPROM(可擦除可编程ROM)、EEPROM(电可擦除可编程ROM)、硬盘驱动器和闪速存储器)。
计算机系统1200包括可实现或执行机器可读指令的处理器1202,该机器可读指令执行本文描述的一些或所有方法、功能和其它过程。来自处理器1202的命令和数据通过通信总线1204而传送。计算机系统还包括:主存储器1206,诸如随机存取存储器(RAM),其中用于处理器1202的机器可读指令和数据可以在运行时期间驻留;以及辅助数据存储装置1208,其可以为非易失性的且存储机器可读指令和数据。存储器和数据存储装置是计算机可读介质的示例。存储器1206可以包括:版本化存储器实现模块1220,其包括在运行时期间驻留在存储器1206中且由处理器1202执行的机器可读指令。版本化存储器实现模块1220可以包括图4中示出的装置400的模块。
计算机系统1200可以包括I/O设备1210,诸如键盘、鼠标、显示器等。计算机系统可以包括用于连接到网络的网络接口1212。其它已知电子组件可以在计算机系统中添加或替换。
本文已描述和图示的内容连同其变形中的一些一起作为示例。本文使用的术语、描述和图仅通过说明的方式而阐述且不意在作为限制。在意图由所附权利要求及其等同物限定的主题的精神和范围内许多变形是可能的,在所附权利要求中,所有术语在其最宽泛的合理意义上被意指,除非以其它方式指示。
Claims (15)
1.一种用于版本化存储器实现的方法,该方法包括:
通过处理器比较全局存储器版本与块存储器版本,全局存储器版本对应于多个存储器块,并且块存储器版本对应于所述多个存储器块中的一个存储器块;
评估对应于所述多个存储器块中的所述一个存储器块的多个子块的子块比特向量(SBV);以及
基于比较和评估,确定检查点数据存储在所述多个存储器块中的所述一个存储器块的所述多个子块中的一个的单元中的哪个级别中。
2.权利要求1的方法,其中单元是1比特单元(2LC)和2比特单元(4LC)中的一个。
3.权利要求1的方法,进一步包括:
检测存储在单元中的数据的错误状态;以及
读取存储在单元中的所确定的级别中的检查点数据以从错误状态复原。
4.权利要求1的方法,进一步包括:
接收从所述多个存储器块中的所述一个存储器块的子块读取数据的指令;
确定块存储器版本是否小于或等于全局存储器版本;以及
基于块存储器版本小于或等于全局存储器版本的确定,从所述子块的工作版本(WV)进行读取。
5.权利要求1的方法,进一步包括:
接收从所述多个存储器块中的所述一个存储器块的子块读取数据的指令;
确定块存储器版本是否大于全局存储器版本;以及
基于块存储器版本大于全局存储器版本的确定,进一步确定:
如果针对对应于所述子块的SBV的值被设定,并且基于针对对应于所述子块的SBV的值被设定的确定,从所述子块的检查点版本(CV)进行读取,
如果针对对应于所述子块的SBV的值没有被设定,并且基于针对对应于所述子块的SBV的值没有被设定的确定,从所述子块的工作版本(WV)进行读取,
识别所述多个存储器块中的所述一个存储器块的针对其设定SBV的对应值的子块,
对于所识别的子块,将所识别的子块的CV复制到所识别的子块的WV,并且
将块存储器版本设定为前一全局存储器版本。
6.权利要求1的方法,进一步包括:
接收向所述多个存储器块中的所述一个存储器块的子块写入数据的指令;
确定块存储器版本是否小于全局存储器版本;以及
基于块存储器版本小于全局存储器版本的确定:
重设定SBV的值,
将所述子块的工作版本(WV)复制到所述子块的检查点版本(CV),
将所接收的数据写入到所述子块的WV中,
将块存储器版本设定为全局存储器版本,以及
将对应于所述子块的SBV的值设定为预定值。
7.权利要求1的方法,进一步包括:
接收向所述多个存储器块中的所述一个存储器块的子块写入数据的指令;
确定块存储器版本是否等于全局存储器版本;以及
基于块存储器版本等于全局存储器版本的确定:
确定对应于所述子块的SBV的值是否被设定,并且基于对应于所述子块的SBV的值被设定的确定,将所接收的数据写入到所述子块的工作版本(WV)中。
8.权利要求1的方法,进一步包括:
接收向所述多个存储器块中的所述一个存储器块的子块写入数据的指令;
确定块存储器版本是否等于全局存储器版本;以及
基于块存储器版本等于全局存储器版本的确定:
确定对应于所述子块的SBV的值是否没有被设定,并且基于对应于所述子块的SBV的值没有被设定的确定:
将所述子块的工作版本(WV)复制到所述子块的检查点版本(CV),
将所接收的数据写入到所述子块的WV中,以及
将对应于所述子块的SBV的值设定为预定值。
9.权利要求1的方法,进一步包括:
接收向所述多个存储器块中的所述一个存储器块的子块写入数据的指令;
确定块存储器版本是否大于全局存储器版本;以及
基于块存储器版本大于全局存储器版本的确定:
识别所述多个存储器块中的所述一个存储器块的针对其设定SBV的对应值的子块,并且对于所识别的子块,将所识别的子块的检查点版本(CV)复制到所识别的子块的工作版本(WV),
将SBV的值复制到预定值,
将所述子块的WV复制到所述子块的CV,以及
将所接收的数据写入到所述子块的WV中。
10.一种在其上存储有提供版本化存储器实现的机器可读指令的非暂时性计算机可读介质,该机器可读指令在被执行时使计算机系统:
通过处理器比较全局存储器版本与块存储器版本,全局存储器版本对应于多个存储器块,并且块存储器版本对应于所述多个存储器块中的一个存储器块;
评估对应于所述多个存储器块中的所述一个存储器块的多个子块的子块比特向量(SBV);
基于比较和评估,确定检查点数据存储在所述多个存储器块中的所述一个存储器块的所述多个子块中的一个的单元中的哪个级别中;
检测存储在单元中的数据的错误状态;以及
读取存储在单元中的所确定的级别中的检查点数据以从错误状态复原。
11.权利要求10的非暂时性计算机可读介质,其中单元是1比特单元(2LC)和2比特单元(4LC)中的一个。
12.一种版本化存储器实现装置,包括:
存储器控制器电路,用于:
将全局存储器版本与块存储器版本相比较,全局存储器版本对应于多个存储器块,并且块存储器版本对应于所述多个存储器块中的一个存储器块;
评估对应于所述多个存储器块中的所述一个存储器块的多个子块的子块比特向量(SBV);以及
基于比较和评估,确定检查点数据存储在所述多个存储器块中的所述一个存储器块的所述多个子块中的一个的单元中的哪个级别中。
13.权利要求12的版本化存储器实现装置,其中单元是1比特单元(2LC)和2比特单元(4LC)中的一个。
14.权利要求12的版本化存储器实现装置,其中单元是1比特单元(2LC),存储器控制器电路进一步用于:
将2LC的行划分成多个集合;
将所述多个集合中的一个集合指定为工作版本(WV);
将所述多个集合中的另一集合指定为检查点版本(CV);以及
使用经划分的行的所指定的集合来实现版本化存储器。
15.权利要求14的版本化存储器实现装置,其中存储器控制器电路进一步用于:
通过与2LC一起使用的行缓冲器来复制数据。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/053098 WO2015016926A1 (en) | 2013-07-31 | 2013-07-31 | Versioned memory implementation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105339902A true CN105339902A (zh) | 2016-02-17 |
CN105339902B CN105339902B (zh) | 2018-11-20 |
Family
ID=52432282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380077063.0A Active CN105339902B (zh) | 2013-07-31 | 2013-07-31 | 用于版本化存储器实现的方法、装置和计算机可读介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9710335B2 (zh) |
EP (1) | EP3028151A1 (zh) |
KR (1) | KR102031606B1 (zh) |
CN (1) | CN105339902B (zh) |
WO (1) | WO2015016926A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101969799B1 (ko) * | 2016-09-07 | 2019-04-17 | 울산과학기술원 | 전자 장치 및 제어 방법 |
KR20200031402A (ko) | 2018-09-14 | 2020-03-24 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20200058867A (ko) | 2018-11-20 | 2020-05-28 | 에스케이하이닉스 주식회사 | 메모리 시스템의 복구 동작 중 비휘발성 메모리 블록의 반복 접근을 줄이는 방법 및 장치 |
KR20200113387A (ko) | 2019-03-25 | 2020-10-07 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US11422903B2 (en) | 2020-07-30 | 2022-08-23 | Netapp Inc. | Maintaining and recomputing reference counts in a persistent memory file system |
US11693593B2 (en) | 2020-10-28 | 2023-07-04 | Micron Technology, Inc. | Versioning data stored on memory device |
US11886728B2 (en) | 2021-08-13 | 2024-01-30 | Micron Technology, Inc. | Undo capability for memory devices |
KR102625797B1 (ko) * | 2023-03-06 | 2024-01-16 | 주식회사 모레 | 파이프라인 병렬 처리 컴파일링 방법 및 장치 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080059834A1 (en) * | 2002-07-02 | 2008-03-06 | Micron Technology, Inc. | Use of non-volatile memory to perform rollback function |
CN101470629A (zh) * | 2007-12-30 | 2009-07-01 | 英特尔公司 | 用于在事务性存储器系统中实现强原子性的机制 |
CN101630279A (zh) * | 2003-10-03 | 2010-01-20 | 桑迪士克股份有限公司 | 快闪存储器数据校正及擦除技术 |
CN102016808A (zh) * | 2008-05-01 | 2011-04-13 | 惠普发展公司,有限责任合伙企业 | 将检查点数据存储于非易失性存储器中 |
US20110119526A1 (en) * | 2009-11-13 | 2011-05-19 | International Business Machines Corporation | Local rollback for fault-tolerance in parallel computing systems |
US20120011398A1 (en) * | 2010-04-12 | 2012-01-12 | Eckhardt Andrew D | Failure recovery using consensus replication in a distributed flash memory system |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7526599B2 (en) * | 2002-10-28 | 2009-04-28 | Sandisk Corporation | Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system |
WO2006122990A2 (es) | 2005-05-19 | 2006-11-23 | Intel Corporation | Aparato, sistema y método de dispositivo de memoria para conjuntos múltiples de instrucciones de tipo especulativo |
US8171192B2 (en) * | 2005-09-20 | 2012-05-01 | Qualcomm Incorporated | Hardware-assisted device configuration detection |
US7861122B2 (en) | 2006-01-27 | 2010-12-28 | Apple Inc. | Monitoring health of non-volatile memory |
KR100755718B1 (ko) | 2006-09-04 | 2007-09-05 | 삼성전자주식회사 | 멀티 레벨 셀 플래시 메모리에서 런-타임 배드 블록 관리를위한 장치 및 방법 |
KR100837730B1 (ko) * | 2006-09-29 | 2008-06-13 | 한국전자통신연구원 | 사전에 지정한 패리티를 검사한 결과를 이용해 ldpc코드를 부호화하는 방법 |
GB0623276D0 (en) * | 2006-11-22 | 2007-01-03 | Transitive Ltd | Memory consistency protection in a multiprocessor computing system |
US7577036B2 (en) | 2007-05-02 | 2009-08-18 | Micron Technology, Inc. | Non-volatile multilevel memory cells with data read of reference cells |
US8103830B2 (en) * | 2008-09-30 | 2012-01-24 | Intel Corporation | Disabling cache portions during low voltage operations |
US8593866B2 (en) | 2011-11-11 | 2013-11-26 | Sandisk Technologies Inc. | Systems and methods for operating multi-bank nonvolatile memory |
-
2013
- 2013-07-31 US US14/785,421 patent/US9710335B2/en active Active
- 2013-07-31 CN CN201380077063.0A patent/CN105339902B/zh active Active
- 2013-07-31 WO PCT/US2013/053098 patent/WO2015016926A1/en active Application Filing
- 2013-07-31 EP EP13890511.2A patent/EP3028151A1/en not_active Withdrawn
- 2013-07-31 KR KR1020157031258A patent/KR102031606B1/ko active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080059834A1 (en) * | 2002-07-02 | 2008-03-06 | Micron Technology, Inc. | Use of non-volatile memory to perform rollback function |
CN101630279A (zh) * | 2003-10-03 | 2010-01-20 | 桑迪士克股份有限公司 | 快闪存储器数据校正及擦除技术 |
CN101470629A (zh) * | 2007-12-30 | 2009-07-01 | 英特尔公司 | 用于在事务性存储器系统中实现强原子性的机制 |
CN102016808A (zh) * | 2008-05-01 | 2011-04-13 | 惠普发展公司,有限责任合伙企业 | 将检查点数据存储于非易失性存储器中 |
US20110119526A1 (en) * | 2009-11-13 | 2011-05-19 | International Business Machines Corporation | Local rollback for fault-tolerance in parallel computing systems |
US20120011398A1 (en) * | 2010-04-12 | 2012-01-12 | Eckhardt Andrew D | Failure recovery using consensus replication in a distributed flash memory system |
Also Published As
Publication number | Publication date |
---|---|
KR20160055723A (ko) | 2016-05-18 |
KR102031606B1 (ko) | 2019-10-14 |
US20160077922A1 (en) | 2016-03-17 |
EP3028151A1 (en) | 2016-06-08 |
US9710335B2 (en) | 2017-07-18 |
WO2015016926A1 (en) | 2015-02-05 |
CN105339902B (zh) | 2018-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105339902A (zh) | 版本化存储器实现 | |
CN107484427B (zh) | 用于处理存储设备中分条的方法和存储设备 | |
US9823972B2 (en) | Mobile flash storage boot partition and/or logical unit shadowing | |
CN104094236B (zh) | 防止数据丢失的系统和方法 | |
CN109558457B (zh) | 一种数据写入方法、装置、设备及存储介质 | |
US20060041793A1 (en) | System, method and software for enhanced raid rebuild | |
CN110347528A (zh) | 用于坏块管理的存储器系统及方法 | |
JP5669823B2 (ja) | チェンジトラッキングを用いたシステムリカバリ方法 | |
TW201131351A (en) | System and method for optimizing redundancy restoration in distributed data layout environments | |
KR20170092537A (ko) | 다수의 스토리지 디바이스에 걸친 원자 기입 동작의 수행 | |
CN105637490A (zh) | 用于在闪速存储器装置之间迁移数据的方法和系统 | |
US20180232277A1 (en) | Systems and methods for eliminating write-hole problems on parity-based storage resources during an unexpected power loss | |
CN111045870B (zh) | 一种保存与恢复元数据的方法、装置和介质 | |
CN104813290A (zh) | Raid调查器 | |
CN104166601B (zh) | 一种存储数据的备份方法和装置 | |
US10324782B1 (en) | Hiccup management in a storage array | |
CN108701005A (zh) | 数据更新技术 | |
CN110673978A (zh) | 一种双控集群掉电后的数据恢复方法及相关装置 | |
CN111240887A (zh) | 基于三维闪存存储结构的错误页识别方法 | |
CN110046065A (zh) | 一种存储阵列重建方法、装置、设备及存储介质 | |
US20170031791A1 (en) | Maintaining a parity-inconsistent table to identify stripes affected by a write hole effect | |
CN109542671B (zh) | 校验数据生成方法及固态硬盘 | |
US20220374310A1 (en) | Write request completion notification in response to partial hardening of write data | |
US20180314636A1 (en) | Shingled magnetic recording storage system | |
US11494090B2 (en) | Systems and methods of maintaining fault tolerance for new writes in degraded erasure coded distributed storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
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: American Texas Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Applicant before: Hewlett-Packard Development Company, L.P. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |