存储系统及写入方法与流程

文档序号:13423616阅读:372来源:国知局
存储系统及写入方法与流程

本申请要求以日本专利申请2016-131025号(申请日:2016年6月30日)为在先申请的优先权。本申请通过参照该在先申请而包括该在先申请的全部内容。

本发明的实施方式涉及存储系统及写入方法。



背景技术:

近年来的微细化得到了发展的三位(bit)/单元(cell)的nand存储器中,一般地,为了避免单元之间相互干扰,而采取下述方法:在同时写入要在第一存储单元中存储的所有位之后,在相邻单元同样地同时写入所有位,然后,再在第一存储单元再写入(编程)所有位。但是,在使用该方法时,为了再写入而需要在控制器侧保持数据。

作为同时编程所有位的方法,已知有1-3-3编码。该方法是将三位/单元的8个阈值电压的区域间的7个对三个位分别一个、三个、三个地进行分配的编码。

但是,近年来的nand存储器被三维化,所需的写入缓冲量增大,因此存储控制器的成本增大。因此,在三维的非易失性存储器中,也期望既抑制单元间相互干扰和各页间的位错误率的不均衡又减小存储控制器的写入缓冲量的对策。



技术实现要素:

本发明的实施方式提供:能既抑制单元间相互干扰又减小存储控制器的写入缓冲量的存储系统及写入方法。

根据实施方式,能提供一种存储系统。所述存储系统具备:具有多个存储单元的非易失性存储器和存储控制器。所述多个存储单元能以页为单位进行数据的写入。此外,所述多个存储单元的每个利用表示数据已被擦除的擦除状态的阈值区域和是比表示所述擦除状态的阈值电压区域高的阈值电压的、表示数据已被写入的写入状态的七个阈值区域,而能存储三位的数据。此外,所述多个存储单元分别地使所述三位中的第一位与第一页对应、第二位与第二页对应、第三位与第三页对应。所述存储控制器使所述非易失性存储器执行基于要在所述第一页写入的数据的第一编程。此外,所述存储控制器在所述第一编程后使所述非易失性存储器执行基于要在所述第二页及第三页写入的数据的第二编程。

附图说明

图1是表示第一实施方式涉及的存储装置的构成例的框图。

图2是表示第一实施方式的非易失性存储器的构成例的框图。

图3是表示三维结构的存储单元阵列的区块(block)的构成例的图。

图4是三维结构的nand存储器的存储单元阵列的部分区域的剖视图。

图5是表示第一实施方式的阈值区域的一例的图。

图6是表示第一实施方式的数据编码的图。

图7是表示第一实施方式的编程之后的阈值分布的图。

图8a是表示第一实施方式的编程顺序的第一例的图。

图8b是表示第一实施方式的编程顺序的第二例的图。

图8c是表示第一实施方式的编程顺序的第三例的图。

图9a是表示第一实施方式涉及的一个区块的量的整体的写入次序的示例的流程图。

图9b是表示第一实施方式所涉及的第一阶段(stage)中的写入次序的子流程图。

图9c是表示第一实施方式所涉及的第二阶段的写入次序的子流程图。

图9d是表示第一实施方式所涉及的第二阶段的写入次序的变形例的子流程图。

图9e是用于说明多次读出结果的择多处理的说明图。

图10a是用于说明采用1-3-3编码的lm-foggy-fine编程中的缓冲数据量的图。

图10b是用于说明第一实施方式的编程中的缓冲数据量的图。

图11是表示第一实施方式所涉及的外部编程命令的序列的示例的图。

图12a是表示在第一实施方式所涉及的存储装置中编程完成至第一阶段为止的字线中的页读出的处理次序的流程图。

图12b是表示在第一实施方式所涉及的存储装置中编程完成至第二阶段为止的字线中的页读出的处理次序的流程图。

图13是表示第一实施方式所涉及的外部读出命令的序列的示例的图。

图14a是表示第二实施方式所涉及的一个区块的量的整体的写入次序的流程图。

图14b是表示第二实施方式所涉及的第一阶段和第二阶段的写入次序的子流程图。

图15是表示第二实施方式所涉及的外部编程命令的序列的示例的图。

图16是用于说明电源切断引起的数据损坏的图。

图17是用于说明第三实施方式所涉及的第二阶段的编程的图。

图18是表示第三实施方式所涉及的第二阶段的写入次序的流程图。

图19是用于说明第三实施方式所涉及的第二阶段的编程变形例的图。

图20是表示1-3-3数据编码的其他示例的图。

图21是表示第四实施方式中的编程之后的阈值分布的图。

图22a是表示第四实施方式所涉及的第一阶段中的写入次序的子流程图。

图22b是表示第四实施方式所涉及的第二阶段的写入次序的子流程图。

图22c是表示第四实施方式所涉及的第二阶段的写入次序的变形例的子流程图。

图23是表示第四实施方式所涉及的外部编程命令的序列的示例的图。

图24a是表示在第四实施方式所涉及的存储装置中编程完成至第一阶段为止的字线中的页读出的处理次序的流程图。

图24b是表示在第四实施方式所涉及的存储装置中编程完成至第二阶段为止的字线中的页读出的处理次序的流程图。

图25是表示第四实施方式所涉及的外部读出命令的序列的示例的图。

图26是用于说明标志单元的构成的图。

图27a是用于说明第五实施方式所涉及的对标志(flag)单元的编程的图。

图27b是用于说明第五实施方式所涉及的对虚设单元的编程的图。

图28是表示第五实施方式所涉及的第二阶段的写入次序的流程图。

图29是表示第五实施方式所涉及的页读出的处理次序的流程图。

图30是表示第五实施方式所涉及的外部读出命令的序列的示例的图。

图31是表示第六实施方式的阈值区域的一例的图。

图32是表示第六实施方式中的编程之后的阈值分布的第一例的图。

图33是表示与图32所示的阈值分布对应的数据编码的图。

图34是表示第六实施方式中的编程之后的阈值分布的第二例的图。

图35是表示与图34所示的阈值分布对应的数据编码的图。

图36是表示第六实施方式中的编程之后的阈值分布的第三例的图。

图37是表示与图35所示的阈值分布对应的数据编码的图。

附图标记说明

1存储控制器2非易失性存储器11ram12处理器

22控制部23nand存储单元阵列fc标志单元

mt存储单元晶体管

具体实施方式

以下将参照附图对实施方式所涉及的存储系统和写入方法进行详细说明。此外,本发明不由这些实施方式进行限定。

(第一实施方式)

图1是表示第一实施方式所涉及的存储装置的构成例的框图。本实施方式的存储装置具备存储控制器1和非易失性存储器2。存储装置可与主机连接。主机例如是个人计算机、便携终端等电子设备。

非易失性存储器2是非易失性地存储数据的存储器,例如,具备nand存储器(nand闪速存储器)。在本实施方式中,设非易失性存储器2是具有每个存储单元能存储三位的存储单元的nand存储器、即、是三位/单元(tlc:triplelevelcell(三层单元))的nand存储器,来进行说明。非易失性存储器2被三维化。

存储控制器1根据来自主机的写入命令而控制数据向非易失性存储器2的写入。另外,存储控制器1根据来自主机的读出命令而控制数据从非易失性存储器2的读出。存储控制器1具备ram(随机存取存储器)11、处理器12、主机接口13、ecc(错误校验修正(校正))电路14和存储器接口15。ram11、处理器12、主机接口13、ecc电路14和存储器接口15由内部总线16相互连接。

主机接口13将从主机接收到的命令和用户数据(写入数据)等输出到内部总线16。另外,主机接口13将从非易失性存储器2读出的用户数据、来自处理器12的响应等向主机发送。

存储器接口15基于处理器12的指示来控制将用户数据等向非易失性存储器2写入的处理和从非易失性存储器2读出的处理。

处理器12综合控制存储控制器1。处理器12是例如cpu(中央处理单元)、mpu(微处理单元)等。处理器12在从主机经由主机接口13接收到命令的情况下进行依照该命令的控制。例如,处理器12根据来自主机的命令而向存储器接口15指示对非易失性存储器2写入用户数据和奇偶校验。另外,处理器12根据来自主机的命令而向存储器接口15指示从非易失性存储器2读出用户数据和奇偶校验。

处理器12对在ram11中蓄积的用户数据确定非易失性存储器2上的储存区域(存储区域)。用户数据经由内部总线16而在ram11中储存。处理器12对以作为写入单位的页为单位的数据(页数据)实施存储区域的确定。在本说明书中,将在非易失性存储器2的1页中储存的用户数据定义为单元(unit)数据。单元数据通常被编码并作为码字(codeword)而在非易失性存储器2中储存。在本实施方式中,编码不是必须的。虽然存储控制器1可不编码地将单元数据储存在非易失性存储器2中,但是,在图1中,表示了进行编码的构成来作为一个构成例。在存储控制器1不进行编码的情况下,页数据与单元数据一致。另外,可基于一个单元数据来生成一个码字,也可基于将单元数据进行分割得到的分割数据来生成一个码字。另外,可使用多个单元数据来生成一个码字。

处理器12按每个单元数据确定写入目的地的非易失性存储器2的存储区域。对非易失性存储器2的存储区域分配有物理地址。处理器12使用物理地址来管理单元数据的写入目的地的存储区域。处理器12向存储器接口15指示,以指定所确定的存储区域(物理地址)来将用户数据向非易失性存储器2写入。处理器12对用户数据的逻辑地址(主机所管理的逻辑地址)和物理地址之间的对应关系进行管理。处理器12在接收到来自主机的包括逻辑地址的读出命令的情况下特定与逻辑地址相对应的物理地址,并指定物理地址以向存储器接口15指示用户数据的读出。

在本说明书中,将与一个字线共同连接的存储单元定义为存储单元组mg。在本实施方式中,非易失性存储器2是三位/单元的nand存储器,一个存储单元组mg与三页对应。每个存储单元的三位分别与该三页对应。在本实施方式中,将该三页称为下(lower)页(第一页)、中(middle)页(第二页)、上(upper)页(第三页)。

ecc电路14对储存在ram11中的用户数据进行编码,而生成码字。另外,ecc电路14对从非易失性存储器2读出的码字进行解码。

ram11将从主机接收到的用户数据临时储存直到向非易失性存储器2存储、将从非易失性存储器2读出的数据临时储存直到向主机发送。ram11是例如sram(静态随机存取存储器)和/或dram(动态随机存取存储器)之类的通用存储器。

在图1中,表示了存储控制器1分别具备ecc电路14和存储器接口15的构成例。然而,ecc电路14也可在存储器接口15中内置。另外,ecc电路14可内置在非易失性存储器2中。

在从主机接收到写入请求的情况下,存储装置(存储系统)的工作如下。处理器12使写入数据临时存储到ram11。处理器12读取在ram11中保存(store)的数据,并输入到ecc电路14。ecc电路14对输入的数据进行编码,并将码字输入至存储器接口15。存储器接口15将输入的码字写入到非易失性存储器2中。

在从主机接收到读取请求的情况下,存储装置的工作如下。存储器接口15将从非易失性存储器2读出的码字输入到ecc电路14。ecc电路14对输入的码字进行解码,并将解码后的数据保存至ram11。处理器12将在ram11中保存的数据经由主机接口13发送到主机。再有,在非易失性存储器2中,有时连接多个芯片,并且非易失性存储器2和存储器接口15也可通过贯通孔(tsv)来连接。

图2是表示本实施方式的非易失性存储器的构成例的框图。非易失性存储器2具备nandi/o接口21、控制部22、nand存储单元阵列(存储单元部)23、和页缓冲器24。非易失性存储器2例如包括一芯片的半导体基板(例如硅基板)。

控制部22基于经由nandi/o接口21而从存储控制器1输入的命令等来控制非易失性存储器2的工作。具体而言,控制部22在写入请求被输入的情况下进行控制,以将被请求写入的数据向nand存储单元阵列23上的指定的地址写入。另外,控制部22在读出请求被输入的情况下进行控制,以将被请求读出的数据从nand存储单元阵列23中读出并经由nandi/o接口21而向存储控制器1输出。页缓冲器24是临时储存在nand存储单元阵列23的写入时从存储控制器1输入的数据、临时储存从nand存储单元阵列23读出的数据的缓冲器。

图3是表示三维结构的存储单元阵列的区块的构成例的图。图3表示构成三维结构的存储单元阵列的多个区块中的一个区块blk。存储单元阵列的其它区块也具有与图3相同的构成。另外,本实施方式也能适用于二维结构的存储单元。

如图所示,区块blk包括例如四个指部(finger)fng(fng0~fng3)。另外,各个指部fng包括多个nand串ns。nand串ns的每一个都包括例如八个存储单元晶体管mt(mt0至mt7)和选择晶体管st1、st2。另外,存储单元晶体管mt的个数不限于八个。存储单元晶体管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之间共同连接,相对于此,选择栅线sgd即使在同一区块blk内也按指部fng0~fng3的每一个而独立。

在构成nand串ns的存储单元晶体管mt0~mt7的控制栅电极,分别连接有字线wl0~wl7,并且各nand串ns中的存储单元晶体管mti(i=0~n)之间由同一字线wli(i=0~n)共同连接。即,在区块blk内位于同一行的存储单元晶体管mti的控制栅电极与同一字线wli连接。另外,在以下的说明中,有时将nand串ns称为串。

各存储单元与字线wli连接,并且也与位线连接。各存储单元能通过识别字线wli以及选择栅线sgd0~sgd3的地址和识别位线的地址来进行识别。如上所述,将位于同一区块blk内的存储单元(存储单元晶体管mt)的数据一并擦除。另一方面,数据的读出和写入以物理扇区ms为单位来进行。一个物理扇区ms包括与一个字线wli连接、并且属于一个指部fng的多个存储单元。

在进行读取工作和编程工作时,根据物理地址来选择一个字线wli和一个选择栅线sgd,选择物理扇区ms。

