CN108376120B - 用于管理在非易失性存储器***中写入块的***和方法 - Google Patents
用于管理在非易失性存储器***中写入块的***和方法 Download PDFInfo
- Publication number
- CN108376120B CN108376120B CN201711346686.XA CN201711346686A CN108376120B CN 108376120 B CN108376120 B CN 108376120B CN 201711346686 A CN201711346686 A CN 201711346686A CN 108376120 B CN108376120 B CN 108376120B
- Authority
- CN
- China
- Prior art keywords
- mlc
- block
- blocks
- health
- volatile memory
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
- G11C16/3422—Circuits or methods to evaluate read or write disturbance in nonvolatile memory, without steps to mitigate the problem
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
- G11C16/3495—Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
公开了一种用于管理在非易失性存储器中的数据写入的***和方法。所述***可以包括具有非易失性存储器的SLC和MLC块的非易失性存储器,以及跟踪相对的MLC块健康的MLC块健康等级数据结构。***中的控制器可以被配置为选择用于接收主机数据的MLC块,并然后通过用于健康块的直接MLC写入路径,或通过用于不健康MLC块的包括SLC写入和SLC‑MLC折叠的两步的间接写入路径路由主机数据。所述方法可以包括基于基于对每个MLC块确定的BER分配健康指定,并且基于确定的BER将直接写入数目分配给健康MLC块,直接写入数目限制了在需要重新评估块健康状况前用于特定MLC块的直接写入的程序/擦除循环的数目。
Description
背景技术
诸如包括NAND快闪存储器的固态驱动器(SSD)的非易失性存储器***通常用于从消费产品到企业级计算机***的电子***中。在耐久性方面,低密度(每单元较少比特)非易失性存储器的性能通常优于高密度非易失性存储器,但是高密度非易失性存储器的空间和成本优势通常导致包括两种类型的存储器的SSD。低密度存储器(如每单元容量为单个比特的单级单元(SLC)存储器)的较大耐久性可以建议初始的主机写入应当被指引到SLC,之后在称作折叠的过程中,从SLC被写入到具有每单元容量为多个比特的多级单元(MLC)存储器。然而,直接将主机数据写入MLC存储器并避免首先将主机数据写入SLC存储器,然后将来自几个SLC块的数据折叠进MLC块的额外写入步骤而具有速度优势。然而,折衷是通过跳过首先写入SLC并然后进行从SLC到MLC的折叠的典型路径,这样写入故障保护较少。在折叠到MLC之前初始写入SLC意味着如果在SLC到MLC的折叠步骤中发生错误,则在SLC中存在正确数据的临时副本。尽管可以使用各种形式的数据保护编码来保护数据免于直接MLC写入情况下的错误,但是由于生成错误校正数据所需的额外处理,可能会有性能成本。
附图说明
图1A是示例性非易失性存储器***的框图。
图1B是图示示例性的存储模块的框图。
图1C是图示分级存储***的框图。
图2A是图示非易失性存储器***的控制器的示例性组件的框图。
图2B是图示非易失性存储器存储***的非易失性存储器的示例性组件的框图。
图3是示出字线和块的一种可能地布置的非易失性存储器阵列的示例电路图。
图4图示了图1A的非易失性存储器***的示例物理存储器安排。
图5示出了图4的物理存储器的一部分的放大视图。
图6示出了具有直接的MLC写入路径和间接的包括SLC写入路径和从SLC到MLC的折叠路径的两步写入路径的图2A的非易失性存储器的框图。
图7是图示了管理诸如在图6中示出的非易失性存储器中的不同写入路径上路由的数据的一种实现方式的流程图。
图8是图7的方法的实现方式的流程图。
图9图示了进一步将不健康的MLC块划分为健康和不健康部分的示例。
图10是图8的方法的可替代的实现方式的流程图,该方法包括通过不同的写入路径写入全部块或如图9中所图示的分块(divided blocks)。
图11图示了按照相对性能和耐久度排序的非易失性存储器中的不同块类型。
具体实施方式
公开了一种用于通过基于非易失性存储器***中的块健康的动态折叠或直接写入操作来管理主机数据写入的***和方法。为了减少由于MLC块的健康引起的写入错误的可能性,***和方法可以预测MLC块是否健康,并然后在重新检查该块的健康之前的有限时间段内将该MLC块用于直接写入。当MLC块确定为不够健康时,该块可被标识以用于从SLC的较低风险折叠写入,而不是用于直接MLC写入。可以将MLC块的健康划分为比二元的健康或不健康分类更精细粒度确定,并且可以使用该更精细粒度分类来进一步在每个健康或不健康的块类别中进行块的区别对待。例如,可以使用健康块的健康之间的更精细差异来向那些健康块分配不同数目的直接写入循环,其中直接写入循环的数目与再次检查该块的健康之前允许用于该块的编程/擦除循环有关。
根据一个方面,描述了一种用于在非易失性存储器***中管理对块的写入的方法。该方法可以包括接收用于存储在非易失性存储器中的数据,所述非易失性存储器具有每单元容量为单个比特的块和每单元容量为多个比特的块,并且确定非易失性存储器中的每单元容量为多个比特的块是否满足健康标准。当每单元容量为多个比特的块满足所述健康标准时,该方法包括直接将所接收的数据写入每单元容量为多个比特的块。当每单元容量为多个比特的块不满足所述健康标准时,该方法包括将接收的数据写入每单元容量为单个比特的非易失性存储器块中、以及写入每单元容量为多个比特的块。在不同的实现方式中,健康标准可以基于对块测量的误比特率(BER),并且在一些进一步的实现方式中,基于预定的BER阈值而被确定为不健康的块可以按照部分进行子分类,使得该块的健康部分可被直接写入,以及相同块的不健康部分可被以多步写入的方式写入。
在该方法的一个变型中,为了写入不健康的每单元容量为多个比特的块,首先发生将接收到的数据写入每单元容量为单个比特的块,然后,该数据之后被从该每单元容量为单个比特的块写入到每单元容量为多个比特的块。在一个可替代的变型中,将数据写入每单元容量为单个比特的块和每单元容量为多个比特的块同时完成,使得接收的数据的单独直接写入基本上并行地对两种类型的单元执行。在两种变型中,数据的备份副本存在于每单元容量为单个比特的块中,如果写入到每单元容量为多个比特的块的数据被确定为被破坏或者以其他方式故障,则可以使用数据的备份副本来恢复数据。
在另一个方面中,非易失性存储器***包括具有多个单级单元(SLC)块和多个多级单元(MLC)块的非易失性存储器,其中所述SLC块具有每单元容量为单个比特的存储器单元,以及所述MLC块具有每单元容量为多个比特的存储器单元。该***还包括与非易失性存储器通信的控制器。控制器被配置为在绕过SLC块的直接MLC写入路径上将接收的主机数据写入标识为健康的MLC块。控制器还被配置为在经由初始写入至少一个SLC块的多步写入路径上将接收的主机数据写入标识为不健康的MLC块,其中健康的MLC块是那些具有在第一预定范围之内的健康标准的MLC块,以及不健康的MLC块是那些具有在与所述第一预定范围不同的第二预定范围内的健康标准的MLC块。健康标准可以是低于预定阈值的BER。
在不同的实现方式中,可以在非易失性存储器***中生成块健康等级数据结构,并且控制器可以标识数据结构中健康和不健康的块,包括向确定为健康的MLC块分配直接写入数目或计数器。直接写入数目可被控制器用来限制对特定的健康MLC块的直接写入的次数直到需要重新评估该MLC块的健康状况。
在又一方面中,公开了包括非易失性存储器的非易失性存储器***。非易失性存储器可以包括具有每单元容量为单个比特的存储器单元的单级单元(SLC)块,具有每单元容量为多个比特的存储器单元的多级单元(MLC)块,以及具有针对至少一部分的MLC块的MLC块健康数据的块健康等级数据结构。非易失性存储器***还可以包括用于在绕过SLC块的直接MLC写入路径上将接收到的主机数据写入在块健康数据结构中标识为健康的MLC块、以及用于在经由初始写入至少一个SLC块的多步写入路径上将接收的主机数据写入在块健康数据结构中标识为不健康的MLC块的部件。健康的MLC块可以是具有在第一预定范围内的健康标准的MLC块,以及不健康的MLC块可以是具有在与第一预定范围不同的第二预定范围中的健康标准的MLC块。
现在参考图1A是,示出了图示非易失性存储器***的框图。非易失性存储器(NVM)***100包括控制器102和可由一个或多个非易失性存储器管芯(die)104组成的非易失性存储器。如本文所使用的,术语管芯指代非易失性存储器单元的集合,以及用于管理形成在单个半导体衬底上的那些非易失性存储器单元的物理操作的关联电路。控制器102与主机***接口,并且将用于读取、编程和擦除操作的命令序列发送到非易失性存储器管芯104。
控制器102(其可以是快闪存储器控制器)可以采用处理电路、一个或多个微处理器或处理器(在这里也称作中央处理单元(CPU))以及计算机可读介质的形式,该计算机可读介质例如存储可由(微)处理器、逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入式微控制器执行的计算机可读程序代码(例如,软件或固件)。控制器102可以配置有硬件和/或固件以执行下面描述的并在流程图中示出的各种功能。此外,示出为在控制器内部的一些组件也可以存储在控制器的外部,并且可以使用其他组件。另外,短语“可操作地与…通信”可以意味着与…进行直接通信或通过一个或多个组件与…间接(有线或无线)通信,这些组件可以或可以不在这里示出或描述。
如这里所使用的,快闪存储器控制器是管理存储在快闪存储器上的数据并且与诸如计算机或电子设备的主机通信的设备。除了这里描述的特定功能之外,快闪存储器控制器还可以具有各种功能。例如,快闪存储器控制器可以对快闪存储器进行格式化以确保存储器在正常工作,映射出坏的快闪存储器单元,并且分配空闲(spare)单元以替换未来发生故障的单元。空闲单元的某些部分可用于控制(hold)固件操作快闪存储器控制器并实现其他特征。在操作中,当主机需要从快闪存储器中读取数据或向快闪存储器写入数据时,它将与快闪存储器控制器进行通信。如果主机提供要读取/写入数据的逻辑地址,那么快闪存储器控制器可以将从主机接收到的逻辑地址转换为快闪存储器中的物理地址。快闪存储器控制器还可以执行各种存储器管理功能,例如但不限于损耗均衡(wear leveling)(分配写入以避免耗尽否则将重复写入的特定存储器块)和垃圾收集(在块满了之后,只将有效的数据页面移动到新的块,所以已经满了的块可被擦除并重新使用)。
非易失性存储器管芯104可以包括任何合适的非易失性存储介质,包括NAND快闪存储器单元和/或NOR快闪存储器单元。存储器单元可以采用固态(例如快闪)存储器单元的形式,并且可以是一次可编程的、几次可编程的或者多次可编程的。存储器单元也可以是单级单元(SLC),多级单元(MLC),三级单元(TLC),或使用现在已知或以后开发的其他存储器单元级技术。出于本公开的目的,在这里使用时,术语MLC指代具有每单元容量为两比特或更多比特的存储器单元,因此,使得TLC存储器是特定的每单元容量为三比特的MLC的子集。此外,存储器单元可以以二维或三维方式制造。
控制器102和非易失性存储器管芯104之间的接口可以是任何合适的快闪接口,诸如切换模式(Toggle Mode)200、400或800。在一个实施例中,存储器***100可以是基于卡的***,诸如安全数字(SD)或微型安全数字(micro-SD)卡。在可替代的实施例中,存储器***100可以是嵌入式存储器***的一部分。
尽管在图1A中图示的示例中,NVM***100包括控制器102和非易失性存储器管芯104之间的单个通道,但是这里描述的主题不限于具有单个存储器通道。例如,在一些NAND存储器***架构中,诸如图1B和图1C中,取决于控制器的能力,2、4、8或更多个NAND通道可以存在于控制器和NAND存储器设备之间。在这里描述的任何实施例中,即使在附图中示出了单个通道,在控制器和存储器管芯之间也可以存在不止一个单个通道。
图1B图示了包括多个NVM***100的存储模块200。像这样,存储模块200可以包括与主机和包括多个NVM***100的存储***204接口的存储控制器202。存储控制器202和NVM***100之间的接口可以是总线接口,诸如串行高技术附件(SATA)或快速***组件接口(PCIe)接口。在一个实施例中,存储模块200可以是固态驱动器(SSD),诸如在便携式计算设备(如膝上型计算机和平板计算机)中存在的固态驱动器(SSD)。
图1C是图示分级存储***的框图。分级存储***210包括多个存储控制器202,存储控制器202中的每一个控制各自的存储***204。主机***212可以经由总线接口访问分级存储***内的存储器。在一个实施例中,总线接口可以是快速非易失性存储器(NVMe)或以太网的光纤信道(FCoE)接口。在一个实施例中,图1C中图示的***可以是可由多个主计算机访问的可由机架安装的大容量存储***,诸如其会在数据中心或需要大容量存储的其他地点中存在。
图2A是更详细地图示控制器102的示例性组件的框图。控制器102包括与主机接口的前端模块108、与一个或多个非易失性存储器管芯104接口的后端模块110、以及执行现在将详细描述的功能的各种其他模块。例如,模块可以采取以下形式:被设计为与其他组件一起使用的封装的功能硬件单元,可由通常执行相关功能的特定功能的(微)处理器或处理电路执行的程序代码(如,软件或固件)的一部分、或与更大型***接口的设备齐全(self-contained)的硬件或软件组件。
控制器102的模块可以包括存在于控制器102的管芯上的MLC写入健康模块112。如下文中所述的,MLC写入健康模块112可以提供以下功能:确定非易失性存储器104中的MLC块的健康、并将数据从主机直接路由到MLC块,或者先路由到SLC块,然后基于所确定的MLC块健康状况将数据折叠到MLC块。控制器102的MLC写入健康模块112可以通过以特定的间隔跟踪MLC块的误比特率(BER)并将健康级别分配给MLC块来实现此功能,其中,健康的MLC块可以在重新检查健康之前被直接写入特定数目的循环,以及不健康的MLC块只能经由来自SLC块的折叠过程而被写入。
缓冲器管理器/总线控制器114管理随机存取存储器(RAM)116中的缓冲器并控制控制器102的内部总线仲裁。只读存储器(ROM)118存储***启动(boot)代码。尽管如在图2A中所示与控制器102分开放置,但在其它实施例中,RAM 116和ROM 118中的一个或两个都可以位于控制器102内。在又一些实施例中,RAM 116和ROM 118的各部分既可以位于控制器102内,也可以位于控制器之外。此外,在一些实现方式中,控制器102、RAM 116和ROM 118可以位于单独的半导体管芯上。
NVM***100中的RAM 116(不管在控制器102外部、在控制器内部还是既存在于控制器102的外部也存在于控制器102的内部)可以包含多个条目,包括用于NVM***100的逻辑-至-物理映射表中的一条或多条的副本。如下面进一步描述的,RAM 116可以包括用于非易失性存储器的每个MLC块的块健康等级117。RAM 116还可以包括指示可用于非易失性存储器104中的当前未使用的物理块的空闲块列表121。
前端模块108包括主机接口120和提供与主机或下一级存储控制器的电学接口的物理层接口(PHY)122。主机接口120的类型的选择可以取决于正在使用的存储器的类型。主机接口120的示例包括但不限于SATA、SATA Express、SAS、光纤信道、USB、PCIe和NVMe。主机接口120通常便于传输数据、控制信号和定时信号。
后端模块110包括纠错控制器(ECC)引擎124,其对从主机接收的数据字节进行编码,并对从非易失性存储器读取的数据字节进行解码和纠错。命令定序器126生成用于发送到非易失性存储器管芯104的命令序列,诸如编程和擦除命令序列。RAID(独立驱动器冗余阵列,Redundant Array of Independent Drives)模块128管理RAID奇偶性的生成和故障数据的恢复。RAID奇偶性可以用作对正写入到NVM***100中的数据的完整性保护的附加级别。在一些情况下,RAID模块128可以是ECC引擎124的一部分。存储器接口130向非易失性存储器管芯104提供命令序列,并从非易失性存储器管芯104接收状态信息。在一个实施例中,存储器接口130可以是双倍数据速率(DDR)接口,诸如切换模式200、400或800接口。快闪控制层132控制后端模块110的整体操作。
图2A中示出的NVM***100的附加组件包括介质管理层138,其执行非易失性存储器管芯104的存储器单元的损耗均衡,并管理映射表和逻辑-至-物理映射或读取任务。NVM***100还包括其他分离的组件140,诸如外部电接口、外部RAM、电阻器、电容器或可与控制器102接口的其他组件。在可替代的实施例中,物理层接口122、RAID模块128、介质管理层138和缓冲器管理/总线控制器114中的一个或多个是不必要在控制器102中的可选组件。
图2B是更详细地图示非易失性存储器管芯104的示例性组件的框图。非易失性存储器管芯104包括***电路141和非易失性存储器阵列142。非易失性存储器阵列142包括用于存储数据的非易失性存储器单元。非易失性存储器单元可以是任何合适的非易失性存储器单元,包括二维和/或三维配置中的NAND快闪存储器单元和/或NOR快闪存储器单元。***电路141包括向控制器102提供状态信息的状态机152。非易失性存储器管芯104进一步包括数据缓存156,该数据缓存156缓存从非易失性存储器阵列142的非易失性存储器单元中读取或编程到其中的数据。数据缓存156包括用于在非易失性存储器阵列142的存储器页面中的每个比特的数据的数据锁存器158的组。因此,每组数据锁存器158可以是宽度上的页面,并且多组数据锁存器158可以包括在数据缓存156中。例如,对于布置成每页存储n个比特的非易失性存储器阵列142,每组数据锁存器158可以包括N个数据锁存器,其中每个数据锁存器可以存储1比特的数据。
在一个实现方式中,单独的数据锁存器可以是具有两个稳定状态并且可以存储1比特数据的电路,诸如由与非(NAND)门构建的设置/重置、或SR、锁存器。数据锁存器158可以用作仅在通电时保持数据的易失性存储器类型。许多已知类型的数据锁存电路中的任一个可以用于每组数据锁存器158中的数据锁存器。每个非易失性存储器管芯104可以具有其自身的数据锁存器158的组和非易失性存储器阵列142。***电路141包括向控制器102提供状态信息的状态机152。***电路141还可以包括可由控制器102用来向锁存器158传输数据和从锁存器158传输数据的附加输入/输出电路,以及并行操作以感测非易失性存储器阵列142中的一页存储器单元的每个非易失性存储器单元中的电流的感测模块阵列。每个感测模块可以包含感测放大器以检测与各自的感测模块通信的存储器单元的传导电流是否在参考水平之上或之下。
非易失性存储器104中的非易失性快闪存储器阵列142可以布置在存储器单元的块中。存储器单元的块是擦除的单位,即,可一起物理擦除的最小数目的存储器单元。然而,为了增加并行性,块可以以更大的元块单位操作。来自存储器单元的至少两个平面中的每一个的一个块可以逻辑地链接在一起以形成元块。
图3中示出了示例NAND阵列。尽管在NAND阵列中提供了大量的全局比特线,但为了简化解释,在图3中仅示出了四条这样的线302-308。许多串联连接的存储器单元串310-324连接在这些比特线中的一个与参考电位之间。将存储器单元串314用作代表,多个电荷存储存储器单元326-332在串的任一端与选择晶体管334和336串联连接。当串的选择晶体管导通时,串连接在其比特线和参考电位之间。然后,依次编程或读取在该串内的一个存储器单元。
图3的字线338-344分别跨存储器单元的许多串中的每一个中的一个存储器单元的电荷存储元件延伸,并且栅极346和350控制串的每一端处的选择晶体管的状态。使得共享公共字线和控制栅线338-350的存储器单元串形成一起擦除的存储器单元的块352。该单元块包括一次可物理擦除的最小数目的单元。一次编程一行沿着字线338-344之一的存储器单元。
传统地,NAND阵列行按照规定的顺序被编程,在这种情况下,开始于沿着最靠近连接到地或另一个公共电位的串的一端的字线344的行。接下来,对沿着字线342的存储器单元的行编程,以此类推,贯穿整个块352。
第二块354是类似的,其存储器单元的串连接到与第一块352中的串相同的全局(global)比特线,但是具有不同组的字线和控制栅线。字线和控制栅线由行控制电路驱动到它们的适当的工作电压。如果***中有不止一个平面,则一个存储器架构使用在它们之间延伸的公共字线。替代地,可以有多于两个的共享公共字线的平面。在其他存储器架构中,各个平面的字线是单独驱动的。
尽管图3中示出的示例NAND阵列已用来描述用于在正向方向上将数据写入存储器块、在正向方向或反向方向上将数据写入存储器块的过程,但控制器可以改变存储器单元串的哪一端连接着地或其他公共电位。
参考图4,示出了代表性的快闪存储器单元阵列的另一概念图。存储器单元的四个平面或子阵列400、402、404和406可以在单个集成的存储器单元芯片上、在两个芯片(每个芯片上的两个平面)上或者在四个单独的芯片上。具体的布置对于下面的讨论并不重要,在***中可以存在其他数目的平面。这些平面分别被划分为存储器单元块,如图3中由矩形示出的,诸如位于各自的平面400、402、404和406中的块408、410、412和414。在每个平面中可以有数十个或数百个块。块可以逻辑地链接在一起以形成可以作为单个单元擦除的元块。例如,块408、410、412及414可以形成第一元块416。用于形成元块的各块不需要限于其各自平面内的相同的相对位置,如由块420、422、424和426组成的第二元块418中示出的。
如图5中所示,单独的各块又为了操作的目的而被划分成存储器单元的页面。例如,块408、410、412和414中的每一个的存储器单元各自被划分成八个页面P0-P7。或者,每个块中可以有16、32或更多页的存储器单元。页面是块内的数据编程的单位,包含一次编程的最小的数据量。可以一次读取的数据的最小单位可以小于一页。图4中图示的元页(metapage)500由四个块408、410、412和414中的每一个的一个物理页面形成。元页400包括四个块中的每一个中的页面P2,但是元页中的页面不一定需要在每个块内具有相同的相对位置。元页通常是编程的最大单位,尽管可以编程更大的分组。图4-图5中公开的块在这里被称为物理块,因为它们与如上所述的物理存储器单元的分组有关。如这里所使用的,逻辑块是定义成具有与物理块相同大小的地址空间的虚拟单位。每个逻辑块可以包括与从主机接收的数据相关联的逻辑块地址(LBA)的范围。然后,将LBA映射到物理地存储数据的非易失性存储器***100中的一个或多个物理块。
如上所述,非易失性存储器104中可以有不同类型的存储器块,例如SLC和MLC。非易失性存储器中的每个非易失性存储器管芯可以仅包括一种存储器块类型或者组合的存储器块类型。在图6的示例中,示出了包括SLC块604和MLC块606的非易失性存储器600(对应于图2A-图2B中的非易失性存储器104)的概念图示。尽管示出了三级单元(每个单元3比特)MLC块606,但是在其他实现方式中可以使用具有每单元容量为2比特或更多比特的任何其他类型或各类型的MLC块。还图示了从控制器602到MLC块606的不同的简化写入路径。示出了直接MLC写入路径608,其中,控制器602将数据直接写入到MLC块606中,而绕过任何中间的初始写入SLC块。替代地,控制器602可以首先将最终意图用于MLC块606的数据通过SLC写入路径610直接写入SLC块604,以及然后通过折叠路径612,在折叠过程中将该数据从SLC块604写入到MLC块606。折叠过程通常描述将数据从每单元单个比特的多个SLC块604拷贝到具有每单元多个比特的单个MLC块。在图5的示例中,因为每单元多个比特的块是具有每单元三个比特的块的MLC,所以折叠过程涉及从三个SLC块604获取数据并将它们写入到一个MLC块606中。
通过控制器102中的MLC写入健康模块112管理从主机直接到MLC块606、或经由两步SLC写入和SLC到MLC的折叠操作的数据的路由。在图7中阐明了控制器确定使用哪种写入路径的过程的示例。控制器首先确定MLC(在当前的示例中,每单元3个比特,有时称为TLC,作为MLC块的版本)块的健康(在702处)。块的健康在这里定义为MLC块正确存储和保持数据的能力。在一个实现方式中,健康可以由对块测量的误比特率(BER)来确定。可以使用多个已知的BER测量技术中的任何一种来测量BER。例如,通过将发现的特定块中具有最高BER的字线的BER分配给块,每个块的BER可以由控制器中的ECC引擎124确定。ECC引擎124可以使用许多误码确定技术中的任何一种,诸如一般使用奇偶比特错误和奇偶校验信息来定位和识别错误。在一个示例中,健康的MLC块可以是具有小于预定阈值的BER的任何块,以及不健康的块可以是具有大于预定阈值的BER的任何块。如下面更详细描述的,如果块中的某些字线超过BER阈值,或者在这些字线上发生某些存储器故障,那么整个块可以被标记为不健康,并且之后可以被划分为好的字线和坏的字线的区带。因此,在一个实现方式中,关于MLC块是健康还是不健康的决定可以是基于在该块的字线中观察到的最大BER。当确定字线是坏的(例如由于字线的硬故障)时,则MLC写入健康模块可将字线视为不利于前进(badgoing forward),并省略写入该字线,或者替代地,可以在在直接写入期间将该字线填入伪数据,使得坏字线将来不会对块的BER造成影响。
一旦通过BER阈值和/或其他健康测量确定了块606的健康状况,控制器可以将MLC块606划分成健康和不健康的块的池,例如,通过在块健康等级表117或者可以在如RAM 116的存储器中保持的其他数据结构中将健康的块标记为健康(在704处)。在一个实现方式中,第一次将数据写入到不具有健康状况确定的MLC块606时,数据总是经由SLC写入和SLC到MLC折叠的两步过程来写入,以允许写入在对特定MLC块进行BER或其他健康测量时具有初始SLC写入的写入故障备份保护。
在随后的写入操作中,当已确定为健康的MLC块606可用时,控制器通过MLC直接写入路径直接将数据写入那些MLC块606(在706处)。当写入具有低于预定阈值的健康等级或未做出健康状况确定的MLC块606时,仅经由SLC写入并随后通过折叠路径从SCL向MLC的折叠的两步过程来进行(在708处)。如下面更详细描述的,确定为健康的MLC块被通过直接MLC写入路径而写入,但是在需要重新检查之前仅直接写入有限数目的编程/擦除循环。因此,在重新检查该MLC块的健康之前,向确定为健康的每个MLC块分配用于直接MLC写入路径写入的预定数目的编程/擦除循环。当写入操作要去往MLC块时,如果预定数目的编程/擦除循环尚未耗尽,则可直接通过直接MLC写入路径进行MLC块的写入(在710、706处)。然而,如果自从上一次健康检查以来,预定数目的编程擦除循环已经耗尽,则当重新检查先前健康的MLC块的BER或其他健康状态时,控制器首先将数据引导至SLC块604,然后通过折叠路径将数据引导至先前健康的MLC块606(在712、704处)。
在一个实现方式中,通过在RAM 116中的块健康等级数据结构117中包括健康或不健康的标记,控制器102经由MLC写入健康模块112保持跟踪每个MLC块(诸如MLC块606)的健康的所有业务(transaction)。该数据结构117可以包括编程/擦除循环计数器,该编程/擦除循环计数器是在MLC块最初被标识为健康时被分配并且每当写入MLC块时递减。在图8中示出图7的过程的更详细版本的示例。当接收到将被写入到非易失性存储器的MLC块中的数据时,控制器将可用的MLC块标识为数据的目的地块(在802处)。然后,控制器102可以检查块健康等级数据结构117以确定特定的MLC块是否先前已经进行了块健康评估。如果该块是未标记的并且已经进行了第一次健康评估,例如没有找到任何指示该块是健康还是不健康的条目(entry),那么首先将接收到的数据写入SLC块,然后执行折叠操作以将数据从SLC块写入到MLC块(在804、806处)。这允许通过SLC写入在数据保护方面谨慎地对待当前健康状况未知的MLC块,同时也允许在折叠操作期间检查该MLC块的健康标准(诸如该MLC块的BER)(在808处)。
如上所述,在一个实现方式中,控制器102可以经由MLC写入健康模块112利用预定的BER阈值来在健康块和不健康块之间进行分类。如果正在查看的MLC块具有小于预定阈值的BER,那么在需要重新检查该MLC块的健康之前,该MLC块可以被标记为健康,并且分配有预定数目的编程/擦除循环用于随后的直接MLC写入操作。在图8中,如果BER低于预定阈值,则该MLC块被标记在块健康等级数据结构中,并且与数据结构117中的直接MLC写入数目相关联。随后,当接下来接收到要写入该MLC块的数据时(在802处),控制器将看到该块已经被标记在数据结构中(在804处),以及如果该MLC块被标记为健康并且没有发生分配给该MLC块的所述数目的直接MLC写入,则数据将被直接写入到健康的MLC块(在816、818和820处)。
对于已被标记为健康的MLC块,直接向该MLC块写入数据的过程将重复,直到达到直接MLC写入数目为止,在达到直接MLC写入数目时,通过先将数据写入SLC、然后将数据折叠到MLC中并获得较当前的BER状态的相同过程(在818、806和808处),控制器102之后可以恢复以重新检查该先前健康的MLC块的健康。取决于当前发现的BER,正在检查的MLC块可能再次被确定为健康、或者可能被标记为不健康。相反地,如果MLC块先前已标记为不健康(在816处),则接收到的数据将经历两步的SLC写入和SLC到MLC的折叠过程以提供更多的保护以免写入错误。在图8中图示的一个实现方式中,示出的过程包括重新检查被标记为不健康的MLC块,这使得如果其BER提高了,则有可能将其带入健康块状态。在其他的实现方式中,可以设想一旦将MLC块指定为不健康,它将不会被重新检查,并且总是标记为不健康,因此由控制器602进行两步写入过程(图6)。
还设想了不止一个“健康”等级的MLC块。尽管上面已经提到了BER的单个阈值,但是在以下情况中,如果MLC块具有低于阈值的BER,那么MLC块是健康的,否则将其标记为不健康,则可以存在对健康块的更精细粒度标记。将块的BER用作块健康的度量,健康块可以被设置在BER阈值处,该阈值恰好在控制器中的ECC引擎进行校正的能力范围内,而不健康的块可以是仍在ECC引擎124(图2A)进行校正的能力范围内、但是其具有指示较高可能性发生写入错误并将花费更多资源消耗更多时间的纠错过程的BER的块。如本文所提到的,不健康块仍然是可用块,该可用块能够在ECC引擎124的可纠错能力内保持数据。本公开中的不健康块指代仍然可用的块,但是由于测量出的较高BER而是较有风险的,并且因此不同于坏块指定,在坏块指定中,块被认为不可用并且从可用块池中移除。不健康块具有比预定的健康块阈值更高的BER,并且因此被认为具有较高的写入错误的风险,使得对不健康块的写入可以是经由最初SLC写入间接地路由到SLC块以及随后的折叠操作,在折叠操作中,将来自该SLC块的数据和其他数据被写入到不健康的MLC块中。
关于健康块的不同粒度,可以基于BER的任意数目的附加阈值来指定多个健康级别。例如,如果假设的非易失性存储器***100包括能够校正多达120个错误的ECC引擎124,并且用于标识健康块的预定阈值BER被设置为60个错误,则在图7的过程中测量出具有小于60个错误的BER的任何块可以被标记为健康,并且测量出具有60或更多比特错误的块将被标记为不健康块,或者在将坏块定义为具有100或更多比特错误的块的情况下,可用于两步的SLC写入和SLC-MLC折叠的不健康块可被定义为具有测量的BER为60-99比特错误的那些块。为了在健康块中提供更高粒度的健康等级,该示例中的0-59比特错误的BER范围可以进一步细分为预定的更小的范围,其中将最高健康等级分配给测量的BER为0-9个错误的MLC块,可以将第二高健康等级分配给测量的具有10-19比特错误的MLC块,以此类推,直到健康块的最低健康等级子集,例如,具有50-59个测量的比特错误的MLC块。上面给出的比特错误的数目和范围仅仅是一种可能的布置,并且还可以设想许多其他阈值中的任何一个和范围。在不同的实施例中,健康等级可以细分为任意数目的类别,包括均匀或不均匀的BER分组。
MLC块健康等级表117或其他数据结构可以被修改为除了健康等级标记之外还包括数字或其他等级。此外,在重新检查MLC块的健康状况之前,标记为健康的MLC块的类内的不同健康等级可以对应于不同的预定数目的写入循环。例如,对于标识在最健康组(上述示例中的0-9个错误)中的MLC块,分配给这些块的直接MLC写入循环数目可以是6,其中在使用两步的写入SLC和SLC到MLC的折叠以写入该MCL块执行下一次块健康检查之前,在0-9比特错误的最健康子组中的块可被直接写入并擦除六次。对于每个逐渐不健康的健康MLC块的组,MLC直接写入数目可以逐渐减少,其中在10-19错误范围中的MLC块被分配数目为5的直接MLC写入循环,在20-29错误子组中的块被分配数目为4的直接MLC写入循环,以此类推。再一次地,上面的示例仅仅是在下一个健康检查数目之前,健康级别和对应的MLC直接写入循环的一种可能的布置。也考虑其他组合。
在又一额外的实现方式中,可以以比仅MLC块级别更精细的分辨率应用对MLC块的健康状况的确定、以及随后对每个MLC块的直接写入或两步的SLC写入和SLC-MLC折叠的选择。在一个实现方式中,可以将不健康块分组为以下子类别:部分安全的不健康块(字线故障的数目小于第一阈值)、以及不安全的块(字线故障的数目大于或等于阈值故障数目)。区分部分安全的不健康块与不安全的不健康块的阈值的示例可以是由控制器102将具有小于20%的字线故障率的不健康块标识为部分安全的不健康MLC块,以及将那些具有大于或等于20%的字线故障率的不健康块标记为不安全的不健康MLC块。块中字线的故障可以定义为具有太多要由控制器102的ECC引擎124校正的比特错误的字线。划分部分安全的不健康块与不安全的不健康块的20%字线故障率阈值仅是一个示例阈值。可以考虑许多其他阈值中的任何一个。例如,可以选择字线故障率在40%至50%范围内的阈值作为部分安全的不健康块与不安全的不健康块之间的分界线。
现在参考图9,当发现原本(由BER)不健康MLC块902具有少于预定数目的故障写入的字线时,其中故障写入可被定义为不可纠正的ECC错误,其中由ECC引擎124检测的字线中错误的数目超过了ECC引擎124校正的能力,但是其他字线分别具有在一个或多个预定健康阈值内的BER,那么可以使用用于分配适当的写入MLC块的路径的技术的额外变型。参考图9,在该处理不健康块的变型中,不是将整个MLC块902简单地标记为不健康,其中由控制器602分配的数据的(多个)写入路径对于整个不健康MLC块是相同的,而是可以将单个MLC块902的不同区带或部分指定为健康部分904或不健康部分906,使得可以基于该部分的各自的健康等级将数据不同地路由到MLC块的每个部分。在该实现方式中,MLC块902的部分904、906的健康状况可以被存储在用于MLC块902的MLC块健康等级表117中。可以分别跟踪并且作用于每个部分904、906。MLC块902的健康部分904和不健康部分906中的每一个优选地以组成块902的字线的整数(whole number)增量来测量。
在一个实现方式中,每个块902可以划分成多个健康部分904和不健康部分906,其中每个健康部分中的所有字线将直接写入,以及每个不健康部分中的所有字线将备份式地写入(例如,首先写入SLC,然后是SLC-MLC折叠,以便在SLC中留下备份)。如上述实现方式,对字线进行BER评估,并且基于块级别上使用的预定BER阈值将该字线标记为不健康或健康。在单个块902中可以有多个健康部分904,其中一个健康部分的健康大于另一个健康部分的健康。因此,在需要重新检查块健康之前分配的预定编程/擦除循环的数目在不同的健康部分904之间是不同的。在一个实现方式中,可以独立地跟踪块902的不同部分,然而,在重新检查包含那些不同部分的块的块健康之前的预定的编程/擦除循环的数目可以按照健康部分的最小健康(least healthy)定义。换句话说,在重新检查健康状况之前可以安全地使用的块的编程/擦除循环的预定数目可以按照块中分配有最小预定数目的编程擦除循环的健康部分904设置。例如,如果块具有3个部分,2个健康部分和1个不健康部分,并且分配给健康部分的安全循环分别是5和10,则该块可以编程和擦除5次,而无需重新检查健康部分的BER。在第五次编程和擦除循环之后,控制器可以再次检查第一个健康部分904(分配有5个循环)的BER,以确定其是否保持健康或需要划分成健康和不健康的子部分。在需要重新检查BER之前,第二个健康部分(最初分配有10个循环)仍可以使用更多的5个周期。该块902的不健康部分通常保持不健康,但可以在每个循环之后检查该不健康部分的BER,以查看是否需要SLC备份副本。
现在参考图10,其示出了图7和图8的过程的变型,其包含将不健康块细分成部分(partially)安全的不健康块和普遍(generally)不安全的块的版本,所述部分安全的不健康块具有直接写入的一些部分和经由从SLC块折叠写入的一些部分,并且在所述普遍不安全的块中,对块的所有写入均是经由从SLC折叠来进行的。当首先选择MLC块并且其健康尚未被测量时,控制器102例如通过测量该块的BER(在1002处)来测量块的健康。如果单独的字线故障率低于阈值,例如小于如上所述故障字线的固定百分比,那么将该块标记为不健康,并且控制器102还在易失性存储器126中的MLC块健康等级表117中标识和存储该块的***分和不***分的标识符(在1008、1010和1012处)。将直接写入循环数目分配给***分,其指示在重新检查块的健康状况之前可以直接写入该***分的次数(在1014处)。用于随后到来的写入命令的数据将用于控制器选择的MLC块,并且具有在直接MLC写入中写入到该块的***分的数据,对该块标识的不安全的部分将具有经由包括SLC写入和SLC-MLC折叠的两步写入过程路由的数据。对该MLC块的写入模式将重复,直到达到该块的直接写入循环数目(在1016处)。然后,下次将该块选择作为另一数据写入的目的地时,块的健康状况将经由如上所述的间接的两步写入过程进行重新检查。在一个实现方式中,MLC块的每个***分可以被分配有相同的直接写入循环数目。
当对块测量的BER(在1002处)指示大于或等于用于标识不健康块的阈值的BER(在1004处)且具有大于字线故障阈值(例如,20%)的字线故障率(在1006处)时,那么控制器将该块标记为不健康,并且随后的写入都可以经由包括SLC-MLC折叠的间接的两步写入而被写入到块(在1018、1020处)。类似地,如前所述,如果所测量的BER小于BER阈值(在1004处),那么控制器将在MLC块健康等级表117中将该块标记为健康,并且将直接MLC写入循环数目分配给该块(在1024处)。在控制器选择MLC块的后续写入命令将针对直接MLC写入而被路由到MLC块,直到完成的编程/擦除循环的数目已经达到所分配的直接MLC写入数目,并且为下一个写入命令触发对健康状况的重新检查(在1026处)。
在图11中,图示了非易失性存储器中从最高耐久性和性能到最低耐久性和性能的示例块。通常认为SLC块1100是最高的性能和耐久性的块。如上所述,将具有小于阈值BER的MLC块认为是健康块1102,并且可以在健康块类别内按照相对的BER分组将该块进行进一步细分为:在重新检查块健康之前对于“X”循环是安全的MLC块1104、以及在重新检查块健康之前被认为对于“Y”循环是安全的MLC块1106,其中X>Y。图示了健康MLC块1102的两个子类别,然而,可以设想任何数目的子类别。可选地,可以对具有大于阈值BER、之后视为不健康块1108的MLC块进一步细分。可以将不健康块分离成部分安全的块1110(其代表那些具有小于故障字线的阈值数目和/或小于第一不健康的BER阈值的不健康块)以及不安全的块1112(其是具有大于故障字线的阈值数目和/或大于第一不健康的BER阈值的那些不健康块)。如上所述,控制器102可以通过导向相同部分不安全块的不同部分的不同写入路径(直接MLC写入和两步的SLC写入和SLC-MLC折叠)将数据导向到部分安全的块1110,而具有较高BER和/或较高字线故障的其他不安全块1112的整体可以仅通过经由SLC块的两步写入路径接收数据。
在一个实现方式中,例如,如图11所示,控制器102经由MLC写入健康模块112可以按照最大性能和耐久性排序的顺序来优选地选择可用的MLC块进行数据写入。因此,将选择健康MLC块1102而不是不健康MLC块1108,并且将在健康MLC块1102内选择最健康的子集1104而不是下一个最健康的子集1106。类似地,如果没有可用的健康块1102,则控制器可以优先地选择不健康MLC块池1108的部分安全块1110而非不安全块1112。当写入命令到来时,控制器可以利用MLC块健康等级表来进行相对的块健康的确定。MLC块健康等级表117可以周期性地存储在非易失性存储器104中,并且根据需要将表格数据的全部或一部分复制到易失性存储器116中,使得MLC块健康等级表117可以在NVM***100断电之后持续存在。
将数据写入被视为可用但不健康的块(或块的一部分)不需要是连续的。在图7和图8的示例中,描述了当所选择的目的地MLC块已被标识为健康时,控制器仅对在NVM***100处接收到的数据进行直接MLC写入的方法。相反,视为不健康的MLC块仅在将NVM***处接收的数据已首先写入SLC块之后才在SLC-MLC折叠操作中进行写入。在可替代的实现方式中,对确定为不健康的MLC块的数据写入可以包括将相同的数据同时直接写入到不健康MLC块和SLC块。
因此,再次参考图6,代替通过先写入SLC 604、然后通过折叠路径612将数据从SLC折叠到不健康MLC块的两步顺序的过程仅间接写入接收的数据,在该替代实施例中,数据可以同时地通过直接MLC写入路径608直接写入不健康MLC块606,并通过SLC写入路径610写入SLC块。该替代的实施例与图7(在708处)和图8(在806和808处)的顺序写入示例不同,因为到达NVM***100的数据同时直接写入到SLC块和不健康MLC块,而不是使数据首先通过SLC块。使用BER作为标准来确定MLC块健康,以及在该可替代的关于不健康MLC块的同时的SLC和MLC写入方法中的针对健康块(或不健康块的健康部分)的预定数目的直接MLC写入操作的分配可以与上面讨论的相同。在该可替代的实现方式中,可以由控制器基于在对不健康MLC块的直接写入期间检测到的错误来检查BER。
经由第一SLC写入操作来备份数据并然后以折叠操作将该数据从SLC块写入到不健康MLC块的顺序方法可以提供更好的突发写入性能,因为NVM***可以使用通常在SLC块中可用的较高写入速度,并且然后在后台操作中将数据折叠到MLC块。在一个实现方式中,后台操作可以定义为在没有正在进行的主机命令时在NVM***中执行的操作。在不需要较高突发写入速度的存储器***中,可以期望同时将数据直接写入不健康MLC块和SLC块的替代方法。任一种方法都提供在写入不健康MLC块随后故障的情况下(例如,如果写入不健康MLC块导致不可纠正的ECC错误)可用于恢复数据的SLC中的数据的备份副本。
在本申请中,例如在本申请中描述的半导体存储器器件可以包括易失性存储器件(诸如动态随机存取存储器(“DRAM”)或静态随机存取存储器(“SRAM”)器件)、非易失性存储器器件(诸如电阻式随机存取存储器(“ReRAM”)、电可擦除可编程只读存储器(“EEPROM”)、快闪存储器(其也可以被认为是EEPROM的子集)、铁电随机存取存储器(“FRAM”)和磁阻随机存取存储器(“MRAM”))、以及其他能够存储信息的半导体元件。每种类型的存储器器件可以具有不同的配置。例如,快闪存储器器件可以配置成NAND或NOR配置。
存储器器件可以由无源和/或有源元件以任何组合形成。作为非限制性的示例,无源半导体存储器元件包括ReRAM器件元件,其在一些实施例中包括如反熔丝、相变材料等以及可选的导流元件(如二极管等)的电阻切换存储元件。另外,作为非限制性的示例,有源半导体存储器元件包括EEPROM和快闪存储器器件元件,在一些实施例中,EEPROM和快闪存储器器件元件包括包含电荷存储区域的元件,诸如浮栅、导电纳米颗粒或电荷存储介质材料。
多个存储器元件可以配置成使得它们串联连接,或者使得每个元件都是单独可存取的。作为非限制性示例,NAND配置(NAND存储器)中的快闪存储器器件通常包含串联连接的存储器元件。NAND存储器阵列可以配置成使得阵列由多个存储器串组成,其中串由共享单个比特线的多个存储器元件组成并且作为一组来存取。可替代地,存储器元件可以配置成使得每个元件都是单独可存取的,例如,NOR存储器阵列。NAND和NOR存储器的配置是示例性的,并且可以配置成另外的存储器元件。
位于基板内和/或上方的半导体存储器元件可以以二维或三维布置,诸如二维存储器结构或三维存储器结构。
在二维存储器结构中,将半导体存储器元件布置在单个平面或单个存储器器件级别中。通常,在二维存储器结构中,将存储器元件布置在基本上平行于支撑存储器元件的基板的主表面延伸的平面(例如,在x-z方向平面中)。基板可以是在其上或其中形成存储元件层的晶片,或者可以是在形成存储器元件之后附接到存储器元件的载体基板。作为非限制性的示例,基板可以包括半导体(诸如硅)。
存储器元件可以按照有序阵列(如多个行和/或列)布置在单个存储器器件级别中。然而,存储器元件可以以非规则或非正交的配置排列。存储器元件可以各自具有两个或更多个电极或接触线,诸如比特线和字线。
三维存储器阵列布置成使得存储器元件占据多个平面或多个存储器器件级别,从而形成三维(即,以x、y、z方向,其中y方向基本垂直于基板的主表面,以及x和z方向基本上平行于基板的主表面)的结构。
作为非限制性的示例,三维存储器结构可以垂直布置为多个二维存储器器件级的堆叠。作为另一非限制性的示例,三维存储器阵列可以布置为多个垂直列(例如,基本垂直于基板的主表面,即在y方向上延伸的列),其中在每列中,每列具有多个存储器元件。列可以布置成二维配置(例如,在x-z平面中),导致存储器元件和多个垂直堆叠的存储器平面上的元件的三维布置。三维的存储器元件的其他配置也可以构成三维存储器阵列。
通过非限制性的示例,在三维的NAND存储器阵列中,存储器元件可以耦接在一起以在单个水平的(例如,x-z)存储器器件级内形成NAND串。可替代地,存储器元件可以耦接在一起以形成穿越多个水平的存储器器件级的垂直NAND串。可以设想其他三维配置,其中一些NAND串包含在单个存储器级中的存储器元件,而其他串包含跨越多个存储器级的存储器元件。三维存储器阵列也可以设计成NOR配置和ReRAM配置。
通常,在单片的三维存储器阵列中,一个或多个存储器器件级形成在单个基板上方。可选地,单片的三维存储器阵列还可以具有至少部分地在单个基板内的一个或多个存储器层。作为非限制性的示例,基板可以包括半导体(诸如硅)。在单片的三维阵列中,构成阵列的每个存储器器件级的层通常形成在阵列的基础存储器器件级的层上。然而,单片的三维存储器阵列的相邻的存储器器件级的层可以共享或具有存储器器件级之间的中间层。
再一次地,可以分别形成二维阵列,然后将二维阵列封装在一起以形成具有多层存储器的非单片的存储器器件。例如,可以通过在单独的基板上形成存储器级,然后将存储器级堆叠在彼此之上来构建非单片堆叠的存储器。在堆叠之前,基板可以薄化或从存储器器件级移除,但是由于存储器器件级最初形成在单独的基板上,得到的存储器阵列不是单片的三维存储器阵列。此外,可以在单独的芯片上形成多个二维存储器阵列或三维存储器阵列(单片或非单片),然后将其封装在一起以形成堆叠芯片存储器器件。
对于存储器元件的操作和与存储器元件的通信通常需要关联的电路。作为非限制性的示例,存储器器件可具有用于控制和驱动存储器元件以实现诸如编程和读取的功能的电路。该关联的电路可以与存储器元件在相同的基板上和/或在分离的基板上。例如,用于存储器读写操作的控制器可以位于单独的控制器芯片上和/或与存储器元件相同的基板上。
本领域的技术人员将认识到,本发明不限于所描述的示例性的二维和三维结构,而是覆盖了本领域的技术人员所理解的本文所述的本发明的精神和范围内的所有相关存储器结构。
已经公开了用于管理接收到的数据,并且基于所确定的MLC块的块健康,直接将数据写入健康块,或者在不健康MLC块的情况下首先写入SLC块,然后折叠到MLC块的方法和***。该***和方法允许非易失性存储器***获得健康块的更快性能,并且在数据备份方面(以免写入错误)利用更迂回的但更安全的用于不健康块的数据写入路径。该***和方法可以使用BER阈值来区分健康和不健康的MLC块。可以基于相对的BER将健康块细分为子组,其中在重新检查BER之前,最低的BER健康块,而不是具有测量的较高BER的健康块,可以用于更多数目的编程/擦除循环的直接MLC写入。不健康MLC块可以统一处理,其中对不健康MLC块的所有写入包括对SLC块的写入,作为备份以免在不健康MLC块中损坏或故障。将数据写入不健康MLC块可以经由两步写入:首先写入SLC,然后从SLC到MLC的折叠,或者经由到SLC块和不健康MLC块二者的同时直接写入。可替代地,对于某些不健康块,不健康块的不同部分可以不同地处理,其中可以直接写入健康的字线,并在两步的SLC写入、SLC到MLC折叠过程中写入不健康的字线。不健康块的细分可以是基于不健康块的字线故障百分比和/或在预先确定以标识不健康MLC块的BER范围内的更精细BER阈值而做出。
意图的是前面的详细描述被理解为本发明可以采用的所选形式的图示,而不是作为本发明的限定。仅以以下权利要求(包括所有等同物)旨在限定要求保护的发明的范围。最后,应该注意的是,这里描述的任何优选实施例的任何方面都可以单独使用或相互结合使用。
Claims (19)
1.一种非易失性存储器***,包括:
非易失性存储器,具有多个单级单元SLC块和多个多级单元MLC块,所述SLC块具有每单元容量为单个比特的存储器单元,所述MLC块具有每单元容量为多个比特的存储器单元;
控制器,与所述非易失性存储器通信,所述控制器被配置为:
基于健康标准标识所述多个MLC块中的哪些是健康的MLC块以及哪些是不健康的MLC块;
通过绕过所述SLC块的直接MLC写入路径,将接收的主机数据写入先前标识为健康的MLC块;以及
通过经由初始写入至少一个SLC块的多步写入路径,将接收的主机数据写入先前标识为不健康的MLC块,其中健康的MLC块包括具有在第一预定范围之内的健康标准的MLC块,以及不健康的MLC块包括具有在与所述第一预定范围不同的第二预定范围内的健康标准的MLC块;其中所述健康标准是MLC块的误比特率BER。
2.如权利要求1所述的非易失性存储器***,其中所述控制器进一步被配置为,当接收到来自主机的数据时,基于所述非易失性存储器***中的块健康等级数据结构中的可用MLC块的健康等级,在所述非易失性存储器中选择所述可用MLC块。
3.如权利要求2所述的非易失性存储器***,其中所述控制器进一步被配置为选择在所述块健康等级数据结构中标识为健康的可用MLC块,以及当在所述块健康等级数据结构中没有标识为健康的可用MLC块时,所述控制器被配置为选择标识为不健康的可用MLC块。
4.如权利要求2所述的非易失性存储器***,其中所述控制器进一步被配置为,当在所述块健康等级数据结构中没有列出可用MLC块时:
通过多步写入路径将所述接收的主机数据间接地写入所述可用MLC块;
测量所述可用MLC块的BER;并且
基于所测量的BER使用所述可用MLC块的健康状况更新所述块健康等级数据结构。
5.如权利要求4所述的非易失性存储器***,其中所述控制器进一步被配置为,当所述可用MLC块被确定为健康的MLC块时,在所述块健康等级数据结构中将直接写入循环数目与所述健康的MLC块相关联。
6.如权利要求5所述的非易失性存储器***,其中所述控制器被配置为,基于对所述可用MLC块测量的BER比预定的BER阈值小多少,关联不同的直接写入循环数目。
7.如权利要求4所述的非易失性存储器***,其中当所测量的可用MLC块的BER在所述第二预定范围内,并且当所述可用MLC块满足第二健康标准时,所述可用MLC块是部分安全的不健康块,并且所述控制器进一步被配置为:
更新所述块健康等级数据结构以标识所述部分安全的不健康块的健康部分和所述部分安全的不健康块的不健康部分。
8.如权利要求7所述的非易失性存储器***,其中当所述第二健康标准是所述可用MLC块中的故障字线的数目小于预定的故障字线阈值时,并且故障字线包括确定为具有一定数目的对于所述非易失性存储器***无法纠正的比特错误的字线。
9.如权利要求8所述的非易失性存储器***,其中所述部分安全的不健康块的健康部分和不健康部分包括各自的字线分组,以及其中具有小于预定BER阈值的BER的每个字线分组由所述控制器标识为健康部分,以及具有大于或等于所述预定BER阈值的BER的每个字线分组被标识为不健康部分。
10.如权利要求7所述的非易失性存储器***,其中当选择所述部分安全的不健康块用于随后的写入操作时,所述控制器被配置为:
通过绕过所述SLC块的所述直接MLC写入路径,将接收的主机数据写入每个健康部分;以及
通过经由初始写入至少一个SLC块的所述多步写入路径,将接收的主机数据写入每个不健康部分。
11.一种非易失性存储器***,包括:
非易失性存储器,具有:
多个单级单元SLC块,所述SLC块具有每单元容量为单个比特的存储器单元;
多个多级单元MLC块,所述MLC块具有每单元容量为多个比特的存储器单元;以及
块健康等级数据结构,具有关于所述多个MLC块的至少一部分的MLC块健康数据;以及
部件,用于通过绕过SLC块的直接MLC写入路径,将主机数据写入在接收主机数据以前在所述块健康等级数据结构中已经标识为健康的MLC块,以及用于通过经由初始写入至少一个SLC块的多步写入路径,将主机数据写入在接收所述主机数据以前在所述块健康等级数据结构中已经标识为不健康的MLC块,其中健康的MLC块包括具有在第一预定范围以内的健康标准的MLC块,以及不健康的MLC块包括具有在与所述第一预定范围不同的第二预定范围内的健康标准的MLC块;其中所述健康标准是MLC块的误比特率BER。
12.一种非易失性存储器***,包括:
非易失性存储器,具有多个单级单元SLC块和多个多级单元MLC块,所述SLC块具有每单元容量为单个比特的存储器单元,所述MLC块具有每单元容量为多个比特的存储器单元;
控制器,与所述非易失性存储器通信,所述控制器被配置为:
接收数据用于存储在所述非易失性存储器中;
根据先前的块健康标准测量来确定所述非易失性存储器中的所述多个MLC块中的MLC块是否满足健康标准级别;
基于所述先前的块健康标准测量,当所述MLC块满足所述健康标准级别时,直接将所接收的数据写入所述MLC块;以及
基于所述先前的块健康标准测量,当所述MLC块不满足所述健康标准级别时:
将所接收的数据写入所述多个SLC块中的SLC块;以及
将所接收的数据写入所述MLC块;其中所述健康标准级别包括小于预定量的误比特率BER。
13.如权利要求12所述的非易失性存储器***,其中将所接收的数据写入所述SLC块,并且还将所接收的数据写入所述MLC块,所述控制器还被配置为:
与直接将所接收的数据写入所述MLC块同时地将所接收的数据写入所述SLC块。
14.如权利要求12所述的非易失性存储器***,其中将所接收的数据写入所述SLC块,并且还将所接收的数据写入所述MLC块,所述控制器还被配置为:
首先将所接收的数据写入所述SLC块,然后将所接收的数据从所述SLC块写入所述MLC块。
15.如权利要求14所述的非易失性存储器***,其中当先前尚没有对所述MLC块测量健康标准时,所述控制器还被配置为:
将所接收的数据写入所述SLC块;
将所接收的数据从所述SLC块写入所述MLC块;以及
在将所接收的数据从所述SLC块写入所述MLC块期间对所述MLC块测量所述健康标准。
16.如权利要求15所述的非易失性存储器***,其中测量所述健康标准,所述控制器还被配置为测量所述MLC块的误比特率BER。
17.如权利要求16所述的非易失性存储器***,其中所述控制器还被配置为当对于所述MLC块所测量的BER小于预定阈值时,在块健康等级数据结构中将所述MLC块标记为健康块。
18.如权利要求17所述的非易失性存储器***,其中将所述MLC块标记为健康块,所述控制器还被配置为:
在所述块健康等级数据结构中将直接写入循环数目与所述MLC块相关联,所述直接写入循环数目表示在将再次测量所述MLC块的健康标准之前向所述MLC块的写入次数。
19.如权利要求18所述的非易失性存储器***,其中将所述MLC块标记为健康块,所述控制器还被配置为:
基于对于所述MLC块所测量的BER比所述预定阈值少多少,将多个直接写入循环数目中的一个与所述MLC块相关联。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/420,894 | 2017-01-31 | ||
US15/420,894 US10209914B2 (en) | 2017-01-31 | 2017-01-31 | System and method for dynamic folding or direct write based on block health in a non-volatile memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108376120A CN108376120A (zh) | 2018-08-07 |
CN108376120B true CN108376120B (zh) | 2020-02-07 |
Family
ID=62843084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711346686.XA Active CN108376120B (zh) | 2017-01-31 | 2017-12-15 | 用于管理在非易失性存储器***中写入块的***和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10209914B2 (zh) |
CN (1) | CN108376120B (zh) |
DE (1) | DE102017128940B4 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10303571B2 (en) * | 2015-11-04 | 2019-05-28 | Intel Corporation | Data recovery in memory devices |
US20180239532A1 (en) | 2017-02-23 | 2018-08-23 | Western Digital Technologies, Inc. | Techniques for performing a non-blocking control sync operation |
US10824503B2 (en) * | 2017-11-14 | 2020-11-03 | Micron Technology, Inc. | Systems and methods for performing a write pattern in memory devices |
US10732838B2 (en) * | 2017-11-29 | 2020-08-04 | Western Digital Technologies, Inc. | Logical grouping for hybrid dual write |
KR102469174B1 (ko) * | 2018-01-11 | 2022-11-23 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
JP7102166B2 (ja) * | 2018-02-23 | 2022-07-19 | キヤノン株式会社 | 情報処理装置、情報処理装置の制御方法及びプログラム |
TWI668699B (zh) * | 2018-10-25 | 2019-08-11 | 群聯電子股份有限公司 | 資料儲存方法、記憶體控制電路單元以及記憶體儲存裝置 |
US10725912B2 (en) * | 2018-12-19 | 2020-07-28 | Micron Technology, Inc. | Power loss protection in memory sub-systems |
TWI710905B (zh) | 2019-05-06 | 2020-11-21 | 慧榮科技股份有限公司 | 資料儲存裝置及邏輯至物理位址映射表之載入方法 |
US10996862B2 (en) * | 2019-06-17 | 2021-05-04 | Western Digital Technologies, Inc. | Adaptive read trim for second read data retention |
US11341046B2 (en) * | 2019-08-05 | 2022-05-24 | Micron Technology, Inc. | Layer interleaving in multi-layered memory |
US11011223B2 (en) * | 2019-08-27 | 2021-05-18 | Micron Technology, Inc. | Memory sub-system grading and allocation |
US10871910B1 (en) * | 2019-09-27 | 2020-12-22 | Western Digital Technologies, Inc. | Non-volatile memory with selective interleaved coding based on block reliability |
US11157379B2 (en) * | 2019-10-30 | 2021-10-26 | International Business Machines Corporation | Managing blocks of memory based on block health using hybrid controllers |
US11288011B2 (en) * | 2020-03-26 | 2022-03-29 | Western Digital Technologies, Inc. | Non-volatile memory array with write failure protection for multi-level cell (MLC) storage elements using coupled writes |
US11537534B2 (en) * | 2020-08-20 | 2022-12-27 | Western Digital Technologies, Inc. | High throughput, low power, high parity architecture for database SSD |
JP2022050016A (ja) * | 2020-09-17 | 2022-03-30 | キオクシア株式会社 | メモリシステム |
US11409446B2 (en) * | 2020-11-11 | 2022-08-09 | Micro Technology, Inc. | Media management on power-up |
CN113010112B (zh) * | 2021-03-09 | 2022-11-11 | 重庆邮电大学 | 一种基于可变电阻式存储器的数据分配优化方法 |
US11545232B1 (en) | 2021-08-05 | 2023-01-03 | Micron Technology, Inc. | Quick reliability scan for memory device |
US11816349B2 (en) | 2021-11-03 | 2023-11-14 | Western Digital Technologies, Inc. | Reduce command latency using block pre-erase |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8799747B2 (en) * | 2010-06-03 | 2014-08-05 | Seagate Technology Llc | Data hardening to compensate for loss of data retention characteristics in a non-volatile memory |
US8560922B2 (en) * | 2011-03-04 | 2013-10-15 | International Business Machines Corporation | Bad block management for flash memory |
JP2014513850A (ja) * | 2011-05-17 | 2014-06-05 | サンディスク テクノロジィース インコーポレイテッド | 小さな論理グループがアクティブなslcおよびmlcメモリパーティションに分散させられる不揮発性メモリおよび方法 |
US9176862B2 (en) * | 2011-12-29 | 2015-11-03 | Sandisk Technologies Inc. | SLC-MLC wear balancing |
US9003224B2 (en) * | 2012-04-25 | 2015-04-07 | Western Digital Technologies, Inc. | Managing unreliable memory in data storage systems |
US8880838B2 (en) | 2013-01-08 | 2014-11-04 | Lyve Minds, Inc. | Storage network data allocation |
US9455048B2 (en) * | 2013-06-28 | 2016-09-27 | Sandisk Technologies Llc | NAND flash word line management using multiple fragment pools |
US9165683B2 (en) * | 2013-09-23 | 2015-10-20 | Sandisk Technologies Inc. | Multi-word line erratic programming detection |
US9229644B2 (en) * | 2013-11-25 | 2016-01-05 | Sandisk Technologies Inc. | Targeted copy of data relocation |
US9478315B2 (en) * | 2014-06-03 | 2016-10-25 | Sandisk Technologies Llc | Bit error rate mapping in a memory system |
US20160018998A1 (en) | 2014-07-17 | 2016-01-21 | Sandisk Enterprise Ip Llc | Methods and Systems for Scalable Reliability Management of Non-Volatile Memory Modules |
US9558847B2 (en) | 2014-11-21 | 2017-01-31 | Sandisk Technologies Llc | Defect logging in nonvolatile memory |
US10223029B2 (en) | 2014-12-22 | 2019-03-05 | Sandisk Technologies Llc | Dynamic programming adjustments based on memory wear, health, and endurance |
US10014060B2 (en) * | 2015-01-30 | 2018-07-03 | Sandisk Technologies Llc | Memory system and method for reducing read disturb errors |
US9606737B2 (en) * | 2015-05-20 | 2017-03-28 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning |
-
2017
- 2017-01-31 US US15/420,894 patent/US10209914B2/en active Active
- 2017-12-06 DE DE102017128940.2A patent/DE102017128940B4/de active Active
- 2017-12-15 CN CN201711346686.XA patent/CN108376120B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US10209914B2 (en) | 2019-02-19 |
DE102017128940A1 (de) | 2018-08-02 |
CN108376120A (zh) | 2018-08-07 |
US20180217751A1 (en) | 2018-08-02 |
DE102017128940B4 (de) | 2023-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108376120B (zh) | 用于管理在非易失性存储器***中写入块的***和方法 | |
US9785357B2 (en) | Systems and methods for sampling data at a non-volatile memory system | |
US10157004B2 (en) | Storage system and method for recovering data corrupted in a host memory buffer | |
US9530517B2 (en) | Read disturb detection in open blocks | |
US10222990B2 (en) | Optimistic read operation | |
US10157012B2 (en) | Zero read on trimmed blocks in a non-volatile memory system | |
US10282251B2 (en) | System and method for protecting firmware integrity in a multi-processor non-volatile memory system | |
US10002042B2 (en) | Systems and methods of detecting errors during read operations and skipping word line portions | |
US10339000B2 (en) | Storage system and method for reducing XOR recovery time by excluding invalid data from XOR parity | |
US9886341B2 (en) | Optimizing reclaimed flash memory | |
US9804922B2 (en) | Partial bad block detection and re-use using EPWR for block based architectures | |
US9812209B2 (en) | System and method for memory integrated circuit chip write abort indication | |
US10127103B2 (en) | System and method for detecting and correcting mapping table errors in a non-volatile memory system | |
US9728262B2 (en) | Non-volatile memory systems with multi-write direction memory units | |
US11036407B1 (en) | Storage system and method for smart folding | |
US10229751B2 (en) | Storage system and method for bad block recycling | |
US11442666B2 (en) | Storage system and dual-write programming method with reverse order for secondary block | |
WO2021247093A1 (en) | Storage system and method for retention-based zone determination | |
US9678684B2 (en) | Systems and methods for performing an adaptive sustain write in a memory system | |
US11334256B2 (en) | Storage system and method for boundary wordline data retention handling | |
US9548105B1 (en) | Enhanced post-write read for 3-D memory | |
US11893243B2 (en) | Storage system and method for program reordering to mitigate program disturbs | |
US20240006010A1 (en) | Storage System and Method for Proactive Die Retirement by Fatal Wordline Leakage Detection | |
US20230385202A1 (en) | Storage System and Method for Avoiding Header to Improve Parity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |