一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

存储器系统中的破坏性读取的管理的制作方法

2021-08-17 13:49:00 来源:中国专利 TAG:子系统 存储器 地说 破坏性 读取
存储器系统中的破坏性读取的管理的制作方法

本公开的实施例大体上涉及存储器子系统,且更明确地说,涉及管理包括存储器子系统中的破坏性读取的存储器子系统。



背景技术:

存储器子系统可以是存储系统,例如固态驱动器(ssd)或硬盘驱动器(hdd)。存储器子系统可以是存储器模块,例如双列直插存储器模块(dimm),小轮廓dimm(so-dimm)或非易失性双列直插存储器模块(nvdimm)。存储器子系统可以包括存储数据的一或多个存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。一般来说,主机系统可利用存储器子系统在存储器组件处存储数据并从存储器组件检索数据。

附图说明

从以下给出的详细描述和从本公开的各种实施例的附图将更全面地理解本公开。

图1说明根据本公开的一些实施例的包括存储器子系统的实例性计算环境。

图2是根据本公开的一些实施例的在部分写之后执行单向错误恢复流程(erf)以避免进一步的偏斜数据破坏(sdc)的实例性方法的流程图。

图3是根据本公开的一些实施例的在读取之后检测sdc的实例性方法的流程图。

图4a是说明根据本公开的一些实施例的引起部分写的两个状态分布之间的读电压电平的曲线图。

图4b是说明根据本公开的一些实施例的由图4a中的两个状态分布之间的读电平电压引起的部分写效应的曲线图。

图5a是说明根据本公开的一些实施例在两个状态分布之间引起沿第一方向的部分写的读电压电平的曲线图。

图5b是说明根据本公开的一些实施例的通过在相反方向上调节读电平电压和/或执行刷新写操作以减少部分写的影响来避免部分写的进一步加剧的单向erf的曲线图。

图5c是说明根据本公开的一些实施例在两个状态分布之间引起第二方向上的部分写的读电压电平的曲线图。

图5d是说明根据本公开的一些实施例的通过在相反方向上调节读电平电压来避免部分写的进一步加剧的单向erf的曲线图。

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

具体实施方式

本公开的各方面涉及存储器子系统上的单向错误恢复流程(erf)操作。存储器子系统在下文中也称为“存储器装置”。存储器子系统的实例是经由外围互连(例如,输入/输出总线、存储区域网络)耦合到中央处理单元(cpu)的存储装置。存储装置的实例包括固态驱动器(ssd)、闪存驱动器、通用串行总线(usb)闪存驱动器和硬盘驱动器(hdd)。存储器子系统的另一实例是经由存储器总线耦合到cpu的存储器模块。存储器模块的实例包括双列直插存储器模块(dimm)、小轮廓dimm(so-dimm)、非易失性双列直插存储器模块(nvdimm)等。在一些实施例中,存储器子系统可以是混合存储器/存储子系统。通常,主机系统可利用包括一或多个存储器组件的存储器子系统。主机系统可提供将被存储在存储器子系统处的数据,并且可请求将从存储器子系统被检索的数据。

存储器子系统可包括可存储来自主机系统的数据的多个存储器组件。每个存储器组件可以包括不同类型的介质。介质的实例包括但不限于非易失性存储器和诸如单级单元(slc)存储器、三级单元(tlc)存储器和四级单元(qlc)存储器之类的基于闪存的存储器的交叉点阵列。不同类型的介质的特性可能因介质类型的不同而不同。与存储器组件相关联的特性的一个实例是数据密度。数据密度对应于存储器组件的每个存储器单元可存储的数据量(例如,数据位)。使用基于快闪的存储器的实例,四级单元(qlc)可存储四位数据,而单级单元(slc)可存储一位数据。因此,包括qlc存储器单元的存储器组件将具有比包括slc存储器单元的存储器组件更高的数据密度。存储器组件的特性的另一实例是访问速度。访问速度对应于存储器组件访问存储在存储器组件处的数据的时间量。

存储器组件的其它特性可与存储器组件存储数据的耐久性相关联。当数据被写入到存储器组件的存储器单元和/或从存储器组件的存储器单元擦除时,存储器单元可能被损坏。随着对存储器单元执行的写入操作和/或擦除操作的数目增加,存储在存储器单元处的数据(包括错误)增加且存储器单元被日益损坏的概率增加。与存储器组件的耐久性相关联的特性是对存储器组件的存储器单元执行的写入操作的数目或编程/擦除操作的数目。如果超过对存储器单元执行的写入操作的阈值数目,那么数据可不再可靠地存储在存储器单元处,因为数据可能会包括大量无法校正的错误。不同的介质类型还可以具有用于存储数据的不同耐久性。例如,第一介质类型可以具有1,000,000个写入操作的阈值,而第二介质类型可以具有2,000,000个写入操作的阈值。因此,第一介质类型存储数据的耐久性小于第二介质类型存储数据的耐久性。

与存储器组件存储数据的耐久性相关联的另一特性是写入到存储器组件的存储器单元的字节总数。类似于写入操作的次数,当新数据被写入到存储器组件的相同存储器单元时,存储器单元被损坏且存储在存储器单元处的数据包括错误的概率增加。如果写入到存储器组件的存储器单元的字节总数超过阈值数,则存储器单元不再能够可靠地存储数据。