图4是三维结构的nand存储器的存储单元阵列的部分区域的剖视图。如图4所示,在p型阱区(p-well)上形成有多个nand串ns。即,在p型阱区上形成有作为选择栅线sgs发挥功能的多个布线层333、作为字线wli发挥功能的多个布线层332和作为选择栅线sgd发挥功能的多个布线层331。

并且,形成有贯穿这些布线层333、332、331而到达p型阱区的存储孔334。在存储孔334的侧面,依次形成区块绝缘膜335、电荷蓄积层336和栅绝缘膜337,进而在存储孔334内埋入了导电膜338。导电膜338作为nand串ns的电流路径发挥功能,且该导电膜是在存储单元晶体管mt以及选择晶体管st1和st2工作时形成沟道的区域。

在各nand串ns中,在p型阱区上依次重叠有选择晶体管st2、多个存储单元晶体管mt和选择晶体管st1。在导电膜338的上端,形成作为位线bl发挥功能的布线层。

此外,在p型阱区的表面内,形成有n+型杂质扩散层和p+型杂质扩散层。在n+型杂质扩散层上形成接触插塞340,且在接触栓塞340上形成作为源线sl发挥功能的布线层。另外,在p+型杂质扩散层上形成有接触插塞339,且在接触插塞339上形成作为阱布线cpwell发挥功能的布线层。

以上的图4所示的构成在图4的纸面的进深方向上排列有多列,且通过在进深方向上排成一列的多个nand串的集合而形成一个指部fng。

图5是表示第一实施方式的阈值区域的一例的图。在图5中,表示三位/单元的非易失性存储器2的阈值分布例。在非易失性存储器2中,利用在存储单元的浮置栅中蓄积的电荷量来存储信息。各存储单元具有相应于电荷量的阈值电压。而且,使在存储单元中存储的多个数据值与阈值电压的多个区域(阈值区域)分别对应。

图5中记载为er、a、b、c、d、e、f、g的八个分布(山形)表示在八个阈值区域内的各自的阈值分布。这样地,各存储单元具有由七个边界隔开所得的阈值分布。图5的横轴表示阈值电压,纵轴表示存储单元数(单元数)的分布。

在本实施方式中,将阈值电压为vr1以下的区域称为区域er,将阈值电压比vr1大且为vr2以下的区域称为区域a,将阈值电压比vr2大且为vr3以下的区域称为区域b,将阈值电压比vr3大且为vr4以下的区域称为区域c。此外,在本实施方式中,将阈值电压比vr4大且为vr5以下的区域称为区域d,将阈值电压比vr5大且为vr6以下的区域称为区域e,将阈值电压比vr6大且为vr7以下的区域称为区域f,将阈值电压比vr7大的区域称为区域g。

此外,将与区域er、a、b、c、d、e、f、g相对应的阈值分布分别称为分布er、a、b、c、d、e、f、g(第一~第八分布)。vr1~vr7是成为各区域的边界的阈值电压。

在非易失性存储器2中,使多个数据值与存储单元的多个阈值区域(即阈值分布)分别对应。将该对应称为数据编码。预先确定该数据编码,在数据的写入(编程)时向存储单元注入电荷以成为与按照数据编码而存储的数据值相对应的阈值区域内。然后,在读出时,向存储单元施加读出电压,根据存储单元的阈值比读出电压低还是高,来确定数据。在阈值电压比读出电压低的情况下,作为“擦除”状态的数据值定义为“1”。在阈值电压为读出电压以上的情况下,为“已编程”的状态,将数据定义为“0”。

在数据的读出时,通过阈值比读出对象的边界的读出等级(level)低还是高,来确定数据。在阈值为最低的情况下,为“擦除”状态,所有的位的数据定义为“1”。在阈值比“擦除”状态高的情况下,为“已编程”的状态,按照编码来将数据定义为“1”或“0”。

图6是表示第一实施方式的数据编码的图。在本实施方式中,使如图5所示的八个阈值分布(阈值区域)与三位的八个数据值分别对应。阈值电压与对应于上页、中页、下页的位的数据值之间的关系如下所示。

·阈值电压位于er区域内的存储单元是存储了“111”的状态。

·阈值电压位于a区域内的存储单元是存储了“101”的状态。

·阈值电压位于b区域内的存储单元是存储了“001”的状态。

·阈值电压位于c区域内的存储单元是存储了“011”的状态。

·阈值电压位于d区域内的存储单元是存储了“010”的状态。

·阈值电压位于e区域内的存储单元是存储了“110”的状态。

·阈值电压位于f区域内的存储单元是存储了“100”的状态。

·阈值电压位于g区域内的存储单元是存储了“000”的状态。

这样,在阈值电压的每个区域,都能表示各存储单元的三位的数据的状态。再有,在存储单元为未写入的状态(“擦除”的状态)下,存储单元的阈值电压位于er区域内。另外,在此所示的符号中,在er(擦除)状态下存储“111”这一数据,在a状态下存储“101”这一数据,如此地,在任意两个相邻的状态之间仅1位数据发生变化。这样,图6所示的编码为在任意两个相邻的区域之间仅1位数据发生变化的格雷码。

在图6所示的本实施方式的编码中,成为用于判定各页的位值的边界的阈值电压如下所示。

·成为用于判定上页的位值的边界的阈值电压为vr4。

·成为用于判定中页的位值的边界的阈值电压为vr2、vr5、vr7。

·成为用于判定下页的位值的边界的阈值电压为vr1、vr3、vr6。

如上所述,成为用于判定位值的边界的阈值电压的数量(以下称为边界数量)在下页、中页、上页分别为1、3、3。以下,使用下页、中页、上页的各自的边界数量而将这样的编码称为1-3-3编码。在此,应当注意的事项是,各页的与相邻数据变化的边界的最大数量为3。边界数量的最大数量为3,在将八个状态用三位进行表示的情况下,最大边界数量为最小,位错误率的不均衡变小。

非易失性存储器2的控制部22基于图6所示的编码来控制对nand存储单元阵列23的编程和从nand存储单元阵列23的读出。

三维存储单元中,存储单元的大小相对于近年来细微化发展的世代的二维nand存储器较大,且单元间相互干扰较小。在这种情况下,通常采用将所有位同时编程(如果将各位向不同的页分配,则将全部页同时编程)的方法。

在对所有位同时进行编程的情况下,作为数据编码,可使用1-2-4编码或2-3-2编码。在1-2-4编码中,在将八个阈值分布之间的七个边界分配到三个页时,分配边界以便在下页分配一个边界、在中页分配两个边界、在上页分配四个边界。另外,在2-3-2编码中,在将八个阈值分布之间的七个边界分配到三个页时,分配边界以便在上页分配两个边界、在中页分配三个边界、在下页分配两个边界。

然而,在1-2-4编码的情况下,边界数量在各页明显不均衡,因此,结果是,页间的位错误率的不均衡增大。这是因为,位错误的原因几乎都由向相邻分布的阈值移动引起,具有越多边界数量的页,位错误数越多。该情况,即使作为存储单元的错误率相同,由于导致不能不对修正(校正)页数据的错误所需的ecc的修正能力进行强化,因此使存储装置的速度、成本及消耗电力恶化。此外,边界数量的不均衡也导致读出速度的不均衡。

此外,在三位/单元的nand存储器中,单元间相互干涉比1位/单元和/或2位/单元的nand存储器大。因此,在近年来的微细化得到了发展的世代的nand存储器中,一般地,为了抑制单元间相互干扰,而有下述编程方法:使用三个或两个阶段,在存储单元的浮置栅中一点点地注入电荷(lm-foggy-fine编程或foggy-fine编程)。在该lm-foggy-fine编程中,在第一个阶段(lm阶段)的写入后进行相邻单元的写入,并回到刚才的单元,且在第二个阶段(foggy阶段)的写入之后,进一步再次在相邻单元写入,然后再次返回刚才的存储单元并利用第三个阶段(fine阶段)这三个编程阶段来实施写入。

另外,在foggy-fine编程中,在第一个阶段(foggy阶段)的写入后,进行相邻单元的写入,然后返回刚才的存储单元并利用第二个阶段(fine阶段)这两个编程阶段来实施写入。该情况下的各编程阶段是编程的执行单元,且一个字线wli的编程通过执行三个编程阶段而完成。

在第一个阶段即lm阶段的编程中,输入数据仅为下页数据即可。在第二个阶段即foggy阶段的编程中,使用八个阈值分布来执行编程。此时的阈值分布(阈值区域)具有比最终的数据编码中的阈值分布大的宽度。即,在foggy阶段中,进行foggy(粗略)写入。在该foggy阶段的编程中,输入数据需要三页全部。foggy阶段的编程之后的阈值分布为相邻的分布相互重合的中间状态,因此不能进行数据的读出。在第三个阶段即fine阶段的编程中,使foggy阶段的编程之后的阈值分布移动为最终的数据编码中的阈值分布。即,在fine阶段,进行fine写入。该fine阶段的编程中,输入数据也需要三页全部。fine阶段的编程之后的阈值分布是将相邻的分布分离后的最终状态,因此在fine阶段的编程后,能进行数据的读出。

在2-3-2编码的情况下,边界数量的不均衡少,但是,在lm-foggy-fine编程的数据输入中,在所有阶段都需要三页量的数据输入。此外,在foggy-fine编程的数据输入中,在所有阶段都需要两页量的数据输入。这会导致:数据输入所需的时间增加,并使存储装置的速度恶化。另外,在存储装置内,使为了向nand存储器输入而保持数据所用的写入缓冲器的缓冲量(写入缓冲量)增大。该写入缓冲器一般为被分配了存储装置所具备的ram11的一部分的区域的缓冲器。

作为应对这些问题的对策,而有采用1-3-3编码并进行lm-foggy-fine编程的方法。在该方法中,采用了lm-foggy-fine编程,因此可抑制单元间相互干扰。此外,lm阶段的输入可以是一页量的数据,因此能兼顾写入缓冲量的减小和各页之间的边界数量的不均衡所引起的位错误率的不均衡的抑制。

但是,在非易失性存储器2的nand存储器具有三维结构的情况下,即使使用采用了1-3-3编码的lm-foggy-fine编程或foggy-fine编程,由于写入缓冲量增大,因而存储控制器1的成本也会增加。

于是,在本实施方式中,相对于具有三维结构的非易失性存储器2,存储装置采用1-3-3编码,并且以两阶段来实施以页为单位(pagebypage,逐页)的写入。由此,在本实施方式中,在具有3维结构的非易失性存储器2中,也可既抑制单元间相互干扰和各页间的位错误率的不均衡又减小存储控制器1的写入缓冲量。

这里,对相邻存储单元间干扰进行说明。在某一个存储单元的浮置栅蓄积的电荷扰乱相邻的存储单元的电场,结果,施加使相邻的存储单元的读出的阈值变动的噪声。在某一电场条件下实施编程和验证,在编程完成后,相邻的存储单元被编程为不同电荷,这一情况使读出精度劣化。该相邻存储单元间干扰随着存储器件的制造技术被微细化、存储单元间隔减小而变得显著。而且,该相邻存储单元间干扰大多由同一字线wli上不同位线的相邻存储单元和同一位线上不同字线wli的相邻存储单元所导致。

相邻存储单元间干扰能通过减小编程及验证时与相邻的存储单元被编程后的读出时之间的、存储单元的电场条件的差异来缓和。作为减小与同一字线wli上不同位线的相邻存储单元之间的相邻存储单元间干扰的一个方法,有下述方法:将编程分为多个阶段、执行避免各阶段之间的电荷的大的变化的多阶段编程。

在本实施方式中的编程序列中,一个字线wli上的三位由两个编程阶段即第一阶段和第二阶段来编程。各编程阶段是编程的执行单位,本实施方式的存储装置通过执行两个编程阶段来完成字线wli的编程。另外,在本实施方式中,在两个编程阶段的每个分配三位的某页。具体地,在第一阶段的编程中,分配下页数据,在第二阶段的编程中,分配中页和上页的数据。

图7是表示第一实施方式中的编程之后的阈值分布的图。在图7中,表示了对存储单元的各编程阶段之后的阈值分布。图7的(t1)表示编程前的初始状态即擦除状态的阈值分布。图7的(t2)表示第一阶段的编程后的阈值分布。图7的(t3)表示第二阶段的编程后的阈值分布。

如图7的(t1)所示,nand存储单元阵列23的所有存储单元在未写入的状态(“擦除”的状态)下都是分布er的状态。如图7的(t2)所示,非易失性存储器2的控制部22在第一阶段的编程中根据在下页写入(存储)的位值而在每个存储单元使得成为分布er不变或者注入电荷而使得向分布er之上的分布移动。具体而言,控制部22进行编程,以便在向下页写入的位值为“1”的情况下不注入电荷、在向下页写入的位值为“0”的情况下注入电荷而使阈值电压向较高方移动。

由此,存储单元利用下页数据而编程为二值的等级(level)。这里应注意的事项是,第一阶段的编程(第一编程)中的功能是仅下页数据的功能。该执行所需的页数据仅为下页即可。再有,该第一阶段的编程后的阈值分布由后面的第二阶段的编程(第二编程)最终重新编程,因此不需要将分布细致地整形,能够进行高速的编程。而且,该第一阶段的编程后的数据能以二进制的方式观察,因此能进行下页数据的读出。因此,在第一阶段编程时的阈值的等级,考虑在第二阶段的编程中转变到d以上地进行分配这一状况,而被控制为使其位于vr1与vr4之间。

另外,如图7的(t3)所示,在第二阶段的编程中,在数据的写入时需要中页和上页这两页。而且,非易失性存储器2的控制部22进行编程以使第二阶段的编程后的阈值分布在使各相邻的分布分离了的最终状态下成为8值的等级。在这种情况下,所有的页数据都能读出。

