非易失性随机存取存储器中的混合读取电压校准转让专利

申请号 : CN202010856426.2

文献号 : CN112447245A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : N.帕潘德里欧C.波齐迪斯N.洛诺R.A.普莱卡R.I.斯托伊卡S.托米克T.费希尔A.D.弗赖A.D.沃尔斯

申请人 : 国际商业机器公司

摘要 :

根据一个实施例的计算机实现的方法、系统和计算机程序产品。该方法包括:确定存储器的块的当前操作状态。该块在其中包括多于一种类型的页面,并且至少一个读取电压与每种页面类型相关联。该块的当前操作状态还用于产生该块的混合校准方案,该混合校准方案标识读取电压的第一子集和读取电压的第二子集。第二子集中的读取电压被进一步组织成一个或多个分组。为第一子集中的读取电压中的每一个计算唯一读取电压偏移值,并且还为第二子集中的读取电压的每个分组计算公共读取电压偏移值。

权利要求 :

1.一种用于校准存储器的块的读取电压的计算机实现的方法,包括:确定存储器的块的当前操作状态,其中所述块在其中包括多于一种类型的页面,其中至少一个读取电压与每种页面类型相关联;

使用所述块的当前操作状态来产生所述块的混合校准方案,其中所述混合校准方案标识所述读取电压的第一子集以及所述读取电压的第二子集,其中所述第二子集中的读取电压被组织成一个或多个分组;

为所述第一子集中的读取电压中的每一个计算唯一读取电压偏移值;

为所述第二子集中的读取电压的每个分组计算公共读取电压偏移值;

将所述唯一读取电压偏移值中的每一个和所述公共读取电压偏移值中的每一个保存在给定块的元数据存储区域中;以及将所述混合校准方案保存在给定块的元数据存储区域中。

2.根据权利要求1所述的计算机实现的方法,其中,存储器的块的当前操作状态是从包括以下各项的组中选择的:保持状态,读取干扰状态和循环状态。

3.根据权利要求1所述的计算机实现的方法,其中,使用所述块的当前操作状态来产生所述块的混合校准方案包括:将所述当前操作状态与所述块的多个预定校准方案中的对应一个相匹配。

4.根据权利要求1所述的计算机实现的方法,其中,使用所述块的当前操作状态来产生所述块的混合校准方案包括:使用与所述块的当前操作状态相关联的统计数据来计算所述块的混合校准方案。

5.根据权利要求4所述的计算机实现的方法,其中,与所述块的当前操作状态相关联的统计数据从包括以下各项的组中选择:编程/擦除计数器、读取干扰计数器和保持计时器。

6.根据权利要求1所述的计算机实现的方法,其中,以给定分组组织的读取电压中的每一个对应于相同的页面类型。

7.根据权利要求1所述的计算机实现的方法,其中,所述存储器包括三维三电平单元NAND闪存。

8.根据权利要求1所述的计算机实现的方法,其中,所述存储器包括三维四电平单元NAND闪存。

9.一种用于校准存储器的块的读取电压的计算机程序产品,所述计算机程序产品包括具有包括在其中的程序指令的计算机可读存储介质,所述程序指令可由处理器读取和/或执行,以使所述处理器执行根据权利要求1-8的任何方法的步骤。

10.一种系统,包括:

处理器;和

与所述处理器集成和/或可由所述处理器执行的逻辑,所述逻辑被配置为执行根据权利要求1-8的任何方法的步骤。

11.一种系统,包括用于执行根据权利要求1至8的任何方法的步骤的模型。

说明书 :

非易失性随机存取存储器中的混合读取电压校准

技术领域

[0001] 本发明涉及数据存储系统,并且更具体地,本发明涉及校准非易失性随机存取存储器(non-volatile random access,NVRAM)中的块的读取电压。

背景技术

[0002] NVRAM是一种类型的随机存取存储器,其即使在电源关闭之后仍保留存储在其上的信息,并且包括多种不同形式。以闪存为例,传统的基于NAND闪存的固态驱动器(solid state drive,SSD)的性能特性与传统的硬盘驱动器(hard disk drive,HDD)根本不同。传统SSD中的数据通常以4、8或16KB大小的页面进行组织。此外,SSD中的页面读取操作通常比写入操作快一个数量级,并且延迟既不取决于操作的当前位置,也不取决于操作的先前位置。
[0003] 由于额外的编程/擦除(program/erase,P/E)循环、随时间的电荷泄漏(即,数据保持(data retention))以及由读取或编程操作(即,分别为读取或编程干扰错误)在单元中放置的额外电荷,闪存块的原始位错误率(raw bit error rate,RBER)通常将随时间增加。通常,当闪存块中的任何页面显示代码字达到页面退出错误计数限制时,闪存块退出。该限制通常被设置为结合适当的纠错码(error correction code,ECC)来实现,导致在对闪存块应用ECC之后的不可纠正位错误率(Uncorrectable Bit Error Rate,UBER)被设置为类似于传统硬盘驱动器中的UBER,例如大约10-15,但是可以或更多或更少。
[0004] 块校准是指调整读取电压的算法,其已被证明可显著提高RBER,从而增强耐用性和保持性,尤其是对于使用现代三维(three-dimensional,3-D)三电平单元(triple-level-cell,TLC)或四电平单元(quad-level-cell,QLC)NAND闪存的企业级闪存系统。先前维护有效存储器性能的尝试通常包括以扫描方式或通过读取电压移位算法(read voltage shifting algorithm)来检查存储器的每个块的读取电压,该读取电压移位算法根据阈值电压分布由于循环或保持或其它干扰效应而如何改变来跟踪和校正读取电压。

发明内容

[0005] 根据一个实施例,一种用于校准存储器的块的读取电压的计算机实现的方法。该计算机实现的方法包括:确定存储器的块的当前操作状态。该块在其中包括多于一种类型的页面,并且至少一个读取电压与每种页面类型相关联。该块的当前操作状态还用于产生该块的混合校准方案,其中该混合校准方案标识读取电压的第一子集以及读取电压的第二子集。第二子集中的读取电压被进一步组织成一个或多个分组。为第一子集中的读取电压中的每一个计算唯一读取电压偏移值,并且还为第二子集中的读取电压中的每个分组计算公共读取电压偏移值。唯一读取电压偏移值中的每一个和公共读取电压偏移值中的每一个被存储在给定块的元数据存储区域中。此外,混合校准方案被保存在给定块的元数据存储区域中。
[0006] 根据另一实施例,一种用于校准存储器的块的读取电压的计算机程序产品。该计算机程序产品包括计算机可读存储介质,其中包括程序指令。程序指令还可由处理器读取和/或执行,以使处理器:执行前述方法。
[0007] 根据又一实施例,一种系统包括:处理器,以及与处理器集成和/或可由处理器执行的逻辑。该逻辑被配置为:执行前述方法。
[0008] 从下面的详细描述中,本发明的其他方面和实施例将变得显而易见,当结合附图时,这些详细描述通过示例说明了本发明的原理。

附图说明

[0009] 图1是根据一个实施例的非易失性存储器卡的图。
[0010] 图2是根据一个实施例的数据存储系统架构的图。
[0011] 图3是根据一个实施例的系统图。
[0012] 图4A是根据一个实施例的包括块条带和页面条带的概念图。
[0013] 图4B是根据一个实施例的3-D非易失性存储器结构的局部透视图。
[0014] 图5是示出根据一个实施例的阈值电压移位现象的曲线图。
[0015] 图6是根据一个实施例的方法的流程图。
[0016] 图7是根据一个实施例的概述示例性规则的表格。
[0017] 图8是根据一个使用中的示例概述预定混合校准方案的表格。
[0018] 图9是根据一个实施例的网络架构。
[0019] 图10是根据一个实施例的可以与图9的服务器和/或客户端相关联的代表性硬件环境。
[0020] 图11是根据一个实施例的分层数据存储系统。

具体实施方式

