CN104332178B - 固态非易失性存储单元的部分重新编程 - Google Patents

固态非易失性存储单元的部分重新编程 Download PDF

Info

Publication number
CN104332178B
CN104332178B CN201410534322.4A CN201410534322A CN104332178B CN 104332178 B CN104332178 B CN 104332178B CN 201410534322 A CN201410534322 A CN 201410534322A CN 104332178 B CN104332178 B CN 104332178B
Authority
CN
China
Prior art keywords
storage unit
unit
state
programming
programming state
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
Application number
CN201410534322.4A
Other languages
English (en)
Other versions
CN104332178A (zh
Inventor
A·克利亚
V·沃迪
R·V·鲍曼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Seagate Technology LLC filed Critical Seagate Technology LLC
Publication of CN104332178A publication Critical patent/CN104332178A/zh
Application granted granted Critical
Publication of CN104332178B publication Critical patent/CN104332178B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0033Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

本申请公开了固态非易失性存储单元的部分重新编程。一种管理如闪存阵列的存储器中数据的方法和装置。根据一些实施例,数据被写入到固态非易失性存储单元的集合,从而该集合中的每个存储单元被写入至相关初始编程状态。检测该集合中的所选存储单元的编程状态的漂移,对所选存储单元进行部分重新编程,以使得所选存储单元返回到相关初始编程状态。

Description

固态非易失性存储单元的部分重新编程
发明内容
本发明的各个实施例一般涉及例如闪存阵列的存储器中的数据管理。
根据一些实施例,数据被写入到固态非易失性存储单元的集合,使得该集合的每个存储单元被写入相关联的初始编程状态。该组中选定的存储单元的编程状态的漂移被检测到,并且所选定的存储单元被部分地重新编程,以使得所选定的存储单元返回到相关的初始编程状态。
表征各个实施例的这些和其他特征将通过下文的详细讨论和附图而被理解。
附图说明
图1示出了根据多个实施例的与主机装置进行通信的数据存储装置的功能框图。
图2示出了根据一些实施例的图1的数据存储装置的框图。
图3示出了可以在图1的设备中使用的闪存单元结构。
图4是使用图3中单元的闪存阵列的部分的示意图。
图5示出了擦除块的示例性格式。
图6示出了将擦除块设置成垃圾收集单元(GCU)。
图7示出了来自图6的存储单元的电荷密度分布。
图8示出了图7的所选分布中的电荷漂移。
图9示出了数据存储装置的部分重新编程电路,其根据多个实施例进行操作以校正图8的电荷漂移。
图10是数据存储装置的读/写/擦除电路的读出部分。
图11是读/写/擦除电路的写部分。
图12示出对存储单元分布应用不同的电压检测阈值以评估编程漂移。
图13示出分别在正常编程和部分编程操作过程中由图11的写部分施加的正常编程增量及部分编程增量。
图14是部分编程序列。
图15是根据一些实施例的部分编程例程的流程图。
具体实施方式
本发明一般涉及管理存储在存储模块中的数据,例如但不限于数据存储装置的闪存阵列。
本领域已知各种各样的非易失性数据存储器。一些非易失性存储器采用固态存储单元的形式,诸如闪存,电阻式随机存取存储器(RRAM),自旋力矩转移随机存取存储器(STRAM),相变随机存取存储器(PCRAM)等。
这些和其它类型的存储单元采用半导体结构,并存储与单元的编程的电气、机械和/或结构方面有关的数据。虽然名义上是非易失性,使得编程状态保持的时间较长,然而存储单元可能面对多种影响,其导致编程状态的变化(编程漂移)。这些影响包括读取干扰、写入干扰、充电漂移、温度下降、退磁、写/擦除周期的积累、磨损等,会随着时间而影响单元的编程完整性。
通常在前存储数据时对现有单元重新编程或者将数据写入到一组新的单元时执行刷新操作,在编程漂移发生前足以防止编程数据的可靠恢复。一些存储单元在重写数据到单元之前需要插入的擦除操作。垃圾收集操作可以包括擦除或重置存储块以使存储块返回到可用的分配池之后,再重写当前数据到新的位置。
然而在操作时,与当前的刷新操作(包括但不限于垃圾收集操作)相关的一个问题是,数据的重写以及必要的存储单元擦除,会减少存储单元的总体工作寿命。某些类型的闪存单元,例如,在大约5000次的写入/擦除周期后失效。其他类型的存储单元由于反复写入和/或擦除也遇到类似的磨损敏感性。
写入放大是与固态非易失性存储单元(包括闪存单元)有关的相关现象。写入放大一般涉及将特定的一组数据写入到存储器内的次数的总和。理想的写入放大值将等于1(1),当一旦收到最佳的一组数据就将其一次性写入到存储器中。然而在实际操作中,垃圾收集及其它刷新操作往往导致数据被迁移、改写、复制或以其他方式在阵列中重复多次。一些当前的固态硬盘(SSD)具有的典型的写入放大值为3(3)或以上,这意味着从开始写入直到接收之后,每组从主机接收到的数据最终在内存中重写另外至少两次。
可以理解的是,高级别的写入放大会减少存储器的工作寿命,而且如果多组相同的数据同时驻留在存储器内的不同位置则还会降低容纳新数据的能力。
因此,本发明的多个实施例一般直接涉及在固态非易失性存储器中以减少写入放大的方式来管理数据的设备和方法。如下面所解释的,存储单元的块被编程到初始编程状态。作为估计或检测的编程漂移的结果,一个或多个存储单元被确定为部分重新编程的候选。
通过向存储单元施加编程努力的相对小的增量,例如电荷的小的增量,来将单元恢复至之前施加的编程状态,可将部分重新编程应用于一个或多个存储单元。该单元可以用时间/日期戳或其他指示数据来标记,以指示单元已被重新编程。在这种方式中,可以减少存储阵列内迁移数据所需的开销时间和资源,而且可以避免由于不必要的擦除和写入操作所造成的对存储阵列的磨损。
在一些实施例中,闪存环境中的部分重新编程是基于闪存单元随时间丢失的电荷量而执行的,通过读取施加的电压阈值或单元的误码率而测量。该存储单元然后被抢先部分地重新编程,以使单元恢复到原来的状态。这消除了将数据复制到一个新的、未用过的块和回收旧块的必要。
部分重新编程可以通过使用减少的编程电压、脉冲等来进行。不同类型的存储单元可以被部分地重新编程,包括闪存单元,PCRAM单元,STRAM单元,RRAM单元等。在闪存单元的情况下,基本上刚好足够的电子跨越浮置栅极边界,以使单元的电压阈值返回到其最初的编程状态。
在进一步的实施例中,查找表或其它机制,如传递函数,可以用来确定用于给定存储单元中的适当的矫正程序结果。可以影响闪存单元的电荷损失的变量包括温度、时间和编程/擦除周期。该设备可以跟踪这些和其它变量并安排背景技术中部分重编程的应用来保持编程状态在指定分布容差范围内。
各种实施例的这些和其他特征可以从图1的描述开始理解,其提供了一个数据处理系统的简化框图,该系统的特征在于数据存储装置100连接至主机设备102。相应的存储装置100和主机102可采取任何合适的形式。在一些实施例中,主机102是一个网络可访问的计算设备,例如台式计算机,服务器,便携式电子设备,智能电话,笔记本电脑,平板电脑,游戏系统等。存储装置100可并入主机102中,或者可以本地连接到主机或通过网络来为主机102提供易失性和/或非易失性数据存储容量。
图2示出了根据一些实施例的图1的存储装置102的示意性结构。该装置102包括控制模块104和存储模块106。控制模块104为数据处理系统提供高级控制,以及存储模块106提供主数据存储。存储模块106通过控制模块104经过控制/存储模块通信接口105,来用于接收、处理和执行发送给它的命令。
各模块104、106可以采用多种形式。固态驱动器(SSD)的应用可以将控制模块104和存储模块106结合在一个集成、独立组装件中。在混合盘驱动器的应用中,存储模块106可以包括闪存和基于光盘的存储器。存储卡的应用可以在主机装置102中结合一些或全部控制模块功能(图1)。
图2所示的示例性控制模块104包括控制器108、接口(I/F)电路110和存储缓冲器112。控制器108提供装置100的总体控制功能,包括引导数据在主机102和存储模块106之间的传输。该I/F电路108提供与主机和存储模块106的通信接口。缓冲器112可以提供控制器108用的编程和控制数据、以及数据访问操作的数据的临时存储的存储位置。虽然图2中没有具体描绘,但是控制模块104也可以包括附加的功能,包括加密、差错检测和校正、以及其他信号处理功能。
所示的存储模块106包括读/写/擦除(R/W/E)电路114和一个或多个闪存阵列116。响应于控制模块104的控制输入,操作R/W/E电路114对闪存阵列116执行读、写和擦除功能。虽然存储器使用的是闪存,其只是示例性的而非限制性的,因为可以使用任何数量的不同类型的固态非易失性存储器,包括具有多种类型的存储器(例如,闪存,RRAM,STRAM,PCRAM,等等)的混合系统。
闪存阵列116可以由单个闪存单元118形成,如图3所通常描绘的。闪存单元118形成在具有隔开的n+掺杂区域122的半导体衬底120上。栅结构124跨越了一对相邻的掺杂区域,使闪存单元采用通常nMOS晶体管的结构。其它闪存单元可形成在衬底上,使得每一对相邻的掺杂区域122提供有相关联的栅极结构124。
栅极结构124提供导电栅极126,128和电绝缘区130,132的交替堆叠。与被表征为浮置栅极(FG)的下部栅极126上存储电荷的相对量相关,数据被每个单元118存储。
通过将所选择的适当电压施加到相邻的掺杂(漏极和源极)区122和被表征为控制栅极(CG)的上部栅极128,浮置栅极126在编程操作期间累积电荷。这些施加的电压引起电荷从半导体衬底120的沟道(CH)部分穿过绝缘区域130到浮栅126的可控的迁移。
在初始擦除状态,通常浮置栅极基本上不累积电荷。在这种状态下,没有将电压施加到控制栅极,单元一般会倾向于显示出跨过沟道的漏极-源极导通。一旦电荷在浮置栅极积累,除非有足够高的栅极控制电压施加到控制栅极使在该点单元变成导通,否则漏极-源极路径将是不导电的。该单元的编程状态可通过观察允许漏-源电流穿过单元所需的控制栅极的电平来确定,该电平通常与浮置栅极上累积的电荷量相关。
单元118可以配置为单级单元(SLC)或多级单元(MLC)。一个SLC存储单个位;通常惯例是逻辑位值1赋值给擦除单元(基本上没有积累电荷)和逻辑位值0赋值给编程单元(存在积累电荷的选定阈值)。MLC存储多位,如2位。一般地,可以使用2n存储状态来存储n个位。通常惯例是将多位的逻辑值11赋值给具有电荷C0(基本上没有存储电荷)的擦除单元,然后顺序将剩下的多位的逻辑值01,00和10分配给越来越高的电荷水平C1,C2和C3。
特定的擦除操作一般需要从浮置栅极126去除积累的电荷。可以通过在控制栅极上施加相对高的电压来使得电荷从浮置栅极迁移回到沟道来执行擦除。在数据写入操作期间,不同的电压集合可被施加到单元,并在此后添加电荷至浮置栅极。
如图3中存储单元118可配置在存储模块106中作为存储单元的行和列的阵列中,如图4通常所示。相邻单元的每一列都可以通过一个或多个位线(BL)134连接。沿着每一行的每个单元118的控制栅极128可通过单独的字线(WL)136互连。
在图4所示的存储单元的阵列,可以被分组到擦除块140,如在图5和6中所述。每个擦除块140可以是存储器中的可单独寻址的块,并表示存储器的最小单位,其可以同时被擦除。每个擦除块140可以被设置为存储单元的多个行142,其中各行共用一个共同的字线(图4)和适应用户数据的所选择量的存储。可以根据需要来利用单元的其它内部设置和互连。
可以采用块级别的磨损平抑来跟踪各个块140的擦除和写入状态。需要分配使用新的块来容纳新接收的数据。在一些实施例中,块140的组可以被累积成较大的垃圾收集单元(GCUs)144,其作为一个单元被分配、使用和擦除。GCU144可采取任何合适的尺寸。
至少在某些实施例中,有时被称为页面的数据的固定尺寸集合被一次写入到每行142。页面尺寸可对应于一个逻辑扇区,或被合并到的每个页的数据的多个用户扇区。该扇区中的每一个具有相关的逻辑地址,例如逻辑块地址(LBA)。纠错码,如奇偶校验位或里德所罗门码(Reed Solomon code)可以在页面级别被结合,以在检索一个完整的数据页面时纠错。元数据和其他控制信息可以被存储在每个擦除块140中或其它地方,例如在专用于此目的的特定存储块中。
图7示出了存储在图6的阵列中的多个闪存单元118上的电荷的不同电平的示例性标准化电荷分布150、152、154和156。
该分布图的共同的x轴158表示电压的大小,以及共同的y轴159表示单元群计数。
分布150、152、154和156表示关于名义上的累积的电荷状态C0<C1<C2<C3变化,以及对应于MLC编程状态11,01,00和10。可以使用其它编码方案。分布150代表阵列中存储单元上的电荷量变化,该阵列被编程到状态11,分布152对应于状态01,分布154对应于状态00,分布156对应于状态10。分布156的单元具有最多的累积电荷和分布150的单元具有最少的累积电荷。
编程的状态11,01,00和10可以表示用于每个单元中数据的两个不同的页面(块)的数据。在这种情况下,编程状态的最低有效位(LSB)可用于为第一页提供位值,并且编程状态的最高有效位(MSB)可用于为第二页提供位值。
各个电荷分布150-156最好是不重叠的,以使得合适的读阈值电压T1,T2,T3和T4区分各种编程状态。阈值电压T1名义上提供了一个电压电平足以将分布150中的所有的存储单元设为源极-漏极导通状态,但不足以将分布152,154和156中的单元设为导通状态。阈值T4通常足够大,以将所有的单元设为导通状态,而不论它们的编程状态。
通过将用于所选择单元的位线134(图4)设置在合适的正向电压(例如,+3V,等),并将余下的未被选中的位线设置在一些其他较低的参考电压(例如,0V),来读出一个所选闪存单元的编程状态。用于不包含所选择单元的行的非选择字线136可以被放置在最高阈值T4,从而使除了所选择的单元之外的所选的列中的所有单元处于源极-漏极导通状态。
一个或多个读出阈值电压可随后施加到与所选择的单元关联的WL136,并且可根据是否有电流流过位位线134和所选列中的其他单元来确定所选择的单元的编程状态。因此该读出操作评估给定读取的阈值电压是否足以使所选单元处于导通状态;获得流经该列的电流所需的施加电压越高,存在于浮置栅极上的积累电荷的量越大。
在一些实施例中,数据的第一页被写入到沿SLC模式下单元的所选择的行的单元。数据的第一页将以某种顺序(如00101111010000100...)构成逻辑0和1的位序列。一个位将存储在每个单元中。存储了逻辑1的那些单元可能未能获得编程工作(或最小的编程工作),以便有一个电荷水平落在“11”分布150中。存储了逻辑0的那些单元将得到足够的编程工作,以提高电荷水平,落入“00”分布154中。
为了从SLC读回存储的位序列,可将读出阈值电压T2依次应用到每个单元,并且可以相对于该单元是否被置于导通状态来确定所存储的状态(逻辑1或0),作为所施加的读出阈值电压的结果。
数据的第二页随后可以被改写到SLC单元以将单元转化为MLC形式。和以前一样,数据的第二页构成逻辑0和1的位序列,并且来自数据的第二页的一个位将被存储到每个单元。存储逻辑1的这些单元将不会接收额外的编程工作。存储逻辑0的这些单元将接收足够的额外电荷来将电荷水平增加到下一个更高的分布。
如果逻辑1将被写入在由“11”分布150编程的存储单元中,额外的电荷将单元转换到“01”分布152,同样地,如果一个逻辑1将被写入到由“00”分布154编程的存储单元中,额外电荷将单元转换到“10”分布156。在每一种情况下,编程单元(最右边的位)的LSB表示用于数据的第一页中的位值并且编程单元的MSB(最左边的位)指示数据的第二页中的位值。
理想的情况下,各个种群150-156保持足够的分离,以使各阈值T1~T4来正确辨别单元的编程状态。然而,随着时间的推移的各种效果,如磨损,读取干扰,写入扰乱,温度,电荷漂移,制造公差等,可引起单元中给定的群体中的漂移,如图8所描绘的虚线转移分布152所表示。可以看出,转移分布152中的一些存储单元将被检测为存储编程状态为11,而不是实际的编程状态01。电荷漂移可导致累积电荷的总量的增加或减少,使图8中所示的分布右移也会发生。
图9示出了根据各种实施例的部分重新编程电路160操作以来校正存储单元162中的编程漂移。如图8所示,编程漂移是闪存单元的电荷漂移的形式。可替代地,存储单元可采取不同的形式,如PCRAM单元,RRAM单元,STRAM单元等,以及编程漂移可以有相变漂移、阻抗漂移、退磁等形式。
部分重新编程电路160对存储单元162施加重新编程工作,使单元恢复到先前的编程状态。就时间,脉冲宽度,电荷转移量,施加的磁场强度等而言,重新编程工作量比正常编程工作量要少。以这种方式,电路160“微调”现有编程状态以收紧编程分布。
在一些实施例中,部分重新编程电路160形成控制器108或读/写/擦除(R/W/E)的电路114的一部分,或者与这些其他电路交互的独立电路。电路160可以采用多个控制输入,包括检测或估计错误位率(BER)、时间信息、温度测量、累积写入/擦除(W/E)的计数等等,以确定应该应用重新编程工作的候选存储单元。查找表164可存储要使用的分布信息,以使得电路160在各种环境条件或环境下能够对特定单元进行重新编程。
图10示出了图2的读/写/擦除电路图114的读出部分170,其操作用于从一组MLC,例如沿着所选行,读取两页(块)数据。命令解码器块172处理读出命令,并输出一个或多个数字读出阈值T至数模转换器(DAC)/驱动器电路174。该DAC/驱动器174输出一个相应的模拟栅极电压依次至每个单元(由图9中存储单元162表示)。源极电压Vs是由电源176施加。单元的导通状态采用一个比较器178以及来自电源180的适当的基准电压Vr来检测。检测到的数据被提供到输出缓冲器182,其分别存储所存储的数据(分别为第1页和第2页)。
可能需要多个阈值来检测每一单元的存储状态。电压阈值T2可以在初始时施加,以感测MSB页1数据的存储状态。电压阈值T1和T3可以随后施加,以感测LSB页2数据的存储状态。如果阈值T2使单元导通,则T1可随后施加以确定该单元是否落在分布150或152内。同样地,如果阈值T2未能将单元放置在导通状态,则应用T3将确定单元是否在落入分布154或156内。
因此可以很容易地确定存储状态11,01,00或10,其中第一(MSB)位指示第一页中的位,以及第二(LSB)位指示第二页中的位。对每个MLC依次重复上述步骤将为第一和第二页产生恢复位序列。
如图10所示,由读/写/擦除电路114的写入电路部分190可以进行单元的编程。使用了一个充电泵设置,由比积累电荷的离散量子依次被转送到所选择的单元162,以提高所需编程分布的总电荷累积量。
电压源192提供编程电压至电容器194或其他电荷存储元件。可以采用功率MOSFET或其它合适装置的形式的选择性激活开关196周期性地关闭使得累积的电荷从电容器194转移到所选择的存储单元162。
图10中的读出电路170可用于在电荷的积累过程中周期性地施加多个程序验证(PV)读取阈值电压中的一个至单元。在一些实施例中,图11的程序处理继续进行,直到单元162不再响应于特定的PV读出阈值变得导通,此时所选单元上的编程操作被终止。
图12提供用于编程存储单元的分布的另一个分布曲线198。可以施加一系列的电压阈值以确定分布的尺寸和形状。如图12所示,下基线阈值Va可以随着递增的阈值(Va-,Va+)被施加,以表征分布曲线198的底部边界,其中递增的阈值(Va-,Va+)可以比基线阈值稍低和高(例如,+/-5%等)。类似地,较高的基线阈值Vb和相关的递增阈值的Vb-,Vb+可以应用于表征分布曲线198的上边界。
图13示出了在正常编程和部分编程工作期间,可由图11的写入电路190施加的以及由图10的读出电路170感测到的不同尺寸的编程增量。可以通过写入电路190施加累积电荷相对较大的编程增量200以将存储单元编程到初始状态,然后通过写入电路190施加积累电荷的相对较小的重新编程增量202可以使该单元返回到初始编程状态。
例如,再参考图7,通过施加5或6(5-6)次增量200,以将积累的电荷的总量达到由阈值V2和V3设定的阈值之间的水平,可将具有初始编程状态11的已擦除的存储单元编程到00状态。
此后,当存储单元浮栅的电荷泄漏以及朝向V2阈值的方向的电荷总量漂移时,可以施加累积电荷的一个或多个相对较小的部分编程增量202,以使得存储单元返回到其先前的编程状态(例如,累积电荷总量名义上与以前相同的状态)。
该部分编程序列是由图14所示。单元的初始分布被编程到一个特定状态,如群体分布曲线204所示的。随着时间的推移,至少部分单元丢失电荷,并提供如曲线206所示的漂移群体分布。
部分编程增量202的应用导致整体分布的增加,如曲线208所示。随着增量202继续施加,最终的部分编程分布(曲线210)将在名义上符合原始曲线204。
通过部分地重新编程图14中的存储单元,能够避免擦除和编程的完整周期,从而减少单元的磨损以及减小存储模块内数据的副本的总数。
图15是用于部分重新编程例程220的流程图,其根据各种实施例阐述了执行的步骤。出于说明的目的,例程220将用于图2-6中描述的闪存阵列。这仅仅是示例性的而非限制性的。
存储单元在步骤222被编程为所选择的状态。其可能是一个SLC状态或MLC状态,使编程状态对应于所需的单个页面数据或多个页面的数据。编程状态可以是图7的分布曲线所表示的状态中选定的一个(例如,11,01,00或10)。
在一些所选择的间隔时间后,在步骤224将该单元标识为进行部分重新编程的候选者。其可以采用多种方式来进行。存储单元的保持时间可以作为经过时间被计算出来,在此期间,单元能够保持编程状态,而不会过度退化。如果该单元保持其编程状态的实际时间等于或超过所计算的保持时间,则该单元可被标记为用于部分重新编程的候选者。
可选的,单元可以进行读操作以及包括所述单元的用于位错误率(BER)的块存储器可能会超过预定的阈值。在其它实施例中,用于块的所述写入/擦除次数可以达到特定阈值,该阈值显示该单元应该进行评估。在其它实施例中,已实现对单元或邻近单元的足够高数量的读操作以指示读取干扰数据的可能性。任何其它合适的因素,参数,测量或其它标记可以用于标识单元作为部分重新编程的候选者,包括将所有的单元按计划定期重新编程。
在步骤226对选定存储单元执行电压阈值测试。这可以包括应用一个或多个电压阈值,如在图12所示的应用程序,以确定单元的编程状态。
如果该单元显示了足够的编程退化,则例程从决定步骤228进至步骤230,其中一个或多个电荷增量施加到单元上。这可以包括图13中的小的增量202的应用,其使用图11的电路190,随后如步骤232所示,通过图12的电路180应用合适的读出/编程验证电压阈值。该工序如决定步骤234所示继续,直到单元已经恢复到适当的电平。随后在步骤236中单元被标记为已重新编程。这可以包括在对存储单元相关联的元数据的标注,并可以包括日期/时间戳以指示单元被重新编程的时间。然后,该例程在步骤238结束。
可以看出,在此所述的部分重编程应用可以减少数据重写和擦除的发生率。仍然可以根据需要进行垃圾收集操作,但是基于在一个给定的GCU中的数据基本上是失效的(即,非修改的)而不再需要数据刷新(即,其旧到足以经历编程漂移)。
对于一组初始编程单元,不是每一个单元都需要重新编程。而是可以对那些表示位错误的单元进行评估和编程,不必理会其余的单元。类似的,这些具有更容易经历编程序漂移编程状态的单元(例如,单元编程至“10”,等)可部分重新编程,并且不必理会其余的单元。在其他情况下,针对编程漂移评估存储单元中在一个行中所有的单元以及X最坏的百分比(例如,最糟糕的20%,等等)被部分重新编程,并且不必理会其余部分。
虽然此处所公开的与闪存单元有关的多个实施例构想由于漂移机制引起的电荷水平降低,可以构想的是,在某些情况下可能会经历电荷增加,例如在过度读取的环境。可能的是,配置写电路,使得施加一组不同的编程电压,以使得一小部分电荷从浮置栅极移除,而不是额外的电荷量被添加至栅极。类似地,也可以将双向编程调整用于其它类型的存储单元。
应当理解的是,尽管已在前面的描述中提及各本发明的各个实施例的许多特征和优点,连同各种实施例的结构和功能的详细细节,但该详细说明仅是示例性的,并且可以在细节上进行改变,尤其是在结构和部件设置的问题上,其都落入本发明通过所附权利要求书所表达的术语的广泛的一般含义所指示的最大范围内的原理内。

Claims (19)

1.一种用于数据管理的方法,包括
将数据写入固态非易失性存储单元的集合中,使得所述集合中的每个存储单元被写入到相关的初始编程状态;
检测所述集合中的所选的存储单元的编程状态的漂移;以及
将所选存储单元部分地重新编程以使被选中的存储单元返回到相关的初始编程状态,其中,所述集合中的至少一个其它存储单元未被部分地重新编程,
其中应用电荷的多个第一增量来将所选择的存储单元编程到初始化编程状态,并且其中随后施加电荷的多个第二增量以将所选存储单元部分地重新编程返回到初始编程状态,其中所述第二增量小于所述第一增量。
2.如权利要求1所述的方法,其中固态非易失性存储单元的所述集合包括闪存单元的行,通过在每个闪存单元的浮置栅极上累积电荷来编程所述闪存单元的行以并发存储一页数据。
3.如权利要求2所述的方法,其中将每个闪存单元配置为多级单元(MLC),从而使得存储单元存储两页的数据。
4.如权利要求1所述的方法,其中施加第一写入脉冲持续时间以将每一个存储单元编程到相关的初始编程状态,以及随后施加第二写入脉冲持续时间以将所选存储单元重新编程到相关的编程状态,第二写入脉冲持续时间比第一写入脉冲持续时间短。
5.如权利要求1所述的方法,其中通过施加电压阈值到所选存储单元来检测其编程状态的漂移。
6.如权利要求1所述的方法,其中通过响应于与所选择的存储单元相关的误码率(BER)来检测编程状态的漂移。
7.如权利要求1所述的方法,其中通过响应于从所选定存储单元被编程到相关的初始编程状态起所经过的时间来检测编程状态的漂移。
8.根据权利要求1所述的方法,其中通过响应于与所选存储单元相关联的温度测量结果来检测编程状态的漂移。
9.如权利要求1所述的方法,其中,所述存储单元是电阻随机存取存储器(RRAM)单元、相变随机存取存储器(PCRAM)单元或自旋力矩转移随机存取存储器(STRAM)单元中选定的一个。
10.如权利要求1所述的方法,其还包括,在与所选存储单元相关联的控制数据中,将所选存储单元标记为已经过重新编程。
11.一种用于数据管理的装置,其包括:
配置成可寻址单元的固态非易失性存储单元的阵列;
写入电路,适用于将数据写入到存储器中选定的可寻址单元,使得在所选择的可寻址单元中的每个存储单元具有相关联的初始编程状态;以及
部分重新编程电路,用于检测所选择的可寻址单元中的至少一个存储单元的编程状态的漂移,并指导写入电路对将所选择的可寻址单元中的不到全部存储单元部分地重新编程到相关初始编程状态,
其中所述写入电路应用电荷的多个第一增量来将所选择的可寻址单元编程到初始化编程状态,并且其中所述写入电路随后施加电荷的多个第二增量以将所选可寻址单元部分地重新编程返回到初始编程状态,其中所述第二增量小于所述第一增量。
12.如权利要求11所述的装置,其特征在于,其中所选择的可寻址单元是闪存单元的行,其中所述写入电路累积和转移电荷的第一增量到闪存单元以将一页数据写入到所述行,并且所述写入电路累积和转移电荷的第二增量以将所述行的闪存单元部分地重新编程,其中电荷的第二增量小于电荷的第一增量。
13.如权利要求11所述的装置,其中施加第一写入脉冲持续时间以将每一个存储单元编程到相关的初始编程状态,以及随后施加第二写入脉冲持续时间以将所选存储单元重新编程到相关的编程状态,第二写入脉冲持续时间比第一写入脉冲持续时间短。
14.如权利要求11所述的装置,其中通过施加电压阈值到所选存储单元来检测其编程状态的漂移。
15.如权利要求11所述的装置,其中通过响应于与所选择的存储单元相关的误码率(BER)来检测编程状态的漂移。
16.如权利要求11所述的装置,其中通过响应于从所选定存储单元被编程到相关的初始编程的状态起所经过的时间来检测编程状态的漂移。
17.根据权利要求11所述的装置,其中通过响应于测量与所选存储单元相关的温度来检测编程状态的漂移。
18.一种用于数据管理的装置,其包括:
闪存阵列,其包括设置成多个垃圾回收单元GCU的非易失性存储单元,所述垃圾回收单元作为一个单元进行擦除和分配;
读/写/擦除R/W/E电路,其分别用于从所选GCU读取数据、向所选GCU写入数据以及擦除所选GCU;以及
部分重新编程电路,用于将所选GCU中的已编程闪存单元的集合标识为已经历编程漂移,并指导所述R/W/E电路将所述已编程闪存单元的集合部分地重新编程以向其转移电荷,以将所述存储单元恢复至其初始编程状态,而不对所选GCU应用介入擦除,
其中所述R/W/E电路应用电荷的多个第一增量来将所选择的GCU编程到初始化编程状态,并且其中所述R/W/E电路随后施加电荷的多个第二增量以将所选GCU部分地重新编程返回到初始编程状态,其中所述第二增量小于所述第一增量。
19.如权利要求18所述的装置,其中部分重新编程电路进一步指导所述R/W/E电路以施加一个或多个电压阈值至所述已编程闪存单元的集合,以在部分重新编程操作之前评估每个闪存单元的编程状态。
CN201410534322.4A 2013-07-16 2014-07-16 固态非易失性存储单元的部分重新编程 Active CN104332178B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/943,441 US9378830B2 (en) 2013-07-16 2013-07-16 Partial reprogramming of solid-state non-volatile memory cells
US13/943,441 2013-07-16

Publications (2)

Publication Number Publication Date
CN104332178A CN104332178A (zh) 2015-02-04
CN104332178B true CN104332178B (zh) 2018-10-19

Family

ID=52343461

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410534322.4A Active CN104332178B (zh) 2013-07-16 2014-07-16 固态非易失性存储单元的部分重新编程

Country Status (4)

Country Link
US (1) US9378830B2 (zh)
JP (1) JP6027059B2 (zh)
KR (2) KR20150009478A (zh)
CN (1) CN104332178B (zh)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8751755B2 (en) 2007-12-27 2014-06-10 Sandisk Enterprise Ip Llc Mass storage controller volatile memory containing metadata related to flash memory storage
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9361221B1 (en) * 2013-08-26 2016-06-07 Sandisk Technologies Inc. Write amplification reduction through reliable writes during garbage collection
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9576649B2 (en) * 2015-03-31 2017-02-21 Seagate Technology Llc Charge loss compensation through augmentation of accumulated charge in a memory cell
KR102449337B1 (ko) * 2015-12-14 2022-10-04 삼성전자주식회사 불휘발성 메모리 시스템의 동작 방법
US10254969B2 (en) * 2016-05-13 2019-04-09 Seagate Technology Llc Data refresh in flash memory
KR102565888B1 (ko) 2016-09-12 2023-08-11 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그것의 동작 방법
US9952944B1 (en) 2016-10-25 2018-04-24 Sandisk Technologies Llc First read solution for memory
US10262743B2 (en) * 2016-10-25 2019-04-16 Sandisk Technologies Llc Command sequence for first read solution for memory
US10026486B1 (en) 2017-03-06 2018-07-17 Sandisk Technologies Llc First read countermeasures in memory
CN108694979B (zh) * 2017-04-06 2023-08-01 群联电子股份有限公司 数据写入方法、存储器控制电路单元与存储器存储装置
US10347315B2 (en) 2017-10-31 2019-07-09 Sandisk Technologies Llc Group read refresh
US10706920B2 (en) 2017-11-02 2020-07-07 Samsung Electronics Co., Ltd. Memory device
KR102467075B1 (ko) 2017-11-13 2022-11-11 삼성전자주식회사 메모리 장치 및 그의 리클레임 방법
US10446246B2 (en) * 2018-03-14 2019-10-15 Silicon Storage Technology, Inc. Method and apparatus for data refresh for analog non-volatile memory in deep learning neural network
US10733104B2 (en) 2018-08-03 2020-08-04 Micron Technology, Inc. Fast non-volatile storage device recovery techniques
KR102651129B1 (ko) 2018-12-21 2024-03-26 삼성전자주식회사 메모리 장치의 데이터 재기입 방법, 상기 메모리 장치를 제어하는 메모리 컨트롤러 및 상기 메모리 컨트롤러의 제어 방법
KR102161833B1 (ko) * 2018-12-31 2020-10-05 성균관대학교산학협력단 온도 정보를 활용한 멀티 레벨 셀 상변화 메모리 스크러빙 장치
CN114400035A (zh) * 2021-12-02 2022-04-26 长江存储科技有限责任公司 存储器的编程方法、存储器及存储系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6343033B1 (en) * 2000-02-25 2002-01-29 Advanced Micro Devices, Inc. Variable pulse width memory programming
US6424569B1 (en) * 2000-02-25 2002-07-23 Advanced Micro Devices, Inc. User selectable cell programming
CN1525488A (zh) * 2003-02-27 2004-09-01 株式会社瑞萨科技 防止由干扰的累积引起的数据变化的半导体记忆装置
CN1661727A (zh) * 2004-02-26 2005-08-31 三星电子株式会社 多级闪存设备与编程方法
CN101231886A (zh) * 2007-01-23 2008-07-30 海力士半导体有限公司 Nand快闪存储器件与改善nand快闪存储器件中单元特性的方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5815439A (en) 1996-04-30 1998-09-29 Agate Semiconductor, Inc. Stabilization circuits and techniques for storage and retrieval of single or multiple digital bits per memory cell
US7184307B2 (en) 2001-08-28 2007-02-27 Samsung Electronics Co., Ltd. Flash memory device capable of preventing program disturbance according to partial programming
US6751146B1 (en) * 2003-01-07 2004-06-15 Advanced Micro Devices, Inc. System and method for charge restoration in a non-volatile memory device
US7325090B2 (en) 2004-04-29 2008-01-29 Sandisk Il Ltd. Refreshing data stored in a flash memory
JP2007058966A (ja) * 2005-08-23 2007-03-08 Renesas Technology Corp 半導体装置
JP2009536423A (ja) 2006-05-05 2009-10-08 ハネウェル・インターナショナル・インコーポレーテッド 不揮発性メモリをリフレッシュする方法
WO2009042298A1 (en) 2007-09-26 2009-04-02 Rambus Inc. Flash memory refresh
KR101406279B1 (ko) * 2007-12-20 2014-06-13 삼성전자주식회사 반도체 메모리 장치 및 그것의 읽기 페일 분석 방법
US8938655B2 (en) * 2007-12-20 2015-01-20 Spansion Llc Extending flash memory data retension via rewrite refresh
JP5478855B2 (ja) 2008-08-08 2014-04-23 ルネサスエレクトロニクス株式会社 不揮発性メモリ制御方法及び半導体装置
US8238157B1 (en) * 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
KR20130071686A (ko) * 2011-12-21 2013-07-01 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이의 동작 방법
US9355024B2 (en) * 2012-10-10 2016-05-31 Apple Inc. Systems and methods for nonvolatile memory performance throttling
US9182924B2 (en) * 2013-01-11 2015-11-10 Seagate Technology Llc Modifying logical addressing at a requestor level

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6343033B1 (en) * 2000-02-25 2002-01-29 Advanced Micro Devices, Inc. Variable pulse width memory programming
US6424569B1 (en) * 2000-02-25 2002-07-23 Advanced Micro Devices, Inc. User selectable cell programming
CN1525488A (zh) * 2003-02-27 2004-09-01 株式会社瑞萨科技 防止由干扰的累积引起的数据变化的半导体记忆装置
CN1661727A (zh) * 2004-02-26 2005-08-31 三星电子株式会社 多级闪存设备与编程方法
CN101231886A (zh) * 2007-01-23 2008-07-30 海力士半导体有限公司 Nand快闪存储器件与改善nand快闪存储器件中单元特性的方法

Also Published As

Publication number Publication date
KR20150009478A (ko) 2015-01-26
JP6027059B2 (ja) 2016-11-16
JP2015022788A (ja) 2015-02-02
US9378830B2 (en) 2016-06-28
CN104332178A (zh) 2015-02-04
KR20160137501A (ko) 2016-11-30
US20150023097A1 (en) 2015-01-22

Similar Documents

Publication Publication Date Title
CN104332178B (zh) 固态非易失性存储单元的部分重新编程
US8811074B2 (en) Parametric tracking to manage read disturbed data
US9263158B2 (en) Determining data retention time in a solid-state non-volatile memory
CN103460296B (zh) 电阻性存储器感测方法及装置
US8923045B2 (en) Multi-level cell (MLC) update with protected mode capability
CN105934748B (zh) 用于储存系统中的损耗均衡的偏置
US9099185B2 (en) Using different programming modes to store data to a memory cell
US9330790B2 (en) Temperature tracking to manage threshold voltages in a memory
CN108475530A (zh) 用于在储存体装置的编程之前进行擦除检测的系统和方法
US8838881B2 (en) Transfer command with specified sense threshold vector component
CN102693759B (zh) 用于多级单元存储单元的非顺序编码方案的方法和装置
KR101905266B1 (ko) 데이터 보유 충전 손실 센서
US9411669B2 (en) Selective sampling of data stored in nonvolatile memory
US8737125B2 (en) Aggregating data latches for program level determination
CN108573733A (zh) 具有编程失败恢复的非易失性存储器
CN105359218A (zh) 非易失性存储器编程数据保存
US8730724B2 (en) Common line current for program level determination in flash memory
CN104395965A (zh) 用于在具有多个存储状态的非易失性存储单元中执行操作的设备和方法
US20120300554A1 (en) Sanitizing a Non-Volatile Memory Through Charge Accumulation
US9330753B2 (en) Memory sanitation using bit-inverted data
CN105308685A (zh) 在非易失性多级多个存储器管芯的编程中恢复附近数据
US20140052897A1 (en) Dynamic formation of garbage collection units in a memory
CN109830255A (zh) 一种基于特征量的闪存寿命预测方法、系统及存储介质
CN106098103B (zh) 一种非易失性存储器中坏点单元的替换方法
CN109378027A (zh) 固态储存装置的控制方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant