掌桥专利:专业的专利平台
掌桥专利
首页

存储器的编程方法、存储器装置及存储器系统

文献发布时间:2023-06-19 16:04:54



技术领域

本公开实施例涉及存储器领域,涉及但不限于一种存储器的编程方法、存储器装置及存储器系统。

背景技术

对高容量存储设备的不断增长的需求已经催生了使用各种多级NAND(与非)闪存存储器单元,其包括每单元可存储2比特数据的MLC(Multi Level Cell,多级单元闪存)、每单元可存储3比特数据的TLC(Triple Level Cell,三级单元闪存)、每单元可存储4比特数据的QLC(Quad Level Cell,四级单元闪存)和每单元存储更多比特数据的单元闪存。随着存储器单元中存储的比特数增加,编程所需要的时间也在增加,并且存储单元存储的比特数越多,相邻存储单元之间的读取裕度也变得更窄。因此,亟需一种对各种多级单元进行高效编程及编程后可以更准确读取的方法。

发明内容

有鉴于此,本公开实施例提供一种存储器的编程方法、存储器装置及存储器系统。

第一方面,本公开实施例提供一种存储器的编程方法,所述方法包括:

对待编程的各存储单元进行第一编程,使各存储单元被编程至N个不同的第一编程态;其中,N为大于1且小于M的正整数,M为所述待编程存储单元的目标编程态的总状态数;

对第i组所述第一编程态的存储单元进行第二编程,使第i组所述第一编程态的存储单元被编程至k个目标编程态;其中,至少两组所述第一编程态的存储单元进行所述第二编程后得到目标编程态的数量k值不同;k大于或等于1且小于N;i大于或等于1且小于或等于N。

在一些实施例中,所述第一编程对应有N个分组;所述N个分组是根据各个所述目标编程状态在编程过程中的耦合偏移量确定的,每个分组对应k个所述目标编程态。

在一些实施例中,所述对待编程的各存储单元进行第一编程,使各存储单元被编程至N个不同的第一编程态,包括:

按照所述分组,对各存储单元进行第一编程,使各存储单元被编程至N个所述分组对应的第一编程态。

在一些实施例中,所述耦合偏移量位于预设范围内的多个相邻的目标编程态被确定为同一分组。

在一些实施例中,所述耦合偏移量位于预设范围内的多个相邻的目标编程态被确定为同一分组,包括以下至少之一:

所述耦合偏移量小于第一预设阈值的多个相邻的目标编程态被确定为第一分组;

所述耦合偏移量大于或等于所述第一预设阈值且小于第二预设阈值的多个相邻的目标编程态被确定为第二分组;

所述耦合偏移量大于或等于所述第二预设阈值的多个相邻的目标编程态被确定为第三分组。

在一些实施例中,各所述目标编程态在编程过程中的所述耦合偏移量是基于各目标编程状态对相邻字线上的各存储单元进行耦合偏移量测试来获得的。

在一些实施例中,所述方法还包括:

在进行所述第一编程后,基于所述第一编程态的第一验证电压对各存储单元进行第一验证;其中,所述第一验证用于确定所述各存储单元是否被编程至对应的所述第一编程态。

在一些实施例中,所述对待编程的各存储单元进行第一编程,使各存储单元被编程至N个不同的第一编程态,包括:

对待编程的各存储单元进行多次所述第一编程;

其中,在每次所述第一编程后,根据各第一编程态对应的所述第一验证的验证结果,确定是否进行下次所述第一编程;

若所述验证结果表明所述第一编程态的验证通过,则停止所述第一编程;

若所述验证结果表明所述第一编程态的验证不通过,则继续进行下次所述第一编程,直至各存储单元被编程至N个不同的所述第一编程态。

在一些实施例中,所述N个不同第一编程态分别具有对应的N个不同的所述第一验证电压。

在一些实施例中,所述方法还包括:

在所述第二编程后,基于各所述目标编程态的第二验证电压对各存储单元进行第二验证;其中,所述第二验证用于确定所述各存储单元是否被编程至所述目标编程态;第i组所述第一编程态的所述k个目标编程态对应的所述第二验证电压不同。

在一些实施例中,第i组所述第一编程态对应的第一验证电压小于所述第二编程后的k个所述目标编程态的任一第二验证电压。

在一些实施例中,所述存储单元包括:具有8个状态的TLC或具有16个状态的QLC。

第二方面,本公开实施例提供一种存储器装置,所述存储器装置包括:

存储单元阵列,包括多个存储单元;

外围电路,其耦合到所述存储单元阵列,并被配置为:

对待编程的各存储单元进行第一编程,使各存储单元被编程至N个不同的第一编程态;其中,N为大于1且小于M的正整数,M为所述待编程存储单元的目标编程态的总状态数;

对第i组所述第一编程态的存储单元进行第二编程,使第i组所述第一编程态的存储单元被编程至k个目标编程态;其中,至少两组所述第一编程态的存储单元进行所述第二编程后得到目标编程态的数量k值不同;k大于或等于1且小于N;i大于或等于1且小于或等于N。

在一些实施例中,所述外围电路还被配置为:在进行所述第一编程后,基于所述第一编程态的第一验证电压对各存储单元进行第一验证;其中,所述第一验证用于确定所述各存储单元是否被编程至对应的所述第一编程态。

在一些实施例中,所述外围电路还被配置为:在所述第二编程后,基于各所述目标编程态的第二验证电压对各存储单元进行第二验证;其中,所述第二验证用于确定所述各存储单元是否被编程至所述目标编程态;第i组所述第一编程态的所述k个目标编程态对应的所述第二验证电压不同。

