首页> 中国专利> 使用编程时间接近度管理存储器装置中数据单元的读取电压电平

使用编程时间接近度管理存储器装置中数据单元的读取电压电平

摘要

本公开涉及使用编程时间接近度来管理存储器装置中的数据单元的读取电压电平。与存储器装置可操作地耦合的处理装置被配置为接收识别存储在存储器装置的数据单元中的数据的读取请求。所述处理装置进一步识别所述数据单元所相关联的数据单元组,所述数据单元组是多个数据单元组中的一个,并且所述数据单元组中的每个数据单元在与所述数据单元组相关联的时间段内被编程。所述处理装置还确定所述数据单元组的读取电压电平,所述多个数据单元组中的每组具有单独的读取电压电平。处理装置进一步使用所述数据单元组的读取电压电平对存储器装置的数据单元执行读取操作。

著录项

  • 公开/公告号CN113010101A

    专利类型发明专利

  • 公开/公告日2021-06-22

    原文格式PDF

  • 申请/专利权人 美光科技公司;

    申请/专利号CN202011519897.0

  • 发明设计人 罗婷;C·S·杨;

    申请日2020-12-21

  • 分类号G06F3/06(20060101);

  • 代理机构11287 北京律盟知识产权代理有限责任公司;

  • 代理人王龙

  • 地址 美国爱达荷州

  • 入库时间 2023-06-19 11:32:36

说明书

技术领域

本公开总体上涉及存储器子系统,并且更具体地,涉及使用数据单元的编程时间接近度来管理存储器装置中的数据单元的读取电压电平。

背景技术

存储器子系统可以包含一或多个存储数据的存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器装置。通常,主机系统可以利用存储器子系统在存储器装置处存储数据并从存储器装置中检索数据。

发明内容

根据本公开的一些实施例描述一种系统。该系统包括:存储器装置;以及处理装置,该处理装置与该存储器装置可操作地耦合,以执行包括以下的操作:接收识别存储在该存储器装置的数据单元中的数据的读取请求;识别该数据单元所相关联的数据单元组,其中该数据单元组是多个数据单元组中的一个,并且其中该数据单元组中的每个数据单元在与该数据单元组相关联的时间段内被编程;确定该数据单元组的读取电压电平,其中该多个数据单元组中的每组具有单独的读取电压电平;以及使用该数据单元组的该读取电压电平对该存储器装置的该数据单元执行读取操作。

根据本公开的一些实施例描述一种方法。该方法包括:接收识别存储在数据单元中的数据的读取请求;识别该数据单元所相关联的数据单元组,其中该数据单元组是多个数据单元组中的一个,并且其中该数据单元组中的每个数据单元在与该数据单元组相关联的时间段内被编程;确定是否为该数据单元组分配读取电压电平;响应于确定没有为该一组单元分配读取电压电平:使用默认读取电压电平,执行对存储在该数据单元中的数据的第一读取操作;以及响应于确定该第一读取操作失败:执行读取错误处理操作以确定第二读取电压电平,以及为该数据单元组分配该第二读取电压电平;以及使用该第二读取电压电平执行对存储在该数据单元中的数据的第二读取操作。

根据本公开的一些实施例描述一种非暂态计算机可读存储介质。该非暂态计算机可读存储介质包括指令,当该指令由处理装置执行时促使该处理装置:接收识别存储在该存储器装置的数据单元中的数据的读取请求;识别该数据单元所相关联的数据单元组,其中该数据单元组是多个数据单元组中的一个,并且其中该数据单元组中的每个数据单元在与该数据单元组相关联的时间段内被编程;确定该数据单元组的读取电压电平,其中该多个数据单元组中的每组具有单独的读取电压电平;以及使用该数据单元组的该读取电压电平对该存储器装置的该数据单元执行读取操作。

附图说明

通过下面给出的详细描述和通过本公开的各种实施例的附图,将更充分地理解本公开。

图1示出了根据本公开的一些实施例的实例性计算系统,其用于支持存储器子系统中的数据单元的多个读取电压电平。

图2是示出根据本公开的一些实施例的将存储器装置中的数据单元分配给数据单元组的框图。

图3示出了根据本公开的一些实施例的实例性时间线,其用于在支持读取电压电平管理的过程中创建数据单元组并向数据单元组分配数据单元。

图4是根据本公开的一些实施例的管理用于存储器子系统中的数据单元组的多个读取电压电平值的实例性方法的流程图。

图5是根据本公开的一些实施例的确定存储器子系统中的一个数据单元组的读取电压电平的实例性方法的流程图。

图6是根据本公开的一些实施例的使用来自存储器子系统中的数据单元组的不同读取电压电平值来执行读取操作的实例性方法的流程图。

图7是可以在其中操作本公开的实施例的实例性计算机系统的框图。

具体实施方式

本公开的各方面涉及在执行对存储器子系统的存储器装置中存储的数据的读取操作时管理单独的读取电压电平。存储器子系统可以是存储装置、存储器模块,或者是存储装置和存储器模块的混合体。下面结合图1描述存储装置和存储器模块的实例。通常,主机系统可以利用包含一或多个存储数据的存储器装置的存储器子系统。主机系统可以提供要存储在存储器子系统中的数据,并且可以请求从存储器子系统中检索数据。