[0021] 以下描述是为了说明本发明的一般原理,并不意味着限制本文要求保护的发明构思。此外,本文描述的特定特征可以在各种可能的组合和排列中的每一种中与其他描述的特征结合使用。
[0022] 除非本文中另有具体定义,否则所有术语应给出其最广泛的可能解释,包括说明书中隐含的含义以及本领域技术人员理解的和/或字典、论文等中定义的含义。
[0023] 还必须注意,如说明书和所附权利要求书中所使用的,单数形式“一”、“一个”和“该”包括复数指代物,除非另有说明。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组合的存在或添加。
[0024] 以下描述公开了数据存储系统的几个优选实施例,以及其操作和/或组成部分。应当理解,本文的各种实施例可以用广泛的存储介质来实现,包括例如NVRAM技术,诸如NAND闪存、或NOR闪存、相变存储器(phase-change memory,PCM)、磁阻RAM(magnetoresistive RAM,MRAM)和电阻RAM(resistive RAM,RRAM)。为了提供上下文,并且仅仅为了帮助读者,可以参考一种类型的非易失性存储器来描述各种实施例。这仅仅是通过举例的方式完成的,并且不应该被认为是对权利要求中定义的发明的限制。
[0025] 在一个一般实施例中,一种用于校准存储器的块的读取电压的计算机实现的方法。该计算机实现的方法包括:确定存储器的块的当前操作状态。该块在其中包括多于一种类型的页面,并且至少一个读取电压与每种页面类型相关联。该块的当前操作状态还用于产生该块的混合校准方案,其中该混合校准方案标识读取电压的第一子集以及读取电压的第二子集。第二子集中的读取电压被进一步组织成一个或多个分组。为第一子集中的读取电压中的每一个计算唯一读取电压偏移值,并且还为第二子集中的读取电压的每个分组计算公共读取电压偏移值。唯一读取电压偏移值中的每一个和公共读取电压偏移值中的每一个被存储在给定块的元数据存储区域中。此外,混合校准方案被保存在给定块的元数据存储区域中。
[0026] 在另一个一般实施例中,一种用于校准存储器的块的读取电压的计算机程序产品。该计算机程序产品包括计算机可读存储介质,其中包括程序指令。程序指令还可由处理器读取和/或执行,以使处理器:执行前述方法。
[0027] 在又一个一般实施例中,一种系统包括:处理器,以及与处理器集成和/或可由处理器执行的逻辑。该逻辑被配置为:执行前述方法。
[0028] 图1示出了根据一个实施例的存储器卡100。应当注意,尽管存储器卡100在本实施例中被描述为示例性非易失性数据存储卡,但是根据替代实施例,各种其他类型的非易失性数据存储卡可以用于数据存储系统中。因此,存储器卡100的架构和/或组件绝不是为了限制本发明,而是作为非限制性的示例给出的。
[0029] 此外,作为选择,本存储器卡100可以结合本文列出的任何其他实施例的特征来实现,诸如参考其他附图描述的那些特征。然而,这样的存储器卡100和本文呈现的其他存储器卡可以用于各种应用和/或排列中,在本文列出的说明性实施例中可以或可以不具体描述。此外,本文呈现的存储器卡100可以在任何期望的环境中使用。
[0030] 继续参考图1,存储卡100包括网关102、连接到通用处理器(general purpose processor,GPP)存储器114(其可以包括RAM、ROM、电池供电的DRAM、相变存储器PC-RAM、MRAM、STT-MRAM等或其组合)的通用处理器(GPP)112(诸如ASIC、FPGA、CPU等),以及多个存储器控制器108,在本示例中存储器控制器108包括闪存控制器。每个存储器控制器108经由通道106连接到多个NVRAM存储器模块104(其可以包括NAND闪存或(多个)其他非易失性存储器类型,诸如上面列出的那些)。
[0031] 根据各种实施例,控制器108中的一个或多个可以是或包括一个或多个处理器,和/或用于控制存储器卡100的任何子系统的任何逻辑。例如,控制器108通常控制NVRAM存储器模块104的功能,诸如数据写入、数据再循环、数据读取等。在各种实施例中,控制器108可以使用本领域已知的逻辑以及本文公开的任何逻辑来操作,并且因此可以被认为是用于本文包括的非易失性存储器的任何描述的处理器。
[0032] 此外,控制器108可以被配置和/或可编程为执行或控制本文呈现的方法中的一些或全部。因此,控制器108可以被认为被配置为通过编程到一个或多个芯片、模块和/或块中的逻辑来执行各种操作;一个或多个处理器可用的软件、固件和/或其他指令;等等及其组合。
[0033] 仍然参考图1,每个存储器控制器108也连接到控制器存储器110,控制器存储器110优选地包括高速缓存,该高速缓存根据本文描述的各种实施例复制非易失性存储器结构。然而,根据期望的实施例,控制器存储器110可以是电池支持的DRAM、相变存储器PC-RAM、MRAM、STT-MRAM等、或其组合。
[0034] 如前所述,根据期望的实施例,存储器卡100可以在各种类型的数据存储系统中实现。图2示出了根据示例性实施例的数据存储系统架构200,该架构决不是为了限制本发明。此外,应当注意,图2的数据存储系统220可以包括在图1的实施例中发现的各种组件。
[0035] 参见图2,数据存储系统220包括多个接口卡202,接口卡202被配置为经由I/O互连204与一个或多个处理器系统201通信。数据存储系统220还可以包括一个或多个独立磁盘冗余阵列(Redundant Array of Independent Disk,RAID)控制器206,其被配置为控制多个非易失性数据存储卡208中的数据存储。非易失性数据存储卡208可以包括NVRAM、闪存卡、RAM、ROM和/或一些其他已知类型的非易失性存储器。
[0036] I/O互连204可以包括任何已知的通信协议,诸如光纤通道(Fiber Channel,FC)、以太网光纤通道(FC over Ethernet,FCoE)、无限带宽、互联网小型计算机系统接口(Internet Small Computer System Interface,iSCSI)、传输控制协议/互联网协议(Transport Control Protocol/Internet Protocol,TCP/IP)、外围组件互连高速(Component Interconnect Express,PCIe)等、和/或其任意组合。
[0037] 数据存储系统220中的(多个)RAID控制器206可以执行与RAID-5,RAID-6,RAID-10所采用的奇偶校验方案相似的奇偶校验方案,或者一些其他合适的奇偶校验方案,如本领域技术人员在阅读本说明书时所理解的。
[0038] 每个处理器系统201包括一个或多个处理器210(诸如,CPU、微处理器等)、本地数据存储装置211(例如,诸如图10的RAM 1014、图10的ROM1016等)、以及被配置为与数据存储系统220通信的I/O适配器218。
[0039] 再次参考图1,根据期望的实施例,本文描述的存储器控制器108和/或其他控制器(例如,图2的RAID控制器206)可能能够对存储的数据执行各种功能。具体而言,存储器控制器可以包括被配置为执行以下功能中的任何一个或多个的逻辑,这些功能绝不是排他性列表。换句话说,根据期望的实施例,存储系统的逻辑可以被配置为执行附加的或替代的功能,如本领域技术人员在阅读本说明书时将会理解的。
[0040] 垃圾收集(Garbage Collection)
[0041] 在本说明书的SSD存储器控制器的上下文中的垃圾收集可以包括以下过程:标识将被回收以供将来使用的数据的块以及重新定位其中仍然有效的所有页面。此外,取决于特定控制器和/或相应的垃圾收集操作单元,可以标识逻辑擦除块(logical erase block,LEB)以被回收和/或重新定位。通常,一个LEB对应于一个块条带,但替代实现也可以考虑构建LEB的固定数量的块条带。
[0042] 物理“块”表示可以在非易失性存储器(诸如,NAND闪存)上擦除的最小单元,从而为向其写入数据做好准备。然而,典型的垃圾收集操作单元通常是非易失性存储器的物理块的倍数,并且在本文也被称为LEB。这是因为这样的事实:通常类似于RAID(RAID-like)的奇偶校验信息被添加到LEB中。因此,在页面或块出现错误的情况下,只有当LEB中的所有块仍持有数据时,才能重建数据。因此,一旦来自LEB的所有块的所有仍然有效的数据已经被成功地重新定位到新的位置,来自垃圾收集单元的单独块只能被单独地或者在单个单元中擦除。因此,整个垃圾收集单元作为单个单元进行垃圾收集。此外,LEB的大小直接影响垃圾收集引起的写入放大。LEB越大,不相关的数据越有可能一起存储在LEB中,因此在垃圾收集选择时,更多的LEB数据可能需要被重新定位。
[0043] 通常,来自不同管芯(die)和/或闪存通道的块被分组在一起,使得来自相同组的块可以被并行读取或写入,从而增加总带宽。也可以将前两种方法结合起来,并使用来自不同闪存通道的可并行访问的块来构建RAID条带。
[0044] 还应当注意,LEB可以包括作为物理擦除的单位的物理存储器块的任意倍数。此外,将存储器块组织成LEB不仅允许在来自不同存储器芯片、存储器平面和/或通道的存储器块之间添加类似于RAID的奇偶校验保护方案,还允许通过更高的并行性显著提高性能。例如,多个非易失性存储器块可以在RAID条带中分组在一起。本领域技术人员在阅读本说明书后将会理解,RAID方案通常提高了可靠性并降低了数据丢失的概率。
[0045] 根据不以任何方式限制本发明的示例性实施例,存储器控制器(例如,参见图1的108)可以在内部地执行垃圾收集。如前所述,垃圾收集可以包括选择要重新定位的LEB,之后可以重新定位(例如,移动)在所选LEB上仍然有效的所有数据。在仍然有效的数据被重新定位之后,LEB可以被擦除,并且此后用于存储新数据。根据垃圾收集的LEB重新定位的数据量确定写入放大。此外,减少写入放大的有效方法包括实现热分离(heat segregation)。
[0046] 热分离
[0047] 在当前上下文中,数据的“写入热”(write heat)是指数据被更新(例如,用新数据重写)的速率(例如,频率)。被认为是“热”的存储器块往往具有频繁的更新速率,而被认为是“冷”的存储器块具有比热块更慢的更新速率。
[0048] 例如,跟踪逻辑页面的写入热可能涉及在逻辑到物理表(logical to physical table,LPT)映射条目中为该页面分配一定数量的位,以跟踪该页面在特定时间段或窗口中已经经历了多少写入操作。通常,主机写入操作会增加写入热,而内部重新定位写入会减少写入热。写入热的实际增加和/或减少可以是确定性的或概率性的。
[0049] 类似地,对于每个逻辑页面,可以用LPT中的特定数量的附加位来跟踪读取热。为了减少元数据,还可以在物理块级跟踪读取热,在物理块级,可以为跨转(straddling)和非跨转(non-straddling)读取维护每个块的单独计数器。然而,应当注意,在一些实施例中,当确定存储器块的热时,对存储器块的读取请求的数量和/或对存储器块执行的读取操作可能不会对热分离起作用。例如,如果频繁从特定存储器块读取数据,高读取频率不一定意味着存储器块也将具有高更新速率。相反,对给定存储器块执行的高频率的读取操作可以表示存储在存储器块中的数据的重要性、值等。
[0050] 通过将具有相同和/或相似写入热值的存储器块分组,可以实现写入热分离。特别地,写入热分离方法可以将写入热存储器页面一起分组在某些存储器块中,而将写入冷存储器页面一起分组在单独存储器块中。因此,写入热分离后的LEB倾向于被写入热数据或写入冷数据占据。
[0051] 写入热分离的优点有两个。首先,对写入热存储器块执行垃圾收集过程将防止触发写入冷数据的重新定位。在没有热分离的情况下,频繁执行的对写入热数据的更新还会导致与被重新定位的热数据在同一LEB上并置的所有写入冷数据的不期望的重新定位。因此,对于实施写入热分离的实施例,通过执行垃圾收集引起的写入放大要低得多。
[0052] 其次,数据的相对写入热可用于损耗均衡(wear leveling)目的。例如,写入热数据可以被放置在更健康(例如,更新(younger))的存储器块中,而写入冷数据可以被放置在相对于那些更健康的存储器块而言不太健康(例如,更旧(older))的存储器块中。因此,相对更旧的块暴露于损耗的速率被有效地减缓,从而提高了实现写入热分离的给定数据存储系统的整体耐久性。
[0053] 写入分配
[0054] 写入分配包括将写入操作的数据放入打开的LEB的空闲位置。一旦LEB中的所有页面都被写入,便会关闭LEB并将其放置在持有被占用的LEB的池中。通常,被占用的池中的LEB有资格进行垃圾收集。打开的LEBs的数量通常是有限的,任何关闭的LEB都可以立即或在一段时间延迟后被打开的新LEB替换。
[0055] 在执行期间,垃圾收集可能与用户写入操作同时发生。例如,当用户(例如,主机)向设备写入数据时,设备控制器可以连续地对具有无效数据的LEB执行垃圾收集,以便为新的传入数据页面腾出空间。如上所述,在其上执行垃圾收集的LEB通常具有在垃圾收集操作时仍然有效的一些页面;因此,这些页面优选地被重新定位(例如,写入)到新的LEB。
[0056] 同样,前述功能绝不旨在限制本文描述和/或建议的任何存储系统的能力。相反,前述功能是以示例的方式呈现的,并且取决于期望的实施例,存储系统的逻辑可以被配置为执行附加的或替代的功能,如本领域技术人员在阅读本说明书时将会理解的。
[0057] 现在参考图3,示出了根据一个实施例的系统300。作为选项,本系统300可以结合本文列出的任何其他实施例的特征来实现,诸如参考其他附图所描述的那些特征。然而,本文呈现的这种系统300和其他系统可以用于各种应用和/或排列中,这些应用和/或排列可以在本文列出的说明性实施例中具体描述,也可以不具体描述。此外,本文呈现的系统300可以在任何期望的环境中使用,例如,与控制器结合使用。
[0058] 如图所示,系统300包括写入高速缓存302,该写入高速缓存302耦合到若干其他组件,包括垃圾收集器304。如前所述,垃圾收集器304可用于通过重新定位有效数据并提供待擦除以供后续重复使用(reuse)的非易失性存储器块来释放LEB单元。因此,根据期望的实施例,垃圾收集器304可以回收连续物理空间的块。根据示例性实施例,块擦除单元可用于跟踪由垃圾收集器304移交的非易失性存储器块和/或完成对其的擦除。
[0059] 写入高速缓存302还耦合到空闲块管理器306,空闲块管理器306可以在空闲非易失性存储器块被擦除之后跟踪它们。此外,如本领域普通技术人员在阅读本说明书后将会理解的,空闲块管理器306可以使用擦除的空闲非易失性存储器块从不同道(例如,块条带)构建非易失性存储器块的空闲条带。
[0060] 仍然参考图3,写入高速缓存302耦合到LPT管理器308和存储器I/O单元310。LPT管理器308维护逻辑地址到存储器的物理页面的逻辑到物理映射。根据示例,该示例不以任何方式限制本发明,LPT管理器308可以维护4KiB逻辑地址的逻辑到物理映射。存储器I/O单元310与存储器芯片通信,以便执行低级操作,例如,诸如读取一个或多个非易失性存储器页面、写入非易失性存储器页面、擦除非易失性存储器块等。
[0061] 为了更好地理解本文使用的块条带和页面条带之间的区别,图4A是根据一个实施例的概念图400。LEB由块条带构建,并且通常使用单个块条带构建LEB。然而,替代实施例可以使用多个块条带来形成LEB。作为选项,本概念图400可以结合本文所列的任何其他实施例的特征来实现,诸如参考其他附图所描述的那些特征。然而,本文所呈现的这种概念图400和其他特征可以用于各种应用和/或排列中,这些应用和/或排列可以在本文所列的说明性实施例中具体描述或不具体描述。此外,本文呈现的控制器概念图400可以用在任何期望的环境中。因此,图4A的示例性非易失性存储器控制器概念图400可以在高速缓存架构中实现。然而,取决于期望的实施例,图4A的概念图400可以在定义存储在非易失性存储器中的数据的组织中实现。因此,下面依次描述两种实施方式。
[0062] 非易失性存储器
[0063] 现在参考图4A,概念图400包括一组标记为“平面0”到“平面M”的M+1个聚合平面。聚合平面包括不同通道上具有相同平面索引的所有物理平面。应当注意,聚合平面在本文也简称为平面。
[0064] 当用存储在非易失性存储器中的数据实现时,通道上的每个物理平面可以包括一大组块,例如,通常在1024、2048或更大的数量级。此外,一个或多个物理平面还可以包括几个附加块,这些附加块可以用作坏块(例如,性能差的块、具有不期望的特性的块等)的替换块。
[0065] 在非易失性存储器的每个平面中,来自每个通道的单个块形成相应的块条带。因此,非易失性存储器的给定实施例所支持的块条带的数量可以由每个平面的块的数量和平面的数量来确定。
[0066] 在平面0的分解视图中,概念图400进一步示出了在其余平面中支持的一组块条带中的单个块条带(块条带0)。平面0的块条带0被显示为包括11个块,从标记为“通道0”到“通道10”的每个通道各有一个块。应该注意的是,块与块条带的关联会随着时间的推移而改变,因为块条带通常在被垃圾收集后被溶解。擦除的块可以被放置在空闲块池中,由此当写入分配请求新的块条带时,从空闲块池中的块组装新的块条带。例如,参考概念图400,来自通道0的块10和来自通道4的块41当前与平面0的所示块条带0相关联。此外,所示的块条带0持有N+1个页面条带,并且因此每个块持有标记为“页面0页”到“页面N”的N+1个页面。
[0067] 高速缓存架构
[0068] 仍然参考图4A,当在高速缓存架构中实现时,聚合平面0的分解视图中示出的页面的每个块可以构成来自一个通道的唯一块。类似地,每个通道贡献单个、单独数据块,其形成块条带。例如,参考概念图400,来自通道0的块10包括其中的所有页面(页面0到页面N),而来自通道4的块41对应于其中的所有页面,等等。
[0069] 在存储器控制器的上下文中,例如能够在通道级实现RAID,块条带由多个块组成,这些块相当于块的条带。仍然参考图4A,聚合平面0的多个块构成了块条带0。虽然块条带中的所有块通常属于相同的聚合平面,但是在一些实施例中,块条带的一个或多个块可以属于不同的物理平面。因此,每个聚合平面可以包括一个或多个块条带。因此,根据说明性实施例,来自不同物理平面的块0到块10可以构成块条带。
[0070] 不管图4A的概念图400是否用非易失性存储器和/或高速缓存架构来实现,在不同的实施例中,每个块中的页面数量和/或每个平面中的通道数量可以根据期望的实施例而变化。根据不旨在限制本发明的示例性实施例,块可以包括1024个页面,但是在各种实施例中可以包括更多或更少的页面。类似地,每个平面的通道数量和/或平面的数量可以根据期望的实施例而变化。
[0071] 仍然参考图4A,具有相同页面索引的块条带中的所有页面表示页面条带。例如,页面条带0包括平面0的块条带0中的每个通道的第一个页面(页面0)。类似地,页面条带N包括平面0的块条带0中每个通道的最后一个页面(页面N)。
[0072] 在一些方法中,还通过使用3-D存储器结构来实现图4A的概念图400中所示的通用存储装置架构。例如,图4B描绘了根据一个实施例的3-D非易失性存储器结构450的代表性视图。作为选项,本结构450可以结合本文列出的任何其他实施例的特征来实现,诸如参考其他附图(诸如图4A)描述的那些特征。然而,本文呈现的这种结构450和其他结构可以用于各种应用和/或排列中,这些应用和/或排列可以在本文列出的说明性实施例中可以具体描述或可以不具体描述。此外,本文呈现的结构450可用于任何期望的环境中。因此,图4B(和其他附图)可以被认为包括任何可能的排列。
[0073] 如图所示,3-D非易失性存储器结构450的每一层452都沿着x轴和y轴延伸。这些层452中的每一层包括多个存储组件(未示出),诸如电压供给线、传感器叠层、晶体管等,例如,如本领域技术人员在阅读本说明书后将会理解的,它们用于实现图4A的概念图400中所示的通用存储装置架构的非易失性存储设备。此外,各层452沿着z轴以堆叠方式布置,以便增加存储密度和效率。沿着字线(通常在图4B的x或y维度上)来自不同位线的单元在逻辑上进行组合以形成页面:在TLC中,块中的每个字线包含3个物理页面(例如,下部页面、上部页面和额外页面),并且字线通常属于z维度(垂直于x-y平面)中的一个特定层。对于由字线和位线连接的单元的网格形成的特定块,驻留在同一层上的字线数量通常较小。因此,可以由所有层452的字线形成块。此外,同一块中的字线以及页面可以驻留在不同的层452上。
[0074] 同样,由于循环、保持、读取干扰、编程干扰等,或可能特定于3-D NAND闪存技术(例如,基于浮栅或基于电荷俘获的技术)、工艺技术、单元和材料设计、电路和阵列架构等的其它机制,或其它特定设计因素,存储器块中的编程阈值电压分布可以以慢或快的方式随着写入和擦除数据(循环)、读取数据(读取干扰)、时间(保持)等而改变。换句话说,闪存块的RBER随着时间和使用而增加。当使用存储器块时,在块上执行的每个P/E循环导致存储单元的损坏,这又增加了对应的RBER。
[0075] 块校准是通过减少经历的RBER来增强闪存存储系统(例如特别是企业级闪存系统)的耐久性和保持性的重要方面。该块校准对应于读取电压,并涉及能够跟踪阈值电压分布的变化并相应地调整读取电压的算法,从而通过减少读取尾延迟(tail latency)(否则将由于错误恢复机制调用而导致读取尾延迟)来显著减少位错误并提高相应设备中的性能一致性。
[0076] 此外,在读取命令期间,相应地对读取电压进行调整。因此,阈值电压代表导通给定闪存单元的晶体管所需的电压,并且其值取决于编程期间存储的电荷量。然而,读取电压是偏置电压,其值通常在两个相邻逻辑状态的阈值电压之间,例如,如下面在图5中进一步详细解释的。
[0077] 暂时参考图5,示出了根据示例的阈值电压移位现象的曲线图500。曲线图500的x轴表示编程的阈值电压VTH,而y轴表示QLC NAND闪存块的对应单元计数。在QLC NAND闪存中,每个存储单元存储4位信息,因此,VTH分布对应于16个可能的离散电平(L0,L1,…,L15)。此外,在给定的QLC NAND闪存的块中的每个不同类型的页面具有与其对应的不同组的读取电压。根据不以任何方式限制本发明的示例,下部页面对应于V8读取电压,上部页面对应于V4和V12读取电压,额外页面对应于V2、V6、V10和V14读取电压,而顶部页面对应于V1、V3、V5、V7、V9、V11、V13和V15读取电压。
[0078] 实线分布502表示编程后的VTH电平。垂直实线504表示对于VTH分布502最佳的读取电压(V1,…,V15)。虚线分布506表示由于电荷随时间的损失而导致的VTH电平的负移位。由于这种向更低电压的负移位,读取电压504不再是最佳的。实际上,必须对读取电压施加负偏移(negative offset),以便考虑VTH分布从502到506的变化。垂直虚线508表示在506中的VTH分布的保持期间的最佳的读取电压(V1,…,V15)。通常,图中所示的16个电平(L0,L1,…,L15)中的每一个可以具有不同的VTH移位,因此,15个读取电压(V1,…,V15)中的每一个可以具有不同的最佳移位。
[0079] 因此,读取电压移位值(或偏移值)优选地在块被写入之后不久和/或之后周期性地被确定。阈值电压可以被认为是单元编程电平(即,L0,L1,…,L15)的指标(index),当控制栅极偏置被施加到存储器单元时,通过测量源极-漏极电流来确定该指标。通常,在读取操作时,相邻标称阈值电压电平之间的一个或多个读取电压用于确定存储器单元状态。当存储器单元的阈值电压值改变时(如上所述),在读取操作期间施加的读取电压被优选地使用一组偏移值来相应地移位,以获得最佳读出条件并最小化RBER。随后,可以周期性地更新最佳读取电压移位值,例如在后台健康检查中,或者在需要时,例如在高位错误计数或ECC失败的情况下。
[0080] 虽然对一些块而言,RBER的增加是不可修复的(诸如,由延长的P/E循环引起的那些),但是由诸如保持和/或读取干扰的事件引起的RBER的增加是瞬时的,因为受影响的块不会被不可逆地损坏。当对应的存储器块被重新校准,从而对应的读取电压被校正时,这种不利的RBER增加被补救。在其他方法中,经历瞬时RBER增加的块可以通过被擦除、编程和重新校准来补救。因此,很明显,块的RBER取决于块的状态,这可以由循环状态、保持状态、读取干扰状态和/或它们的任意组合来确定。块重新校准通过调整读取电压来改善RBER,使得它们在永久效应和/或瞬时效应下的VTH分布的各种变化下是最佳的。
[0081] 理想情况下,存储器的块中每个页面的读取电压是单独更新的。然而,随着存储器的存储容量的增加,通过为存储器的每个块中的每个页面维护读取电压偏移值而消耗的存储量也增加。例如,从TLC NAND闪存中的每单元3位到QLC NAND闪存中的每单元4位,每个块实现16个阈值电压电平(而不是TLC中的8个)和15个不同的读取电压(而不是TLC中的7个)来读取其中包括的任何页面。此外,随着垂直堆叠和工艺技术的改进,每个新一代3-D NAND闪存的层数也在增加。随后,每个块中的页面数量也增加。例如,当前的3-D QLC NAND闪存可能有90层以上,并且每个块可能有4000个页面以上。因此,如果3-D QLC NAND中的所有这15个不同读取电压被独立地(或单独地)校准,则在块中为每个页面或页面分组存储一组单独读取偏移值所涉及的元数据的量和每页面的校准读取数量将显著增加。
[0082] 此外,块中的不同页面可能表现出不同的读取偏移值,这主要归因于导致各种单元的阈值电压特性不同的工艺变化。减少元数据的量的一种方法可以是对相同类型的页面(例如,下部页面或上部页面)进行分组,并且对相同分组的所有成员使用一组读取电压偏移。减少元数据的量的第二种方法可以是对在读取特定页面类型时使用的所有读取电压使用单个偏移值,例如,对于上述额外页面的示例,将所有四个读取电压V2、V6、V10和V14共同地移位最佳公共偏移。这种方法将针对块中的每个额外页面或额外页面的分组存储的元数据的量从4个值减少到1个值,并且还相应地减少了校准读取的数量。
[0083] 然而,为了使第二种方法有效,阈值电压电平的变化(由特定读取电压的应用来区分)优选地是均匀的并且朝向相同的方向。例如,所有VTH电平都移位到负值。然而,这种假设可能不适用于块可能经历的所有不同状态。例如,读取干扰应力倾向于对最左边的VTH电平生成正移位,而保持性倾向于对最右边的VTH电平生成更高的负移位。此外,在现代TLC和QLC NAND闪存中,相邻VTH电平之间的裕量(margin)很小,施加到多个读取电压的公共偏移可能不足以减少RBER,而可以实现所有或选定读取电压的单独偏移。
[0084] 因此,本文包括的各种实施例实现了混合校准方法,其中独立地校准块中的选择读取电压,并且基于相应的页面类型将剩余的读取电压分组在一起,并且根据应用于分组中所有读取电压的最佳公共偏移来校准。例如,对应于最左侧和最右侧VTH电平的读取电压,例如图5中的电平L0、L1、L2、L3和L12、L13、L14、L15,可能比位于中间的那些读取电压对各种干扰或噪声源(例如,诸如保持和/或读取干扰)更敏感。例如,本领域技术人员可以理解,与中间VTH电平的移位相比,当设备受到保持和读取干扰应力时,块中最左边和最右边的VTH电平可以经历更明显的移位,该移位也沿着不同的方向发散。因此,显而易见的是,对应的最左边和最右边的读取电压可以受益于单独校准,而中间的读取电压可以形成一个或多个电压分组,并且每个电压分组可以通过使用公共最佳偏移来校准,而不使RBER更差。因此,本文的一些实施例通过对对应于最外层VTH电平的读取电压执行单独电压校准,同时对对应于中间VTH电平的读取电压应用公共电压校准而受益。这期望地提供了改善的RBER,同时还保持元数据大小相对较小,例如,如下面将更详细描述的。
[0085] 现在参考图6,根据一个实施例示出了用于为存储器的块的读取电压选择混合校准方案的方法600的流程图。在各种实施例中,方法600可以根据本发明在图1-5所示的任何环境及其他环境中执行。例如,可以关于3-D TLC NAND闪存、3-D QLC NAND闪存等或任何其他期望类型的存储器中的存储空间的块来执行方法600中包括的任何过程。此外,如本领域技术人员在阅读本说明书后将理解的,方法600中可以包括比图6中具体描述的操作更多或更少的操作。
[0086] 方法600的每个步骤可以由操作环境的任何合适的组件来执行。例如,在各种实施例中,方法600可以部分或全部由控制器(例如,闪存控制器)、处理器、计算机等或其中具有一个或多个处理器的一些其他设备来执行。因此,在一些实施例中,方法600可以是计算机实现的方法。还应当注意,术语计算机、处理器和控制器可以相对于本文的任何实施例互换使用,这样的组件被认为是本发明的许多不同排列中的等同物。
[0087] 此外,对于具有处理器的那些实施例,处理器,例如以硬件和/或软件实现的(多个)处理电路、(多个)芯片和/或(多个)模块,并且优选地具有至少一个硬件组件,可以在任何设备中被用来执行方法600的一个或多个步骤。示例性处理器包括但不限于中央处理单元(CPU),专用集成电路(ASIC),现场可编程门阵列(FPGA)等,其组合或本领域已知的任何其他合适的计算设备。
[0088] 如图6所示,方法600的操作602包括前进到存储器的下一个块。关于本说明书,“存储器的下一个块”可以根据给定的方法而变化。例如,在启动方法600时,存储器的下一个块可以仅仅是存储器的第一个块。在其他方法中,存储器的下一个块可以是存储器的下一个逻辑块。此外,操作602可以以任何期望的方式在存储器的块之间进行,例如,顺序地、随机地、使用模式等。此外,操作602可以由检查所有NAND块的后台进程周期性地触发,例如每1周触发一次,或者可以在需要时触发,例如在块中的页面读取呈现高位错误计数或ECC失败的情况下触发。此外,存储器优选地包括NVRAM。例如,在一些方法中,存储器包括3-D TLC NAND闪存,而在其他方法中,存储器包括3-D QLC NAND闪存。
[0089] 判决604还包括确定是否应该重新校准存储器的给定块。在一些方法中,可以实施标识何时以及是否应该重新校准特定块的标准。例如,在经历了预定数量的P/E循环(例如,500个P/E循环)、经历了不期望的低性能度量(例如,表现出预定错误计数阈值的位错误的数量)、自上次重新校准以来已经过去了预定的时间量等之后,可以重新校准块。例如,如本领域技术人员在阅读本说明书后将会理解的,这允许所经历的计算开销的数量有所减少。
[0090] 响应于确定存储器的给定块由于某种原因不应被重新校准,方法600返回到操作602,由此在重复判决604之前前进到下一个块。然而,响应于确定应该重新校准存储器的给定块,方法600进行到操作606。在那里,操作606包括确定存储器的给定块的当前操作状态。
该操作状态可以基于各种类型的可用信息来确定。例如,块统计数据,包括P/E循环计数器值、读取干扰计数器值、保持定时器、打开/关闭块状态、块中已编程页面的数量等,可以用来确定该块的当前操作状态。还应当注意,该块在其中包括多于一种类型的页面(例如,上部页面、下部页面、额外页面、顶部页面),并且至少一个读取电压与每种页面类型相关联,例如,如本领域技术人员在阅读本说明书之后将会理解的。
[0091] 存储器的给定块可能正经历的当前操作状态的说明性列表包括但绝不限于保持状态、读取干扰状态、循环状态、打开和/或关闭状态(例如,是否块中的部分或全部页面已经被编程)等、和/或其任意组合。块可能经历的操作状态中的每一个可以被用来标识哪个读取电压将从单独重新校准中受益最大,以及哪些读取电压可以被分组在一起并且使用公共偏移值被重新校准。换句话说,块的操作状态可以给出关于VTH电平如何变化的洞察,或者可以预期如何变化的洞察,并且因此应该如何调整对应的读取电压以考虑那些VTH变化。因此,在重新校准期间,可以对更关键的读取电压给予附加的关注,以通过应用单独偏移重新校准来努力改善整体RBER,而可以分组在一起的读取电压通过公共偏移来重新校准,以努力减少元数据并提高性能。
[0092] 例如,可以确定经历读取干扰状态的块中最左边的读取电压将从单独重新校准中受益最多(例如,对其更关键)。这可以通过以下事实来解释:读取干扰应力主要影响沿着读取电压分布的最左边的VTH电平(例如,如图5所示),而中间和最右边的VTH电平可能经历中等或低干扰。因此,对应于最左边的VTH电平的读取电压优选地被独立地重新校准,而剩余读取电压中的一些作为分组被一起重新校准,例如通过应用最佳适合的公共读取电压偏移值被一起重新校准。根据另一示例,可以确定经历保持状态的块中的最右边的读取电压对于单独重新校准更为关键。这可以用以下事实来解释:在保持期间,最右边的VTH电平的负移位更明显,而中间和最左边的VTH电平可能经历中等或低的负移位。因此,对应于最右边的VTH电平的读取电压优选地被独立校准,而剩余读取电压中的至少一些作为分组被一起重新校准,例如通过应用最佳公共偏移值被一起重新校准。
[0093] 因此,混合校准方案优选地标识与给定块中的不同类型的页面对应的读取电压的第一子集和第二子集。读取电压优选地被分离,使得第一子集中的那些根据块的操作状态更关键,因此保证单独重新校准,而第二子集中的读取电压包括那些不太关键的读取电压(例如,至少与包括在第一子集中的读取电压相比),并且可以使用公共偏移来重新校准。包括在第二子集中的读取电压优选地进一步组织在一个或多个读取电压分组中。例如,第二子集中用于读取相同类型的页面(例如,下部页面、上部页面、额外页面、顶部页面等)的读取电压优选地被分组在一起以形成读取电压分组。因此,相同的读取电压偏移值可以被施加到被包括在相同的读取电压分组中的每个读取电压,例如,这将很快变得显而易见。
[0094] 一起重新校准两个或更多个读取电压通常产生公共读取电压偏移值,该值被施加到两个或更多个读取电压中的每一个。然而,取决于块的操作状态,这两个或更多读取电压对于读取误差可能不太关键,因此公共读取电压偏移值可能因此是这些读取电压中的每一个的期望读取电压偏移值的良好近似。因此,重新校准方案能够减少对于每个块的存储在存储器中的元数据的总量以及在重新校准期间执行的读取操作的总量,而不会使整体RBER更差。因此,通过将给定块与当前操作状态配对,操作606能够确定关于其中的VTH电平如何改变或至少预期改变的有价值的信息。给定该信息,当前操作状态提供关于哪个读取电压将从经历单独读取电压重新校准中受益最大、以及哪些读取电压可以被分组在一起并使用公共读取电压偏移值来重新校准的洞察。
[0095] 前进到操作608,块的当前操作状态被用于产生块的混合校准方案。换句话说,块的当前操作状态被用于标识和/或计算混合校准方案,混合校准方案可以应用于该块以重新校准其中包括的页面。如上所述,除了可以被分组在一起并由公共读取电压偏移值重新校准的、该块中的读取电压的第二子集之外,混合校准方案优选地标识该块中的读取电压的第一子集,该第一子集更关键并因此还将更大地受益于经历单独重新校准。因此,在第一子集中标识的读取电压可以被单独重新校准,以减少经历读取错误的机会,而在第二子集中标识的读取电压通过使用公共偏移被一起重新校准,以减少对于存储器的每个块的存储的元数据的量,并且还减少校准读取的数量。
[0096] 为了尝试减少整体校准元数据开销,可以为字线或字线分组中的页面存储的唯一读取电压偏移值的数量可以小于NAND芯片使用的读取电压的总数,即,QLC NAND闪存的15个读取电压。例如,如果“K”表示可以为字线或字线分组中的页面存储的唯一读取电压偏移值的数量,“N”表示读取电压的总数,那么K
[0097] 在一些方法中,关于哪些读取电压将被独立地重新校准以及哪些读取电压将被分组并由公共读取电压偏移值重新校准的判决可以是静态的,而在其他方法中,该判决是动态做出的。换句话说,在一些方法中,混合校准方案是预先确定的(例如,基于实验室测量),并存储在存储器中(例如,在查找表中)。因此,预定混合校准方案中的每一个可以与当前操作状态相关联。因此,为该块产生混合校准方案的过程可以简单地涉及将该块的当前操作状态与该块的多个预定混合校准方案中的对应一个相匹配。
[0098] 然而,在其他方法中,混合校准方案是基于可用的性能信息动态产生的。例如,在一些方法中,使用块的当前操作状态来产生块的混合校准方案包括使用与块的当前操作状态相关联的可用统计数据来计算块的混合校准方案。与可用于计算混合校准方案的块的当前操作状态相关联的统计数据的说明性列表包括但不限于,P/E计数器、读取干扰计数器、保持计时器、保持度量、循环水平、读取干扰系统计数器等、或可用的和/或对于本领域技术人员来说在阅读本说明书之后显而易见的任何其他类型的统计数据。
[0099] 给定选择的配置,算法,通常被称为读取电平移位算法(read-level shifting algorithm),可以被实现来计算读取电压偏移值。根据一些方法,读取电平移位算法可以是迭代算法,该算法通过朝减小或减少错误计数的增大或减小值的方向搜索可用空间并选择使错误计数最小的偏移值来找到期望的偏移值。根据其他方法,读取电平移位算法可以是搜索所有可用偏移值或其子集的扩展搜索算法。
[0100] 继续参考图6,方法600进行到操作610,其包括为第一子集中的读取电压中的每一个计算唯一读取电压偏移值。如上所述,基于608中产生的混合电压校准方案来标识读取电压的第一子集。此外,可以采用读取电平移位算法。如上所述,包括在第一子集中的读取电压是那些被标识为更容易产生读取错误的电压。此外,第一子集中的读取电压中的每一个对应于页面类型。此外,如前所述,减少校准元数据的一种方法可以是将具有相似RBER特性的页面(相同页面类型)分组在同一组中,并且对该组中的所有页面使用相同的一组读取电压偏移值。因此,对块中的所有页面或页面分组重复操作610,即,根据页面或页面分组的页面类型,为块中的每个页面或页面分组计算第一子集中的读取电压中的每一个的唯一读取电压偏移值。
[0101] 此外,操作612包括为第二子集中的读取电压的每个分组计算公共读取电压偏移值。如上所述,在第二子集中标识的读取电压包括被标识为不太容易产生读取错误的那些读取电压。此外,在给定读取电压分组中组织的读取电压中的每一个对应于相同的页面类型。因此,在第二子集中标识的并且被包括在相同读取电压分组中的读取电压(例如,对应于相同页面类型的读取电压)被一起重新校准,以减少为存储器的每个块存储的元数据的量。此外,可以采用读取电平移位算法。
[0102] 对块中的所有页面或页面分组重复操作612,即,根据页面或页面分组的页面类型,为块中的每个页面或页面分组计算第二子集中的读取电压分组中的每一个的公共读取电压偏移值。还应当注意,可以使用本领域技术人员在阅读本说明书之后显而易见的任何过程来执行为给定读取电压计算唯一读取电压偏移值的过程。
[0103] 如前所述,包含在相同分组中的读取电压优选对应于相同类型的页面。换句话说,给定读取电压分组中的所有读取电压可以对应于相同类型的页面,例如,上部页面类型。例如,包括在第一读取电压分组中的读取电压中的每一个对应于下部页面,而包括在第二读取电压分组中的读取电压中的每一个对应于上部页面,包括在第三读取电压分组中的读取电压中的每一个对应于额外页面,并且包括在第四读取电压分组中的读取电压中的每一个对应于顶部页面。因此,为第二子集中的每个读取电压分组计算公共读取电压偏移值可以包括为读取电压中的每一个计算读取电压偏移值,并为给定读取电压分组确定平均值、中值、加权平均值等,或者可以涉及搜索多个读取电压偏移值,并确定当作为公共偏移应用于同一电压分组中的所有读取电压时哪个偏移值导致最小数量的错误。
[0104] 如本文所述,旨在调整读取电压的读取电平移位算法是基于迭代过程,该迭代过程检查多个候选偏移并选择使读取错误数量最小化的偏移。候选偏移可以是固定的(例如,预定的),基于不同的信息(例如,当前和/或下一个正或负偏移)、基于诸如线搜索等算法来动态计算的。因此,对于任何读取电压或读取电压分组,读取电平移位算法将使用在先前校准回合中为特定块计算和存储的最新值作为起始偏移值。
[0105] 例如,当采用混合校准方案时,电平移位算法的初始读取电压偏移值优选地被适当配置。例如,假设为块中的给定页面或页面分组定义了新的电压分组,其中电压中的一些是该分组组的先前成员,而一些先前独立校准的电压是该分组的新成员。这里,新的分组包括基于先前校准回合具有不同偏移的电压。因此,新的公共读取电压偏移值优选地被确定为新电压分组的公共当前偏移。
[0106] 参见图7,根据一个实施例示出了表格700,表格700呈现了可以应用于读取电压的每个分组的示例性规则,该实施例绝不是为了限制本发明。作为选项,表700中定义的本规则可以结合本文列出的任何其他实施例的特征来实现,诸如参考其他附图(诸如图6)描述的那些特征。然而,表700中的这种规则和本文呈现的其他规则可以用于各种应用和/或排列中,这些应用和/或排列可以在本文列出的说明性实施例中具体描述或不具体描述。此外,本文呈现的表700中的规则可以在任何期望的环境中使用。
[0107] 如图所示,新配置的每个读取电压Vn(n=1:15)从先前配置继承读取电压偏移值。因此,如果读取电压先前被单独校准,则它继承先前唯一读取电压偏移值,而如果读取电压先前被包括在读取电压分组中,则它继承该分组的先前公共读取电压偏移值。根据新配置,该继承的读取电压偏移值用于计算电平移位算法的新的起始读取电压偏移值。表格700进一步标识如果给定读取电压先前被单独校准并且也根据新配置被单独校准,则新的读取电压偏移值保持与先前的读取电压偏移值相同。然而,如果给定读取电压先前被单独校准并且在新配置中被包括在读取电压分组中,则计算和应用在新配置中形成的相同分组中的读取电压的读取电压偏移值的平均值。
[0108] 此外,如果给定读取电压先前被包括在读取电压分组中,但现在在新配置中被单独校准,则维护先前配置的相同分组中的电压的先前公共读取电压偏移值。然而,如果给定读取电压先前被包括在读取电压分组中,并且现在被包括在新配置中的新的读取电压分组中,则计算并应用新页面分组中的电压的读取电压偏移值的平均值。
[0109] 返回参考图6,操作614包括在给定块的元数据存储区域中保存(例如,存储)每个唯一读取电压偏移值和每个公共读取电压偏移值。此外,操作616包括将在操作608中产生的混合校准方案保存(例如,存储)在给定块的元数据存储区域中。混合校准方案的保存配置可以是来自混合校准方案的列表的标识符,或者编码与哪些读取电压被独立校准以及哪些正在形成电压分组并以公共偏移校准有关的信息的任何标识符。
[0110] 当存储器控制器需要访问给定块中的任何页面时,使用在操作614和616期间保存在元数据存储区域中的信息。例如,控制器可能需要访问可能进一步属于给定块中的额外页面分组的额外页面。在访问给定的额外页面之前,存储器控制器根据最新(latest)的校准回合,从给定块的元数据存储区域检索对应于给定的额外页面分组的一组读取电压偏移值。此外,控制器从元数据存储区检索给定块的混合配置方案。基于混合配置方案和该组读取电压偏移值,控制器发送相应的命令来改变用于读取NAND闪存芯片中的额外页面类型的页面的读取电压值的设置。读取电压值的新的设置对应于根据给定块的当前操作状态的期望值,从而最大化控制器以低RBER执行读取访问的概率。在发送上述命令之后,控制器发送相应的命令来读取给定的额外页面。
[0111] 因此,本文所包含的各种实施例能够实现为存储器(例如,NAND闪存)的块的读取电压选择混合校准方案的有效过程。这些实施例中的一些基于混合方案为每个单元存储多于一个位,该混合方案标识多个读取电压中的哪个将通过接收单个单独偏移来校准,以及哪些电压将被分组在一起并由单个公共偏移来校准。在优选方法中,单个偏移和公共偏移之间的这种区别基于要被校准的块的状态,例如保持状态、读取干扰状态、循环状态等。此外,分组在一起成为一个或多个电压分组的电压对应于相同类型的页面,即,下部页面、上部页面、额外页面、顶部页面等。
[0112] 现在参考图8,表格800中组织了多个不同的预定混合校准方案的示例。因此,表格800可以结合本文列出的任何其他实施例的特征来实现,诸如参考其他附图(诸如图6)描述的那些特征。例如,表格800中的预定混合校准方案中的每一个可以对应于特定的当前块操作状态,并根据需要来实现。
[0113] 然而,这种表格800和本文呈现的其他表格可用于各种应用和/或排列中,这些应用和/或排列可在本文列出的说明性实施例中具体描述或不具体描述。此外,本文呈现的表格800可以用在任何期望的环境中。因此,图8(和其他附图)可以被认为包括任何可能的排列。
[0114] 如图所示,表格800包括三个不同的预定混合校准方案802、804、806,这些方案中的每一个对应于不同的块操作状态。表格800是指具有N=15个读取电压(即,V1,…,V15)的QLC NAND闪存。不同的预定混合校准方案802、804、806中的每一个还涉及在给定块中的每个字线或字线分组的元数据中存储K=10(K
[0115] 这里,第一预定混合校准方案802对应于通用块操作状态,因为它可以应用于通常涉及循环、保持和读取干扰状态的环境。预定混合校准方案中的另一个804对应于读取干扰块操作状态,因为它可以应用于当前正经历更高应力的读取干扰状态的块。此外,预定混合校准方案中的另一个806对应于保持块操作状态,因为它可以应用于当前正经历更长持续时间的保持状态的块。表格800中概述的预定混合校准方案可以存储在存储器中(例如,在查找表格中),并且根据本文描述的任何方法基于块的当前操作状态应用于块。
[0116] 还应当注意,本文包括的任何方法中包括的任何特定配置都不是限制性的。例如,包括在本文包括的任何方法中的包括在存储器的给定块中的页面的数量和/或类型、读取电压的数量和/或值、阈值电压电平的数量和/或值等等绝不是限制性的,而是仅作为示例给出的。
[0117] 在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0118] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0119] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如互联网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0120] 用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用互联网服务提供商来通过互联网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
[0121] 这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0122] 这些计算机可读程序指令可以提供给计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0123] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0124] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以作为一个步骤来实现,并行、基本并行地,以部分或全部时间重叠的方式执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0125] 此外,根据各种实施例的系统可以包括处理器和与处理器集成和/或可由处理器执行的逻辑,该逻辑被配置为执行本文所述的过程步骤中的一个或多个。处理器可以是本文描述的任何配置,诸如离散处理器或包括许多组件的处理电路,诸如处理硬件、存储器、I/O接口等。与处理器集成,意味着处理器具有作为硬件逻辑嵌入其中的逻辑,诸如专用集成电路(ASIC)、现场可编程门阵列FPGA等。可由处理器执行,意味着逻辑是硬件逻辑;软件逻辑,诸如固件、操作系统的一部分、应用程序的一部分;等等,或硬件和软件逻辑的某种组合,其可由处理器访问并被配置为使得处理器在由处理器执行时执行某些功能。如本领域中已知的,软件逻辑可以存储在任何存储器类型的本地和/或远程存储器上。可以使用本领域已知的任何处理器,诸如软件处理器模块和/或硬件处理器,诸如ASIC,FPGA,中央处理器(CPU),集成电路(IC),图形处理器(GPU)等。
[0126] 图9示出了根据一个实施例的网络架构900。如图9所示,提供了多个远程网络902,包括第一远程网络904和第二远程网络906。网关901可以耦合在远程网络902和邻近网络908之间。在本网络架构900的上下文中,网络904、906可以各自采取任何形式,包括但不限于LAN、诸如互联网的WAN、公共交换电话网(public switched telephone network,PSTN)、内部电话网等。
[0127] 在使用中,网关901充当从远程网络902到邻近网络908的入口点。这样,网关901可以充当路由器和交换机,路由器能够引导到达网关901的给定数据分组,交换机为给定分组提供进出网关901的实际路径。
[0128] 还包括至少一个数据服务器914,其耦合到邻近网络908,并且其可经由网关901从远程网络902访问。应当注意,(多个)数据服务器914可以包括任何类型的计算设备/群件。多个用户设备916耦合到每个数据服务器914。这种用户设备916可以包括台式计算机、膝上型计算机、手持计算机、打印机和/或任何其他类型的包含逻辑的设备。应当注意,在一些实施例中,用户设备911也可以直接耦合到任何网络。
[0129] 外围设备920或一系列外围设备920,例如传真机、打印机、扫描仪、硬盘驱动器、网络和/或本地数据存储单元或系统等,可以耦合到网络904、906、908中的一个或多个。应当注意,数据库和/或附加组件可以与耦合到网络904、906、908的任何类型的网络元件一起使用或被集成到其中。在本说明书的上下文中,网络元件可以指网络的任何组件。
[0130] 根据一些实施例,本文描述的方法和系统可以用虚拟系统和/或仿真一个或多个其他系统的系统来实现,和/或在虚拟系统和/或仿真一个或多个其他系统的系统上实现,诸如虚拟托管MICROSOFT WINDOWS环境的UNIX系统等。在一些实施例中,这种虚拟化和/或仿真可以通过使用VMWARE软件来增强。
[0131] 在其他实施例中,一个或多个网络904、906、908可以代表通常被称为“云”的系统集群。在云计算中,共享资源(诸如处理能力、外围设备、软件、数据、服务器等)以按需关系提供给云中的任何系统,从而允许跨许多计算系统访问和分发服务。云计算通常涉及在云中运行的系统之间的互联网连接,但是也可以使用本领域已知的连接系统的其他技术。
[0132] 图10示出了根据一个实施例的与图9的用户设备916和/或服务器914相关联的代表性硬件环境。图10示出了根据一个实施例的处理器系统1000的典型硬件配置,该处理器系统1000具有中央处理单元1010,诸如微处理器,以及经由系统总线1012互连的多个其他单元。在一些实施例中,中央处理单元1010可以包括上面参考图2的一个或多个处理器210描述的任何方法。
[0133] 图10所示的处理器系统1000包括随机存取存储器(RAM)1014、只读存储器(ROM)1016和I/O适配器1018。根据不以任何方式限制本发明的一些实施例,I/O适配器1018可以包括上面参考图2的I/O适配器218描述的任何方法。仍然参考图10的处理器系统1000,前述组件1014、1016、1018可以用于将诸如存储子系统1020的外围设备连接到总线1012。在一些实施例中,存储子系统1020可以包括与图2的数据存储系统220相似和/或相同的配置。根据不以任何方式限制本发明的示例,除了图2所示的RAID控制器之外,存储子系统1020可以包括非易失性数据存储器卡,例如,具有NVRAM存储器卡、RAM、ROM和/或一些其他已知类型的非易失性存储器。
[0134] 继续参考图10,用于将键盘1024、鼠标1026、扬声器1028、麦克风1032和/或诸如触摸屏、数码相机(未示出)等其他用户接口设备连接到总线1012的用户接口适配器1022。
[0135] 处理器系统1000还包括将处理器系统1000连接到通信网络1035(例如,数据处理网络)的通信适配器1034,以及将总线1012连接到显示设备1038的显示适配器1036。
[0136] 处理器系统1000可以具有驻留在其上的操作系统,诸如MICROSOFT WINDOWS操作系统(Operating System,OS)、MAC OS、UNIX OS等。应当理解,优选实施例也可以在除了上述平台和操作系统之外的平台和操作系统上实现。优选实施例可以使用JAVA、XML、C和/或C++语言或其他编程语言以及面向对象的编程方法来编写。可以使用面向对象编程(Object oriented programming,OOP),它已经越来越多地被用于开发复杂的应用。
[0137] 此外,图11示出了根据一个实施例的存储系统1100,该存储系统1100实现高级(例如,SSD)存储层与低级(例如,磁带)存储层的组合。注意,根据各种实施例,图11中所示的元件中的一些可以实现为硬件和/或软件。存储系统1100可以包括存储系统管理器1112,用于与至少一个更高存储层1102和至少一个更低存储层1106上的多个介质通信。然而,在其他方法中,存储系统管理器1112可以与至少一个更高存储层1102上的多个介质通信,但是不与更低存储层通信。(多个)更高存储层1102优选地可以包括一个或多个随机存取和/或直接存取介质1104,诸如硬盘、非易失性存储器(NVM)、MVRAM、SSD中的固态存储器、闪存、SSD阵列、闪存阵列等,和/或本文提到的或本领域已知的其他存储器。根据说明性示例,图3-图4示出了SSD系统的示例性架构,根据期望的实施例,SSD系统可以用作更高的存储层1102。
[0138] 仍然参考图11,(多个)更低存储层1106优选地包括一个或多个更低性能的存储介质1108,包括顺序访问介质,诸如磁带驱动器和/或光学介质中的磁带、更慢访问的HDD、更慢访问的SSD等,和/或本文提到的或本领域已知的其他介质。一个或多个附加存储层1116可以包括系统1100的设计者所期望的存储存储器介质的任何组合。因此,在一些方法中,一个或多个附加存储层1116可以包括与图1-图2中所示的相似或相同的SSD系统架构。此外,任何更高存储层1102和/或更低存储层1106可以包括存储设备和/或存储介质的任何组合。
[0139] 存储系统管理器1112可以通过网络1110(例如,如图11所示的存储区域网络(storage area network,SAN))或一些其他合适的网络类型,与(多个)更高存储层1102和(多个)更低存储层1106上的存储介质1104、1108通信。存储系统管理器1112还可以通过主机接口1114与一个或多个主机系统(未示出)通信,主机接口1114可以是也可以不是存储系统管理器1112的一部分。存储系统管理器1112和/或存储系统1100的任何其他组件可以在硬件和/或软件中实现,并且可以利用处理器(未示出)来执行本领域已知类型的命令,诸如中央处理单元(CPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等。当然,可以使用存储系统的任何布置,这对于阅读本说明书的本领域技术人员来说是显而易见的。
[0140] 在更多实施例中,存储系统1100可以包括任意数量的数据存储层,并且可以在每个存储层内包括相同或不同的存储存储器介质。例如,每个数据存储层可以包括相同类型的存储存储器介质,诸如HDD、SSD、顺序存取介质(磁带驱动器中的磁带、光盘驱动器中的光盘等)、直接存取介质(CD-ROM、DVD-ROM等)或介质存储类型的任何组合。在一个这样的配置中,更高存储层1102可以包括用于在更高性能存储环境中存储数据的大部分SSD存储介质,而包括更低存储层1106和附加存储层1116的剩余存储层可以包括用于在更低性能存储环境中存储数据的SSD、HDD、磁带驱动器等的任意组合。这样,更频繁访问的数据、具有更高优先级的数据、需要被更快访问的数据等等可以存储到更高存储层1102,而不具有这些属性之一的数据可以存储到包括更低存储层1106的附加存储层1116。当然,本领域技术人员在阅读了本说明书后,可以根据本文给出的实施例,设计存储介质类型的许多其他组合来实现不同的存储方案。
[0141] 根据一些实施例,存储系统(诸如1100)可以包括被配置为接收打开数据集的请求的逻辑、被配置为确定所请求的数据集是否以多个相关联的部分存储到分层数据存储系统1100的更低存储层1106的逻辑、被配置为将所请求的数据集的每个相关联的部分移动到分层数据存储系统1100的更高存储层1102的逻辑,以及被配置为从相关联的部分在分层数据存储系统1100的更高存储层1102上组装所请求的数据集的逻辑。
[0142] 当然,根据各种实施例,该逻辑可以被实现为任何设备和/或系统上的方法或者计算机程序产品。
[0143] 将清楚的是,根据以上呈现的描述,前述系统和/或方法的各种特征可以以任何方式进行组合,从而创建多个组合。
[0144] 还应当理解,本发明的实施例可以以代表客户部署的服务的形式提供,以按需提供服务。
[0145] 以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。