在一些实施例中,所述存储单元包括:具有8个状态的TLC或具有16个状态的QLC。

第三方面,本公开实施例提供一种存储器系统,所述存储器系统,包括:

如上述实施例任一所述的存储器装置;以及耦合到所述存储器装置并且被配置为控制所述存储器装置的存储控制器。

本公开实施例在第一编程中,将多个目标编程态不同的待编程存储单元编程到了同一个第一编程态,节约了第一编程的时间。并且,本公开实施例的编程方法在第一编程中无需限定编码的数据为格雷码,因此针对第二编程后的数据可以使用平衡格雷码对数据进行编程和/或读取操作,即在第二编程完毕后可以采用平衡格雷码对数据进行读取操作,故在第二遍编程后每个页面的读取裕量较大(因每个页面读取电压之间的电压差较大),具有较少的读取失败位计数,保证了数据的可读性和可靠性。

附图说明

图1A为本公开实施例提供的一种示例性系统的结构示意图;

图1B为本公开实施例提供的一种存储器卡的结构示意图;

图1C为本公开实施例提供的一种固态硬盘(SSD,Solid State Disk)的结构示意图;

图1D和图1E为本公开实施例提供的一种包括存储单元阵列和外围电路的存储器的结构示意图;

图2为本公开实施例提供的一种存储器编程方法的流程图;

图3为本公开实施例提供的另一种存储器编程方法的流程图;

图4为本公开实施例提供的对第i分组进行第二编程后的阈值电压变化图;

图5为本公开实施例提供的一种存储器装置的结构示意图;

图6为本公开实施例提供的一种存储器系统的结构示意图。

具体实施方式

为了便于理解本公开,下面将参照相关附图对本公开进行更全面的描述。附图中给出了本公开的首选实施例。但是,本公开可以以多种不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使本公开的公开内容更加透彻全面。

除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中在本公开的说明书中所使用的术语只是为了实现描述具体的实施例的目的,不是旨在限制本公开。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。

如图1A所示,本公开实施例示出了一种示例性系统10,该示例性系统10可以包括主机20和存储器系统30。其中,示例性系统10可以包括但不限于移动电话、台式计算机、膝上型计算机、平板计算机、车辆计算机、游戏控制台、打印机、定位设备、可穿戴电子设备、智能传感器、虚拟现实(VR)设备、增强现实(AR)设备或者其中具有存储器装置34的任何其他合适的电子设备;主机20可以是电子设备的处理器(例如,中央处理单元(CPU))或者片上系统(SoC)(例如,应用处理器(AP))。

在本公开实施例中,主机20可以被配置为将数据发送到存储器系统30或者从存储器系统30接收数据。这里,存储器系统30可以包括存储控制器32和一个或多个存储器装置34。其中,存储器装置34可以包括但不限于NAND闪存(NAND Flash Memory)、垂直NAND闪存(Vertical NAND Flash Memory)、NOR闪存(NOR Flash Memory)、动态随机存储器(DynamicRandom Access Memory,DRAM)、铁电随机存储器(Ferroelectric Random Access Memory,FRAM)、磁性随机存储器(Magnetoresistive Random Access Memory,MRAM)、相变随机存储器(Phase Change Random Access Memory,PCRAM)、阻变随机存储器(Resistive RandomAccess Memory,RRAM)、纳米随机存储器(Nano Random Access Memory,NRAM)等。

在本公开实施例中,存储控制器32可以耦合到存储器装置34和主机20,且用于控制存储器装置34。示例性地,存储控制器可以被设计为用于在低占空比环境中操作,如安全数字(SD)卡、紧凑型闪存(CF)卡、通用串行总线(USB)闪存驱动器或者用于在诸如个人计算机、数字相机、移动电话等电子设备中使用的其他介质。在一些实施例中,存储控制器还可以被设计为用于在高占空比环境中操作,如SSD或嵌入式多媒体卡(eMMC),并且SSD或eMMC还可以用作诸如智能电话、平板计算机、膝上型计算机等移动设备的数据储存器以及企业存储阵列。进一步地,存储控制器可以管理存储器装置中的数据,并且与主机通信。存储控制器可以被配置为控制存储器装置读取、擦除和编程等操作;还可以被配置为管理关于存储在或要存储在存储器装置中的数据的各种功能,包括但不限于坏块管理、垃圾收集、逻辑到物理地址转换、损耗均衡等;还可以被配置为处理关于从存储器装置读取的或者被写入到存储器装置中的数据的纠错码(ECC)。此外,存储控制器还可以执行任何其他合适的功能,例如格式化存储器装置,或者根据特定通信协议与外部设备(例如,图1A中主机20)通信。示例性地,存储控制器可以通过各种接口协议中的至少一种与外部设备通信,接口协议例如USB协议、MMC协议、外围部件互连(PCI)协议、PCI高速(PCI-E)协议、高级技术附件(ATA)协议、串行ATA协议、并行ATA协议、小型计算机小型接口(SCSI)协议、增强型小型磁盘接口(ESDI)协议、集成驱动电子设备(IDE)协议、Firewire协议等。

