相关申请的交叉引用
本申请要求于2018年11月29日提交的名称为“subgroupselectionforverification(用于校验的子组选择)”的美国专利申请序列16/205,165号的优先权和权益,该申请要求(1)于2018年6月12日提交的名称为“programverifyioselection(编程验证io选择)”的美国临时专利申请序列62/684,112号和(2)于2019年9月28日提交的名称为“programverifysubgroupselection(编程验证子组选择)”的美国临时专利申请序列62/738,365号的优先权和利益。上述专利申请中的每个均以引用的方式并入,如同在本文中全文示出一样。
在各种实施方案中,本公开涉及非易失性和/或易失性存储器装置通信,并且更具体地涉及用于非易失性和/或易失性存储器装置的程序验证操作的子组选择。
背景技术:
在存储器装置中,可例如在编程过程期间采用计数来确定存储器单元的状态。对所有存储器单元进行计数可相当耗时。因此,在特定操作期间仅对存储器单元的一部分进行计数将是有益的。
附图说明
下面参考附图中示出的具体实施方案包括了更具体的描述。应当理解,这些附图仅描绘了本公开的某些实施方案,因此不应被认为是对其范围的限制,通过使用附图,以附加的特异性和细节描述和解释了本公开,在附图中:
图1例示包括位线和字线的存储器单元阵列的实施方案;
图2例示nand配置中的三维(3d)存储器的示意图;
图3是例示3d垂直存储器结构的实施方案的示意性框图;
图4是示出3d存储块的顶视图的示意图;
图5是例示用于存储器装置的感测放大器组阵列的平面图;
图6例示在针对编程阈值的编程操作期间一组存储器单元的各种分布;
图7例示相对于图6所示的编程阈值的存储器单元的三个子组的分布以及存储器单元的三个子组的总体组合分布;
图8a例示图7的存储器单元的最快子组的分布;图8b例示图7的存储器单元的中间子组的分布;并且图8c例示图7的存储器单元的最慢子组的分布;
图9a例示一组存储器单元的各种分布,包括其中发生过编程的常规单个子组扫描和使用全子组扫描的一组分布;
图9b例示在单个子组扫描期间发生欠编程的一组分布;
图10是例示用于识别存储器单元的子组的相对编程速度的方法的实施方案的流程图;
图11是例示用于存储器单元子组识别和选择的系统的实施方案的示意性框图;
图12是例示用于存储器单元子组识别和选择的装置的示意性框图;
图13是例示子组选择电路的实施方案的框图;并且
图14例示根据一个或多个具体实施的随时间推移存在于多级闪存存储器单元中的阈值电压分布的示例。
具体实施方式
本公开的各方面可体现为设备、系统、方法或计算机程序产品。因此,本公开的各方面可采取完全为硬件的实施方案、完全为软件的实施方案(包括固件、常驻软件、微代码等)或结合软件和硬件方面的实施方案的形式,这些方面在本文中可全部统称为“电路”、“模块”、“设备”或“系统”。此外,本公开的各方面可采取在存储计算机可读程序代码和/或计算机可执行程序代码的一个或多个非暂态计算机可读存储介质中体现的计算机程序产品的形式。
本说明书中所述的许多功能单元已被标记为模块,以便更具体地强调这些功能单元的实现独立性。例如,模块可被实现为包括定制vlsi电路或门阵列的硬件电路、现成的半导体诸如逻辑芯片、晶体管或其他分立部件。模块还可在可编程硬件装置诸如现场可编程门阵列、可编程阵列逻辑部件、可编程逻辑装置等中实现。
模块还可至少部分地在用于由各种类型的处理器执行的软件中实现。识别的可执行代码模块可例如包括计算机指令的一个或多个物理或逻辑块,该物理或逻辑块可例如被组织为对象、过程或函数。然而,识别的模块的可执行文件无需物理地定位在一起,但可包括存储在不同位置的不同指令,这些不同指令在逻辑地接合在一起时包括该模块并实现针对该模块所述的目的。
实际上,可执行代码模块可包括单个指令或许多指令,并且甚至可以在若干不同代码片段之上、在不同程序之间、跨若干存储器装置等分布。当模块或模块的部分在软件中实现时,这些软件部分可以存储在一个或多个计算机可读存储介质和/或计算机可执行存储介质上。可以利用一个或多个计算机可读存储介质的任何组合。例如,计算机可读存储介质可包括但不限于电子、磁性、光学、电磁、红外或半导体系统、设备或装置,或前述的任何合适组合,但不包括传播信号。在本文档的上下文中,计算机可读存储介质和/或计算机可执行存储介质可以是可包含或存储用于供指令执行系统、设备、处理器或装置使用或与其结合的程序的任何有形和/或非暂态介质。
用于执行本公开的各方面的操作的计算机程序代码可以一种或多种编程语言的任何组合来编写,包括对象取向的编程语言诸如python、java、smalltalk、c++、c#、objectivec等,常规过程式编程语言,诸如“c”编程语言、脚本编程语言,和/或其他类似编程语言。程序代码可部分地或完全地在一个或多个用户的计算机上执行,并且/或者通过数据网络等在远程计算机或服务器上执行。
如本文所用,部件包括有形、物理的非暂态装置。例如,部件可被实现为:包括定制vlsi电路、门阵列或其他集成电路的硬件逻辑电路;现成的半导体,诸如逻辑芯片、晶体管,或其他分立装置;和/或其他机械装置或电气装置。部件还可在可编程硬件装置诸如现场可编程门阵列、可编程阵列逻辑部件、可编程逻辑装置等中实现。部件可以包括一个或多个硅集成电路装置(例如,芯片、管芯、管芯平面、封装件)或其他分立电气装置,这些装置通过印刷电路板(pcb)的电线等与一个或多个其他部件电连通。在某些实施方案中,本文所述的模块中的每个模块可另选地体现为或实现为部件。
如本文所用,电路包括提供用于电流的一个或多个通路的一组一个或多个电气部件和/或电子部件。在某些实施方案中,电路可包括用于电流的返回通路,使得该电路为闭环。然而,在另一个实施方案中,可将不包括用于电流的返回通路的一组部件称为电路(例如,开环)。例如,无论集成电路是否接地(作为用于电流的返回通路),该集成电路都可被称为电路。在各种实施方案中,电路可包括集成电路的一部分、集成电路、一组集成电路、具有或不具有集成电路装置的一组非集成电子部件和/或电子部件等。在一个实施方案中,电路可包括:定制vlsi电路、门阵列、逻辑电路或其他集成电路;现成的半导体,诸如逻辑芯片、晶体管,或其他分立装置;和/或其他机械装置或电气装置。电路还可以实现为可编程硬件装置中的合成电路,诸如现场可编程门阵列、可编程阵列逻辑部件、可编程逻辑装置等(例如,作为固件、网表等)。电路可以包括一个或多个硅集成电路装置(例如,芯片、管芯、管芯平面、封装件)或其他分立电气装置,这些装置通过印刷电路板(pcb)的电线等与一个或多个其他部件电连通。在某些实施方案中,本文所述的模块中的每个模块可体现为或实现为电路。
通过介绍的方式,为本专利申请中所用的各种术语提供了下列简要定义。在讨论本文的附图的上下文中将提供附加的定义。如本文所用,“示例性”可指示示例、具体实施和/或方面,并且不应理解为限制性的或指示偏好或优选的具体实施。此外,应当理解,可提供某些顺序术语(例如,“第一”或“第二”)以用于识别和便于参考,并且可不一定暗示物理特性或排序。因此,如本文所用,用于修饰元件诸如结构、部件、操作等的顺序术语(例如,“第一”、“第二”、“第三”)不一定指示该元件相对于另一元件的优先级或顺序,而是将该元件与具有相同名称的另一元件(但使用顺序术语)区分开。此外,如本文所用,不定冠词(“一”和“一个”)可指示“一个或多个”而不是“一个”。如本文所用,“包括”或“包含”元件的结构或操作可包括未明确叙述的一个或多个其他元件。此外,术语“包括”、“包含”、“具有”及其变型是指“包括但不限于”,除非另有明确说明。术语“一”、“一个”和“该”也指“一个或多个”,除非另有明确说明。此外,“基于”条件或事件执行的操作也可以基于未明确叙述的一个或多个其他条件或事件来执行。如本申请中所用,术语“实施方案”、“一个实施方案”、“另一个实施方案”或类似语言不涉及所公开主题的单个变型;相反,该语言是指可与所公开主题的多个不同具体实施一起应用和使用的所公开主题的变型。枚举的项目列表并不意味着项目中的任何或所有项目是互相排斥的和/或相互包容的,除非另有明确说明。
下面参考根据本公开实施方案的方法、设备、系统和计算机程序产品的示意性流程图和/或示意性框图来描述本公开的各方面。应当理解,示意性流程图和/或示意性框图的每个框,以及示意性流程图和/或示意性框图中的框的组合可由计算机程序指令实现。这些计算机程序指令可被提供给计算机的处理器或其他可编程数据处理设备以生产机器,使得经由该处理器或其他可编程数据处理设备执行的指令创建用于实现在示意性流程图和/或示意性框图的一个或多个框中指定的功能和/或动作的装置。
还应当指出,在一些另选的具体实施中,框中示出的功能可以不按图中所示的顺序发生。例如,事实上,连续示出的两个框可基本上同时执行,或者这些框有时可以采用相反的顺序执行,这取决于所涉及的功能。可以设想在功能、逻辑或效果上等同于所示附图的一个或多个框或其部分的其他步骤和方法。尽管在流程图和/或框图中可以采用各种箭头类型和线条类型,但是应当理解这些箭头类型和线条类型不限制相应实施方案的范围。例如,箭头可以指示所描绘的实施方案的枚举的步骤之间的未指定持续时间的等待或监视时段。
在以下具体实施方式中,参考了构成该具体实施方式的一部分的附图。前述
技术实现要素:
仅是例示性的,并不旨在以任何方式进行限制。除了以上描述的例示性方面、实施方案和特征之外,通过参考附图和以下具体实施方式,另外的方面、实施方案和特征将变得显而易见。每个图中的元件的描述可以参考前面的图的元件。相似的数字可以指代附图中的相似的元件,包括相似的元件的替代实施方案。
与在校验阶段期间对所有存储器单元进行计数相反,可以使用存储器单元的多个子组(例如,层、层组、分区、输入/输出(io)组等)中的一个或多个子组。遗憾的是,例如,如果所利用的子组不是期望的编程特性或标准的合适表示,则可发生数据错误,诸如欠编程或过编程。如本文所用,“存储器单元”包括可存储单个状态的硬件部件。存储器单元可包括易失性或非易失性存储器单元。存储在存储器单元中的状态可表示各种类型的值中的一种,诸如单比特值或多比特值。
图1描绘了被布置作为存储器阵列126中的nand闪存存储器单元的存储器的实施方案。如本文所用,术语“存储器”表示半导体存储器。半导体存储器的类型包括易失性存储器和非易失性存储器。即使当非易失性存储器未连接到电源(例如,电池)时,非易失性存储器也允许存储和保留信息。非易失性存储器的示例包括闪存存储器(例如,nand型和nor型闪存存储器)、电可擦除可编程只读存储器(eeprom)、铁电存储器(例如,feram)、磁阻存储器(例如,mram)、自旋传递扭矩磁随机存取存储器(stt-ram或stt-mram)、电阻式随机存取存储器(例如,reram或rram)和相变存储器(例如,pram或pcm)。非易失性存储器包括一个或多个存储器单元。“存储器单元”是能够存储电子信息的电子装置或部件。在一个实施方案中,非易失性存储器利用浮栅晶体管或电荷捕集晶体管作为存储器单元。调整浮栅晶体管或电荷捕集晶体管的阈值电压的能力允许该晶体管充当非易失性存储元件或存储器单元,诸如单级单元(slc)。然而,在一些情况下,可以通过编程和读取多个阈值电压或阈值电压范围来提供每个存储器单元(例如,多级单元)多于一个数据位,包括多级单元(mlc)(每单元2位)、三级单元(tlc)(每单元3位)、四级单元(qlc)(每单元4位)等。
存储器阵列126可包括许多存储器块。“存储器块”是一组存储器单元。例如,存储器块(例如,存储器单元阵列)包括布置在字线和位线中的存储器单元。存储器的“子块”是存储器块的子集。例如,子块是与存储器块的字线的子集对应的存储器单元的子集。在一个实施方案中,子块包括存储器块中的五十个字线,其中存储器块包括超过五十个字线。子块可以表示物理子块、逻辑子块或两者。存储器块包括两个或更多个子块。在一个实施方案中,存储器被结构化为二维(2d)nand。在另一个实施方案中,存储器被结构化为三维(3d)nand。在一个实施方案中,本文所述的部件(例如,存储器管芯、存储器、块、子块、存储器单元、电路、控制器和/或非易失性存储系统)中的一个或多个部件是利用集成电路中的一个或多个元件(例如,晶体管、电阻器、电容器、电感器和/或导体)来实现的。
如图1所示,例示性存储器块(或块)100包括多个nand串ns0至ns11以及相应的位线(例如,在块之间共享的bl0至bl11)。每个nand串在一端处连接到漏极选择栅(sgd),并且该漏极选择栅的控制栅经由公共sgd线连接。每个nand串在其另一端处连接到源极选择栅(sgs),该源极选择栅继而连接到公共源极线154。例如,ns0包括源极侧选择栅晶体管152和漏极侧选择栅晶体管140。示例性存储元件142、144、146、148和149分别在ns0至ns4中,并且连接到字线wl3。例如,wl3可以是被选择用于编程的所选择的字线,并且示例性存储元件可以是被选择用于编程的所选择的存储元件。连接到wl3的其他存储元件也可以是所选择的存储元件。六十四个字线例如wl0至wl63在源极选择栅和漏极选择栅之间延伸。
除nand闪存存储器之外,还可以使用其他类型的非易失性存储器。例如,可用于闪存eeprom系统的另一类型的存储器单元利用非导电电介质材料来代替导电浮栅,从而以非易失性方式存储电荷。在一个实施方案中,由氧化硅、氮化硅和氧化硅(ono)形成的三层电介质被夹在导电控制栅与存储器单元沟道上方的半导电衬底的表面之间。该单元通过将电子从单元沟道注入氮化物中来编程,其中电子被捕获并存储在有限区域中。然后,该存储的电荷以可检测的方式改变单元的沟道的一部分的电压水平。通过将热空穴注入氮化物中来擦除单元。可以分裂栅配置提供类似的单元,其中掺杂多晶硅栅在存储器单元沟道的一部分上方延伸以形成单独的选择晶体管。另一种类型的存储器在nand架构中使用金属(导电)电荷存储元件。
在另一种方法中,使用nrom单元。例如,两个位存储在每个nrom单元中,其中ono电介质层在源极和漏极扩散部之间的沟道上延伸。一个数据位的电荷位于与漏极相邻的电介质层中,而另一数据位的电荷位于与源极相邻的电介质层中。通过分别读取电介质内空间上分离的电荷存储区域的二进制状态来获得多状态数据存储。其他类型的非易失性存储器也是已知的。在另选的实施方案中,可存储和感测电阻水平而不是阈值电压水平。
图2示出nand闪存配置中的3d存储器226的实施方案。3d存储器226包括在衬底234诸如硅衬底上方一体地形成的多个物理层。存储元件(例如,存储器单元)诸如代表性存储器单元246被布置成物理层中的阵列。
代表性存储器单元246包括位于字线/控制栅wl4和导电沟道242之间的电荷捕集结构244。可经由导电沟道242相对于字线wl4的偏压将电荷注入电荷捕集结构244中或从电荷捕集结构244中排出。例如,电荷捕集结构244可以包括氮化硅,并且可以通过栅极电介质诸如氧化硅与字线wl4和导电沟道242分开。电荷捕集结构244中的电荷量影响在存储器单元246的读取操作期间通过导电沟道242的电流量,并指示存储在存储器单元246中的一个或多个位值。
3d存储器226包括多个擦除块,包括第一块(块0)276,第二块(块1)278和第三块(块2)280。每个块276、278、280包括物理层的“垂直切片”,该“垂直切片”包括字线的叠堆,该叠堆被示出为第一字线wl0、第二字线wl1、第三字线wl2、第四字线wl3和第五字线wl4。多个导电沟道(具有基本上垂直的取向,如图2所示)延伸穿过字线的叠堆。每个导电沟道耦接到每个字线wl0-wl4中的存储元件,从而形成存储元件的nand串。为清楚说明起见,图2示出三个块276、278、280,在每个块276、278、280中示出五个字线wl0-wl4,并且在每个块276、278、280中示出三个导电沟道。然而,3d存储器226可具有多于三个块,每个块多于五个字线,并且每个块多于三个导电沟道。
读/写电路268经由多条导电线耦接到导电沟道,该导电线被示出为导电沟道的第一端部(例如,最远离衬底234的端部)处的第一位线bl0、第二位线bl1和第三位线bl2和导电沟道的第二端部(例如,更靠近衬底234或在衬底234内的端部)处的第一源极线sl0、第二源极线sl1和第三源极线sl2。读/写电路268被示出为经由“p”控制线耦接到位线bl0-bl2,经由“m”控制线耦接到源极线sl0-sl2,并且经由“n”控制线耦接到字线wl0-wl4。p、m和n中的每一者可具有基于3d存储器226的特定配置的正整数值。在图2所示的示例中,p=3、m=3并且n=5。
在具体实施方案中,位线bl0-bl2中的每个位线和源极线sl0-sl2中的每个源极线可以耦接到不同导电沟道的相同端部(例如,第一端部或第二端部)。例如,特定位线bl0-bl2可以耦接到导电沟道282的第一端部,并且特定源极线可以耦接到导电沟道242的第一端部。导电沟道282的第二端部可以耦接(例如电耦接)到导电沟道242的第二端部。因此,导电沟道282和导电沟道242可以串联耦接并且可以耦接到特定位线bl0-bl2和特定源极线sl0-sl2,它们中的每一者耦接到特定nand串。
尽管导电沟道中的每个导电沟道诸如导电沟道242、282被示为单个导电沟道,但是每个导电沟道可以包括多个处于叠堆构型的导电沟道。叠堆构型中的多个导电沟道可由一个或多个连接器耦接。另外,具有耦接到导电沟道的物理上靠近的部分的导电连接器的蚀刻阻挡层(图2中未示出)可被包括在多个导电沟道中,诸如在第一组物理层232和第二组物理层233之间。附加地或另选地,一个或多个子块栅晶体管(图2中未示出)可耦接在第一组物理层232和第二组物理层233之间。
在一个实施方案中,第一组物理层232是第一子块的示例,并且第二组物理层233是第二子块的示例。例如,每个子块(例如,“基于字线的”子块)可以包括对应于字线wl0-wl4的子集的存储器单元。在另选的实施方案中,每个子块(例如,基于“串的”子块)可以包括对应于串(例如,nand串)的子集的存储器单元,并且可以具有例如公共源极线sl0至sl2,而不是公共位线bl0至bl2,反之亦然。
读/写电路268促进和/或实现在3d存储器226上执行的读和写操作。例如,数据可以存储到耦接到字线wl0-wl4的存储元件,并且读/写电路268可以使用一个或多个感测块236从存储元件(例如,存储器单元)读取位值。又如,读/写电路268可以将选择信号施加到耦接到字线wl0-wl4、位线bl0-bl2和源极线sl0-sl2的控制线,以使编程电压(例如,电压脉冲或一系列电压脉冲)施加在所选择的字线(例如,第四字线wl4)的(一个或多个)所选择的存储元件44上。
读/写电路268包括一个或多个感测块236。感测块236用于读取或感测存储在存储器单元中的一个或多个值。在一种方法中,为一组nand串提供一个感测块236,该组nand串中的每个nand串耦接到特定位线bl0-bl2。例如,感测块236与bl0相关联。另一个感测块236与bl1相关联,并且又一个感测块236与bl2相关联。每个感测块236可包括存储器控制器(图2中未示出)。每个感测块236还包括用于每个nand串的感测模块。另选地,感测块236可以耦接到位线的间隔,诸如偶数或奇数位线。
在读取操作期间,控制器可以从主机装置诸如计算机、智能电话或膝上型计算机接收请求。控制器可以通过向控制线施加适当的信号以使所选择的字线的存储元件被感测来使读取/写入电路268从3d存储器226的特定存储元件读取位。因此,具有呈叠堆构型的多个导电沟道的3d存储器226可被配置为从一个或多个存储元件读取数据并将数据写入一个或多个存储元件。
存储器单元246阵列中的存储器单元246的一个或多个子块可以由沟道(例如,物理通信沟道)耦接。在一个实施方案中,沟道包括位线bl0-bl2和/或源极线sl0-sl2。
图3示出3d垂直存储器结构或串329的一个实施方案。在一个实施方案中,垂直列332是圆形的并且包括四个层;然而,在其他实施方案中,可包括多于或少于四个的层,并且可使用其他形状(例如,“u”形而不是“i”形等)。在一个实施方案中,垂直列332包括由诸如sio2的电介质制成的内芯层370。也可以使用其他材料。包围内芯或内芯层370的是多晶硅沟道371。也可以使用除了多晶硅之外的材料。需注意,沟道371连接到位线。包围沟道371的是隧穿电介质372。在一个实施方案中,隧穿电介质372具有ono结构。包围隧穿电介质372的是共享电荷捕集层373,诸如(例如)氮化硅。也可使用其他材料和结构。本文所述的技术不限于任何特定材料或结构。
图3描绘电介质层dll49、dll50、dll51、dll52和dll53,以及字线wll43、wll44、wll45、wll46和wll47。字线层中的每个字线层包括由氧化铝层377包围的字线区域376,氧化铝层377由阻挡氧化物(sio2)层378包围。字线层与垂直列332的物理相互作用形成存储器单元。因此,在一个实施方案中,存储器单元包括沟道371、隧穿电介质372、电荷捕集层373(例如,与其他存储器单元共享)、阻挡氧化物层378、氧化铝层377和字线区域376。在一些实施方案中,阻挡氧化物层378和氧化铝层377可由具有绝缘特性的单层的材料或由具有绝缘特性的多于两层的不同材料代替。此外,所使用的材料不限于二氧化硅(sio2)或氧化铝。例如,字线层wll47和垂直列332的一部分构成存储器单元mc1。字线层wll46和垂直列332的一部分构成存储器单元mc2。字线层wll45和垂直列332的一部分构成存储器单元mc3。字线层wll44和垂直列332的一部分构成存储器单元mc4。字线层wll43和垂直列332的一部分构成存储器单元mc5。在其他架构中,存储器单元可具有不同的结构,然而,存储器单元仍将是存储单元。
当对存储器单元进行编程时,电子存储在与存储器单元相关联的电荷捕集层373的一部分中。响应于字线区域376上的适当电压,这些电子通过隧穿电介质372从沟道371被吸引到电荷捕集层373中。存储器单元的阈值电压(vt)与所存储的电荷量成比例地增大。在一个实施方案中,通过电子的福勒-诺得海姆(fowler-nordheim)隧穿到电荷捕集层中来实现编程。在擦除操作期间,电子返回到沟道或者空穴被注入到电荷捕集层中以与电子重组。在一个实施方案中,使用经由诸如栅极感应的漏极泄漏(gidl)的物理机制的空穴注入到电荷捕集层中来实现擦除。
在某些实施方案中,在不同位线上的不同存储器结构329(例如,不同存储器串329)中的相同定位或位置中的存储单元可在相同字线上。每个字线可存储:一个数据页面,诸如每个单元(slc)存储1位数据时;两个数据页面,诸如每个单元(mlc)存储2位数据时;三个数据页面,诸如每个单元(tlc)存储3位数据时;四个数据页面,诸如每个单元(qlc)存储4位数据时;或其他数量的数据页面。
在所描绘的实施方案中,垂直的3d存储器结构329包括“i”形存储器结构329。在其他实施方案中,垂直的3d存储器结构329可包括“u”形结构或可具有另一垂直和/或堆叠的架构。在某些实施方案中,四组串329(例如,四组48个字线,或另一预定义数量的字线)可形成擦除块,而在其他实施方案中,少于或多于四组的串329可形成擦除块。如可理解的,任何合适数量的存储单元可以是单个串329的一部分。在一个实施方案中,单个串329包括48个存储单元。
图4是例示根据一个实施方案的3d存储块400的顶视图的图。如图所示,3d存储块400可包括一系列存储器孔或单元(在图4中由标记为“0o”至“7o”和“0e”至“7e”的圆圈表示)。这些存储器孔中的每个存储器孔可被组织成串(在图4中标记为“串0”至“串3”)和/或进一步组织成io组(在图4中标记为“o”、“i1”、“i2”和“i3”)。每个io组位于形成于3d存储块400中的两种不同类型的蚀刻特征之间,即浅蚀刻特征410和深蚀刻特征420。与深蚀刻特征420相邻的io组被标记为外部io组(o);与浅蚀刻特征410相邻的io组被标记为内部3io组(i3);与外部io组相邻的io组标记为内部1io组(i1);并且与内部3io组(i3)相邻的io组被标记为内部2io组(i2)。应当指出的是,本文公开的程序和方法可结合多种类型的存储器来实现,诸如nand或nor存储器、2d存储器、3d存储器或采用基于电荷或基于电阻的存储技术的存储器。在一个示例中,所例示的存储块400可包含16k个存储器单元,其可进一步分成较小组的存储器单元,每组包括1k个存储器单元。
用于3d存储器的一些制造工艺可包括趋于优于在制造期间执行的蚀刻工艺的膜沉积工艺。对于这些类型的制造工艺,外部ioio组(o)中的外部存储器孔通常比内部存储器孔(i3)更慢地编程。然而,用于3d存储器的其他制造工艺可包括趋于优于制造期间的膜沉积工艺的蚀刻工艺。对于这些类型的制造工艺,内部存储器孔(i3)通常将比外部存储器孔(o)更慢地编程。然而,应当指出的是,由于在制造过程期间引入的这种变化或者由于装置的使用引起的磨损,3d存储器结构内的存储器单元的io组的物理位置并不总是决定其相对编程速度。此外,循环劣化还可导致不同存储器单元或存储器单元组的相对编程速度随时间推移而变化。
继续图4,每个存储器孔(0o-7o和0e-7e)可连接到位线430(在图4中标记为位线0-7)。位线430在存储器孔上方延伸并经由指示位线430连接到存储器孔的位置的连接点(在图4中示出为小的实心椭圆)连接到所选择的存储器孔。为便于说明,图4中仅示出了八条位线430(0至7)。然而,应当理解,其他位线(未示出)也在图4中的其他存储器孔上方延伸。
图5例示根据一个示例的用于图4的3d存储器结构400的感测放大器组500的阵列。图4所示的位线430延伸到感测放大器组500的阵列,如在图5中可以看到的。以这种方式,3d存储器结构400的某些存储器孔可以电耦接到位线430中的一个位线,并且然后每个位线可以电耦接到位线接口510。在一个实施方案中,位线接口510可以另外使用加扰,如位线430和位线接口510之间的图5中所示的成角度/非垂直线所示。然后,每个位线430可以电耦接到感测放大器组(在图5中标记为层#0至层#15)。如图5所示,每个感测放大器组跨页面水平地延伸。因此,每个“层”包括经由位线430与特定感测放大器组电连通的一组存储器孔。层也可被称为“存储器单元的子组”或仅称为“子组”。存储器单元的“子组”可以是由较大组的存储器单元形成的存储器单元的任何子集。在本申请中,存储器单元的子组可以被称为层、层组、io组、分区等。因此,虽然“存储器单元的子组”是可用于指存储器单元的子集的一个术语,但是这些术语(即,“子组”、“存储器单元子组”、“层”、“层组”、“io组”、“分区”等)中的任一个可以在整个本公开中互换使用。
图6至图8c示出用于识别存储器单元的一个或多个子组的编程特性的方法的步骤。图6例示在朝特定编程阈值603(其可以包括编程或擦除校验电平或验证电平,并表示可发生校验的电平-诸如电压水平)的示例编程操作期间,用于一组存储器单元(诸如存储在该组存储器单元中的一组电压或电阻状态)的各种存储器单元分布600a至600c。如本文所用,“编程阈值”或“阈值”是指在对存储器单元进行编程或擦除期间可达到的存储器单元的状态或条件。例如,“编程阈值”或“阈值”可包括阈值电压水平或阈值电阻水平,诸如编程验证电平。在各种实施方案中,“编程阈值”或“阈值”可与特定状态的验证电平相关联或不相关联。图6所示的示例编程操作包括第一存储器单元分布600a、第二存储器单元分布600b(在第一编程循环601a之后)、第三存储器单元分布600c(在第二编程循环601b之后)。“编程循环”包括涵盖编程脉冲并且延伸直到发出另一个编程脉冲或直到特定编程程序结束的时间段。因此,编程循环涵盖编程脉冲,之后是一个或多个校验脉冲。“校验”、“校验过程”、“校验程序”或“编程验证操作”包括例如确定存储器单元中是否已经满足特定特性的程序,诸如确定特定编程阈值603已经存储在存储器单元中。例如,在编程过程期间,可以将编程脉冲施加到特定nand存储器单元。然后,可以施加一组一个或多个校验脉冲,以例如确定nand单元是否已经达到目标编程阈值603。如果不是,则可在下一个编程循环期间施加较高电压水平的编程脉冲,并且在同一编程循环内,可执行另一个校验过程。重复该程序,直到单元页面的全部或一部分被编程到期望的编程阈值。
图7例示各种存储器单元分布700a至700d,包括对应于存储器单元的三个不同子组(在图7中标记为“层1”、“层2”和“层3”)的三个存储器单元分布700b至700d,以及相对于编程阈值603的总体存储器单元分布700a。图7所示的总体存储器单元分布700a是图7中标记为层1、层2和层3的存储器单元的三个子组的存储器单元分布700b至700d的组合。如图7所示,用于层1、层2和层3的存储器单元各自具有不同的编程速度,如通过每个层的存储器单元分布700b至700d沿图7所示的水平轴线的相对偏移所指出的。
图8a至图8c示出来自图7的存储器单元相对于编程阈值603的最快层、最慢层和中间层的各个存储器单元分布700b至700d。因此,存储器单元的某些子组(或层)比存储器单元的其他子组更快或更慢地响应于编程脉冲。同样,存储器单元的某些子组(或层)可以比存储器单元的其他子组更快或更慢地响应于擦除脉冲。换句话讲,本文所述的概念适用于“编程”存储器单元或存储器单元组,以及“擦除”存储器单元或存储器单元组。虽然特定存储器单元子组在存储器衬底上的物理位置(如结合图4所解释的)可指示其编程速度,但是制造工艺和循环退化的变化也可影响特定存储器单元子组的编程速度。因此,期望检测存储器单元的哪个子组是最快的子组(在图8a至图8c中提供的示例中由层1的分布700b表示)。如图8a至图8c所示,层1中的60位高于阈值编程级603。另选地,可期望检测哪个存储器单元子组是最慢的子组(由图8a至图8c中提供的示例中的层3的分布700d表示)。如图8a至图8c所示,仅层2中的20位高于阈值编程级603。还应当指出的是,检测存储器单元的哪些子组具有中间编程速度(在图8a至图8c中提供的示例中由层2的分布700c表示)也可用于特定应用或程序。如图8a至图8c所示,层3中没有位高于阈值编程级603。在一个实施方案中,中间编程速度的存储器单元的子组包括编程速度介于最快子组的编程速度和最慢子组的编程速度之间的存储器单元。在其他实施方案中,考虑到是否存在奇数或偶数个子组以及编程速度是否存在任何联系,中间编程速度的子组可具有等于或近似等于(例如,+/-1)速度高于或速度低于中间编程速度的子组的数量。例如,在平局(其中多个子组具有相同的测量速度)的情况下,可选择相同速度的子组中的一个子组用作代表性子组。
因此,图6至图8c示出用于识别存储器单元的两个或更多个子组的状态变化的相对速率的通用步骤的一个实施方案。具体地,在图6中,在一个实施方案中,一旦一定数量的存储器单元满足(例如,达到或超过)编程阈值603(例如,多个存储器单元达到或超过特定编程阈值,诸如最低状态的编程阈值)。对高于编程阈值603的单元的数量进行计数,以确定每个子组/层的相对编程速度。如图8a至图8c所示并且如上文所指出的那样,对于层1,60位高于编程阈值;对于层2,20位高于编程阈值;并且,对于层3,0位高于编程阈值。因此,在该示例中,层1是最快的编程层,层3是最慢的编程层,并且层2是中间或中等速度编程层。
在图7至图8c所示的示例中,存储器单元对编程脉冲作出响应的速度是每层中的存储器单元的状态变化速率。将每层的状态变化速率(例如,编程速度)与其他层进行比较以确定状态变化的相对速率。在该示例中,层1被识别为最快的存储器单元子组。层2被识别为中间编程速度的存储器单元子组。并且,层3被识别为最慢的存储器单元子组。
根据该程序,可以识别最快、最慢或中间的存储器单元子组,以用于当前或未来的存储器操作,诸如编程操作。这样,可以利用满足指定对于特定存储操作而言是否需要快速、慢速或中间存储器单元子组的特定编程标准、编程特性或状态变化特性的存储器单元子组来执行自适应扫描或计数。
如本文所用,“状态变化特性”包括当存储器单元从一种状态转换到另一种状态时与存储器单元相关的任何属性。例如,状态变化特性可包括但不限于速度、动量、偏振、电阻、温度、结晶组合物、无定形组合物等。
因此,例如,一个状态变化特性可涉及存储器单元或一组存储器单元在编程或擦除期间响应于公共或类似的编程或擦除脉冲从第一状态改变为第二状态的速度。在一个实施方案中,状态变化特性可简单地包括反映特定存储器单元或一组存储器单元对一组一个或多个编程脉冲的响应有多快或多慢(即,存储状态响应于编程脉冲改变有多快)的特性。
图9a示出使用常规单个子组扫描(其中没有确定哪个子组是最快的)生成的第一组存储器单元分布910,以及使用全子组扫描(其中所有存储器单元被计数,即被扫描)生成的第二组存储器单元分布920。全子组扫描产生可接受的一组分布920,但扫描所有子组太耗时并且导致较慢的编程或擦除过程。相比之下,常规单个子组扫描产生较差的一组分布910。图9a中的箭头930标识第一组分布910的区域,其中当假设子组为最快子组但不是最快子组时可导致如图所示的过编程。(请注意,由箭头930指示的存储器单元分布910组中的上尾部中的一些是如何看起来展开并朝图9中的右侧移动到下一个最高状态。)相比之下,第二组存储器单元分布920不表现出这些编程错误。同样,对于欠编程错误(在图9b中示出),存储器单元分布组的下尾部将看起来展开并朝图9b中的左侧移动,形成相邻且较低的分布,如箭头940所示。当例如假设子组为最慢子组但不是最慢子组时,可发生欠编程错误。过编程错误/欠编程错误的原因中的一些原因将在下文连同减轻这些过编程错误/欠编程错误的实施方案的呈现一起更详细地讨论。还应当指出的是,欠编程错误和过编程错误不一定在最高或最低数据状态下发生,而是可结合其他中间数据状态发生。
在校验过程期间,对每层的整个存储器单元数量进行计数是耗时的。因此,可以选择存储器单元的子组进行计数(有时称为扫描)。扫描用于例如在编程程序期间验证存储器单元的编程状态(或当前状态)。进行扫描以确定存储器单元是否已达到目标数据状态或阈值。当达到目标编程阈值时,可停止对那些单元的编程;如果尚未达到目标编程阈值,则编程将继续,直到达到目标。因此,在一个实施方案中,可以在编程程序期间使用一个或多个初始编程脉冲,然后进行扫描,以确定要选择存储器单元的哪个子组用于扫描操作。另选地,可基于从先前编程程序诸如在制造或校准程序期间获得的信息来选择存储器单元的子组。
在某些3dnand闪存技术中,编程验证操作可使用“1-层位扫描”方法(也可以称为单个子组扫描)等,这意味着控制器仅扫描数据页面上的存储器单元的子集以确定是否已达到目标编程级(或阈值),而不是扫描页面上的所有单元格。应当注意,无论采用单个子组扫描还是全子组扫描,在许多情况下,并非所有单元都将达到目标编程阈值,因为该单元中的一些单元有缺陷或简单地对所施加的编程脉冲的响应太慢。在一个实施方案中,页面的存储器单元被组织成存储器单元的子组(例如,层、io组、分区等,如前所述)。例如,如果页面包括16kb的存储器单元,则该页面可被划分为16个层,其中每个层包括该页面的1kb的存储器单元。“1-层位扫描”验证操作可以从该16个层中选择一层以执行代表性编程验证操作,该代表性编程验证操作用于基于所选择的层表现出编程验证操作的期望相对编程速度的假设来验证所有其他层。因此,理想的是,所选择的层的性能使其良好地代表一起构成整个页面的所有其他层。
如先前参考图4和图5所讨论的,在3d存储器架构的实施方案中,存储器单元可被组织成四个io组(例如,内部1io、内部2io、内部3io、外部io等)。外部io组可以是沿存储器单元阵列的外边缘物理地定位(与深蚀刻相邻)的那些存储器单元,并且内部io组可以是物理地定位成更靠近存储器单元阵列的中心(与浅蚀刻相邻)的那些存储器单元。在“1-层位扫描”方法的一个实施方案中,在编程验证操作期间,可以将外部io组或内部io组选择为表示其他io组的默认io组。在此类实施方案中,默认io组可以总是用于执行某些编程验证操作,使得其他未选择的io组不需要经历相同的编程验证操作,因为假设并认为可以依赖默认io组的编程验证操作的结果作为所有其他io组的良好代表。例如,可以假设代表性默认io组是多个子组中的最快(或最慢)存储器单元编程子组。
在另一个实施方案中,为某些编程操作选择最快的io组可确保存储器单元不被过编程,以便避免先前讨论的过编程错误。然而,如果错误地选择较慢的io组来表示用于某些编程操作的所有io组,则存储器阵列可在编程操作完成之后表现出过编程错误(例如,具有扩展和/或不正确的上尾部的存储器单元分布)。
图10是例示用于识别存储器单元的子组的相对编程速度的方法1000的实施方案的流程图。所识别的存储器单元子组然后可以用于编程操作,诸如用于自适应智能层扫描中的校验步骤。方法1000可与本文公开的存储器装置和系统以及可设想的任何其他合适的存储器装置和系统一起使用。
在步骤1010中,可以在编程操作中将一个或多个编程脉冲施加到存储器单元子组。如前所述,编程操作可以通过施加一个或多个编程循环(例如,编程脉冲后跟一个或多个校验脉冲)来将期望的编程阈值作为存储器单元子组内的存储器单元中的至少一些的目标。
在步骤1020中,可以在每个校验脉冲之前、期间或之后对满足编程阈值(例如,特定的阈值电压水平、阈值电阻水平等)的存储器单元的总数进行计数,以确定(在步骤1030中)满足编程阈值的存储器单元的总数是否大于数字阈值(例如,预先确定的数量、存储器单元总数的百分比等)。以这种方式,可以延迟/避免方法1000的后续步骤,直到获得满足数字阈值的存储器单元的足够样本大小。
在步骤1040中,如果确定满足编程阈值的存储器单元的总数大于(如步骤1030中所确定的)数字阈值,则可确定/计数每个子组内满足编程阈值的存储器单元的数量。例如,如先前参考图8a至8c所讨论的,确定第一子组(层1)具有高于编程阈值的60位,第二子组(层2)具有高于编程阈值的20位,并且第三子组(层3)具有高于编程阈值的0位。
一旦已经确定/计数了满足编程阈值的每个子组内的存储器单元的数量,方法1000就可以前进到步骤1050,在该步骤中,可以基于每个子组内的所确定的高于特定编程阈值的存储器单元的数量来识别存储器单元子组的至少一个相对编程速度。在一个实施方案中,基于每个子组内的所确定的存储器单元数量来识别最快编程子组和最慢编程子组中的至少一者。另外,可识别中间编程速度的子组。
一旦已经识别出存储器单元的至少一个子组,方法1000就可以前进到步骤1060,在步骤1060中,可以将所识别的存储器单元的子组用于编程操作中的校验步骤,如前所述,并且方法1000可结束。
如前所述,使用所有子组进行扫描以便确定是否已达到所设置的存储器单元的目标数据状态是耗时的,并且不当地减慢编程或擦除。因此,可基于确定所选择的子组代表期望的属性(例如,该子组是最快、最慢或中间的子组)来选择一个子组进行扫描。在常规方法中,特定io组或层通常被认为是最慢或最快的(例如,外部io组或内部3io组)。然而,该假设并不总是准确的并且产生重叠分布,如9a至图9b所示。如先前参考图9a所讨论的,如果例如将子组选择为最快子组但其不是最快子组,则可导致过编程。另选地,如果将子组选择为最慢子组但其不是最慢子组,则可导致欠编程。因此,如上所述,可以基于对每个子组的编程速度的确定来识别存储器孔或存储器单元的子组(例如,层、层组、io组、分区等)。此后,可通过利用所识别的子组作为所有其他子组的代表来实现编程操作(诸如校验)。因此,术语“编程验证子组选择”可以指本文所公开的用于识别要在编程操作(例如,校验期间的扫描等)期间使用的具有特定特性(例如,最慢或最快的子组)的存储器单元子组(例如,层、层组、io组、分区等)的任何系统、方法或设备。
图11是例示用于存储器单元子组识别和选择的系统1100和装置1110的实施方案的示意性框图;计算装置1110包括用于非易失性和/或易失性存储器装置1120的存储器介质1122的一个或多个识别电路或子组选择电路1150。如本文所用,“子组选择电路”是指用于识别存储器单元子组(例如,存储器单元的io组或层组)相对于至少一个其他存储器单元子组的编程速度并且选择所识别的存储器单元子组以用于至少一个编程操作的电路。例如,在一个实施方案中,子组选择电路1150可执行图10中概述的方法。子组选择电路1150可以是非易失性和/或易失性存储器元件1123的一部分(例如,设置在与非易失性存储器介质1122相同的集成电路装置上)。在一些实施方案中,存储器装置1120可至少部分地在计算装置1110的非易失性和/或易失性存储器系统1102上操作和/或与之通信,计算装置1110可包括处理器1111、易失性存储器1112和通信接口1113。处理器1111可包括一个或多个中央处理单元、一个或多个通用处理器、一个或多个专用处理器、一个或多个虚拟处理器(例如,计算装置1110可以是在主机内操作的虚拟机)、一个或多个处理器内核等。通信接口1113可包括一个或多个网络接口,该一个或多个网络接口被配置为将计算装置1110和/或存储器控制器1126通信地耦接到通信网络1115,诸如互联网协议(ip)网络、存储区域网络(san)、无线网络、有线网络等。
在一个实施方案中,子组选择电路1150可设置在存储器元件1123的边缘和/或周边处或朝向该边缘和/或周边设置,邻近和/或靠近存储器介质阵列1122(例如,如图11所描绘)。在另一个实施方案中,子组选择电路1150可设置在集成电路装置的与存储器介质阵列1122不同的级、层和/或平面上(例如,如处于该阵列下方、与该阵列平行且从该阵列偏移等的cmos或其他电路)。
在一个实施方案中,可以选择用于每个串的最慢子组(例如,每个串四个子组,如图4所示)用于进行编程验证操作,以确保每个页面被充分地编程。在其他实施方案中,可为某些编程操作选择每个串的最快子组,以便避免过编程问题,如前所述。根据所使用的制造工艺,外部io组通常是最慢子组,并且在一些实施方案中,可以是默认设置。然而,由于工艺变化、字线依赖性、串依赖性、退化等,有时内部io组或另一io组可以是最慢子组,如前所述。如果使用外部io组但内部3io组较慢,则其可导致最高数据状态(或其他状态)的下尾部问题,其中某些存储器单元可未被充分编程,从而导致数据错误(如图9b的箭头940所示)。
在某些实施方案中,子组选择电路1150可确定多个子组(例如,如图4所示的外部io组、内部1io组、内部2io组和内部3io组)的多个存储器单元在a-验证编程操作期间(如图14所示)是否超过a状态编程验证电平(和/或另一个预定义验证电平)。如本文所用,验证或校验电平可以是指与在存储器单元的编程或擦除期间可达到的特定状态相关联的任何电平。子组选择电路1150可以通过扫描(或计数)超过a状态编程验证电平的位数(其中每一位对应于一个存储器单元)来实现这一点。也可选择预定阈值数量的位(例如,100位)。在一个实施方案中,在子组选择电路1150执行下一个操作之前超过预先确定的阈值。例如,如果确定超过a-验证电平(用于存储器单元中最低状态的编程阈值)的存储器单元(例如位)的数量满足数字阈值,则子组选择电路1150可对高于编程阈值的每个单独子组的位数进行计数,以便基于哪个子组具有超过a-验证电平的最大位数,以及哪个子组具有超过a-验证电平的最小位数来确定哪个子组是最快子组和/或哪个子组是最慢子组。此后,可在编程操作中使用所识别的最快和/或最慢子组子组来表示所有其他io组,如前所述。例如,所识别的最慢子组可用于执行表示整个页面编程操作的所有其他子组的编程验证操作。这样,将大大减少为整个页面编程程序执行编程验证操作所花费的时间,同时减轻由于欠编程引起的错误。
默认设置(例如,已被识别和/或选择的一个或多个默认子组)对于每个芯片、管芯、管芯平面、字线、页面、串等可以是不同的,并且可针对每个芯片、管芯、管芯平面、字线、页面、串等单独地确定最慢子组、最快子组、中间子组等。子组选择电路1150还可以将对最慢子组、最快子组、中间子组等的选择存储为用于将来参考的参数(例如,使得这些参数仅需要确定一次),或者子组选择电路1150可以周期性地、根据预先确定的计划表等重新确定每个编程操作的选择。
在一个实施方案中,子组选择电路1150可以自动检测正确的(例如,最慢的)子组以用于编程验证操作,并且针对每个字线动态地使用正确的子组进行编程验证操作。在一个实施方案中,为编程验证操作动态地选择最慢的子组可以防止或减轻(例如,处于最高状态或其他上态等)下尾部偏斜的风险,从而减少失败的位计数或其他错误指示符。在一个实施方案中,子组选择电路1150还可以选择用于不同芯片、管芯、管芯平面、字线等的编程验证的最佳(例如,最慢)io组,使得可以改善导致不同io组编程速度的工艺变化。
在一个实施方案中,子组选择电路1150可以将一定数量的位(例如,100位)定义为数字阈值,并且可以使用a-验证电平(例如,a状态的电平,其可以是例如0.5v,如图14所示)作为检查点。例如,可以选择a-验证电平,因为当在存储器单元内从较低状态编程到较高状态时,a-验证电平具有最低编程阈值,并且因此先于所有其他验证电平。然而,子组选择电路1150可使用任何验证电平作为检查点,并且使用任何数量的位作为数字阈值。在编程期间,子组选择电路1150还可以检测在检查点(例如,a-验证电平)时首先超过验证电平(例如,≥100位)的子组。因此,其他子组可以是较慢子组。子组选择电路1150还可以为编程验证扫描或整体编程过程等选择子组。因此,一般来讲,子组选择电路1150可启用自适应和智能编程操作(诸如自适应智能层扫描),该自适应和智能编程操作可动态地选择用于特定编程操作的较慢、较快、中间等io组(例如,动态地选择用于整个页面编程的较慢io组)。
在各种实施方案中,存储器装置1120可相对于计算装置1110设置在一个或多个不同位置。在一个实施方案中,存储器装置1120包括一个或多个非易失性和/或易失性存储器元件1123,诸如半导体芯片或封装件或设置在一个或多个印刷电路板上的其他集成电路装置、存储外壳,和/或其他机械支撑结构和/或电气支撑结构。例如,存储器装置1120可包括一个或多个直插式存储器模块(dimm)卡、一个或多个扩展卡和/或子卡、存储器卡、通用串行总线(usb)驱动器、固态驱动器(ssd)或其他硬盘驱动器装置,并且/或者可具有另一个存储器和/或存储形状因数。存储器装置1120可与计算装置1110的主板集成和/或安装在该主板上,安装在计算装置1110的端口和/或插槽中,安装在不同计算装置1110上,和/或网络1115上的专用存储设备上,通过外部总线(例如,外部硬盘驱动器)与计算装置1110通信等。
在一个实施方案中,存储器装置1120可设置在处理器1111的存储器总线上(例如,在与易失性存储器1112相同的存储器总线上,在与易失性存储器1112不同的存储器总线上,代替易失性存储器1112等)。在另一个实施方案中,存储器装置1120可设置在计算装置1110的外围总线上,诸如外围部件高速互连(pciexpress或pcie)总线、串行高级技术附件(sata)总线、并行高级技术附件(pata)总线、小型计算机系统接口(scsi)总线、firewire总线、光纤通道连接、通用串行总线(usb)、pcie高级交换(pcie-as)总线等。在另一个实施方案中,存储器装置1120可设置在数据网络1115上,诸如以太网、infiniband网络、经网络1115的scsirdma、存储区域网络(san)、局域网(lan)、广域网(wan)诸如互联网、另一个有线和/或无线网络1115等。
计算装置1110还可包括非暂态计算机可读存储介质1114。计算机可读存储介质1114可包括可执行指令,这些可执行指令被配置为导致计算装置1110(例如,处理器1111)执行本文所公开的一个或多个方法的步骤。在一个实施方案中,子组选择电路1150可包括非易失性和/或易失性存储器元件1123的硬件、装置驱动程序的计算机可执行程序代码、存储器控制器1126的固件和/或用于存储器元件1123的存储器介质控制器、另一电子部件等。在一个实施方案中,子组选择电路1150可集成在存储器元件1123(例如,管芯上子组选择电路1150和/或其他集成硬件)上。
根据各种实施方案,存储器控制器1126可管理一个或多个存储器装置1120和/或存储器元件1123,存储器装置1120和/或存储器元件1123中的一个或多个可包括管芯上子组选择电路1150。一个或多个存储器装置1120可包括记录、存储器和/或存储装置,诸如一个或多个固态存储装置和/或一个或多个半导体存储装置,它们被布置和/或划分为多个可寻址的介质存储位置。如本文所用,介质存储位置是指存储器的任何物理单元(例如,存储器装置1120上的任何数量的物理存储介质)。存储器单元和/或区域可包括但不限于:物理存储位置的页面、存储器分区、块、扇区、集合或集(例如逻辑页面、逻辑块)等。
在某些实施方案中,装置驱动器和/或存储器控制器1126可向存储客户端1116呈现逻辑地址空间1134。如本文所用,逻辑地址空间1134是指存储器资源的逻辑表示。逻辑地址空间1134可包括多个(例如,范围)的逻辑地址。如本文所用,逻辑地址是指用于引用存储器资源(例如,数据)的任何标识符,包括但不限于:逻辑块地址(lba)、柱面/磁头/扇区(chs)地址、文件名、对象标识符、索引节点、通用唯一标识符(uuid)、全局唯一标识符(guid)、哈希码、签名、索引条目、范围、程度等。
用于存储器装置1120的装置驱动器可保持元数据1135,诸如逻辑到物理地址映射结构,以将逻辑地址空间1134的逻辑地址映射到一个或多个存储器装置1120上的介质存储位置。装置驱动器可被配置为向一个或多个存储客户端1116提供存储服务。存储客户端1116可包括在计算装置1110上操作的本地存储客户端1116和/或能够经由网络1115和/或网络接口1113访问的远程存储客户端1116。存储客户端1116可包括但不限于:操作系统、文件系统、数据库应用程序、服务器应用程序、内核级进程、用户级进程、应用程序等。
装置驱动器可通信地耦接到一个或多个存储器装置1120。该一个或多个存储器装置1120可包括不同类型的存储器装置,包括但不限于:固态存储装置、半导体存储装置、san存储资源、易失性存储器装置、非易失性存储器装置等。该一个或多个存储器装置1120可包括一个或多个相应存储器介质控制器1126和存储器介质1122。装置驱动器可经由传统块i/o接口1131提供对一个或多个存储器装置1120的访问。另外,装置驱动器可通过scm接口1132提供对增强功能的访问。元数据1135可用于管理和/或跟踪通过块i/o接口1131、scm接口1132、高速缓存接口1133或其他相关接口中的任一个执行的数据操作。
高速缓存接口1133可暴露能够经由用于存储器装置1120的装置驱动器访问的特定于高速缓存的特征。此外,在一些实施方案中,呈现给存储客户端1116的scm接口1132提供对由一个或多个存储器装置1120和/或一个或多个存储器介质控制器1126实现的数据转换的访问。
装置驱动器可通过一个或多个接口向存储客户端1116呈现逻辑地址空间1134。如上所述,逻辑地址空间1134可包括多个逻辑地址,每个逻辑地址对应于一个或多个存储器装置1120上的相应介质位置。装置驱动器可保持元数据1135,元数据1135包括逻辑地址和介质位置之间的任何至任何映射等。
装置驱动器还可包括存储器装置接口1139和/或与之通信,存储器装置接口1139被配置为通过总线1125将数据、命令和/或查询传输到一个或多个存储器装置1120,总线1125可包括但不限于:处理器1111的存储器总线、外围部件高速互连(pciexpress或pcie)总线、串行高级技术附件(ata)总线、并行ata总线、小型计算机系统接口(scsi)、firewire、光纤通道、通用串行总线(usb)、pcie高级交换(pcie-as)总线、网络1115、infiniband、scsirdma等。存储器装置接口1139可使用一个或多个输入输出控制(io-ctl)命令、一个或多个io-ctl命令扩展、远程直接存储器存取等来与该一个或多个存储器装置1120通信。
通信接口1113可包括一个或多个网络接口,这些网络接口被配置为将计算装置1110和/或存储器控制器1126通信地耦接到网络1115和/或通信地耦接到一个或多个网络可访问的远程存储客户端1116。存储客户端1116可包括在计算装置1110上操作的本地存储客户端1116和/或能够经由网络1115和/或网络接口1113访问的远程存储客户端1116。存储器控制器1126是一个或多个存储器装置1120的一部分和/或与该一个或多个存储器装置120通信。虽然图11描绘了单个存储器装置1120,但本公开在此方面不受限制并且可适于结合任何数量的存储器装置1120、一个或多个易失性存储器装置1120与一个或多个非易失性存储器装置1120的组合等。
存储器装置1120可包括存储器介质1122的一个或多个元件1123。在一个实施方案中,存储器介质1122的元件1123包括易失性存储器介质1122,诸如随机存取存储器(ram)、动态ram(dram)、同步dram(sdram)、双倍数据速率(ddr)sdram、静态ram(sram)、晶闸管ram(t-ram)、零电容ram(z-ram)等。在某些实施方案中,存储器介质1122的元件1123包括非易失性存储器介质1122,诸如reram、忆阻器存储器、可编程金属化单元存储器、相变存储器(pcm、pcme、pram、pcram、双向统一存储器、硫属化物ram或c-ram)、nand闪存存储器(例如,2dnand闪存存储器、3dnand闪存存储器)、nor闪存存储器、纳米随机存取存储器(纳米ram或nram)、基于纳米晶体线的存储器、基于硅氧化物的亚10纳米工艺存储器、石墨烯存储器、硅-氧化物-氮化物-氧化物-硅(sonos)存储器、可编程金属化单元(pmc)存储器、导电桥接ram(cbram)、磁阻ram(mram)、磁存储介质(例如,硬盘、磁带)、光存储介质等。因此,存储器装置1120可依赖于例如存储的电压水平或存储的电阻水平。在某些实施方案中,存储器介质1122的一个或多个元件1123包括存储级存储器(scm)。
虽然传统技术诸如nand闪存可以是块和/或页面可寻址的,但在一个实施方案中,存储级存储器是字节可寻址的。在另外的实施方案中,存储级存储器可以比nand闪存更快和/或具有比nand闪存更长的寿命(例如,耐久性);可具有比dram更低的成本、使用较少的功率,和/或具有更高的存储密度;或者提供与其他技术相比的一个或多个其他好处或改进。例如,存储级存储器可以包括reram、忆阻器存储器、可编程金属化单元存储器、相变存储器、纳米ram、基于纳米晶体线的存储器、基于硅氧化物的亚10纳米工艺存储器、石墨烯存储器、sonos存储器、pmc存储器、cbram、mram和/或其变型的一个或多个非易失性存储器元件1123。
虽然非易失性存储器介质1122在本文中被称为“存储器介质”,但在各种实施方案中,非易失性存储器介质1122可更一般地包括能够记录数据的一个或多个非易失性记录介质,该一个或多个非易失性记录介质可被称为非易失性存储器介质、非易失性存储介质等。此外,在各种实施方案中,非易失性存储器装置1120可包括非易失性记录装置、非易失性存储器装置、非易失性存储装置等。类似地,在各种实施方案中,非易失性存储器元件1123可包括非易失性记录元件、非易失性存储器元件、非易失性存储元件等。
非易失性存储器介质1122可包括一个或多个非易失性存储器元件1123,一个或多个非易失性存储器元件1123可包括但不限于:芯片、封装件、平面、管芯等。非易失性存储器控制器1126可被配置为管理非易失性存储器介质1122上的数据操作,并可包括一个或多个处理器、可编程处理器(例如,fpga)、asic、微控制器等。在一些实施方案中,非易失性存储器控制器1126被配置为将数据存储在非易失性存储器介质1122上并且/或从非易失性存储器介质1122读取数据,以往返于一个或多个非易失性存储器装置1120传输数据等。
非易失性存储器控制器1126可以通过总线1127通信地耦接到非易失性存储器介质1122。总线1127可包括用于往返于非易失性存储器元件1123传送数据的i/o总线。总线1127还可包括用于将寻址和其他命令及控制信息传送到非易失性存储器元件1123的控制总线。在一些实施方案中,总线1127可并行地将一个或多个非易失性存储器元件1123通信地耦接到非易失性存储器控制器1126。该并行访问可允许非易失性存储器元件1123作为组被管理,从而形成逻辑存储器元件1129。逻辑存储器元件可被划分为相应的逻辑存储器单元(例如,逻辑页面)和/或逻辑存储器分区(例如,逻辑块)。逻辑存储器单元可通过将非易失性存储器元件中的每个非易失性存储器元件的物理存储器单元逻辑地组合来形成。
非易失性存储器控制器1126可包括在计算装置1110上执行的装置驱动器并且/或与之通信。装置驱动器可经由一个或多个接口1131、1132和/或1133向存储客户端1116提供存储服务。在一些实施方案中,装置驱动器提供块-装置i/o接口1131,存储客户端1116通过块-装置i/o接口执行块级i/o操作。另选地或除此之外,装置驱动器可提供存储级存储器(scm)接口1132,scm接口1132可向存储客户端1116提供其他存储服务。在一些实施方案中,scm接口1132可包括对块装置接口1131的扩展(例如,存储客户端1116可通过对块装置接口1131的扩展或添加来访问scm接口1132)。另选地或除此之外,scm接口1132可作为单独的api、服务和/或库来提供。装置驱动器可被进一步配置为使用非易失性存储器系统1102提供用于缓存数据的高速缓存接口1133。装置驱动器还可包括非易失性存储器装置接口1139,接口1139被配置为通过总线1125将数据、命令和/或查询传输到非易失性存储器控制器1126,如上所述。
图12是示出用于存储器单元子组识别和选择的非易失性存储装置1210的实施方案的示意性框图。非易失性存储装置1210可包括具有一个或多个子组选择电路1250的一个或多个存储器管芯或芯片1212。这些子组选择电路1250可以执行结合图11的子组选择电路1150所讨论的相同功能和变型。“存储器管芯”包括其上制造有存储器电路的半导体材料块,并且如本文所用,还包括设置在其上的存储器电路。非易失性存储装置1210可以基本上类似于参考图11所述的计算装置1110。虽然图12的子组选择电路1250被描绘为朝存储器管芯或芯片1212的周边(例如,在与集成电路装置中的存储器阵列1200相同的物理级上),但在其他实施方案中,一个或多个子组选择电路1250可设置在存储器管芯和/或芯片1212的与存储器阵列1200不同的物理级上(例如,平行于集成电路装置中的存储器阵列1200的级并从该级偏移)。在一个实施方案中,子组选择电路1250可以是管芯上控制器1220的一部分。在另一个实施方案中,子组选择电路1250可以是读/写电路1230a-1230b,行解码器电路1240a-1240b,列解码器电路1242a-1242b等的一部分。
在一些实施方案中,存储器管芯1212包括存储器单元阵列1200(例如,二维或三维)、管芯上控制器1220和读/写电路1230a/1230b。在一个实施方案中,通过各种外围电路对存储器阵列1200的访问在存储器阵列1200的相对侧上以对称方式实现,使得每侧上的接入线路和电路的密度减少一半。在又一个实施方案中,读/写电路1230a/1230b包括允许并行地读取存储器单元的页面或将其编程的多个感测块1251。
在各种实施方案中,可经由行解码器电路1240a/1240b通过字线来对存储器阵列1200进行寻址,和经由列解码器电路1242a/1242b通过位线来对该存储器阵列1200进行寻址。在一些实施方案中,控制器1244作为一个或多个存储器管芯1212被包括在同一存储器装置1210(例如,可移除存储卡或封装)中。命令和数据经由线路1232在主机和控制器1244之间传输,并且经由线路1234在控制器和一个或多个存储器管芯1212之间传输。一个具体实施可包括多个芯片1212。
在一个实施方案中,管芯上控制器1220与读/写电路1230a/1230b配合以在存储器阵列1200上执行存储器操作。在某些实施方案中,管芯上控制器1220包括状态机1222、片上地址解码器1224和功率控制电路1226。在一个实施方案中,片上地址解码器1224和/或功率控制电路1226可为控制器1244的一部分和/或由该控制器1244控制。
在一个实施方案中,状态机1222提供存储器操作的芯片级控制。片上地址解码器1224提供地址接口,其用以在由主机或存储器控制器使用的地址到由解码器电路1240a、1240b、1242a、1242b使用的硬件地址之间转换。功率控制电路1226控制在存储器操作期间提供给字线和位线的功率和电压。在一个实施方案中,功率控制电路1226包括一个或多个电荷泵,其可以产生大于供电电压的电压。
在一个实施方案中,管芯上控制器1220、状态机1222、功率控制电路1226、片上地址解码器1224、解码器电路1242a、解码器电路1242b、解码器电路1240a、解码器电路1240b、读/写电路1230a、读/写电路1230b和/或控制器1244中的一个或任何组合可被称为一个或多个管理电路。
图13是示出子组选择电路1350的一个实施方案的框图。如结合图11和图12的子组选择电路所指示的,子组选择电路1350可以定位在存储器管芯或芯片上的各个位置处,并且可以结合具有特定编程特性或状态变化特性的子组的识别来执行各种功能。图13所示的子组选择电路1350包括状态变化/编程电路1330、计数电路1331、确定电路1332和识别电路1333。
如本文所用,“状态变化电路”或“编程电路”是指用于执行或递送一个或多个编程循环的任何电路。例如,编程电路可执行图10的步骤1010。如本文所用,“计数电路”是指对每个子组内的编程验证操作期间满足编程阈值的存储器单元的总数和/或所有子组中满足编程阈值的存储器单元的总数进行计数的电路。以举例的方式,计数电路可执行图10的步骤1020或1040。
如本文所用,“确定电路”是指推断、计算、考虑或确定两个或更多个存储器单元子组的状态变化的相对速率的任何电路。例如,每个存储器单元具有至少包括第一数据状态(例如,较高或较低数据状态)和第二数据状态(例如,较高或较低数据状态)的数据状态。确定电路可确定来自一组存储器单元子组的哪个存储器单元子组更快地从第一状态转换到第二状态或从第二状态转换到第一状态。
在某些实施方案中,存储器单元的可变特性用于表示或存储数据值(例如,二进制1或二进制0)。如果存储器单元的可变特性可具有两个以上的不同值/设置,则存储器单元可用于存储多位数据值。存储器单元的特性的每个不同值在本文中被称为数据状态。例如,在一个实施方案中,存储器单元中的阈值电压水平或阈值电阻水平可包括数据状态。
在某些实施方案中,数据状态和特性之间的关系是线性的。因此,如果第一数据状态包括比由第二数据状态表示的阈值电压水平高的阈值电压水平,则第一数据状态可高于第二数据状态。当存储器单元的数据状态从一种数据状态改变为另一种数据状态(或改变为中间数据状态)时,发生状态变化。在某些实施方案中,一种数据状态被认为低于另一种数据状态,因为其相应的阈值电压水平低于另一种数据状态。从较低数据状态移动到较高数据状态可涉及例如从存储在存储器单元中的较低阈值电压水平转换到较高阈值电压水平。从较低数据状态移动到较高数据状态还可涉及例如从较低阈值电阻水平转换到较高阈值电阻水平。状态变化还可涉及例如在擦除程序期间从较高数据状态转换到较低数据状态。
在该解决方案的实施方案中,一个目标是确定存储器单元组的状态变化速率。状态变化速率是存储器单元的状态在给定数量的编程脉冲或擦除脉冲内如何改变的量度(例如,变化的量值)。因此,存储器单元子组的状态变化的相对速率指示存储器单元子组相对于经历一组类似编程脉冲或擦除脉冲的至少一个其他存储器单元子组从一种数据状态到另一种数据状态的变化有多快或多慢。例如,确定电路可执行图10所示的步骤1020、1030、1040。如本文所用,“识别电路”是指用于识别存储器单元子组相对于存储器单元的至少一个其他子组的编程速度的电路。例如,可利用识别电路来执行图10的步骤1050中所识别的步骤。
在一个实施方案中,状态变化/编程电路1330被配置为通过向存储器阵列中的存储器单元中的至少一些递送(或供给)编程循环来改变存储器单元中的每个的数据状态。换句话讲,状态变化/编程电路1330被配置为将一个或多个编程脉冲施加到存储器单元阵列以将存储器单元编程到目标数据状态。目标数据状态可以是存储器单元或存储器单元子组的任何期望的数据状态。每个编程循环涵盖单个编程脉冲,并一直延伸到发送后续的编程脉冲为止。例如,状态变化/编程电路1330将一系列编程脉冲发送到耦接到存储器阵列的存储器单元的所选择的字线。编程脉冲可以在多个编程周期内增加幅度(例如,以线性或非线性方式增加电压),以将存储器单元的阈值电压(例如,闪存配置中的阈值电压或电阻存储器配置中的电阻状态)逐渐(或递增地)增加到与存储的数据相对应的状态。术语“渐进地”或“递增地”意指随时间推移逐步地发生(例如,经过多个编程循环)。
在一个实施方案中,计数电路1331被配置为对满足编程阈值的一组存储器单元内的存储器单元的总数进行计数,以便确定存储器单元的总数是否满足数字阈值。该计数过程可在编程验证操作期间或之后发生。编程阈值可以是例如a状态编程验证电平或任何其他验证电平。数字阈值可以是任何预先确定的数字(诸如预先确定的正整数)或导出的任何数字(诸如给定的存储器单元组或子组内的存储器单元的百分比)。
在一个实施方案中,在计数电路1331、确定电路1332和/或识别电路1333执行其相应操作之前,确定满足(例如,达到或超过)编程阈值的存储器单元的数量大于(例如,超过)数字阈值。这样,可以延迟/避免由计数电路1331、确定电路1332和/或识别电路1333执行的某些后续操作,直到获得满足编程阈值的存储器单元的足够样本大小。例如,如果确定超过编程阈值的存储器单元的数量满足数字阈值,则计数电路1331可以继续对满足编程阈值的存储器单元的每个单独子组中的存储器单元的数量进行计数。如前所述,确定电路1332和/或识别电路1333还可以继续确定/识别存储器单元的至少一个子组的状态变化的相对速率(例如,编程速度)。在一个实施方案中,如果确定满足编程阈值的存储器单元的数量满足数字阈值(例如,满足编程阈值的存储器单元的数量大于或小于数字阈值),则计数电路1331可继续对满足编程阈值的第一子组的单元的第一数量进行计数,并且对满足编程阈值的第二子组的单元的第二数量进行计数。
在一个实施方案中,确定电路1332被配置为确定至少两个存储器单元子组的状态变化的相对速率。例如,存储器单元子组的状态变化的相对速率可以用数字表征(例如,通过满足编程阈值的存储器单元的第一子组中的存储器单元的数量相对于满足编程阈值的存储器单元的第二子组中的存储器单元的数量),或经由合适的标签/状态变化特性表征(例如,最快的存储器单元子组、最慢的存储器单元子组、中间的存储器单元子组等)。
在一个实施方案中,识别电路1333被配置为基于至少两个存储器单元子组的状态变化的相对速率来识别满足状态变化特性的存储器单元子组。例如,可期望识别和选择具有特定状态变化特性的特定存储器单元子组(例如,与编程速度有关的最快/最慢/中间存储器单元子组),以便完成编程操作(例如,编程验证操作)。在该实施方案中,识别电路1333可识别满足期望状态变化特性的存储器单元子组和/或选择所识别的存储器单元子组以在编程操作期间使用(例如,利用所识别的子组进行编程操作的校验步骤)。
在一个实施方案中,识别电路1333被配置为响应于满足阈值(例如,编程验证电平)的第一子组的单元的第一数量大于满足阈值的第二子组的单元的第二数量,将第一子组识别为最快的存储器单元子组,并且将第二子组识别为最慢的存储器单元子组。
在一个实施方案中,识别电路1333被配置为识别以下各项中的至少一者:(1)当状态变化/编程电路1330将至少一些存储器单元的数据状态从较低数据状态改变为较高数据状态时,最快的存储器单元子组;以及(2)当状态变化/编程电路1330将存储器单元中的至少一些的数据状态从较低数据状态改变为较高数据状态(或改变为中间数据状态)时最慢的存储器单元子组。
在一个实施方案中,识别电路1333被配置为识别在每个编程操作期间(例如,在每个编程验证操作期间)满足状态变化特性的至少一个存储器单元子组(例如,存储器单元的最快子组/最慢子组/中间子组)。这在某些情况下可以是有用的,诸如:(1)其中数据准确性和存储器装置的总体速度之间的权衡有利于数据准确性;(2)一旦存储器装置已进入其“使用结束”或“预计寿命结束”时间段(例如,存储器装置已完成许多写入周期,诸如已将一定数量的terabytes写入存储器装置);以及(3)如果存储器装置开始检测到一定数量或百分比的数据错误。
然而,还应当理解,在其他实施方案中,识别电路1333可被配置为根据预先确定的计划表识别满足状态变化特性的至少一个存储器单元子组。例如,预先确定的计划表可包括:(1)在制造或初始测试存储器装置时一次;或(2)周期性地(例如,在已经完成多个编程操作之后,在经过一段时间之后等)。
本文所公开的设备的实施方案包括多个存储器单元和状态变化电路,该状态变化电路被配置为改变存储器单元中的每个的数据状态。该设备还包括:确定电路,其被配置为确定两个存储器单元子组的状态变化的相对速率;以及识别电路,其被配置为基于状态变化的相对速率识别满足状态变化特性的存储器单元子组。
在该设备的一个实施方案中,所识别的满足状态变化特性的存储器单元子组可包括最快的存储器单元子组和最慢的存储器单元子组中的至少一个。在该设备的一个实施方案中,存储器单元中的每个的数据状态至少包括较低数据状态和较高数据状态。识别电路还被配置成识别以下各项中的至少一个:当状态变化电路将存储器单元中的至少一些的数据状态从较低数据状态改变为较高数据状态时最快的存储器单元子组,以及当状态变化电路将存储器单元中的至少一些的数据状态从较低数据状态改变为较高数据状态时最慢的存储器单元子组。
在该设备的一个实施方案中,该设备还包括计数电路,计数电路被配置为对满足编程阈值的存储器单元的总数进行计数并确定该总数是否满足数字阈值。识别电路还被配置为响应于满足编程阈值的存储器单元的总数大于数字阈值来识别满足状态变化特性的存储器单元子组。在设备的一个实施方案中,数字阈值包括存储器单元的预先确定的数量和百分比中的至少一个。
在设备的一个实施方案中,识别电路被配置为根据预先确定的计划表识别存储器单元子组。在该设备的一个实施方案中,所识别的存储器单元子组包括层组。
非易失性存储器存储系统的实施方案包括被组织成多个子组的存储器单元阵列,以及被配置为将一个或多个编程脉冲施加到存储器单元阵列以将存储器单元编程到目标数据状态的编程电路。非易失性存储器存储系统还包括:计数电路,该计数电路被配置为对满足阈值的第一子组的单元的第一数量进行计数并且对满足阈值的第二子组的单元的第二数量进行计数;以及识别电路,该识别电路被配置为响应于该第一数量的单元多于该第二数量的单元而将第一子组识别为最快的存储器单元子组并将第二子组识别为最慢的存储器单元子组。
在非易失性存储器存储系统的一个实施方案中,识别电路还被配置为识别至少一个中间编程速度存储器单元子组。
在非易失性存储器存储系统的一个实施方案中,存储器单元的目标数据状态包括较低数据状态和较高数据状态中的至少一个。识别电路还被配置为识别以下各项中的至少一个:当编程电路将存储器单元从较低数据状态编程到较高数据状态时最快的存储器单元子组,以及当编程电路将存储器单元从较低数据状态编程到较高数据状态时最慢的存储器单元子组。
在非易失性存储器存储系统的一个实施方案中,识别电路被配置为在每个编程程序期间识别最快存储器单元子组和最慢存储器单元子组。在非易失性存储器存储系统的实施方案中,识别电路被配置为根据预先确定的计划表识别最快存储器单元子组和最慢存储器单元子组。在非易失性存储器存储系统的一个实施方案中,最快存储器单元子组和最慢存储器单元子组包括层组。
在存储器设备的一个实施方案中,存储器设备被配置为在编程操作中将一个或多个编程脉冲施加到存储器单元子组。存储器设备还被配置为对满足编程阈值的存储器单元的总数进行计数,确定总数是否大于数字阈值,并且响应于确定总数大于数字阈值来确定每个子组内满足编程阈值的存储器单元的数量。存储器设备还被配置为基于每个子组内的所确定的存储器单元数量来识别最快编程子组和最慢编程子组中的至少一个,并且将所识别的子组用于编程操作的验证步骤。
在存储器设备的一个实施方案中,在编程操作中,将一个或多个编程脉冲施加到存储器单元子组改变存储器单元中的至少一些的数据状态,其中数据状态至少包括较低数据状态和较高数据状态。识别最快编程子组和最慢编程子组中的至少一个还包括以下各项中的至少一个:当编程操作将存储器单元中的至少一些的数据状态从较低数据状态改变为较高数据状态时,识别最快编程子组,以及当编程操作将存储器单元中的至少一些的数据状态从较低数据状态改变为较高数据状态时,识别最慢编程子组。
在存储器设备的一个实施方案中,存储器设备还包括基于每个子组内的确定的存储器单元数量来识别中间编程速度子组。在存储器设备的一个实施方案中,在每个编程操作期间执行对最快编程子组和最慢编程子组中的至少一个的识别。在存储器设备的一个实施方案中,根据预先确定的计划表来执行对最快编程子组和最慢编程子组中的至少一个的识别。在存储器设备的一个实施方案中,所识别的子组包括层组。
图14示出根据一个或多个具体实施的随时间推移存在于多级闪存存储器单元中的电压分布1400的示例。为了进行示意性的说明,简化了图14所示的电压分布1400。
在编程操作之后,将与电压分布1400相关联的一组存储器单元连接到字线,其中使用八个数据状态。为擦除(er)状态存储器单元提供vth分布1410。vth分布1420、1422、1424、1426、1428、1430和1432分别表示分配的数据状态a、b、c、d、e、f和g,当存储器单元的阈值电压(vth)分别超过验证电压vva、vvb、vvc、vvd、vve、vvf或vvg时,它们达到这些状态。读取电压vra、vrb、vrc、vrd、vre、vrf和vrg用于从具有该vth分布的一组单元中读取数据。
通过八个数据状态或每个单元三位,可以存储三页数据。用于a、b、c、d、e、f和g状态的位的示例编码分别是111、110、100、000、010、011、001和101。可以通过使用vra和vre的读取电压读取存储器单元来确定下页的数据。可以通过使用vrb、vrd和vrf的读取电压读取存储器单元来确定中间页的数据。可以通过使用vrc和vrg的读取电压读取存储器单元来确定上页的数据。
读取电压vra、vrb、vrc、vrd、vre、vrf和vrg定位在相邻中心电压之间(例如,定位在相邻中心电压之间的中间点处或附近),并且因此限定在电压范围1410、1420、1422、1424、1426、1428、1430和1432之间的阈值电压。在读取操作期间,施加读取电压vra、vrb、vrc、vrd、vre、vrf和vrg中的一个以使用比较过程确定单元电压。然而,由于各种因素,在读取mlc时接收的实际单元电压和/或单元电压可与对应于写入单元中的数据值的相应中心电压不同。例如,实际单元电压可在完全不同的电压范围内,这强烈地指示mlc正在存储与写入mlc的位元组不同的位元组。更常见地,实际单元电压可接近读取电压中的一个,使得难以确切地确定mlc存储两个相邻位元组中的哪一个。
图14例示对应于tlc的八个不同的存储器状态。然而,本发明所公开的主题可结合具有任何数量的数据状态诸如slc、mlc或qlc的存储器单元来实现。在一个实施方案中,“编程阈值”或“阈值”可包括最低校验或验证水平诸如a验证水平(例如,vva),而不考虑可存储在每个存储器单元中的状态的数量。如上所述,“编程阈值”或“阈值”可与编程或擦除校验电平(也可称为验证电平或校验电平)相关联或不相关联。
本公开可体现为其他具体形式而不背离其实质或基本特征。所述实施方案将在所有方面被认为仅仅是示例性的而非限制性的。因此,本公开的范围由所附权利要求而不是前述描述所指示。在权利要求书等同的含义和范围内的所有变化均包含在其范围内。