存储器子系统可以包含多个存储器装置,这些存储器装置可以存储来自主机系统的数据。存储器装置可以是非易失性存储器装置。非易失性存储器装置是一或多个管芯的封装。非易失性存储器装置的实例包括与非(NAND)型存储器装置。下面结合图1描述非易失性存储器装置的其他实例。封装中的管芯可以分配给一或多个通道,以用于与存储器子系统控制器进行通信。每个管芯可以由一或多个平面组成。平面可以分组为逻辑单元(LUN)。对于一些类型的非易失性存储器装置(例如,NAND存储器装置),每个平面由一组物理区块组成,其是用于存储数据的存储器单元的分组。单元是存储信息的电子电路。

当将数据写入存储器装置的存储器单元和/或从其中擦除时,该存储器单元可能会受到一定程度的损坏。随着对存储器单元执行的写入操作和/或擦除操作的数量增加,存储在存储器单元中的数据包含错误的可能性增加,并且存储器单元越来越受到损坏。越来越多的读取和写入操作可能导致存储在存储器单元中的数据的错误率更高。这可能增加错误恢复操作的使用,其包含但不限于读取错误处理模块(REH),该模块可以恢复数据以及确定正在读取的存储器单元的通过读取电压电平。通过读取电压电平可以指的是当在读取操作中使用时产生在可接受范围内的错误指标从而导致读取操作成功的读取电压电平。另外,在明显不同的时间被编程的存储器单元可能需要不同的读取电压电平以成功读取存储在存储器单元中的数据。因此,当存储器子系统处理来自各种存储器单元的读取操作时,存储器子系统可以更频繁地触发REH模块,以便获得正被读取的存储器单元的通过读取电压电平。增加使用错误恢复操作可能导致常规存储器子系统的性能下降。另外,随着错误率的不断增大,它甚至可能超过存储器子系统的错误恢复能力,从而导致无法挽回的数据丢失。此外,随着存储器子系统的更多资源用于执行错误恢复操作,更少的资源可用于执行其他读取操作或写入操作。

对于某些存储器类型(即,对于采用某些类型的存储介质的存储器子系统),错误率可能随时间变化。特别地,一些非易失性存储器具有作为时间函数移动的阈值电压(Vt)分布。在给定的读取电平下(即,作为读取操作的一部分施加到存储器单元的电压),如果Vt分布移动,则某些可靠性统计也会受到影响。可靠性统计的一个实例是原始误码率(RBER)。RBER可以定义为错误位数与存储器子系统的数据单元中存储的所有数据位数之比,其中数据单元可以是整个存储器子系统、存储器装置的管芯、代码字集合、存储器装置页面集合、存储器装置块集合或存储器子系统的任何其他有意义的部分。对于某个时刻的任何Vt分布,可以存在最小化预期的RBER的最佳读取电压电平(或读取电平范围)。特别地,Vt分布和RBER可以是自对数据单元进行编程以来的时间的函数(即,自将数据写入数据单元以来经过的时间段)。由于RBER的时变特性以及存储器中的其他噪声机制,单个读取电压电平可能不足以实现满足某些系统可靠性目标的错误率。

因此,某些存储器子系统可能需要多个预编程的读取电压电平,每个对应于在时间上彼此接近进行编程的一个数据单元组,以便最小化错误恢复操作的执行。这在数据单元的电压分布频繁变化的存储器装置(例如,取代栅极NAND存储器装置)中是特别需要的,通过读取电压电平可以基于数据单元被编程的时间而显著地变化。例如,第一读取电压电平可用于读取具有自编程以来第一时间范围的数据,而第二读取电压电平可用于读取具有自编程以来第二时间范围的数据。

本公开的各方面通过将单独的读取电压电平分配给在预定时间段内被编程的每个数据单元组来解决上述和其他缺陷。在这种情况下,存储器子系统可以具有多个数据单元组,并且每个数据单元组可以具有专用的读取电压电平,该专用的读取电压电平可以用于对存储在各个组的数据单元处的数据执行读取操作。在实施方式中,在时间上彼此接近进行编程的数据单元可以被包含在或分配给同一个数据单元组,并且因此相同的读取电压电平可以用于对存储在数据单元处的数据执行读取操作。相反,如果两个数据单元在相距较远的两个不同时间进行了编程,则可以将这两个数据单元分配给两个不同的数据单元组。因此,与每个相应的数据单元组相关联的不同的读取电压电平可以用于对存储在每个数据单元处的数据执行读取操作。

在某些实施方式中,存储器子系统可以在数据单元编程时间创建数据单元组,并且可以将一个数据单元组作为当前数据单元组保持预定时间段(例如,两个小时)。可以将在预定时间段内编程的任何数据单元分配给当前数据单元组。当经过预定时间段时,存储器子系统可以创建一个新的数据单元组,并且可以开始将在第二时间段内编程的数据单元分配给该新的数据单元组,依此类推。在某些实施方式中,当擦除存储在数据单元处的数据时(例如,为了实现对该数据单元的重写),可以将该数据单元从该数据单元被编程时将该数据单元分配给的数据单元组中移除。