在本公开实施例中,存储控制器和一个或多个存储器装置可以集成到各种类型的存储设备中,例如,包括在相同封装(例如,通用闪存存储(UFS)封装或eMMC封装)中。也就是说,存储器系统可以实施并且封装到不同类型的终端电子产品中。如图1B所示,存储控制器32和单个存储器装置34可以集成到存储器卡40中。存储器卡40可以包括PC卡(PCMCIA,个人计算机存储器卡国际协会)、CF卡、智能媒体(SM)卡、存储器棒、多媒体卡(MMC、RS-MMC、MMCmicro)、SD卡(SD、miniSD、microSD、SDHC)、UFS等。存储器卡40还可以包括将存储器卡40与主机(例如,图1A中的主机20)耦合的存储器卡连接器42。在如图1C中所示的另一实施例中,存储控制器32和多个存储器装置34可以集成到SSD 50中。SSD 50还可以包括将SSD 50与主机(例如,图1A中的主机20)耦合的SSD连接器52。在一些实施方式中,SSD 50的存储容量和/或操作速度大于存储器卡40的存储容量和/或操作速度。

需要说明的是,本公开实施例涉及的存储器装置可以是半导体存储器装置,是用半导体集成电路工艺制成的存储数据信息的固态电子器件。示例性地,图1D为本公开实施例中一种可选的存储器装置60的示意图。其中,存储器装置60可以是图1A至图1C中的存储器装置34。如图1D所示,存储器装置60可以由存储单元阵列62和耦合到存储单元阵列62的外围电路64等组成。这里,存储单元阵列可以是NAND闪存存储单元阵列,其中,存储单元以NAND存储串66阵列的形式提供,每个NAND存储串66在衬底上方垂直地延伸。在一些实施例中,每个NAND存储串66可以包括串联耦合并且垂直地堆叠的多个存储单元。其中,每个存储单元以保持连续模拟值,例如,电压或电荷,其取决于在存储单元区域内捕获的电子的数量。另外,上述存储单元阵列62中的每个存储单元可以是包括浮栅晶体管的浮栅类型的存储单元,或者是包括电荷捕获晶体管的电荷捕获类型的存储单元。

在本公开实施例中,上述存储单元可以是具有两种可能的存储状态并且因此可以存储一位数据的单级存储单元(Single Level Cell,SLC)。例如,第一存储状态“0”可以对应于第一电压范围,并且第二存储状态“1”可以对应于第二电压范围。在另一些实施例中,每个存储单元是能够在多于四个的存储状态中存储多于单个位的数据的多级存储单元(Multi Level Cell,MLC)。例如,MLC可以每单元存储两位,每单元存储三位(又被称为三级存储单元(Triple Level Cell,TLC)),或者每单元存储四位(又被称为四级存储单元(QuadLevel Cell,QLC))。每个MLC可以被编程为采取可能的标称存储值的范围。示例性地,如果每个MLC存储两位数据,则MLC可以被编程为通过将三个可能的标称存储值中的一个写入到该存储单元而从擦除状态采取三个可能的编程级中的一个。其中,第四标称存储值可以用于擦除状态。

在本公开实施例中,上述外围电路可以通过位线(Bit Line,BL)、字线(WordLine,WL)、源极(Source Line)、源极选择栅(Source Select Gate,SSG)和漏极选择栅(Drain Select Gate,DSG)耦合到存储单元阵列。这里,外围电路可以包括任何合适的模拟、数字以及混合信号电路,以用于通过经由位线、字线、源极、SSG和DSG将电压信号和/或电流信号施加到每个目标存储单元以及从每个目标存储单元感测电压信号和/或电流信号来促进存储单元阵列的操作。此外。外围电路还可以包括使用金属-氧化物-半导体(MOS)技术形成的各种类型的外围电路。示例性地,如图1E所示。外围电路70包括页缓冲器(PageBuffer)/感测放大器71、列解码器/位线驱动器72、行解码器/字线驱动器73、电压发生器74、控制逻辑单元75、寄存器76、接口77和数据总线78。应当理解,上述外围电路70可以与图1D中的外围电路64相同,并且在另一些实施例中,外围电路70还可以包括图1E中未示出的附加外围电路。

由于对更高存储容量的需求,NAND闪存存储器件中的存储单元被配置为能够存储多于1位的存储器数据。nLC NAND闪存单元可以具有2

在2

在一组数的编码中,若任意两个相邻状态的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),因为任意相邻状态的代码只有一位二进制数不同,故在编程和/或读取操作中使用格雷码可以更容易地对编程和/或读取的数据进行纠错。

在一些实施例中,可以采用全序列编程的方法对各存储单元进行编程。其中,对于QLC NAND闪存存储器,可以采用16-16的两次遍历(two-pass)编程方案对存储单元进行编程和/或读取操作。表1示出了一种用于QLC NAND闪存存储器编程和/或读取的格雷码查找表。格雷码查找表描述了QLC NAND闪存单元的状态与逻辑页面之间的映射关系。在读取操作中,为了读取QLC NAND闪存单元的状态,使用16-16的两次遍历编程方案时,需要对LP进行4次读取,对MP进行4次读取,对UP进行4次读取以及对XP进行3次读取。

在读取逻辑页面数据的操作中,通过字线控制电路施加各种读取电压至存储器单元并且通过存储器单元的控制栅(control gate)是否导通和对应的运算式来判断逻辑页面数据的值。例如,当读取电压施加在存储器单元上,并使得控制栅导通时,则输出值“1”;当读取电压施加在存储器单元上,并使得控制栅未导通时,则输出值“0”;以LP页面为例,将其4次读取操作对应的4个输出值带入对应的运算式中,则可以判断出当前逻辑页面数据的值。可以理解,不同的格雷码查找表对应的运算式是不同的。

