数据存储装置及其操作方法
相关申请的交叉引用
本专利文件要求于2020年3月16日提交的、申请号为10-2020-0032008的韩国专利申请的优先权和权益,该韩国专利申请的全部内容通过引用并入本文。
技术领域
本专利文件中公开的技术和实施方案涉及一种电子装置,并且更特别地,涉及一种可以避免读取操作期间的不必要的解码开销的数据存储装置。
背景技术
数据存储装置可以包括存储数据的存储器装置和允许诸如计算机或智能电话的主机装置从数据存储介质读取数据和/或将数据写入数据存储介质的控制器。根据存储器装置在即使电源断开的情况下保持所存储的数据的能力,存储器装置可以被表征为易失性存储器装置或非易失性存储器装置。
易失性存储器装置仅在电源导通时才可以保留所存储的数据。易失性存储器装置的示例包括静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)。
非易失性存储器装置即使在没有电源的情况下也可以保留所存储的数据。非易失性存储器装置的示例包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)和闪速存储器。
发明内容
所公开技术的实施例提供了一种数据存储装置,除了具有其它特征和益处之外,该数据存储装置还可以避免读取操作期间的不必要的解码和计算开销以及复杂度。
根据所公开技术的实施例的存储器控制器可以包括:接口,与包括多个存储器芯片的存储器装置通信,每个存储器芯片包括多个存储器位置;最佳读取电压重试控制器,被配置为生成与针对存储器装置的多个读取操作之中的读取操作已经失败的存储器位置的物理地址相对应的第一最佳读取电压;以及读取失败控制器,与最佳读取电压重试控制器和接口通信,并被配置为控制存储器装置以使用来自最佳读取电压重试控制器的第一最佳读取电压对另一存储器位置执行最佳读取电压重试操作,并且可以响应于从主机提供的相同读取请求而执行多个读取操作。
根据所公开技术的实施例的数据存储装置可以包括:多个存储器芯片,每个存储器芯片包括多个平面;以及存储器控制器,被配置为执行恢复算法,该恢复算法恢复与对多个存储器芯片执行的读取操作之中失败的读取操作相对应的数据,并且存储器控制器可以使用与失败的读取操作之中所选择的读取操作有关的地址来生成将在第一恢复算法中使用的读取电压,并且使用该读取电压对与失败的读取操作相关联的存储器位置执行第一恢复算法。
根据所公开技术的实施例的操作包括多个存储器芯片的数据存储装置的方法可以包括:生成与读取多个存储器芯片中存储的数据的多个读取操作之中的读取操作已经失败的存储器位置的物理地址相对应的最佳读取电压;并且使用该最佳读取电压来执行多个读取操作,并且多个读取操作可以是响应于从主机提供的相同读取请求而执行的读取操作。
附图说明
图1是示出基于所公开技术的实施例的数据存储装置的示例性配置的框图。
图2示出图1所示的读取失败处理器的示例。
图3示出基于所公开技术的实施例的数据存储装置的操作的示例。
图4示出默认(理想)读取电压。
图5示出获得最佳读取电压的示例性方法。
图6示出在软解码进程中使用的软读取电压的示例。
图7示出基于所公开技术的一些实施例的图1所示的存储器装置的示例。
图8示出图7所示的存储块的示例。
图9A至图9C示出如图2所示的用于存储最佳读取电压的数据存储设备的示例。
图10是示出基于所公开技术的实施例的数据存储装置的操作的流程图。
图11是示出基于所公开技术的实施例而实施的存储卡系统的示例的框图。
图12是示出基于所公开技术的实施例而实施的固态驱动器(SSD)系统的示例的框图。
图13是示出基于所公开技术的实施例而实施的用户系统的示例的框图。
具体实施方式
本专利文件中公开的技术可以在一些实施例中实施,以提供数据存储装置及其操作方法,除了具有其它特征和益处之外,该数据存储装置及其操作方法还可以减少与解码读取数据相关联的开销和复杂度。
图1是示出基于所公开技术的实施例的数据存储装置的配置的框图。
在一些实施方案中,数据存储装置50可以包括存储器控制器200和存储器装置100。
数据存储装置50可以联接到主机400或与主机400通信以存储从该主机400传输的数据或根据请求将所存储的数据提供到该主机400,主机400诸如移动电话、智能电话、MP3播放器、膝上型计算机、台式计算机、游戏机、TV、平板PC或车载信息娱乐系统。
数据存储装置50可以以与和主机400通信的主机接口兼容的各种类型的数据存储装置中的一种实施。例如,数据存储装置50可以是SSD,MMC、eMMC、RS-MMC和微型MMC形式的多媒体卡,SD、迷你SD和微型SD形式的安全数字卡,通用串行总线(USB)存储装置,通用闪存(UFS)装置,个人计算机存储卡国际协会(PCMCIA)卡类型存储装置,外围组件互连(PCI)卡类型存储装置,高速PCI(PCI-E)卡类型存储装置,紧凑型闪存(CF)卡,智能媒体卡或记忆棒。
数据存储装置50的封装类型可以例如包括堆叠封装(POP)、系统级封装(SIP)、片上系统(SOC)、多芯片封装(MCP)、板上芯片(COB)、晶圆级制造封装(WFP)和晶圆级堆叠封装(WSP)。
存储器控制器200可以控制数据存储装置50的全部操作。当数据存储装置50通电时,存储器控制器200可以运行固件(FW)。在一些实施方案中,固件可以包括闪存转换层(FTL)。当存储器装置100包括闪速存储器装置时,存储器控制器200可以使用通用文件系统和闪速存储器装置之间的FTL来管理存储器装置100的操作。在一些实施方案中,FTL控制如何将数据存储到存储器装置100和如何从存储器装置100检索数据。硬盘驱动器是主要的存储装置,因此将用于硬盘驱动器的文件系统用作通用文件系统。具有闪速存储器装置的存储器系统可以利用这种通用文件系统,但是由于诸如擦除块和损耗均衡的若干原因,它们不是最佳的。例如,闪速存储块在可以被写入之前需要被擦除,因此具有闪速存储器装置的存储器系统需要具有与擦除块相关联的信息,而硬盘驱动器则不需要这些信息。因此,在通用文件系统和闪速存储器装置之间使用FTL。
在从主机400接收写入请求时,存储器控制器200可以从主机400接收待存储在存储器装置100中的写入数据以及用于识别相应的写入数据的逻辑地址(LA)。存储器控制器200可以将逻辑地址(LA)转换为物理地址(PA),该PA指示存储器装置100中包括的存储器单元之中存储写入数据的存储器单元的物理地址。在实施例中,一个物理地址(PA)可以对应于一个物理页面。存储器控制器200可以将用于存储数据的编程命令、物理地址和写入数据提供到存储器装置100。
在实施例中,在从主机400接收读取请求时,存储器控制器200可以从主机400接收与读取请求相对应的逻辑地址(LA)。在此,与读取请求相对应的逻辑地址(LA)可以用于识别请求读取的数据。存储器控制器200可以从映射数据获得被映射到与读取请求相对应的逻辑地址(LA)的物理地址(PA),该映射数据指示由主机400提供的逻辑地址(LA)和存储器装置100的物理地址(PA)之间的映射关系。此后,存储器控制器200可以将读取命令和物理地址(PA)提供到存储器装置100。在各个实施例中,在擦除操作期间,存储器控制器200可以将擦除命令和待擦除的存储块的物理地址(PA)提供到存储器装置100。
在实施例中,存储器控制器200可以控制存储器装置100独立地执行编程操作、读取操作或擦除操作,而不管来自主机400的请求。例如,存储器控制器200可以控制存储器装置100执行诸如损耗均衡、垃圾收集或读取回收的后台操作。
存储器装置100可以存储数据。存储器装置100在存储器控制器200的控制下进行操作。存储器装置100可以包括多个存储器芯片。多个存储器芯片的每一个可以包括多个平面。平面可以是可以独立操作的区域。每个平面可以独立地执行编程操作、读取操作和擦除操作中的任意一个。
在此描述的示例中,词“平面”可以指示可以进行并发(concurrent)操作的一组存储器单元。词“存储块”可以指示可以擦除的最小单位,并且词“页面”可以指示可以编程(或写入)或读取的最小单位。在一些实施方案中,每个存储器芯片包括一个或多个平面,并且每个平面包括多个块。每个块包括多个页面。
具体地,在图1中,存储器装置100可以包括存储器单元阵列,该存储器单元阵列包括可以存储数据的多个存储器单元。存储器单元阵列可以包括多个存储块。每个存储块可以包括多个存储器单元。存储块可以是可以进行擦除的最小单位。也就是说,基于存储块来执行擦除操作,并且可以同时擦除相同存储块中存储的数据。在实施例中,存储块可以包括多个页面。页面可以是用于将数据存储在存储器装置100中或读取存储器装置100中存储的数据的最小单位。也就是说,基于页面来执行编程(写入)操作和读取操作,并且在编程操作或读取操作期间从存储器控制器200提供到存储器装置100的物理地址可以是用于识别特定页面的地址。
在实施例中,存储器装置100可以是双倍数据速率同步动态随机存取存储器(DDRSDRAM)、低功率双倍数据速率4(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SDRAM、低功率DDR(LPDDR)、Rambus动态随机存取存储器(RDRAM)、NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器装置、电阻式随机存取存储器(RRAM)、相变存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)或自旋转移扭矩随机存取存储器(STT-RAM)等。作为示例,如下面将进行描述的,存储器装置100可以是NAND闪速存储器。
在实施例中,存储器装置100可以以三维阵列结构来实施。闪速存储器装置可以包括电荷存储层、由导电材料形成的导电浮栅(FG)或由介电材料形成的电荷撷取层。
在实施例中,存储器装置100中包括的存储器单元中的每一个可以操作为存储一个数据位的单层单元(SLC)、存储两个数据位的多层单元(MLC)、存储三个数据位的三层单元(TLC)或存储四个数据位的四层单元(QLC)中的一种。
在所公开技术的实施例中,存储器控制器200可以包括读取失败处理器210。
从主机400提供的读取请求指示待读取的数据位于何处。在示例中,主机400请求存储器装置100提供由该主机400存储在数据存储装置50中的原始数据。存储器控制器200对原始数据执行错误校正编码,生成包括用于错误校正的奇偶校验数据的写入数据。存储器控制器200可以控制存储器装置100,使得将写入数据存储在存储器装置100中。
此后,响应于来自主机400的读取请求,存储器控制器200可以提供读取命令和物理地址,该物理地址用于定位待读取数据的存储器单元。
存储器装置100可以使用默认读取电压来执行读取操作。读取电压可以是被施加以识别存储器单元中存储的数据的电压。默认读取电压可以是在存储器装置100的生产进程中通过测试所确定的读取电压。
在本专利文件的上下文中,“默认”读取电压可以指示针对存储器装置100的默认条件给出的初始读取电压值。在一些情况下,词“默认”可以用于指示理想值,因此默认读取电压可以指示可以在理想状态下区分存储器单元的不同阈值电压分布的一组读取阈值电压。
存储器装置100可以使用默认读取电压,将与所接收的物理地址相对应的存储器单元中存储的数据提供到存储器控制器200。从存储器装置100读出的数据将被称为读取数据。该读取数据可以指示从存储器装置读取的值;例如,在二进制存储方案中,在存储器位置(存储器单元)上进行的单次读取操作可以产生二进制值零或一。在读取操作期间,存储器控制器200可以对读取数据执行错误校正解码。
当读取数据包括一个或多个错误位时,可以通过对读取数据执行错误校正操作来校正这种错误。换句话说,错误校正解码可以是对读取数据中包括的一个或多个错误位进行校正以恢复原始数据的操作。如果读取数据中包括的错误位的数量超过可校正错误位的最大数量,则错误校正解码可能无法恢复原始数据。当读取数据中包括的错误位的数量等于或小于可校正错误位的最大数量时,错误校正解码可以成功地恢复原始数据。当错误校正解码成功时,可以获得与主机400请求读取的逻辑地址相对应的原始数据。在一些实施方案中,对于相应的读取操作,错误校正解码是否成功可以被指示为“通过”或“失败”。因此,当错误校正解码成功时,存储器装置100执行的读取操作可以被指示为“通过”。当错误校正解码不成功时,原始数据可能无法还原,并且存储器装置100执行的读取操作可以被指示为“失败”。
当读取操作失败时,读取失败处理器210可以执行多个恢复算法,直到成功地还原原始数据。可以按照预设顺序执行多个恢复算法。通常,恢复算法越复杂,恢复原始数据的可能性就越高。然而,随着存储器控制器200执行的操作迭代或计算量的增加,操作和计算的开销也可能会增加。在实施例中,读取失败处理器210可以按照从具有低复杂度的恢复算法到具有高复杂度的恢复算法的顺序来执行恢复算法。当通过恢复算法中的任意一个还原了原始数据时,可以不执行剩余的恢复算法。
在实施例中,多个恢复算法可以例如包括读取重试操作、最佳读取电压重试操作、软解码操作和芯片猎杀恢复操作。
读取重试可以是使用不同于默认读取电压的读取电压(读取阈值电压)来重试读取操作的操作。在一些实施方案中,可以在存储器装置100或存储器控制器200中预先存储读取重试中使用的读取电压。
最佳读取电压重试可以是计算最佳读取电压并使用计算出的最佳读取电压执行读取操作的操作。在此,可以通过各种方法计算最佳读取电压。在实施例中,可以使用高斯建模来计算最佳读取电压。可选地,可以根据使用多个读取电压读出的读取数据中包括的“0”或“1”的数量来计算最佳读取电压。
在本专利文件的上下文中,与阈值或存储器系统性能结合使用的词“最优”、“优化的”和“最佳”指示与现有阈值或条件相比,为存储器装置提供更好性能(例如,更高的可靠性、更少的检测到的错误等)的值或条件。从这个意义上说,词“最优”、“优化的”或“最佳”可能或可能不会传达存储器装置可实现的最好的可能的性能。
软解码可以是使用多个软读取电压执行读取操作的操作。在此,可以基于默认读取电压或最佳读取电压来确定多个软读取电压。例如,多个软读取电压可以是大小以默认读取电压或最佳读取电压为基准以预定间隔增加或减小的电压。
芯片猎杀恢复操作可以是使用其它页面中存储的数据来恢复读取操作失败的页面中存储的数据的操作。
在所公开技术的实施例中,当多个读取操作失败时,读取失败处理器210可以控制存储器装置100对读取操作已经失败的存储器单元执行最佳读取电压重试。读取失败处理器210可以使用与任意失败的读取操作相对应的存储器单元的阈值电压分布来计算最佳读取电压。读取失败处理器210可以控制存储器装置100使用通过使用与失败的读取操作相关联的阈值电压分布所获得的最佳读取电压,对读取操作已经失败的其它存储器单元执行最佳读取电压重试。因此,在获得最佳读取电压时,基于所公开技术的一些实施例而实施的读取失败处理器210没有考虑所有失败的读取操作,因此可以减少用于计算最佳读取电压的开销。
在实施例中,读取失败处理器210可以选择性地对与最佳读取电压重试相关联的读取操作已经失败的存储器单元执行软解码。也就是说,读取失败处理器210可以将与最佳读取电压重试相关联的读取操作已经失败的存储器单元的物理地址与计算该最佳读取电压所使用的读取操作的物理地址进行比较。当与最佳读取电压重试相关联的读取操作已经失败的存储器单元的物理地址和计算该最佳读取电压所使用的读取操作的物理地址属于相同平面时,读取失败处理器210可以执行软解码,并且针对属于不同平面的读取操作重复最佳读取电压重试操作。因此,最佳读取电压重试的失败并不一定导致软解码,因此,与对最佳读取电压重试失败的所有存储器单元都执行软解码的情况相比,可以减少操作和计算的开销。
主机400可以使用诸如以下各种通信方法中的至少一种与数据存储装置50通信:通用串行总线(USB)、串行AT附件(SATA)、串列SCSI(SAS)、高速芯片间(HSIC)、小型计算机系统接口(SCSI)、外围组件互连(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪存(UFS)、安全数字(SD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、双列直插式存储器模块(DIMM)、寄存式DIMM(RDIMM)和减少负载的DIMM(LRDIMM)。
图2示出图1所示的读取失败处理器的示例。
在一些实施方案中,读取失败处理器210可以包括读取失败控制器211、最佳读取电压重试控制器212和软解码控制器213。
最佳读取电压重试控制器212可以进一步包括最佳读取电压计算器212-1和最佳读取电压存储设备212-2。
在图2中,读取失败处理器210包括读取失败控制器211、最佳读取电压重试控制器212和软解码控制器213。在一些实施方案中,读取失败处理器210可以进一步包括错误校正组件(未示出),该错误校正组件执行错误校正解码以确定所执行的读取操作是“通过”还是“失败”。
读取失败控制器211可以确定为恢复关于失败的读取操作的原始数据而将执行的恢复算法。读取失败控制器211可以以预设顺序在多个恢复算法之中确定将对失败的读取操作执行的恢复算法。多个恢复算法可以包括读取重试、最佳读取电压重试、软解码和芯片猎杀恢复操作。然而,为了便于描述,在图2中,假设读取失败控制器211在最佳读取电压重试和软解码之中确定将对失败的读取操作执行的恢复算法。
当使用默认读取电压的读取操作失败时,读取失败控制器211可以控制最佳读取电压重试控制器212执行最佳读取电压重试。最佳读取电压重试控制器212可以基于与失败的读取操作的物理地址相对应的存储器单元的阈值电压分布来计算最佳读取电压。最佳读取电压重试控制器212可以将计算出的最佳读取电压与该计算所基于的物理地址一起存储。
在一些实施方案中,最佳读取电压计算器212-1可以基于与失败的读取操作的物理地址相对应的存储器单元的阈值电压分布来计算最佳读取电压。在实施例中,最佳读取电压计算器212-1可以使用高斯建模来计算最佳读取电压。例如,最佳读取电压计算器212-1可以使用多个采样电压来计算阈值电压分布的平均电压。最佳读取电压计算器212-1可以使用利用多个采样电压所获得的采样数据的“0”或“1”的数量,或者“0”或“1”的数量的改变量来计算阈值电压分布的平均电压。最佳读取电压计算器212-1可以使用该平均电压来计算最佳读取电压。最佳读取电压计算器212-1可以将彼此相邻的阈值电压分布的平均电压的中值(平均电压之和的1/2)确定为最佳读取电压。在各个实施例中,除了使用高斯建模的计算方法之外,最佳读取电压计算器212-1还可以使用其它各种方法来计算最佳读取电压,因此,所公开技术的范围不限于使用高斯建模计算最佳读取电压的方法。
最佳读取电压存储设备212-2可以一起存储由最佳读取电压计算器212-1计算出的最佳读取电压以及计算该最佳读取电压所基于的物理地址。在此,与最佳读取电压一起存储的物理地址可以包括芯片地址、平面地址或块地址中的至少一个。
读取失败控制器211可以控制存储器装置100使用由最佳读取电压重试控制器212计算出的最佳读取电压来执行最佳读取电压重试。
在实施例中,可以根据主机提供的读取请求来执行多个读取操作。例如,当存储器控制器200将属于不同存储器装置100或不同平面的存储块检测为一个超级块时,可以并发地执行多个读取操作。可选地,当主机提供的读取请求的逻辑地址为顺序读取时,可以根据读取请求的顺序或优先级来执行多个读取操作。在这种情况下,多个读取操作之中可能发生两个或更多个失败的读取操作。当多个读取操作失败时,读取失败控制器211可以不针对每个读取操作计算最佳读取电压。读取失败控制器211可以针对任意一个所选择的读取操作计算最佳读取电压,然后使用针对所选择的读取操作而计算出的最佳读取电压来对读取操作已经失败的剩余存储器单元执行最佳读取电压重试。
读取失败控制器211可以控制软解码控制器213对与最佳读取电压重试相关联的读取操作已经失败的存储器单元执行软解码。在实施例中,读取失败控制器211可以根据与最佳读取电压重试相关联的读取操作已经失败的存储器单元的物理地址与针对计算该最佳读取电压所基于的读取操作所选择的存储器单元的物理地址的比较结果,确定对与最佳读取电压重试相关联的读取操作已经失败的存储器单元是重复最佳读取电压重试还是执行软解码。
具体地,读取失败控制器211可以将与最佳读取电压重试相关联的读取操作已经失败的存储器单元的物理地址与最佳读取电压存储设备212-2中存储的所选择的读取操作的物理地址进行比较。当与最佳读取电压重试相关联的读取操作已经失败的存储器单元的平面地址与所选择的读取操作的平面地址相同时,读取失败控制器211可以控制软解码控制器213对与最佳读取电压重试相关联的读取操作已经失败的存储器单元执行软解码。相反地,当与最佳读取电压重试相关联的读取操作已经失败的存储器单元的平面地址与所选择的读取操作的平面地址不同时,读取失败控制器211可以控制最佳读取电压重试控制器212推迟执行软解码,并且再次执行最佳读取电压重试。
在各个实施例中,当最佳读取电压重试失败的读取操作的芯片地址、平面地址或块地址中的至少一个与所选择的读取操作的芯片地址、平面地址或块地址相同时,读取失败控制器211可以控制软解码控制器213对与最佳读取电压重试相关联的读取操作已经失败的存储器单元执行软解码。当与最佳读取电压重试相关联的读取操作已经失败的存储器单元的芯片地址、平面地址或块地址与所选择的读取操作的芯片地址、平面地址或块地址不同时,读取失败控制器211可以控制最佳读取电压重试控制器212推迟执行软解码,并且再次执行最佳读取电压重试。
当针对属于相同平面、芯片或块的读取操作计算出最佳读取电压重试中使用的最佳读取电压时,即使重复最佳读取电压重试,最佳读取电压重试失败的可能性也很大。相反,当针对属于其它平面、芯片或块的读取操作计算出最佳读取电压重试中使用的最佳读取电压时,可能需要使用新计算出的最佳读取电压来执行最佳读取电压重试。因为软解码比最佳读取电压重试需要更多的计算和操作,所以执行上述选择性软解码可以减少存储器控制器的操作和计算的开销。
图3示出基于所公开技术的实施例的数据存储装置的操作的示例。
在图3中,假设数据存储装置包括一个存储器装置,并且一个存储器装置包括四个平面Plane1至Plane4。然而,这是为了便于描述,并且在各个实施例中,所公开技术可以应用于包括多个存储器装置的数据存储装置。
参照图2和图3,数据存储装置可以以来自主机的请求的顺序执行多个读取操作。假设多个读取操作在多个平面上失败,则可以对读取操作已经失败的存储器单元执行软解码或最佳读取电压重试操作。读取操作已经失败的存储器单元属于读取失败组。假设已经使用默认读取电压执行了这种失败的读取操作。图3所示的示例如下:(1)属于读取失败组的第一读取操作READ1和第三读取操作READ3是对第一平面Plane1中包括的页面执行的读取操作;(2)第二读取操作READ2、第四读取操作READ4和第七读取操作READ7是对第二平面Plane2中包括的页面执行的读取操作;(3)第五读取操作READ5是对第三平面Plane3中包括的页面执行的读取操作;以及(4)第六读取操作READ6是对第四平面Plane4中包括的页面执行的读取操作。
读取失败控制器211可以针对第一读取操作READ1生成最佳读取电压。可以使用高斯建模来生成最佳读取电压。读取失败控制器211可以控制存储器装置100使用最佳读取电压对与第一至第七读取操作READ1至READ7相关联的存储器单元执行最佳读取电压重试操作。
假设作为执行最佳读取电压重试的结果,针对与第一读取操作READ1、第三读取操作READ3、第五读取操作READ5和第六读取操作READ6相关联的存储器单元的最佳读取电压重试失败,并且针对与第二读取操作READ2、第四读取操作READ4和第七读取操作READ7相关联的存储器单元的最佳读取电压重试成功或通过。
在所公开技术的一些实施例中,当读取操作已经失败的存储器单元与用于获得用于失败的读取操作的最佳读取电压的存储器单元在相同平面中时,执行软解码。因为第一读取操作READ1和第三读取操作READ3是针对第一平面Plane1中包括的页面的读取操作,所以第一读取操作READ1和第三读取操作操作READ3是与计算最佳读取电压所基于的第一读取操作READ1针对相同平面的读取操作。因此,读取失败控制器211可以对第一读取操作READ1和第三读取操作READ3执行软解码。
在所公开技术的一些实施例中,当读取操作已经失败的存储器单元与用于获得用于失败的读取操作的最佳读取电压的存储器单元在不同的平面中时,执行最佳读取电压重试操作。第五读取操作READ5和第六读取操作READ6是针对与第一平面Plane1不同的平面地址的读取操作,该第一平面Plane1是计算最佳读取电压所基于的第一读取操作READ1的平面地址。因此,针对第五读取操作READ5和第六读取操作READ6再次执行最佳读取电压重试。因此,读取失败控制器211可以再次对与第五读取操作READ5和第六读取操作READ6相关联的存储器单元执行最佳读取电压重试操作。在这种情况下,读取失败控制器211可以针对第五读取操作READ5生成新的最佳读取电压。读取失败控制器211可以使用针对第五读取操作READ5的新的最佳读取电压再次对与第五读取操作READ5和第六读取操作READ6相关联的存储器单元执行最佳读取电压重试。
作为示例,参照图2和图3描述了最佳读取电压重试和软解码,然而,这种方法可以应用于多种恢复算法。也就是说,读取失败控制器211可以通过将针对多个失败的读取操作之中所选择的读取操作而确定的读取电压施加到剩余失败的读取操作来执行第一恢复算法。另外,读取失败控制器211可以选择性地将第二恢复算法仅应用于具有与作为确定先前应用的第一恢复算法的读取电压的基础的读取操作相同趋势的读取操作,而不是将具有较高复杂度和较慢处理速度的第二恢复算法应用于所有的读取操作。
图4示出默认(理想)读取电压。
在图4中,横轴代表存储器单元的阈值电压,纵轴代表存储器单元的数量。
在图4中,为了便于描述,假设存储器单元被编程为存储两个数据位的多层单元(MLC),但是所公开技术不限于此。
通过编程操作,一个物理页面中包括的存储器单元可以具有属于擦除状态E和第一编程状态P1至第三编程状态P3中的任意一个的阈值电压分布的阈值电压。
当使用默认读取电压R1、R2和R3感测存储器单元的阈值电压时,根据存储器单元中存储的数据,每个存储器单元可以被划分为擦除状态E和第一编程状态P1至第三编程状态P3中的任意一个。R1可以是用于划分擦除状态E和第一编程状态P1的默认读取电压,R2可以是用于划分第一编程状态P1和第二编程状态P2的默认读取电压,R3可以是用于划分第二编程状态P2和第三编程状态P3的默认读取电压。可以在存储器装置的生产进程中通过测试将默认读取电压的电平确定为特定电压值,并且可以将所确定的电压值存储在存储器装置中。
在编程操作完成的初始时段内,存储器单元的阈值电压分布具有图4的形式。然而,因为数据在被编程之后长时间滞留(保留),或者由于对另一存储器区域的过度操作,阈值电压可能会发生改变(干扰)。
因此,随着存储器单元的阈值电压的改变增加,通过默认读取电压感测到的读取数据中可能包括许多错误位,因此读取操作失败的情况可能会增加。
图5示出获得最佳读取电压的示例性方法。
图5是概括并表述图4的擦除状态E和第一编程状态P1至第三编程状态P3之中彼此相邻的状态的阈值电压分布的示图。
在一些实施方案中,左侧的阈值电压分布代表处于P(x)状态的存储器单元的阈值电压分布,并且右侧的阈值电压分布代表处于P(x+1)状态的存储器单元的阈值电压分布。
与初始编程完成时相比,处于P(x)状态和P(x+1)状态的存储器单元的阈值电压可能改变的很多,因此这两个状态的阈值电压分布可能会重叠。在这种情况下,即使利用默认读取电压Vr_default执行读取操作,读取数据中也可能包括许多错误位。
存储器控制器可以通过使用多个采样电压执行读取操作来获得处于P(x)状态的阈值电压分布的平均电压。例如,存储器控制器可以使用利用多个采样电压所获得的采样数据的“0”或“1”的数量或者“0”或“1”的数量的改变量来计算阈值电压分布的平均电压。
此时,存储器控制器可以将彼此相邻的阈值电压分布的平均值(Vmean(x)和Vmean(x+1))的中值(平均电压之和的1/2)确定为最佳读取电压Vgm。
图6示出在软解码进程中使用的软读取电压的示例。
在一些实施方案中,与图5的情况相比,处于P(x)状态的存储器单元的阈值电压和处于P(x+1)状态的存储器单元的阈值电压可能改变的更多。在这种情况下,即使利用最佳读取电压Vgm执行读取操作,读取操作也可能失败。
软解码可以是使用具有不同电压电平的多个软读取电压来执行读取操作的恢复算法。软解码中使用的多个软读取电压可以是以最佳读取电压Vgm为基准具有恒定偏移的电压。
存储器控制器可以在以第一软读取电压Vsoft1至第四软读取电压Vsoft4的顺序改变读取电压的同时执行读取操作。
在各个实施例中,用于软解码的多个软读取电压可以是以通过图5描述的默认读取电压Vr_default为基准具有恒定偏移的电压,而非以最佳读取电压Vgm为基准具有恒定偏移的电压。
图7示出基于所公开技术的一些实施例的图1所示的存储器装置100的示例。
在一些实施方案中,存储器装置可以包括存储器单元阵列710、外围电路720和控制逻辑730。
存储器单元阵列710包括多个存储块BLK1至BLKz。多个存储块BLK1至BLKz通过行线RL连接到行解码器721。存储块BLK1至BLKz可以通过位线BL1至BLn连接到页面缓冲器组723。多个存储块BLK1至BLKz中的每一个包括多个存储器单元。作为实施例,多个存储器单元是非易失性存储器单元。连接到相同字线的存储器单元可以被定义为一个页面。因此,一个存储块可以包括多个页面。
行线RL可以包括至少一个源极选择线、多个字线和至少一个漏极选择线。
存储器单元阵列710中包括的存储器单元中的每一个可以被配置为存储一个数据位的单层单元(SLC)、存储两个数据位的多层单元(MLC)、存储三个数据位的三层单元(TLC)或存储四个数据位的四层单元(QLC)。
外围电路720可以被配置为在控制逻辑730的控制下对存储器单元阵列710的所选择的区域执行编程操作、读取操作或擦除操作。外围电路720可以驱动存储器单元阵列710。例如,外围电路720可以在控制逻辑730的控制下向行线RL和位线BL1至BLn施加各种操作电压或使所施加的电压放电。
存储器单元阵列710中包括的存储块中的任意一个可以包括关于默认读取电压的信息。
外围电路720可以包括行解码器721、电压生成器722、页面缓冲器组723、列解码器724和输入/输出电路725。
行解码器721通过行线RL连接到存储器单元阵列710。行线RL可以包括至少一个源极选择线、多个字线和至少一个漏极选择线。在实施例中,字线可以包括普通字线和虚设字线。在实施例中,行线RL可以进一步包括管道选择线。
行解码器721被配置为响应于控制逻辑730的控制而操作。行解码器721从控制逻辑730接收行地址RADD。
行解码器721被配置为对行地址RADD进行解码。行解码器721根据经解码的地址选择存储块BLK1至BLKz之中的至少一个存储块。另外,行解码器721可以根据经解码的地址选择所选择的存储块的至少一个字线,以将由电压生成器722生成的电压施加到该至少一个字线WL。
例如,在编程操作期间,行解码器721可以将编程电压施加到所选择的字线,并且将电平低于该编程电压的编程通过电压施加到未选择的字线。在编程验证操作期间,行解码器721可以将验证电压施加到所选择的字线,并且将高于该验证电压的验证通过电压施加到未选择的字线。在读取操作期间,行解码器721可以将读取电压施加到所选择的字线,并且将高于该读取电压的读取通过电压施加到未选择的字线。
在实施例中,以存储块为单位执行存储器装置100的擦除操作。在擦除操作期间,行解码器721可以根据经解码的地址选择一个存储块。在擦除操作期间,行解码器721可以将接地电压施加到连接到所选择的存储块的字线。
电压生成器722响应于控制逻辑730的控制而操作。电压生成器722被配置为使用供应到存储器装置的外部电源电压来生成多个电压。具体地,电压生成器722可以响应于操作信号OPSIG而生成在编程操作、读取操作和擦除操作中使用的各种操作电压Vop。例如,电压生成器722可以响应于控制逻辑730的控制而生成编程电压、验证电压、通过电压、读取电压、擦除电压等。
作为实施例,电压生成器722可以通过调节外部电源电压来生成内部电源电压。由电压生成器722生成的内部电源电压用作存储器装置100的操作电压。
作为实施例,电压生成器722可以使用外部电源电压或内部电源电压来生成多个电压。
例如,电压生成器722可以包括接收内部电源电压的多个泵浦电容器,并且响应于控制逻辑730的控制而选择性地启用多个泵浦电容器以生成多个电压。
所生成的多个电压可以由行解码器721供应到存储器单元阵列710。
缓冲器组723包括第一至第n页面缓冲器PB1至PBn。第一至第n页面缓冲器PB1至PBn分别通过第一至第n位线BL1至BLn连接到存储器单元阵列710。第一至第n页面缓冲器PB1至PBn在控制逻辑730的控制下进行操作。具体地,第一至第n页面缓冲器PB1至PBn可以响应于页面缓冲器控制信号PBSIGNALS而操作。例如,第一至第n页面缓冲器PB1至PBn可以临时存储通过第一至第n位线BL1至BLn接收的数据,或者可以在读取操作或验证操作期间感测位线BL1至BLn的电压或电流。
具体地,在编程操作期间,当将编程脉冲施加到所选择的字线时,第一至第n页面缓冲器PB1至PBn可以通过第一至第n位线BL1至BLn,将通过输入/输出电路725接收的数据DATA传送到所选择的存储器单元。根据所传送的数据DATA对所选择的页面的存储器单元进行编程。连接到施加了编程允许电压(例如,接地电压)的位线的存储器单元可以具有增加的阈值电压。连接到施加了编程禁止电压(例如,电源电压)的位线的存储器单元的阈值电压可以保持不变。在编程验证操作期间,第一至第n页面缓冲器PB1至PBn通过第一至第n位线BL1至BLn从所选择的存储器单元读取页面数据。
在读取操作期间,第一至第n页面缓冲器PB1至PBn通过第一至第n位线BL1至BLn从所选择的页面的存储器单元读取数据DATA,并且在列解码器724的控制下将所读取的数据DATA输出到输入/输出电路725。
在擦除操作期间,第一至第n页面缓冲器PB1至PBn可以使第一至第n位线BL1至BLn浮置。
列解码器724可以响应于列地址CADD而在输入/输出电路725和页面缓冲器组723之间传送数据。例如,列解码器724可以通过数据线DL与第一至第n页面缓冲器PB1至PBn交换数据,或者可以通过列线CL与输入/输出电路725交换数据。
输入/输出电路725可以将从参照图1描述的存储器控制器200接收的命令CMD和地址ADDR传送到控制逻辑730,或者可以与列解码器724交换数据DATA。
感测电路726可以在读取操作或验证操作期间响应于允许位信号VRYBIT而生成参考电流,并且可以将从页面缓冲器组723接收的感测电压VPB与由参考电流生成的参考电压进行比较,以输出通过信号PASS或失败信号FAIL。
控制逻辑730可以响应于命令CMD和地址ADDR而输出操作信号OPSIG、行地址RADD、页面缓冲器控制信号PBSIGNALS和允许位VRYBIT以控制外围电路120。
图8示出图7所示的存储块的示例。
存储块BLKi是图7的存储块BLK1至BLKz中的任意一个。
参照图8,彼此平行布置的多个字线可以连接在第一选择线和第二选择线之间。在此,第一选择线可以是源极选择线SSL,并且第二选择线可以是漏极选择线DSL。更具体地,存储块110可以包括连接在位线BL1至BLn和源极线SL之间的多个串ST。位线BL1至BLn可以分别连接到串ST,源极线SL可以共同连接到串ST。因为串ST可以被配置为彼此相同,所以将作为示例来具体描述连接到第一位线BL1的串ST。
串ST可以包括串联在源极线SL和第一位线BL1之间的源极选择晶体管SST、多个存储器单元MC1至MC16和漏极选择晶体管DST。一个串ST可以包括至少一个源极选择晶体管SST和至少一个漏极选择晶体管DST,并且可以包括比附图中所示的数量更多的存储器单元MC1至MC16。
源极选择晶体管SST的源极可以连接到源极线SL,并且漏极选择晶体管DST的漏极可以连接到第一位线BL1。存储器单元MC1至MC16可以串联连接在源极选择晶体管SST和漏极选择晶体管DST之间。不同的串ST中包括的源极选择晶体管SST的栅极可以连接到源极选择线SSL,漏极选择晶体管DST的栅极可以连接到漏极选择线DSL,并且存储器单元MC1至MC16的栅极可以连接到多个字线WL1至WL16。不同的串ST中包括的存储器单元之中连接到相同字线的一组存储器单元可以被称为页面PG。因此,存储块BLKi可以包括字线WL1至WL16的数量的页面PG。
一个存储器单元可以存储一个数据位。这通常被称为单层单元(SLC)。在这种情况下,一个物理页面PG可以存储一个逻辑页面(LPG)数据。一个逻辑页面(LPG)数据可以包括与一个物理页面PG中包括的单元相同数量的数据位。
一个存储器单元可以存储两个或更多个数据位。在这种情况下,一个物理页面PG可以存储两个或更多个逻辑页面(LPG)数据。
图9A至图9C示出如图2所示的用于存储最佳读取电压的数据存储设备的示例。
图9A示出了最佳读取电压Optimum Read Voltage与存储器装置或存储器芯片中的计算了最佳读取电压的芯片地址一起存储在最佳读取电压存储设备212-2(1)中的状态。在实施例中,存储器芯片中的每一个可以包括两个或更多个平面。在这种情况下,芯片地址和平面地址可以一起存储在最佳读取电压存储设备212-2(1)中。
图9B示出最佳读取电压Optimum Read Voltage与存储器芯片中的计算了最佳读取电压的平面地址一起存储在最佳读取电压存储设备212-2(2)中的状态。图9B假设一个存储器装置中包括一个存储器芯片,但是所公开技术不限于此。在实施例中,存储器装置中可以包括两个或更多个存储器芯片。
图9C示出最佳读取电压Optimum Read Voltage与存储器芯片中的计算了最佳读取电压的块地址一起存储在最佳读取电压存储设备212-2(3)中的状态。在各个实施例中,芯片地址、平面地址和块地址可以一起存储在最佳读取电压存储设备212-2(3)中。
图10是示出基于所公开技术的实施例的数据存储装置的操作的流程图。
在一些实施方案中,在步骤S1001中,数据存储装置计算针对多个读取操作之中所选择的读取操作的最佳读取电压。在此,多个读取操作可以是使用默认读取电压的读取操作失败的读取操作。
在步骤S1003中,数据存储装置可以利用所选择的读取操作的最佳读取电压执行多个读取操作。具体地,数据存储装置可以计算用于读取所选择的读取操作的物理地址中包括的存储器单元的最佳读取电压,并且使用计算出的最佳读取电压对多个读取操作执行最佳读取电压重试。最佳读取电压重试可以是使用最佳读取电压来执行读取操作。
在步骤S1005中,数据存储装置可以确定最佳读取电压重试是否通过。也就是说,当利用最佳读取电压执行读取操作的读取数据中包括的错误位的数量超过可校正错误位的数量时,最佳读取电压重试可能失败。相反地,当利用最佳读取电压执行读取操作的读取数据中包括的错误位的数量等于或小于可校正错误位的数量时,最佳读取电压重试可以通过。作为步骤S1005中确定的结果,当最佳读取电压重试通过时,因为获得了原始数据,所以操作结束。相反,当最佳读取电压重试失败时,操作进行到步骤S1007。
在步骤S1007中,数据存储装置可以确定最佳读取电压重试失败的读取操作的平面地址是否与所选择的读取操作的平面地址相同。作为确定的结果,最佳读取电压重试失败的读取操作的平面地址与所选择的读取操作的平面地址相同,操作进行到步骤S1009,否则,操作进行到步骤S1011。
在步骤S1009中,数据存储装置可以对最佳读取电压重试失败的读取操作的平面地址与所选择的读取操作的平面地址相同的读取操作执行软解码。
在步骤S1011中,数据存储装置可以再次选择最佳读取电压重试失败的读取操作中的任意一个,并且在步骤S1013中,数据存储装置可以利用再次选择的读取操作的最佳读取电压对失败的读取操作执行最佳读取电压重试。
图11是示出基于所公开技术的实施例而实施的存储卡系统的示例的框图。
在一些实施方案中,存储卡系统2000包括存储器控制器2100、存储器装置2200和连接器2300。
存储器控制器2100连接到存储器装置2200。存储器控制器2100被配置为访问存储器装置2200。例如,存储器控制器2100被配置为执行读取操作、编程操作和擦除操作,或者控制存储器装置2200的后台操作。存储器控制器2100被配置为提供存储器装置2200与主机之间的接口。存储器控制器2100被配置为驱动用于控制存储器装置2200的固件。存储器控制器2100可以与参照图1描述的存储器控制器200等同地进行实施。
例如,存储器控制器2100可以包括诸如随机存取存储器(RAM)、处理器、主机接口、存储器接口和错误校正器的组件。
存储器控制器2100可以通过连接器2300与外部装置通信。存储器控制器2100可以根据特定的通信标准与外部装置(例如,主机)通信。例如,存储器控制器2100被配置为通过诸如以下的各种通信标准中的至少一种与外部装置通信:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(MCM)、外围组件互连(PCI)、高速PCI(PCI-E)、高级技术附件(ATA)、串行ATA、并行ATA、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、Wi-Fi、蓝牙和NVMe。例如,连接器2300可以由上述各种通信标准中的至少一种定义。
例如,存储器装置2200可以被实施为诸如以下的各种非易失性存储器元件:电可擦除可编程ROM(EEPROM)、NAND闪速存储器、NOR闪速存储器、相变RAM(PRAM)、电阻式RAM(ReRAM)、铁电RAM(FRAM)和自旋扭矩磁性RAM(STT-MRAM)。
例如,存储器控制器2100或存储器装置2200可以以诸如以下的方法进行封装并作为一个半导体封装提供:堆叠封装(PoP)、球栅阵列(BGA)、芯片级封装(CSP)、塑料引线芯片载体(PLCC)、塑料双列直插式封装(PDIP)、窝伏尔组件中的管芯(die in waffle pack)、晶圆形式的管芯、板上芯片(COB)、陶瓷双列直插式封装(CERDIP)、塑料公制四方扁平封装(MQFP)、薄型四方扁平封装(TQFP)、小外形(SOIC)、收缩型小外形封装(SSOP)、薄型小外形(TSOP)、系统级封装(SIP)、多芯片封装(MCP)、晶圆级制造封装(WFP)或晶圆级处理堆叠封装(WSP)。可选地,存储器装置2200可以包括多个非易失性存储器芯片,并且可以基于上述封装方法将多个非易失性存储器芯片封装并设置为一个半导体封装。
例如,存储器控制器2100和存储器装置2200可以集成到一个半导体装置中。例如,存储器控制器2100和存储器装置2200可以集成到一个半导体装置中以配置固态驱动器(SSD)。存储器控制器2100和存储器装置2200可以集成到一个半导体装置中以配置存储卡。例如,存储器控制器2100和存储器装置2200可以集成到一个半导体装置中以配置诸如以下的存储卡:PC卡(个人计算机存储卡国际协会(PCMCIA))、紧凑型闪存卡(CF)、智能媒体卡(SM或SMC)、记忆棒、多媒体卡(MMC、RS-MMC、微型MMC或eMMC)、SD卡(SD、迷你SD、微型SD或SDHC)和通用闪存(UFS)。
例如,存储器装置2200可以是参照图1描述的存储器装置100。
图12是示出基于所公开技术的实施例而实施的固态驱动器(SSD)系统的示例的框图。
在一些实施方案中,SSD系统3000包括主机3100和SSD 3200。SSD 3200通过信号连接器3001与主机3100交换信号SIG,并且通过电源连接器3002接收电力PWR。SSD 3200包括SSD控制器3210、多个闪速存储器3221至322n、辅助电源装置3230和缓冲存储器3240。
在实施例中,SSD控制器3210可以执行参照图1描述的存储器控制器200的功能。
SSD控制器3210可以响应于从主机3100接收的信号SIG而控制多个闪速存储器3221至322n。例如,信号SIG可以是基于主机3100和SSD3200之间的接口的信号。例如,信号SIG可以是由诸如以下接口中的至少一种定义的信号:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCI-E)、高级技术附件(ATA)、串行ATA、并行ATA、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、Wi-Fi、蓝牙和NVMe。
辅助电源装置3230通过电源连接器3002连接到主机3100。辅助电源装置3230可以从主机3100接收电力PWR并且可以充电。当来自主机3100的电力供应不平稳时,辅助电源装置3230可以提供SSD 3200的电力。例如,辅助电源装置3230可以位于SSD 3200中或者可以位于SSD3200外部。例如,辅助电源装置3230可以位于主板上并且可以将辅助电力提供到SSD 3200。
缓冲存储器3240用作SSD 3200的缓冲存储器。例如,缓冲存储器3240可以临时存储从主机3100接收的数据或从多个闪速存储器3221至322n接收的数据,或者可以临时存储闪速存储器3221至322n的元数据(例如,映射表)。缓冲存储器3240可以包括诸如DRAM、SDRAM、DDR SDRAM、LPDDR SDRAM和GRAM的易失性存储器,或者诸如FRAM、ReRAM、STT-MRAM和PRAM的非易失性存储器。
例如,非易失性存储器3321至322n可以是参照图1描述的存储器装置100。
图13是示出基于所公开技术的实施例而实施的用户系统的示例的框图。
在一些实施方案中,用户系统4000包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。
应用处理器4100可以驱动用户系统4000中包括的组件、操作系统(OS)、用户程序等。例如,应用处理器4100可以包括控制用户系统4000中包括的组件的控制器、接口、图形引擎等。应用处理器4100可以被设置为片上系统(SoC)。
存储器模块4200可以作为用户系统4000的主存储器、操作存储器、缓冲存储器或高速缓存存储器来操作。存储器模块4200可以包括诸如DRAM、SDRAM、DDR SDRAM、DDR2SDRAM、DDR3SDRAM、LPDDR SDARM、LPDDR2 SDRAM和LPDDR3 SDRAM的易失性随机存取存储器,或者诸如PRAM、ReRAM、MRAM和FRAM的非易失性随机存取存储器。例如,可以基于堆叠封装(POP)将应用处理器4100和存储器模块4200封装并设置为一个半导体封装。
网络模块4300可以与外部装置通信。例如,网络模块4300可以支持诸如以下的无线通信:码分多址(CDMA)、全球移动通信系统(GSM)、宽带CDMA(WCDMA)、CDMA-2000、时分多址(TDMA)、长期演进、Wimax、WLAN、UWB、蓝牙和WI-FI。例如,网络模块4300可以被包括在应用处理器4100中。
存储模块4400可以存储数据。例如,存储模块4400可以存储从应用处理器4100接收的数据。可选地,存储模块4400可以将该存储模块4400中存储的数据传输到应用处理器4100。例如,存储模块4400可以被实施为诸如以下的非易失性半导体存储器元件:相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、NAND闪存、NOR闪存和三维NAND闪存。例如,存储模块4400可以被设置为用户系统4000的诸如存储卡和外部驱动器的可移动数据存储装置(可移动驱动器)。
例如,存储模块4400可以包括多个非易失性存储器装置,并且多个非易失性存储器装置可以是参照图1描述的存储器装置100。
用户接口4500可以包括用于向应用处理器4100输入数据或指令或者用于向外部装置输出数据的接口。例如,用户接口4500可以包括用户输入接口,诸如键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、照相机、麦克风、陀螺仪传感器、振动传感器和压电元件。用户接口4500可以包括用户输出接口,诸如液晶显示器(LCD)、有机发光二极管(OLED)显示装置、有源矩阵OLED(AMOLED)显示装置、LED、扬声器和监视器。
本文中仅提供了所公开技术的有限示例、特征和实施方案。可以基于所公开的内容实现其它特征、实施方案和变型。