与存储器组件相关联的另一特性是偏斜数据破坏(sdc)。sdc是指由部分写引起的单元从一个状态到另一个状态的不平衡移位的现象。部分写起因于数个存储器单元被作为第一状态写入且被作为第二状态读取(例如,从低电压(lv)转移到高电压(hv)状态或从hv转移到lv状态)。sdc的主要原因是由于读电压施加得太多且与部分写效应的方向相反,从而导致读取损坏(部分写hv到lv,或者lv到hv,其中这种部分写方向取决于存储器类型)。在一些情况下,由于循环磨损、单元变化、各种源的干扰、温度等,状态分布的尾部重叠。在其它情况下,状态分布具有复杂的形状和行为,其作为时间、循环磨损、工作负载模式和装置状态的函数而改变。分布重叠和状态分布中的这些变化可导致数据中不可避免地发生部分写,从而导致单元从一个状态到另一个状态的不平衡移位。可能一个读电压不足以成功地读取数据(同时不引起sdc),但下一读电压变成破坏性读取且引起sdc。

常规的存储器子系统通常不识别sdc的发生,并且不实施用以补救由sdc引起的效应的方案。在常规存储器子系统中通常不使用sdc的特性来识别和补救sdc的发生。然而,由sdc引起的高原始误码率(rber)会极大地损害单元对其它噪声的鲁棒性。结果,常规存储器子系统通常调用额外的错误恢复处理来校正由sdc引起的错误。额外的错误恢复处理可能导致服务质量(qos)的损失,包括等待时间、吞吐量等。结果,传统的存储器子系统通常不能相对于sdc管理存储器组件。

如本文所述,本公开的各方面通过在发生部分写时使用单向erf并响应于满足阈值标准的方向性错误位计数而使用刷新写操作来解决以上和其它缺陷。这种存储器子系统可通过管理存储器组件中的破坏性读取、识别sdc的发生、补救sdc的影响或两者来降低成本。此外,使用具有带sdc管理的多个存储器组件的存储器子系统可导致维持单元对其它噪声的鲁棒性,通过减少由部分写引起的错误来减少额外错误恢复处理,且维持或改进qos,包括等待时间、处理量等。本文所描述的是涉及存储器系统的存储器组件上的单向erf操作的实施例。处理装置可确定读操作是否已引起或遭受部分写,且可在必要时执行刷新写。当从读操作成功解码读操作时,处理装置可确定从读操作获得的成功解码数据的方向性错误位计数(ebc)。当读操作未被成功解码时,处理装置可从其erf确定ebc。基于成功解码的数据的方向性ebc或其erf,处理装置可确定读操作是否已引起或遭受部分写,且可在必要时执行刷新写。所述部分写起因于数个存储器单元被作为第一状态写入且被作为第二状态读取。所述处理装置通过在第一方向上从第一离散读电压电平向第二读电压电平单调地调整用于一或多个重读操作的读电压电平,直到来自所述一或多个重读操作的数据被成功解码为止,来对所述存储器单元执行单向erf。所述第一方向对应于所述部分写的状态移位的相反方向。下面更详细地描述单向erf和刷新写操作的附加细节。

图1说明根据本公开的一些实施例的包括存储器子系统110的实例性计算环境100。存储器子系统110可以包括介质,例如存储器组件112a至112n。存储器组件112a至112n可以是易失性存储器组件、非易失性存储器组件或其组合。在一些实施例中,存储器子系统是存储系统。存储系统的一个实例是ssd。在一些实施例中,存储器子系统110是混合存储器/存储子系统。一般来说,计算环境100可以包括使用存储器子系统110的主机系统120。例如,主机系统120可向存储器子系统110写入数据并从存储器子系统110读取数据。

主机系统120可以是计算装置,诸如台式计算机、膝上型计算机、网络服务器、移动装置或包括存储器和处理装置的此类计算装置。主机系统120可包括或耦合到存储器子系统110,使得主机系统120可从存储器子系统110读取数据或将数据写入存储器子系统。主机系统120可经由物理主机接口耦合到存储器子系统110。如本文所使用的,“耦合到”一般是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有介入组件),无论是有线的还是无线的,包括诸如电、光、磁等的连接。物理主机接口的实例包括但不限于串行高级技术附接(sata)接口、高速外围组件互连(pcie)接口、通用串行总线(usb)接口、光纤信道、串行附接scsi(sas)等。物理主机接口可用于在主机系统120和存储器子系统110之间传输数据。主机系统120可进一步利用nvm快速(nvme)接口,以在存储器子系统110通过pcie接口与主机系统120耦合时存取存储器组件112a至112n。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。

存储器组件112a至112n可包括不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包括负与(nand)型闪速存储器。存储器组件112a至112n中的每一个可包括存储器单元的一或多个阵列,诸如单级单元(slc)或多级单元(mlc)(例如,三级单元(tlc)或四级单元(qlc))。在一些实施例中,特定存储器组件可包括存储器单元的slc部分和mlc部分两者。存储器单元中的每一个可存储主机系统120所使用的一或多个数据位(例如,数据块)。尽管描述了诸如nand型闪速存储器的非易失性存储器组件,但是存储器组件112a至112n可基于诸如易失性存储器的任何其它类型的存储器。在一些实施例中,存储器组件112a至112n可以是但不限于随机存取存储器(ram)、只读存储器(rom)、动态随机存取存储器(dram)、同步动态随机存取存储器(sdram)、相变存储器(pcm)、磁随机存取存储器(mram)、负或(nor)闪存、电可擦除可编程只读存储器(eeprom)和非易失性存储器单元的交叉点阵列。结合可堆叠交叉网格化数据存取阵列,非易失性存储器的交叉点阵列可基于体电阻的变化执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行原位写入操作,其中可在不预先擦除非易失性存储器单元的情况下编程非易失性存储器单元。此外,存储器组件112a至112n的存储器单元可被分组为存储器页或数据块,其可指代用于存储数据的存储器组件的单元。

