用于刷新相变存储器的方法及相变存储设备转让专利

申请号 : CN202210701038.6

文献号 : CN114783485B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 丁浩朱峰欧兆熊

申请人 : 阿里云计算有限公司

摘要 :

本申请提供一种用于刷新相变存储器的方法及相变存储设备。该方法包括:初始化用于相变存储器的读扰动表,所述读扰动表包括记录多个数据页的总读取次数的表项,所述多个数据页构成读扰动表管理的粒度单元;监测所述多个数据页的读扰动计数的参考值;如果所述参考值大于产生读扰动的读阈值,则对所述粒度单元进行刷新。根据实施例的技术方案通过有效缩减读扰动表至合理水平,可减小表项内存占用,降低系统处理复杂度。

权利要求 :

1.一种用于刷新相变存储器的方法,其特征在于,包括:初始化用于相变存储器的读扰动表,所述读扰动表包括记录多个数据页的总读取次数的表项,所述多个数据页构成读扰动表管理的粒度单元;

监测所述多个数据页的读扰动计数的参考值;

如果所述参考值大于产生读扰动的读阈值,则对所述粒度单元进行刷新,其中,监测所述多个数据页的读扰动计数的参考值包括:发生读取操作时,计算散布系数,所述散布系数表征数据在所述粒度单元中所述多个数据页上的集中程度;

将所述粒度单元下的总读取次数与所述散布系数的乘积作为所述参考值。

2.如权利要求1所述的方法,其特征在于,以位图置位方式对应表征所述粒度单元中所述多个数据页已被读取,所述位图用于计算所述散布系数。

3.如权利要求2所述的方法,其特征在于,所述计算散布系数包括:将所述散布系数计算为所述位图中置位总数的倒数。

4.如权利要求2所述的方法,其特征在于,所述位图被划分为多个单位区间,所述多个单位区间用于计算所述散布系数。

5.如权利要求4所述的方法,其特征在于,所述计算散布系数包括:确定具有置位的置位区间;

计算所述置位区间的总数;

将所述总数的倒数作为散布系数。

6.如权利要求4所述的方法,其特征在于,所述计算散布系数包括:确定所述位图的置位总数;

将所述置位总数与所述多个单位区间的数量的比值作为各单位区间的平均置位数量;

将置位数量不小于所述平均置位数量的单位区间确定为置位区间;

将所述置位区间的置位总数的倒数作为所述散布系数。

7.如权利要求1所述的方法,其特征在于,所述粒度单元为数据块。

8.一种相变存储设备,其特征在于,包括:控制器,所述控制器具有嵌入式固件,所述嵌入式固件上存储有计算机程序指令;

PCM阵列;

当所述控制器执行所述计算机程序指令时实现如权利要求1‑7中任一项所述的方法以用于刷新所述PCM阵列。

说明书 :

用于刷新相变存储器的方法及相变存储设备

技术领域

[0001] 本申请涉及计算技术领域,具体而言,涉及一种用于刷新相变存储器的方法及相变存储设备。

背景技术

[0002] 目前存储器的发展方向主要在新型非易失性存储器,包括铁电存储器、磁存储器和相变存储器等,其中相变存储器(PCM: Phase‑Change Memory)越来越得到业界的重视。目前,PCM介质一般采用硫系化合物,如常用的GST(Ge2Sb2Te5)材料。高电流会PCM介质转为非晶态,而中电流会将之转为晶态,PCM就是利用材料在晶态和非晶态之间导电性的差异来存储信息。
[0003] PCM具有存储单元尺寸小、循环寿命长、功耗低和可嵌入功能强等优点,例如,PCM可实现高达千万至万亿次的重复读写次数,读电压低至0.2V‑0.4V,并能实现多级存储。PCM随机访问响应时间短,并具有字节可寻址特性。类似动态随机存取存储器,在写入更新数据之前,PCM不需要擦除之前的存储内容,读写时间较为均衡。
[0004] 虽然PCM与闪存相比具有很高的稳定性,但PCM介质仍然存在读扰动(read disturb)现象。PCM介质的读扰动现象是指,当对PCM的存储单元(cell)进行读操作时,当前数据页(page)的相变材料经过多次的温变之后,相变材料阻值累积漂移;当读操作达到一定次数之后,存储单元读取信息发生反转,产生数据错误。
[0005] 因此,需要开发一种可处理PCM介质读扰动的技术方案。
[0006] 在所述背景技术部分公开的上述信息仅用于加强对本申请的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

