一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

存储装置及其操作方法与流程

2021-03-05 12:25:00 来源:中国专利 TAG:装置 引用 公开 申请 优先权

存储装置及其操作方法
[0001]
相关申请的交叉引用
[0002]
本申请要求于2019年9月3日提交的韩国专利申请号10-2019-0108641的优先权,其整体公开通过其整体通过引用并入本文。
技术领域
[0003]
本公开的各种实施例一般地涉及电子装置,并且更特别地涉及存储装置和操作该存储装置的方法。


背景技术:

[0004]
通常,存储装置是在诸如计算机或智能电话的主机装置的控制下存储数据的装置。存储装置可以包括被配置为存储数据的存储器装置和被配置为控制该存储器装置的存储器控制器。存储器装置主要分为易失性存储器装置和非易失性存储器装置。
[0005]
易失性存储器装置是仅当向其供电时才存储数据并且当关闭电源时丢失其中所存储的数据的存储器装置。易失性存储器装置的示例包括静态随机存取存储器(sram)和动态随机存取存储器(dram)。
[0006]
非易失性存储器装置是即使当关闭电源时也能够保持存储在其中的数据的存储器装置。非易失性存储器装置的示例包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)和闪存。


技术实现要素:

[0007]
本公开的各种实施例针对具有改进的编程失败检测性能的存储装置和操作该存储装置的方法。
[0008]
本公开的实施例可以提供一种存储器装置,该存储器装置包括存储器单元阵列、编程和验证电路、验证表存储部以及编程失败检测器。存储器单元阵列可以包括多个存储器单元。编程和验证电路可以执行将多个存储器单元中的每个存储器单元编程到多个状态中的对应目标状态的编程操作,并且生成包括分别与多个状态之中的一个或多个状态相对应的单元计数值的验证数据。验证表存储部可以针对每个编程脉冲计数存储参考数据,该参考数据包括分别与多个状态相对应的参考单元计数值。编程失败检测器可以基于验证数据和与当前编程脉冲计数相对应的参考数据之间的比较结果来检测编程操作是否已经失败,并且生成指示编程操作是否已经失败的编程失败信息。
[0009]
本公开的实施例可以提供一种操作包括多个存储器单元的存储器装置的方法。该方法可以包括:执行将多个存储器单元中的每个存储器单元编程到多个状态中的对应目标状态的编程操作;生成包括单元计数值的验证数据,所述单元计数值分别与所述多个状态中的一个或多个状态相对应;以及基于验证数据和参考数据之间的比较结果,检测编程操作是否已经失败。参考数据可以包括分别与多个状态相对应的并且基于编程脉冲计数被确定的参考单元计数值,该编程脉冲计数是编程脉冲已被施加到多个存储器单元的次数。
[0010]
本公开的实施例可以提供一种包括存储器装置和存储器控制器的存储装置。该存储器装置可以包括多个存储器块。存储器控制器可以控制存储器装置以执行将多个存储器块之中的所选择的择块中包括的多个存储器单元中的每个存储器单元编程到多个状态中的对应目标状态的编程操作。存储器装置可以基于分别与多个状态中的一个或多个状态相对应的单元计数值和参考单元计数值之间的比较结果,来检测编程操作已经失败,并且生成指示编程操作是否已经失败的编程失败信息。参考单元计数值可以基于编程脉冲计数来被确定,该编程脉冲计数是编程脉冲已被施加到多个存储器单元的次数。
[0011]
本公开的实施例可以提供一种操作包括多个存储器单元的存储器装置的方法。该方法可以包括:执行将存储器单元编程到预定状态中的对应目标状态的编程操作;计数由于编程操作而具有每个预定状态的存储器单元的数目;以及当该数目超出预定范围时,确定编程操作失败,其中预定范围取决于在编程操作期间施加到存储器单元的编程脉冲的数目。
附图说明
[0012]
图1是示出根据本公开的实施例的存储装置的图。
[0013]
图2是示出图1的存储器装置的配置的图。
[0014]
图3是示出图2的存储器单元阵列的图。
[0015]
图4是示出根据实施例的存储器单元的阈值电压分布和验证电压的图。
[0016]
图5是用于描述根据实施例的编程操作的图。
[0017]
图6是用于描述图1的存储装置的配置和操作的图。
[0018]
图7是用于描述根据实施例的参考数据和验证数据的图。
[0019]
图8是用于描述根据实施例的检测编程操作的失败的操作的图。
[0020]
图9是用于描述根据实施例的存储装置的操作的流程图。
[0021]
图10是用于描述根据实施例的编程操作的流程图。
[0022]
图11是用于描述图10的编程循环和验证结果异常确定操作的流程图。
[0023]
图12是用于描述图11的验证数据异常确定操作的流程图。
具体实施方式
[0024]
在下文中,将参考附图详细描述本公开的实施例。
[0025]
图1是示出根据本公开的实施例的存储装置50的图。
[0026]
参考图1,存储装置50可以包括存储器装置100和被配置为控制存储器装置100的操作的存储器控制器200。存储装置50可以是被配置为在诸如蜂窝电话、智能电话、mp3播放器、膝上型计算机、台式计算机、游戏机、电视、平板电脑或车载信息娱乐系统的主机的控制下存储数据的装置。
[0027]
取决于主机接口,存储装置50可以被制造为各种类型的存储装置中的任何一种,主机接口是用于与主机进行通信的通信系统。例如,数据存储装置50可以被配置作为诸如ssd、mmc、emmc、rs-mmc或micro-mmc类型多媒体卡、sd、mini-sd、micro-sd类型安全数字卡、通用串行总线(usb)存储装置、通用闪存(ufs)装置、个人计算机存储器卡国际协会(pcmcia)卡类型存储装置、外围部件互连(pci)卡类型存储装置、pci快速(pci-e)类型存储
装置、紧凑型闪存(cf)卡、智能媒体卡和记忆棒的各种类型的存储装置中的任何一种。
[0028]
存储装置50可以各种封装类型中的任何一种的形式来被制造。例如,存储装置50可以诸如叠层封装(pop)类型、系统级封装(sip)类型、片上系统(soc)类型、多芯片封装(mcp)类型、板上芯片(cob)类型、晶圆级制造封装(wfp)类型和晶圆级堆叠封装(wsp)类型的各种封装类型中的任何一种的形式来被制造。
[0029]
存储器装置100可以在其中存储数据。存储器装置100可以在存储器控制器200的控制下操作。存储器装置100可以包括存储器单元阵列,该存储器单元阵列包括被配置为在其中存储数据的多个存储器单元。
[0030]
存储器单元可以包括能够存储单个数据位的单级单元(slc)、能够存储两个数据位的多级单元(mlc)、能够存储三个数据位的三级单元(tlc)、或能够存储四个数据位的四级单元(qlc)。
[0031]
存储器单元阵列可以包括多个存储器块。每个存储器块可以包括多个存储器单元。每个存储器块可以包括多个页。在一个实施例中,每个页可以是在存储器装置100中存储数据的单位或从存储器装置100中读取所存储的数据的单位。
[0032]
每个存储器块可以是擦除数据的单位。在一个实施例中,存储器装置100可以是双倍数据速率同步动态随机存取存储器(ddr sdram)、低功率双倍数据速率4(lpddr4)sdram、图形双倍数据速率(gddr)sdram、低功率ddr(lpddr)、rambus动态随机存取存储器(rdram)、nand闪存、垂直nand闪存、nor闪存装置、电阻式随机存取存储器(rram)、相变存储器(pram)、磁阻随机存取存储器(mram)、铁电随机存取存储器(fram)或自旋转移力矩随机存取存储器(stt-ram)。在本说明书中,存储器装置100是nand闪存,然而,可以使用其他存储器装置。
[0033]
存储器装置100可以从存储器控制器200接收命令和地址,并且访问由该地址选择的存储器单元阵列的区域。换句话说,存储器装置100可以在由地址选择的区域上执行由命令指示的操作。例如,存储器装置100可以执行写入(编程)操作、读取操作和擦除操作。在编程操作期间,存储器装置100可以将数据编程到由地址选择的区域。在读取操作期间,存储器装置100可以从由地址选择的区域读取数据。在擦除操作期间,存储器装置100可以从由地址选择的区域擦除数据。
[0034]
在一个实施例中,存储器装置100可以包括编程和验证电路150、编程脉冲计数器160、验证表存储部170和编程失败检测器180。
[0035]
编程和验证电路150可以针对存储器单元执行编程操作。编程操作可以包括编程脉冲施加操作和编程验证操作。
[0036]
在一个实施例中,编程脉冲施加操作可以是向与所选择的存储器单元耦合的所选择的字线施加编程电压、从而将所选择的存储器单元编程到多个状态之中的目标状态的操作。编程验证操作可以是将与多个状态中的至少一个状态相对应的验证电压施加到所选择的字线并且从而验证所选择的存储器单元是否已经被编程到目标状态的操作。
[0037]
编程和验证电路150可以基于执行编程验证操作的结果来生成验证数据,该验证数据包括分别与多个状态相对应的单元计数值。在各种实施例中,编程和验证电路150可以生成包括与多个状态中的一个或多个状态相对应的单元计数值的验证数据。
[0038]
编程脉冲计数器160可以对在编程操作期间编程脉冲已被施加到所选择的字线的
次数进行计数。编程脉冲计数器160可以计算编程脉冲计数,该编程脉冲计数是编程脉冲已被施加到所选择的字线的次数。
[0039]
验证表存储部170可以存储用于确定编程操作是否异常的参考数据。验证表存储部170可以存储与每个编程脉冲计数相对应的参考数据。参考数据可以包括分别与多个状态相对应的参考单元计数值。
[0040]
编程失败检测器180可以基于验证数据与参考数据之间的比较结果来检测编程操作是否已经失败。
[0041]
详细地,编程失败检测器180可以根据在验证数据中包括的单元计数值与参考数据中包括的参考单元计数值之间的差值是否落入阈值范围内来确定编程操作是否已经失败。如果差值落入阈值范围内,则编程操作可能是正常的。如果差值在阈值范围之外,则编程操作可能是异常的。如果编程操作异常,则编程失败检测器180可以确定该编程操作已经失败。阈值范围可以被设置为参考单元计数值的预定百分比。备选地,阈值范围可以具有固定值。
[0042]
编程失败检测器180可以生成指示编程操作是否已经失败的编程失败信息。编程失败检测器180可以在存储器控制器200的控制下将编程失败信息提供到存储器控制器200。
[0043]
存储器控制器200可以控制存储装置50的整体操作。
[0044]
当对存储装置50供电时,存储器控制器200可以执行固件(fw)。在存储器装置100是闪存装置的情况下,存储器控制器200可以执行诸如闪存转换层(ftl)之类的固件,以用于控制在主机与存储器装置100之间的通信。
[0045]
在一个实施例中,存储器控制器200可以从主机接收数据和逻辑块地址(lba),并且将lba转换成物理块地址(pba),pba指示将存储数据的存储器单元的地址,该存储器单元包括在存储器装置100中。
[0046]
存储器控制器200可以响应于来自主机的请求来控制存储器装置100执行编程操作、读取操作或擦除操作。在编程操作期间,存储器控制器200可以向存储器装置100提供写入命令、pba和数据。在读取操作期间,存储器控制器200可以向存储器装置100提供读取命令和pba。在擦除操作期间,存储器控制器200可以向存储器装置100提供擦除命令和pba。
[0047]
在一个实施例中,存储器控制器200可以在没有来自主机的请求的情况下自主地生成命令、地址和数据,并且将它们传输到存储器装置100。例如,存储器控制器200可以向存储器装置100提供命令、地址和数据,以执行诸如用于损耗均衡的编程操作和用于垃圾收集的编程操作的后台操作。
[0048]
在一个实施例中,存储器控制器200可以控制至少两个或更多个存储器装置100。在这种情况下,存储器控制器200可以以交错方式控制存储器装置100,以便增强操作性能。交错方案可以是重叠至少两个或更多个存储器装置100的操作周期的操作方案。
[0049]
在一个实施例中,存储器控制器200可以包括编程操作控制器210。编程操作控制器210可以控制存储器装置100以在所选择的存储器块的所选择的存储器单元上执行编程操作。编程操作控制器210可以基于从存储器装置100接收的编程失败信息来确定编程操作是否已经失败。
[0050]
如果编程操作已经失败,则编程操作控制器210可以控制存储器装置100以将存储
在所选择的存储器块中的数据复制到另一存储器块。如果完成了复制操作,则编程操作控制器210可以将所选择的存储器块设置为坏块。
[0051]
根据坏块的发生时间,坏块可以被分类为在制造存储器装置100的过程期间发生的制造坏块(mbb)和在使用存储器块期间发生的生长坏块(gbb)。
[0052]
主机可以使用各种通信方法中的至少一种与存储装置50通信,诸如通用串行总线(usb)、串行at附件(sata)、串行附接scsi(sas)、高速芯片间(hsic)、小型计算机系统接口(scsi)、外围部件互连(pci)、pci快速(pcie)、非易失性存储器快速(nvme)、通用闪存(ufs)、安全数字(sd)、多媒体卡(mmc)、嵌入式mmc(emmc)、双列直插式存储器模块(dimm)、注册dimm(rdimm)和负载减少dimm(lrdimm)通信方法。
[0053]
图2是示出图1的存储器装置100的配置的图。
[0054]
参考图2,存储器装置100可以包括存储器单元阵列110、外围电路120和控制逻辑130。
[0055]
存储器单元阵列110可以包括多个存储器块blk1至blkz。多个存储器块blk1至blkz通过行线rl耦合至地址解码器121。存储器块blk1至blkz可以通过位线bl1至blm耦合至读/写电路123。存储器块blk1至blkz中的每个存储器块可以包括多个存储器单元。在一个实施例中,多个存储器单元可以是非易失性存储器单元。多个存储器单元之中的与同一字线耦合的存储器单元被限定为一个页。换句话说,存储器单元阵列110可以由多个物理页形成。在一个实施例中,存储器单元阵列110中包括的存储器块blk1至blkz中的每个存储器块可以包括多个虚设单元。一个或多个虚设单元可以串联耦合在漏极选择晶体管与存储器单元之间以及源极选择晶体管与存储器单元之间。
[0056]
存储器装置100的每个存储器单元可以由能够存储单个数据位的单级单元(slc)、能够存储两个数据位的多级单元(mlc)、能够存储三个数据位的三级单元(tlc)、或能够存储四个数据位的四级单元(qlc)形成。
[0057]
外围电路120可以包括地址解码器121、电压生成器122、读/写电路123、数据输入/输出电路124和感测电路125。
[0058]
外围电路120可以驱动存储器单元阵列110。例如,外围电路120可以驱动存储器单元阵列110以执行编程操作、读取操作或擦除操作。
[0059]
地址解码器121通过行线rl耦合至存储器单元阵列110。行线rl可以包括漏极选择线、字线、源极选择线和公共源极线。在一个实施例中,字线可以包括普通字线和虚设字线。在一个实施例中,行线rl可以进一步包括管道选择线。
[0060]
在一个实施例中,行线rl可以是局部线组中包括的局部线。每个局部线组可以与一个存储器块相对应。局部线组可以包括漏极选择线、局部字线和源极选择线。
[0061]
地址解码器121可以在控制逻辑130的控制下操作。地址解码器121可以从控制逻辑130接收地址addr。
[0062]
地址解码器121可以对接收到的地址addr之中的块地址进行解码。地址解码器121可以根据经解码的块地址选择存储器块blk1至blkz中的至少一个存储器块。地址解码器121可以对接收到的地址addr之中的行地址radd进行解码。地址解码器121可以通过根据经解码的行地址radd将从电压生成器122供应的电压施加到至少一条字线wl来选择所选择的存储器块的至少一条字线wl。
[0063]
在编程操作期间,地址解码器121可以将编程电压施加到所选择的字线,并且将具有比编程电压的水平低的水平的通过电压施加到未选择的字线。在编程验证操作期间,地址解码器121可以将验证电压施加到所选择的字线,并且将具有比验证电压的水平高的水平的验证通过电压施加到未选择的字线。
[0064]
在读取操作期间,地址解码器121可以将读取电压施加到所选择的字线,并且将具有比读取电压的水平高的水平的读取通过电压施加到未选择的字线。
[0065]
在一个实施例中,可以在存储器块的基础上执行存储器装置100的擦除操作。在擦除操作期间,将被输入到存储器装置100的地址addr包括块地址。地址解码器121可以对块地址进行解码,并且根据经解码的块地址选择对应的存储器块。在擦除操作期间,地址解码器121可以将接地电压施加到耦合至所选择的存储器块的字线。
[0066]
在本公开的实施例中,地址解码器121可以对所传输的地址addr之中的列地址进行解码。经解码的列地址可以被传输到读/写电路123。例如,地址解码器121可以包括诸如行解码器、列解码器和地址缓冲器的部件。
[0067]
电压生成器122可以使用供应到存储器装置100的外部电源电压来生成多个操作电压vop。电压生成器122可以在控制逻辑130的控制下进行操作。
[0068]
在一个实施例中,电压生成器122可以通过调节外部电源电压来生成内部电源电压。从电压生成器122生成的内部电源电压可以用作存储器装置100的操作电压。
[0069]
在一个实施例中,电压生成器122可以使用外部电源电压或内部电源电压生成多个操作电压vop。电压生成器122可以生成存储器装置100所需的各种电压。例如,电压生成器122可以生成多个擦除电压、多个编程电压、多个通过电压、多个选择读取电压以及多个未选择的读取电压。
[0070]
电压生成器122可以包括被配置为接收内部电源电压的多个泵浦电容器,以便生成具有各种电压水平的多个操作电压vop,并且可以通过在控制逻辑130的控制下选择性地使能多个泵浦电容器来生成多个操作电压vop。
[0071]
可以通过地址解码器121将生成的操作电压vop供应到存储器单元阵列110。
[0072]
读/写电路123可以包括第一页缓冲器pb1至第m页缓冲器pbm。第一页缓冲器pb1至第m页缓冲器pbm可以分别通过第一位线bl1至第m位线blm耦合至存储器单元阵列110。第一页缓冲器pb1至第m页缓冲器pbm可以在控制逻辑130的控制下操作。
[0073]
第一页缓冲器pb1至第m页缓冲器pbm可以与数据输入/输出电路124通信数据data。在编程操作期间,第一页缓冲器pb1至第m页缓冲器pbm可以通过数据输入/输出电路124和数据线dl接收将要存储的数据data。
[0074]
在编程操作期间,当编程电压被施加到所选择的字线时,第一页缓冲器pb1至第m页缓冲器pbm可以将通过数据输入/输出电路124接收的数据data通过位线bl1至blm传输到所选择的存储器单元。基于所传输的数据data,对所选择的页中的存储器单元进行编程。耦合至施加有编程使能电压(例如,接地电压)的位线的存储器单元可以具有增加的阈值电压。耦合至施加有编程禁止电压(例如,电源电压)的位线的存储器单元的阈值电压可以被保持。在编程验证操作期间,第一页缓冲器pb1至第m页缓冲器pbm可以通过位线bl1至blm从所选择的存储器单元读取数据data。
[0075]
在读取操作期间,读/写电路123可以通过位线bl从所选择的页的存储器单元读取
数据data,并且将所读取的数据data存储在第一页缓冲器pb1至第m页缓冲器pbm中。
[0076]
在擦除操作期间,读/写电路123可以使位线bl浮置。在一个实施例中,读/写电路123可以包括列选择电路。
[0077]
数据输入/输出电路124通过数据线dl耦合至第一页缓冲器pb1至第m页缓冲器pbm。数据输入/输出电路124可以在控制逻辑130的控制下操作。
[0078]
数据输入/输出电路124可以包括用于接收输入数据data的多个输入/输出缓冲器(未示出)。在编程操作期间,数据输入/输出电路124可以从外部控制器(未示出)接收将要存储的数据data。在读取操作期间,数据输入/输出电路124可以将从读/写电路123中包括的第一页缓冲器pb1至第m页缓冲器pbm接收的数据data输出至外部控制器。
[0079]
在读取操作或验证操作期间,感测电路125可以响应于由控制逻辑130生成的使能位信号vrybit而生成参考电流,比较从读/写电路123接收的感测电压vpb与由参考电流生成的参考电压,并且向控制逻辑130输出通过信号或失败信号。
[0080]
控制逻辑130可以耦合至地址解码器121、电压生成器122、读/写电路123、数据输入/输出电路124和感测电路125。控制逻辑130可以控制存储器装置100的整体操作。控制逻辑130可以响应于从外部装置传输的命令cmd而操作。
[0081]
控制电路130可以响应于命令cmd和地址add而生成各种信号,并且控制外围电路120。例如,控制逻辑130可以响应于命令cmd和地址add而生成操作信号opsig、行地址radd、读/写电路控制信号pbsignals和使能位vrybit。控制逻辑130可以将操作信号opsig输出到电压生成单元122,将行地址radd输出到地址解码器121,将读/写控制信号输出到读/写电路123,并且将使能位vrybit输出到感测电路125。此外,控制逻辑130可以响应于从感测电路125输出的通过信号pass或失败信号fail,确定目标存储器单元在验证操作期间是否已经验证通过或失败。
[0082]
在一个实施例中,外围电路120可以包括图1的编程和验证电路。控制逻辑130可以包括图1的编程脉冲计数器、验证表存储部和编程失败检测器。
[0083]
图3是示出图2的存储器单元阵列110的图。
[0084]
参考图3,第一存储器块blk1至第z存储器块blkz共同连接至第一位线bl1至第m位线blm。在图3中,仅示出了多个存储器块blk1至blkz之中的第一存储器块blk1的元件,并且省略了每个其他存储器块blk2至blkz的元件的图示。将理解的是,存储器块blk2至blkz中的每个存储器块具有与第一存储器块blk1相同的配置。
[0085]
存储器块blk1可以包括多个单元串cs1_1至cs1_m(m是正整数)。第一单元串cs1_1至第m单元串cs1_m分别耦合至第一位线bl1至第m位线blm。第一单元串cs1_1至第m单元串cs1_m中的每一个包括漏极选择晶体管dst、彼此串联耦合的多个存储器单元mc1至mcn(n为正整数)以及源极选择晶体管sst。
[0086]
第一单元串cs1_1至第m单元串cs1_m中的每一个中包括的漏极选择晶体管dst的栅极端子耦合至漏极选择线dsl1。第一单元串cs1_1至第m单元串cs1_m中的每一个中包括的第一存储器单元mc1至第n存储器单元mcn的栅极端子分别耦合至第一字线wl1至第n字线wln。第一单元串cs1_1至第m单元串cs1_m中的每一个中包括的源极选择晶体管sst的栅极端子耦合至源极选择线ssl1。
[0087]
将基于多个单元串cs1_1至cs1_m中的第一单元串cs1_1来描述每个单元串的配
置。将理解的是,其他单元串cs1_2至cs1_m中的每一个具有与第一单元串cs1_1相同的配置。
[0088]
第一单元串cs1_1中包括的漏极选择晶体管dst的漏极端子耦合至第一位线bl1。第一单元串cs1_1中包括的漏极选择晶体管dst的源极端子耦合至第一单元串cs1_1中包括的第一存储器单元mc1的漏极端子。第一存储器单元mc1至第n存储器单元mcn彼此串联耦合。第一单元串cs1_1中包括的源极选择晶体管sst的漏极端子耦合至第一单元串cs1_1中包括的第n存储器单元mcn的源极端子。第一单元串cs1_1中包括的源极选择晶体管sst的源极端子耦合至公共源极线csl。在一个实施例中,公共源极线csl可以共同地耦合至第一存储器块blk1至第z存储器块blkz。
[0089]
漏极选择线dsl1、第一字线wl1至第n字线wln和源极选择线ssl1被包括在图2的行线rl中。漏极选择线dsl1、第一字线wl1至第n字线wln以及源极选择线ssl1由地址解码器121控制。公共源极线csl由控制逻辑130控制。第一位线bl1至第m位线blm由读/写电路123控制。
[0090]
图4是示出根据实施例的存储器单元的阈值电压分布和验证电压的图。
[0091]
参考图4,每个存储器单元可以被编程到多个状态中的任何一个状态。可以基于存储在存储器单元中的数据位数来确定多个状态。
[0092]
将参考图4基于每个存储器单元是能够存储三个数据位的三级单元(tlc)来进行描述。然而,可以存储在每个存储器单元中的数据位数不限于本公开的该实施例的位数。
[0093]
每个存储器单元可以被编程到擦除状态e和第一编程状态p1至第七编程状态p7之中的目标状态。可以根据将被编程到存储器单元的数据来确定目标状态。
[0094]
与目标状态相对应的验证电压可以是用于验证存储器单元是否已被编程到目标状态的电压。具有高于与目标状态相对应的验证电压的阈值电压的存储器单元可以是已经通过验证的存储器单元。具有低于与目标状态相对应的验证电压的阈值电压的存储器单元可以是未通过验证的存储器单元。
[0095]
与目标状态相对应的验证电压可以是对应于与目标状态有关的阈值电压分布的左尾的电压。
[0096]
多个验证电压可以分别与多个状态相对应。例如,第一验证电压v1至第七验证电压v7可以分别与第一编程状态p1至第七编程状态p7相对应。
[0097]
在一个实施例中,与多个状态中的每个状态相对应的单元计数值可以是由多个验证电压限定的阈值电压部分中包括的存储器单元的数目。与任何一种状态相对应的单元计数值可以是由相邻的验证电压限定的阈值电压部分中包括的存储器单元的数目。
[0098]
例如,与第一编程状态p1相对应的单元计数值可以是由相邻验证电压v1和v2限定的阈值电压部分中包括的存储器单元的数目。
[0099]
在各种实施例中,与多个状态中的每个状态相对应的单元计数值可以是在与多个阈值电压分布中的对应一个阈值电压分布中包括的存储器单元的数目。例如,与第一编程状态p1相对应的单元计数值可以是与第一编程状态p1相对应的阈值电压分布中包括的存储器单元的数目。
[0100]
图5是用于描述根据实施例的编程操作的图。
[0101]
参考图5,编程操作可以包括多个编程循环pl1至pln(n为1或更大的自然数)。存储
器装置可以执行多个编程循环以对所选择的存储器单元进行编程,使得存储器单元具有多个编程状态之中的目标状态。
[0102]
多个编程循环中的每一个可以包括编程电压施加步骤(编程步骤)和验证步骤(验证步骤)。
[0103]
在编程电压施加步骤,可以执行向与所选择的存储器单元耦合的所选择的字线施加编程电压的编程脉冲施加操作。可以通过编程脉冲施加操作将所选择的存储器单元中的每一个编程到多个状态中的目标状态。可以根据将要编程到所选择的存储器单元的数据来确定目标状态。
[0104]
在验证步骤,可以执行通过将验证电压施加到所选择的字线来确定所选择的存储器单元是否已经被编程的编程验证操作。
[0105]
在一个实施例中,可以根据增量步进脉冲编程(ispp)方案来确定编程电压。换句话说,随着编程循环重复,编程电压的水平可以逐步增加或减少预定电压增量。可以在存储器控制器的控制下以各种方式确定在每个编程循环中将要使用的编程电压的施加次数、电压水平、电压施加时间等。
[0106]
通过电压可以被施加到未选择的字线,该未选择的字线是除了所选择的字线之外的字线。在一个实施例中,可以将具有相同水平的通过电压施加到未选择的字线。在一个实施例中,通过电压的水平可以根据字线的位置而变化。
[0107]
接地电压可以作为编程使能电压被施加到与将被编程的存储器单元耦合的所选择的位线。编程禁止电压可以被施加到未选择的位线,未选择的位线是与除了将被编程的存储器单元以外的存储器单元耦合的位线。
[0108]
在编程验证步骤,存储器装置可以将验证电压施加到所选择的字线,并且将验证通过电压施加到未选择的字线。存储器装置可以检测通过位线输出的电压或电流,该位线与耦合至所选择的字线的存储器单元分别耦合,并且可以基于检测结果来确定验证步骤是否已经通过或失败。
[0109]
在编程电压施加步骤,可以将所选择的存储器单元中的每一个编程到第一状态至第m状态中的任何一个状态(m是1或更大的自然数)。
[0110]
在验证步骤,可以执行针对第一状态至第m状态中的至少一个状态的编程验证操作。例如,如果通过与第k状态相对应的验证电压将所选择的存储器单元之中要被编程到第k状态(k是从1到m的自然数)的存储器单元确定为关闭单元,则针对第k状态的编程验证操作可以通过。
[0111]
在图5中,如果所选择的存储器单元中的每一个是能够存储两个数据位的多级单元(mlc),则所选择的存储器单元中的每一个可以被编程到擦除状态以及第一编程状态至第三编程状态之中的任何一个状态。可以被存储在每个存储器单元中的数据位数不限于本公开的该实施例的位数。
[0112]
当执行第一编程循环pl1时,施加第一编程电压vpgm1,然后依次施加第一验证电压v_vfy1至第三验证电压v_vfy3,以验证存储器单元的编程状态。在此,第一验证电压v_vfy1可以用于对其目标状态为第一编程状态的存储器单元执行验证操作。第二验证电压v_vfy2可以用于对其目标状态为第二编程状态的存储器单元执行验证操作。第三验证电压v_vfy3可以用于对其目标状态为第三编程状态的存储器单元执行验证操作。验证电压的数目
不限于本实施例的数目。
[0113]
已通过由对应的验证电压v_vfy1至v_vfy3的验证操作的存储器单元被确定为具有对应的目标状态,并且此后可以在第二编程循环pl2中被禁止编程。编程禁止电压可以被施加到与编程禁止的存储器单元耦合的位线。在第二编程循环pl2期间,可以将比第一编程电压vpgm1高单位电压

