存储器装置中的错误处置流管理的制作方法

文档序号:31711464发布日期:2022-10-04 19:18阅读:32来源:国知局
存储器装置中的错误处置流管理的制作方法

1.本公开的实施例大体上涉及存储器子系统,且更具体来说,涉及存储器装置中的错误处置流管理。


背景技术:

2.存储器子系统可以包含存储数据的一或多个存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可以利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。


技术实现要素:

3.在一个方面中,本公开提供一种系统,其包括:存储器装置;以及处理装置,其操作性地耦合到存储器装置,以执行包括以下各项的操作:检测关于驻存于存储器装置的块中的数据的读取错误,其中块与电压偏移区间相关联;确定待对数据执行的错误处置操作的有序集合;确定与电压偏移区间相关联的最近执行的错误处置操作,其中最近执行的错误处置操作为已成功地恢复与发生在与电压偏移区间相关联的块上的先前读取错误相关联的数据的错误处置操作;通过按错误处置操作集合的次序将最近执行的错误处置操作定位在预定位置内来调整错误处置操作集合的次序;以及按调整后的次序执行错误处置操作集合中的一或多个错误处置操作,直到与读取错误相关联的数据恢复为止。
4.在另一方面中,本公开进一步提供一种方法,其包括:检测关于驻存于存储器装置的块中的数据的读取错误;确定待对数据执行的错误处置操作的有序集合,确定最近执行的错误处置操作,其中最近执行的错误处置操作为已成功地恢复与先前读取错误相关联的数据的错误处置操作;以及将最近执行的错误处置操作作为错误处置流中的第一错误处置操作执行。
5.在再一方面中,本公开进一步提供一种包括指令的非暂时性计算机可读存储媒体,所述指令在由操作性地耦合到存储器的处理装置执行时执行包括以下各项的操作:检测关于驻存于存储器装置的块中的数据的读取错误,其中块与电压偏移区间相关联;确定待对数据执行的错误处置操作的有序集合;确定与电压偏移区间相关联的最近执行的错误处置操作,其中最近执行的错误处置操作为已成功地恢复与发生在与电压偏移区间相关联的块上的先前读取错误相关联的数据的错误处置操作;通过按错误处置操作集合的次序将最近执行的错误处置操作定位在预定位置内来调整错误处置操作集合的次序;以及按调整后的次序执行错误处置操作集合中的一或多个错误处置操作,直到与读取错误相关联的数据恢复为止。
附图说明
6.根据下文给出的实施方式且根据本公开的各种实施例的附图将更加充分地理解本公开。
7.图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
8.图2示意性地说明根据本公开的一些实施例的能够通过将存储器单元编程为八个电荷状态而存储三个数据位的三层级存储器单元的时间电压移位,所述八个电荷状态的不同之处在于单元的浮动栅极上的电荷量。
9.图3描绘示出根据本公开的一些实施例的阈值电压偏移与编程后时间(即,从块已编程以来经过的时间段)的相关性的实例曲线图。
10.图4说明根据本公开的方面的由存储器子系统控制器维持的实例元数据。
11.图5是根据本公开的一些实施例的执行的错误处置流管理的实例方法的流程图。
12.图6是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
13.本公开的各方面涉及存储器装置中的错误处置流管理。存储器子系统可以是存储装置、存储器模块或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可以利用包含一或多个组件的存储器子系统,所述一或多个组件例如存储数据的存储器装置。主机系统可以提供待存储于存储器子系统处的数据,并且可以请求从存储器子系统检索数据。
14.存储器子系统可以利用一或多个存储器装置(包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合)来存储由主机系统提供的数据。非易失性存储器装置的一个实例为与非(nand)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。每个存储器装置可包含一或多个存储器单元阵列。存储器单元(“单元”)是存储信息的电子电路。取决于单元类型,单元可以存储一或多位二进制信息,且具有与所存储的位数相关的各种逻辑状态。逻辑状态可由二进制值(如“0”和“1”)或这种值的组合表示。
15.可由存储器子系统执行各种数据操作。数据操作可以是主机发起的操作。例如,主机系统可以在存储器子系统上发起数据操作(例如,写入、读取、擦除等)。主机系统可以将存取请求(例如,写入命令、读取命令)发送到存储器子系统,以便将数据存储在存储器子系统处的存储器装置上,且从存储器子系统上的存储器装置读取数据。如由主机请求指定的待读取或写入的数据在下文中被称作“主机数据”。主机请求可包含用于主机数据的逻辑地址信息(例如,逻辑块地址(lba)、名称空间),其为主机系统与主机数据相关联的位置。逻辑地址信息(例如,lba、名称空间)可以是主机数据的元数据的部分。元数据还可包含错误处置数据(例如,错误校正码(ecc)码字奇偶校验数据)、数据版本(例如,用于区分所写入数据的新旧)、有效位图(其lba或逻辑传送单元含有有效数据)等。
16.存储器装置包含能够取决于存储器单元类型而存储一或多位信息的多个存储器单元。可通过将某一电压施加到存储器单元,使得有电荷正被存储器单元保持,以此对存储器单元进行编程(写入存储器单元),所述电压被称为“阈值电压”且标示为vt。
17.存储器装置可具有与装置的单元所容许的控制电压的工作范围相比较窄的分布。因此,多个分布(在分布之间具有“谷值”)可刚好放入允许每单元存储并且可靠地检测多个位的工作电压窗中,例如针对tlc的23=8个分布(7个谷值)、针对mlc的22=4个分布(3个谷值)等。分布之间穿插有电压间隔(谷值裕度),其中装置的存储器单元没有(或极少)具有其阈值电压。因此,可使用这类谷值裕度通过施加对应于每个谷值的读取电压来分离各种电
荷状态,可通过在读取操作期间进行检测来确定单元的逻辑状态。这实际上允许单个存储器单元存储多位信息:在2n个分布(也被称为层级)下操作的存储器单元能够存储n位信息。在读取操作期间,施加2
n-1个读取电压以区分2n个分布。具体地,可通过将存储器单元展现的所测量阈值电压v
t
与对应于存储器装置的已知谷值(例如,谷值中心)的一或多个参考电压电平进行比较,以此执行读取操作。
18.由于被称为缓慢电荷损失(scl)的现象,随着单元的电荷减少,存储器单元的阈值电压v
t
可随时间而变化,过程有时被称为“时间电压移位”(tvs)。由于典型单元存储带负电的粒子(电子),因此电子的损失使得电压阈值沿着电压轴线朝向较低电压阈值v
t
移位。阈值电压可首先(紧接在存储器单元被编程之后)快速地改变,同时相对于从单元编程事件以来经过的时间t以大致对数线性或幂律方式(δv
t
(t)=-c*tb)在较大时间内减缓。在本公开的一些实施例中,可通过保持跟踪从编程事件以来经过的时间以及特定存储器分区(块、平面等)的例如温度的环境条件,且使待在读取操作期间使用的每一谷值的电压偏移δv
t
相关联来减缓tvs,其中标准“基础读取电平”阈值电压v
t
(在编程之后立即由单元展现)改变量为电压偏移:v
t
→vt
+δv
t
,其中δv
t
由于电荷损失而为负值。尽管tvs为连续过程且对δv
t
(t)的补偿可以随着时间不断改变,但在一些实施例中,可以利用离散数目个偏移“区间”来充分实现偏移的准确性。块可使用元数据与区间相关联(例如,在指定时间窗内并且在类似环境(例如,温度)条件下被编程)。由于从编程以来经过的时间和温度条件处于影响tvs的量的主要因素行列,因此可推测与同一区间相关联的块展现其存储器单元的阈值电压的类似分布,且因此将需要将相同电压偏移施加到用于读取操作的基础读取电平。
19.存储器子系统控制器可周期性地执行校准过程以便使块与区间中的一个相关联。每一区间又可与待施加用于读取操作的电压偏移集合相关联。块与区间的关联在本文中被称为辅助读取元数据(arm),其表示存储器装置的更广状态度量的部分。状态度量还可包含被弃用物理存储器块(或其它分区)的数目、各种物理块已被擦除的次数、各种存储器分区的单元的配置类型(例如,单层级单元与多层级单元)或表示存储器装置的状态的任何其它类型的信息。arm可存储在由存储器子系统控制器维持的元数据表中。
20.根据本公开的实施例,可针对分组成族的经编程分区选择性地跟踪tvs。每一族可包含在指定时间窗和/或指定温度窗内编程的一或多个块。基于分区到族的分组,在读取操作中将适当的区间特定读取(电压)偏移施加到基础读取(电压)电平。基础读取电平还可存储在存储器装置的元数据中。在接收到读取命令之后,存储器子系统控制器可识别与由读取命令中指定的逻辑地址识别的存储器分区相关联的族且识别与所识别族相关联的当前区间。存储器子系统控制器接着可确定所识别区间的读取偏移的集合,且通过将与所识别区间相关联的读取偏移叠加地施加到基础读取电平来计算新读取电压。存储器子系统控制器可随后使用新读取电压执行读取操作,如下文更详细地描述。
[0021]“读取错误”是指存储器子系统未能响应于读取命令验证已从存储器装置检索到的一或多个数据项。读取错误可与主机发起的读取操作或系统发起的扫描操作相关联并且可由于例如以下原因而发生:存储器单元展现的所测量阈值电压v
t
由于tvs而与读取电压电平失配、所请求的数据经历噪声或干扰等。在读取错误中,读取数据中的位错误大于底层ecc可校正的位错误,这引起ecc失败并且相应地引起读取错误。响应于读取错误,存储器子系统可执行错误处置流以尝试恢复数据。错误处置流可包含关于已从存储器装置检索到的
数据项的一或多个错误处置操作。错误处置操作可包含相较于对存储器单元执行的初始读取操作,使用不同参数(例如,读取电压的变化)进行的一或多个读取重试。错误处置操作还可包含“深度错误处置技术”,例如具有各种版本的可靠性信息、混合自动重复请求(harq)等的前向错误校正(fec)。
[0022]
在一些实施方案中,存储器子系统控制器可使用默认(例如,静态)错误处置流,其中在错误处置流期间执行的错误处置操作的次序对于存储器装置的所有块保持相同。举例来说,在进入错误处置流之后,存储器子系统控制器可首先执行相对低时延操作的集合,例如使用施加到基础读取电平的不同的相对较小(例如,不超过预定义阈值)读取偏移进行预定量读取重试。响应于成功恢复数据的低时延步骤,存储器子系统控制器可退出错误处置流以重新开始读取和写入操作。响应于低时延步骤未能恢复数据,存储器子系统控制器可执行在错误处置流中指定的下一错误处置操作。举例来说,存储器子系统控制器可执行较高时延步骤,例如相较于低时延步骤中使用的读取偏移施加更大读取偏移,或使用深度错误处置技术(例如,fec、harq等)恢复数据。
[0023]
在一些实施方案中,响应于对存储器子系统的突然系统性改变,存储器子系统控制器可通过实施错误处置最新技术来调整在错误处置流期间执行的错误处置操作的次序。系统性改变包含在整个存储器子系统中发生的参数改变,例如操作温度的突然改变(例如,操作温度在几秒内上升20摄氏度)、存储器子系统从延长的断电时段通电等。错误处置最新技术可包含响应于新读取错误而将错误处置流中的最后一次成功错误处置操作作为第一错误处置操作执行。
[0024]
然而,错误处置操作可以是费时的且影响存储器子系统的性能,且可导致如由主机系统观察到的读取时间增加和/或性能降级。因此,由于tvs,针对所有块实施错误处置最新技术而不管其相关联的区间可增加由存储器子系统执行的错误处置流的时延。这是因为,由于与不同区间相关联的不同读取偏移,执行针对分配到一个区间的块成功地恢复数据的错误处置操作对于分配到不同区间的块可为无效的。
[0025]
本公开的方面通过实施能够基于错误处置最后操作调整存储器装置中的错误处置流中的错误处置操作的次序的存储器子系统控制器来提高错误处置操作的效率。确切地说,存储器子系统控制器可针对不同区间实施不同错误处置流,且维持针对每一区间和/或每一错误处置流执行的错误处置最后操作的指示。错误处置最后操作可为在成功地恢复数据的先前错误处置流期间执行的错误处置操作。存储器子系统控制器可在元数据表中维持针对每一区间和/或每一错误处置流的错误处置最后操作的指示。另外,存储器子系统控制器可维持每一错误处置流的错误处置操作的次序内的位置的指示,在所述位置中,将在针对每一区间的后续错误处置流期间执行相应错误处置最后操作。确切地说,错误处置最后位置可向存储器子系统控制器指示将错误处置最后操作作为用于特定区间的后续错误处置流中的第一错误处置操作、作为用于特定区间的后续错误处置流中的第二错误处置操作等执行。因此,基于错误处置最后操作和错误处置最后位置,存储器子系统控制器可针对每一区间调整相应错误处置流的操作次序以在所指示的错误处置最后位置处执行错误处置最后操作。
[0026]
在说明性实例中,响应于与特定区间相关联的块上的读取错误,区间的默认错误处置流可指示存储器子系统控制器执行错误处置操作1,接着执行错误处置操作2,且随后
执行错误处置操作3。响应于执行错误处置操作2,存储器子系统控制器可成功地恢复与读取错误有关的数据。存储器子系统控制器可随后在元数据表中将错误处置操作2登记为最后一个成功错误处置操作。响应于另一读取错误,存储器子系统控制器可在元数据表中查找用于区间的错误处置最后操作(即,错误处置操作2)和错误处置最后位置(例如,第一位置)。存储器子系统控制器可接着在针对区间的后续错误处置流中将错误处置操作2作为第一错误处置操作执行。
[0027]
本公开的优点包含但不限于通过减小由存储器子系统执行的错误处置流的时延来提高存储器子系统的性能。这可引起存储器子系统的性能的改良和存储器子系统的功耗的减少。此外,这可增加存储器子系统的使用寿命。尽管使用nand快闪存储器的存储器单元描述实施例,但本公开的各方面可应用于其它类型的存储器子系统。
[0028]
图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或其组合。
[0029]
存储器子系统110可以是存储装置、存储器模块或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡,以及硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小型dimm(so-dimm),以及各种类型的非易失性双列直插式存储器模块(nvdimm)。
[0030]
计算系统100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(iot)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
[0031]
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文所用,“耦合到”或“与...耦合”一般是指组件之间的连接,所述连接可以是间接通信连接或直接通信连接(例如,无中间组件),无论有线还是无线,包含例如电连接、光学连接、磁性连接等连接。
[0032]
主机系统120可包含处理器芯片组和由处理器芯片组执行的软件栈。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,nvdimm控制器)和存储协议控制器(例如,pcie控制器、sata控制器)。主机系统120使用例如存储器子系统110以将数据写入到存储器子系统110且从存储器子系统110读取数据。
[0033]
主机系统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可经由同一通信连接、多个独立通信连接和/或通信连接的组合来存取多个存储器子系统。
[0034]
存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以但不限于是随机存取存储器(ram),例如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
[0035]
非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(nand)型快闪存储器和就地写入存储器,例如三维交叉点(“3d交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。nand类型快闪存储器包含例如二维nand(2dnand)和三维nand(3d nand)。
[0036]
每一存储器装置130可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(slc)每单元可存储一个位。其它类型的存储器单元,例如多层级单元(mlc)、三层级单元(tlc)、四层级单元(qlc)和五层机单元(plc)每单元可存储多个位。在一些实施例中,每一存储器装置130可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc、plc或其任何组合。在一些实施例中,特定存储器装置可以包含存储器单元的slc部分,以及mlc部分、tlc部分、qlc部分或plc部分。存储器装置130的存储器单元可分组为页,所述页可指用以存储数据的存储器装置的逻辑单位。对于一些类型的存储器(例如,nand),页可被分组以形成块。
[0037]
虽然描述了例如非易失性存储器单元的3d交叉点阵列和nand类型快闪存储器(例如,2d nand、3d nand)等非易失性存储器组件,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻性随机存取存储器(rram)、基于氧化物的rram(oxram)、或非(nor)快闪存储器,和电可擦除可编程只读存储器(eeprom)。
[0038]
存储器子系统控制器115(或简称为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它此类操作。存储器子系统控制器115可以包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器,或其组合。硬件可包含具有专用(即,硬编码)逻辑的数字电路系统以执行本文所描述的操作。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等)或其它合适的处理器。
[0039]
存储器子系统控制器115可为处理装置,其包含配置成执行存储在本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所说明的实例中,存储器子系统控制器115的本地存储器119包含配置成存储指令的嵌入式存储器,所述指令用于进行控制存储器子系统110的操作的各种过程、操作、逻辑流程和例程,包含处置存储器子系统110与主机系统120之间的通信。
[0040]
在所示出的实例中,存储器子系统控制器115的本地存储器119包含配置成存储指
令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作,包含处置存储器子系统110与主机系统120之间的通信的各种过程、操作、逻辑流程和例程。
[0041]
在一些实施例中,本地存储器119可包含存储存储器指针、所提取的数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(rom)。虽然图1中的实例存储器子系统110已示出为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可替代地依赖于外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供)。
[0042]
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作,且可将命令或操作转换成指令或适当命令以实现对存储器装置130的所要存取。存储器子系统控制器115可以负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测及错误校正码(ecc)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(lba)、名称空间)与物理地址(例如,物理mu地址、物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收的命令转换成命令指令以访问存储器装置130以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。
[0043]
存储器子系统110还可包含未示出的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存器或缓冲器(例如,dram)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从存储器子系统控制器115接收地址,且对地址进行解码以存取存储器装置130。
[0044]
在一些实施例中,存储器装置130包含本地媒体控制器135,所述本地媒体控制器结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器子系统110是包含原始存储器装置130的受管理存储器装置,所述原始存储器装置具有在裸片上的控制逻辑(例如,本地控制器132)和用于同一存储器装置封装内的媒体管理的控制器(例如,存储器子系统控制器115)。受管理存储器装置的实例为受管理nand(mnand)装置。
[0045]
存储器子系统110包含可用以实施根据本公开的实施例的错误处理策略的错误处置流管理组件113。在一些实施例中,存储器子系统控制器115包含错误处置流管理组件113的至少一部分。举例来说,存储器子系统控制器115可包含处理器117(处理装置),所述处理器配置成执行存储于本地存储器119中的指令以用于执行本文所描述的操作。在一些实施例中,错误处置流管理组件113是主机系统120、应用程序或操作系统的部分。错误处置流管理组件113可管理与存储器装置130相关联的块族,如本文在下文更详细描述。
[0046]
图2示意性地说明根据本公开的一些实施例的能够通过将存储器单元编程为八个电荷状态qk(也被称为层级)而存储三个数据位的三层级存储器单元(tlc)的时间电压移位(tvs),所述八个电荷状态的不同之处在于单元的存储栅极上的电荷量。阈值电压p(v
t
,qk)的分布与7个谷值裕度vmn分开。编程为第k个电荷状态(qk)的单元可存储3位的特定组合。举例来说,电荷状态qk可存储二进制组合101,如所描绘。也可使用qk到3位的其它映射。此电荷状态qk可以在读出操作期间通过检测出谷值裕度vmk内的控制栅极电压v
cg
足以使单元向源极-漏极电流开放而前一谷值裕度vm
k-1
内的控制栅极电压不足以使单元向源极-漏极电
流开放而确定。存储器单元可被配置成存储n=1位(slc)、n=2位(mlc)、n=3位(tlc)、n=4位(qlc)等,这取决于在控制栅极电压的工作范围内可拟合多少分布(且散布有足够大小的谷值裕度)。即使图2描绘tlc,但本公开中所描述的操作可应用于任何n位存储器单元。
[0047]
存储器单元通常由字线(电连接到单元的控制栅极的导线)接合,并在一种设置下(通过选择连接到单元的源极电极和漏极电极的连续位线)一起编程为存储器页(例如,16kb或32kb页)。作为实例,图2示出其中在3个遍次中编程3位的场景。也可使用其它编程序列,例如1遍次和2遍次编程。对于图2中示出的实例,在读取操作期间,存储器控制器115可确定第六谷值裕度vm6内所施加的控制栅电压v
cg
足以使单元对源极-漏极电流开放,而第七谷值裕度vm7内的控制栅电压足以使单元开放。因此,存储器控制器115可确定单元处于对应于逻辑状态010的电荷状态q7中(即,xp:0,up:1,lp:0)。
[0048]
用图2中的实线所描绘的阈值电压的分布是存储器单元紧接在编程之后具有的分布。随着时间的推移,由于缓慢的电荷损失,分布会发生移位(通常朝向v
t
的较低值),如用虚线指示的经移位谷值所展示。因此,各种存储器单元的阈值电压经移位一定值δv
t
,所述值可取决于从编程以来经过的时间、环境条件(例如,环境温度)等。对于最佳读取操作,控制器115(或错误处置流管理组件113)因此可利用与时间电压移位相同(或大致相同)的对应偏移vr→vr
+δv(其中δv通常小于零)来调整基础读取电平。在一个实施例中,可将偏移确定(或估计)为紧接在编程之后的谷值裕度的中心(例如,vm7的中心202)与稍后某一时刻相同-但经移位的-谷值裕度的中心(例如,新中心204)之间的差。如在图2中示意性地描绘,不同分布(谷值)和谷值裕度的tvs可彼此不同。在图2中描绘的典型情境中,对于较大电荷q,tvs较大,且对于较小电荷,tvs较小。
[0049]
如图2中所示,存储器装置中的tvs为连续过程。然而,在一些实施例中,可以使用一组离散的区间以及相应地一组离散的电压偏移δv来实现电压偏移的足够准确性。在此类实施例中,可以通过设置与各种存储器分区相关联的数个离散区间(例如,五个、八个、二十个等)来解决tvs现象。作为实例,假设对于谷值7,期望最佳读取位置移位500毫伏。在6个区间的情况下,可将谷值7的偏移定义为相等地间隔开,例如0mv、n mv、2n mv、3n mv、4n mv、5n mv。类似地,可定义其它谷值的偏移。区间偏移可经定义为不相等地间隔开而是遵循不同的间距。可将区间相关的数据存储在元数据表210中。各种存储器分区(分组到族中,如下文更详细地描述)与区间的关联可存储于族-区间关联212中;族-区间关联可随时间的推移而动态地改变。举例来说,由于存储器单元随着时间、温度和编程/擦除循环(pec)继续丢失电荷,因此相应存储器分区(分组成族)可以连续方式从低级区间移动到具有更大电压偏移量值的更高级区间。区间-偏移关联214还可存储在元数据表210中。在一些实施例中,区间-偏移关联214可为静态的,但可(基于存储器分区的校准)调整族-区间关联212以考虑相应分区的存储器单元的实际电荷损失。在一些实施例中,族-区间关联212可存储存储器分区的逻辑地址,例如相应块的lba,而lba与相应物理块地址(pba)的关联可存储在元数据表210外部,例如,分开存储在本地存储器119或存储器装置130、140中的一个中的存储器转换表内。然而,在一些实施例中,族-区间关联212可另外包含lba到pba转换或存储直接pba到区间关联。如在图2中用弯曲箭头示意性地描绘,区间的数目、区间-偏移关联214、分区-区间关联可基于存储器装置(或类似类型的存储器装置,例如,在设计和制造期间)的校准,以用于在读取操作期间使性能达到最大且使读取错误降至最低。
[0050]
阈值电压偏移取决于编程后时间(tap)。tap是从单元已写入以来经过的时间并且是tvs的一级驱动器。可估计(例如,从数据状态度量推断)或直接测量(例如,从控制器时钟)tap。单元、块、页、块族等在其具有(相对)小的tap的情况下是新的(或相对较新),且在其具有(相对)大的tap的情况下是旧的(或相对较旧)。时间片是两个tap点之间的持续时间,在此持续时间期间,可进行测量(例如在编程之后的8到12分钟执行参考校准)。时间片可被其中心点引用(例如,10分钟)。
[0051]
可将存储器装置的块分组成块族,使得每一块族包含已在指定时间窗和可能地指定温度窗内编程的一或多个块。如上文中所提到,由于编程之后经过的时间和温度是影响时间电压移位的主要因素,所以推测单个块族内的所有块和/或分区在存储器单元中展现类似的阈值电压分布,且因此将需要相同的电压偏移以用于读取操作。tvs还取决于程序擦除循环,然而,对于耗损均衡,所有块将具有类似pec且因此pec并非是块族内的块当中的tvs的区别性因素。
[0052]
可相对于块编程事件异步地创建块族。在说明性实例中,每当从最后一个块族的创建开始已经过指定时间段δt(例如,预定分钟数),或每当从当前块族的创建开始,存储器单元的参考温度(其以指定时间间隔更新)已改变了超过指定阈值温度δθ,那么图1的存储器子系统控制器115可创建(“开启”)新的块族。类似地,在从创建族以来已经过时间段δt之后或当参考温度(在任一方向上)已改变超过δθ时,可“关闭”族(且可创建新族)。存储器子系统控制器115可维持活动块族的识别符,所述活动块族在一或多个块被编程时与其相关联。
[0053]
新创建的块族可与区间0相关联。随后,存储器子系统控制器可周期性地执行校准过程以便将每个块族的每一裸片与预定义的阈值电压偏移区间(在图3的说明性实例中针对单个谷值的区间0-9,其中沿着y轴向下,偏移变得更具负性,例如区间9的偏移与区间2相比将具有较高量值且这两个偏移均为负)中的一个相关联,继而与将被施加用于读取操作的电压偏移相关联。块与块族以及块族和裸片与阈值电压偏移区间的关联可存储在存储器子系统控制器所维持的相应元数据表中。
[0054]
电压分布归因于缓慢电荷损失(scl)在时间上发生改变,这引起阈值电压电平的值漂移。根据本公开的各种实施例,针对按块族分组的经编程块选择性地跟踪时间电压移位,且将基于具有某一块族的块隶属的适当的电压偏移量施加到基础读取电平,以便执行读取操作。
[0055]
图3示意性地说明根据本公开的实施例的针对特定谷值的一组预定义阈值电压偏移区间(区间0到区间9)。如图3示意性地示出,可将阈值电压偏移曲线图300细分为多个阈值电压偏移区间,使得每一区间对应于阈值电压偏移的预定范围。虽然图3的说明性实例定义了十个区间(0-9),但在其它实施方案中,可使用各种其它数目的区间(例如,64个区间)。基于周期性地执行的校准过程,存储器子系统控制器使每个块族的每一裸片与一阈值电压偏移区间关联,所述阈值电压偏移量区间定义将施加到基础电压读取电平以便执行读取操作的一组阈值电压偏移量,如本文在下文更详细描述。
[0056]
图4示意性地示出根据本公开的方面由存储器子系统控制器维持的实例元数据。在一些实施例中,错误处置流管理组件113可维持错误处置元数据表410和错误处置元数据表420。在一些实施例中,错误处置元数据表410和420可存储于存储器子系统的存储器中
(例如,存储器装置130、140、本地存储器119等处)且可被错误处置流管理组件113引用于确定与特定偏移区间相关联的错误处置流。错误处置元数据表410和420可为两个独立的元数据表,或组合成单个元数据表。
[0057]
如由错误处置元数据表410所说明,每一区间可与相应的错误处置流(例如,f0、f1...f5)相关联。如由错误处置元数据表420所说明,每一错误处置流可与待按特定次序(例如,操作次序)执行的错误处置操作的特定集合、用于每一错误处置流(例如,op1参数、op2参数、op3参数等)的每一错误处置操作的参数值(例如,读取电平调整值)、所执行的错误处置最后操作的指示以及在后续错误处置流期间操作次序内待执行错误处置最后操作的位置相关联。错误处置最后操作可为在成功地恢复数据的先前错误处置流期间执行的错误处置操作。
[0058]
与较新块族相关联的区间(即,由于scl的对数线性性质而经历较大tvs的最近创建的块族,其中电荷损耗在编程之后相对于稍晚时间随时间的推移较快)可与错误处置流相关联,其中错误处置操作包含相对较大的读取电平调整(例如,将大于预定阈值的读取偏移施加到基础读取电平)。这是因为相比于较旧块族(例如,图3中的区间6-9中的块族)中的块,较新块族(例如,图3中的区间0-3中的块族)中的块可随着时间推移经历阈值电压上的较大移位(例如,阈值电压紧接在存储器单元被编程之后快速改变)。因而,通过执行超过阈值准则的相对较宽的读取电平调整,错误处置流管理组件113可增加读取电平调整使用错误处置流的初始错误处置操作成功地恢复数据的机率。因此,在一些实施例中,每一区间可指定不同的错误处置操作集合按预定次序执行。举例来说,相对较旧的区间(例如,具有相对较大的tvs的区间,例如图3中的区间6-9)可指定具有错误处置流,其中错误处置操作包含错误处置流管理组件113首先执行低时延错误处置步骤。响应于无法恢复所要数据的低时延错误处置步骤,错误处置流管理组件113可接着执行具有较高时延以及较高成功率的深度错误处置技术,例如具有可靠性(软)信息的harq和/或fec。在其它实施例中,对于每一区间,错误处置流的错误处置操作和/或错误处置操作的次序可为相同的。
[0059]
错误处置流管理组件113可执行与区间到与同一区间相关联的块族的块相关联的错误处置流的错误处置操作。在一些实施例中,可在存储器子系统110的制造期间或在存储器子系统110的编程和/或校准期间确定并设置区间与相应错误处置流的关联性。因而,每一区间可与具有以特定次序执行的错误处置操作的特定集合的错误处置流相关联。
[0060]
在一些实施例中,可由存储器子系统控制器115通过对错误处理流重新排序以使得将每一相应区间的错误处置最后操作移动到默认错误处置流的操作次序内的预定位置来调整每一区间的错误处置流。可在存储器子系统110的编程和/或校准期间设置预定位置。默认错误处置流可指在存储器子系统110的编程和/或校准期间针对存储器子系统的每一块的错误处置流集合,和/或指最初与每一区间相关联的错误处置流(例如,f0、f1...f5)。举例来说,用于错误处置流f0的默认错误处置流可包含执行错误处置操作1(op1),接着执行错误处置操作2(op2),且随后执行错误处置操作3(op3)。通过维持在最近执行的错误处置流期间成功地恢复数据的错误处置操作的每一区间记录,错误处置流管理组件113可经由元数据表420跟踪每一最近执行的错误处置流的错误处置最后操作。针对相应区间的错误处置操作的次序的调整可基于错误处置最后操作(由错误处置流管理组件113在最近错误处置流期间执行的成功地恢复数据的错误处置操作)。确切地说,错误处置流管理组件
113可在后续错误处置流期间在如元数据表420所指示的操作次序内的位置处执行错误处置最后操作。
[0061]
错误处置最后位置可向错误处置流管理组件113指示在用于相应区间的操作次序内的哪一位置处且在分配给所述区间的后续错误处置流期间执行错误处置最后操作。可在存储器子系统110的编程和/或校准期间设置错误处置最后位置。确切地说,可在存储器子系统110的编程和/或校准期间选择和设置用于每一错误处置流和/或区间的每一错误处置最后位置。在一些实施例中,可将错误处置最后位置设置成错误处置流中的第一位置。因而,可首先在后续处理流中执行错误处置最后操作。在一些实施例中,可将错误处置最后位置设置成错误处置流中的第二位置。举例来说,第一错误处置操作可包含读取重试操作,且第二错误处置操作可包含错误处置最后操作。在其它实施例中,错误处置最后位置可为错误处置流内的任何位置。举例来说,响应于错误处置最后位置指示将在后续错误处置流期间以第二顺序执行错误处置最后操作,错误处置流管理组件113可在所述后续错误处置流期间执行错误处置流的第一错误处置操作,接着响应于第一错误处置操作未能恢复数据而执行错误处置最后操作,且随后执行错误处置流中的其余错误处置操作,直到数据成功恢复。在一些实施例中,错误处置流管理组件113可首先在后续处理流中执行错误处置最后操作,而非查找元数据表中的错误处置最后位置。确切地说,在每一错误处置流期间,错误处置流管理组件113可确定错误处置最后操作,将错误处置最后操作作为错误处置流中的第一错误处置操作执行,且响应于错误处置最后操作未能恢复数据而执行错误处置流中的其余错误处置操作直到数据恢复为止。
[0062]
在说明性实例中,响应于与区间(例如,区间0(f0))相关联的块上的读取错误,区间0的默认错误处置流可指示错误处置流管理组件113执行错误处置操作1,接着执行错误处置操作2,且随后执行错误处置操作3。响应于执行错误处置操作2,错误处置流管理组件113可成功地恢复与读取错误相关联的数据。错误处置流管理组件113可随后在元数据表420中将错误处置操作2登记为错误处置最后操作。响应于另一读取错误,错误处置流管理组件113可在元数据表420中查找错误处置最后操作(即,错误处置操作2)和错误处置最后位置(例如,第一)。错误处置流管理组件113可接着在后续错误处置流中将错误处置操作2作为第一操作执行。
[0063]
响应于错误处置操作2未成功恢复数据,错误处置流管理组件113可执行由错误处置流指定的其余错误处置操作(例如,执行错误处置操作1,接着执行错误处置操作3)。响应于错误处置操作恢复数据,错误处置流管理组件113可更新元数据表420以指示哪一错误处置操作成功地恢复数据。响应于错误处置操作2成功地恢复数据,错误处置流管理组件113可终止执行由错误处置流指定的任何其它操作,且维持错误处置操作2作为元数据表420中的错误处置最后操作。
[0064]
如上文所论述,每一错误处置流(例如,f0、f1...f5)可包含将由错误处置流管理组件113按预定次序执行直到成功地恢复读取操作的所要数据为止的不同错误处置操作。错误处置操作可包含使用不同参数的一或多个读取重试,例如将不同读取偏移施加到基础读取电平、例如fec和harq等深度错误处置技术等。在一些实施例中,一个错误处置操作可包含将读取偏移的集合施加到基础读取电平的第一组读取重试,且另一错误处置操作可包含将读取偏移的不同集合(具有不同值)施加到基础读取电平的第二组读取重试。一个错误处
置流中的一或多个错误处置操作可不包含于另一错误处置流中,且反之亦然。在一些实施例中,多个区间可与同一错误处置流相关联。
[0065]
图5是由根据本公开的一些实施例进行操作的存储器子系统控制器实施的错误处置流管理的实例方法500的流程图。方法500可由可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑执行。在一些实施例中,方法500由图1的错误处置流管理组件113执行。尽管以特定顺序或次序展示,但除非另外规定,否则可修改操作的次序。因此,示出的实施例应仅作为实例理解,且示出的操作可以不同次序执行,且一些操作可并行执行。另外,在一些实施例中,可省略一或多个操作。因此,并非每个实施例中都需要所有所示出的操作,且其它过程流程是可能的。
[0066]
在操作510处,处理逻辑检测关于驻存于存储器装置的块中的数据的读取错误。在一些实施例中,块可为与电压偏移区间相关联的块族的部分。
[0067]
在操作520处,处理逻辑确定待执行以恢复与读取错误相关联的数据的错误处置操作的有序集合。举例来说,处理逻辑可使用元数据表(例如,元数据表410和/或420)来确定哪一错误处置流与电压偏移区间相关联,和由错误处置流指定的错误处置操作(连同其参数)的次序。
[0068]
在操作530处,处理逻辑确定与电压偏移区间相关联的错误处置最后操作。错误处置最后操作可为错误处置操作,所述错误处置操作在由处理逻辑对与电压偏移区间相关联的块执行最近错误处置流(例如,最近执行的错误处置操作)期间成功地恢复数据。可通过处理逻辑将错误处置最后操作的指示维持在元数据表中。
[0069]
在操作540处,处理逻辑通过按错误处置操作集合的次序将错误处置最后操作定位在预定位置内来调整错误处置操作集合的次序。预定位置可向处理逻辑指示在相应区间的操作次序内的哪一位置处执行错误处置操作次序内的错误处置最后操作。处理逻辑可在元数据表中维持预定位置的指示。可在存储器装置的编程或校准中的至少一者期间设置预定位置。
[0070]
在550操作处,处理逻辑按调整后的次序执行错误处置操作集合中的一或多个错误处置操作,直到与读取错误相关联的数据恢复为止。响应于多个错误处置操作中的错误处置操作按调整后的次序恢复与读取错误相关联的数据,处理逻辑可通过用当前错误处置最后操作替换先前错误处置最后操作来更新元数据表。
[0071]
图6示出计算机系统600的实例机器,其中可执行一组指令以用于使机器执行本文中所论述的方法中的任何一或多个。在一些实施例中,计算机系统600可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用以执行控制器的操作(例如,运行操作系统以执行对应于图1的错误处置流管理组件113的操作)。在替代性实施例中,机器可连接(例如,联网)到lan、内联网、外联网和/或互联网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
[0072]
机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝式电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指
定待由所述机器采取的动作的一组指令的任何机器。此外,虽然示出了单个机器,但还应认为术语“机器”包含单独地或共同地执行一组(或多组)指令以执行本文所论述的方法中的任何一或多种的机器的任何集合。
[0073]
实例计算机系统600包含经由总线630彼此通信的处理装置602、主存储器604(例如,只读存储器(rom)、快闪存储器、动态随机存取存储器(dram),例如同步dram(sdram)或rambus dram(rdram)等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(sram)等)以及数据存储系统618。处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元或类似者。更确切地说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的处理器或实施指令集的组合的处理器。处理装置602还可以是一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理装置602配置成执行指令626以用于执行本文所论述的操作和步骤。计算机系统600可进一步包含用以经由网络620通信的网络接口装置608。
[0074]
数据存储系统618可包含机器可读存储媒体624(也称为计算机可读媒体),所述机器可读存储媒体上存储有一或多组指令626或体现本文所描述的方法或功能中的任何一或多种的软件。指令626还可在其由计算机系统600执行期间完全或至少部分地驻存在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可对应于图1的存储器子系统110。
[0075]
在一个实施例中,指令626包含用于实施对应于图1的错误处置流管理组件113的功能性的指令。虽然在实例实施例中将机器可读存储媒体624展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储由机器执行的一组指令或对其进行编码且使机器执行本公开的方法中的任何一或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
[0076]
已就对计算机存储器内的数据位的操作的算法和符号表示而言呈现了先前详细描述的一些部分。这些算法描述及表示是数据处理领域的技术人员用于将其工作的主旨最有效地传达给本领域其它技术人员的方式。算法在本文中且一般被认为是产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操控的那些操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电信号或磁信号的形式。主要出于常用的原因,已证明将这些信号称为位、值、元素、符号、字符、术语、编号或类似者有时是方便的。
[0077]
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅是应用于这些量的方便标记。本公开可涉及将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操控且变换成类似地表示为计算机系统的存储器或寄存器或其它此类信息存储系统内的物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
[0078]
本公开还涉及一种用于执行本文中的操作的设备。此设备可出于预期目的而专门构建,或其可包含由存储于计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储于计算机可读存储媒体中,例如但不限于任何类型的盘(包含软盘、光盘、cd-rom和磁性光盘)、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。
[0079]
本文中呈现的算法和显示本质上并不与任何特定计算机或其它设备相关。各种通用系统可根据本文中的教示与程序一起使用,或其可以证明构造更专用的设备来执行方法是方便的。将如下文描述中所阐述的那样呈现用于各种这些系统的结构。另外,并不参考任何特定编程语言来描述本公开的实施例。应了解,可使用多种编程语言来实施如本文所描述的本公开的教示。
[0080]
本公开可提供为计算机程序产品或软件,所述计算机程序产品或软件可包含其上存储有可用以对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于存储呈机器(例如,计算机)可读形式的信息的任何机制。举例来说,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、快闪存储器装置等。
[0081]
在前述说明书中,已参考本公开具体实例实施例描述了本公开的实施例。将显而易见的是,可以在不脱离如所附权利要求书中阐述的本公开实施例的更广精神和范围的情况下对本公开进行各种修改。因此,说明书和图式应被视为说明性的而非限制性的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1