CN107657982B - 对多级非易失性存储器单元进行编程的方法和存储器装置 - Google Patents
对多级非易失性存储器单元进行编程的方法和存储器装置 Download PDFInfo
- Publication number
- CN107657982B CN107657982B CN201710550082.0A CN201710550082A CN107657982B CN 107657982 B CN107657982 B CN 107657982B CN 201710550082 A CN201710550082 A CN 201710550082A CN 107657982 B CN107657982 B CN 107657982B
- Authority
- CN
- China
- Prior art keywords
- memory cells
- programming
- level
- state
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0408—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- 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/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
- 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
- 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
- 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/5648—Multilevel memory programming, reading or erasing operations wherein the order or sequence of the operations is relevant
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
Abstract
提供一种对多级非易失性存储器单元进行编程的方法和存储器装置。发明的方面包括一种存储器装置,所述存储器装置具有一个或多个存储器页,所述一个或多个存储器页包括均具有多个可编程的状态级的多个存储器单元。所述存储器装置包括存储器控制逻辑部分,存储器控制逻辑部分包括编程逻辑部分和页层重编程状态元数据。编程逻辑部分可根据页层重编程状态元数据对所述多个存储器单元进行编程。编程逻辑部分可根据页层重编程状态元数据,在所述多个存储器单元的连续的编程操作中,对所述多个存储器单元中的每个的第一状态级、第二状态级和第三状态级进行编程,而在编程操作期间或编程操作之间,不需要任何擦除操作或读取操作。
Description
技术领域
本发明构思涉及一种半导体电路,更具体地讲,涉及一种在多级NAND单元中使用容量进行无擦除的重编程技术。
背景技术
NAND存储器单元是非易失性存储器类型的单元,非易失性存储器类型的单元即使从该单元移除电力之后仍存储信息。NAND单元通过电荷注入到晶体管的浮栅(这改变通常称为Vth的阈值电压)来存储数据值。一些种类的NAND存储器单元可同时存储多位信息。例如,单级单元(SLC)可仅存储表示两个状态级之一(即,逻辑0或1)的单个位,多级单元(MLC)可存储多个位。例如,MLC可存储表示逻辑上的0、1、2或3(可以以二进制码被表示为00、01、10和11)的四个状态级。三层单元(TLC)可存储表示逻辑0、1、2、3、4、5、6或7(可以以二进制码被表示为000、001、010、011、100、101、110和111)的八个状态级。
大多数传统的NAND装置每次在将新数据编程到单元中之前需要对存储器单元进行擦除。那些不需要针对每次编程进行擦除的NAND装置然而需要额外的读取,以在下次写入之前收集状态信息。额外的擦除和读取操作增加能耗。此外,擦除周期引起对存储器单元的劣化和额外的损耗,从而降低装置的寿命。
写入放大是传统NAND装置之中共同的另一问题。因为存储器单元每次在对数据值进行重编程之前对存储器单元进行擦除,执行这些操作的处理导致移动数据值不止一次。在一些情况下,对数据值进行重编程需要将存储器的已编程的部分读取、更新和写入到新的位置。有时存储器的不同部分必须被擦除并被重写以容纳新的数据写入。这些不同的部分可能比通常将要作为新数据被写入的部分要更大。这具有增加在NAND存储器装置的寿命内需要写入的次数的倍增效应。这样的数据搅动缩短了NAND存储器装置可以可靠操作的时间。
发明内容
发明构思可包括一种存储器装置,该存储器装置具有:一个或多个存储器页,所述一个或多个存储器页包括均具有多个可编程的状态级的多个存储器单元;存储器控制逻辑部,结合到所述一个或多个存储器页,存储器控制逻辑部包括编程逻辑部和页级重编程状态元数据。编程逻辑部被配置为:根据页级重编程状态元数据的第一值,在所述多个存储器单元的第一编程中,对所述多个存储器单元中的每个存储器单元的与2的第1次幂至第N次幂中的一个或多个相关联的第一状态级进行编程。编程逻辑部被配置为:根据页级重编程状态元数据的第二值,在所述多个存储器单元的第二编程中,对所述多个存储器单元中的每个存储器单元的与2的第2次幂至第N次幂中的一个或多个相关联的第二状态级进行编程,而不会对所述多个存储器单元的中任何一个存储器单元的第一状态级进行读取。
发明的各方面还可包括一种用于对多级非易失性存储器单元进行编程的方法。所述方法可包括:通过存储器控制逻辑部,对页级重编程状态元数据进行存储。所述方法可包括:通过存储器控制逻辑部的编程逻辑部,根据页级重编程状态元数据,对存储器页的多个存储器单元进行编程。所述方法可包括:通过编程逻辑部,根据页级重编程状态元数据的第一值,在所述多个存储器单元的第一编程中,对所述多个存储器单元中的每个存储器单元的与2的第1次幂至第N次幂中的一个或多个相关联的第一状态级进行编程。所述方法可包括:通过编程逻辑部,根据页级重编程状态元数据的第二值,在所述多个存储器单元的第二编程中,对所述多个存储器单元中的每个存储器单元的与2的第2次幂至第N次幂中的一个或多个相关联的第二状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级进行读取。
附图说明
从下面参照附图进行的详细描述,本发明原理的前述的和额外的特征和优点将变得更容易清楚,其中:
图1A至图1H是具有各种可编程状态级的非易失性NAND存储器单元的示例示图。
图2是示出根据本发明构思的实施例的与存储器页相关联的存储器控制逻辑部和在多级NAND存储器中使用容量进行无需擦除的相应重编程的流程的示例框图概念图。
图3A是示出根据本发明构思的实施例的在多级NAND存储器中使用容量进行的无擦除的重编程的流程的另一示例框图和概念图。
图3B是示出根据本发明构思的实施例的在多级NAND存储器中使用容量进行的无擦除的重编程的流程的另一示例框图和概念图。
图4是示出根据本发明构思的实施例的用于在多级存储器单元中使用容量进行无擦除的重编程的技术的流程图。
图5是示出根据本发明构思的实施例的用于在多级存储器单元中使用容量进行的无擦除的重编程的另一技术的流程图。
图6是示出根据本发明构思的实施例的用于从多级存储器单元读取信息的技术的流程图。
图7是示出根据在此公开的本发明构思的实施例的包括图2的存储器控制逻辑部的计算系统的示例框图。
具体实施方式
现在将详细描述本发明构思的实施例,本发明构思的实施例的示例在附图中示出。本发明构思的实施例涉及一种如下的技术,即,用于无需插入擦除周期而对NAND存储器单元执行多个重编程操作——从而减少写入时间,减少写入放大并减少擦除周期、读取周期和写入周期。使用本公开的技术,不需要执行读取-修改-写入操作。反而,之前的编程级可被存储为页级(page-level)重编程状态元数据,其可用于下一编程级的参考。在多级NAND存储器单元内的容量可用于存储比通常更少数量的位,但是具有减少擦除周期、读取周期和写入周期的优点。因此,可显著延长NAND存储器单元的整个寿命。
图1A至图1H是具有各种可编程状态级的非易失性NAND存储器单元的示例示图。图1A示出处于没有存储的电荷的状态的非易失性多级NAND存储器单元100。如下面进一步描述的,图1B至图1H示出具有存储的电荷的各种状态的非易失性多级NAND存储器单元100。如在此使用的术语“多级”不意在将所讨论的单元的种类仅限制于“MLC”四级类型单元,而相反,如在此使用的该术语可更宽泛地表示为能够存储多个状态级以及四级的位和超过四级的位的存储器单元。如在图1A中所示,NAND存储器单元100可包括:源极105、漏极110、控制栅115和浮栅120。绝缘体125设置在浮栅120与源极105和漏极110之间。另一绝缘体130设置在浮栅120与控制栅115之间。
浮栅120存储电荷。电子可通过响应于施加的电场穿过绝缘体125的隧道方式,而被注入到浮栅120或者从浮栅120逐出。单元100的阈值电压Vth根据在浮栅120中存储的电荷的量而改变。单元100的不同的状态级(即,不同的Vth电平)表示不同的数据值。图1A示出具有没有在浮栅120中存储电荷的单元100。图1B至图1H示出在浮栅120中存储的电荷的水平增加的单元100。在这个示例中,NAND存储器单元100包括八个状态级。存储器单元100可被编程为这些状态级中的任何一个。八个状态级可以以二进制码被表示为000、001、010、011、100、101、110和111。换言之,可使用三个位来表示或概念化单元100的八个不同的状态级。每个数位(bit position)是2的幂。最右侧的位在此被称为1的位。中间的位在此被称为2的位。最左侧的位在此被称为4的位。
将理解,存储器单元100不限于仅有八个状态级,而是可包括更少(诸如,四个)的状态级或者更多的(诸如,十六个)状态级。将理解,存储器单元100可包括任何合适数量的状态级。例如,在十六个状态级的单元中,状态级可以以二进制码被表示为0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110和1111。如上述具有四个状态级的示例一样,每个数位是2的幂。在这个示例中,最右侧的位在此被称为1的位,下一个最右侧的位在此被称为2的位,下下一个最右侧的位在此被称为4的位,最左侧的位在此被称为8的位。这个概念可被扩展到2的N次幂。N可以是任何合适的正整数。例如,当N=5时,存储器单元100可包括25个,或者三十二个状态级。
图2是示出根据本发明构思的实施例的与存储器页205相关联的存储器控制逻辑部210和在多级NAND存储器中使用容量进行无擦除的相应的重编程的流程的示例框图和概念图225。如在图2中所示,储存器页205可由页0至页N标签按行排列。存储器控制逻辑部201可控制每个存储器页中的存储器单元的操作。在每个存储器页中的每个方块表示多级NAND存储器单元(例如,多级NAND存储器单元240)。在这个示例实施例中,每个存储器单元是八级存储器单元。八个状态级可以以二进制码被表示为000、001、010、011、100、101、110和111。
示出三个编程操作(P1、P2和P3)和接下来的单个擦除操作E1。擦除操作不需要在编程操作期间或编程操作之间被执行。此外,读取操作不需要在编程操作期间或编程操作之间被执行。换言之,新的数据位的更新无需先前数据的读取。每个多级单元(例如,单元240)可使用特定的Vth级(在这个示例实施例中,从000到111)被编程(例如,重编程)多次(例如,单元240,在TLC单元的示例中是3次),以表示新的数据位,而无需针对相同的地址擦除旧的数据位。
存储器控制逻辑部210可包括:编程逻辑部215、页级重编程状态元数据220和读取逻辑部235。如下面进一步详细描述的,编程逻辑部214可根据页级重编程状态元数据220对存储器单元(例如,存储器单元240)进行编程。
现在描述第一编程操作P1,其中,在该第一编程操作P1中,二进制数据“001110”编程到与相关联多级存储器单元(诸如,存储器单元240和与存储器单元240相邻的存储器单元)对应的每个位。换言之,在数据的串“001110”中的每个数据位可被编程到单独的多级存储器单元。编程逻辑部215可根据页级重编程状态元数据220,在第一编程操作P1期间对与每个多级存储器单元的2的第1次幂(例如,1的位)相关联的第一状态级(例如,001、001、000、000、000、001)进行编程。使用NAND,实际逻辑值的补码被存储到存储器单元并从存储器单元读取。例如,当逻辑0将被存储时,001的状态级可在第一编程操作P1期间被写入到多级存储器单元。通过另一示例,当逻辑1将被存储时,000的状态级在第一编程操作P1期间被写入到多级存储器单元。
更具体地将,页级重编程状态元数据220的第一值V1可指示在特定存储器页的存储器单元(例如,存储器单元240)中没有存储信息——例如,存储器单元(例如,存储器单元240)的Vth刚被擦除并处于它的最低的状态级。响应于页级重编程状态元数据220是第一值V1,编程逻辑部215可对每个存储器单元(例如,存储器单元240)的1的位进行编程,以表示在正被编程的数据的串“001110”中的每个数据位。在这个示例实施例中,电荷被加入到存储器单元240,以使它的阈值电压Vth升高到表示“001”的状态级。以相似的方式,存储器单元240的右侧的存储器单元也具有加入的电荷,以使它的阈值电压Vth升高到表示“001”的状态级。下面三个存储器单元没有在第一编程操作P1期间加入的额外的电荷。下一存储器单元与前两个存储器单元相似,即,电荷被加入以使它的阈值电压Vth升高到表示“001”的状态级。
因此,存储器单元的的一些浮栅(例如,图1的浮栅120)接收加入的电荷(+1)以表示逻辑值0。此外,一些存储器单元没有接收加入的电荷(+0)以表示逻辑值1。以这种方式,逻辑值“001110”可被编程到存储器单元的1的位位置。编程逻辑部215可在第一编程操作P1期间对与每个存储器单元的2的第1次幂(例如,1的位)相关联的第一状态级(例如,001、001、000、000、000、001)进行编程,而不会对正被编程的存储器单元中的任何位进行擦除。作为编程操作P1的一部分(或者,在编程操作P1之后),存储器控制逻辑部210可将页级重编程状态元数据220设置为指示编程的一个级已发生的第二值V2。
现在描述第二编程操作P2,其中,在第二编程操作P2中,二进制数据“010111”被编程到相应的多级存储器单元,诸如,存储器单元240和与存储器单元240相邻的存储器单元。换言之,在数据的串“010111”中的每个数据位可被编程到单独的多级存储器单元。编程逻辑部215可根据页级重编程状态元数据220的第二值V2,在第二编程操作P2期间对与每个多级存储器单元的2的第2次幂(例如,2的位)相关联的第二状态级(例如,011、001、010、000、000、001)进行编程,而不会对与正被编程的存储器单元中的任何一个存储器单元的2的第1次幂(例如,1的位)相关联的第一状态级进行读取。
更具体地讲,页级重编程状态元数据220的第二值V2可指示对特定存储器页的存储器单元(例如,存储器单元240)上已经发生了第一级编程——例如,存储器单元(例如,存储器单元240)的Vth处于指示1的位的信息已被编程的特定状态级。响应于页级重编程状态元数据220是第二值V2,编程逻辑部215可对每个存储器单元(例如,存储器单元240)的2的位进行编程,以表示将被编程的数据的串“010111”中的每个数据位。在这个示例实施例中,电荷被加入到存储器单元240,以使它的阈值电压Vth升高到表示“011”的状态级。这样的编程操作是额外,并且既不需要对存储器单元240的擦除也不需要对存储器单元240的读取。换言之,在编程操作P2期间,编程逻辑部215可要么加入额外的电荷以使阈值电压Vth升高两级(+2)(如在存储器单元240的情况下),要么将零电荷(+0)加入到存储器单元(如在存储器单元240的右侧的存储器单元的情况下)。
因此,存储器单元240的右侧的存储器单元加入了零电荷,其意味着没有电荷被作用到它的阈值电压Vth,并且因此它的状态级保持在“001”。右侧的下一个存储器单元具有加入的额外的电荷,以使阈值电压Vth升高两级(+2)到表示“010”的状态级。以这种方式,1的位的信息被保存,而无需考虑额外的电荷是否被加入。后续三个存储器单元在编程操作P2期间没有加入的额外的电荷,从而保存1的位的信息,同时也保留未改变的2的位的信息。
因此,存储器单元的一些浮栅(例如,图1的浮栅120)接收加入的电荷(+2),以表示2的位的逻辑值0。此外,一些存储器单元没有接收加入电荷(+0),以表示2的位中的逻辑值1。以这种方式,逻辑值“010111”可被编程到存储器单元的2的位位置中。编程逻辑部215可在第二编程操作P2期间对与每个存储器单元的2的第2次幂(例如,2的位)相关联的第二状态级(例如,011、001、010、000、000、001)进行编程,而不会对正被编程的存储器单元的任何位进行擦除。作为编程操作P2的一部分(或者,在编程操作P2之后),存储器控制逻辑部210可将页级重编程特征元数据设置为指示二级编程已发生的第三值V3。
现在描述第三编程操作P3,其中,在第三编程操作P3中,二进制数据“101101”被编程到相应的多级存储器单元,诸如,存储器单元240和与存储器单元240相邻的存储器单元。换言之,数据的串“101101”中的每个数据位可被编程至单独的多级存储器单元。编程逻辑部215可根据页级重编程状态元数据220的第三值V3,在第三编程操作P3期间对与每个多级存储器单元的2的第3次幂(例如,4的位)相关联的第三状态级(例如,011、101、010、000、100、001)进行编程,而不会对任何一个存储器单元的与2的第1次幂(例如,1的位)相关联的第一状态级和/或与2的第2次幂(例如,2的位)相关联的第二状态级进行读取。
更具体地讲,页级重编程状态元数据220的第三值V3可指示第一级编程和第二级编程已经对特定存储器页的存储器单元(例如,存储器单元240)发生——例如,存储器单元(例如,存储器单元240)的Vth处于指示2的位的信息已被编程的特定的状态级。响应于页级重编程状态元数据220是第三值V3,编程逻辑部215可对每个存储器单元(例如,存储器单元240)的4的位进行编程,以表示将被编程的数据的串“101101”中的每个数据位。在这个示例实施例中,零电荷被加入到存储器单元240,这意味着没有改变其阈值电压Vth,并且因此它的状态级保持在“011”。右侧的下一个存储器单元具有加入的额外的电荷,以使阈值电压Vth升高四级(+4)到表示“101”的状态级。以这种方式,1的位的信息和2的位的信息被保存,而无需考虑额外的电荷是否被加入。这样的编程操作是额外的,并且既不需要对存储器单元240的擦除也不需要对存储器单元240的读取。换言之,在编程操作P3期间,编程逻辑部215可要么加入额外的电荷以使阈值电压Vth提升四级(+4)(如在存储器单元240的右侧的存储器单元的情况下),要么另外将零电荷(+0)加入到存储器单元(如在存储器单元240的情况下)。
因此,存储器单元240的右侧的存储器单元具有加入的额外的电荷,这意味着它的阈值电压Vth被改变,并且因此它的状态级被改变为“101”。右侧的后续两个存储器单元在编程操作P3期间没有加入的额外的电荷,从而保存1的位的信息和2的位的信息,同时也使4的位的信息不改变。
因此,存储器单元的一些浮栅(例如,图1的浮栅120)接收加入的电荷(+4),以表示逻辑值0。此外,存储器单元的一些浮栅不接收加入的电荷(+0),以表示逻辑值1。以这种方式,逻辑值“101101”可被编程到存储器单元的4的位位置。编程逻辑部215可在第三编程操作P3期间对与每个存储器单元中的2的第3次幂(例如,4的位)相关联的第三状态级(例如,011、101、010、000、100、001)进行编程,而不会对正被编程的存储器单元的任何位进行擦除。作为编程操作P3的一部分(或者,在编程操作P3之后),存储器控制逻辑部210可将页级重编程状态元数据220设置为指示第三级编程已发生的第四值V4。
在一些实施例中,页级重编程状态元数据220是能够表示四个值(V1、V2、V3和V4)的2位的值。例如,如果页级重编程状态元数据220等于V1或‘00’,则这可指示对特定存储器页没有发生重编程,和/或存储器页被擦除。如果页级重编程状态元数据220等于V2或‘01’,则这可指示对特定存储器页已发生一级编程。如果页级重编程状态元数据220等于V3或‘10’,则这可指示对特定存储器页已发生二级编程。如果页级重编程状态元数据220等于V4或‘11’,则这可指示对特定存储器页已发生三级编程。将理解,页级重编程状态元数据220不需要被限制为2位的值,而可使用任何合适的二进制表示被存储和访问。在不脱离在此公开的发明实施例的范围的情况下,可使用用于页级重编程状态元数据220值的位值的其他组合。
因此,在对第一状态级、第二状态级和第三状态级进行编程期间,或者在对第一状态级、第二状态级和第三状态级进行编程之间,编程逻辑部215可在相同的地址(即,与存储器单元240相关联的地址)对与2的第1次幂(例如,1的位)相关联的第一状态级(例如,‘001’)、与2的第2次幂(例如,2的位)相关联的第二状态级(例如,‘011’)和与2的第3次幂(例如,4的位)相关联的第三状态级(例如,‘111’)进行编程,而不会对存储器单元之中的任何位进行擦除。编程逻辑部215可在第一编程操作P1期间对每个存储器单元的与2的第1次幂(例如,1的位)相关联的第一状态级进行编程,而不会对正被编程的存储器单元的任何位进行擦除。编程逻辑部215可在第二编程操作P2期间对每个存储器单元的与2的第2次幂(例如,2的位)相关联的第二状态级进行编程,而不会对正被编程的存储器单元的任何位进行擦除。编程逻辑部215可在第三编程操作P3期间对每个存储器单元的与2的第3次幂(例如,4的位)相关联的第三状态级进行编程,而不会对正被编程的存储器单元的任何位进行擦除。
存储器控制逻辑部210可包括读取逻辑部235。每个存储器单元的第一状态级(例如,001、001、000、000、000、001)可对应于阈值电压Vth的第一值。阈值电压Vth的第一值包括存储于每个存储器单元的与2的第1次幂(例如,1的位)相关联的位中的信息。读取逻辑部235可根据页级重编程状态元数据220的第二值V2来选择性地读取存储于每个存储器单元的与2的第1次幂(例如,1的位)相关联的位位置中的信息。逻辑值是在1的位中存储的信息的补码。换言之,读取逻辑部235可访问页级重编程状态元数据220,确定页级重编程状态元数据220具有第二值V2,并基于该确定而获知读取1的位的信息。这样的读取操作可在1的位的信息已被编程之后的任何时间发生,但读取的步骤不需要上述编程操作被成功地执行。
每个存储器单元的第二状态级(例如,011、001、010、000、000、001)可对应于阈值电压Vth的第二值。阈值电压Vth的第二值包括存储于每个存储器单元的与2的第2次幂相关联的位位置中的信息。读取逻辑部235可根据页级重编程状态元数据220的第三值V3来选择性地读取存储于每个存储器单元的与2的第2次幂相关联的位位置(例如,2的位)中的信息。换言之,读取逻辑部235可访问页级重编程状态元数据220,确定页级重编程状态元数据220具有第三值V3,并基于该确定而获知读取2的位信息。这样的读取操作可在2的位的信息已被编程之后的任何时间发生,但读取的步骤不需要上述编程操作被成功地执行。
每个存储器单元的第三状态级(例如,011、101、010、000、100、001)可对应于阈值电压Vth的第三值。阈值电压Vth的第三值包括存储于每个存储器单元的与2的第3次幂相关联的位位置(例如,4的位)中的信息。即使在页已被第二次写入之后,第一数据也仍是有效的。相似地,即使在页已被第三次写入之后,第一数据和第二数据也仍是有效的。读取逻辑部235可根据页级重编程状态元数据220的第四值V4来选择性地读取存储于每个存储器单元的与2的第3次幂相关联的位位置(例如,4的位)中的信息。换言之,读取逻辑部235可访问页级重编程状态元数据220,确定页级重编程状态元数据220具有第四值V4,并基于该确定而获知读取4的位信息。这样的读取操作可在4的位信息已被编程之后的任何时间发生,但读取的步骤不需要上述编程操作被成功地执行。
在编程操作P1、P2和P3已发生之后,页可被标记为脏(dirty),其意味着该页不能被写入,直到整个块被擦除。其后,编程处理可根据情况,通过相似的编程操作P1、P2和P3以及页级重编程状态元数据220的值V1、V2、V3和V4而重复。因此,针对每三个编程操作P1、P2和P3仅需要一个擦除操作。数据可写入在存储器页中的多个连续的存储器单元,而无需作为写入操作的一部分而执行擦除操作或在写入操作期间执行擦除操作。此外,在编程操作期间的任意点或编程期间或编程操作之间无需读取操作。重编程操作可根据写入请求而针对部分的存储器页或全部的存储器页。新的状态级可完全地根据到来的新的数据位而被确定。页还可被划分为多个更小的部分页以支持部分更新。状态元数据220可存储表示第一部分页的第一级值的V11、V12、……V1n,其中,n是部分页的最大数量。状态元数据220还可存储表示第二部分页的第二级值V21、V22、……V2n。相似地,Vn1、Vn2、……Vnn可表示最后的部分页的最后级值。
以这种方式,连续写入可使用与存储器单元的2的幂中的每个相关联的电压电平来执行。第一编程对1的位执行,第二编程对2的位执行,第三编程对4的位执行。元数据用于确定存储器页已被写入多少次,并且因此元数据用于确定新的编程应该发生在什么电压电平或者数据中的什么位可被读取。将理解,第一编程操作P1、第二编程操作P2和第三编程操作P3可以在2的任何次幂,只要它们可互相排斥并被恰当地跟踪。
通常,为了对6位的数据(例如,‘001110’)进行编程,需要两个三级存储器单元来存储数据位001和110。这些数据位在首次写入之后被更新两次。为了在首次写入之后对这些6位的数据重编程两次,针对包括首次写入、第二次写入和第三次写入的总共18位的数据,需要六个三级存储器单元。此外,还执行针对首次写入和第二次写入的两个擦除周期。相反,使用在此公开的本发明构思的实施例,可使用相同的18位或6个存储器单元(即,3位表示1位的数据),而不需要执行擦除操作。这项技术允许无需擦除(一段时间),存储器单元的重编程,从而提供更快的写入时间并减少擦除周期。作为额外的优点,存储器单元中的旧数据也被保存,并可在任何时间被读取。例如,多重检查点系统可通过读取在存储器单元中的“较旧的”位来重新参考先前存储的信息。换言之,存储器单元中的旧数据被保存,并可在任何时间被读取。通过另一个示例,版本控制系统可通过读取在存储器单元中的“较旧的”位来重新参考先前存储的信息。
在一些实施例中,重编程状态元数据220对于特定存储器页可以是全局的,并且在该特定存储器页中的全部存储器单元可使用相同的元数据值。在一些实施例中,重编程状态元数据220对于多个存储器页的一个块可以是全局的。在一些实施例中,重编程状态元数据220对于多个存储器页的多个块可以是全局的。在一些实施例中,重编程状态元数据220对于一个存储器块内的多个存储器页可以是全局的。在一些实施例中,重编程状态元数据220对于特定存储器页内的多个存储器单元可以是全局的。
通常,当使用三级存储器页并更新三位的数据时,第二单元位置将需要被定位。再次更新这些三位的数据,第三单元位置将需要被定位。实际上,为了对三位的数据更新三次,将消耗九位的信息,并且为了回收旧单元,将需要两次擦除操作。使用在此公开的本发明的技术,可使用相同的九位(即,3位表示1位的数据),而无需执行擦除操作。这项技术允许对存储器单元进行无需擦除的编程,从而提供更快的写入时间并减少擦除周期。
图3A是示出根据本发明构思的实施例的在多级NAND存储器中使用容量的无擦除的重编程的流程的另一示例框图和概念图305。上面参照图2提供了一些组件和流程描述,因此,不必重复对于这些部分的详细描述。具体的差别是,在图3A中所示的每个存储器单元包括十六个状态级,其可以以二进制码被表示为0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110和1111。在这个示例实施例中,最右侧的位在此被称为1的位,下一个最右侧的位在此被称为2的位,下下一个最右侧的位在此被称为4的位,最左侧的位在此被称为8的位。
在示例实施例中,四个编程操作(例如,P1、P2、P3和P4)可在需要擦除操作(E1)之前被执行。前三个编程操作(例如,P1、P2和P3)可以以与上面参照图2描述的方式相似的方式被执行,因此不重复这些步骤中的每个步骤的详细描述。在第三编程操作P3完成之后,第四编程操作P4可被执行。
现在描述第四编程操作P4,其中,二进制数据“000111”被编程到相应的多级存储器单元,诸如,存储器单元240和与存储器单元240相邻的存储器单元。换言之,数据的串“000111”中的每个数据位可被编程到单独的多级存储器单元。编程逻辑部215可根据页级重编程状态元数据220的第四值V4,在第四编程操作P4期间对与每个多级存储器单元的2的4次幂(例如,8的位)相关联的第四状态级(例如,1011、1101、1010、0000、0100、0001)进行编程,而无需对正被编程的存储器单元中的任何一个的第一状态级、第二状态级和/或第三状态级进行读取。
更具体地讲,页级重编程状态元数据220的第四值V4可指示第一级编程、第二级编程和第三极编程对特定存储器页的存储器单元(例如,存储器单元240)已经发生——例如,存储器单元(例如,存储器单元240)的Vth处于指示4位的信息已被编程的特定状态级。响应于页级重编程状态元数据220是第四值V4,编程逻辑部215可对每个存储器单元(例如,存储器单元240)的8的位进行编程,以表示将被编程数据的串“000111”中的每个数据位。在这个示例实施例中,额外的电荷可被加入到存储器单元240,以使阈值电压Vth升高八级(+8)到表示“1011”的状态级。以这种方式,1的位的信息、2的位的信息和4的位的信息被保存,而不考虑额外的电荷是否被加入。这样的编程操作是额外的并且既不需要对存储器单元240的擦除也不需要对存储器单元240的读取。换言之,在编程操作P4期间,编程逻辑部215可要么加入额外的电荷以使阈值电压Vth升高八级(+8)(如在存储器单元240和存储器单元240的右侧的两个存储器单元的情况下),要么另外加入零电荷(+0)到存储器单元(如在最右侧的三个存储器单元的情况下)。
针对那些加入额外的电荷的存储器单元,阈值电压Vth被改变,因此例如存储器单元240的状态级被改变为“1101”。右侧的下两个存储器单元也具有加入的额外的电荷,这意味着它们的阈值电压Vth也被改变,因此它们的状态级分别被改变为“1101”和“1010”。下面的三个存储器单元在编程操作P4期间没有加入的额外的电荷,从而保存1的位的信息、2的位的信息和4的位的信息,同时仍使8的位的信息不改变。以这种方式,1的位的信息、2的位的信息、4的位的信息和8的位的信息被保存,而不考虑额外的电荷是否被加入。
因此,存储器单元的一些浮栅(例如,图1的浮栅120)接收加入的电荷(+8)以表示逻辑值0。此外,一些存储器单元没有接收加入的电荷(+0)一般是逻辑值1。以这种方式,逻辑值“000111”可被编程至存储器单元的8的位位置。编程逻辑部215可在第四编程操作P4期间对每个存储器单元的与2的4次幂(例如,8的位)相关联的第四状态级(例如,1011、1101、1010、0000、0100、0001)进行编程,而不会对正被编程的存储器单元之中的任何位进行擦除。作为编程操作P4的一部分(或者,在编程操作P4之后),存储器控制逻辑部210可将页级重编程状态元数据220设置指示第四级编程已发生的第五值V5。
在一些实施例中,页级重编程状态元数据220是能够表示至少五个值(V1、V2、V3、V4和V5)的3位的值。例如,如果页级重编程状态元数据220等于V1或‘000’,则可指示对特定存储器页没有发生编程,和/或存储器页被擦除。如果页级重编程状态元数据220等于V2或‘001’,则可指示对特定存储器页发生一级编程。如果页级重编程状态元数据220等于V3或‘010’,则可指示对特定存储器页发生二级编程。如果页级重编程状态元数据220等于V4或‘011’,则可指示对特定存储器页发生三级编程。如果页级重编程状态元数据220等于V5或‘100’,则可指示对特定存储器页发生四级编程。将理解,页级重编程状态元数据220不需要被限制为3位的值,而可以是可使用任何合适的二进制表示来存储和访问。在不脱离在此公开的发明实施例的范围的情况下,可使用页级重编程状态元数据220值的位值的其他组合。
因此,在对第一状态级、第二状态级、第三状态级和第四状态级进行编程期间,或者在对第一状态级、第二状态级、第三状态级和第四状态级进行编程之间,编程逻辑部215可在相同的地址(即,与存储器单元240相关联的地址)对与2的第1次幂(例如,1的位)相关联的第一状态级(例如,‘0001’)、与2的第2次幂(例如,2的位)相关联的第二状态级(例如,‘0011’)、与2的第3次幂(例如,4的位)相关联的第三状态级(例如,‘0011’)和与2的第4次幂(例如,8的位)相关联的第四状态级(例如,‘1011’)进行编程,而不会对存储器单元之中的任何位进行擦除。编程逻辑部215可在第一编程操作P1期间对每个存储器单元的与2的第1次幂(例如,1的位)相关联的第一状态级进行编程,而不会对正被编程的存储器单元的任何位进行擦除。编程逻辑部215可在第二编程操作P2期间对每个存储器单元的与2的第2次幂(例如,2的位)相关联的第二状态级进行编程,而不会对正被编程的存储器单元的任何位进行擦除。编程逻辑部215可在第三编程操作P3期间对每个存储器单元的与2的第3次幂(例如,4的位)相关联的第三状态级进行编程,而不会对正被编程的存储器单元的任何位进行擦除。编程逻辑部215可在第四编程操作P4期间对每个存储器单元的与2的第4次幂(例如,8的位)相关联的第四状态级进行编程,而不会对正被编程的存储器单元的任何位进行擦除。
每个存储器单元的第四状态级(例如,1011、1101、1010、0000、0100、0001)可对应于阈值电压Vth的第四值。阈值电压Vth的第四值包括存储于每个存储器单元的与2的第4次幂相关联的位位置(例如,8的位)中的信息。读取逻辑部235可根据页级重编程状态元数据220的第五值V5选择性地对存储于每个存储器单元的与2的第4次幂相关联的位位置(例如,8的位)中的信息进行读取。换言之,读取逻辑部235可访问页级重编程状态元数据220、确定页级重编程状态元数据220具有第五值V5,并基于该确定而获知读取8的位的信息。这样的读取操作可在8的位的信息已被编程之后的任何时间发生,但对于成功执行上述编程操作读取是不需要的。
因此,与仅允许24位的串的单次写入且在下一写入操作之前伴随的擦除操作的传统技术相比,参照图3A的示例实施例无需在写入操作之插入通常的擦除或读取操作,而允许多个6位的串被写入最多四(4)次。
图3B是示出根据本发明构思的实施例的在多级NAND存储器中使用容量的无擦除的重编程的流量的另一示例框图和概念图。上面参照图2提供了一些组件和流程描述,因此,不必重复这样的详细描述。具体的差别是,在图3B中所示的存储器单元中的每个包括十六个状态级,其可以以二进制码被表示为0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110和1111。在这个示例实施例中,最右侧的位在此被称为1的位,下一个最右侧的位在此被称为2的位,下下一个最右侧的位在此被称为4的位,最左侧的位在此被称为8的位。
在一些实施例中,1的位、2的位、4的位和8的位不需要使用四个独立的编程操作一次一个地被编程。例如,2的数位和4的数位可在同一编程操作期间被编程。在这个示例中,1的位可在第一编程操作(例如,第一编程操作P1)中被编程,2的位和4的位可在第二编程操作(例如,第二编程操作P2)中被编程,8的位可在第三编程操作(例如,第三编程操P3)中被编程。这仅实现了总共三个写入,但三个写入之一大于(例如,2位)其他两个写入。将理解,可在单个编程操作中写入1的位、2的位、4的位和8的位的任何组合,只要较低顺序的位针对后面的写入没有被重复利用并且保持正确的状态维持。这提供更多功能的多重写入系统。
更具体地讲,在示例实施例中,三个编程操作(例如,P1、P2和P3)可在需要擦除操作(E1)之前被执行。第一编程操作(例如,P1)可以以与如上面参照图2所述的编程操作P1相似的方式被执行,因此不重复该操作的详细描述。在第一编程操作P1完成之后,2个位的编程操作(例如,P2)可被执行。
现在描述编程操作P2,其中,在该编程操作P2中,二进制数据“10、01、10、11、01、11”被编程到相应的多级存储器单元(诸如,存储器单元240)和与存储器单元240相邻的存储器单元。换言之,数据的串“10、01、10、11、01、11”中的每个数据位对可同时被编程到不同的多级存储器单元内的不同的数位。编程逻辑部215可根据页级重编程状态元数据220,在第二编程操作P2期间对每个多级存储器单元的与2的第2次幂(例如,2的位)和2的第3次幂(例如,4的位)相关联的第二状态级(例如,0011、0101、0010、0000、0100、0001)进行编程,而不会对正被编程的存储器单元中的任何一个的与2的第1次幂(例如,1的位)相关联的第一状态级进行读取。数据的串“10、01、10、11、01、11”可在芯片中储存为数据值“01、10、01、00、10、00”。换言之,编程操作P2可对具有两倍的与之前的编程操作P1的位一样多的位的一个值进行编程。例如,编程操作P2可在单个编程操作期间对可作为单个值(例如,10、01、10、11、01和11)而被选择性地读取的多位的值进行编程。
更为具体地讲,页级重编程状态元数据220的第二值V2可指示第一级编程对特定存储器页的存储器单元(例如,存储器单元240)已经发生——例如,存储器单元(例如,存储器单元240)的Vth处于指示1的位的信息已被编程的特定的状态级。响应于页级重编程状态元数据220是第二值V2,编程逻辑部215可对每个存储器单元(例如,存储器单元240)的2的位和4的位进行编程,以表示将被编程的数据“10、01、10、11、01、11”中的每个数据位。在这个示例实施例中,电荷被加入到存储器单元240,以使它的阈值电压Vth升高到表示“0011”的状态级。
这样的编程操作是额外的,并且既不需要存储器单元240的擦除也不需要存储器单元240的读取。换言之,在编程操作P2期间,编程逻辑部215可(i)要么加入额外的电荷以使阈值电压Vth升高两级(+2)(如在存储器单元240的情况下),要么另外加入零电荷(+0)到存储器单元(如在存储器单元240的右侧的存储器单元的情况下),(ii)要么加入额外的电荷以使阈值电压Vth升高四级(+4)(如在存储器单元240的右侧的存储器单元的情况下),要么另外加入零电荷(+0)到存储器单元(如在存储器单元240的情况下)。
换言之,上面可被结构化为同时写入到2的位位置和4的位位置,其中,可被加入的电荷分别包括针对在芯片上储存的数据位11、10、01和00的+0/+2/+4/+6。在一些实施例中,值11、10、01和00可分别从芯片选择性地被读取出。
1的位的信息被保存,而不考虑额外的电荷是否被加入。因此,存储器单元的一些浮栅(例如,图1的浮栅120)接收加入的电荷(+2/+4/+6)以表示在2的位置和4的位置中储存的2个位的值。此外,一些存储器单元没有接收加入的电荷(+0)以表示逻辑值1。以这种方式,值“01、10、01、00、10、00”可被编程到存储器单元的2的位位置和4的位位置。编程逻辑部215可在第二编程操作P2期间对每个存储器单的与2的第2次幂(例如,2的位)和2的第3次幂(例如,4的位)相关联的第二状态级(例如,0011、0101、0010、0000、0100、0001)进行编程,而不会对正被编程的存储器单元之中的任何位进行擦除。作为编程操作P2的一部分(或者,在编程操作P2之后),存储器控制逻辑部210可将页级重编程状态元数据220设置为指示2级编程已发生的第四值V4(即,跳过值V3),其中,这里的二级编程之一是2个位的编程操作。
现在描述第三编程操作P3,其中,在第三编程操作P3中,二进制数据“000111”被编程到相应的多级存储器单元(诸如,存储器单元240)和与存储器单元240相邻的存储器单元。换言之,数据的串“000111”中的每个数据位可被编程到单独的多级存储器单元。编程逻辑部215可根据页级重编程状态元数据220,在第三编程操作P3期间对每个多级存储器单元的与2的第4次幂(例如,8的位)相关联的第三状态级(例如,1011、1101、1010、0000、0100、0001)进行编程,而不会对正被编程的存储器单元中的任何一个的第一状态级和/或第二状态级进行读取。
更具体地讲,页级重编程状态元数据220的第四值V4可指示第一级编程和第二级编程(包括1的位、2的位和4的位)对特定存储器页的存储器单元(例如,存储器单元240)已经发生——例如,存储器单元(例如,存储器单元240)的Vth处于指示至少4的位的信息已被编程的特定的状态级。响应于页级重编程状态元数据220是第四值V4,编程逻辑部215可对每个存储器单元(例如,存储器单元240)的8的位进行编程,以表示将被编程的数据的串“000111”中的每个数据位。在这个示例实施例中,额外的电荷可被加入到存储器单元240,以使阈值电压Vth升高八级(+8)到表示“1011”的状态级。以这种方式,1的位的信息、2的位的信息和4的位的信息被保存,而不考虑额外的电荷是否被加入。这样的编程操作是额外的,并且既不需要存储器单元240的擦除也不需要存储器单元240的读取。换言之,在编程操作P3期间,编程逻辑部215要么加入额外的电荷以使阈值电压Vth升高八级(+8)(如在存储器单元240和存储器单元240的右侧的两个存储器单元的情况下),要么将零电荷(+0)加入到存储器单元(如在最右侧的三个存储器单元的情况下)。
针对那些加入了额外的电荷的存储器单元,阈值电压Vth被改变,因此例如存储器单元240的状态级被改变为“1011”。右侧的后续两个存储器单元也具有加入的额外的电荷,这意味着它们的阈值电压Vth也被改变。下面的三个存储器单元在编程操作期间没有加入的额外的电荷,从而保存1的位的信息、2的位的信息和4的位的信息,并且8的位的信息被保存,而不考虑额外的电荷是否被加入。
因此,存储器单元中的一些浮栅(例如,图1的浮栅120)接收加入的电荷(+8)以表示逻辑值0。此外,一些存储器单元没有接收加入的电荷(+0)以表示逻辑值1。以这种方式,逻辑值“000111”可被编程到存储器单元的8的位位置。编程逻辑部215可在第三编程操作P3期间对每个存储器单元的与2的第4次幂(例如,8的位)相关联的第三状态级(例如,1011、1101、1010、0000、0100、0001)进行编程,而不会对正被编程的存储器单元之中的任何位进行擦除。作为编程操作P3的一部分(或者,在编程操作P3之后),存储器控制逻辑部210可将页级重编程状态元数据220设置为指示第四级编程已发生的第五值V5。
在一些实施例中,页级重编程状态元数据220是能够表示至少五个值(V1、V2、V3、V4和V5)的3位的值。例如,如果页级重编程状态元数据220等于V1或‘000’,这可指示对特定存储器页没有发生编程和/或存储器页被擦除。如果页级重编程状态元数据220等于V2或‘001’,这可指示对特定存储器页已发生1的位的编程。如果页级重编程状态元数据220等于V3或‘010’,这可指示对特定存储器页已发生2的位的编程。如果页级重编程状态元数据220等于V4或‘011’,这可指示对特定存储器页已发生4的位的编程。如果页级重编程状态元数据220等于V5或‘100’,这可指示对特定存储器页已发生8的位的编程。将理解,页级重编程状态元数据220不需要被限制为3位的值,而是可使用任何合适的二进制表示来擦除和访问。在不脱离在此公开的方面实施例的范围的情况下,可使用页级重编程状态元数据220值的位值的其他组合。
因此,在对第一状态级、第二状态级和第三状态级进行编程期间,或者在对第一状态级、第二状态级和第三状态级进行编程之间,编程逻辑部215可在相同的地址对与2的第1次幂(例如,1的位)相关联的第一状态级(例如,‘0001’)进行编程,可同时对与2的第2次幂(例如,2的位)和与2的第3次幂(例如,4的位)相关联的第二状态级(例如,‘0011’)进行编程,并可对与2的第4次幂(例如,8的位)相关联的第三状态级(例如,‘1011’)进行编程,而不会对存储器单元之中的任何位进行擦除。编程逻辑部215可在第一编程操作P1期间对每个存储器单元的与2的第1次幂(例如,1的位)相关联的第一状态级进行编程,而不会对正被编程的存储器单元中的任何位进行擦除。编程逻辑部215可在第二编程操作P2期间同时对每个存储器单元的与2的第2次幂(例如,2的位)和2的第3次幂(例如,4的位)相关联的第二状态级进行编程,而不会对正被编程的存储器单元中的任何位进行擦除。编程逻辑部215可在第三编程操作P3期间对每个存储器单元的与2的第4次幂(例如,8的位)相关联的第三状态级进行编程,而不会对正被编程的存储器单元中的任何位进行擦除。
每个存储器单元的第三状态级(例如,1011、1101、1010、0000、0100、0001)可对应于阈值电压Vth的第三值。阈值电压Vth的第三值包括存储于每个存储器单元的与2的第4次幂(例如,8的位)相关联的位位置中的信息。读取逻辑部235可根据页级重编程状态元数据220的第五值V5选择性地对存储于每个存储器单元的与2的第4次幂(例如,8的位)相关联的位位置中的信息进行读取。换言之,读取逻辑部235可访问页级重编程状态元数据220,确定页级重编程状态元数据220具有第五值V5,并基于该确定而获知读取8的位的信息。这样的读取操作可在8的位的信息已被编程之后的任何时间发生,但读取的步骤不需要上述编程操作被成功地执行。
因此,与图3A的仅允许6位的串被写入最多四(4)次的示例实施例相比,参照图3B的示例实施例允许更大的灵活性,并且没有在写入操作之间插入的通常的擦除操作或读取操作。如参照图3B的详细描述,将被写入的数据串可包括多个位对(bit pair)(例如,10、01、10、11、01、11)。将理解,三个位(bit triple)可以以相似的方式被写入。还将理解,单个位(bit single)可以以相似的方式被写入。实际上,单个位、位对、三个位、四个位(bitquadruple)等的任何合适的组合可根据在此描述的实施例被同时写入到多级存储器单元。例如,一个24位写入、两个12位写入、四个6位写入等可连续被执行。例如,在两个12位写入的情况下,第一个12位写入可包括12位的同时编程,跟随该12位的同时编程的是第二个12位写入,第二个12位写入可包括另一12位的另一同时编程,而不会在写入操作之间插入的通常的擦除操作或读取操作。通过另一示例,一个6位写入可被一个18位写入跟随,而不会在写入操作之间插入通常的擦除操作或读取操作。不同的位的写入的任何合适的组合可连续被执行,而不会在写入操作之间插入通常的擦除操作或读取操作,只要较低的顺序为针对后来的写入不是重复使用的并可保持正确的状态保持。
图4是示出根据本发明构思的实施例的用于在多级存储器单元中使用容量的无擦除的重编程的技术的流程图400。在405,存储器控制逻辑部可存储页级重编程状态元数据。例如,线前的编程级可被存储为可被下一个编程级参考的页级重编程状态元数据。更具体地讲,页级重编程状态元数据可指示没有信息在特定存储器页的存储器单元中被存储,或者可指示第一级编程、第二级编程、第三级编程、第四级编程等已经对特定存储器页的存储器单元发生。在410,编程逻辑部可根据页级重编程状态元数据的第一值对多个存储器单元中的每个存储器单元的与2的第1次幂至第N次幂中的一个或多个相关联的第一状态级进行编程。在415,编程逻辑部可根据页级重编程状态元数据的第二值对多个存储器单元中的每个存储器单元的与2的第2次幂至第N次幂中的一个或多个相关联的第二状态级进行编程,而不会对正被编程的存储器单元中的任何一个的第一状态级进行读取,并且不会对正被编程的存储器单元之中的任何位进行擦除。在420,编程逻辑部可根据页级重编程状态元数据的第三值对多个存储器单元中的每个存储器单元的与2的第3次幂至第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对正被编程的存储器单元中的任何一个的第一状态级和/或第二状态级进行读取,并且不会对正被编程的存储器单元之中的任何位进行擦除。将理解,这些步骤不必以所示的顺序被执行,而相反,可以以不同的顺序和/或使用插入的步骤被执行。此外,特定的步骤可在闪存单元能够支持更多级信息的实施例中被重复。
图5是示出根据本发明构思的实施例的用于在多级存储器单元中使用容量的无擦除的重编程的另一技术的流程图500。在505,对页级重编程状态元数据的当前值做出确定。当值为V1时,意味着存储器页当前处于擦除后的状态,然后流程可进行到510,在510中,多个存储器单元中的每个存储器单元的第一状态级可被编程。当值为V2时,意味着存储器页从上次的擦除操作之后,一个编程级已发生,然后流程可进行到515,在515中,多个存储器单元中的每个存储器单元的第二状态级可被编程,而不会对正被编程的存储器单元中的任何一个的第一状态级进行读取,并且不会对正被编程的存储器单元之中的任何位进行擦除。当值为V3时,意味着存储器页从上次的擦除操作之后,两个编程级已发生,然后流程可进行到520,在520中,多个存储器单元中的每个存储器单元的第三状态级可被编程,而不会对正被编程的存储器单元中的任何一个的第一状态级和/或第二状态级进行读取,并且不会对正被编程的存储器单元之中的任何位进行擦除。当值为VN时,意味着存储器页从上次的擦除操作之后,(N-1)个编程级已发生,然后流程可进行到525,在525中,多个存储器单元中的每个存储器单元的第N状态级可被编程,而不会对正被编程的存储器单元中的任何一个的任何前(N-1)个状态级进行读取,并且不会对正被编程的存储器单元之中的任何位进行擦除。将理解,这些步骤不必以所示的顺序被执行,而相反,可以以不同的顺序和/或使用插入的步骤被执行。此外,相似的步骤可基于包括该页的单元的存储能力被加入或移除。
图6是示出根据本发明构思的实施例的用于从多级存储器单元读取信息的技术的流程图600。在605,可对页级重编程状态元数据的当前值做出确定。当值为V2时,意味着对存储器页已发生一个编程级,流程可进行到610,在610中,在每个存储器单元的1的位中存储的信息可被读取,并且在625中被取补码以得到原始逻辑值。当值为V3时,意味着对存储器页上已发生两个编程级,流程可进行到615,在615中,在每个存储器单元的2的位中存储的信息可被读取,并且在625中被取补码以得到原始逻辑值。当值为V4时,意味着对存储器页已发生三个编程级,流程可进行到620,在620中,在每个存储器单元的4的位中存储的信息可被读取。在对每个存储器单元的1的位、2的位或4的位进行读取之后,这些一位的补码可在625被确定,以得到(例如,如在图2和图3A中所示的)最终的原始值。将理解,步骤不必以所示的顺序被执行,而相反,可以以不同的顺序执行和/或存在插入的步骤的情况下执行。此外,如上面解释的,之前存储的值可被读取可被取补码。
图7是示出根据在此公开的本发明构思的实施例的包括图2的存储器控制逻辑部210的计算系统700的示例框图。存储器控制器745可包括上面描述的存储器控制逻辑部210。存储器控制器745可电连接到系统总线705。计算系统700还可包括多级NAND存储器730、时钟710、随机存取存储器(RAM)715、用户接口720、调制解调器725(诸如,基带芯片组)和/或自动测试设备(ATE)735,可电结合到系统总线705的任何组件或所有组件。
如果计算系统700是移动装置,则计算系统700还可包括对计算系统700进行供电的电池740。尽管在图7中未示出,但是计算系统700还可包括应用芯片组、相机图像处理器(CIS)、移动DRAM等。存储器控制器745和多级NAND存储器730可构成使用非易失性存储器存储数据的固态硬盘(SSD)。
在示例实施例中,计算系统700可用作计算机、便携式计算机、超便携移动PC(UMPC)、工作站、上网本、PDA、上网平板、无线电话、移动电话、智能电话、电子书、PMP(便携式多媒体播放器)、数码相机、数字音频记录器/播放器、数字图片/视频记录器/播放器、便携式游戏机、导航系统、黑盒、3维电视机、能够在无线环境发送和接收信息的装置、构成家庭网络的各种电子装置之一、构成计算机网络的各种电子装置之一、构成远程信息处理网络的各种电子装置之一、RFID,或者构成计算系统的各种电子装置之一。
一些实施例包括一种存储器装置,包括:一个或多个存储器页,包括多个存储器单元,且所述多个存储器单元中的每个存储器单元具有多个可编程的状态级;存储器控制逻辑部,结合到所述一个或多个存储器页,存储器控制逻辑部包括编程逻辑部和页级重编程状态元数据。在一些实施例中,编程逻辑部被配置为:根据页级重编程状态元数据的第一值,在所述多个存储器单元的第一编程中,对所述多个存储器单元中的每个存储器单元的与2的第1次幂至第N次幂中的一个或多个相关联的第一状态级进行编程,其中,N是大于或等于2的正整数。在一些实施例中,编程逻辑部被配置为:根据页级重编程状态元数据的第二值,在所述多个存储器单元的第二编程中,对所述多个存储器单元中的每个存储器单元的与2的第2次幂至第N次幂中的一个或多个相关联的第二状态级进行编程,而不会对所述多个存储器单元的中任何一个存储器单元的第一状态级进行读取。
在一些实施例中,编程逻辑部被配置为:根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与2的第3次幂至第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个存储器单元的中任何一个存储器单元的第一状态级和第二状态级进行读取。在一些实施例中,编程逻辑部被配置为:在对第一状态级、第二状态级和第三状态级的进行编程期间,或者在对第一状态级、第二状态级和第三状态级进行编程之间,对所述多个存储器单元中的每个存储器单元的在相同地址处的第一状态级、第二状态级和第三状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。
在一些实施例中,2的第K次幂对应于2(K-1)的位位置,其中,K=1、2、…、N。
在一些实施例中,编程逻辑部被配置为:在第一编程期间,对所述多个存储器单元中的每个存储器单元的第一状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。在一些实施例中,编程逻辑部被配置为:在第二编程期间,对所述多个存储器单元中的每个存储器单元的第二状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。
在一些实施例中,编程逻辑部被配置为:编程逻辑部被配置为:根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的第三状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取。在一些实施例中,编程逻辑部被配置为:在第一编程期间,对所述多个存储器单元中的每个存储器单元的第一状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。在一些实施例中,在第二编程期间,对所述多个存储器单元中的每个存储器单元的第二状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。在一些实施例中,在第三编程期间,对所述多个存储器单元中的每个存储器单元的第三状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。
在一些实施例中,存储器控制逻辑部包括读取逻辑部。在一些实施例中,所述多个存储器单元中的每个存储器单元的第一状态级对应于阈值电压Vth的第一值。在一些实施例中,阈值电压Vth的第一值包括存储于所述多个存储器单元中的每个存储器单元的与所述2的第1次幂至第N次幂中的一个或多个相关联的位位置中的信息。在一些实施例中,读取逻辑部被配置为:根据页级重编程状态元数据的第二值,对存储于所述多个存储器单元中的每个存储器单元的与所述2的第1次幂至第N次幂中的一个或多个相关联的位位置中的信息进行读取。
在一些实施例中,所述多个存储器单元中的每个存储器单元的第二状态级对应于阈值电压Vth的第二值,阈值电压Vth的第二值包括存储于所述多个存储器单元中的每个存储器单元的与所述2的第2次幂至第N次幂中的一个或多个相关联的位位置中的信息,并且读取逻辑部被配置为:根据页级重编程状态元数据的第三值,对存储于所述多个存储器单元中的每个存储器单元的与所述2的第2次幂至第N次幂中的一个或多个相关联的位位置中的信息进行读取。
在一些实施例中,编程逻辑部被配置为:根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取。在一些实施例中,所述多个存储器单元中的每个存储器单元的第三状态级对应于阈值电压Vth的第三值。在一些实施例中,阈值电压Vth的第三值包括存储于所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的位位置中的信息。在一些实施例中,读取逻辑部被配置为:根据页级重编程状态元数据的第四值,对存储于所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的位位置中的信息进行读取。
在一些实施例中,存储器控制逻辑部被配置为:在对所述多个存储器单元中的每个存储器单元的第一状态级进行编程之后,将页级重编程状态元数据设置为第二值。在一些实施例中,在对所述多个存储器单元中的每个存储器单元的第二状态级进行编程之后,将页级重编程状态元数据设置为第三值。
在一些实施例中,编程逻辑部被配置为:根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取。在一些实施例中,存储器控制逻辑部被配置为:在对所述多个存储器单元中的每个存储器单元的第三状态级进行编程之后,将页级重编程状态元数据设置为第四值。
一些实施例包括一种用于对多级非易失性存储器单元进行编程的方法。所述方法可包括:通过存储器控制逻辑部,对页级重编程状态元数据进行存储。所述方法可包括:通过存储器控制逻辑部的编程逻辑部,根据页级重编程状态元数据,对存储器页的多个存储器单元进行编程。所述方法可包括:通过编程逻辑部,根据页级重编程状态元数据的第一值,在所述多个存储器单元的第一编程中,对所述多个存储器单元中的每个存储器单元的与2的第1次幂至第N次幂中的一个或多个相关联的第一状态级进行编程,其中,N是大于或等于2的正整数。所述方法可包括:通过编程逻辑部,根据页级重编程状态元数据的第二值,在所述多个存储器单元的第二编程中,对所述多个存储器单元中的每个存储器单元的与2的第2次幂至第N次幂中的一个或多个相关联的第二状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级进行读取。
所述方法可包括:通过编程逻辑部,根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与2的第3次幂与第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取。所述方法可包括:在对第一状态级、第二状态级和第三状态级进行编程期间,或者在对第一状态级、第二状态级和第三状态级进行编程之间,对所述多个存储器单元中的每个存储器单元的在相同地址处的第一状态级、第二状态级和第三状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。
所述方法可包括:在第一编程期间,对所述多个存储器单元中的每个的第一状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。所述方法可包括:通过编程逻辑部,在第二编程期间,对所述多个存储器单元中的每个存储器单元的第二状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。
所述方法可包括:通过编程逻辑部,根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与2的第3次幂至第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取。所述方法可包括:通过编程逻辑部,在第一编程期间,对所述多个存储器单元中的每个存储器单元的第一状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。所述方法可包括:通过编程逻辑部,在第二编程期间,对所述多个存储器单元中的每个存储器单元的第二状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。所述方法可包括:通过编程逻辑部,在第三编程期间,对所述多个存储器单元中的每个存储器单元的第三状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。
在一些实施例中,所述多个存储器单元中的每个存储器单元的第一状态级对应于阈值电压Vth的第一值,阈值电压Vth的第一值包括存储于所述多个存储器单元中的每个存储器单元的与所述2的第1次幂至第N次幂中的一个或多个相关联的位位置中的信息。所述方法可包括,通过存储器控制逻辑部的读取逻辑部,根据页级重编程状态元数据的第二值,对存储于所述多个存储器单元中的每个存储器单元的与所述2的第1次幂至第N次幂中的一个或多个相关联的位位置中的信息进行读取。在一些实施例中,所述多个存储器单元中的每个存储器单元的第二状态级对应于阈值电压Vth的第二值,阈值电压Vth的第二值包括存储于所述多个存储器单元中的每个存储器单元的与所述2的第2次幂至第N次幂中的一个或多个相关联的位位置中的信息。所述方法可包括,通过读取逻辑部,根据页级重编程状态元数据的第三值,对存储于所述多个存储器单元中的每个存储器单元的与所述2的第2次幂至第N次幂中的一个或多个相关联的位位置中的信息进行读取。
所述方法可包括,通过编程逻辑部,根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取。在一些实施例中,所述多个存储器单元中的每个存储器单元的第三状态级对应于阈值电压Vth的第三值。在一些实施例中,阈值电压Vth的第三值包括存储于所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的位位置中的信息。所述方法可包括,通过读取逻辑部,根据页级重编程状态元数据的第四值,对存储于所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的位位置中的信息进行读取。
所述方法可包括,通过存储器控制逻辑部,在对所述多个存储器单元中的每个存储器单元的第一状态级进行编程之后,将页级重编程状态元数据设置为第二值。所述方法可包括,通过存储器控制逻辑部,在对所述多个存储器单元中的每个存储器单元的第二状态级进行编程之后,将页级重编程状态元数据设置为第三值。
所述方法可包括,通过编程逻辑部,根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取。所述方法可包括,通过存储器控制逻辑部,在对所述多个存储器单元中的每个存储器单元的第三状态级进行编程之后,将页级重编程状态元数据设置为第四值。
本发明构思的实施例可包括:包括通过一个或多个处理器可执行的指令的非暂时性机器可读介质,该指令包括用于执行如在此描述的本发明构思的元件的指令。
Claims (20)
1.一种存储器装置,包括:
一个或多个存储器页,包括多个存储器单元,且所述多个存储器单元中的每个存储器单元具有多个可编程的状态级;
存储器控制逻辑部,结合到所述一个或多个存储器页,存储器控制逻辑部包括编程逻辑部和页级重编程状态元数据,
其中,编程逻辑部被配置为:根据页级重编程状态元数据的第一值,在所述多个存储器单元的第一编程中,对所述多个存储器单元中的每个存储器单元的与2的第1次幂至第N次幂中的一个或多个相关联的第一状态级进行编程,其中,N是大于或等于2的正整数;
其中,编程逻辑部被配置为:根据页级重编程状态元数据的第二值,在所述多个存储器单元的第二编程中,对所述多个存储器单元中的每个存储器单元的与2的第2次幂至第N次幂中的一个或多个相关联的第二状态级进行编程,而不会对所述多个存储器单元的中任何一个存储器单元的第一状态级进行读取。
2.如权利要求1所述的存储器装置,其中,
编程逻辑部被配置为:根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与2的第3次幂至第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个存储器单元的中任何一个存储器单元的第一状态级和第二状态级进行读取;
编程逻辑部被配置为:在对第一状态级、第二状态级和第三状态级的进行编程期间,或者在对第一状态级、第二状态级和第三状态级进行编程之间,对所述多个存储器单元中的每个存储器单元的在相同地址处的第一状态级、第二状态级和第三状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。
3.如权利要求2所述的存储器装置,其中,
2的第1次幂至第N次幂之中的2的第K次幂对应于2(K-1)的位位置,其中,K=1、2、…、N。
4.如权利要求1所述的存储器装置,其中,
编程逻辑部被配置为:在第一编程期间,对所述多个存储器单元中的每个存储器单元的第一状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除;
编程逻辑部被配置为:在第二编程期间,对所述多个存储器单元中的每个存储器单元的第二状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。
5.如权利要求1所述的存储器装置,其中,
编程逻辑部被配置为:根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的第三状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取;
编程逻辑部被配置为:在第一编程期间,对所述多个存储器单元中的每个存储器单元的第一状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除;
编程逻辑部被配置为:在第二编程期间,对所述多个存储器单元中的每个存储器单元的第二状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除;
编程逻辑部被配置为:在第三编程期间,对所述多个存储器单元中的每个存储器单元的第三状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。
6.如权利要求1所述的存储器装置,其中,
存储器控制逻辑部包括读取逻辑部,
所述多个存储器单元中的每个存储器单元的第一状态级对应于阈值电压的第一值,
阈值电压的第一值包括存储于所述多个存储器单元中的每个存储器单元的与所述2的第1次幂至第N次幂中的一个或多个相关联的位位置中的信息,
读取逻辑部被配置为:根据页级重编程状态元数据的第二值,对存储于所述多个存储器单元中的每个存储器单元的与所述2的第1次幂至第N次幂中的一个或多个相关联的位位置中的信息进行读取。
7.如权利要求6所述的存储器装置,其中,
所述多个存储器单元中的每个存储器单元的第二状态级对应于阈值电压的第二值,
阈值电压的第二值包括存储于所述多个存储器单元中的每个存储器单元的与所述2的第2次幂至第N次幂中的一个或多个相关联的位位置中的信息;
读取逻辑部被配置为:根据页级重编程状态元数据的第三值,对存储于所述多个存储器单元中的每个存储器单元的与所述2的第2次幂至第N次幂中的一个或多个相关联的位位置中的信息进行读取。
8.如权利要求7所述的存储器装置,其中,
编程逻辑部被配置为:根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个存 储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取,
所述多个存储器单元中的每个存储器单元的第三状态级对应于阈值电压的第三值,
阈值电压的第三值包括存储于所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的位位置中的信息,
读取逻辑部被配置为:根据页级重编程状态元数据的第四值,对存储于所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的位位置中的信息进行读取。
9.如权利要求1所述的存储器装置,其中,
存储器控制逻辑部被配置为:在对所述多个存储器单元中的每个存储器单元的第一状态级进行编程之后,将页级重编程状态元数据设置为第二值,
存储器控制逻辑部被配置为:在对所述多个存储器单元中的每个存储器单元的第二状态级进行编程之后,将页级重编程状态元数据设置为第三值。
10.如权利要求9所述的存储器装置,其中:
编程逻辑部被配置为:根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取,
存储器控制逻辑部被配置为:在对所述多个存储器单元中的每个存储器单元的第三状态级进行编程之后,将页级重编程状态元数据设置为第四值。
11.一种用于对多级非易失性存储器单元进行编程的方法,所述方法包括:
通过存储器控制逻辑部,对页级重编程状态元数据进行存储;
通过存储器控制逻辑部的编程逻辑部,根据页级重编程状态元数据,对存储器页的多个存储器单元进行编程;
通过编程逻辑部,根据页级重编程状态元数据的第一值,在所述多个存储器单元的第一编程中,对所述多个存储器单元中的每个存储器单元的与2的第1次幂至第N次幂中的一个或多个相关联的第一状态级进行编程,其中,N是大于或等于2的正整数;
通过编程逻辑部,根据页级重编程状态元数据的第二值,在所述多个存储器单元的第二编程中,对所述多个存储器单元中的每个存储器单元的与2的第2次幂至第N次幂中的一个或多个相关联的第二状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级进行读取。
12.如权利要求11所述的方法,还包括:
通过编程逻辑部,根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与2的第3次幂与第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取;
通过编程逻辑部,在对第一状态级、第二状态级和第三状态级进行编程期间,或者在对第一状态级、第二状态级和第三状态级进行编程之间,对所述多个存储器单元中的每个存储器单元的在相同地址处的第一状态级、第二状态级和第三状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。
13.如权利要求12所述的方法,其中,
2的第1次幂至第N次幂之中的2的第K次幂对应于2(K-1)的位位置,其中,K=1、2、…、N。
14.如权利要求11所述的方法,还包括:
通过编程逻辑部,在第一编程期间,对所述多个存储器单元中的每个存储器单元的第一状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除;
通过编程逻辑部,在第二编程期间,对所述多个存储器单元中的每个存储器单元的第二状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。
15.如权利要求11所述的方法,还包括:
通过编程逻辑部,根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与2的第3次幂至第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取,
其中,通过编程逻辑部,在第一编程期间,对所述多个存储器单元中的每个存储器单元的第一状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除,
其中,通过编程逻辑部,在第二编程期间,对所述多个存储器单元中的每个存储器单元的第二状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除,
其中,通过编程逻辑部,在第三编程期间,对所述多个存储器单元中的每个存储器单元的第三状态级进行编程,而不会对所述多个存储器单元的任何位进行擦除。
16.如权利要求11所述的方法,其中,所述多个存储器单元中的每个存储器单元的第一状态级对应于阈值电压的第一值,阈值电压的第一值包括存储于所述多个存储器单元中的每个存储器单元的与所述2的第1次幂至第N次幂中的一个或多个相关联的位位置中的信息,其中,所述方法还包括:
通过存储器控制逻辑部的读取逻辑部,根据页级重编程状态元数据的第二值,对存储于所述多个存储器单元中的每个存储器单元的与所述2的第1次幂至第N次幂中的一个或多个相关联的位位置中的信息进行读取。
17.如权利要求16所述的方法,其中,所述多个存储器单元中的每个存储器单元的第二状态级对应于阈值电压的第二值,阈值电压的第二值包括存储于所述多个存储器单元中的每个存储器单元的与所述2的第2次幂至第N次幂中的一个或多个相关联的位位置中的信息,其中,所述方法还包括:
通过读取逻辑部,根据页级重编程状态元数据的第三值,对存储于所述多个存储器单元中的每个存储器单元的与所述2的第2次幂至第N次幂中的一个或多个相关联的位位置中的信息进行读取。
18.如权利要求17所述的方法,还包括:
通过编程逻辑部,根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取,
其中,所述多个存储器单元中的每个存储器单元的第三状态级对应于阈值电压的第三值,
其中,阈值电压的第三值包括存储于所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的位位置中的信息,
其中,所述方法还包括:通过读取逻辑部,根据页级重编程状态元数据的第四值,对存储于所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的位位置中的信息进行读取。
19.如权利要求11所述的方法,还包括:
通过存储器控制逻辑部,在对所述多个存储器单元中的每个存储器单元的第一状态级进行编程之后,将页级重编程状态元数据设置为第二值;
通过存储器控制逻辑部,在对所述多个存储器单元中的每个存储器单元的第二状态级进行编程之后,将页级重编程状态元数据设置为第三值。
20.如权利要求19所述的方法,还包括:
通过编程逻辑部,根据页级重编程状态元数据的第三值,在所述多个存储器单元的第三编程中,对所述多个存储器单元中的每个存储器单元的与所述2的第3次幂至第N次幂中的一个或多个相关联的第三状态级进行编程,而不会对所述多个存储器单元中的任何一个存储器单元的第一状态级和第二状态级进行读取;
通过存储器控制逻辑部,在对所述多个存储器单元中的每个存储器单元的第三状态级进行编程之后,将页级重编程状态元数据设置为第四值。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662366621P | 2016-07-25 | 2016-07-25 | |
US62/366,621 | 2016-07-25 | ||
US15/256,494 US9627049B1 (en) | 2016-07-25 | 2016-09-02 | Reprogram without erase using capacity in multi-level NAND cells |
US15/256,494 | 2016-09-02 | ||
US15/436,755 US9818476B1 (en) | 2016-07-25 | 2017-02-17 | Reprogram without erase using capacity in multi-level NAND cells |
US15/436,755 | 2017-02-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107657982A CN107657982A (zh) | 2018-02-02 |
CN107657982B true CN107657982B (zh) | 2022-12-20 |
Family
ID=60255665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710550082.0A Active CN107657982B (zh) | 2016-07-25 | 2017-07-07 | 对多级非易失性存储器单元进行编程的方法和存储器装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9818476B1 (zh) |
JP (1) | JP6757298B2 (zh) |
KR (1) | KR102182225B1 (zh) |
CN (1) | CN107657982B (zh) |
TW (1) | TWI706248B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10564890B2 (en) * | 2017-07-07 | 2020-02-18 | Seagate Technology Llc | Runt handling data storage system |
KR102530641B1 (ko) * | 2018-03-21 | 2023-05-10 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11163482B2 (en) | 2019-06-26 | 2021-11-02 | International Business Machines Corporation | Dynamic performance-class adjustment for storage drives |
US11049570B2 (en) | 2019-06-26 | 2021-06-29 | International Business Machines Corporation | Dynamic writes-per-day adjustment for storage drives |
US11137915B2 (en) | 2019-06-27 | 2021-10-05 | International Business Machines Corporation | Dynamic logical storage capacity adjustment for storage drives |
US11550510B2 (en) * | 2021-05-10 | 2023-01-10 | Micron Technology, Inc. | Encoding and decoding data bits stored in a combination of multiple memory cells |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140806A (zh) * | 2006-09-04 | 2008-03-12 | 三星电子株式会社 | 非易失性存储设备和相关操作方法 |
CN101685672A (zh) * | 2008-09-22 | 2010-03-31 | 三星电子株式会社 | 在多级单元闪存装置中使用的最低有效位页恢复方法 |
CN102947887A (zh) * | 2010-03-25 | 2013-02-27 | 桑迪士克以色列有限公司 | 非易失性存储设备中的同时多状态读取或验证 |
US8879319B1 (en) * | 2011-07-29 | 2014-11-04 | Ecole Polytechnique Federale De Lausanne (Epfl) | Re-writing scheme for solid-state storage devices |
CN104395965A (zh) * | 2012-06-22 | 2015-03-04 | 考文森智财管理公司 | 用于在具有多个存储状态的非易失性存储单元中执行操作的设备和方法 |
CN105280228A (zh) * | 2014-07-08 | 2016-01-27 | 爱思开海力士有限公司 | 半导体存储器件、半导体系统和操作方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5815434A (en) | 1995-09-29 | 1998-09-29 | Intel Corporation | Multiple writes per a single erase for a nonvolatile memory |
DE60102203D1 (de) | 2000-12-15 | 2004-04-08 | St Microelectronics Srl | Programmierverfahren für eine Mehrpegelspeicherzelle |
KR100816155B1 (ko) * | 2006-12-28 | 2008-03-21 | 주식회사 하이닉스반도체 | 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 멀티레벨 셀 프로그램 방법 |
KR101438072B1 (ko) * | 2010-04-15 | 2014-09-03 | 라모트 앳 텔-아비브 유니버시티 리미티드 | 소거 없는 플래시 메모리의 다중 프로그래밍 |
US8917559B2 (en) | 2012-04-04 | 2014-12-23 | Sandisk Technologies Inc. | Multiple write operations without intervening erase |
KR20140021780A (ko) * | 2012-08-10 | 2014-02-20 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 제어 방법 |
-
2017
- 2017-02-17 US US15/436,755 patent/US9818476B1/en active Active
- 2017-04-04 KR KR1020170043871A patent/KR102182225B1/ko active IP Right Grant
- 2017-05-22 TW TW106116806A patent/TWI706248B/zh active
- 2017-07-07 CN CN201710550082.0A patent/CN107657982B/zh active Active
- 2017-07-25 JP JP2017143644A patent/JP6757298B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140806A (zh) * | 2006-09-04 | 2008-03-12 | 三星电子株式会社 | 非易失性存储设备和相关操作方法 |
CN101685672A (zh) * | 2008-09-22 | 2010-03-31 | 三星电子株式会社 | 在多级单元闪存装置中使用的最低有效位页恢复方法 |
CN102947887A (zh) * | 2010-03-25 | 2013-02-27 | 桑迪士克以色列有限公司 | 非易失性存储设备中的同时多状态读取或验证 |
US8879319B1 (en) * | 2011-07-29 | 2014-11-04 | Ecole Polytechnique Federale De Lausanne (Epfl) | Re-writing scheme for solid-state storage devices |
CN104395965A (zh) * | 2012-06-22 | 2015-03-04 | 考文森智财管理公司 | 用于在具有多个存储状态的非易失性存储单元中执行操作的设备和方法 |
CN105280228A (zh) * | 2014-07-08 | 2016-01-27 | 爱思开海力士有限公司 | 半导体存储器件、半导体系统和操作方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2018018570A (ja) | 2018-02-01 |
KR102182225B1 (ko) | 2020-11-25 |
JP6757298B2 (ja) | 2020-09-16 |
KR20180011703A (ko) | 2018-02-02 |
US9818476B1 (en) | 2017-11-14 |
TW201804327A (zh) | 2018-02-01 |
TWI706248B (zh) | 2020-10-01 |
CN107657982A (zh) | 2018-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107657982B (zh) | 对多级非易失性存储器单元进行编程的方法和存储器装置 | |
CN101595528B (zh) | 存储器装置架构和操作 | |
US7949821B2 (en) | Method of storing data on a flash memory device | |
US8009503B2 (en) | Card controller controlling semiconductor memory including memory cell having charge accumulation layer and control gate | |
US8107287B2 (en) | Method of programming nonvolatile memory device | |
US9520184B2 (en) | Method for writing in-system programming code into flash memory for better noise margin | |
US9747045B2 (en) | Sub-sector wear leveling in memories | |
KR20100010746A (ko) | 읽기 전압 레벨이 설정가능한 플래시 메모리 시스템 및읽기 전압 레벨의 설정방법 | |
US9489143B2 (en) | Method for accessing flash memory and associated controller and memory device | |
KR20100013187A (ko) | 파라미터를 추출하는 불휘발성 메모리 장치 및 그것을포함하는 불휘발성 메모리 시스템 | |
US8743622B2 (en) | Memory devices and programming methods that program a memory cell with a data value, read the data value from the memory cell and reprogram the memory cell with the read data value | |
KR20100007813A (ko) | 메모리 제어기, 메모리 시스템, 및 메모리 시스템을 위한 제어 방법 | |
CN102197437B (zh) | 存储器装置中的数据传送及编程 | |
US20140092682A1 (en) | Method for programming and reading flash memory by storing last programming page number | |
US11487655B2 (en) | Method for managing flash memory module and associated flash memory controller and electronic device based on timing of dummy read operations | |
KR100948468B1 (ko) | 불휘발성 메모리 장치의 플래그 상태 결정 방법. | |
CN112262435B (zh) | 用于确定存储器单元的预期数据使用期限的设备及方法 | |
CN110462585B (zh) | 用于更新程序的方法和设备 | |
CN110827902A (zh) | 一种随机编码方法及固态硬盘 | |
US9627049B1 (en) | Reprogram without erase using capacity in multi-level NAND cells | |
CN110908825B (zh) | 一种数据读取方法、装置、存储设备及存储介质 | |
CN113900581A (zh) | 存储器装置及其读取方法 | |
US20120051142A1 (en) | Soft Program Method and Computer Redable Medium Thereof | |
KR20110001058A (ko) | 불휘발성 메모리 소자의 동작 방법 | |
US20210375374A1 (en) | Method and apparatus for managing seed value for data scrambling in nand memory |
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 |