存储器系统控制器115(下文中被称为“控制器”)可与存储器组件112a至112n通信以执行诸如在存储器组件112a至112n处读取数据、写入数据或擦除数据的操作及其它此些操作。控制器115可包括诸如一或多个集成电路和/或分立元件的硬件、缓冲存储器或其组合。控制器115可为微控制器、专用逻辑电路(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等)或其它合适的处理器。控制器115可包括处理器(处理装置)117,其经配置以执行存储于本地存储器119中的指令。在所说明的实例中,控制器115的本地存储器119包括嵌入式存储器,其经配置以存储用于执行控制存储器子系统110的操作(包括处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程的指令。在一些实施例中,本地存储器119可包括存储存储器指针、被取出的数据等的存储器寄存器。本地存储器119还可包括用于存储微代码的只读存储器(rom)。尽管已经将图1中的实例性存储器子系统110说明为包括控制器115,但在本公开的另一实施例中,存储器子系统110可不包括控制器115,而是可依赖于外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供)。

通常,控制器115可从主机系统120接收命令或操作,并且可将所述命令或操作转换成指令或适当命令以实现对存储器组件112a至112n的期望存取。控制器115可负责其它操作,例如损耗均衡操作、垃圾收集操作、错误检测及纠错码(ecc)操作、加密操作、高速缓存操作及与存储器组件112a至112n相关联的逻辑块地址与物理块地址之间的地址转换。控制器115还可以包括通过物理主机接口与主机系统120通信的主机接口电路。主机接口电路可将从主机系统接收的命令转换成命令指令以存取存储器组件112a至112n,以及将与存储器组件112a至112n关联的响应转换成用于主机系统120的信息。

存储器子系统110还可以包括未示出的附加电路或组件。在一些实施例中,存储器子系统110可包括高速缓存或缓冲器(例如,dram)和地址电路(例如,行解码器和列解码器),其可从控制器115接收地址并解码所述地址以存取存储器组件112a至112n。

存储器子系统110包括单向erf组件113,其可用于识别并最小化由存储器组件的一或多个存储器单元中的破坏性读取引起的偏斜数据破坏(sdc)。在一些实施例中,控制器115包括单向erf组件113的至少一部分。例如,控制器115可以包括处理器117(处理装置),其被配置为执行存储在本地存储器119中的指令,用于执行这里描述的操作。在一些实施例中,单向erf组件113是主机系统120、应用程序或操作系统的一部分。

单向erf组件113可以确定来自对存储器子系统110a的存储器组件112a至112中的任何一个的一组单元的读操作的数据由于数据的部分写而未被成功解码。如本文中所描述,部分写起因于数个存储器单元被作为第一状态写入且被作为第二状态读取(例如,对于类型ii存储器从lv转移到hv状态或对于类型i存储器从hv转移到lv状态)。在lv状态,相对较低的外部电压可以接通单元,而在hv状态,需要相对较高的电压来接通单元。当读取单元时,施加某一电平的外部电压v,使得其高到足以接通lv单元或不够高到足以接通hv单元。单向erf组件113可通过在第一方向上从第一离散读电压电平向第二读电压电平单调地调整用于一或多个重读操作的读电压电平直到来自所述一或多个重读操作的数据被成功解码为止,来对存储器单元执行单向erf。所述第一方向对应于所述部分写的状态移位的相反方向。单向erf组件113还可以选择被成功解码的一或多个重读操作相应重读操作的读电压电平。单向erf组件113可识别由存储器单元中的特性引起的数据中的偏斜数据破坏(sdc)的发生。对应的重读操作的读电压电平的选择加宽了存储器单元上的一或多个后续操作的(基于读取决策的)第一状态与第二状态之间的容限。单向erf组件113可以计算方向性错误位计数(ebc),方向性ebc指示被作为第一状态写入和被作为第二状态读取的存储器单元的数目。单向erf组件113可以将方向性ebc与方向性ebc阈值标准进行比较。单向erf组件113可以响应于方向性ebc满足方向性ebc阈值标准而执行数据的刷新写。当数据被成功解码时,方向性ebc可被用作sdc的指示符。由单向erf组件113执行的单向erf识别由存储器单元中的特性引起的数据中sdc的发生。下面描述关于单向erf组件113的操作的进一步细节。

图2是根据本公开的一些实施例的在部分写之后执行单向错误恢复流程(erf)以避免进一步的偏斜数据破坏(sdc)的实例性方法200的流程图。方法200可由可包括硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑来执行。在一些实施例中,方法200由图1的存储器单向erf组件113执行。尽管以特定的顺序或次序示出,但除非另有说明,可以修改过程的次序。因此,所说明的实施例应仅理解为实例,且所说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中可以省略一或多个过程。因此,不是在每个实施例中都需要所有的过程。其它过程流程也是可能的。