另外,典型地,编程通过施加一次或多次的编程电压脉冲来执行。在各编程电压脉冲之后,为了确认存储单元是否已经超过阈值边界等级而移动,而进行读出。通过反复进行该施加和读出,而能使存储单元的阈值移到预定的阈值分布的范围中。

另外,控制部22可针对一个字线wli连续实施第一阶段的编程和第二阶段的编程,但是,为了减小相邻存储单元间干扰的影响,也可跨多个字线wli地以非连续的顺序来实施编程。

图8a是表示第一实施方式的编程顺序的第一例的图。图8b是表示第一实施方式的编程顺序的第二例的图。图8c是表示第一实施方式的编程顺序的第三例的图。在图8a至图8c中,表示了相邻存储单元间干扰的影响变小的序列(两阶段的编程的方法)。图8a表示在区块内的串为一个nand存储器的情况下的编程顺序的一例。此外,图8b和图8c表示在区块内的串为四个nand存储器的情况下的编程顺序的一例。

在开始写入时,控制部22一边以预定的非连续的顺序跨字线wli一边进行各编程阶段。即,两个不同的编程阶段不会由相同的字线wli来连续地执行。

例如,在字线wli编程完成至第二阶段后,在相邻字线wli中,如果进行第一阶段和第二阶段的编程,则阈值的变动量增大。而且,在相邻字线wli的阈值的变动量大时,字线wli之间的相邻存储单元间干扰变大。因此,为了减小字线wli之间的相邻存储单元间干扰,在字线wli编程完成至第二阶段后减小相邻字线wli的阈值的变动量,是有效的。如果是这种序列,则字线wli编程完成至第二阶段后的相邻字线wli的编程阶段仅为第二阶段。

在图8a所示的nand存储器的情况下(非易失性存储器2的nand存储器为三维结构的情况下),当开始写入时,控制部22基于处理器12的指示而以下面的(1)~(9)所示的次序来实施编程。另外,在以下的处理中,控制部22的编程工作基于来自处理器12的指示,但是,为了简化说明,而省略基于来自处理器12的指示这一记载。

(1)首先,控制部22实施字线wl0的第一阶段的编程st11。

(2)接着,控制部22实施字线wl1的第一阶段的编程st12。

(3)接着,控制部22实施字线wl0的第二阶段的编程st13。

(4)接着,控制部22实施字线wl2的第一阶段的编程st14。

(5)接着,控制部22实施字线wl1的第二阶段的编程st15。

(6)接着,控制部22实施字线wl3的第一阶段的编程st16。

(7)接着,控制部22实施字线wl2的第二阶段的编程st17。

(8)接着,控制部22实施字线wl4的第一阶段的编程st18。

(9)接着,控制部22实施字线wl3的第二阶段的编程st19。

以下同样地,控制部22以图8a所示的表的朝向右斜上的箭头的顺序进行处理。

在图8b所示的nand存储器的情况下(非易失性存储器2的nand存储器为三维结构的情况下),当开始写入时,控制部22以下面的(11)~(24)所示的次序来实施编程。

(11)首先,控制部22实施串st0_字线wl0的第一阶段的编程st21。

(12)接着,控制部22实施串st1_字线wl0的第一阶段的编程st22。

(13)接着,控制部22实施串st2_字线wl0的第一阶段的编程st23。

(14)接着,控制部22实施串st3_字线wl0的第一阶段的编程st24。

(15)接着,控制部22实施串st0_字线wl1的第一阶段的编程st25。

(16)接着,控制部22实施串st0_字线wl0的第二阶段的编程st26。

(17)接着,控制部22实施串st1_字线wl1的第一阶段的编程st27。

(18)接着,控制部22实施串st1_字线wl0的第二阶段的编程st28。

(19)接着,控制部22实施串st2_字线wl1的第一阶段的编程st29。

(20)接着,控制部22实施串st2_字线wl0的第二阶段的编程st210。

(21)接着,控制部22实施串st3_字线wl1的第一阶段的编程st211。

(22)接着,控制部22实施串st3_字线wl0的第二阶段的编程st212。

(23)接着,控制部22实施串st0_字线wl2的第一阶段的编程st213。

(24)接着,控制部22实施串st0_字线wl1的第二阶段的编程st214。

以下同样地,控制部22以图8b所示的表的朝向右斜上的箭头的顺序进行处理。另外,在图8b中,对区块内的串为四个的情况进行了说明,但是,区块内的串可以是三个以下,也可以是五个以上。

在图8(c)所示的nand存储器的情况下(非易失性存储器2的nand存储器为三维结构的情况下),在开始写入时,控制部22以下面的(31)~(50)所示的次序来实施编程。

(31)首先,控制部22实施串st0_字线wl0的第一阶段的编程st31。

(32)接着,控制部22实施串st1_字线wl0的第一阶段的编程st32。

(33)接着,控制部22实施串st2_字线wl0的第一阶段的编程st33。

(34)接着,控制部22实施串st3_字线wl0的第一阶段的编程st34。

(35)首先,控制部22实施串st0_字线wl1的第一阶段的编程st35。

(36)接着,控制部22实施串st1_字线wl1的第一阶段的编程st36。

(37)接着,控制部22实施串st2_字线wl1的第一阶段的编程st37。

(38)接着,控制部22实施串st3_字线wl1的第一阶段的编程st38。

(39)接着,控制部22实施串st0_字线wl0的第二阶段的编程st39。

(40)接着,控制部22实施串st1_字线wl0的第二阶段的编程st310。

(41)接着,控制部22实施串st2_字线wl0的第二阶段的编程st311。

(42)接着,控制部22实施串st3_字线wl0的第二阶段的编程st312。

(43)接着,控制部22实施串st0_字线wl2的第一阶段的编程st313。

(44)接着,控制部22实施串st1_字线wl2的第一阶段的编程st314。

(45)接着,控制部22实施串st2_字线wl2的第一阶段的编程st315。

(46)接着,控制部22实施串st3_字线wl2的第一阶段的编程st316。

(47)接着,控制部22实施串st0_字线wl1的第二阶段的编程st317。

(48)接着,控制部22实施串st1_字线wl1的第二阶段的编程st318。

(49)接着,控制部22实施串st2_字线wl1的第二阶段的编程st319。

(50)接着,控制部22实施串st3_字线wl1的第二阶段的编程st320。

另外,在图8c中,对区块内的串为四个的情况进行了说明,但是,区块内的串可以是三个以下,也可以是五个以上。

这样,即使串为多个,一个串内的字线wli的各编程阶段的编程的次序也与串为一个的情况相同。在区块内存在多个串的三维结构的非易失性存储器2的情况下,字线wli和串的组合位置的编程通常是首先将不同的串内的同一字线序号进行编程,然后前进到接下来的字线序号。在按照这种次序的情况下,在将图8a按串数的量结合时,例如,成为图8b或图8c那样的次序。

这里,使用图9a~图9c来说明按照第一实施方式所涉及的编程顺序的写入次序的示例。在图9a~图9c中,表示了按照图8b或图8c所示的编程顺序的情况下的写入次序。如前所述,存储控制器1一边以非连续的顺序跨字线wli一边进行编程阶段,因此,将某字线wli的集合(这里为区块)作为编程序列的集合来执行编程。

图9a是表示第一实施方式所涉及的一个区块的量的整体的写入次序的第一例的流程图。这里的一个区块具有字线wl0~wln(n为自然数)这n+1条字线wli。图9b是表示第一实施方式所涉及的第一阶段中的写入次序的子流程图,图9c是表示第一实施方式所涉及的第二阶段中的写入次序的子流程图。另外,在图9a的各步骤的右部所示的(1st)与图9b所示的第一阶段相对应,(2nd)与图9c所示的第二阶段对应。

如图9a所示,在开始写入时,控制部22实施串st0_字线wl0的第一阶段的编程(步骤s10)。接着,控制部22实施串st1_字线wl0的第一阶段的编程(步骤s20)。此后,控制部22对各串实施与步骤s10、s20同样的处理。而且,控制部22实施串st3_字线wl0的第一阶段的编程(步骤s30)。

进而,控制部22实施串st0_字线wl1的第一阶段的编程(步骤s40)。接着,控制部22实施串st0_字线wl0的第二阶段的编程(步骤s50)。接着,控制部22实施串st1_字线wl1的第一阶段的编程(步骤s60)。然后,控制部22对各串的各字线wli反复进行步骤s40、s50、s60那样的处理。

而且,控制部22实施串st0_字线wln的第一阶段的编程(步骤s70)。接着,控制部22实施串st0_字线wln-1的第二阶段的编程(步骤s80)。然后,控制部22对各串的各字线wli反复进行步骤s70、s80那样的处理。

而且,控制部22实施串st3_字线wln-1的第二阶段的编程(步骤s90)。接着,控制部22实施串st0_字线wln的第二阶段的编程(步骤s100)。接着,控制部22实施串st1_字线wln的第二阶段的编程(步骤s110)。然后,控制部22对各串实施与步骤s100、s110同样的处理。并且,控制部22实施串st3_字线wln的第二阶段的编程(步骤s120)。

如图9b所示,在第一阶段的编程中,首先,从存储控制器1向非易失性存储器2输入下页数据的输入开始命令(步骤s210)。然后,从存储控制器1向非易失性存储器2输入下页数据(步骤s220)。进而,从存储控制器1向非易失性存储器2输入第一阶段的编程执行命令(步骤s230),由此芯片成为繁忙(步骤s240)。

在数据写入时,施加一次~多次的编程电压脉冲(步骤s250)。而且,为了确认存储单元是否已经超过阈值边界水平地移动,而进行数据读出(步骤s260)。

进而,确认下页中的数据的失效位数是否小于标准(判定基准)(步骤s270)。在数据的失效位数为标准以上的情况下(步骤s270,否),反复进行步骤s250~s270的处理。而且,在数据的失效位数比标准小时(步骤s270,是),芯片成为就绪(步骤s280)。这样,通过反复进行施加、读出、确认,而能使存储单元的阈值移动到预定的阈值分布的范围中。

如图9c所示,在第二阶段的编程中,首先,从存储控制器1向非易失性存储器2输入中页的数据的输入开始命令(步骤s310)。然后,从存储控制器1向非易失性存储器2输入中页的数据(步骤s320)。

接着,从存储控制器1向非易失性存储器2输入上页的数据的输入开始命令(步骤s330)。然后,从存储控制器1向非易失性存储器2输入上页的数据(步骤s340)。接着,从存储控制器1向非易失性存储器2输入第二阶段的编程执行命令(步骤s350),由此芯片成为繁忙(步骤s360)。

此后,控制部22进行idl(内部数据加载)即下页数据的读出(步骤s370)。而且,基于下页数据,来确定中页和上页的编程目的地的vth(阈值电压)(步骤s380)。然后,使用所确定的vth来进行向中页和上页的数据写入。

再有,控制部22为了提高idl的读出数据的可靠性也可以如下地工作:进行多次读出,在芯片内的页缓冲器24中采用该读出结果的择多,作为下一写入数据而使用。当然,控制部22在通常的读出工作时也可以:进行多次读出,在芯片内采用该读出结果的择多,作为向外部的读出数据而使用。

图9e是用于说明多次的读出结果的择多处理的图。在图9e中,用圆圈标记(○)表示正确的位,用叉形标记(×)表示错误的位。另外,在图9e中,表示进行三次读出的情况下的择多的结果。

在各位中,择多的结果被判断为错误的是(a)三次都错误的情况、(b)两次都错误的情况。在将各位为错误的概率设为p时,在p=0.2的情况下,(a)三次错误的概率为p×p×p=0.2×0.2×0.2,(b)两次错误的概率为(1-p)×p×p=(1-0.2)×0.2×0.2。因此,三次的择多结果被判断为错误的是(p×p×p)+3×(1-p)×p×p=0.104。这样,控制部22通过用芯片内的页缓冲器24进行多次的读出结果的择多处理,可以提高读取数据的可靠性。

在向中页和上页写入数据时,施加一次~多次的编程电压脉冲(步骤s390)。而且,为了确认存储单元是否已经超过阈值边界等级地移动,而进行中页和上页的数据读出(步骤s400)。

进而,确认中页和上页中的数据的失效位数是否比标准小(步骤s410)。在中页和上页中的数据的失效位数为标准以上的情况下(步骤s410,否),反复进行步骤s390~s410的处理。而且,在数据的失效位数比标准小时(步骤s410,是),芯片成为就绪(步骤s420)。

这里,对图9c所示的写入次序的变形例进行说明。图9d是表示第一实施方式所涉及的第二阶段中的写入次序的变形例的子流程图。再有,在图9d所示的处理次序中,除了不进行在图9c中说明的步骤s370的处理之外,步骤s310~s420的处理次序与图9c相同。

在图9d所示的处理次序的情况下,在步骤s310之前进行步骤s301~s309的处理。具体而言,首先,从存储控制器1向非易失性存储器2输入下页的读出命令(步骤s301),由此,芯片成为繁忙(步骤s302)。

此后,控制部22以vr4的阈值电压进行作为idl的下页数据的读出。而且,控制部22基于以vr4的阈值电压的读出结果而将读出的数据的值确定为“0”或者“1”(步骤s303)。随后,芯片成为就绪(步骤s304)。

在控制部22将已读出的下页数据输出时(步骤s305),该下页数据被发送到ecc电路14(步骤s306)。由此,ecc电路14对下页数据进行ecc修正(步骤s307)。

而且,从存储控制器1向非易失性存储器2输入下页的数据的输入开始命令(步骤s308)。由此,ecc电路14向非易失性存储器2输入下页的数据(步骤s309)。

然后,进行步骤s310~s420的处理。另外,在步骤s380中,基于来自ecc电路14的下页数据,而确定中页和上页的编程目的地的vth。

