CN111667868A - 通过平衡格雷编码的多阶段编程 - Google Patents
通过平衡格雷编码的多阶段编程 Download PDFInfo
- Publication number
- CN111667868A CN111667868A CN201911272824.3A CN201911272824A CN111667868A CN 111667868 A CN111667868 A CN 111667868A CN 201911272824 A CN201911272824 A CN 201911272824A CN 111667868 A CN111667868 A CN 111667868A
- Authority
- CN
- China
- Prior art keywords
- data
- level cell
- cell pattern
- programming
- phase
- 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.)
- Granted
Links
Images
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/10—Programming or data input circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- 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
- 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/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1045—Read-write mode select 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
- 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/26—Sensing or reading circuits; Data output circuits
-
- 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
- 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/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
本发明题为“通过平衡格雷编码的多阶段编程”。公开了用于提供通过平衡格雷编码的多阶段编程的系统和方法。一种方法包括在第一阶段中以第一级单元模式将数据的第一部分编程到闪存存储器的存储器单元中。该方法还包括在高速缓存中保留数据的至少一个子集。该方法还包括至少从高速缓存重新生成数据,其中重新生成的数据包括数据的第二部分。该方法还包括在第二阶段中基于从第一级单元模式到第二级单元模式的映射以第二级单元模式对重新生成的数据进行编程。该映射将第一级单元模式中的每个状态分布映射到第二级单元模式中的至少两个非相邻状态分布,并且该第一级单元模式中的每个状态分布的宽度可以变窄。
Description
背景技术
对高容量存储设备的不断增长的需求已经催生了使用多级与非(NAND)闪存存储器单元,其包括多级单元(MLC,每个单元2位)、三级单元(TLC,每个单元3位)、四级单元(QLC,每个单元4位)和更高容量。随着存储器单元中存储的位数增加,可靠数据编程所需的精确级别也随之变得更严格。用于对多级单元进行精确编程的现有方法可能需要附加的硬件资源,这增加存储设备的复杂性和成本并且同时减小用于其他生产用途的可用空间。因此,需要一种对多级单元进行编程的更高效方法。
背景技术部分中提供的描述不应仅因为它在背景技术部分中被提及或与背景技术部分相关联而被认为是现有技术。背景技术部分可包括描述主题技术的一个或多个方面的信息,并且该部分中的描述不限制本发明。
附图说明
将参考附图进行详细描述:
图1A示出了用于以模糊-精细模式对QLC存储器单元进行编程的示例性系统。
图1B示出了在模糊阶段和精细阶段中进行编程之后的QLC存储器单元的示例性程序分布。
图1C示出了用于以模糊-精细模式对QLC存储器单元进行编程的示例性平衡格雷编码。
图1D和图1E示出了在使用图1F的不平衡2级格雷嵌套的以MLC模式的第一编程阶段以及以QLC模式的第二编程阶段之后的程序分布的示例。
图1F示出了用于多阶段编程的示例性不平衡2级格雷嵌套。
图2A示出了用于QLC存储器单元的多阶段编程的示例性系统。
图2B示出了用于模糊-精细模式编程或多阶段编程的示例性交错字线编程进行过程。
图3A和图3B示出了在使用图3C的2级格雷嵌套的以MLC模式的第一编程阶段以及以QLC模式的第二编程阶段之后的程序分布的示例。
图3C示出了用于多阶段编程的示例性2级格雷嵌套。
图4是示出用于使用平衡格雷编码的多阶段编程的示例性过程的流程图。
图5是示出示例性数据存储系统的部件的框图。
具体实施方式
下面阐述的详细描述旨在作为本主题技术的各种配置的描述,而不旨在表示可实践本主题技术的唯一配置。附图结合到本文中并构成详细描述的一部分。详细描述包括具体细节,其目的是提供对本主题技术的透彻理解。然而,可以在没有这些具体细节的情况下实践本主题技术。在一些情况下,结构和部件以框图的形式示出,以便避免模糊本主题技术的概念。为了便于理解,相同的元件标有相同的元件符号。
本描述整体涉及数据存储系统和方法,并且更具体地讲,涉及例如但不限于提供使用平衡格雷码的多阶段编程。由于硬件限制和物理限制以及其他因素,因此存储器单元通常被编程为有限电压范围,诸如约6.2V。对于每个单元具有许多位的多级单元,对应的许多分布需要被编程。例如,当包括擦除状态时,QLC存储器单元被编程为对应于24个可能状态的16个分布以用于在有限电压范围(诸如6.2V)内存储4位数据。在单轮编程中精确地对这些分布进行编程可能不是可行的。
用于为多级单元提供所需编程精度的一种方法是使用模糊-精细编程方法。例如,当对QLC存储器单元进行编程时,第一模糊阶段可以将每个存储器单元的4位数据粗略编程为低于目标电压的宽重叠分布,然而第二精细阶段可以对每个存储器单元的相同4位数据进行精确编程以扩展为包含目标电压的较窄分布。
图1A示出了用于以模糊-精细模式对QLC存储器单元进行编程的示例性系统100。系统100包括控制器101和闪存存储器103。控制器101包括编码器122、高速缓存124和解码器126。闪存存储器103包括存储器阵列108和写入缓冲器130。相对于图1A和图5,相似编号的元件可以对应于相似部件。例如,控制器101可以对应于控制器501,闪存存储器103可以对应于闪存存储器503,并且存储器阵列108可以对应于NAND阵列508。为了简单起见,从图1A的系统100中省略的图5的元件可以是实际存在的,诸如存储介质502、主机504、接口505、寄存器506和控制器507。另外,虽然图1A被示为以存储器阵列108作为QLC存储器单元,但应当理解,所描述的技术是一般原理,其也可以适用于各种级别的存储器单元。
在步骤1中,控制器101可以接收通过编码器122处理的用于写入操作的主机数据。例如,解码器126和编码器122可以利用低密度奇偶校验码(LDPC)来提供错误校正支持。然后,将已编码的主机数据写入到写入缓冲器130中,该写入缓冲器可以被配置为先进先出(FIFO)队列。写入缓冲器130优选地可以是SLC存储器单元以利用其高写入耐久性,但也可以利用更高级别的存储器单元。使用非易失性存储器(例如,SLC闪存存储器)作为写入缓冲器130可以提供针对电源故障的回弹性以维持数据完整性,并且与易失性随机存取存储器相比还可以更具成本效益和功率效益。尽管提供闪存存储器作为非易失性存储器的一个示例,但也可以使用其他基于非闪存的技术,其可以包括正在发展和新兴的技术。在本主题技术的其他方面中,写入缓冲器130可以使用包括数据锁存器、寄存器、RAM、或其他硬件的易失性存储器。
应注意,写入缓冲器130被示为具有4个块的堆叠。块的数量可以对应于存储器页面的数量,或者存储器阵列108中的每个存储器单元的位数。例如,当存储器阵列108对应于QLC存储器单元即每个存储器单元4位时,则写入缓冲器130可以包括4个块,或者对于要被编程的每个存储器页面包括一个闪存存储器块。
在步骤2中,控制器101读回写入缓冲器130,并且使用解码器126来应用错误校正算法以便在读取写入缓冲器130时校正任何错误。高速缓存124可以对应于动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM),并且可以保持解码器126和编码器122之间的中间数据结果。高速缓存124可以包括缓冲器(诸如页面缓冲器)。高速缓存124可以是非易失性存储器。控制器101进而对来自高速缓存124的已解码数据进行编码以准备用于编程的数据。
应注意,尽管写入缓冲器130被示为闪存存储器103的一部分,其可被控制器101直接访问,但应当理解,写入缓冲器130也可从其他位置访问。例如,参考图5,写入缓冲器130可以存储在控制器501的外部,诸如存储在存储介质502中。因此,存储介质502可以包括写入缓冲器130,其可以包括基于闪存或非闪存的非易失性存储器、SRAM、DRAM、磁性RAM(MRAM)或相变存储器(PCM)。控制器501和存储介质502之间的数据转移可以通过数据总线串行化或使用另一种传输方法。
在步骤3中,控制器101在第一模糊阶段中将已解码和编码的数据编程到存储器阵列108中。参考图1B,示出了QLC存储器单元的示例性程序分布140A,其可以对应于在第一模糊阶段中进行编程之后的存储器阵列108。如图1B所示,分布140A中的状态被编程为相对较宽,或具有较低的精度,以使得模糊阶段与精细阶段相比能够在相对较短的时间内完成编程。然而,因此,编程到存储器阵列108中的数据无法被读回,因为分布140A中的状态可能与其他状态重叠太多而无法使用错误校正来区分。此外,读取干扰效应和其他因素也可能阻碍从存储器阵列108读取已编程数据。因此,可以替代地使用写入缓冲器130来存储用于写入操作的数据。
在步骤4中,再次读取写入缓冲器130中的用于写入操作的数据并通过解码器126、高速缓存124和编码器122处理该数据以准备第二精细阶段的编程。因此,如上所述,步骤4可以类似于步骤2的方式进行。
在步骤5中,控制器101在第二精细阶段中将已解码和编码的数据编程到存储器阵列108中。参考图1B,示出了QLC存储器单元的示例性程序分布140B,其可以对应于在第二精细阶段中进行编程之后的存储器阵列108。如图1B所示,分布140B中的状态以更高的精度被编程为其最终目标电压,这与模糊阶段相比在相对较长的时间内完成。根据图1C的映射150,第二精细阶段可以从模糊阶段编程为精细阶段,该映射可以对应于格雷码。格雷码是其中相邻代码的区别仅为一位的编码,这实现更有效的错误校正。例如,在映射150中,状态S0的代码为“1111”,而右侧相邻代码S1的代码为“1110”,并且左侧相邻代码S15为“1011”。代码S1和S15各自与代码S0的区别正好为一位,即分别为第四位和第二位。
另外,映射150可以是平衡的格雷码,其实现更快的读取操作。在映射150中,顶页(TP)的转变计数为4,上页(UP)的转变计数为3,中页(MP)的转变计数为4,并且下页(LP)的转变计数为4。在一个或多个示例中,当存储器页面的任何两个页面的转变计数之间的差不超过预定转变计数差时,可以满足平衡格雷码。预定转变计数差可以是一(1)。
当检查映射150的4-3-4-4格雷码时,可以计算从TP、UP、MP和LP中选择的任何两个页面的转变计数之间的差。这可包括计算以下存储器页面对中的每一个的差:(1)TP和UP、(2)TP和MP、(3)TP和LP、(4)UP和MP、(5)UP和LP、以及(6)MP和LP。当格雷码被配置为使得这些差中的每一个不超过预定转变计数差(例如,1)时,则格雷码是平衡格雷码。
例如,TP和UP的转变计数之间的差为1。TP和MP的转变计数之间的差为0。TP和LP的转变计数之间的差为0。UP和MP的转变计数之间的差为1。UP和LP的转变计数之间的差为1。MP和LP的转变计数之间的差为0。因此,对于存储器页面的所有存储器页面配对,转变计数之间的差不超过1,并且4-3-4-4格雷码因此是平衡的。
在一个或多个示例中,当存储器页面中的每两个相邻页面之间的转变计数之间的差不超过预定转变计数差时,可以满足平衡格雷码。预定转变计数差可以是一(1)。例如,当检查映射150的4-3-4-4格雷码时,可以计算每两个相邻页面的转变计数之间的差,诸如(1)顶页(TP)和上页(UP),(2)上页(UP)和中页(MP),(3)中页(MP)和下页(LP),以及(4)下页(LP)和顶页(TP)。在该示例中,LP和TP是环绕对,并且因此它们被视为两个相邻页面。当格雷码被配置为使得这些差中的每一个不超过预定转变计数差(例如,1)时,则格雷码是平衡格雷码。
例如,TP和UP的转变计数之间的差为1。UP和MP的转变计数之间的差为0。MP和LP的转变计数之间的差为0。LP和TP的转变计数之间的差为1。因此,对于存储器页面的每两个相邻配对,转变计数之间的差不超过1,并且4-3-4-4格雷码因此是平衡的。因此,映射150的4-3-4-4格雷码是平衡格雷码。
平衡格雷码实现更快的读取操作,因为针对每个存储器页面的要区分的转变的最大数量被最小化。例如,当使用4-3-4-4平衡格雷码时,读取操作可以针对每个存储器页面区分最多四(4)个转变。因此,读取操作不会在具有相对于其他存储器页面显著更高数量的转变的任何特定存储器页面上成为瓶颈。
在图1A的系统100中示出的方法的一个缺点是与写入缓冲器130相关联的附加成本、复杂性和性能惩罚。由于写入缓冲器130的I/O工作负载包括显著写入活动,因此具有高耐久性的闪存存储器(诸如SLC闪存存储器)对于写入缓冲器130而言是优选的。然而,由于SLC提供较低的存储密度并且因此与使用多级存储器单元的相同容量相比制造成本更高,因此使用SLC增加总体成本并且减小闪存存储器103中的用于其他生产用途的可用物理空间。例如,如果省略写入缓冲器130,则可以扩展存储器阵列108以容纳更多的用户数据和/或预留空间。因此,使用系统100的模糊-精细编程方法的存储设备的容量、耐久性、性能和成本效率可能受到限制。
代替使用模糊-精细编程方法,可以使用多阶段编程方法,如图1D、图1E和图1F所示。参考图1D,示出了示例性程序分布160,其可以对应于在第一阶段内以MLC模式编程之后的存储器阵列108的电压分布。如分布160所示,对应于擦除状态(ER,映射到“11”)、第一状态(AA,映射到“10”)、第二状态(BB,映射到“00”)和第三状态(CC,映射到“01”)的四个分布被编程为0到Max1伏特的电压范围。如分布160所示,MLC模式使用1-2格雷码,其中上页(UP)具有一个转变(在AA状态和BB状态之间),并且下页(LP)具有两个转变(第一转变在ER状态和AA状态之间,并且第二转变在BB状态和CC状态之间)。与在模糊阶段中进行编程之后的分布140A不同,在以MLC模式进行编程之后的分布160仍可读取,并且因此分布160中编程的数据不一定需要存储在写入缓冲器中以完成剩余的编程阶段。
如图1D所示,分布160中的状态被编程为相对较宽,其中在第二阶段内以QLC模式编程之后,程序分布160中的每个MLC状态宽度约为映射的QLC状态的组合宽度,如图1E中的程序分布170所示。例如,根据图1F中的映射180,MLC AA(S1)状态映射到D(S4)、E(S5)、F(S6)和G(S7)QLC状态。因此,MLC AA(S1)的MLC状态宽度是约四个QLC状态的组合宽度。为了更高的可靠性(例如,状态之间的更大安全裕度)和/或更快的编程时间,更宽的状态宽度可能是优选的。
然而,当分布160中的MLC状态宽度相对较宽并且已经占据最终电压范围V=Max2的大部分时,图1F中的映射180的可能排列可以被对应地限制。例如,可行映射可能限于MLC状态到连续QLC状态的简单映射。在这种情况下,可能难以在QLC模式下为第二阶段保持平衡格雷码。因此,在分布170和映射180中使用1-2-6-6不平衡格雷码。然而,由于某些存储器页面(诸如映射180中具有六(6)个转变的中页(MP)和下页(LP))具有较大的转变计数,因此不平衡格雷码不期望地导致更长的读取时间和更高的错误率。
提供了用于通过平衡格雷编码的多阶段编程的方法和系统的一种或多种实施方式。在这种方法中,每个编程阶段可以对状态进行编程和扩展以在每个阶段中维持平衡格雷码。这也可以被称为N级格雷嵌套,其中N是编程阶段的数量。通过使用将第一阶段中的每个程序状态映射到后续第二阶段中的至少两个非相邻程序状态的映射,可以提供代码值的扩展以便有助于为每个编程阶段选择平衡格雷码。另外,为了提供用于扩展的足够电压范围,第一阶段中的状态宽度可以小于后续第二阶段中的对应映射状态的组合宽度。由于每个阶段中的编程数据可以是可读的,因此使用所描述的通过平衡格雷编码的多阶段编程,可以对应地减小或消除写入缓冲器以改善存储设备的效率、成本和性能。
在用于对QLC存储器单元进行编程的示例中,第一阶段使用平衡格雷编码以MLC模式对存储器单元进行编程。第一阶段中的目标编程分布可以被配置为使得第一阶段中的状态宽度是第二阶段中的对应映射状态的组合宽度的约一半,或约2个QLC状态宽(即,4个映射QLC状态的一半)。另选地,状态宽度可以是对应映射状态的约50%至75%,或约2-3个QLC状态宽。由于存储器单元在第一阶段之后是可读取的,因此第二阶段可以直接从存储器单元读取已编程数据,以便准备以QLC模式对存储器单元进行编程。取决于高速缓存的程序数据的可用性,可以省略一些或全部的写入缓冲器,这有助于简化存储设备的设计并释放设备空间以用于其他生产用途(诸如存储用户数据或预留空间)。
本主题技术的一个或多个实施方式提供了若干性能有益效果,其改善了计算机的功能。如上所述,模糊-精细编程方法要求在设备上保留写入缓冲器,这继而减小可用于其他生产目的的空间。由于所描述的多阶段编程规程可以直接从已编程的存储器单元中读回数据,因此可以部分或完全省略写入缓冲器,由此回收设备空间以用于用户数据、预留空间或其他目的。适合于写入缓冲器的高耐久性的非易失性存储器(诸如SLC存储器单元)可能是昂贵的,并且因此写入缓冲器的部分或全部省略可以帮助改善存储设备的成本效益。另外,通过将所回收的设备空间用于用户数据、预留空间或其他目的,可以改善存储设备的各种性能度量,诸如写入耐久性、读取/写入带宽、读取/写入延迟和/或存储容量。继而,耦接到存储设备的主机计算机也从存储设备的改善性能中受益。
图2A示出了用于QLC存储器单元的多阶段编程的示例性系统200。系统200包括控制器201和闪存存储器203。控制器201包括编码器222、高速缓存224和解码器226。闪存存储器203包括存储器阵列208和写入缓冲器230。相对于图1A、图2A和图5,相似编号的元件可以对应于相似部件。例如,控制器201可以对应于控制器101,闪存存储器203可以对应于闪存存储器103,存储器阵列208可以对应于存储器阵列108,编码器222可以对应于编码器122,高速缓存224可以对应于高速缓存124,解码器226可以对应于解码器126,并且写入缓冲器230可以对应于写入缓冲器130。
此外,尽管图2A以及图3A、图3B和3C所示的示例演示了从MLC到QLC的2级嵌套格雷码,但应当理解,所描述的技术通常适用于每个单元具有不同位数的多级存储器单元的多阶段编程。因此,本技术的一个或多个方面可以利用具有任何数量的状态的存储器单元。例如,从SLC到QLC的2级嵌套格雷码或其他变体是可能的。
在步骤1中,控制器201可以接收用于写入操作的主机数据的第一部分。该第一部分可以通过编码器222来处理。第一部分可以对应于主机数据中的每个4位半字节中的2位,并且可以被任意地选择,例如,从2个最高有效位或2个最低有效位。然后可以在对应于MLC模式的第一阶段或2位编程模式中将已编码的第一部分编程到存储器阵列208中。
参考图3A,示出了示例性程序分布310,其可以对应于在步骤1中对第一阶段进行编程之后的存储器阵列108的电压分布。如分布310所示,对应于擦除状态(ER,映射到“11”)、第一状态(AA,映射到“10”)、第二状态(BB,映射到“00”)和第三状态(CC,映射到“01”)的四个分布被编程为0到Max1伏特的电压范围。如分布310所示,MLC模式使用1-2格雷码,其中上页(UP)具有一个转变(在AA状态和BB状态之间),并且下页(LP)具有两个转变(第一转变在ER状态和AA状态之间,并且第二转变在BB状态和CC状态之间)。
第一阶段的编程可以使用任何合适的MLC编程技术。例如,可以交替编程脉冲和验证脉冲,直到最后一个验证脉冲指示所有已编程的存储器单元达到或超过期望编程状态的编程验证电压。应注意,与模糊-精细编程方法的模糊阶段不同,以MLC模式对第一阶段进行编程允许正常读回已编程数据。例如,可以在分布310中观察到,相邻状态具有可使用由编码器222和解码器226提供的错误校正算法来校正的微量重叠。
如图3A所示,与例如图1D的分布160中的状态相比,分布310中的状态被编程为相对较窄,其中程序分布310中的每个MLC状态宽度小于程序分布320中的映射QLC状态的组合宽度。例如,根据图3C中的映射330,MLC AA(S1)状态映射到C(S3)、D(S4)、J(S10)和K(S11)QLC状态。MLC AA(S1)的MLC状态宽度小于四个QLC状态的组合宽度,并且可能是约两个QLC状态宽。当然,具有更宽或更窄的MLC状态宽度的其他映射也是可能的。
在步骤2中,控制器201可以接收用于写入操作的主机数据的第二部分。该第二部分可以通过编码器222来处理。第二部分可以对应于主机数据中的4位半字节的剩余2位,并且因此可以包括主机数据中的每个4位半字节中的没有被第一部分选择的位。然后可以将已编码的第二部分编程到写入缓冲器230中。
应注意,写入缓冲器230被示为具有2个块的堆叠。由于第一部分可能在步骤1中已经被编程到存储器阵列208中,因此可以通过从存储器阵列208读回来检索第一部分,如上所讨论。因此,可以从写入缓冲器230中省略用于与第一部分相对应的存储器页面的缓冲器,由此与模糊-精细编程方法相比,针对写入缓冲器230的SLC存储器块需求减少了一半。如果替代地利用从SLC到QLC的2级嵌套格雷码,则针对写入缓冲器230的SLC存储器块需求将减小25%,例如,为3块而不是4块。因此,系统200可以将更多的管芯空间专用于存储器阵列208以改善存储设备的性能特性。在其他变体中,可以在不使用写入缓冲器230的情况下高速缓存存储器页面,由此使得写入缓冲器230能够被完全省略。
在步骤3中,控制器201从写入缓冲器230读取主机数据的第二部分,并且使用解码器226来应用错误校正算法以便在读取写入缓冲器230时校正任何错误。类似地,在步骤4中,控制器201从存储器阵列208读取主机数据的第一部分,并且使用解码器226来应用错误校正算法以便在读取存储器阵列208时校正任何错误。第一部分和第二部分可以在高速缓存224中组合以由编码器222进行编码,以便准备好主机数据用于在第二阶段中进行编程。
在步骤5中,控制器201在对应于QLC模式的第二阶段中将已解码和编码的数据编程到存储器阵列208中。例如,通过使用在图3C的映射330中示出的嵌套格雷码,已经以MLC模式编程的存储器单元可以通过对映射330所指示的电压差进行编程来扩展到其相应的最终QLC状态。因此,第二阶段可以描述为“4位原位折叠”,因为已经存储2位信息的现有MLC模式编程的存储器单元是通过将附加电压编程到相同存储器单元编程以将MLC状态调整为其存储4位信息的最终QLC状态来就地调整的。
例如,MLC UP可以被映射到QLC TP,并且MLC LP可以被映射到QLC MP。在这种情况下,第二阶段为每个存储器单元提供附加编程电压以限定剩余的两位,即QLC UP和QLC LP。当然,要从第一阶段映射到第二阶段的特定页面是在映射330中任意选择的,并且不同的映射可以使用不同的选择。应注意,映射330维持或增加第一阶段到第二阶段的电压,因为减少存储器单元的编程电压将需要擦除包含该存储器单元的整个NAND块。
例如,在一种方法中,如果要编程到特定存储器单元中的数据对应于位“1000”,并且对该特定存储器单元的读取确定MLC“10”分布或MLC状态AA(S1)内的读取电压,则根据映射130,映射到“1000”的最终状态对应于QLC状态C(S3),其目标电压对应于QLC状态C(S3)的电压分布的中间值。因此,可以根据目标电压和所确定的读取电压之间的差来确定要编程的附加电压。
在步骤5之后,参考图3,示出了QLC存储器单元的示例性程序分布320,其可以对应于在以QLC模式对第二阶段编程之后的存储器阵列208。如分布320所示,与擦除状态(ER或S0,映射到“1111”)至第十五状态(O或S15,映射到“1011”)相对应的十六个分布被编程为0至Max2伏特的电压范围,其可以大于Max1并例如为约6.2伏特。如分布310和320所示,在第二阶段之前,QLC状态用与其相应的MLC状态相同的阴影指示。例如,从MLC ER(S0)状态扩展的QLC ER(S0)、A(S1)、B(S2)和O(S15)状态都共享相同的对角线交叉阴影。
由于映射330用于在第一阶段和第二阶段中生成程序分布310和320,因此根据平衡格雷码对每个阶段中的分布进行编程。如上所述,第一阶段的较窄状态分布以及MLC状态到至少两个非相邻QLC状态的映射使得能够针对每个阶段满足平衡格雷码。应注意,术语“非相邻QLC状态”包括环绕状态,并且因此映射到QLC ER(S0)和QLC O(S15)状态相当于“两个非相邻QLC状态”。
另外,应注意,映射330中的所有页面的转变计数的总和对应于或不超过编程级别的最大数量。例如,图3C示出了最多16个QLC状态(例如,ER、A、B、C、D、E、F、G、H、I、J、K、L、M、N和O状态)。在此示例中,用于QLC模式的编程级别的最大数量为15(例如,16-1=15)。在此,用4-3-4-4表示四个页面的格雷码或转变计数,并且映射330中所有四个页面的转变计数的总和为15(4+3+4+4=15)。
尽管映射330被设置为2级格雷嵌套的一个特定示例,但是也可以使用在每个阶段维持平衡格雷码的其他映射。例如,可以确定其中MLC状态宽度大于2个QLC状态宽度的映射,这使得能够更快地对第一阶段进行编程。另外,可以调整映射以避免阶段之间的大电压差以便减小编程时间。例如,映射330包括从MLC ER(S0)到QLC O(S15)的映射,其由于大电压差而可能花费很长时间来进行编程。替代映射可以布置映射以避免阶段之间的如此大的电压差。
为了改善编程速度,以交错字线编程进行过程而不是按字线顺序地对多个阶段进行编程可能是有益的。以这种方式,进行过程不需要在继续进行之前等待每个单独字线完成编程,而是可以跨不同字线交替编程阶段。
例如,图2B示出了用于模糊-精细模式编程或多阶段编程的示例性交错字线编程进行过程250。如图2B所示,假设八个字符串(Str0至Str7)。进行过程250最初在模糊阶段中对WL0(步骤1-8)和WL1(步骤9-16)的字符串0-7进行编程,然后往回跳到WL0以在精细阶段中完成对字符串0-7进行编程(步骤17-24),并且然后向前跳到WL2以在模糊阶段中对字符串0-7进行编程(步骤25-32),并且然后往回跳到WL1以在精细阶段中对字符串0-7进行编程(步骤33-40)。进行过程250可以继续针对剩余的字线以交替的模糊/精细模式对字线对进行编程。
虽然图2B被具体地示为使用模糊-精细模式编程,但进行过程250也可以适于由图2以及图3A、图3B和图3C中描述的多阶段编程使用。例如,图2B可以被解释为:1)对于WL0以MLC模式写入,2)对于WL1以MLC模式写入,3)对于WL0以QLC模式写入,4)对于WL2以MLC模式写入,5)对于WL1以QLC模式写入,依此类推。
应注意,WL1和WL2被标识为“传输中的数据”。换句话说,WL1和WL2中的数据可能尚未完全提交到存储器阵列208,并且字线可能为“开放”,因为剩余阶段尚未被编程。因此,这些字线的数据需要被高速缓存或从存储器单元中重新读取以完成剩余阶段。如上所讨论的,对于模糊-精细编程方法,仅高速缓存是可能的,因为在模糊编程之后存储器单元不可读。然而,对于多阶段编程,这两种方法都是有效的。
因此,“开放”字线的数据可以被保留在高速缓存224、写入缓冲器230或另一个位置中,直到“开放”字线即WL1和WL2被完全编程(即,完成所有编程阶段)。一旦数据是“安全的”或可从存储器阵列208读取的,则可以从高速缓存224或写入缓冲器230中清除数据。应注意,这使得高速缓存224能够代替写入缓冲器230,然后可以省略写入缓冲器。然而,高速缓存224应当足够大以保留“传输中的数据”。在该示例中,高速缓存224应当足够大以保留多达两个字线,这可以对应于预定数量的存储器页面。
第一替代进行过程允许减小用于高速缓存224的预定页数。例如,如果高速缓存224足够大以便保留多达4个存储器页面的数据,则第一替代进行过程可以如下进行:1)将MLC写入WL0,2)将MLC写入WL1,3)读取WL0(MLC)以及将QLC写入WL0,4)将MLC写入WL2,5)读取WL1,以及将QLC写入WL1。如果从存储器阵列208读取,则还可以进行任选的错误校正,例如,通过使用解码器226。类似于进行过程250,第一替代进行过程可以省略写入缓冲器230。
第二替代进行过程要求存在写入缓冲器230,但可能更适合于具有高管芯并行度的存储设备。上面相对于系统200描述的步骤1-5描述了第二替代进行过程。
图4是示出用于使用平衡格雷编码的多阶段编程的示例性过程400的流程图。图4的一个或多个框可由计算系统(包括例如闪存存储器的控制器、数据存储系统或固态存储设备(SSD)的数据存储控制器、处理器等)执行。计算系统或控制器的示例可以是控制器501和/或507。类似地,非暂态机器可读介质可包括在其上的机器可执行指令,该机器可执行指令当由计算机或机器执行时执行图4的框。过程400的步骤可被实施为硬件/固件或软件。
在框411中,参考图5,控制器501在第一阶段中以第一级单元模式将数据的第一部分编程到NAND阵列508中。这可以对应于上面相对于系统200描述的步骤1,其中控制器201以MLC模式将每个主机数据半字节的2位编程到存储器阵列208中。
在框412中,参考图5,控制器501在高速缓存224或写入缓冲器230中保留数据的至少一个子集。这可以对应于上面相对于系统200描述的步骤2,其中控制器201将每个主机数据半字节的剩余2位编程到写入缓冲器230中。另选地,如上面相对于图2A的进行过程250和第一替代进行过程描述的,控制器501可以将预定数量的存储器页面存储在高速缓存224中,从而忽略写入缓冲器230。例如,高速缓存224可以对应于图5的存储介质502。
在框413中,参考图5,控制器501至少从存储介质502重新生成数据,其中重新生成的数据包括数据的第二部分。取决于框412中使用的方法,参考图2,框413从高速缓存224或写入缓冲器230读取数据。如果未被高速缓存,则在重新生成过程期间也可以从存储器阵列208读回数据的第一部分。第一数据部分和第二数据部分可以被组合以重新生成数据的整体,例如,数据的整体4位半字节。应注意,在本技术的替代方面中,当省略写入缓冲器230时,可以通过直接从已编程的存储器单元读取数据来修改框412和413。
在框414中,参考图5,控制器501在第二阶段中基于从第一级单元模式到第二级单元模式的映射以第二级单元模式对重新生成的数据进行编程。例如,控制器501可以基于图3C的映射330对重新生成的数据进行编程,该映射是从MLC模式到QLC模式的映射。另外,映射330将第一级单元模式(MLC模式)中的每个状态分布映射到第二级单元模式(QLC模式)中的至少两个非相邻状态分布。映射330还规定,第一级单元模式(MLC模式)中的每个状态分布的宽度小于第二级单元模式(QLC模式)中的对应状态分布的组合宽度。如上所讨论,映射330满足这些定义,这使得映射330能够为每个阶段维持平衡格雷码。
图5是示出根据本技术主题的各方面的示例性数据存储系统的部件的框图。如图5中描绘的,在一些方面中,数据存储系统500(例如,固态驱动器)包括数据存储控制器501、存储介质502、以及包括一个或多个闪存存储器503的闪存存储器阵列510。控制器501可以使用存储介质502以暂时存储数据和用于管理数据存储系统500的信息。控制器501可以包括若干内部部件(未示出),诸如只读存储器、闪存部件接口(例如,用于管理沿着与闪存存储器503的串行连接的指令和数据传输的多路复用器)、I/O接口、错误校正电路等。在一些方面,控制器501的所有这些元件可集成到单个芯片中。在其他方面,这些元件可以在其自身的PC板上分离。
在一些实施方式中,本公开的方面可以在数据存储系统500中实现。例如,本公开的各方面可以与数据存储控制器501的功能集成,或者可以被实现为用于与数据存储控制器501结合使用的单独部件。
控制器501还可以包括处理器,该处理器可以被配置为执行代码或指令以执行本文所述的操作和功能,管理请求流和地址映射,以及执行计算并生成命令。控制器501的处理器可以被配置为监测和/或控制数据存储控制器501中的部件的操作。处理器可以是通用微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、控制器、状态机、门控逻辑装置、分立硬件部件或前述各项的组合。一个或多个指令序列可以作为固件存储在控制器501和/或其处理器内的ROM上。一个或多个指令序列可以是存储于存储介质502、闪存存储器503并从其读取的软件,或者从主机设备504(例如,经由主机接口505)接收的软件。ROM、存储介质502、闪存存储器503表示在其上可存储由控制器501和/或其处理器执行的指令/代码的机器或计算机可读介质的示例。机器或计算机可读介质通常可以是指用于向控制器501和/或其处理器提供指令的一种或多种任何介质,包括易失性介质(诸如用于存储介质502或用于控制器501内的缓冲器的动态存储器)和非易失性介质(诸如电子介质、光学介质和磁性介质)。
在一些方面,控制器501可以被配置为响应于来自主机设备504的写入命令而将从主机设备504接收的数据存储在闪存存储器503中。控制器501被进一步配置为响应于来自主机设备504的读取命令而读取存储在闪存存储器503中的数据以及将读取的数据转移到主机设备504。
主机设备504表示被配置为耦接到数据存储系统500和将数据存储在数据存储系统500中的任何设备。主机设备504可以是计算系统,诸如个人计算机、服务器、工作站、膝上型计算机、PDA、智能电话等。另选地,主机设备504可以是电子设备,诸如数字相机、数字音频播放器、数字视频录像机等。
在一些方面,存储介质502表示用于暂时存储数据和用于管理数据存储系统500的信息的易失性存储器。根据本主题技术的各方面,存储介质502是随机存取存储器(RAM)诸如双倍数据速率(DDR)RAM。其他类型的RAM也可以用于实现存储介质502。可以使用单个RAM模块或多个RAM模块来实现存储器502。尽管存储介质502被描绘为与控制器501不同,但本领域技术人员将认识到,在不脱离本主题技术的范围的情况下,存储介质502可以结合到控制器501中。另选地,存储介质502可以是非易失性存储器,诸如磁盘、闪存存储器、外围SSD等。
如图5中进一步描绘的,数据存储系统500还可以包括主机接口505。主机接口505可以被配置为可操作地耦接到(例如,通过有线或无线连接)到主机设备504以从主机设备504接收数据并且向主机设备504发送数据。主机接口505可以包括用于将主机设备504可操作地耦接到控制器501的电和物理连接或无线连接(例如,经由控制器501的I/O接口)。主机接口505可以被配置为在主机设备504与控制器501之间传送数据、地址和控制信号。另选地,控制器501的I/O接口可以包括主机接口505和/或与该主机接口组合。主机接口505可以被配置为实现标准接口,诸如串行附接的SCSI(SAS)、光纤信道接口、PCI Express(PCIe)、SATA、USB等。主机接口505可以被配置为仅实现一个接口。另选地,主机接口505(和/或控制器501的I/O接口)可以被配置为实现多个接口,该多个接口可以使用由用户选择的或在装配时编程的配置参数来逐个选择。主机接口505可以包括用于缓冲主机设备504和控制器501之间的传输的一个或多个缓冲器。
闪存存储器503表示用于存储数据的非易失性存储器设备。根据本主题的技术的各方面,闪存存储器503包括例如NAND闪存存储器。闪存存储器503可以包括单个闪存存储器设备或芯片,或者如图5所描绘的,可以包括布置在多个信道中的多个闪存存储器设备或芯片。闪存存储器503不限于任何特定容量或配置。例如,物理块的数量、每一物理块的物理页面的数量、每一物理页面的扇区的数量以及扇区的大小可以在本主题的技术的范围内发生变化。
闪存存储器可具有标准的接口规范,使得来自多个制造商的芯片可以互换使用(至少在很大程度上)。接口隐藏闪存的内部工作并且仅返回内部检测的数据位值。在各方面中,闪存存储器503的接口用于访问一个或多个内部寄存器506和内部闪存控制器507以通过外部设备进行通信。在一些方面中,寄存器506可包括地址寄存器、命令寄存器和/或数据寄存器,其在内部从NAND存储器单元阵列508检索必要的数据并向其输出必要的数据。例如,数据寄存器可以包括要存储在存储器阵列508中的数据、或在从存储器阵列508取出之后的数据,并且还可以用于暂时数据存储和/或像缓冲器一样作用。地址寄存器可存储将从其提取数据到主机504的存储器地址或数据将被发送和存储到其中的地址。在一些方面,命令寄存器被包括来控制奇偶校验、中断控制等。在一些方面,内部闪存控制器507可经由控制寄存器访问以控制闪存存储器503的一般行为。内部闪存控制器507和/或控制寄存器可以控制停止位的数量、字长、接收器时钟源,并且还可以控制切换寻址模式、寻呼控制、协处理器控制等。
在一些方面,寄存器506还可以包括测试寄存器。测试寄存器可以通过在闪存存储器503的接口处提供的特定地址和/或数据组合来访问(例如,通过由制造商提供的专用软件访问以对闪存存储器的内部部件执行各种测试)。在另外的方面,测试寄存器可以用于访问和/或修改其他内部寄存器,例如命令寄存器和/或控制寄存器。在一些方面,可经由测试寄存器访问的测试模式可以用于输入或修改闪存存储器503的某些编程条件(例如,读取级别)以便动态地改变如何从存储器阵列508的存储器单元读取数据。寄存器506还可以包括耦接到闪存存储器503的一个或多个数据锁存器。
应当理解,在所有情况下,数据可能并不总是从主机504接收和/或返回到主机504的命令的结果。在一些方面,控制器501可以被配置为独立于主机504执行读取操作(例如,以验证读取级别或BER)。如本文使用,谓词“被配置为”、“可操作为”和“被编程为”并非暗示对象的任何特定有形或无形修改,而是旨在进行可互换地使用。例如,被配置为监测和控制操作或部件的处理器也可以是意指被编程以监测和控制操作的处理器,或者可操作为监测和控制操作的处理器。同样,被配置为执行代码的处理器可以被理解为被编程为执行代码或可操作地执行代码的处理器。
控制器507可以执行框411-414中识别的操作。控制器507可以致使框411-414中标识的操作发生,或者控制器501可以提供指令以致使或有助于控制器507(和寄存器506)执行框411-414中识别的操作。
下面描述本公开的各方面的各种示例。这些被提供作为示例,而不限制本主题的技术。
本主题技术的一个或多个方面提供了一种数据存储设备,其可以包括:闪存存储器,该闪存存储器包括存储器单元、高速缓存以及控制器。控制器可以被配置为在第一阶段中以第一级单元模式将数据的第一部分编程到存储器单元中。控制器还可以被配置为在高速缓存中保留数据的至少一个子集。控制器还可以被配置为至少从高速缓存重新生成数据,其中重新生成的数据包括数据的第二部分。控制器还可以被配置为在第二阶段中基于从第一级单元模式到第二级单元模式的映射以第二级单元模式对重新生成的数据进行编程,其中映射将第一级单元模式中的每个状态分布映射到第二级单元模式中的至少两个非相邻状态分布,并且其中映射将第一级单元模式中的每个状态分布的宽度配置为小于第二级单元模式中的对应状态分布的组合宽度。
在其他方面中,提供了用于通过平衡格雷编码的多阶段编程的方法。根据一些方面,方法可以包括在第一阶段中以第一级单元模式将数据的第一部分编程到闪存存储器的存储器单元中。方法还可以包括在包括单级单元(SLC)的高速缓存中保留数据的至少一个子集。方法还可以包括至少从高速缓存重新生成数据,其中重新生成的数据包括数据的第二部分。方法还可以包括在第二阶段中基于从第一级单元模式到第二级单元模式的映射以第二级单元模式对重新生成的数据进行编程,其中映射将第一级单元模式中的每个状态分布映射到第二级单元模式中的至少两个非相邻状态分布,并且其中映射提供的第一级单元模式中的每个状态分布的宽度小于第二级单元模式中的对应状态分布的组合宽度。
在另外的方面,系统可以包括用于在第一阶段中以多级单元(MLC)模式将数据的第一部分编程到闪存存储器的存储器单元中的装置。系统还可以包括用于在包括单级单元(SLC)的高速缓存中保留数据的至少一个子集的装置。系统还可以包括用于至少从高速缓存重新生成数据的装置,其中重新生成的数据包括数据的第二部分。系统还可以包括用于在第二阶段中基于从MLC模式到QLC模式的映射以四级单元(QLC)模式对重新生成的数据进行编程的装置,其中映射将MLC模式中的每个状态分布映射到QLC模式中的至少两个非相邻状态分布,并且其中映射被配置为使得MLC模式中的每个状态分布的宽度小于QLC模式中的对应状态分布的组合宽度,并且其中映射被配置为在MLC模式和QLC模式中提供平衡格雷码。
用于通过平衡格雷编码的多阶段编程的方法和系统的各种实施方式提供了改善存储设备的运行的若干性能优势。通过以更高的读取和写入性能以及存储容量操作存储设备,还会为与存储设备接合的主机计算机提供改善的运行。因此,所描述的方法和系统提供了改善存储设备和主机计算机的运行的性能益处。
应当理解,本主题的技术的其他配置从本文的具体实施方式中将对本领域的技术人员是显而易见的,其中以图示的方式示出和描述本主题的技术的各种配置。如将认识的,本主题的技术能够具有其他和不同配置,并且其若干细节能够在各种其他方面进行修改,所有这些都不脱离本主题的技术的范围。因此,附图和具体实施方式本质上被认为是例示性的而不是限制性的。
本领域的技术人员将了解到,本文所述的各个示例性框、模块、元件、部件、方法和算法可实施为电子硬件、计算机软件、或两者的组合。为了例证硬件和软件的这种可互换性,上面已经大体上就它们的功能性方面而描述了各个例示性框、模块、元件、部件、方法和算法。将此功能性实施为硬件还是软件取决于特定应用和强加于整个系统的设计约束。技术人员可以针对每个特定应用以不同的方式实现所述的功能性。在不脱离本主题技术的范围的情况下,各个部件和框可以全都不同地布置(例如,以不同的次序布置、或以不同的方式划分)。
应当理解,所公开的过程中的步骤的特定次序或层级是示例性方法的例证。基于设计偏好,应当理解,这些过程中的步骤的特定次序或层级可进行重新布置。步骤中的一些可同时执行。所附方法权利要求以样本次序呈现各个步骤的要素,而不旨在被限制于所呈现的特定次序或层级。
先前描述被提供来使本领域的技术人员能够实践本文所述的各个方面。先前描述提供本主题技术的各个示例,并且本主题技术不限制于这些示例。这些方面的各种修改对本领域的技术人员是显而易见的,并且本文限定的一般原理可以应用于其他方面。因此,权利要求并非旨在被限制于本文所示的各方面,而是将被赋予与语言权利要求一致的全部范围,其中除非如此特别说明,否则以单数指称某个元件并非旨在意指“一个且仅一个”,而是意指“一个或多个”。除非另外特别说明,否则术语“一些”是指一个或多个。男性化的代词(例如,他的)包括女性化的代词和中性代词(例如,她的和它的),反之亦然。标题和副标题(如果有的话)仅为了方便才使用,而不限制本主题技术。
诸如“方面”等短语并非暗示此类方面对本主题技术是必要的,或此类方面适用于本主题技术的所有配置。与方面有关的公开内容可以适用于所有配置、或一个或多个配置。方面可以提供一个或多个示例。诸如方面的短语可以是指一个或多个方面,反之亦然。诸如“实施方案”等短语并非暗示此类实施方案对本主题技术是必要的,或此类实施方案适用于本主题技术的所有配置。与实施方案有关的公开内容可适用于所有实施方案、或一个或多个实施方案。实施方案可提供一个或多个示例。诸如“实施方案”等短语可以是指一个或多个实施方案,反之亦然。诸如“配置”等短语并非暗示此类配置对本主题技术是必要的,或此类配置适用于本主题技术的所有配置。与配置有关的公开内容可以适用于所有配置、或一个或多个配置。配置可以提供一个或多个示例。诸如“配置”的短语可以是指一个或多个配置,反之亦然。
字词“示例性”在本文中用于意指“用作示例或例证”。本文描述为“示例性”的任何方面或设计不必被理解为比其他方面或设计更优选或更有利。
本领域的普通技术人员已经知道或之后知道的贯穿本公开描述的各个方面的要素的所有结构等同物和功能等同物以引用的方式明确地并入本文并旨在被权利要求所涵盖。此外,无论在权利要求中是否明确地叙述此公开内容,本文公开的内容都并非旨在贡献给社会大众。依据35U.S.C.§112第六段条款,将不解释任何权利要求要素,除非使用短语“用于……的装置”来明确地叙述该要素,或在方法权利要求的情况下使用短语“用于……的步骤”来叙述该要素。此外,在说明书或权利要求中使用术语“包括”、“具有”等等的意义上,这种术语旨在以与术语“包括”在“包括”用作权利要求中的过渡字词时的解释类似的方式为包括性的。
Claims (20)
1.一种数据存储设备,所述数据存储设备包括:
闪存存储器,所述闪存存储器包括存储器单元;
高速缓存;和
控制器,所述控制器被配置成:
在第一阶段中以第一级单元模式将数据的第一部分编程到所述存储器单元中;
在所述高速缓存中保留所述数据的至少一个子集;
至少从所述高速缓存重新生成所述数据,其中所述重新生成的数据包括所述数据的第二部分;以及
在第二阶段中基于从所述第一级单元模式到所述第二级单元模式的映射以第二级单元模式对所述重新生成的数据进行编程,
其中所述映射将所述第一级单元模式中的每个状态分布映射到所述第二级单元模式中的至少两个非相邻状态分布,并且
其中所述映射将所述第一级单元模式中的每个状态分布的宽度配置为小于所述第二级单元模式中的对应状态分布的组合宽度。
2.根据权利要求1所述的数据存储设备,其中所述控制器被配置为在所述高速缓存中保留不超过单级存储器单元(SLC)中的所述数据的所述第一部分。
3.根据权利要求1所述的数据存储设备,其中所述控制器被配置为通过从所述已编程的存储器单元读取所述数据的所述第一部分以及将所述数据的所述第一部分与来自所述高速缓存的所述数据的所述至少一个所述子集组合来重新生成所述数据。
4.根据权利要求1所述的数据存储设备,其中所述控制器被配置为在所述高速缓存中保留所述数据的所述第二部分。
5.根据权利要求4所述的数据存储设备,其中所述控制器被配置为在所述高速缓存中保留所述数据的所述第一部分。
6.根据权利要求1所述的数据存储设备,其中所述控制器被配置为跨所述存储器单元的字线以交错进行过程对所述第一阶段和所述第二阶段进行编程。
7.根据权利要求1所述的数据存储设备,其中所述映射被配置为在所述第二级单元模式中提供平衡格雷码,其中在所述第二级单元模式中的所述存储器页面的每两个相邻页面的转变计数之间的差不超过预定转变计数差,并且所有的所述存储器页面的所述转移计数的总和不超过所述第二级单元模式中的编程级别的最大数量。
8.根据权利要求1所述的数据存储设备,其中所述映射被配置为使得所述第一级单元模式中的每个状态分布的所述宽度大约是所述第二级单元模式中的所述对应状态分布的所述组合宽度的一半。
9.根据权利要求1所述的数据存储设备,其中所述控制器被配置为在所述高速缓存中保留多达预定数量的存储器页面。
10.根据权利要求1所述的数据存储设备,其中所述高速缓存是独立的并且与所述闪存存储器不同。
11.根据权利要求3所述的数据存储设备,其中所述高速缓存包括易失性随机存取存储器,并且其中所述闪存存储器包括非易失性存储器。
12.一种使用用于一个或多个存储设备的一个或多个控制器来实现的方法,所述方法包括:
在第一阶段中以第一级单元模式将数据的第一部分编程到闪存存储器的存储器单元中;
在包括单级单元(SLC)的高速缓存中保留所述数据的至少一个子集;
至少从所述高速缓存重新生成所述数据,其中所述重新生成的数据包括所述数据的第二部分;以及
在第二阶段中基于从所述第一级单元模式到所述第二级单元模式的映射以第二级单元模式对所述重新生成的数据进行编程,
其中所述映射将所述第一级单元模式中的每个状态分布映射到所述第二级单元模式中的至少两个非相邻状态分布,并且
其中所述映射提供的所述第一级单元模式中的每个状态分布的宽度小于所述第二级单元模式中的对应状态分布的组合宽度。
13.根据权利要求12所述的方法,其中重新生成所述数据包括从所述已编程的存储器单元读取所述数据的所述第一部分,以及将所述数据的所述第一部分与来自所述高速缓存的所述数据的所述至少一个所述子集组合。
14.根据权利要求12所述的方法,其中所述数据的所述至少一个所述子集包括所述数据的所述第二部分。
15.根据权利要求14所述的方法,其中所述数据的所述至少一个所述子集包括所述数据的所述第一部分。
16.根据权利要求12所述的方法,其中所述第一阶段中的编程和所述第二阶段中的编程跨所述存储器单元的字线以交错进行过程执行。
17.根据权利要求12所述的方法,其中所述映射被配置为在所述第二级单元模式中提供平衡格雷码,其中在所述第二级单元模式中的所述存储器页面的每两个相邻页面的转变计数之间的差不超过预定转变计数差,并且所有的所述存储器页面的所述转移计数的总和不超过所述第二级单元模式中的编程级别的最大数量。
18.根据权利要求12所述的方法,其中所述映射被配置为使得所述第一级单元模式中的每个状态分布的所述宽度大约是所述第二级单元模式中的所述对应状态分布的所述组合宽度的一半。
19.一种系统,所述系统包括:
用于在第一阶段中以多级单元(MLC)模式将数据的第一部分编程到闪存存储器的存储器单元中的装置;
用于在包括单级单元(SLC)的高速缓存中保留所述数据的至少一个子集的装置;
用于至少从所述高速缓存重新生成所述数据的装置,其中所述重新生成的数据包括所述数据的第二部分;和
用于在第二阶段中基于从所述MLC模式到所述QLC模式的映射以四级单元(QLC)模式对所述重新生成的数据进行编程的装置,
其中所述映射将所述MLC模式中的每个状态分布映射到所述QLC模式中的至少两个非相邻状态分布,并且
其中所述映射被配置为使得所述MLC模式中的每个状态分布的宽度小于所述QLC模式中的对应状态分布的组合宽度,并且其中所述映射被配置为在所述MLC模式和所述QLC模式中提供平衡格雷码。
20.根据权利要求19所述的系统,其中所述映射被配置为使得所述MLC模式中的每个状态分布的所述宽度大约是所述QLC模式中的所述对应状态分布的所述组合宽度的50%至75%。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/297,359 | 2019-03-08 | ||
US16/297,359 US11133067B2 (en) | 2019-03-08 | 2019-03-08 | Multi-phased programming with balanced gray coding |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111667868A true CN111667868A (zh) | 2020-09-15 |
CN111667868B CN111667868B (zh) | 2023-09-19 |
Family
ID=72147120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911272824.3A Active CN111667868B (zh) | 2019-03-08 | 2019-12-12 | 通过平衡格雷编码的多阶段编程的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11133067B2 (zh) |
CN (1) | CN111667868B (zh) |
DE (1) | DE102019133129A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114791888A (zh) * | 2022-06-22 | 2022-07-26 | 北京得瑞领新科技有限公司 | 状态映射处理方法及装置、介质、ssd设备 |
WO2022205198A1 (en) * | 2021-03-31 | 2022-10-06 | Yangtze Memory Technologies Co., Ltd. | Program and read operations using different gray codes and memory device for performing the same |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11074013B2 (en) | 2018-08-07 | 2021-07-27 | Marvell Asia Pte, Ltd. | Apparatus and methods for providing quality of service over a virtual interface for solid-state storage |
US11656775B2 (en) | 2018-08-07 | 2023-05-23 | Marvell Asia Pte, Ltd. | Virtualizing isolation areas of solid-state storage media |
US11010314B2 (en) | 2018-10-30 | 2021-05-18 | Marvell Asia Pte. Ltd. | Artificial intelligence-enabled management of storage media access |
US10705966B1 (en) * | 2018-12-14 | 2020-07-07 | Western Digital Technologies, Inc. | Mapping for multi-state programming of memory devices |
US11481118B2 (en) * | 2019-01-11 | 2022-10-25 | Marvell Asia Pte, Ltd. | Storage media programming with adaptive write buffer release |
US11610641B2 (en) * | 2020-07-09 | 2023-03-21 | SK Hynix Inc. | Wafer-yields and write-QoS in flash-based solid state drives |
US11914886B2 (en) | 2020-10-02 | 2024-02-27 | Western Digital Technologies, Inc. | Nonvolatile memory with on-chip encoding for foggy-fine programming |
US11650756B2 (en) | 2020-12-28 | 2023-05-16 | Western Digital Technologies, Inc. | Nonvolatile memory with encoding for foggy-fine programming with soft bits |
US11495296B2 (en) | 2021-01-20 | 2022-11-08 | Western Digital Technologies, Inc. | Read threshold calibration for nonvolatile memory with encoded foggy-fine programming |
US11507303B2 (en) | 2021-04-21 | 2022-11-22 | Western Digital Technologies, Inc. | User controlled data-in for lower and middle page in MLC-fine QLC memories |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102290105A (zh) * | 2010-03-09 | 2011-12-21 | 三星电子株式会社 | 具有多位存储器件的数据存储系统及其操作方法 |
US20120173827A1 (en) * | 2009-03-13 | 2012-07-05 | Wood Robert B | Apparatus, system, and method for using multi-level cell storage in a single-level cell mode |
US20140063939A1 (en) * | 2012-08-29 | 2014-03-06 | Sandisk Technologies Inc. | Direct multi-level cell programming |
US20140108705A1 (en) * | 2012-10-12 | 2014-04-17 | Sandisk Technologies Inc. | Use of High Endurance Non-Volatile Memory for Read Acceleration |
US20150043276A1 (en) * | 2011-07-22 | 2015-02-12 | Sandisk Technologies Inc. | Systems and methods of storing data |
US20180293014A1 (en) * | 2017-04-10 | 2018-10-11 | Sandisk Technologies Llc | Folding operations in memory systems with single address updates |
CN109213689A (zh) * | 2017-06-29 | 2019-01-15 | 英特尔公司 | 粗略轮次和精细轮次多级nvm编程 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7251160B2 (en) | 2005-03-16 | 2007-07-31 | Sandisk Corporation | Non-volatile memory and method with power-saving read and program-verify operations |
US20080285652A1 (en) | 2007-05-14 | 2008-11-20 | Horizon Semiconductors Ltd. | Apparatus and methods for optimization of image and motion picture memory access |
KR101245219B1 (ko) | 2007-05-16 | 2013-03-19 | 삼성전자주식회사 | 메모리 셀 기입/독출 방법 및 페이지 버퍼 |
KR100923820B1 (ko) | 2007-10-12 | 2009-10-27 | 주식회사 하이닉스반도체 | 페이지 버퍼, 이를 구비하는 메모리 소자 및 그 동작 방법 |
US9123422B2 (en) | 2012-07-02 | 2015-09-01 | Super Talent Technology, Corp. | Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells |
US8027195B2 (en) | 2009-06-05 | 2011-09-27 | SanDisk Technologies, Inc. | Folding data stored in binary format into multi-state format within non-volatile memory devices |
KR20110017718A (ko) | 2009-08-14 | 2011-02-22 | 삼성전자주식회사 | 플래시 메모리 장치, 이의 프로그램 방법 및 독출 방법 |
US9070473B2 (en) * | 2009-12-02 | 2015-06-30 | Micron Technology, Inc. | Refresh architecture and algorithm for non-volatile memories |
US9245653B2 (en) | 2010-03-15 | 2016-01-26 | Intelligent Intellectual Property Holdings 2 Llc | Reduced level cell mode for non-volatile memory |
WO2015106162A1 (en) | 2014-01-09 | 2015-07-16 | SanDisk Technologies, Inc. | Selective copyback for on die buffered non-volatile memory |
US9159412B1 (en) * | 2014-07-15 | 2015-10-13 | Macronix International Co., Ltd. | Staggered write and verify for phase change memory |
JP6123766B2 (ja) * | 2014-09-18 | 2017-05-10 | カシオ計算機株式会社 | データ読み出し装置、プログラムおよびデータ読み出し方法 |
US9424944B2 (en) | 2014-10-31 | 2016-08-23 | Sandisk Technologies Llc | Detecting voltage threshold drift |
US9715939B2 (en) | 2015-08-10 | 2017-07-25 | Sandisk Technologies Llc | Low read data storage management |
JP2018005959A (ja) | 2016-06-30 | 2018-01-11 | 東芝メモリ株式会社 | メモリシステムおよび書き込み方法 |
US9697892B1 (en) | 2016-10-04 | 2017-07-04 | Micron Technology, Inc. | Generation and application of gray codes |
US10419004B2 (en) * | 2017-04-21 | 2019-09-17 | Windbond Electronics Corporation | NVFF monotonic counter and method of implementing same |
US10146460B1 (en) | 2017-06-01 | 2018-12-04 | Apple Inc. | Programming schemes for avoidance or recovery from cross-temperature read failures |
TWI650757B (zh) | 2018-03-30 | 2019-02-11 | 大陸商深圳大心電子科技有限公司 | 解碼方法以及儲存控制器 |
TWI668695B (zh) * | 2018-07-24 | 2019-08-11 | 群聯電子股份有限公司 | 電壓調整方法、記憶體控制電路單元以及記憶體儲存裝置 |
-
2019
- 2019-03-08 US US16/297,359 patent/US11133067B2/en active Active
- 2019-12-05 DE DE102019133129.3A patent/DE102019133129A1/de active Pending
- 2019-12-12 CN CN201911272824.3A patent/CN111667868B/zh active Active
-
2021
- 2021-06-23 US US17/356,408 patent/US11798627B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120173827A1 (en) * | 2009-03-13 | 2012-07-05 | Wood Robert B | Apparatus, system, and method for using multi-level cell storage in a single-level cell mode |
CN102290105A (zh) * | 2010-03-09 | 2011-12-21 | 三星电子株式会社 | 具有多位存储器件的数据存储系统及其操作方法 |
US20150043276A1 (en) * | 2011-07-22 | 2015-02-12 | Sandisk Technologies Inc. | Systems and methods of storing data |
CN107357678A (zh) * | 2011-07-22 | 2017-11-17 | 桑迪士克科技有限责任公司 | 存储数据的系统和方法 |
US20140063939A1 (en) * | 2012-08-29 | 2014-03-06 | Sandisk Technologies Inc. | Direct multi-level cell programming |
US20140108705A1 (en) * | 2012-10-12 | 2014-04-17 | Sandisk Technologies Inc. | Use of High Endurance Non-Volatile Memory for Read Acceleration |
US20180293014A1 (en) * | 2017-04-10 | 2018-10-11 | Sandisk Technologies Llc | Folding operations in memory systems with single address updates |
CN109213689A (zh) * | 2017-06-29 | 2019-01-15 | 英特尔公司 | 粗略轮次和精细轮次多级nvm编程 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022205198A1 (en) * | 2021-03-31 | 2022-10-06 | Yangtze Memory Technologies Co., Ltd. | Program and read operations using different gray codes and memory device for performing the same |
US11854613B2 (en) | 2021-03-31 | 2023-12-26 | Yangtze Memory Technologies Co., Ltd. | Program and read operations using different gray codes and memory device for performing the same |
CN114791888A (zh) * | 2022-06-22 | 2022-07-26 | 北京得瑞领新科技有限公司 | 状态映射处理方法及装置、介质、ssd设备 |
CN114791888B (zh) * | 2022-06-22 | 2022-09-02 | 北京得瑞领新科技有限公司 | 状态映射处理方法及装置、介质、ssd设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111667868B (zh) | 2023-09-19 |
US20210319831A1 (en) | 2021-10-14 |
US11798627B2 (en) | 2023-10-24 |
DE102019133129A1 (de) | 2020-09-10 |
US11133067B2 (en) | 2021-09-28 |
US20200286562A1 (en) | 2020-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111667868B (zh) | 通过平衡格雷编码的多阶段编程的系统和方法 | |
US11150808B2 (en) | Flash memory system | |
KR100902008B1 (ko) | 메모리 셀에 멀티 비트 데이터를 저장하는 플래시 메모리를 포함한 메모리 시스템 | |
TWI474330B (zh) | 用來進行記憶體存取管理之方法以及記憶裝置及其控制器 | |
US8429332B2 (en) | Multi-channel hybrid density memory storage device and control method thereof | |
WO2008093327A1 (en) | Flash memory with improved programming precision | |
WO2009040785A1 (en) | Using mlc flash as slc by writing dummy data | |
KR20080067509A (ko) | 데이터 정보에 따라 프로그램 방식을 결정하는 메모리시스템 | |
US9536600B2 (en) | Simultaneous multi-page commands for non-volatile memories | |
US8331147B2 (en) | Nonvolatile semiconductor memory device | |
US10902928B2 (en) | Memory system, operation method thereof, and nonvolatile memory device | |
US11776615B2 (en) | Sequential SLC read optimization | |
US11990186B2 (en) | One-ladder read of memory cells coarsely programmed via interleaved two-pass data programming techniques | |
US11699491B2 (en) | Double interleaved programming of a memory device in a memory sub-system | |
US11664079B2 (en) | Intervallic dynamic start voltage and program verify sampling in a memory sub-system | |
US11836377B2 (en) | Data transfer management within a memory device having multiple memory regions with different memory densities | |
WO2018119900A1 (zh) | 数据读取方法及闪存设备 | |
CN114097035A (zh) | 在存储器子系统通电阶段期间执行完全存储器刷新的决策 | |
US11550510B2 (en) | Encoding and decoding data bits stored in a combination of multiple memory cells | |
US11756612B2 (en) | All levels dynamic start voltage programming of a memory device in a memory sub-system | |
US11573715B2 (en) | Memory cell level assignment using optimal level permutations in a non-volatile memory | |
US20240062840A1 (en) | Read verification cadence and timing in memory devices | |
KR20090110648A (ko) | 플래시 메모리로 데이터를 기록하는 방법과 플래시메모리에 기록된 데이터를 읽는 방법 및 플래시 메모리시스템 | |
KR20230147525A (ko) | 머신 러닝을 이용한 비휘발성 메모리의 경판정 디코딩 |
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 |