在操作210,处理装置在存储器组件的一组存储器单元上发出具有初始读电压电平的读操作。在操作220,处理装置确定来自读操作的数据由于数据的部分写而未被成功解码,其中,所述部分写起因于存储器单元群组的多个存储器单元被作为第一状态写入且被作为第二状态读取。在操作230,处理装置通过在第一方向上将用于一或多个重读操作的读电压电平从第一离散读电压电平单调地调整到第二读电压电平来对存储器单元群组执行单向erf,直到来自所述一或多个重读操作的数据被成功解码为止。所述第一方向对应于所述部分写的状态移位的相反方向。

在另一实施例中,所述处理装置选择被成功解码的所述一或多个重读操作的对应重读操作的读电压电平,且识别由所述组存储器单元中的特性引起的数据中sdc的发生。对应的重读操作的读电压电平的选择加宽了存储器单元群组上的一或多个后续操作的基于读取决策的第一状态与第二状态之间的容限。在另一实施例中,处理装置计算方向性ebc,其指示作为第一状态写入且作为第二状态读取的存储器单元群组的数目。处理装置将方向性ebc与方向性ebc阈值标准进行比较,并且响应于方向性ebc满足方向性ebc阈值标准而执行数据的刷新写。当数据被成功解码时,处理装置可以使用方向性ebc作为sdc的指示符。单向erf识别由存储器单元组中的特性引起的数据中sdc的出现。应注意,在类型i存储器的情况下,第二状态是低电压(lv)状态,且可指派给逻辑1(或逻辑0),且第一状态是指派给逻辑0(或逻辑1)的高电压(hv)。或者,对于类型ii存储器,第二状态是hv状态,而第一状态是lv状态。

尽管上文关于图2描述的实施例针对其中原始读操作已失败且调用erf以成功解码数据的情形,但在其它实施例中,处理装置可确定读操作是否已引起或遭受部分写且可在必要时执行刷新写。当从读操作成功解码读操作时,处理装置可确定从读操作获得的成功解码数据的ebc。当读操作未被成功解码时,处理装置可如上所述从其erf确定ebc。基于成功解码的数据的方向性ebc或其erf,处理装置可确定读操作是否已引起或遭受部分写,且可在必要时执行刷新写。

应注意,读操作可能与部分写方向相反或沿该方向太远。在第一种情况下,读操作可能导致sdc,并且此时解码器可能成功或失败。当故障时,可执行erf。在第二种情况下,将发生sdc,并且解码器可以成功或失败。当故障时,可执行erf。换句话说,一旦读操作失败并进入erf,它可能是由于读电压与部分写方向相反或沿着它太远。在第一种情况下,sdc已经由原始读操作引起,并且单向erf不能避免sdc,但是可以避免其它可能的sdc(其可能由未优化的erf方案引起,例如使用与部分写方向相反的更远离原始读电压的电压)。如以下参考图3更详细描述的,存在读操作和erf(如果有的话)的不同可能结果和处理。举例来说,读操作可直接成功解码,且处理装置可确定ebc是否满足方向性ebc阈值,所述方向性ebc阈值指示部分写已由原始读取引起,从而致使执行刷新写。

图3是根据本公开的一些实施例的检测并最小化由破坏性读取引起的sdc的实例性方法300的流程图。方法300可由可包括硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑来执行。在一些实施例中,方法300由图1的存储器单向erf组件113执行。尽管以特定的顺序或次序示出,但除非另有说明,可以修改过程的次序。因此,所说明的实施例应仅理解为实例,且所说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中可以省略一或多个过程。因此,不是在每个实施例中都需要所有的过程。其它过程流程也是可能的。

在操作310,处理装置在存储器组件上发出具有起始读电压的读操作。在操作320,处理装置确定来自读操作的数据是否被成功解码。在操作330,当来自读操作的数据在操作320处未被成功解码时,处理装置在操作330处对存储器组件执行单向erf,直到数据被成功解码为止。具体地,在操作330,处理装置可以检查是否已经尝试所有读电压来从存储器组件读取数据。在第一实例中,处理装置进行到操作340。在操作340,处理装置将在操作310处使用的读电压调整到第二读电压电平,并在存储器组件上发出具有第二读电压的第二读操作。处理装置确定来自第二读操作的数据是否被成功解码(操作320)。当在操作320处未从第二读操作成功解码数据时,处理装置在操作330处检查是否已尝试所有读电压。如果否,则在操作340,处理装置将先前使用的第二读电压调整为第三读电压,并在存储器组件上发出具有第三读电压的第三读操作。在操作320,处理装置确定数据是否从第三读操作被成功解码。如果在操作320没有成功解码数据并且在操作330已经确定已经尝试了所有读电压,则处理装置在操作350报告不可校正的纠错失败(例如,不可校正的纠错码(uecc))。一旦在操作320成功地解码了数据,则处理装置在操作360计算方向性ebc(是否计算0->1或1->0方向性ebc,取决于存储器类型)。在操作370,处理装置将方向性ebc与方向性ebc阈值标准进行比较。应注意,方向性ebc阈值标准取决于存储器装置(例如,是否使用0->1阈值或1->0阈值,取决于存储器类型)。如果在操作370方向性ebc满足方向性ebc阈值标准,则处理装置认为sdc已经发生,并且在操作380执行数据的刷新写以减小/最小化sdc,并且在操作390结束读操作。如果在操作370方向性ebc不满足方向性ebc阈值标准,则处理装置在操作390完成读操作。