同一个逻辑页面中相邻位数据发生变化时,记为一次转变,对一个逻辑页面的所有转变进行转变计数可知LP的转变计数为4、MP的转变计数4、UP的转变计数为4以及XP的转变计数为3。当逻辑页面中的每两个相邻页面之间的转变计数之差不超过预定转变计数差时,例如预定转变计数差为1,是一种平衡格雷码。故表1所示格雷码查找表中使用的格雷码,是一种平衡格雷码。平衡格雷码可以实现更快的读取操作,是因为针对每个存储器页面的要区分的转变的最大数量被最小化。

例如,当使用如表1所示的“4443”的平衡格雷码时,读取操作针对每个存储器页面最多区分4个转变。而当格雷码查找表中使用的是非平衡格雷码时,因在某个页面的需要区分的转变计数过多,而相对于其他页面成为读取瓶颈。

以QLC NAND闪存存储器为例,对于16-16的两次遍历编程方案,其逻辑页面LP、MP、UP以及XP数据都将在第一遍(first pass)编程(粗略编程)以及第二遍(second pass)编程(精细编程)中使用。在第一遍编程中,首先将NAND闪存单元编程为较宽分布的16个电平,然后在第二遍编程中将其重新编程为较窄分布的16个电压电平。为了读取电平,在QLC NAND闪存单元上施加相应的读取电压以读取状态并确定状态。16-16的两次遍历编程方案在第一遍编程后是不可读取的并且16-16的两次遍历编程方案的编程速度较慢(第一遍编程中也需要编程至16个状态),但第二遍编程后读取裕量较大(每个页面读取电压之间的电压差较大),读取时间较短。

表1

在一些实施例中,采用多阶段编程的方法对各存储单元进行编程。

以QLC NAND闪存存储器为例,采用8-16的两次编程方案进行编程,所述8-16的两次编程方案即在第一遍编程时,将闪存单元编程至以TLC模式编程之后的电压分布,表2a示出了第一遍编程以TLC模式编程之后的状态与格雷码之间的映射关系。可以利用其逻辑页面LP、MP以及UP的数据进行编程。故在第一遍编程后,其电压分布是可以读取的。然后再进行第二遍编程,继续编程至以QLC模式编程之后的分布电压。表2b示出了第二遍编程以QLC模式编程之后的状态与格雷码之间的映射关系。使用这种编程模式,第二次编程后的XP的读取次数为8次,远大于LP的2次、MP的3次和UP的2次。这样会导致读取XP时的读取裕度过窄,从而易导致失败位计数过多以至于读取失败。

表2a

表2b

因此,本公开实施例提供一种存储器的编程方法,如图2所示,所述方法包括:

S101、对待编程的各存储单元进行第一编程,使各存储单元被编程至N个不同的第一编程态;其中,N为大于1且小于M的正整数,M为所述待编程存储单元的目标编程态的总状态数;

S102、对第i组所述第一编程态的存储单元进行第二编程,使第i组所述第一编程态的存储单元被编程至k个目标编程态;其中,至少两组所述第一编程态的存储单元进行所述第二编程后得到目标编程态的数量k值不同;k大于或等于1且小于N;i大于或等于1且小于或等于N。

本公开实施例所述的存储器包括但不限于非易失性存储器、易失性存储器和新型存储器。非易失性存储器包括但不限于带电可擦除可编程只读存储器(ElectricallyErasable Programmable read only memory,EEPROM)、可编程只读存储器(Programmableread only memory,PROM)、可擦除可编程只读存储器(Erasable Programmable read onlymemory,EPROM)以及闪存(FLASH MEMORY)等;其中,闪存包括但不限于或非型闪存(NORFLASH)和与非型闪存(NAND FLASH);易失性存储器包括但不限于静态随机存取存储器(Static Random Access Memory,SRAM)和动态随机存取存储器(Dynamic Random AccessMemory,DRAM)等。新型存储器包括但不限于3D Xpoint、磁性随机存储器(Magnetoresistive Random Access Memory,MRAM)、阻变式存储器(Resistive RandomAccess Memory,RRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)等。为例便于描述,本公开实施例均已3D NAND闪存存储器为例进行说明。

对nLC NAND而言,其待编程的存储单元的具有2

对第i组所述第一编程态的存储单元进行第二编程,使第i组所述第一编程态的存储单元被编程至k个目标编程态;其中,至少两组所述第一编程态的存储单元进行所述第二编程后得到目标编程态的数量k值不同;k大于或等于1且小于N;i大于或等于1且小于或等于N。

第一编程后,待编程单元被编程到了N个第一编程态;第i个第一编程态可以对应k个目标编程态,这里可以表示为k

再对N个不同的第一编程态进行第二编程,将第一编程态P1编程到k

本公开实施例在第一编程中,将多个目标编程态不同的待编程存储单元编程到了同一个第一编程态,节约了第一编程的时间。并且,本公开实施例的编程方法在第一编程中无需限定编码的数据为格雷码,因此针对第二编程后的数据可以使用平衡格雷码对数据进行编程和/或读取操作,即在第二编程完毕后可以采用平衡格雷码对数据进行读取操作,故在第二遍编程后每个页面的读取裕量较大(因每个页面读取电压之间的电压差较大),具有较少的读取失败位计数,保证了数据的可读性和可靠性。

在一些实施例中,所述第一编程对应有N个分组;所述N个分组是根据各个所述目标编程状态在编程过程中的耦合偏移量确定的,每个分组对应k