当创建一个数据单元组时,可以将其与一或多个数据单元关联。当接收到请求存储在该数据单元组中的一个数据单元处的数据读取操作时,可以为该数据单元组分配读取电压电平。在这种情况下,当接收到读取操作时,存储器子系统可以检查该数据单元组是否具有相关联的读取电压电平。如果该数据单元组还不具有相关联的读取电压电平,则存储器子系统可以确定该数据单元组的读取电压电平,并且可以将所确定的读取电压电平分配给该数据单元组。与该数据单元组相关联的针对数据单元的后续读取操作可以使用分配给该组的读取电压电平来执行对存储在该数据单元组内的数据单元的数据的读取操作。

在一实施方式中,分配给一个数据单元组的读取电压电平可能例如由于数据单元的存储器单元的电压分布的偏移而导致读取操作失败。当针对数据单元发生电压分布的此类偏移时,与该数据单元相关联的读取电压电平可以被更新以反映该数据单元组的通过读取电压电平。在实施方式中,存储器子系统可以使用错误处理模块以便获得新的读取电压电平值。然后可以将新的读取电压电平值分配给该数据单元组,以替换先前的读取电压电平。然后,在执行读取操作时,与该数据单元组相关联的数据单元的后续读取操作可以使用新的读取电压电平。

本文所述的支持用于存储器子系统中多个数据单元组的多个读取电压电平的技术使得能够改善存储器子系统的整体性能。在存储器单元的电压分布频繁变化的存储器装置中(例如,取代栅极NAND存储器装置),通过读取电压电平可以基于数据单元被编程的时间而显著地变化。因此,通过使在时间上彼此接近(例如,在预定时间段内)进行编程的每个数据单元组具有单独的读取电压电平,数据单元的读取操作可以重复使用通过读取电压电平,而无需必须触发耗时的读取错误处理模块以经常校正读取电压电平。由于存储器子系统不再针对整个存储器装置使用单个读取电压电平值,因此随着在存储器子系统内创建更多个数据单元组,可以显著减少执行昂贵的读取错误处理模块的需要。因此,本文所述的为每个数据单元组支持单独的读取电压电平的技术减少了频繁执行读取错误处理模块的开销,这改善了存储器子系统的整体性能。

图1示出了根据本公开的一些实施例的包含存储器子系统110的示例性计算系统100。存储器子系统110可以包含诸如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)之类的介质,或此类存储器装置的组合。

存储器子系统110可以是存储装置、存储器模块或存储装置和存储器模块的混合体。存储装置的实例包含固态驱动器(SSD)、闪存驱动器、通用串行总线(USB)闪存驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用闪存存储(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小尺寸DIMM(SO-DIMM)和各种类型的非易失性双列直插式存储器模块(NVDIMM)。

计算系统100可以是计算装置,诸如台式计算机、膝上型计算机、网络服务器、移动装置、载具(例如,飞机、无人机、火车、汽车或其他交通工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,包含在载具、工业装备或联网的商业装置中的计算机)或包含存储器和处理装置的此类计算装置。

计算系统100可以包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1示出了耦合到一个存储器子系统110的主机系统120的一个实例。如本文所使用的,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含诸如电连接、光连接、磁连接等之类的连接。

主机系统120可以包含处理器芯片组和由处理器芯片组执行的软件堆栈。处理器芯片组可以包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器)和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120例如使用存储器子系统110来将数据写入存储器子系统110并从存储器子系统110读取数据。

主机系统120可以经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连快速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接的SCSI(SAS)、双倍数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双倍数据速率(DDR)的DIMM插槽接口)等。物理主机接口可用于在主机系统120和存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可以进一步利用NVM快速(NVMe)接口来访问组件(存储器装置130)。物理主机接口可以提供用于在存储器子系统110和主机系统120之间传递控制、地址、数据和其他信号的接口。图1示出了存储器子系统110作为实例。通常,主机系统120可以经由同一通信连接、多个单独的通信连接和/或通信连接的组合来访问多个存储器子系统。

存储器装置130、140可以包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(RAM),诸如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。

非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)型闪存存储器和就位写入存储器,诸如三维交叉点(“3D cross-point”)存储器。3D交叉点存储器装置是一种非易失性存储器单元的交叉点阵列,其可以结合可堆叠的交叉网格数据访问阵列,基于体电阻的变化执行位存储。另外,与许多基于闪存的存储器相比,交叉点非易失性存储器可以执行就地写入操作,其中可以对非易失性存储器单元进行编程而无需事先擦除非易失性存储器单元。NAND型闪存存储器包含例如二维NAND(2D NAND)和三维NAND(3DNAND)。

每个存储器装置130可以包含一或多个存储器单元阵列。一种类型的存储器单元,例如单级单元(SLC)可以在每单元存储一位。其他类型的存储器单元,诸如多级单元(MLC)、三级单元(TLC)和四级单元(QLC),可以在每单元存储多个位。在一些实施例中,每个存储器装置130可以包含一或多个存储器单元阵列,诸如SLC、MLC、TLC、QLC或它们的任何组合。在一些实施例中,特定的存储器装置可以包含存储器单元的SLC部分、MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可以被分组为页面,这些页面可以指代用于存储数据的存储器装置的逻辑单元。利用一些类型的存储器(例如,NAND),可以将页面分组以形成块。