如上所述,处理装置可以确定读操作是否已经引起或遭受部分写,并且可以在必要时执行刷新写。当从读操作成功解码读操作时,处理装置可确定从读操作获得的成功解码数据的ebc。当读操作未被成功解码时,处理装置可从其erf确定ebc。基于成功解码的数据的方向性ebc或其erf,处理装置可确定读操作是否已引起或遭受部分写,且可在必要时执行刷新写。

在另一实施例中,为了执行单向erf,处理装置在存储器组件上发出具有第二读电压的第二读操作。在一些情况下,第二读电压是当部分写在一个方向上时可用的离散读电压中的最高电压。当发出具有第三读电压的第三读操作时,第三读电压低于第二读电压(最高可用读电压)。在其它情况下,第二读电压是当部分写处于另一方向时可用的离散读电压中的最低电压。在这些情况下,当发出具有第三读电压的第三读操作时,第三读电压高于第二读电压(最低可用读电压)。以此方式,处理装置从对应于部分写的方向的最高或最低可用读电压开始单调地调整读电压电平。举例来说,处理装置可进一步确定第三读操作未被成功解码,且依据部分写的方向而发出具有低于或高于第三读电压的第四读电压的第四读操作。在其它实施例中,可存在具有对应的第五、第六、第七读电压等的第五、第六、第七读操作等。

在另一实施例中,为了响应于由被作为第一状态写入且被作为第二状态读取的数个存储器单元引起的部分写而执行单向erf,处理装置在第一方向上将用于一或多个重读操作的读电压从第一离散读电压单调地调整到第二读电压,直到来自所述一或多个重读操作的数据被成功解码为止,第一方向对应于部分写的状态移位的相反方向。如本文所述,处理装置可在尝试用于一或多个重读操作的所有可用读电压之后确定数据未被成功解码,且可报告存储器组件的存储器单元的uecc故障。

以下描述针对可存储1位值且可被编程为两个电压状态中的一个(下文分别称为低电压(lv)状态及高电压(hv)状态或简称为第二状态及第一状态)的单级单元(slc)。本文所述的实施例可用于其它单元类型,例如在具有四个或四个以上可能状态的每一单元中存储n位值的多级单元(mlc)。每一状态表示不同值且可被指派在所有可能阈值电压的范围内的电压窗口。存储器单元将数据存储为每一单元的阈值电压。由于编程操作的变化和存储器单元的特性的变化,编程到相同状态的存储器单元的阈值电压最初分布在此电压窗口上,例如图4a中所说明。

图4a是说明根据本公开的一些实施例的引起部分写408的两个状态分布404、406之间的读电压电平402的曲线图400。曲线图400示出了存储器组件的单级单元(slc)的阈值电压分布。阈值电压分布可表示一组单元,例如一条字线或一组字线、一组字线的区块等。x轴示出阈值电压,其跨越某一电压范围。y轴示出所表示的所有存储器单元上的每一电压电平的概率密度。每一阈值电压状态的阈值电压分布(也称为vt分布或编程分布)可表示为跨越状态的电压窗口的概率密度曲线。具体地,第二状态分布404对应于第二状态,其被标记为lv状态的和对应的位值“1”,并且第一状态分布406对应于第一状态,其被标记为hv状态和对应的位值“0”。应注意,在其它实施例中,位值可映射到不同状态,例如lv状态对应于位值“0”且hv状态对应于位值“1”。

可通过将读参考电压施加到每一单元上以感测单元的阈值电压来从存储器组件读取数据。为了读取存储在单级单元中的值,仅需要将具有位值1的状态与具有位值0的状态区分开。单个读电压电平402(也称为读电压或读参考电压)用于区分两个状态(lv和hv状态)。尽管针对单级单元的两种状态分布进行了描述,但是在多级单元中可以使用类似的方法。为了读取存储器单元的状态,读操作可将读电压电平402施加到存储器单元。来自多个字线(wl)的单元可在共享位线(bl)上串联连接到读出放大器,所述读出放大器将正从所述区块读取的值驱动到存储器信道上。

在编程和擦除单元期间会引入若干不同类型的错误,称为p/e循环过程。例如,存在p/e循环错误、编程错误、数据保持错误、由于读取干扰引起的错误、部分写等。如上所述,由于编程操作和不同单元上的变化,编程到相同状态的单元的阈值电压分布在电压窗口上。lv单元的最小单元开路电压形成统计分布,如第二状态分布404所示。hv单元的最小单元开路电压形成统计分布,如第二状态分布406所示。由于循环磨损、单元变化、各种源的干扰、温度等,lv和hv状态分布可部分重叠,如图4a的曲线图400所示。

偏斜数据破坏(sdc)是指单元从一个状态到另一个状态的不平衡移位的现象。在某些类型的存储器中,由于存储器的物理特性,读操作需要部分写特性。部分写是单侧写,其中一个状态被错误地推到另一个状态。sdc的主要原因是破坏性读取,其中读电压被过多地施加到部分写效应的相反方向。如图4b所示,sdc的一个实例是由破坏性读取(部分写hv到lv)引起的。