在上述第二阶段的编程中,向非易失性存储器2的数据输入仅是中页和上页这两页而已。但是,在该第二阶段中,在存储单元的编程的目的地即vth,需要也包括下页(开始第二阶段之前的vth)在内的三页量的数据。因此,在该阶段的编程中,作为前处理,控制部22进行:首先读出下页数据,并且将该数据在已输入的中页和上页合成以确定编程目的地的vth的工作。

能读出下页数据是由于采用了下页的边界数量为1的1-3-3编码。通过在第二阶段中读出下页数据,而在第二阶段中不需要下页数据输入。即,采用1-3-3编码,并基于下页数据来确定编程目的地的vth,因此能减小字线wli间的相邻存储单元间干扰,并且一个页数据用一次数据输入即可。

由此,在采用1-3-3编码来以三阶段执行lm-foggy-fine编程的情况下,存储控制器1的写入缓冲器所需的存储量为多个字线的量(最大7页),相对于此,在本实施方式中,存储控制器1的写入缓冲器所需的存储量最大为两页量即可。

这里,对采用1-3-3编码的lm-foggy-fine编程的处理次序和本实施方式的编程处理次序之间的比较进行说明。图10a为用于说明采用了1-3-3编码的lm-foggy-fine编程中的写入缓冲数据量的图。

在图10a及后述的图10b中,在上段侧表示区块写入的数据输入和编程执行的时序图,在下段侧表示将数据在写入缓冲器中保持所需的期间的时序图。再有,在图10a和后述的图10b中,为了使说明简化,而表示了一个区块中的串数量为1的情况。在串为多个的情况下,需要串数量的倍数的量的存储量。

在1-3-3编码的lm-foggy-fine编程的情况下,在第一阶段即lm阶段中,进行1页量的数据输入和该1页量的编程(lm阶段的编程)。另外,在1-3-3编码的lm-foggy-fine编程的情况下,在第二阶段即foggy阶段中,进行三页量的数据输入和该三页量的编程(foggy阶段的编程)。另外,在1-3-3编码的lm-foggy-fine编程的情况下,在第三阶段即fine阶段中,进行三页量的数据输入和该三页量的编程(fine阶段的编程)。

而且,在各字线wl0、wl1、wl2、…,直到在fine阶段中开始编程为止,需要将在lm阶段中写入的1页量的数据和在foggy阶段中写入的三页量的数据储存于写入缓冲器中。

在lm-foggy-fine编程中,为了减小相邻存储单元间干扰,也不连续写入下/中/上这三页量的数据。例如,在执行对字线wl0实施的lm阶段后且执行向字线wl0实施的foggy阶段之前,执行向与字线wl0相邻的字线wl1实施的lm阶段。另外,在执行向字线wl0实施的foggy阶段后且执行向字线wl0实施的fine阶段前,执行向与字线wl0相邻的字线wl1实施的foggy阶段。同样地,在执行向字线wl1实施的lm阶段后且执行向字线wl1实施的foggy阶段前,执行向与字线wl1相邻的字线wl2实施的lm阶段。另外,在执行向字线wl1实施的foggy阶段后且执行向字线wl1实施的fine阶段前,执行向与字线wl1相邻的字线wl2实施的foggy阶段。

这样,在lm-foggy-fine编程中,在各字线wli中,从lm阶段到fine阶段需要很长时间。例如,在从字线wl1中的lm阶段到fine阶段之间,执行下面的(p1)~(p5)的阶段的编程。

(p1)对于字线wl2进行的lm阶段

(p2)对于字线wl1进行的foggy阶段

(p3)对于字线wl0进行的fine阶段

(p4)对于字线wl3进行的lm阶段

(p5)对于字线wl2进行的foggy阶段

这样,在1-3-3编码的lm-foggy-fine编程的情况下,在作为第一个的lm阶段中,输入数据仅是下页。但是,在本方法的情况下,直到作为最终的第三个的fine阶段的数据输入完成为止,需要将下/中/上这三页量的数据保持在写入缓冲器中。另外,为了减小相邻存储单元间干扰,而需要将多个字线wli中的数据保持在写入缓冲器中。例如,在对字线wl2执行foggy阶段时,需要将对字线wl1的三页量的数据、对字线wl2的三页量的数据和对字线wl3的1页量的数据保持在写入缓冲器内。这样,在1-3-3编码的lm-foggy-fine编程的情况下,需要将最大7页量的数据保持在写入缓冲器中。

图10b是用于说明第一实施方式的编程中的写入缓冲量(缓冲数据量)的图。在本实施方式的编程中,在1-3-3编码中使用二阶段的编程。在本实施方式的编程中,在第一阶段,进行1页量(下页)的数据输入和该1页量的编程(第一编程)。另外,在本实施方式的编程的情况下,在第二阶段,进行两页量(中页和上页)的数据输入和该两页量的编程(第二编程)。

而且,在各字线wl0、wl1、wl2、…中,在各阶段的数据输入时将数据储存于写入缓冲器内即可,当开始编程时,可从写入缓冲器内将数据删除。例如,在第一阶段中输入数据时,该数据被储存在写入缓冲器内。然后,在第一阶段中开始编程时,在写入缓冲器内储存的数据可被删除。同样地,在第二阶段中输入数据时,该数据被储存在写入缓冲器内。然后,在第二阶段中开始编程时,在写入缓冲器内储存的数据可被删除。

在本实施方式的编程中,为了减小相邻存储单元间干扰,下/中/上这三页量的数据也不连续写入。例如,在执行向字线wl0实施的第一阶段后且执行向字线wl0实施的第二阶段前,执行向与字线wl0相邻的字线wl1实施的第一阶段。同样,在执行向字线wl1实施的第一阶段后且执行向字线wl1实施的第二阶段前,执行向与字线wl1相邻的字线wl2实施的第一阶段。

这样,本实施方式的编程为二阶段,因此,在各字线wli中,从第一阶段到第二阶段的处理成为短时间。例如,在从字线wl1的第一阶段到第二阶段之间,执行下面的(p11)的阶段的编程。

(p11)对于字线wl2的第一阶段

另外,在本实施方式的编程的情况下,仅在从数据输入的开始到数据输入的结束为止的期间将数据保持在写入缓冲器内即可,当开始编程时,可从写入缓冲器内将数据删除。因此,在本实施方式的编程的情况下,需要在写入缓冲器内保持的数据最大是两页量的数据。

这样,在本实施方式中,全部的页数据仅在一次的阶段的编程中需要,因此,如果该数据输入完毕,则写入缓冲器内的数据能被废弃。因此,在本实施方式中,需要在写入缓冲器内同时保持的页数可以较少。

向非易失性存储器2编程的页数据由ram11内的写入缓冲器构成并被临时保持后,在编程时被向非易失性存储器2进行数据输入。在本实施方式中,能使该ram11的所需容量较小,因此可以削减成本。

此外,在使用lm-foggy-fine编程或foggy-fine编程时,必须进行两次或三次所有页数据的数据传输,因此,需要花费传输时间,且还额外需要传输时的消耗电力。在本实施方式中,所有的页数据通过各页各自的一次数据传输来完成,因此能将传输时间和电力消耗减小到1/2~1/3左右。

图11是表示第一实施方式所涉及的外部编程命令的序列的示例的图。在图11的(a)中,表示第一实施方式所涉及的第一阶段中的外部编程命令的序列,在图11的(b)中,表示第一实施方式所涉及的第二阶段中的外部编程命令的序列。

如图11的(a)所示,在第一阶段中,在输入编程开始命令(80h)后,输入编程对象区块、页的地址(下页的地址),然后,输入下页的编程数据。而且,在最后输入编程执行命令(10h)时,芯片成为繁忙,在存储芯片内部开始编程的工作。利用这种编程命令的输入,而将下页编程。

如图11的(b)所示,在第二阶段中,在输入编程开始命令(80h)后,输入编程对象区块、页的地址(中页的地址),然后,输入中页的编程数据。然后,输入编程命令的连接命令(1ah),且此次按同样的序列输入上页的编程数据。而且,在最后输入编程执行命令(10h)时,芯片成为繁忙,在存储芯片内部开始编程的工作。利用这种编程命令的输入,而进行下页的读出,进而将中页和上页编程。另外,中页的编程数据和上页的编程数据中的哪个先输入均可。

这里,对页读出处理进行说明。页读出的方法中,对于包括读出对象页的字线wli的编程在第二阶段的写入前和写入后不同。

在第二阶段写入前的情况下,所记录的数据仅下页有效。因此,控制部22仅在读出页为下页时从存储单元读出数据。而且,控制部22在其他页的情况下不进行存储单元读出工作,而进行强制地全部输出“1”来作为读出数据的控制。

另一方面,在已完成至第二阶段的字线wli的情况下,无论读出页为上/中/下页中的哪一个,控制部22都对存储单元进行读出。在这种情况下,根据要读出的页为哪一个页而所需的读出电压不同,因此,控制部22根据所选择的页来仅执行所需的读出。

根据图6所示的编码,下页数据变化的阈值状态间的边界仅为一个,因此,控制部22通过阈值位于由该边界分离出的两个范围中的哪个来确定数据。例如,在阈值电压小于vr4的情况下,控制部22进行输出“1”来作为存储单元的数据的控制。另一方面,在阈值电压比vr4大的情况下,控制部22进行输出“0”来作为存储单元的数据的控制。

另外,中页或上页的数据变化的阈值状态间的边界为三个,因此,控制部22通过阈值位于由这些边界分离出的四个范围中的哪个中来确定数据。

下面对页读出的具体的处理次序进行说明。图12a是表示在第一实施方式所涉及的存储装置中第二阶段写入前的情况下的字线中的页读出的处理次序的流程图。图12b是表示在第一实施方式所涉及的存储装置中编程完成至第二阶段的字线中的页读出的处理次序的流程图。

如图12a所示,在第二阶段写入前的字线wli的情况下,控制部22选择读出页(步骤s510)。在读出页为下页的情况下(步骤s510,下),控制部22以vr4的阈值电压来进行读出(步骤s520)。然后,控制部22基于vr4的阈值电压下的读出结果来将所读出的数据的值确定为“0”或者“1”(步骤s530)。

另外,在读出页为中页的情况下(步骤s510,中),控制部22进行全部强制地输出“1”来作为存储单元的输出数据的控制(步骤s540)。

另外,在读出页为上页的情况下(步骤s510,上),控制部22进行全部强制地输出“1”来作为存储单元的输出数据的控制(步骤s550)。

另外,如图12b所示,在编程已完成至第二阶段的字线wli的情况下,控制部22选择读出页(步骤s610)。在读出页为下页的情况下(步骤s610,下),控制部22以vr4的阈值电压来进行读出(步骤s620)。然后,控制部22基于vr4的阈值电压下的读出结果来将所读出的数据的值确定为“0”或“1”(步骤s630)。

另外,在读出页为中页的情况下(步骤s610,中),控制部22以vr1、vr3和vr6的阈值电压来进行读出(步骤s640、s650、s660)。而且,控制部22基于vr1、vr3和vr6的阈值电压下的读出结果来将所读出的数据的值确定为“0”或“1”(步骤s670)。

另外,在读出页为上页的情况下(步骤s610,上),控制部22以vr2、vr5和vr7的阈值电压来进行读出(步骤s680、s690、s700)。而且,控制部22基于vr2、vr5和vr7的阈值电压下的读出结果来将所读出的数据的值确定为“0”或者“1”(步骤s710)。

此外,能由存储控制器1管理、识别:对字线wli的编程是在第二阶段写入完成前还是完成后。存储控制器1进行编程控制,因此,如果存储控制器1记录其进展状况,则存储控制器1能容易地参照非易失性存储器2的哪个地址是哪种编程状态。在这种情况下,存储控制器1在从非易失性存储器2进行读出时识别包括对象页地址的字线wli是哪种编程状态,并发出与所识别的状态相对应的读出命令。

图13是表示第一实施方式所涉及的外部读出命令的序列的示例的图。在图13的(a)中,表示在第一实施方式所涉及的存储装置中编程完成至第一阶段的字线wli中的外部读出命令的序列,在图13的(b)中,表示在第一实施方式所涉及的存储装置中编程完成至第二阶段的字线wli中的外部读出命令的序列。

如图13的(a)所示,在第二阶段写入前的字线wli的情况下,最初输入表示第二阶段写入前的状态的命令(2dh)来作为执行读出工作的命令。然后,输入读出开始命令(00h),随后,输入读出对象区块、页的地址(下页或中页或上页的地址)。而且,在最后输入读出执行命令(30h)时,芯片成为繁忙,在存储芯片内部开始读出的工作。通过该编程命令的输入,而从下页或中页或上页读出数据。然后,芯片成为就绪状态,并输出已读出的数据。

另一方面,如图13的(b)所示,在编程完成至第二阶段的字线wli的情况下,最初输入表示直到第二阶段为止的完成状态的命令(25h)来作为执行读出工作的命令。然后,输入读出开始命令(00h),随后,输入读出对象区块、页的地址(下页或中页或上页的地址)。而且,在最后输入读出执行命令(30h)时,芯片成为繁忙,在存储芯片内部开始读出的工作。通过该编程命令的输入,而从下页或中页或上页的地址读出数据。然后,芯片成为就绪状态,并输出已读出的数据。

这样,在第一实施方式中,在对非易失性存储器2(具有三维结构或二维结构的三位/单元的nand存储器)进行编程时,采用1-3-3数据编码,并使编程的阶段为二阶段制。这样,由于用二阶段制编程,因此在数据编程时输入的数据量减少,能抑制存储控制器1所需的写入缓冲量。另外,能减少非易失性存储器2的页间的位错误率的不均衡,并且能降低ecc所花费的成本。另外,数据传输在各页仅一次,因此,可抑制传输时间和消耗电力。

另外,由于一边跨字线wli一边执行各编程阶段,因此能减小与相邻字线wli之间的相邻单元间干扰的量。另外,由于使用1-3-3数据编码,因此能扩大第二阶段之前的idl裕量,能提高写入序列的可靠性。另外,由于使用1-3-3数据编码,因此,通过使下页的阈值边界为一个,能使第一阶段的编程即下页的编程高速化。此外,第一阶段的编程的高速化在写入和写入验证的反复时,能使得使写入电压一点点地上升来写入时的阶跃(step)电压成为比第二阶段的编程时大的值等,从而实现高速化。

(第二实施方式)

接着,使用图14a、14b及图15来对第二实施方式进行说明。在第二实施方式中,集中进行字线wln-1的第二阶段的编程和字线wln的第一阶段的编程。另外,在本实施方式中,也对使用与在第一实施方式的图6中说明的内容相同的数据编码的情况进行说明。

在图9a中所示的编程的流程图中,第一阶段的编程和第二阶段的编程皆一个个地分离,且在各自的编程时进行各自的编程命令和编程数据输入。在本实施方式中,将该编程命令和编程数据输入尽量集中。

例如,如图8b所示,除了区块的开头和结尾的端部以外,字线wln的第一阶段和字线wln-1的第二阶段的编程必定连续。因此,在本实施方式中,使该部分成为集中在一起的命令输入。即,在一次的命令输入中,集中输入字线wln的下页和字线wln-1的中/上页的编程数据。在采用lm-foggy-fine的情况下,这也是与用一次的编程命令将下/中/上页的数据集中(但是,在这种情况下,是相同的字线wli内的页)而输入三页的量的情况相同的数据量的输入。

这样,通过将编程命令和编程数据的输入集中,而使存储控制器1执行的控制的命令输入和/或轮询(是否从芯片繁忙返回就绪的定期性检查(check))的频率减小,能实现作为存储装置的高速化、简易化。

这里,使用图14a和图14b对按照第二实施方式所涉及的编程顺序的写入次序的一例进行说明。在图14a和图14b中,表示了按照图8b所示的编程顺序的情况下的写入次序。再有,在图14a或图14b所示的处理中,对于与图9a~图9c中说明的处理相同的处理,省略其说明。

图14a是表示第二实施方式所涉及的一个区块的量的整体的写入次序的流程图。这里的一个区块具有字线wl0~wln(n为自然数)这n+1条字线wli。另外,图14b是表示第二实施方式所涉及的第一阶段和第二阶段中的写入次序的子流程图。另外,图14a的各步骤的右部所示的(1st(第一))与图9b所示的第一阶段相对应,(2nd(第二))与图9c所示的第二阶段相对应,(1,2)与图14b所示的第一阶段和第二阶段相对应。

如图14a所示,在开始写入时,控制部22执行与步骤s10~s30相同的处理即步骤s810~s830的处理。由此,实施串st0~st3的字线wl0的第一阶段的编程。

再有,控制部22实施串st0_字线wl1的第一阶段的编程和串st0_字线wl0的第二阶段的编程(步骤s840)。接着,控制部22实施串st1_字线wl1的第一阶段的编程和串st1_字线wl0的第二阶段的编程(步骤s850)。接着,控制部22实施串st2_字线wl1的第一阶段的编程和串st2_字线wl0的第二阶段的编程(步骤s860)。然后,控制部22对各串的各字线wli反复执行步骤s840、s850、s860那样的处理。

然后,控制部22实施串st0_字线wln的第一阶段的编程和串st0_字线wln-1的第二阶段的编程(步骤s870)。接着,控制部22实施串st1_字线wln的第一阶段的编程和串st1_字线wln-1的第二阶段的编程(步骤s880)。然后,控制部22对各串的各字线wli反复执行步骤s870、s880那样的处理。

而且,控制部22实施串st3_字线wln的第一阶段的编程和串st3_字线wln-1的第二阶段的编程(步骤s890)。接着,控制部22执行与步骤s100~s120相同的处理即步骤s900~s920的处理。由此,实施串st0~st3的字线wln的第二阶段的编程。

这样,在区块的开头与第一实施方式同样地实施仅第一阶段的编程,在区块的最后,与第一实施方式同样地实施仅第二阶段的编程。在该情况下,仅第一阶段的编程按照图9b所示的次序来执行,仅第二阶段的编程按照图9c所示的次序来执行。

如图14b所示,在第一阶段和第二阶段的编程中,在执行第二阶段的编程后,接着执行第一阶段的编程。具体而言,首先,从存储控制器1向非易失性存储器2输入字线wln-1的中页的数据的输入开始命令(步骤s1010)。然后,从存储控制器1向非易失性存储器2输入字线wln-1的中页的数据(步骤s1020)。

接着,从存储控制器1向非易失性存储器2输入字线wln-1的上页的数据的输入开始命令(步骤s1030)。然后,从存储控制器1向非易失性存储器2输入字线wln-1的上页的数据(步骤s1040)。

接着,从存储控制器1向非易失性存储器2输入字线wln的下页的数据的输入开始命令(步骤s1050)。然后,从存储控制器1向非易失性存储器2输入字线wln的下页的数据(步骤s1060)。

接着,从存储控制器1向非易失性存储器2输入第一阶段和第二阶段的编程执行命令(步骤s1070),由此,芯片成为繁忙(步骤s1080)。

然后,对字线wln的下页施加一次~多次的编程电压脉冲(步骤s1090)。而且,为了确认存储单元是否已经超过阈值边界等级地移动,而进行字线wln的下页的数据读出(步骤s1100)。

再有,确认下页中的数据的失效位数是否比标准小(步骤s1110)。在下页中的数据的失效位数为标准以上的情况下(步骤s1110,否),反复进行步骤s1140~s1160的处理。而且,在数据的失效位数比标准小时(步骤s1110,是),读出字线wln-1的下页数据(步骤s1120)。

而且,基于字线wln-1的下页数据,来确定中页和上页的编程目的地的vth(阈值电压)(步骤s1130)。然后,使用所确定的vth来进行对字线wln-1的中页和上页的数据写入。

在向中页和上页的数据写入时,对字线wln-1的中页和上页施加一次~多次的编程电压脉冲(步骤s1140)。而且,为了确认存储单元是否已经超过阈值边界等级地移动,而进行字线wln-1的中页和上页的数据读出(步骤s1150)。

再有,确认中页和上页中的数据的失效位数是否比标准小(步骤s1160)。在中页和上页中的数据的失效位数为标准以上的情况下(步骤s1160,否),反复进行步骤s1140~s1160的处理。而且,在数据的失效位数比标准小时(步骤s1160,是),芯片成为就绪(步骤s1170)。

另外,步骤s1010、s1030、s1050的处理中的任何一个均可先进行。另外,步骤s1020、s1040、s1060的处理中的任何一个均可先进行。但是,步骤s1020的处理在步骤s1010的处理之后进行,步骤s1040的处理在步骤s1030的处理之后进行,步骤s1060的处理在步骤s1050的处理之后进行。

另外,在图14b所示的步骤s1120~s1160为止的处理,与字线wln-1的第二阶段的编程相对应,步骤s1090~s1110为止的处理,与字线wln的第一阶段的编程相对应。

这样,在图14b中,对字线wln的第一阶段的编程在字线wln-1的第二阶段的编程之前被执行的情况进行说明。这是因为,通过字线wln的第一阶段的编程先进行,从而被写入八值的vth的字线wln-1的单元不会受到相邻单元的影响。

这样,在本实施方式中,字线wln-1的中页及上页的数据和字线wln的下页的数据这三页量的数据被连续输入。

图15是表示第二实施方式所涉及的外部编程命令的序列的示例的图。此外,第一阶段中的外部编程命令的序列与图11的(a)所示的相同。另外,第二阶段中的外部编程命令的序列与图11的(b)所示的相同。因此,此处,对将第二阶段与第一阶段连续编程时的外部编程命令的序列进行说明。在将第一阶段和第二阶段连续编程的情况下,连续输入第二阶段的命令和第一阶段的命令。

具体而言,如图15所示,在输入编程开始命令(80h)后,输入编程对象区块、页的地址(字线wln-1的中页的地址),然后,输入字线wln-1的中页的编程数据。然后,输入编程命令的连接命令(1ah),并以同样的序列在此次输入字线wln-1的上页的编程数据。而且,输入编程命令的连接命令(1ah),并以同样的序列在此次输入字线wln的下页的编程数据。而且,在最后输入编程执行命令(10h)时,芯片成为繁忙,在存储芯片内部开始编程的工作。

通过这种编程命令的输入将字线wln的下页编程。另外,作为idl,进行字线wln-1的下页数据的读出。然后,基于下页数据来确定中页和上页的编程目的地的vth,并用所确定的vth来将字线wln-1的中页和上页编程。

此外,作为其他变形例,也可以:在编程命令的输入后,作为idl,先进行字线wln-1的下页数据的读出,然后,字线wln的下页进行编程,接着,确定中页和上页的编程目的地的vth,并用所确定的vth来进行字线wln的中页和上页的编程。这样,在受到字线wln的写入所导致的相邻单元间干扰前,能进行idl的字线wln-1的下页数据的读出。

再有,本实施方式中的字线wln的第一阶段和字线wln-1的第二阶段的集中为一起的命令所进行的编程的实际的执行顺序可以改变。即,图15所示的字线wln的下页的编程和作为idl的字线wln-1的下页数据的读出,哪个在前均可,且可进行调换。通过在字线wln的下页的编程之前进行idl(字线wln-1的下页数据的读出),而能不受字线wln的下页的编程所产生的影响地进行idl。

这样,第二实施方式中,由于将字线wln-1的第二阶段的编程和字线wln的第一阶段的编程集中进行,因此能减少命令输入和/或轮询的频率。因而,能实现存储装置的高速化和简易化。

(第三实施方式)

接着,使用图16~图19来对第三实施方式进行说明。在第三实施方式中,在执行第二阶段的编程时,对使vth分布状态为区域d以上的预定的存储单元首先执行编程,然后,对使vth分布状态为区域c以下的预定的存储单元执行编程。另外,在本实施方式中,也对使用与第一实施方式的图6中说明的部分相同的数据编码的情况进行说明。

在多位/单元的编程中,在编程执行中发生突然的电源切断时,数据被损坏。在这种情况下,在电源切断发生时已执行的编程的对象的编程数据的信息从存储单元丢失。在这种情况下,存在编程已经完成而使数据从存储控制器1的写入缓冲器废弃那样的过去的编程数据也丢失的情况。其结果,不能进行数据恢复。

这样的情况在第二阶段的中/上页的编程的中途当出现电源切断时产生。对该状况进行说明。图16是用于说明电源切断所引起的数据损坏的图。图16的(t11)表示第一阶段的编程完成之后的vth分布状态(数据状态)。另外,图16的(t12)表示第二阶段的编程中途的vth分布状态。另外,图16的(t13)表示电源切断后的vth分布状态。

图16的(t11)所示那样的第一阶段的编程完成之后,开始第二阶段的编程,并成为图16的(t12)所示那样的vth分布状态。而且,在图16的(t12)所示那样的写入中途的vth分布状态时,当发生电源切断时,成为图16的(t13)所示那样的vth分布状态。

这里,可以考虑从第一阶段完成后的状态开始第二阶段的编程。一般,在nand存储器的内部中,从低vth向高vth依次执行编程。因此,如图16的(t12)所示,在第二阶段的编程进行到中途时,当发生电源切断时,成为图16的(t13)所示那样的vth分布状态。

此处,正向的分布中包含的存储单元是下页数据为“1”的存储单元和为“0”的存储单元混合存在的状态。因此,即使在该状态下读出编程已经完成的下页数据,也不能得到正确的读出数据。此外,即使使用第二阶段的编程完成后的读出电压,也不能得到正确的下页数据。

因此,在本实施方式中,改变第二阶段的中/上页的编程的vth的顺序。图17是用于说明第三实施方式所涉及的第二阶段的编程的图。在图17中,表示了第二阶段中的vth状态的转变方法。图17的(t21)表示第一阶段的编程完成之后的vth分布状态。另外,图17的(t22)表示第二阶段的前半的编程完成了的时间点的vth分布状态。另外,图17的(t23)表示第二阶段的后半的编程完成了的时间点的vth分布状态。

本实施方式的控制部22在图17的(t21)所示的第一阶段完成时,如图17的(t22)所示,最初对写入目的地的vth分布状态为区域d以上的存储单元进行编程(d-first编程)。而且,控制部22在完成区域d到g为止的vth分布状态的编程之后,如图17的(t23)所示,执行区域a~c的vth分布状态的编程。

这样,本实施方式的控制部22使得:对使写入目的地的vth分布状态成为区域d以上的存储单元进行的编程比对使之成为区域c以下的存储单元的编程先开始。而且,在完成对使写入目的地的vth分布状态成为区域d以上的存储单元进行的编程后,完成对使之成为区域c以下的存储单元进行的编程。

由此,成为下页数据为“1”的存储单元和为“0”的存储单元混合存在的状态的定时,不会产生。因此,即使在第二阶段发生了电源切断,通过使用vr1或vr4中任一个的读出电压,控制部22也能读出下页数据。

图18是表示第三实施方式所涉及的第二阶段中的写入次序的流程图。另外,对于与在图9c中说明的处理相同的处理,省略其说明。第三实施方式所涉及的第二阶段的步骤s1210~s1280与图9c所示的第一实施方式所涉及的第二阶段的步骤s310~s380相同。

在确定中页和上页的编程目的地的vth之后(步骤s1280),使用已确定的vth来进行向中页和上页进行的数据写入。

在第三实施方式所涉及的第二阶段中,在向中页和上页进行数据写入时,对成为区域d~g的存储单元施加一次~多次的编程电压脉冲(步骤s1290)。而且,为了确认存储单元是否已经超过阈值边界等级地移动,而对中页和上页的区域d~g进行数据读出(步骤s1300)。

再有,确认中页和上页中的区域d~g中的数据的失效位数是否比标准小(步骤s1310)。在中页和上页中的区域d~g中的数据的失效位数为标准以上的情况下(步骤s1310,否),反复进行步骤s1290~s1310的处理。

