CN117457053A - 使用缺陷率信息的存储器块编程 - Google Patents

使用缺陷率信息的存储器块编程 Download PDF

Info

Publication number
CN117457053A
CN117457053A CN202310896416.5A CN202310896416A CN117457053A CN 117457053 A CN117457053 A CN 117457053A CN 202310896416 A CN202310896416 A CN 202310896416A CN 117457053 A CN117457053 A CN 117457053A
Authority
CN
China
Prior art keywords
memory block
programming
memory
defect rate
defect
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310896416.5A
Other languages
English (en)
Inventor
K·K·姆奇尔拉
合田晃
D·S·埃布森
L·K·瓦卡缇
J·朱
P·菲利
S·苏巴劳
V·希夫哈雷
朱方芳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN117457053A publication Critical patent/CN117457053A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/022Detection or location of defective auxiliary circuits, e.g. defective refresh counters in I/O circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/025Geometric lay-out considerations of storage- and peripheral-blocks in a semiconductor storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/106Data output latches
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1087Data input latches
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本公开涉及使用缺陷率信息的存储器块编程。方法、系统及设备包含检索存储器的一部分的缺陷率足迹,存储器的所述部分由多个块组成。基于所述缺陷率足迹确定所述多个块中的当前块的层面编程顺序。所述当前块由多个层面组成。所述层面编程顺序是对所述多个层面进行编程的顺序。所述多个层面根据所述经确定层面编程顺序进行编程。

Description