图4b是说明根据本公开的一些实施例的图4a中的两个状态分布之间的读电平电压的部分写效应410的曲线图420。如图所示,读电压电平402使得其致使被作为第一状态写入(在所说明的实施例中为hv状态)的一些单元被作为第二状态读取(在所说明的实施例中为lv状态)。该结果被称为具有部分写效应410的部分写408。部分写效应410是hv单元的被错误地推动到lv状态的部分。更具体地说,被写入到hv状态(对应于位0)的单元将被读取为lv状态(对应于位1)。部分写408还可引起读取窗口加宽效应。状态分布404、406可以具有作为时间、循环磨损、工作负载模式、装置状态等的函数的复杂形状和行为,因此状态分布404、406的尾部重叠,如图4a所示。除了分布重叠之外,还存在引起sdc的其它原因,这使得sdc在正常装置使用期间是不可避免的。

常规存储器系统不识别sdc的发生且不试图减少或消除sdc的负面影响。也就是说,传统的存储器系统没有测量或利用sdc的特性来减少由sdc引起的错误。例如,sdc导致高的原始误码率(rber)。由sdc引起的高rber影响单元对其它噪声的鲁棒性,可以引起不必要的额外错误恢复处理,并且会降低服务质量(qos),包括等待时间、吞吐量等。在某些存储器系统中,使用有限数目的读电压。可能一个读电压不足以成功地读取数据,而不引起sdc,但下一个读电压变成破坏性读取并引起sdc。

这里描述的实施例针对单向erf,其中系统根据部分写的方向以单调递增(或递减)的读电压进行erf。系统使用解码器统计(例如,ecc解码器统计)来在正确的读电压处停止erf并识别sdc的发生。当erf停止在或接近最佳读电平时,数据被解码,同时读操作的部分写效应加宽了两个状态之间的容限。应注意,与不识别或补救sdc的其它erf策略相比,单向erf可最大程度地避免sdc。如本文所述,由于有限数目的电压电平可供使用的事实或由于其它原因,在读电压太高(或如果在另一方向上执行erf则太低)的情况下,系统还可执行刷新写操作。系统可以基于解码器统计来重写数据。例如,当解码数据在原始读操作中成功时或在单向erf之后,可以计算(基于原始读操作中的原始介质数据)方向性错误位计数(也称为方向rber),并将其用作sdc的指示符。例如,可以确定单元被写为0但错误地读为1的“0→1”位错误的数目。类似地,可确定单元被写为1但错误地读为0的“1→0”位错误的数目。在类型i存储器且lv表示1且hv表示0的情况下,记录“0→1”位错误的数目(称为方向性错误位计数(ebc))且将其与系统预设阈值“ths_0to1”(称为方向性ebc阈值标准)进行比较。类似地,对于类型ii存储器且lv表示1且hv表示0,记录“1→0”位错误的数目且将其与系统预设阈值“ths_1to0”进行比较。响应于满足方向性ebc阈值标准的方向性位错误计数,执行刷新写操作以刷新写数据(例如,码字)。如果方向性位错误计数不满足方向性ebc阈值标准,则不执行刷新写操作。图5a-5b说明了第一方向上的部分写和响应于部分写在相反方向上的相应单向erf的实施例,而图5c-5d说明了第二方向上的部分写和响应于部分写在相反方向上的相应单向erf的实施例。

图5a是说明根据本公开的一些实施例在两个状态分布504、506之间引起第一方向上的部分写508的读电压电平502的曲线图500。曲线图500示出了被编程为第二状态(例如,lv)的存储器组件的存储器单元的第二状态分布504和被编程为第一状态(例如,hv)的存储器组件的存储器单元的第一状态分布506。x轴示出阈值电压,其跨越某一电压范围。y轴示出所表示的所有存储器单元上的每一电压电平的概率密度。第二状态分布504可以被指派位值“1”,第二状态分布506可以被指派位值“0”。应注意,在其它实施例中,位值可映射到不同状态,例如lv状态对应于位值“0”且hv状态对应于位值“1”。

如上所述,可通过将读参考电压施加到每一单元上以感测单元的阈值电压来从存储器组件读取数据。在读操作期间,使用初始读电压电平502来读取存储器组件的存储器单元。如上所述,由于循环磨损、单元变化、干扰、温度等,第二状态分布504和第一状态分布506可能已经移位,使得初始读电压电平502引起将引起sdc的部分写508。部分写508起因于数个存储器单元被作为第一状态写入并被作为第二状态读取。例如,当读取8存储器单元数据时,介质上的数据被读取为11101111,并且在解码(可能进入单向erf)之后,正确写入的数据被确定为00001111,因此存在3个“0->1”位错误,然后我们知道读电压502太高,这结果导致了大量的“0->1”位错误和部分写508。与常规存储器系统不同,将使用错误恢复流程来恢复数据而不识别由部分写引起的sdc的发生,本文中所描述的实施例执行单向erf以识别部分写508和/或执行刷新写操作以减少/最小化部分写508的影响,如下文参考图5b所描述的。