vpgm的第二编程电压vpgm2施加到所选择的字线。
[0114]
随后,以与第一编程循环pl1的验证操作相同的方式执行验证操作。例如,“验证通过”指示通过对应的验证电压存储器单元被确定为关闭单元。
[0115]
如上所述,当存储器装置对多级单元(mlc)进行编程时,存储器装置可以使用第一验证电压v_vfy1至第三验证电压v_vfy3来验证其目标状态是相应的对应编程状态的存储器单元。
[0116]
在各种实施例中,如果在预定数目的编程循环内未完成编程操作,则编程操作可以被确定为失败。如果在预定数目的编程循环内完成编程操作,则编程操作可以通过。可以根据对所选择的存储器单元的所有编程验证操作是否已通过来确定编程操作的完成。如果所有编程验证操作均通过,则可以不执行随后的编程循环。
[0117]
在一个实施例中,编程循环计数可以是在编程操作期间执行的编程循环的数目。在各种实施例中,编程循环计数可以是编程脉冲计数,该编程脉冲计数是在编程操作期间编程脉冲已被施加到所选择的字线的次数。
[0118]
在一个实施例中,如果存储器单元中的每一个是参考图4描述的三级单元,则在验证步骤可以使用分别与第一编程状态p1至第七编程状态p7相对应的多个验证电压v1至v7之中的至少一个或多个验证电压来执行编程验证操作。换句话说,在每个编程循环的验证步骤,可以执行针对一个或多个状态的编程验证操作。
[0119]
图6是用于描述图1的存储装置的配置和操作的图。
[0120]
参考图6,该存储装置可以包括存储器装置100和存储器控制器200。
[0121]
在一个实施例中,存储器装置100可以包括编程操作处理器140、编程和验证电路150、编程脉冲计数器160、验证表存储部170和编程失败检测器180。
[0122]
编程操作处理器140可以响应于从编程操作控制器210接收的编程命令来生成编程控制信号和验证控制信号。编程操作处理器140可以向编程和验证电路150提供编程控制信号和验证控制信号。
[0123]
编程操作处理器140可以使用编程控制信号来控制编程和验证电路150以执行编程操作。编程操作处理器140可以使用验证控制信号来控制编程和验证电路150以执行编程验证操作。
[0124]
在每个编程循环期间,编程操作处理器140可以从编程和验证电路150接收作为执行编程验证操作的结果的验证数据。编程操作处理器140可以基于接收到的验证数据来确定是否执行参考图5描述的后续编程循环,并且可以确定后续编程循环的编程电压和验证电压。
[0125]
在一个实施例中,编程操作处理器140可以被包括在参考图2描述的控制逻辑130中。
[0126]
编程和验证电路150可以响应于编程控制信号来执行将所选择的存储器单元编程到多个状态中的目标状态的编程操作。编程和验证电路150可以响应于验证控制信号而执
行验证所选择的存储器单元是否已经被编程到目标状态的编程验证操作。
[0127]
编程和验证电路150可以生成指示执行编程验证操作的结果的验证数据。验证数据可以包括与多个状态之中的一个或多个状态分别相对应的单元计数值。在各种实施例中,验证数据可以包括存储器单元的数目,该存储器单元通过与多个状态分别相对应的多个验证电压之中的至少一个或多个验证电压被确定为开启单元。
[0128]
编程和验证电路150可以向编程操作处理器140和编程失败检测器180提供验证数据。
[0129]
编程脉冲计数器160可以对在编程操作期间编程脉冲已被施加到与所选择的存储器单元耦合的所选择的字线的次数进行计数。编程脉冲计数器160可以计算编程脉冲计数,该编程脉冲计数是编程脉冲已被施加到所选择的字线的次数,并且编程脉冲计数器160向编程失败检测器180提供编程脉冲计数。
[0130]
验证表存储部170可以存储与每个编程脉冲计数相对应的参考数据。验证表存储部170可以向编程失败检测器180提供参考数据。参考数据可以包括分别对应于多个状态并且用于确定编程操作是否异常的参考单元计数值。
[0131]
编程失败检测器180可以基于验证数据和参考数据之间的比较结果来检测编程操作是否已经失败。
[0132]
详细地,编程失败检测器180可以将参考单元计数值与验证数据中包括的分别与一种或多种状态相对应的单元计数值进行比较。编程失败检测器180可以根据单元计数值和参考单元计数值之间的差值是否在阈值范围内来确定编程操作是否已经失败。
[0133]
如果差值在阈值范围内,则编程失败检测器180可以确定编程操作是正常的。如果差值在阈值范围之外,则编程失败检测器180可以确定编程操作是异常的。如果确定编程操作异常,则可以确定编程操作失败。阈值范围可以被设置为参考单元计数值的预定百分比。备选地,阈值范围可以具有固定值。
[0134]
编程失败检测器180可以生成指示编程操作是否已经失败的编程失败信息。编程失败检测器180可以响应于从编程操作控制器210接收到的状态读取命令而向编程操作控制器210提供状态读取响应。状态读取响应可以包括编程失败信息。
[0135]
在一个实施例中,存储器控制器200可以包括编程操作控制器210。
[0136]
编程操作控制器210可以向编程操作处理器140提供用于对所选择的存储器块的所选择的存储器单元执行编程操作的编程命令。编程操作控制器210可以向编程失败检测器180提供用于确定编程操作是否已经失败的状态读取命令。编程操作控制器210可以基于从编程失败检测器180接收到的状态读取响应中包括的编程失败信息来确定编程操作是否已经失败。
[0137]
如果编程操作已失败,则编程操作控制器210可以控制存储器装置100将所选择的存储器块中存储的数据复制到另一存储器块。编程操作控制器210可以向编程操作处理器140提供用于将从所选择的存储器块读取的数据存储到另一存储器块的编程命令。如果已经完成将所选择的存储器块中存储的数据复制到另一存储器块的操作,则编程操作控制器210可以将所选择的存储器块设置为坏块。
[0138]
图7是用于描述根据实施例的参考数据和验证数据的图。
[0139]
参考图7,验证表存储部可以存储验证表。验证表可以包括与每个编程脉冲计数相
对应的参考数据。
[0140]
参考数据可以包括分别与多个状态相对应的参考单元计数值。参考图4和图5,参考单元计数值可以是基于编程脉冲已被施加的次数、编程脉冲的水平、编程脉冲的增量、与在编程操作之前的擦除状态相对应的初始阈值电压分布的宽度等的预测值。
[0141]
验证数据可以包括实际单元计数值,该实际单元计数值分别对应于多个状态并且作为执行编程验证操作的结果而获得。
[0142]
参考图7,将基于每个所选择的存储器单元是tlc并且所选择的存储器单元的数目是8000进行描述。因此,在没有施加编程脉冲的初始状态的情况下,编程脉冲计数可以是0(未示出),并且与擦除状态e相对应的参考单元计数值可以是8000。每个存储器单元中存储的数据位数和所选择的存储器单元的数目不限于本实施例的那些。
[0143]
可以基于参考数据与验证数据之间的比较结果来确定分别与多个状态e和p1至p7相对应的单元计数值是否正常。
[0144]
例如,当编程脉冲计数为2时,如图7所示,分别与多个状态e和p1至p7相对应的参考单元计数值可以分别为1000、1500、4500、800、180、20、0和0。如图7所示,验证数据中包括的分别与多个状态e和p1至p7相对应的单元计数值可以分别是1000、1500、4400、850、190、20、40和0。
[0145]
可以根据与相应状态相对应的参考单元计数值和单元计数值之间的差值是否在阈值范围内,来确定单元计数值是否正常。阈值范围可以被设置为参考单元计数值的预定百分比或固定值。在图7中,将基于阈值范围是参考单元计数值的10%来进行描述。在此,预定比率可以被设置为各种值。
[0146]
与擦除状态e相对应的参考单元计数值是1000,并且阈值范围是100,其是1000的10%。因此,如果单元计数值的范围是900至1100,则单元计数值可以被确定为正常。由于单元计数值为1000,因此是正常的。
[0147]
与第一编程状态p1相对应的参考单元计数值是1500,并且阈值范围是150,其是1500的10%。因此,如果单元计数值的范围是1350至1650,则单元计数值可以被确定为正常。由于单元计数值为1500,因此是正常的。
[0148]
与第二编程状态p2相对应的参考单元计数值是4500,并且阈值范围是450,其是4500的10%。因此,如果单元计数值的范围是4050至4950,则单元计数值可以被确定为正常。由于单元计数值为4400,因此是正常的。
[0149]
与第三编程状态p3相对应的参考单元计数值是800,并且阈值范围是80,其是800的10%。因此,如果单元计数值的范围是720至880,则单元计数值可以被确定为正常。由于单元计数值为850,因此是正常的。
[0150]
与第四编程状态p4相对应的参考单元计数值是180,并且阈值范围是18,其是180的10%。因此,如果单元计数值的范围是162至198,则单元计数值可以被确定为正常。由于单元计数值为190,因此是正常的。
[0151]
与第五编程状态p5相对应的参考单元计数值是20,并且阈值范围是2,其是20的10%。因此,如果单元计数值的范围是18至22,则单元计数值可以被确定为正常。由于单元计数值为20,因此是正常的。
[0152]
与第六编程状态p6和第七编程状态p7相对应的参考单元计数值中的每一个值可
以是0。由于与第六编程状态p6相对应的单元计数值是40,因此是异常的。
[0153]
由于作为参考数据和验证数据之间的比较的结果,与第六编程状态p6相对应的单元计数值异常,因此可以将第六编程状态p6确定为异常编程状态。因此,编程操作可以被确定为失败。
[0154]
在各种实施例中,可以确定分别与多个状态e和p1至p7中的一个或多个状态相对应的单元计数值是否正常。如果与一个或多个状态中的任何一个状态相对应的单元计数值异常,则编程操作可以被确定为已失败。
[0155]
图8是用于描述根据实施例的检测编程操作的失败的操作的图。
[0156]
图8示出了根据编程操作的进行过程来形成所选择的存储器单元的阈值电压分布的过程。
[0157]
例如,当编程脉冲计数为k1(k1为1或更大的自然数)时,可以完成与擦除状态e相对应的阈值电压分布的形成。可以形成与第一编程状态p1至第七编程状态p7相对应的阈值电压分布。
[0158]
当编程脉冲计数为k2(k2是大于k1的自然数)时,可以完成与擦除状态e和第一编程状态p1相对应的阈值电压分布的形成。可以形成与第二编程状态p2至第七编程状态p7相对应的阈值电压分布。
[0159]
当编程脉冲计数为k3(k3是大于k2的自然数)时,可以完成与擦除状态e和第一编程状态p1至第三编程状态p3相对应的阈值电压分布的形成。可以形成与第四编程状态p4至第七编程状态p7相对应的阈值电压分布。
[0160]
当编程脉冲计数为k4(k4是大于k3的自然数)时,可以完成与擦除状态e和第一编程状态p1至第七编程状态p7相对应的阈值电压分布的形成。换句话说,可以完成所有编程状态的阈值电压分布的形成。
[0161]
可以根据编程脉冲计数来改变与每个状态相对应的参考单元计数值。例如,如果所选择的存储器单元的数目是8000,则与在整个编程操作已经完成之后的每个状态相对应的单元计数值可以是1000。在这种情况下,当编程脉冲计数是k2时,与第六编程状态p6'相对应的参考单元计数值可以为0。当编程脉冲计数为k4时,与第六编程状态p6相对应的参考单元计数值可以为1000。
[0162]
当编程脉冲计数为k2时,如果与第六编程状态p6'相对应的单元计数值为40,则单元计数值可能异常。这可能意味着,与编程操作已经进行的程度相比,将被编程到第六编程状态p6'的单元以较低的编程脉冲计数被异常地编程。当编程脉冲计数为k4时,如果与第六编程状态p6相对应的单元计数值是1000,则单元计数值可以是正常的。
[0163]
在这种情况下,如果在已经完成整个编程操作之后确定与每个状态相对应的单元计数值是否正常,则可能不会检测到在编程操作期间已经发生的异常编程状态。这样的异常编程状态可能由诸如存储器单元的特性以及字线或位线的缺陷的各种原因引起。
[0164]
在本公开的实施例中,可以确定与针对每个编程脉冲计数的每个状态相对应的单元计数值是否正常。换句话说,可以容易地检测在编程操作期间已经发生的异常编程状态。
[0165]
在各种实施例中,可以确定是否发生了异常编程状态,在该异常编程状态中,以与编程操作已经进行的程度相比更低或更高的编程脉冲计数,存储器单元被异常编程。如果发生异常的编程状态,则编程操作可以被确定为失败。
[0166]
图9是用于描述根据实施例的存储装置的操作的流程图。
[0167]
参考图9,在步骤s901,存储装置可以对所选择的块执行编程操作。
[0168]
在步骤s903,存储装置可以确定编程操作是否已经失败。如果作为确定的结果编程操作已失败,则过程进行到步骤s905。如果编程操作已通过,则存储装置终止该操作。
[0169]
可以基于根据每个编程脉冲计数的验证数据和参考数据之间的比较结果来确定编程操作的失败或通过。参考数据可以包括分别与多个状态相对应的参考单元计数值。验证数据可以包括分别与多个状态之中的一个或多个状态相对应的单元计数值。
[0170]
在步骤s905,存储装置可以将存储在所选择的块中的数据复制到另一块。
[0171]
在步骤s907中,存储装置可以将所选择的块设置为坏块。
[0172]
图10是用于描述根据实施例的编程操作的流程图。
[0173]
参考图10,在步骤s1001,编程循环计数可以被设置为0。编程循环计数可以是编程脉冲已被施加到与所选择的存储器单元耦合的所选择的字线的次数。
[0174]
在步骤s1003,可以执行编程循环,并且可以增加编程循环计数。编程循环可以包括编程电压施加步骤和验证步骤,如参考图5描述。在验证步骤,可以执行使用分别与多个状态相对应的多个验证电压之中的至少一个或多个验证电压的编程验证操作。
[0175]
在步骤s1005,可以根据编程验证操作的结果确定编程操作是否异常。如果编程操作异常,则过程进行到步骤s1013。如果编程操作正常,则过程进行到步骤s1007。
[0176]
在步骤s1007,可以确定针对所有编程状态的编程操作是否已经通过。作为确定的结果,如果针对所有编程状态的编程操作已经通过,则过程进行到步骤s1009。如果针对至少一个编程状态的编程操作尚未通过,则过程进行到步骤s1011。
[0177]
在步骤s1009,编程操作可以被确定为已通过。
[0178]
在步骤s1011,可以确定编程循环计数是否超过预设的最大编程循环计数。作为确定的结果,如果编程循环计数超过最大编程循环计数,则过程进行到步骤s1013。如果编程循环计数小于或等于最大编程循环计数,则过程进行到步骤s1015。
[0179]
在步骤s1013,编程操作可以被确定为已失败。
[0180]
在步骤s1015,可以增加在随后的编程循环期间施加到所选择的字线的编程电压。详细地,可以根据参考图5描述的增量步进脉冲编程(ispp)方案来增加编程电压。
[0181]
图11是用于描述图10的编程循环和验证结果异常确定操作的流程图。
[0182]
参考图11,在步骤s1101,可以执行编程脉冲施加操作。在步骤s1103,可以执行编程验证操作。
[0183]
在步骤s1105,可以基于分别与相应状态相对应的单元计数值来生成验证数据。验证数据可以包括分别与多个状态相对应的单元计数值,所选择的存储器单元将被编程到的该多个状态。备选地,验证数据可以包括分别与多个状态之中的一个或更多个状态相对应的单元计数值。
[0184]
在步骤s1107,可以确定验证数据是否异常。如果作为确定的结果验证数据异常,则过程进行到步骤s1109。如果不是,则过程结束。
[0185]
可以基于验证数据与参考数据之间的比较结果来确定验证数据的异常。参考数据可以包括根据编程脉冲计数分别与多个状态相对应的参考单元计数值。
[0186]
在步骤s1109,编程操作可以被确定为已失败。
[0187]
图12是用于描述图11的验证数据异常确定操作的流程图。
[0188]
参考图12,在步骤s1201,可以生成包括分别与相应状态相对应的单元计数值的验证数据。
[0189]
在步骤s1203,可以基于编程脉冲计数来确定包括分别与多个状态相对应的参考单元计数值的参考数据。
[0190]
在步骤s1205,可以计算与相应状态相对应的单元计数值与参考单元计数值之间的差值。
[0191]
在步骤s1207,可以确定每个差值是否在阈值范围内。阈值范围可以被设置为对应的参考单元计数值的预定百分比或固定值。
[0192]
作为确定的结果,如果每个差值都在阈值范围内,则过程结束。如果差值在阈值范围之外,则过程进行到步骤s1209。
[0193]
在步骤s1209,编程操作可以被确定为已失败。
[0194]
尽管已经出于说明性目的描述了本公开的示例性实施例,但是本领域技术人员将理解,在不脱离本公开的范围和精神的情况下,各种修改、添加和替换是可能的。因此,以上和在附图中公开的实施例应该仅以描述性意义来考虑,而不是用于限制技术范围。本公开的技术范围不受实施例和附图的限制。本公开的精神和范围应由所附权利要求书来解释并且包括落入所附权利要求书的范围内的所有等同物。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