存储器裸片失效风暴期间的性能及死锁缓解的制作方法

文档序号:32298881发布日期:2022-11-23 05:54阅读:115来源:国知局
存储器裸片失效风暴期间的性能及死锁缓解的制作方法

1.本公开大体上涉及性能及死锁缓解,且更特定来说,涉及存储器裸片失效风暴期间的性能及死锁缓解。


背景技术:

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


技术实现要素:

3.本公开的一方面提供一种方法,其包括:由存储器子系统处理寻址到存储器装置的第一裸片的第一读取存储器命令;由所述存储器子系统确定处理所述第一读取存储器命令未能正确地从所述第一裸片读取所述第一用户数据;由所述存储器子系统响应于确定处理所述第一读取存储器命令未能正确地从所述第一裸片读取所述第一用户数据而确定所述第一裸片是否已失效;及由所述存储器子系统响应于确定所述第一裸片已失效而执行简化错误恢复程序以成功执行所述第一读取存储器命令而不是完整错误恢复程序。
4.本公开的另一方面提供一种非暂时性计算机可读存储媒体,其包括指令,所述指令在由处理装置执行时致使所述处理装置进行以下操作:处理寻址到存储器子系统的存储器装置的第一裸片的第一读取存储器命令;确定处理所述第一读取存储器命令未能正确地从所述第一裸片读取第一用户数据;响应于确定处理所述第一读取存储器命令未能正确地从所述第一裸片读取所述第一用户数据而确定所述第一裸片是否已失效;及响应于确定所述第一裸片已失效而执行简化错误恢复程序以成功执行所述第一读取存储器命令而不是完整错误恢复程序。
5.本公开的另一方面提供一种系统,其包括:存储器装置;及处理装置,其可操作地与所述存储器装置耦合,所述处理装置用以:处理寻址到所述存储器装置的第一裸片的第一读取存储器命令;响应于确定处理所述第一读取存储器命令未能正确地从所述第一裸片读取第一用户数据而确定所述第一裸片是否已失效;及响应于确定所述第一裸片已失效而执行简化错误恢复程序以成功执行所述第一读取存储器命令而不是完整错误恢复程序。
附图说明
6.将从下面给出的详细描述及从本公开的各种实施例的附图中更充分地理解本公开。然而,图式不应被视为将本公开限定于特定实施例,而仅用于解释及理解。
7.图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
8.图2是根据本公开的一些实施例的用以检测及缓解存储器错误以考虑到失效存储器裸片的实例方法的流程图。
9.图3展示根据本公开的一些实施例的用以跨存储器子系统中的裸片跟踪错误的错
误记录表。
10.图4展示根据本公开的一些实施例的存储器子系统的一组核心。
11.图5是根据本公开的一些实施例的用以检测及缓解存储器错误以考虑到失效存储器裸片的另一实例方法的流程图。
12.图6是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
13.本公开的方面涉及存储器子系统中的存储器裸片失效风暴期间的性能及死锁缓解。存储器子系统可为存储装置、存储器模块或存储装置与存储器模块的混合体。下面结合图1描述存储装置及存储器模块的实例。一般来说,主机系统可利用包含一或多个组件的存储器子系统,例如存储数据的存储器装置。主机系统可提供待存储在存储器子系统处的数据,并可请求从存储器子系统检索数据。
14.存储器装置可为非易失性存储器装置。非易失性存储器装置是一或多个裸片的封装。非易失性存储器装置的一个实例是与非(nand)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。封装中的裸片可被指派到用于与存储器子系统控制器通信的一或多个通道。每一裸片可由一或多个平面组成。平面可被分组成逻辑单位(lun)。对于一些类型的非易失性存储器装置(例如,nand装置),每一平面由可为用以存储数据的存储器单元的群组的一组物理块组成。单元是存储信息的电子电路。
15.取决于单元类型,单元可存储一或多个二进制信息位,并具有与所存储的位的数目相关的各种逻辑状态。逻辑状态可由二进制值表示,例如“0”及“1”,或此类值的组合。存在各种类型的单元,例如单电平单元(slc)、多电平单元(mlc)、三电平单元(tlc)及四电平单元(qlc)。举例来说,slc可存储一位信息并且具有两种逻辑状态。
16.包含nand存储器装置的存储器装置通常包含多个裸片(有时称为逻辑单位号(lun))。相关联存储器子系统执行与每一存储器裸片相关的读取及写入操作以完成对应存储器请求/命令(内部产生的请求/命令或来自主机系统的请求/命令)。然而,裸片可能部分或完全失效,这导致存储器子系统因此无法读取数据及/或将数据写入失效裸片(即,有时称为裸片失效风暴,其导致无法对失效裸片执行编程、擦除及读取操作)。在一些情况下,存储器子系统可检测到裸片正开始失效。举例来说,存储器子系统可尝试从裸片的一部分读取数据,但由于读取数据中的位错误,存储器子系统使用与读取数据相关联的错误校正码(ecc)来尝试校正位错误。响应于ecc因位错误太多而无法恢复数据,存储器子系统尝试从裸片进行一或多次重新读取。响应于这些读取重试的失败,存储器子系统执行独立nand冗余阵列(rain)恢复程序以尝试读取/检索所请求数据。如下文将描述,rain恢复程序不依赖于潜在失效裸片,而代替地依赖于其它裸片来从存储器装置读取数据。然而,尽管使用rain恢复程序从存储器装置读取数据最终取得成功,但存储器子系统将此读取操作记录为失败,这是因为无法使用来自原始寻址裸片的数据成功读取数据。
17.存储器子系统跟踪在离散时间量期间的失败读取及/或写入操作的数目,并响应于失败读取及/或写入操作的数目满足失败阈值(例如,一百次失败读取及/或写入操作),存储器子系统触发将数据从失效/源裸片移动到新/目标裸片。特定来说,存储器子系统从失效/源裸片的块条带读取数据,并将数据写入目标裸片中的空闲块条带。然而,由于源裸
片已失效,存储器子系统将需要尝试时间密集型恢复程序以在将数据写入目标裸片之前从源裸片读取所述数据。如上文描述,此恢复程序包含数个读取重试及响应于读取重试失败的最终rain恢复程序。此外,此数据移动过程需要目标裸片中的空闲块条带容纳写入。为确保空闲块条带随时可用,存储器子系统执行废弃项目收集程序以折叠/移动数据并产生空闲块条带。然而,由于将源裸片的数据移动到目标裸片中需要执行大量写入操作,存储器子系统可能无法足够快地执行废弃项目收集,并且存储器装置可能会耗尽空闲块条带。特定来说,除处理来自主机系统的主机写入请求之外,废弃项目收集过程可能无法补充空闲块条带以满足来自涉及失效/源裸片的数据移动过程的写入需求。此外,由于主机写入请求优先于内部产生的写入请求,例如作为废弃项目收集过程或从失效裸片移动/折叠数据以确保对主机系统的良好服务质量的部分的那些写入请求,因此主机写入请求可能在存储器子系统中引起死锁。特定来说,主机请求在其等待完成时优先放在存储器子系统的写入命令缓冲器中。然而,由于无法完成与废弃项目收集相关联的写入请求,因此空闲块条带不可用于完成主机写入请求。因此,主机写入请求保留在写入命令缓冲器中等待块条带,所述块条带将永远不会变得可用。在写入命令缓冲器中缺少移动导致死锁,其中存储器请求无法在存储器子系统中被处理。
18.本公开的方面通过有效地检测及缓解存储器装置内的裸片失效(即,裸片失效风暴)的影响来解决以上及其它缺陷。特定来说,存储器子系统跟踪一组存储器装置中的每一裸片的错误(例如,编程、擦除及读取错误)。当特定裸片的错误数目/错误率未满足阈值(例如,保持低于阈值)时,存储器子系统执行完整错误恢复程序。除rain恢复程序(当所有读取重试失败时)之外,完整错误恢复程序还可包含多次读取重试。然而,当特定裸片的错误数目/错误率满足阈值(例如,等于或高于阈值)时,存储器子系统执行简化错误恢复程序(有时称为部分错误恢复程序)。简化错误恢复程序包含完整错误恢复程序的操作的子集。举例来说,简化错误恢复程序可仅包含rain恢复程序且不包含完整错误恢复程序中存在的任何读取重试。此技术确保投入到错误恢复中的资源不会浪费在不太可能成功的操作上。也就是说,如果存在与特定裸片相关联的大量错误,那么裸片可能已失效,并且对裸片执行读取重试操作将不会产生成功结果。相比之下,rain恢复程序(如将在下文更详细地描述)不依赖于潜在失效裸片来读取/检索数据,而是依赖于其它裸片来进行数据检索。因此,凭借通过简化错误恢复程序跳过读取重试操作,存储器子系统可改进读取性能,并通过增加数据可从失效裸片转移到运行/目标裸片的速率来降低裸片失效时出现死锁情形的可能性。特定来说,通过简化错误恢复程序跳过读取重试操作增加了与折叠读取请求相关的效率/性能,使得空闲块条带被更快地补充以避免其中没有空闲块条带可用来完成写入请求的死锁情况。下面将描述这些技术的进一步细节。
19.图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此组合。
20.存储器子系统110可为存储装置、存储器模块或存储装置与存储器模块的混合体。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡及硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小外形dimm(so-dimm)及各
种类型的非易失性双列直插式存储器模块(nvdimm)。
21.计算系统100可为计算装置,例如桌上型计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它交通工具)、物联网(iot)启用装置、嵌入式计算机(例如,包含在交通工具、工业装备或联网商业装置中的装置),或包含存储器及处理装置的此计算装置。
22.计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文使用,“耦合到”或“与