图5b是说明根据本公开的一些实施例的通过在相反方向上调节读电平电压和/或执行刷新写操作以减少/最小化部分写508的影响来避免部分写508的加剧的单向erf522的曲线图。当来自具有初始读电压电平502的读操作的数据未被成功解码时,执行单向erf522,其中针对一或多个重读操作,在与第一方向相反的方向上从第一离散电压电平524朝向第二离散读电压电平528单调地调整读电压电平,直到来自所述一或多个重读操作的数据被成功解码为止。单向erf522的方向对应于部分写508的状态移位的相反方向。如图所示,单向erf522以标记为读电压电平524的最低可用读电压电平开始,并单调增加到读电压电平526,还单调增加到读电压电平528。在此实施例中,存在六个可用读电压电平。然而,在其它实施例中,可基于特定实施方案,使用其它数目的可用读电压电平。还应注意,在其它实施例中,单向erf522不使用可用的最低读电压电平,而是可使用不是最低的中间读电压电平。举例来说,存储器控制器可具有先前知识,其允许将中间读电压电平用作单向erf522中的第一读电压电平。

对于上面给出的实例,其中作为11101111写入和初始读取的数据值00001111的情况下,如果初始读操作解码失败,则单向erf522可以执行一或多个重读操作,直到数据被成功解码。例如,在初始读取解码之后或利用单向erf522,数据可以被正确地解码为00001111。

在某些情况下,一旦数据被成功解码,系统就选择导致数据被成功解码的对应的重读操作的读电压电平,并识别由存储器单元的特性引起的数据中sdc的发生,而不是由存储器单元的其它特性引起的错误。在这种情况下,选择读电压电平528。对于存储器单元上的一或多个后续操作,选择读电压电平528加宽第二状态分布504与第一状态分布506之间的容限。第二状态分布504和第一状态分布506之间的谷值宽度可以是读窗口预算(rwb)。rwb是部分必须无错误地读取数据的容限的指示。rwb越大,存在的容限越多。当读电压电平在两个状态分布之间居中或接近居中时,存在最佳rber。

在一些实施例中,系统计算指示作为第一状态写入且作为第二状态读取的存储器单元的数目的方向性ebc。对于上述写入数据值00001111的实例;假设原始读取数据值为11101111,且可基于原始读取数据或erf成功地恢复原始读取数据,在数据恢复之后,正确数据为00001111,因此方向性ebc为3(此处仅考虑0->1错误,因为其为类型i存储器)。然后将方向性ebc与方向性ebc阈值标准进行比较。系统响应于方向性ebc满足方向性ebc阈值标准而执行数据的刷新写。当数据被成功解码时,方向性ebc也可被用作sdc的指示符。尽管所描绘的实施例将第二状态说明为lv状态且将第一状态说明为hv状态,但在其它实施例中,第二状态可为hv状态且第一状态为lv状态。类似地,尽管所描绘的实施例说明第二状态被指派为“1”且第一状态被指派为“0”,但在其它实施例中,第二状态可被指派为“0”且第一状态可被指派为“1”。

应当注意,图5b示出了在与部分写508的第一方向相反的方向上执行的单向erf522。在其它实施例中,部分写可在第二方向上,例如下文参考图5c说明和描述的。响应于第二方向上的部分写,可在相反方向上执行单向erf,如下文参考图5d说明和描述的。

图5c是说明根据本公开的一些实施例在两个状态分布544、546之间引起第二方向上的部分写548的读电压电平542的曲线图540。曲线图540示出了被编程为第一状态(例如,lv)的存储器组件的存储器单元的第一状态分布544和被编程为第二状态(例如,hv)的存储器组件的存储器单元的第二状态分布546。x轴示出阈值电压,其跨越某一电压范围。y轴示出所表示的所有存储器单元上的每一电压电平的概率密度。第一状态分布544可以被指派位值“1”,第二状态分布546可以被指派位值“0”。应注意,在其它实施例中,位值可映射到不同状态,例如lv状态对应于位值“0”且hv状态对应于位值“1”。

如上所述,可通过将读参考电压施加到每一单元的控制栅上以感测单元的阈值电压而从存储器组件读取数据。在读操作期间,使用初始读电压电平542来读取存储器组件的存储器单元。如上所述,由于循环磨损、单元变化、干扰、温度等,第一状态分布544和第二状态分布546可能已经移位,使得初始读电压电平542引起将引起sdc的部分写548。部分写548起因于数个存储器单元被作为第一状态写入并被作为第二状态读取。例如,可以将数据值00001111写入8个存储器单元。然而,当随后读取数据时,由部分写548引起的原始读取数据值为00001100。与常规存储器系统不同,将使用错误恢复流程来恢复数据而不识别由部分写引起的sdc的发生,本文中所描述的实施例执行单向erf以识别部分写548和/或执行刷新操作以减少/最小化部分写548的影响,如下文参考图5d所描述的。

图5d是说明根据本公开的一些实施例的通过在相反方向上调节读电平电压来避免部分写548的进一步加剧的单向erf562的曲线图560。当来自具有初始读电压电平542的读操作的数据由于初始读电压电平542而未被成功解码(导致数据的部分写548)时,执行单向erf562,其中针对一或多个重读操作,在与第二方向相反的方向上从第一离散电压电平564朝向第二读电压电平570单调地调整读电压电平,直到成功地解码来自所述一或多个重读操作的数据为止。单向erf562的方向对应于部分写548的状态移位的相反方向。如图所示,单向erf562以标记为读电压电平564的最高可用读电压电平开始,并且单调地降低到读电压电平566,单调地降低到读电压电平568,并且最终单调地降低到读电压电平570。在此实施例中,存在六个可用读电压电平。然而,在其它实施例中,可基于特定实施方案,使用其它数目的可用读电压电平。还应当注意,在其它实施例中,单向erf562不使用可用的最高读电压电平,而是可以使用不是最高的中间读电压电平。举例来说,存储器控制器可具有先前知识,其允许将中间读电压电平用作单向erf562中的第一读电压电平。