尽管描述了诸如非易失性存储器单元的3D交叉点阵列和NAND型闪存存储器(例如,2D NAND,3D NAND)之类的非易失性存储器组件,但是存储器装置130可以基于任何其他类型的非易失性存储器单元,诸如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其他基于硫族化物的存储器、铁电随机存取存储器(FeRAM)、铁电晶体管随机存取存储器(FeTRAM)、自旋转移转矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻式随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)闪存存储器以及电可擦可编程只读存储器(EEPROM)。

存储器子系统控制器115(或为简单起见,控制器115)可以与存储器装置130通信以执行诸如在存储器装置130处读取数据、写入数据或擦除数据的操作以及其他此类操作。存储器子系统控制器115可以包含诸如一或多个集成电路和/或分立组件的硬件、缓冲存储器或其组合。硬件可以包含具有专用(即,硬编码)逻辑的数字电路系统,以执行本文所述的操作。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其他合适的处理器。

存储器子系统控制器115可以包含被配置为执行存储在本地存储器119中的指令的处理器117(例如,处理装置)。在所示的实例中,存储器子系统控制器115的本地存储器119包含嵌入式存储器,该嵌入式存储器被配置为存储用于执行各种过程、操作、逻辑流以及例程的指令,它们控制存储器子系统110的操作,包含处理存储器子系统110和主机系统120之间的通信。

在一些实施例中,本地存储器119可以包含存储存储器指针、所获取的数据等的存储器寄存器。本地存储器119还可以包含用于存储微代码的只读存储器(ROM)。尽管图1中的实例性存储器子系统110被示出为包含存储器子系统控制器115,但是在本公开的另一实施例中,存储器子系统110并不包含存储器子系统控制器115,并且可以替代地依赖于外部控制(例如,由外部主机,或者由与存储器子系统分开的处理器或控制器提供的控制)。

通常,存储器子系统控制器115可以从主机系统120接收命令或操作,并且可以将命令或操作转换为指令或适当的命令以实现对存储器装置130的期望访问。存储器子系统控制器115可以负责其他操作,诸如损耗均衡操作、垃圾收集操作、错误检测和纠错码(ECC)操作、加密操作、缓存操作以及逻辑地址(例如,逻辑块地址(LBA),命名空间)和与存储器装置130相关联的物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器115可以进一步包含主机接口电路系统,以经由物理主机接口与主机系统120进行通信。主机接口电路系统可以将从主机系统接收到的命令转换为命令指令以访问存储器装置130,以及将与存储器装置130相关联的响应转换为用于主机系统120的信息。

存储器子系统110还可以包含未示出的附加电路系统或组件。在一些实施例中,存储器子系统110可以包含可以从存储器子系统控制器115接收地址并对地址进行解码以访问存储器装置130的高速缓存或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器)。

在一些实施例中,存储器装置130包含本地媒体控制器135,其与存储器子系统控制器115结合操作以在存储器装置130的一或多个存储器单元上执行操作。外部控制器(例如,存储器子系统控制器115)可以从外部管理存储器装置130(例如,在存储器装置130上执行媒体管理操作)。在一些实施例中,存储器装置130是被管理的存储器装置,其是与本地控制器(例如,本地控制器135)组合的原始存储器装置,用于同一存储器装置封装内的媒体管理。被管理的存储器装置的实例是被管理的NAND(MNAND)装置。

存储器子系统110包含读取电压电平组件113,该读取电压电平组件可用于基于数据单元的编程时间的接近度来支持用于单独的数据单元组的单独的读取电压电平。在实施方式中,读取电压电平组件113可以创建存储器装置130-140的多个数据单元组。每个数据单元组可以具有相关联的读取电压电平,该读取电压电平可以用于执行对存储在各个组的数据单元处的数据的读取操作。在实施方式中,在时间上彼此接近进行编程的数据单元可以被包含在或分配给同一个数据单元组,并且因此相同的读取电压电平可以用于对存储在数据单元处的数据执行读取操作。相反,如果两个数据单元在相距较远的两个不同时间进行了编程(例如,在阈值时间的相对侧的时间进行编程),则可以将这两个数据单元分配给两个不同的数据单元组。因此,与每个相应的数据单元组相关联的不同的读取电压电平可以用于对存储在每个数据单元处的数据执行读取操作。在实施方式中,存储器子系统可以将与每个数据单元组相关联的读取电压电平存储在存储器子系统110的存储器子系统控制器115中。

在某些实施方式中,读取电压电平组件113可以在数据单元编程时间创建数据单元组,并且可以将一个数据单元组作为当前数据单元组保持预定时间段。可以将在预定时间段内编程的任何数据单元分配给当前数据单元组。例如,当存储器子系统110上电时,读取电压电平组件113可以创建第一数据单元组。第一组可以是针对预定时间段的指定当前数据单元组,该预定时间段可以基于存储器子系统110的规范来确定(例如,四个小时)。在这种情况下,从给存储器子系统上电到预定时间段结束的四个小时内被编程的每个数据单元都可以分配给第一数据单元组。当经过四个小时后,存储器子系统可以创建一个新的数据单元组,并可以开始将在四个小时的第二个时段内编程的数据单元分配给该新的数据单元组,依此类推。在某些实施方式中,当擦除存储在数据单元处的数据时(例如,为了实现对该数据单元的重写),可以将该数据单元从该数据单元被编程时将该数据单元分配给的数据单元组中移除。