耦合”一般是指组件之间的连接,其可为间接通信连接或直接通信连接(例如,不具有中介组件),无论是有线的还是无线的,包含例如电连接、光学连接、磁性连接等。
23.主机系统120可包含处理器芯片组及由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,nvdimm控制器)及存储协议控制器(例如,pcie控制器、sata控制器)。举例来说,主机系统120使用存储器子系统110以将数据写入存储器系统110及从存储器系统110读取数据。
24.主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含(但不限于)串行高级技术附件(sata)接口、外围组件互连快速(pcie)接口、通用串行总线(usb)接口、光纤通道、串行附接scsi(sas)、小型计算机系统接口(scsi)、双数据速率(ddr)存储器总线、双列直插式存储器模块(dimm)接口(例如,支持双数据速率(ddr)的dimm插槽接口)、开放式nand快闪接口(onfi)、双数据速率(ddr)、低功率双数据速率(lpddr)或任何其它接口。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。主机系统120可进一步利用nvm快速(nvme)接口以在存储器子系统110通过pcie接口与主机系统120耦合时存取组件(例如,存储器装置130)。所述物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据及其它信号的接口。图1说明存储器子系统110作为实例。一般来说,主机系统120可经由相同通信连接、多个单独通信连接及/或通信连接的组合来存取多个存储器子系统。
25.存储器装置130、140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任一组合。易失性存储器装置(例如,存储器装置140)可为(但不限于)随机存取存储器(ram),例如动态随机存取存储器(dram)及同步动态随机存取存储器(sdram)。
26.非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(nand)型快闪存储器及就地写入存储器,例如三维交叉点(“3d交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格数据存取阵列基于体积电阻的改变执行位存储。另外,与许多基于快闪的存储器相对照,交叉点非易失性存储器可执行就地写入操作,其中可对非易失性存储器单元进行编程而无需事先擦除非易失性存储器单元。nand型快闪存储器包含例如二维nand(2d nand)及三维nand(3d nand)。
27.尽管描述例如nand型存储器(例如,2d nand、3d nand)的非易失性存储器装置及非易失性存储器单元的3d交叉点阵列,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选择存储器、其它硫属化物基存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻随机存取存储器(rram)、氧
化物基rram(oxram)、或非(nor)快闪存储器以及电可擦除可编程只读存储器(eeprom)。
28.存储器子系统控制器115(或为简单起见控制器115)可与存储器装置130通信以执行例如在存储器装置130处读取数据、写入数据或擦除数据的操作以及其它此类操作(例如,响应于由控制器115在命令总线上调度的命令)。存储器子系统控制器115可包含例如一或多个集成电路及/或离散组件、缓冲存储器或其组合的硬件。硬件可包含具有专用(即,硬编码)逻辑的数字电路系统以执行本文所描述的操作。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga),专用集成电路(asic)等)或另一合适处理器。
29.存储器子系统控制器115可包含经配置以执行存储在本地存储器119中的指令的处理装置117(处理器)。在所说明实例中,存储器子系统控制器115的本地存储器119包含经配置以存储用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程以及例程的指令的嵌入式存储器,。
30.在一些实施例中,本地存储器119可包含存储存储器指针、所获取数据等的存储寄存器。本地存储器119还可包含用于存储微代码的只读存储器(rom)。尽管图1中的实例存储器子系统110已经说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,并且可代替地依赖于外部控制(例如,由外部主机或由与存储器子系统110分离的处理器或控制器提供)。
31.一般来说,存储器子系统控制器115可从主机系统120接收命令或操作,并且可将命令或操作转换为指令或适当命令以实现对存储器装置130及/或存储器装置140的期望存取。存储器子系统控制器115可负责其它操作,例如损耗均衡操作、废弃项目收集操作、错误检测及错误纠正代码(ecc)操作、加密操作、高速缓存操作以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(lba)、命名空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含主机接口电路系统,以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收的命令转换为命令指令以存取存储器装置130及/或存储器装置140,以及将与存储器装置130及/或存储器装置140相关联的响应转换为用于主机系统120的信息。
32.存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含可从存储器子系统控制器115接收地址并解码所述地址以存取存储器装置130的高速缓存或缓冲器(例如,dram)及地址电路系统(例如,行解码器及列解码器)。
33.在一些实施例中,存储器装置130包含本地媒体控制器135,其与存储器子系统控制器115结合操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其是与本地控制器(例如,本地控制器135)组合的用于同一存储器装置封装内的媒体管理的原始存储器装置。受管理存储器装置的实例是受管理nand(mnand)装置。
34.存储器子系统110包含错误处理组件113,其可检测并缓解存储器错误以考虑到失效存储器裸片/逻辑单位号(lun)。在一些实施例中,控制器115包含错误处理组件113的至少一部分。举例来说,控制器115可包含处理器117(处理装置),其经配置以执行存储在本地存储器119中的指令以执行本文所描述的操作。在一些实施例中,错误处理组件113是主机
系统120、应用程序或操作系统的部分。下面描述关于错误处理组件113的操作的进一步细节。
35.图2是根据本公开的一些实施例的用以检测及缓解存储器错误以考虑到失效存储器裸片的实例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200由图1的错误处理组件113执行。尽管以特定序列或顺序展示,但除非另有指定,否则可修改过程的顺序。因此,所说明实施例应仅被理解为实例,并且所说明过程可以不同顺序执行,并且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每一个实施例中都需要所有过程。其它过程流程是可能的。
36.在操作202处,处理装置接收用于处理的存储器命令。举例来说,存储器子系统110的特定核心可接收存储器命令,其可为编程、擦除或读取存储器命令,并且处理装置可将所接收存储器命令放置/添加到命令缓冲器用于处理。存储器命令可为内部产生的存储器命令(例如,被触发或作为废弃项目收集过程的部分的存储器命令),或者存储器命令可源自主机系统120。举例来说,存储器命令可为来自主机系统120的读取存储器命令,其寻求从存储器装置130/140的指示地址读取数据。所指示地址可对应于存储器装置130/140中的特定裸片/lun。
37.在操作204处,处理装置尝试使用存储器装置130/140来完成所接收存储器命令。举例来说,当存储器命令是来自主机系统120的读取存储器命令时,处理装置尝试从存储器装置130/140的寻址裸片读取页面并将读取数据传回到主机系统120。在一些情况下,存储器装置130/140的寻址位置中的数据可与错误校正码(ecc)一起存储,使得处理装置可校正对应读取数据中的一组位错误(例如,多达两位错误)。当存储器命令是编程或擦除存储器命令时,处理装置尝试编程或擦除存储器装置130/140的寻址裸片。在一些实施例中,存储器子系统110中的特定核心接收存储器命令(有时称为接收核心),并且存储器命令被放置到命令缓冲器中,所述命令缓冲器包含离散数目个槽位/条目。在一些实施例中,单独核心从命令缓冲器检索存储器命令用于处理(有时称为处理核心)。在其它实施例中,接收核心可接收存储器命令并产生一组较低级存储器命令用于完成所接收较高级存储器命令。接收核心将较低级存储器命令放置在命令缓冲器中用于由直接存取存储器装置130/140的处理核心检索及处理。
38.在操作206处,处理装置确定完成所接收存储器命令的尝试是否成功。举例来说,当存储器命令是来自主机系统120的读取存储器命令时,当处理装置从存储器装置130/140读取数据并将读取数据传回到主机系统120而不用不同的微调/读取电压设置;rain恢复程序;及/或类似错误恢复过程重新读取存储器装置130/140时,处理装置确定完成存储器命令的尝试是成功的。在一些实施例中,当需要ecc来从读取数据移除位错误但不需要用不同的微调/读取电压设置、rain及/或类似错误恢复过程来重新读取存储器装置130/140时,处理装置可确定完成尝试是成功的。在一些实施例中,处理核心向接收核心递送存储器命令的成功或不成功完成的确认。响应于处理装置确定完成所接收存储器命令的尝试是成功的,方法200返回到操作202。相反,响应于处理装置确定完成所接收存储器命令的尝试是不成功的,方法200移动到操作208。
39.在操作208处,处理装置记录与所接收/失效存储器命令相关的存储器错误。特定来说,存储器子系统110可跟踪存储器子系统110中的存储器命令错误的数目(即,导致对应存储器命令无法完成的错误,或者需要错误恢复过程来完成存储器命令的错误)。在一些实施例中,处理装置跟踪存储器子系统110中每裸片/lun及/或每存储器命令类型的的错误。举例来说,每当发生存储器错误时,存储器子系统110的快闪转译层(ftl)错误处置器接收错误的报告,并且将所述错误添加到错误请求队列以按顺序进行处置。ftl错误处置器可跟踪与所检测到的错误相关联的源(例如,相关联裸片)及其它元数据。举例来说,图3展示可由ftl错误处置器或存储器子系统110的另一组件使用来跟踪错误的错误记录表300。如在图3中所展示,错误记录表300跟踪/记录每裸片302及每错误类型304的错误。特定来说,错误记录表300跟踪存储器子系统110中与(1)存储器装置130/140中的裸片3020到302
x
及(2)三种错误类型304:编程错误304a、擦除错误304b及读取错误304c(每一裸片302的这些错误类型302的总和表示为总错误304d)相关联的错误或失效。基于错误记录表300,处理装置基于与错误相关联的裸片302及错误类型304使对应值递增。举例来说,图3展示裸片3020已经历0个编程错误304a、0个擦除错误304b及2个读取错误304c(2个总错误304d);裸片3021已经历1个编程错误304a、0个擦除错误304b及3个读取错误304c(4个总错误304d);裸片302
x
已经历0个编程错误304a、0个擦除错误304b及0个读取错误304c(0个总错误304d)。
40.在操作210处,处理装置确定存储器操作错误的记录是否指示针对存储器装置130/140中的裸片的与所接收存储器命令相关联的裸片失效风暴。特定来说,处理装置可基于以下项中的一或多者而确定裸片正在失效或已经失效:(1)传入错误的比率;及(2)传入错误的类型或来源(即,裸片指示)。特定来说,处理装置可确定到存储器子系统110的传入错误的比率满足错误率阈值,并且满足错误率阈值的错误的数目对应于与所接收存储器命令相关联的特定裸片。
41.举例来说,处理装置可将每裸片302的编程错误304a、擦除错误304b、读取错误304c及/或总错误304d的数目与一组阈值进行比较以确定裸片302是否失效。例如,错误记录表300可表示离散时间段(例如,前一分钟)期间的错误。响应于处理装置确定裸片3021的总错误304d满足错误率阈值(例如,每分钟100个),处理装置可确定存储器操作错误的记录指示裸片3021正在失效或已经失效(即,失效(fail/failure)风暴)。也就是说,响应于确定由特定裸片302经历的错误的数目大于或等于指示比率(例如,错误率阈值),处理装置确定裸片302正在失效或已经失效。在一些实施例中,可动态地设置错误率阈值。举例来说,如上文所述,每当发生错误时,存储器子系统110的ftl错误处置器接收错误的报告。当错误被添加到错误请求队列时,ftl错误处置器移除并按顺序处置每一错误。ftl错误处置器或存储器子系统110的另一组件可记录处理来自错误请求队列的每一错误所需的时间并使用此错误时间(例如,处理错误的运行平均时间)而确定错误率阈值。在一个实施例中,错误率阈值指示在检测到裸片失效之前错误请求队列中的条目的数目。举例来说,可将错误率阈值设置为十个条目,使得当错误请求队列中存在十个条目并且这十个条目中的每一者集中在单个裸片302(例如,裸片3021)上时,处理装置可确定裸片302已经失效。
42.在一些实施例中,处理装置跟踪每一裸片302中良好及失效块的数目。在这些实施例中,处理装置可比较裸片302中良好块与失效块的数目以确定裸片是否已经失效。举例来说,当裸片302中失效块的数目等于或超过良好块的数目时,处理装置可确定此裸片已经失
效。在一些实施例中,处理装置基于以下两者而确定裸片302是否已经失效:(1)裸片的传入错误的比率(例如,裸片的总错误304d满足错误阈值);及(2)裸片302中良好块与失效块的数目的比较。在这些实施例中,当传入错误的比率满足错误阈值并且裸片302中失效块的数目等于或超过良好块的数目时,处理装置可确定此裸片已经失效。响应于确定存储器装置130/140中的裸片302尚未失效,方法200移动到操作212。
43.在操作212,处理装置执行完整错误恢复程序。举例来说,当失效存储器命令是读取存储器命令时,处理装置可进行多步骤错误恢复程序。在一个实施例中,完整错误恢复程序包含:(1)十三个步骤,其中处理装置用修改的微调设置来重试读取裸片302(多达十三次不同尝试),其指示用于施加到裸片302的对应部分以在可能使用ecc的情况下从裸片302读取数据的读取电压;及(2)一个步骤,其中处理装置使用rain恢复来检索数据。在一些实施例中,十三个读取重试步骤可包含:(1)用第一组设置(例如,微调/读取电压设置)及使用硬低密度奇偶校验(ldpc)译码对裸片302进行第一次重新读取,所述设置为与最初用于读取裸片302相同的设置;(2)当先前重新读取操作不成功时,用第二组设置(例如,将微调/读取电压设置降低4毫伏)及使用硬ldpc译码对裸片302进行第二次重新读取;(3)当先前重新读取操作不成功时,用第三组设置(例如,将微调/读取电压设置增大4毫伏)及使用硬ldpc译码对裸片302进行第三次重新读取;(4)当先前重新读取操作不成功时,用第四组设置(例如,将微调/读取电压设置降低8毫伏)及使用硬ldpc译码对裸片302进行第四次重新读取;(5)当先前重新读取操作不成功时,用第五组设置(例如,将微调/读取电压设置增大8毫伏)及使用硬ldpc译码对裸片302进行第五次重新读取;(6)当先前重新读取操作不成功时,用第六组设置(例如,将微调/读取电压设置降低16毫伏)及使用硬ldpc译码对裸片302进行第六次重新读取;(7)当先前重新读取操作不成功时,用第七组设置(例如,将微调/读取电压设置增大16毫伏)及使用硬ldpc译码对裸片302进行第七次重新读取;(8)当先前重新读取操作不成功时,用第八组设置(例如,将微调/读取电压设置降低32毫伏)及使用硬ldpc译码对裸片302进行第八次重新读取;(9)当先前重新读取操作不成功时,用第九组设置(例如,将微调/读取电压设置增大32毫伏)及使用硬ldpc译码对裸片302进行第九次重新读取;(10)当先前重新读取操作不成功时,用第一组设置以及用校正读取操作(例如,存储器装置130/140从邻近字线读取,并使用从读取这些邻近字线获得的电压来调整当前字线的字线阈值)及硬ldpc译码对裸片302进行第十次重新读取;(11)当先前重新读取操作不成功时,用第一组设置及软ldpc对裸片302进行第十一次重新读取;(12)当先前重新读取操作不成功时,用第六组设置及使用自动校准无持续性(例如,不具有来自先前校准的持续值的自动校准)对裸片302进行第十二次重新读取;以及(13)当先前重新读取操作不成功时,用第七组设置及使用自动校准无持续性对裸片302进行第十三次重新读取。
44.如上文所述,完整错误恢复程序包含rain恢复程序。在一个实施例中,存储器子系统110将单独用户数据(连同可能的ecc数据)存储在两个或更多个裸片的页面中,并将rain恢复数据(例如,异或(xor)结果数据)存储在另一裸片的页面中。特定来说,在将单独用户数据写入存储器装置130/140的两个单独裸片(即,源裸片)的两个页面时,存储子系统110对两条单独的用户数据(连同可能的ecc数据)执行异或(xor)操作,并将结果存储在另一裸片(即,结果裸片)的页面中。在此配置中,如果存储用户数据的源裸片的页面中的任一者被破坏或以其它方式丢失(例如,整个源裸片已经失效),那么存储器子系统110可对来自完全
地运行的源裸片的用户数据的可存取页面与结果裸片中的原始xor结果执行异或操作以恢复用户数据的丢失页面。尽管此rain恢复程序是关于两个源裸片描述的,但rain恢复程序可扩展到多于两个源裸片以从单个失效源裸片恢复用户数据。在操作212处执行完整错误恢复程序之后,方法200返回到操作202。
45.返回到操作210,响应于处理装置确定存储器装置130/140中的裸片302已经失效,方法200移动到操作214。在操作214处,处理装置确定所接收/失效存储器命令是否为读取存储器命令。响应于确定所接收存储器命令不是读取存储器命令(例如,所接收/失效存储器命令是编程或擦除存储器命令),方法200移动到操作212。相反,响应于确定所接收存储器命令是读取存储器命令,方法200移动到操作216。
46.在操作216处,处理装置确定简化/部分错误恢复程序的历史使用是否满足与由当前存储器命令寻址的裸片相关的恢复阈值。特定来说,简化错误恢复程序可包含来自完整错误恢复程序的操作/命令的子集。举例来说,简化错误恢复程序可不包含读取重试步骤(例如,不包含上面描述的十三个读取重试步骤中的任何一个)且仅包含rain恢复程序。存储器子系统110可跟踪简化错误恢复程序传回与每一裸片相关的有效/正确用户数据的次数。举例来说,存储器子系统110可跟踪rain恢复程序传回存储器装置130/140中的每裸片的有效用户数据的次数。当简化错误恢复程序成功传回裸片的与当前存储器命令相关联的有效用户数据的比率/百分比未能满足错误恢复阈值(例如,错误恢复阈值为50%)时,方法200移动到操作218。
47.在操作218处,处理装置传回错误,而不执行错误恢复程序。举例来说,存储器子系统110可将错误消息传回到主机系统120。
48.返回到操作216,当简化错误恢复程序成功传回裸片的与当前存储器命令相关联的有效用户数据的比率/百分比满足错误恢复阈值(例如,错误恢复阈值为50%)时,方法200移动到操作220。在操作220处,处理装置执行简化错误恢复程序以尝试完成未处理读取存储器命令。特定来说,处理装置可执行rain恢复程序以从存储器装置130/140中的失效裸片恢复用户数据。
49.在一些实施例中,存储器子系统110包含处理核心的层次结构,所述处理核心一起工作以完成存储器命令。举例来说,图4展示存储器子系统110的一组核心402。如所展示,核心402a执行高级折叠读取存储器命令404a,核心402b执行高级rain恢复命令404b,核心402c执行与完成主机读取存储器命令404c相关的高级操作,且核心402d1到402dc执行低级读取及读取重试命令404d。举例来说,核心402a接收或产生用于将一个块/块条带折叠为另一块/块条带用于废弃项目收集的目的的折叠读取存储器命令404a。响应于折叠读取存储器命令404a,核心402a产生一组低级命令并将其传输到核心402d。在一个实施例中,核心402d中的每一者对应于存储器装置130/140的单独通道,并且较低级命令是致使核心402d存取存储器装置130/140的对应通道的读取/读取重试命令404d。在一些实施例中,较低级命令包含从其读取的地址、对应于将在读取之后存储数据的位置的缓冲器指针及一组旗标中的一或多者。在一些实施例中,所述组旗标可向核心402d指示在读取存储器命令未成功完成之后是否要执行读取重试命令。举例来说,绕过读取重试操作旗标可设置为:(1)逻辑值“0”,其用以指示在读取存储器命令的未成功完成之后将执行读取重试命令/操作(对应于完整错误恢复程序);(2)逻辑值“1”,其用以指示在读取存储器命令的未成功完成之后将
不执行读取重试命令/操作(对应于简化/部分错误恢复程序)。举例来说,核心402a可确定与读取存储器命令相关联的特定裸片可能失效并将绕过读取重试操作旗标设置为逻辑值“1”使得在读取失败之后不执行读取重试,这是因为这些重试操作将不太可能成功并且将不必要地浪费资源(例如,时间及处理资源)。由核心402d向核心402a发送对所述组低级命令的响应(例如,成功读取的用户数据被发送回核心402a,或者指示核心402d无法从存储器装置130/140的寻址裸片/通道读取数据)。当核心402d确定rain恢复程序是有必要的时,核心402d触发核心402b执行rain恢复程序并且核心402b将读取/所检索数据传回到请求核心402(例如,核心402a或核心402c)。
50.在一些实施例中,操作216及218是任选的,并且在处理装置确定所接收/失效存储器命令是读取存储器命令时方法200直接从操作214移动到操作220。特定来说,处理装置执行简化错误恢复程序,而不考虑简化错误恢复程序的历史使用/趋势。在一些实施例中,操作216及220是任选的,并且在处理装置确定所接收/失效存储器命令是读取存储器命令时方法200直接从操作214移动到操作218。特定来说,处理装置传回错误,而不执行错误恢复程序。
51.图5是根据本公开的一些其它实施例的用以检测及缓解存储器错误以考虑到失效存储器裸片的实例方法500的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法500由图1的错误处理组件113执行。尽管以特定序列或顺序展示,但除非另有指定,否则可修改过程的顺序。因此,所说明实施例应仅被理解为实例,并且所说明过程可以不同顺序执行,并且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每一个实施例中都需要所有过程。其它过程流程是可能的。
52.在操作502处,处理装置处理寻址到存储器装置(例如,存储器装置130/140)的裸片的读取存储器命令。举例来说,处理装置尝试从存储器装置130/140的寻址裸片读取页面并将读取数据传回到主机系统120。在一些情况下,存储器装置130/140的寻址位置中的数据可与错误校正码(ecc)一起存储,使得处理装置可校正对应读取数据中的一组位错误(例如,多达两位错误)。
53.在操作504处,处理装置确定处理读取存储器命令未能正确/成功地从存储器装置的裸片读取数据。特定来说,即使使用ecc,处理装置也无法校正在存储于存储器装置的裸片中时引入到用户数据的位错误。
54.在操作506处,处理装置响应于确定处理读取存储器命令未能正确地从第一裸片读取用户数据而确定裸片是否已经失效。特定来说,存储器子系统110可跟踪与存储器装置130/140的每一裸片相关的存储器命令错误。在这些实施例中,存储器子系统110可确定裸片的传入错误的比率。当裸片的传入错误的比率为高(例如,传入错误的比率满足阈值)时,存储器子系统110确定所述裸片可能已经失效。也就是说,当编程、擦除及/或读取错误的数目在离散时间段期间达到特定级别/阈值时,传入错误的此高比率的可能原因是裸片的失效,使得无存储器命令可由裸片完成。相反,当裸片的传入错误的比率未满足特定比率/阈值时,存储器子系统110不确定/断定所述裸片已经失效。
55.在操作508处,处理装置响应于确定裸片已失效而执行简化错误恢复程序以成功
执行读取存储器命令而不是完整错误恢复程序。除rain恢复程序(当所有读取重试失败时)之外,完整错误恢复程序还可包含裸片的多次读取重试。然而,当特定裸片的错误数目/比率满足阈值(例如,高于阈值)时,存储器子系统110执行简化错误恢复程序。简化错误恢复程序包含完整错误恢复程序的操作的子集。举例来说,简化错误恢复程序仅包含rain恢复程序。此技术确保投入到错误恢复中的资源不会浪费在不太可能成功的操作上。也就是说,如果存在与特定裸片相关联的大量错误,那么裸片可能已失效,并且对裸片执行读取重试操作将不可能产生成功结果。
56.图6说明计算机系统600的实例机器,在计算机系统600内可执行用于致使所述机器执行本文所论述的方法中的任一或多者的一组指令。在一些实施例中,计算机系统600可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110),或者可用以执行控制器的操作(例如,执行操作系统以执行对应于图1的错误处理组件113的操作)。在替代实施例中,所述机器可连接(例如,联网)到lan、内联网、外联网及/或因特网中的其它机器。所述计算机可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器操作,或在云计算基础设施或环境中作为服务器或客户端机器操作。
57.机器可为个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥或能够执行指定待由所述机器采取的动作的一组指令(循序或以其它方式)的任何机器。此外,虽然说明单个机器,但是术语“机器”也应被认为包含机器的任何集合,其个别地或共同地执行一组(或多组)指令以执行本文所论述的方法中的任一者或多者。
58.实例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(rom)、快闪存储器、动态随机存取存储器(dram),例如同步dram(sdram)或rambus dram(rdram)等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(sram)等)及数据存储器装置618,其经由总线630彼此通信。
59.处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元或类似者。更特定来说,处理装置可为复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器,或者是实施其它指令集的处理器,或者是实施指令集的组合的处理器。处理装置602也可为一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器或类似者。处理装置602经配置以执行用于执行本文所论述的操作及步骤的指令626。计算机系统600可进一步包含用于通过网络620进行通信的网络接口装置608。
60.数据存储系统618可包含机器可读存储媒体624(也称为计算机可读媒体),在其上存储体现本文所描述的方法或功能中的任一者或多者的一或多组指令626或软件。在由计算机系统600执行指令626期间,指令626也可全部或至少部分地驻留在主存储器604内及/或处理装置602内,主存储器604及处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618及/或主存储器604可对应于图1的存储器子系统110。
61.在一个实施例中,指令626包含用以实施对应于错误处理组件(例如,图1的错误处理组件113)的功能性的指令。尽管在实例实施例中将机器可读存储媒体624展示为单个媒体,但是术语“机器可读存储媒体”应被认为包含存储一或多组指令的单个媒体或多个媒
体。术语“机器可读存储媒体”也应被认为包含能够存储或编码供机器执行并且致使机器执行本公开的方法中的任一者或多者的一组指令的任何媒体。因此,术语“机器可读存储媒体”应被认为包含(但不限于)固态存储器、光学媒体及磁性媒体。
62.已经根据对计算机存储器内的数据位的操作的算法及符号表示来呈现前述详细描述的某些部分。这些算法描述及表示是数据处理领域的技术人员用来最有效地向所属领域的其它技术人员传达其工作实质的方式。此处,算法通常被认为是导致所需结果的自洽操作序列。所述操作是需要对物理量的物理操纵的操作。通常但不是必须的,这些量采用能够被存储、组合、比较及以其它方式操纵的电或磁信号的形式。已经证明,有时主要出于通用的原因将这些信号称为位、值、元素、符号、字符、项、数字或类似者是方便的。
63.然而,应牢记,所有这些及类似术语均应与适当物理量相关联并且仅仅是应用于这些量的方便标签。本公开可涉及计算机系统或类似电子计算装置的动作及过程,所述计算机系统或类似电子计算装置将表示为计算机系统的寄存器及存储器内的物理(电子)数的数据操纵及变换为类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量。
64.本公开还涉及用于执行本文的操作的设备。此设备可经特定构造用于预期目的,或者其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。举例来说,计算机系统或例如控制器115的其它数据处理系统可响应于其处理器执行存储器或其它非暂时性机器可读存储媒体中含有的计算机程序(例如,指令序列)而实行计算机实施的方法200及500。此计算机程序可存储在计算机可读存储媒体中,例如(但不限于)任何类型的磁盘,包含软盘、光盘、cd-rom及磁光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡或适用于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
65.本文提出的算法及显示并非固有地与任何特定计算机或其它设备相关。各种通用系统可与根据本文的教示的程序一起使用,或者可证明构造更专门设备来执行所述方法是方便的。各种这些系统的结构将如下文描述中所阐述那样出现。另外,未参考任何特定编程语言来描述本公开。将了解,可使用各种编程语言来实施如本文所描述的本公开的教示。
66.本公开可被提供为计算机程序产品或软件,其可包含其上存储有指令的机器可读媒体,所述指令可用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒体包含用于以由机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
67.在前述说明书中,已经参考本公开的特定实例实施例描述本公开的实施例。显而易见的是,在不脱离如所附权利要求书中阐述的本公开的实施例的更广泛精神及范围的情况下,可对其进行各种修改。因此,说明书及图式应被认为具有说明性意义而不是限制性意义。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1