[0007] 本申请旨在提供一种用于刷新相变存储器的方法及相变存储设备,可减小表项内存占用,降低系统处理复杂度。
[0008] 本申请的其该用户特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
[0009] 根据本申请的一方面,提供一种用于刷新相变存储器的方法,包括:初始化用于相变存储器的读扰动表,所述读扰动表包括记录多个数据页的总读取次数的表项,所述多个数据页构成读扰动表管理的粒度单元;监测所述多个数据页的读扰动计数的参考值;如果所述参考值大于产生读扰动的读阈值,则对所述粒度单元进行刷新。
[0010] 根据本申请的另一方面,提供一种相变存储设备,包括:控制器,所述控制器具有嵌入式固件,所述嵌入式固件上存储有计算机程序指令;PCM阵列;当所述控制器执行所述计算机程序指令时实现前述方法以用于刷新所述PCM阵列。
[0011] 根据本申请的另一方面,提供一种计算机可读介质,其上存储有计算机程序指令,所述程序指令被处理器执行时实现前述的方法。
[0012] 根据本申请的另一方面,提供一种计算机程序指令产品,包括计算机程序指令或指令,该计算机程序指令或指令被处理器执行时实现前述的方法。
[0013] 根据示例实施例,通过有效缩减读扰动表至合理水平,可减小表项内存占用,降低系统处理复杂度。
[0014] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。

附图说明

[0015] 通过参照附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。
[0016] 图1示出根据本申请实施例的管理相变存储器的读扰动表的方法流程图。
[0017] 图2示出根据本申请实施例的表项结构的示意图。
[0018] 图3示出根据本申请另一实施例的监测该多个数据页的读扰动计数的参考值的方法流程图。
[0019] 图4示出根据本申请示例实施例的相变存储设备的框图。

具体实施方式