当创建一个数据单元组时,可以将其与一或多个数据单元相关联。当接收到请求存储在该数据单元组中的一个数据单元处的数据读取操作时,可以为该数据单元组分配读取电压电平。在这种情况下,当接收到读取操作时,读取电压电平组件113可以检查该数据单元组是否具有相关联的读取电压电平。如果该数据单元组已经具有相关联的读取电压电平,则读取电压电平组件113可以使用与该数据单元组相关联的读取电压电平来执行读取操作。另一方面,如果该数据单元组还不具有相关联的读取电压电平,则读取电压电平组件113可以使用默认读取电压电平来执行读取操作。在某些实施方式中,由于数据单元的电压分布随时间推移而变化,因此默认读取电压电平可能导致读取操作失败(例如,读取操作将生成高于特定阈值的读取误码率(RBER))。当使用默认读取电压错误执行的读取操作失败时,读取电压电平组件113可以触发读取错误处理(REH)模块,以便恢复数据并确定更适合于正被读取的特定数据单元的新的读取电压错误值。随后,读取电压电平组件113可以使用由REH模块确定的新的读取电压电平来再次执行读取操作。如果读取操作被成功执行,则读取电压电平组件113可以将新的读取电压电平分配给已经分配了读取数据单元的数据单元组。与该数据单元组相关联的针对数据单元的后续读取操作可以使用分配给该组的读取电压电平来执行对存储在该数据单元组内的数据单元的数据的读取操作。

在一实施方式中,分配给一个数据单元组的读取电压电平可能例如由于组成数据单元的存储器单元的电压分布的偏移而导致读取操作失败。存储器单元的电压分布的偏移可能是由于许多因素引起的,包含温度、重复的编程/擦除操作以及自从对存储器单元进行编程以来的经过的时间。当对于数据单元发生电压分布的此类偏移时,与该数据单元相关联的读取电压电平(经由数据单元所分配至的数据单元组)可能不再有效。在这种情况下,使用相关联的读取电压电平对数据单元的读取操作可能会失败。如以上所解释的,失败的读取操作可以触发REH模块,以便获得新的读取电压电平值。然后可以使用新的读取电压电平值再次执行读取操作。当第二次读取操作成功执行时,读取电压电平组件113可以将新的读取电压电平分配给该数据单元组,从而代替先前的读取电压电平。然后,在执行读取操作时,与该数据单元组相关联的数据单元的后续读取操作可以使用新的读取电压电平。

在某些实施方式中,为了维持可管理数量的数据单元组,读取电压电平组件113可以将数据单元组合并在一起,使得属于多个组的数据单元可以在仅一个数据单元组下合并在一起。在实施方式中,较旧的数据单元组(例如,几个月前创建的)可以具有相似的读取电压电平值,因此可以合并在一起成为一个数据单元组。例如,读取电压电平组件113可以确定彼此之间具有一定接近度内的读取电压电平值的数据单元组可以被合并到一组中。在说明性实例中,如果两数据单元组的读取电压电平值之间的差足够小以满足阈值条件,则读取电压电平组件113可以将两组中的数据单元合并为一个数据单元组,从而涵盖两组中的所有数据单元。在这种情况下,读取电压电平组件113可以将合并之前的一个数据单元组的读取电压电平分配给合并之后所得到的数据单元组。

图2是示出根据本公开的一些实施例的将存储器装置中的数据单元分配给数据单元组的框图200。在一个实施方式中,存储器装置130可以包含数据单元210-215,并且每个数据单元可以在不同的时间进行编程。图1的每个存储器装置130-140可以含有数百个数据单元。数据单元可以指用于存储数据的存储器装置的单元,并且可以包含一或多个存储器页面、一或多个存储器块、一或多个存储器单元或一或多个字线。

在一个实施方式中,可以在存储器子系统110中定义多个数据单元组230-250,并且每个数据单元组230-250可以包含单独的读取电压电平231、241和251。图2示出了其中存在三个数据单元组230-250的实例。取决于每个数据单元被编程的时间,每个数据单元210-215可以仅被分配给数据单元组230-250中的一个。在一实施方式中,处理逻辑可以例如在存储器子系统110上电时创建数据单元组230,并且可以在预定时间段(例如两个小时)内将该数据单元组230指定为当前组。在数据单元组230为当前组的时间段内被编程的所有数据单元将被分配给数据单元组230(例如,数据单元210和213)。类似地,可以在不同的时间点创建数据单元组240,并且可以将其指定为针对相同时间段(例如,两个小时)的当前数据单元组。当数据单元组240为当前组时被编程的数据单元将被分配给数据单元组240(例如,数据单元214)。数据单元组250可以进一步在另一个时间点创建,并且可以在2小时的三分之一时间内被指定为当前数据单元组。在两个小时的第三时段内编程的数据单元将被分配给数据单元组250(例如,数据单元211和215),依此类推。

