CN116774913A - 改善混合读/写操作期间的读取时延的存储系统和方法 - Google Patents
改善混合读/写操作期间的读取时延的存储系统和方法 Download PDFInfo
- Publication number
- CN116774913A CN116774913A CN202210502693.9A CN202210502693A CN116774913A CN 116774913 A CN116774913 A CN 116774913A CN 202210502693 A CN202210502693 A CN 202210502693A CN 116774913 A CN116774913 A CN 116774913A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- word line
- controller
- host
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 362
- 238000000034 method Methods 0.000 title claims description 69
- 206010000210 abortion Diseases 0.000 claims abstract description 5
- 230000004044 response Effects 0.000 claims description 15
- 239000000872 buffer Substances 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 25
- 238000009826 distribution Methods 0.000 description 23
- 239000000758 substrate Substances 0.000 description 18
- 238000011084 recovery Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 230000000670 limiting effect Effects 0.000 description 9
- 239000004065 semiconductor Substances 0.000 description 9
- 238000012937 correction Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000003491 array Methods 0.000 description 6
- NGVDGCNFYWLIFO-UHFFFAOYSA-N pyridoxal 5'-phosphate Chemical group CC1=NC=C(COP(O)(O)=O)C(C=O)=C1O NGVDGCNFYWLIFO-UHFFFAOYSA-N 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 239000003990 capacitor Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000011370 conductive nanoparticle Substances 0.000 description 1
- 239000003989 dielectric material Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000004242 micellar liquid chromatography Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000036963 noncompetitive effect Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- 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/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- 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/5642—Sensing or reading circuits; Data output circuits
-
- 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/5671—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 trapping in an insulator
-
- 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/08—Address circuits; Decoders; Word-line control 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/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/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
-
- 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/26—Sensing or reading circuits; Data output 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/32—Timing 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/3436—Arrangements for verifying correct programming or erasure
- G11C16/3468—Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
- G11C16/3481—Circuits or methods to verify correct programming of nonvolatile memory cells whilst programming is in progress, e.g. by detecting onset or cessation of current flow in cells and using the detector output to terminate programming
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/106—Data output latches
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/1087—Data input latches
-
- 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
- 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/0411—Online error correction
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/22—Control and timing of internal memory operations
- G11C2207/2245—Memory devices with an internal cache buffer
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2216/00—Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
- G11C2216/12—Reading and writing aspects of erasable programmable read-only memories
- G11C2216/20—Suspension of programming or erasing cells in an array in order to read other cells in it
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种存储系统接收读取位于正进行编程操作的字线中的数据的请求。所述存储系统并不等待所述编程操作完成,从而增加读取时延,而是中止所述编程操作,并且从所述字线中已成功编程的存储器单元以及从与所述字线中未成功编程的存储器单元相关联的数据锁存器重建所述数据。接着将重建的所述数据发送到主机。编程中止命令可类似于用于在断电情况下提供优雅关闭的命令。
Description
背景技术
读取时延(读取主机所请求的数据的时间量)是存储系统的重要服务质量(QoS)度量。理想地,读取命令一旦由存储系统接收就得以处置。然而,如果存储器中正进行 编程或擦除操作,则存储系统可能需要等待所述操作完成,之后执行读取操作,这会增 加读取时延。即使正执行编程操作时也能够执行读取操作将是有利的。
附图说明
图1A是实施例的非易失性存储系统的框图。
图1B是示出实施例的存储模块的框图。
图1C是示出实施例的层次型存储系统的框图。
图2A是示出根据实施例的在图1A中示出的非易失性存储系统的控制器的组件的框图。
图2B是示出根据实施例的在图1A中示出的非易失性存储系统的组件的框图。
图3A和3B是示出实施例的模糊-精细编程操作的图。
图3C是实施例的存储系统的框图。
图3D是实施例的MLC-精细状态图。
图3E是实施例的模糊-精细状态图。
图3F是实施例的模糊-精细数据路径图。
图4是其字线之一正发生编程的存储器的图解说明。
图5是用于改善混合读/写操作期间的读取时延的实施例的方法的流程图。
图6是用于掉电之前的数据恢复的实施例的方法的流程图。
图7是用于掉电之前的数据备份的实施例的方法的流程图。
图8是用于上电之后的数据恢复的实施例的方法的流程图。
图9是实施例的数据锁存器分配和重建过程的图解说明。
图10是其中一个存储器单元被成功编程的实施例的数据锁存器分配和重建过程的 图解说明。
图11是实施例的数据重建方法的流程图。
图12是示出用于断电期间的数据保护的实施例的方法的图。
图13是示出实施例的编程旗标的使用的图。
图14是示出在实施例的存储系统中读取模糊字线的数据路径的框图。
图15是示出用于断电期间的数据保护的实施例的方法的图。
具体实施方式
以下实施例总体上涉及一种用于改善混合读/写操作期间的读取时延的存储系统和 方法。在一个实施例中,呈现一种包括控制器和存储器的存储系统,所述存储器包括数据锁存器和多个字线。所述控制器配置成:从主机接收读取命令;确定所述读取命令的 执行需要读取正进行编程操作的字线,所述编程操作将数据从所述数据锁存器编程到所 述字线;向所述存储器发送命令,其中所述存储器配置成响应于接收到所述命令而中止 所述正进行的编程操作,其中中止所述正进行的编程操作使得所述字线中的一些但非全 部存储器单元被成功编程;从对应于所述字线中未成功编程的存储器单元的数据锁存器 以及从所述字线中已成功编程的存储器单元重建原本要编程在所述字线中的所述数据; 以及响应于所述读取命令将重建的所述数据发送到所述主机。
在另一实施例中,提供一种在包括控制器和存储器的存储系统中执行的方法,所述 存储器包括数据锁存器和多个字线。所述方法包括:确定从主机接收的读取命令的执行需要读取正进行编程操作的字线,所述编程操作将数据从所述数据锁存器编程到所述字线;从所述控制器向所述存储器发送优雅关闭命令,其中响应于所述优雅关闭命令,所 述存储器中止所述正进行的编程操作,从而使得所述字线中的一些但非全部存储器单元 被成功编程;从对应于所述字线中未成功编程的存储器单元的数据锁存器以及从所述字 线中已成功编程的存储器单元重建原本要编程在所述字线中的所述数据;以及将重建的 所述数据发送到所述主机。
在又一实施例中,提供一种存储系统,其包括:包括数据锁存器和多个字线的存储器;用于确定从主机接收的读取命令的执行需要读取正进行编程操作的字线的构件,所 述编程操作将数据从所述数据锁存器编程到所述字线;用于向所述存储器发送命令的构 件,其中响应于所述命令,所述存储器中止所述正进行的编程操作,从而使得所述字线 中的一些但非全部存储器单元被成功编程;用于从对应于所述字线中未成功编程的存储 器单元的数据锁存器以及从所述字线中已成功编程的存储器单元重建原本要编程在所 述字线中的所述数据的构件;以及用于将重建的所述数据发送到所述主机的构件。
提供其它实施例,并且这些实施例中的每一者可单独或组合使用。
现在转向图式,适用于实施这些实施例的各方面的存储系统示于图1A到1C中。图1A是示出根据本文中所描述的主题的实施例的非易失性存储系统100(有时在本文中称 为存储装置或仅称为装置)的框图。参考图1A,非易失性存储系统100包含控制器102 和非易失性存储器,所述非易失性存储器可由一个或多个非易失性存储器裸片104构成。 如本文中所使用,术语裸片是指形成在单个半导体衬底上的非易失性存储器单元以及用 于管理那些非易失性存储器单元的物理操作的相关联电路的集合。控制器102与主机系 统介接,并将用于读取、编程和擦除操作的命令序列传输到非易失性存储器裸片104。
控制器102(其可为非易失性存储器控制器(例如,快闪、电阻式随机存取存储器(ReRAM)、相变存储器(PCM)或磁阻式随机存取存储器(MRAM)控制器))可采用 以下形式:处理电路、微处理器或处理器以及存储计算机可读程序代码(例如,固件) 的计算机可读介质,所述计算机可读程序代码可由例如(微)处理器、逻辑门、开关、 专用集成电路(ASIC)、可编程逻辑控制器和嵌入式微控制器执行。控制器102可配置 有硬件和/或固件以执行下文描述和流程图中所示的各种功能。另外,示为处于控制器内 部的一些组件也可存储在控制器外部,并且可使用其它组件。另外,短语“操作性地 与……通信”可意指与……直接通信,或通过本文中可能示出或描述或可能未示出或描 述的一个或多个组件与……间接(有线或无线)通信。
如本文中所使用,非易失性存储器控制器是管理存储在非易失性存储器上的数据并 且与例如计算机或电子装置等主机进行通信的装置。非易失性存储器控制器除本文中所 描述的特定功能外还可具有各种功能。例如,非易失性存储器控制器可格式化非易失性存储器以确保存储器恰当地操作,拟定不良的非易失性存储器单元,并且分配备用单元 来取代未来的失效单元。备用单元的某一部分可用以保持固件来操作非易失性存储器控 制器以及实施其它特征。在操作中,在主机需要从非易失性存储器读取数据或将数据写 入到非易失性存储器时,所述主机可与非易失性存储器控制器通信。如果主机提供要读 取/写入数据的逻辑地址,则非易失性存储器控制器可将从主机接收到的逻辑地址转换成 非易失性存储器中的物理地址。(替代地,主机可提供物理地址。)非易失性存储器控制 器还可执行各种存储器管理功能,例如但不限于损耗均衡(分布写入以避免损耗原本会 被重复地写入到的特定存储器块)和无用单元收集(在块已满之后,仅将有效数据页移 动到新块,由此可擦除并且再使用已满的块)。另外,权利要求书中所叙述的“构件” 的结构可包含例如本文中所描述的控制器的一些或全部结构,所述结构视需要编程或制 造以使得控制器操作以执行所叙述功能。
非易失性存储器裸片104可包含任何合适的非易失性存储介质,包含ReRAM、MRAM、PCM、NAND快闪存储器单元和/或NOR快闪存储器单元。存储器单元可采取 固态(例如,快闪)存储器单元的形式,并且可以是可一次编程、可少次编程或可多次 编程的。存储器单元还可以是单层级单元(SLC)、多层级单元(MLC)、三层级单元(TLC)、 四层级单元(QLC),或使用现在已知或以后开发的其它存储器单元层级技术。另外, 存储器单元可以二维或三维方式制造。
控制器102与非易失性存储器裸片104之间的接口可以是任何合适的快闪接口,例如双态切换模式(Toggle Mode)200、400或800。在一个实施例中,存储系统100可以 是基于卡的系统,例如安全数字(SD)或微安全数字(微SD)卡(或USB、SSD等)。 在替代实施例中,存储系统100可以是嵌入式存储系统的部分。
虽然在图1A中示出的实例中,非易失性存储系统100(在本文中有时称为存储模块)包含控制器102与非易失性存储器裸片104之间的单个通道,但本文中所描述的主 题不限于具有单个存储器通道。例如,在一些存储系统架构(如图1B和1C中所示的存 储系统架构)中,取决于控制器能力,控制器与存储器装置之间可存在2个、4个、8 个或更多个存储器通道。即使图中示出单个通道,在本文中所描述的任何实施例中,控 制器与存储器裸片之间可存在多于单个的通道。
图1B示出包含复数个非易失性存储系统100的存储模块200。由此,存储模块200可包含与主机且与存储系统204介接的存储控制器202,所述存储系统包含多个非易失 性存储系统100。存储控制器202与非易失性存储系统100之间的接口可以是总线接口, 例如串行高级技术附件(SATA)、外围组件互连高速(PCIe)接口或双数据速率(DDR) 接口。在一个实施例中,存储模块200可以是例如在服务器PC或便携式计算装置(例 如笔记本电脑和平板电脑)中存在的固态驱动器(SSD)或非易失性双列直插式存储器 模块(NVDIMM)。
图1C是示出层次型存储系统的框图。层次型存储系统250包含多个存储控制器202, 其中每个存储控制器控制相应存储系统204。主机系统252可通过总线接口存取存储系 统内的存储器。在一个实施例中,总线接口可以是非易失性存储器高速(NVMe)接口 或以太网光纤通道(FCoE)接口。在一个实施例中,图1C中示出的系统可以是例如可 能会在数据中心或其中需要大容量存储的其它位置中存在的可由多个主机计算机存取 的机架式(rack mountable)大容量存储系统。
图2A是更详细地示出控制器102的组件的框图。控制器102包含与主机介接的前端模块108、与一个或多个非易失性存储器裸片104介接的后端模块110以及执行现将 详细描述的功能的各种其它模块。模块可例如呈以下形式:设计成与其它组件一起使用 的封装功能硬件单元,可由通常执行相关功能中的特定功能的(微)处理器或处理电路 执行的程序代码(例如软件或固件)的一部分,或与较大系统介接的自含式硬件或软件 组件。控制器102在本文中有时可被称作NAND控制器或快闪控制器,但应理解,控制 器102可与任何合适的存储器技术一起使用,下文提供了一些存储器技术的实例。
再次参考控制器102的模块,缓冲器管理器/总线控制器114管理随机存取存储器(RAM)116中的缓冲器,并且控制控制器102的内部总线仲裁。只读存储器(ROM) 118存储系统启动代码。虽然在图2A中示出为与控制器102分开定位,但在其它实施 例中,RAM 116和ROM 118中的一者或两者可定位在控制器内。而在其它实施例中, RAM和ROM的部分可以既位于控制器102内又位于控制器外部。
前端模块108包含提供与主机或下一级存储控制器的电接口的主机接口120和物理 层接口(PHY)122。主机接口120的类型的选择可取决于正在使用的存储器类型。主 机接口120的实例包含但不限于SATA、SATA高速、串行附接小型计算机系统接口 (SAS)、光纤通道、通用串行总线(USB)、PCIe和NVMe。主机接口120通常促进数 据、控制信号和定时信号的传送。
后端模块110包含错误校正码(ECC)引擎124,所述ECC引擎对从主机接收到的 数据字节进行编码,并且对从非易失性存储器读取的数据字节进行解码和错误校正。命 令定序器126待传输到非易失性存储器裸片104的命令序列,例如编程和擦除命令序列。 独立驱动器冗余阵列(Redundant Array of Independent Drive,RAID)模块128管理RAID 奇偶校验的生成以及失效数据的恢复。RAID奇偶校验可用作对写入到存储器装置104 中的数据的额外级别的完整性保护。在一些情况下,RAID模块128可以是ECC引擎124 的部分。存储器接口130将命令序列提供到非易失性存储器裸片104,并且从非易失性 存储器裸片104接收状态信息。在一个实施例中,存储器接口130可以是双数据速率 (DDR)接口,例如双态切换模式200、400或800接口。快闪控制层132控制后端模块 110的总体操作。
存储系统100还包含其它离散组件140,例如外部电接口、外部RAM、电阻器、电 容器或可与控制器102介接的其它组件。在替代实施例中,物理层接口122、RAID模 块128、介质管理层138和缓冲器管理/总线控制器114中的一者或多者是未必在控制器 102中的任选组件。
图2B是更详细地示出非易失性存储器裸片104的组件的框图。非易失性存储器裸片104包含外围电路141和非易失性存储器阵列142。非易失性存储器阵列142包含用 于存储数据的非易失性存储器单元。非易失性存储器单元可以是任何合适的非易失性存 储器单元,包含呈二维和/或三维配置的ReRAM、MRAM、PCM、NAND快闪存储器单 元和/或NOR快闪存储器单元。非易失性存储器裸片104进一步包含对数据进行缓存的 数据高速缓存156。外围电路141包含将状态信息提供到控制器102的状态机152。
再次返回到图2A,快闪控制层132(其将在本文中称为快闪转译层(FTL),或更 一般化地称为“介质管理层”,因为存储器可能不是快闪)处理快闪错误并且与主机介 接。具体地说,可以是固件中的算法的FTL负责存储器管理的内部,并且将来自主机的 写入转译成对存储器104的写入。因为存储器104可能具有受限的耐久性,可能仅以多 个页写入,和/或其除非作为块被擦除否则可能无法写入,所以可能需要FTL。FTL了解 存储器104的这些潜在限制,而主机可能看不见所述潜在限制。因此,FTL试图将来自 主机的写入转译成存储器104中的写入。
FTL可包含逻辑到物理地址(L2P)映射(有时在本文中称为表或数据结构)和所 分配的高速缓存存储器。以此方式,FTL将来自主机的逻辑块地址(“LBA”)转译成存 储器104中的物理地址。FTL可包含其它特征,例如但不限于断电恢复(以使得可在突 然断电的情况下恢复FTL的数据结构)和损耗均衡(以使得存储器块上的损耗较均匀以 防止某些块过度损耗,而过度损耗将导致较大故障机率)。
再次转向图式,图2B是实施例的主机300和存储系统(在本文中有时称作装置)100的框图。主机300可采用任何合适形式,包含但不限于计算机、移动电话、数码相 机、平板电脑、可穿戴装置、数字录像机、监视系统等。主机300包括处理器330,所 述处理器配置成将数据(例如,初始地存储在主机的存储器340(例如,DRAM)中) 发送到存储系统100以用于存储在存储系统的存储器104(例如,非易失性存储器裸片) 中。虽然主机300和存储系统100在图2B中示为分开的方框,但应注意,存储系统100 可集成在主机300中,存储系统100可以可移除方式连接到主机300,并且存储系统100 和主机300可通过网络通信。还应注意,存储器104可集成在存储系统100中或以可移 除方式连接到存储系统100。
存储器104可以任何合适方式编程。例如,可以使用被称为“模糊-精细”的两遍次编程技术(two-pass programming technique)来编程存储器单元的四个状态之一。图3A和3B示出使用对应于十六个数据状态的十六个分布对一组QLC存储器单元进行模糊- 精细编程的实例。在模糊编程之前,所有存储器单元可呈已擦除分布(例如,分布S0)。 模糊编程将存储器单元编程到第一分布S1'到S15',如图3A中所示。随后,精细编程将 存储器单元编程到第二分布S1到S15,如图3B中所示。这两个编程操作之间可存在某 一时间,并且可在所述时间期间编程一个或多个其它组的存储器单元。应理解,给定第 一分布的存储器单元随后进一步编程到对应的第二分布,中间不擦除存储器单元,使得 精细编程并不从已擦除分布开始。例如,在模糊编程操作中编程到S1'分布的存储器单 元随后进一步在精细编程操作中编程到S1分布,在模糊编程操作中编程到S2'分布的存 储器单元随后进一步在精细编程操作中编程到S2分布,在模糊编程操作中编程到S3' 分布的存储器单元随后进一步在精细编程操作中编程到S3分布,以此类推。
第一分布S1'到S15'一般比第二分布S1到S15更宽,并且邻近分布之间存在显著重叠(例如分布S1'与分布S2'重叠、分布S2'与分布S3'重叠,诸如此类)。应注意,虽然 图3B并未示出分布中的重叠,但可存在一些重叠。然而,因为此类重叠会产生能通过 ECC轻松校正的相对较小数目的错误,所以图3B中未示出重叠。
图3C是示出MLC-精细编程数据路径的实施例的存储系统的框图,并且图3D是实施例的MLC-精细状态图。如图3C中所示,存储系统100包括前端(FE)模块1500, 所述FE模块包含XOR模块1530以及与DRAM 440通信的SRAM 1540。FE模块100 通过interlaken模块1510与固件(FM)模块1520通信。FM模块1520包括低密度奇偶 校验(LDPC)编码器450、SRAM 460和LDPC解码器470。FM模块1520通过双态切 换模式(TM)总线420与存储器104(其在此实例中包括QLC主存储模块490)通信。
图3C还示出可使用的多个数据路径。在数据路径1中,存储系统100执行两页主 机写入,其中阶段二的页处于DRAM 440中并在MLC模式中编程。在数据路径2中, 存储系统100执行两页主机写入,其中阶段二的页处于DRAM 440中并且两个页被传送 到数据锁存器。在数据路径3中,将两个MLC页从DRAM 440传送到数据锁存器。应 注意,如果MLC数据用于MLC-精细阶段,则仅需要将数据写入到DRAM。在MLC- 精细阶段中,控制器102首先在MLC模式中对两个页的数据进行编程,然后在精细模 式中添加另外两个页的数据并进行编程。锁存器中需要所有四个页的数据来开始精细编 程。现有两个页(MLC)可在其在DRAM或SRAM中具有副本的情况下从控制器102 发送,或可在MLC模式中从字线读取,这种情况下DRAM或SRAM中不需要有副本。 存在一种读取芯片上MLC数据的替代方案。最后,在数据路径4中,数据以精细模式 在QLC存储器490中编程。因此,对于利用IDL读取的直接写入MLC-精细数据路径,编程的完成是通过使两个页处于MLC模式,然后在QLC模式下再添加两个页(内部两 页到四页的收敛通过读取芯片上的MLC数据来完成)。
如上所指出,读取时延(读取主机所请求的数据的时间量)可以是存储系统的重要服务质量(QoS)度量。理想地,读取命令一旦由存储系统接收就会得以处置。然而, 如果存储器中正进行编程或擦除操作,则存储系统可能需要等待所述操作完成,之后执 行读取操作,这会增加读取时延。
为了解决这个问题,存储系统可暂停编程或擦除操作来处置读取请求。暂停编程操 作允许存储系统读取存储器中除正在编程的字线之外的任何字线,因为用于正在编程的 字线的数据锁存器在编程操作完成之前将不含有效数据。数据锁存器中的数据(有时称为“飞行中”数据)并非恰好“刚刚写好”,因此不能简单地缓冲在SRAM中。例如, 在企业级SSD中,可能多达约100个装置处于编程状态,每个装置中在编程的有256 千字节(KB),从而产生约为25兆字节(MB)的无法读取数据量。因此,如果正编程 到字线的数据没有备份到RAM或其它存储器中,则存储系统将需要等到字线编程完成 后才能读取所述字线。
然而,等待字线编程完成后才能读取字线会增加读取时延。最大等待时间可表达为 (无开销):
tPROG TLC=1.5毫秒(ms)
tPROG QLC(MLC-精细模式)MLC阶段=1.5ms,
tPROG QLC精细=多达7ms
tPROG为1.5ms时,此读取对于六个9秒事件(a six 9s event)可能是可接受的。然而,当tPROG在QLC(精细编程阶段)中增加到7ms,时延将显著地增加并且可使 得存储系统的读取时延不具竞争性。最坏情况可能是其中存在伴随着读/写随机工作负载 的高队列深度(QD)(例如,32+的QD)的情况,其中约70-90%的裸片正在编程,其 中的60%需要超过1.5ms才能完成。另外,如图4所示出,任何活动裸片都可能在其中 一个块(所有平面)中具有一个不可读的字线串。这种类型的冲突大约对应于六到七个 9秒事件(队列深度为128)。它也可测量为一小时测试中的最大时延。
如上所指出,存储系统并不等待编程操作完成,而是可将正编程的数据缓存(例如, 在DRAM或SLC高速缓存中),使得可从中读取数据,而不是等待编程在字线上完成。 然而,这可能是极为昂贵和不切实际的选择。在其它情况下,正编程的主机数据的唯一 副本要么在数据锁存器(飞行中数据)中,要么在存储器单元中(当存储器单元以正确 的最终状态存储数据时)。
以下实施例可用于改善混合读/写情形下的读取时延,所述混合读/写情形原本会因 为要等待针对正编程的字线的写入操作完成之后才能从所述字线读取数据而造成读取时延。如在下文将更详细地论述,在一个特定实例中,存储系统100使用芯片上编程故 障复原特征来实施会使正编程的数据可读的编程暂停等同方案。这些实施例可在任何合 适的写入模式中使用,包含但不限于任何直接写入模式(例如MLC-精细QLC或全序列 TLC),其中数据未缓存在SLC块或DRAM中。在QLC MLC-精细模式/直接写入模式 的情况下,这些实施例可仅用于相对极长(约7ms)的精细编程阶段,而非用于与TLC 编程具有大致相同的时延(约1.5ms)的MLC阶段。这些实施例可提供改善读取时延 的优点(在一些情况下,在混合读写工作负载中多达五倍(六个9秒事件)。
再次转向图式,图5是示出实施例的操作的流程图500。如图5所示,在存储系统100从主机接收到读取命令后(动作505),存储系统100的控制器102将读取命令中的 逻辑地址转译为存储器104的物理地址(例如,使用逻辑到物理(L2P)地址转译表) (动作510)。然后,控制器102确定主机请求的数据的唯一副本是否在当前正在编程的 存储器裸片中(动作515)。如果所请求的数据不在当前正在编程的裸片中,则不存在由 编程操作引起的时延问题。因此,控制器102从存储器104中的适当空闲裸片读取数据, 并将读取的数据放置在主机读取缓冲器中,之后将数据发送到主机(动作520)。然而, 如果主机请求的数据的唯一副本在当前正在编程的存储器裸片中,则控制器102确定数 据的唯一副本是否在当前正在编程的字线中(动作525)。
如果数据的唯一副本不在当前正在编程的字线中,则控制器102可通过暂停对裸片 的编程操作(动作530)、从存储器104读取数据并将数据存储在主机读取缓冲器中(动作535)来避免读取时延。这是正常的读取操作,因为部分编程的数据位于不同的数据 锁存器中。此后,控制器102恢复编程操作(动作540)。即,编程操作在其停止于未完 全编程在锁存器中的数据之处继续。
然而,如果数据的唯一副本位于当前正在编程的字线中,则暂停编程的过程不适用, 因为出于上文所论述的原因,无法从所述字线读取数据。因此,在此实施例中,控制器102确定字线的编程操作是否接近完成(动作545)。如果是,则等待编程操作结束(动 作550)并且随后从字线读取数据(动作555)可能更高效。在一个实施例中,这种确 定可基于完成正进行的编程操作所需的时间量是否超过阈值时间量。在另一实施例中, 这种确定可基于编程状态。例如,如果完成编程所需的时间小于约200微秒,或者如果 编程超出S13状态,则控制器102可等待,直到存储器104完成正进行的编程操作。然 后,当控制器102接收到指示编程操作已完成的真实就绪信号(例如,检查状态码77h) 时,所述控制器可读取字线。
如果字线的编程操作尚未接近完成(例如,编程操作尚未达到S13状态),则控制器102可向存储器104发送命令(动作560),所述命令使存储器通过读取验证和锁存器 更新来发起编程暂停。在这种情况下,编程脉冲结束后,以及读取验证和锁存器更新发 生后,编程操作将优雅停止。
然后使用已编程的数据重建锁存器中的数据(动作565)。可使用任何合适的机制来 重建数据,包含但不限于下文论述的芯片上解决方案和其它解决方案。然后从锁存器读取重建的数据(也可在锁存器中保存以及读取额外数据)、进行校正(如果需要)并存 储在主机读取缓冲器中(动作570)。数据锁存器现在含有所有四个页的原始数据。如果 数据不完整或不在正确的数据锁存器中,则可从控制器102传送所述数据(在控制器具 有所述数据的情况下)。接着,控制器102重启编程操作(动作575)。编程可继续利用 完整的原始数据,因为我们不再知晓哪些存储器单元已编程,哪些未编程。存储器104 在应用编程脉冲之前验证这一点,以避免过度编程的可能性。作为另一选项,可针对未 编程位重建数据。
存在与这些实施例相关联的若干优点。例如,这些实施例可减少混合读/写情况下的 时延。在精细阶段,估计在一些情况下,对于编程暂停定时(约200微秒加上恢复), 延迟的减少可能多达6毫秒(ms)。在MLC阶段,延迟可类似于TLC编程(例如,1.5 ms)。
存在可与这些实施例一起使用的许多替代方案。例如,在上述实施例中,存储系统100通过在精细阶段处理存储器锁存器和存储器单元中的数据来重建正在编程的数据, 因为所述精细阶段是其中很可能不存在数据的其它副本的编程阶段。相比之下,如果需 要在模糊编程下读取数据,则存储系统100可从例如RAM或NAND等另一源读取数据。 另外,如果需要在MLC编程下读取数据,则存储系统100可等待较短的MLC编程完成, 或者可使用类似的重建方法,但只能用于两个(而非四个)位。虽然上述实例基于MLC- 精细模式,但相同的重建也可应用于模糊-精细模式的精细阶段。因此,这些实施例可应 用于没有第二数据源的任何精细编程阶段,无论是模糊-精细模式还是MLC-精细模式。
关于模糊-精细模式,图3D是实施例的模糊-精细状态图,并且图3E是实施例的模糊-精细数据路径图。如图3E所示,在本实施例中的模糊-精细数据路径中,主机数据被 直接写入QLC存储器(数据路径1到4),并且在来自DRAM 440的数据被发送到存储 器104之后可立即逐出所述数据。
在另一替代方案中,存储系统100配置成在断电情况下提供优雅关闭命令(在本文中有时称为“PLP信号”、“PLP命令”、“Pfail”或“优雅终止”命令)。此操作的修改使 用可用于上文所描述的暂停/数据重建操作,以减少读取时延。在此替代方案中,触发暂 停/数据重建操作的命令可视为“针对芯片上Pfail的假断电命令”。以下段落提供在断电 情况下的优雅关闭命令的上下文中的可能实施方案的若干实例。这些实施方案可在非断 电情况下进行调适,以减少混合读/写情况下的读取时延。例如,在断电情况下所需的一 些特征在非断电情况下可能不需要(例如,在非断电情况下,重建的数据可能不需要在SLC存储器中编程)。这些段落还提供了可使用的各种数据重建操作的实例。应理解, 以下段落中的细节只是实例,并且可使用其它实施方案。
以下段落提供了在断电事件中保护主机数据的三种技术,并且这些技术可用于具有 不同大小的PLP电容器的存储系统。在这些实例中,提供用于QLC存储器的数据重建 方法。应理解,这些方法可扩展到其它类型的存储器,例如MLC存储器。术语“MLC” 在本文中一般用于指代可存储两个或更多个位的存储器单元。因此,TLC和QLC存储 器是MLC存储器的形式。只能存储两个位的存储器单元也是MLC存储器,在下面的实 例中,MLC将指代每单元两个位。这些实例可扩展到每单元其它数目个的位(例如, TLC-精细模式、QLC-精细模式等)。还应注意,可使用除下述三种技术之外的技术,并 且除非在权利要求中明确叙述,否则不应将下文提供的细节添入权利要求中理解。
在包含锁存器中的数据重建和到SLC存储器的编程的一种技术中,在接收到PLP信号后,中断正进行的编程操作,并且在掉电之前重建数据。这种技术不需要将数据传 送到DRAM以进行备份。此技术在图6中的流程图600中示出。如图6中所示,控制 器102确定是否检测到断电事件(动作605)。控制器102可以任何合适的方式确定这一 点。例如,控制器102可通过将控制器102连接到主机300的总线/接口监测来自主机 300的电力。作为另一实例,控制器102可从主机300接收即将发生断电的指示。当发 生断电时,存储系统100中的PLP电容器可继续为存储系统100供电,因此所述存储系 统可执行下文描述的数据保护操作。
如果未检测到断电,则控制器102继续其正常操作(动作610)。然而,如果检测到断电,则控制器102确定是否存在针对存储器104中的MLC(例如,TLC或QLC)块 的正进行的编程操作(动作615)。如果不存在针对MLC块的正进行的编程操作,则控 制器102执行关闭流以关闭存储系统100(动作655)。这可涉及将一些数据从 SRAM/DRAM编程到SLC,但无关于锁存器中的数据(因为不存在)。然而,如果存在 针对MLC块的正进行的编程操作,则可能会出现数据丢失的情况。在编程MLC存储器 时,执行若干编程步骤(例如,模糊-精细编程)以使存储器单元处于正确状态。如果在 完成所有编程步骤之前编程操作被中断,则存储器单元将不会存储正确状态,从而导致 数据丢失。在编程期间,锁存器中也不存在数据的完整备用副本。
在此实施例中,为了防止此类数据丢失,控制器102向存储器104发出优雅终止命令(动作620)。响应于此命令,存储器104终止正进行的编程操作而不破坏数据锁存器 (动作625)。即,这里的构想旨在完成编程脉冲、读取单元并根据单元的状态更新锁存 器。如果单元已达到所要状态,则单元的所有四个位都将设置为“1”,由此停用任何进 一步的程序。锁存器中的数据不是原始数据,因为锁存器仅含有尚未完全编程的单元数 据。控制器102或存储器104接着收集存储器状态信息并且执行数据重建流(动作530)。 收集的存储器状态信息指明哪些存储器单元已完全编程,并指明那些尚未完全编程的存 储器单元的数据锁存器中的数据。使用收集的这一状态信息,存储器104一次一页地将 数据锁存器重建成含有原本要在中断的编程操作中编程的数据(动作635)。下文更详细 地论述数据重建过程。
控制器102一次一页地将重建的数据从存储器104中流式输出(在此实例中,每个字线存在四页数据),并将所述数据保存在易失性存储器(例如RAM)中(动作640)。 然后,控制器102确定目标字线的所有页是否已恢复(动作645)。如果尚未恢复所有页, 则方法循环回到动作625。然而,如果所有页都已恢复,则控制器102将恢复的数据编 程到存储器104中的SLC块(其编程比MLC块快)(动作650),并关闭存储系统100 (动作655)。
在另一种技术中,存储系统100并不在关闭之前重建数据,而是保存关于中断的编程操作的信息,将剩余的编程数据从数据锁存器保存到存储器104中的SLC块,然后掉 电。在这种情况下,仍可使用优雅关闭功能(参见动作720),因为一些存储器单元可能 最近刚被编程,但锁存器尚未设置成1111。这种偏差会导致错误,而过多的这种错误在 之后可能会导致无法纠正的错误。由于并非在掉电之前重建数据,因此这种技术的掉电 过程比上文所论述的技术更快。存储系统100在上电之后通过组合保存到SLC块的剩余 数据并读回实际编程到存储器104的数据子集来重建数据。所述技术在图7中的流程图 700中示出。
如图7中所示,控制器102确定是否检测到断电事件(动作705)。如果未检测到断电,则控制器102继续其正常操作(动作710)。然而,如果检测到断电,则控制器102 确定是否存在针对存储器104中的MLC(例如,TLC或QLC)块的正进行的编程操作 (动作715)。如果不存在针对MLC块的正进行的编程操作,则控制器102执行关闭流以 关闭存储系统100(动作750)。然而,如果存在针对MLC块的正进行的编程操作,则 控制器102向存储器104发出优雅终止命令(动作720)。响应于此命令,存储器104终 止正进行的编程操作而不破坏数据锁存器(动作725)。
然后,控制器102向存储器104发出命令,以将存储器104中的四个数据锁存器的内容编程到特定SLC块中的四个字线(动作730)。然后,存储器104执行SLC编程操 作(动作740)。控制器102等待存储器104变为真实就绪,并收集SLC编程状态信息 (动作740)。然后,控制器102将存储器状态信息以及关于写入中止位置的信息记录到 存储系统的日志文件中(动作745)。然后,控制器102执行关闭流以关闭存储系统100 (动作750)。
图8是上电后恢复数据的流程图800。如图8所示,在存储系统100上电后,控制 器102确定上电是否完成(动作805)。如果上电未完成,则控制器102继续其正常操作 (动作810)。然而,如果上电完成,则控制器102确定是否(例如,在控制器102中的 寄存器中)设置了写入中止旗标(动作815)。如果存储系统100优雅关闭,则控制器 102可设置写入中止旗标。如果未设置写入中止旗标,则控制器102继续其正常操作(动 作810)。然而,如果设置了写入中止旗标,则控制器102针对中止的每个字线读取关于 写入中止的存储器页的信息以及存储器状态信息(动作820)。接下来,存储器104从 SLC块读取写入中止的数据并进行ECC校正(动作825)。然后,存储器104将每个受 影响的存储器裸片的数据锁存器填充到其预写入中止的状态,并执行数据重建流,下文 论述数据重建流的实例(动作830)。应注意,并未针对上文所论述的前两种方法完成这 一点:(1)重建,然后编程到SLC;以及(2)中止,编程到SLC,然后重建。在(1) 中,SLC被读取(含有完整码字)并被校正以获得所有数据。然后将数据编程到正常(未 中止的)数据块(SLC或QLC),以释放特定的备用SLC块。在(2)中,逐页读取SLC 以获得部分数据(不是有效的ECC码字)以及逐页读取QLC以获得部分数据(也不是有效的ECC码字)。接着,进行重建以产生有效的码字,然后可对所述有效的码字进行 校正和保存。
存储器104一次一页地重建数据(动作835),并且控制器102一次一页地流式输出数据并将所述数据保存到易失性存储器(例如RAM)(动作840)。然后,控制器102确 定目标字线的所有页是否已恢复(动作845)。如果尚未恢复目标字线的所有页,则方法 循环回到动作830。然而,如果目标字线的所有页都已恢复,则数据恢复过程完成,并 且控制器102继续其正常操作(动作810)。
在上文所论述的两种技术中,在存储系统100关闭之前(第一种技术)或之后(第二种技术),重建针对字线的中断编程操作的数据。图9和10示出可重建数据的一种方 式。应注意,这仅为一个实例,并且可使用其它方法。
在此实例中,当控制器102发送对应于目标字线的所有页的数据时,存储器104首先将所述数据存储在四个数据锁存器集中。例如,对于具有3255状态码的QLC NAND, 四个数据锁存器的状态如图9所示。每个数据锁存器(DL1/2/3/4)含有一页数据,并且 S0到S15表示QLC字线的16个状态。在从控制器102到存储器104的数据传送完成之 后,控制器102向存储器103发出编程命令。存储器104可能会或可能不会将四个页的 数据转换为任何中间状态码,所述中间状态码可在执行编程操作之前帮助减少扫描逻辑 和区域。
在编程操作期间,存储器104在所述操作的每个循环期间执行编程子例程和验证子 例程。在验证操作期间,存储器104感测目标字线的数据,并将已达到其目标Vt状态 的存储器单元的数据锁存器翻转(到值“1”)。此编程和验证过程重复多次,直到所有 数据锁存器都翻转到“1”或直到达到允许的最大循环计数。如果控制器102在编程操 作进行时向存储器104发出“优雅停止”命令,则存储器104将完成正进行的程序循环 的执行,然后终止状态机,之后进入空闲状态。图10示出“优雅停止”操作后数据锁 存器的内容。
当期望数据重建时,存储系统100将一次一页地重建所有四个页的数据。图11是实施例的示例重建方法(可使用其它方法)的流程图1100。如图11所示,存储器104 感测来自已成功编程的单元的页数据(动作1110)。对于尚未成功编程的那些单元,存 储器104从DL1获取下部页位,从DL2获取中部页位,从DL3获取上部页位,从DL4 获取顶部页位(动作1120)。然后,来自这两个动作的信息组合以生成页的最终重建数 据(动作1130)。应注意,重建之前的两部分数据都不是码字,因此这些部分中的任何 错误都无法校正。
重建方法可在存储器104或控制器102(例如,在固件中)中实施。在后一种情况下,控制器102可首先将所有数据锁存器的内容流式输出到易失性存储器(例如,系统 RAM)中,然后执行S1到S15的感测操作以重建数据。此概念可应用于每单元一位、 每单元两位、每单元三位等编程操作。此外,此重建概念可扩展到涵盖高速缓存编程, 其中数据锁存器的子集可保持数据以用于下一编程操作。就在第一、第二和第三数据锁 存器被释放之前,存储器104可在内部分别将三位、两位或一位译码分配到有待完成编 程的Vt状态。在此情况下,控制器102可在执行优雅终止命令之后立即收集关于存储 器的高速缓存释放状态的信息。
取决于存储器状态,控制器102可执行以下流程之一。如果存储器状态指示未释放高速缓存,则执行四页重建流。如果存储器状态指示第一高速缓存已释放,则从DL4 恢复下一字线的一页缓存数据,并执行每单元三位的重建流。如果存储器状态指示第二 高速缓存已释放,则从DL4和DL3恢复下一字线的两页缓存数据,并执行每单元两位 的重建流。如果存储器状态指示第三高速缓存已释放,则从DL4/3/2恢复下一字线的三 页缓存数据,并执行一页重建流。
以下段落介绍了断电期间数据保护的另一种技术。作为回顾,上文所论述的两种技 术涉及从控制器102到存储器104的优雅关闭命令,从而引起正进行的精细编程操作中止(在完成验证或编程脉冲之后)并根据读取和验证操作的结果更新数据锁存器。这里 的恢复类似于上文所论述的方法,其中在上电之后重建数据,重建之后进行ECC校正。 在第一技术中,存储器104通过立即从QLC存储器中的已编程存储器单元读取数据、 将所述数据存储在相应数据锁存器中、使用数据锁存器中已存在的未编程存储器单元的 数据重建精细数据以及在SLC存储器中编程重建的页来响应所述命令。在第二技术中, 存储器104通过将数据锁存器中的数据冲刷到SLC存储器、将已编程数据从QLC存储 器读取到数据锁存器中、然后将所述数据冲刷到SLC存储器来响应所述命令,所有这些 都不需要DRAM传送。当存储系统100稍后上电时,重建精细数据。在下文描述的第 三技术中,存储器104通过将锁存器中的数据编程到SLC存储器来响应命令。在上电时, 存储系统100读取QLC存储器并重建数据。
应注意,这些技术可用于MLC-精细情况以及模糊-阶段中止情况,并且编码的模糊-精细情况可能需要额外步骤。更具体地,模糊-精细编程模式下的精细-阶段恢复如上文所论述进行操作。在MLC-精细编程模式下,如果MLC页已经受到保护(在SLC中), 或者可响应于优雅关闭命令而保存(到SLC),则只需要恢复上部页和顶部页。在编码 的模糊-精细模式下,第一种和第三种数据保护技术可在没有奇偶校验的情况下使用,但 奇偶校验可用于修复更多错误。此外,奇偶校验页可用于恢复精细阶段数据(与使用模 糊数据的方式相同,中止的精细数据可比正常模糊数据更可靠)。通常是更长阶段的精 细阶段中的断电可能是主要问题。
再次转向图式,图12示出上文针对具有错误校正的精细编程操作所提及的第三技术。在此技术中,在精细编程阶段期间发生断电事件的情况下,存储器104将来自锁存 器的数据保存到存储器104中的SLC块(例如,在同一裸片上)。当电力恢复时,存储 器140将数据从SLC块编程到中止的字线。接着在锁存器中重建原始数据。更具体地, 如果SLC=1111,则从QLC存储器中获取数据;否则,从SLC存储器中获取数据。所 述数据是原始错误校正码(ECC)码字加上来自SLC和QLC存储器的错误。在修复ECC 错误后,重建原始码字。然后,如有必要,针对已编程单元将数据设置为1111,并且编 程中止的字线。重建可在芯片外或芯片上完成,这可涉及使用第五数据锁存器,还可能 涉及使用测试模式。所述技术的优点是不需要将数据备份到易失性存储器(DRAM), 从而使芯片上MLC读取具有额外的错误传播风险和ECC保护,但可能会以重建原始数 据的额外复杂性为代价。
当重新接通电力时,存储系统100在锁存器中重建原始数据。在此实例中,四个保存的页从SLC存储器中读取并存储在数据锁存器中。如果所有四个页中的位都等于1111(例如,uLP&uMP&uUP&uTP=1),其中“u”是未编程的数据页,则从QLC存储器中 获取数据(因为QLC存储器在关闭之前已成功编程)。否则,从SLC存储器读取数据。 如图13中的图所示,在一个示例实施方案中,已编程旗标用于指示编程状态。此处, 已编程旗标=LP&MP&UP&TP,其中“1”表示不需要额外编程(即,QLC字线中的数 据可用于此位),并且0表示应忽略QLC字线数据,因为SLC字线含有正确的数据。
然后,一页一页地(对于下部页),组合页可生成为((非PF)和(uLP))或((PF) 和(QLC LP)),如图13中的表所示。为了在芯片上执行此操作,可将此操作分解为使 用现有数据锁存器(例如,3或4个锁存器)的步骤。恢复的LP数据现在是含有来自 SLC和QLC存储器的错误的原始ECC码字。然后修复ECC错误,并且重建原始码字。 然后,如有必要,针对已编程单元将数据设置为1111,并且将数据编程到中止的字线。
如上文所提及,虽然先前实例是在精细编程模式下的写入中止方面进行的论述,但 也可使用模糊-阶段中止解决方案。如果需要额外的奇偶校验位,则这些解决方案可能适 用于编码的模糊-精细编程。相同的序列可如上所论述通过以下额外步骤用于精细阶段恢 复:从QLC读取已编程单元的数据,使用SLC存储器中的模糊层级(如果使用第三种 技术),从SLC读取未编程单元的数据,如上文所论述组合数据,读出并校正奇偶校验 页,所述奇偶校验用于将模糊数据修改为精细数据,从而成为ECC码字,并对精细数 据进行校正。
图14示出读取模糊字线的可能数据路径(例如,bake之后)。此处,模糊数据不是码字,并且ECC校正可在变换到精细数据之后完成。模糊-精细方法基于模糊在所有情 况下都不是有效的码字,因为大约50%的单元在模糊阶段后处于错误状态(低于目标的 一种状态)。如图14所示,在数据路径1中,从SLC高速缓存1610读取数据,由LPDC 编码器470处理所述数据并存储在SRAM 460中。这只是针对编码的模糊-精细方法的 数据重建。在编码的模糊-精细方法中,可在模糊编程之前对数据进行编码(例如,通过 生成奇偶校验数据),使得当执行对模糊编程的存储器单元(处于第一分布中)的读取 时,可对所述读取的结果(模糊读取)进行解码(例如,与奇偶校验数据结合)以恢复 原始数据。可提供芯片上电路来执行此类编码(例如,XOR电路)和解码,使得高效地 使用资源,并且避免数据的过度传送(例如,通过存储器总线)。奇偶校验数据在一些 情况下可存储在芯片上(例如,在为SLC存储配置的非易失性存储器结构的一部分中)。 在一些情况下,奇偶校验数据可在用于数据恢复之前由ECC电路校正(解码)。奇偶校 验数据也可存储在芯片外(例如,在DRAM中)。
在数据路径2中,从SRAM 460读取数据,由LDPC编码器450处理所述数据,然 后发送到变换模块1620。在数据路径3中,从QLC存储器490读取模糊数据,并将其 发送到变换模块1620。在数据路径4中,将变换后的精细数据发送到LDPC解码器470, 并将解码的数据存储在SRAM 460中。
再次转到图式,图15是示出MLC-精细芯片上Pfail急停而无错误校正的图。在此实施例中,在精细阶段期间发生断电事件的情况下,来自锁存器的数据被保存到同一裸 片上的SLC块。再次通电时,从SLC块读取数据,并按原样编程到中止的字线而无错 误校正。这提供了不需要在DRAM中备份数据并使芯片上MLC读取具有自身的错误传 播风险的优点。然而,SLC数据和中止的精细数据不受ECC保护,并且在编程后无法 校正组合的SLC和中止的精细数据。因此,在这些实施例中,可基于错误率来选择所使 用的数据恢复方案。
最后,如上文所提及,可使用任何合适类型的存储器。半导体存储器装置包含易失性存储器装置,例如动态随机存取存储器(“DRAM”)或静态随机存取存储器(“SRAM”) 装置、非易失性存储器装置,例如ReRAM、电可擦除可编程只读存储器(“EEPROM”)、 快闪存储器(其还可被视为EEPROM的子集)、铁电随机存取存储器(“FRAM”),和 MRAM,以及能够存储信息的其它半导体元件。每个类型的存储器装置可具有不同的配 置。例如,快闪存储器装置可配制成NAND或NOR配置。
存储器装置可由无源和/或有源元件以任何组合形成。借助于非限制性实例,无源半 导体存储器元件包含ReRAM装置元件,其在一些实施例中包含电阻率开关存储元件, 例如反熔丝、相变材料等,以及任选地转向元件,例如二极管等。进一步借助于非限制 性实例,有源半导体存储器元件包含EEPROM和快闪存储器装置元件,其在一些实施 例中包含含有电荷存储区的元件,例如浮动栅极、导电纳米粒子或电荷存储介电材料。
多个存储器元件可配置成使得它们串联连接或使得每个元件可个别地存取。借助于 非限制性实例,NAND配置中的快闪存储器装置(NAND存储器)通常含有串联连接的 存储器元件。NAND存储器阵列可配置成使得阵列由多个存储器串构成,其中一串由共 用单个位线并作为群组存取的多个存储器元件构成。替代地,存储器元件可配置成使得 每个元件可个别地存取,例如NOR存储器阵列。NAND和NOR存储器配置为实例,并 且存储器元件可以其它方式来配置。
位于衬底内和/或衬底上方的半导体存储器元件可以二维或三维形式布置,例如二维 (2D)存储器结构或三维(3D)存储器结构。
在2D存储器结构中,半导体存储器元件布置在单个平面或单个存储器装置层级中。 通常,在2D存储器结构中,存储器元件布置在基本上平行于支撑存储器元件的衬底的主表面延伸的平面中(例如,在x-z方向平面中)。衬底可以是其上方或其中形成有存储 器元件的层的晶片,或可以是在存储器元件形成之后附接到存储器元件的载体衬底。作 为非限制性实例,衬底可包含例如硅的半导体。
存储器元件可以例如多个行和/或列等有序阵列的形式布置在单个存储器装置层级 中。然而,存储器元件可排列成不规则的或非正交的配置。存储器元件可各自具有两个或更多个电极或接触线,例如位线和字线。
3D存储器阵列布置成使得存储器元件占据多个平面或多个存储器装置层级,由此形成三维结构(即,x、y和z方向上,其中y方向基本上垂直于衬底的主表面,且x和 z方向基本上平行于衬底的主表面)。
作为非限制性实例,3D存储器结构可竖直地布置为多个2D存储器装置层级的堆叠。 作为另一非限制性实例,3D存储器阵列可布置为多个竖直列(例如,基本上垂直于衬底的主表面(即,在y方向上)延伸的列),其中每个列在每个列中具有多个存储器元 件。所述列可例如在x-z平面中布置成2D配置,从而产生存储器元件的3D布置,其中 元件处于多个竖直堆叠的存储器平面上。呈三维形式的存储器元件的其它配置也可构成 3D存储器阵列。
借助于非限制性实例,在3D NAND存储器阵列中,存储器元件可耦合在一起以形成在单个水平(例如,x-z)存储器装置层级内的NAND串。替代地,存储器元件可耦 合在一起以形成横穿多个水平存储器装置层级的竖直NAND串。可设想其它3D配置, 其中一些NAND串含有单个存储器层级中的存储器元件,而其它串含有跨越多个存储器 层级的存储器元件。3D存储器阵列还可设计成NOR配置和ReRAM配置。
通常,在单片3D存储器阵列中,在单个衬底上方形成一个或多个存储器装置层级。任选地,单片3D存储器阵列还可具有至少部分在单个衬底内的一个或多个存储器层。 作为非限制性实例,衬底可包含例如硅的半导体。在单片3D阵列中,构成阵列的每个 存储器装置层级的层通常形成于阵列的下伏存储器装置层级的层上。然而,单片3D存 储器阵列的相邻存储器装置层级的层可在存储器装置层级之间共享,或在存储器装置层 级之间具有中介层。
而且,二维阵列可分别形成且接着封装在一起以形成具有多个存储器层的非单片存 储器装置。例如,可通过在单独的衬底上形成存储器层级且接着将存储器层级堆叠于彼此之上来构建非单片堆叠的存储器。在堆叠之前可将衬底减薄或从存储器装置层级移 除,但由于存储器装置层级最初形成于单独的衬底上方,因此所得的存储器阵列不是单 片3D存储器阵列。此外,多个2D存储器阵列或3D存储器阵列(单片或非单片)可形 成于单独的芯片上且接着封装在一起以形成堆叠芯片存储器装置。
通常需要相关联电路来操作存储器元件并与存储器元件通信。作为非限制性实例, 存储器装置可具有用于控制和驱动存储器元件以实现例如编程和读取等功能的电路。此 相关联电路可在与存储器元件相同的衬底上和/或单独的衬底上。例如,用于存储器读写 操作的控制器可位于单独的控制器芯片上和/或与存储器元件相同的衬底上。
所属领域的技术人员将认识到,本发明不限于所描述的2D和3D结构,而是涵盖 如本文中所描述的且如所属领域的技术人员所理解的在本发明的精神和范围内的所有 相关存储器结构。
希望将前述详细描述理解为本发明可采用的选定形式的说明,而非对本发明的限定。仅所附权利要求书(包含所有等同物)旨在限定所要求的本发明的范围。最后,应 注意,本文中所描述的任一实施例的任何方面可单独使用或彼此组合使用。
Claims (20)
1.一种存储系统,其包括:
存储器,其包括数据锁存器和多个字线;以及
控制器,其配置成:
从主机接收读取命令;
确定所述读取命令的执行需要读取正进行编程操作的字线,所述编程操作将数据从所述数据锁存器编程到所述字线;
向所述存储器发送命令,其中所述存储器配置成响应于接收到所述命令而中止所述正进行的编程操作,其中中止所述正进行的编程操作使得所述字线中的一些但非全部存储器单元被成功编程;
从对应于所述字线中未成功编程的存储器单元的所述数据锁存器以及从所述字线中已成功编程的所述存储器单元重建原本要编程在所述字线中的所述数据;以及
响应于所述读取命令将重建的所述数据发送到所述主机。
2.根据权利要求1所述的存储系统,其中所述控制器进一步配置成确定完成所述正进行的编程操作的时间是否超过阈值时间量。
3.根据权利要求2所述的存储系统,其中响应于完成所述正进行的编程操作的所述时间超过所述阈值时间量而将所述命令发送到所述存储器。
4.根据权利要求1所述的存储系统,其中在不破坏所述数据锁存器的情况下中止所述正进行的编程操作。
5.根据权利要求1所述的存储系统,其中所述存储器进一步配置成一次一页地重建所述数据,并且所述控制器进一步配置成在将重建的所述数据发送到所述主机之前一次一页地将重建的所述数据从所述字线流式输出到主机读取缓冲器中。
6.根据权利要求5所述的存储系统,其中所述控制器进一步配置成在确定已恢复所述字线的所有页之后将重建的所述数据发送到所述主机。
7.根据权利要求1所述的存储系统,其中所述控制器进一步配置成响应于编程重启而确定已成功编程所述字线中的存储器单元。
8.根据权利要求1所述的存储系统,其中所述存储器包括单层级单元(SLC)存储器和多层级单元(MLC)存储器。
9.根据权利要求1所述的存储系统,其中所述存储器包括三维存储器。
10.在包括控制器和存储器而所述存储器包括数据锁存器和多个字线的存储系统中,一种方法包括:
确定从主机接收的读取命令的执行需要读取正进行编程操作的字线,所述编程操作将数据从所述数据锁存器编程到所述字线;
从所述控制器向所述存储器发送优雅关闭命令,其中响应于所述优雅关闭命令,所述存储器中止所述正进行的编程操作,从而使得所述字线中的一些但非全部存储器单元被成功编程;
从对应于所述字线中未成功编程的存储器单元的所述数据锁存器以及从所述字线中已成功编程的所述存储器单元重建原本要编程在所述字线中的所述数据;以及
向所述主机发送重建的所述数据。
11.根据权利要求10所述的方法,其进一步包括确定完成所述正进行的编程操作的时间是否超过阈值时间量。
12.根据权利要求11所述的方法,其中响应于完成所述正进行的编程操作的所述时间超过所述阈值时间量而将所述优雅关闭命令发送到所述存储器。
13.根据权利要求10所述的方法,其中在不破坏所述数据锁存器的情况下中止所述正进行的编程操作。
14.根据权利要求1所述的存储系统,其进一步包括一次一页地重建所述数据,并且在将重建的所述数据发送到所述主机之前一次一页地将重建的所述数据从所述字线流式输出到主机读取缓冲器中。
15.根据权利要求10所述的方法,其进一步包括在确定已恢复所述字线的所有页之后将重建的所述数据发送到所述主机。
16.根据权利要求10所述的方法,其进一步包括响应于编程重启而确定已成功编程所述字线中的存储器单元。
17.根据权利要求10所述的方法,其进一步包括记录存储器状态信息和关于写入中止的位置的信息。
18.根据权利要求10所述的方法,其中所述存储器包括单层级单元(SLC)存储器和多层级单元(MLC)存储器。
19.根据权利要求10所述的方法,其中所述存储器包括三维存储器。
20.一种存储系统,其包括:
存储器,其包括数据锁存器和多个字线;
用于确定从主机接收的读取命令的执行需要读取正进行编程操作的字线的构件,所述编程操作将数据从所述数据锁存器编程到所述字线;
用于向所述存储器发送命令的构件,其中响应于所述命令,所述存储器中止所述正进行的编程操作,从而使得所述字线中的一些但非全部存储器单元被成功编程;
用于从对应于所述字线中未成功编程的存储器单元的所述数据锁存器以及从所述字线中已成功编程的所述存储器单元重建原本要编程在所述字线中的所述数据的构件;以及
用于向所述主机发送重建的所述数据的构件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/687,875 | 2022-03-07 | ||
US17/687,875 US12136462B2 (en) | 2022-03-07 | Storage system and method for improving read latency during mixed read/write operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116774913A true CN116774913A (zh) | 2023-09-19 |
Family
ID=87850950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210502693.9A Pending CN116774913A (zh) | 2022-03-07 | 2022-05-10 | 改善混合读/写操作期间的读取时延的存储系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116774913A (zh) |
-
2022
- 2022-05-10 CN CN202210502693.9A patent/CN116774913A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230282294A1 (en) | 2023-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109074228B (zh) | 用于对在主机存储器缓冲区中损坏的数据进行恢复的存储系统和方法 | |
WO2017074591A1 (en) | Read operation delay | |
US9812209B2 (en) | System and method for memory integrated circuit chip write abort indication | |
US20170249155A1 (en) | Memory System and Method for Fast Firmware Download | |
US20180074891A1 (en) | Storage System and Method for Reducing XOR Recovery Time | |
US11442666B2 (en) | Storage system and dual-write programming method with reverse order for secondary block | |
US20240354033A1 (en) | Data Storage Device and Method for Device-Initiated Hibernation | |
US11698751B2 (en) | Data storage device and method for low-latency power state transitions by having power islanding in a host memory buffer | |
US11231997B2 (en) | Storage system and method for balanced quad-level cell (QLC) coding with margin for an internal data load (IDL) read | |
US11494125B2 (en) | Storage system and method for dual fast release and slow release responses | |
US11030106B2 (en) | Storage system and method for enabling host-driven regional performance in memory | |
US20210240358A1 (en) | Storage System and Method for Boundary Wordline Data Retention Handling | |
US12136462B2 (en) | Storage system and method for improving read latency during mixed read/write operations | |
US20230282294A1 (en) | Storage System and Method for Improving Read Latency During Mixed Read/Write Operations | |
US11763905B2 (en) | Storage system and method for data protection during power loss | |
US11797445B2 (en) | Data storage device and method for preventing data loss during an ungraceful shutdown | |
US11809331B1 (en) | Storage system and method for avoiding header to improve parity | |
US11494101B2 (en) | Storage system and method for time-duration-based efficient block management and memory access | |
US20240274213A1 (en) | Data Storage Device and Method for Runtime Exclusive-Or Zoning During Folding | |
US11880256B2 (en) | Data storage device and method for energy feedback and report generation | |
US20240329865A1 (en) | Data Storage Device and Method for Releasing a Source Block Having an Uncorrectable Error | |
US12079635B2 (en) | Data storage device and method for storage-class-memory-accelerated boot partition optimization | |
US20240296089A1 (en) | Data Storage Device and Method for Host-Assisted Improved Error Recovery Using a Correlation Factor | |
US11537325B2 (en) | Storage system and method for token provisioning for faster data access | |
US11599277B1 (en) | Storage system and method for performing a targeted read scrub operation during intensive host reads |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240929 Address after: Delaware, USA Applicant after: SANDISK TECHNOLOGIES Inc. Country or region after: U.S.A. Address before: California, USA Applicant before: Western Digital Technologies, Inc. Country or region before: U.S.A. |
|
TA01 | Transfer of patent application right |