[0020] 现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
[0021] 此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
[0022] 附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
[0023] 本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
[0024] 在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员可以理解的是,本文所描述的实施例可以与其它实施例相结合。
[0025] 持久化内存产品,指的是一种内存替代产品。区别于传统内存的断电数据丢失,持久内存产品在发生突然断电时,可以保存数据不丢失。下次上电后,数据还在原位置。当前云计算及云存储界对持久化内存应用的架构探索已经越发深入,合理使用持久化内存将极大提高系统的整体效能,降低服务器的整体拥有成本。PCM由于其循环寿命长、功耗低、非易失性等优点,已经成为云计算架构中持久化内存的首选。
[0026] 但是,由于PCM介质读扰动的影响,达到一定次数的读取之后,PCM中数据页(page)存储的数据会发生偏转。针对该问题,一种方案是在系统上管理一张读扰动表(read disturb table),即用于记录相变介质读取次数的表。这张表通常管理的粒度单元是以数据页(page)为单位的。如果数据页的基本粒度为32B(byte:字节),在存储模组容量大小设计为1TB的情况下,需要4B*1TB/32B = 128GB大小的读扰动表。这在内存管理及上下电管理设计上都是难以接受的。
[0027] 为此,本申请提出一种用于相变存储器的读扰动表的管理方案,通过有效缩减读扰动表至合理水平,减小表项内存占用,降低系统处理复杂度。
[0028] 下面将参照实施例对本申请的技术方案及其优点进行详细说明。
[0029] 图1示出根据本申请实施例的管理相变存储器的读扰动表的方法流程图。
[0030] 参见图1,在S101,初始化读扰动表,该读扰动表包括记录多个数据页的总读取次数的表项,该多个数据页构成读扰动表管理的粒度单元。这时,粒度单元下的总读取次数初始化为零。
[0031] 例如,在确定需要缩减读扰动表的大小后,可以将读扰动表管理的粒度单元设置为数据块(或数据排)。根据一些实施例,一个数据块包含16384个数据页。那么,在同样以每条表项占用4B的情况下,对于1TB的存储模组容量,读扰动表的大小为128GB/16384 = 8MB,远远小于未缩减前的128GB。每条4B的表项记录512KB的数据块(包括16384个数据页)的总读取次数,表项数量共有2M条。这个表项的大小相对而言是比较合适的(如图2所示)。
[0032] 在S103,监测该多个数据页的读扰动计数的参考值。
[0033] 根据一些实施例,发生读取操作时,更新粒度单元下的总读取次数,并将粒度单元下的总读取次数的平均值作为读扰动计数的参考值。
[0034] 例如,读扰动表的每条表项记录相应数据块包含的16384个数据页的总读取次数,将该总读取次数除以数据块中数据页的总数16384,得到读取次数的平均值,作为该多个数据页的读扰动计数的参考值。
[0035] 在S105,如果该多个数据页的读扰动计数的参考值大于产生读扰动的读阈值,则对该粒度单元进行刷新。
[0036] 根据实施例,产生读扰动的读阈值可为通过实验获得的经验值。如果计算得到的读扰动计数的参考值超过该读阈值,表明相应PCM介质的阻值累计漂移可能导致信息发生反转,因此需要进行刷新操作。刷新操作是指对存储单元(cell)进行类似重新刷新写入的过程,将存储单元中快要失效的数据重新保存一次,从而维持其存储状态。同时,将粒度单元下的总读取次数重置为零。
[0037] 这样,根据本申请实施例,通过设计缩减的读扰动表,既能有效记录读扰动计数的参考值,又能显著减小读扰动表的大小,从而节省管理读扰动表的内存占用空间,简化系统的读扰动处理。
[0038] 图3示出根据本申请另一实施例的监测该多个数据页的读扰动计数的参考值的方法流程图。
[0039] 参见图3,在S301,计算散布系数,该散布系数表征数据在粒度单元中多个数据页上的集中程度。
[0040] 根据一些实施例,以位图(bitmap)方式对应存储粒度单元中多个数据页已被读取,如果被读取,则相应的位置为1,否则保持为0。例如,对于包含16384个数据页的粒度单元,需占用16384位,即2KB的空间存放位图。
[0041] 发生读取操作时,将位图的与被读取的数据页对应的位置为1,更新粒度单元下的总读取次数,并计算新的散布系数。
[0042] 根据一些实施例,散布系数可取位图中置位总数(即置为1的总位数)的倒数。例如,如果16384个位均置为1,则散布系数为1/16384,表示集中度最小。如果只有1个位置为1,则散布系数为1,表示集中度最大。
[0043] 根据另一些实施例,将位图划分为多个(例如100个)单位区间。计算散布系数时,先确定具有置位的置位区间,计算置位区间的总数,取该总数的倒数为散布系数。例如,如果置位区间的数量为1,则散布系数为1;如果置位区间的数量为100,则散布系数为1/100。
[0044] 根据再一些实施例,将位图划分为多个(例如100个)单位区间。计算散布系数时,先确定位图的置位总数,利用该置位总数与单位区间数量的比值计算各单位区间的平均置位数量。将置位数量不小于该平均置位数量的单位区间确定为置位区间。将所有置位区间的置位总数的倒数作为散布系数。
[0045] 在S303,根据更新的散布系数,确定该多个数据页的读扰动计数的参考值。
[0046] 根据示例实施例,将粒度单元下的总读取次数与该散布系数的乘积作为该多个数据页的读扰动计数的参考值。
[0047] 根据图3所示实施例,考虑了集中读取部分数据页的情况,可以确保读扰动计数的参考值比较接近实际情况,避免刷新操作不及时的问题发生。
[0048] 图4示出根据本申请示例实施例的相变存储设备的框图。
[0049] 如图4所示,该相变存储设备30包括控制器12和PCM阵列14。相变存储设备30还可以包括总线22、以及I/O接口18。控制器12、PCM阵列14、以及I/O接口18可以通过总线22相互通信。
[0050] 控制器12可以包括一个或多个通用CPU(Central Processing Unit,处理器)、微处理器、或专用集成电路等,用于执行相关程序指令。
[0051] 控制器12可包括用于存储程序指令的固件。控制器12可读取固件中的程序指令以执行上述根据本申请实施例的方法。
[0052] 根据一些实施例,控制器12配置为:通过读取并执行固件中程序指令,初始化用于相变存储器的读扰动表,所述读扰动表包括记录多个数据页的总读取次数的表项,所述多个数据页构成读扰动表管理的粒度单元;监测所述多个数据页的读扰动计数的参考值;如果所述参考值大于产生读扰动的读阈值,则对所述粒度单元进行刷新,即对PCM阵列中粒度单元的数据页进行类似重新刷新写入的过程,将PCM阵列中快要失效的数据重新保存一次,从而维持其存储状态。
[0053] 总线22可以包括地址总线、数据总线、控制总线等。总线22提供了各组件之间交换信息的通路。
[0054] 需要说明的是,在具体实施过程中,相变存储设备30还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
[0055] 本申请实施例还提供一种计算机程序产品,该计算机程序产品包括存储计算机程序的非瞬时性计算机可读存储介质,例如固件,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种方法的部分或全部步骤。
[0056] 本领域的技术人员可以清楚地了解到本申请的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列、集成电路等。
[0057] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
[0058] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0059] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0060] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0061] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0062] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得处理单元或控制器执行本申请各个实施例所述方法的全部或部分步骤。
[0063] 以上对本申请实施例进行了详细描述和解释。应清楚地理解,本申请描述了如何形成和使用特定示例,但本申请不限于这些示例的任何细节。相反,基于本申请公开的内容的教导,这些原理能够应用于许多其它实施例。
[0064] 通过对示例实施例的描述,本领域技术人员易于理解,根据本申请实施例的技术方案至少具有以下优点中的一个或多个。
[0065] 根据一些实施例,通过读扰动表记录相变存储器的读次数,从而通过读次数的监控解决读扰动现象造成的数据错误问题。
[0066] 根据一些实施例,通过将用于相变存储器的读扰动表有效缩减至合理水平,可减小表项内存占用,降低系统处理复杂度。
[0067] 根据一些实施例,通过缩减读扰动表,既能有效记录读扰动计数的参考值,又能显著减小读扰动表的大小,从而节省管理读扰动表的内存占用空间,简化系统的读扰动处理。
[0068] 根据一些实施例,考虑到集中读取部分数据页的情况,利用散布系数计算读扰动计数的参考值,可以确保读扰动计数的参考值比较接近实际情况,避免刷新操作不及时的问题发生。
[0069] 依据以下条款可更好地理解前述内容:
[0070] 1、一种用于刷新相变存储器的方法,其中包括:
[0071] 初始化用于相变存储器的读扰动表,所述读扰动表包括记录多个数据页的总读取次数的表项,所述多个数据页构成读扰动表管理的粒度单元;
[0072] 监测所述多个数据页的读扰动计数的参考值;
[0073] 如果所述参考值大于产生读扰动的读阈值,则对所述粒度单元进行刷新。
[0074] 2、如条款1所述的方法,其中监测所述多个数据页的读扰动计数的参考值,包括:
[0075] 发生读取操作时,更新所述粒度单元下的总读取次数;
[0076] 将所述粒度单元下的总读取次数的平均值作为所述参考值。
[0077] 3、如条款1所述的方法,其中监测所述多个数据页的读扰动计数的参考值,包括:
[0078] 发生读取操作时,计算散布系数,所述散布系数表征数据在所述粒度单元中所述多个数据页上的集中程度;
[0079] 将所述粒度单元下的总读取次数与所述散布系数的乘积作为所述参考值。
[0080] 4、如条款3所述的方法,其中以位图置位方式对应表征所述粒度单元中所述多个数据页已被读取,所述位图用于计算所述散布系数。
[0081] 5、如条款4所述的方法,其中所述计算散布系数包括:
[0082] 将所述散布系数计算为所述位图中置位总数的倒数。
[0083] 6、如条款4所述的方法,其中所述位图被划分为多个单位区间,所述多个单位区间用于计算所述散布系数。
[0084] 7、如条款6所述的方法,其中所述计算散布系数包括:
[0085] 确定具有置位的置位区间;
[0086] 计算所述置位区间的总数;
[0087] 将所述总数的倒数作为散布系数。
[0088] 8、如条款6所述的方法,其中所述计算散布系数包括:
[0089] 确定所述位图的置位总数;
[0090] 将所述置位总数与所述多个单位区间的数量的比值作为各单位区间的平均置位数量;
[0091] 将置位数量不小于所述平均置位数量的单位区间确定为置位区间;
[0092] 将所述置位区间的置位总数的倒数作为所述散布系数。
[0093] 9、如条款1所述的方法,其中所述粒度单元为数据块。
[0094] 10、一种相变存储设备,其中包括:
[0095] 控制器,所述控制器具有嵌入式固件,所述嵌入式固件上存储有计算机程序指令;
[0096] PCM阵列;
[0097] 当所述控制器执行所述计算机程序指令时实现如条款1‑9中任一项所述的方法以用于刷新所述PCM阵列。
[0098] 以上具体地示出和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附条款的精神和范围内的各种修改和等效设置。