将存储单元的阈值电压受邻近存储单元阈值电压影响导致的存储单元阈值电压的变化定义为耦合偏移量。将存储单元的阈值电压减少定义为左偏移,存储单元的阈值电压增加定义为右偏移。在一些实施例中,还可以用耦合偏移率代替耦合偏移量。耦合偏移率被定义为耦合偏移量与目标状态阈值电压的比值。为了方便描述,在本公开中使用耦合偏移量进行描述,但是使用耦合偏移率也是可以的。对待编程的存储单元进行第一编程前,待编程的存储单元的耦合偏移量可以是已知的,并且可以是按照一定的规则进行了分组的,故此时的分组数N也是确定的。

分组是根据各个所述目标编程状态在编程过程中的耦合偏移量确定的,如分为N组。其中,第i分组对应k

在一些实施例中,如图3所示,所述对待编程的各存储单元进行第一编程,使各存储单元被编程至N个不同的第一编程态,包括:

S201、按照所述分组,对各存储单元进行第一编程,使各存储单元被编程至N个所述分组对应的第一编程态。

以存储器的存储单元为浮栅晶体管为例,浮栅晶体管的浮栅极材料是导体,而任何两个彼此绝缘且相隔很近的导体间都会构成一个电容器。因此,任何两个存储单元的浮栅极都构成一个电容器,一个浮栅极里面电荷的变化都会引起别的存储单元浮栅极电荷的变化。一个浮栅极与其附近的浮栅极之间,都存在耦合电容,这个电容大小与彼此之间距离成反比:距离越短,电容越大,彼此影响越大。耦合电容的存在导致编程之后存储单元的阈值电压会发生偏移,即产生耦合偏移量。耦合偏移量会导致阈值电压分布状态发生改变,这会导致读取操作时的读取失败。

如表3示出了在一个实施例中各编程状态的存储单元受邻近字线各状态的存储单元影响产生的耦合偏移量,其中的第一列中的p1至p7代表当前字线上的存储单元所处的不同状态,第一行代表邻近字线上的存储单元所处的不同状态。以TLC NAND闪存存储器为例,表3中示出的是当前字线上的存储单元处于不同状态时受相邻字线上的处于不同状态存储单元的耦合影响。可以看出,对处于一定状态的存储单元而言,一般来说相邻字线上存储单元的阈值电压越高,其受到耦合影响越大,即耦合偏移量或耦合偏移率越大。还可以看出,对同一字线上具有不同阈值电压的存储单元而言,一般来说阈值电压低的存储单元与相邻字线上存储单元的耦合影响大于阈值电压高的存储单元与相邻字线上存储单元的耦合影响。

表3

在对待编程单元进行编程前,可以根据各目标编程态之间的耦合偏移量的关系来对待编程单元进行分组,如分为N组。其中,第i分组包含k

分组后,对第1分组内的k

在本公开实施例中,根据目标编程态在编程过程中产生的耦合偏移量对存储单元进行分组,可以将耦合偏移量较低或耦合偏移量相似的分为同一组,将同一组内的待编程存储单元编程至同一第一编程态,不但节约了编程时间,也减少了存储单元编程后的耦合偏移量。

在一些实施例中,所述耦合偏移量位于预设范围内的多个相邻的目标编程态被确定为同一分组。

预设范围的划分规则可以是根据耦合偏移量的大小将目标编程态尽可能均匀的划分为N组,也可以是根据耦合偏移量对阈值电压低的一个或多个目标编程态划分为同一组,对阈值电压较高的一个或多个目标编程态划分为同一组,预设范围的划分还可以是其他用户自定义的规则。示例性地,可以将耦合偏移量处于同一预设范围内的一个或多个相邻的目标编程态划分为同一分组,并且可以具有多个预设范围。

处于同一分组的存储单元的目标编程态是相邻的,而相邻的目标编程态不一定分在同一组:若相邻的目标编程态的耦合偏移量差距较大,则无法分在同一组中,而是将相邻的目标编程态分在不同组,甚至当目标编程态的耦合偏移量超过一定的预设范围内时,可以对其进行第三分组。

如此,可以对各存储单元所要编程到的多个目标编程态进行灵活分组,并将同一分组的存储单元通过第一编程至同一第一编程态,然后再进行第二编程至对应的一个或多个目标编程态。这样,可以尽可能地减少同一分组中各目标编程态的耦合偏移量产生的影响,提升编程的准确性。

在一些实施例中,所述耦合偏移量位于预设范围内的多个相邻的目标编程态被确定为同一分组,包括以下至少之一:

所述耦合偏移量小于第一预设阈值的多个相邻的目标编程态被确定为第一分组;

所述耦合偏移量大于或等于所述第一预设阈值且小于第二预设阈值的多个相邻的目标编程态被确定为第二分组;

所述耦合偏移量大于或等于所述第二预设阈值的多个相邻的目标编程态被确定为第三分组。

需要说明的是,上述第一分组、第二分组以及第三分组为三种分组的类型,并不限于第一编程分为三个分组。也就是说,上述第一分组、第二分组以及第三分组都可以有一个或多个,也可以没有(如,第一编程对应的分组仅包括两个第二分组和两个第三分组)。

在本公开实施例中,第一预设阈值可以小于第二预设阈值。可以将小于第一预设阈值的所有多个相邻的目标编程态划分为第一分组。

将第一预设阈值与第二预设阈值之间的相邻目标编程态分为第二分组。

这里的第一预设阈值、第二预设阈值也仅为示例性的阈值,还可根据需求设定多个预设阈值,如第三预设阈值、第四预设阈值等。即,在实际应用中,分组的规则可以灵活设定。

示例性地,可以对第二分组进行更一步的划分,例如在第一预设阈值和第二预设阈值之间设置第三预设阈值,将处于第一预设阈值与第三预设阈值之间的相邻目标编程态划分为第四分组,将第三预设阈值和第二预设阈值之间的相邻目标编程态划分为第五分组;还可以在第一预设阈值和第二预设阈值之间设置更多的中间预设阈值,以划分更多的分组。

此外还可以将大于第二预设阈值的相邻目标编程态分为第三分组。

无论是第一分组、第二分组还是第三分组,分组内对应的目标编程态都可以是一个或者是多个。

以TLC NAND闪存存储器为例,表3示出了其存储单元与相邻字线的存储单元之间的耦合偏移量,存储单元处于p1至p7的编程态,相邻存储单元处于p0擦除态和p1至p7编程态。两者之间的耦合偏移量从1mV到183mV,将1mV到183mV至少分为两个以上的预设范围。

将存储单元与相邻存储单元的耦合偏移量在第一预设范围内的多个相邻的目标编程态分为第一分组。例如,设置第一预设范围为<40mV,存储单元和相邻存储单元的状态为p0、p1和p2的耦合偏移量均小于40mV;故可以将p1和p2分为同一组(其中,目标状态为擦除态的可以不进行编程)。

将存储单元与相邻存储单元的耦合偏移量在第二预设范围内的多个相邻的目标编程态作为第二分组。其中,第二预设范围可以是一个也可以是多个,一个或多个第二预设范围对应一个或多个第二分组。例如,将耦合偏移量在40-100mV的相邻目标编程态作为一个第二分组,即将p3、p4和p5作为一个第二分组。又如,将耦合偏移量在40-60mV的相邻的目标编程态作为一个第二分组,即将p3作为一个第二分组;将耦合偏移量在60-100mV的相邻的目标编程态作为另一个第二分组,即将p4和p5作为另一个第二分组。即第二预设范围有两个时,可以将相邻的目标编程态分为两个第二分组。

最后将耦合偏移量>100mV时作为第三分组,则可以将p6和p7分为第三分组。

以上只是预定范围的划分的一个实施例,实际使用时可以有多种划分方式。

在一些实施例中,各所述目标编程态在编程过程中的所述耦合偏移量是基于各目标编程状态对相邻字线上的各存储单元进行耦合偏移量测试来获得的。

由于耦合偏移量受到存储器工艺、存储器位数、材料等的影响,导致不同存储器的耦合偏移量可能不同。因此,可以通过存储器的出厂前的出厂测试确定存储器存储单元之间的耦合偏移量,并将其作为存储器的固定属性。

获取耦合偏移量的测试方法可以采用硅测试。在硅测试中,以QLC NAND闪存存储器为例,测试存储单元的状态分别为p1至p15,测试存储单元相邻字线上的状态分别为p0至p15,测试存储单元受相邻字线的存储单元的耦合影响后的阈值电压减去测试存储单元编程完毕后的阈值电压的差值,即为耦合偏移量。通过硅测试可以得到不同存储器的耦合偏移量,对确定的存储器的耦合偏移量可以设置多个预设范围的值对其进行分组划分,得到多个分组。例如划分为6组、8组、10组等。

然后对分布对划分为6组、8组、10组待编程单元进行Margin Loss(边缘损失)测试,将测试得到的损失值最少的分组,作为存储器的默认分组内置在存储器中。如此,在后续存储器使用过程中,可以依据上述分组进行第一编程,然后再进行第二编程以达到所需的目标编程态。

在一些实施例中,所述方法还包括:

在进行所述第一编程后,基于所述第一编程态的第一验证电压对各存储单元进行第一验证;其中,所述第一验证用于确定所述各存储单元是否被编程至对应的所述第一编程态。

在对待编程存储单元进行第一编程后,还可以使用第一验证电压来验证存储单元是否被编程到了对应的第一编程态。对被划分到同一组的待编程单元,使用同一个验证电压进行验证,即一个第一编程态对应一个第一验证电压。因存储单元在第一编程态后还需要经过第二编程才到达目标编程态,故验证第一编程态所使用的第一验证电压是小于目标编程态对应的目标验证电压的。

这样,对于每一分组的第一编程都仅采用一个第一验证电压进行验证,可以节省大量的验证时间,提升整体的编程速度。

在一些实施例中,所述对待编程的各存储单元进行第一编程,使各存储单元被编程至N个不同的第一编程态,包括:

对待编程的各存储单元进行多次所述第一编程;

其中,在每次所述第一编程后,根据各第一编程态对应的所述第一验证的验证结果,确定是否进行下次所述第一编程;

若所述验证结果表明所述第一编程态的验证通过,则停止所述第一编程;

若所述验证结果表明所述第一编程态的验证不通过,则继续进行下次所述第一编程,直至各存储单元被编程至N个不同的所述第一编程态。

第一编程可以采用ISPP(Incremental Step Pulse Program,增量步幅脉冲编程)的方式进行编程,在对NAND闪存进行编程时是以页(page)为单位,对于一页里面的待编程的各存储单元来说,先用一个具备起始电压的编程脉冲对存储单元进行编程;然后利用一个验证脉冲验证该存储单元是否被编写到了第一编程态;如果没有达到,则以一定的步进增加编程电压,并用该电压对该存储单元进行下一次的编程,再利用一个验证脉冲验证该存储单元是否被编写到了第一编程态,重复上述的过程,直到该存储单元被编写到了第一编程态;然后,该存储单元会被抑制,不再对其编程。当该页内所有的待编程的存储单元都被编写到第一编程态时,完整的第一编程过程结束。

