存储器控制器及其操作方法与流程

文档序号:32883033发布日期:2023-01-12 21:02阅读:29来源:国知局
存储器控制器及其操作方法与流程
存储器控制器及其操作方法
1.相关申请的交叉引用
2.本技术要求于2021年7月6日在韩国知识产权局提交的韩国专利申请号10-2021-0088748的优先权,该申请的整体公开内容通过引用并入本文。
技术领域
3.本发明的各种实施例总体上涉及电子设备,并且更具体地,涉及存储器控制器和操作该存储器控制器的方法。


背景技术:

4.存储设备可以响应于主机设备而存储数据,该主机设备诸如为计算机、智能电话和智能平板。存储设备的示例可以包括:用于将数据存储在诸如硬盘驱动器(hdd)的磁盘中的设备,以及用于将数据存储在诸如固态驱动器(ssd)或存储器卡的半导体存储器中(尤其是在非易失性存储器中)的设备。
5.存储设备可以包括存储数据的存储器设备和控制该存储器设备的存储器控制器。存储器设备可以被分类成易失性存储器和非易失性存储器。非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除和可编程rom(eeprom)、闪存存储器、相变ram(pram)、磁性ram(mram)、电阻式ram(rram)以及铁电ram(fram)。


技术实现要素:

6.根据一个实施例,一种控制具有分别耦合到多个串的存储器单元的存储器设备的存储器控制器可以包括:状态检测器,其检测存储器设备是否处于空闲状态中;编程控制器,其基于指示存储器设备的状态的检测信息来选择与耦合到存储器单元之中的对其执行编程操作或读取操作的存储器单元的串邻近的相邻串,选择耦合到至少一个字线的监控存储器单元,监控存储器单元是相邻串的一部分,并且控制存储器设备执行多个循环以对监控存储器单元进行编程;以及坏块选择器,其基于监控存储器单元的阈值电压分布的增加速率来选择具有监控存储器单元的存储器块作为坏块。
7.根据一个实施例,一种操作控制具有分别耦合到多个串的存储器单元的存储器设备的存储器控制器的方法可以包括:检测存储器设备的状态;基于存储器设备的空闲状态,来选择与耦合到存储器单元之中的对其执行编程操作或读取操作的存储器单元的串邻近的相邻串;选择耦合到至少一个字线的存储器单元作为监控存储器单元,该存储器单元是相邻串的一部分;输出编程命令以执行多个循环以对监控存储器单元进行编程;以及基于监控存储器单元的阈值电压分布的增加速率,选择具有监控存储器单元的存储器块作为坏块。
8.根据一个实施例,一种存储设备可以包括:存储器设备,其包括耦合到多个串中的每个串的存储器单元;以及存储器控制器,其检测存储器设备是否处于空闲状态中,选择与存储器单元之中的对其执行编程操作或读取操作的存储器单元邻近的存储器单元作为监
控存储器单元,控制存储器设备执行对监控存储器单元进行编程的多个循环,并且基于监控存储器单元的阈值电压分布的增加速率来选择具有监控存储器单元的存储器块作为坏块。
附图说明
9.图1是图示存储设备的框图;
10.图2是图示图1的存储器设备的结构的图;
11.图3是图示图2中示出的存储器单元阵列的一个实施例的图;
12.图4是图示选择监控存储器单元的方法的图;
13.图5图示图1的存储器控制器的配置和坏块处理过程;
14.图6图示被执行以对存储器单元进行编程的编程循环;
15.图7图示对监控存储器单元执行的循环;
16.图8是根据时间顺序图示图7的循环的图;
17.图9是在读取操作被添加到图8的循环的情况下监控存储器单元的编程方法;
18.图10图示监控存储器单元的阈值电压分布中的变化;
19.图11图示监控存储器单元的阈值电压分布的增加速率;
20.图12图示对监控存储器单元执行的循环的一个实施例;
21.图13图示对监控存储器单元执行的循环的一个实施例;
22.图14是图示根据本公开的一个实施例的存储器控制器的操作的图;
23.图15是图示图1的存储器控制器的另一实施例的图;
24.图16是图示存储器卡系统的框图,根据一个实施例的存储设备被应用于该存储器卡系统;
25.图17是图示固态驱动器(ssd)系统的一个示例的框图,根据一个实施例的存储设备被应用于该ssd系统;以及
26.图18是图示用户系统的框图,根据一个实施例的存储设备被应用于该用户系统。
具体实施方式
27.对依照本说明书中公开的概念的实施例的示例的具体结构或功能描述仅被说明以描述依照该概念的实施例的示例,并且依照该概念的实施例的示例可以通过各种形式来实施,但是该描述不限于本说明书中描述的实施例的示例。
28.各种实施例涉及存储器控制器及其操作方法,该存储器控制器及其操作方法通过预先将可能是坏块的存储器块作为坏块进行处理,来防止不可由纠错码纠正(uecc)的错误。
29.图1是图示存储设备50的框图。
30.参考图1,存储设备50可以包括存储器设备100和存储器控制器200。
31.存储设备50可以被配置成响应于主机300而存储数据。存储设备50的示例可以包括蜂窝电话、智能电话、mp3播放器、膝上型计算机、台式计算机、游戏机、tv、平板pc或车载信息娱乐系统。
32.根据对应于与主机300的通信方法的主机接口,存储装置50可以被制造为各种类
型的存储设备中的一种类型。例如,存储设备50可以被配置为各种种类的存储设备中的任何一种种类,诸如固态驱动器(ssd);mmc、emmc、rs-mmc和微型mmc的形式的多媒体卡;sd、迷你sd和微型sd的形式的安全数字卡;通用串行总线(usb)存储设备;通用闪存存储(ufs)设备;个人计算机存储器卡国际协会(pcmcia)卡类型存储设备;外围部件互连(pci)卡类型存储设备;pci快速(pci-e)卡类型存储设备;紧凑型闪存(cf)卡;智能媒体卡;和记忆棒。
33.存储设备50可以被制造为各种类型的封装中的任何一种类型。例如,存储设备50可以被制造为各种种类的封装类型中的任何一种种类,诸如叠层封装(pop)、系统级封装(sip)、芯片上系统(soc)、多芯片封装(mcp)、板上芯片(cob)、晶片级制作封装(wfp)、晶片级堆叠封装(wsp)等。
34.存储器设备100可以存储数据。存储器设备100可以响应于存储器控制器200而操作。存储器设备100可以包括存储器单元阵列,该存储器单元阵列包括存储数据的多个存储器单元。存储器单元阵列可以包括多个存储器块。存储器块中的每个存储器块可以包括多个存储器单元。该多个存储器单元可以形成多个页。根据一个实施例,页可以是用于将数据存储在存储器设备100中或读取被存储在存储器设备100中的数据的单位。存储器块可以是用于擦除数据的单位。
35.根据一个实施例,存储器设备100的示例可以包括双倍数据速率同步动态随机存取存储器(ddr sdram)、低功率双倍数据速率4(lpddr4)sdram、图形双倍数据速率(gddr)sdram、低功率ddr(lpddr)sdram、rambus动态随机存取存储器(rdram)、nand闪存存储器、垂直nand闪存存储器、nor闪存存储器设备、电阻式随机存取存储器(rram)、相变随机存取存储器(pram))、磁阻式随机存取存储器(mram)、铁电随机存取存储器(fram)或自旋转移扭矩随机存取存储器(stt-ram)。在本说明书中,通过示例的方式,在其中存储器设备100是nand闪存存储器的上下文中描述本发明的特征和方面。
36.存储器设备100可以具有二维阵列结构或三维阵列结构。在下文中,作为一个实施例,描述三维阵列结构。然而,本公开不限于此。本公开不仅还可以应用于其中电荷存储层包括导电浮置栅极(fg)的闪存存储器,而且可以应用于其中电荷存储层包括绝缘层的电荷俘获闪存(ctf)存储器。
37.根据一个实施例,存储器设备100可以以单级单元(slc)方法进行操作,通过slc方法将单个数据位存储在单个存储器单元中。然而,存储器设备100可以基于将至少两个数据位存储在单个存储器单元中的方法进行操作。例如,存储器设备100可以基于如下方法进行操作:用于将两个数据位存储在单个存储器单元中的多级单元(mlc)方法、用于存储三个数据位的三级单元(tlc)方法或用于存储四个数据位的四级单元(qlc)方法。
38.存储器设备100可以从存储器控制器200接收命令和地址,并且访问存储器单元阵列中的响应于地址而被选择的区域。即,存储器设备100可以对响应于地址而被选择的区域执行对应于命令的操作。例如,存储器设备100可以响应于所接收的命令而执行写入操作(编程操作)、读取操作或擦除操作。例如,当接收到编程命令时,存储器设备100可以利用数据对由地址选择的区域进行编程。例如,当接收到读取命令时,存储器设备100可以从由地址选择的区域读取数据。例如,当接收到擦除命令时,存储器设备100可以从由地址选择的区域擦除数据。
39.存储器控制器200可以控制存储设备50的总体操作。
40.当向存储设备50施加电源电压时,存储器控制器200可以执行固件。当存储器设备100是闪存存储器设备时,存储器控制器200可以执行诸如闪存转换层(ftl)的固件,以用于控制主机300与存储器设备100之间的通信。
41.根据一个实施例,存储器控制器200可以包括固件(未示出),该固件从主机300接收数据和逻辑块地址(lba),并且将逻辑块地址(lba)转变成物理块地址(pba),pba指示存储器设备100中包括的数据被存储在其中的存储器单元的地址。另外,存储器控制器200可以将逻辑-物理地址映射表存储在缓冲存储器中,该逻辑-物理地址映射表配置逻辑块地址lba与物理块地址pba之间的映射关系。
42.响应于来自主机300的请求,存储器控制器200可以控制存储器设备100执行编程操作、读取操作、擦除操作等。例如,当从主机300接收到编程请求时,存储器控制器200可以将编程请求改变为编程命令,并且将编程命令、物理块地址pba以及数据提供给存储器设备100。当从主机300接收到读取请求连同逻辑块地址时,存储器控制器200可以将读取请求改变为读取命令,选择对应于逻辑块地址的物理块地址,并且将读取命令和物理块地址pba提供给存储器设备100。当从主机300接收到擦除请求连同逻辑块地址时,存储器控制器200可以将擦除请求改变为擦除命令,选择对应于逻辑块地址的物理块地址,并且将擦除命令和物理块地址pba提供给存储器设备100。
43.根据一个实施例,随着分别耦合到存储器设备100中包括的多个存储器块的串的数量增加,存储器单元之间的距离可能减小。随着存储器单元之间的距离减小,与对其执行编程操作或读取操作的存储器单元邻近的存储器单元可能由于该编程操作或读取操作而劣化。随着相邻存储器单元因劣化而移位,在对相邻存储器单元的读取操作期间读取的数据可能包括不可由纠错码纠正(uecc)的错误。
44.因此,根据本公开,存储器控制器200可以检测存储器设备100处于空闲状态中或者已经过去预定时段,并且可以根据检测结果来控制存储器设备100对相邻存储器单元进行编程。另外,在相邻存储器单元被编程之后,依赖于相邻存储器单元的阈值电压分布的增加速率是否超过参考值,存储器控制器200可以确定是否将具有相邻存储器单元的存储器块作为坏块进行处理。
45.更具体地,当阈值电压分布的增加速率超过参考值时,存储器控制器200可以将对应的存储器块作为坏块进行处理。换言之,通过将具有相邻存储器单元的存储器块确定为在其中可能出现坏块的存储器块,并且在坏块出现之前预先将对应的存储器块作为坏块进行处理,可以防止不可由纠错码纠正(uecc)的错误。
46.为了执行上述操作,存储器控制器200可以包括状态检测器210、编程控制器220和坏块选择器230。
47.根据一个实施例,存储器控制器200可以包括状态检测器210。状态检测器210可以检测存储器设备100的空闲状态。当检测到存储器设备100的空闲状态时,状态检测器210可以提供指示存储器设备100处于空闲状态中的检测信息。
48.根据另一实施例,状态检测器210可以每隔预定时段而提供检测信息。检测信息可以指示预定时间已经过去。
49.根据一个实施例,存储器控制器200可以包括编程控制器220。编程控制器220可以基于从状态检测器210接收的检测信息,来控制存储器设备100执行对监控存储器单元进行
编程的编程循环。可以预先设置对监控存储器单元进行编程的编程循环的数量。
50.监控存储器单元可以是指耦合到预定字线的存储器单元,该存储器单元是与对其执行编程操作或读取操作的存储器单元耦合到的串邻近的串的一部分。编程循环中的每个编程循环可以包括编程操作和验证操作。另外,预定字线可以是指预期在其中发生严重劣化的线,并且可以是以下中的至少一者:邻近源极选择线的字线、邻近漏极选择线的字线和位于中心的字线。换言之,可以存在两个或更多个预定字线。
51.根据一个实施例,当对监控存储器单元执行编程循环时,编程控制器220可以在特定时间暂停编程循环。换言之,当监控存储器单元正在被编程时,编程控制器220可以输出暂停命令,该暂停命令提供在预定时间暂停编程循环的指令。例如,当存储器设备100执行一个编程循环、两个编程循环或三个编程循环时,编程控制器220可以输出暂停命令。
52.当编程循环响应于暂停命令而被暂停时,编程控制器220可以输出编程命令以指示编程循环从头重新开始。编程控制器220可以在预定编程循环之中的最终编程循环被执行之前交替地输出编程命令和暂停命令。
53.根据一个实施例,存储器控制器200可以包括坏块选择器230。基于对监控存储器单元的验证操作的验证结果,或基于与在暂停命令被输出之后输出的读取命令相对应的读取操作的读取结果,坏块选择器230可以确定监控存储器单元的阈值电压分布的增加速率。另外,坏块选择器230可以根据阈值电压分布的增加速率而选择具有监控存储器单元的存储器块作为坏块。
54.根据一个实施例,存储器控制器200可以控制至少两个存储器设备。存储器控制器200可以根据交织方案来控制存储器设备,以便改进操作性能。
55.主机300可以使用各种通信方法中的至少一种与存储设备50通信,该各种通信方法诸如为通用串行总线(usb)、串行at附件(sata)、串行附接scsi(sas)、高速芯片间(hsic)、小型计算机系统接口(scsi)、外围部件互连(pci)、pci快速(pcie)、非易失性存储器快速(nvme)、通用闪存存储(ufs)、安全数字(sd)、多媒体卡(mmc)、嵌入式mmc(emmc)、双列直插式存储器模块(dimm)、寄存式dimm(rdimm)和减载dimm(lrdimm)通信方法。
56.图2是图示图1的存储器设备100的结构的图。
57.参考图2,存储器设备100可以包括存储器单元阵列110、外围电路120和控制逻辑130。
58.存储器单元阵列110可以包括多个存储器块blk1至blkz。多个存储器块blk1至blkz可以通过行线rl耦合到行解码器121。多个存储器块blk1至blkz可以通过位线bl1至bln耦合到页缓冲器组123。多个存储器块blk1至blkz中的每个存储器块可以包括多个存储器单元。根据一个实施例,该多个存储器单元可以是非易失性存储器单元。耦合到相同字线的存储器单元可以被限定为一页。因此,每个存储器块可以包括多个页。
59.行线rl可以包括至少一个源极选择线、多个字线和至少一个漏极选择线。
60.被包括在存储器单元阵列110中的存储器单元中的每个存储器单元可以是存储一个数据位的单级单元(slc)、存储两个数据位的多级单元(mlc)、存储三个数据位的三级单元(tlc)或存储四个数据位的四级单元(qlc)。
61.外围电路120可以被配置成响应于控制逻辑130而对存储器单元阵列110的被选择的区域执行编程操作、读取操作或擦除操作。外围电路120可以驱动存储器单元阵列110。例
如,响应于控制逻辑130,外围电路120可以将各种操作电压施加到行线rl和位线bl1至bln,或者可以使所施加的电压放电。
62.外围电路120可以包括行解码器121、电压生成器122、页缓冲器组123、列解码器124、输入/输出电路125和感测电路126。
63.行解码器121可以通过行线rl耦合到存储器单元阵列110。行线rl可以包括至少一个源极选择线、多个字线和至少一个漏极选择线。根据一个实施例,字线可以包括正常字线和虚设字线。根据一个实施例,行线rl还可以包括管道选择线。
64.行解码器121可以被配置成对从控制逻辑130接收的行地址radd进行解码。行解码器121可以根据解码的块地址在存储器块blkl至blkz之中选择至少一个存储器块。行解码器121可以根据解码的地址,选择被选择的存储器块的至少一个字线,以便将由电压生成器122生成的电压施加到至少一个字线。
65.例如,在编程操作期间,行解码器121可以将编程电压施加到被选择的字线,并且将编程通过电压施加到未被选择的字线,编程通过电压具有比编程电压低的电压电平。在编程验证操作期间,行解码器121可以将验证电压施加到被选择的字线,并且将大于验证电压的验证通过电压施加到未被选择的字线。在读取操作期间,行解码器121可以将读取电压施加到被选择的字线,并且将大于读取电压的读取通过电压施加到未被选择的字线。
66.根据一个实施例,存储器设备100的擦除操作可以以存储器块为单位来执行。在擦除操作期间,行解码器121可以根据解码的地址来选择存储器块中的一个存储器块。在擦除操作期间,行解码器121可以将接地电压施加到与被选择的存储器块耦合的字线。
67.电压生成器122可以由控制逻辑130控制。电压生成器122可以被配置成通过使用供应给存储器设备100的外部电源电压来生成多个电压。更具体地,电压生成器122可以响应于操作信号opsig而生成用于编程、读取和擦除操作的各种操作电压vop。例如,电压生成器122可以响应于控制逻辑130而生成编程电压、验证电压、通过电压、读取电压和擦除电压。
68.根据一个实施例,电压生成器122可以通过调节外部电源电压来生成内部电源电压。由电压生成器122生成的内部电源电压可以用作存储器设备100的操作电压。
69.根据一个实施例,电压生成器122可以通过使用外部电源电压或内部电源电压来生成多个电压。
70.例如,电压生成器122可以包括接收内部电源电压的多个泵浦电容器,并且可以通过响应于控制逻辑130而选择性地激活该多个泵浦电容器来生成多个电压。
71.可以通过行解码器121将多个生成的电压供应给存储器单元阵列110。
72.页缓冲器组123可以包括第一页缓冲器pb1至第n页缓冲器pbn。第一页缓冲器pb1至第n页缓冲器pbn可以分别通过第一位线bl1至第n位线bln耦合到存储器单元阵列110。第一页缓冲器pb1至第n页缓冲器pbn可以响应于控制逻辑130而操作。更具体地,第一页缓冲器pb1至第n页缓冲器pbn可以响应于页缓冲器控制信号pbsignals而操作。例如,第一页缓冲器pb1至第n页缓冲器pbn可以临时存储通过位线bl1至bln接收的数据,或者可以在读取或验证操作期间感测位线bl1至bln中的电压或电流。
73.更具体地,在编程操作期间,当在编程操作期间将编程电压施加到被选择的字线时,第一页缓冲器pb1至第n页缓冲器pbn可以通过第一位线bl1至第n位线bln,将通过输入/
输出电路125接收的数据data传送到被选择的存储器单元。可以根据所传送的数据data对被选择的页的存储器单元进行编程。在编程验证操作期间,第一页缓冲器pb1至第n页缓冲器pbn可以通过感测分别通过第一位线bl1至第n位线bln从被选择的存储器单元接收的电压或电流,来读取页数据。
74.在读取操作期间,第一页缓冲器pb1至第n页缓冲器pbn可以通过第一位线bl1至第n位线bln从被选择的页的存储器单元读取数据data,并且响应于列解码器124而将读取的数据data输出到输入/输出电路125。
75.在擦除操作期间,第一页缓冲器pb1至第n页缓冲器pbn可以使第一位线bl1至第n位线bln浮置,或将擦除电压施加到第一位线bl1至第n位线bln。
76.列解码器124可以响应于列地址cadd而在输入/输出电路125与页缓冲器组123之间传送数据。例如,列解码器124可以通过数据线dl与第一页缓冲器pb1至第n页缓冲器pbn交换数据,或者可以通过列线cl与输入/输出电路125交换数据。
77.输入/输出电路125可以将来自如上参考图1所描述的图1的存储器控制器200的命令cmd和地址addr传送到控制逻辑130,或者可以与列解码器124交换数据data。
78.在读取操作或验证操作期间,感测电路126可以响应于可允许位信号vrybit而生成参考电流,并且将从页缓冲器组123接收的感测电压vpb与由参考电流生成的参考电压进行比较,以输出通过信号pass或失败信号fail。
79.控制逻辑130可以通过响应于命令cmd和地址addr而输出操作信号opsig、行地址radd、页缓冲器控制信号pbsignals和可允许位信号vrybit,来控制外围电路120。例如,控制逻辑130可以响应于子块读取命令和地址,控制被选择的存储器块的读取操作。另外,控制逻辑130可以响应于子块擦除命令和地址,控制被包括在被选择的存储器块中的被选择的子块的擦除操作。另外,控制逻辑130可以响应于通过信号pass或失败信号fail而确定验证操作通过或失败。
80.图3是图示图2中示出的存储器单元阵列110的一个实施例的图。
81.参考图2和图3,图3是图示被包括在图2的存储器单元阵列110中的多个存储器块blk1至blkz之中的一个存储器块blka的电路图。
82.彼此平行布置的第一选择线、字线和第二选择线可以耦合到存储器块blka。例如,字线可以平行布置在第一选择线与第二选择线之间。第一选择线可以是源极选择线ssl,并且第二选择线可以是漏极选择线dsl。
83.更具体地,存储器块blka可以包括耦合在位线bl1至bln与源极线sl之间的多个串。位线bl1至bln可以分别耦合到串,并且源极线sl可以共同耦合到串。因为串可以具有相同配置,所以作为一个示例,下文将更详细地描述耦合到第一位线bl1的串st。
84.串st可以包括串联耦合在源极线sl与第一位线bl1之间的:源极选择晶体管sst、多个存储器单元f1至f16和漏极选择晶体管dst。每个串st可以包括至少一个源极选择晶体管sst、至少一个漏极选择晶体管dst以及比如图3所示的存储器单元f1至f16更多的存储器单元。
85.源极选择晶体管sst的源极可以耦合到源极线sl,并且漏极选择晶体管dst的漏极可以耦合到第一位线bl1。存储器单元f1至f16可以串联耦合在源极选择晶体管sst与漏极选择晶体管dst之间。被包括在不同串st中的源极选择晶体管sst的栅极可以耦合到源极选
择线ssl,漏极选择晶体管dst的栅极可以耦合到漏极选择线dsl,并且存储器单元f1至f16的栅极可以耦合到多个字线wl1至wl16。被包括在不同串st中的存储器单元之中的、耦合到相同字线的存储器单元的组可以被称为物理页ppg。因此,存储器块blka可以包括与字线wl1至wl16的数量一样多的物理页ppg。
86.一个存储器单元可以存储一位数据。这种存储器单元一般被称为单级单元(slc)。一个物理页ppg可以存储一个逻辑页(lpg)数据。一个lpg数据可以包括与被包括在一个物理页ppg中的单元数量一样多的数据位。然而,单个存储器单元可以存储两位或更多位数据。这种存储器单元通常被称为“多级单元(mlc)”。一个物理页ppg可以存储对应于两个或更多个逻辑页lpg的数据。
87.尽管将在其中存储两位或更多位数据的存储器单元称为多级单元(mlc),但是随着存储在一个存储器单元中的数据位的数量增加,多级单元(mlc)现在可以意指在其中存储两位数据的存储器单元。在其中存储三位或更多位数据的存储器单元被称为三级单元(tlc)。在其中存储四位或更多位数据的存储器单元可以被称为四级单元(qlc)。另外,已经开发了存储多位数据的存储器单元方法。该实施例适用于在其中存储两位或更多位数据的存储器设备100。
88.在另一实施例中,存储器块可以具有三维结构。每个存储器块可以包括堆叠在衬底之上的多个存储器单元。该多个存储器单元可以被布置在+x方向、+y方向以及+z方向上。
89.图4是图示选择监控存储器单元的方法的图。
90.参考图3和图4,图4图示耦合到图3的位线bl1至bln之中的第一位线bl1至第三位线bl3的存储器单元。
91.根据一个实施例,可以对耦合到第一位线bl1至第三位线bl3之中的第二位线bl2的串的存储器单元进行编程。例如,可以对耦合到第二位线bl2的存储器单元之中的第1_2存储器单元f1_2进行编程。由于对第1_2存储器单元f1_2执行编程操作,所以耦合到邻近第二位线bl2的第一位线bl1或第三位线bl3的串的存储器单元可能劣化。
92.根据一个实施例,可以读取存储在耦合到第一位线bl1至第三位线bl3之中的第二位线bl2的串的存储器单元中的数据。例如,可以读取存储在耦合到第二位线bl2的存储器单元之中的第1_2存储器单元f1_2中的数据。由于对存储在第1_2存储器单元f1_2中的数据执行读取操作,所以耦合到邻近第二位线bl2的第一位线bl1或第三位线bl3的串的存储器单元可能劣化。
93.根据一个实施例,由于相邻串的存储器单元由于编程操作或读取操作而劣化,所以对应存储器单元的阈值电压分布可能移位。当相邻存储器单元的阈值电压分布移位时,在对对应存储器单元的读取操作期间读取的数据可能包括不可由纠错码纠正(uecc)的错误。
94.因此,为了防止不可由纠错码纠正(uecc)的错误,图1的存储器控制器200可以在存储器设备100处于空闲状态中时或周期性地确定相邻串,该相邻串所耦合到的位线邻近耦合到对其执行编程操作或读取操作的存储器单元的位线。
95.另外,图1的存储器控制器200可以选择预期在其中发生严重劣化的字线的存储器单元,该存储器单元是所确定的相邻串的一部分。例如,图1的存储器控制器200可以选择耦合到至少一个字线的存储器单元作为监控存储器单元,该存储器单元是所确定的相邻串的
一部分。
96.当耦合到存储器块的串的数量为参考数量或更大时,耦合到至少两个字线的存储器单元(这些存储器单元是相邻串的一部分)可以被选择作为监控存储器单元。
97.更具体地,图1的存储器控制器200可以选择与邻近源极选择线ssl的字线耦合的存储器单元作为监控存储器单元,该存储器单元是相邻串的一部分。例如,图1的存储器控制器200可以选择第一存储器单元f1和第1_3存储器单元f1_3作为监控存储器单元,第一存储器单元f1和第1_3存储器单元f1_3是耦合到第一字线wl1至第16字线wl16之中邻近源极选择线ssl的第一字线wl1的存储器单元。
98.在另一实施例中,图1的存储器控制器200可以选择与邻近漏极选择线dsl的字线耦合的存储器单元作为监控存储器单元,该存储器单元是相邻串的一部分。例如,图1的存储器控制器200可以选择第16存储器单元f16和第16_3存储器单元f16_3作为监控存储器单元,第16存储器单元f16和第16_3存储器单元f16_3是耦合到第一字线wl1至第16字线wl16之中邻近漏极选择线dsl的第16字线wl16的存储器单元。
99.在另一实施例中,图1的存储器控制器200可以选择耦合到中心字线的存储器单元作为监控存储器单元,该存储器单元是相邻串的一部分。当将中心字线被假设为第八字线wl8时,图1的存储器控制器200可以选择第八存储器单元f8和第8_3存储器单元f8_3作为监控存储器单元,第八存储器单元f8和第8_3存储器单元f8_3是耦合到第一字线wl1至第16字线wl16之中的第八字线wl8的存储器单元。
100.当监控存储器单元被选择时,图1的存储器控制器200可以控制图1的存储器设备100对监控存储器单元执行增量阶跃脉冲编程(ispp)操作。
101.当对监控存储器单元执行ispp操作时,可以基于监控存储器单元的阈值电压分布的增加速率来确定是否将具有监控存储器单元的存储器块作为坏块进行处理。
102.图5图示图1的存储器控制器200的配置和坏块处理过程。
103.参考图1和图5,图5图示被包括在图1的存储器控制器200中的状态检测器210、编程控制器220和坏块选择器230。
104.根据一个实施例,状态检测器210可以检测存储器设备100的状态。例如,状态检测器210可以基于从存储器设备100接收的状态信息或信号来检测存储器设备100的空闲状态。
105.根据另一实施例,状态检测器210可以检测预定时段已经到来。换言之,状态检测器210可以在每次过去预定时间时检测到预定时段已经到来。
106.根据一个实施例,当状态检测器210检测到存储器设备100的空闲状态或检测到预定时段已经到来时,状态检测器210可以输出检测信息detect_inf,检测信息detect_inf指示存储器设备100处于空闲状态中或预定时段已经到来。
107.根据一个实施例,编程控制器220可以从状态检测器210接收检测信息detect_inf。当编程控制器220接收到检测信息detect_inf时,编程控制器220可以控制监控存储器单元的编程。
108.更具体地,当接收到检测信息detect_inf时,编程控制器220可以在与在编程控制器220接收到检测信息detect_inf之前对其执行编程操作或读取操作的存储器单元耦合的串之中选择任意串,并且可以确定邻近该任意串的相邻串。
109.当相邻串被确定时,编程控制器220可以选择预期在其中发生严重劣化的字线的存储器单元作为监控存储器单元,该存储器单元是相邻串的一部分。例如,编程控制器220可以选择与邻近源极选择线、漏极选择线和中心字线的字线中的至少一个字线耦合的存储器单元作为监控存储器单元,该存储器单元是相邻串的一部分。
110.当监控存储器单元被选择时,编程控制器220可以控制存储器设备100对监控存储器单元执行编程循环。可以预先确定对其执行编程循环的监控存储器单元的数量和编程循环的数量,并且可以将监控存储器单元编程到最高编程状态。另外,编程循环中的每个编程循环可以包括编程操作和验证操作。
111.例如,当存储器设备100基于三级单元(tlc)方法来执行编程操作时,可以将监控存储器单元编程到第七编程状态p7,第七编程状态p7是擦除状态e和第一编程状态p1至第七编程状态p7之中的最高编程状态。
112.在另一实施例中,当存储器设备100基于四级单元(qlc)方法来执行编程操作时,可以将监控存储器单元编程到第十五编程状态p15,第十五编程状态p15是擦除状态e和第一编程状态p1至第十五编程状态p15之中的最高编程状态。
113.根据一个实施例,编程控制器220可以将编程命令pgm_cmd输出到存储器设备100以对监控存储器单元进行编程。存储器设备100可以响应于编程命令pgm_cmd而对监控存储器单元执行编程循环。
114.当存储器设备100执行编程循环时,编程控制器220可以每隔预定时间而输出暂停命令suspend_cmd。预定时间可以是指增加一的编程循环终止的时间点。
115.例如,在首先执行多个编程循环之中的第一编程循环之后,编程控制器220可以将暂停命令suspend_cmd输出到存储器设备100。存储器设备100可以响应于暂停命令suspend_cmd而暂停执行编程循环。
116.当坏块选择器230通过附加读取操作来确定监控存储器单元的阈值电压分布的增加速率时,编程控制器220可以输出暂停命令suspend_cmd并且然后输出读取命令read_cmd。
117.在编程控制器220输出读取命令read_cmd之后,编程控制器220可以输出编程命令pgm_cmd以对监控存储器单元进行编程。编程控制器220可以输出编程命令pgm_cmd以指示从头开始再次执行编程循环。换言之,存储器设备100可以响应于从编程控制器220接收的编程命令而从第一编程循环开始再次执行编程循环。
118.随后,在执行第一和第二编程循环之后,编程控制器220可以将暂停命令suspend_cmd输出到存储器设备100。换言之,当在重新开始编程循环之后执行两个编程循环时,编程控制器220可以将提供暂停编程循环的指令的暂停命令suspend_cmd输出到存储器设备100。
119.以相同方式,当坏块选择器230通过附加读取操作来确定监控存储器单元的阈值电压分布的增加速率时,编程控制器220可以输出暂停命令suspend_cmd并且然后输出读取命令read_cmd。
120.以如上所述的方式,编程控制器220可以交替地输出编程命令pgm_cmd和暂停命令suspend_cmd,直到所有预定编程循环被执行。另外,编程控制器220可以在输出暂停命令suspend_cmd之后输出读取命令read_cmd。
121.根据一个实施例,坏块选择器230可以基于验证数据vfy_data或读取数据read_data来确定是否将存储器块作为坏块进行处理。验证数据vfy_data可以是指在对存储器设备100执行的验证操作之中的在接收到暂停命令suspend_cmd之前执行的最终验证操作期间读取的数据。读取数据read_data可以是指在对应于读取命令read_cmd的读取操作期间读取的数据。可以在输出暂停命令suspend_cmd之前或之后从存储器设备100接收验证数据vfy_data或读取数据read_data。
122.坏块选择器230可以基于验证数据vfy_data或读取数据read_data来确定监控存储器单元的阈值电压分布的增加速率。换言之,随着编程循环被重复,监控存储器单元的阈值电压分布可以增加。坏块选择器230可以基于在每次坏块选择器接收验证数据vfy_data或读取数据read_data时确定的接通或关断存储器单元的数量,来确定监控存储器单元的阈值电压分布的增加速率。
123.当阈值电压分布的增加速率超过预定参考值时,坏块选择器230可以将坏块处理命令bbs_cmd输出到存储器设备100,坏块处理命令bbs_cmd用于将具有监控存储器单元的存储器块作为坏块进行处理。存储器设备100可以响应于坏块处理命令bbs_cmd而将对应存储器块作为坏块进行处理,并且可以不再对对应存储器块执行任何操作。
124.图6图示被执行以对存储器单元进行编程的编程循环。
125.参考图6,图6图示当对被包括在图1的存储器设备100中的多个存储器单元之中的被选择的存储器单元进行编程时被执行的多个编程循环中的一些编程循环。
126.根据一个实施例,图1的存储器设备100可以执行多个编程循环以对被选择的存储器单元进行编程。编程循环中的每个编程循环可以包括编程操作和验证操作。换言之,为了将被选择的存储器单元编程到目标编程状态中,图1的存储器设备100可以将具有对应于目标编程状态的幅值的编程脉冲施加到被选择的存储器单元,并且可以将验证脉冲施加到被选择的字线以检查被选择的存储器单元是否被编程到目标编程状态。
127.根据一个实施例,图1的存储器设备100可以执行多个编程循环之中的第一编程循环pl1。为了将被选择的存储器单元编程到目标编程状态中,第一编程循环pl1可以包括:将对应于目标编程状态的第一编程电压vpgm1施加到与被选择的存储器单元耦合的被选择的字线的编程操作,以及将验证电压vvfy施加到被选择的字线的验证操作。
128.在验证操作期间,可以基于接通或关断的存储器单元的数量来确定被选择的存储器单元是否被编程到目标编程状态。
129.然而,当被选择的存储器单元未被编程时,可以执行下一编程循环。换言之,作为执行第一编程循环pl1的结果,当被选择的存储器单元未被编程到目标编程状态时,图1的存储器设备100可以执行作为下一编程循环的第二编程循环pl2。
130.根据一个实施例,第二编程循环pl2可以包括:将比第一编程电压vpgm1大第一阶跃电压vstep1的编程电压(vpgm1+vstep1)施加到被选择的字线的编程操作,以及将验证电压vvfy施加到被选择的字线的验证操作。
131.以与第一编程循环pl1中相同的方式,作为执行第二编程循环pl2的结果,当被选择的存储器单元未被编程到目标编程状态时,图1的存储器设备100可以执行作为下一编程循环的第三编程循环pl3。第三编程循环pl3可以包括编程操作和验证操作。在编程操作期间,可以向被选择的字线施加比第二编程循环pl2中的编程电压(vpgm1+vstep1)大第一阶
跃电压vstep1的编程电压(即,比第一编程电压vpgm1大第一阶跃电压vstep1的两倍的编程电压(vpgm1+vstep1*2))。
132.如上所述,图1的存储器设备100可以执行多个编程循环以将被选择的存储器单元编程到目标编程状态。当执行编程循环中的每个编程循环时,可以通过比前一循环中的编程电压大第一阶跃电压vstep1的编程电压来执行编程操作。
133.作为对预定编程循环执行验证操作的结果,当确定被选择的存储器单元被编程到目标编程状态时,即,当编程通过时,图1的存储器设备100可以不再执行多个编程循环并且终止编程循环。
134.然而,尽管所有编程循环被执行,但是当未确定被选择的存储器单元被编程到目标编程状态时,图1的存储器设备100可以在处理编程失败之后将失败信息输出到图1的存储器控制器200,该失败信息指示被选择的存储器单元未被编程到目标编程状态。
135.一般而言,当图1的存储器设备100执行多个编程循环时,在每个编程循环中,图1的存储器设备100可以将编程脉冲施加到被选择的字线并且然后将验证脉冲施加到该被选择的字线,以将被选择的存储器单元编程到目标编程状态。
136.然而,在本公开中,当图1的存储器设备100对监控存储器单元执行多个编程循环时,图1的存储器设备100可以在预定时间输出暂停命令。图1的存储器设备100可以响应于暂停命令而暂停编程循环。
137.此后,图1的存储器控制器200可以再次输出编程命令。图1的存储器设备100可以响应于该编程命令而再次执行多个编程循环。换言之,在暂停多个编程循环之后,图1的存储器设备100可以再次执行第一编程循环pl1。
138.图7图示对监控存储器单元执行的循环。
139.参考图6和图7,图7通过组合图6的编程循环来图示新编程循环。
140.参考图5和图7,图7的编程循环可以是指响应于图5的编程命令pgm_cmd而对监控存储器单元执行的编程循环。监控存储器单元可以是指耦合到预期在其中发生严重劣化的字线的存储器单元,该存储器单元是与耦合到对其执行编程操作或读取操作的存储器单元的串邻近的串的一部分。
141.如图7所示,可以假设循环s701至s703被执行以对监控存储器单元进行编程并且被事先设置。在另一实施例中,可以对监控存储器单元执行更多或更少的循环。
142.另外,如图7所示,可以假设图1的存储器设备100基于三级单元(tlc)方法来执行编程操作。在另一实施例中,图1的存储器设备100可以基于单级单元(slc)方法、多级单元(mlc)方法或四级单元(qlc)方法来执行编程操作。
143.根据一个实施例,图1的存储器设备100可以执行编程循环,以将监控存储器单元编程到擦除状态e和第一编程状态p1至第七编程状态p7之中的最高编程状态。
144.更具体地,图1的存储器设备100可以执行循环s701至s703之中的循环s701。循环s701可以是与图6的第一编程循环pl1相同的编程循环。循环s701可以包括:编程操作,其将对应于第七编程状态p7的第一编程电压vpgm1施加到与监控存储器单元耦合的字线;以及验证操作,其施加验证电压vvfy以用于验证监控存储器单元是否被编程。
145.与图6相反,当图1的存储器设备100完成循环s701时,图1的存储器控制器200可以将暂停命令suspend_cmd输出到图1的存储器设备100,暂停命令suspend_cmd暂停正由图1
的存储器设备100执行的编程循环。当暂停命令suspend_cmd被输出时,图1的存储器设备100可以响应于暂停命令suspend_cmd而暂停正在执行的编程循环。
146.当编程循环被暂停时,图1的存储器控制器200可以将编程命令pgm_cmd输出到图1的存储器设备100,编程命令pgm_cmd提供从第一编程循环pl1开始重新开始编程循环的指令。图1的存储器设备100可以响应于编程命令pgm_cmd而执行具有第一编程循环pl1和第二编程循环pl2的循环s702。
147.更具体地,第一编程循环pl1和第二编程循环pl2可以被组合以配置循环s702。循环s702可以包括第一编程循环pl1和第二编程循环pl2,第二编程循环pl2包括:将比第一编程电压vpgm1大第一阶跃电压vstep1的编程电压(vpgm1+vstep1)施加到与监控存储器单元耦合的字线的编程操作,以及施加验证电压vvfy的验证操作。
148.随后,当图1的存储器设备100完成循环s702时,图1的存储器控制器200可以将暂停命令suspend_cmd输出到图1的存储器设备100,暂停命令suspend_cmd暂停正由图1的存储器设备100执行的编程循环。当暂停命令suspend_cmd被输出时,图1的存储器设备100可以响应于暂停命令suspend_cmd而暂停正在执行的编程循环。
149.当编程循环被暂停时,图1的存储器控制器200可以将编程命令pgm_cmd输出到图1的存储器设备100,编程命令pgm_cmd提供从第一编程循环pl1开始重新开始编程循环的指令。图1的存储器设备100可以响应于编程命令pgm_cmd而执行包括第一编程循环pl1至第三编程循环pl3的循环s703。
150.循环s703可以包括第三编程循环pl3以及第一编程循环pl1和第二编程循环pl2。第三编程循环pl3可以包括:将比第一编程电压vpgm1大第一阶跃电压vstep1的两倍的编程电压(vpgm1+vstep1*2)施加到与监控存储器单元耦合的字线的编程操作,以及施加验证电压vvfy的验证操作。
151.在图7中,可以假设对监控存储器单元执行编程循环s701至s703。因此,在执行循环s703之后,当从图1的存储器控制器200输出暂停命令suspend_cmd时,图1的存储器设备100可以终止对监控存储器单元进行编程的循环。
152.通过以上述方式对监控存储器单元进行编程,可以改变监控存储器单元的阈值电压分布。当在阈值电压分布中存在显著移位时,具有监控存储器单元的存储器块可以被确定为可能变成坏块的存储器块。另一方面,当阈值电压分布稍微移位时,具有监控存储器单元的存储器块可以被确定为不太可能变成坏块的存储器块。
153.图8是根据时间顺序图示图7的循环的图。
154.参考图7和图8,图8图示图7的对监控存储器单元执行的循环s701至s703。
155.根据一个实施例,可以执行循环s701至s703以将监控存储器单元编程到最高编程状态。在另一实施例中,可以执行更多或更少的编程循环以对监控存储器单元进行编程。
156.如图7中所描述的,循环s701可以包括:将对应于第七编程状态p7的第一编程电压vpgm1施加到与监控存储器单元耦合的字线的编程操作,以及施加用于验证监控存储器单元是否被编程的验证电压vvfy的验证操作。
157.在执行循环s701之后,可以通过从图1的存储器控制器200接收的暂停命令suspend_cmd来暂停下一循环。暂停的循环可以通过从图1的存储器控制器200接收的编程命令pgm_cmd而重新开始。
158.在接收到暂停命令suspend_cmd之后,可以基于从图1的存储器控制器200接收的编程命令pgm_cmd来执行循环s702。循环s702可以包括第二编程循环pl2以及对应于循环s701的第一编程循环pl1。
159.因此,在循环s702中,可以向耦合到监控存储器单元的字线顺序地施加:第一编程电压vpgm1、验证电压vvfy、比第一编程电压vpgm1大第一阶跃电压vstep1的编程电压(vpgm1+vstep1)以及验证电压vvfy。
160.在执行循环s702之后,可以通过从图1的存储器控制器200接收的暂停命令suspend_cmd来再次暂停编程循环。暂停的编程循环可以通过从图1的存储器控制器200接收的编程命令pgm_cmd而重新开始。
161.在从图1的存储器控制器200接收到暂停命令suspend_cmd之后,可以基于接收的编程命令pgm_cmd来执行循环s703。循环s703可以包括第三编程循环pl3以及对应于循环s702的第一编程循环pl1和第二编程循环pl2。
162.因此,在循环s703中,可以向耦合到监控存储器单元的字线顺序地施加:第一编程电压vpgm1、验证电压vvfy、比第一编程电压vpgm1大第一阶跃电压vstep1的编程电压(vpgm1+vstep1)、验证电压vvfy、比第一编程电压vpgm1大第一阶跃电压vstep1的两倍的编程电压(vpgm1+vstep1*2)以及验证电压vvfy。
163.在执行循环s703的最后验证操作之后,可以通过从图1的存储器控制器200接收的暂停命令suspend_cmd来再次暂停编程循环。因为所有预定循环s701至s703被执行以对监控存储器单元进行编程,所以监控存储器单元的编程可以终止,并且可以基于监控存储器单元的阈值电压分布的移位的增加速率来确定是否将存储器块作为坏块进行处理。
164.图9是监控存储器单元的编程方法,其中将读取操作添加到图8的循环。
165.参考图8和图9,图9图示在响应于暂停命令suspend_cmd而暂停编程循环之后添加读取操作。
166.在图9中,将省略对图8的重叠描述。
167.根据一个实施例,在执行循环s701之后,可以响应于暂停命令suspend_cmd而暂停编程循环。
168.当编程循环被暂停时,图1的存储器控制器200可以将读取命令read_cmd输出到图1的存储器控制器200,读取命令read_cmd用于检查监控存储器单元是否被编程到目标编程状态。
169.因为监控存储器单元被编程到擦除状态e和第一编程状态p1至第七编程状态p7之中最高的第七编程状态p7,所以图1的存储器设备100可以响应于读取命令read_cmd,通过用于区分第六编程状态p6与第七编程状态p7的读取电压vread,对监控存储器单元执行读取操作。
170.图1的存储器设备100可以从图1的存储器控制器200接收编程命令pgm_cmd,编程命令pgm_cmd提供从第一编程循环pl1开始重新开始编程循环的指令。
171.在从图1的存储器控制器200接收到编程命令pgm_cmd之后,图1的存储器设备100可以执行具有第一编程循环pl1和第二编程循环pl2的循环s702。
172.根据一个实施例,在执行循环s702之后,可以响应于暂停命令suspend_cmd而暂停正在执行的编程循环。
173.当编程循环被暂停时,图1的存储器控制器200可以输出读取命令read_cmd以用于检查监控存储器单元是否被编程到目标编程状态。
174.以与暂停循环s701相同的方式,图1的存储器设备100可以响应于读取命令read_cmd,通过用于区分第六编程状态p6与第七编程状态p7的读取电压vread,对监控存储器单元执行读取操作。
175.图1的存储器设备100可以从图1的存储器控制器200接收编程命令pgm_cmd,编程命令pgm_cmd提供从第一编程循环pl1开始重新开始编程循环的指令。
176.在从图1的存储器控制器200接收到编程命令pgm_cmd之后,图1的存储器设备100可以执行具有第一编程循环pl1至第三编程循环pl3的循环s703。
177.根据一个实施例,在执行循环s703之后,可以响应于暂停命令suspend_cmd而暂停正在执行的编程循环。
178.以与暂停循环s701和s702相同的方式,图1的存储器设备100可以响应于读取命令read_cmd,通过用于区分第六编程状态p6与第七编程状态p7的读取电压vread,对监控存储器单元执行读取操作。
179.根据一个实施例,当在循环s703之后完成读取操作时,用于对监控存储器单元进行编程的所有预定编程循环可以被执行,使得对监控存储器单元进行编程的操作可以终止。
180.图10图示监控存储器单元的阈值电压分布中的变化。
181.参考图7至图10,图10图示在如图7至图9所示的对监控存储器单元的循环s701至s703被执行之后监控存储器单元的阈值电压分布。
182.根据一个实施例,当图1的存储器设备100基于三级单元(tlc)方法来执行编程操作时,可以将监控存储器单元编程到第七编程状态p7,第七编程状态p7是擦除状态e和第一编程状态p1至第七编程状态p7之中的最高编程状态。
183.然而,因为监控存储器单元以不同的速率被编程,所以当如图7至图9所示的那样执行循环s701至s703时,监控存储器单元的阈值电压可以以不同的速率增加。
184.例如,当监控存储器单元的编程速度低时,监控存储器单元的阈值电压分布可以被移位到状态p7_rs1。监控存储器单元的阈值电压分布的增加速率可以相对较低。当监控存储器单元的阈值电压分布的增加速率低时,可以确定具有监控存储器单元的存储器块不太可能变成坏块。
185.然而,当监控存储器单元的编程速度高时,监控存储器单元的阈值电压分布可以被移位到状态p7_rs2。监控存储器单元的阈值电压分布的增加速率可以相对较高。当监控存储器单元的阈值电压分布的增加速率高时,可以确定具有监控存储器单元的存储器块可能变成坏块。
186.另外,当阈值电压分布的增加速率高时,这可以意味着劣化的影响高。换言之,阈值电压分布的增加速率可以由于在编程操作期间相邻单元的劣化或由迭代读取操作引起的扰动劣化而增加。因此,具有监控存储器单元的存储器块的可靠性可能由于劣化而降低,该监控存储器单元具有高增加速率的阈值电压分布。
187.图11图示监控存储器单元的阈值电压分布的增加速率。
188.参考图7至图11,图11图示基于验证数据vfy_data或读取数据read_data而确定的
阈值电压分布的增加速率,验证数据vfy_data在每个循环中的最后验证操作期间被读取,读取数据read_data响应于在暂停命令suspend_cmd之后输出的读取命令read_cmd而被读取。
189.参考图7和图8,为了将监控存储器单元编程到最高编程状态,可以执行循环s701至s703。可以将在每个循环中的最后验证操作期间读取的验证数据vfy_data输出到图5的存储器控制器200。
190.首先,在被包括在循环s701中的验证操作期间,图5的存储器控制器200可以基于读取的验证数据vfy_data来确定监控存储器单元之中的关断的存储器单元的数量。在被包括在循环s702中的验证操作之中的最后验证操作期间,图5的存储器控制器200可以基于读取的验证数据vfy_data来确定监控存储器单元之中的关断的存储器单元的数量。另外,在被包括在循环s703中的验证操作之中的最后验证操作期间,图5的存储器控制器200可以基于验证数据vfy_data来确定监控存储器单元之中的关断的存储器单元的数量。
191.当关断的存储器单元的数量基于在循环s701至s703中的每个循环中的最后验证操作期间读取的验证数据vfy_data而被确定时,图5的存储器控制器200可以基于关断的存储器单元的数量来确定监控存储器单元的阈值电压分布的增加速率。
192.参考图9,当对监控存储器单元执行循环s701至s703时,还可以执行读取操作。可以将在每个读取操作期间读取的读取数据read_data输出到图5的存储器控制器200。
193.首先,在完成循环s701之后执行的第一读取操作read1期间,图5的存储器控制器200可以基于读取数据read_data来确定监控存储器单元之中的关断的存储器单元的数量。在完成循环s702之后执行的第二读取操作read2期间,图5的存储器控制器200可以基于读取数据read_data来确定监控存储器单元之中的关断的存储器单元的数量。在完成循环s703之后执行的第三读取操作read3期间,图5的存储器控制器200可以基于读取数据read_data来确定监控存储器单元之中的关断的存储器单元的数量。
194.当关断的存储器单元的数量基于在每个读取操作中读取的读取数据read_data而被确定时,图5的存储器控制器200可以基于关断的存储器单元的数量来确定监控存储器单元的阈值电压分布的增加速率。
195.根据一个实施例,当基于监控存储器单元之中的关断的存储器单元的数量而确定的阈值电压分布的增加速率是等于或小于参考值的第一斜率slope1时,具有监控存储器单元的存储器块可能不太可能变成坏块。
196.然而,当阈值电压分布的增加速率是超过参考值的第二斜率slope2时,具有监控存储器单元的存储器块可能有可能变成坏块。图5的存储器控制器200可以通过输出坏块处理命令bbs_cmd,预先将可能变成坏块的存储器块作为坏块进行处理。
197.因此,通过基于监控存储器单元的阈值电压分布的增加速率而将具有监控存储器单元的存储器块作为坏块进行处理,可以防止不可由纠错码纠正(uecc)的错误。
198.在另一实施例中,可以基于在循环s701至s703中的每个循环中的最后验证操作期间读取的验证数据vfy_data,或基于在循环s701至s703中的每个循环中一起执行的读取操作期间读取的读取数据read_data,来确定监控存储器单元之中的接通的存储器单元的数量。当接通的存储器单元的数量被确定时,图5的存储器控制器200可以确定监控存储器单元的阈值电压分布的降低速率。
199.根据一个实施例,当基于监控存储器单元之中的接通的存储器单元的数量而确定的阈值电压分布的降低速率小于参考值时,具有监控存储器单元的存储器块可能不太可能变成坏块,并且当阈值电压分布的降低速率超过参考值时,具有监控存储器单元的存储器块可能有可能变成坏块。图5的存储器控制器200可以通过输出坏块处理命令bbs_cmd预先将可能变成坏块的存储器块作为坏块进行处理。
200.因此,通过基于监控存储器单元的阈值电压分布的降低速率而将具有监控存储器单元的存储器块作为坏块进行处理,可以防止不可由纠错码纠正(uecc)的错误的生成。
201.图12图示对监控存储器单元执行的循环的一个实施例。
202.参考图8和图12,图12图示通过具有与图8的第一阶跃电压vstep1不同的幅值的阶跃电压而执行的编程循环。图12的阶跃电压的幅值可以是第一阶跃电压vstep1的两倍。编程电压可以在每个循环中增加比图8的第一阶跃电压vstep1大的阶跃电压。
203.根据一个实施例,可以对监控存储器单元执行循环s1201至s1203。除了阶跃电压的幅值之外,循环s1201至s1203可以与图8的循环s701至s703相同。
204.根据一个实施例,循环s1201可以包括:编程操作,其将对应于第七编程状态p7的第一编程电压vpgm1施加到与监控存储器单元耦合的字线;以及验证操作,其施加验证电压vvfy以用于验证监控存储器单元是否被编程。
205.参考图8,循环s1201可以与图8的循环s701相同。
206.在执行循环s1201之后,可以通过从图1的存储器控制器200接收的暂停命令suspend_cmd来暂停下一循环。暂停的循环可以通过从图1的存储器控制器200接收的编程命令pgm_cmd而重新开始。
207.在接收到暂停命令suspend_cmd之后,可以基于从图1的存储器控制器200接收的编程命令pgm_cmd来执行循环s1202。循环s1202可以包括第12编程循环pl12以及对应于循环s1201的第11编程循环pl11。第12编程循环pl12可以包括:编程操作,其将比第一编程电压vpgm1大第一阶跃电压vstep1的两倍的编程电压(vpgm1+vstep1*2)施加到与监控存储器单元耦合的字线;以及验证操作,其施加验证电压vvfy。
208.换言之,与图8的循环s702相反,在将第一编程电压vpgm1和验证电压vvfy施加到与监控存储器单元耦合的字线之后,可以将比第一编程电压vpgm1大第一阶跃电压vstep1的两倍的编程电压(vpgm1+vstep1*2)和验证电压vvfy顺序地施加到该字线。
209.在执行循环s1202之后,可以通过从图1的存储器控制器200接收的暂停命令suspend_cmd来暂停循环。暂停的循环可以通过从图1的存储器控制器200接收的编程命令pgm_cmd而重新开始。
210.在接收到暂停命令suspend_cmd之后,可以基于从图1的存储器控制器200接收的编程命令pgm_cmd来执行循环s1203。循环s1203可以包括第13编程循环pl13以及对应于循环s1202的第11编程循环pl11和第12编程循环pl12。
211.换言之,不像图8的循环s703,在循环s1203中,在将第一编程电压vpgm1和验证电压vvfy施加到与监控存储器单元耦合的字线之后,可以向该字线顺序地施加:比第一编程电压vpgm1大第一阶跃电压vstep1的两倍的编程电压(vpgm1+vstep1*2)和验证电压vvfy,以及比第一编程电压vpgm1大第一阶跃电压vstep1的四倍的编程电压(vpgm1+vstep1*4)和验证电压vvfy。
212.因此,与图8的编程电压相比较,编程电压可以增加到如图12所示的不同幅值。
213.尽管图12中未示出,但是参考图9,当循环s1201至s1203被暂停时,图1的存储器控制器200可以将读取命令read_cmd输出到图1的存储器设备100,读取命令read_cmd用于检查监控存储器单元是否被编程到目标编程状态。
214.响应于在循环s1201至s1203中的每个循环被暂停之后输出的读取命令read_cmd,图1的存储器设备100可以通过读取电压vread对监控存储器单元执行读取操作,读取电压vread用于区分第六编程状态p6与第七编程状态p7。
215.在循环s1203的最后验证操作之后,当从图1的存储器控制器200接收到暂停命令suspend_cmd时,或者当与在接收暂停命令suspend_cmd之后接收的读取命令read_cmd相对应的读取操作被执行时,监控存储器单元的编程可以终止,并且可以基于监控存储器单元的阈值电压分布的移位的增加速率来确定是否将对应存储器块作为坏块进行处理。
216.图13图示对监控存储器单元执行的循环的一个实施例。
217.参考图8和图13,图13图示通过改变图8的循环s701至s703中执行的编程操作的数量和验证操作的数量(即,通过改变每个循环中包括的编程循环的数量)来对监控存储器单元进行编程的方法。
218.根据一个实施例,可以对监控存储器单元执行循环s1301至s1303。循环s1301至s1303可以与循环s701至s703相同,除了在循环s701至s703中执行的编程操作的数量和验证操作的数量,即,每个循环中的编程循环的数量。
219.根据一个实施例,循环s1301可以包括:编程操作,其将对应于第七编程状态p7的第一编程电压vpgm1施加到与监控存储器单元耦合的字线;以及验证操作,其施加验证电压vvfy以用于验证监控存储器单元是否被编程。
220.参考图8,循环s1301可以与图8的循环s701相同。
221.在执行循环s1301之后,可以通过从图1的存储器控制器200接收的暂停命令suspend_cmd来暂停下一循环。暂停的循环可以通过从图1的存储器控制器200接收的编程命令pgm_cmd而重新开始。
222.在接收到暂停命令suspend_cmd之后,可以基于从图1的存储器控制器200接收到的编程命令pgm_cmd来执行循环s1302。循环s1302可以包括第22编程循环pl22和第23编程循环pl23以及对应于循环s1301的第21编程循环pl21。在第22编程循环pl22和第23编程循环pl23中,编程电压可以增加第一阶跃电压vstep1。
223.更具体地,第22编程循环pl22可以包括:编程操作,其将比第一编程电压vpgm1大第一阶跃电压vstep1的编程电压(vpgm1+vstep1)施加到与监控存储器单元耦合的字线;以及验证操作,其将验证电压vvfy施加到该字线。第23编程循环pl23可以包括:编程操作,其将比第一编程电压vpgm1大第一阶跃电压vstep1的两倍的编程电压(vpgm1+vstep1*2)施加到与监控存储器单元耦合的字线;以及验证操作,其施加验证电压vvfy。
224.换言之,不像图8的循环s702,在循环s1302中,在将第一编程电压vpgm1和验证电压vvfy施加到与监控存储器单元耦合的字线之后,可以向该字线顺序地施加:比第一编程电压vpgm1大第一阶跃电压vstep1的编程电压(vpgm1+vstep1)和验证电压vvfy,以及比第一编程电压vpgm1大第一阶跃电压vstep1的两倍的编程电压(vpgm1+vstep1*2)和验证电压vvfy。
225.在执行循环s1302之后,可以通过从图1的存储器控制器200接收的暂停命令suspend_cmd来暂停编程循环。暂停的循环可以通过从图1的存储器控制器200接收的编程命令pgm_cmd而重新开始。
226.在接收到暂停命令suspend_cmd之后,可以基于从图1的存储器控制器200接收的编程命令pgm_cmd来执行循环s1303。循环s1303可以包括第24编程循环pl24和第25编程循环pl25以及对应于循环s1302的第21编程循环pl21至第23编程循环pl23。在第24编程循环pl24和第25编程循环pl25中,编程电压可以增加第一阶跃电压vstep1。
227.更具体地,不像图8的循环s703,在循环s1303中,在将第一编程电压vpgm1和验证电压vvfy施加到与监控存储器单元耦合的字线之后,可以向该字线顺序地施加:比第一编程电压vpgm1大第一阶跃电压vstep1的编程电压(vpgm1+vstep1)和验证电压vvfy,以及比第一编程电压vpgm1大第一阶跃电压vstep1的两倍的编程电压(vpgm1+vstep1*2)和验证电压vvfy,以及比第一编程电压vpgm1大第一阶跃电压vstep1的三倍的编程电压(vpgm1+vstep1*3)和验证电压vvfy,以及比第一编程电压vpgm1大第一阶跃电压vstep1的四倍的编程电压(vpgm1+vstep1*4)和验证电压vvfy。
228.尽管未在图13中示出,但是参考图9,当循环s1301至s1303被暂停时,图1的存储器控制器200可以将读取命令read_cmd输出到图1的存储器设备100,读取命令read_cmd用于检查监控存储器单元是否被编程到目标编程状态。
229.响应于在循环s1301至s1303中的每个循环被暂停之后输出的读取命令read_cmd,图1的存储器设备100可以通过读取电压vread对监控存储器单元执行读取操作,读取电压vread用于区分第六编程状态p6与第七编程状态p7。
230.在循环s1303的最后验证操作之后,当从图1的存储器控制器200接收到暂停命令suspend_cmd时,或者当执行与在接收暂停命令suspend_cmd之后接收的读取命令read_cmd相对应的读取操作时,监控存储器单元的编程可以终止,并且可以基于监控存储器单元的阈值电压分布的移位的增加速率来确定是否将对应存储器块作为坏块进行处理。
231.图14是图示根据本公开的一个实施例的存储器控制器的操作的图。
232.参考图14,在步骤s1401处,存储器控制器可以检测存储器设备的空闲状态。存储器设备的空闲状态可以是指其中存储器设备不执行任何操作达预定时间的状态。
233.在步骤s1403处,存储器控制器可以选择监控存储器单元。更具体地,存储器控制器可以确定相邻串,该相邻串耦合到的位线邻近与在检测到存储器设备的空闲状态之前对其执行编程操作或读取操作的存储器单元耦合的位线,并且存储器控制器可以选择预期在其中发生严重劣化的存储器单元作为监控存储器单元,该存储器单元是所确定的相邻串的一部分。
234.在步骤s1405处,存储器控制器可以向存储器设备输出编程命令以对监控存储器单元进行编程。编程命令可以是指提供将监控存储器单元编程到最高编程状态的指令的命令。
235.例如,当存储器设备通过三级单元(tlc)方法对存储器单元进行编程时,编程命令可以是提供将监控存储器单元编程到第七编程状态p7的指令的命令,第七编程状态p7是擦除状态e和第一编程状态p1至第七编程状态p7之中的最高编程状态。
236.存储器设备可以响应于编程命令而执行多个循环以对监控存储器单元进行编程。
多个循环中的每个循环可以包括一个或多个编程循环,并且编程循环中的每个编程循环可以包括编程操作和验证操作。可以确定循环的数量和被包括在循环中的每个循环中的编程循环的数量,以便对监控存储器单元进行编程。
237.在步骤s1407处,存储器控制器可以在预定时间输出暂停正对存储器设备执行的编程循环的暂停命令。该预定时间可以是指由存储器设备执行的编程循环的数量增加的时间。
238.例如,当存储器设备执行一个编程循环时,存储器控制器可以输出暂停命令。当多个循环响应于暂停命令而被暂停并且重新开始时,存储器控制器可以在存储器设备执行两个编程循环时输出暂停命令。当多个循环响应于暂停命令而被暂停并且重新开始时,存储器控制器可以在存储器设备执行三个编程循环时输出暂停命令。
239.在另一示例中,当存储器设备执行一个编程循环时,存储器控制器可以输出暂停命令。当多个循环响应于暂停命令而被暂停并且重新开始时,存储器控制器可以在存储器设备执行三个编程循环时输出暂停命令。当多个循环响应于暂停命令而被暂停并且重新开始时,存储器控制器可以在存储器设备执行五个编程循环时输出暂停命令。
240.进一步地,当在响应于暂停命令而暂停多个循环之后通过附加读取操作来确定监控存储器单元的阈值电压分布的增加速率时,存储器控制器可以在输出暂停命令之后附加地输出读取命令。可以通过读取电压来执行对应于读取命令的读取操作,该读取电压用于区分最高编程状态与邻近最高编程状态的编程状态。
241.在步骤s1409处,存储器控制器可以基于验证数据和/或读取数据来确定关断的存储器单元的数量。验证数据可以是指在输出暂停命令之前执行的最后验证操作期间读取的数据,并且读取数据可以是指在对应于在输出暂停命令之后输出的读取命令的读取操作期间读取的数据。
242.在步骤s1411处,存储器控制器可以确定在输出暂停命令之前执行的循环是否是最后的循环。当它被确定为多个循环之中的最后循环时(是),过程可以继续进行到步骤s1413。然而,当它不是多个循环之中的最后循环时(否),过程可以继续进行到步骤s1405,存储器控制器可以输出用于重新开始多个循环的编程命令。当重新开始多个循环时,可以从第一编程循环开始重新开始多个循环。
243.在步骤s1413处,存储器控制器可以根据基于关断的存储器单元的数量而确定的阈值电压分布的增加速率,来确定是否将具有监控存储器单元的存储器块作为坏块进行处理。
244.例如,当监控存储器单元的阈值电压分布的增加速率小于或等于参考值时,可以确定具有监控存储器单元的存储器块不太可能变成坏块。因此,当阈值电压分布的增加速率小于或等于参考值时,存储器控制器可以不将具有监控存储器单元的存储器块作为坏块进行处理。
245.因此,当阈值电压分布的增加速率超过参考值时,可以确定具有监控存储器单元的存储器块可能变成坏块。因此,当阈值电压分布的增加速率超过参考值时,存储器控制器可以将具有监控存储器单元的存储器块作为坏块进行处理。
246.图15是图示图1的存储器控制器的另一实施例的图。
247.存储器控制器1000可以耦合到主机和存储器设备。响应于来自主机的请求,存储
器控制器1000可以访问存储器设备。例如,存储器控制器1000可以控制存储器设备的写入、读取、擦除和后台操作。存储器控制器1000可以在存储器设备与主机之间提供接口。存储器控制器1000可以驱动用于控制存储器设备的固件。
248.参考图15,存储器控制器1000可以包括处理器1010、存储器缓冲器1020、纠错码(ecc)块1030、主机接口1040、缓冲器控制电路1050、存储器接口1060和总线1070。
249.总线1070可以在存储器控制器1000的部件之间提供信道。
250.处理器1010可以控制存储器控制器1000的整体操作,并且可以执行逻辑操作。处理器1010可以通过主机接口1040与外部主机通信,并且通过存储器接口1060与存储器设备通信。进一步地,处理器1010可以通过缓冲器控制电路1050与存储器缓冲器1020通信。处理器1010可以通过将存储器缓冲器1020用作工作存储器、高速缓冲存储器或缓冲存储器,来控制存储设备的操作。
251.处理器1010可以执行闪存转换层(ftl)的功能。处理器1010可以通过闪存转换层ftl将由主机提供的逻辑块地址lba转换成物理块地址pba。闪存转换层ftl可以接收逻辑块地址lba,并且通过使用映射表将逻辑块地址lba转换成物理块地址pba。依赖于映射单位,可以存在用于闪存转换层ftl的各种地址映射方法。典型的地址映射方法可以包括页映射方法、块映射方法和混合映射方法。
252.处理器1010可以随机化从主机接收的数据。例如,处理器1010可以使用随机化种子来随机化从主机接收的数据。经随机化的数据可以作为要存储的数据被提供给存储器设备,并且可以被编程在存储器单元阵列中。
253.处理器1010可以运行软件或固件以执行随机化和去随机化操作。
254.存储器缓冲器1020可以用作处理器1010的操作存储器、高速缓冲存储器或缓冲存储器。存储器缓冲器1020可以存储由处理器1010执行的代码和命令。存储器缓冲器1020可以存储由处理器1010处理的数据。存储器缓冲器1020可以包括静态ram(sram)或动态ram(dram)。
255.ecc块1030可以执行错误纠正。ecc块1030可以基于要通过存储器接口1060写入到存储器设备的数据来执行ecc编码。经ecc编码的数据可以通过存储器接口1060传送到存储器设备。ecc块1030可以基于通过存储器接口1060从存储器设备接收的数据来执行ecc解码。例如,ecc块1030可以作为存储器接口1060的部件被包括在存储器接口1060中。
256.主机接口1040可以响应于处理器1010而与外部主机通信。主机接口1040可以使用各种通信方法中的至少一种与外部主机通信,该各种通信方法诸如为通用串行总线(usb)、串行at附件(sata)、串行附接scsi(sas)、高速芯片间(hsic)、小型计算机系统接口(scsi)、外围部件互连(pci)、pci快速(pcie)、非易失性存储器快速(nvme)、通用闪存存储(ufs)、安全数字(sd)、多媒体卡(mmc)、嵌入式mmc(emmc)、双列直插式存储器模块(dimm)、寄存式dimm(rdimm)和减载dimm(lrdimm)通信方法。
257.缓冲器控制电路1050可以响应于处理器1010而控制存储器缓冲器1020。
258.存储器接口1060可以响应于处理器1010而与存储器设备通信。存储器接口1060可以通过信道将命令、地址和数据传输到存储器设备/从存储器设备接收命令、地址和数据。
259.例如,存储器控制器1000可以不包括存储器缓冲器1020和缓冲器控制电路1050。
260.例如,处理器1010可以使用代码来控制存储器控制器1000的操作。处理器1010可
以从存储器控制器1000中提供的非易失性存储器设备(例如,rom)加载代码。在另一示例中,处理器1010可以通过存储器接口1060从存储器设备加载代码。
261.例如,存储器控制器1000的总线1070可以被划分成控制总线和数据总线。数据总线可以被配置成在存储器控制器1000中传输数据,并且控制总线可以被配置成在存储器控制器1000中传输控制信息,诸如命令或地址。数据总线和控制总线可以与彼此隔离,并且可以既不干扰彼此也不影响彼此。数据总线可以耦合到主机接口1040、缓冲器控制电路1050、ecc块1030和存储器接口1060。控制总线可以耦合到主机接口1040、处理器1010、缓冲器控制电路1050、存储器缓冲器1020和存储器接口1060。
262.根据一个实施例,处理器1010可以确定相邻串,该相邻串邻近耦合到在被包括在图1的存储器设备100中的存储器单元之中的对其执行编程操作或读取操作的存储器单元的串。另外,处理器1010可以在所确定的相邻串的存储器单元之中选择耦合到预定字线的存储器单元作为监控存储器单元。
263.当监控存储器单元被选择时,处理器1010可以控制图1的存储器设备100执行将监控存储器单元编程到最高编程状态中的多个循环。该多个循环中的每个循环可以包括至少一个编程循环,并且每个循环中包括的编程循环的数量可以变化。另外,每个编程循环可以包括一个编程操作和一个验证操作。
264.根据一个实施例,当对监控存储器单元执行多个循环时,处理器1010可以在预定时间输出暂停命令。该预定时间可以是指对图1的存储器设备100执行以对监控存储器单元进行编程的编程循环的数量增加的时间。
265.例如,当用于对监控存储器单元进行编程的一个编程循环被执行时,处理器1010可以输出暂停命令。当多个循环响应于暂停命令而被暂停并且然后重新开始时,处理器1010可以在两个编程循环被执行之后输出暂停命令。换言之,当对图1的存储器设备100执行的编程循环的数量增加时,可以输出暂停命令。
266.根据一个实施例,在暂停命令被输出之后,处理器1010可以附加地输出读取命令。可以通过用于区分最高编程状态与邻近最高编程状态的编程状态的读取电压,来执行对应于读取命令的读取操作,以便检查监控存储器单元是否被编程到最高编程状态。
267.在另一实施例中,处理器1010可以在暂停命令被输出之后不附加地输出读取命令。
268.在暂停命令或读取命令被输出之后,处理器1010可以基于在暂停命令被输出之前的最后验证操作期间读取的验证数据,或基于在对应于读取命令的读取操作期间读取的读取数据,来确定关断的存储器单元的数量。
269.根据一个实施例,当多个循环之中的最后循环未被执行时,处理器1010可以将用于重新开始暂停的循环的编程命令输出到图1的存储器设备100。换言之,可以重复多个循环的暂停和重新开始,直到被执行以对监控存储器单元进行编程的多个循环之中的最后循环被执行。
270.根据一个实施例,在多个循环之中的最后循环被执行之后,当暂停命令或读取命令被输出并且关断的存储器单元的数量被确定时,处理器1010可以基于关断的存储器单元来确定阈值电压分布的增加速率。处理器1010可以根据阈值电压分布的增加速率来确定是否将具有监控存储器单元的存储器块作为坏块进行处理。
271.例如,当监控存储器单元的阈值电压分布的增加速率小于或等于参考值时,具有监控存储器单元的存储器块可以不作为坏块被处理。然而,当阈值电压分布的增加速率超过参考值时,具有监控存储器单元的存储器块可以作为坏块被处理。
272.图16是图示存储器卡系统2000的框图,根据一个实施例的存储设备被应用于该存储器卡系统2000。
273.参考图16,存储器卡系统2000可以包括存储器控制器2100、存储器设备2200和连接器2300。
274.存储器控制器2100可以耦合到存储器设备2200。存储器控制器2100可以访问存储器设备2200。例如,存储器控制器2100可以控制存储器设备2200的读取、写入、擦除和后台操作。存储器控制器2100可以被配置成在存储器设备2200与主机之间提供接口。存储器控制器2100可以被配置成驱动用于控制存储器设备2200的固件。存储器设备2200可以以与上面参考图1描述的存储器设备100相同的方式来实现。
275.在一个实施例中,存储器控制器2100可以包括诸如随机存取存储器(ram)、处理单元、主机接口、存储器接口和ecc块的部件。
276.存储器控制器2100可以通过连接器2300与外部设备通信。存储器控制器2100可以基于特定通信协议与外部设备(例如,主机)通信。例如,存储器控制器2100可以通过各种通信协议中的至少一种与外部设备通信,该各种通信协议诸如为通用串行总线(usb)、多媒体卡(mmc)、嵌入式mmc(emmc)、外围部件互连(pci)、pci-快速(pci-e)、高级技术附件(ata)、串行-ata(sata)、并行-ata(pata)、小型计算机系统接口(scsi)、增强型小型盘接口(esdi)、集成驱动电子器件(ide)、火线、通用闪存存储(ufs)、wifi、蓝牙和非易失性存储器快速(nvme)协议。例如,连接器2300可以由上述各种通信协议中的至少一种来限定。
277.在一个实施例中,存储器设备2200可以被体现为各种非易失性存储器设备中的任何非易失性存储器设备,该各种非易失性存储器设备诸如为电可擦除和可编程rom(eeprom)、nand闪存存储器、nor闪存存储器、相变ram(pram)、电阻式ram(reram)、铁电ram(fram)和自旋扭矩磁性ram(stt-mram)。
278.存储器控制器2100和存储器设备2200可以被集成到单个半导体设备中以形成存储器卡。例如,存储器控制器2100和存储器设备2200可以被集成到单个半导体设备中,并且形成诸如以下的存储器卡:个人计算机存储器卡国际协会(pcmcia)、紧凑型闪存卡(cf)、智能媒体卡(sm或smc)、记忆棒多媒体卡(mmc、rs-mmc或微型mmc)、sd卡(sd、迷你sd、微型sd或sdhc)、通用闪存存储(ufs)等。
279.根据一个实施例,存储器控制器2100可以确定相邻串,该相邻串邻近耦合到在被包括在存储器设备2200中的存储器单元之中的对其执行编程操作或读取操作的存储器单元的串。另外,存储器控制器2100可以在所确定的相邻串的存储器单元之中选择耦合到预定字线的存储器单元作为监控存储器单元。
280.当监控存储器单元被选择时,存储器控制器2100可以控制存储器设备2200执行将监控存储器单元编程到最高编程状态中的多个循环。该多个循环中的每个循环可以包括至少一个编程循环,并且每个循环中包括的编程循环的数量可以变化。另外,每个编程循环可以包括一个编程操作和一个验证操作。
281.根据一个实施例,当对监控存储器单元执行多个循环时,存储器控制器2100可以
在预定时间输出暂停命令。该预定时间可以是指对存储器设备2200执行以对监控存储器单元进行编程的编程循环的数量增加的时间。
282.例如,当用于对监控存储器单元进行编程的一个编程循环被执行时,存储器控制器2100可以输出暂停命令。当多个循环响应于暂停命令而被暂停并且然后重新开始时,存储器控制器2100可以在两个编程循环被执行之后输出暂停命令。换言之,当对存储器设备2200执行的编程循环的数量增加时,可以输出暂停命令。
283.根据一个实施例,在暂停命令被输出之后,存储器控制器2100可以附加地输出读取命令。可以通过用于区分最高编程状态与邻近最高编程状态的编程状态的读取电压,来执行对应于读取命令的读取操作,以便检查监控存储器单元是否被编程到最高编程状态。
284.在另一实施例中,存储器控制器2100可以在暂停命令被输出之后不附加地输出读取命令。
285.在暂停命令或读取命令被输出之后,存储器控制器2100可以基于在暂停命令被输出之前的最后验证操作期间读取的验证数据,或基于在对应于读取命令的读取操作期间读取的读取数据,来确定关断的存储器单元的数量。
286.根据一个实施例,当多个循环之中的最后循环未被执行时,存储器控制器2100可以将用于重新开始暂停的循环的编程命令输出到存储器设备2200。换言之,可以重复多个循环的暂停和重新开始,直到被执行以对监控存储器单元进行编程的多个循环之中的最后循环被执行。
287.根据一个实施例,在多个循环之中的最后循环被执行之后,当暂停命令或读取命令被输出并且关断的存储器单元的数量被确定时,存储器控制器2100可以基于关断的存储器单元来确定阈值电压分布的增加速率。存储器控制器2100可以根据阈值电压分布的增加速率来确定是否将具有监控存储器单元的存储器块作为坏块进行处理。
288.例如,当监控存储器单元的阈值电压分布的增加速率小于或等于参考值时,具有监控存储器单元的存储器块可以不作为坏块被处理。然而,当阈值电压分布的增加速率超过参考值时,具有监控存储器单元的存储器块可以作为坏块被处理。
289.图17是图示固态驱动器(ssd)系统3000的一个示例的框图,根据一个实施例的存储设备被应用于该ssd系统3000。
290.参考图17,ssd系统3000可以包括主机3100和ssd 3200。ssd3200可以通过信号连接器3001与主机3100交换信号sig,并且可以通过功率连接器3002接收功率pwr。ssd 3200可以包括ssd控制器3210、多个闪存存储器3221至322n、辅助电源3230和缓冲存储器3240。
291.在一个实施例中,ssd控制器3210可以执行上面参考图1所描述的存储器控制器200的功能。
292.ssd控制器3210可以响应于从主机3100接收的信号sig而控制多个闪存存储器3221至322n。根据一个实施例,可以基于主机3100和ssd 3200的接口来限定信号sig。根据一个实施例,信号sig可以是基于主机3100和ssd 3200的接口的信号。例如,信号sig可以由各种接口中的至少一种来限定,该各种接口诸如为通用串行总线(usb)、多媒体卡(mmc)、嵌入式mmc(emmc)、外围部件互连(pci)、pci-快速(pci-e)、高级技术附件(ata)、串行-ata(sata)、并行-ata(pata)、小型计算机系统接口(scsi)、增强型小型盘接口(esdi)、集成驱动电子器件(ide)、火线、通用闪存存储(ufs)、wifi、蓝牙和非易失性存储器快速(nvme)接
口。
293.辅助电源3230可以通过功率连接器3002耦合到主机3100。辅助电源3230可以被供应有来自主机3100的功率pwr并且利用该功率pwr进行充电。当功率未顺畅地从主机3100被供应时,辅助电源3230可以供应ssd 3200的功率。例如,辅助电源3230可以位于ssd 3200的内部或外部。例如,辅助电源3230可以设置在主板中,并且可以向ssd 3200供应辅助功率。
294.缓冲存储器3240可以用作ssd 3200的缓冲存储器。例如,缓冲存储器3240可以临时存储从主机3100接收的数据或从多个闪存存储器3221至322n接收的数据,或者可以临时存储闪存存储器3221至322n的元数据(例如,映射表)。缓冲存储器3240可以包括:易失性存储器,诸如dram、sdram、ddr sdram、lpddr sdram和gram;或非易失性存储器,诸如fram、reram、stt-mram和pram。
295.根据一个实施例,ssd控制器3210可以确定相邻串,该相邻串邻近耦合到在被包括在多个闪存存储器3221至322n中的存储器单元之中的对其执行编程操作或读取操作的存储器单元的串。另外,ssd控制器3210可以在所确定的相邻串的存储器单元之中选择耦合到预定字线的存储器单元作为监控存储器单元。
296.当监控存储器单元被选择时,ssd控制器3210可以控制闪存存储器3221至322n执行将监控存储器单元编程到最高编程状态的多个循环。该多个循环中的每个循环可以包括至少一个编程循环,并且每个循环中包括的编程循环的数量可以变化。另外,每个编程循环可以包括一个编程操作和一个验证操作。
297.根据一个实施例,当对监控存储器单元执行多个循环时,ssd控制器3210可以在预定时间输出暂停命令。该预定时间可以是指对闪存存储器3221至322n执行以对监控存储器单元进行编程的编程循环的数量增加的时间。
298.例如,当用于对监控存储器单元进行编程的一个编程循环被执行时,ssd控制器3210可以输出暂停命令。当多个循环响应于暂停命令而被暂停并且然后重新开始时,ssd控制器3210可以在两个编程循环被执行之后输出暂停命令。换言之,当对闪存存储器3221至322n执行的编程循环的数量增加时,可以输出暂停命令。
299.根据一个实施例,在暂停命令被输出之后,ssd控制器3210可以附加地输出读取命令。可以通过用于区分最高编程状态与邻近最高编程状态的编程状态的读取电压,来执行对应于读取命令的读取操作,以便检查监控存储器单元是否被编程到最高编程状态。
300.在另一实施例中,ssd控制器3210可以在暂停命令被输出之后不附加地输出读取命令。
301.在暂停命令或读取命令被输出之后,ssd控制器3210可以基于在暂停命令被输出之前的最后验证操作期间读取的验证数据,或基于在对应于读取命令的读取操作期间读取的读取数据,来确定关断的存储器单元的数量。
302.根据一个实施例,当多个循环之中的最后循环未被执行时,ssd控制器3210可以将用于重新开始暂停的循环的编程命令输出到闪存存储器3221至322n。换言之,可以重复多个循环的暂停和重新开始,直到被执行以对监控存储器单元进行编程的多个循环之中的最后循环被执行。
303.根据一个实施例,在多个循环之中的最后循环被执行之后,当暂停命令或读取命令被输出并且关断的存储器单元的数量被确定时,ssd控制器3210可以基于关断的存储器
单元来确定阈值电压分布的增加速率。ssd控制器3210可以根据阈值电压分布的增加速率来确定是否将具有监控存储器单元的存储器块作为坏块进行处理。
304.例如,当监控存储器单元的阈值电压分布的增加速率小于或等于参考值时,具有监控存储器单元的存储器块可以不作为坏块被处理。然而,当阈值电压分布的增加速率超过参考值时,具有监控存储器单元的存储器块可以作为坏块被处理。
305.图18是图示用户系统4000的框图,根据一个实施例的存储设备被应用于该用户系统4000。
306.参考图18,用户系统4000可以包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。
307.应用处理器4100可以运行用户系统4000中包括的部件、操作系统(os)或用户程序。例如,应用处理器4100可以包括控制器、接口、图形引擎等,以用于控制用户系统4000中包括的部件。应用处理器4100可以被提供作为芯片上系统(soc)。
308.存储器模块4200可以用作用户系统4000的主存储器、工作存储器、缓冲存储器或高速缓冲存储器。存储器模块4200可以包括:易失性ram,诸如dram、sdram、ddr sdram、ddr2 sdram、ddr3 sdram、lpddr sdarm、lpddr3 sdram和lpddr3sdram;或非易失性ram,诸如pram、reram、mram和fram。例如,应用处理器4100和存储器模块4200可以基于叠层封装(pop)来封装,并且然后可以被提供作为单个半导体封装。
309.网络模块4300可以与外部设备通信。例如,网络模块4300可以支持无线通信,诸如码分多址(cdma)、全球移动通信系统(gsm)、宽带cdma(wcdma)、cdma-2000、时分多址(tdma)、长期演进(lte)、wimax、wlan、uwb、蓝牙或wifi通信。例如,网络模块4300可以被包括在应用处理器4100中。
310.存储模块4400可以存储数据。例如,存储模块4400可以存储从应用处理器4100接收的数据。替代地,存储模块4400可以将存储模块4400中存储的数据传输到应用处理器4100。例如,存储模块4400可以被体现为非易失性半导体存储器设备,例如相变ram(pram)、磁性ram(mram)、电阻式ram(rram)、nand闪存存储器、nor闪存存储器或具有三维(3d)结构的nand闪存存储器。例如,存储模块4400可以被提供作为诸如存储器卡的可移除存储介质(即,可移除驱动器)或用户系统4000的外部驱动器。
311.例如,存储模块4400可以包括多个非易失性存储器设备,并且该多个非易失性存储器设备可以以与上面参考图2和图3所描述的存储器设备相同的方式进行操作。存储模块4400可以以与上面参考图1所描述的存储设备50相同的方式进行操作。
312.用户接口4500可以包括向应用处理器4100输入数据或指令或者向外部设备输出数据的接口。根据一个实施例,用户接口4500可以包括用户输入接口,例如键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、相机、麦克风、陀螺仪传感器、振动传感器和压电设备。用户接口4500还可以包括用户输出接口,例如液晶显示器(lcd)、有机发光二极管(oled)显示设备、有源矩阵oled(amoled)显示设备、led、扬声器和监视器。
313.根据一个实施例,应用处理器4100可以确定相邻串,该相邻串邻近耦合到在被包括在存储模块4400中的存储器单元之中的对其执行编程操作或读取操作的存储器单元的串。另外,应用处理器4100可以在所确定的相邻串的存储器单元之中选择耦合到预定字线的存储器单元作为监控存储器单元。
314.当监控存储器单元被选择时,应用处理器4100可以控制存储模块4400执行将监控存储器单元编程到最高编程状态中的多个循环。该多个循环中的每个循环可以包括至少一个编程循环,并且每个循环中包括的编程循环的数量可以变化。此外,每个编程循环可以包括一个编程操作和一个验证操作。
315.根据一个实施例,当对监控存储器单元执行多个循环时,应用处理器4100可以在预定时间输出暂停命令。该预定时间可以是指对存储模块4400执行以对监控存储器单元进行编程的编程循环的数量增加的时间。
316.例如,当用于对监控存储器单元进行编程的一个编程循环被执行时,应用处理器4100可以输出暂停命令。当多个循环响应于暂停命令而被暂停并且然后重新开始时,应用处理器4100可以在两个编程循环被执行之后输出暂停命令。换言之,当对存储模块4400执行的编程循环的数量增加时,可以输出暂停命令。
317.根据一个实施例,在暂停命令被输出之后,应用处理器4100可以附加地输出读取命令。可以通过用于区分最高编程状态与邻近最高编程状态的编程状态的读取电压,来执行对应于读取命令的读取操作,以便检查监控存储器单元是否被编程到最高编程状态。
318.在另一实施例中,应用处理器4100可以在暂停命令被输出之后不附加地输出读取命令。
319.在暂停命令或读取命令被输出之后,应用处理器4100可以基于在暂停命令被输出之前的最后验证操作期间读取的验证数据,或基于在对应于读取命令的读取操作期间读取的读取数据,来确定关断的存储器单元的数量。
320.根据一个实施例,当多个循环之中的最后循环未被执行时,存储器控制器4100可以将用于重新开始暂停的循环的编程命令输出到存储模块4400。换言之,可以重复多个循环的暂停和重新开始,直到被执行以对监控存储器单元进行编程的多个循环之中的最后循环被执行。
321.根据一个实施例,在多个循环之中的最后循环被执行之后,当暂停命令或读取命令被输出并且关断的存储器单元的数量被确定时,应用处理器4100可以基于关断的存储器单元来确定阈值电压分布的增加速率。应用处理器4100可以根据阈值电压分布的增加速率来确定是否将具有监控存储器单元的存储器块确定为坏块。
322.例如,当监控存储器单元的阈值电压分布的增加速率小于参考值时,具有监控存储器单元的存储器块可以不作为坏块被处理。然而,当阈值电压分布的增加速率超过参考值时,具有监控存储器单元的存储器块可以作为坏块被处理。
323.根据本公开,可以对串的存储器单元执行编程循环,该串邻近耦合到对其执行编程操作或读取操作的存储器单元的串,并且根据对应存储器单元的阈值电压分布的增加速率,可以预先将具有存储器单元的存储器块作为坏块进行处理。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1