而且,在中页和上页中的区域d~g中的数据的失效位数比标准小时(步骤s1310,是),进行向中页和上页中的区域a~c的写入。具体而言,在向中页和上页进行数据写入时,对成为区域a~c的存储单元施加一次~多次的编程电压脉冲(步骤s1320)。而且,为了确认存储单元是否已经超过阈值边界等级地移动,而对中页和上页的区域a~c进行数据读出(步骤s1330)。

再有,确认中页和上页中的区域a~c中的数据的失效位数是否比标准小(步骤s1340)。在中页和上页中的区域a~c中的数据的失效位数为标准以上的情况下(步骤s1340,否),反复进行步骤s1320~s1340。

而且,在中页和上页中的区域a~c中的数据的失效位数比标准小时(步骤s1350,是),芯片成为就绪(步骤s1350)。

另外,在本实施方式中,在第二阶段的编程的前半,完成区域d~g为止的vth分布状态的编程,但是,不需要使目的地为区域d~g为止的vth分布状态的存储单元完全结束。在这种情况下,控制部22暂时停留在区域d程度的vth分布状态为止的编程。然后,控制部22依次执行区域a~c的编程和作为编程中途的区域d~g的编程。

图19是用于说明第三实施方式所涉及的第二阶段的编程变形例的图。在图19中,表示第二阶段中的vth状态的转变方法(变形例)。图19的(t31)表示第一阶段的编程完成之后的vth分布状态。另外,图19的(t32)表示第二阶段的前半的编程完成了的时间点的vth分布状态。另外,图19的(t33)表示第二阶段的后半的编程完成了的时间点的vth分布状态。

本实施方式的控制部22在图19的(t31)所示的第一阶段完成时,控制部22如图19的(t32)所示那样执行编程至区域d程度的vth分布状态。然后,控制部22使用区域er的vth分布状态来执行区域a~c的编程。进而,控制部22使用区域d程度的vth分布状态(编程中途的vth分布状态)来执行区域d~g的编程。

在该图19所示的方法的情况下,也与图17所示的方法的情况相同,成为下页数据为“1”的存储单元和为“0”的存储单元混合存在的状态的定时,不会产生。因此,即使在第二阶段中发生了电源切断,通过使用vr1或vr4中任一个的读出电压,控制部22也能读出下页数据。

这样,控制部22在使得向使写入目的地的vth分布状态成为区域d以上的存储单元的阈值分布移动至不与区域er~c的阈值区域重叠的位置之后,完成对成为区域er~g的存储单元进行的编程。

这样,在第三实施方式中,在第二阶段的编程时,将上位的vth分布先进行编程,因此能防止不正常电源切断引起的写入完毕数据的牵连损坏,其结果,能提高存储装置的可靠性。

另外,在第一~第三实施方式中,对使用与如图6中说明的内容相同的1-3-3数据编码的情况进行了说明,但是,也可使用其他的1-3-3数据编码。其中,在1-3-3数据编码中,存在下页数据的边界为一处这一条件。

图20为表示1-3-3数据编码的另一示例的图。在图20的(a)所示的1-3-3数据编码的变形例1中,阈值电压和数据值之间的关系如下所示。

·阈值电压位于er区域内的存储单元为存储了“111”的状态。

·阈值电压位于a区域内的存储单元为存储了“011”的状态。

·阈值电压位于b区域内的存储单元为存储了“001”的状态。

·阈值电压位于c区域内的存储单元为存储了“101”的状态。

·阈值电压位于d区域内的存储单元为存储了“100”的状态。

·阈值电压位于e区域内的存储单元为存储了“110”的状态。

·阈值电压位于f区域内的存储单元为存储了“010”的状态。

·阈值电压位于g区域内的存储单元为存储了“000”的状态。

在图20的(b)所示的1-3-3数据编码的变形例2中,阈值电压和数据值之间的关系如下所示。

·阈值电压位于er区域内的存储单元为存储了“110”的状态。

·阈值电压位于a区域内的存储单元为存储了“100”的状态。

·阈值电压位于b区域内的存储单元为存储了“000”的状态。

·阈值电压位于c区域内的存储单元为存储了“010”的状态。

·阈值电压位于d区域内的存储单元为存储了“011”的状态。

·阈值电压位于e区域内的存储单元为存储了“111”的状态。

·阈值电压位于f区域内的存储单元为存储了“101”的状态。

·阈值电压位于g区域内的存储单元为存储了“001”的状态。

图20的(c)所示的1-3-3数据编码的变形例3中,阈值电压和数据值之间的关系如下所示。

·阈值电压位于er区域内的存储单元为存储了“110”的状态。

·阈值电压位于a区域内的存储单元为存储了“010”的状态。

·阈值电压位于b区域内的存储单元为存储了“000”的状态。

·阈值电压位于c区域内的存储单元为存储了“100”的状态。

·阈值电压位于d区域内的存储单元为存储了“101”的状态。

·阈值电压位于e区域内的存储单元为存储了“111”的状态。

·阈值电压位于f区域内的存储单元为存储了“011”的状态。

·阈值电压位于g区域内的存储单元为存储了“001”的状态。

(第四实施方式)

接着,使用图21对第四实施方式进行说明。在第四实施方式中,将第一阶段设为下/中页的编程,将第二阶段设为上页的编程。

图21是表示第四实施方式中的编程后的阈值分布的图。在图21中,表示了对存储单元进行的各编程阶段后的阈值分布。图21的(t41)表示在编程前的初始状态即擦除状态下的阈值分布。图21的(t42)表示第一阶段的编程后的阈值分布。图21的(t43)表示第二阶段的编程后的阈值分布。

如图21的(t41)所示,nand存储单元阵列23的所有存储单元在未写入的状态下皆为分布er的状态。如图21的(t42)所示,非易失性存储器2的控制部22在第一阶段的编程中根据要在下/中页写入的位值,按每个存储单元成为分布er原样不变或注入电荷而移动到分布er之上的分布。由此,存储单元利用下/中页数据而被编程为四值的等级。

另外,如图21的(t43)所示,在第二阶段的编程中,在数据的写入中需要上页这一页。非易失性存储器2的控制部22对第一阶段的数据增加上页的数据来作为第二阶段。这样,控制部22进行编程,以使第二阶段的编程后的阈值分布在各相邻的分布被分离了的最终状态下成为八值的等级。

作为第一阶段的编程为四值的等级时的阈值的等级,例如如下所示。控制部22鉴于在第二阶段的编程中向区域a和区域b转变地进行分配,而将从下起的第二个阈值等级控制为与区域a相同的分布。另外,控制部22鉴于在第二阶段的编程中向区域d和区域e转变地进行分配,而将从下起的第三个阈值等级控制为进入vr3与vr5之间。另外,控制部22鉴于在第二阶段的编程中向区域e和区域f转变地进行分配,而将最上位的阈值等级控制为进入vr5与vr7之间。此后,控制部22使用第一阶段的四值来编程为第二阶段的八值的等级。

另外,为了减小相邻存储单元间干扰的影响,而以与图8b所示的顺序相同的顺序来执行编程。即,两个不同的编程阶段不在同一字线wli中连续地执行。为了减小字线wli之间的相邻存储单元间干扰,在字线wli的到第二阶段为止的编程完成之后减小相邻字线wli的阈值的变动量是有效的。如果是图8b所示的序列,则字线wli的到第二阶段为止的编程完成后的相邻字线wli的编程阶段仅为第二阶段,因此能减小相邻存储单元间干扰的影响。

这里,对第四实施方式所涉及的写入次序进行说明。另外,第四实施方式所涉及的一个区块的量整体的写入次序与第一实施方式所涉及的一个区块的量整体的写入次序(图9a)相同,因此省略其说明。在本实施方式中,也与第一实施方式相同,以非连续的顺序一边跨字线wli一边进行编程阶段,因此将某字线wli的集合(此处为区块)作为编程序列的集合来执行编程。

图22a是表示第四实施方式所涉及的第一阶段中的写入次序的子流程图,图22b是表示第四实施方式所涉及的第二阶段的写入次序的子流程图。再有,在图22a所示的处理中,对于与图9b所示的处理相同的处理,省略其说明。另外,对于图22b所示的处理中的、与图9c所示的处理相同的处理,省略其说明。

如图22a所示,在第一阶段的编程中,首先,从存储控制器1向非易失性存储器2输入下页数据的输入开始命令(步骤s1410)。然后,从存储控制器1向非易失性存储器2输入下页数据(步骤s1420)。

再有,从存储控制器1向非易失性存储器2输入中页的数据的输入开始命令(步骤s1430)。然后,从存储控制器1向非易失性存储器2输入中页的数据(步骤s1440)。

而且,从存储控制器1向非易失性存储器2输入第一阶段的编程执行命令(步骤s1450),由此芯片成为繁忙(步骤s1460)。

此后,基于下页数据和中页数据而确定第二阶段的编程目的地的vth(步骤s1470)。然后,使用所确定的vth来进行对下页和中页的数据写入。

在向下页和中页进行数据写入时,施加一次~多次的编程电压脉冲(步骤s1480)。而且,为了确认存储单元是否已经超过阈值边界等级地进行了移动,而进行读出(步骤s1490)。进而,确认下页和中页中的数据的失效位数是否比标准(判定基准)小(步骤s1500)。在数据的失效位数为标准以上的情况下(步骤s1500,否),反复进行步骤s1480~s1500的处理。而且,在数据的失效位数比标准小时(步骤s1500,是),芯片成为就绪(步骤s1510)。

如图22b所示,在第二阶段的编程中,首先,从存储控制器1向非易失性存储器2输入上页的数据的输入开始命令(步骤s1610)。然后,从存储控制器1向非易失性存储器2输入上页的数据(步骤s1620)。接着,从存储控制器1向非易失性存储器2输入第二阶段的编程执行命令(步骤s1630),由此芯片成为繁忙(步骤s1640)。

然后,进行作为idl的下页数据的读出(步骤s1650)。进而,进行作为idl的中页数据的读出(步骤s1660)。而且,基于下页数据和中页数据,来确定上页的编程目的地的vth(步骤s1670)。然后,使用所确定的vth来进行对上页的数据写入。

再有,控制部22为了提高idl的读出数据的可靠性,也可以:进行多次读出,在芯片内的页缓冲器24中采用该读出结果的择多,来作为下次的写入数据而使用。当然,控制部22在通常的读出工作时也能进行多次读出并在芯片内采用该读出结果的择多,作为向外部的读出数据而使用。

在向上页进行数据写入时,施加一次~多次的编程电压脉冲(步骤s1680)。而且,为了确认存储单元是否已经超过阈值边界等级地移动,而进行上页的数据读出(步骤s1690)。

再有,确认上页中的数据的失效位数是否比标准小(步骤s1700)。在上页中的数据的失效位数为标准以上的情况下(步骤s1700,否),反复进行步骤s1680~s1700的处理。而且,在数据的失效位数比标准小时(步骤s1700,是),成为芯片就绪(步骤s1710)。

此处,对图22b所示的写入次序的变形例进行说明。图22c是表示第四实施方式所涉及的第二阶段中的写入次序的变形例的子流程图。另外,在图22c所示的处理次序中,除了不进行图22b中说明的步骤s1650、s1670的处理之外,步骤s1610~s1710的处理次序与图22b相同。

在图22c所示的处理次序的情况下,在步骤s1610之前进行步骤s1601~s1609的处理。具体而言,首先,从存储控制器1向非易失性存储器2输入下页和中页的读出命令(步骤s1601),由此芯片成为繁忙(步骤s1602)。

此后,控制部22以vr1、vr3、vr5、vr7的阈值电压来进行作为idl的下页数据及中页数据的读出。而且,控制部22基于vr1、vr3、vr5、vr7的阈值电压下的读出结果来将读出的数据的值确定为“0”或“1”(步骤s1603)。然后,成为芯片就绪(步骤s1604)。

控制部22输出所读出的下页数据及中页数据时(步骤s1605),该下页数据及中页数据被发送至ecc电路14(步骤s1606)。由此,ecc电路14对下页数据及中页数据进行ecc修正(步骤s1607)。

而且,从存储控制器1向非易失性存储器2输入下页的数据和中页数据的输入开始命令(步骤s1608)。由此,ecc电路14向非易失性存储器2输入下页和中页的数据(步骤s1609)。

然后,进行步骤s1610~s1710的处理。另外,在步骤s1670中,基于来自ecc电路14的下页数据及中页数据,而确定中页和上页的编程目的地的vth。

这样,在本实施方式中,第二阶段的编程中的数据输入仅为上页这一页。但是,在该第二阶段中,存储单元的编程目的地即vth需要也包括下/中页在内的三页量的数据。因此,在该第二阶段的编程中,作为前处理,首先读出下页数据和中页数据。而且,通过将所读出的数据与所输入的上页数据进行合成,从而确定上页的编程目的地的vth。

图23是表示第四实施方式所涉及的外部编程命令的序列的示例的图。在图23的(a)中,表示第四实施方式所涉及的第一阶段中的外部编程命令的序列,在图24的(b)中,表示第四实施方式所涉及的第二阶段中的外部编程命令的序列。

如图23的(a)所示,在第一阶段中,在输入编程开始命令(80h)后,输入编程对象区块、页的地址(下页的地址),然后,输入下页的编程数据。然后,输入编程命令的连接命令(1ah),并以同样的序列在此次输入中页的编程数据。而且,在最后输入编程执行命令(10h)时,芯片成为繁忙,在存储芯片内部开始编程的工作。通过这种编程命令的输入,而将下页和中页编程。另外,下页的编程数据和中页的编程数据的输入顺序,哪个在先均可。

如图23的(b)所示,在第二阶段中,在输入编程开始命令(80h)后,输入编程对象区块、页的地址(上页的地址),然后,输入上页的编程数据。而且,在最后输入编程执行命令(10h)时,芯片成为繁忙,在存储芯片内部开始编程的工作。通过这种编程命令的输入,而进行作为idl的下页和中页的读出,将上页编程。

