CN114341791B - 编程操作失败后的数据重定向 - Google Patents
编程操作失败后的数据重定向 Download PDFInfo
- Publication number
- CN114341791B CN114341791B CN202080059604.7A CN202080059604A CN114341791B CN 114341791 B CN114341791 B CN 114341791B CN 202080059604 A CN202080059604 A CN 202080059604A CN 114341791 B CN114341791 B CN 114341791B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- memory component
- location
- processing device
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between 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/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/0656—Data buffering 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/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/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4093—Input/output [I/O] data interface arrangements, e.g. data buffers
-
- 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/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/84—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved access time or stability
- G11C29/848—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved access time or stability by adjacent switching
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)
- Computer Security & Cryptography (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Retry When Errors Occur (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
由包含在存储器组件中的处理装置作出将数据编程到所述存储器组件中的某一位置的操作已失败的确定,所述数据由所述处理装置在确定所述操作已失败后编程到所述存储器组件中的不同位置,且由所述处理装置将所述数据已编程到所述存储器组件中的所述不同位置的通知提供到以操作方式耦合到所述存储器组件的处理装置。
Description
技术领域
本公开的实施例大体上涉及存储器子系统,且更确切地说涉及编程操作失败后的数据重定向。
背景技术
存储器子系统可以包含存储数据的一或多个存储器组件。存储器组件可为例如非易失性存储器组件和易失性存储器组件。一般来说,主机系统可以利用存储器子系统在存储器组件处存储数据以及从存储器组件检索数据。
附图说明
根据下文给出的详细描述和本公开的各个实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限于特定实施例,而是仅用于阐释和理解。
图1示出根据本公开的一些实施例的包含存储器子系统的实例计算环境。
图2是根据本公开的一些实施例的用以在编程操作失败后使数据重定向的实例方法的流程图。
图3是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的方面是针对编程操作失败后的数据重定向。存储器子系统可以是存储装置、存储器模块,或存储装置与存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个存储器组件(下文也称为“存储器装置”)的存储器子系统。主机系统可提供待存储在存储器子系统处的数据,且可请求待从存储器子系统检索的数据。
存储器子系统的操作可包含将数据(例如,由主机系统提供的数据)编程到存储器子系统的存储器组件以供存储在存储器组件处。然而,可能在此编程操作之前和/或期间发生若干缺陷和/或错误,这可能致使编程操作失败(例如,致使数据不能被成功地编程到存储器组件),从而可能导致数据丢失。下文中,“编程(Programming/program)”和“编程操作”指代将数据写入到存储器组件(例如,存储器装置)以将数据存储于存储器组件处。
常规存储器子系统可使用例如冗余非相依NAND阵列(RAIN)数据保护和恢复方案和/或弥补性(claw back)(例如,NAND弥补性)数据保护和恢复方案等多种常规数据保护和/或恢复方案防止编程失败所导致的数据丢失。RAIN数据保护和恢复方案可在多个存储器装置之间划分和/或复制正编程到存储器子系统的数据。举例来说,RAIN数据保护和恢复方案可跨存储器装置的条带划分和/或复制数据,且随后使用条带中的数据恢复丢失的数据。弥补性数据保护和恢复方案可涉及从用于编程操作的存储器子系统的高速缓存恢复(例如,弥补)丢失的数据,且将从高速缓存恢复的数据存储在存储器子系统的缓冲器中。
此些常规数据保护和/或恢复方案(例如,RAIN和弥补性方案)可在主机和/或存储器子系统控制器层级处管理和执行。举例来说,在常规RAIN或弥补性方案中,正恢复的数据(例如,在编程操作期间被尝试编程到存储器组件的数据)必须经处理且移动经过存储器子系统的控制器。然而,处理数据且使数据移动经过存储器子系统的控制器可能增加(例如,延长)恢复数据所需的时间量,和/或增加用于恢复数据的存储器子系统资源的量,这可能会不利地影响主机系统和/或存储器子系统的性能。此外,为了使用常规RAIN或弥补性方案恢复数据,存储器子系统控制器可能需要用额外命令中断正由存储器子系统控制器执行和/或运行的其它命令(例如,与其它操作相关联的命令),这可能进一步不利地影响主机系统和/或存储器子系统的性能。此外,常规RAIN方案可具有许多排列,且仅可用于防止某些缺陷或装置操作限制所导致的数据丢失,这可能增加数据不能被恢复的机率。
本公开的方面通过在存储器组件层级处而非在存储器子系统控制器或主机层级处管理和执行来自失败的编程操作的数据(例如,未成功地编程到存储器组件但保持在组件的缓冲器中的数据)的恢复(例如,重定向和/或重编程),来解决以上和其它缺陷。举例来说,本公开的方面不处理正恢复的数据或使正恢复的数据移动经过存储器子系统控制器。实际上,可通过利用本地控制器和存储器组件的缓冲器来恢复数据。
如此,相比于常规方法,本公开的方面可增加主机系统和/或存储器子系统的性能。举例来说,相比于利用常规RAIN或弥补性方案来恢复来自失败的编程操作的数据的常规方法,本公开的方面可缩短恢复此数据所需的时间量,且可在不利用存储器子系统的资源的情况下恢复数据。此外,本公开的方面可在正由存储器子系统控制器执行和/或运行的其它命令不被额外命令中断的情况下恢复数据。此外,本公开的方面可恢复归因于任何类型的编程缺陷或装置操作限制而丢失的数据。
图1示出根据本公开的一些实施例的包含存储器子系统110的实例计算环境100。存储器子系统110可包含例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类装置的组合等介质。
存储器子系统110可为存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多介质控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)和非易失性双列直插式存储器模块(NVDIMM)。
计算环境100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1示出耦合到一个存储器子系统110的主机系统120的一个实例。主机系统120使用存储器子系统110以例如将数据写入到存储器子系统110和从存储器子系统110读取数据。如本文中所使用,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,不具有中间组件),无论有线或无线,包含例如电连接、光学连接、磁连接等连接。
主机系统120可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置,或包含存储器和处理装置的此类计算装置。主机系统120可经由物理主机接口耦合到存储器系统110。物理主机接口的实例包含(但不限于)串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)等。物理主机接口可用于在主机系统120与存储器子系统110之间发射数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120可以进一步利用NVM快速(NVMe)接口来存取存储器组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。
存储器装置可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是(但不限于)随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置的实例(例如,存储器装置130)包含“与非”(NAND)型快闪存储器。存储器组件130中的每一个可包含存储器单元的一或多个阵列,所述存储器单元例如单层级单元(SLC)或多层级单元(MLC)(例如,三层级单元(TLC)或四层级单元(QLC))。在一些实施例中,特定存储器组件可包含存储器单元的SLC部分以及MLC部分、TLC部分或QLC部分。存储器单元中的每一个可存储由主机系统120使用的一或多个数据位。此外,存储器装置130的存储器单元可分组以形成页,所述页可指用于存储数据的存储器组件的单元。对于一些类型的存储器(例如,NAND),页可被分组以形成块。
虽然描述了例如NAND型快闪存储器等非易失性存储器组件,但是存储器装置130可以基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、磁性随机存取存储器(MRAM)、“或非”(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM),以及非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。
存储器子系统控制器115可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据,和其它此类操作。存储器子系统控制器115可包含例如一或多个集成电路和/或离散组件、缓冲存储器或其组合等硬件。控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。
存储器子系统控制器115可包含被配置成执行存储在本地存储器119中的指令的处理器(处理装置)117。在所示出的实例中,存储器子系统控制器115的本地存储器119包含被配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处理存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流和例程。
在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已示出为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可依赖于外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作,且可将所述命令或操作转换为指令或适当命令以实现对存储器装置130的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址和物理地址之间的地址转译。存储器子系统控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收的命令转换成命令指令以存取存储器装置130,以及将与存储器装置相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未示出的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从存储器子系统控制器115接收地址并解码所述地址以存取存储器装置130。
在一些实施例中,存储器装置130包含本地介质控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。
本地介质控制器135包含数据重定向组件114,其可与存储器装置130的缓冲器116一起使用以在编程操作失败后使数据重定向。在一些实施例中,本地介质控制器135包含数据重定向组件113的至少一部分。举例来说,本地介质控制器135可包含处理器(处理装置),其被配置成执行存储在本地存储器中的用于执行本文中所描述的操作的指令。在一些实施例中,数据重定向组件114是主机系统120、应用或操作系统的一部分。
数据重定向组件114和缓冲器116可由存储器装置130使用以将来自失败的编程操作的数据(例如,未成功地编程到存储器装置130中的其既定位置的数据)重定向到存储器装置130中的不同位置,而不必处理数据或移动数据经过存储器子系统控制器115。此外,数据重定向组件114和缓冲器116可由存储器装置130使用以使数据重定向,而不会因额外命令中断正由存储器子系统控制器115在存储器装置130上执行和/或运行的其它命令。下文描述关于数据重定向组件114和缓冲器116的操作的另外细节。
举例来说,存储器子系统110(例如,控制器115)可从主机系统120接收将数据编程(例如,写入)到存储器装置130中的特定位置的命令(例如,写入命令)。举例来说,所述位置可以是存储器装置130中的特定物理位置,例如存储器装置130中的存储器单元的特定物理页或块。
响应于接收到所述命令,存储器子系统控制器115可起始和执行将数据编程到存储器装置130中的位置的操作(例如,写入操作)。举例来说,存储器子系统控制器115可将数据发送到存储器装置130来进行编程(例如,本地介质控制器135可从存储器子系统控制器115接收数据)。待编程的数据还可在编程操作期间存储在缓冲器116中。
然而,在一些例子中,将数据编程到存储器装置130中的位置的操作可能失败。举例来说,数据中的一些或全部可能未能成功地编程到存储器装置130中的位置。编程操作可能例如归因于存储器装置130中的位置处的存储器单元中的缺陷、例如所供应功率、噪声和/或单元损耗等装置操作限制,或存储器装置130中的位置处的耦合存取(例如,字)线的故障以及其它原因而失败。
如果编程操作失败,则数据重定向组件114可确定已发生故障(例如,数据中的一些或全部尚未成功地编程)。举例来说,数据重定向组件114可从存储器子系统控制器115的数据重定向组件113接收编程操作已失败的指示,例如状态指示符和/或旗标。举例来说,在耦合存取线故障的情况下,数据重定向组件113可在起始编程操作之前对可能存在故障的存取线执行扫描(例如,预读取扫描),且将检测到的耦合存取线故障的指示提供到数据重定向组件114。
在确定编程操作已失败后,数据重定向组件114可将数据编程(例如,重定向)到存储器装置130中的不同位置(例如,编程到与编程数据的命令中包含的位置不同的位置)。举例来说,数据重定向组件114可从缓冲器116检索数据,且将检索到的数据编程到不同位置。所述不同位置可以是例如存储器装置130中的不同物理位置,例如存储器装置130中的存储器单元的不同物理页或块。
在一些实例中,可由数据重定向组件114确定数据被编程到的不同位置。数据重定向组件114可在确定编程操作已失败(例如,在运行中)后确定所述不同位置。在此些实例中,在编程操作之前,数据被编程(例如,重定向)到的不同位置将不为存储器子系统控制器115所知。数据重定向组件114可基于例如存储器装置130的当前操作参数和/或存储特性确定所述不同位置。
在一些实例中,数据重定向组件114可从存储器子系统控制器115的数据重定向组件113接收不同位置的指示(例如,到所述不同位置的指针)。举例来说,所述不同位置可以是预定位置,例如存储器装置130中的在起始编程操作之前确定的默认位置。举例来说,不同位置可以是存储器装置130中的备用区域。在此些实例中,数据被编程到的不同位置可在编程操作之前由数据重定向组件113确定(例如,设定),且因此是已知的。还可在存储器子系统110的操作期间由数据重定向组件113改变(例如,更新)此位置。
数据被编程到的不同位置的大小可对应于缓冲器116的大小(例如,可由所述缓冲器存储的数据量),使得所述不同位置具有缓冲器中的数据将重定向到的足够的空间。此大小可取决于存储器装置130的页大小、每存储器单元的位数目,和/或平面的数目。作为实例,缓冲器116的大小可以是16千字节(kB)乘3页乘4平面。然而,本公开的实施例不限于此实例,且缓冲器的大小可取决于存储器装置130的类型(例如,NAND型)。举例来说,所述大小可以是4、8或16kB乘3页(例如,对于TLC)或4页(例如,对于QLC)乘1到4平面。
如此,数据可编程(例如,重定向)到存储器装置130中的不同位置,而不必往回移动或处理数据经过存储器子系统控制器115。举例来说,可在不使用RAIN或弥补性方案的情况下将数据编程到不同位置。此外,数据可编程到存储器装置130中的不同位置,而与正由存储器子系统控制器115执行的其它操作相关联的命令,例如已经从主机系统120接收且在编程操作已起始之后开始由存储器子系统115执行的新命令,不会因额外命令中断。举例来说,与其它操作相关联的命令可能被中断以指向存储器装置130中的新位置(例如,因此数据正被编程到存储器装置130中的不同位置),但所述命令原本不必在它们之前存在新命令。此外,数据重定向组件114可将尝试将数据编程到失败的编程操作的位置的后续操作自动地重定向到存储器装置130中的不同位置。举例来说,在接收到将额外数据编程到失败的编程操作的位置的后续命令后,数据重定向组件114可改为将所述额外数据编程到存储器装置130中的不同位置。
在将数据编程(例如,重定向)到存储器装置130中的不同位置后,数据重定向组件114可向存储器子系统控制器115的数据重定向组件113提供指示数据已编程到不同位置的通知。数据重定向组件113可响应于接收到所述通知而处理数据已编程到存储器装置130中的不同位置。举例来说,数据重定向组件113可更新存储器子系统控制器115的设定和/或参数以反映数据已编程到不同位置。相应地,当执行后续操作以感测(例如,读取)数据时,存储器子系统控制器115可从存储器装置130中的不同位置感测(例如,知晓感测)所述数据,而非从来自主机系统120的编程命令中包含的其最初既定位置进行感测。
在一些实例中,所述通知可包含数据被编程到的不同位置的指示(例如,到所述不同位置的指针)。举例来说,所述通知可在其中由数据重定向组件114确定所述不同位置的实例中包含此指示(例如,因为在编程操作之前,所述不同位置将不为存储器子系统控制器115所知)。
在一些实例中,所述通知将不需要包含数据被编程到的不同位置的指示。举例来说,所述通知将在其中由存储器子系统控制器115的数据重定向组件113确定(例如,设定)不同位置的实例中不需要包含此指示(例如,因为所述不同位置将已经为存储器子系统控制器115所知)。
在数据已编程到存储器装置130中的不同位置且数据被编程到不同位置的通知已提供到数据重定向组件113之后,可由存储器子系统控制器115起始将数据编程到存储器装置130的后续操作。举例来说,存储器子系统控制器115可起始后续(例如,下一)编程操作以执行从主机系统120接收的另一(例如,下一)编程命令。
在一些实例中,在起始后续编程操作后,来自先前编程操作的数据(例如,先前重定向到存储器装置130中的不同位置的数据)可从缓冲器116擦除,且待通过后续编程操作编程到存储器装置130的新数据可存储在缓冲器116中。在此实例中,缓冲器116可处于第一遍次编程模式,其中来自编程操作的数据存储(例如,存在)于缓冲器中直至下一编程操作,此时,缓冲器经擦除使得缓冲器可被重复使用以用于下一编程操作。
在一些实例中,来自先前编程操作的数据的一部分,例如来自先前编程操作的数据的至少一页,可在后续编程操作期间继续存储在缓冲器116中(例如,可不从缓冲器116擦除)。在此实例中,缓冲器116可处于第二遍次编程模式中,其中来自先前编程操作(例如,第一遍次编程操作)的数据的部分(例如,页)还用于下一(例如,第二遍次)编程操作。作为额外实例,缓冲器116可处于第三遍次编程模式,其中来自第二遍次编程操作的数据的一部分还用于第三遍次编程操作,例如针对QLC装置。
如果后续编程操作失败,则数据重定向组件114可确定已发生故障,将数据编程(例如,重定向)到存储器装置130中的不同位置,且将数据已编程到不同位置的通知提供到数据重定向组件113,如本文中先前所描述。数据重定向组件114可在存储器子系统110的后续操作期间(例如,在存储器子系统110的整个使用寿命内)继续以此方式重定向来自失败的编程操作的数据。
图2是根据本公开的一些实施例的用以在编程操作失败后使数据重定向的实例方法230的流程图。方法230可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,处理装置上运行或执行的指令),或其组合。在一些实施例中,方法230由图1的存储器装置130的数据重定向组件114执行。虽然以特定序列或次序展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明的实施例仅为实例,且所说明的过程可以不同次序执行,且一些过程可并行地执行。另外,可以在各种实施例中省略一或多个过程。因此,并非在每个实施例中需要所有的过程。其它过程流程是可能的。
在操作232处,存储器子系统的存储器组件确定将数据编程到存储器组件中的某一位置的操作已失败。存储器组件和存储器子系统可例如分别为图1的存储器装置130和存储器子系统110。存储器组件中的位置可以是存储器组件中的物理位置,如先前结合图1描述。存储器组件可通过(例如)从存储器子系统的控制器(例如,控制器115)接收失败的指示而确定编程操作已失败,如先前结合图1描述。
在操作234处,存储器组件在确定编程操作已失败后将数据编程到存储器组件中的不同位置。存储器组件中的不同位置可以是存储器组件中的不同物理位置,并且可由存储器组件或存储器子系统的控制器确定,如先前结合图1描述。存储器组件可通过(例如)从存储器组件的缓冲器(例如,缓冲器116)检索数据而将数据编程到不同位置,如先前结合图1描述。此外,存储器组件可将数据编程到所述不同位置,而不移动或处理数据经过存储器子系统的控制器,且与正由存储器子系统的控制器执行的其它操作相关联的命令不会因额外命令而中断,如先前结合图1描述。
在操作236处,存储器组件在将数据编程到存储器组件中的不同位置后向以操作方式耦合到存储器组件的处理装置提供通知。处理装置可以是例如图1的存储器子系统控制器115。在一些实例中,所述通知可包含数据被编程到的存储器组件中的不同位置的指示,如先前结合图1描述。
图3示出计算机系统300的实例机器,所述实例机器内可执行用于致使所述机器执行本文中所论述的方法中的任何一或多种的指令集。在一些实施例中,计算机系统300可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,以执行操作系统来执行对应于图1的数据重定向组件114的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础架构或环境中的服务器或客户端机器在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。
所述机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(循序或以其它方式)指定待由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述机器个别地或联合地执行指令的集合(或多个集合)以执行本文中所论述的方法中的任何一或多种。
实例计算机系统300包含处理装置302、主存储器304(例如,只读存储器(ROM)、快闪存储器、例如同步DRAM(SDRAM)或RDRAM等动态随机存取存储器(DRAM))、静态存储器306(例如,快闪存储器、静态随机存取存储器(SRAM)等),以及数据存储系统318,其经由总线330彼此通信。
处理装置302表示一或多个通用处理装置,例如微处理器、中央处理单元等。更确切地说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置302也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置302被配置成执行用于执行本文中所论述的操作和步骤的指令326。计算机系统300可进一步包含网络接口装置308以经由网络320通信。
数据存储系统318可以包含机器可读存储介质324(也称为计算机可读介质),其上存储有一或多个指令集326或体现本文中所描述的任何一或多种方法或功能的软件。指令326还可在其由计算机系统300执行期间完全或至少部分地驻留在主存储器304内和/或处理装置302内,主存储器304和处理装置302也构成机器可读存储介质。机器可读存储介质324、数据存储系统318,及/或主存储器304可对应于图1的存储器子系统110。
在一个实施例中,指令326包含实施对应于数据重定向组件314(例如,图1的数据重定向组件114)的功能性的指令。虽然机器可读存储介质324在实例实施例中展示为单个介质,但术语“机器可读存储介质”应被认为包含存储所述一或多个指令集的单个介质或多个介质。术语“机器可读存储介质”还应被认为包含能够存储或编码供机器执行的指令集且致使机器执行本公开的方法中的任何一种或多种的任何介质。术语“机器可读存储介质”应相应地被理解为包含(但不限于)固态存储器、光学介质和磁性介质。
如本文中所使用,“一”或“若干”可以指某事物中的一或多个,且“多个”可以指此类事物中的一个以上。举例来说,存储器装置可以指一或多个存储器装置,且多个存储器装置可以两指个或更多个存储器装置。
本文中的图式遵循编号惯例,其中前一或多个数字对应于图号,且其余数字标识图中的元件或组件。可通过使用类似数字来标识不同图式之间的类似的元件或组件。举例来说,114可表示图1中的元件“14”,且类似元件在图3中可表示为314。
已依据计算机存储器内的数据位的操作的算法和符号表示呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法在这里并且通常被认为是引起所要结果的操作的自洽序列。操作为要求对物理量进行物理操纵的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。主要出于常见使用的原因,有时将此些信号称为位、值、要素、符号、字符、项、数字等已证实是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅是应用于这些量的方便的标签。本公开可涉及将计算机系统的寄存器和存储器内的表示为物理(电子)量的数据操纵和变换为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可以出于既定目的而专门构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储在计算机可读存储介质中,例如(但不限于)任何类型的盘(包含软盘、光盘、CD-ROM和磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的介质,它们各自耦合到计算机系统总线。
本文中呈现的算法和显示并不与任何特定计算机或其它设备在本质上相关。各种通用系统可根据本文中的教示与程序一起使用,或可证明构造更专用的设备来执行所述方法是方便的。将如下文描述中所阐述的那样来呈现多种这些系统的结构。另外,不参考任何特定编程语言来描述本公开。应了解,可使用多种编程语言来实施本文中所描述的本公开的教示。
本公开可以提供为计算机程序产品或软件,其可以包含在其上存储有指令的机器可读介质,所述指令可以用于编程计算机系统(或其它电子装置)以执行根据本公开的过程。机器可读介质包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)介质包含机器(例如,计算机)可读存储介质,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光学存储介质、快闪存储器组件等。
在前述说明书中,已参考本公开的特定实例实施例描述了本公开的实施例。将显而易见的是,可以在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开作出各种修改。因此,说明书和图式应在说明性意义上而非限制性意义上看待。
Claims (17)
1.一种系统,其包括:
存储器组件;以及
处理装置,其包含在所述存储器组件中,用以:
确定将数据编程到所述存储器组件中的某一位置的操作已失败;以及
在确定所述操作已失败后将所述数据编程到所述存储器组件中的不同位置,而不必经由以操作方式耦合到所述存储器组件的处理装置来移动所述数据。
2.根据权利要求1所述的系统,其中:
所述处理装置进一步用以接收待编程到所述存储器组件中的所述位置的所述数据;以及
所述存储器组件包括缓冲器以存储待编程到所述存储器组件中的所述位置的所述数据。
3.根据权利要求1所述的系统,其中所述处理装置用以基于从以操作方式耦合到所述存储器组件的所述处理装置接收的指示而确定将所述数据编程到所述存储器中的所述位置的所述操作已失败。
4.根据权利要求3所述的系统,其中所述指示包括在所述存储器组件中的所述位置处的经耦合的存取线已失败的指示。
5.根据权利要求3所述的系统,其中所述指示包括状态指示符。
6.根据权利要求3所述的系统,其中所述指示包括旗标。
7.根据权利要求1所述的系统,其中所述处理装置用以将所述数据编程到所述存储器组件中的所述不同位置,而不必中断由以操作方式耦合到所述存储器组件的所述处理装置执行的任何命令。
8.一种方法,其包括:
由存储器子系统的存储器组件确定将数据编程到所述存储器组件中的某一位置的操作已失败;以及
由所述存储器组件在确定所述操作已失败后将所述数据编程到所述存储器组件中的不同位置,其中将所述数据编程到所述存储器组件中的所述不同位置包括将所述数据重定向到所述存储器组件中的所述不同位置。
9.根据权利要求8所述的方法,其中将所述数据编程到所述存储器组件中的所述不同位置包括由所述存储器组件从缓冲器检索所述数据。
10.根据权利要求9所述的方法,其中所述缓冲器包括在所述存储器组件中。
11.根据权利要求8所述的方法,其中所述方法进一步包括在确定所述操作已失败后,由所述存储器组件确定所述数据将被编程到的所述存储器组件中的所述不同位置。
12.根据权利要求8所述的方法,其中所述数据被编程到的所述存储器组件中的所述不同位置为所处存储器组件中的备用区域。
13.一种包括指令的非暂时性计算机可读存储介质,所述指令在由处理装置执行时致使所述处理装置:
接收待编程到存储器子系统的存储器组件中的某一位置的数据,其中所述存储器组件中的所述位置为第一物理位置;
确定将所述数据编程到所述存储器组件中的所述位置的操作已失败;以及
将所述数据编程到所述存储器组件中的不同位置,其中所述存储器组件中的所述不同位置为不同于所述第一物理位置的第二物理位置。
14.根据权利要求13所述的非暂时性计算机可读存储介质,其中所述处理装置进一步用以将所述数据已编程到所述存储器组件中的所述不同位置的通知提供到以操作方式耦合到所述存储器组件的处理装置。
15.根据权利要求13所述的非暂时性计算机可读存储介质,其中所述处理装置进一步用以将所述数据被编程到的所述存储器组件中的所述不同位置的指示提供到以操作方式耦合到所述存储器组件的处理装置。
16.根据权利要求13所述的非暂时性计算机可读存储介质,其中所述处理装置进一步用以基于所述存储器子系统的当前操作参数而确定所述数据将被编程到的所述存储器组件中的所述不同位置。
17.根据权利要求13所述的非暂时性计算机可读存储介质,其中所述处理装置进一步用以基于所述存储器子系统的存储特性而确定所述数据将被编程到的所述存储器组件中的所述不同位置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/553,555 US10854311B1 (en) | 2019-08-28 | 2019-08-28 | Data redirection upon failure of a program operation |
US16/553,555 | 2019-08-28 | ||
PCT/US2020/047769 WO2021041394A1 (en) | 2019-08-28 | 2020-08-25 | Data redirection upon failure of a program operation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114341791A CN114341791A (zh) | 2022-04-12 |
CN114341791B true CN114341791B (zh) | 2023-03-31 |
Family
ID=73554728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080059604.7A Active CN114341791B (zh) | 2019-08-28 | 2020-08-25 | 编程操作失败后的数据重定向 |
Country Status (3)
Country | Link |
---|---|
US (3) | US10854311B1 (zh) |
CN (1) | CN114341791B (zh) |
WO (1) | WO2021041394A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10854311B1 (en) * | 2019-08-28 | 2020-12-01 | Micron Technology, Inc. | Data redirection upon failure of a program operation |
US10977139B1 (en) * | 2019-10-14 | 2021-04-13 | Micron Technology, Inc. | Detailed failure notifications in memory sub-systems |
US11803444B1 (en) * | 2022-06-15 | 2023-10-31 | Micron Technology, Inc. | Cooperative memory subsystem data recovery |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9710226B1 (en) * | 2013-07-16 | 2017-07-18 | Rambus Inc. | Unsuccessful write retry buffer |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7139864B2 (en) * | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
KR100666170B1 (ko) * | 2005-01-17 | 2007-01-09 | 삼성전자주식회사 | 결함 페이지 버퍼로부터의 데이터 전송이 차단되는와이어드 오어 구조의 불휘발성 반도체 메모리 장치 |
US8074011B2 (en) * | 2006-12-06 | 2011-12-06 | Fusion-Io, Inc. | Apparatus, system, and method for storage space recovery after reaching a read count limit |
US8694714B2 (en) * | 2008-01-18 | 2014-04-08 | Spansion Llc | Retargeting of a write operation retry in the event of a write operation failure |
US9933950B2 (en) * | 2015-01-16 | 2018-04-03 | Sandisk Technologies Llc | Storage operation interrupt |
KR102417976B1 (ko) * | 2015-10-21 | 2022-07-07 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
US20170123991A1 (en) * | 2015-10-28 | 2017-05-04 | Sandisk Technologies Inc. | System and method for utilization of a data buffer in a storage device |
US10452468B2 (en) * | 2016-12-30 | 2019-10-22 | Western Digital Technologies, Inc. | Method and system for managing non-volatile memory |
US10854311B1 (en) * | 2019-08-28 | 2020-12-01 | Micron Technology, Inc. | Data redirection upon failure of a program operation |
-
2019
- 2019-08-28 US US16/553,555 patent/US10854311B1/en active Active
-
2020
- 2020-08-25 CN CN202080059604.7A patent/CN114341791B/zh active Active
- 2020-08-25 WO PCT/US2020/047769 patent/WO2021041394A1/en active Application Filing
- 2020-11-06 US US17/091,252 patent/US11158396B2/en active Active
-
2021
- 2021-10-19 US US17/504,778 patent/US11705216B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9710226B1 (en) * | 2013-07-16 | 2017-07-18 | Rambus Inc. | Unsuccessful write retry buffer |
Also Published As
Publication number | Publication date |
---|---|
US20220036963A1 (en) | 2022-02-03 |
US11705216B2 (en) | 2023-07-18 |
CN114341791A (zh) | 2022-04-12 |
US20210065840A1 (en) | 2021-03-04 |
WO2021041394A1 (en) | 2021-03-04 |
US11158396B2 (en) | 2021-10-26 |
US10854311B1 (en) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11749373B2 (en) | Bad block management for memory sub-systems | |
US11705216B2 (en) | Data redirection upon failure of a program operation | |
CN113168875A (zh) | 读取干扰扫描合并 | |
US11681613B2 (en) | Unretiring memory device blocks | |
CN112543908B (zh) | 写入缓冲器管理 | |
US20200219573A1 (en) | Using a status indicator in a memory sub-system to detect an event | |
US20200159447A1 (en) | Read retry with targeted auto read calibrate | |
US11688475B2 (en) | Performing read operation prior to two-pass programming of storage system | |
US20210389910A1 (en) | Managing a memory system including memory devices with different characteristics | |
US20210342236A1 (en) | Data recovery within a memory sub-system | |
CN111712803A (zh) | 在存储器系统处存储关键数据 | |
US11748008B2 (en) | Changing of memory components to be used for a stripe based on an endurance condition | |
US11221912B2 (en) | Mitigating an undetectable error when retrieving critical data during error handling |
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 |