参考图2,数据单元210和数据单元213被分配给数据单元组230,表明数据单元210和213在时间上彼此更靠近地进行编程。因此,当在存储器子系统110处接收到针对存储在数据单元210或数据单元213处的数据的读取操作时,存储器子系统110可以使用组230的读取电压电平231来执行读取操作。例如,当存储器子系统110接收到对存储在数据单元210处的数据的读取操作时,存储器子系统110可以搜索可用的数据单元组以确定哪个数据单元组与数据单元210相关联。当存储器子系统110确定将数据单元210分配给组230时,存储器子系统110可以检索与组230相关联的读取电压电平231,并且可以使用读取电压电平231执行读取操作。

数据单元214被分配给数据单元组240,表明数据单元214是在数据单元组240是当前组的时候进行编程的。因此,当在存储器子系统110处接收到针对存储在数据单元214处的数据的读取操作时,存储器子系统110可以使用组240的读取电压电平241来执行读取操作。例如,当存储器子系统110接收到对存储在数据单元214处的数据的读取操作时,存储器子系统110可以搜索可用的数据单元组以确定哪个数据单元组与数据单元214相关联。当存储器子系统110确定将数据单元214分配给组240时,存储器子系统110可以检索与组240相关联的读取电压电平241,并且可以使用读取电压电平241执行读取操作。

数据单元211和数据单元215被分配给数据单元组250,表明数据单元211和215在时间上彼此更靠近地进行编程。因此,当在存储器子系统110处接收到针对存储在数据单元211或数据单元215处的数据的读取操作时,存储器子系统110可以使用组250的读取电压电平251来执行读取操作。例如,当存储器子系统110接收到对存储在数据单元215处的数据的读取操作时,存储器子系统110可以搜索可用的数据单元组以确定哪个数据单元组与数据单元215相关联。当存储器子系统110确定将数据单元215分配给组250时,存储器子系统110可以检索与组250关联的读取电压电平251,并且可以使用读取电压电平251执行读取操作。

数据单元212未与一个数据单元组相关联。在一实施方式中,这可以表明数据单元212尚未用任何数据进行编程。在这种情况下,数据单元212将不会被分配给一个数据单元组。当存储器子系统110接收到针对数据单元212的编程操作时,存储器子系统110随后可以执行编程操作,并且可以将数据单元212分配给在编程数据单元212时为当前组的数据单元组。

图3示出了根据本公开的一些实施例的实例性时间线,其用于在支持读取电压电平管理的过程中创建数据单元组并向数据单元组分配数据单元。在某些实施方式中,当存储器子系统110上电时,存储器子系统110可以开始创建数据单元组并开始将数据单元分配给多个数据单元组。然后,存储器子系统100可以一次指定一个数据单元组作为当前组。当前数据单元组继续作为当前组持续预定时间段(例如,两个小时),此后创建另一个数据单元组并将其指定为当前数据单元组,依此类推。随着数据单元得到编程,在对数据单元进行编程时,会将它们分配给当前数据单元组。

在说明性实例中,可以在例如存储器系统110上电时(例如在上午9:00)创建组320。假定预定时间段(T1)为2小时,则组320将是指定的当前数据单元组,直到经过T1为止,例如在上午11:00。在该实例中,存储器子系统110可以接收三个编程请求,以分别将数据编程到数据单元321A、321B和321C中。在上午9:00到上午11:00之间接收到三个程序请求,在此期间,组320是当前数据单元组。因此,在对各个数据单元执行编程操作之后,存储器子系统可以将每个数据单元321A-C分配给组320。在T1=11:00am,存储器子系统110可以创建一个新的数据单元组330,并且可以将组330指定为当前数据单元组,直到T2=1:00pm。

类似地,存储器子系统110可以接收用于将数据编程到数据单元331A和331B中的两个编程请求。在上午11:00到下午1:00之间接收到两个程序请求,在此期间,组330是当前数据单元组。因此,每个数据单元331A-B在执行其各自的编程操作时被分配给组330。在T2=1:00PM,存储器子系统110可以创建一个新的数据单元组340,并且可以将组340指定为当前数据单元组,直到T3=3:00PM。

在T2,存储器子系统110可以接收三个编程请求,以将数据分别编程到数据单元341A、341B和341C中。在下午1:00到下午3:00之间接收到三个程序请求,在此期间,组340是当前数据单元组。因此,每个数据单元341A-C在执行其各自的编程操作时被分配给组340。在T13=3:00PM,存储器子系统110可以创建一个新的数据单元组(未示出),并且可以将新的组指定为当前数据单元组,等等。

在实施方式中,当存储在数据单元321A-C、331A-B和341A-C之一处的数据被擦除(例如,为了实现对数据单元的重写)时,可以将该擦除数据单元从该数据单元被编程时将该擦除数据单元分配给的对应一个数据单元组中移除。因此,当再次对擦除的数据单元进行编程时,可以根据编程操作的时间将其分配给一组不同的数据单元。

图4是根据本公开的一些实施例的管理用于存储器子系统中的数据单元组的多个读取电压电平值的实例性方法的流程图。方法400可以由处理逻辑来执行,该处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法400由图1的读取电压电平管理组件113执行。尽管以特定的顺序或次序显示,除非另有说明,否则可以修改过程的次序。因此,所示出的实施例应当仅被理解为实例,并且所示出的过程可以以不同的次序执行,并且一些过程可以并行地执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其他处理流程也是可能的。