本公开实施例中,在对各待编程存储单元分为N组后,对所述待编程存储单元进行第一编程,对分为同一组的待编程单元在第一编程后使用同一个验证电压对其对应的第一编程态进行第一验证,第一验证用于确定所述各存储单元是否被编程至对应的所述第一编程态,当验证通过后即停止对该组的第一编程。再对下一组待编程单元进行第一编程,直到N个组都被编程到第一编程态,完整的第一编程过程结束。

在一些实施例中,所述N个不同第一编程态分别具有对应的N个不同的所述第一验证电压。

可以理解的是,所述N个不同第一编程态分别具有对应的N个不同的所述第一验证电压。若其中有至少两个验证电压是相同的,则至少有两组待编程组被编程到了同一个第一编程态,而每组待编程组第一编程态都是不同的,与之相悖,故不存在至少两个验证电压是相同的,即有多少个第一编程态就有多少个对应的第一验证电压。

在一些实施例中,所述方法还包括:

在所述第二编程后,基于各所述目标编程态的第二验证电压对各存储单元进行第二验证;其中,所述第二验证用于确定所述各存储单元是否被编程至所述目标编程态;第i组所述第一编程态的所述k个目标编程态对应的所述第二验证电压不同。

第二编程也可以是采用ISPP的方法对处于第一编程态的存储单元进行的编程。其中,第i组所述第一编程态对应k个目标编程态,因此,第i组第一编程态进行第二编程后可以分别通过k个不同的第二验证电压进行第二验证。

在一些实施例中,第i组所述第一编程态对应的第一验证电压小于所述第二编程后的k个所述目标编程态的任一第二验证电压。

待编程的存储单元在第一编程态后还需要经过第二编程才到达目标编程态,故验证第一编程态所使用的第一验证电压是小于其对应目标编程态的任一第二验证电压的。图4为本公开实施例提供的对第i分组进行第二编程后的阈值电压变化图,以图4为例,第i分组在第一编程后,第i组中的4种待编程存储单元都被编程到了第一编程态Pi,第一编程态Pi对应的阈值电压为vth_C1,这个阈值电压比第i组中的4种待编程存储单元对应的目标阈值电压vth_F1、vth_F2、vth_F3以及vth_F4的任意一个都要低,通过第二编程将vth_C1分别编程提高至vth_F1、vth_F2、vth_F3以及vth_F4才完成本次编程。因为存储单元的阈值电压越低其对应的验证电压就越低,存储单元的阈值电压越高其对应的验证电压就越高,所以在第i组对应的第一编程态的阈值电压小于第i组第二编程后对应的目标阈值电压时,第i组所述第一编程态对应的第一验证电压小于所述第二编程后的k个所述目标编程态的任一第二验证电压。

值得注意的是,第一、第i组的在第一编程后的vth_C1与第二编程后的最低的阈值电压vth_F1相比是处于一个较低的水平。在精细编程即第二编程中可以采用多个位线电压和多个字线电压用于控制精细编程的幅度,故使得vth_C1处于较低的水平可以保证即使是幅度最低的精细编程,不会导致在一次幅度最低的第二编程后,vth_C1被过编程到超过vth_F1的范围。

第二、在第i组中,精细编程期间,即从第一编程态到目标编程态,存储单元阈值电压最低的阈值电压偏移量为Vth_F4-Vth_c1+Fine Vth width,其中Fine Vth width为精细编程后存储单元阈值电压宽度。

第三、从第一编程态到目标编程态增加的总的阈值电压偏移量,应该为字线与字线间(即存储单元与相邻存储单元之间)的耦合偏移量加上编程电压增加的阈值电压偏移量。

在一些实施例中,所述存储单元包括:具有8个状态的TLC或具有16个状态的QLC。

本公开中使用的存储单元可以是MLC、TLC或QLC,尤其适用于具有8个状态的TLC或具有16个状态的QLC,甚至还适用于五级及以上存储单元。

如图5所示,本公开实施例还提供一种存储器700,所述存储器包括:

存储单元阵列701,包括多个存储单元;

外围电路702,其耦合到所述存储单元阵列,并被配置为:

对待编程的各存储单元进行第一编程,使各存储单元被编程至N个不同的第一编程态;其中,N为大于1且小于M的正整数,M为所述待编程存储单元的目标编程态的总状态数;

对第i组所述第一编程态的存储单元进行第二编程,使第i组所述第一编程态的存储单元被编程至k个目标编程态;其中,至少两组所述第一编程态的存储单元进行所述第二编程后得到目标编程态的数量k值不同;k大于或等于1且小于N;i大于或等于1且小于或等于N。

在一些实施例中,所述存储器可以是NAND芯片等非易失性存储器产品。

在一些实施例中,所述外围电路702还被配置为:在进行所述第一编程后,基于所述第一编程态的第一验证电压对各存储单元进行第一验证;其中,所述第一验证用于确定所述各存储单元是否被编程至对应的所述第一编程态。

在一些实施例中,所述外围电路702还被配置为:在所述第二编程后,基于各所述目标编程态的第二验证电压对各存储单元进行第二验证;其中,所述第二验证用于确定所述各存储单元是否被编程至所述目标编程态;第i组所述第一编程态的所述k

在一些实施例中,所述存储单元包括:具有8个状态的TLC或具有16个状态的QLC。

如图6所示,本公开实施例提供一种存储器系统800,所述存储器系统800,包括:

如上述实施例所述的存储器装置700;以及耦合到所述存储器装置700并且被配置为控制所述存储器装置700的存储控制器801。