这里,对页读出处理进行说明。页读出的方法中,对于包括读出对象页的字线wli的编程,根据第二阶段写入之前的情况和第二阶段完成后而不同。

在第二阶段写入之前的字线wli的情况下,在记录着的数据中,下页和中页是有效的。因此,控制部22在读出页为下页或中页时,从存储单元读出数据。而且,控制部22在为上页的情况下不进行存储单元读出工作,而进行全部强制地输出“1”来作为读出数据的控制。

另一方面,在完成至第二阶段的字线wli的情况下,无论读出页为上/中/下页中的哪一个,控制部22都对存储单元进行读出。在这种情况下,根据读出的页为哪页而所需的读出电压不同,因此,控制部22根据所选择的页来仅执行所需的读出。

根据图6所示的编码,下页数据变化的阈值状态间的边界仅为一个,因此,控制部22通过阈值位于由该边界分离出的两个范围中的哪个来确定数据。

另外,中页或上页的数据变化的阈值状态间的边界为三个,因此,控制部22通过阈值位于由这些边界分离出的四个范围中的哪个来确定数据。

下面对页读出的具体的处理次序进行说明。图24a是表示在第四实施方式所涉及的存储装置中第二阶段写入前的情况下的字线中的页读出的处理次序的流程图。图24b是表示在第四实施方式所涉及的存储装置中编程完成至第二阶段的字线中的页读出的处理次序的流程图。再有,对于图24a所示的处理中的、与图12a所示的处理相同的处理,省略其说明。此外,对于图24b所示的处理中的、与图12b所示的处理相同的处理,省略其说明。

如图24a所示,在第二阶段写入前的字线wli的情况下,控制部22选择读出页(步骤s1810)。在读出页为下页的情况下(步骤s1810,下),控制部22以vr3的阈值电压来进行读出(步骤s1820)。而且,控制部22基于vr3的阈值电压下的读出结果来将读出的数据的值确定为“0”或者“1”(步骤s1830)。

另外,在读出页为中页的情况下(步骤s1810,中),控制部22以vr1、vr3及vr5的阈值电压进行读出(步骤s1840、s1850、s1860)。而且,控制部22基于vr1、vr3及vr5的阈值电压下的读出结果而将所读出的数据的值确定为“0”或“1”(步骤s1870)。

另外,在读出页为上页的情况下(步骤s1810,上),控制部22进行全部强制地输出“1”来作为存储单元的输出数据的控制(步骤s1880)。

另外,如图24b所示,在编程完成至第二阶段的字线wli的情况下,控制部22选择读出页(步骤s1910)。在读出页为下页的情况下(步骤s1910,下),控制部22以vr4的阈值电压来进行读出(步骤s1920)。然后,控制部22基于vr4的阈值电压下的读出结果来将读出的数据的值确定为“0”或“1”(步骤s1930)。

另外,在读出页为中页的情况下(步骤s1910,中),控制部22以vr1、vr3和vr6的阈值电压来进行读出(步骤s1940、s1950、s1960)。而且,控制部22基于vr1、vr3和vr6的阈值电压下的读出结果来将读出的数据的值确定为“0”或“1”(步骤s1970)。

另外,在读出页为上页的情况下(步骤s1910,上),控制部22以vr2、vr5和vr7的阈值电压来进行读出(步骤s1980、s1990、s2000)。而且,控制部22基于vr2、vr5和vr7的阈值电压下的读取结果来将所读出的数据的值确定为“0”或者“1”(步骤s2010)。

这样,在图21所示那样的阈值的编程控制下,在下页数据的读出的情况下,使用vr3来作为能将四等级按上下各分离为二等级的读出等级。此外,在中页数据的读出的情况下,在不特定四等级中的哪一个时变成不能确定数据的数据分配,因此需要vr1、vr3和vr5这三个等级的读出来作为读出等级。

另一方面,在完成至第二阶段的字线wli的情况下,无论读出页为上/中/下页中的哪一个,都对存储单元进行读出,但是,根据读出哪一页而所需的读出电压不同,因此,仅执行根据所选择的页的所需的读出。

此外,对于字线wli的编程完成至第一阶段和第二阶段中的哪个阶段这一情况,能由存储控制器1进行管理、识别。存储控制器1进行编程控制,因此,如果存储控制器1记录其进展状况,则存储控制器1能容易地参照非易失性存储器2的哪个地址是哪种编程状态。在这种情况下,存储控制器1在从非易失性存储器2进行读出时识别包括对象页地址的字线wli是哪种编程状态,并发出与所识别的状态相对应的读出命令。

图25是表示第四实施方式所涉及的外部读出命令的序列的示例的图。在图25的(a)中,表示在第四实施方式所涉及的存储装置中编程完成至第一阶段的字线wli中的外部读出命令的序列,在图25的(b)中,表示在第四实施方式所涉及的存储装置中编程完成至第二阶段的字线wli中的外部读出命令的序列。

如图25的(a)所示,在第二阶段写入前的字线wli的情况下,最初输入表示第二阶段写入前的状态的命令(2dh)来作为执行读出工作的命令。然后,输入读出开始命令(00h),随后,输入读出对象区块、页的地址(下页或中页或上页的地址)。而且,在最后输入读出执行命令(30h)时,芯片成为繁忙,在存储芯片内部开始读出的工作。通过该编程命令的输入,而从下页或中页或上页读出数据。然后,芯片成为就绪状态,并输出所读出的数据。

另一方面,如图25的(b)所示,在编程完成至第二阶段的字线wli的情况下,最初输入表示直到第二阶段为止的完成状态的命令(25h)来作为执行读出工作的命令。然后,输入读出开始命令(00h),随后,输入读出对象区块、页的地址(下页或中页或上页的地址)。而且,在最后输入读出执行命令(30h)时,芯片成为繁忙,在存储芯片内部开始读出的工作。通过该编程命令的输入,而从下页或中页或上页读出数据。然后,芯片成为就绪状态,并输出所读出的数据。

另外,可将与第二实施方式相对于第一实施方式的变形相同的变形适用于本实施方式。即,在本实施方式中,可集中进行字线wln-1的第二阶段的编程和字线wln的第一阶段的编程。

此外,在本实施方式中,1-3-3数据编码的种类不需要下的边界数为1这一限制。因此,可适用在第一~第三实施方式中使用的1-3-3数据编码以外的1-3-3数据编码。本实施方式的1-3-3数据编码的具体状态为特开2015-195071号公报的图5~8、12~15、18、20、22、24、28~30等中所示的状态。

这样,在第四实施方式中,与第一实施方式同样地,在对非易失性存储器2(具有三维结构或二维结构的三位/单元的nand存储器)进行编程时,采用1-3-3数据编码,并使编程为二阶段制。这样,由于用二阶段制进行编程,因此在数据编程时输入的数据量减少,能抑制存储控制器1所需要的写入缓冲量。另外,能减少非易失性存储器2的页间的位错误率的不均衡,并能使ecc所花费的成本下降。

(第五实施方式)

接着,使用图26~图30来对第五实施方式进行说明。在第五实施方式中,对于字线wli的编程完成至第一阶段和第二阶段中的哪一个这一情况记录于存储单元(标志单元)中,在数据读出时,基于在标志单元所记录的信息来适当地控制读出序列。

另外,在本实施方式中,也对使用与在第一实施方式的图6中说明的内容相同的数据编码的情况进行说明。另外,在以下的说明中,有时将存储数据的存储单元阵列称为数据存储单元。此外,有时将表示完成至第一阶段和第二阶段中的哪一个的信息称为完成信息。在本实施方式中,在完成至第二阶段的情况下,在标志单元中写入数据,因此,该数据成为表示已完成至第二阶段的完成信息。另一方面,在没有完成至第二阶段的情况下,没有在标志单元写入数据,因此,该未写入的数据成为表示没有完成至第二阶段的完成信息。

图26是用于说明标志单元的构成的图。在本实施方式中,也使用具有与在第一实施方式的图3中说明的存储单元阵列相同的构成的存储单元阵列。另外,在图26中,图示与选择栅线sgd0连接的存储单元晶体管mt等,并省略了与选择栅线sgd1~3连接的存储单元晶体管mt等的图示。

在与位线bl0~blm-1连接的存储单元晶体管(数据存储单元)mt的横向,配置有虚设单元dc和标志单元fc。虚设单元dc和标志单元fc具有与存储单元晶体管mt同样的构成。具体而言,虚设单元dc与选择栅线sgd0、字线wl0~wl7、选择栅线sgs、源线sl、虚设单元用位线dbl等连接。此外,标志单元fc与选择栅线sgd0、字线wl0~wl7、选择栅线sgs、源线sl、标志单元用位线fbl0~fblk-1等连接。换言之,区块blk内的存储单元中的一部分作为数据存储使用,剩余的一部分作为虚设单元dc以及标志单元fc使用。

在第一至第五实施方式中,存储控制器1管理、识别对字线wli的编程已完成至第一阶段和第二阶段中的哪一个。而且,在数据读出时,存储控制器1发出与编程的完成状态相对应的读出命令。

与此相对,在本实施方式中,控制部22将表示已完成至第一阶段和第二阶段中的哪一个的完成信息记录于非易失性存储器2的标志单元fc中。而且,在数据读出时,控制部22基于在标志单元fc记录的完成信息来控制读出序列。

标志单元fc以字线为单位进行设置。即、将字线wli内的多个存储单元中的一部分作为标志单元fc使用。标志单元fc可按每个字线wli设置一个,但是,为了通过复用化来提高数据的可靠性,优选为多个。另外,为了抑制相邻单元间干扰所导致的可靠性恶化的影响,优选使存储数据的数据存储单元和标志单元fc物理上不相邻。例如,优选在数据存储单元与标志单元fc之间配置不使用的虚设单元dc等来作为数据记录区域。

在标志单元fc记录的完成信息为是否进行了第二阶段的编程的二值信息。控制部22在第二阶段的编程时在同一字线wli内的标志单元fc写入表示第二阶段的编程已完成的完成信息。控制部22将完成信息以例如d等级以上写入标志单元fc中。对此时的阈值分布的变化的情况进行说明。

图27a是用于说明第五实施方式所涉及的对标志单元的编程的图。在图27a中,表示了在第二阶段的编程时进行的标志单元fc中的vth状态的转变方法。

图27a的(t51)表示编程前的初始状态即擦除状态的标志单元fc中的vth分布状态。另外,图27a的(t52)表示第一阶段的编程完成了的时间点的vth分布状态。另外,图27a的(t53)表示第二阶段的编程完成了的时间点的vth分布状态。本实施方式的控制部22在第二阶段完成时,如图27a的(t53)所示那样在标志单元fc编程,以使写入目的地的vth分布状态为区域d以上(vr4以上)。

标志单元fc与数据单元同时在第二阶段时被进行写入,但是,标志单元fc写入的阈值的转变比数据单元大。因此,在与标志单元fc相邻的数据单元的可靠性恶化的情况下,在标志单元fc与数据单元之间设置虚设单元dc。另外,虚设单元dc可如图27b所示那样在第二阶段时从er向a或b或c被进行写入。

图27b是用于说明第五实施方式所涉及的对虚设单元的编程的图。在图27b中,表示了在第二阶段的编程时进行的虚设单元dc的vth状态的转变方法。

图27b的(t61)表示了编程前的初始状态即擦除状态的虚设单元dc的vth分布状态。另外,图27b的(t62)表示第一阶段的编程完成了的时间点的vth分布状态。另外,图27a的(t53)表示第二阶段的编程完成了的时间点的vth分布状态。本实施方式的控制部22在第二阶段完成时,如图27b的(t63)所示那样在虚设单元dc编程,以使写入目的地的vth分布状态为区域c以下(vr4以下)。

图28是表示第五实施方式所涉及的第二阶段的写入次序的流程图。另外,对与在图9c中说明的处理相同的处理,省略其说明。第五实施方式所涉及的第二阶段的步骤s2110~s2180与图9c所示的第一实施方式所涉及的第二阶段的步骤s310~s380相同。

在本实施方式中,在确定对中页、上页和标志单元fc的编程目的地的vth后(步骤s2180),使用所确定的vth来进行对数据存储单元(中页、上页)和标志单元fc的数据写入。

在第五实施方式的第二阶段中,在对中页、上页和标志单元fc进行数据写入时,施加一次~多次的编程电压脉冲(步骤s2190)。而且,为了确认存储单元是否已经超过阈值边界等级地移动,而对中页、上页和标志单元fc进行数据读出(步骤s2200)。

再有,确认中页和上页中的数据的失效位数是否比标准小(步骤s2210)。在中页和上页中的数据的失效位数为标准以上的情况下(步骤s2210,否),反复进行步骤s2190~s2210的处理。在这种情况下,省略对标志单元fc的步骤s2190、s2210的处理。

而且,在中页和上页中的数据的失效位数比标准小时(步骤s2210,是),确认标志单元fc中的数据的失效位数是否比标准小(步骤s2220)。

在标志单元fc中的数据的失效位数为标准以上的情况下(步骤s2220,否),反复进行步骤s2190~s2220的处理。在这种情况下,省略对中页和上页的步骤s2190~s2210的处理。

而且,在标志单元fc中的数据的失效位数比标准小时(步骤s2220,是),成为芯片就绪(步骤s2230)。

这样,在本实施方式的步骤s2190(施加编程电压脉冲的步骤)中,除了写入数据的数据存储单元之外,对标志单元fc也同时施加编程电压脉冲。另外,在此后的数据读出时,为了确认是否已经将数据存储单元和标志单元fc进行编程,而读出数据存储单元内的数据和标志单元fc内的数据(完成信息)。