在操作410处,处理逻辑接收识别存储在存储器装置的数据单元中的数据的读取请求。在实施方式中,可以从主机系统接收读取请求。在其他实施方式中,可以从存储器子系统控制器接收读取请求,例如,以执行损耗均衡操作、垃圾回收操作等。为了执行读取请求,可以使用与将数据单元分配至的一个数据单元组相关联的读取电压电平值执行读取操作,如本文所详细解释的。

在操作420处,处理逻辑识别数据单元所相关联的一个数据单元组。该数据单元组是存储器子系统内的多个数据单元组中的一个,并且该数据单元组中的每个数据单元在与该数据单元组相关联的时间段内被编程。在实施方式中,可以通过将数据单元的标识符与与该数据单元组相关联的数据单元的标识符列表进行匹配来识别该数据单元组。

在操作430处,处理装置确定该数据单元组的读取电压电平。在实施方式中,存储器子系统的多个数据单元组中的每个数据单元组具有单独的读取电压电平。在某些实施方式中,可以使用读取错误处理模块来确定一个数据单元组的读取电压电平,然后可以将其分配给该数据单元组,如上文中所更详细地解释的。

在操作440处,处理装置使用该数据单元组的读取电压电平对存储器装置的数据单元执行读取操作。在实施方式中,如果读取操作失败(例如,由于构成数据单元的存储器单元的电压分布的偏移),则处理装置可以触发REH模块以获得新的读取电压电平值。然后可以使用新的读取电压电平值再次执行读取操作。当第二次读取操作成功执行时,处理逻辑可以将新的读取电压电平分配给该数据单元组,从而替换先前的读取电压电平,如本文中所更详细地解释的。

图5是根据本公开的一些实施例的确定存储器子系统中的一个数据单元组的读取电压电平的实例性方法的流程图。方法500可以由处理逻辑来执行,该处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法500由图1的读取电压电平管理组件113执行。尽管以特定的顺序或次序显示,除非另有说明,否则可以修改过程的次序。因此,所示出的实施例应当仅被理解为实例,并且所示出的过程可以以不同的次序执行,并且一些过程可以并行地执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其他处理流程也是可能的。

在操作510处,处理逻辑确定与数据单元相关联的一个数据单元组,例如,以便使用来自相关联的该数据单元组的读取电压电平来执行对数据单元中数据的读取操作,如本文中所详细解释的。

在操作515处,处理逻辑确定该数据单元组是否具有分配的读取电压电平。在实施方式中,当执行针对存储在与该组相关联的任何数据单元中的数据的读取操作时,该数据单元组可以具有分配的读取电压电平,如本文中所更详细地解释的。

在操作530处,一旦确定该组不具有分配的读取电压电平,则处理逻辑使用默认读取电压电平来执行对存储在数据单元中的数据的读取操作。在实施方式中,默认读取电压电平可以指的是可以与存储器装置相关联的读取电压电平的初始值,并且不特定于任何特定的数据单元组。

因此,在操作540处,处理逻辑可以确定使用默认读取电压电平的读取操作已经失败。在实施方式中,当使用默认读取电压电平执行读取操作时,由于默认读取电压电平的不准确性,读取操作的准确性的指标(例如,读取误码率(RBER))可能高于特定阈值。因此,处理逻辑可以触发读取错误处理(REH)模块以获得数据单元的通过读取电压电平,如本文中所更详细地解释的。

在操作550处,处理逻辑将从REH模块获得的通过读取电平电压分配给该数据单元组。并且在操作560处,处理逻辑使用该组的读取电压电平来执行对数据单元的读取操作。可以使用与该组相关联的读取电压电平来执行对在与该数据单元组相关联的数据单元处存储的数据的进一步读取操作。

图6是根据本公开的一些实施例的使用来自存储器子系统中的数据单元组的不同读取电压电平值来执行读取操作的实例性方法的流程图。方法600可以由处理逻辑来执行,该处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法600由图1的读取电压电平管理组件113执行。尽管以特定的顺序或次序显示,除非另有说明,否则可以修改过程的次序。因此,所示出的实施例应当仅被理解为实例,并且所示出的过程可以以不同的次序执行,并且一些过程可以并行地执行。另外,在各种实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其他处理流程也是可能的。

在操作610处,处理逻辑接收对存储在数据单元U1处的数据的第一读取请求。然后,在操作620处,处理逻辑确定与数据单元U1相关联的一个数据单元组Set1,以便检索与Set1相关联的读取电压电平,以便执行读取操作。

在操作630处,处理逻辑使用Set1的读取电压电平RL1来执行第一读取操作,如以上在本文中所更详细地解释的。在实施方式中,处理逻辑可以使用REH模块确定Set1的读取电压电平,如先前所解释的。

在操作640处,处理逻辑接收对存储在另一个数据单元U2处的数据的后续读取请求。类似地,处理逻辑确定与数据单元U2相关联的一个数据单元组Set2。在操作655处,处理逻辑确定Set1和Set2是否相同,相同表明数据单元U1和数据单元U2属于同一个数据单元组。在实施方式中,当执行对存储在与同一个数据单元组相关联的数据单元处的数据的读取操作时,处理逻辑可以使用分配给该数据单元组的读取电压电平来对每个数据单元执行读取操作,如以上在本文中所更详细地解释的。