在一些实施例中,所述存储器系统800可以是SSD等产品,也可以是包含存储器装置700的电子设备,如计算机设备等。

本公开实施例还提供如下示例:

以QLC NAND闪存存储单元为例,QLC NAND具有16个状态,其中p0态为擦除态,p1至p15为编程态。

使用硅测试获得QLC NAND16个状态(或15个编程态)之间的耦合偏移量。

然后对耦合偏移量进行范围划分,将所述耦合偏移量位于预设范围内的多个相邻的目标编程态,确定为同一分组;预设范围的划分规则可以是对耦合偏移量尽可能均匀的划分为N组,也可以是对阈值电压低的组划分较低的耦合偏移量,对阈值电压较高的组划分较高的耦合偏移量,预设范围的划分还可以是其他用户自定义的规则。

在一实施例中,将待编程单元按照目标编程态p1至p15划分为9个分组(目标状态为擦除态的存储单元无需进行编程,故不对其进行分组),如表4所示:将待编程存储单元安装目标编程态分为九组,第一组包括p1、p2以及p3,第二组包括p4和p5,第三组包括p6和p7,第四组包括p8和p9,第五组包括p10和p11,第六组包括p12,第七组包括p13,第八组包括p14,第九组包括p15。

划分完9组后,对待编程的存储单元进行第一编程。第一组的目标编程态处于p1、p2以及p3,与之对应的待编程的存储单元都将在第一编程后编至第一编程态P1,即p1被编程到了第一编程态P1,p2也被编程到了第一编程态P1以及p3也被编程到了第一编程态P1。可以理解的是,p1、p2以及p3都被编程到了同一第一编程态P1,故对p1、p2以及p3使用的验证电压也是相同的,即同一组内的待编程单元在第一编程中使用的验证电压是相同的。并且第一编程态P1的阈值电压相对于目标编程态p1、p2以及p3的阈值电压为较低的电压。相对于16-16的两次遍历编程方案,以相同的初始电压编程至P1状态所需的时间要小于编程至一个略低于p1的阈值电压,更小于编程至略低于p2的阈值电压,远小于编程至略低于p3的阈值电压。故第一编程至P1态,与16-16的模糊-精细编程比可以节约编程时间。

剩余各组的编程方式与第一组相同,以此类推,都是将组内的待编程存储单元先第一编程至第一编程态。

然后再对第一编程态为P1至P9的存储单元进行第二编程,第二编程将第一编程态P1分别编程至目标编程态p1、p2以及p3。以此类推,直至所有的第一编程态都编程至了目标编程态。第二编程后存储单元的阈值电压和逻辑页面之间的映射的格雷码仍可以使用平衡格雷码,使得每个页面的读取裕度均匀,不至于在某个页面的读取裕度过窄而容易导致失败比特计数增多。

表4

在另一实施例中,将待编程单元按照目标编程态p1至p15划分为5个分组(目标状态为擦除态的存储单元无需进行编程,故不对其进行分组),如表5所示:将待编程存储单元安装目标编程态分为五组,第一组包括p1、p2、p3以及p4,第二组包括p5、p6、p7以及p8,第三组包括p9、p10和p11,第四组包括p12和p13,第五组包括p14和p15。

划分完5组后,对待编程的存储单元进行第一编程。第一组的目标编程态处于p1、p2、p3以及p4,与之对应的待编程的存储单元都将在第一编程后编至第一编程态P1,即p1被编程到了第一编程态P1,p2也被编程到了第一编程态P1、p3也被编程到了第一编程态P1以及p4也被编程到了第一编程态P1。可以理解的是,p1、p2、p3以及p4都被编程到了同一第一编程态P1,故对p1、p2、p3以及p4使用的验证电压也是相同的,并且第一编程态P1的阈值电压相对于目标编程态p1、p2、p3以及p4的阈值电压为较低的电压。相对于16-16的两次遍历的编程方案,以相同的初始电压编程至P1状态所需的时间要小于编程至一个略低于p1的阈值电压,更小于编程至略低于p2的阈值电压、略低于p3的阈值电压以及略低于p4的阈值电压。故第一编程至P1态,与16-16的模糊-精细编程比可以节约编程时间。

剩余各组的编程方式与第一组相同,以此类推,都是将组内的待编程存储单元先第一编程至第一编程态。

然后再对第一编程态为P1至P5的存储单元进行第二编程,第二编程将第一编程态P1分别编程至目标编程态p1、p2、p3以及p4。以此类推,直至所有的第一编程态都编程至了目标编程态。第二编程后存储单元的阈值电压和逻辑页面之间的映射的格雷码仍可以使用平衡格雷码,使得每个页面的读取裕度均匀,不至于在某个页面的读取裕度过窄而容易导致失败比特计数增多。

表5

本公开实施例可以具有如下有益效果的一个或多个:

1、本公开实施例通过在第一编程中将多个目标编程状态编程至一个状态,节约了第一遍编程的时间。

2、本公开实施例可以采用平衡格雷码与目标阈值电压做映射,使得其与8-16的两次编程方案比,具有更优的读取裕度,使得读取操作更准确。

3、本公开实施例也可以采用8-16的两次编程方案所用的格雷码,并且得到的读取裕度与8-16的两次编程方案是一样的。

4、本公开实施例可以不需要用户重新映射格雷码,可以直接使用。

5、本公开实施例的所有所需操作可以都在NAND管芯内完成,可以不借助NAND管芯之外的其他额外操作。

应理解,说明书通篇中提到的“一些实施例”、“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本公开的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

以上所述,仅为本公开的实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

技术分类

06120114690502