然后,将从数据存储单元及标志单元fc读出的数据与对应于期待值的标准进行比较。此时,计数失效的位的数目,但是,分别计数在数据存储单元内失效了的数据和在标志单元fc内失效了的数据,并与各自的标准进行比较。在任一方都不满足标准的情况下,再次返回到编程电压脉冲的施加次序。在任一比较中都满足标准的情况下,使芯片成为就绪而结束。

在第一实施方式中的页读出中,对包含读出对象页的字线wli的编程,根据已经完成至第一阶段和第二阶段中的哪一个,而使用不同的处理次序。而且,实施哪个处理次序,基于外部读出命令来确定。但是,在本实施方式中,已经完成至第一阶段和第二阶段中的哪一个,不是由来自存储控制器1的命令来指示,而是根据标志单元fc内的完成信息来进行判断。即,控制部22在从存储控制器1接收读出命令时,首先读出标志单元fc内的数据即完成信息。而且,控制部22根据标志单元fc是否写入完毕,而判定完成至第一阶段和第二阶段中的哪一个。

如上所述,在本实施方式中,使得向标志单元fc的写入等级为d等级以上。因此,标志单元fc的读出能以vr1、vr2、vr3或vr4中的任意一个读出电压来进行。因此,如果无论读出对象页为下页、中页或上页的哪一个,控制部22都使用在完成至第二阶段的编程的情况下所需的多个读出等级中的最低读出等级来进行读出,则能进行标志单元fc的读出。而且,如果判定为标志单元fc已写入完毕,则控制部22判断为完成至第二阶段的编程,并从标志单元fc以外的存储单元以剩下的读出等级来执行读出。

另一方面,在判定为标志单元fc为未写入的情况下,如果下页为读出对象,则控制部22以vr1重新读出数据。另外,如果中/上页为读出对象,则控制部22判断为不需要进行此后的读出,且使输出数据强制为“1”。

在从标志单元fc的读出结果(完成信息)判定标志单元fc是否为写入完毕时,如果标志单元fc为1个,则控制部22判定该单元本身是否为写入完毕即可。此外,有时为了提高标志单元fc的数据的可靠性而设置有多个标志单元fc。在这种情况下,控制部22在例如从多个标志单元fc中的某一标志单元fc读出表示标准数以上的单元已经被写入的完成信息的情况下,判断为标志单元fc为写入完毕。

这里,对页读出的具体的处理次序进行说明。图29是表示第五实施方式所涉及的页读出的处理次序的流程图。再有,对图29所示的处理中的、与图12a或图24a所示的处理相同的处理,省略其说明。

如图29所示,控制部22选择读出页(步骤s2310)。在读出页是下页的情况下(步骤s2310,下),控制部22以vr4的阈值电压来进行读出(步骤s2320)。

而且,控制部22判定是否在标志单元fc中写入了完成信息(步骤s2330)。在标志单元fc中完成信息不为写入完毕的情况下(步骤s2330,否),控制部22以vr1的阈值电压来进行读出(步骤s2340)。而且,控制部22基于以vr1的阈值电压的读出结果而将所读出的数据的值确定为“0”或者“1”,(步骤s2350)。

另一方面,在标志单元fc中完成信息为写入完毕的情况下(步骤s2330,是),控制部22基于vr4的阈值电压下的读出结果而将所读出的数据的值确定为“0”或者“1”(步骤s2360)。

此外,在读出页为中页的情况下(步骤s2310,中),控制部22以vr1的阈值电压来进行读出(步骤s2370)。而且,控制部22判定是否在标志单元fc中写入了完成信息(步骤s2380)。在标志单元fc中完成信息为未写入完毕的情况下(步骤s2380,否),控制部22进行全部强制地输出“1”来作为数据存储单元(中页)的输出数据的控制(步骤s2390)。

另一方面,在标志单元fc中完成信息为写入完毕的情况下(步骤s2380,是),控制部22以vr3及vr6的阈值电压来进行读出(步骤s2400、s2410)。而且,控制部22基于vr1、vr3和vr6的阈值电压下的读出结果而将所读出的数据的值确定为“0”或者“1”(步骤s2420)。

另外,在读出页为上页的情况下(步骤s2430,上),控制部22以vr2的阈值电压来进行读出(步骤s2370)。而且,控制部22判定是否在标志单元fc中写入了完成信息(步骤s2440)。在标志单元fc中完成信息为未写入完毕的情况下(步骤s2440,否),控制部22进行全部强制地输出“1”来作为数据存储单元(上页)的输出数据的控制(步骤s2450)。

另一方面,在标志单元fc中完成信息为写入完毕的情况下(步骤s2440,是),控制部22以vr5以及vr7的阈值电压来进行读出(步骤s2460、s2470)。而且,控制部22基于vr2、vr5以及vr7的阈值电压下的读出结果来将所读出的数据的值确定为“0”或者“1”(步骤s2780)。

图30是表示第五实施方式所涉及的外部读出命令的序列的示例的图。本实施方式中,读出命令仅为一种。如图30所示,作为执行读出工作的命令,输入读出开始命令(00h),然后,输入读出对象区块、页的地址(下页或中页或上页的地址)。而且,在最后输入读出执行命令(30h)时,芯片成为繁忙,在存储芯片内部开始读出的工作。通过这种编程命令的输入,而从下页或中页或上页读出数据。然后,芯片成为就绪状态,并输出所读出的数据。

这样,在第五实施方式中,在标志单元fc中预先存储完成信息,因此,与完成至第一阶段和第二阶段中的哪一个无关地,能以相同的处理次序读出页数据。

(第六实施方式)

接着,使用图31~图36来对第六实施方式进行说明。在第六实施方式中,对具有三维结构或二维结构的四位/单元(qlc,quadruple-levelcell:四层单元)的非易失性存储器2以两阶段实施以页为单位的写入。

图31是表示第六实施方式的阈值区域的一例的图。在图31中,表示了四位/单元的非易失性存储器2的阈值分布例。图31的记载为er1、a1、b1、c1、d1、e1、f1、g1、h1、i1、j1、k1、l1、m1、n1、o1这十六个分布,表示十六个阈值区域内的各自的阈值分布。这样,本实施方式的各存储单元具有由十五个边界隔开所得的阈值分布。图31的横轴表示阈值电压,纵轴表示存储单元数(单元数)的分布。

在本实施方式中,将阈值电压为vr11以下的区域称为区域er1,将阈值电压比vr11大且为vr12以下的区域称为区域a1,将阈值电压比vr12大且为vr13以下的区域称为区域b1,将阈值电压比vr13大且为vr14以下的区域称为区域c1。此外,在本实施方式中,将阈值电压比vr14大且为vr15以下的区域称为区域d1,将阈值电压比vr15大且为vr16以下的区域称为区域e1,将阈值电压比vr16大且为vr17以下的区域称为区域f1,将阈值电压比vr17大且为vr18以下的区域称为区域g1。

此外,在本实施方式中,将阈值电压比vr18大且为vr19以下的区域称为区域h1,将阈值电压比vr19大且为vr20以下的区域称为区域i1,将阈值电压比vr20大且为vr21以下的区域称为区域j1,将阈值电压比vr21大且为vr22以下的区域称为区域k1。此外,在本实施方式中,将阈值电压比vr22大且为vr23以下的区域称为区域l1,将阈值电压比vr23大且为vr24以下的区域称为区域m1,将阈值电压比vr24大且为vr25以下的区域称为区域n1,将阈值电压比vr25大的区域称为区域o1。

另外,将与区域er1、a1、b1、c1、d1、e1、f1、g1、h1、i1、j1、k1、l1、m1、n1、o1相对应的阈值分布分别称为分布er1、a1、b1、c1、d1、e1、f1、g1、h1、i1、j1、k1、l1、m1、n1、o1(第一~第十六分布)。vr11~vr25是成为各区域的边界的阈值电压。

以下的图32、34、36,表示对于四位/单元的存储单元进行的各编程阶段后的阈值分布。另外,图32所示的阈值分布和图33所示的数据编码,与1-4-5-5编码对应。1-4-5-5编码中,用于判定位值的边界数在下页、中页、上页、高页分别为1、4、5、5。

图32是表示第六实施方式中的编程后的阈值分布的第一例的图。图32的(t71)表示编程前的初始状态即擦除状态的阈值分布。图32的(t72)表示第一阶段的编程后的阈值分布。图32的(t73)表示第二阶段的编程后的阈值分布。

如图32的(t71)所示,nand存储单元阵列23的所有存储单元在未写入的状态下皆为分布er。如图32的(t72)所示,非易失性存储器2的控制部22在第一阶段的编程中根据要在下页和中页中写入的位值,而按每一存储单元使得成为分布er不变或者注入电荷而使得移动到分布er之上的分布。由此,存储单元利用下页数据和中页数据而被编程为四值的等级。

另外,如图32的(t73)所示,在第二阶段的编程中,在数据的写入中需要上页和高页这两页。而且,非易失性存储器2的控制部22进行编程,以使第二阶段的编程后的阈值分布在各相邻的分布被分离了的最终状态下成为十六值的等级。在该情况下,能进行全部页数据的读出。

图33是表示与图32所示的阈值分布对应的数据编码的图。在图33所示的数据编码中,例如,阈值电压位于er1区域内的存储单元为存储了“1111”来作为与上、中、下、高页相对应的位的数据值的状态。并且,阈值电压位于a1区域内的存储单元为存储了“1011”的状态。

另外,以下的图34所示的阈值分布和图35所示的数据编码,与1-6-4-4编码相对应。1-6-4-4编码中,用于判定位值的边界数在下页、中页、上页、高页分别为1、6、4、4。

图34是表示第六实施方式中的编程后的阈值分布的第二例的图。图34的(t81)表示编程前的初始状态即擦除状态的阈值分布。图34的(t82)表示第一阶段的编程后的阈值分布。图34的(t83)表示第二阶段的编程后的阈值分布。

如图34的(t81)所示,nand存储单元阵列23的所有存储单元在未写入的状态下皆为分布er。如图34的(t82)所示,非易失性存储器2的控制部22在第一阶段的编程中,根据要在下页和中页中写入的位值而按每一存储单元使得成为分布er不变或者注入电荷而使得移动到分布er之上的分布。由此,存储单元利用下页数据及中页数据而被编程为四值的等级。

另外,如图34的(t83)所示,在第二阶段的编程中,数据的写入需要上页和高页这两页。而且,非易失性存储器2的控制部22进行编程,以使第二阶段的编程后的阈值分布在各相邻的分布被分离了的最终状态下成为十六值的等级。在该情况下,能进行全部页数据的读出。

图35是表示与图34所示的阈值分布相对应的数据编码的图。在图35所示的数据编码中,例如,阈值电压位于er1区域内的存储单元,为存储了“1111”来作为与上、中、下、高页相对应的位的数据值的状态。并且,阈值电压位于a1区域内的存储单元为存储了“0111”的状态。

另外,以下的图36所示的阈值分布和图37所示的数据编码,与1-2-6-6编码相对应。1-2-6-6编码中,用于判定位值的边界数在下页、中页、上页、高页分别为1、2、6、6。

图36是表示第六实施方式中的编程后的阈值分布的第三例的图。图36的(t91)表示编程前的初始状态即擦除状态的阈值分布。图36的(t92)表示第一阶段的编程后的阈值分布。图36的(t93)表示第二阶段的编程后的阈值分布。

如图36的(t91)所示,nand存储单元阵列23的所有存储单元在未写入的状态下皆为分布er。如图36的(t92)所示,非易失性存储器2的控制部22在第一阶段的编程中,根据要在下页和中页中写入的位值而按每一存储单元使得成为分布er不变或者注入电荷而使得移动到分布er之上的分布。由此,存储单元利用下页数据及中页数据而被编程为四值的等级。

另外,如图36的(t93)所示,在第二阶段的编程中,数据的写入需要上页和高页这两页。而且,非易失性存储器2的控制部22进行编程,以使第二阶段的编程后的阈值分布在各相邻的分布被分离了的最终状态下成为十六值的等级。在该情况下,能进行全部页数据的读出。

图37是表示与图35所示的阈值分布相对应的数据编码的图。在图37所示的数据编码中,例如,阈值电压位于er1区域内的存储单元为存储了“1111”来作为与上、中、下、高页相对应的位的数据值的状态。并且,阈值电压位于b1区域内的存储单元为存储了“0011”的状态。

本实施方式中,也利用与第一~第五实施方式相同的处理来执行编程,进行各页数据的读出。

这样,在第六实施方式中,对具有三维结构或二维结构的四位/单元的非易失性存储器2以两阶段实施以页为单位的写入,因此,能得到与第一~第五实施方式相同的效果。

另外,第一~第六实施方式可进行组合。例如,在第四实施方式和/或第五实施方式中,可组合第二~第四实施方式中的至少一个。

另外,在第一~第六实施方式中,对非易失性存储器2使用nand存储器而构成的情况进行了说明,但是,也可使用其他类型的存储器。此外,在第一~第五实施方式中,对非易失性存储器2适用1-3-3编码的情况进行了说明,但是,非易失性存储器2适用的编码不限于1-3-3编码。例如,非易失性存储器2也可适用1-2-4编码或2-3-2编码。

另外,在图7、图12、图17、图19、图29中说明的第二阶段写入前和第二阶段写入后的读出等级(vr1、vr4),可与第二阶段写入后(t3)的读出等级(vr1、vr4)稍有不同。另外,图21、图24中说明的第二阶段写入前和第二阶段写入后的读出等级(vr1、vr3、vr5、vr7)可与第二阶段写入后(t3)的读出等级(vr1、vr3、vr5、vr7)稍有不同。

虽然说明了本发明的几个实施方式,但是这些实施方式只是例示,而不是用于限定发明的范围。这些新实施方式可以以其他各种方式实施,在不脱离发明的要旨的范围,可以进行各种省略、置换、变更。这些实施方式和/或其变形包括于发明的范围和/或要旨中,也包括于技术方案记载的发明及其均等的范围中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1