CN113448765A - 具有对存储元件的写入故障保护的非易失性存储器阵列 - Google Patents
具有对存储元件的写入故障保护的非易失性存储器阵列 Download PDFInfo
- Publication number
- CN113448765A CN113448765A CN202010558036.7A CN202010558036A CN113448765A CN 113448765 A CN113448765 A CN 113448765A CN 202010558036 A CN202010558036 A CN 202010558036A CN 113448765 A CN113448765 A CN 113448765A
- Authority
- CN
- China
- Prior art keywords
- data
- slc
- mlc
- write
- elements
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 113
- 238000000034 method Methods 0.000 claims abstract description 62
- 230000004044 response Effects 0.000 claims description 17
- 238000012795 verification Methods 0.000 claims description 16
- 230000002950 deficient Effects 0.000 abstract 1
- 210000004027 cell Anatomy 0.000 description 32
- 238000012545 processing Methods 0.000 description 29
- 238000013500 data storage Methods 0.000 description 27
- 230000006870 function Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 19
- 239000000758 substrate Substances 0.000 description 17
- 238000003491 array Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 12
- 230000000670 limiting effect Effects 0.000 description 11
- 239000004065 semiconductor Substances 0.000 description 8
- 230000003936 working memory Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 4
- 230000007547 defect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 description 2
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000004242 micellar liquid chromatography Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 239000011370 conductive nanoparticle Substances 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 239000003989 dielectric material Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000001208 nuclear magnetic resonance pulse sequence Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/1048—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 using arrangements adapted for a specific error detection or correction feature
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- 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/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/068—Hybrid storage device
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
用于具有单层级单元(SLC)层和例如三层级单元(TLC)层等多层级单元(MLC)层的非易失性存储器(NVM)阵列的方法和设备提供耦合SLC/MLC写入操作,其中SLC写入保护被组合成MLC写入流。在说明性实例中,将数据并行写入到SLC和TLC。所述SLC数据为所述TLC数据提供备份,以防所述TLC数据有缺陷。使用例如写入检验来检验所述TLC数据。如果成功地检验所述数据,则可以擦除或另外用新数据来覆写SLC块。如果未成功检验所述数据,则所述SLC块可以用于恢复所述数据以存储在不同TLC块中。可以结合快速通过写入(QPW)来执行所述耦合SLC/MLC写入操作。
Description
技术领域
在一些实施例中,本公开涉及非易失性存储器(NVM)阵列。更具体来说,但非排他地,本公开涉及用于保护通过NVM阵列的多层级单元(MLC)存储元件存储的数据的方法和设备。
背景技术
在各种消费型电子装置中,并入有非易失性存储器(NVM)的固态装置(SSD)正替代或补充用于大容量存储装置的常规旋转硬盘驱动器。具有NVM阵列的SSD可以包含具有不同性能、耐久性和成本的多层存储装置。例如,SSD产品可以包含具有单层级单元(SLC)层和多层级单元(MLC)层,例如,三层级单元(TLC)层的NVM阵列。写入验证和保护程序用于保持数据完整性。例如,可以回读写入到NVM阵列的数据以检验是否正确地写入数据,并且如果未正确地写入数据,则可以从另一装置,例如从动态随机存取存储器(DRAM)恢复数据。本发明的方面例如涉及验证和保护写入到MLC层的数据。
发明内容
下文呈现对本公开的一些方面的简化概述以便提供对这些方面的基本理解。此概述并非本公开的所有预期特征的广泛综述,且既不预期识别本公开的所有方面的关键或至关重要要素,也不预期划定本公开的任何或所有方面的范围。其唯一目的是以简化形式呈现本公开的一些方面的各种概念以作为稍后呈现的更详细描述的序言。
本公开的一个实施例提供一种存储器装置,所述存储器装置包含:非易失性存储器(NVM)阵列,其包含单层级单元(SLC)元件和多层级单元(MLC)元件;以及处理器,所述处理器被配置成执行耦合SLC/MLC写入以将数据写入到选定SLC元件并且将相同的数据并行写入到选定MLC元件,确定写入到所述选定MLC元件的所述数据是否正确,以及响应于确定写入到所述选定MLC元件的所述数据正确而释放所述选定SLC元件中的所述数据以用于覆写。
本公开的另一实施例提供一种用于包含SLC元件和MLC元件的存储器阵列的方法。所述方法包含:执行耦合SLC/MLC写入,包括将数据写入到选定SLC元件并且将相同的数据并行写入到选定MLC元件;检验写入到所述选定MLC元件的所述数据;以及响应于成功地检验写入到所述选定MLC元件的所述数据而释放所述选定SLC元件中的所述数据以用于覆写。
本公开的又另一个实施例提供一种用于包含SLC元件和MLC元件的存储器阵列的设备。所述设备包含:用于执行耦合SLC/MLC写入,以将数据写入到选定SLC元件并且将相同的数据并行写入到选定MLC元件的构件;用于检验写入到所述选定MLC元件的所述数据的构件;以及用于响应于成功地检验写入到所述选定MLC元件的所述数据而释放所述选定SLC元件中的所述数据以用于覆写的构件。
附图说明
图1是示出采用具有配置用于耦合SLC/MLC写入操作的NVM阵列的示例性固态装置(SSD)形式的数据存储装置的示意性框图。
图2是示出具有用于执行耦合SLC/MLC写入操作的组件的示例性NVM阵列的示意性框图。
图3是示出可以由图2的NVM阵列执行以实施耦合SLC/TLC写入的示例性方法的流程图。
图4是TLC数据存储方案的示意性说明。
图5是示出示例性数据锁存器和示例性代码块的示意性框图。
图6是示出可以由图2的NVM阵列使用快速通过写入(QPW)操作和公共电荷泵来实施耦合SLC/TLC写入的示例性方法的流程图。
图7是基于用于编程三个SLC字线的QPW信息而触发三个SLC脉冲的时序的示意性说明。
图8是示出用于基于SLC块可用性而控制耦合SLC/TLC写入的示例性方法的流程图。
图9是示出具有SLC和MLC元件的示例性存储器装置以及配置用于耦合SLC/MLC写入的处理器的示意性框图。
图10是概述由配置用于耦合SLC/MLC写入的NVM阵列执行的示例性操作的流程图。
图11是提供示例性NVM设备以及其组件的另外细节的示意性框图。
具体实施方式
在以下详细描述中,参考附图,附图形成描述内容的一部分。除了上文描述的说明性方面、实施例和特征之外,通过参考图式以及以下详细描述,另外的方面、实施例和特征将变得显而易见。每个附图中的元件的描述可以参考前述附图的元件。在图式中相似的数字可以指代相似的元件,包含相似元件的替代实施例。
本文中的实例涉及非易失性存储器(NVM)阵列,并且涉及用于控制NVM阵列的数据存储装置或设备,例如,例如SSD的数据存储装置的控制器,且具体来说涉及固态存储器存储装置,例如,使用NAND快闪存储器(本文中为“NAND”)的那些固态存储器存储装置。NAND是不需要电力来保存数据的非易失性存储技术的类型。NAND利用负AND逻辑,即NAND逻辑。为了简洁起见,具有一个或多个NAND裸片的SSD将在下文中各种实施例的描述中用作数据存储装置(DSD)的非限制性实例。应理解,本文所描述的至少一些方面也可以适用于其它形式的数据存储装置。例如,本文所描述的至少一些方面可以适用于相变存储器(PCM)阵列、磁阻性随机存取存储器(MRAM)阵列和电阻性随机存取存储器(ReRAM)阵列。另外,各种实施例可以用于各种装置中,所述装置可以包含处理元件和存储器/数据存储元件的某一组合,包含根据所描述实施例构造/配置的NVM阵列。
概述
如上所述,具有NVM阵列的SSD可以包含具有不同性能、耐久性和成本的多层存储装置。例如,SSD产品可以包含具有单层级单元(SLC)层和多层级单元(MLC)层,例如,三层级单元(TLC)层的NVM阵列。(应注意,在一些文献内,MLC仅指代两层级单元。本文中MLC替代地指代任何多层级单元(或多层单元),包含两层级单元、三层级单元、四层级单元等。还应注意,SLC存储元件和MLC存储元件可以形成于作为相同NVM阵列的一部分的单独裸片上。)裸片中的缺陷,包含裸片随时间的物理变化可能会干扰将数据可靠地写入到裸片的NVM存储元件。写入验证程序可以用于例如通过回读数据以检验是否正确地写入(编程)数据来保持数据完整性。应注意,在NVM领域内,写入到NVM阵列(例如,快闪NAND TLC阵列)的数据通常称为被“编程”到阵列。本文中,为了清楚起见,在多个描述中使用术语“写入”。在适当情况下,例如,当提及TLC储存元件内的状态的个别编程时,也使用术语“编程”。
在一些实例中,为了在写入过程之后验证数据,写入验证组件回读写入数据并且检查FBC(失败位计数,还可以称为翻转位计数)。只要FBC不超过指示正确写入数据的阈值,写入检验组件就会将所述数据视为良好数据。如果FBC超过阈值,则写入检验组件因此检测到错误并且SSD恢复数据并且将数据写入到NVM阵列中的其它位置。然而,除非SSD保存数据的副本以允许检索,否则在写入阶段之后将无法使用所述数据以允许重新写入数据。
一种简单但相对昂贵的解决方案是生成写入数据的异或(XOR)签名并且将签名保存在SSD的动态随机存取存储器(DRAM)中,直到写入数据被宣告为“良好”,例如,写入数据由写入检验过程验证。在具有NAND NVM阵列的多个当前SSD中,需要保存(且因此保护)的每个数据块可能非常大,因此需要较大DRAM,这会增加SSD的总体费用以及消耗更多电力并且需要更多尺寸和空间。另一选项是将XOR签名写入到NVM裸片上的SLC块中。(参见例如,授予Shapira等人的美国专利10,133,645)此方法避免消耗大量RAM的需求,并且由于将数据写入到SLC相对较快,因此可以减少总体性能下降,然而仍存在一些性能下降。又另一选项是将所有数据写入两次。由于多于一个NVM阵列块因缺陷同时损坏的几率(引起写入错误)非常低,因此这种备份通常是可靠的。然而,由于将所有数据写入两次,因此此方法降低SSD的整体性能。所述方法还可以消耗NVM阵列的大部分,因此减少可用于用户的存储量。
本文公开用于校正NVM阵列中的写入错误的方法和设备。简单来说,在一些实例中,SLC写入保护被组合成MLC写入流(例如,TLC写入流)。例如,将数据写入到MLC,同时将相同的数据并行写入到SLC。在MLC块包含引起高FBC的缺陷的情况下,SLC数据由此提供MLC数据的备份。使用例如写入检验来检验MLC数据,其中应用一系列写入检验脉冲来回读所存储数据。如果成功地检验MLC数据,则SLC块可以被擦除或以其它方式用新数据覆写。如果未成功检验MLC数据,则从SLC块恢复数据。本文中,通过“并行地”表示约同时地(或几乎同时地)将数据写入到MLC和SLC两者。实际上,一系列脉冲用于将数据存储到MLC,并且一个(或多个)并行SLC编程脉冲可能不会在与对应MLC脉冲完全相同的瞬间出现。相反,在应用MLC脉冲序列的间隔时间内施加一个(或多个)SLC脉冲时,所述SLC脉冲是并行的。在本文中的一些实例中,公共电荷泵用于生产脉冲以施加到SLC和MLC块,并且在那些实例中,同时脉冲可以同时施加到SLC和MLC块。
SLC写入可以耦合到TLC写入(作为“耦合SLC/TLC写入”),因此一个命令可以启动TLC和SLC写入两者。以此方式,不会显著损害整体写入性能,数据在写入过程受到保护,并且不会消耗额外的RAM来保存数据的副本以供恢复。在其它实例中,SLC写入可以与QLC写入耦合(作为“耦合SLC/QLC写入”),或更一般地,SLC写入可以与任何MLC写入耦合(作为“耦合SLC/MLC写入”)。在一些实例中,NVM阵列的内部地址解码器被配置成同时选择两个存储块。例如,NVM阵列的SSD控制器可以被配置成将额外处理发送到NVM阵列,从而提供用于存储数据的除了TLC块地址之外的SLC保护块(并行)地址,因此NVM阵列可以并行地将数据存储在SLC块和TLC块中。
在执行TLC写入的一些实例中,TLC写入程序使用代码块来将位编程到存储于代码块锁存器中的TLC块的上页、中页和下页中。使用由电荷泵提供的增加电压的一系列脉冲将代码块内的信息(表示“状态”)编程到TLC页中。在对每个状态进行编程之后,将代码块锁存器中的对应位切换为值以指示所述特定状态的进一步编程被阻止。也就是说,在将特定状态编程到TLC元件或单元中后,对应信息从代码块锁存器丢失。因此,本文中描述用于在信息从TLC代码块丢失之前触发对应SLC块的编程的方法。如所说明,在说明性实例中,用于对TLC的特定状态(例如,A状态)进行编程的最后一个脉冲使用公共电荷泵触发SLC编程脉冲。在说明性实例中,在第7,158,421和7,206,230号美国专利中更详细地论述的快速通过写入(QPW)程序确定用于对每个状态进行编程的最后一个脉冲并且可以用于触发SLC编程脉冲。(第7,158,421和7,206,230号美国专利以引用方式并入本文中。)
在相同电荷泵用于为SLC页和MLC页两者生成脉冲的装置中,等待使用最后一个脉冲的主要原因是允许电荷泵在被触发之前达到高压。在这些装置中,单个脉冲用于对SLC进行编程,然而MLC使用将数据逐渐“推送”到单元中(例如,通过使用QPW)的一系列脉冲进行编程。由于电荷泵对于SLC页和MLC页两者共用,因此如果替代地在MLC编程操作开始时立即施加脉冲,则脉冲会相对较弱且因此可能不会对相应SLC页进行编程。通过等到最后一刻(例如,通过等到生成用于对当前MLC状态进行编程的最后一个脉冲),脉冲因此是最强的并且应成功地对SLC页以及MLC状态进行编程。因此,在锁存器中的数据丢失(通过阻止过程)之前,适当地对SLC页进行编程。
由于这些方法采用NVM阵列中的额外块(即,暂时使用SLC块,直到在检验TLC写入之后可以释放SLC块),因此在一些实施方案中,NVM装置可能会在极少数情况下用完块。因此,在一些实例中,耦合SLC/TLC写入是机会性的。也就是说,如果装置具有足够数量的空闲块,则NVM装置将仅执行耦合SLC/TLC写入。由于数据存储控制器知晓NVM装置中的空闲块的量,因此每当存在可以耦合(通过耦合SLC/TLC写入)的足够块时,数据存储控制器将所述块用于保护。如果不存在足够块,则XOR快照可以替代地用于保存数据(其中数据的XOR副本由数据存储控制器存储于DRAM中或存储于SLC块中)。应注意,由于NVM装置极少地用完块(特别是由于块的数量通常多于针对NVM装置列出的导出容量),因此不太可能需要使用XOR快照保护程序,因此在一些实例中,仅从装置省略XOR快照电路。
在多个说明性实施例中,将SLC写入保护组合到MLC写入流中以进行并行处理的显著优点在于,如果在数据的编程之前或之后替代地执行写入保护,则并行处理减少或消除另外可能需要的开销。例如,在通过将数据的XOR快照存储于DRAM中来提供写入保护的系统中,可能需要开销处理来将快照存储于DRAM中。在通过将XOR快照存储于NVM的不同部分中来提供写入保护的系统中,在数据存储于MLC中之前或之后,还可能需要开销处理来生成和存储XOR快照,这可能会降低性能。通过替代地将SLC写入保护包含在MLC写入流内,并行地存储数据并且在MLC写入之前或之后不需要开销处理。以此方式,SLC保护“隐藏”在MLC写入流内并且不会降低系统性能。也可以实现其它优势或优点。
示例性装置、系统和程序
图1是系统100的框图,所述系统包含具有被配置成执行耦合SLC/MLC写入(例如,耦合SLC/TLC写入)的NVM的示例性SSD。更具体来说,系统100包含主机102和耦合到主机102的SSD 104(或其它DSD)。主机102将命令提供到SSD 104,以在主机102与SSD 104之间传递数据。例如,主机102可以将写入命令提供到SSD 104以将数据写入到SSD 104,或将读取命令提供到SSD 104以从SSD 104读取数据。主机102可以是需要进行数据存储或检索并且具有用于与SSD 104通信的兼容接口的任何系统或装置。例如,仅举几例,主机102可以是计算装置、个人计算机、便携式计算机、工作站、服务器、个人数字助理、数码相机,或数字电话。
SSD 104包含主机接口106、SSD或DSD控制器108、工作存储器110(例如,DRAM或其它易失性存储器)、NVM接口112,以及具有被配置成执行耦合SLC/MLC写入的一个或多个裸片的NVM阵列114。主机接口106耦合到控制器108并促进主机102与控制器108之间的通信。控制器108通过NVM接口112耦合到易失性存储器110以及NVM阵列114。主机接口106可以是任何合适的通信接口,例如非易失性存储器快速(NVMe)接口、通用串行总线(USB)接口、串行外围设备(SP)接口、高级技术附件(ATA)或串行高级技术附件(SATA)接口、小型计算机系统接口(SCSI)、IEEE 1394(火线)接口等。在一些实施例中,主机102包含SSD 104。在其它实施例中,SSD 104远离主机102或包含在与主机102通信耦合的远程计算系统中。例如,主机102可以通过无线通信链路与SSD 104通信。NVM阵列114可以包含多个裸片,其中一些裸片配置用于SLC存储,而其它的裸片配置用于MLC存储(例如,TLC存储)。
尽管在图1所说明的实例中,SSD 104包含经由接口112在控制器108与NVM阵列114之间的单个通道,但是本文所描述的主题不限于具有单个存储器通道。例如,在一些NAND存储器系统架构中,取决于控制器能力,两个、四个、八个或更多个NAND通道将控制器和NAND存储器装置耦合。在本文描述的实施例中的任一个中,即使附图中示出单个通道,在控制器与存储器裸片之间也可以使用多于单个通道。控制器108可以实施于单个集成电路芯片中并且可以通过一个或多个命令通道与NVM 114中的存储器的不同层通信。
控制器108控制SSD 104的操作。在各种方面中,控制器108通过主机接口106从主机102接收命令并且执行命令以在主机102与NVM阵列114之间传递数据。此外,控制器108可以管理对易失性存储器110的读取和写入,以执行由控制器实现的各种功能并且维护和管理存储于易失性存储器110中的缓存信息。
控制器108可以包含任何类型的处理装置,例如微处理器、微控制器、嵌入式控制器、逻辑电路、软件、固件等,以用于控制SSD 104的操作。在一些方面中,本文所描述的由控制器108执行的一些或全部功能可以替代地由SSD 104的另一元件执行。例如,SSD 104可以包含微处理器、微控制器、嵌入式控制器、逻辑电路、软件、固件、专用集成电路(ASIC),或任何种类的处理装置,用于执行本文所描述的由控制器108执行的一个或多个功能。根据其它方面,本文所描述的由控制器108执行的一个或多个功能替代地由主机102执行。在另外其它方面,本文所描述的由控制器108执行的一些或全部功能可以替代地由另一元件,例如,包含非易失性存储器元件和磁存储元件两者的混合驱动器中的控制器执行。
工作存储器110可以是任何合适的存储器、计算装置,或能够存储数据的系统。例如,工作易失性存储器110可以是普通RAM、DRAM、双数据速率(DDR)RAM、静态RAM(SRAM)、同步动态RAM(SDRAM)、快闪存储装置、可擦除可编程只读存储器(EPROM)、电可擦除可编程ROM(EEPROM)等。在各种实施例中,在主机102与NVM阵列114之间的数据传递期间,控制器108使用工作存储器110或其一部分来存储数据。例如,工作存储器110或易失性存储器110的一部分可以是缓存存储器。NVM阵列114通过NVM接口112从控制器108接收数据并且存储数据。NVM阵列114可以是任何合适类型的非易失性存储器,包含SLC和MLC存储元件或等效物,例如NAND型快闪存储器阵列裸片等。在一些实施例中,工作存储器110可以由例如MRAM、PCM、ReRAM等的非易失性存储器替代,以充当用于整个装置的工作存储器。
在图1的实例中,SSD控制器108可以包含硬件、固件、软件,或提供耦合SLC/MLC写入控制器116以用于NVM阵列114的其任何组合。例如,NVM阵列114的SSD控制器108可以被配置成将额外处理发送到NVM阵列114,从而提供用于存储数据的除了MLC块地址之外的SLC保护块(并行)地址,因此NVM阵列114可以并行地将数据存储在SLC块和MLC块中。
尽管图1示出示例性SSD并且SSD在整个说明书中一般用作说明性实例,但是各种所公开的实施例未必限于SSD应用/实施方案。作为实例,所公开的NVM阵列和相关联处理组件可以实施为包含其它处理电路和/或组件的封装的一部分。例如,处理器可以包含嵌入式NVM阵列以及本文所描述的用于耦合SLC/MLC写入的相关联电路和/或组件,或以其它方式与嵌入式NVM阵列以及本文所描述的用于耦合SLC/MLC写入的相关联电路和/或组件耦合。作为一个实例,处理器可以将某些耦合SLC/MLC写入任务分流到NVM和相关联电路和/或组件。作为另一实例,SSD控制器108可以是另一类型的装置中的控制器并且仍被配置成执行或控制耦合SLC/MLC写入并且执行本文所描述的一些或全部其它功能。在一些实例中,SSD使用NVM阵列114执行或控制耦合SLC/MLC写入。在其它实例中,NVM阵列114包含片上逻辑以执行耦合SLC/MLC写入。下文中将描述实例,其中NVM阵列114包含一个或多个裸片,所述裸片包含合适的片上逻辑(使用例如阵列下电路)。
图2是示例性NVM阵列200的框图,所述NVM阵列包含NVM存储装置阵列202(其可以形成于单独裸片上)和耦合SLC/MLC控制逻辑204,所述耦合SLC/MLC控制逻辑可以使用一个或多个裸片内或连接到裸片的电路内的阵列下或阵列旁(或另一额外阵列)电路来配置。并未在图中说明可以用于实际NVM阵列中的全部电路或存储器组件,例如,电压调节组件、时钟等。相反仅示出概述为块或示意图的选定组件和电路。示例性NVM阵列202包含可以耦合到一个或多个电荷泵209的SLC块206和MLC块208(例如,TLC块)。在一些实例中,公共电荷泵209生成脉冲以施加到SLC块206和MLC块208两者。耦合SLC/MLC控制逻辑204包含用于使用SLC块206和MLC块208执行耦合SLC/MLC写入,用于检验到MLC块的写入,以及用于对任何MLC写入故障(例如,由于NVM裸片200中的缺陷)作出响应的组件。
耦合SLC/MLC控制逻辑204包含耦合SLC/MLC写入数据输入组件210,所述耦合SLC/MLC写入数据输入组件包含被配置成从SSD控制器接收数据以存储在NVM阵列202中以及用于写入数据的SLC地址和MLC地址两者的电路。地址解码器212包含被配置成基于输入地址而选择用于耦合SLC/MLC写入的选择SLC块206内的一个或多个SLC块以及MLC块208内的一个或多个MLC块的电路。应注意,对于TLC实例,由于单个TLC块存储的数据是单个SLC块的三倍,因此针对每个TLC块选择三个SLC块来存储数据。耦合SLC/MLC写入组件214包含被配置成将数据并行写入(编程)到选定SLC块和选定MLC块两者的电路。写入检验组件216包含被配置成使用利用FBC检测器217测量到的FBC数据检验MLC数据的电路。例如,写入检验组件216可以将一系列写入检验脉冲施加到MLC块,其中存储数据以读出用于与SLC块中的相同数据进行比较的数据,以检测用于与指示存储错误的检测阈值进行比较的FBC。
耦合SLC/MLC写入恢复组件218包含被配置成从SLC块恢复数据(如果MLC写入失败)的电路。例如,写入恢复组件218可以读出SLC数据并且将SLC数据存储在锁存器中以用于另一耦合SLC/MLC写入。耦合SLC/MLC重新写入控制器220包含被配置成使用恢复数据执行另一耦合SLC/MLC写入以将数据重新存储在NVM阵列202内的其它位置中的电路。使用写入检验组件216再次执行写入检验,并且如果检测到另一写入错误,则仍可以将数据再次重新存储在另一位置中。然而,在实际应用中,极少地需要多于两个耦合SLC/MLC写入来成功地存储数据。耦合SLC/MLC写入释放组件222包含被配置成释放SLC块的电路,在成功地检验MLC写入之后数据存储在所述SLC块处。在释放后,SLC块可以用其它数据覆写。耦合SLC/MLC写入确认控制器224被配置成生成用于发送到SSD的成功写入的合适确认(例如,ACK信号),或如果出于某种原因NVM裸片无法成功地存储数据,则生成否定确认(例如,NACK信号)。
就SLC块中的数据的释放而言,在已验证编程到MLC块的数据后,可以释放SLC块中的数据。在一些实例中,即使在验证之后,也会将数据保留某一时间量,所述时间量可以称为“损坏窗口”(在此期间,如果仍需要多于单个页的时间数据,则可以保留所述时间数据)。还应注意,在单个编程脉冲的强度不足以进行SLC编程的情况下,NVM装置可以保持针对整个状态编程选择的“保护块”(例如,如果状态A需要三个MLC脉冲,则保护块也针对三个脉冲保持开放)。由于此方法在阵列中采用额外块(这些块与MLC数据一起循环),因此NVM装置可能会用完块。因此,如上所述,所述方法是机会性的。也就是说,如果装置具有足够数量的空闲块,则NVM装置将仅执行耦合SLC/MLC写入。由于数据存储控制器知晓NVM装置中的空闲块的量,因此每当存在可以耦合(通过耦合SLC/MLC写入)的足够块时,数据存储控制器将所述块用于保护。如果不存在足够块,则可以替代地使用XOR保护电路226获取XOR快照以节省数据(其中数据的XOR副本存储在SLC阵列206中)。由于NVM装置极少地用完块,特别是由于块的数量多于针对NVM装置列出的导出容量,因此通常不太可能需要使用XOR快照保护程序。因此,在一些实例中,省略XOR保护电路。而且如上文所提及,在一些实例中,QPW用于将数据写入(编程)到MLC块中,因此在图2中示出QPW控制器228。下文论述基于QPW的实施例。
图3是示出可以由图2的NVM阵列200或其中MLC存储元件是TLC存储元件的一个或多个其它适当配备的裸片执行的程序的流程图300。从图3的块302开始,NVM阵列接收或输入来自数据存储控制器的数据以存储在NVM阵列中,以及SLC地址和TLC地址两者以写入数据。在块304处,NVM阵列对地址进行解码,并且例如通过选择用于要存储数据的每个字线的三个SLC字线和一个TLC字线,基于输入地址而选择用于耦合SLC/TLC写入的一个或多个SLC块和一个或多个TLC块。在块306处,NVM阵列与选定SLC块和选定TLC块两者并行地编程(写入)数据。在块308处,NVM裸片将写入检验脉冲施加到TLC数据,以通过例如测量所存储TLC数据的FBC并且将FBC与错误检测阈值相比较来检验TLC数据的成功存储。在一些实例中,读取数据可以与SLC数据相比较以检测指示错误的任何差异。
在决策块310处,如果在TLC块数据中检测到错误,则处理继续到块312,以通过从SLC块读取数据并且选择新的SLC和TLC块重新存储数据来恢复数据。处理随后返回到块306,其中NVM阵列在新的存储位置执行另一耦合SLC/TLC写入。写入检验在块308处再次由NVM阵列执行,并且如果在块310处检测到另一写入错误,则仍可以将数据再次重新存储在另一位置中。但是,假设目标成功地存储数据,处理继续到块314,其中NVM阵列释放SLC块,因此SLC块可以由其它数据覆写。在块316处,NVM阵列将耦合SLC/TLC写入确认发送到数据存储控制器。尽管未在图3中具体示出,但是如果尽管反复尝试NVM阵列仍无法成功地存储数据,则可以将合适的错误信号传送到数据存储控制器(例如,参考图2论述的NACK信号)。
图4示出TLC数据存储方案400并且描绘上页(UP)、中页(PM)和下页(LP)的位到擦除(“Er”)状态、“A”状态、“B”状态、“C”状态、“D”状态、“E”状态、“F”状态和“G”状态的映射。最高有效位位置可以指示下页的值,并且最低有效位位置可以指示上页的值。应了解,图4的实例是说明性的并且其它实施方案(例如,位到状态的不同映射)在本公开的范围内。图4中所描绘的信息可以存储在字线(或块)中。也就是说,在本文描述的一些实施方案中,字线可以对应于存储器中的TLC分区(或可以包含在存储器中的TLC分区中)。字线的每个存储元件可以可编程为指示一个或多个值的状态(例如,快闪配置中的阈值电压或电阻存储器配置中的电阻状态)。如图4中所示,在说明性TLC方案400中,字线的每个存储元件可以可编程为指示三个值,例如0、1、1或0、0、1的状态。UP、MP和LP数据可以存储于对应于锁存器:ADL、BDL和CDL(其中DL代表数据锁存器)中。在写入TLC页时,NVM存储逻辑生成将TLC单元中的电荷“移动”到某些层级以便依序对各种位进行编程的编程脉冲。(本文中,数据的UP、MP和LP页还可以称为ADL、BDL和CDL页,因为其彼此对应)。
图5示出示例性的一组锁存器500,包含ADL 502(对应于下TLC页LP)、BDL 504(对应于中TLC页MP)、CDL 506(对应于上TLC页UP)以及TDL 508或XDL,其可以用于存储用于QPW写入进程的QPW信息(例如,QPW“符号”或值),包含用于低于阈值的电压(VL)和高于阈值的电压(VH)的值。图5还示出TLC代码块510UP、MP和LP页。如图所示,每一页存储状态Er和A-G的值,其中Er指代擦除状态,所述擦除状态可以依序使用一系列脉冲被编程到TLC单元。在图5的实例中,下页的前四个状态全部为零。如上所述,在一些实施方案中,在数据被编程到TLC时,信息从TLC代码块丢失,因为TLC代码块中的对应项被切换到指示阻止的值(其可以是表示Er状态的相同值)。也就是说,除了存储要编程的数据之外,ADL、BDL和CDL锁存器还存储阻止“符号”或值。
现在转向图6-7,描述刚好在丢失TLC代码块中的对应信息之前采用QPW或其它合适的电路或程序来触发SLC脉冲的示例性实施例。简单来说,通过QPW,使用在幅度上彼此不同(相差逐渐变小的量)的一系列脉冲来编程每个TLC状态,以便防止施加太大的编程脉冲。装置确定下一脉冲是否会触发特定状态(例如,A状态)的实际编程。这是对状态进行编程所需的最后一个脉冲。在所述脉冲施加到TLC元件后,保存在代码块锁存器中的状态的对应信息随后丢失。
如上所述,在SLC编程有单个脉冲并且公共电荷泵用于对SLC和MLC两者进行编程的装置中,等待使用最后一个脉冲以允许电荷泵在被触发之前达到高压是有利的。由于电荷泵对于SLC和MLC两者共用,因此如果替代地在MLC编程操作开始时(例如,在状态A编程操作开始时)立即施加脉冲,则脉冲可能太微弱而无法有效地对对应SLC页进行编程。通过等到最后一个可行时刻(例如,通过等到生成用于对当前MLC状态进行编程的最后一个脉冲),脉冲因此是最强的并且具有成功地对SLC页以及MLC状态进行编程的最佳可能性。以此方式,在锁存器中的数据丢失之前适当地对SLC进行编程(通过阻止过程,其中锁存器中的对应数据条目设定成擦除状态)。
耦合TLC/SLC写入可以使用来自QPW(或其它合适的电路或程序)的信息来检测或确定何时使用公共电荷泵触发编程脉冲,因此可以刚好在数据会另外丢失之前使用高电压电平传递脉冲。也就是说,当在采用QPW时实施耦合SLC/MLC写入时,将并行块的选择定时为仅在用于一对页中的每一页的特定时间发生。选定块中要保护的第一页将具有ADL信息并且在状态A所需的最后一个脉冲中进行选择。选定块中要保护的第二页将具有BDL信息并且在状态B所需的最后一个脉冲中进行选择。含有CDL数据的最后一页在状态C的最后一个脉冲中进行选择。例如,指示单元几乎处于其目标电平的状态A QPW信号用作脉冲的触发事件,以在ADL数据丢失之前将对应ADL信息并行地编程到MLC和SLC两者中。在用于对状态B进行编程的最后一个脉冲中选择选定块中存储BDL信息的第二页(所述脉冲用作脉冲的触发事件以在BDL数据丢失之前将对应BDL信息并行地编程到MLC和SLC两者中)。最后一页含有CDL数据并且在用于对状态C进行编程的最后一个脉冲中进行选择(所述脉冲用作脉冲的触发事件以在CDL数据丢失之前将对应CDL信息并行地编程到MLC和SLC两者中)。如所提及,上述第四锁存器(TDL)保持写入进程的QPW信息,以用于确定每个状态的最后一个脉冲。
图6通过示例性方法600示出此程序。从块602开始,耦合SLC/TLC写入逻辑激活QPW(或其它合适的电路)以将一系列脉冲施加到TLC单元,以将来自ADL、BDL和CDL锁存器的状态数据依序编程到TLC字线或块。在604处,在将用于对状态A进行编程的一系列QPW脉冲施加到TLC字线或块时,耦合SLC/TLC写入逻辑确定或检测何时施加对状态A进行编程所需的最后一个脉冲(指示对应单元几乎处于其目标电平)以及使用公共电荷泵触发脉冲以将ADL数据编程到第一SLC字线或块并且将状态A并行地编程到TLC。耦合SLC/TLC写入逻辑随后将对应代码块条目设定成“阻止”,这可以是与“擦除”相同的值。在606处,在施加下一系列的QPW脉冲以将状态B编程到TLC字线或块时,耦合SLC/TLC写入逻辑确定或检测何时施加对状态B进行编程所需的最后一个脉冲(指示对应单元几乎处于其目标电平)以及使用公共电荷泵触发脉冲以将BDL数据编程到第二SLC字线或块并且将状态B并行地编程到TLC,随后将对应代码块条目设定成“阻止”。在606处,在施加下一系列的QPW脉冲以将状态C编程到TLC字线或块时,耦合SLC/TLC写入逻辑确定或检测何时施加对状态C进行编程所需的最后一个脉冲(指示对应单元几乎处于其目标电平)以及使用公共电荷泵触发脉冲以将CDL数据编程到第三SLC字线或块并且将状态C并行地编程到TLC,随后将对应代码块条目设定成“阻止”。在块608处,耦合SLC/TLC写入逻辑将额外的一系列QPW脉冲施加到TLC块或字线,以对TLC块或字线的其余状态(D-G)进行编程。
图7示出触发用于对三个SLC字线进行编程的三个SLC脉冲的时序。单元最初处于擦除状态。从时间T1开始,施加一系列QPW脉冲(图中未示出)以推动或移动TLC单元中的电荷,以开始对状态A进行编程。在此时间间隔期间,一些单元从擦除状态过渡到状态A。在时间T2处,LP编程脉冲由电荷泵产生并且施加到TLC字线或块以完成状态A的编程,以及施加到第一SLC字线或块(未示出)以将ADL数据编程到所述SLC字线或块。如已经解释,QPW控制电路施加具有彼此相差逐渐较小量的幅度的一系列脉冲并且确定何时其下一脉冲将完成对应TLC状态的编程。在数据丢失之前,最后一个或最终脉冲用作对SLC字线并行地进行编程的触发(当代码块值复位成阻止时)。
接下来,从时间T3开始,施加第二系列的QPW脉冲(图中未示出)以推动或移动TLC单元中的电荷,以开始对状态B进行编程。在此时间间隔期间,一些单元过渡到状态B。在时间T4处,MP编程脉冲由电荷泵产生并且施加到TLC字线或块以完成状态B的编程,以及施加到第二SLC字线或块(未示出)以将BDL数据编程到所述SLC字线或块。从时间T5开始,施加第三系列的QPW脉冲(图中未示出)以推动或移动TLC单元中的电荷,以开始对状态C进行编程。在此时间间隔期间,一些单元过渡到状态C。在时间T6处,UP编程脉冲由电荷泵产生并且施加到TLC字线或块以完成状态C的编程,以及施加到第三SLC字线或块(未示出)以将CDL数据编程到所述SLC字线或块。此后,尽管图7中未示出,但是可以对TLC字线或块的额外状态进行编程。
应注意,QPW是用于递增地增加用于对MLC进行编程的脉冲的电压的程序的实例。替代地可以使用其它合适程序。此外,尽管本文所提供的主要说明性实例使用MLC状态编程序列中的最后一个脉冲对MLC状态和SLC页两者进行编程(由于所述脉冲具有最高电压电平并且采用公共电荷泵),但是替代地可以使用序列中的其它脉冲。又另外,在不同电荷泵用于SLC和MLC的装置中,可以使用其它时序程序。
图8概述程序800(上文所论述),其中如果没有足够SLC块来执行完全的耦合SLC/MLC写入,则使用XOR快照来保护数据。简单来说,从块802开始,数据存储控制器从主机接收要写入到NVM阵列的数据,所述NVM阵列具有SLC和TLC块或字线。在块804处,数据存储控制器确定NVM阵列中是否存在足够SLC块以允许耦合SLC/MLC写入。在进行确定时,数据存储控制器可以考虑在NVM阵列的导出容量内可能未报告给主机的SLC块。假设如通过决策块806所指示,足够量的SLC存储器可用,则数据存储控制器在块808处执行耦合SLC/MLC写入(或控制或允许NVM阵列本身来执行耦合SLC/MLC写入)。如果没有足够量的SLC存储器可用,则例如通过创建XOR快照并将XOR快照存储在DRAM中,数据存储控制器在块810处执行替代保护程序(或控制或允许NVM阵列本身来执行替代程序)。
下文中描述各种通用示例性程序和系统。
额外示例性方法和设备
图9广泛地示出根据本公开的一个或多个方面配置的存储器装置900。存储器装置900包含SLC元件902和MLC元件904(例如,TLC或QLC存储元件)。存储器装置900还包含处理器906,所述处理器被配置成(a)执行耦合SLC/MLC写入以将数据写入(编程)到选定SLC元件并且将相同的数据并行写入(编程)到选定MLC元件;(b)确定写入到选定MLC元件的数据是否正确;以及(C)响应于确定写入到选定MLC元件的数据正确而释放选定SLC元件中的数据以用于覆写(其可以包含擦除)。上文描述实例。下文描述额外实例。如上文所解释,在至少一些实施例中,通过提供耦合SLC/MLC写入以并行地将数据编程到SLC元件和MLC元件,在MLC写入之前或之后不需要开销处理。以此方式,SLC保护“隐藏”在MLC写入流内并且不会降低系统性能。也可以实现其它优势或优点。
图10广泛地示出根据本公开的方面的过程1000。过程1000可以在具有包含SLC元件和MLC元件的NVM阵列的任何合适的存储器装置内发生。在块1002处,存储器装置接收数据以写入到包含SLC元件和MLC元件的存储器阵列。在块1004处,存储器装置执行耦合SLC/MLC写入,所述耦合SLC/MLC写入包括或包含将数据写入(例如,编程)到选定SLC元件以及将相同的数据并行写入(编程)到选定MLC元件。在块1006处,存储器装置检验写入到选定MLC元件的数据。在块1008处,响应于成功地检验写入到选定MLC元件的数据,存储器装置释放选定SLC元件中的数据以用于覆写(其可以包含擦除)。
在一些实例中,提供用于执行在图10中列出的各种功能的构件。例如,可以提供用于包含SLC元件和MLC元件的NVM阵列的设备,其中所述设备包含:用于接收数据以写入到存储器阵列的构件(例如,图2的输入组件210);用于执行耦合SLC/MLC写入以将数据写入到选定SLC元件并且将相同的数据并行写入到选定MLC元件的构件(例如,图2的耦合SLC/MLC写入组件214);用于检验写入到选定MLC元件的数据的构件(例如,图2的写入检验组件216);以及用于响应于成功地检验写入到选定MLC元件的数据而释放选定SLC元件中的数据以用于覆写(其可以包含擦除)的构件(例如,图2的释放组件222)。
又另外,在至少一些实例中,可以提供用于控制图10中所示的功能和/或本文中所示或描述的其它功能的非暂时性机器可读指令。例如,指令可以包含以下项中的一个或多个:用于接收数据以写入到存储器阵列的指令;用于执行耦合SLC/MLC写入以将数据写入到选定SLC元件并且将相同的数据并行写入到选定MLC元件的指令;用于检验写入到选定MLC元件的数据的指令;以及用于响应于成功地检验写入到选定MLC元件的数据而释放选定SLC元件中的数据以用于覆写(其可以包含擦除)的指令。
图11示出根据本公开的一个或多个方面的配置的设备1100的实施例。设备1100或其组件可以体现一个或多个NAND裸片或支持数据存储的某一其它类型的NVM装置或存储器芯片,或实施于一个或多个NAND裸片或支持数据存储的某一其它类型的NVM装置或存储器芯片内。在各种实施方案中,设备1100或其组件可以是处理器、控制器、计算装置、个人计算机、便携式装置,或工作站、服务器、个人数字助理、数码相机、数字电话、娱乐装置、医疗装置、自动驾驶车辆控制装置、空中无人机、智能眼镜、智能手表或其它可穿戴式装置,或存储、处理或使用数据的任何其它电子装置的组件。
设备1100包含通信接口1102、物理存储器阵列(例如,NVM块、页或字线)1104,以及额外阵列处理电路1110(例如,阵列下或阵列旁电路)。这些组件可以通过一般由图11中的连接线表示的合适组件耦合到彼此和/或放置成彼此电通信。尽管未示出,但是可以提供本领域中熟知的其它电路,例如,时序源、外围设备、电压调节器和功率管理电路,因此将不再进一步进行任何描述。
通信接口1102提供用于通过传输媒体与其它设备通信的构件。在一些实施方案中,通信接口1102包含适于促进相对于系统中的一个或多个装置的双向信息传送的电路和/或编程设计(例如,程序)。在一些实施方案中,通信接口1102可以被配置用于基于导线的通信。例如,通信接口1102可以是总线接口、发送/接收接口,或某一其它类型的信号接口,包含用于输出和/或获得信号(例如,从SSD输出信号和/或将信号接收到SSD中)的电路。通信接口1102充当用于接收的构件和/或用于传输的构件的一个实例。
物理存储器阵列1104可以表示包含SLC块或字线1106以及MLC块或字线1108(例如,TLC或QLC块)的一个或多个NAND块或页。应注意,SLC块和MLC块可以处于相同NVM阵列内的不同裸片上。物理存储器阵列1104可以用于存储由电路1110或设备1100的某一其它组件控制的数据。物理存储器阵列1104可以耦合到电路1110,因此电路1110可以从物理存储器阵列1104读取或感测信息并且将信息写入或编程到物理存储器阵列1104。也就是说,,物理存储器阵列1104可以耦合到电路1110,因此物理存储器阵列1104可由电路1110存取。数据可以暂时地存储在一个或多个锁存器1111中,所述锁存器在此实例中包含ADL 1113、BDL1115、CDL 1117和TDL 1119。
电路1110被布置或配置成获得、处理和/或发送数据,控制数据访问和存储,发布或响应命令,以及控制其它所需操作。例如,电路1110可以实施为一个或多个处理器、一个或多个控制器,和/或被配置成执行功能的其它结构。根据本公开的一个或多个方面,电路1110可以适合于执行本文中所描述的额外阵列特征、过程、功能、操作和/或例程中的任一个或全部。例如,电路1110可以被配置成执行参考其它图描述的步骤、功能和/或过程中的任一个。如本文所使用,关于处理电路1110的术语“适合于”可以指电路被配置、采用、实施和/或编程为根据本文所描述的各种特征执行特定过程、功能、操作和/或例程中的一个或多个。电路可以包含专用处理器,例如,用作用于执行参考其它图描述的操作中的任一个的构件(例如,结构)的ASIC。电路充当处理构件的实例。在各种实施方案中,电路可以提供和/或至少部分地并入有上文针对所示各种实施例中的耦合SLC/MLC写入描述的功能性,包含例如图2的逻辑204。
根据设备1100的至少一个实例,处理电路1110可以包含以下项中的一个或多个:电路/模块1120,其被配置用于接收要写入的数据;电路/模块1122,其被配置用于控制或执行耦合SLC/MLC写入,例如,耦合SLC/TLC写入;电路/模块1124,其被配置用于例如通过施加写入检验脉冲以确定用于与指示数据存储错误的阈值进行比较的FBC来检验MLC写入;电路/模块1126,其被配置用于响应于成功的MLC写入而从SLC释放数据;电路/模块1128,其被配置用于响应于不成功的MLC写入而重复耦合SLC/MLC写入;电路/模块1130,其被配置用于从数据存储控制器接收SLC块/字线不充足的指示(即,用于执行耦合SLC/MLC写入的块的数目不充足);电路/模块1132,其被配置用于生成数据的XOR快照(如果接收到SLC块/字线不充足的指示)以用作替代保护方案;以及电路/模块1134,其被配置用于控制QPW,包含用于确定对特定状态(如上文所解释)进行编程所需的最后一个脉冲以用于定时SLC脉冲的电路。
在至少一些实例中,可以提供用于执行图11中所示的功能和/或本文所示或所描述的其它功能的构件。例如,构件可以包含以下项中的一个或多个:用于接收要写入的数据的构件,例如电路/模块1120;用于控制或执行耦合SLC/MLC写入,例如耦合SLC/TLC写入的构件,例如电路/模块1122;用于例如通过施加写入检验脉冲以确定用于与指示数据存储错误的阈值进行比较的FBC来检验MLC写入的构件,例如电路/模块1124;用于响应于不成功MLC写入而重复耦合SLC/MLC写入的构件,例如电路/模块1126;用于响应于不成功MLC写入而重复耦合SLC/MLC写入的构件,例如电路/模块1128;用于从数据存储控制器接收SLC块/字线不充足的指示(即,用于执行耦合SLC/MLC写入的块的数目不充足)的构件,例如电路/模块1130;用于生成数据的XOR快照(如果接收到SLC块/字线不充足的指示)以用作替代保护方案的构件,例如电路/模块1132;以及用于控制QPW的构件,例如电路/模块1134,包含用于确定对特定状态(如上文所解释)进行编程所需的最后一个脉冲以用于定时SLC脉冲的构件。
额外方面
本文所描述的至少一些处理电路一般可以适用于处理,包含执行存储在存储媒体上的编程代码。如本文所使用,术语“代码”或“编程”应广泛地解释为包含但不限于指令、指令集、数据、代码、代码段、程序代码、程序、编程、子程序、软件模块、应用程序、软件应用程序、软件包、例程、子例程、对象、可执行文件、执行的线程、过程、功能等,无论是否被称为软件、固件、中间件、微码、硬件描述语言,或其它情况。
本文所描述的至少一些处理电路可以被布置成获得、处理和/或发送数据,控制数据访问和存储,发布命令,以及控制其它所需操作。在至少一个实例中,处理电路可以包含被配置成实施由适当媒体提供的所需编程的电路。例如,处理电路可以实施为一个或多个处理器、一个或多个控制器和/或被配置成执行可执行编程的其它结构。处理电路的实例可以包含通用处理器、数字信号处理器(DSP)、ASIC、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件,或其被设计成执行本文所描述的功能的任何组合。通用处理器可以包含微处理器以及任何常规的处理器、控制器、微控制器或状态机。至少一些处理电路也可以实施为计算组件的组合,例如控制器和微处理器的组合、多个微处理器、结合ASIC和微处理器的一个或多个微处理器、或任何其它数目的不同配置。本文提及的处理电路的各种实例是用于说明,且本公开范围内的其它合适配置也是预期的。
本文所描述的主题的方面可以实施于任何合适的NVM,包含例如3D NAND快闪存储器的NAND快闪存储器中。更一般而言,半导体存储器装置包含工作存储器装置,例如DRAM或SRAM装置、NVM装置、ReRAM、EEPROM、快闪存储器(其也可以视为EEPROM的子集)、铁电随机存取存储器(FRAM)和MRAM,以及能够存储信息的其它半导体元件。每种类型的存储器装置可以具有不同的配置。例如,快闪存储器装置可以NAND或NOR配置来进行配置。
存储器装置可以由无源和/或有源元件以任何组合形成。借助于非限制性实例,无源半导体存储器元件包含ReRAM装置元件,所述ReRAM装置元件在一些实施例中包含电阻率切换存储元件,例如反熔丝相变材料等;且任选地包含导引元件,例如二极管等。另外,借助于非限制性实例,有源半导体存储器元件包含EEPROM和快闪存储器装置元件,所述快闪存储器装置元件在一些实施例中包含含有电荷存储区的元件,例如浮动栅极、导电纳米粒子或电荷存储电介质材料。
多个存储器元件可以被配置成使得其串联连接或使得每个元件可以被单独存取。借助于非限制性实例,呈NAND配置的快闪存储器装置(NAND存储器)通常含有串联连接的存储器元件。NAND存储器阵列可以被配置成使得阵列由多个存储器串构成,其中一串由共享单个位线且作为群组被存取的多个存储器元件构成。或者,存储器元件可以被配置成使得每个元件可被单独存取,例如NOR存储器阵列。NAND和NOR存储器配置是示例性的,且存储器元件可以其它方式来配置。位于衬底内和/或衬底上方的半导体存储器元件可以布置成二维或三维,例如二维存储器结构或三维存储器结构。
在二维存储器结构中,半导体存储器元件布置于单个平面或单个存储器装置层级中。通常,在二维存储器结构中,存储器元件布置在大体上平行于支撑存储器元件的衬底的主表面延伸的平面中(例如,在x-z方向平面中)。衬底可以是上面或其中形成存储器元件的层的晶片,或可以是在存储器元件形成之后附接到存储器元件的载体衬底。作为非限制性实例,衬底可以包含例如硅的半导体。存储器元件可以例如多个行和/或列的有序阵列布置在单个存储器装置层级中。然而,存储器元件可以非规则或非正交配置排列。存储器元件可以各自具有两个或多于两个电极或接触线,例如位线和字线。
三维存储器阵列布置成使得存储器元件占据多个平面或多个存储器装置层级,由此形成呈三维(即,在x、y和z方向上,其中z方向大体上垂直于衬底的主表面,且x和y方向大体上平行于衬底的主表面)的结构。作为非限制性实例,三维存储器结构可以竖直地布置为多个二维存储器装置层级的堆叠。作为另一非限制性实例,三维存储器阵列可以布置为多个竖直列(例如,大体上垂直于衬底的主表面(即,在z方向上)延伸的列),其中每一列在每一列中具有多个存储器元件。所述列可以例如在x-y平面中布置成二维配置,从而产生具有在多个竖直堆叠的存储器平面上的元件的存储器元件的三维布置。呈三维形式的存储器元件的其它配置也可以构成三维存储器阵列。
借助于非限制性实例,在三维NAND存储器阵列中,存储器元件可以耦合在一起以形成在单个水平(例如x-y)存储器装置层级内的NAND串。或者,存储器元件可以耦合在一起以形成横穿多个水平存储器装置层级的竖直NAND串。可以设想其它三维配置,其中一些NAND串含有单个存储器层级中的存储器元件,而其它串含有横跨多个存储器层级的存储器元件。三维存储器阵列还可以设计成NOR配置和ReRAM配置。
通常,在整体式三维存储器阵列中,在单个衬底上方形成一个或多个存储器装置层级。任选地,整体式三维存储器阵列还可以具有至少部分地在单个衬底内的一个或多个存储器层。作为非限制性实例,衬底可以包含例如硅的半导体。在整体式三维阵列中,构成阵列的每个存储器装置层级的层通常形成于阵列的下伏存储器装置层级的层上。然而,整体式三维存储器阵列的相邻存储器装置层级的层可以被共享,或在存储器装置层级之间具有介入层。
随后二维阵列可以再次单独地形成且接着封装在一起以形成具有多个存储器层的非整体式存储器装置。例如,可以通过在单独的衬底上形成存储器层级且接着使存储器层级彼此堆叠来构造非整体式堆叠存储器。衬底可以在堆叠之前薄化或从存储器装置层级去除,但因为存储器装置层级初始地形成于单独的衬底上方,所以所得存储器阵列不是整体式三维存储器阵列。此外,多个二维存储器阵列或三维存储器阵列(整体式或非整体式)可以形成于单独的芯片上且接着封装在一起以形成堆叠芯片存储器装置。
通常需要相关联电路来操作存储器元件并与存储器元件通信。作为非限制性实例,存储器装置可以具有用于控制和驱动存储器元件以实现例如编程和读取的功能的电路。此相关联电路可以与存储器元件位于同一衬底上和/或位于单独的衬底上。例如,用于存储器读写操作的控制器可以位于单独的控制器芯片上和/或与存储器元件位于相同的衬底上。本领域技术人员将认识到,本文所描述的主题不限于所描述的二维和三维示例性结构,但是覆盖在本文所描述的主题的精神和范围内且由本领域技术人员理解的所有相关存储器结构。
提供本文陈述的实例是为了说明本公开的某些概念。上文所示的设备、装置或组件可以被配置成执行本文描述的方法、特征或步骤中的一个或多个。本领域的普通技术人员将了解,这些本质上仅为说明性的,且其它实例可以落在本公开和所附权利要求书的范围内。基于本文中的教示,本领域的技术人员应了解,本文中所公开的方面可以独立于任何其它方面实施,且可以通过不同方式组合这些方面中的两个或更多个方面。例如,可以使用本文中所阐述的任何数目个方面来实施设备或实践方法。另外,通过使用除了在本文中所阐述的方面中的一个或多个方面之外或不同于在本文中所阐述的方面中的一个或多个方面的其它结构、功能性或结构和功能性,可以实施此设备或可以实践此方法。
上文已经参考根据本公开的实施例的方法、设备、系统和计算机程序产品的示意性流程图和/或示意性框图描述了本公开的各方面。应理解,可以通过计算机程序指令来实施示意性流程图和/或示意性框图的每个块以及示意性流程图和/或示意性框图中的块的组合。这些计算机程序指令可以被提供给计算机的处理器或其它可编程数据处理设备以产生机器,从而使得经由处理器或其它可编程数据处理设备执行的指令创建用于实施一个或多个示意性流程图和/或示意性框图的块中指定的功能和/或动作的构件。
本文描述的主题可以硬件、软件、固件或其任何组合来实施。因此,本文中使用的术语“功能”、“模块”等可以指代硬件,其也可以包含用于实施所描述的特征的软件和/或固件组件。在一个实例实施方案中,本文中所描述的主题可以使用上面存储有计算机可执行指令的计算机可读媒体来实施,所述计算机可执行指令当由计算机(例如,处理器)执行时控制计算机以执行本文中所描述的功能性。适用于实施本文描述的主题的计算机可读媒体的实例包含非暂时性计算机可读媒体,例如磁盘存储器装置、芯片存储器装置、可编程逻辑装置和专用集成电路。另外,实施本文描述的主题的计算机可读媒体可以位于单个装置或计算平台上,或者可以分布在多个装置或计算平台上。
还应该注意,在一些替代的实施方案中,块中提及的功能可以不按图中所提及的顺序出现。例如,取决于所涉及的功能性,连续示出的两个块实际上可以基本上同时执行,或所述块有时可以以相反顺序执行。可以构想其它步骤和方法,这些步骤和方法在功能、逻辑或效果上等同于所示附图的一个或多个块或其部分。尽管在流程图和/或框图中可以采用各种箭头类型和线条类型,但是应理解,它们不限制对应实施例的范围。举例来说,箭头可以指示所描绘实施例的所列步骤之间未指定持续时间的等待或监视周期。
上文描述的各种特征和过程可以独立于彼此使用,或可以以各种方式组合。所有可能组合和子组合预期落入本公开的范围内。另外,在一些实施方案中可以省略某些方法、事件、状态或过程块。本文描述的方法和过程还不限于任何特定序列,并且与其相关的块或状态可以其它适当的序列执行。例如,所描述的任务或事件可以以不同于具体公开的顺序来执行,或可以在单个块或状态中组合多个任务或事件。实例任务或事件可以串行、并行或以某一其它合适的方式执行。任务或事件可以添加到所公开的实例实施例或从其去除。本文中所描述的实例系统和组件可以与描述不同地进行配置。例如,元件可以添加到所公开的实例实施例、从其去除或与其相比重新布置。
本领域技术人员将了解,可以使用多种不同技术和技艺中的任一者来表示信息和信号。例如,可以通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和芯片。
词语“示例性”在本文中用于意指“充当实例、例子或说明”。"本文中描述为“示例性”的任何方面未必应解释为比其它方面优选或有利。同样地,术语“方面”不要求所有方面包含所论述的特征、优点或操作模式。
尽管以上描述包含本发明的许多特定实施例,但是这些不应解释为对本发明范围的限制,而应解释为其特定实施例的实例。因此,本发明的范围不应由所示的实施例来确定,而应由所附权利要求书及其等同形式来确定。此外,贯穿本说明书对“一个实施例”、“实施例”或类似语言的引用意味着结合所述实施例描述的特定特征、结构或特性包含在本公开的至少一个实施例中。因此,贯穿本说明书的短语“在一个实施例中”、“在实施例中”和类似的语言的出现可以但不是必须全部指代相同的实施例,而是指“一个或多个但不是所有实施例”,除非另有明确说明。
本文中所使用的术语仅用于描述特定方面的目的,且并不希望限制各方面。如本文中所使用,单数形式“一”、“一个”和“所述”预期也包含复数形式(即,一个或多个),除非上下文另外明确指示。除非另有明确说明,否则列举的项目清单并不意味着任何或所有项目都是相互排斥和/或相互包含的。应进一步理解,除非另外明确指出,否则本文中使用的术语“包括”、“包含”、“具有”、其变体表示“包含但不限于”。也就是说,这些术语可以指定所陈述的特征、整数、步骤、操作、元件或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件或其群组的存在或添加。此外,应理解,除非另外明确陈述,否则词语“或”具有与布尔(Boolean)运算子“OR”相同的含义,也就是说,其涵盖“或”和“都”的可能性,且不限于“异或”(“XOR”)。还应理解,除非另外明确陈述,否则两个相邻单词之间的符号“/”具有与“或”相同的含义。此外,除非另外明确陈述,否则例如“连接到”、“耦合到”或“与……通信”的短语不限于直接连接。
应理解,本文中使用例如“第一”、“第二”等名称对元件进行任何参考通常不限制那些元件的数量或顺序。实际上,这些名称可以在本文中用作区别两个或多于两个元件或元件的例子的方便方法。因此,对第一和第二元件的参考并不意味着此处可以使用仅两个元件,或第一元件必须以某一方式先于第二元件。并且,除非另外说明,否则一组元件可以包含一个或多个元件。另外,在说明书或权利要求书中使用的形式“A、B或C中的至少一个”或“A、B、C,或其任何组合”或“A、B、C中的一个或多个”的术语表示“A或B或C或这些元件的任何组合”。例如,此术语可以包含A或B或C,或A和B,或A和C,或A和B和C,或2A或2B或2C,或2A和B等。作为另一实例,“A、B或C中的至少一个”或“A、B或C中的一个或多个”预期涵盖A、B、C、A-B、A-C、B-C和A-B-C,以及多个相同构件(例如,包含AA、BB或CC的任何列表)。同样,“A、B和C中的至少一个”或“A、B或C中的一个或多个”预期涵盖A、、B、C、A-B、A-C、B-C和A-B-C,以及多个相同构件。类似地,如本文所使用,指代与“和/或”有关的项目列表的短语指项目的任何组合。作为实例,“A和/或B”预期涵盖单独A、单独B,或A和B一起。作为另一实例,“A、B和/或C”预期涵盖单独A、单独B、单独C、A和B一起、A和C一起、B和C一起,或A、B和C一起。
如本文所使用,术语“确定”涵盖各种动作。例如,“确定”可以包含运算、计算、处理、导出、研究、查找(例如,在表、数据库或另一数据结构中查找)、断定等。此外,“确定”可以包含接收(例如,接收信息)、存取(例如,存取存储器中的数据)等。而且,“确定”可以包含解析、选择、挑选、建立等。
Claims (20)
1.一种存储器装置,其包括:
非易失性存储器(NVM)阵列,其包含单层级单元(SLC)元件和多层级单元(MLC)元件;以及
处理器,所述处理器被配置成:
执行耦合SLC/MLC写入以将数据写入到选定SLC元件并且将相同的数据并行写入到选定MLC元件,
确定写入到所述选定MLC元件的所述数据是否正确,以及
响应于确定写入到所述选定MLC元件的所述数据正确而释放所述选定SLC元件中的所述数据以用于覆写。
2.根据权利要求1所述的存储器装置,其中所述处理器进一步被配置成:
使用写入检验确定写入到所述选定MLC元件的所述数据是否正确;
响应于写入到所述选定MLC元件的所述数据的不成功检验而通过从所述选定SLC元件读取所述数据来恢复所述数据;以及
执行另一耦合SLC/MLC写入,以将所述恢复的数据写入到另一MLC元件以及另一组SLC元件。
3.根据权利要求2所述的存储器装置,其中所述处理器进一步被配置成通过将失败位计数(FBC)与指示写入错误的阈值相比较来确定写入到所述选定MLC元件的所述数据是否正确。
4.根据权利要求1所述的存储器装置,其中所述选定MLC元件是两层级单元元件,并且其中所述处理器进一步被配置成执行所述耦合SLC/MLC写入,以将所述数据写入到至少两个选定SLC元件并且将相同的数据并行写入到至少一个选定两层级MLC元件。
5.根据权利要求1所述的存储器装置,其中所述选定MLC元件是三层级单元(TLC)元件,并且其中所述处理器进一步被配置成执行所述耦合SLC/MLC写入,以将所述数据写入到至少三个选定SLC元件并且将相同的数据并行写入到至少一个选定TLC元件。
6.根据权利要求1所述的存储器装置,其中所述选定MLC元件是四层级单元(QLC)元件,并且其中所述处理器进一步被配置成执行所述耦合SLC/MLC写入,以将所述数据写入到至少四个选定SLC元件并且将相同的数据并行写入到至少一个选定QLC元件。
7.根据权利要求1所述的存储器装置,其中所述处理器进一步被配置成响应于确定所述NVM阵列中的其余SLC块不足以完成所述耦合SLC/MLC写入而生成所述数据的XOR副本。
8.根据权利要求1所述的存储器装置,其中所述处理器进一步被配置成通过以下操作执行所述耦合SLC/MLC写入:
检测何时施加最后一个脉冲以对所述选定MLC元件的特定状态进行编程;
从锁存器获得对应于所述特定状态的数据;
施加所述最后一个脉冲,以对所述选定SLC元件中的第一选定SLC元件中以及所述MLC元件中对应于所述特定状态的所述数据并行地进行编程;以及
将所述锁存器中对应于所述特定状态的所述数据改变成指示阻止所述特定状态的进一步编程的值。
9.根据权利要求8所述的存储器装置,其中所述选定MLC元件是三层级单元(TLC)元件,所述特定状态是第一状态,对应于所述第一状态的所述数据是用于所述TLC元件的下页数据,并且所述锁存器是下页数据锁存器。
10.根据权利要求8所述的存储器装置,其进一步包括快速通过写入电路,所述快速通过写入电路被配置成检测用于对所述选定MLC元件的特定状态进行编程的所述最后一个脉冲。
11.一种用于包含单层级单元(SLC)元件和多层级单元(MLC)元件的存储器阵列的方法,所述方法包括:
接收数据以写入到所述存储器阵列;
执行耦合SLC/MLC写入,包括将所述数据写入到选定SLC元件并且将相同的数据并行写入到选定MLC元件;
检验写入到所述选定MLC元件的所述数据;以及
响应于写入到所述选定MLC元件的所述数据的成功检验而释放所述选定SLC元件中的所述数据以用于覆写。
12.根据权利要求11所述的方法,其进一步包括:
响应于写入到所述选定MLC元件的所述数据的不成功检验而通过从所述选定SLC元件读取所述数据来恢复所述数据;以及
执行另一耦合SLC/MLC写入以将所述恢复的数据写入到另一MLC元件。
13.根据权利要求11所述的方法,其中所述选定MLC元件包括两层级MLC元件、三层级单元(TLC)元件和四层级单元(QLC)元件中的一个或多个。
14.根据权利要求11所述的方法,其进一步包括使用写入检验确定写入到所述选定MLC元件的所述数据是否正确。
15.根据权利要求14所述的方法,其进一步包括通过将使用所述写入检验获得的失败位计数(FBC)与指示写入错误的阈值相比较来确定写入到所述选定MLC元件的所述数据是否正确。
16.根据权利要求11所述的方法,其中执行所述耦合SLC/MLC写入进一步包括:
检测何时施加最后一个脉冲以对所述选定MLC元件的特定状态进行编程;
从锁存器获得对应于所述特定状态的数据;
施加所述最后一个脉冲,以对所述选定SLC元件中的第一选定SLC元件中以及所述MLC元件中对应于所述特定状态的所述数据并行地进行编程;以及
将所述锁存器中对应于所述特定状态的所述数据改变成指示阻止所述特定状态的进一步编程的值。
17.根据权利要求16所述的方法,其中所述选定MLC元件是三层级单元(TLC)元件,所述特定状态是第一状态,对应于所述第一状态的所述数据是用于所述TLC元件的下页数据,并且所述锁存器是下页数据锁存器。
18.根据权利要求17所述的方法,其中执行所述耦合SLC/MLC写入包含:
检测何时施加最后一个脉冲以对所述选定TLC元件的第二状态进行编程;
从中页数据锁存器获得中页数据;
施加所述最后一个脉冲,以对所述选定SLC元件中的第二选定SLC元件中以及所述TLC元件中的所述中页数据并行地进行编程;以及
将所述中页数据锁存器中的所述中页数据改变成指示阻止所述第二状态的进一步编程的值。
19.根据权利要求18所述的方法,其中执行所述耦合SLC/MLC写入包含:
检测何时施加最后一个脉冲以对所述选定TLC元件的第三状态进行编程;
从上页数据锁存器获得上页数据;
施加所述最后一个脉冲,以对所述选定SLC元件中的第三选定SLC元件中以及所述TLC元件中的所述上页数据并行地进行编程;以及
将所述上页数据锁存器中的所述上页数据改变成指示阻止所述第三状态的进一步编程的值。
20.一种用于包含单层级单元(SLC)元件和多层级单元(MLC)元件的存储器阵列的设备,所述设备包括:
用于执行耦合SLC/MLC写入以将数据写入到选定SLC元件并且将相同的数据并行写入到选定MLC元件的构件;
用于检验写入到所述选定MLC元件的所述数据的构件;以及
用于响应于写入到所述选定MLC元件的所述数据的成功检验而释放所述选定SLC元件中的所述数据以用于覆写的构件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/831,517 US11288011B2 (en) | 2020-03-26 | 2020-03-26 | Non-volatile memory array with write failure protection for multi-level cell (MLC) storage elements using coupled writes |
US16/831,517 | 2020-03-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113448765A true CN113448765A (zh) | 2021-09-28 |
CN113448765B CN113448765B (zh) | 2024-07-02 |
Family
ID=
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090228739A1 (en) * | 2007-11-25 | 2009-09-10 | Itzic Cohen | Recovery while programming non-volatile memory (nvm) |
CN103477393A (zh) * | 2011-03-31 | 2013-12-25 | 桑迪士克科技股份有限公司 | 含有具有不同每单元位的存储容量的三个存储层的存储器系统 |
US20140006688A1 (en) * | 2012-07-02 | 2014-01-02 | 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 |
CN104216665A (zh) * | 2014-09-01 | 2014-12-17 | 上海新储集成电路有限公司 | 多层单元固态硬盘的存储管理方法 |
CN104919434A (zh) * | 2012-12-07 | 2015-09-16 | 西部数据技术公司 | 用于在固态驱动器中进行较低页数据恢复的系统和方法 |
US20150324119A1 (en) * | 2014-05-07 | 2015-11-12 | Sandisk Technologies Inc. | Method and System for Improving Swap Performance |
CN105808371A (zh) * | 2014-12-31 | 2016-07-27 | 深圳市硅格半导体有限公司 | 数据备份与恢复方法、控制芯片及存储装置 |
US9530491B1 (en) * | 2015-11-16 | 2016-12-27 | Sandisk Technologies Llc | System and method for direct write to MLC memory |
US9619321B1 (en) * | 2015-10-08 | 2017-04-11 | Seagate Technology Llc | Internal copy-back with read-verify |
CN107357678A (zh) * | 2011-07-22 | 2017-11-17 | 桑迪士克科技有限责任公司 | 存储数据的系统和方法 |
US20180217751A1 (en) * | 2017-01-31 | 2018-08-02 | Sandisk Technologies Llc | System and method for dynamic folding or direct write based on block health in a non-volatile memory system |
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090228739A1 (en) * | 2007-11-25 | 2009-09-10 | Itzic Cohen | Recovery while programming non-volatile memory (nvm) |
CN103477393A (zh) * | 2011-03-31 | 2013-12-25 | 桑迪士克科技股份有限公司 | 含有具有不同每单元位的存储容量的三个存储层的存储器系统 |
CN107357678A (zh) * | 2011-07-22 | 2017-11-17 | 桑迪士克科技有限责任公司 | 存储数据的系统和方法 |
US20140006688A1 (en) * | 2012-07-02 | 2014-01-02 | 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 |
CN104919434A (zh) * | 2012-12-07 | 2015-09-16 | 西部数据技术公司 | 用于在固态驱动器中进行较低页数据恢复的系统和方法 |
US20150324119A1 (en) * | 2014-05-07 | 2015-11-12 | Sandisk Technologies Inc. | Method and System for Improving Swap Performance |
CN104216665A (zh) * | 2014-09-01 | 2014-12-17 | 上海新储集成电路有限公司 | 多层单元固态硬盘的存储管理方法 |
CN105808371A (zh) * | 2014-12-31 | 2016-07-27 | 深圳市硅格半导体有限公司 | 数据备份与恢复方法、控制芯片及存储装置 |
US9619321B1 (en) * | 2015-10-08 | 2017-04-11 | Seagate Technology Llc | Internal copy-back with read-verify |
US9530491B1 (en) * | 2015-11-16 | 2016-12-27 | Sandisk Technologies Llc | System and method for direct write to MLC memory |
US20180217751A1 (en) * | 2017-01-31 | 2018-08-02 | Sandisk Technologies Llc | System and method for dynamic folding or direct write based on block health in a non-volatile memory system |
CN108376120A (zh) * | 2017-01-31 | 2018-08-07 | 桑迪士克科技有限责任公司 | 用于管理在非易失性存储器系统中写入块的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US11288011B2 (en) | 2022-03-29 |
US20210303203A1 (en) | 2021-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11288011B2 (en) | Non-volatile memory array with write failure protection for multi-level cell (MLC) storage elements using coupled writes | |
CN108475530B (zh) | 用于在储存体装置的编程之前进行擦除检测的系统和方法 | |
CN106663046B (zh) | 用于刷新存储器设备中的数据的系统和方法 | |
JP6312698B2 (ja) | ソリッドステートドライブ内の下位ページデータ復旧を行うシステム及び方法 | |
US10019174B2 (en) | Read operation delay | |
US9105333B1 (en) | On-chip copying of data between NAND flash memory and ReRAM of a memory die | |
US9323613B2 (en) | Parity scheme for a data storage device | |
US9691485B1 (en) | Storage system and method for marginal write-abort detection using a memory parameter change | |
US20160018998A1 (en) | Methods and Systems for Scalable Reliability Management of Non-Volatile Memory Modules | |
WO2016137546A1 (en) | Method and apparatus for configuring a memory device | |
US20120290897A1 (en) | Data storage system having multi-bit memory device and on-chip buffer program method thereof | |
US20190122741A1 (en) | Adaptive erase fail bit criteria | |
US9865360B2 (en) | Burn-in memory testing | |
US10127103B2 (en) | System and method for detecting and correcting mapping table errors in a non-volatile memory system | |
US20170322843A1 (en) | Multi-die data storage device with in-memory parity circuitry | |
US10162538B2 (en) | Memory operation threshold adjustment based on bit line integrity data | |
WO2016196971A1 (en) | Scheduling scheme / schemes for a multi-die storage device | |
US9064569B1 (en) | Memory controller with resistive random access memory (ReRAM) | |
US9236142B2 (en) | System method and apparatus for screening a memory system | |
US11550657B1 (en) | Efficient programming schemes in a nonvolatile memory | |
CN113448765B (zh) | 具有对存储元件的写入故障保护的非易失性存储器阵列 |
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 |