使用缺陷率信息的存储器块编程
技术领域
本公开大体上涉及存储器块编程,且更明确来说,涉及使用缺陷率信息的存储器块编程。
背景技术
存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置及易失性存储器装置。一般来说,主机系统可利用存储器子系统来将数据存储在存储器装置处及从所述存储器装置检索数据。
发明内容
在一方面中,本公开涉及一种方法,其包括:检索存储器的一部分的缺陷率足迹,存储器的所述部分由多个块组成;基于所述缺陷率足迹确定所述多个块中的当前块的层面编程顺序,其中所述当前块由多个层面组成且其中所述层面编程顺序包括对所述多个层面进行编程的顺序;及根据所述经确定层面编程顺序对所述多个层面进行编程。
在另一方面中,本公开涉及一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时致使所述处理装置:检索存储器的一部分的缺陷率足迹,存储器的所述部分由多个块组成;基于所述缺陷率足迹确定所述多个块中的当前块的层面编程顺序,其中所述当前块由多个层面组成且其中所述层面编程顺序包括对所述多个层面进行编程的顺序;及根据所述经确定层面编程顺序对所述多个层面进行编程。
在又一方面中,本公开涉及一种系统,其包括:多个存储器装置;及处理装置,其操作性地与所述多个存储器装置耦合以:检索存储器的一部分的缺陷率足迹,存储器的所述部分由多个块组成;基于所述缺陷率足迹确定所述多个块中的当前块的层面编程顺序,其中所述当前块由多个层面组成,其中所述多个层面中的每一者包括顶侧及底侧,且其中所述层面编程顺序包括对所述多个层面进行编程的顺序及对所述多个层面中的每一者进行编程的方向,所述方向指示所述多个层面中的每一者是从所述顶侧到所述底侧进行编程还是从所述底侧到所述顶侧进行编程;及根据所述经确定层面编程顺序对所述多个层面进行编程。
附图说明
从下文给出的详细描述及从本公开的各种实施例的附图将更加完全地理解本公开。然而,图式不应理解为将本公开限于特定实施例,而仅是为了解释及理解。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2说明根据本公开的一些实施例的使用缺陷率信息的存储器块编程。
图3说明根据本公开的一些实施例的使用缺陷率信息的存储器块编程。
图4说明根据本公开的一些实施例的使用缺陷率信息的存储器块编程。
图5是根据本公开的一些实施例的用以使用缺陷率信息对存储器块进行编程的实例方法的流程图。
图6是根据本公开的一些实施例的用以使用缺陷率信息对存储器块进行编程的实例方法的流程图。
图7是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的方面涉及使用存储器子系统中的缺陷率信息的存储器块编程。存储器子系统可为存储装置、存储器模块或存储装置与存储器模块的混合物。下文结合图1描述存储装置及存储器模块的实例。一般来说,主机系统可利用包含例如存储数据的存储器装置的一或多个组件的存储器子系统。主机系统可提供将存储于存储器子系统处的数据且可请求将从存储器子系统检索的数据。
存储器装置可为非易失性存储器装置。非易失性存储器装置是一或多个裸片的封装。非易失性存储器装置的一个实例是“与非”(NAND)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。封装中的裸片可经指派给一或多个通道以用于与存储器子系统控制器通信。每一裸片可由一或多个平面组成。平面可被分组成逻辑单位(LUN)。对于一些类型的非易失性存储器装置(例如,NAND存储器装置),每一平面由一组物理块组成,所述物理块是用于存储数据的存储器单元的群组。单元是存储信息的电子电路。
取决于单元类型,单元可存储一或多个二进制信息位,且具有与所存储的位的数目相关的各种逻辑状态。所述逻辑状态可由例如“0”及“1”或此类值的组合的二进制值表示。存在各种类型的单元,例如单电平单元(SLC)、多电平单元(MLC)、三电平单元(TLC)及四电平单元(QLC)。举例来说,SLC可存储一个信息位且具有两种逻辑状态。
在常规存储器系统中,在制造期间及在操作期间引入了可阻止存储器块被正确编程的缺陷。当尝试对含有缺陷的存储器块进行编程时,写入到存储器块的用户数据可能会在编程失败时丢失。为了保存数据,被编程到存储器块中的用户数据在编程时被保持于缓冲器中。举例来说,四个SLC块的缓冲器可在对QLC块进行编程时用于确保不会由于缺陷而发生数据丢失。如果没有完全覆盖要编程的存储器块,那么存储器块中的缺陷可导致编程失败及不可校正位错误率(UBER)的提高。然而,针对不包含缺陷的QLC块,四个SLC块的缓冲器是过量的。因此,在UBER与过度供应以提供对存储器块的完全缓冲器覆盖之间存在折中。
本公开的方面通过使用存储器系统的已知缺陷率信息来首先对具有缺陷的存储器的区域进行编程来解决上述及其它不足。如果在这些区域中发生编程失败,那么受到影响的用户数据可使用更少缓冲空间来恢复,这是因为例如存储器块的更少数据在失败时经历了编程操作。因此,不存在通常将伴随更小的缓冲器大小的UBER提高。换句话说,此存储器块编程方案最小化缓冲空间及对应过度供应惩罚,同时仍提供足够的缺陷率覆盖。
图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)、小计算机系统接口(SCSI)、双倍数据率(DDR)存储器总线、双列直插式存储器模块(DIMM)接口(例如,支持双倍数据速率(DDR)的DIMM插槽接口))、开放NAND快闪接口(ONFI)、双倍数据速率(DDR)、低功耗双倍数据速率(LPDDR)或任何其它接口。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可进一步利用NVM快速(NVMe)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据及其它信号的接口。图1将存储器子系统110说明为实例。一般来说,主机系统120可经由相同通信连接、多个单独通信连接及/或通信连接的组合存取多个存储器子系统。
存储器装置130、140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如存储器装置140)可为(但不限于)随机存取存储器(RAM),例如动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如存储器装置130)的一些实例包含“与非”(NAND)型快闪存储器及原位写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其是非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可基于体电阻变化连同堆叠式交叉栅格式数据存取阵列执行位存储。另外,与许多基于快闪的存储器形成对比,交叉点非易失性存储器可执行原位写入操作,其中可在先前未擦除非易失性存储器单元的情况下对所述非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)及三维NAND(3D NAND)。
尽管描述了例如NAND类型存储器(例如2D NAND、3D NAND)及非易失性存储器单元的3D交叉点阵列的非易失性存储器装置,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选择存储器、其它硫属化物基存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻式随机存取存储器(RRAM)、氧化物基RRAM(OxRAM)、“或非”(NOR)快闪存储器及电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(或为了简化起见,控制器115)可与存储器装置130通信以执行操作,所述操作例如在存储器装置130处读取数据、写入数据或擦除数据及其它此类操作(例如,响应于由控制器115调度于命令总线上的命令)。存储器子系统控制器115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲存储器或其组合。硬件可包含具有用于执行本文中描述的操作的专用(即,硬编码)逻辑的数字电路系统。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或另一合适的处理器。
存储器子系统控制器115可包含经配置以执行存储于本地存储器119中的指令的处理装置117(处理器)。在说明的实例中,存储器子系统控制器115的本地存储器119包含经配置以存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流及例程的指令的嵌入式存储器,所述控制包含处置存储器子系统110与主机系统120之间的通信。
在一些实施例中,本地存储器119可包含存储存储器指针、经提取数据等的存储器寄存器。本地存储器119还可包含用于存储微代码的只读存储器(ROM)。虽然已将图1中的实例存储器子系统110说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,且可代替地依赖于外部控制(例如,由外部主机提供、或由与存储器子系统110分离的处理器或控制器提供)。
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130及/或存储器装置140的所期望存取。存储器子系统控制器115可负责其它操作,例如损耗均衡操作、废弃项目收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作及与存储器装置130相关联的逻辑块地址(例如逻辑块地址(LBA)、命名空间)与物理地址(例如物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含用以经由物理主机接口与主机系统120通信的主机接口电路系统。所述主机接口电路系统可将从主机系统接收的命令转换成命令指令以存取存储器装置130及/或存储器装置140,并且将与存储器装置130及/或存储器装置140相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如DRAM)及地址电路系统(例如行解码器及列解码器),其可从存储器子系统控制器115接收地址且解码所述地址以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,其连同存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如存储器子系统控制器115)可从外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其是与同一存储器装置封装内的用于媒体管理的本地控制器(例如本地控制器135)组合的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
存储器子系统110包含使用缺陷率信息对存储器块进行编程的存储器块编程顺序组件113。在一些实施例中,控制器115包含存储器块编程顺序组件113的至少一部分。举例来说,控制器115可包含经配置以执行存储于本地存储器119中的用于执行本文中描述的操作的指令的处理器117(处理装置)。在一些实施例中,存储器块编程顺序组件113是主机系统110、应用程序或操作系统的部分。
存储器块编程顺序组件113可使用缺陷率信息以高效顺序对存储器块的子组件进行编程以在使用最小缓冲空间的同时减少位错误问题。下文描述关于存储器块编程顺序组件113的操作的另外细节。
图2说明根据本公开的一些实施例的使用缺陷率信息的存储器块编程。所说明存储器块编程可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。如图2中展示,所说明存储器块编程由存储器块编程顺序组件113执行。尽管未说明,但在一些实施例中,所说明存储器块编程由图1的处理器117执行。在其它实施例中,所说明存储器块编程的一些部分由存储器块编程顺序组件113执行,而其它部分由处理器117执行。所说明实施例应被理解为仅作为实例,且所说明存储器块编程可以不同顺序执行,且/或一些存储器块编程可并行执行。另外,在各种实施例中,可省略一或多个步骤。因此,并非在每个实施例中都需要所有步骤。其它流程是可能的。
如图2中展示,存储器子系统(例如图1的存储器子系统110)正以早期缺陷集中215对存储器块进行编程。此存储器块含有存储器块顶部层面205及存储器块底部层面210。在一些实施例中,存储器块由QLC组成,且存储器块顶部层面205及存储器块底部层面210中的每一者是整个存储器块的半部。在此类实施例中,存储器块顶部层面205及存储器块底部层面210中的每一者保持等于QLC块的一半的数据量(例如,保持于MLC块中的数据量)。
在其它实施例中,存储器块由另一单元类型(例如MLC或TLC)组成,且存储器块顶部层面205及存储器块底部层面210中的每一者是整个存储器块的半部或其它细分。在这些实施例中,层面中的每一者因此保持等于整个MLC或TLC块的对应部分的数据量。举例来说,存储器块由TLC组成,且每一层面是整个存储器块的三分之一。层面中的每一者因此保持等于TLC块的三分之一的数据(例如,保持于SLC块中的数据量)。在替代实例中,存储器块由MLC组成,且每一层面是整个存储器块的一半。层面中的每一者因此保持等于MLC块的一半的数据(例如,保持于SLC块中的数据量)。
在一些实施例中,尽管仅说明两个层面,即存储器块顶部层面205及存储器块底部层面210,但存储器块可分成多于两个层面。出于本公开的目的,术语层面是指可被独立编程或擦除的存储器块的细分。因此,存储器块中层面的数目越高,确定具有最高编程失败概率的区域的灵活性越大。层面可能不是存储器块的最小细分,且层面在其本身内还可含有细分。
如图2中展示,存储器块底部层面210的第一部分保持等于存储器块底部层面210的一半的数据量(例如,保持于SLC块中的数据量)。缺陷率保护缓冲器1 220是由SLC组成的存储器块使得保持于缺陷率保护缓冲器1 220中的用户数据也一一对应地被存储于存储器块底部层面210的第一部分中。
在一些实施例中,缺陷率保护缓冲器1 220及缺陷率保护缓冲器2 230是由SLC组成的块。在其它实施例中,缺陷率保护缓冲器1 220及缺陷率保护缓冲器2 230是具有小于存储器块顶部层面205及存储器块底部层面210的单元类型的位密度的另一单元类型。缺陷率保护缓冲器1 220及缺陷率保护缓冲器2 230是具有高可靠性及低错误可能性的单元/存储器类型。
在一些实施例中,缺陷率保护缓冲器1 220及缺陷率保护缓冲器2 230是存储器子系统的本地存储器(例如图1的本地存储器119)的部分。在其它实施例中,缺陷率保护缓冲器1 220及缺陷率保护缓冲器2 230是存储器块编程顺序组件113的部分。
存储器子系统从主机系统(例如图1的主机系统120)接收一或多个命令以将用户数据编程到存储器。在一些实施例中,响应于接收到这些命令,存储器子系统控制器(例如图1的存储器子系统控制器115)发送用以将数据编程到存储器块顶部层面205及存储器块底部层面210的命令。因为存储器块顶部层面205及存储器块底部层面210是独立层面,因此存储器块顶部层面205及存储器块底部层面210中的每一者可个别地且在从顶部到底部或从底部到顶部的方向上进行编程。
在一些实施例中,存储器块编程顺序组件113确定以其对存储器块顶部层面205及存储器块底部层面210进行编程的顺序。随后,存储器块编程顺序组件113以经确定顺序对存储器块顶部层面205及存储器块底部层面210进行编程。举例来说,存储器块编程顺序组件113可基于早期缺陷集中215确定存储器块底部层面210将首先被编程。存储器块编程顺序组件113因此对存储器块底部层面210进行编程,然后对存储器块顶部层面205进行编程。
如图2中展示,存储器块底部层面210包含早期缺陷集中215。如贯穿本公开使用,术语缺陷及缺陷率是指与装置的标准操作的偏离。更明确来说,缺陷在存储器装置(例如图1的存储器装置130或140)的上下文中或在存储器块(例如由存储器块顶部层面205及存储器块底部层面210组成的存储器块)的上下文中可指其中制造材料未被正确沉积的存储器区。缺陷还可包含在各个组件之间具有绝缘击穿从而在操作期间导致失败的存储器区。缺陷还可包含存储器区中的非预期开路。这些缺陷可能在制造时出现(例如不正确沉积),或可能在操作期间显现,例如电场击穿组件之间的绝缘。
在编程阶段200中,存储器块编程顺序组件113检索存储器装置的缺陷率足迹,其包含与存储器块顶部层面205及存储器块底部层面210相关的缺陷率信息。缺陷率足迹在包含存储器块顶部层面205及存储器块底部层面210的存储器装置(例如图1的存储器装置130或140)制造期间产生。缺陷率足迹包含关于在制造期间出现的缺陷的位置(例如,每一缺陷集中可包含早期缺陷、晚期缺陷或两者的组合)及缺陷的严重性的信息。如贯穿说明书使用,早期缺陷是指存储器块层面的顶部附近的缺陷,而晚期缺陷是指存储器块层面的底部附近的缺陷。在一些实施例中,缺陷的严重性对应于缺陷将在编程期间引起失败的可能性的量度。
存储器块编程顺序组件113使用来自缺陷率足迹的缺陷率信息来确定早期缺陷集中215在存储器块底部层面210的顶部处。举例来说,存储器块编程顺序组件113使用查找表或类似方法找出缺陷率足迹中与存储器块顶部层面205及存储器块底部层面210相关的缺陷率信息。出于说明实例的目的,存储器块底部层面210的顶侧是指存储器块底部层面210的在存储器块顶部层面205与存储器块底部层面210之间的侧。类似地,存储器块底部层面210的底侧是指存储器块底部层面210的与存储器块顶部层面205相对的侧。
此缺陷率信息指示早期缺陷集中215定位于存储器块底部层面210的顶侧上。在一些实施例中,缺陷率信息是指示在对应于存储器装置(例如图1的存储器装置130或140)的每一字线的编程期间失败的可能性的信息。在其它实施例中,缺陷率信息包含不同粒度级别。缺陷率信息的粒度级别取决于可用存储、操作条件及其它参数而不同。在一个实施例中,缺陷率信息的粒度级别与层面大小相关。举例来说,针对QLC块的一半的层面大小,缺陷率信息的粒度级别可为层面大小的一半。在此粒度级别下,存储器块编程顺序组件113可使用层面顺序及每一层面的编程方向确保早期缺陷集中215首先进行编程。
响应于存储器块编程顺序组件113确定早期缺陷集中215在存储器块底部层面210的顶部处,存储器块编程顺序组件113首先对存储器块底部层面210进行编程。在一个实施例中,存储器块编程顺序组件113首先对由虚线标示的包含早期缺陷集中215的存储器块底部层面210的第一部分进行编程。存储器块编程顺序组件113将要编程到存储器块底部层面210的第一部分的用户数据加载到缺陷率保护缓冲器1 220中。在一些实施例中,存储器块编程顺序组件113也将用户数据(例如,要编程到存储器块底部层面210的第二部分的用户数据)加载到缺陷率保护缓冲器2 230中。在存储器块编程顺序组件113将用户数据加载到缺陷率保护缓冲器1 220中时,存储器块编程顺序组件113也将用户数据编程到存储器块底部层面210的第一部分中。
在一些实施例中,存储器块编程顺序组件113在对存储器块底部层面210的第一部分进行编程之前确定包含存储器块顶部层面205及存储器块底部层面210的整个存储器块的编程顺序。在其它实施例中,存储器块编程顺序组件113仅确定存储器块底部层面210的第一部分首先被编程。
如图2的编程阶段200及225中展示,存储器块编程顺序组件113使用早期缺陷集中215的位置为存储器块底部层面210选择编程方向。在一些实施例中,尽管整个每一部分被说明为同时被编程,但存储器块顶部层面205及存储器块底部层面210的每一部分根据编程方向逐字线进行编程。存储器块编程顺序组件113选择与早期缺陷集中215的最早可能编程对应的编程方向。举例来说,存储器块编程顺序组件113针对存储器块底部层面210使用顶部到底部的编程方向,这是因为早期缺陷集中215定位于存储器块底部层面210的顶侧上。在对存储器块底部层面210的第一部分的编程期间发生失败的情况下,缺陷率保护缓冲器1220含有用户数据,因此存储器子系统的UBER不会提高。
在编程阶段225中,存储器块编程顺序组件113用存储于缺陷率保护缓冲器2 230中的用户数据对存储器块底部层面210进行编程。在一些实施例中,存储器块编程顺序组件113使用来自在编程阶段200中检索的缺陷率足迹的缺陷率信息来确定存储器块底部层面210的第二部分具有第二高的编程失败可能性。在其它实施例中,编程顺序在编程阶段200中确定。如图2中展示,由虚线表示的存储器块底部层面210的第二部分在编程阶段225中从存储器块编程顺序组件113接收用户数据。
在一个实施例中,响应于存储器块编程顺序组件113确定存储器块底部层面210的第二部分具有第二高的编程失败可能性,存储器块编程顺序组件113接着对存储器块底部层面210的第二部分进行编程。在一些实施例中,一旦早期缺陷集中215已被编程,存储器块编程顺序组件113就以默认顺序而不是基于编程失败可能性对存储器块的剩余部分进行编程。
如果存储器块编程顺序组件113在编程阶段200中尚未将用户数据加载到缺陷率保护缓冲器2 230中,那么存储器块编程顺序组件113将用户数据加载到缺陷率保护缓冲器2 230中。在存储器块编程顺序组件113将用户数据加载到缺陷率保护缓冲器2 230中时,存储器块编程顺序组件113也将用户数据编程到存储器块底部层面210的第二部分中。
在一些实施例中,存储器块底部层面210的第二部分保持等于存储器块底部层面210的一半且相当于由SLC块保持的数据量的数据量。缺陷率保护缓冲器2 230是由SLC组成的存储器块使得保持于缺陷率保护缓冲器2 230中的用户数据一一对应地被存储于存储器块底部层面210的第二部分中。
如图2的编程阶段225中展示,存储器块编程顺序组件113针对存储器块底部层面210使用与编程阶段200相同的编程方向。存储器块编程顺序组件113尝试从直接在由缺陷率保护缓冲器1 220覆盖的最后字线下方的字线开始对存储器块底部层面210的第二部分进行编程。在对存储器块底部层面210的第二部分的编程期间发生失败的情况下,缺陷率保护缓冲器1 220含有用于存储器块底部层面210的第一部分的用户数据且缺陷率保护缓冲器2 230含有用于存储器块底部层面210的第二部分的用户数据,使得存储器子系统的UBER不会由于编程失败而改变。
在编程阶段250中,存储器块编程顺序组件113清除缺陷率保护缓冲器1 220,从而移除从在编程阶段200中对存储器块底部层面210的第一部分进行编程开始存储的数据。在一些实施例中,存储器块编程顺序组件113还清除缺陷率保护缓冲器2 230,从而移除从在编程阶段225中对存储器块底部层面210的第二部分进行编程开始存储的数据。在一些实施例中,存储器块编程顺序组件113响应于对存储器块底部层面210的第二部分进行编程而清除缺陷率保护缓冲器1 220及缺陷率保护缓冲器2 230。存储器块编程顺序组件113将下一组用户数据加载到缺陷率保护缓冲器1 220中。在一些实施例中,存储器块编程顺序组件113也将用户数据加载到缺陷率保护缓冲器2 230中。响应于将用户数据加载到缺陷率保护缓冲器1 220中,存储器块编程顺序组件113将用户数据编程到存储器块顶部层面205的第一部分中。
在一些实施例中,响应于编程阶段200或225期间的编程失败,存储器块编程顺序组件113停止将用户数据编程到存储器块中。存储器块编程顺序组件113还可向存储器子系统控制器(例如图1的存储器子系统控制器115)或向主机系统(例如图1的主机系统120)发送指示。此指示传达编程已失败且可进一步传达编程失败的层面或甚至字线。
在编程阶段250中,在一些实施例中,存储器块编程顺序组件113使用来自在编程阶段200中检索的缺陷率足迹的缺陷率信息来确定存储器块顶部层面205的第一部分具有第二高的编程失败可能性。在其它实施例中,编程顺序在编程阶段200中确定。如图2中展示,由虚线表示的存储器块顶部层面205的第一部分在编程阶段250中从存储器块编程顺序组件113接收用户数据。
响应于存储器块编程顺序组件113确定存储器块顶部层面205的第一部分具有第二高的编程失败可能性,存储器块编程顺序组件113对存储器块顶部层面205的第一部分进行编程。在一些实施例中,一旦早期缺陷集中215已被编程,就以默认顺序而不是基于编程失败可能性对存储器块的剩余部分进行编程。
在编程阶段275中,存储器块编程顺序组件113用存储于缺陷率保护缓冲器2 230中的用户数据对存储器块顶部层面205进行编程。举例来说,存储器块编程顺序组件113对存储器块顶部层面205的第二部分进行编程。如图2中展示,由虚线表示的存储器块顶部层面205的第二部分在编程阶段275中从存储器块编程顺序组件113接收用户数据。
响应于存储器块编程顺序组件113确定存储器块顶部层面205的第二部分是剩余的存储器块的最后未编程部分,存储器块编程顺序组件113接着对存储器块顶部层面205的第二部分进行编程。在一些实施例中,一旦早期缺陷集中215已被编程,存储器块编程顺序组件113就以默认顺序而不是基于编程失败可能性对存储器块的剩余部分进行编程。
在一些实施例中,响应于成功对存储器块底部层面210进行编程,存储器块编程顺序组件113清除缺陷率保护缓冲器2 230,从而移除从在编程阶段225中对存储器块底部层面210的第二部分进行编程开始存储的数据。在一些实施例中,存储器块编程顺序组件113在编程阶段275中将用户数据加载到缺陷率保护缓冲器2 230中。在其它实施例中,存储器块编程顺序组件113在编程阶段250中将用户数据加载到缺陷率保护缓冲器2 230中。在存储器块编程顺序组件113将用户数据加载到缺陷率保护缓冲器2 230中时,存储器块编程顺序组件113也将用户数据编程到存储器块顶部层面205的第二部分中。
如在编程阶段275中展示,存储器块编程顺序组件113针对存储器块顶部层面205使用与250相同的编程方向。存储器块编程顺序组件113尝试从直接在由缺陷率保护缓冲器1 220覆盖的最后字线上方的字线开始对存储器块顶部层面205的第二部分进行编程。因为具有最高失败可能性的存储器块的部分(即早期缺陷集中215)已经被成功编程,因此在对存储器块顶部层面205的第二部分的编程期间将不太可能发生编程失败。接着,存储器块编程顺序组件113准备对下一存储器块进行编程。举例来说,存储器块编程顺序组件113清除缺陷率保护缓冲器1 220及缺陷率保护缓冲器2 230。
图3说明根据本公开的一些实施例的使用缺陷率信息的存储器块编程。所说明存储器块编程可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。如图3中展示,所说明存储器块编程由存储器块编程顺序组件113执行。尽管未说明,但在一些实施例中,所说明存储器块编程由图1的处理器117执行。在其它实施例中,所说明存储器块编程的一些部分由存储器块编程顺序组件113执行,而其它部分由处理器117执行。所说明实施例应被理解为仅作为实例,且所说明存储器块编程可以不同顺序执行,且/或一些存储器块编程可并行执行。另外,在各种实施例中,可省略一或多个步骤。因此,并非在每个实施例中都需要所有步骤。其它流程是可能的。
如图3中展示,存储器块顶部层面205包含晚期缺陷集中305。在编程阶段300中,存储器块编程顺序组件113检索存储器装置的缺陷率足迹,其包含与存储器块顶部层面205及存储器块底部层面210相关的缺陷率信息。缺陷率足迹在包含存储器块顶部层面205及存储器块底部层面210的存储器装置(例如图1的存储器装置130或140)制造期间产生。缺陷率足迹包含关于在制造期间出现的缺陷的位置(例如,每一缺陷集中可包含早期缺陷、晚期缺陷或两者的组合)及缺陷的严重性的信息。在一些实施例中,缺陷的严重性对应于缺陷将在编程期间引起失败的可能性的量度。
存储器块编程顺序组件113使用来自缺陷率足迹的缺陷率信息来确定晚期缺陷集中305在存储器块顶部层面205的底部处。举例来说,存储器块编程顺序组件113使用查找表或类似方法找出缺陷率足迹中与存储器块顶部层面205及存储器块底部层面210相关的缺陷率信息。
此缺陷率信息指示晚期缺陷集中305定位于存储器块顶部层面205的底侧上。在一些实施例中,缺陷率信息是指示在对应于存储器装置(例如图1的存储器装置130或140)的每一字线的编程期间发生失败的可能性的信息。在其它实施例中,缺陷率信息包含不同粒度级别。缺陷率信息的粒度级别取决于可用存储、操作条件及其它参数而不同。在一个实施例中,缺陷率信息的粒度级别与层面大小相关。举例来说,针对QLC块的一半的层面大小,缺陷率信息的粒度级别可为层面大小的一半。在此粒度级别下,存储器块编程顺序组件113可使用层面顺序及每一层面的编程方向确保晚期缺陷集中305首先进行编程。
响应于存储器块编程顺序组件113确定晚期缺陷集中305在存储器块顶部层面205的底部处,存储器块编程顺序组件113首先对存储器块顶部层面205编程。在一个实施例中,存储器块编程顺序组件113首先对由虚线标示的包含晚期缺陷集中305的存储器块顶部层面205的第一部分进行编程。存储器块编程顺序组件113将要编程到存储器块顶部层面205的第一部分的用户数据加载到缺陷率保护缓冲器1 220中。在一些实施例中,存储器块编程顺序组件113也将用户数据(例如,要编程到存储器块顶部层面205的第二部分的用户数据)加载到缺陷率保护缓冲器2 230中。在存储器块编程顺序组件113将用户数据加载到缺陷率保护缓冲器1 220中时,存储器块编程顺序组件113也将用户数据编程到存储器块顶部层面205的第一部分中。
在一些实施例中,存储器块编程顺序组件113在对存储器块顶部层面205的第一部分进行编程之前确定包含存储器块顶部层面205及存储器块底部层面210的整个存储器块的编程顺序。在其它实施例中,存储器块编程顺序组件113仅确定存储器块顶部层面205的第一部分首先被编程。
如图3的编程阶段300及325中展示,存储器块编程顺序组件113使用晚期缺陷集中305的位置为存储器块顶部层面205选择编程方向。在一些实施例中,尽管整个每一部分被说明为同时被编程,但存储器块顶部层面205及存储器块底部层面210的每一部分根据编程方向逐字线进行编程。存储器块编程顺序组件113选择与晚期缺陷集中305的最早可能编程对应的编程方向。举例来说,存储器块编程顺序组件113针对存储器块顶部层面205使用底部到顶部的编程方向,这是因为晚期缺陷集中305定位于存储器块顶部层面205的底侧上。在对存储器块顶部层面205的第一部分的编程期间发生失败的情况下,缺陷率保护缓冲器1220含有用户数据,因此存储器子系统的UBER不会提高。
在编程阶段325中,存储器块编程顺序组件113用存储于缺陷率保护缓冲器2 230中的用户数据对存储器块顶部层面205进行编程。在一些实施例中,存储器块编程顺序组件113使用来自在编程阶段300中检索的缺陷率足迹的缺陷率信息来确定存储器块顶部层面205的第二部分具有第二高的编程失败可能性。在其它实施例中,编程顺序在编程阶段300中确定。如图3中展示,由虚线表示的存储器块顶部层面205的第二部分在编程阶段325中从存储器块编程顺序组件113接收用户数据。
在一个实施例中,响应于存储器块编程顺序组件113确定存储器块顶部层面205的第二部分具有第二高的编程失败可能性,存储器块编程顺序组件113接着对存储器块顶部层面205的第二部分进行编程。在一些实施例中,一旦晚期缺陷集中305已被编程,存储器块编程顺序组件113就以默认顺序而不是基于编程失败可能性对存储器块的剩余部分进行编程。
如果存储器块编程顺序组件113在编程阶段300中尚未将用户数据加载到缺陷率保护缓冲器2 230中,那么存储器块编程顺序组件113将用户数据加载到缺陷率保护缓冲器2 230中。在存储器块编程顺序组件113将用户数据加载到缺陷率保护缓冲器2 230中时,存储器块编程顺序组件113也将用户数据编程到存储器块顶部层面205的第二部分中。
在一些实施例中,存储器块顶部层面205的第二部分保持等于存储器块顶部层面205的一半且相当于由SLC块保持的数据量的数据量。缺陷率保护缓冲器2 230是由SLC组成的存储器块使得保持于缺陷率保护缓冲器2 230中的用户数据一一对应地被存储于存储器块顶部层面205的第二部分中。
如图3的编程阶段325中展示,存储器块编程顺序组件113针对存储器块顶部层面205使用与编程阶段300相同的编程方向。存储器块编程顺序组件113尝试从直接在由缺陷率保护缓冲器1 220覆盖的最后字线上方的字线开始对存储器块顶部层面205的第二部分进行编程。在对存储器块顶部层面205的第二部分的编程期间发生失败的情况下,缺陷率保护缓冲器1 220含有用于存储器块顶部层面205的第一部分的用户数据且缺陷率保护缓冲器2 230含有用于存储器块顶部层面205的第二部分的用户数据,使得存储器子系统的UBER不会由于编程失败而改变。
在编程阶段350中,存储器块编程顺序组件113清除缺陷率保护缓冲器1 220,从而移除从在300中对存储器块顶部层面205的第一部分进行编程开始存储的数据。在一些实施例中,存储器块编程顺序组件113还清除缺陷率保护缓冲器2 230,从而移除从在编程阶段325中对存储器块顶部层面205的第二部分进行编程开始存储的数据。在一些实施例中,存储器块编程顺序组件113响应于对存储器块顶部层面205的第二部分进行编程而清除缺陷率保护缓冲器1 220及缺陷率保护缓冲器2 230。存储器块编程顺序组件113将下一组用户数据加载到缺陷率保护缓冲器1 220中。在一些实施例中,存储器块编程顺序组件113也将用户数据加载到缺陷率保护缓冲器2 230中。响应于将用户数据加载到缺陷率保护缓冲器1220中,存储器块编程顺序组件113将用户数据编程到存储器块底部层面210的第一部分中。
在一些实施例中,响应于编程阶段300或325期间的编程失败,存储器块编程顺序组件113停止将用户数据编程到存储器块中。存储器块编程顺序组件113还可向存储器子系统控制器(例如图1的存储器子系统控制器115)或向主机系统(例如图1的主机系统120)发送指示。此指示传达编程已失败且可进一步传达编程失败的层面或甚至字线。
在编程阶段350中,在一些实施例中,存储器块编程顺序组件113使用来自在编程阶段300中检索的缺陷率足迹的缺陷率信息来确定存储器块底部层面210的第一部分具有第二高的编程失败可能性。在其它实施例中,编程顺序在编程阶段300中确定。如图3中展示,由虚线表示的存储器块底部层面210的第一部分在编程阶段350中从存储器块编程顺序组件113接收用户数据。
响应于存储器块编程顺序组件113确定存储器块底部层面210的第一部分具有第二高的编程失败可能性,存储器块编程顺序组件113对存储器块底部层面210的第一部分进行编程。在一些实施例中,一旦晚期缺陷集中305已被编程,就以默认顺序而不是基于编程失败可能性对存储器块的剩余部分进行编程。
在编程阶段375中,存储器块编程顺序组件113用存储于缺陷率保护缓冲器2 230中的用户数据对存储器块底部层面210进行编程。举例来说,存储器块编程顺序组件113对存储器块底部层面210的第二部分进行编程。如图3中展示,由虚线表示的存储器块底部层面210的第二部分在编程阶段375中从存储器块编程顺序组件113接收用户数据。
响应于存储器块编程顺序组件113确定存储器块底部层面210的第二部分是剩余的存储器块的最后未编程部分,存储器块编程顺序组件113接着对存储器块底部层面210的第二部分进行编程。在一些实施例中,一旦晚期缺陷集中305已被编程,存储器块编程顺序组件113就以默认顺序而不是基于编程失败可能性对存储器块的剩余部分进行编程。
在一些实施例中,响应于成功对存储器块顶部层面205编程,存储器块编程顺序组件113清除缺陷率保护缓冲器2 230,从而移除从在编程阶段325中对存储器块顶部层面205的第二部分进行编程开始存储的数据。在一些实施例中,存储器块编程顺序组件113在编程阶段375中将用户数据加载到缺陷率保护缓冲器2 230中。在其它实施例中,存储器块编程顺序组件113在编程阶段350中将用户数据加载到缺陷率保护缓冲器2 230中。在存储器块编程顺序组件113将用户数据加载到缺陷率保护缓冲器2 230中时,存储器块编程顺序组件113也将用户数据编程到存储器块底部层面210的第二部分中。
如在编程阶段375中展示,存储器块编程顺序组件113针对存储器块底部层面210使用与350相同的编程方向。存储器块编程顺序组件113尝试从直接在由缺陷率保护缓冲器1 220覆盖的最后字线上方的字线开始对存储器块底部层面210的第二部分进行编程。因为具有最高失败可能性的存储器块的部分(即晚期缺陷集中305)已经被成功编程,因此在对存储器块底部层面210的第二部分的编程期间将不太可能发生编程失败。接着,存储器块编程顺序组件113准备对下一存储器块进行编程。举例来说,存储器块编程顺序组件113清除缺陷率保护缓冲器1 220及缺陷率保护缓冲器2 230。
图4说明根据本公开的一些实施例的使用缺陷率信息的存储器块编程。所说明存储器块编程可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。如图4中展示,所说明存储器块编程由存储器块编程顺序组件113执行。尽管未说明,但在一些实施例中,所说明存储器块编程由图1的处理器117执行。在其它实施例中,所说明存储器块编程的一些部分由存储器块编程顺序组件113执行,而其它部分由处理器117执行。所说明实施例应被理解为仅作为实例,且所说明存储器块编程可以不同顺序执行,且/或一些存储器块编程可并行执行。另外,在各种实施例中,可省略一或多个步骤。因此,并非在每个实施例中都需要所有步骤。其它流程是可能的。
如图4中展示,存储器块顶部层面205包含第一缺陷集中405及第二缺陷集中410。在编程阶段400中,存储器块编程顺序组件113检索存储器装置的缺陷率足迹,其包含与存储器块顶部层面205及存储器块底部层面210相关的缺陷率信息。缺陷率足迹在包含存储器块顶部层面205及存储器块底部层面210的存储器装置(例如图1的存储器装置130或140)制造期间产生。缺陷率足迹包含关于在制造期间出现的缺陷的位置(例如,每一缺陷集中可包含早期缺陷、晚期缺陷或两者的组合)及缺陷的严重性的信息。在一些实施例中,缺陷的严重性对应于缺陷将在编程期间引起失败的可能性的度量。
存储器块编程顺序组件113使用来自缺陷率足迹的缺陷率信息来确定所述第一缺陷集中405在存储器块顶部层面205的底部处且第二缺陷集中410在存储器块底部层面210的顶部处。举例来说,存储器块编程顺序组件113使用查找表或类似方法找出缺陷率足迹中与存储器块顶部层面205及存储器块底部层面210相关的缺陷率信息。此缺陷率信息指示存在定位于存储器块顶部层面205的底侧上的第一缺陷集中405及定位于存储器块底部层面210的顶侧上的第二缺陷集中410。缺陷率信息还指示第一缺陷集中405是更高优先级。在一些实施例中,确定第一缺陷集中405及第二缺陷集中410的优先级是基于第一缺陷集中405及第二缺陷集中410的大小。在其它实施例中,确定第一缺陷集中405及第二缺陷集中410的优先级是基于另一度量,例如编程失败可能性或编程失败的大小与可能性的组合。
在一些实施例中,缺陷率信息是指示在对应于存储器装置(例如图1的存储器装置130或140)的每一字线的编程期间发生失败的可能性的信息。在其它实施例中,缺陷率信息包含不同粒度级别。缺陷率信息的粒度级别取决于可用存储、操作条件及其它参数而不同。在一个实施例中,缺陷率信息的粒度级别与层面大小相关。举例来说,针对QLC块的一半的层面大小,缺陷率信息的粒度级别可为层面大小的一半。在此粒度级别下,存储器块编程顺序组件113可使用层面顺序及每一层面的编程方向确保第一缺陷集中405首先被编程且第二缺陷集中410接下来被编程。
响应于存储器块编程顺序组件113确定定位于存储器块顶部层面205的底侧上的第一缺陷集中405、定位于存储器块底部层面210的顶侧上的第二缺陷集中410且第一缺陷集中405具有比第二缺陷集中410更高的优先级,存储器块编程顺序组件113首先对存储器块顶部层面205进行编程。在一个实施例中,存储器块编程顺序组件113对由虚线标示的包含第一缺陷集中405的存储器块顶部层面205的第一部分进行编程。存储器块编程顺序组件113将要编程到存储器块顶部层面205的第一部分的用户数据加载到缺陷率保护缓冲器1220中。在一些实施例中,存储器块编程顺序组件113也将用户数据(例如,要编程到存储器块底部层面210的第一部分的用户数据)加载到缺陷率保护缓冲器2230中。在存储器块编程顺序组件113将用户数据加载到缺陷率保护缓冲器1 220中时,存储器块编程顺序组件113也将用户数据编程到存储器块顶部层面205的第一部分中。
在一些实施例中,存储器块编程顺序组件113在对存储器块顶部层面205的第一部分进行编程之前确定包含存储器块顶部层面205及存储器块底部层面210的整个存储器块的编程顺序。在其它实施例中,存储器块编程顺序组件113仅确定存储器块顶部层面205的第一部分首先被编程。
如图4的编程阶段400及450中展示,存储器块编程顺序组件113使用第一缺陷集中405的位置为存储器块顶部层面205选择编程方向。在一些实施例中,尽管整个每一部分被说明为同时被编程,但存储器块顶部层面205及存储器块底部层面210的每一部分根据编程方向逐字线进行编程。存储器块编程顺序组件113选择与第一缺陷集中405的最早可能编程对应的编程方向。举例来说,存储器块编程顺序组件113针对存储器块顶部层面205使用底部到顶部的编程方向,这是因为第一缺陷集中405定位于存储器块顶部层面205的底侧上。在对存储器块顶部层面205的第一部分的编程期间发生失败的情况下,缺陷率保护缓冲器1220含有用户数据,因此存储器子系统的UBER不会提高。
在编程阶段425中,存储器块编程顺序组件113用存储于缺陷率保护缓冲器2 230中的用户数据对存储器块底部层面210进行编程。在一些实施例中,存储器块编程顺序组件113使用来自在编程阶段400中检索的缺陷率足迹的缺陷率信息来确定存储器块底部层面210的第一部分由于第二缺陷集中410而具有第二高的编程失败可能性。在其它实施例中,编程顺序在编程阶段400中确定。如图4中展示,由虚线表示的存储器块底部层面210的第一部分在编程阶段425中从存储器块编程顺序组件113接收用户数据。
在一个实施例中,响应于存储器块编程顺序组件113确定存储器块底部层面210的第一部分具有第二高的编程失败可能性,存储器块编程顺序组件113接着对存储器块底部层面210的第一部分进行编程。
如果存储器块编程顺序组件113在编程阶段400中尚未将用户数据加载到缺陷率保护缓冲器2 230中,那么存储器块编程顺序组件113将用户数据加载到缺陷率保护缓冲器2 230中。在存储器块编程顺序组件113将用户数据加载到缺陷率保护缓冲器2 230中时,存储器块编程顺序组件113也将用户数据编程到存储器块底部层面210的第一部分中。
在一些实施例中,存储器块底部层面210的第一部分保持等于存储器块底部层面210的一半且相当于由SLC块保持的数据量的数据量。缺陷率保护缓冲器2 230是由SLC组成的存储器块使得保持于缺陷率保护缓冲器2 230中的用户数据一一对应地被存储于存储器块底部层面210的第一部分中。
如图4的编程阶段425中展示,存储器块编程顺序组件113使用第二缺陷集中410的位置为存储器块底部层面210选择编程方向。在一些实施例中,尽管整个每一部分被说明为同时被编程,但存储器块顶部层面205及存储器块底部层面210的每一部分根据编程方向逐字线进行编程。存储器块编程顺序组件113为存储器块底部层面210选择与第二缺陷集中410的最早可能编程对应的编程方向。举例来说,存储器块编程顺序组件113针对存储器块底部层面210使用顶部到底部的编程方向,这是因为第二缺陷集中410定位于存储器块底部层面210的顶侧上。在对存储器块底部层面210的第一部分的编程期间发生失败的情况下,缺陷率保护缓冲器1 220含有来自存储器块顶部层面205的第一部分的用户数据且缺陷率保护缓冲器2 230含有来自存储器块底部层面210的第一部分的用户数据,因此存储器子系统的UBER不会提高。
在编程阶段450中,存储器块编程顺序组件113清除缺陷率保护缓冲器1 220,从而移除从在400中对存储器块顶部层面205的第一部分进行编程开始存储的数据。在一些实施例中,存储器块编程顺序组件113还清除缺陷率保护缓冲器2 230,从而移除从在编程阶段425中对存储器块底部层面210的第一部分进行编程开始存储的数据。在一些实施例中,存储器块编程顺序组件113响应于对存储器块底部层面210的第一部分进行编程而清除缺陷率保护缓冲器1 220及缺陷率保护缓冲器2 230。存储器块编程顺序组件113将下一组用户数据加载到缺陷率保护缓冲器1 220中。在一些实施例中,存储器块编程顺序组件113也将用户数据加载到缺陷率保护缓冲器2 230中。响应于将用户数据加载到缺陷率保护缓冲器1220中,存储器块编程顺序组件113将用户数据编程到存储器块顶部层面210的第二部分中。
在一些实施例中,响应于编程阶段400或425期间的编程失败,存储器块编程顺序组件113停止将用户数据编程到存储器块中。存储器块编程顺序组件113还可向存储器子系统控制器(例如图1的存储器子系统控制器115)或向主机系统(例如图1的主机系统120)发送指示。此指示传达编程已失败且可进一步传达编程失败的层面或甚至字线。
在编程阶段450中,在一些实施例中,存储器块编程顺序组件113使用来自在编程阶段400中检索的缺陷率足迹的缺陷率信息来确定存储器块顶部层面205的第二部分具有第二高的编程失败可能性。在其它实施例中,编程顺序在编程阶段400中确定。如图4中展示,由虚线表示的存储器块顶部层面205的第二部分在编程阶段450中从存储器块编程顺序组件113接收用户数据。
响应于存储器块编程顺序组件113确定存储器块顶部层面205的第二部分具有第二高的编程失败可能性,存储器块编程顺序组件113对存储器块顶部层面205的第二部分进行编程。在一些实施例中,一旦第一缺陷集中405及第二缺陷集中410已被编程,就以默认顺序而不是基于编程失败可能性对存储器块的剩余部分进行编程。
如图4的编程阶段450中展示,存储器块编程顺序组件113针对存储器块顶部层面205使用与编程阶段400相同的编程方向。存储器块编程顺序组件113尝试从直接在由缺陷率保护缓冲器1 220覆盖的最后字线上方的字线开始对存储器块顶部层面205的第二部分进行编程。因为具有最高失败可能性的存储器块的部分(即第一缺陷集中405及第二缺陷集中410)已经被成功编程,因此在对存储器块顶部层面205的第二部分的编程期间将不太可能发生编程失败。
在编程阶段475中,存储器块编程顺序组件113用存储于缺陷率保护缓冲器2 230中的用户数据对存储器块底部层面210进行编程。举例来说,存储器块编程顺序组件113对存储器块底部层面210的第二部分进行编程。如图4中展示,由虚线表示的存储器块底部层面210的第二部分在编程阶段475中从存储器块编程顺序组件113接收用户数据。
响应于存储器块编程顺序组件113确定存储器块底部层面210的第二部分是剩余的存储器块的最后未编程部分,存储器块编程顺序组件113接着对存储器块底部层面210的第二部分进行编程。在一些实施例中,一旦第一缺陷集中405及第二缺陷集中410已被编程,存储器块编程顺序组件113就以默认顺序而不是基于编程失败可能性对存储器块的剩余部分进行编程。
在一些实施例中,响应于成功对存储器块底部层面210的第一部分进行编程,存储器块编程顺序组件113清除缺陷率保护缓冲器2 230,从而移除从在编程阶段425中对存储器块底部层面210的第一部分进行编程开始存储的数据。在一些实施例中,存储器块编程顺序组件113在编程阶段475中将用户数据加载到缺陷率保护缓冲器2 230中。在其它实施例中,存储器块编程顺序组件113在编程阶段450中将用户数据加载到缺陷率保护缓冲器2230中。在存储器块编程顺序组件113将用户数据加载到缺陷率保护缓冲器2 230中时,存储器块编程顺序组件113也将用户数据编程到存储器块底部层面210的第二部分中。
如在编程阶段475中展示,存储器块编程顺序组件113针对存储器块底部层面210使用与425相同的编程方向。存储器块编程顺序组件113尝试从直接在由缺陷率保护缓冲器2 230覆盖的最后字线下方的字线开始对存储器块底部层面210的第二部分进行编程。因为具有最高失败可能性的存储器块的部分(即第一缺陷集中405及第二缺陷集中410)已经被成功编程,因此在对存储器块底部层面210的第二部分的编程期间将不太可能发生编程失败。接着,存储器块编程顺序组件113准备对下一存储器块进行编程。举例来说,存储器块编程顺序组件113清除缺陷率保护缓冲器1 220及缺陷率保护缓冲器2 230。
图5是根据本公开的一些实施例的用以使用缺陷率信息对存储器块进行编程的实例方法500的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,方法500由图1的存储器块编程顺序组件113执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序是可修改的。因此,所说明的实施例应被理解为仅作为实例,且所说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中,可省略一或多个过程。因此,并非在每个实施例中都使用所有过程。其它过程流程是可能的。
在操作505处,处理装置检索缺陷率足迹。举例来说,处理装置可检索存储于存储器(例如图1的本地存储器119、存储器装置140或存储器装置130)中的缺陷率足迹。缺陷率足迹是基于在制造期间及/或之后检测到的已知缺陷。在一些实施例中,这些制造缺陷通过编程状态失败、编程即时扫描失败及其它相关联失败检测到。在一些实施例中,缺陷率足迹基于固件日志连续更新。固件日志与编程状态失败、编程即时扫描失败及其它相关联失败相关联。在一些实施例中,编程日志指示是否出现了缺陷及缺陷在哪里出现的字线信息。
在操作510处,处理装置确定顶部层面是否具有更高缺陷严重性。举例来说,基于在操作505中检索的缺陷率足迹,处理装置可确定是存储器块的顶部层面还是存储器块的底部层面具有更高缺陷严重性。如果处理装置确定顶部层面具有更高缺陷严重性,那么处理装置继续到操作515。然而,如果处理装置确定顶部层面不具有更高缺陷严重性,那么处理装置继续到操作535。
在一些实施例中,缺陷严重性是基于具有缺陷的层面中的字线的数目。在其它实施例中,缺陷严重性是基于缺陷的严重性。在一些实施例中,存储器块由QLC组成,且顶部层面及底部层面中的每一者是整个存储器块的半部。在此类实施例中,顶部层面及底部层面中的每一者保持等于QLC块的一半的数据量(例如,保持于MLC块中的数据量)。
在其它实施例中,存储器块由另一单元类型(例如MLC或TLC)组成,且顶部层面及底部层面中的每一者是整个存储器块的半部或其它细分。在这些实施例中,层面中的每一者因此保持等于整个MLC或TLC块的对应部分的数据量。举例来说,存储器块由TLC组成,且每一层面是整个存储器块的三分之一。层面中的每一者因此保持等于TLC块的三分之一的数据(例如,保持于SLC块中的数据量)。在替代实例中,存储器块由MLC组成,且每一层面是整个存储器块的一半。层面中的每一者因此保持等于MLC块的一半的数据(例如,保持于SLC块中的数据量)。
在一些实施例中,尽管操作510可暗示仅存在两个层面,即顶部及底部,但存储器块可分成多于两个层面。出于本公开的目的,术语层面是指可独立被编程或擦除的存储器块的细分。因此,存储器块中层面的数目越高,确定具有最高编程失败概率的区域的灵活性越大。层面可能不是存储器块的最小细分,且层面其本身内还可含有细分。
在操作515处,处理装置确定缺陷率集中是否定位于顶部层面的顶部上。举例来说,响应于确定顶部层面具有更高缺陷严重性,处理装置还可确定顶部层面上缺陷严重性最高的位置。在一些实施例中,此确定是基于含有缺陷的字数的数量及顶部层面上有缺陷字线所定位的位置。在一些实施例中,此确定还基于缺陷的严重性。如果处理装置确定缺陷率集中在顶部层面的顶部上,那么处理装置继续到操作520。然而,如果处理装置确定缺陷率集中不在顶部层面的顶部上,那么处理装置继续到操作525。
在操作520处,处理装置从顶部到底部对顶部层面进行编程。举例来说,响应于确定缺陷率集中在顶部层面的顶部上,处理装置对顶部层面进行编程(从最顶部字线开始且在向下方向上编程)。
在操作525处,处理装置从底部到顶部对顶部层面进行编程。举例来说,响应于确定缺陷率集中不在顶部层面的顶部上,处理装置对顶部层面进行编程(从最底部字线开始且在向上方向上编程)。
在操作530处,处理装置确定当前块是否已被完全编程。举例来说,处理装置确定当前存储器块的所有层面是否已被编程。如果所有层面都已被编程,那么处理装置继续到操作555。
在操作535处,处理装置确定缺陷率集中是否定位于底部层面的顶部上。举例来说,响应于确定顶部层面不具有更高缺陷严重性,处理装置还可确定底部层面上缺陷严重性最高的位置。在一些实施例中,此确定是基于含有缺陷的字数的数量及顶部层面上有缺陷字线所定位的位置。在一些实施例中,此确定还基于缺陷的严重性。如果处理装置确定缺陷率集中在底部层面的顶部上,那么处理装置继续到操作540。然而,如果处理装置确定缺陷率集中不在顶部层面的顶部上,那么处理装置继续到操作545。
在操作540处,处理装置从顶部到底部对底部层面进行编程。举例来说,响应于确定缺陷率集中在底部层面的顶部上,处理装置对底部层面进行编程(从最顶部字线开始且在向下方向上编程)。
在操作545处,处理装置从底部到顶部对底部层面进行编程。举例来说,响应于确定缺陷率集中不在底部层面的顶部上,处理装置对底部层面进行编程(从最底部字线开始且在向上方向上编程)。
在操作550处,处理装置确定当前块是否已被完全编程。举例来说,处理装置确定当前存储器块的所有层面是否已被编程。如果所有层面都已被编程,那么处理装置继续到操作555。
在操作555处,处理装置移动到对下一存储器块进行编程。举例来说,处理装置可清除用于对当前块进行编程的缓冲器以为下一块做准备。
图6是根据本公开的一些实施例的用以使用缺陷率信息对存储器块进行编程的实例方法600的流程图。方法600可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,运行或执行于处理装置上的指令)或其组合。在一些实施例中,方法600由图1的存储器块编程顺序组件113执行。尽管以特定顺序或次序展示,但除非另外指定,否则过程的次序是可修改的。因此,所说明的实施例应被理解为仅作为实例,且所说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中,可省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流程是可能的。
在操作605处,处理装置检索缺陷率足迹。举例来说,处理装置可检索存储于存储器(例如图1的本地存储器119、存储器装置140或存储器装置130)中的缺陷率足迹。缺陷率足迹是基于在制造期间及/或之后检测到的已知缺陷。在一些实施例中,这些制造缺陷通过编程状态失败、编程即时扫描失败及其它相关联失败检测到。在一些实施例中,缺陷率足迹基于固件日志连续更新。固件日志与编程状态失败、编程即时扫描失败及其它相关联失败相关联。在一些实施例中,编程日志指示是否出现了缺陷及缺陷在哪里出现的字线信息。
在操作610处,处理装置确定层面编程顺序。举例来说,处理装置确定当前块内含有的层面的数量。在一些实施例中,当前块由顶部层面及底部层面组成。在其它实施例中,当前块具有多于两个不同层面。在确定含有的层面的数量之后,处理装置基于在操作605中检索的缺陷率足迹确定首先应对哪些层面编程。
在605中检索的缺陷率足迹含有与当前块内的层面相关的缺陷率信息。处理装置可使用此缺陷率信息来确定首先应对哪些层面进行编程。举例来说,应首先对具有更高缺陷集中或更多缺陷的层面进行编程。在一些实施例中,层面编程顺序呈指示当前块中的页被编程的顺序的页映射的形式。
在一些实施例中,层面编程顺序还包含层面编程方向。举例来说,每一层面具有针对本公开定义为顶部及底部的第一字线及最后字线。处理装置因此确定每一层面是从顶部到底部还是从底部到顶部进行编程。
在操作615处,处理装置根据层面编程顺序对块进行编程。举例来说,处理装置将用户数据加载到缓冲器中,例如图2、3及4的缺陷率保护缓冲器1及2 220及230。接着,处理装置根据在610中确定的层面编程顺序对当前块进行编程。在一些实施例中,处理装置在每一层面被编程之后清除缓冲器。举例来说,在对具有最高缺陷严重性的层面进行编程之后,处理装置从缓冲器清除刚刚被写入到具有最高缺陷严重性的层面中的用户数据。接着,处理装置使用缓冲器存储要编程的下一层面的用户数据。
图7说明计算机系统700的实例机器,在所述计算机系统内可执行用于致使机器执行本文论述的方法论中的任一者或多者的一组指令。在一些实施例中,计算机系统700可对应于主机系统(例如图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的存储器块编程顺序组件113的操作)。在替代实施例中,机器可连接(例如联网)到LAN、内部网、外部网及/或因特网中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器操作,或在云计算基础设施或环境中作为服务器或客户端机器操作。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥或能够(循序或以其它方式)执行指定将由所述机器所采取的动作的一组指令的任何机器。此外,虽然说明了单个机器,但术语“机器”也应被视为包含个别或共同执行一(或多组)指令以执行本文中论述的方法论中的任一者或多者的机器的任何集合。
实例计算机系统700包含处理装置702、主存储器704(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)(例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM))、静态存储器706(例如,快闪存储器、静态随机存取存储器(SRAM))等)及数据存储系统718,其经由总线730彼此通信。
处理装置702表示一或多个通用处理装置,例如微处理器、中央处理单元或类似物。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的一处理器或实施指令集的组合的多个处理器。处理装置702也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似物。处理装置702经配置以执行用于执行本文中论述的操作及步骤的指令726。计算机系统700可进一步包含网络接口装置708以经由网络720通信。
数据存储系统718可包含其上存储有一或多组指令726或体现本文中描述的方法论或功能中的任一或多者的软件的机器可读存储媒体724(也称为计算机可读媒体)。指令726在由计算机系统700执行期间也可完全或至少部分驻存于主存储器704内及/或处理装置702内,主存储器704及处理装置702也构成机器可读存储媒体。机器可读存储媒体724、数据存储系统718及/或主存储器704可对应于图1的存储器子系统110。
在一个实施例中,指令726包含用以实施对应于存储器块编程顺序组件(例如图1的存储器块编程顺序组件113)的功能性的指令。虽然在实例实施例中将机器可读存储媒体724展示为单个媒体,但术语“机器可读存储媒体”应理解为包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”也应理解为包含能够存储或编码用于由机器执行且致使机器执行本公开的方法论中的任一或多者的一组指令的任何媒体。术语“机器可读存储媒体”应相应地理解为包含(但不限于)固态存储器、光学媒体及磁性媒体。
已依据对计算机存储器内的数据位的操作的算法及符号表示呈现前述详细描述的一些部分。这些算法描述及表示是由数据处理领域的技术人员用以向所属领域的其它技术人员最有效地表达其工作实质的方式。算法在本文且通常被设想为导致所期望结果的自相一致的操作序列。操作是需要对物理量的物理操纵的操作。通常(但不一定),这些量采用能够被存储、组合、比较及以其它方式操纵的电或磁信号的形式。已被证明是方便的是,有时出于习惯用法的原因,原则上将这些信号称为位、值、元素、符号、字符、项、数字或类似物。
然而,应记住,所有这些及类似术语都应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可涉及计算机系统或类似电子计算装置的动作及过程,所述计算机系统或类似电子计算装置操纵表示为计算机系统的寄存器及存储器内的物理(电子)量的数据并将所述数据转换成类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据。
本公开还涉及用于执行本文中的操作的设备。此设备可出于预期目的经专门构造,或其可包含由存储于计算机中的计算机程序选择性地激活或重新配置的通用计算机。举例来说,计算机系统或其它数据处理系统(例如控制器115)可响应于其处理器执行包含于存储器或其它非暂时性机器可读存储媒体中的计算机程序(例如指令序列)而实行计算机实施的方法500及600。此计算机程序可存储于计算机可读存储媒体中,例如(但不限于)任何类型的磁盘(包含软盘、光盘、CD-ROM及磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡或适于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中呈现的算法及显示并不固有地与任何特定计算机或其它设备相关。各种通用系统可结合根据本文中的教示的程序使用,或可证明构造更专门的设备来执行方法是方便的。用于各种这些系统的结构将如下文描述中陈述那样出现。另外,本公开并非是参考任何特定编程语言进行描述。应了解,多种编程语言可用于实施本文所描述的本公开的教示。
本公开可被提供作为计算机程序产品或软件,其可包含其上存储有指令的机器可读媒体,所述指令可用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒体包含用于存储呈可由机器(例如计算机)读取的形式的信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已参考本公开的特定实例实施例描述了其实施例。将明显的是,在不背离所附权利要求书中所陈述的本公开的实施例的更宽精神及范围的情况下,可对特定实例实施例做出各种修改。因此,说明书及图式应以说明性意义而非限制性意义来看待。

Claims (20)

1.一种方法,其包括:
检索存储器的一部分的缺陷率足迹,存储器的所述部分由多个块组成;
基于所述缺陷率足迹确定所述多个块中的当前块的层面编程顺序,其中所述当前块由多个层面组成且其中所述层面编程顺序包括对所述多个层面进行编程的顺序;及
根据所述经确定层面编程顺序对所述多个层面进行编程。
2.根据权利要求1所述的方法,其中所述多个层面中的每一者包括顶侧及底侧,且其中所述层面编程顺序进一步包括对所述多个层面中的每一者进行编程的方向,所述方向指示所述多个层面中的每一者是从所述顶侧到所述底侧进行编程还是从所述底侧到所述顶侧进行编程。
3.根据权利要求1所述的方法,其进一步包括:
基于所述缺陷率足迹确定所述多个层面中的每一者的缺陷严重性,其中所述层面编程顺序是从最高缺陷严重性到最低缺陷严重性的顺序。
4.根据权利要求3所述的方法,其中所述缺陷率足迹包括一或多个缺陷的位置及所述一或多个缺陷中的每一者的所述缺陷严重性。
5.根据权利要求1所述的方法,其中所述多个层面包含两个层面,每一层面包括所述当前块的一半。
6.根据权利要求1所述的方法,其进一步包括:
基于指示存储器的所述部分的在存储器的所述部分的操作期间被确定为有缺陷的区域的编程日志来更新所述缺陷率足迹。
7.根据权利要求6所述的方法,其中所述编程日志包括存储器的所述部分中的不能够校正的错误的位置的日志。
8.一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时致使所述处理装置进行以下操作:
检索存储器的一部分的缺陷率足迹,存储器的所述部分由多个块组成;
基于所述缺陷率足迹确定所述多个块中的当前块的层面编程顺序,其中所述当前块由多个层面组成且其中所述层面编程顺序包括对所述多个层面进行编程的顺序;及
根据所述经确定层面编程顺序对所述多个层面进行编程。
9.根据权利要求8所述的非暂时性计算机可读存储媒体,其中所述多个层面中的每一者包括顶侧及底侧,且其中所述层面编程顺序进一步包括对所述多个层面中的每一者进行编程的方向,所述方向指示所述多个层面中的每一者是从所述顶侧到所述底侧进行编程还是从所述底侧到所述顶侧进行编程。
10.根据权利要求8所述的非暂时性计算机可读存储媒体,其中所述处理装置进一步用以:
基于所述缺陷率足迹确定所述多个层面中的每一者的缺陷严重性,其中所述层面编程顺序是从最高缺陷严重性到最低缺陷严重性的顺序。
11.根据权利要求10所述的非暂时性计算机可读存储媒体,其中所述缺陷率足迹包括一或多个缺陷的位置及所述一或多个缺陷中的每一者的所述缺陷严重性。
12.根据权利要求8所述的非暂时性计算机可读存储媒体,其中所述多个层面包含两个层面,每一层面包括所述当前块的一半。
13.根据权利要求8所述的非暂时性计算机可读存储媒体,其中所述处理器进一步用以:
基于指示存储器的所述部分的在存储器的所述部分的操作期间被确定为有缺陷的区域的编程日志来更新所述缺陷率足迹。
14.根据权利要求13所述的非暂时性计算机可读存储媒体,其中所述编程日志包括存储器的所述部分中的不能够校正的错误的位置的日志。
15.一种系统,其包括:
多个存储器装置;及
处理装置,其操作性地与所述多个存储器装置耦合以:
检索存储器的一部分的缺陷率足迹,存储器的所述部分由多个块组成;
基于所述缺陷率足迹确定所述多个块中的当前块的层面编程顺序,其中所述当前块由多个层面组成,其中所述多个层面中的每一者包括顶侧及底侧,且其中所述层面编程顺序包括对所述多个层面进行编程的顺序及对所述多个层面中的每一者进行编程的方向,所述方向指示所述多个层面中的每一者是从所述顶侧到所述底侧进行编程还是从所述底侧到所述顶侧进行编程;及
根据所述经确定层面编程顺序对所述多个层面进行编程。
16.根据权利要求15所述的系统,其中所述处理装置进一步用以:
基于所述缺陷率足迹确定所述多个层面中的每一者的缺陷严重性,其中所述层面编程顺序是从最高缺陷严重性到最低缺陷严重性的顺序。
17.根据权利要求16所述的系统,其中所述缺陷率足迹包括一或多个缺陷的位置及所述一或多个缺陷中的每一者的所述缺陷严重性。
18.根据权利要求15所述的系统,其中所述多个层面包含两个层面,每一层面包括所述当前块的一半。
19.根据权利要求15所述的系统,其中所述处理器进一步用以:
基于指示存储器的所述部分的在存储器的所述部分的操作期间被确定为有缺陷的区域的编程日志来更新所述缺陷率足迹。
20.根据权利要求15所述的系统,其中所述编程日志包括存储器的所述部分中的不能够校正的错误的位置的日志。
CN202310896416.5A 2022-07-25 2023-07-20 使用缺陷率信息的存储器块编程 Pending CN117457053A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/872,567 2022-07-25
US17/872,567 US20240029815A1 (en) 2022-07-25 2022-07-25 Memory block programming using defectivity information

Publications (1)

Publication Number Publication Date
CN117457053A true CN117457053A (zh) 2024-01-26

Family

ID=89576997

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310896416.5A Pending CN117457053A (zh) 2022-07-25 2023-07-20 使用缺陷率信息的存储器块编程

Country Status (2)

Country Link
US (1) US20240029815A1 (zh)
CN (1) CN117457053A (zh)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102072449B1 (ko) * 2012-06-01 2020-02-04 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 리페어 방법

Also Published As

Publication number Publication date
US20240029815A1 (en) 2024-01-25

Similar Documents

Publication Publication Date Title
US11735274B2 (en) Proactive read disturb mitigation
CN115699185A (zh) 在存储装置上每单元实施可变数目的位
US11733892B2 (en) Partial superblock memory management
CN116529693A (zh) 加电时的媒体管理
US11728006B2 (en) Grown bad block management in a memory sub-system
US11928356B2 (en) Source address memory managment
CN113093990B (zh) 存储器子系统处的数据块切换
CN115132258A (zh) 优化存储电荷损失管理
CN115048040A (zh) 基于有效数据的比率的媒体管理操作
CN117457053A (zh) 使用缺陷率信息的存储器块编程
CN112328508A (zh) 多层存储器中的层交错
US11726671B2 (en) Memory access mode selection
US20240028259A1 (en) Buffer allocation for reducing block transit penalty
US20230015066A1 (en) Memory sub-system for monitoring mixed mode blocks
US11404133B1 (en) Valid translation unit count-based memory management
US11829623B2 (en) Using incomplete super blocks for increased write performance
US11790998B2 (en) Eliminating write disturb for system metadata in a memory sub-system
US11599272B2 (en) Deck based media management operations in memory devices
US11687248B2 (en) Life time extension of memory device based on rating of individual memory units
US20230393736A1 (en) Managing quad-level cell compaction strategy of a memory device
US20240045616A1 (en) Multiple-pass programming of memory cells using temporary parity generation
US20240070021A1 (en) Proximity based parity data management
US20220066678A1 (en) Multi-page parity data storage in a memory device
CN117594084A (zh) 存储器子系统中的相应字线群组的自适应时间感测参数及过驱动电压参数
CN116266461A (zh) 基于系统的字线群组的自适应读取重试偏移

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication