本申请享受以日本专利申请2019-166519号(申请日:2019年9月12日)和日本专利申请2020-104833号(申请日:2020年6月17日)为基础申请的优先权。本申请通过参照这些基础申请而包含基础申请的全部内容。
本发明的实施方式涉及存储器系统。
背景技术:
在nand型闪速存储器中,一般是对存储单元写入由多位(bit,比特)构成的多值数据,对存储单元写入由3位构成的多值数据的tlc(triplelevelcell,三阶存储单元)技术得到了实用化。考虑今后写入由4位构成的多值数据的qlc(quadruplelevelcell,四阶存储单元)技术会成为主流。
在qlc中,为了避免单元间相互干涉,研究了如下方法:在对第1存储单元同时写入了4位数据之后,对相邻单元也同样地同时写入4位数据,然后,再次对第1存储单元同时再写入4位数据。然而,在该方法中,为了再写入4位数据,需要将4位数据保持在存储器控制器内的写入缓冲器中直到再写入完成。
近年的nand存储器被进行了三维化,存在下述问题:成为必需的写入缓冲器的存储器容量增大、内置了写入缓冲器的存储器控制器的成本变高。因此,在三维的非易失性存储器中,也需要减少存储器控制器的写入缓冲量的对策。
作为在避免单元间相互干涉的同时削减存储器控制器的写入缓冲量的对策,已知如下方法:在对存储单元写入各位的数据时,通过分为两个阶段(stage)来进行写入,使得不需要进行全部位数据的再写入。
然而,在该方法中,存在对存储单元写入各位数据时的位错误率的不平衡大这一问题。
要提高qlc技术的可靠性,需要避免单元间相互干涉、并削减存储器控制器内的写入缓冲器的容量、且抑制写入各位数据时的位错误率的不平衡。
技术实现要素:
本发明的一技术方案提供一种存储器系统,其能够避免单元间相互干涉、并削减存储器控制器内的写入缓冲器的容量、且抑制写入各位数据时的位错误率的不平衡。
根据本实施方式,提供一种存储器系统,具备:
非易失性存储器,其具有多个存储单元,所述多个存储单元中的各个能够通过16个阈值区域来存储由第1位~第4位表示的4位数据,所述16个阈值区域包括表示数据被擦除了的擦除状态的第1阈值区域、和电压电平比所述第1阈值区域的电压电平高的表示被写入了数据的写入状态的第2阈值区域~第16阈值区域;和
控制器,其在使所述非易失性存储器进行了写入所述第1位和所述第2位的数据的第1编程之后,使所述非易失性存储器进行写入所述第3位和所述第4位的数据的第2编程,
存在于所述第1阈值区域~所述第16阈值区域中的相邻的阈值区域之间的15个边界中的用于所述第1位的数据的值的判定的第1边界的数量、用于所述第2位的数据的值的判定的第2边界的数量、用于所述第3位的数据的值的判定的第3边界的数量、用于所述第4位的数据的值的判定的第4边界的数量依次为1、4、5、5或者4、1、5、5,
所述控制器构成为,使所述非易失性存储器进行所述第1编程,以使得所述存储单元中的阈值区域相应于所述第1位和所述第2位的数据而变为表示数据被擦除了的擦除状态的第17阈值区域、和电压电平比所述第17阈值区域的电压电平高的表示被写入了数据的写入状态的第18阈值区域~第20阈值区域中的某一阈值区域,
所述第n阈值区域的电压电平比所述第(n-1)阈值区域的电压电平高,n为2以上且16以下的自然数,
所述第k阈值区域的电压电平比所述第(k-1)阈值区域的电压电平高,k为18以上且20以下的自然数,
所述控制器构成为,使所述非易失性存储器进行所述第2编程,以使得所述存储单元中的阈值区域相应于所述第3位和所述第4位的数据而从所述第17阈值区域~所述第20阈值区域中的某一阈值区域变为所述第1阈值区域~所述第16阈值区域中的4个阈值区域中的某一阈值区域,
处于所述4个阈值区域中的电压电平最低的阈值区域与电压电平最高的阈值区域之间的阈值区域的个数为4个以内。
附图说明
图1是表示第1实施方式涉及的存储器系统的概略构成的框图。
图2是表示本实施方式的非易失性存储器的内部构成的一个例子的框图。
图3是表示三维构造的存储单元阵列的一个例子的电路图。
图4是三维构造的nand存储器的存储单元阵列的一部分区域的剖视图。
图5是表示第1实施方式的阈值区域的一个例子的图。
图6是表示第1实施方式的数据编码的一个例子的图。
图7a是表示第1实施方式中的编程后的阈值区域的图。
图7b是表示图7a的各阈值区域的4位数据的图。
图8a是表示第1实施方式的编程顺序的第1例的图。
图8b是表示第1实施方式的编程顺序的第2例的图。
图8c是表示第1实施方式的编程顺序的第3例的图。
图9是表示第1实施方式涉及的1块的量整体的写入步骤的第1例的流程图。
图10是表示1st(第1)阶段的写入步骤的第1例的流程图。
图11是表示2nd(第2)阶段的写入步骤的第1例的流程图。
图12是用于对多次的读出结果的多数决定(择多)处理进行说明的图。
图13a是表示2nd阶段中的写入步骤的变形例的子流程图。
图13b是后续于图13a的流程图。
图14是用于对foggy-fine(模糊-精细)编程的写入缓冲器的数据量进行说明的图。
图15是用于对第1实施方式的写入缓冲量进行说明的图。
图16是表示第2阶段写入前的页读出的处理步骤的流程图。
图17是表示编程完成到了第2阶段的状态下的页读出的处理步骤的流程图。
图18a是表示1-4-5-5数据编码的一变形例的图。
图18b是表示图18a的各阈值区域的4位数据的图。
图19a是表示其他一变形例的3-2-5-5数据编码的图。
图19b是表示图19a的各阈值区域的4位数据的图。
图19c是表示适于一变形例涉及的页读出处理的数据编码的图。
图19d是表示一变形例涉及的读出处理步骤的流程图。
图19e是选择字线、readybusy(就绪/忙)信号线、输出数据线的电压波形图。
图20a是表示作为其他一变形例的3-4-4-4数据编码的图。
图20b是表示图20a的各阈值区域的4位数据的图。
图21a是表示3-4-4-4数据编码的第1候选例的图。
图21b是表示图20a的各阈值区域的4位数据的图。
图22a是表示3-4-4-4数据编码的第2候选例的图。
图22b是表示图22a的各阈值区域的4位数据的图。
图23a是表示3-4-4-4数据编码的第3候选例的图。
图23b是表示图23a的各阈值区域的4位数据的图。
图24a是表示3-4-4-4数据编码的第4候选例的图。
图24b是表示图24a的各阈值区域的4位数据的图。
图25a是表示3-4-4-4数据编码的第5候选例的图。
图25b是表示图25a的各阈值区域的4位数据的图。
图26a是表示3-4-4-4数据编码的第6候选例的图。
图26b是表示图26a的各阈值区域的4位数据的图。
图27a是表示3-4-4-4数据编码的第7候选例的图。
图27b是表示图27a的各阈值区域的4位数据的图。
图28a是表示3-4-4-4数据编码的第8候选例的图。
图28b是表示图28a的各阈值区域的4位数据的图。
图29a是表示3-4-4-4数据编码的第9候选例的图。
图29b是表示图29a的各阈值区域的4位数据的图。
图30a是表示3-4-4-4数据编码的第10候选例的图。
图30b是表示图30a的各阈值区域的4位数据的图。
图31a是表示3-4-4-4数据编码的第11候选例的图。
图31b是表示图31a的各阈值区域的4位数据的图。
图32a是表示3-4-4-4数据编码的第12候选例的图。
图32b是表示图32a的各阈值区域的4位数据的图。
图33a是表示3-4-4-4数据编码的第13候选例的图。
图33b是表示图33a的各阈值区域的4位数据的图。
图34a是表示3-4-4-4数据编码的第14候选例的图。
图34b是表示图34a的各阈值区域的4位数据的图。
图35a是表示3-4-4-4数据编码的第15候选例的图。
图35b是表示图34a的各阈值区域的4位数据的图。
图36a是表示3-4-4-4数据编码的第16候选例的图。
图36b是表示图36a的各阈值区域的4位数据的图。
图37a是表示3-4-4-4数据编码的第17候选例的图。
图37b是表示图37a的各阈值区域的4位数据的图。
图38a是表示图20a的4-3-4-4数据编码的一变形例的图。
图38b是表示图38a的各阈值区域的4位数据的图。
图39是表示1-4-5-5数据编码的其他变形例的图。
图40是表示1-4-5-5数据编码的其他变形例的图。
图41是表示3-2-5-5数据编码的其他变形例的图。
图42是表示3-5-3-4数据编码的其他变形例的图。
图43是表示3-5-3-4数据编码的其他变形例的图。
图44是表示1-2-6-6数据编码的其他变形例的图。
图45是表示1-2-6-6数据编码的其他变形例的图。
图46是表示1-2-6-6数据编码的其他变形例的图。
图47是表示1-2-4-8数据编码的其他变形例的图。
图48是表示1-2-5-7数据编码的其他变形例的图。
图49是表示1-2-7-5数据编码的其他变形例的图。
图50是表示1-2-5-7数据编码的其他变形例的图。
图51是表示1-2-5-7数据编码的其他变形例的图。
图52是表示第2实施方式涉及的1块的量整体的写入步骤的流程图。
图53是表示第2实施方式涉及的第1阶段和第2阶段的写入步骤的流程图。
图54是表示第3实施方式中的编程后的各阈值区域的图。
图55a是表示图56的各阈值区域s0~s15的4位数据的图。
图55b是表示图56的各阈值区域s0~s15的4位数据的其他一个例子的图。
图55c是表示图56的各阈值区域s0~s15的4位数据的其他一个例子的图。
图56a是表示第1变形例的1-6-4-4数据编码的阈值区域的图。
图56b是表示图58a的各阈值区域的4位数据的图。
图57a是表示第2变形例的1-2-6-6数据编码的阈值区域的图。
图57b是表示图57a的各阈值区域的4位数据的图。
图58a是表示第3变形例的1-4-5-5数据编码的阈值区域的图。
图58b是表示图58a的各阈值区域的4位数据的图。
图59是表示第3实施方式涉及的第1阶段中的写入步骤的子流程图。
图60是表示第3实施方式涉及的第2阶段中的写入步骤的子流程图。
图61是表示第3实施方式涉及的第2阶段中的写入步骤的一变形例的子流程图。
图62是表示第3实施方式涉及的存储器系统1中的第2阶段写入前的字线的页读出的处理步骤的流程图。
图63是表示在第4实施方式涉及的存储器系统1中编程完成到了第2阶段的字线的页读出的处理步骤的流程图。
图64是表示1-4-5-5数据编码的其他变形例的图。
图65是表示1-5-5-4数据编码的其他变形例的图。
图66是表示1-5-5-4数据编码的其他变形例的图。
图67是表示1-5-5-4数据编码的其他变形例的图。
图68是表示1-4-5-5数据编码的其他变形例的图。
图69是表示1-4-5-5数据编码的其他变形例的图。
图70是表示1-5-4-5数据编码的其他变形例的图。
图71是表示1-4-5-5数据编码的其他变形例的图。
图72是表示1-4-5-5数据编码的其他变形例的图。
图73是表示1-5-4-5数据编码的其他变形例的图。
图74是表示1-5-4-5数据编码的其他变形例的图。
图75是表示1-5-4-5数据编码的其他变形例的图。
图76是表示1-4-6-4数据编码的其他变形例的图。
图77是表示1-4-6-4数据编码的其他变形例的图。
图78是表示1-4-6-4数据编码的其他变形例的图。
图79是表示1-4-6-4数据编码的其他变形例的图。
图80是表示1-4-6-4数据编码的其他变形例的图。
图81是表示1-6-4-4数据编码的其他变形例的图。
图82是表示1-4-4-6数据编码的其他变形例的图。
图83是表示1-4-4-6数据编码的其他变形例的图。
图84是表示1-4-4-6数据编码的其他变形例的图。
图85是表示1-5-6-3数据编码的其他变形例的图。
图86是表示1-5-6-3数据编码的其他变形例的图。
图87是表示1-3-6-5数据编码的其他变形例的图。
图88是表示1-3-6-5数据编码的其他变形例的图。
图89是表示1-3-6-5数据编码的其他变形例的图。
图90是表示1-3-5-6数据编码的其他变形例的图。
图91是表示1-3-5-6数据编码的其他变形例的图。
图92是表示1-3-6-5数据编码的其他变形例的图。
图93是表示1-6-5-3数据编码的其他变形例的图。
图94是表示1-3-5-6数据编码的其他变形例的图。
图95是表示1-3-5-6数据编码的其他变形例的图。
图96是表示1-5-3-6数据编码的其他变形例的图。
图97是表示1-3-6-5数据编码的其他变形例的图。
图98是表示1-3-5-6数据编码的其他变形例的图。
图99是表示1-2-6-6数据编码的其他变形例的图。
图100是表示1-2-6-6数据编码的其他变形例的图。
图101a是表示第4实施方式中的编程后的各阈值区域的图。
图101b是表示分配给图101a的各阈值区域的4位数据的图。
图102a是表示第4实施方式的一变形例涉及的阈值区域的图。
图102b是表示分配给图101a的各阈值区域的编程后的各阈值区域的图。
图103是表示1-2-4-8数据编码的一变形例的图。
标号说明
1存储器系统、2存储器控制器、3非易失性存储器、4主机处理器、5nand存储器、6ram、7rom、8处理器、9主机接口、10ecc电路、11存储器接口、12内部总线、21nandi/o接口、22控制部、23nand存储单元阵列、24页缓冲器、31振荡器、32定序器、33命令用户接口、34电压供给部、35列计数器、36串行访问控制器、37行译码器、38读出放大器(senseamplifier)、41p型阱区域、42、43、44布线层、45存储孔(memoryhole)、46块绝缘膜、47电荷蓄积层、48栅极绝缘膜、49导电膜
具体实施方式
以下,参照附图对存储器系统的实施方式进行说明。以下,以存储器系统的主要的构成部分为中心进行说明,但在存储器系统中可以存在未图示或者未说明的构成部分、功能。
(第1实施方式)
图1是表示第1实施方式涉及的存储器系统1的概略构成的框图。图1的存储器系统1具备存储器控制器2和非易失性存储器3。图1的存储器系统1能够与主机处理器(以下简称为主机)4连接。主机4例如是个人计算机、便携终端等的电子设备。
非易失性存储器3是以非易失性的方式存储数据的存储器,例如具备nand闪速存储器(以下有时也称为nand存储器)5。在本实施方式中,对非易失性存储器3为具有每存储单元能够存储4位的数据的存储单元的4位/单元(qlc:quadlevelcell)的nand存储器5的例子进行说明。本实施方式涉及的非易失性存储器3具有以立体的方式层叠有存储单元的三维构造。非易失性存储器3具有:能够通过表示数据被擦除了的擦除状态的阈值区域、和电压电平比表示擦除状态的阈值区域的电压电平高的表示被写入了数据的写入状态的15个阈值区域来存储第1位~第4位的数据的多个存储单元。
存储器控制器2按照来自主机4的写入命令,对数据向非易失性存储器3的写入进行控制。另外,存储器控制器2按照来自主机4的读出命令,对数据从非易失性存储器3的读出进行控制。存储器控制器2具备ram(randomaccessmemory,随机访问存储器)6、rom(readonlymemory,只读存储器)7、处理器8、主机接口9、ecc(errorcheckandcorrect,错误检查和纠正)电路10以及存储器接口11。ram6、处理器8、主机接口9、ecc电路10以及存储器接口11通过共同的内部总线12相连接。
主机接口9向内部总线12输出从主机4接收到的命令、用户数据(写入数据)等。另外,主机接口9向主机4发送从非易失性存储器3读出的用户数据、来自处理器8的响应等。
存储器接口11基于处理器8的指示,对于向非易失性存储器3写入用户数据等的处理和从非易失性存储器3读出的处理进行控制。
处理器8总括地对存储器控制器2进行控制。处理器8例如是cpu(centralprocessingunit,中央处理单元)、mpu(microprocessingunit,微处理单元)等。处理器8在经由主机接口9从主机4接收到命令的情况下,进行按照该命令的控制。例如,处理器8按照来自主机4的命令,对存储器接口11指示向非易失性存储器3的、用户数据和奇偶校验(parity)的写入。另外,处理器8按照来自主机4的命令,对存储器接口11指示从非易失性存储器3的、用户数据和奇偶校验的读出。
用户数据经由内部总线12保存于ram6。处理器8对于保存于ram6的用户数据决定非易失性存储器3上的保存区域(存储区域)。处理器8对于作为写入单位的页单位的数据(页数据)决定非易失性存储器3上的存储区域。在本说明书中,将在非易失性存储器3的1页所保存的用户数据定义为单元数据。单元数据一般被进行编码而作为码字保存于非易失性存储器3,但编码不是必须的。存储器控制器2也可以不编码地将单元数据保存于非易失性存储器3,但在图1中示出进行编码的构成来作为一构成例。在存储器控制器2不进行编码的情况下,页数据与单元数据一致。另外,既可以基于一个单元数据生成一个码字,也可以基于单元数据被分割而得到的分割数据来生成一个码字。另外,也可以使用多个单元数据来生成一个码字。
处理器8按每个单元数据来决定写入目的地的非易失性存储器3的存储区域。对非易失性存储器3的存储区域分配了物理地址。处理器8使用物理地址来对单元数据的写入目的地的存储区域进行管理。处理器8对存储器接口11进行指示,以使得指定所决定的存储区域(物理地址)来向非易失性存储器3写入用户数据。另一方面,主机4以逻辑地址对数据进行管理。因此,处理器8对用户数据的逻辑地址与物理地址的对应关系进行管理。处理器8在接收到来自主机4的包含逻辑地址的读出命令的情况下,确定与逻辑地址对应的物理地址,指定物理地址来对存储器接口11指示用户数据的读出。
在本说明书中,将共同连接于一条字线的多个存储单元定义为存储单元组mg。一个存储单元组mg成为写入(编程)的单位。在本实施方式中,非易失性存储器3是4位/单元(bit/cell)的nand存储器5,一个存储单元组mg具有4位×位数的量的数据量。写入于各存储单元的各位分别与不同的页对应。在本实施方式中,将一个存储单元组mg的4页称为lower页(第1页)、middle页(第2页)、upper页(第3页)、top页(第4页)。
ecc电路10对保存于ram6的用户数据进行编码,生成码字。另外,ecc电路10对从非易失性存储器3读出的码字进行解码。ecc电路10在对从非易失性存储器3读出的码字所包含的位错误进行纠正之后,解码为用户数据。
ram6暂时性地保存从主机4接收到的用户数据直到向非易失性存储器3存储、暂时性地保存从非易失性存储器3读出的数据直到向主机4发送。ram6例如是sram(staticrandomaccessmemory,静态随机访问存储器)、dram(dynamicrandomaccessmemory,动态随机访问存储器)等的通用存储器。
在图1中示出了存储器控制器2分别具备ecc电路10和存储器接口11的构成例。然而,ecc电路10也可以内置于存储器接口11。另外,ecc电路10也可以内置于非易失性存储器3。
在从主机4接收到写入要求的情况下,存储器系统1如以下那样进行工作。处理器8暂时性地将写入数据保存于ram6。处理器8读取保存于ram6的数据,并输入到ecc电路10。ecc电路10对所输入的数据进行编码,向存储器接口11输入码字。存储器接口11将所输入的码字写入到非易失性存储器3。
在从主机4接收到读取要求的情况下,存储器系统1如以下那样进行工作。存储器接口11向ecc电路10输入从非易失性存储器3读出的码字。ecc电路10对所输入的码字进行解码,将解码后的数据暂时性地保存于ram6。处理器8经由主机接口9将保存于ram6的数据发送给主机4。此外,非易失性存储器3有时也由多个芯片构成,非易失性存储器3和存储器接口11也可以通过贯通过孔(tsv:throughsiliconvia)相连接。
此外,图1所示的存储器控制器2的构成是一个例子,可以采用内部总线12为分割构造、层级构造或者连接有附加的功能块等的其他各种各样的派生的方式。
图2是表示本实施方式的非易失性存储器3的内部构成的一个例子的框图。非易失性存储器3具备nandi/o接口21、控制部22、nand存储单元阵列(存储单元部)23以及页缓冲器24。非易失性存储器3例如形成在半导体基板(例如硅基板)上来被芯片化。
控制部22经由nandi/o接口21基于来自存储器控制器2的命令等,对非易失性存储器3的工作进行控制。具体而言,控制部22在被输入了写入要求的情况下进行控制以使得将被要求了写入的数据写入至nand存储单元阵列23上的所指定的地址。另外,控制部22在被输入了读出要求的情况下进行控制以使得从nand存储单元阵列23读出被要求了读出的数据、并经由nandi/o接口21输出给存储器控制器2。页缓冲器24是暂时性地保存在nand存储单元阵列23的写入时从存储器控制器2输入的数据、暂时性地保存从nand存储单元阵列23读出的数据的缓冲器。
控制部22具有振荡器31、定序器32、命令用户接口33、电压供给部34、列计数器35以及串行访问控制器36。另外,nand存储单元阵列23具有行译码器37和读出放大器38。
nandi/o接口21是用于与存储器控制器2之间收发io信号和控制信号的电路。命令用户接口33基于控制信号,取得从存储器控制器2经由io信号线接收到的命令、地址以及数据中的命令和地址。命令用户接口33将所取得的命令和地址交给定序器32。
振荡器31是生成时钟的电路。通过振荡器31生成的时钟被供给至包括定序器32的各构成要素。定序器32是由从振荡器31供给的时钟来进行驱动的状态机。定序器32执行对nand存储单元阵列23的访问等的控制。例如,定序器32相应于从命令用户接口33接收的命令,输出用于对各种内部电压、工作定时等进行控制的指令。另外,定序器32向行译码器37供给从命令用户接口33接收到的地址所包含的块地址和页地址。进一步,定序器32向列计数器35供给从命令用户接口33接收到的地址所包含的列地址。
电压供给部34生成被供给至字线的各种内部电压、被供给至位线的各种内部电压,并供给至行译码器37、读出放大器38。列计数器35在编程工作或者读取工作时以从定序器32供给的列地址为开头,按照从串行访问控制器36供给的控制信号,使列地址依次推进。
页缓冲器24在编程工作时将从串行访问控制器36接收到的数据依次保存于上述列计数器35指定的列地址区域。另外,页缓冲器24在读取工作时将所保存的数据中的由上述列地址指定的列地址的数据依次发送给串行访问控制器36。
串行访问控制器36在编程工作时将从nandi/o接口21按io信号线的位宽以串行的方式接收到的数据保存于页缓冲器24。另外,串行访问控制器36在读取工作时将从页缓冲器24按io信号线的位宽以串行的方式接收到的数据发送至nandi/o接口21。
行译码器37在编程工作和读取工作时对块地址和页地址进行译码,选择与访问目的地的块blk所包含的成为访问对象的页对应的字线。并且,各行译码器37向选择字线和非选择字线施加适当的电压。
读出放大器38在编程工作时将保存于页缓冲器24的所对应的数据传送至存储单元晶体管。另外,读出放大器38在读取工作时对从选择字线读出到位线的数据进行读出(sense,感测),将所得到的数据保存于页缓冲器24。保存于页缓冲器24的数据经由串行访问控制器36和nandi/o接口21被发送至存储器控制器2。
图3是表示三维构造的nand存储单元阵列23的一个例子的电路图。图3示出三维构造的nand存储单元阵列23内的多个块中的一个块blk的电路构成。nand存储单元阵列23的其他块也具有与图3同样的电路构成。此外,本实施方式也可以应用于二维构造的存储单元。
如图3所示,块blk例如具有四个指fng(fng0~fng3)。另外,各个指(finger)fng包括多个nand串ns。nand串ns各自例如具有被级联连接的8个存储单元晶体管mt(mt0~mt7)、和选择晶体管st1、st2。在本说明书中,有时将各个指fng称为串st。
此外,nand串ns内的存储单元晶体管mt的个数不限于8个。存储单元晶体管mt在选择晶体管st1、st2之间配置为其电流路径串联连接。该串联连接的一端侧的存储单元晶体管mt7的电流路径与选择晶体管st1的电流路径的一端连接,另一端侧的存储单元晶体管mt0的电流路径与选择晶体管st2的电流路径的一端连接。
指fng0~fng3各自的选择晶体管st1的栅极分别共同连接于选择栅极线sgd0~sgd3。另一方面,选择晶体管st2的栅极在多个指fng之间共同连接于同一选择栅极线sgs。另外,处于同一块blk内的存储单元晶体管mt0~mt7的控制栅极分别共同连接于字线wl0~wl7。即,字线wl0~wl7和选择栅极线sgs在同一块blk内的多个指fng0~fng3之间共用地连接,相对于此,即使是在同一块blk内,选择栅极线sgd也按指fng0~fng3中的各个而独立。
在构成nand串ns的存储单元晶体管mt0~mt7的控制栅电极分别连接字线wl0~wl7,另外,同一指fng内的各nand串ns中的第i个存储单元晶体管mti(i=0~n)通过同一字线wli(i=0~n)被共同连接。即,块blk内的同一行的存储单元晶体管mti的控制栅电极连接于同一字线wli。
各nand串ns连接于字线wli,并且,也连接于位线。对于各nand串ns内的各存储单元,能够通过对字线wli和选择栅极线sgd0~sgd3进行识别的地址和对位线进行识别的地址来进行识别。如上所述,处于同一块blk内的存储单元(存储单元晶体管mt)的数据被一起擦除。另一方面,数据的读出和写入以物理扇区ms为单位来进行。1个物理扇区ms连接于一条字线wli,并且,包括属于一个指fng的多个存储单元。
存储器控制器2以一个指内的与1条字线连接的全部nand串ns为单位来进行写入(编程)。因此,存储器控制器2进行编程的数据量的单位成为4位×位线数。
在读取工作和编程工作时,相应于物理地址,选择一条字线wli和一条选择栅极线sgd,选择物理扇区ms。此外,在本说明书中,根据需要将向存储单元写入数据这一工作称为编程。
图4是三维构造的nand存储器5的nand存储单元阵列23的一部分区域的剖视图。如图4所示,在半导体基板的p型阱区域(p-well)41上在上下方向上形成有多个nand串ns。即,在p型阱区域41上,在上下方向上形成有作为选择栅极线sgs发挥功能的多个布线层42、作为字线wli发挥功能的多个布线层43以及作为选择栅极线sgd发挥功能的多个布线层44。
并且,形成有贯通这些布线层42、43、44到达p型阱区域41的存储孔45。在存储孔45的侧面依次形成有块绝缘膜46、电荷蓄积层47以及栅极绝缘膜48,进一步在存储孔45内埋入有导电膜49。导电膜49是作为nand串ns的电流路径发挥功能、在存储单元晶体管mt以及选择晶体管st1和st2工作时形成通道的区域。
在各nand串ns中,在p型阱区域41上依次层叠有选择晶体管st2、多个存储单元晶体管mt以及选择晶体管st1。在导电膜49的上端形成有作为位线bl发挥功能的布线层。
进一步,在p型阱区域41的表面内形成有n 型杂质扩散层和p 型杂质扩散层。在n 型杂质扩散层上形成有接触插塞(contactplug)50,在接触插塞50上形成有作为源极线sl发挥功能的布线层。另外,在p 型杂质扩散层上形成有接触插塞51,在接触插塞51上形成有作为阱布线cpwell发挥功能的布线层。阱布线cpwell被用于施加擦除电压。
图4所示的nand存储单元阵列23在图4的纸面的进深方向上排列有多个,通过在进深方向上排列为一列的多个nand串ns的集合形成一个指fng。其他指fng例如形成在图4的左右方向上。在图3中图示了4个指fng0~3,但在图4中示出在接触插塞50、51之间配置了3个指的例子。
图5是表示第1实施方式的阈值区域的一个例子的图。图5表示4位/单元的非易失性存储器3的阈值区域的分布的一个例子。在非易失性存储器3中,通过蓄积于存储单元的电荷蓄积层47的电子的电荷量来存储信息。各存储单元具有与电子的电荷量相应的阈值电压。并且,使存储于存储单元的多个数据值分别与阈值电压不同的多个区域(阈值区域)对应。
图5的s0~s15表示16个阈值区域内的阈值分布。图5的横轴表示阈值电压,纵轴是存储单元数(单元数)。阈值分布是指阈值变动的范围。这样,各存储单元具有通过15个边界划分出的16个阈值区域,各阈值区域具有固有的阈值分布。
在本实施方式中,将阈值电压成为vr1以下的区域称为区域s0,将阈值电压成为比vr1大且为vr2以下的区域称为区域s1,将阈值电压成为比vr2大且为vr3以下的区域称为区域s2,将阈值电压成为比vr3大且为vr4以下的区域称为区域s3。另外,在本实施方式中,将阈值电压成为比vr4大且为vr5以下的区域称为区域s4,将阈值电压成为比vr5大且为vr6以下的区域称为区域s5,将阈值电压成为比vr6大且为vr7以下的区域称为区域s6,将阈值电压成为比vr7大且为vr8以下的区域称为区域s7。另外,在本实施方式中,将阈值电压成为比vr8大且为vr9以下的区域称为区域s8,将阈值电压成为比vr9大且为vr10以下的区域称为区域s9,将阈值电压成为比vr10大且为vr11以下的区域称为区域s10,将阈值电压成为比vr11大且为vr12以下的区域称为区域s11。另外,在本实施方式中,将阈值电压成为比vr12大且为vr13以下的区域称为区域s12,将阈值电压成为比vr13大且为vr14以下的区域称为区域s13,将阈值电压成为比vr14大且为vr15以下的区域称为区域s14,将阈值电压成为比vr15大的区域称为区域s15。
另外,将与区域s0~s15对应的阈值分布称为第1分布~第16分布。vr1~vr15是成为各阈值区域的边界的阈值电压。
在非易失性存储器3中,使多个数据值分别与存储单元的多个阈值区域对应。将该对应称为数据编码。预先确定该数据编码,在数据的写入(编程)时,向存储单元内的电荷蓄积层47注入电荷,以使得成为与按照数据编码进行存储的数据值相应的阈值区域内。并且,在读出时,对存储单元施加读出电压,根据存储单元的阈值是比读出电压低、还是比读出电压高,决定数据逻辑。
在数据的读出时,根据阈值是比读出对象的边界的读出电平低、还是比读出对象的边界的读出电平高,决定数据的逻辑。在阈值最低的情况下,为“擦除”状态,全部位的数据被定义为“1”。在阈值比“擦除”状态高的情况下,为“被编程了”的状态,按照编码,数据被定义为“1”或者“0”。
图6是表示第1实施方式的数据编码的一个例子的图。在本实施方式中,使图5所示的16个阈值区域分别与4位的16个数据值对应。阈值电压与top、upper、middle、lower页所对应的位的数据值的关系为如以下所示那样。
·阈值电压处于s0区域内的存储单元是存储有“1111”的状态。
·阈值电压处于s1区域内的存储单元是存储有“0111”的状态。
·阈值电压处于s2区域内的存储单元是存储有“0101”的状态。
·阈值电压处于s3区域内的存储单元是存储有“0001”的状态。
·阈值电压处于s4区域内的存储单元是存储有“0011”的状态。
·阈值电压处于s5区域内的存储单元是存储有“1011”的状态。
·阈值电压处于s6区域内的存储单元是存储有“1001”的状态。
·阈值电压处于s7区域内的存储单元是存储有“1101”的状态。
·阈值电压处于s8区域内的存储单元是存储有“1100”的状态。
·阈值电压处于s9区域内的存储单元是存储有“1000”的状态。
·阈值电压处于s10区域内的存储单元是存储有“0000”的状态。
·阈值电压处于s11区域内的存储单元是存储有“0100”的状态。
·阈值电压处于s12区域内的存储单元是存储有“0110”的状态。
·阈值电压处于s13区域内的存储单元是存储有“1110”的状态。
·阈值电压处于s14区域内的存储单元是存储有“1010”的状态。
·阈值电压处于s15区域内的存储单元是存储有“0010”的状态。
这样,能够按阈值电压的每个区域来表示各存储单元的4位数据的逻辑。此外,在存储单元未写入的状态(“擦除”的状态)下,存储单元的阈值电压处于s0区域内。另外,对于在此所示的码,如在s0(擦除)状态下存储“1111”这一数据、在s1状态下存储“0111”这一数据这样,在任意的两个相邻的状态之间仅1位的数据变化。这样,图6所示的编码是在任意的两个相邻的区域之间仅1位的数据变化的格雷码。
在图6所示的本实施方式的编码中,成为用于对各页的位值进行判定的边界的阈值电压为如以下所示那样。
·成为用于对top页的位值进行判定的边界的阈值电压为vr1、vr5、vr10、vr13、vr15。
·成为用于对upper页的位值进行判定的边界的阈值电压为vr3、vr7、vr9、vr11、vr14。
·成为用于对middle页的位值进行判定的边界的阈值电压为vr2、vr4、vr6、vr12。
·成为用于对lower页的位值进行判定的边界的阈值电压为vr8。
这样,成为用于对位值进行判定的边界的阈值电压的数量(以下称为边界数)在lower页、middle页、upper页、top页分别为1、4、5、5。以下,使用lower页、middle页、upper页、top页各自的边界数将这样的编码称为1-4-5-5编码。
在此,特征性的第1事项在于:每页的位值变化的边界数最大为5。在由4位表现16个状态的情况下,最大边界数的最小值为4,图6的编码只是比这多一个,位错误的不平衡变少。
特征性的第2事项在于:lower页的边界数为一个,middle页的边界数为4个,能够以将lower页与middle页总括到一起而得到的第1阶段的编程和将upper页与top页总括到一起而得到的第2阶段的编程这两个阶段进行编程。另外,特征性的第3事项在于:从通过第1阶段的编程生成的阈值区域向通过第2阶段的编程生成的阈值区域的变化幅度少。即,在于阈值电压的变化幅度小。关于这些特征,将在后面进行详细描述。
非易失性存储器3的控制部22基于图6所示的编码,对于向nand存储单元阵列23的编程和从nand存储单元阵列23的读出进行控制。
三维存储单元的存储单元的微细化未进行如二维存储单元那样的程度的发展。因此,在三维存储单元中,若是相邻的存储单元彼此的间隔宽的世代,则单元间相互干涉小。在该情况下,一般采用如下方法:对于各存储单元的全部位同时进行编程,例如若将各位分配给了不同的页则对全部页同时进行编程。
在同时对各存储单元的全部位进行编程的情况下,作为数据编码,对组合没有特别的限定。基于全部位的数据,决定位于16个阈值区域的哪个区域,进行编程以使得从作为擦除状态的s0的区域变为所决定的阈值区域即可。在该情况下,一般采用如4-4-3-4编码这样的最大边界数取最小值那样的数据编码。在4-4-3-4编码中,在将16个阈值区域间的15个边界分配给4个页时,对lower页分配4个边界,对middle页分配4个边界,对upper页分配3个边界,对top页分配4个边界。在该编码的情况下,页间的边界数的不平衡小,因此,作为结果,页间的位错误率的不平衡变小。这是由于:位错误的原因几乎都是由阈值偏移到相邻的阈值区域引起的,具有越多的边界数的页,位错误数越多。这与即使作为存储单元的错误率相同、也必须强化对页数据的错误进行纠正所需要的ecc的纠正能力相关,因此,为了抑制存储器系统1对于来自主机4的写入要求的响应性能、成本以及功耗的恶化也是有效的。另外,由边界数的不平衡引起的读出速度的不平衡也变小。
另外,在4位/单元的nand存储器5中,相邻的阈值区域的间隔窄,因此,由单元间相互干涉导致的影响比1位/单元、2位/单元的nand存储器5要大。因此,近年的微细化取得了发展的世代的nand存储器5中,一般为了抑制单元间相互干涉,采用使用多个编程阶段、例如两个编程阶段(以下有时也简称为阶段)来对存储单元的电荷蓄积层47一点一点地注入电荷的编程方法(foggy-fine编程)。在该foggy-fine编程中,在第一个阶段(foggy阶段)进行了对存储单元的写入之后进行相邻单元的写入,然后,返回到最初的存储单元,进行第2个阶段(fine阶段)的写入。该情况下的各阶段是编程的执行单位,与1条字线wli对应的存储单元的编程通过执行两个编程阶段来完成。
无论是第1个阶段的编程,还是第2个阶段的编程,都使用16个阈值区域来执行编程。第1个阶段的编程结束时的阈值区域的阈值分布具有比最终的数据编码中的阈值区域的阈值分布宽的宽度。即,在foggy阶段中,进行foggy(粗略)写入。在该foggy阶段的编程中,需要输入数据的全部4页。foggy阶段的编程后的阈值分布是相邻的分布相互重合的中间状态,因此,无法进行数据的读出。在作为第2个阶段的fine阶段的编程中,使foggy阶段的编程后的阈值区域移动到最终的数据编码中的阈值区域。即,在fine阶段中,进行fine写入。该fine阶段的编程也需要输入数据的全部4页。fine阶段的编程后的阈值分布是相邻的分布分离了的最终状态,因此,在fine阶段的编程后能够进行数据的读出。
在4-4-3-4编码的情况下,边界数的不平衡少,但在foggy-fine编程的数据输入中,各阶段需要4页的量的数据输入。这会使数据输入所花费的时间增大,会使存储器系统1对于来自主机4的写入要求的响应性能恶化。另外,在存储器系统1内,会使如下的写入缓冲器的缓冲量(写入缓冲量)增大,该写入缓冲器是用于为了向nand存储器5进行输入而保持数据的缓冲器。该写入缓冲器一般是分配了存储器系统1内的ram6的一部分区域而形成的缓冲器。
作为对这些的对策,在本实施方式中,存储器系统1对具有三维构造的非易失性存储器3采用1-4-5-5编码,进一步,以两阶段实施页单位(pagebypage)的写入。由此,在本实施方式中,在具有三维构造的非易失性存储器3中也能抑制单元间相互干涉和各页间的位错误率的不平衡,并且,能减少存储器控制器2的写入缓冲量。
在此,对相邻存储单元间干涉进行说明。在某1个存储单元的电荷蓄积层47中蓄积的电荷会扰乱相邻的存储单元的电场,其结果,会带来使对相邻的存储单元进行读出时的阈值发生变动的噪声。在某电场条件下实施编程和验证,在编程完结之后,相邻的存储单元被编程为不同的电荷,这会成为起因而引起读出精度劣化。该相邻存储单元间干涉随着存储器件的制造技术微细化、存储单元间隔缩小而变得显著。并且,该相邻存储单元间干涉大多(主要)产生在同一字线wli上的与不同的位线连接的相邻存储单元彼此之间。
相邻存储单元间干涉能够通过在编程和验证时以及相邻的存储单元被编程之后的读出时缩小存储单元的电场条件的不同来进行缓和。作为减少同一字线wli上的连接于不同的位线的相邻存储单元彼此的相邻存储单元间干涉的一个方法,具有如下方法:将编程分为多个阶段,执行编程以使得在各阶段间电荷蓄积层47内的电荷量不产生大的变化。
本实施方式中的编程序列中,一条字线wli上的4位通过两个编程阶段、即第1阶段和第2阶段来进行编程。各编程阶段是编程的执行单位,本实施方式的存储器系统1通过执行两个编程阶段来完成对存储单元的4位数据的写入。另外,在本实施方式中,对两个编程阶段分别分配4位的某页。具体而言,对第1阶段的编程分配lower页的数据和middle页的数据,对第2阶段的编程分配upper页和top页的数据。
图7a是表示第1实施方式中的编程后的阈值区域的图,图7b是表示图7a的各阈值区域的4位数据的图。在图7a中示出了对存储单元进行了第1阶段和第2阶段的编程之后的阈值区域。图7a的(t1)表示作为编程前的初始状态的擦除状态的阈值区域。图7a的(t2)表示第1阶段的编程(第1编程)后的阈值区域。图7a的(t3)表示第2阶段的编程(第2编程)后的阈值区域。
如图7a的(t1)所示,nand存储单元阵列23的全部存储单元在未写入的状态(“擦除”的状态)下具有阈值区域s0。如图7a的(t2)所示,非易失性存储器3的控制部22在第1阶段的编程中,根据要写入(存储)到lower页和middle页的位值,按各存储单元来使阈值区域s0保持不变,或者注入电荷来使之移动到比阈值区域s0靠上的阈值区域。具体而言,控制部22在对lower页和middle页写入的位值都为“1”的情况下,不注入电荷,在对lower页和middle页中的至少一方写入的位值为“0”的情况下,注入电荷,使阈值电压向高的一方移动。即,在对lower页和middle页写入的位值为“01”的情况下,使其向阈值区域s2移动,另外,在对lower页和middle页写入的位值为“00”的情况下,使其向阈值区域s8移动,另外,在对lower页和middle页写入的位值为“10”的情况下,使其向阈值区域s12移动。
在此,阈值区域s8和s12也可以增大阈值区域的宽度来粗略地进行编程以使得阈值电压稍微变低。这是由于,在第2阶段的编程中最终地使阈值区域进行移动以使得与相邻的阈值区域的间隔变宽即可。
由此,存储单元根据lower页和middle页的数据而被编程为4值的电平。在此应该注意的事项在于:第1阶段的编程(第1编程)中的数据写入是仅lower页和middle页数据的数据写入。该执行所需要的页数据可以仅为lower页和middle页。进一步,该第1阶段的编程后的阈值区域在之后的第2阶段的编程(第2编程)中被最终地重新进行编程,因此,不需要微细地对阈值分布进行整形,能够进行高速的编程。并且,该第1阶段的编程后的数据可视为二进制,因此,能够读出lower页和middle页数据。
另外,如图7a的(t3)所示,在第2阶段的编程中,在数据的写入中需要upper页和top页这2页。并且,非易失性存储器3的控制部22进行编程以使得在第2阶段的编程后最终地被分离为16个阈值区域。在该情况下,能够读出全部页数据。
在第2阶段的编程中,从存储单元的阈值的第1阶段的编程结束时起的变化宽度度越大,相邻单元间干涉越大。因此,优选在第1阶段的阈值区域变化为第2阶段的阈值区域时,其变化宽度的最大值成为最小。在图7a的例子中,阈值区域的变化宽度的最大为阈值区域的5个的量,是阈值区域s0变化为s5的情况和阈值区域s2变化为s7的情况。
此外,典型地,向存储单元的写入(编程)通过对所对应的字线施加1次或者多次的编程电压脉冲来进行。在施加了各编程电压脉冲之后,为了确认存储单元是否超过阈值边界电平地进行了移动而进行读出。通过反复进行该施加和读出,能够使存储单元的阈值移动到具有预定的阈值分布的阈值区域内。
更详细而言,在如第2阶段那样进行多页的写入的情况下,根据写入对象的全部页(在该情况下为middle页、upper页以及top页)的数据,决定所对应的存储单元的阈值电压,使多个编程脉冲的电压值一点一点地上升来进行写入,以使得成为所决定的阈值电压。到达了作为目标的阈值电压的存储单元被从写入对象排除掉。这样,向存储单元的写入不是按各页来进行的,而是对写入对象的全部页一并地进行。
此外,控制部22也可以对于一条字线wli连续地执行第1阶段的编程和第2阶段的编程,但也可以为了降低相邻存储单元间干涉的影响,跨过多个字线wli来以非连续的顺序执行编程。
图7b的从lower页的1与0的边界位置靠左侧的middle页的1与0的边界数为3个,upper页的边界数为2个,top页的边界数为2个,进行3-2-2编码。另外,对于从lower页的边界位置靠右侧的middle页、upper页、top页进行1-3-3编码。通过将这些两个编码相加,成为1-4-5-5数据编码。此外,在图7b等中,将lower页记载为l,将middle页记载为m,将upper页记载为u,将top页记载为t。
图8a是表示第1实施方式的编程顺序的第1例的图。图8b是表示第1实施方式的编程顺序的第2例的图。图8c是表示第1实施方式的编程顺序的第3例的图。在图8a~图8c中,为了减小相邻存储单元间干涉的影响,以两个编程阶段进行编程。图8a表示在各块内的各字线连接有1个串st的nand存储器5中的编程顺序的一个例子。另外,图8b和图8c表示在各块内的各字线连接有4个串st的nand存储器5中的编程顺序的一个例子。此外,在图8b和图8c中,将连接于各字线的4个串st记载为string0~3。
当开始写入时,控制部22一边按预定的非连续的顺序跨过字线wli,一边进行各编程阶段。即,关于同一字线的第1阶段和第2阶段不被连续地执行,在关于某字线进行了第1阶段的编程之后,关于不同的字线进行第2阶段的编程。
在关于某字线编程完成到了第2阶段之后,当关于相邻的字线连续进行第1阶段和第2阶段的编程时,阈值电压的变动量变大。并且,当相邻字线的阈值电压的变动量大时,字线间的相邻存储单元间干涉变大。因此,为了减小字线间的相邻存储单元间干涉,在字线编程完成到了第2阶段之后,减小相邻字线的阈值电压的变动量是有效的。若为图8a的序列,则某字线编程完成到了第2阶段之后的相邻字线的编程阶段成为仅是第2阶段。
当在以图8a的编程顺序对三维构造的nand存储器5进行编程的情况下开始写入时,控制部22基于来自处理器8的指示,按以下的(1)~(9)所示的顺序执行编程。控制部22基于来自处理器8的指示进行对nand存储器5的编程,但以下省略基于来自处理器8的指示之意的记载。
(1)首先,控制部22实施字线wl0的第1阶段的编程st11。
(2)接着,控制部22实施字线wl1的第1阶段的编程st12。
(3)接着,控制部22实施字线wl0的第2阶段的编程st13。
(4)接着,控制部22实施字线wl2的第1阶段的编程st14。
(5)接着,控制部22实施字线wl1的第2阶段的编程st15。
(6)接着,控制部22实施字线wl3的第1阶段的编程st16。
(7)接着,控制部22实施字线wl2的第2阶段的编程st17。
(8)接着,控制部22实施字线wl4的第1阶段的编程st18。
(9)接着,控制部22实施字线wl3的第2阶段的编程st19。
以下,同样地,控制部22从图8a的左下向右上朝斜上方进行处理。这样,在图8a中,非易失性存储器3内的多个存储单元具有连接于第1字线的多个第1存储单元、和连接于与第1字线相邻的第2字线的多个第2存储单元,存储器控制器2在使得对多个第1存储单元进行了第1编程之后,使得对多个第2存储单元进行第1编程,接着使得对多个第2存储单元进行了第1编程之后,使得对多个第1存储单元进行第2编程。
当在按图8b的编程顺序对三维构造的nand存储器5进行编程的情况下开始写入时,控制部22按以下的(11)~(24)所示的顺序执行编程。
(11)首先,控制部22实施串st0__字线wl0的第1阶段的编程st21。
(12)接着,控制部22实施串st1__字线wl0的第1阶段的编程st22。
(13)接着,控制部22实施串st2__字线wl0的第1阶段的编程st23。
(14)接着,控制部22实施串st3__字线wl0的第1阶段的编程st24。
(15)接着,控制部22实施串st0__字线wl1的第1阶段的编程st25。
(16)接着,控制部22实施串st0__字线wl0的第2阶段的编程st26。
(17)接着,控制部22实施串st1__字线wl1的第1阶段的编程st27。
(18)接着,控制部22实施串st1__字线wl0的第2阶段的编程st28。
(19)接着,控制部22实施串st2__字线wl1的第1阶段的编程st29。
(20)接着,控制部22实施串st2__字线wl0的第2阶段的编程st210。
(21)接着,控制部22实施串st3__字线wl1的第1阶段的编程st211。
(22)接着,控制部22实施串st3__字线wl0的第2阶段的编程st212。
(23)接着,控制部22实施串st0__字线wl2的第1阶段的编程st213。
(24)接着,控制部22实施串st0__字线wl1的第2阶段的编程st214。
以下,同样地,控制部22从图8b的左下向右上朝向斜上方进行处理。此外,在图8b中,对块内的串st为4个的情况进行了说明,但块内的串st既可以为3个以下,也可以为5个以上。
当在按图8c的编程顺序对三维构造的nand存储器5进行编程的情况下开始写入时,控制部22按以下的(31)~(50)所示的顺序执行编程。
(31)首先,控制部22实施串st0__字线wl0的第1阶段的编程st31。
(32)接着,控制部22实施串st1__字线wl0的第1阶段的编程st32。
(33)接着,控制部22实施串st2__字线wl0的第1阶段的编程st33。
(34)接着,控制部22实施串st3__字线wl0的第1阶段的编程st34。
(35)首先,控制部22实施串st0__字线wl1的第1阶段的编程st35。
(36)接着,控制部22实施串st1__字线wl1的第1阶段的编程st36。
(37)接着,控制部22实施串st2__字线wl1的第1阶段的编程st37。
(38)接着,控制部22实施串st3__字线wl1的第1阶段的编程st38。
(39)接着,控制部22实施串st0__字线wl0的第2阶段的编程st39。
(40)接着,控制部22实施串st1__字线wl0的第2阶段的编程st310。
(41)接着,控制部22实施串st2__字线wl0的第2阶段的编程st311。
(42)接着,控制部22实施串st3__字线wl0的第2阶段的编程st312。
(43)接着,控制部22实施串st0__字线wl2的第1阶段的编程st313。
(44)接着,控制部22实施串st1__字线wl2的第1阶段的编程st314。
(45)接着,控制部22实施串st2__字线wl2的第1阶段的编程st315。
(46)接着,控制部22实施串st3__字线wl2的第1阶段的编程st316。
(47)接着,控制部22实施串st0__字线wl1的第2阶段的编程st317。
(48)接着,控制部22实施串st1__字线wl1的第2阶段的编程st318。
(49)接着,控制部22实施串st2__字线wl1的第2阶段的编程st319。
(50)接着,控制部22实施串st3__字线wl1的第2阶段的编程st320。
此外,在图8c中,对块内的串st为4个的情况进行了说明,但块内的串st既可以为3个以下,也可以为5个以上。
这样,即使串st为多个,1个串st内的字线wli的各编程阶段的编程的顺序也与串st为1个的情况相同。在块内存在多个串st的三维构造的非易失性存储器3的情况下,字线wli和串st的组合位置的编程一般在首先对不同的串st内的同一字线编号进行编程后,前进到接着的字线编号。在按照了这样的顺序的情况下,当按串st个数的量结合图8a时,例如成为如图8b或者图8c那样的顺序。
在此,使用图9~图11对按照了第1实施方式涉及的编程顺序的写入步骤的例子进行说明。在图9~图11中示出按照了图8b或者图8c所示的编程顺序的情况下的写入步骤。如前所述,存储器控制器2一边按照非连续的顺序跨过字线wli,一边使编程阶段前进,因此,将某字线wli的汇总(在此为块)作为编程序列的汇总来执行编程。
图9是表示第1实施方式涉及的1块的量整体的写入步骤的第1例的流程图。在此的1块设为具有字线wl0~wln(n为自然数)的n 1条字线wli。图10是表示第1实施方式涉及的第1阶段中的写入步骤的子流程图,图11是表示第1实施方式涉及的第2阶段中的写入步骤的子流程图。
如图9所示,当开始写入时,控制部22执行串st0__字线wl0的第1阶段的编程(步骤s10)。接着,控制部22执行串st1__字线wl0的第1阶段的编程(步骤s20)。此后,控制部22对各串st执行与步骤s10、s20同样的处理。并且,控制部22执行串st3__字线wl0的第1阶段的编程(步骤s30)。
进一步,控制部22执行串st0__字线wl1的第1阶段的编程(步骤s40)。接着,控制部22执行串st0__字线wl0的第2阶段的编程(步骤s50)。接着,控制部22执行串st1__字线wl1的第1阶段的编程(步骤s60)。此后,控制部22对各串st的各字线wli反复进行如步骤s40、s50、s60那样的处理。
并且,控制部22执行串st0__字线wln的第1阶段的编程(步骤s70)。接着,控制部22执行串st0__字线wln-1的第2阶段的编程(步骤s80)。此后,控制部22对各串st的各字线wli反复进行如步骤s70、s80那样的处理。
并且,控制部22执行串st3__字线wln-1的第2阶段的编程(步骤s90)。接着,控制部22执行串st0__字线wln的第2阶段的编程(步骤s100)。接着,控制部22执行串st1__字线wln的第2阶段的编程(步骤s110)。此后,控制部22对各串st实施与步骤s100、s110同样的处理。并且,控制部22执行串st3__字线wln的第2阶段的编程(步骤s120)。
图10是表示第1阶段的写入步骤的第1例的流程图。在第1阶段的编程中,首先,从存储器控制器2向非易失性存储器3输入lower页数据的输入开始命令(步骤s210)。然后,从存储器控制器2向非易失性存储器3输入lower页数据(步骤s220)。接着,从存储器控制器2向非易失性存储器3输入middle页数据的输入开始命令(步骤s230)。然后,从存储器控制器2向非易失性存储器3输入middle页数据(步骤s240)。进一步,从存储器控制器2向非易失性存储器3输入第1阶段的编程执行命令(步骤s250),由此,成为芯片忙(步骤s260)。
在数据写入时,施加1次~多次的编程电压脉冲(步骤s270)。并且,为了确认存储单元是否超过阈值边界电平地进行了移动,进行数据读出(步骤s280)。
进一步,确定lower页和middle页中的数据的失败位数是否小于标准(判定基准)(步骤s290)。在数据的失败位数为标准以上的情况下(步骤s290:否),反复进行步骤s250~s270的处理。并且,当数据的失败位数变得小于标准时(步骤s290:是),成为芯片就绪(步骤s300)。这样,通过反复进行施加、读出以及确认,能够使存储单元的阈值移动到预定的阈值分布的范围中。
图11是表示第2阶段的写入步骤的第1例的流程图。在第2阶段的编程中,首先,从存储器控制器2向非易失性存储器3输入upper页的数据的输入开始命令(步骤s310)。然后,从存储器控制器2向非易失性存储器3输入upper页的数据(步骤s320)。
接着,从存储器控制器2向非易失性存储器3输入top页的数据的输入开始命令(步骤s330)。然后,从存储器控制器2向非易失性存储器3输入top页的数据(步骤s50)。接着,从存储器控制器2向非易失性存储器3输入第2阶段的编程执行命令(步骤s350),由此成为芯片忙(步骤s360)。
此后,控制部22进行作为idl(internaldataload,内部数据加载)的lower页数据和middle数据的读出(步骤s370)。并且,基于lower页和middle页的数据,决定upper页和top页的编程目标的vth(阈值电压)(步骤s380)。此后,使用所决定的vth,进行向upper页和top页的数据写入。这样,在步骤s370和s380中,非易失性存储器3内的控制部22读出通过第1编程进行了编程的数据,基于所读出的数据来决定第2编程中的阈值电压。或者,非易失性存储器3内的控制部22对于来自存储器控制器2的第2编程的执行要求,读出通过第1编程进行了编程的第1位和第2位的数据,基于所读出的数据和第3位以及第4位的数据进行第2编程。
进一步,控制部22为了提高idl的读出数据的可靠性,也可以进行多次数读出,在芯片内的页缓冲器24中采取该读出结果的多数决定,作为接着的写入数据来加以使用。当然,控制部22也可以在通常的读出工作时,进行多次数读出,在芯片内采取该读出结果的多数决定,作为向外部的读出数据来加以使用。
图12是用于对多次数的读出结果的多数决定处理进行说明的图。在图12中,用圆形记号(○)表示正确的位,用叉记号(×)表示错误的位。另外,在图12中示出进行了3次读出的情况下的多数决定的结果。
在各位判断为多数决定的结果为错误的是:(a)3次都错误了的情况和(b)2次都错误了的情况。当将各位发生了错误的概率设为p时,在p=0.2的情况下,(a)3次错误的概率为p×p×p=0.2×0.2×0.2,(b)2次错误的概率为(1-p)×p×p=(1-0.2)×0.2×0.2。
因此,判断为3次的多数决定结果为错误的是(p×p×p) 3×(1-p)×p×p=0.104。这样,控制部22通过在芯片内的页缓冲器24进行多次数的读出结果的多数决定处理,能够提高读出数据的可靠性。
在向upper页和top页的数据写入时,施加1次~多次的编程电压脉冲(步骤s390)。并且,为了确认存储单元是否超过阈值边界电平地进行了移动,进行upper页和top页的数据读出(步骤s400)。
进一步,确认upper页和top页中的数据的失败位数是否小于标准(步骤s410)。在upper页和top页中的数据的失败位数为标准以上的情况下(步骤s410:否),反复进行步骤s390~s410的处理。并且,当数据的失败位数变得小于标准时(步骤s410:是),成为芯片就绪(步骤s420)。
在此,对图11所示的写入步骤的变形例进行说明。图13a和图13b是表示第1实施方式涉及的第2阶段中的写入步骤的变形例的子流程图。此外,在图13a和图13b所示的处理步骤中,除了不进行在图11中说明过的步骤s370的处理这一点以外,步骤s310~s420的处理步骤与图11相同。
在图13a和图13b所示的处理步骤的情况下,在步骤s310之前进行步骤s3001~s3018的处理。具体而言,首先,从存储器控制器2向非易失性存储器3输入lower页的读出命令(步骤s3001),由此成为芯片忙(步骤s3002)。
此后,控制部22以vr7的阈值电压进行lower页数据的读出。并且,控制部22基于vr7的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s3003)。此后,成为芯片就绪(步骤s3004)。
当输出控制部22所读出的lower页数据时(步骤s3005),该lower页数据被发送给ecc电路10(步骤s3006)。由此,ecc电路10对lower页数据进行ecc纠正(步骤s3007)。
接着,从存储器控制器2向非易失性存储器3输入middle页的读出命令(步骤s3008),由此成为芯片忙(步骤s3009)。
此后,控制部22以vr7的阈值电压进行middle页数据的读出。并且,控制部22基于vr2、vr11的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s3010)。此后,成为芯片就绪(步骤s3011)。
当输出控制部22所读出的middle页数据时(步骤s3012),该middle页数据被发送给ecc电路10(步骤s3013)。由此,ecc电路10对middle页数据进行ecc纠正(步骤s3014)。
并且,从存储器控制器2向非易失性存储器3输入lower页的数据的输入开始命令(步骤s3015)。由此,ecc电路10向非易失性存储器3输入lower页的数据(步骤s3016)。接着,从存储器控制器2向非易失性存储器3输入middle页的数据的输入开始命令(步骤s3017)。由此,ecc电路10向非易失性存储器3输入middle页的数据(步骤s3018)。
此后,进行步骤s310~s420的处理。此外,在步骤s380中,基于来自ecc电路10的lower页数据/middle页数据,决定upper页和top页的编程目标的vth。
在上述的第2阶段的编程中,向非易失性存储器3的数据输入仅是upper页和top页这两页。但是,在该第2阶段中,作为存储单元的编程的目标的vth中需要也包含lower页、middle页(开始第2阶段之前的vth)的4页的量的数据。因此,在该阶段的编程中,作为前处理,控制部22进行如下工作:首先,读出lower页数据和middle页数据,用进一步所输入的upper页和top页对该数据进行合成,决定编程目标的vth。
此外,第2阶段写入前的读出电平也可以与第2阶段写入后的读出电平稍有不同。另外,图13a所示的处理步骤也可以设为对lower页或者middle页中的仅1个页进行ecc纠正,使另一方的页为图11所示的内部的数据读出处理的步骤。另外,例如在使lower页的数据为内部的数据读出处理、对middle页进行ecc纠正的情况下,在图7a的(t2)中的4值的阈值分布中,lower页的数据的读出电平为vr8’,因此,也可以将阈值区域s2、s8的间隔设定为比其他阈值区域的间隔宽。另外,例如在使middle页的数据为内部的数据读出处理、对lower页进行ecc纠正的情况下,在图7a的(t2)中的4值的阈值分布中,lower页的数据的读出电平为vr2’和vr12’,因此,也可以将阈值区域s0与s2的间隔和s8与s12的间隔设定为比其他阈值区域的间隔宽。
能够读出lower页数据或者middle页数据,这是由于采用了lower页的边界数为1、middle页的边界数为2的1-4-5-5编码。通过在第2阶段读出lower页数据和middle页数据,在第2阶段中,不需要lower页数据和middle页数据的输入。即,采用1-4-5-5编码,基于lower页数据和middle页数据决定编程目标的vth,因此,能够减小字线wli间的相邻存储单元间干涉,并且,1个页数据进行1次数据输入即可。
由此,在采用1-4-5-5编码来以2个阶段执行foggy-fine编程的情况下,存储器控制器2的写入缓冲器所需要的存储量为多条字线的量(最大8页),相对于此,在本实施方式中,存储器控制器2的写入缓冲器所需要的存储量最大为2页的量即可。
在此,对采用了1-4-5-5编码的foggy-fine编程的处理步骤和本实施方式的编程处理步骤的比较进行说明。图14是用于对采用了1-4-5-5编码的foggy-fine编程中的写入缓冲器的数据量进行说明的图。
在图14和后述的图15中,在上部侧示出块写入的数据输入和编程执行的时间图,在下部侧示出为了将数据保持于写入缓冲器内所需要的期间的时间图。此外,在图14和后述的图15中,为了简化说明,示出了1块内的串st数为1的情况。在串st为多个的情况下,需要与串st数量的倍数相应的存储量。在图14和图15中,标有阴影的4个或者2个小矩形区域中的各自表示1页量的数据输入。
在1-4-5-5编码的foggy-fine编程的情况下,在作为最初的阶段的foggy阶段中,进行4页量的数据输入和该4页量的编程(foggy阶段的编程)。另外,在1-4-5-5编码的foggy-fine编程的情况下,即使是在作为第2次的阶段的fine阶段中,也进行4页量的数据输入和该4页量的编程(fine阶段的编程)。
并且,在各字线wl0、wl1、wl2、……中,需要将在foggy阶段中所写入的4页量的数据保存在写入缓冲器内,直到在fine阶段中开始编程为止。
在foggy-fine编程中,为了降低相邻存储单元间干涉,lower/middle/upper/top的4页量的数据也不被连续地写入。例如,在执行了对字线wl0的foggy阶段之后,在执行对字线wl0的fine阶段之前,执行对与字线wl0相邻的字线wl1的foggy阶段。另外,在执行了对字线wl0的foggy阶段之后,在执行对字线wl1的fine阶段之前,执行对与字线wl1相邻的字线wl2的foggy阶段。在该方法的情况下,需要将lower/middle/upper/top的4页量的数据保持在写入缓冲器内,直到作为最终的第2阶段的fine阶段的数据输入完成为止。另外,为了降低相邻存储单元间干涉,需要将多条字线wli中的数据保持在写入缓冲器内。例如,对字线wl2执行foggy阶段时,对于字线wl1的4页量的数据和对于字线wl2的4页量的数据需要被保持在写入缓冲器内。这样,在1-4-5-5编码的foggy-fine编程的情况下,最大8页量的数据需要被保持在写入缓冲器内。
图15是用于对第1实施方式的编程中的写入缓冲量(缓冲数据量)进行说明的图。在本实施方式的编程中,以1-4-5-5编码使用两阶段的编程。在该本实施方式的编程中,在第1阶段中,进行2页量(lower页和middle页)的数据输入和该1页量的编程(1st编程)。另外,在本实施方式的编程的情况下,在第2阶段中,进行2页量(upper页和top页)的数据输入和该2页量的编程(2nd编程)。
并且,在各字线wl0、wl1、wl2、……中,在各阶段的数据输入时将数据保存在写入缓冲器内即可,当编程开始时,也可以从写入缓冲器内删除数据。例如当在第1阶段中被输入数据时,该数据被保存在写入缓冲器内。并且,当在第1阶段中开始编程时,保存在了写入缓冲器内的数据也可以被删除。同样地,当在第2阶段中被输入数据时,该数据被保存在写入缓冲器内。并且,当在第2阶段中开始编程时,保存在了写入缓冲器内的数据也可以被删除。因此,在本实施方式的编程的情况下,需要保持在写入缓冲器内的数据最大为2页量的数据。
在本实施方式的编程中,为了降低相邻存储单元间干涉,lower/middle/upper/top的4页量的数据也不被连续地写入。例如,在执行了对字线wl0的第1阶段之后,在执行对字线wl0的第2阶段之前,执行对与字线wl0相邻的字线wl1的第1阶段。同样地,在执行了对字线wl1的第1阶段之后,在执行对字线wl1的第2阶段之前,执行对与字线wl1相邻的字线wl2的第1阶段。
这样,在本实施方式中,仅在1次的量的阶段的编程需要全部的页数据,因此,若该数据输入完成,则写入缓冲器内的数据能够废弃。因此,在本实施方式中,需要同时保持在写入缓冲器内的页数较少即可。
向非易失性存储器3编程的页数据暂时保持于ram6内的写入缓冲器后,在编程时被写入到非易失性存储器3。在本实施方式中,能够减小该ram6的所需容量,因此,能削减成本。
另外,如图14所示,在使用foggy-fine编程时,不得不进行2次的全部的页数据的数据传送,因此,会花费传送时间,另外也会额外地需要传送时的功耗。在本实施方式中,全部的页数据以各页各自1次的量的数据传送来完成,因此,能够将传送时间和功耗抑制为1/2左右。
在此,对页读出处理进行说明。在页读出的方法中,对于包括读出对象页的字线wli的编程在第2阶段的写入前、写入后是不同的。
在第2阶段写入前的情况下,所记录的数据仅lower页和middle页是有效的。因此,控制部22仅在读出页为lower页或者middle页时从存储单元读出数据。并且,控制部22在其他页的情况下,不进行存储单元读出工作,进行强制地全部输出“1”来作为读出数据的控制。
另一方面,在完成到了第2阶段的字线wli的情况下,无论读出页为top/upper/middle/lower页的哪个,控制部22都对存储单元进行读出。在该情况下,根据进行读出的页为哪个页而所需要的读出电压不同,因此,控制部22按照所选择的页仅执行所需要的读出。
根据图6所示的编码,lower页数据变化的阈值状态间的边界仅为1个,因此,控制部22根据阈值位于由该边界分离出的两个范围中的哪个范围来决定数据。例如,在阈值电压小于vr8的情况下,控制部22进行输出“1”来作为存储单元的数据的控制。另一方面,在阈值电压大于vr8的情况下,控制部22进行输出“0”来作为存储单元的数据的控制。
另外,middle页的数据变化的阈值状态间的边界为4个,因此,控制部22根据阈值电压位于由那些边界分离出的5个范围的哪个范围中来决定数据。
另外,top页或者upper页的数据变化的阈值状态间的边界为5个,因此,控制部22根据阈值电压位于由那些边界分离出的6个范围的哪个范围中来决定数据。
以下,对页读出的具体的处理步骤进行说明。图16是表示第1实施方式涉及的存储器系统1的第2阶段写入前的页读出的处理步骤的流程图。图17是表示第1实施方式涉及的存储器系统1中的编程完成到了第2阶段的状态下的页读出的处理步骤的流程图。
如图16所示,在第2阶段写入前的字线wli的情况下,控制部22对读出页进行选择(步骤s450)。在读出页为lower页的情况下,控制部22以1个读出电压进行读出(步骤s455)。该电压如前所述那样为vr8’(≤vr8),但在为第2阶段写入前的字线的情况下,如图7a(t2)所示,也可以具有读出电压和阈值电压的余裕而例如为vr7’(≤vr7)。然后,控制部22基于vr8’的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s460)。
另外,在读出页为middle页的情况下,控制部22以两个读出电压vr2’(≤vr2)、vr12’(≤vr12)进行读出(步骤s465、s470)。在为第2阶段写入前的字线的情况下,如图7a(t2)所示,也可以具有读出电压和阈值电压的余裕而例如取代vr12’而为vr11’(≤vr11)。然后,控制部22基于vr2’的阈值电压下的读出结果和vr12’的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s475)。
另外,在读出页为upper页的情况下,控制部22进行全部强制性地输出“1”来作为存储单元的输出数据的控制(步骤s480)。另外,在读出页为top页的情况下,控制部22进行全部强制性地输出“1”来作为存储单元的输出数据的控制(步骤s485)。
另一方面,在编程完成到了第2阶段的字线wli的情况下,如图17所示,控制部22对读出页进行选择(步骤s500)。在读出页为lower页的情况下,控制部22以vr8的阈值电压进行读出(步骤s505)。然后,控制部22基于vr8的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s510)。
另外,在读出页为middle页的情况下,控制部22以vr2、vr4、vr6以及vr12的阈值电压进行读出(步骤s515、s520、s525、s530)。然后,控制部22基于vr2、vr4、vr6以及vr12的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s535)。
另外,在读出页为upper页的情况下,控制部22以vr3、vr7、vr9、vr11以及vr14的阈值电压进行读出(步骤s540、s545、s550、s555、s560)。然后,控制部22基于vr3、vr7、vr9、vr11以及vr14的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s565)。
另外,在读出页为top页的情况下,控制部22以vr1、vr5、vr10、vr13以及vr15的阈值电压进行读出(步骤s570、s575、s580、s585、s590)。然后,控制部22基于vr1、vr5、vr10、vr13以及vr15的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s595)。
此外,关于对于字线wli的编程是第2阶段写入完成前、还是第2阶段写入完成后,存储器控制器2能够进行管理/识别。存储器控制器2进行编程控制,因此,若存储器控制器2记录有其进展状况,则存储器控制器2能够容易地掌握非易失性存储器3的哪个地址处于什么样的编程状态。在该情况下,存储器控制器2在从非易失性存储器3进行读出时,对包括对象页地址的字线wli是什么样的编程状态进行识别,发布与所识别出的状态相应的读出命令。另外,作为其他方法,也可以按各字线wli设置标志单元,在第2阶段写入时对标志单元进行写入,相应于标志单元的数据,在存储器内部管理/识别是第2阶段写入完成前、还是第2阶段写入完成后。此外,关于标志单元,例如记载于“存储器系统以及写入方法”这一在2017年2月20日申请的美国专利申请15/437391号的申请中。该专利申请的整体通过参照而引用在本申请说明书中。
此外,第2阶段写入前和第2阶段写入后的读出电平也可以与第2阶段写入后的读出电平稍有不同。
对以上进行总结的话,本实施方式中的存储器控制器2使非易失性存储器3进行第1编程和第2编程,以使得:在使非易失性存储器3进行写入第1位和第2位的数据的第1编程之后,使非易失性存储器3进行写入第3位和第4位的数据的第2编程,16个阈值区域间的15个边界中的相邻的阈值区域之间第1位的值不同的边界的数量、第2位的值不同的边界的数量、第3位的值不同的边界的数量以及第4位的值不同的边界的数量即写入第1位~第4位的数据时的位值的变化数,依次为1、4、5、5或者4、1、5、5,从第1编程结束时的阈值区域向第2编程结束时的阈值区域的变化数成为第2编程结束时的阈值区域的5个以内。即,存储器控制器2在使非易失性存储器3进行了具有4个阈值区域的第1编程之后,使非易失性存储器3进行具有从4个阈值区域起的变化数为5个以内且总计16个阈值区域的第2编程。
存储器控制器2使非易失性存储器3进行第1编程和第2编程,以使得在第1位的位值变化的边界位置的电压电平下,第2位~第4位的位值不变化。例如,在图7b的例子中,在lower页从1变化为0的边界位置的前后,middle页、upper页以及top页的位值均为011。
另外,存储器控制器2使非易失性存储器3进行第1编程和第2编程,以使得:在电压电平比第1位的位值变化的边界位置的电压电平低的一侧和电压电平比边界位置的电压电平高的一侧中的任一方侧,从第1编程结束时的阈值区域向第2编程结束时的阈值区域变化的顺序的至少一部分调换,在边界位置的另一方侧,从第1编程结束时的阈值区域向第2编程结束时的阈值区域变化的顺序不调换。即,存储器控制器2在使非易失性存储器进行第2编程时,包括:使得从作为第1编程结束时的阈值区域的第1阈值区域转变为多个第2阈值区域中的一个阈值区域、使得从第3阈值区域转变为多个第4阈值区域中的一个阈值区域、使得从第5阈值区域转变为多个第6阈值区域中的一个阈值区域、使得从第7阈值区域转变为多个第8阈值区域中的一个阈值区域中的任一方,第3阈值区域是第1编程结束时的阈值区域,并且是电压电平比第1阈值区域的电压电平大、且电压电平比第1位的值不同的阈值区域间的边界的电压电平低的阈值区域,第5阈值区域是第1编程结束时的阈值区域,并且是电压电平比第1位的值不同的阈值区域间的边界的电压电平大的阈值区域,第7阈值区域是第1编程结束时的阈值区域,并且是电压电平比第5阈值区域的电压电平大的阈值区域,多个第2阈值区域中的一个阈值区域的电压电平大于多个第4阈值区域中的一个阈值区域的电压电平,多个第6阈值区域的全部阈值区域的电压电平小于多个第8阈值区域的全部阈值区域的电压电平,或者多个第2阈值区域的全部阈值区域的电压电平小于多个第4阈值区域的全部阈值区域的电压电平,多个第6阈值区域中的一个阈值区域的电压电平大于多个第8阈值区域中的一个阈值区域的电压电平。
对于本实施方式中的数据编码,也考虑图7a所示的1-4-5-5以外的数据编码。也考虑lower页数据的边界为1处、且第1阶段的编程后的middle页数据的边界为4处的虽为1-4-5-5数据编码但与图7不同的数据编码。
图18a是表示1-4-5-5数据编码的一变形例的图,图18b是表示图18a的各阈值区域的4位数据的图。图18a中的阈值电压与4位数据的关系为如以下所示那样。
·阈值电压处于s0区域内的存储单元为存储“1111”的状态。
·阈值电压处于s1区域内的存储单元为存储“1011”的状态。
·阈值电压处于s2区域内的存储单元为存储“0011”的状态。
·阈值电压处于s3区域内的存储单元为存储“0111”的状态。
·阈值电压处于s4区域内的存储单元为存储“0101”的状态。
·阈值电压处于s5区域内的存储单元为存储“1101”的状态。
·阈值电压处于s6区域内的存储单元为存储“1001”的状态。
·阈值电压处于s7区域内的存储单元为存储“0001”的状态。
·阈值电压处于s8区域内的存储单元为存储“0000”的状态。
·阈值电压处于s9区域内的存储单元为存储“0100”的状态。
·阈值电压处于s10区域内的存储单元为存储“0110”的状态。
·阈值电压处于s11区域内的存储单元为存储“1110”的状态。
·阈值电压处于s12区域内的存储单元为存储“1100”的状态。
·阈值电压处于s13区域内的存储单元为存储“1000”的状态。
·阈值电压处于s14区域内的存储单元为存储“1010”的状态。
·阈值电压处于s15区域内的存储单元为存储“0010”的状态。
在图7中,在比lower页的边界位置靠低电压侧,从第1阶段的阈值区域向第2阶段的阈值区域的转变线的一部分交叉,相对于此,在图18a中,在比lower页的边界位置靠高电压侧,从第1阶段的阈值区域向第2阶段的阈值区域的转变线的一部分交叉。从第1阶段的阈值区域向第2阶段的阈值区域的变化数在图7和图18a中均最大为5。
图18b的从lower页的1与0的边界位置起靠左侧的middle页的1与0的边界数为1个,upper页的边界数为3个,top页的边界数为3个,进行1-3-3编码。另外,在从lower页的边界位置起的右侧,进行3-2-2编码。通过将这2个编码相加,成为1-4-5-5数据编码。
对于本实施方式中的数据编码,也考虑1-4-5-5以外的数据编码,以下作为代表性的例子,依次对3-2-5-5和3-4-4-4进行说明。
图19a是表示作为本实施方式的其他一变形例的3-2-5-5数据编码的图,图19b是表示图19a的各阈值区域的4位数据的图。图19a的阈值电压与数据值的关系为以下所示那样。
·阈值电压处于s0区域内的存储单元为存储“1111”的状态。
·阈值电压处于s1区域内的存储单元为存储“1011”的状态。
·阈值电压处于s2区域内的存储单元为存储“0011”的状态。
·阈值电压处于s3区域内的存储单元为存储“0111”的状态。
·阈值电压处于s4区域内的存储单元为存储“0101”的状态。
·阈值电压处于s5区域内的存储单元为存储“1101”的状态。
·阈值电压处于s6区域内的存储单元为存储“1100”的状态。
·阈值电压处于s7区域内的存储单元为存储“1000”的状态。
·阈值电压处于s8区域内的存储单元为存储“1001”的状态。
·阈值电压处于s9区域内的存储单元为存储“0001”的状态。
·阈值电压处于s10区域内的存储单元为存储“0000”的状态。
·阈值电压处于s11区域内的存储单元为存储“0100”的状态。
·阈值电压处于s12区域内的存储单元为存储“0110”的状态。
·阈值电压处于s13区域内的存储单元为存储“1110”的状态。
·阈值电压处于s14区域内的存储单元为存储“1010”的状态。
·阈值电压处于s15区域内的存储单元为存储“0010”的状态。
在图19a的3-2-5-5数据编码的情况下,存储器控制器2使非易失性存储器3进行第1编程和第2编程,以使得:在使非易失性存储器3进行写入第1位和第2位的数据的第1编程之后,进行写入第3位和第4位的数据的第2编程,写入第1位~第4位的数据时的位值的变化数依次成为3、2、5、5或者2、3、5、5。另外,存储器控制器2在使非易失性存储器3进行具有4个阈值区域的第1编程之后,使非易失性存储器3进行具有从4个阈值区域起的变化数为5个以内且总计16个阈值区域的第2编程。
如图19b所示,lower页以中央为分界,在左右各存在一个1与0的边界位置。另外,从lower页的中央位置起靠左侧的middle页的1与0的边界数为1个,upper页的边界数为3个,top页的边界数为2个,进行1-3-2编码。另外,在从lower页的边界位置起的右侧,进行1-2-3编码。通过将这2个编码相加,成为3-2-5-5数据编码。
上述的图7b、图18b以及图19b中的lower页的1与0的边界位置、middle页的1与0的边界位置、upper页的1与0的边界位置以及top页的1与0的边界位置可以在页之间调换(对调)。例如,也可以将lower页的1与0的边界位置和middle页的1与0的边界位置调换。同样地,也可以将upper页的1与0的边界位置和top页的1与0的边界位置调换。
对将upper页的1与0的边界位置和top页的1与0的边界位置进行了调换的情况下的页读出处理的一变形例进行说明。一变形例涉及的页读出处理仅能够在对于包括读出对象页的字线wli的编程进行了第2阶段的写入后执行。一变形例涉及的页读出处理在对读出对象的字线的全部数据进行读出的情况下,在读出速度变快这一点上是有效的。
适于一变形例涉及的页读出处理的数据编码例如是如图19c那样的编码。这是将图19a的top页与upper页的码分配进行了调换后的编码。以下,对该数据编码的情况下的其他读出处理进行说明。在一变形例涉及的页读出处理中,对top/upper/middle/lower页的全部页进行读出。
图19d是表示一变形例涉及的读出处理步骤的流程图。另外,图19e是选择字线、readybusy信号线、输出数据线的电压波形图。控制部22以15个全部的读出电压vr15~vr1按顺序进行读出。首先,如图19e所示那样以作为最高的电压的vr15进行读出(步骤s610),接着,一边每次降低1级一边以低的读出电压按顺序持续进行读出(步骤s615~s695)。在决定各页的读出数据所需要的读出完成了时,能够输出该页的读出数据。
在一变形例涉及的页读出处理中,在从vr15起依次进行读出直到vr6的读出而结束时(步骤s655),能够决定lower页的数据,并输出该数据(步骤s660)。在该步骤s660中,基于读出电压vr6、vr8以及vr10下的读出数据来决定lower页的数据。
接着,在直到vr4为止而结束读出时(步骤s670),决定middle页的数据(步骤s675)。在该步骤s675中,基于读出电压vr4和vr12下的读出数据来决定middle页的数据。
接着,在直到vr2为止而结束读出时(步骤s685),决定upper页的数据(步骤s690)。在该步骤s690中,基于读出电压vr2、vr5、vr13以及vr15下的读出数据来决定upper页的数据。
接着,在直到vr1为止而结束读出时(步骤s695),决定最终的top页的数据(步骤s700)。在该步骤s700中,基于读出电压vr1、vr3、vr7、vr11以及vr14下的读出数据来决定top页的数据。
在一变形例涉及的页读出处理中,到变为能够输出任意的1页的数据为止的延迟(latency)变长,但读出全部4页的合计时间能够比之前说明的1页1页地进行了读出的情况下的合计时间短。如图19e所示,作为读出准备,将字线从零充电到作为高电压的vr15的时间为1次即可,另外,使读出电平变化为接下来的电压时的电压变化的振幅小且电压在短时间内稳定下来,因此,能够缩短到读出电压稳定下来为止的等待时间。因此,在以全部的读出电压vr15~vr1进行读出的情况下,选择字线的转变时间的合计变短,作为结果,能够使合计的读出时间高速化。
此外,以上以图19c的数据编码为例进行了说明,但基本上,无论是什么样的数据编码都可以应用。但是,使读出电压从最大电压依次变化到最小电压为止来进行读出,因此,能够按确定数据所需要的电压的读出完成了的页的顺序进行数据输出。因此,根据数据编码的方式,需要注意不按lower、middle、upper、top的页顺序进行读出。
图20a是表示作为本实施方式的其他一变形例的3-4-4-4数据编码的图,图20b是表示图20a的各阈值区域的4位数据的图。图20a的阈值电压与数据值的关系为如以下所示那样。
·阈值电压处于s0区域内的存储单元是存储“1111”的状态。
·阈值电压处于s1区域内的存储单元是存储“1101”的状态。
·阈值电压处于s2区域内的存储单元是存储“1001”的状态。
·阈值电压处于s3区域内的存储单元是存储“1011”的状态。
·阈值电压处于s4区域内的存储单元是存储“0011”的状态。
·阈值电压处于s5区域内的存储单元是存储“0111”的状态。
·阈值电压处于s6区域内的存储单元是存储“0110”的状态。
·阈值电压处于s7区域内的存储单元是存储“0010”的状态。
·阈值电压处于s8区域内的存储单元是存储“1010”的状态。
·阈值电压处于s9区域内的存储单元是存储“1000”的状态。
·阈值电压处于s10区域内的存储单元是存储“0000”的状态。
·阈值电压处于s11区域内的存储单元是存储“0001”的状态。
·阈值电压处于s12区域内的存储单元是存储“0101”的状态。
·阈值电压处于s13区域内的存储单元是存储“0100”的状态。
·阈值电压处于s14区域内的存储单元是存储“1100”的状态。
·阈值电压处于s15区域内的存储单元是存储“1110”的状态。
在图20a的3-4-4-4数据编码的情况下,存储器控制器2使非易失性存储器3进行第1编程和第2编程,以使得:在使非易失性存储器3进行了写入第1位和第2位的数据的第1编程之后,使非易失性存储器3进行写入第3位和第4位的数据的第2编程,写入第1位~第4位的数据时的位值的变化数依次成为3、4、4、4。另外,存储器控制器2在使非易失性存储器3进行了具有4个阈值区域的第1编程之后,使非易失性存储器3进行具有从4个阈值区域起的变化数为7个以内且总计16个的阈值区域的第2编程。
如图20b所示,lower页以中央为分界,在左侧存在1个边界位置,在右侧存在2个边界位置。另外,从lower页的中央位置起靠左侧的middle页的1与0的边界数为2个,upper页的边界数为3个,top页的边界数为1个,进行2-3-1编码。另外,在从lower页的边界位置起的右侧,进行2-1-2编码。通过将这2个编码相加,成为3-4-4-4数据编码。
从图20a的各页之间1与0的边界位置可以任意地调换、边界数的最大值为4、最小值为3这一观点出发,也可考虑4-3-4-4数据编码。或者,也可考虑4-4-3-4或者4-4-4-3编码。进一步,例如对于3-4-4-4数据编码可考虑各种候选。以下,依次对3-4-4-4数据编码的第1候选例到第17候选例进行说明。
例如,图21a是表示3-4-4-4数据编码的第1候选例的图,图21b是表示图20a的各阈值区域的4位数据的图。图22a是表示3-4-4-4数据编码的第2候选例的图,图22b是表示图22a的各阈值区域的4位数据的图。在图22a的例子中,第1阶段的4个阈值区域中的仅1个离开了其他阈值区域。图23a是表示3-4-4-4数据编码的第3候选例的图,图23b是表示图23a的各阈值区域的4位数据的图。在图23a的例子中,第1阶段的4个阈值区域接近地配置。图24a是表示3-4-4-4数据编码的第4候选例的图,图24b是表示图24a的各阈值区域的4位数据的图。在图24a的例子中,第1阶段的4个阈值区域中的仅一个离开地配置。图25a是表示3-4-4-4数据编码的第5候选例的图,图25b是表示图25a的各阈值区域的4位数据的图。在图25a的例子中,与图24a同样地,第1阶段的4个阈值区域中的仅一个离开地配置。图26a是表示3-4-4-4数据编码的第6候选例的图,图26b是表示图26a的各阈值区域的4位数据的图。在图26a的例子中,第1阶段的4个阈值区域中的仅一个稍稍离开其他3个阈值区域地配置。图27a是表示3-4-4-4数据编码的第7候选例的图,图27b是表示图27a的各阈值区域的4位数据的图。在图27a的例子中,与图26a同样地,第1阶段的4个阈值区域中的仅一个稍稍离开其他3个阈值区域地配置。图28a是表示3-4-4-4数据编码的第8候选例的图,图28b是表示图28a的各阈值区域的4位数据的图。在图28a的例子中,第1阶段的4个阈值区域中的一个比图27a远地离开其他3个阈值区域而配置。图29a是表示3-4-4-4数据编码的第9候选例的图,图29b是表示图29a的各阈值区域的4位数据的图。图29a中第1阶段的4个阈值区域中的2个以充分的间隔来配置。
图30a是表示3-4-4-4数据编码的第10候选例的图,图30b是表示图30a的各阈值区域的4位数据的图。图30a是将图20a的预定的页的1与0的边界位置在页之间进行了调换的例子。
图31a是表示3-4-4-4数据编码的第11候选例的图,图31b是表示图31a的各阈值区域的4位数据的图。图31a中,第1阶段的4个阈值区域中的2个以充分的间隔来配置。图32a是表示3-4-4-4数据编码的第12候选例的图,图32b是表示图32a的各阈值区域的4位数据的图。图32a中,第1阶段的4个阈值区域接近地配置。图33a是表示3-4-4-4数据编码的第13候选例的图,图33b是表示图33a的各阈值区域的4位数据的图。图33a与图32a相同程度地接近配置第1阶段的4个阈值区域。
图34a是表示3-4-4-4数据编码的第14候选例的图,图34b是表示图34a的各阈值区域的4位数据的图。图34a是将图21a的预定的页的1与0的边界位置在页之间进行了调换的例子。图35a是表示3-4-4-4数据编码的第15候选例的图,图35b是表示图35a的各阈值区域的4位数据的图。图35a与图32a相同程度地接近配置第1阶段的4个阈值区域。图36a是表示3-4-4-4数据编码的第16候选例的图,图36b是表示图36a的各阈值区域的4位数据的图。图36a与图35a相同程度地接近地配置第1阶段的4个阈值区域。图37a是表示3-4-4-4数据编码的第17候选例的图,图37b是表示图37a的各阈值区域的4位数据的图。图37a中,第1阶段的4个阈值区域中的2个以充分的间隔来配置。图38a是表示图20a的3-4-4-4数据编码的一变形例的图,图38b是表示图38a的各阈值区域的4位数据的图。在图38a的例子中,第1阶段的1个阈值区域与其他3个阈值区域较远地离开。
以上,对在第1阶段和第2阶段分别进行每次2页的编程的qlc的各种变形例进行了说明,但在这以外也可考虑各种变形例。以下,一并列举至此未说明的变形例。
图39和图40是表示1-4-5-5数据编码的其他变形例的图,示出各阈值区域的4位数据。图41是表示3-2-5-5数据编码的其他变形例的图。图42和图43是表示3-5-3-4数据编码的其他变形例的图。图44和图45是表示1-2-6-6数据编码的其他变形例的图。图46是表示1-2-6-6数据编码的其他变形例的图。图47是表示1-2-4-8数据编码的其他变形例的图。图48、图50以及图51是表示1-2-5-7数据编码的其他变形例的图,图49是表示1-2-7-5数据编码的其他变形例的图。
在图39~图51的任一个中,都可以采用将top页和upper页进行了调换的数据编码,同样地,都可以采用将middle页和lower页进行了调换的数据编码。
这样,在第1实施方式中,在对具有三维构造或者二维构造的4位/单元的nand存储器5进行编程时,例如采用如图7a那样的1-4-5-5数据编码,以两阶段进行编程。在各阶段中用于数据的编程的页数据仅在该阶段使用,因此,能够大幅度地削减在编程前应该保存于写入缓冲器的数据量。由此,能够缩小内置于存储器控制器2的写入缓冲器的大小(size)。
另外,在本实施方式中,位值在各页变化的次数的偏差少,因此,能够减少非易失性存储器3的页间的位错误率的不平衡。因此,不需要对ecc电路10的纠错能力进行强化,能够削减ecc电路10所需要的成本。另外,数据传送成为各页仅1次,因此,能够抑制传送时间和功耗。另外,一边跨过字线wli一边执行各编程阶段,因此,能够减少与相邻字线wli的相邻单元间干涉的量。
另外,通过使用图7a或者图18a的1-4-5-5数据编码、图19a的3-2-5-5数据编码或者图20a的3-4-4-4数据编码,能够抑制从第1阶段的阈值区域变化为第2阶段的阈值区域时的变化数。进一步,在第1阶段被进行了编程的4个阈值区域的间隔没有不平衡地离开,因此,能够扩大在第2阶段的编程前进行的idl时的裕量,能够提高写入序列的可靠性。
另外,通过使用图7a或者图18a的1-4-5-5数据编码、图19a的3-2-5-5数据编码或者图20a的3-4-4-4数据编码,能够将lower页和middle页的阈值区域的数据变化数的总计抑制为5个,因此,能够使lower页和middle页的编程高速化。
图7、图18~图51均可以使lower页、middle页、upper页以及top页的各页的1与0的边界位置在页之间任意地进行调换。即,可以在第1阶段对4个页中的任意的2个页进行编程。因此,关于各个候选例的组合存在4c2=6种。写入从低位页开始完成,因此,也可以设为能够按
此外,对于lower页和middle页的编程的高速化,能够通过在反复进行了写入和写入后的验证时,将一点一点地使写入电压升压来进行写入时的阶跃电压设为比第2阶段的编程时大的值等来进行高速化。
(第2实施方式)
接着,使用图52和图53来对第2实施方式进行说明。在第2实施方式中,汇总进行字线wln-1的第2阶段的编程和字线wln的第1阶段的编程。即,第2实施方式涉及的存储器控制器2以连续的命令以及一次数据输入来对非易失性存储器3指示对于与第1字线连接的存储单元的第1编程和对于与第2字线连接的存储单元的第2编程的连续的执行。此外,在本实施方式中,也对使用与在第1实施方式的图6中说明过的数据编码相同的数据编码的情况进行说明。
在图9所示的编程的流程图中,第1阶段的编程和第2阶段的编程全部一个一个地分离,在各自的编程时需要进行各个编程命令和编程数据的输入。与此相对,在本实施方式中,在第1阶段的编程和第2阶段的编程中尽量将编程命令和编程数据输入汇总在一起。
例如,在图8b所示的例子中,块的开头部分和结束部分以外,字线wln的第1阶段的编程和字线wln-1的第2阶段的编程必然连续地进行。于是,在本实施方式中,汇总进行关于字线wln的第1阶段的编程和字线wln-1的第2阶段的编程的编程命令和编程数据的输入。即,通过1次命令输入,字线wln的lower页/middle页和字线wln-1的upper/top页的编程数据汇总地被从存储器控制器2输入至非易失性存储器3。这是与在采用了foggy-fine的情况下、lower/middle/upper/top页的数据通过1次编程命令汇总地输入了4页量的情形相同的数据量的输入。但是,在foggy-fine的情况下,相同的字线wli内的页的数据汇总地被进行了输入,相对于此,在本实施方式中,2条字线wln、wln-1的编程命令和编程数据汇总地被进行输入。
这样,通过汇总进行编程命令和编程数据的输入,存储器控制器2进行的控制中的命令输入、轮询(polling,芯片忙是否返回到了就绪的定期的检查)的频度减少,能够实现存储器系统1的高速化和处理的简化。
以下,使用图52和图53对第2实施方式涉及的写入步骤的一个例子进行说明。图52和图53表示按照了图8b所示的编程顺序的情况下的写入步骤。此外,关于图52或者图53所示的处理中的与在图9~图11中说明过的处理同样的处理,省略其说明。
图52是表示第2实施方式涉及的1块的量整体的写入步骤的流程图。在此的1块设为具有字线wl0~wln(n为自然数)的n 1条的字线wli。另外,图53是表示第2实施方式涉及的第1阶段和第2阶段中的写入步骤的子流程图。
如图52所示,当开始写入时,控制部22执行作为与步骤s10~s30同样的处理的步骤s810~s830的处理。由此,执行串st0~st3的字线wl0的第1阶段的编程。
进一步,控制部22执行串st0__字线wl1的第1阶段的编程和串st0__字线wl0的第2阶段的编程(步骤s840)。接着,控制部22执行串st1__字线wl1的第1阶段的编程和串st1__字线wl0的第2阶段的编程(步骤s850)。接着,控制部22执行串st2__字线wl1的第1阶段的编程和串st2__字线wl0的第2阶段的编程(步骤s860)。此后,控制部22对各串st的各字线wli反复进行步骤s840、s850、s860的处理。
然后,控制部22执行串st0__字线wln的第1阶段的编程和串st0__字线wln-1的第2阶段的编程(步骤s870)。接着,控制部22执行串st1__字线wln的第1阶段的编程和串st1__字线wln-1的第2阶段的编程(步骤s880)。此后,控制部22对各串st的各字线wli反复进行与步骤s870、s880同样的处理。
然后,控制部22执行串st3__字线wln的第1阶段的编程和串st3__字线wln-1的第2阶段的编程(步骤s890)。接着,控制部22执行作为与步骤s100~s120同样的处理的步骤s900~s920的处理。由此,执行串st0~st3的字线wln的第2阶段的编程。
这样,在块的开头,与第1实施方式同样地执行仅是第1阶段的编程,在块的最后,与第1实施方式同样地执行仅是第2阶段的编程。在该情况下,按照图10所示的步骤执行仅是第1阶段的编程,按照图11所示的步骤执行仅是第2阶段的编程。另外,在块的开头与最后之间,对不同的字线交替地执行第1阶段的编程和第2阶段的编程。
图53是表示第2实施方式涉及的第1阶段和第2阶段的写入步骤的流程图。在第1阶段和第2阶段的编程中,在执行了第2阶段的编程之后,接着执行第1阶段的编程。具体而言,首先,从存储器控制器2向非易失性存储器3输入字线wln-1的upper页的数据的输入开始命令(步骤s1010)。然后,从存储器控制器2向非易失性存储器3输入字线wln-1的upper页的数据(步骤s1020)。
接着,从存储器控制器2向非易失性存储器3输入字线wln-1的top页的数据的输入开始命令(步骤s1030)。然后,从存储器控制器2向非易失性存储器3输入字线wln-1的top页的数据(步骤s1040)。
接着,从存储器控制器2向非易失性存储器3输入字线wln的lower页的数据的输入开始命令(步骤s1050)。然后,从存储器控制器2向非易失性存储器3输入字线wln的lower页的数据(步骤s1060)。
接着,从存储器控制器2向非易失性存储器3输入字线wln的middle页的数据的输入开始命令(步骤s1070)。然后,从存储器控制器2向非易失性存储器3输入字线wln的middle页的数据(步骤s1080)。
接着,从存储器控制器2向非易失性存储器3输入第1阶段和第2阶段的编程执行命令(步骤s1090),由此成为芯片忙(步骤s1100)。
此后,对字线wln的lower页/middle页施加1次~多次的编程电压脉冲(步骤s1110)。然后,为了确认存储单元是否超过阈值边界电平地进行了移动,进行字线wln的lower页/middle页的数据读出(步骤s1120)。
进一步,对lower页/middle页中的数据的失败位数是否小于标准进行确认(步骤s1130)。在lower页/middle页中的数据的失败位数为标准以上的情况下(步骤s1130:否),反复进行步骤s1110~s1130的处理。并且,当数据的失败位数小于标准时(步骤s1130:是),读出字线wln-1的lower页/middle页数据(步骤s1140)。
并且,基于字线wln-1的lower/middle页数据,决定upper页和upper页的编程目标的vth(阈值电压)(步骤s1150)。此后,使用所决定的vth,进行向字线wln-1的upper页和top页的数据写入。
在向upper页和top页的数据写入时,对字线wln-1的upper页和top页施加1次~多次的编程电压脉冲(步骤s1160)。并且,为了确认存储单元是否超过阈值边界电平地进行了移动,进行字线wln-1的upper页和top页的数据读出(步骤s1170)。
进一步,对upper页和top页中的数据的失败位数是否小于标准进行确认(步骤s1180)。在upper页和top页中的数据的失败位数为标准以上的情况下(步骤s1180:否),反复进行步骤s1160~s1180的处理。并且,当数据的失败位数小于标准时(步骤s1180:是),成为芯片就绪(步骤s1190)。
此外,步骤s1010、s1030、s1050的处理的任一个都可以先进行。另外,步骤s1020、s1040、s1060的处理的任一个都可以先进行。但是,步骤s1020的处理在步骤s1010的处理之后进行,步骤s1040的处理在步骤s1030的处理之后进行,步骤s1060的处理在步骤s1050的处理之后进行。
此外,图53所示的步骤s1140~s1180的处理对应于字线wln-1的第2阶段的编程,步骤s1110~s1130的处理对应于字线wln的第1阶段的编程。
这样,在图53中,对于在字线wln-1的第2阶段的编程之前执行字线wln的第1阶段的编程的情况进行了说明。这是为了:通过先进行字线wln的第1阶段的编程,使得被写入16值的阈值电压vth的字线wln-1的单元不受到相邻单元的影响。
这样,在本实施方式中,字线wln-1的upper页以及top页的数据和字线wln的lower页及middle页的数据的4页量的数据通过一个编程命令和编程数据被从存储器控制器2连续地输入到非易失性存储器3。
另外,作为其他变形例,也可以在编程命令的输入后,作为idl,先进行了字线wln-1的lower页和middle页数据的读出之后,进行字线wln的lower页和middle页的编程,接着,决定upper页和top页的编程目标的vth,以所决定的vth进行字线wln的upper页和top页的编程。这样,能够在受到由字线wln的写入引起的相邻单元间干涉之前,进行idl的字线wln-1的lower页和middle页数据的读出。
此外,本实施方式中的字线wln的第1阶段和字线wln-1的第2阶段的通过总括在一起的命令进行的编程的实际的执行顺序可以进行变形。即,图53所示的字线wln的lower页以及middle页的编程、和作为idl的字线wln-1的lower页以及middle页数据的读出,任一方都可以先进行,能够进行调换。通过在字线wln的lower页和middle页的编程之前进行idl(字线wln-1的lower页和middle页数据的读出),能够不受到由字线wln的lower页和middle页的编程造成的影响地进行idl。
这样,在第2实施方式中,汇总进行字线wln-1的第2阶段的编程和字线wln的第1阶段的编程,因此,命令输入和/或轮询的频度减少。因此,能够实现存储器系统1的高速化和处理的简化。
(第3实施方式)
接着,使用图54对第3实施方式进行说明。第3实施方式是在第1阶段进行lower页的编程,在第2阶段进行middle/upper/top页的编程。
图54是表示第3实施方式中的编程后的各阈值区域的图,图57a是表示图54的各阈值区域的4位数据的图。图54的(t1)表示作为编程前的初始状态的擦除状态的阈值区域。图54的(t2)表示第1阶段的编程后的阈值区域。图54的(t3)表示第2阶段的编程后的阈值区域。图54表示1-4-5-5数据编码的例子。
如图54的(t1)所示,nand存储单元阵列23的全部存储单元在未写入的状态下具有阈值区域s0。如图54的(t2)所示,非易失性存储器3的控制部22在第1阶段的编程中,相应于要向lower页写入的位值,按各存储单元来使阈值区域s0保持不变,或者向电荷蓄积层47注入电子来使之移动到电压电平比阈值区域s0的电压电平高的阈值区域。由此,存储单元根据lower页数据被编程为2值的电平。
另外,如图54的(t3)所示,在第2阶段的编程中,进行middle/upper/top页的3页量的3位数据的写入。非易失性存储器3的控制部22对于第1阶段的数据附加middle/upper/top页的数据来作为第2阶段。更具体而言,控制部22进行第2阶段的编程,以使得在第2阶段的编程后得到16个分离了的阈值区域。
作为编程为第1阶段的2值的电平时的阈值区域的电平,例如设为如以下那样。在第1阶段被进行编程的2个阈值区域中的电压电平较高的一方的阈值区域在第2阶段转变为阈值区域s8~s15中的某一个。因此,控制部22进行控制以使得:在第1阶段被进行编程的2个阈值区域中的电压电平较高的一方的阈值区域成为与在第2阶段生成的阈值区域s8相同程度的阈值分布,或者进行控制以使得:成为虽未达到在第2阶段生成的阈值区域s8、但距阈值区域s0具有充分的间隔的阈值分布。在第1阶段的编程中,分割为2个阈值区域即可,通过容许各阈值区域的宽度宽,能够使第1阶段的编程高速化。即使在第1阶段所生成的2个阈值区域的宽度宽,若2个阈值区域的间隔宽,则通过进行第2阶段的编程,也能够缩窄16个阈值区域的宽度并且确保各阈值区域的间隔。
此外,在第3实施方式中,为了减少相邻存储单元间干涉的影响,按与图8b所示的顺序相同的顺序执行编程。即,在第1阶段和第2阶段不进行对于相同的字线wli的连续的编程。为了减小字线间的相邻存储单元间干涉,在字线的到第2阶段为止的编程完成之后减小相邻字线的阈值的变动量是有效的。若为图8b所示的序列,则字线的到第2阶段为止的编程完成之后的相邻字线的编程阶段变为仅是第2阶段,因此,能够减小相邻存储单元间干涉的影响。
图55a是表示图54的各阈值区域s0~s15的4位数据的图。分配给各阈值区域的4位数据的种类不一定限定为图55a。例如既可以是如图55b那样的分配,也可以是如图55c那样的分配。
本实施方式中的数据编码不一定限定为如图54那样的1-4-5-5。例如,图56a是表示本实施方式的第1变形例涉及的1-6-4-4数据编码的阈值区域的图,图56b是表示图56a的各阈值区域的4位数据的图。另外,图57a是表示本实施方式的第2变形例涉及的1-2-6-6数据编码的阈值区域的图,图57b是表示图57a的各阈值区域的4位数据的图。另外,图58a是表示本实施方式的第3变形例涉及的1-4-5-5数据编码的阈值区域的图,图58b是表示图58a的各阈值区域的4位数据的图。
图54、图56a、图57a以及图58a均在执行第2阶段的编程时,从第1阶段的阈值区域按最大7个量的阈值区域进行转变,另外,第1阶段中的2个阈值区域的间隔也为相同程度。由此,图54、图56a、图57a以及图58a均能够相同程度地抑制相邻单元间干涉。
接着,对第3实施方式涉及的写入步骤进行说明。此外,第3实施方式涉及的1块的量整体的写入步骤与第1实施方式涉及的1块的量整体的写入步骤(图9)相同,因此,省略其说明。在本实施方式中,也与第1实施方式同样地,一边以非连续的顺序跨过字线wli一边使编程阶段进行下去,因此,将某字线wli的汇总(在此为块)作为编程序列的汇总来执行编程。
图59是表示第3实施方式涉及的第1阶段中的写入步骤的子流程图,图60是表示第3实施方式涉及的第2阶段中的写入步骤的子流程图。此外,关于图59所示的处理中的与图10所示的处理同样的处理省略其说明。另外,关于图60所示的处理中的与图11所示的处理同样的处理省略其说明。
如图59所示,在第1阶段的编程中,首先,从存储器控制器2向非易失性存储器3输入lower页数据的输入开始命令(步骤s1410)。然后,从存储器控制器2向非易失性存储器3输入lower页数据(步骤s1420)。
然后,从存储器控制器2向非易失性存储器3输入第1阶段的编程执行命令(步骤s1430),由此成为芯片忙(步骤s1440)。
此后,使用基于lower页数据决定的vth,进行向lower页和middle页的数据写入。
在向lower页的数据写入时,施加1次~多次的编程电压脉冲(步骤s1450)。然后,为了确认存储单元是否超过阈值边界电平地进行了移动,进行读出(步骤s1460)。进一步,确认lower页中的数据的失败位数是否小于标准(判定基准)(步骤s1470)。在数据的失败位数为标准以上的情况下(步骤s1470:否),反复进行步骤s1450~s1470的处理。并且,当数据的失败位数小于标准时(步骤s1470:是),成为芯片就绪(步骤s1480)。
在图60所示的第2阶段的编程中,首先,从存储器控制器2向非易失性存储器3输入middle页的数据的输入开始命令(步骤s1610)。然后,从存储器控制器2向非易失性存储器3输入middle页的数据(步骤s1620)。接着,从存储器控制器2向非易失性存储器3输入upper页的数据的输入开始命令(步骤s1630)。然后,从存储器控制器2向非易失性存储器3输入upper页的数据(步骤s1640)。接着,从存储器控制器2向非易失性存储器3输入top页的数据的输入开始命令(步骤s1650)。然后,从存储器控制器2向非易失性存储器3输入top页的数据(步骤s1660)。接着,从存储器控制器2向非易失性存储器3输入第2阶段的编程执行命令(步骤s1670),由此成为芯片忙(步骤s1680)。
此后,进行作为idl的lower页数据的读出(步骤s1690)。并且,基于lower页数据,决定middle/upper/top页的编程目标的vth(步骤s1700)。此后,使用所决定的阈值电压vth,进行向middle/upper/top页的数据写入。
进一步,控制部22也可以为了提高idl的读出数据的可靠性,进行多次读出,在芯片内的页缓冲器24中取得该读出结果的多数决定,作为接下来的写入数据来加以使用。当然,控制部22也可以在通常的读出工作时,进行多次的读出,在芯片内取得读出结果的多数决定,作为向外部的读出数据来加以使用。
在向upper页的数据写入时,施加1次~多次的编程电压脉冲(步骤s1710)。然后,为了确认存储单元是否超过阈值边界电平地进行了移动,进行middle/upper/top页的数据读出(步骤s1720)。
进一步,确认middle/upper/top页中的数据的失败位数是否小于标准(步骤s1730)。在middle/upper/top页中的数据的失败位数为标准以上的情况下(步骤s1730:否),反复进行步骤s1680~s1700的处理。并且,当数据的失败位数小于标准时(步骤s1730:是),成为芯片就绪(步骤s1740)。
在此,对图60所示的写入步骤的变形例进行说明。图61是表示第3实施方式涉及的第2阶段中的写入步骤的一变形例的子流程图。此外,对于图61的步骤s1610~s1740所示的处理步骤,除了不进行在图60中说明过的步骤s1690的处理之外,步骤s1610~s1740的处理步骤与图60相同。
在图61所示的处理步骤中,在步骤s1610之前进行步骤s1601~s1609的处理。具体而言,首先,从存储器控制器2向非易失性存储器3输入lower页的读出命令(步骤s1601),由此成为芯片忙(步骤s1602)。
此后,控制部22以vr5的阈值电压进行lower页数据的读出。并且,控制部22基于vr5的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s1603)。此后,成为芯片就绪(步骤s1604)。
当输出控制部22所读出的lower页数据时(步骤s1605),该lower页数据被发送给ecc电路10(步骤s1606)。由此,ecc电路10对lower页数据进行ecc纠正(步骤s1607)。
然后,从存储器控制器2向非易失性存储器3输入lower页的数据的输入开始命令(步骤s1608)。由此,ecc电路10向非易失性存储器3输入lower页数据的数据(步骤s1609)。
此后,进行步骤s1610~s1740的处理。此外,在步骤s1700中,基于来自ecc电路10的lower页数据0,决定middle页、upper页以及top页的编程目标的vth。
这样,在本实施方式中,第2阶段的编程中的数据输入为middle页、upper页以及top页这3页。但是,要通过该第2阶段的编程决定存储单元的最终的阈值,需要也包含lower页的4页量的数据。因此,在该第2阶段的编程中,作为前处理,首先读出lower页数据。并且,通过对所读出的数据和所输入的middle页、upper页以及top页进行合成,决定middle页、upper页以及top页的编程目标的阈值电压vth。此外,第2阶段写入前和第2阶段写入后的读出电平也可以与第2阶段写入后的读出电平稍有不同。
接着,对页读出处理进行说明。在页读出的方法中,对于包括读出对象页的字线wli的编程根据第2阶段写入前的情况和第2阶段完成后的情况而不同。
在第2阶段写入前的字线wli的情况下,所记录的数据仅lower页是有效的。因此,控制部22在读出页为lower页时从存储单元读出数据。并且,控制部22在读出页为middle页、upper页以及top页的情况下,不进行存储单元读出工作,进行强制地全部输出“1”来作为读出数据的控制。
另一方面,在完成到了第2阶段的字线wli的情况下,无论读出页是top/upper/middle/lower页中的哪页,控制部22都对存储单元进行读出。在该情况下,根据进行读出的页为哪页,所需要的读出电压不同,因此,控制部22按照所选择的页来仅执行所需要的读出。
根据图54、图56a、图57a以及图58a所示的编码,lower页数据变化的阈值状态间的边界仅为1个,因此,控制部22根据阈值位于由该边界划分出的2个电压范围中的哪个,来决定数据。
另外,middle页、upper页或者top页的数据变化的阈值状态间的边界相应于图54、图56a、图57a以及图58a所示的各例而存在2个~6个,因此,控制部22根据阈值位于由那些边界划分出的电压范围中的哪个中,来决定数据。
以下,对页读出的具体的处理步骤进行说明。图62是表示第3实施方式涉及的存储器系统1中的第2阶段写入前的字线的页读出的处理步骤的流程图。图63是表示在第4实施方式涉及的存储器系统1中编程完成到了第2阶段的字线的页读出的处理步骤的流程图。此外,关于图62所示的处理中的与图16所示的处理同样的处理省略其说明。另外,关于图63所示的处理中的与图17所示的处理同样的处理省略其说明。
在第2阶段写入前的字线wli的情况下,如图62所示,控制部22对读出页进行选择(步骤s1810)。在读出页为lower页的情况下,控制部22以vr5的阈值电压进行读出(步骤s1820)。并且,控制部22基于vr5的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s1830)。
另外,在读出页为middle页的情况下,控制部22进行全部强制地输出“1”来作为存储单元的输出数据的控制(步骤s1840)。另外,在读出页为upper页的情况下,控制部22进行全部强制地输出“1”来作为存储单元的输出数据的控制(步骤s1850)。另外,在读出页为top页的情况下(步骤s1810、top),控制部22进行全部强制地输出“1”来作为存储单元的输出数据的控制(步骤s1860)。
另一方面,在编程完成到了第2阶段的字线wli的情况下,如图63所示,控制部22对读出页进行选择(步骤s1910)。在读出页为lower页的情况下,控制部22以vr8的阈值电压进行读出(步骤s1920)。并且,控制部22基于vr8的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s1930)。
另外,在读出页为middle页的情况下,控制部22以vr4、vr10、vr12以及vr14的阈值电压进行读出(步骤s1940、s1950、s1960、s1970)。并且,控制部22基于vr4、vr10、vr12以及vr14的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s1980)。
另外,在读出页为upper页的情况下,控制部22以vr2、vr5、vr7、vr11以及vr15的阈值电压进行读出(步骤s1990、s2000、s2010、s2020、s2030)。并且,控制部22基于vr2、vr5、vr7、vr11以及vr15的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s2040)。
另外,在读出页为top页的情况下,控制部22以vr1、vr3、vr6、vr9以及vr13的阈值电压进行读出(步骤s2050、s2060、s2070、s2080、s2090)。并且,控制部22基于vr1、vr3、vr6、vr9以及vr13的阈值电压下的读出结果,将所读出的数据的值决定为“0”或者“1”(步骤s2100)。
这样,在如图58a所示那样的阈值的编程控制中,在lower页数据的读出的情况下,作为能够上下各1个电平地对2个电平进行分离的读出电平,仅使用vr5。
另一方面,在完成到了第2阶段的字线wli的情况下,无论读出页是top/upper/middle/lower中的哪个,都对存储单元进行读出,但根据对哪个页进行读出而所需要的读出电压不同,因此,仅执行按照了所选择的页的所需要的读出。
此外,存储器控制器2能够管理/识别对于字线wli的编程完成到了第1阶段和第2阶段中的哪个阶段。存储器控制器2进行编程控制,因此,若存储器控制器2记录其进展状况,则存储器控制器2能够容易地参照非易失性存储器3的哪个地址处于什么样的编程状态。在该情况下,存储器控制器2在从非易失性存储器3进行读出时,对包含对象页地址的字线wli是什么样的编程状态进行识别,发布与所识别到的状态相应的读出命令。
此外,第2阶段写入前和第2阶段写入后的读出电平也可以与第2阶段写入后的读出电平稍有不同。
另外,对本实施方式也可以应用第2实施方式。即,在本实施方式中,也可以汇总进行字线wln-1的第2阶段的编程和字线wln的第1阶段的编程。在该情况下,汇总进行与上述的2个编程有关的编程用的命令输入和数据输入。
另外,在本实施方式中,不需要第1阶段结束后的middle页的边界数为2个这一制约。因此,也可以应用在第1实施方式~第2实施方式中所使用的数据编码以外的数据编码。并且,在本实施方式的图54、图56a、图57a以及图58a所示的变形例中,例如也可以进行将top/middle/upper页的数据分配在页之间调换这样的各种的进一步的变形。即,上述的图55a、图55b、图55c、图56b、图57b以及图58b中的lower页的1与0的边界位置、middle页的1与0的边界位置、upper页的1与0的边界位置以及top页的1与0的边界位置,可以在页之间进行调换。另外,也可以将lower页的1与0的边界位置和middle页的1与0的边界位置进行调换。同样地,也可以将upper页的1与0的边界位置和top页的1与0的边界位置进行调换。
这样,在第3实施方式中,与第1实施方式同样地,在对由具有三维构造或者二维构造的4位/单元的nand存储器5构成的非易失性存储器3进行编程时,采用1-4-5-5数据编码等,使编程的阶段为两阶段制。以两阶段进行编程,因此,数据编程时所输入的数据量减少,能够抑制存储器控制器2所需要的写入缓冲量。另外,能够减少非易失性存储器3的页间的位错误率的不平衡,因此,不需要提高ecc电路10的错误纠正能力,所以能够降低ecc电路10的成本。另外,数据传送成为各页仅1次,因此,能够抑制传送时间和功耗。
另外,一边跨过字线wli一边执行各编程阶段,因此,能够减少与相邻字线wli的相邻单元间干涉的量。另外,从第1阶段的阈值区域向第2阶段的阈值区域的变化宽度小,因此,能够抑制相邻单元缓冲效果量。另外,能够扩大第2阶段之前的idl裕量,能够提高写入序列的可靠性。另外,通过在第1阶段的编程结束时使lower页中的阈值边界为1个,能够使第1阶段的编程、即lower页的编程高速化。此外,对于第1阶段的编程的高速化,能够通过在反复进行写入和写入验证时将一点一点地使写入电压升压来进行写入时的阶跃电压设为比第2阶段的编程结束时大的值等来进行高速化。
对以上进行总结的话,第3实施方式涉及的存储器控制器2在使非易失性存储器3进行了写入第1位的数据的第1编程之后,进行写入第2位、第3位以及第4位的数据的第2编程。更具体而言,存储器控制器2使非易失性存储器3进行第1编程和第2编程,以使得从第1编程时的阈值区域变化为第2编程结束时的阈值区域的顺序不调换。例如,存储器控制器2使非易失性存储器3进行第1编程和第2编程,以使得写入第1位~第4位的数据时的位值的变化数依次成为1、4、5、5或者1、6、4、4或者1、2、6、6或者1、5、5、4或者1、5、4、5或者1、4、6、4或者1、4、4、6或者1、5、6、3或者1、5、3、6或者1、3、6、5或者1、3、5、6或者1、6、5、3或者1、6、3、5。第1位是4位数据的最低位的位。
以上,对在第1阶段进行1页量的编程、在第2阶段进行3页量的编程的qlc的各种变形例进行了说明,但除了上述的数据编码之外,也考虑各种数据编码的变形例。以下,一并列举未在上面描述的数据编码的变形例。
图64是表示1-4-5-5数据编码的其他变形例的图。图65~图67是表示1-5-5-4数据编码的其他变形例的图。图68和图69是表示1-4-5-5数据编码的其他变形例的图。图70是表示1-5-4-5数据编码的其他变形例的图。图71和图72是表示1-4-5-5数据编码的其他变形例的图。图73~图75是表示1-5-4-5数据编码的其他变形例的图。图76~图80是表示1-4-6-4数据编码的其他变形例的图。图81是表示1-6-4-4数据编码的其他变形例的图。图82~图84是表示1-4-4-6数据编码的其他变形例的图。图85和图86是表示1-5-6-3数据编码的其他变形例的图。图87~图89是表示1-3-6-5数据编码的其他变形例的图。图90和图91是表示1-3-5-6数据编码的其他变形例的图,图92是表示1-3-6-5数据编码的其他变形例的图。图93是表示1-6-5-3数据编码的其他变形例的图。图94和图95是表示1-3-5-6数据编码的其他变形例的图。图96是表示1-5-3-6数据编码的其他变形例的图。图97是表示1-3-6-5数据编码的其他变形例的图。图98是表示1-3-5-6数据编码的其他变形例的图。图99和图100是表示1-2-6-6数据编码的其他变形例的图。
图64~图100的任意附图中,将top页的1与0的边界位置、upper页的1与0的边界位置、middle页的1与0的边界位置在页之间任意地进行了调换后的数据编码也都是可以的。即,能够在第1阶段中对4个页中的任意的1个页进行编程。因此,关于各个候选例的组合存在4c1=4种。对于写入,从低位页开始完成,因此,也可以设为能够按
在上述的说明中,在第1阶段中通过lower页写入为2值的阈值分布、或者通过lower页和middle页写入为4值的阈值分布、或者通过lower页、middle页以及upper页的数据写入为8值的阈值分布之后,在第2阶段中通过剩余的页的数据写入为16值的阈值分布,但也可以在第2阶段中也再次输入第1阶段的lower页或者middle页或者upper页的一部分或者全部的输入数据,通过第2阶段写入为16值的阈值分布。或者,也可以在第2阶段的写入前读出通过第1阶段所写入了的数据,在通过ecc等进行纠正之后,在第2阶段中也再次进行输入,通过第2阶段写入为16值的阈值分布。
这样,在第3实施方式中,在第1阶段的编程(第1编程)中,仅对4位数据中的第1位进行编程,因此,能够充分地扩大第1阶段的编程后的2个阈值区域的间隔。由此,能够高速地进行第1阶段的编程。另外,在第2阶段的编程(第2编程)时进行编程以使得从第1阶段时的阈值区域变化为第2阶段时的阈值区域的顺序不调换,因此,能够抑制相邻单元间干涉。
(第4实施方式)
第4实施方式中,在第1阶段中进行lower页、middle页以及upper页的编程,在第2阶段中进行top页的编程。
图101a是表示第4实施方式中的编程后的各阈值区域的图,图101b是表示分配给图101a的各阈值区域的4位数据的图。图101a表示进行了2-3-6-8数据编码的例子。
在第4实施方式的第1阶段中,相应于要向lower页、middle页以及upper页写入的位值,按各存储单元设定为8个阈值区域中的某个。非易失性存储器3的控制部22通过第1阶段的编程生成8个阈值区域。
另外,控制部22通过第2阶段的编程,生成从在第1阶段中被进行了编程的8个阈值区域最大错开了1个的量的合计16个的阈值区域。
这样,在本实施方式中,在进行第2阶段的编程时,阈值区域只移动一点点,因此,能够防止相邻单元间干涉。在第1阶段中,生成8个阈值区域,但通过进行编程以使得各阈值区域的间隔能够确保为均等,也能够防止位错误。
第4实施方式中的数据编码不一定限定为2-3-2-8。例如,图102a是表示第4实施方式的一变形例涉及的阈值区域的图,图102b是表示分配给图102a的各阈值区域的编程后的各阈值区域的图。图102a表示进行了1-3-3-8数据编码的例子。
图101a和图102a的例子均在第1阶段中进行lower页、middle页以及upper页的合计3页的编程,在第2阶段中进行top电平的编程。由于能够通过第1编程生成8个阈值区域,因此,能够将第2阶段的与阈值区域的变化数抑制在1个以内,难以产生相邻单元间干涉。
这样,在第4实施方式中,在第1阶段中进行lower页、middle页以及upper页的编程,因此,在第1阶段中生成8个阈值区域。因此,各阈值区域的间隔窄,但能够在第2阶段中进行了top页的编程时将从第1阶段的阈值区域向第2阶段的阈值区域的变化宽度抑制为阈值区域的1个的量,从第1阶段的阈值区域变化为第2阶段的阈值区域的变化宽度也不会交叉。
对以上进行总结的话,第4实施方式涉及的存储器控制器2在使非易失性存储器3进行了写入第1位、第2位以及第3位的数据的第1编程之后,使非易失性存储器3进行写入第4位的数据的第2编程。更具体而言,存储器控制器2使非易失性存储器3进行第1编程和第2编程,以使得从第1编程结束时的阈值区域变化为第2编程结束时的阈值区域的顺序不调换。例如,存储器控制器2使非易失性存储器3进行第1编程和第2编程,以使得写入第1位~第4位的数据时的位值的变化数依次成为2、3、2、8、2、2、3、8或者3、2、2、8或者1、3、3、8或者3、1、3、8或者3、3、1、8或者1、2、4、8或者1、4、2、8或者2、1、4、8或者2、4、1、8或者4、1、2、8或者4、2、1、8。第1位是最低位的位,第2位是从最低位起的第2个位,第3位是从最高位起的第2个位。
上述的图101b和图102b中的lower页的1与0的边界位置、middle页的1与0的边界位置、upper页的1与0的边界位置以及top页的1与0的边界位置可以在页之间进行调换。另外,也可以将lower页的1与0的边界位置和middle页的1与0的边界位置进行调换。同样地,也可以将upper页的1与0的边界位置和top页的1与0的边界位置进行调换。
以上,对在第1阶段中进行3页量的编程、在第2阶段中进行1页量的编程的qlc的各种例子进行了说明,但除此以外也可考虑变形例。图103是表示1-2-4-8数据编码的一变形例的图。在图103中,也可以进行将top页的1与0的边界位置、upper页的1与0的边界位置、middle页的1与0的边界位置在页之间任意地进行了调换所得到的数据编码。另外,对于写入,从低位页开始完成,因此,也可以设为能够按
这样,根据第4实施方式,在第1阶段中进行第1位~第3位的编程,在第2阶段中进行仅第4位的编程,因此,从第1阶段的编程后的阈值区域向第2阶段的编程后的阈值区域的变化宽度小,能够抑制相邻单元间干涉。
在上述的第1实施方式~第4实施方式中,对非易失性存储器3使用nand存储器5来构成的情况进行了说明,但也可以使用reram6(resistiverandomaccessmemory,阻变随机访问存储器)、mram6(magneto-resistiverandomaccessmemory,磁阻随机访问存储器)、pram6(phasechangerandomaccessmemory,相变随机访问存储器)、feram6(ferroeletricrandomaccessmemory,铁电随机访问存储器)等其他类型的非易失性存储器3。
以上对本发明的几个实施方式进行了说明,但这些实施方式是作为例子提示的,并不是意在限定发明的范围。这些新的实施方式能够以其他各种各样的方式来实施,能够在不脱离发明的宗旨的范围内进行各种省略、置换、变更。这些实施方式及其变形包含在发明的范围、宗旨内,并且,包含在权利要求书记载的发明及其等同的范围内。
1.一种存储器系统,具备:
非易失性存储器,其具有多个存储单元,所述多个存储单元中的各个能够通过16个阈值区域来存储由第1位~第4位表示的4位数据,所述16个阈值区域包括表示数据被擦除了的擦除状态的第1阈值区域、和电压电平比所述第1阈值区域的电压电平高且表示被写入了数据的写入状态的第2阈值区域~第16阈值区域;和
控制器,其在使所述非易失性存储器进行了写入所述第1位和所述第2位的数据的第1编程之后,使所述非易失性存储器进行写入所述第3位和所述第4位的数据的第2编程,
存在于所述第1阈值区域~所述第16阈值区域中的相邻的阈值区域之间的15个边界中的用于所述第1位的数据的值的判定的第1边界的数量、用于所述第2位的数据的值的判定的第2边界的数量、用于所述第3位的数据的值的判定的第3边界的数量、用于所述第4位的数据的值的判定的第4边界的数量,依次为1、4、5、5或者4、1、5、5,
所述控制器构成为,使所述非易失性存储器进行所述第1编程,以使得所述存储单元中的阈值区域相应于所述第1位和所述第2位的数据而变为表示数据被擦除了的擦除状态的第17阈值区域、和电压电平比所述第17阈值区域的电压电平高且表示被写入了数据的写入状态的第18阈值区域~第20阈值区域中的某一阈值区域,
所述第n阈值区域的电压电平比所述第(n-1)阈值区域的电压电平高,n为2以上且16以下的自然数,
所述第k阈值区域的电压电平比所述第(k-1)阈值区域的电压电平高,k为18以上且20以下的自然数,
所述控制器构成为,使所述非易失性存储器进行所述第2编程,以使得所述存储单元中的阈值区域相应于所述第3位和所述第4位的数据而从所述第17阈值区域~所述第20阈值区域中的某一阈值区域变为所述第1阈值区域~所述第16阈值区域中的4个阈值区域中的某一阈值区域,
处于所述4个阈值区域中的电压电平最低的阈值区域与电压电平最高的阈值区域之间的阈值区域的个数为4个以内。
2.根据权利要求1所述的存储器系统,
在所述第1阈值区域~所述第16阈值区域中的相邻的阈值区域之间,所述第1位~所述第4位中的一个位的值反转,
所述第1位、所述第2位、所述第3位以及所述第4位是最低位的位、从最低位起的第2个位、从最高位起的第2个位以及最高位的位中的分别不同的位。
3.根据权利要求1所述的存储器系统,
所述控制器,
构成为,在使所述非易失性存储器进行所述第2编程以使得从所述第17阈值区域变为所述第1阈值区域~所述第16阈值区域中的某一阈值区域的情况下,使所述非易失性存储器进行所述第2编程,以使得变为所述第1阈值区域~所述第16阈值区域中的4个第21阈值区域中的某一阈值区域,
构成为,在使所述非易失性存储器进行所述第2编程以使得从所述第18阈值区域变为所述第1阈值区域~所述第16阈值区域中的某一阈值区域的情况下,使所述非易失性存储器进行所述第2编程,以使得变为所述第1阈值区域~所述第16阈值区域中的4个第22阈值区域中的某一阈值区域,
构成为,在使所述非易失性存储器进行所述第2编程以使得从所述第19阈值区域变为所述第1阈值区域~所述第16阈值区域中的某一阈值区域的情况下,使所述非易失性存储器进行所述第2编程,以使得变为所述第1阈值区域~所述第16阈值区域中的4个第23阈值区域中的某一阈值区域,
构成为,在使所述非易失性存储器进行所述第2编程以使得从所述第20阈值区域变为所述第1阈值区域~所述第16阈值区域中的某一阈值区域的情况下,使所述非易失性存储器进行所述第2编程,以使得变为所述第1阈值区域~所述第16阈值区域中的4个第24阈值区域中的某一阈值区域,
所述4个第23阈值区域和所述4个第24阈值区域的电压电平都比所述4个第21阈值区域和所述4个第22阈值区域中的任何阈值区域的电压电平高,
所述4个第21阈值区域中的电压电平最高的阈值区域的电压电平比所述4个第22阈值区域中的电压电平最低的阈值区域的电压电平高,并且,所述4个第24阈值区域的电压电平都比所述4个第23阈值区域中的任何阈值区域的电压电平高,或者,
所述4个第23阈值区域中的电压电平最高的阈值区域的电压电平比所述4个第24阈值区域中的电压电平最低的阈值区域的电压电平高,并且,所述4个第22阈值区域的电压电平都比所述4个第21阈值区域中的任何阈值区域的电压电平高。
4.根据权利要求3所述的存储器系统,
所述4个第22阈值区域中的电压电平最低的阈值区域的电压电平比所述4个第21阈值区域中的电压电平最低的阈值区域的电压电平高,
所述4个第22阈值区域中的电压电平最高的阈值区域的电压电平比所述4个第21阈值区域中的电压电平最高的阈值区域的电压电平高,
所述4个第24阈值区域中的电压电平最低的阈值区域的电压电平比所述4个第23阈值区域中的电压电平最低的阈值区域的电压电平高,
所述4个第24阈值区域中的电压电平最高的阈值区域的电压电平比所述4个第23阈值区域中的电压电平最高的阈值区域的电压电平高。
5.根据权利要求3所述的存储器系统,
所述第18阈值区域的电压电平,比所述第2编程结束时的所述第1阈值区域~所述第16阈值区域中的所述第1位的值不同的两个阈值区域之间的边界的电压电平低,
所述第20阈值区域的电压电平比所述边界的电压电平大。
6.根据权利要求1~5中任一项所述的存储器系统,
所述非易失性存储器内的所述多个存储单元具有连接于第1字线的多个第1存储单元、和连接于与所述第1字线相邻的第2字线的多个第2存储单元,
所述控制器在使得对所述多个第1存储单元进行了所述第1编程之后,使得对所述多个第2存储单元进行所述第1编程,在使得对所述多个第2存储单元进行了所述第1编程之后,使得对所述多个第1存储单元进行所述第2编程。
7.根据权利要求1~5中任一项所述的存储器系统,
所述非易失性存储器具备控制部,所述控制部对通过所述第1编程而编程了的数据进行读出,基于所述读出的数据来决定所述第2编程中的阈值电压。
8.根据权利要求1~5中任一项所述的存储器系统,
所述非易失性存储器具备控制部,所述控制部针对来自所述控制器的所述第2编程的执行要求,对通过所述第1编程而编程了的所述第1位和所述第2位的数据进行读出,基于所述读出的数据和所述第3位以及所述第4位的数据来进行所述第2编程。
9.根据权利要求1~5中任一项所述的存储器系统,
所述非易失性存储器至少具有分别连接了2个以上的所述存储单元的第1字线和第2字线,
所述控制器以连续的命令和数据输入来对所述非易失性存储器指示下述执行,该执行是对于连接于所述第1字线的存储单元的所述第1编程和对于连接于所述第2字线的存储单元的所述第2编程的连续的执行。
技术总结