对于上面给出的实例,其中作为00001100写入和初始读取的数据值00001111的情况下,如果初始读操作解码失败,则单向erf562可以执行一或多个重读操作,直到数据被成功解码。例如,在初始读取解码之后或利用单向erf562,数据可以被正确地解码为00001111。

在某些情况下,一旦数据被成功解码,系统就选择导致数据被成功解码的对应的重读操作的读电压电平,并识别由存储器单元的特性引起的数据中sdc的发生,而不是由存储器单元的其它特性引起的错误。在这种情况下,选择读电压电平570。对于存储器单元上的一或多个后续操作,选择读电压电平570加宽第一状态分布544与第二状态分布546之间的容限。

在一些实施例中,系统计算指示作为第一状态写入且作为第二状态读取的存储器单元的数目的方向性ebc。对于以上写入数据值00001111且原始读取数据值为00001100的实例,方向性ebc为2。将方向性ebc与方向性ebc阈值标准进行比较。系统响应于方向性ebc满足方向性ebc阈值标准而执行数据的刷新写。当数据被成功解码时,方向性ebc也可被用作sdc的指示符。

如上所述,存储器系统的实施例可使用单向erf,可识别sdc,可实施补救方案以减少或消除部分写的影响,且可实施用于使用方向性ebc来开始刷新写操作的决策规则。这些实施例允许在sdc阈值,即在此描述的方向性ebc阈值的操作期间进行灵活的调整。单向erf可以是sdc最小化erf策略,其有效地识别sdc的发生。实时刷新操作可以补救sdc,从而提高单元的鲁棒性。实施例可以改善系统qos,包括等待时间、吞吐量等。实施例可以用硬件、固件、软件或其任何组合来实现。

图6说明计算机系统600的实例性机器,在所述实例性机器内可执行用于使机器执行本文所讨论的方法中的任何一或多者的一组指令。在一些实施例中,计算机系统600可对应于包括、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的单向erf组件113的操作)的主机系统(例如,图1的主机系统120)。在替代实施例中,机器可连接(例如,联网)到lan、内联网、外联网和/或因特网中的其它机器。机器可以在客户端-服务器网络环境中作为服务器或客户端机器,在对等(或分布式)网络环境中作为对等机器,或在云计算基础设施或环境中作为服务器或客户端机器来操作。

机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥,或能够执行指定该机器要采取的动作的一组指令(顺序的或其它的)的任何机器。此外,虽然示出了单个机器,但是术语“机器”还应当被理解为包括单独地或联合地执行一组(或多组)指令以执行这里讨论的任何一或多个方法的机器的任何集合。

实例性计算机系统600包括处理装置602、主存储器604(例如,只读存储器(rom)、闪速存储器、动态随机存取存储器(dram)(诸如同步dram(sdram)或rambusdram(rdram)等))、静态存储器606(例如,闪速存储器、静态随机存取存储器(sram)等),以及经由总线630彼此通信的数据存储系统618。

处理装置602表示一或多个通用处理装置,诸如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、或实现其它指令集的处理器,或实现指令集组合的处理器。处理装置602还可为一或多个专用处理装置,诸如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理装置602被配置为执行用于执行这里讨论的操作和步骤的指令626。计算机系统600还可以包括通过网络620通信的网络接口装置608。

数据存储系统618可以包括机器可读存储介质624(也被称为计算机可读介质),在其上存储了体现这里描述的任何一或多个方法或功能的一组或多组指令626或软件。在计算机系统600执行指令626期间,指令也可以完全或至少部分地驻留在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储介质。机器可读存储介质624、数据存储系统618和/或主存储器604可对应于图1的存储器子系统110。

在一个实施例中,指令626包括实现对应于erf组件(例如,图1的单向erf组件113)的功能的指令。虽然机器可读存储介质624在实例性实施例中被示为单个介质,但是术语“机器可读存储介质”或“计算机可读存储介质”应当被理解为包括存储一或多个指令集的单个介质或多个介质。术语“机器可读存储介质”还应当被理解为包括能够存储或编码用于由机器执行的并且使得机器执行本公开的指令集的任何一或多个方法的任何介质。因此,术语“机器可读存储介质”应理解为包括但不限于固态存储器、光学介质和磁性介质。

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

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

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

这里给出的算法和显示并不固有地涉及任何特定的计算机或其它设备。各种通用系统可以与根据这里的教导的程序一起使用,或者可以证明构造更专用的设备来执行该方法是方便的。各种这些系统的结构将在下面的描述中阐述。此外,不参考任何特定编程语言来描述本公开。将了解,可使用多种编程语言来实施本文所描述的本公开的教导。

本公开可提供为计算机程序产品或软件,其可包括其上存储有指令的机器可读介质,所述指令可用于对计算机系统(或其它电子装置)编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储介质、光存储介质、闪存组件等。

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

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