版本化存储器实现的制作方法

文档序号:9583637阅读:265来源:国知局
版本化存储器实现的制作方法
【专利说明】
【背景技术】
[0001]检查点是计算系统中的故障容忍技术。检查点典型地包括:存储当前应用或系统状态的快照,例如通过将存储器复制到辅助位置以生成存储器版本,并且在稍后的时间处使用该存储器版本以用于在失效的情况下重新执行应用。例如,计算过程可以使用检查点来在计算过程期间的各种点处存储所计算的数据的存储器版本。在应用或系统失效的情况下,计算过程可能变得被破坏和/或生成不一致的结果。为了避免必须重启计算过程,对应于应用或系统失效之前的最近检查点的存储器版本被恢复,并且计算过程从所恢复的检查点继续。
【附图说明】
[0002]本公开内容的特征通过示例的方式而图示且不在以下(一个或多个)附图中加以限制,在附图中相似标号指示相似元件,在附图中:
图1图示了根据本公开内容的示例的I比特单元(下文中称为“2LC”)、2比特单元(下文中称为“4LC”)和3比特单元(下文中称为“8LC”)非易失性存储器(NVM)配置的示例;
图2图示了根据本公开内容的示例的使用2LC NVM的版本化存储器;
图3图示了根据本公开内容的示例的用于具有精细粒度数据更新的版本化存储器的检查点配置的框图;
图4图示了根据本公开内容的示例的版本化存储器实现装置;
图5A-5E图示了根据本公开内容的示例的使用图3的检查点配置的计算期间的存储器状态的框图;
图6图示了根据本公开内容的示例的供图4的版本化存储器实现装置执行图5A-5E的计算的操作序列的流程图;
图7图示了根据本公开内容的示例的供图4的版本化存储器实现装置从错误复原的操作序列的流程图;
图8图示了根据本公开内容的示例的供图4的版本化存储器实现装置执行读取操作的操作序列的流程图;
图9图示了根据本公开内容的示例的供图4的版本化存储器实现装置执行写入操作的操作序列的流程图;
图10图示了根据本公开内容的示例的用于版本化存储器实现的方法的流程图;
图11图示了根据本公开内容的示例的用于版本化存储器实现的方法的流程图的进一步细节;以及
图12图示了根据本公开内容的示例的计算机系统。
【具体实施方式】
[0003]出于简明性和说明性的目的,通过主要参照示例来描述本公开内容。在以下描述中,阐述了许多具体细节以便提供对本公开内容的透彻理解。然而将显而易见的是,可以在不限于这些具体细节的情况下实践本公开内容。在其它实例中,未详细描述一些方法和结构以便不会不必要地使本公开内容模糊。
[0004]贯穿本公开内容,术语“一”和“一个”意图标示特定元件中的至少一个。如本文使用的,术语“包括”意指包括但不限于,术语“包含”意指包含但不限于。术语“基于”意指至少部分地基于。
[0005]如下文进一步详细描述的,本文公开的版本化存储器实现装置、用于版本化存储器实现的方法以及非暂时性计算机可读介质总体涉及允许软件(即,机器可读指令)快速地将数据复制到辅助位置以便创建存储器版本并且快速地将数据从该存储器版本恢复到当前版本的版本化存储器系统的实现。
[0006]关于版本化存储器,图1分别在100、102和104处图示了根据本公开内容的示例的I比特单元(下文中称为“2LC”)、2比特单元(下文中称为“4LC”)和3比特单元(下文中称为“8LC”)非易失性存储器(NVM)配置的示例。2LC 100可以存储每单元一个比特并使用第一电阻范围(例如低电阻值)来表示布尔“O”(例如状态S。)且使用第二电阻范围(例如高电阻值)来表示布尔“I”(例如状态S1X 4LC 102和8LC 104可以基于将单元划分成更小电阻范围,以存储更多信息,并由此创建更高密度的存储器。例如,4LC 102可以存储每单元两个比特(例如用于表示比特匕和b。的四个电阻范围),并且8LC 104可以存储每单元三个比特^列如用于表示比特^匕和^的八个电阻范围)。4LC 102和8LC 104可以通过使用单元电阻的更精细粒度量化来存储多个比特。因而,4LC 102和8LC 104可以用于增加存储器密度,因为更多的比特存储在相同数目的NVM单元中。
[0007]如参照图2进一步详细描述的,本文公开的版本化存储器实现提供了 2LC NVM中的版本化能力的实现。例如,2LC NVM存储器库可以被分解成两个集合(例如,偶数行和奇数行)。这两个行集合可以用于实现2LC NVM中的版本化能力。如本文进一步详细描述的,可以通过行缓冲器来复制数据,以便因而减小与数据向外部存储器控制器的传递相关联的延迟。版本化能力还可以通过使不同存储器库中的两个行(例如,存储器库中的一个行以及不同的存储器库中的协同定位的行)配对而在2LC NVM中实现。
[0008]本文公开的版本化存储器实现还可以提供针对2LC NVM和4LC NVM 二者的精细粒度数据更新。精细粒度数据更新可以提供诸如例如NVM的性能和能量效率方面的改进之类的益处。根据示例,精细粒度数据更新可以是通过选择性地改变存储器块的一部分(下文中被标示为子块)来提供的。精细粒度数据更新可以是通过使用子块比特向量(SBV)追踪哪些子块被改变并且通过将子块和SBV用于关联的读取、写入和其它操作来实现的。例如,SBV可以包括对应于相应子块的比特并进一步指示哪些子块基于对比特的改变而改变。本文公开的版本化存储器实现技术还可以用于例如实现NVM中的快速检查点和快速数据更新。
[0009]如参照图3_6、8、10和11进一步详细描述的,本文公开的版本化存储器实现可以用于针对检查点配置从块(例如块η)和该块的子块(例如子块k)进行读取。检查点配置可以包括多个存储器块,其中每一个存储器块包括多个子块和对应的SBV以保持追踪个体子块是否被改变。从块进行读取可以包括将块版本(BV)与全局版本(GV)相比较。BV可以与存储器块相关联,并可以表示相应存储器块的版本号(例如序列版本号)。GV可以存储表示存储器块和其它存储器块中所存储的数据的最后检查点版本的全局存储器版本号(例如序列版本号)。检查点配置可以包括第一级别(例如工作版本(WV))和第二级别(例如检查点版本(CV))。关于从块进行读取,如果BV(n)彡GV,则读取可以从WV执行。否则,对于BV(n)> GV,读取可以基于与如本文所描述的读取操作相关联的失效过程而从WV或CV执行。
[0010]如参照图3-6和9-11进一步详细描述的,本文公开的版本化存储器实现可以用于向块(例如块η)和该块的子块(例如子块k)进行写入。例如,如果BV (n) < GV,则可以通过将第k个WV子块复制到第k个CV子块并且将新数据写入到第k个WV子块中来对子块执行写入作为第一写入。如果BV (n) =GV,则可以通过评估SBV并且基于该评估将新数据写入到第k个WV子块中来对子块执行写入。如果BV (n) >GV,则可以基于与如本文描述的写入操作相关联的失效过程来对子块执行写入。
[0011]如参照图3-7进一步详细描述的,本文公开的版本化存储器实现可以用于失效复原。例如,从失效的复原可以包括:使GV递减,利用经递减的GV重新执行与检查点配置相关联的前一迭代、事务或程序,并且在向前推GV之前,扫描所有BV以确定是否任何BV大于GV,将CV复制到WV并且将BV设定成等于GV。
[0012]本文公开的版本化存储器实现可以与需要存储器系统中的版本化能力的应用一起使用。例如,本文公开的版本化存储器实现可以适用于对NVM中的持久数据结构(例如NV堆、MNEMOSYNE、一致且耐久数据结构(CDDS)、失效原子msync)、NVM文件系统(例如字节可寻址持久文件系统(BPFS))和存储器中检查点的原子和耐久数据更新。
[0013]本文公开的版本化存储器实现可以提供计算系统中的检查点,并可以进一步提供NVM中的一致且耐久数据对象。根据示例,检查点操作可以通过版本化存储器实现装置、用于版本化存储器实现的方法、和/或在其上存储有用于版本化存储器实现的机器可读指令的非暂时性计算机可读介质而实现。根据示例,版本化存储器实现可以包括将全局存储器版本与块存储器版本相比较。全局存储器版本可以对应于多个存储器块,并且块存储器版本可以对应于该多个存储器块中的一个存储器块。与该多个存储器块中的该一个存储器块的多个子块相对应的SBV可以被评估。基于比较和评估,可以关于该多个存储器块中的该一个存储器块的该多个子块中的一个的单元中的哪个级别存储检查点数据做出确定。
[0014]图2图示了根据本公开内容的示例的使用2LC NVM的版本化存储器。图2的存储器库200可以包括例如2k个行,其中k为大于O的整数。2k个行可以被划分成k个行的两个集合,其中偶数行被指定为工作版本(WV)并且奇数行被指定为版本化存储器中的检查点版本(CV)。可替换地,奇数行可以被指定为WV并且偶数行可以被指定为版本化存储器中的CV。关于从WV向CV的数据复制,从WV (例如行2)向CV (例如行3)的数据流的示例图示了通过行缓冲器202进行的数据复制。数据复制还可以基于单个存储器库的两个数据行之间(S卩,如图2中所示)或不同存储器库中的映射而执行。对于不同存储器库,WV可以被指定为第一存储器库中的行X,并且关联的CV可以被指定为第二存储器库中的行X。对于不同存储器库的示例,从WV到CV的数据复制可以通过跨存储器库的总线之上的实际数据传递而执行。相比于依赖于NVM的4LC能力的版本化存储器(S卩,相同物理块(具有N个2比特单元)中的WV和CV (每N个比特)),使用2LC NVM的版本化存储器可以使用如下文进一步详细描述的寻址和版本管理的相同技术。
[0015]图3图示了根据本公开内容的示例的
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1