在操作660,处理装置确定数据单元U1和数据单元U2与同一个数据单元组(Set1)相关联,然后,处理逻辑使用Set1的RL1执行对存储在U2处的数据的读取操作。

另一方面,在操作670处,当处理装置确定数据单元U1和数据单元U2与不同组的数据单元相关联时,处理逻辑使用Set2的另一读取电压电平RL2来执行对存储在数据单元U2处的数据的读取操作。

图7示出了计算机系统700的实例性机器,在其中可以执行用于使该机器执行本文所讨论的方法中的任何一或多个的一组指令。在一些实施例中,计算机系统700可以对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110),或者可以用于执行控制器的操作(例如,执行操作系统以执行与图1的读取电压电平管理组件113相对应的操作)。在另选的实施例中,该机器可以连接(例如,联网)到局域网LAN、内联网、外联网和/或因特网中的其他机器。该机器可以在客户端-服务器网络环境中以服务器或客户端机器的身份运行,可以作为对等(或分布式)网络环境中的对等机器,或者作为云计算基础架构或环境中的服务器或客户端机器。

该机器可以是个人计算机(PC)、平板电脑、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、Web装置、服务器、网络路由器、交换机或网桥或能够执行指定该机器要采取的动作的一组指令(顺序指令或以其他方式)的任何机器。此外,虽然示出了单个机器,但是术语“机器”也应被理解为包含机器的任何集合,这些机器单独地或共同地执行一组(或多组)指令以执行本文所讨论的任何一或多个方法。

实例性计算机系统700包含处理装置702、主存储器704(例如,只读存储器(ROM)、闪存存储器、诸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)之类的动态随机存取存储器(DRAM)、静态存储器706(例如,闪存存储器、静态随机存取存储器(SRAM)等)和数据存储系统718,它们经由总线730彼此通信。

处理装置702代表一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现其他指令集的处理器或实现指令集的组合的处理器。处理装置702还可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置702被配置为执行指令726,以用于执行本文所讨论的操作和步骤。计算机系统700可以进一步包含网络接口装置708,以通过网络720进行通信。

数据存储系统718可以包含机器可读存储介质724(也称为计算机可读介质),在其上存储体现本文所述方法或功能中的任何一或多个的一组或多组指令726或软件。在计算机系统700执行指令726的过程中,指令也可以全部或至少部分地驻留在主存储器704内和/或处理装置702内,主存储器704和处理装置702也构成机器可读存储介质。机器可读存储介质724、数据存储系统718和/或主存储器704可以对应于图1的存储器子系统110。

在一个实施例中,指令726包含用于实现与图1的读取电压电平管理组件113相对应的功能的指令。尽管在实例性实施例中将机器可读存储介质724示出为单个介质,但是术语“机器可读存储介质”应被认为包含存储一或多个指令集的单个介质或多个介质。术语“机器可读存储介质”也应被认为包含能够存储或编码一组指令以供机器执行并且使机器执行本公开的任何一或多个方法的任何介质。因此,术语“机器可读存储介质”应被认为包含但不限于固态存储器、光学介质和磁性介质。

已经根据对计算机存储器内的数据位的操作的算法和符号表示来呈现了前述详细描述的某些部分。这些算法描述和表示是数据处理领域技术人员用来最有效地向本领域其他技术人员传达其工作实质的方式。这里,算法通常被认为是导致期望结果的自洽操作序列。这些操作是需要对物理量进行物理操纵的操作。通常,尽管不是必须的,这些量采取能够被存储、组合、比较和以其他方式操纵的电信号或磁信号的形式。主要出于通用的原因,已经证明有时将这些信号称为位、值、元素、符号、字符、项、数字等是方便的。

然而,应当牢记,所有这些和类似术语均应与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。本公开可以涉及计算机系统或类似电子计算装置的动作和过程,该计算机系统或类似电子计算装置将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和转换为类似地表示为计算机系统的存储器或寄存器或其他此类信息存储系统内物理量的其他数据。

本公开还涉及用于执行本文中的操作的设备。该设备可以被专门构造用于预期目的,或者它可以包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这样的计算机程序可以被存储在计算机可读存储介质中,例如但不限于:任何类型的磁盘,包括软盘、光盘、CD-ROM和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适于存储电子指令的任何类型的介质,每个介质都耦合到计算机系统总线。

本文中给出的算法和显示并非固有地与任何特定计算机或其他设备相关。各种通用系统可以与根据本文教导的程序一起使用,或者构造更专用的设备以执行方法可能证明是较方便的。如以上描述中所阐述的,将出现用于各种这些系统的结构。此外,本公开并未参考任何特定编程语言进行描述。应当理解,可以使用各种编程语言来实现对本文所述的本公开的教导。

本公开可以被提供为计算机程序产品或软件,其可以包含其上存储有指令的机器可读介质,该指令可以用于对计算机系统(或其他电子装置)进行编程以执行根据本公开的处理。机器可读介质包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,诸如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪存存储器组件等。

在前述说明书中,已经参考本公开的特定实例性实施例描述了本公开的实施例。显而易见的是,在不脱离如所附权利要求书中阐述的本公开的实施例的更广泛的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图应被认为是说明性的而不是限制性的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号