CN111164688A - 用于非易失性存储设备的自适应编程电压 - Google Patents
用于非易失性存储设备的自适应编程电压 Download PDFInfo
- Publication number
- CN111164688A CN111164688A CN201880063948.8A CN201880063948A CN111164688A CN 111164688 A CN111164688 A CN 111164688A CN 201880063948 A CN201880063948 A CN 201880063948A CN 111164688 A CN111164688 A CN 111164688A
- Authority
- CN
- China
- Prior art keywords
- programming
- program
- voltage
- settings
- setting
- 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.)
- Pending
Links
Images
Classifications
-
- 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
- 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
- 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/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
-
- 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/562—Multilevel memory programming aspects
- G11C2211/5621—Multilevel programming verification
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Read Only Memory (AREA)
Abstract
本申请公开了用于调整编程设置的装置、系统和方法,该编程设置诸如是一组非易失性存储单元的编程电压,该一组非易失性存储单元诸如是SLC NAND阵列。非易失性存储单元可以布置成多个字线。非易失性存储单元的子集可以被配置为存储编程设置。芯片上控制器可以被配置为从设置子集中读取编程设置,并且使用编程设置将数据写入非易失性存储单元。芯片上控制器可以进一步被配置为确定编程设置导致一个或多个非易失性存储单元的次优编程,并且响应于该确定而将修改后的编程设置存储在设置子集上。
Description
技术领域
在各种实施例中,本公开涉及存储设备,并且更具体地,涉及用于自适应地改变非易失性存储设备的编程电压的系统和方法。
背景技术
许多数据存储设备,诸如闪存设备,将数据存储在非易失性介质的单元中。每个单元的物理属性,诸如存储的电荷、电压、材料相、电阻、磁化强度等,可以改变以编码数据。单元的物理属性可以在一定范围内变化,该范围可以分割为离散状态,以便不同的状态对应于不同的数据值。感测单元的物理属性是否满足其范围内的一个或多个读取阈值(例如,电压阈值,电阻率阈值等)可以确定单元的状态,从而允许恢复所存储的数据值。
非易失性存储器类型包括但不限于:ReRAM,忆阻器存储器,可编程金属化单元存储器,相变存储器(PCM,PCME,PRAM,PCRAM,双向通用存储器,硫属半导体RAM或C-RAM),NAND闪存(例如2D NAND闪存,3D NAND闪存),NOR闪存,纳米随机存取存储器(nano RAM或NRAM),基于纳米晶线的存储器,基于氧化硅的10纳米以下工艺存储器,石墨烯存储器,硅-氮氧化物-氧化硅(SONOS),可编程金属化单元(PMC),导电桥RAM(CBRAM),磁阻RAM(MRAM),自旋转移扭矩(STT)MRAM,自旋轨道扭矩SOT-MRAM,磁存储介质(例如硬盘,磁带),光存储介质等。在用于以保留电荷编码信息的非易失性存储器类型中,可以使用各种电荷和/或电荷保留技术,包括但不限于浮置栅极和电荷俘获技术。在许多前述技术中,存储器类型可经历阈值电压(Vth)的变化,在该阈值电压(Vth)以上,单元被读取为正在被编程。如果不采取纠正措施,则这种阈值电压偏移的结果可能是单元中的读取错误。
发明内容
提出了用于适应一个或多个非易失性存储元件的编程设置的装置和方法。在一个实施例中,存储芯片可以包括布置成多个字线的一组非易失性存储单元,其中单元的子集被配置为存储编程设置。存储芯片可以进一步包括芯片上控制器,该芯片上控制器被配置为从单元的子集读取编程设置,使用编程设置将数据写入非易失性存储单元,确定编程设置导致对非易失性存储单元的数据的次优编程,并且响应于确定编程设置导致对非易失性存储单元的数据的次优编程,将修改后的编程设置存储在子集的非易失性存储单元中。
编程设置可以指示第一编程电压。芯片上控制器可以进一步被配置为通过经由非易失性存储单元以第一编程电压发送单个脉冲来将数据写入非易失性存储单元。修改后的编程设置可以指示低于第一编程电压的第二编程电压。
芯片上控制器可以进一步被配置为将修改后的编程设置存储在子集的非易失性存储单元中,而无需首先从子集中擦除编程设置。
所述多个字线可以包括伪字线以及与所述伪字线分开的多个数据字线,所述伪字线具有包括单元的子集的两个或更多个备用列。所述多个数据字线可以被配置为存储数据。
单元的子集可以定位于伪字线的驱动器附近。
非易失性存储单元可以被布置成多个块,所述多个块包括第一块和第二块,所述第一块包括多个字线,所述第二多个字线。芯片上控制器可以进一步被配置为从第二多个字线的第二子集中读取第二编程设置,使用第二编程设置将数据写入第二多个字线的非易失性存储单元,确定第二编程设置导致第二多个字线的一个或多个非易失性存储单元的次优编程,并且响应于确定第二编程设置导致第二多个字线的一个或多个非易失性存储单元的次优编程,在第二子集上存储修改后的第二编程设置。
芯片上控制器可以进一步被配置为确定具有在预确定范围内的阈值电压的单元的数量,并且具有在预确定范围内的阈值电压的单元的数量是否满足一个或多个标准。
芯片上控制器可以进一步被配置为响应于触发来确定编程设置导致对非易失性存储单元的数据次优编程,所述触发被配置为在对一个或多个字线执行随机数目的编程操作之后激活。
在一个实施例中,一种装置可以包括一组非易失性存储单元,其被布置成字线并且连接到位线。字线可以包括配置为存储编程电压标志的伪字线且包括多个数据字线。该装置可以进一步包括:具有存储电路的芯片上控制器,被配置为使用与编程电压标志相关联的第一编程电压来将用户数据存储在字线的非易失性存储单元中,并从数据字线的非易失性存储单元中擦除用户数据;确定电路,被配置为确定第一编程电压导致非易失性存储单元的过度编程;设置选择电路,被配置为响应于确定第一编程电压导致非易失性存储单元的过度编程,选择与第一编程电压不同的第二编程电压;以及更新电路,被配置为通过用修改后的编程电压标志覆盖编程电压标志的至少一部分,将与第二编程电压相关联的修改后的编程电压标志存储在伪字线中。
存储电路可以进一步被配置为通过经由非易失性存储单元以第一编程电压发送单个脉冲来存储用户数据。第二编程电压可以低于第一编程电压。
确定电路可以进一步被配置为通过确定单个脉冲导致一个或多个非易失性存储单元的过度编程,来确定第一编程电压导致非易失性存储单元的过度编程。
芯片上控制器可以进一步包括:随机数发生器,被配置为生成随机数;以及评估电路,其被配置为确定随机数满足一个或多个标准。确定电路还可进一步被配置为响应于评估电路确定随机数满足一个或多个标准,来确定单个脉冲导致一个或多个非易失性存储单元的过度编程。
伪字线可以进一步被配置为将编程电压标志存储在伪字线的解码器附近的伪字线的备用列中。
伪字线可以包括存储编程电压标志的字节,其一个或多个位被设置为擦除状态。存储电路还可被配置为通过将一个或多个位改变为编程状态而不将字节的任何位改变为擦除状态来存储修改后的编程电压标志。
根据一个实施例,一种系统可以包括:具有一组非易失性存储单元的SLC NAND阵列;以及与SLC NAND阵列共享芯片的芯片上控制器。芯片上控制器可以被配置为从SLCNAND阵列读取编程电压设置,并且发起单个脉冲以编程电压设置在SLC NAND阵列上写入数据。
芯片上控制器可以进一步被配置为将更新后的编程电压设置存储在SLC NAND阵列上。
芯片上控制器可以进一步被配置为确定以编程电压设置写入数据导致一个或多个非易失性存储单元的过度编程,并响应于确定以编程电压设置写入数据导致一个或多个非易失性存储单元的过度编程而启动更新后的变成电压设置得存储。
芯片上控制器可以进一步被配置为存储更新后的编程电压设置而不擦除来自SLCNAND阵列的编程电压设置。
根据一个实施例,一种方法可以包括:从非易失性存储单元的设置段中读取编程设置;使用编程设置将数据写在非易失性存储单元的数据段上;以及响应触发,在设置段上存储修改后的编程设置。
编程设置可以指示第一编程电压。将数据写到数据段上可以包括通过数据段以编程电压发送单个脉冲。存储修改后的编程设置可以包括在设置段上存储低于第一编程电压的第二编程电压的指示。
存储修改后的编程设置可以包括覆盖编程设置的至少一部分以存储修改后的编程设置。
该方法可以进一步包括通过确定编程设置导致一个或多个非易失性存储单元的阈值电压超过预定义电平来提供触发。
确定编程设置导致阈值电压超过预定义电平可以包括:确定具有在预确定范围内的阈值电压的单元的数目;以及确定具有在预确定范围内的阈值电压的单元的数目是否满足一个或多个标准。
该方法可以进一步包括通过生成随机数来提供触发,以及通过确定随机数满足一个或多个标准来检测触发。
根据一个实施例,一种装置可以包括:用于读取一组非易失性存储单元的多个字线中的第一字线的备用列上的编程设置的器件;用于使用编程设置将数据写入多个字线中的一个或多个的器件;用于确定编程设置导致一个或多个非易失性存储单元的阈值电压过高的器件;以及用于响应于确定编程设置导致阈值电压过高而在第一字线的备用列上存储修改后的编程设置的器件。
附图说明
下面参考附图中示出的特定实施例包括了更具体的描述。应理解这些附图仅描绘了本公开的某些实施例,因此不应被认为是对其范围的限制,通过使用附图,以附加的特征和细节来描述和解释本公开,在附图中:
图1A是包括用于非易失性存储设备的电压调整组件的系统的一个实施例的块图。
图1B示出了可以包括一个或多个存储芯片或晶片的非易失性存储设备的实施例。
图2A描绘了图1的存储阵列的示例2D配置中的存储单元的块。
图2B描绘了NAND串中的示例电荷俘获存储单元的截面图,该示例电荷俘获存储单元作为图2A中的存储单元的示例。
图2C描绘了图2B的结构的截面图。
图2D描绘了示例存储单元。
图3是在图1的存储阵列的示例3D配置中包括一组块的存储设备的透视图。
图4描绘了图3的块之一的一部分的示例截面图。
图5描绘了图4的堆叠的区域的特写视图。
图6描绘了与图4一致的3D配置中的子块中的NAND串的示例视图。
图7描绘了图8A的子块SB0-SB3的附加细节。
图8A描绘了存储单元的示例性Vth分布,其中使用了两种数据状态,并且观察到了Vth的偏移。
图8B描绘了存储单元的示例性Vth分布,其中使用了四个数据状态,并且观察到了Vth的偏移。
图9描绘了示例编程操作的波形。
图10描绘了图5的存储单元MC的一部分,示出了在弱编程期间电子注入到电荷俘获区域中。
图11描绘了图1B的芯片控制器的一个实施例。
图12描绘了图11的确定电路的一个实施例。
图13是描述根据一个实施例的确定电路的操作的曲线图。
图14描绘了根据一个实施例的可用于存储编程设置的字节。
图15描绘了用于对存储阵列的单元进行编程的方法的一个实施例,其中对编程电压进行周期性调整。
具体实施方式
本公开的各方面可以体现为装置、系统、方法或计算机程序产品。因此,本公开的方面可以采取以下形式:完全硬件实施例;完全软件实施例(包括固件,常驻软件,微代码等);或结合了软件和硬件方面的实施例,其在本文中通常都可以统称为“电路”、“模块”、“装置”或“系统”。此外,本公开的方面可以采取在存储计算机可读和/或可执行程序代码的一个或多个非临时性计算机可读存储介质中体现的计算机程序产品的形式。
在本说明书中描述的许多硬件单元已经被标记为电路,以便更具体地强调它们的实施独立性。例如,电路可以是:定制的VLSI电路或门阵列,诸如逻辑芯片的现成半导体的全部或部分,晶体管或其他分立组件。电路也可以在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等的可编程硬件设备中实施。值得注意的是,在记载了多个电路的情况下,它们在某些情况下可以共享硬件元件;因此,两个不同的电路可以体现为单个硬件体,该单个硬件体经由软件或不同的硬件元素配置为执行所记载的两个电路的功能。
可以以电路和/或以各种类型的处理器执行的软件来实现模块。所标识的可执行代码模块可以例如包括计算机指令的一个或多个物理或逻辑块,其可以例如被组织为对象、过程或功能。然而,所标识的模块的可执行文件不需要在物理上位于一起,而是可以包括存储在不同位置的不同指令,当这些指令在逻辑上结合在一起时,就构成该模块并实现该模块的既定目的。
实际上,可执行代码模块可以包括单个指令或多个指令,并且甚至可以分布在几个不同的代码段上、在不同程序之间、在多个存储设备等上。在模块或模块的一部分以软件实现的情况下,软件部分可以存储在一个或多个计算机可读和/或可执行存储介质上。可以利用一个或多个计算机可读存储介质的任何组合。计算机可读存储介质可以包括但不限于例如:电子、磁性、光学、电磁、红外或半导体系统、装置或设备,或者前述的任何合适的组合,但是将不包括传播信号。在本文档的上下文中,计算机可读和/或可执行存储介质可以是可包含或存储供指令执行系统、装置、处理器、或设备使用或与之结合使用的程序的任何有形和/或非暂时性介质。
可以以一种或多种编程语言的任何组合来编写用于执行本公开的各方面的操作的计算机程序代码,所述编程语言包括诸如Python、Java、Smalltalk、C++、C#、Objective C等的面向对象的编程语言,诸如“C”编程语言的常规过程编程语言,脚本编程语言和/或其他类似的编程语言。程序代码可以部分或全部在一个或多个用户计算机上和/或通过数据网络等在远程计算机或服务器上执行。
如本文所用,组件是有形的、物理的、非暂时性的设备。例如,可以将组件实施为具有定制VLSI电路、门阵列或其他集成电路的硬件逻辑电路;现成的半导体,诸如逻辑芯片、晶体管或其他分立设备;和/或其他机械或电气设备。组件也可以在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等的可编程硬件设备中实施。组件可以包括一个或多个硅集成电路设备(例如,晶片,芯片,芯片平面,封装)或其他分立的电气设备,它们通过印刷电路板(PCB)等的电线与一个或多个其他组件进行电通信。在某些实施例中,本文描述的每个模块可以可替代地由组件体现或实施为组件。
在整个说明书中,对“一个实施例”、“某实施例”或类似语言的引用意味着结合该实施例描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,贯穿本说明书的短语“在一个实施例中”、“在某实施例中”和类似的语言的出现可以但并非必须全部指代相同的实施例,而是指“一个或多个但不是所有实施例”,除非另有明确说明。除非另外明确指出,否则术语“包括”、“包含”、“具有”及其变体表示“包括但不限于”。除非另有明确说明,否则列举的项目列表并不意味着任何或所有项目是相互排斥和/或相互包含。除非另外明确指出,否则术语“一个”,“一种”和“该”也指“一个或多个”。
下面参考根据本公开的实施例的方法、装置、系统和计算机程序产品的示意性流程图和/或示意性块图来描述本公开的各方面。将理解的是,可以通过计算机程序指令来实施示意性流程图和/或示意性块图的每个块以及示意性流程图和/或示意性块图中的块的组合。这些计算机程序指令可以被提供给计算机的处理器或其他可编程数据处理装置以产生机器,从而使得经由处理器或其他可编程数据处理装置执行的指令创建用于实现在示意流程图和/或示意块图的一个或多个中指定的功能和/或动作的器件。
还应注意,在一些替代实施方式中,块中指出的功能可以不按图中指出的顺序发生。例如,取决于所涉及的功能,实际上可以基本上同时执行连续示出的两个块,或者有时可以以相反的顺序执行这些块。可以构想其他步骤和方法,这些步骤和方法在功能、逻辑或效果上等同于所示附图的一个或多个块或其部分。尽管在流程图和/或块图中可以采用各种箭头类型和线条类型,但是应理解它们不限制对应实施例的范围。例如,箭头可以指示所描绘的实施例的列举步骤之间的具有未指定持续时间的等待或监视时段。
在下面的详细描述中,参考构成其一部分的附图。前述概述仅是说明性的,而无意以任何方式进行限制。除了上述说明性方面、实施例和特征之外,通过参考附图和以下详细描述,其他方面、实施例和特征将变得显而易见。每个附图中的元素的描述可以程序图的元素。在附图中相似的数字可以指代相似的元件,包括相似元件的替代实施例。
图1A是具有用于非易失性存储设备120的电压调整组件120的系统100的一个实施例的块图。设置调整组件150可以是非易失性存储介质控制器126、非易失性存储元件123、设备驱动器等的一部分和/或与之通信。设置调整组件150可以在计算设备110的非易失性存储系统102上操作,该计算设备110可以包括处理器111、非易失性存储器112和网络接口113。处理器111可以包括一个或多个中央处理单元,一个或多个通用处理器,一个或多个专用处理器,一个或多个虚拟处理器(例如,计算设备110可以是在主机内操作的虚拟机),一个或多个处理器核心等。网络接口113可以包括一个或多个网络接口,该一个或多个网络接口被配置为将计算设备110和/或非易失性存储介质控制器126通信耦合到通信网络115,诸如互联网协议(IP)网络,存储区域网络(SAN),无线网络,有线网络等。
在各种实施例中,非易失性存储设备120可以相对于计算设备110设置在一个或多个不同的位置。在一个实施例中,非易失性存储设备120包括一个或多个非易失性存储元件123,诸如设置在一个或多个印刷电路板、存储壳体和/或其他机械和/或电气支撑结构上的半导体晶片或封装或其他集成电路设备。例如,非易失性存储设备120可以包括一个或多个直接嵌入式内存模块(DIMM)卡,一个或多个扩展卡和/或子卡,固态驱动器(SSD)或其他硬盘驱动器设备,和/或可能具有其他内存和/或存储形状因子。非易失性存储设备120可以与计算设备110的主板集成和/或安装在计算设备110的主板上,安装在计算设备110的端口和/或插槽中,安装在通信网络115上的不同计算设备110和/或通过外部总线(例如外部硬盘驱动器)等与计算设备110通信的专用存储装置上。
在一个实施例中,非易失性存储设备120可以被放置在处理器111的存储器总线上(例如,与易失性存储器112相同的存储器总线上,与易失性存储器112不同的存储器总线上,代替易失性存储器112等)。在另一个实施例中,非易失性存储设备120可以被布置在计算设备110的外围总线上,诸如外围组件互连快速(PCI Express或PCIe)总线,串行高级技术附件(SATA)总线,并行高级技术附件(PATA)总线,小型计算机系统接口(SCSI)总线,FireWire总线,光纤信道连接,通用串行总线(USB),PCIe高级交换(PCIe-AS)总线,等。在另一个实施例中,非易失性存储设备120可以设置在通信网络115上,诸如以太网,Infiniband网络,通信网络115上的SCSI RDMA,存储区域网络(SAN),局域网(LAN),诸如Internet的广域网(WAN),另一个有线和/或无线网络等。
计算设备110可以进一步包括非暂时性计算机可读存储介质114。计算机可读存储介质114可以具有可执行指令,该可执行指令被配置为使计算设备110(例如,处理器111)执行本文公开的方法中的一种或多种的步骤。替代地或另外,设置调整组件150可以被实现为存储在计算机可读存储介质114上的一个或多个计算机可读指令。
在所描绘的实施例中,非易失性存储系统102包括设置调整组件150。在一个实施例中,设置调整组件150被配置为调整用于对非易失性存储元件123的单元进行编程的编程电压,以帮助避免对非易失性存储元件123进行过度编程,如下所述。在某些实施例中,设置调整组件150可以执行检测操作以确定是否通过施用存储在非易失性存储元件中的诸如编程电压之类的编程设置使得某些非易失性存储元件123开始变得被过度编程。如果非易失性存储元件123正在被过度编程,则设置调整组件150可以在非易失性存储元件123中存储更新后的编程设置,例如更新后的编程电压。因此,可以避免过度编程,并且可以延长非易失性存储装置120的使用寿命。
在一个实施例中,设置调整组件150可以包括一个或多个非易失性存储设备120的逻辑硬件,诸如非易失性存储介质控制器126,非易失性存储元件123,设备控制器,现场可编程门阵列(FPGA)或其他可编程逻辑,FPGA或其他可编程逻辑的固件,在微控制器上执行的微代码,专用集成电路(ASIC)等。在另一实施例中,设置调整组件150可以包括存储在计算机可读存储介质114上以用于在处理器111上执行的可执行软件代码,诸如设备驱动器等。在另一个实施例中,设置调整组件150可以包括可执行软件代码和逻辑硬件两者的组合。
在一个实施例中,设置调整组件150被配置为经由总线125等从设备驱动器或其他可执行应用接收存储请求。设置调整组件150可以进一步被配置为经由总线125向/从设备驱动器和/或存储客户端116传输数据。因此,在一些实施例中,设置调整组件150可以包括一个或多个直接存储器访问(DMA)模块、远程DMA模块、总线控制器、桥接器、缓冲器等和/或与之通信,以促进存储请求和相关数据的传送。在另一个实施例中,设置调整组件150可以从存储客户端116接收作为API调用的存储请求,诸如IO-CTL命令等。
根据各种实施例,与一个或多个程序排序组件140通信的非易失性存储介质控制器126可以管理一个或多个非易失性存储设备120和/或非易失性存储元件123。(一个或多个)非易失性存储设备120可以包括记录、存储器和/或存储设备,诸如被布置和/或划分成多个可寻址介质存储位置的(一个或多个)固态存储设备和/或(一个或多个)半导体存储设备。如本文所使用的,介质存储位置是指存储器的任何物理单元(例如,非易失性存储设备120上的任何数量的物理存储介质)。存储单元可以包括但不限于:页,存储器分区,块,扇区,物理存储位置(例如,逻辑页,逻辑块)的合集或集合等。
在某些实施例中,设备驱动器和/或非易失性存储介质控制器126可以向存储客户端116呈现逻辑地址空间134。如本文所使用的,逻辑地址空间134是指存储器资源的逻辑表示。逻辑地址空间134可以包括多个(例如,一范围的)逻辑地址。如本文所使用的,逻辑地址是指用于引用存储器资源(例如,数据)的任何标识符,包括但不限于:逻辑块地址(LBA),柱面/磁头/扇区(CHS)地址,文件名,对象标识符,索引节点,通用唯一标识符(UUID),全局唯一标识符(GUID),哈希码,签名,索引条目,范围,程度等。
非易失性存储设备120的设备驱动器可以维护元数据135,诸如逻辑到物理地址的映射结构,以将逻辑地址空间134的逻辑地址映射到(一个或多个)非易失性存储设备120上的媒体存储位置。设备驱动器可以被配置为向一个或多个存储客户端116提供存储服务。存储客户端116可以包括在计算设备110上操作的本地存储客户端和/或可以经由通信网络115和/或网络接口113访问的远程存储客户端116。存储客户端116可以包括但不限于:操作系统,文件系统,数据库应用程序,服务器应用程序,内核级进程,用户级进程,应用程序等。
设备驱动器可以通信地耦合到一个或多个非易失性存储设备120。一个或多个非易失性存储设备120可以包括不同类型的非易失性存储设备,包括但不限于:固态存储设备,半导体存储设备,SAN存储资源等。一个或多个非易失性存储设备120可以包括一个或多个相应的非易失性存储介质控制器126和非易失性存储介质122。设备驱动器可以经由传统的块I/O接口131提供对一个或多个非易失性存储设备120的访问。另外,设备驱动器可以通过SCM接口132提供对增强功能的访问。元数据135可以用于管理和/或跟踪通过块I/O接口131、SCM接口132、高速缓存接口133或其他相关接口中的任何一个执行的数据操作。
缓存接口133可以暴露可经由用于非易失性存储设备120的设备驱动器访问的缓存特定特征。同样,在一些实施例中,呈现给存储客户端116的SCM接口132提供对由一个或多个非易失性存储设备120和/或一个或多个非易失性存储介质控制器126实施的数据转换的访问。
设备驱动器可以通过一个或多个接口向存储客户端116呈现逻辑地址空间134。如上所述,逻辑地址空间134可以包括多个逻辑地址,每个逻辑地址对应于一个或多个非易失性存储设备120的相应介质位置。设备驱动器可以维护元数据135,元数据135包括逻辑地址与媒体位置之间的任意映射。
设备驱动器可以进一步包括非易失性存储设备接口139和/或与之通信,该非易失性存储设备接口139被配置为通过总线125将数据、命令和/或查询传输到一个或多个非易失性存储设备120,总线125包括但不限于:处理器111的存储总线,外围组件互连快速(PCIExpress或PCIe)总线,串行高级技术附件(ATA)总线,并行ATA总线,小型计算机系统接口(SCSI),FireWire,光纤信道,通用串行总线(USB),PCIe高级交换(PCIe-AS)总线,通信网络115,Infiniband,SCSI RDMA等。非易失性存储设备接口139可以使用(一个或多个)输入/输出控制(IO-CTL)命令、(一个或多个)IO-CTL命令扩展、远程直接存储器访问等与一个或多个非易失性存储设备120通信。
网络接口113可以包括一个或多个网络接口,该一个或多个网络接口被配置为将计算设备110和/或非易失性存储介质控制器126通信耦合到通信网络115和/或一个或多个远程的可通过网络访问的存储客户端116。存储客户端116可以包括在计算设备110上操作的本地存储客户端和/或可以经由通信网络115和/或网络接口113访问的远程存储客户端116。非易失性存储介质控制器126是一个或多个非易失性存储设备120的一部分和/或与一个或多个非易失性存储设备120通信。尽管图1A描绘了单个非易失性存储设备120,但是本公开不限于此,并且可以适于结合任何数量的非易失性存储设备120。
非易失性存储设备120可以包括非易失性存储介质122的一个或多个非易失性存储元件123,其可以包括但不限于:ReRAM,忆阻器存储器,可编程金属化单元存储器,相变存储器(PCM,PCME,PRAM,PCRAM,双向通用存储器,硫属半导体RAM或C-RAM),NAND闪存(例如2DNAND闪存,3D NAND闪存),NOR闪存,纳米随机存取存储器(nano RAM或NRAM),基于纳米晶线的存储器,基于氧化硅的10纳米以下工艺存储器,石墨烯存储器,硅-氮氧化物-氧化硅(SONOS),可编程金属化单元(PMC),导电桥RAM(CBRAM),磁阻RAM(MRAM),自旋转移扭矩(STT)MRAM,自旋轨道扭矩SOT-MRAM,磁存储介质(例如硬盘,磁带),光存储介质等。在某些实施例中,非易失性存储介质122的一个或多个非易失性存储元件123包括存储类存储器(SCM)。本文的示例指的是NAND存储器,或更具体地,是指SLC NAND存储器;然而,本文提供的系统和方法可以应用于其他存储器类型,包括但不限于上面列出的那些。
尽管诸如NAND闪存之类的传统技术可以是块和/或页面可寻址的,但是在一个实施例中,存储类存储器是字节可寻址的。在进一步的实施例中,存储类存储器可以比NAND闪存更快和/或具有更长的寿命(例如,耐久性);可以具有比DRAM更低的成本,更低的功耗和/或更高的存储密度;或与其他技术相比提供一个或多个其他好处或改进。例如,存储类存储器可以包括ReRAM的一个或多个非易失性存储元件123,忆阻器存储器,可编程金属化单元存储器,相变存储器,纳米RAM,基于纳米晶线的存储器,基于氧化硅的10纳米以下的处理存储器,石墨烯存储器,SONOS存储器,MANOS存储器,PMC存储器,CBRAM,MRAM和/或其变体。
尽管非易失性存储介质122在本文中被称为“存储介质”,但是在各种实施例中,非易失性存储介质122可以更一般地包括能够记录数据的、可以被称为非易失性存储介质、非易失性储存介质等的一种或多种非易失性记录介质。此外,在各种实施例中,非易失性存储设备120可以包括非易失性记录设备,非易失性存储设备,非易失性储存设备等。
非易失性存储介质122可以包括一个或多个非易失性存储元件123,其可以包括但不限于:晶片,封装,平面,芯片等。非易失性存储介质控制器126可以被配置为管理非易失性存储介质122上的数据操作,并且可以包括一个或多个处理器、可编程处理器(例如,FPGA)、ASIC、微控制器等。在一些实施例中,非易失性存储介质控制器126被配置为在非易失性存储介质122上存储数据和/或从非易失性存储介质122读取数据,以向/从非易失性存储设备120传送数据,等等。
非易失性存储介质控制器126可以通过总线127通信地耦合到非易失性存储介质122。总线127可以包括用于向/从非易失性存储元件123传送数据的I/O总线。总线127可以进一步包括用于将寻址以及其他命令和控制信息传送到非易失性存储元件123的控制总线。在一些实施例中,总线127可以并行地将非易失性存储元件123通信耦合至非易失性存储介质控制器126。该并行访问可以允许将非易失性存储元件123作为一个组被管理,从而形成逻辑存储元件129。逻辑存储元件可以被划分成各个逻辑存储单元(例如,逻辑页)和/或逻辑存储分部(例如,逻辑块)。逻辑存储单元可以通过逻辑上组合每个非易失性存储元件的物理存储单元来形成。
在某些实施例中,非易失性存储介质控制器126可以使用字线的地址来组织非易失性存储元件123内的字线的块,使得字线被逻辑地组织成单调递增的序列(例如,将字线的地址解码和/或转换为单调递增的序列等)。在另一实施例中,非易失性存储元件123内的块的字线可以以单调递增的字线地址序列物理地布置,连续寻址的字线也物理上相邻(例如,WL0,WL1,WL2,…,WLN)。
非易失性存储介质控制器126可以包括和/或与在计算设备110上执行的设备驱动器通信。设备驱动器可以经由一个或多个接口131、132和/或133向存储客户端116提供存储服务。在一些实施例中,设备驱动器提供块I/O接口131或设备接口,存储客户端116通过块I/O接口131执行块级I/O操作。替代地或另外,设备驱动器可以提供存储类存储器(SCM)接口132,其可以向存储客户端116提供其他存储服务。在一些实施例中,SCM接口132可以包括对块I/O接口131的扩展(例如,存储客户端116可以通过对块I/O接口131的扩展或添加来访问SCM接口132)。替代地或另外,可以将SCM接口132提供为单独的API、服务和/或库。设备驱动器可以进一步被配置为提供用于使用非易失性存储系统102缓存数据的缓存接口133。
设备驱动器可以进一步包括非易失性存储设备接口139,如上所述,其被配置为通过总线125将数据、命令和/或查询传输到非易失性存储介质控制器126。
图1B示出了可以包括一个或多个存储芯片212或晶片的非易失性存储设备210的实施例。在一些实施例中,存储芯片212包括存储单元的存储阵列200(二维或三维),芯片控制器220和读取/写入电路230A/230B。在一个实施例中,在阵列的相对侧上通过各种外围电路以对称的方式实现对存储阵列200的访问,使得在每一侧上的访问线和电路的密度减少一半。在另一实施例中,读取/写入电路230A/230B包括多个感测块250,其允许并行读取或编程一页存储单元。
在各种实施例中,存储阵列200可由经由行解码器240A/240B的字线和经由列解码器242A/242B的位线寻址。在一些实施例中,控制器244被包括在与一个或多个存储芯片212相同的非易失性存储设备210(例如,可移动存储卡或封装)中。命令和数据经由线232在主机和控制器244之间以及经由线234在控制器和一个或多个存储芯片212之间传输。一种实施方式可以包括多个存储芯片212。
芯片控制器220可以与存储阵列200共享芯片,使得芯片控制器220构成“芯片上”控制器。芯片控制器220可以具有本领域中已知的任何形式,包括但不限于微处理器,微控制器单元(MCU),有限状态机(FSM),中央处理单元(CPU),图形处理单元(GPU)等;“芯片上的控制器”可以指这些中的任何。
在一个实施例中,芯片控制器220与读取/写入电路230A/230B协作以在存储阵列200上执行存储器操作。在某些实施例中,芯片控制器220包括设置调整组件150、状态机222和片上地址解码器224。在一个实施例中,状态机222形成设置调整组件150的至少一部分。在另一个实施例中,控制器244形成设置调整组件150的至少一部分。控制器244可以可选地定位于一个或多个存储芯片212上,或者可以定位于与存储芯片212分离的芯片上。
在一些实施例中,每个存储阵列200可以是SLC(单级单元)NAND阵列,其中,每个非易失性存储元件123或“非易失性储存单元”可以经由跨单元施加编程电压编程。每个存储阵列200还可以用单个脉冲进行编程,从而提供接近对NAND进行编程的理论极限的速度。如本领域中已知的,每个非易失性存储元件123可具有电绝缘元件,诸如栅极氧化物层或隧道氧化物层,电子可选择性地移动通过该电绝缘元件,该电子绝缘元件通过允许使用电荷对单元进行编程并保留其编程所用的电荷来提供栅极功能。“绝缘元件”或“绝缘层”可以包括被设计为选择性地允许电荷进入和/或离开非易失性存储单元的任何结构。
重复施加单个脉冲可能会导致这种绝缘层随时间而退化。除了浮置栅极和电荷俘获存储器以外,这种退化还可能发生在其他非易失性存储器类型的绝缘元件中。结果可能是使用过量电荷对非易失性存储元件123过度编程,从而导致非易失性存储元件123的阈值电压增加到超过目标阈值电压。
此外,各种因素(诸如制造差异)可能会导致此类绝缘元件对电流流入非易失性存储元件123中提供过多的阻力。结果可能是使用不足的电荷对非易失性存储元件123进行欠量编程,导致非易失性存储元件的阈值电压减小到低于目标阈值电压。
由于先前提到的变化和绝缘层劣化的可能性,可能需要随着时间修改用于对非易失性存储元件123进行编程的编程设置。短语“编程设置”包括适用于单元编程的任何参数,包括但不限于施加的编程电压,施加的编程电流,施加编程脉冲的时间长度,编程脉冲的曲线形状(例如随时间的,电压或电流)等。在某些实施例中,储存编程设置可能需要以数字形式储存编程设置。替代地,储存编程设置可能需要储存指针、标志或其他可用于确定编程设置的数据结构,可选地借助于诸如查找表、解码算法等的附加信息。
短语“编程电压”是指施加到非易失性存储元件123的电压电平,该电压电平使非易失性存储元件123进入变成状态或向编程状态发展。这可以是峰值电压值,均方根(“RMS”)电压值,脉冲的平均电压,脉冲串中特定脉冲的电压值等。“编程电压”不限于NAND存储器,而是可以应用于通过施加电势而被编程的任何非易失性存储器。因此,可以通过使用本公开的系统和方法来在包括但不限于在以上背景技术部分中列出的非易失性存储器类型的非易失性存储器类型中调整诸如编程电压的编程设置。
类似地,各种“感测设置”可以用于感测存储阵列200的一个或多个非易失性存储元件123的内容。术语“感测”不仅指具有保持电荷的单元的非易失性存储结构,而且指其中使用不同存储机制的非易失性存储类型。例如,在某些非易失性存储器类型中,电压和/或电流用于感测单元的电阻水平(而不是所存储的电荷)。在其他非易失性存储器类型中,将检测流过单元的电流;高于或低于特定阈值的电流水平可以指示单元被编程。在要确定单个单元的内容的情况中,这可以称为“读取”单元。然而,“感测”非易失性存储阵列的内容可以包括读取单个单元的内容,或者检测单元的单个或集体属性,诸如单元的电压或电阻是高于还是低于预确定阈值。
在一些实施例中,修改编程设置可以包括在非易失性存储设备120的操作寿命期间减小跨非易失性存储元件123施加的编程电压一次或多次,以延长非易失性存储设备120的使用寿命,并减少由于单元过度编程而导致错误数据读取的可能性。
例如,用于制造非易失性存储阵列的过程可能导致对非易失性存储器元件123进行编程的容易程度的显着变化。因此,即使在已经执行任何编程/擦除周期之前,新存储阵列200的默认编程电压也可能导致欠量编程或过度编程。因此,出于除补偿材料劣化的需要之外的其他原因,可能希望修改编程设置。对于每个存储阵列200,可能需要以不同的方式调整编程设置。这种调整可能需要向上和/或向下调整编程电压,在存储阵列200的操作寿命期间,在某些情况下需要向上和向两种调整。
此外,由于材料劣化而可能发生的增加的阈值电压可能不会跨所有非易失性存储元件123均匀地发生。相反,由于制造上的差异和/或不同的利用,一些非易失性存储元件123的材料,诸如绝缘体,可以比其他非易失性存储元件更快地劣化。因此,可能希望跨非易失性存储元件123的各个组独立地调整编程设置。例如,可以针对每个存储阵列200,针对存储阵列200内的每个块,或者甚至针对存储阵列200内的每个字线独立地确定编程设置。保留和使用更精细的编程设置可以有益地解决存储阵列200的性能的小规模变化,诸如存储阵列200的字线或块之间的差异。但是,这种精细增加了存储编程设置所需的存储空间,并且还增加了对单元进行编程所需的时间,因为需要读取和/或存储更大量的编程设置以供立即使用(例如,在实现设置调整组件150的控制器的注册表中)。因此,在每个编程设置的适用范围方面存在一些折衷。
在一个实施例中,设置调整组件150被配置为随着时间修改一个或多个字线、块和/或存储阵列200的编程设置中的一个或多个。编程设置可以是特定于字线,特定于块或特定于存储阵列的,如上所述。
在一些示例中,设置调整组件150可以在存储阵列200的操作寿命期间降低用于对字线、块或存储阵列200的非易失性存储单元进行编程的编程电压一次或多次。在一些实施例中,设置调整组件150可以在存储阵列200的整个操作寿命中分步地多次调整存储阵列200的编程电压。此外,设置调整组件150可以为存储阵列200的不同块和/或字线维持和/或独立地调整不同的编程电压。为了实现这一点,设置调整组件150可以测试存储阵列200的一些或全部非易失性存储元件123,以确定是否在当前编程电压下发生了非易失性存储元件123的过度编程。特别地,“过度编程”是指其中一个或多个非易失性存储元件123接收的电荷多于用以改变单元的阈值电压以落入阈值电压的目标范围内所需的电荷的任何编程操作。过量的电荷不必足以引起读取错误。确实可能希望在过度编程变得严重到足以导致被过度编程的单元被错误读取之前,诊断出过度编程并采取纠正措施。
在一个实施例中,状态机222提供存储器操作的芯片级控制。片上地址解码器224提供地址接口,以在被主机或存储器控制器使用的地址与被解码器240A、240B、242A、242B使用的硬件地址之间转换。在某些实施例中,状态机222包括设置调整组件150的实施例。在一些实施例中,设置调整组件150调整施加到存储阵列200的编程电压,如前所述。在某些实施例中,设置调整组件150被实现为设备驱动器中的软件,控制器244中的硬件和/或芯片控制器220和/或状态机222中的硬件。
在一个实施例中,芯片控制器220、设置调整组件150、片上地址解码器224、状态机222、解码器242A、解码器242B、解码器240A、解码器240B、读取/写入电路230A,读取/写入电路230B和/或控制器244中的一个或任意组合可以被称为一个或多个管理电路。
图2A描绘了图1B的存储阵列200的示例2D配置中的存储单元的块。存储阵列200可以包括许多块。每个示例块202、204包括在块之间共享的多个NAND串和相应的位线,例如,BL0,BL1,...。每个NAND串在一端连接到漏极选择栅极(SGD),并且漏极选择栅极的控制栅极经由公共SGD线连接。NAND串在它们的另一端连接到源极选择栅极SGS,源极选择栅极SGS又连接到公共源极线206。十六个字线,例如,WL0-WL15,在源极选择栅极和漏极选择栅极之间延伸。
在某些情况下,不包含用户数据的伪字线也可以在与选择栅极晶体管(SGS/SGD)相邻的存储阵列中使用。这样的伪字线可以使边缘数据字线免受某些边缘效应的影响。在一些示例中,伪字线被定位为与SGD和SGS线相邻。因此,在图2A的示例性实施例中,伪字线DWL0与每个块202、204中的每一个的SGS线相邻,并且伪字线DWL1与块202、204中的每一个的SGD线相邻。在其他示例中,多个(例如,两个或三个)伪字线位于字线WL0至WL15与SGD和SGS线中的每一个之间。在一些实施例中,伪字线不被它们所属的块202、204的其余部分擦除。因此,存储在伪字线上的任何数据将通过惯常用于擦除用户数据的擦除操作而保留,并且只能通过对尚未编程的伪字线的位进行编程来修改。
如图2A中所体现,位线BL0,BL1,…定义了每个块202、204的字线的列。除了存储用户数据的位线BL0,BL1,…之外,每个块202、204还具有多个备用列SC0,SC1,…,这些备用列可以用于各种目的,例如替换不可用或变得不可用的位线BL0,BL1,…。因此,在某些情况下,备用列不存储用户数据。
存储阵列200的每个字线可以具有字线驱动器208,该字线驱动器208对来自该字线的数据进行解码和/或其它处理。因此,在图2A中,字线WL0至WL15可以具有字线驱动器208,如图所示。字线驱动器208可以包括在图1B所示的行解码器240A/240B中。
可能希望将(一个或多个)编程设置存储在存储阵列200的通常未被用户数据占用的位置中。因此,可以减少存储和/或定位编程设置所需的开销,并且编程设置可以更能抵抗存储阵列200中的功率损耗。此外,(一个或多个)编程设置可以通过针对用户数据执行的擦除操作而保留。
因此,在一些示例中,(一个或多个)编程设置可以被存储在与存储用户数据的用户数据段不同的设置段中。因此,当相同存储阵列200、相同块或什至相同字线中的用户数据被擦除时,(一个或多个)编程设置可以不被擦除。
在一些实施例中,可以将一个或多个编程设置存储在存储阵列200的一个或多个伪字线和/或备用列上。举例来说,可以将一个或多个编程设置存储在作为伪字线和备用列两者的一部分的一个或多个单元中。例如,存储阵列200的非易失性存储器元件123的子集209可以位于块202的伪字线DW1上,并且可以包括块202的一些备用列(例如,至少SC0和SC1,如所示)的非易失性存储器元件123。
子集209可以用作存储阵列200的设置段,而该阵列的其余部分(其余字线的常规列)可以用作数据段或用户数据段。“设置子集”是为存储一个或多个设置(例如编程设置)而预留的一组非易失性存储单元。“数据子集”是其中可以存储不包括编程设置的其他数据(例如用户数据)的一组非易失性存储单元。“用户数据子集”是为存储用户数据而预留的一组非易失性存储单元。
在一些实施例中,编程设置可以是特定于字线的。因此,可能希望使给定字线的编程设置位于(一个或多个)相关联的备用列中的该字线上。在将编程设置存储在不是伪字线的字线上的情况下(即,存储用户数据的字线),可以将编程设置及其所涉及的字线一起擦除。因此,设置调整组件150可以被配置为在字线已经被擦除之后立即重新写入这种编程设置。
在替代实施例中,编程设置可以是块特定的。因此,编程设置可以存储在它们所涉及的块内的一个或多个字线上。可选地,可以跨多个伪字线划分用于块的编程设置。例如,可以在单个列的八个伪字线上存储一字节编程设置,其中在每个伪字线上存储一位。替代地,单个伪字线可以存储用于该块的编程设置,并且可选地在字线上存储编程设置的多次迭代以用于冗余。这是图2A中示出的示例,其中子集209存储块202的编程设置。如果需要,块204的非易失性存储元件123的位于块204的伪字线DWL1的备用列上的子集211可以存储块204的编程设置。
将编程设置存储为接近用于存储它们的字线的字线驱动器可能是有利的。由于存储单元与传送脉冲的字线驱动器之间的距离更短,使得接近字线驱动器的单元经历明显更少的RC延迟,所以这可以加快编程设置的检索,从而加快编程操作。因此,将编程设置存储在每个块202、204的备用列中,并且更具体地,在与用于存储有编程设置的字线的字线驱动器208相邻的备用列中,可以具有定位编程设置以获得更快速的检索和利用等的其他优势。将编程设置存储在子集209和/或子集211上可以提供这样的益处。
非易失性存储元件123可以包括多种技术中的任何一种,包括但不限于以上背景技术中引用的所有非易失性存储类型。可以在存储阵列中提供的一种类型的非易失性存储器是电荷俘获存储单元。也可以使用其他类型的非易失性存储器。例如,电荷俘获存储单元可以使用非导电电介质材料代替导电浮置栅极,以通过非易失性方式存储电荷。在示例中,由氧化硅、氮化硅和氧化硅(“ONO”)形成的三层电介质被夹在导电控制栅极和半导体之间。通过将电子从单元信道注入到氮化物中来对单元进行编程,在氮化物中将电子俘获并存储在受限的区域中。然后,该存储的电荷以可检测的方式改变单元信道的一部分的阈值电压。通过将热孔注入氮化物中来擦除单元。可以以分裂栅极配置提供类似的单元,其中掺杂的多晶硅栅极在存储单元信道的一部分上延伸以形成单独的选择晶体管。
在另一种方法中,使用NROM单元。例如,两个位存储在每个NROM单元中,其中ONO电介质层在源极和漏极扩散之间跨信道延伸。一个数据位的电荷位于邻近漏极的电介质层中,而另一数据位的电荷位于邻近源极的电介质层中。通过分别读取电介质内空间上分开的电荷存储区域的二进制状态,可以获得多状态数据存储。还已知其他类型的非易失性存储器。
图2B描绘了NAND串中的示例电荷俘获存储单元的截面图,该示例电荷俘获存储单元作为图2A中的存储单元的示例。该视图沿存储单元的字线方向,该存储单元包括平面控制栅极和电荷俘获区域,作为图1B的存储阵列200中存储单元的2D示例。电荷俘获存储器可用于NOR和NAND闪存设备。与使用诸如掺杂的多晶硅之类的导体来存储电子的浮置栅极MOSFET技术相反,该技术使用诸如SiN膜的绝缘体来存储电子。作为示例,字线(WL)424跨包括相应的信道区域406、416和426的NAND串延伸。字线的部分提供控制栅极402、412和422。在字线下方是IPD层428,电荷俘获层404、414和421,多晶硅层405、415和425以及隧穿层409、407和408。每个电荷俘获层在相应的NAND串中连续地延伸。
存储单元400包括控制栅极402,电荷俘获层404,多晶硅层405和信道区域406的一部分。存储单元410包括控制栅极412,电荷俘获层414,多晶硅层415和信道区域416的一部分。存储单元420包括控制栅422,电荷俘获层421,多晶硅层425和信道区域426的一部分。
平坦控制栅极的一个优点是可以使电荷俘获层比浮置栅极薄。另外,可以将存储单元放置得更近。
图2C描绘了沿线429的图2B的结构的截面图。该视图示出了具有平坦控制栅极和电荷俘获层的NAND串430。NAND串430包括SGS晶体管431,示例存储单元400、433,...,434和435,以及SGD晶体管436。
NAND串可以形成在包括p型衬基底区域455,n型阱456和p型阱457的基底上。在p型阱457中形成N型源极/漏极扩散区域sd1,sd2,sd3,sd4,sd5,sd6和sd7。可以将信道电压Vch直接施加到基底的信道区域。存储单元400包括在电荷俘获层404,多晶硅层405,隧穿层409和信道区域406上方的控制栅极402和IPD层428。
例如,控制栅极层可以是多晶硅,而隧穿层可以是氧化硅。IPD层可以是高k电介质(诸如AlOx或HfOx)的堆叠,高k电介质有助于提高控制栅极层与电荷俘获或电荷存储层之间的耦合比。电荷俘获层可以是例如氮化硅和氧化物的混合物。
SGD和SGS晶体管具有与存储单元相同的配置,但具有更长的信道长度,以确保在禁止的NAND串中切断电流。
在该示例中,层404、405和409在NAND串中连续延伸。在另一种方法中,可以去除在控制栅极402、412和422之间的层404、405和409的部分,从而暴露出信道区域406的顶表面。
图2D描绘了示例存储单元500。该存储单元包括:控制栅极CG,其接收字线电压Vwll0;处于电压Vd的漏极;处于电压Vs的源极;以及处于电压Vch的信道。
图3是在图1的存储阵列200的示例3D配置中包括一组块的存储设备600的透视图。在基底上的是存储单元(存储元件)的示例块BLK0,BLK1,BLK2和BLK3,以及具有由块使用的电路的外围区域604。例如,该电路可以包括电压驱动器605,该电压驱动器605可以连接到块的控制栅极层。在一种方法中,共同驱动块中的处于共同高度的控制栅极层。基底601还可以在块下方承载电路,以及被图案化成导电路径以承载电路的信号的一个或多个下部金属层。块形成在存储装置的中间区域602中。在存储器件的上部区域603中,一个或多个上部金属层被图案化成导电路径以承载电路的信号。每个块包括存储单元的堆叠区域,其中堆叠的交替层代表字线。在一种可能的方法中,每个块具有相对的分层侧面,竖直触点从所述相对的分层侧面向上延伸到上部金属层,以形成到导电路径的连接部。尽管以四个块为例进行了描述,但是可以使用在x和/或y方向上延伸的两个或多个块。
在一种可能的方法中,平面在x方向上的长度表示到字线的信号路径在一个或多个上部金属层中延伸的方向(字线或SGD线方向),而平面在y方向上的宽度表示到位线的信号路径在一个或多个上部金属层中延伸的方向(位线方向)。z方向表示存储设备的高度。
图4描绘了图3的块之一的一部分的示例截面图。该块包括交替的导电层和电介质层的堆叠610。在该示例中,除了数据字线层(或字线)WLL0-WLL10之外,导电层还包括两个SGD层,两个SGS层和四个伪字线层(或字线)WLD1,WLD2,WLD3和WLD4。电介质层标记为DL0-DL19。此外,示出了包括NAND串NS1和NS2的堆叠的区域。每个NAND串包括存储孔618或619,其填充有形成与字线相邻的存储单元的材料。在图5中更详细地示出了堆叠的区域622。
该堆叠包括基底611,在基底上的绝缘膜612以及源极线SL的一部分。NS1具有在堆叠的底部614处的源极端613和在堆叠的顶部616处的漏极端615。填充有金属的缝隙617和620可以跨堆叠周期性地设置,作为延伸穿过堆叠的互连部,从而将源极线连接到堆叠上方的线。可以在字线的形成期间使用狭缝,并且随后用金属填充。还描绘了位线BL0的一部分。导电通孔621将漏极端615连接到BL0。
图5描绘了图4的堆叠的区域622的特写视图。于堆叠的不同层处在字线层和存储孔的相交处形成存储单元。在该示例中,SGD晶体管680和681设置在伪存储单元682和683以及数据存储单元MC上方。可以例如使用原子层沉积沿着存储孔630的侧壁(SW)和/或在每个字线层内沉积多个层。例如,每个列(例如,由存储孔内的材料形成的柱)可以包括电荷俘获层663或诸如SiN或其他氮化物的膜,隧穿层664,信道665(例如,包括多晶硅)和电介质核心666。字线层可以包括阻挡氧化物/阻挡高k材料660,金属阻挡件661和作为控制栅极的诸如钨的导电金属662。例如,提供了控制栅极690、691、692、693和694。在该示例中,除了金属之外的所有层都设置在存储孔中。在其他方法中,某些层可以在控制栅极层中。类似地,在不同的存储孔中形成附加的柱。柱可以形成NAND串的柱状有源区域(AA)。
当对存储单元进行编程时,电子被存储在与该存储单元相关联的电荷俘获层的一部分中。这些电子从信道并通过隧穿层被吸入电荷俘获层中。存储单元的Vth与所存储的电荷量成比例地增加(例如,随着所存储的电荷量的增加而增加)。在擦除操作期间,电子返回到信道。
每个存储孔可以填充有多个环形层,所述多个环形层包括阻挡氧化物层,电荷俘获层,隧穿层和信道层。每个存储孔的核心区域填充有主体材料,并且多个环形层在每个存储孔中的核心区域和字线之间。
NAND串可被认为具有浮体信道,因为该信道的长度未在基底上形成。此外,NAND串由堆叠中的位于彼此上方并且通过电介质层彼此分隔的多个字线层提供。
图6描绘了与图4一致的3D配置中的子块中的NAND串的示例视图。每个子块包括多个NAND串,其中示出了一个示例NAND串。例如,SB0,SB1,SB2和SB3分别包括示例NAND串700n,710n,720n和730n。NAND串具有与图4一致的数据字线,伪字线和选择栅极线。在块BLK中,每个子块包括在x方向上延伸并具有公共SGD线的一组NAND串。NAND串700n,710n,720n和730n分别在子块SB0,SB1,SB2和SB3中。对该块的编程可能一次形成一个子块。在每个子块内,可以遵循字线编程顺序,例如,从源极侧字线WL0开始,并且以一次一个字线的方式继续至漏极侧字线WLL10。
NAND串700n,710n,720n和730n分别具有信道区域700a,710a,720a和730a。
另外,NAND串700n包括SGS晶体管700和701,伪存储单元702和703,数据存储单元704、705、706、707、708、709、710、711、712、713和714,伪存储单元715和716,以及SGD晶体管717和718。
NAND串710n包括SGS晶体管720和721,伪存储单元722和723,数据存储单元724、725、726、727、728、729、730、731、732、733和734,伪存储单元735和736,以及SGD晶体管737和738。
NAND串720n包括SGS晶体管740和741,伪存储单元742和743,数据存储单元744、745、746、747、748、749、750、751、752、753和754,伪存储单元755和756,以及SGD晶体管757和758。
NAND串730n包括SGS晶体管760和761,伪存储单元762和763,数据存储单元764、765、766、767、768、769、770、771、772、773和774,伪存储单元775和776,以及SGD晶体管777和778。
图7描绘了图6的子块SB0-SB3的附加细节。描绘了示例性存储单元,其沿着每个子块中的字线在x方向上延伸。为了简单起见,每个存储单元都被描述为一个立方体。SB0包括NAND串700n,701n,702n和703n。SB1包括NAND串710n,711n,712n和713n。SB2包括NAND串720n,721n,722n和723n。SB3包括NAND串730n,731n,732n和733n。位线连接到一组NAND串。例如,位线BL0连接到NAND串700n,710n,720n和730n,位线BL1连接到NAND串701n,711n,721n和731n,位线BL2连接到NAND串702n,712n,722n和732n,并且位线BL3连接到NAND串703n,713n,723n和733n。感测电路可以连接到每个位线。例如,感测电路780、781、782和783连接到位线BL0,BL1,BL2和BL3。
图8A描绘了存储单元的示例性Vth分布,其中使用了两种数据状态,并且观察到了Vth的偏移。在执行附加的编程和/或擦除周期时,阈值电压偏移可能会逐渐和/或永久性地发生。例如,控制对单元进行编程所需能量的一个或多个绝缘层的劣化,可能导致该单元随着时间的推移变得更容易编程,从而导致阈值电压逐渐增加(例如,由于这些重复的编程和擦除周期,分布可能从图8A中的曲线801a移到曲线801)。
在图8A和8B中,带有虚线的Vth分布表示一组存储单元在发生大量的编程/擦除周期之前的初始状态,诸如字线上的存储单元,一组字线中的存储单元,块中的存储单元或整个存储设备中的存储单元。带有实线的Vth分布表示在发生多个编程/擦除周期后存储单元的状态。
在编程操作期间,可以通过使用一个或多个编程遍次获得最终的Vth分布。可以通过使用多个编程遍次来对多脉冲编程的存储设备进行编程。相反,可以经由单个编程遍次或单个脉冲来对单个脉冲编程的存储设备进行编程。对于多脉冲编程,例如,每遍次可使用增量步进脉冲编程。在编程遍次过程中,对选定的字线执行编程验证迭代。编程验证迭代包括编程部分,在该编程部分中将编程电压施加到字线,随后是验证部分,在验证部分中执行一个或多个验证测试。每个编程状态都有验证电压,该验证电压用于该状态的验证测试中。
Vth分布800代表擦除状态(Eslc);Vth分布801代表编程数据状态(Pslc),由于先前的编程/擦除操作的执行导致存储单元的绝缘元件的劣化,Vth上移;Vth分布801a代表没有Vth上移的Pslc,如在执行多个编程/擦除操作之前的情况中。换句话说,Vth分布801相对于Vth分布801a具有上移。例如,擦除状态可以代表一位,而编程状态代表零位。用于编程状态的验证电压为VvSLC,用于区分两种状态的读取电压在正常读取情况下为VrSLC或在首次读取情况下为VrSLCa。VrSLCa<VrSLC,因为Vth分布801a的下尾比Vth分布801的下尾低。通常,用于区分相邻状态(例如较低状态和较高状态)的读取电压应位于较低状态的Vth分布的预期上尾与较高状态的Vth分布的预期下尾之间的中间。
图8B描绘了存储单元的示例性Vth分布,其中使用了四个数据状态,并且观察到了Vth的偏移。数据状态分别由Er,A,B和C状态的Vth分布表示,每个状态的位的示例编码分别是呈上页(UP)位/下页(LP)位的格式的11、10、00和01。验证电压为VvA,VvB和VvC,读取电压为VrA,VrB和VrC。LP读取可以使用VrA和VrC,UP读取可以使用VrB。
值得注意的是,Er,A,B和C状态中的每一个的Vth上移(或可能的下移)可能不同。例如,较低状态可能经历较大的上移,而较高状态可能经历相对较低的上移,或甚至是Vth的下移。在图8B的示例中,由于绝缘层的击穿,Er,A和B状态的Vth分布810、811和812具有Vth上移,该绝缘层控制了对单元进行编程所需的能量(例如,编程电压),如上所述。在编程/擦除周期发生之前测量的Vth分布810a,811a和812a不具有Vth上移。此外,A状态的上移大于B状态的上移。与第一读取情况的Vth分布813a相比,在正常读取情况下,C状态的Vth分布813具有Vth下移。对于较高的状态,信道到字线的耦合电位通常不不足够强以将更多的电子俘获到单元的电荷俘获层中。这是由于已经存在于单元的电荷俘获层中并提供高Vth的电子的屏蔽作用。相反,电荷俘获层中的电子被更多地吸引向控制栅极,从而导致Vth下移。对于较高状态,数据保留效果也可能存在,在较高状态下电荷从电荷俘获层中丢失。
可以例如通过针对要编程的每个状态不同地调整编程设置(例如编程电压)来解决多级单元(MLC)存储设备中不同的上移的发生。对于图8B的示例,较大的编程电压降低可用于将单元编程为较低状态之一,而相对较小的编程电压降低(甚至编程电压增加)可用于将单元编程为较高状态之一。
图9描绘了示例编程操作的波形。横轴表示编程循环(PL)数,纵轴表示控制栅极或字线电压。通常,编程操作可以涉及将脉冲序列施加到选定的字线,其中脉冲序列包括多个编程循环或编程验证迭代。编程验证迭代的编程部分包括编程电压,并且编程验证迭代的验证部分包括一个或多个验证电压,例如结合图8A和8B所讨论的。
在一种方法中,每个编程电压都包括两个步骤。此外,在此示例中使用了增量步进脉冲编程(ISPP),其中编程电压使用固定或变化的步长在每个连续的编程循环中升高。此示例在完成编程的单个编程遍次中使用ISPP。ISPP也可以在具有多遍次操作的每个编程遍次中使用。
波形900包括一系列编程电压901、902、903、904、905,...906,其被施加到选择用于编程的字线和相关联的非易失性存储单元组。作为示例,可以基于正在验证的目标数据状态在每个编程电压之后提供一个或多个验证电压。可以将0V在编程和验证电压之间施加到所选字线。例如,可以分别在编程电压901和902中的每一个之后施加VvA和VvB的A状态验证电压和B状态验证电压(波形910)。可以在编程电压903和904中的每一个编程电压之后施加VvA、VvB和VvC的A状态验证电压、B状态验证电压和C状态验证电压(波形911)。在几个附加的编程循环(未显示)之后,可以在最终编程电压906之后施加VvE、VvF和VvG的E状态验证电压、F状态验证电压和G状态验证电压(波形912)。
图10描绘了图5的存储单元MC的一部分,示出了在弱编程期间电子注入到电荷俘获区域中。存储单元包括控制栅极694,金属阻挡层661a,阻挡氧化物660a,电荷俘获层663,隧穿层664,信道665和电介质核心666。由于升高的字线电压,产生了电场(E),该电场将电子(参见示例电子1050)吸引到电荷俘获层中,从而增大了Vth。这种弱编程可能是由Poole-Frenkel效应引起的,其中电绝缘体可以导电。这是一种通过陷阱的电子隧穿。
Vth偏移在3D NAND闪存结构中尤其普遍,特别是在使用单脉冲编程的情况下。单脉冲编程可能会随着时间导致每个单元的一个或多个绝缘元件的劣化。这样的层可以包括但不限于图5的电荷俘获层663和隧穿层664。结果可能是,随着继续施加相同的编程电压VPGM,过多的电荷可能会进入单元,从而导致阈值电压Vth过大。如果不减轻这种影响,则Vth的增加可能导致被过度编程的单元被错误地读取。此外,单脉冲编程的存储阵列可能对存储单元的编程容易程度的变化特别敏感,因为单元的阈值电压可能完全取决于该一个脉冲的特性。因此,对于单脉冲编程存储阵列具有适当的编程设置,例如编程电压,可能特别重要。
设置调整组件150可以通过调整一个或多个编程设置来帮助稳定Vth。通常,如上所述,设置调整组件150可以确定用于对诸如存储阵列200之类的存储阵列的一些或全部非易失性存储元件123进行编程的编程电压。设置调整组件150。
在一个实施例中,电压调整组件对存储阵列200的其中有一个或多个编程设置(以下,作为示例,假定为单个编程设置)的部分执行读取操作。如前所述,存储设置可以可选地存储在存储阵列200的一个或多个伪字线的一个或多个备用列中。在美国专利No.7,808,819中提出了用于存储编程设置的附加选项,该专利通过引用并入本文。
在一个实施例中,设置调整组件150使用编程设置来对非易失性存储元件123进行编程。设置调整组件150可以结合诸如芯片控制器220的其他组件一起起作用,以对非易失性存储元件123进行编程。
在一个实施例中,电压调整组件通过确定是否正在利用编程设置发生一个或多个非易失性存储元件123的过度编程来确定是否应当改变编程设置。在编程设置是用于对非易失性存储元件123进行编程的编程电压的情况下,过度编程可以指示应当减小编程电压以用于将来的编程操作。设置调整组件150选择要在将来的操作中使用的修改后和/或更新后的编程设置,以代替先前使用的编程设置。
在一些实施例中,设置调整组件150将更新后的编程设置存储在存储阵列200的指定部分中。如上所述,在将更新后的编程设置存储在伪字线中的情况下,设置调整组件150在不首先擦除先前使用的编程设置的情况下将更新后的编程设置存储在存储阵列200的指定部分中。相反,在一些实施例中,设置调整组件150对包含编程设置(例如,从“1”到“0”)的存储器的子集的一个或多个位进行编程,以将编程设置改变为更新后的编程设置。这样,更新后的编程设置被存储在与先前使用的编程设置相同的位置,而无需首先擦除先前的编程设置。随后将更详细地描述该方面。
设置调整组件150的各种功能可以在诸如芯片控制器220之类的控制器的电路(诸如逻辑电路)中实现。将结合图11示出和描述管芯控制器220的一种示例性配置。
图11描绘了图1B的芯片控制器220的一个实施例。通常,如上所述,芯片控制器220可以起到许多功能;其中之一可以是设置调整组件150的实施,以确定用于对存储阵列200的部分或全部非易失性存储元件123进行编程的编程电压。在所描绘的实施例中,芯片控制器220包括随机数生成器1150,存储电路1160,确定电路1170,设置选择电路1175,更新电路1180和评估电路1190。
在各种实施例中,随机数生成器1150生成随机数,该随机数可以用于确定在生成新的随机数之前是否要评估编程设置。本领域已知的任何随机数生成电路都可以在随机数生成器1150中使用。
在一些实施例中,存储电路1160对存储阵列200的非易失性存储元件123执行编程和/或擦除操作。存储电路1160利用存储在存储阵列200上的编程设置来将数据写入非易失性存储元件123。
在一些实施例中,确定电路1170确定是否需要更新存储在存储阵列200上的一个或多个编程设置和/或确定用于将来的编程过程的适当的更新后的(一个或多个)编程设置。“更新后的编程设置”是与针对同一组单元在先前执行一个或多个编程操作时所使用的编程设置不同的编程设置。
在各种实施例中,设置选择电路1175确定用于更新后的(一个或多个)编程设置的适当值。设置选择电路1175可以例如基于确定电路1170所检测到的过度编程或欠量编程的程度来进行定量确定。可替代地,设置选择电路1175可以从列表、表格或其他预确定的一组值中选择更新后的编程设置。例如,设置选择电路1175可以参考查找表等,以便基于已经进行的编程设置更新的数量或先前编程设置的值来选择更新后的编程设置。在编程设置包括编程电压的情况下,设置选择电路1175可以选择与先前使用的编程电压不同的更新后的编程电压。
在一些实施例中,更新电路1180按照由设置选择电路1175确定的(一个或多个)值来实现对编程设置的更新。因此,更新电路1180可以在存储阵列200中存储一个或多个更新后的编程设置。在一些示例中,更新电路1180在不首先擦除先前使用的(一个或多个)编程设置的情况下存储更新后的(一个或多个)编程设置,如将结合图14更详细地描述的。
在一些实施例中,评估电路1190评估使确定电路1170确定是否要更新(一个或多个)编程设置是否有益。在一些实施方式中,评估电路1190确定是否已经发生触发,并且在接收到触发时启动确定电路1170的操作。因此,为了加快写入操作,确定电路1170不需要在每个写入周期都执行确定;否则,每n个写入周期仅一次评估(一个或多个)编程设置的有效性就足够了。n的值可能相对较小,例如1、2、4、8或16。在替代方案中,可使用较大的n值,例如32、64、128、256、512或1024,以使确定电路1170甚至更不频繁地操作。n的值不必是2的幂;上述数字仅是示例性的。
在一些实施例中,触发是由随机数生成器1150生成的随机数的出现,该随机数落入预确定和/或预定义范围内或具有预确定和/或预定义值。在其他实施例中,触发是多个编程/擦除周期,读取周期等。在一些实施例中,在每个编程周期生成和评估随机数的情况下,可以在随机数的编程操作之后评估(一个或多个)编程设置。(一个或多个)编程设置的评估之间的编程周期的平均数目可以由满足一个或多个准则以触发评估的随机数的概率来确定。以这种方式,可以使用随机数生成代替周期计数信息的存储和检索,以使用对每个编程周期小于一次的频率来触发对(一个或多个)编程设置的评估。
在一个示例性实施例中,仅当随机数生成器1150生成从0到15的范围内的特定数时,评估电路1190才通过启动确定电路1170的操作平均每16个编程周期触发对(一个或多个)编程设置的评估。例如,图11的随机数生成器1150可以用于随机生成四个位。当四个位是值的特定组合(例如,“1111”等)时,评估电路1190可以启动确定电路1170的操作以确定是否要改变一个或多个编程设置。
图12描绘了图11的确定电路1170的一个实施例。在一些实施例中,确定电路1170包括读取电路1210,检测电路1220和比较电路1230。在一些实施例中,读取电路1210读取存储阵列200的一些或全部非易失性存储元件123。在替代实施例中,读取电路1210以检测电压(Vdetect)进行编程验证操作。检测电路1220可以检测在Vdetect时读取的位数。比较电路1230可以将读取的位数与预确定或预定义水平、值和/或范围进行比较。
在一些实施例中,比较电路1230确定如果在检测电压时读取的位数大于或等于预定义值,则在不远的将来将要执行的编程操作中未发生和/或将不会发生过度编程。相反,如果在检测电压时读取的位数等于或低于预定义水平,则比较电路1230确定在不久的将来要执行的编程操作中正在发生和/或将发生过度编程。
在替代方案中,可以检测在检测电压下未感测到的编程位的数量。如果该数量大于预定义水平,则比较电路1230可以确定正在发生过度编程。如果小于或等于预定义水平,则比较电路1230可以确定没有发生过编程。
根据另一替代实施例,检测电路1220检测错误条件,例如检测一个或多个失效位。然后,比较电路1230可以使用错误条件或连接到该错误条件的数量(诸如失效位的数量)来确定是否正在发生过度编程。
图12表示仅根据一个示例性实施例的确定电路1170。本领域技术人员将认识到,除了上述那些之外,还可以通过多种方式来检测过度编程。此外,本领域技术人员将认识到,可以使用相似或不同的步骤来检测存储阵列200的其他潜在问题,例如欠量编程。
图13是描述根据一个实施例的确定电路1170的操作的曲线图1300。确定电路1170进行编程验证操作,其中在检测电压“Vdetect”下感测存储阵列200的多个编程单元,该检测电压“Vdetect”不必与用于进行编程验证操作以确认被编程的单元已达到阈值电压的验证电压“Vverify”相同。确定电路1170通过检测在检测电压下感测到的单元数目与使用验证电压感测到的单元数目相比,来确定阈值电压是否已经偏移。
具体地,如图所示,曲线图1300具有示出阈值电压Vth的水平轴1310和示出在该阈值电压时感测到的单元数目的竖直轴1320。在由曲线1330示出的第一种情况下,非易失性存储元件123的平均阈值电压处于标称电平,其中阈值电压形成以平均阈值电压为中心的大致钟形的曲线。第一种情况可以代表在工厂处或者在其操作寿命的早期,在每个存储单元已经接收到单个编程脉冲之后,但在阈值电压由于编程导致的劣化而已经显着偏移之前,对存储阵列200进行的测试。在替代方案中,第一种情况可以表示在已经执行了重要的编程/擦除周期和/或已经执行了一个或多个编程设置的一个或多个修改之后对存储阵列200进行的测试。
确定电路1170可以跨给定的字线、块或存储阵列中的非易失性存储元件123施加标记为“Vdetect”的检测电压1340。检测电压1340可以大于用于编程验证操作的标记为“Vverify”的验证电压1350。在检测电压1340处,由曲线1330下方的、位于检测电压1340左侧的区域表示的数量1360可以传导电流。在检测电压1340下感测到的位数可以称为“N”。N可以是在发生重要的编程/擦除周期之前敢测到的位数,也可以是在先前测试(例如,上一次修改一个或多个编程设置时)中读取的位数。
在由曲线1370表示的第二种情况下,非易失性存储元件123的平均阈值电压例如由于某些非易失性存储元件123的绝缘元件的劣化而向上偏移。因此,曲线1370可以相对于曲线1330向右偏移,指示跨非易失性存储元件123的阈值电压的分布已经增加。第二种情况可以表示在大量的编程/擦除周期之后对存储阵列200的测试。
确定电路1170再次施加检测电压1340以感测先前已经被编程的非易失性存储元件123。在检测电压1340时,可以将由曲线1370下方的、位于检测电压1340左侧的区域表示的数量1380读取为已被编程。由于曲线1370相对于曲线1330向右偏移,在检测电压1340下(数量1380)读取的位数可以小于N(数量1360)。在检测电压1340处读取的位的这种改变可以指示阈值电压的增加的存在和/或程度,从而提供曲线1370的向右偏移,指示过度编程。
确定电路1170可以使用多种标准中的任何一种来确定阈值电压的偏移是否需要修改一个或多个编程设置。在一些实施例中,如果在检测电压1340下感测到的位数小于N,则可以确定批准改变一个或多个编程设置。在其他实施例中,在将对一个或多个编程设置进行调整看作是被批准的之前,在检测电压1340处读取的位数可能需要比N低预确定数量或百分比。
图13的曲线图1300仅是示例性的。可以以多种其他方式来检测和/或测量阈值电压的变化。在一些示例中,检测电压1340可以大于图13中示出的电压,并且甚至可以大于用于非易失性存储元件123的平均阈值电压。附加地或替代地,不是测量在检测电压1340下“感测到”的位,而是可以测量未被读取的位(即,在检测电压1340的右边并且在曲线1330或曲线1370下方的区域)。在这种情况下,未感测到的单元数目的增加可以指示增加的阈值电压,并且可以用于确定批准改变一个或多个编程设置。
在一些实施例中,确定电路1170为了进行确定,不感测任何非易失性存储元件123的内容。相反,确定电路1170可以以其他方式进行确定。例如,如果报告了读取错误,则确定电路1170可以响应于读取错误来调整编程设置。可替代地,存储电路1160可以记录多个编程/擦除周期(例如,在存储阵列200上),并且确定电路1170可以基于周期计数起作用。例如,当周期计数达到预确定数目的水平中的任何一个时,确定电路1170确定要减小编程电压。在一些实施例中,如美国专利号9,548,124所述,使用周期计数来调整编程设置,该专利通过引用并入本文。
更新电路1180可以以各种方式改变编程设置。如前所述,更新电路1180可以将(一个或多个)编程设置存储在存储阵列200上,例如存储在存储阵列200的将不被擦除的部分上。因此,(一个或多个)编程设置可以具有独特的架构和/或存储方法。将结合图14示出和描述一个示例。
图14描绘了根据一个实施例的可以用于在单个字节内存储编程设置的查找表1400。该字节可以驻留在存储阵列200上,例如,在块202的子集209中。该字节可以可选地是可编程的,但是不能利用用于擦除该字节所属的块(例如,图2A的块202)的块擦除命令被擦除。因此,可以在擦除操作擦除其他字线(例如,块202的字线WL0至WL16)上的用户数据时保留字节。查找表1400可以具有九行,每行可以提供与字节的给定状态相对应的编程电压。
字节可用于存储不直接对编程设置进行编码的编程设置,而是用作可用于确定编程设置的指示符。例如,该字节可以以编程电压标志1410的形式存储编程设置,该编程设置可以用于通过使用查找表1400指示要施加到将来的编程操作的编程电压。在默认状态下,可以将字节设置为这样的状态,在该状态中,所有位都被设置为未编程状态或被擦除状态。在SLC NAND阵列的情况下,这可能需要将字节的所有八位都设置为“1”,就像在查找表1400中的编程电压标志1410中的第一个中一样。在其他类型的存储阵列中,这可能需要将所有位设置为“0”,因为不同的存储阵列可以利用对编程位是“0”还是“1”的不同解释。
在图8中,假定该字节的初始未编程状态为“11111111”,如表的第一行中所示。这可能是字节的默认状态,也可能是出厂时字节所处的状态。在编程设置包括要存储在字节中的编程电压标志1410的情况下,字节的未编程状态可以是代表默认编程电压的编程电压标志1410。可以在默认编程电压下完成在存储阵列200上执行的初始编程操作。
当评估电路1190做出确定以评估(一个或多个)编程设置时,确定电路1170可以如前所述地操作以确定是否更新(一个或多个)编程设置。如果更新被批准,则可以例如由更新电路1180对字节的位之一进行编程。
在一些实施例中,在出于控制由于非易失性存储元件123上的(一个或多个)氧化物层的击穿而发生的阈值电压的增加的目的而评估编程电压的情况下,改变编程电压可能需要逐步降低编程电压。在仅需要在一个方向(即,向下)上改变编程电压的情况下,改变编程设置可能需要修改编程电压标志1410以代表新的较低的编程电压,从而以修改后的编程电压标志1410的形式存储修改后的编程设置。编程设置可以例如存储在芯片控制器220的注册表中,并且用于所有编程操作,直到发生更新为止。“修改后的编程设置”是已经经过某种方式被修改的编程设置。编程设置的修改可能需要覆盖、擦除和重写,或者以其他方式改变编程设置以存储修改后的编程设置。类似地,“修改后的编程电压标志”是已经以某种方式被修改的编程电压标志。
因此,参考图14的示例,在确定电路1170第一次确定要改变编程电压时,更新电路1180可以通过例如仅将字节的第一位改变为编程状态或“0”来更新字节。其余位可以保持不变。仅改变/编程一个位以改变字节(例如,编程电压标志)减少了用于更新/存储编程设置的开销。因此,更新可以非常迅速地发生,从而使芯片控制器220的处理和I/O容量可用于其他任务。
在更新电路1180已经执行更新之后,字节可以具有值“01111111”,其可以是编程电压标志1410,该编程电压标志1410代表与具有减量(诸如0.2伏特)的默认编程电压等效的编程电压,例如在查询表1400的第二行中示出。
类似地,确定电路1170第二次确定要降低编程电压时,更新电路1180可以将第二位编程为编程状态或“0”。其余位可以保持不变。因此,该字节可以具有值“00111111”,其可以是编程电压标志1410,该编程电压标志1410代表与具有两倍的减量的默认编程电压(或者默认编程电压为减去0.4伏特)等效的编程电压。
对于要进行的其余编程电压调整,可适用相同的模式。对于每次调整,更新电路1180可以将字节的位之一改变为编程状态,而不改变任何其他位。这些位可能不会被擦除,因此一旦对每个位进行了编程,就可以在存储阵列200的整个生命周期中保留这些位。随着每次改变,字节包含代表较低编程电压的新编程电压标志1410。因此,可以在存储阵列200的寿命中逐步地渐渐降低编程电压。这样的编程电压降低可以帮助将非易失性存储元件123的阈值电压保持在预确定和/或预定义范围内(例如,与图13的曲线1330所示的第一种情况的分布相匹配的分布,而不是与由曲线1370所示的第二种情况的向上偏移的分布相匹配的分布)。
在各种实施例中,除了需要补偿绝缘元件的劣化之外,可以出于各种目的调整一个或多个编程设置。例如,可以调整编程电压以适应用于制造存储阵列200的工艺中固有的制造变化。
例如,工厂中施加到存储阵列200的默认编程电压可能不能完全解决这种变化。因此,初始编程电压可能太高或太低。短语“次优编程”是指导致单元编程以不理想的方式发生的编程设置或过程。例如,太高或太低的编程电压是次优的,因为它可能相应地导致被编程单元的阈值电压太高或太低。编程电压的最优化在2004年4月6日提交的题为“VARIABLEPROGRAMMING OF NVOLATILE MEMORY”的美国申请序列号10/818,597中有更详细的描述,该申请现在作为美国专利号7,020,017发布,在此之前被引用。
为了在对编程设置进行的优化中提供更大的灵活性,可能希望允许向上或向下调整设置。这样的灵活性可以通过以下获得:向编程设置的存储分配额外的位,或通过修改使用位来存储这种编程设置的方式。
更特别地,在图14的示例中,查找表1400的第一行可以用于指定在其余行中编码的编程电压标志1410是否指示升高电压或是降低电压。例如,如果查找表1400的第一行保持设置为未编程状态,则字节可以被读取为包含如上所述的电压减量,只是第一行然后可以从减量排除。因此,如果字节读取为“00111111”,则该编程电压标志1410可以对应于等于默认编程电压减去0.2伏的编程电压。但是,如果对第一行进行了编程,则字节可以被读取为包含电压增量,排除第一行。因此,如果字节读取为“10111111”,则该电压标志可以对应于等于默认编程电压加上0.2伏的编程电压。
这种存储方案允许编程电压逐渐增大或减小,但是不允许编程电压增大然后减小,或者减小然后增大。本领域技术人员将认识到,可以使用各种各样的存储方案来对表示正编程电压调整或负编程电压调整的修改后的编程电压标志进行编码。
设置调整组件150和/或芯片控制器220可以根据多种方法操作以对单元进行编程并调整一个或多个编程设置。将结合图9示出和描述一个示例性实施例。
图15描绘了用于对存储阵列的单元进行编程的方法1500的一个实施例,其中对编程电压进行周期性调整。每当非易失性存储元件123中的一个或多个被编程时,可以执行方法1500。方法1500可以由芯片控制器220例如通过使用图11所示的各种电路来执行。在替代方案中,可使用不同硬件来执行方法1500,例如图1B的控制器244和/或图1A的非易失性存储介质控制器126。
如图所示,方法1500可以以步骤1520开始1510,在步骤1520中,接收命令以对存储阵列200的一个或多个非易失性存储元件123进行编程。该命令可以例如在芯片控制器220中被接收。这样的命令可以在芯片控制器220的存储电路1160中被接收。
在步骤1530中,可以确定一个或多个编程设置。这可以包括从存储阵列200读取编程电压和/或编程电压标志。例如,步骤1530可以包括读取存储在图14的讨论中所引用的字节中的编程电压标志1410(可以是修订后的或更新后的编程电压标志)。步骤1530可以例如由芯片控制器220的存储电路1160执行。
在步骤1540中,可以确定适当的编程电压。在步骤1530中检索到的编程电压标志1410可以用于完成该操作。例如,步骤1530可以包括通过在将每个编程电压标志1410与相关联的编程电压电平相匹配的查找表中查找编程电压标志1410而使用编程电压标志1410来确定适用的编程电压。这样的查找表可以类似于图14的查找表1400。类似于步骤1530,步骤1540可以例如由芯片控制器220的存储电路1160执行。
在步骤1550中,可以使用在步骤1540中确定的(一个或多个)编程设置来对一个或多个非易失性存储元件123进行编程。这可以由芯片控制器220的存储电路1160执行。
在步骤1560中,可以生成随机数。例如,这可以通过芯片控制器220的随机数生成器1150来完成。随机数可用于评估是否作为当前编程周期的一部分而关于是否为将来的编程步骤改变编程电压做出确定。
根据查询1570,可以关于随机数是否满足一个或多个标准做出确定。如上所述,为了减少编程所需的时间,可以仅周期性地评估编程设置。一个(可能是唯一的)标准可以是随机数是否落在特定范围内。在某些实施例中,这可能需要确定随机数是一个特定值,因此,适用范围可能仅包含一个值。
如果随机数不满足一个或多个条件,则编程步骤可以完成。当再次接收到用以对存储阵列200的一个或多个非易失性存储元件123进行编程的命令时,可以重复方法1500。
如果随机数满足一个或多个标准,则方法1500可以进行到步骤1580,在该步骤中可以在诸如图7的检测电压1340的检测电压下感测多个非易失性存储元件123。如结合图7所描述的,这可以由芯片控制器220的确定电路1170完成。
根据查询1590,可以确定在步骤1580中感测到的位数是否满足一个或多个标准。该确定可以例如由芯片控制器220的确定电路1170进行。如前所述,查询990的一个(并且可能是唯一的)标准可以是感测到的位数是否大于预定义水平或“N”,如上所述。
如果读取的位数不满足一个或多个标准,则芯片控制器220的确定电路1170可以确定不需要更新编程设置。编程步骤可能已完成。当再次接收到用以对存储阵列200的一个或多个非易失性存储元件123进行编程的命令时,可以重复方法1500。
如果读取的位数满足一个或多个标准,则芯片控制器220的确定电路570可以确定一个或多个编程设置需要被更新。因此,方法1500可以进行到步骤1596,在该步骤中更新一个或多个编程设置。例如,这可以通过更新电压标志1410来完成,如结合图14所述。步骤1596可以由芯片控制器220的更新电路1180执行。
在编程电压标志1410已经被更新之后,编程步骤可以完成。当再次接收到用以对存储阵列200的一个或多个非易失性存储元件123进行编程的命令时,可以重复方法1500。
在各个实施例中,用于读取一组非易失性存储单元的多个字线中的第一字线的备用列上的编程设置的器件可以包括设置调整组件150,芯片控制器220,存储电路1160,非易失性存储设备接口139,非易失性存储介质控制器126,存储客户端116,数据库系统116a,主机计算设备110,总线127,通信网络115,设备驱动器,在主机计算设备110上执行的控制器(例如,设备驱动器等),处理器111,其他逻辑硬件,和/或存储在计算机可读存储介质上的其他可执行代码。其他实施例可以包括用于读取一组非易失性存储单元的多个字线中的第一字线的备用列上的编程设置的类似或等效器件。
在各种实施例中,用于使用编程设置将数据写入一个或多个字线中的器件可以包括设置调整组件150,芯片控制器220,存储电路1160,非易失性存储设备接口139,非易失性存储介质控制器126,存储客户端116,数据库系统116a,主机计算设备110,总线127,通信网络115,设备驱动程序,在主机计算设备110上执行的控制器(例如,设备驱动程序等),处理器111,其他逻辑硬件,和/或存储在计算机可读存储介质上的其他可执行代码。其他实施例可以包括用于使用编程设置将数据写入到多个字线中的一个或多个字线的类似或等效器件。
在各种实施例中,用于确定编程设置导致非易失性存储单元中的一个或多个的阈值电压过高的器件可以包括设置调整组件150,芯片控制器220,确定电路1170,非易失性存储设备接口139,非易失性存储介质控制器126,存储客户端116,数据库系统116a,主机计算设备110,总线127,通信网络115,设备驱动程序,在主机计算设备110上执行的控制器(例如,设备驱动器等),处理器111,其他逻辑硬件,和/或存储在计算机可读存储介质上的其他可执行代码。其他实施例可以包括用于确定编程设置导致一个或多个非易失性存储单元的阈值电压过高的类似或等效器件。
在各种实施例中,用于响应于确定编程设置导致阈值电压过高而在第一字线的备用列上存储修改后的编程设置的器件可以包括设置调整组件150,芯片控制器220,更新电路1180,非易失性存储设备接口139,非易失性存储介质控制器126,存储客户端116,数据库系统116a,主机计算设备110,总线127,通信网络115,设备驱动器,在主机计算设备110上执行的控制器(例如,设备驱动器等),处理器111,其他逻辑硬件,和/或存储在计算机可读存储介质上的其他可执行代码。其他实施例可包括用于响应于确定编程设置导致阈值电压过高而在第一字线的备用列上存储修改后的编程设置的类似或等效器件。
在不脱离本发明的精神或基本特征的情况下,本发明可以以其他具体形式来体现。所描述的实施例在所有方面仅被认为是说明性的而非限制性的。因此,本公开的范围由所附权利要求而不是前述描述来指示。落入权利要求的等同含义和范围内的所有改变均应包含在其范围之内。
Claims (25)
1.一种存储芯片,包括:
一组非易失性存储单元,被布置成多个字线,其中单元的子集被配置为存储编程设置;和
芯片上控制器,被配置为:
从单元的所述子集读取所述编程设置;
使用所述编程设置将数据写入非易失性存储单元;
确定所述编程设置导致对非易失性存储单元的数据的次优编程;和
响应于确定所述编程设置导致对非易失性存储单元的数据的次优编程,将修改后的编程设置存储在所述子集的非易失性存储单元中。
2.根据权利要求1所述的存储芯片,其中:
所述编程设置指示第一编程电压;
所述芯片上控制器进一步被配置为通过经由非易失性存储单元以第一编程电压发送单个脉冲来将数据写入非易失性存储单元;并且
所述修改后的编程设置指示低于所述第一编程电压的第二编程电压。
3.根据权利要求1所述的存储芯片,其中,所述芯片上控制器进一步被配置为将所述修改后的编程设置存储在所述子集的非易失性存储单元中,而无需首先从所述子集中擦除编程设置。
4.根据权利要求1所述的存储芯片,其中,所述多个字线包括:
伪字线,包括两个或更多个备用列,所述两个或更多个备用列包括单元的所述子集;和
多个数据字线,与所述伪字线分开,所述多个数据字线被配置为存储数据。
5.根据权利要求4所述的存储芯片,其中,单元的所述子集定位于所述伪字线的驱动器附近。
6.根据权利要求1所述的存储芯片,其中:
非易失性存储单元被布置成多个块,包括:
第一块,包括所述多个字线;和
第二块,包括第二多个字线;并且
所述芯片上控制器还被配置为:
从所述第二多个字线的第二子集中读取第二编程设置;
使用所述第二编程设置将数据写入所述第二多个字线的非易失性存储单元;
确定所述第二编程设置导致对所述第二多个字线的一个或多个非易失性存储单元的次优编程;和
响应于确定所述第二编程设置导致对所述第二多个字线的一个或多个非易失性存储单元的次优编程,将修改后的第二编程设置存储在第二子集上。
7.根据权利要求1所述的存储芯片,其中,所述芯片上控制器还被配置为:
确定阈值电压在预确定范围内的单元的数目;和
确定阈值电压在所述预确定范围内的单元的数目是否满足一个或多个标准。
8.根据权利要求1所述的存储芯片,其中,所述芯片上控制器进一步被配置为响应于触发来确定编程设置导致对非易失性存储单元的数据次优编程,所述触发被配置为在对一个或多个字线执行随机数目的编程操作之后激活。
9.一种装置,包括:
设置成字线并连接到位线的一组非易失性存储单元,所述字线包括:
伪字线,被配置为存储编程电压标志;和
多个数据字线;
芯片上控制器,包括:
存储电路,被配置为:
使用与所述编程电压标志相关联的第一编程电压将用户数据存储在所述字线的非易失性存储单元中;
确定电路,被配置为确定所述第一编程电压导致所述非易失性存储单元的过度编程;
设置选择电路,被配置为响应于确定所述第一编程电压导致非易失性存储单元的过度编程,选择与所述第一编程电压不同的第二编程电压;和
更新电路,被配置为通过用与所述第二编程电压相关联的修改后的编程电压标志覆盖所述编程电压标志的至少一部分来在所述伪字线中存储所述修改后的编程电压标志。
10.根据权利要求9所述的装置,其中,
所述存储电路进一步被配置为通过经由非易失性存储单元以所述第一编程电压发送单个脉冲来存储用户数据;以及
所述第二编程电压低于所述第一编程电压。
11.根据权利要求10所述的装置,其中,所述确定电路进一步被配置为通过确定所述单个脉冲导致一个或多个非易失性存储单元的过度编程,来确定所述第一编程电压导致非易失性存储单元的过度编程。
12.根据权利要求11所述的装置,其中,
所述芯片上控制器还包括:
随机数发生器,被配置为产生随机数;和
评估电路,被配置为确定所述随机数满足一个或多个标准;和
所述确定电路还进一步被配置为响应于所述评估电路确定所述随机数满足一个或多个标准,来确定所述单个脉冲导致一个或多个非易失性存储单元的过度编程。
13.根据权利要求9所述的装置,其中,所述伪字线进一步被配置为将所述编程电压标志存储在所述伪字线的解码器附近的伪字线的备用列中。
14.根据权利要求9所述的装置,其中,
所述伪字线包括存储所述编程电压标志的字节,所述字节的一个或多个位被设置为擦除状态;和
所述存储电路还被配置为通过将一个或多个位改变为编程状态而不将字节的任何位改变为擦除状态来存储所述修改后的编程电压标志。
15.一种系统,包括:
SLC NAND阵列,包括一组非易失性存储单元;和
与所述SLC NAND阵列共享芯片的芯片上控制器,其中,所述芯片上控制器被配置为:
从所述SLC NAND阵列读取编程电压设置;和
启动单个脉冲以所述编程电压设置将数据写入所述SLC NAND阵列。
16.根据权利要求15所述的系统,其中,所述芯片上控制器进一步被配置为将更新后的编程电压设置存储在所述SLC NAND阵列上。
17.根据权利要求16所述的系统,其中,所述芯片上控制器还被配置为:
确定以所述编程电压设置写入数据会导致一个或多个非易失性存储单元的过度编程;和
响应于确定以所述编程电压设置写入数据导致一个或多个非易失性存储单元的过度编程,启动更新后的编程电压设置的存储。
18.根据权利要求16所述的系统,其中,所述芯片上控制器进一步被配置为存储所述更新后的编程电压设置而不擦除来自所述SLC NAND阵列的所述编程电压设置。
19.一种方法,包括:
从非易失性存储单元的设置段中读取编程设置;
使用所述编程设置将数据写入非易失性存储单元的数据段上;和
响应于触发,将修改后的编程设置存储在所述设置段中。
20.根据权利要求19所述的方法,其中:
所述编程设置指示第一编程电压;
将数据写入所述数据段上包括通过所述数据段以所述编程电压发送单个脉冲;和
存储修改后的编程设置包括在所述设置段上存储低于所述第一编程电压的第二编程电压的指示。
21.根据权利要求19所述的方法,其中,存储修改后的编程设置包括覆盖所述编程设置的至少一部分以存储所述修改后的编程设置。
22.根据权利要求19所述的方法,进一步包括通过确定所述编程设置导致一个或多个非易失性存储单元的阈值电压超过预定义电平来提供所述触发。
23.根据权利要求22所述的方法,其中,确定所述编程设置导致所述阈值电压超过预定电平包括:
确定阈值电压在预确定范围内的单元的数目;和
确定阈值电压在所述预确定范围内的单元的数目是否满足一个或多个标准。
24.根据权利要求19所述的方法,进一步包括通过以下方式提供所述触发:
生成随机数;和
通过确定所述随机数满足一个或多个条件来检测触发。
25.一种装置,包括:
用于读取一组非易失性存储单元的多个字线中的第一字线的备用列上的编程设置的器件;
用于使用所述编程设置将数据写入所述多个字线中的一个或多个字线的器件;
用于确定所述编程设置导致一个或多个非易失性存储单元的阈值电压过高的器件;和
用于响应于确定所述编程设置导致所述阈值电压过高而在所述第一字线的备用列上存储修改后的编程设置的器件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/910,998 US10643692B2 (en) | 2018-03-02 | 2018-03-02 | Adaptive programming voltage for non-volatile memory devices |
US15/910,998 | 2018-03-02 | ||
PCT/US2018/064802 WO2019168581A1 (en) | 2018-03-02 | 2018-12-10 | Adaptive programming voltage for non-volatile memory devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111164688A true CN111164688A (zh) | 2020-05-15 |
Family
ID=67768716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880063948.8A Pending CN111164688A (zh) | 2018-03-02 | 2018-12-10 | 用于非易失性存储设备的自适应编程电压 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10643692B2 (zh) |
CN (1) | CN111164688A (zh) |
DE (1) | DE112018004373T5 (zh) |
WO (1) | WO2019168581A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113870936A (zh) * | 2020-06-30 | 2021-12-31 | 闪迪技术有限公司 | 使用编码的tlc-精细对存储器单元进行编程 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US10643692B2 (en) * | 2018-03-02 | 2020-05-05 | Sandisk Technologies Llc | Adaptive programming voltage for non-volatile memory devices |
JP2020047348A (ja) * | 2018-09-19 | 2020-03-26 | キオクシア株式会社 | 半導体記憶装置及びその制御方法 |
US10832790B1 (en) * | 2019-09-26 | 2020-11-10 | Western Digital Technologies, Inc. | Performance of non data word line maintenance in sub block mode |
US11348643B2 (en) | 2020-02-25 | 2022-05-31 | Apple Inc. | Identifying failure type in NVM programmed in SLC mode using a single programming pulse with no verification |
CN114420182B (zh) * | 2022-03-29 | 2022-06-17 | 北京智芯微电子科技有限公司 | 非易失性存储单元的数据处理方法、装置及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030142545A1 (en) * | 2001-12-10 | 2003-07-31 | Kenichi Imamiya | Non-volatile semiconductor memory device |
CN1734678A (zh) * | 2004-08-09 | 2006-02-15 | 凌阳科技股份有限公司 | 使用非挥发性记忆体的方法及其电子装置 |
US20070177429A1 (en) * | 2006-01-24 | 2007-08-02 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory and nonvolatile memory system using thereof |
US20070253256A1 (en) * | 2006-05-01 | 2007-11-01 | Micron Technology, Inc. | Memory voltage cycle adjustment |
US20090154237A1 (en) * | 2007-12-12 | 2009-06-18 | Kabushi Kaisha Toshiba | Non-volatile semiconductor memory device |
US20120239858A1 (en) * | 2010-07-07 | 2012-09-20 | Stec, Inc. | Apparatus and method for determining an operating condition of a memory cell based on cycle information |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060136858A1 (en) * | 2004-12-17 | 2006-06-22 | International Business Machines Corporation | Utilizing fuses to store control parameters for external system components |
US7701779B2 (en) | 2006-04-27 | 2010-04-20 | Sajfun Semiconductors Ltd. | Method for programming a reference cell |
US7616500B2 (en) | 2007-02-20 | 2009-11-10 | Sandisk Corporation | Non-volatile storage apparatus with multiple pass write sequence |
US7551483B2 (en) | 2007-04-10 | 2009-06-23 | Sandisk Corporation | Non-volatile memory with predictive programming |
KR100933857B1 (ko) * | 2007-11-09 | 2009-12-24 | 주식회사 하이닉스반도체 | 불휘발성 메모리 장치 및 그 동작 방법 |
US7808819B2 (en) * | 2008-04-29 | 2010-10-05 | Sandisk Il Ltd. | Method for adaptive setting of state voltage levels in non-volatile memory |
US8345477B1 (en) * | 2009-07-29 | 2013-01-01 | Marvell International Ltd. | Non-volatile memory devices having uniform error distributions among pages |
KR101616099B1 (ko) * | 2009-12-03 | 2016-04-27 | 삼성전자주식회사 | 플래시 메모리 장치 및 그것의 프로그램 방법 |
TWI462104B (zh) | 2010-08-04 | 2014-11-21 | Silicon Motion Inc | 資料寫入方法及資料儲存裝置 |
US9214240B2 (en) | 2013-03-04 | 2015-12-15 | Sandisk Technologies Inc. | Dynamic erase depth for improved endurance of non-volatile memory |
US8891303B1 (en) * | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US20160162214A1 (en) * | 2014-12-08 | 2016-06-09 | James A McCall | Adjustable low swing memory interface |
US10643692B2 (en) * | 2018-03-02 | 2020-05-05 | Sandisk Technologies Llc | Adaptive programming voltage for non-volatile memory devices |
-
2018
- 2018-03-02 US US15/910,998 patent/US10643692B2/en active Active
- 2018-12-10 WO PCT/US2018/064802 patent/WO2019168581A1/en active Application Filing
- 2018-12-10 DE DE112018004373.8T patent/DE112018004373T5/de active Pending
- 2018-12-10 CN CN201880063948.8A patent/CN111164688A/zh active Pending
-
2020
- 2020-03-25 US US16/829,888 patent/US10811089B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030142545A1 (en) * | 2001-12-10 | 2003-07-31 | Kenichi Imamiya | Non-volatile semiconductor memory device |
CN1734678A (zh) * | 2004-08-09 | 2006-02-15 | 凌阳科技股份有限公司 | 使用非挥发性记忆体的方法及其电子装置 |
US20070177429A1 (en) * | 2006-01-24 | 2007-08-02 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory and nonvolatile memory system using thereof |
US20070253256A1 (en) * | 2006-05-01 | 2007-11-01 | Micron Technology, Inc. | Memory voltage cycle adjustment |
US20090154237A1 (en) * | 2007-12-12 | 2009-06-18 | Kabushi Kaisha Toshiba | Non-volatile semiconductor memory device |
US20120239858A1 (en) * | 2010-07-07 | 2012-09-20 | Stec, Inc. | Apparatus and method for determining an operating condition of a memory cell based on cycle information |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113870936A (zh) * | 2020-06-30 | 2021-12-31 | 闪迪技术有限公司 | 使用编码的tlc-精细对存储器单元进行编程 |
Also Published As
Publication number | Publication date |
---|---|
US10643692B2 (en) | 2020-05-05 |
WO2019168581A1 (en) | 2019-09-06 |
US10811089B2 (en) | 2020-10-20 |
DE112018004373T5 (de) | 2020-10-01 |
US20190272871A1 (en) | 2019-09-05 |
US20200258571A1 (en) | 2020-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111386573B (zh) | 非易失性存储器装置的多个单元的同时编程 | |
US10811089B2 (en) | Adaptive programming voltage for non-volatile memory devices | |
CN107492391B (zh) | 基于单元电流的位线电压 | |
CN107545923B (zh) | 基于擦除速度的字线控制 | |
US10482985B2 (en) | Dynamic erase loop dependent bias voltage | |
US11545221B2 (en) | Concurrent programming of multiple cells for non-volatile memory devices | |
US10734084B2 (en) | Scheme to reduce read disturb for high read intensive blocks in non-volatile memory | |
CN111406290B (zh) | 用于校验的子组选择 | |
WO2018044368A1 (en) | State-dependent read compensation | |
US9865352B2 (en) | Program sequencing | |
US11521691B1 (en) | Triggering next state verify in program loop for nonvolatile memory | |
US11355208B2 (en) | Triggering next state verify in progam loop for nonvolatile memory | |
US20230154553A1 (en) | Operation method of memory device and operation method of memory system including the same | |
US11581049B2 (en) | System and methods for programming nonvolatile memory having partial select gate drains | |
US11508440B1 (en) | Periodic write to improve data retention | |
US11972817B2 (en) | State look ahead quick pass write algorithm to tighten ongoing natural threshold voltage of upcoming states for program time reduction | |
US11315648B2 (en) | Dynamic tier selection for program verify in nonvolatile memory | |
EP4181131B1 (en) | Operation method of memory device | |
US20230307055A1 (en) | Concurrent slow-fast memory cell programming | |
US20220284961A1 (en) | Control gate signal for data retention in nonvolatile memory | |
CN115602228A (zh) | 非易失性存储器装置的多个单元并行编程 | |
CN115705905A (zh) | 通过存储器装置中的字线跟踪rc时间常数 |
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 |