非易失性半导体存储装置

文档序号:1253952 发布日期:2020-08-21 浏览:5次 >En<

阅读说明:本技术 非易失性半导体存储装置 (Nonvolatile semiconductor memory device ) 是由 吉井谦一郎 菅野伸一 于 2019-08-26 设计创作,主要内容包括:实施方式实现一种能够减轻控制器侧的处理负担的非易失性半导体存储装置。能够与控制器连接的非易失性半导体存储装置包含具有多个块的单元阵列和控制电路。所述控制电路按预定的编程顺序执行对所述多个块中通过所述控制器选择的写入目的地块所包含的多个页的编程动作。所述控制电路将对所述写入目的地块的下一个编程动作所对应的页地址向所述控制器通知。(Embodiments realize a nonvolatile semiconductor memory device capable of reducing a processing load on a controller side. A nonvolatile semiconductor memory device capable of being connected to a controller includes a cell array having a plurality of blocks and a control circuit. The control circuit performs a program operation for a plurality of pages included in a write destination block selected by the controller among the plurality of blocks in a predetermined program order. The control circuit notifies the controller of a page address corresponding to a next program operation for the write destination block.)

非易失性半导体存储装置

关联申请

本申请享受以日本专利申请2019-24588号(申请日:2019年2月14日)为在先申请的优先权。本申请通过参照该在先申请而包含在先申请的全部内容。

技术领域

本发明的实施方式涉及NAND型闪速存储器这样的非易失性半导体存储装置。

背景技术

近年来,正在使用各种各样的非易失性半导体存储装置。作为非易失性半导体存储装置的典型例,已知NAND型闪速存储器。

作为控制NAND型闪速存储器与该存储器的控制器之间的接口标准,例如,正广泛使用Open NAND Flash Interface(ONFi)。NAND型闪速存储器与控制器之间的通信,通常以如下的那样的方式执行。

例如,在数据写入动作(编程(program)动作)中,控制器决定应访问的页,并且将编程请求(编程命令)、地址、数据向NAND型闪速存储器传送。NAND型闪速存储器将从控制器接收到的数据向由从控制器接收到的地址指定的页写入,并将处理结果返回至控制器。

发明内容

本发明的实施方式提供一种能够减轻控制器侧的处理负担的非易失性半导体存储装置。

根据实施方式,能够与控制器连接的非易失性半导体存储装置具备包含多个块的单元阵列、和构成为按预定的编程顺序执行对所述多个块中由所述控制器选择的写入目的地块所包含的多个页的编程动作的控制电路。所述控制电路构成为向所述控制器通知对所述写入目的地块进行下一个编程动作所对应的页地址。

附图说明

图1是表示包含非易失性半导体存储装置(非易失性存储器)和控制该非易失性半导体存储装置的控制器的存储器系统的构成例的框图。

图2是表示图1的存储器系统内的控制器的构成例的框图。

图3A是表示非易失性存储器的构成例的框图。

图3B是表示非易失性存储器内所包含的单元阵列的构成例的框图。

图3C是表示单元阵列内所包含的各块的构成例的电路图。

图4是表示对各存储单元保存3比特的数据的闪速存储器(TLC)所适用的编程顺序规则进行规定的编程顺表例的图。

图5是表示由非易失性存储器内的缓存控制部维持和管理的缓存管理表的构成例的图。

图6是表示由非易失性存储器内的数据处理部维持和管理的块写入状态管理表的构成例的图。

图7A是表示由控制器和非易失性存储器执行的数据写入处理的步骤的一部分的时序图。

图7B是表示由控制器和非易失性存储器执行的数据写入处理的步骤的后续的时序图。

图8是表示执行数据写入处理的期间内的某时间点的缓存管理表的内容的图。

图9是表示执行数据写入处理的期间内的某时间点的块写入状态管理表的内容的图。

图10是表示由控制器和非易失性存储器执行的数据写入处理的其他步骤的时序图。

图11是表示执行图10的数据写入处理的期间内的某时间点的缓存管理表的内容的图。

图12是表示在从控制器通知开始向块的写入处理的情况下由非易失性存储器执行的处理的步骤的流程图。

图13是表示在从控制器接收到编程请求和写数据的情况下由非易失性存储器执行的处理的步骤的流程图。

图14是表示在对某页的编程动作完成了的情况下由非易失性存储器执行的处理的步骤的流程图。

图15是用于说明在非易失性存储器内部执行的数据复制处理的图。

图16是表示由控制器和非易失性存储器执行的数据复制处理的步骤的时序图。

图17是表示在非易失性存储器的存储器核控制部内设置的ECC处理部和EMC处理部的框图。

图18是表示由控制器和非易失性存储器执行的数据复制处理的其他步骤的时序图。

图19是表示由控制器和非易失性存储器执行的数据写入处理的其他步骤的时序图。

图20是表示由控制器和非易失性存储器执行的错误比特数检查处理的步骤的时序图。

图21是表示各存储单元所保存的3比特的数据值所对应的8个阈值电压分布与从各存储单元读出数据时所使用的7个读出电压电平的关系的图。

图22是表示编程后随着时间经过,存储单元的各阈值电压分布被转换(shift)成了低值的状态的图。

图23是用于说明决定转换后的阈值电压分布所对应的最佳读出电平的处理的图。

图24是表示由控制器和非易失性存储器执行的最佳读出电平决定处理的步骤的时序图。

图25是表示包含多个存储器核和控制这些存储器核的多个存储器核控制部的非易失性存储器的构成例。

具体实施方式

以下,参照附图对实施方式进行说明。

(第1实施方式)

图1表示包含第1实施方式的非易失性存储器1的存储器系统的构成例。

该非易失性存储器1是NAND型闪速存储器这样的非易失性半导体存储装置。该非易失性存储器1既可以是2维构造的闪速存储器,也可以是3维构造的闪速存储器。

存储器系统包含非易失性存储器1和控制该非易失性存储器1的控制器2。控制器2也被称为第1半导体元件。另外,非易失性存储器1也被称为第2半导体元件。该存储器系统还包含主机接口3、存储器控制器通信线4、电源线5。

该存储器系统例如也可以作为固态硬盘(SSD)而实现。该情况下,该SSD被用作,作为主机系统(主机装置)发挥功能的服务器计算机、个人计算机、移动设备这样的各种各样的信息处理装置的数据存储器。或者,该存储器系统既可以作为存储卡、USB存储器这样的可移动存储设备(Removable storage device)而实现,也可以作为嵌入式存储设备而实现。

存储器控制器通信线4是在控制器2与非易失性存储器1之间的通信中使用的信号线。在存储器控制器通信线4中,规定有多个信号。这些信号例如可以是遵照了ONFI标准的信号。这些信号包含芯片有效信号CEn、写有效信号WEn、读有效信号REn、命令锁存有效信号CLE、地址锁存有效信号ALE、写保护信号WPn、写有效信号WEn、I/O信号<7:0>、就绪/忙信号RBn。在此,信号的名称末尾的“n”意味着该信号是负逻辑的信号。

非易失性存储器1作为NAND型闪速存储器芯片这样的半导体存储器芯片而被实现。该非易失性存储器1具有与芯片有效信号CEn、写有效信号WEn、读有效信号REn、命令锁存有效信号CLE、地址锁存有效信号ALE、写保护信号WPn、写有效信号WEn、I/O信号<7:0>、就绪/忙信号RBn分别对应的信号针,经由这些信号针和存储器控制器通信线4而能够与控制器2连接。

芯片有效信号CEn是用于选择非易失性存储器1(例如NAND型闪速存储器芯片)的信号。

命令锁存有效信号CLE对数据总线(I/O信号<7:0>)上的命令、地址、输入数据的引入(锁存)进行控制。

读有效信号REn将向数据总线(I/O信号<7:0>)的串行数据输出设为有效(enable)。

命令锁存有效信号CLE为了向非易失性存储器1通知数据总线(I/O信号<7:0>)上的当前的总线循环类型是命令这一情况而被使用。

地址锁存有效信号ALE为了向非易失性存储器1通知数据总线(I/O信号<7:0>)上的当前的总线循环类型是地址这一情况而被使用。

写保护信号WPn为了使编程动作和擦除动作无效(disable)而被使用。就绪/忙信号RBn表示非易失性存储器1的当前的状态(就绪状态或忙碌状态)。

图2是更详细描绘图1的控制器2的内部而得到的框图。

控制器2根据来自信息处理装置内的CPU这样的主机系统(主机装置)的数据写入请求(写命令),控制向非易失性存储器1的数据的写入,或者根据来自主机系统(主机装置)的数据读出请求(读命令),控制从非易失性存储器1的数据的读出。

该控制器2包含主机接口控制部201、命令控制部202、缓存控制部203、数据分配管理部204、存储器控制部205、缓存存储器206、纠错码处理部(ECC部)207、以及存储器接口控制部208。

主机接口控制部201经由主机接口3与主机系统(主机装置)通信。主机接口控制部201按照命令控制部202的指示,执行从主机系统(主机装置)接收请求(命令)以及数据的处理、以及将处理结果以及数据向主机系统(主机装置)发送的处理。

作为主机接口3的具体例,存在Non-Volatile Memory Express(NVME)(注册商标)、Serial ATA(SATA)、Serial Attached SCSI(SAS)、Universal Flash Storage(UFS)等。

命令控制部202对经由主机接口控制部201从主机系统(主机装置)接收到的命令进行解释,按照该命令的内容,控制控制器2内的其他功能块来执行处理。

缓存控制部203管理缓存存储器206,将从主机系统(主机装置)受领到的写入数据(用户数据)、从非易失性存储器1读出的数据保存在缓存存储器206内的适当的位置。

数据分配管理部204对将从主机系统(主机装置)受领到的用户数据分配给非易失性存储器1内的哪个块的哪个页进行管理。在此,块是擦除动作的单位,另外页是编程动作以及读动作的单位。

控制器2从主机系统(主机装置)接收与从主机系统(主机装置)接收的数据写入请求(写命令)进行了关联的用户数据。通过该写命令,指定用户数据所对应的地址(例如逻辑地址)和该用户数据。具体而言,该写命令指定逻辑地址(开始逻辑地址)、长度、数据指针等。开始逻辑地址表示与该用户数据对应的逻辑地址范围内的最先的逻辑地址。长度表示该用户数据的长度。数据指针表示该用户数据存在于主机存储器(主机系统(主机装置)内的存储器)内的位置。

该用户数据应被分配的块以及该块内的页,在数据分配管理部204中决定。即,数据分配管理部204决定由从主机系统(主机装置)接收到的写命令指定的用户数据应被分配的块地址以及页地址,向由接收到的写命令指定的逻辑地址分配所决定的块地址以及所决定的页地址。

进而,控制器2基于从主机系统(主机装置)接收的用户数据,生成实际应向非易失性存储器1写入的写入数据(例如,ECC编码数据这样的编码数据)。表示该写入数据应被写入的非易失性存储器1内的物理存储位置的物理地址,基于分配给该写入数据所对应的用户数据的逻辑地址的块地址以及页地址的组合而决定。

另外,在控制器2中,为了访问存储器系统而使用逻辑物理地址转换表来管理表示由主机系统(主机装置)指定的各个逻辑地址与非易失性存储器1的各个物理地址之间的对应关系的映射信息。各物理地址通过块地址与页地址的组合、或者块地址、页地址以及页内偏移(offset)的组合表示。控制器2通过更新逻辑物理地址转换表,对由从主机系统(主机装置)接收到的写命令指定的地址(逻辑地址)关联物理地址(块地址、页地址)。

在从主机系统(主机装置)接收到读请求(读命令)的情况下,控制器2能够参照逻辑物理地址转换表,从逻辑物理地址转换表取得由读命令指定的逻辑地址所对应的物理地址。

存储器控制部205按照命令控制部202的指示,控制存储器接口控制部208。具体而言,存储器控制部205控制存储器接口控制部208,进行从非易失性存储器1的数据的读出、向非易失性存储器1的数据的写入。向非易失性存储器1写入数据的动作也被称为编程动作。

缓存存储器206是用于暂时保存主机系统(主机装置)与非易失性存储器1之间交换的数据等的区域。缓存存储器206具体而言大多由DRAM、SRAM等的易失性存储器构成。

纠错码(ECC)处理部207按照命令控制部202的指示,对从缓存存储器206通过存储器接口控制部208应向非易失性存储器1传送的用户数据进行附加纠错码的纠错编码处理。纠错编码处理是如下编码处理,即,对用户数据进行编码,生成包含用户数据和能够对该用户数据的错误进行纠正的纠错码(ECC)的编码数据。另外,纠错码(ECC)处理部207按照命令控制部202的指示,进行纠正通过存储器接口控制部208从非易失性存储器1传送来的读出数据的错误的纠错解码处理。纠错解码处理是如下解码处理,即,对包含数据和ECC的编码数据进行解码,对该数据所包含的错误进行纠正。

存储器接口控制部208按照存储器控制部205的指示,对非易失性存储器1与控制器2之间的物理信号线进行电操作,使非易失性存储器1执行所希望的动作。

图3A是更加详细地描绘图1的非易失性存储器1的内部而得到的框图。

非易失性存储器1包含存储器核11、存储器核控制部12以及输入输出部13。

存储器核11包含单元阵列101。单元阵列101包含规则正确地配置而成的大量非易失性存储元件(存储单元)。

输入输出部13包含输入缓存112、114和输出缓存113、115。

输入缓存112、114暂时保存经由用于从控制器2向非易失性存储器1搬运信号的各信号线从控制器2接收的各信号。输出缓存113、115暂时保存经由用于从非易失性存储器1向控制器2搬运信号的各信号线应向控制器2发送的信号。

存储器核控制部12作为构成为对向单元阵列101的数据的写入以及从单元阵列101的数据的读出进行控制的控制电路发挥功能。

该存储器核控制部12包含行解码器102、列解码器缓存读出放大器103、缓存104、存储器核用电源控制部105、存储器核操作部106、命令解码器107、命令队列108、命令执行控制部109、数据处理部110、以及缓存控制部111。

行解码器102指定单元阵列101的中的、成为操作对象的行(row)。列解码器缓存读出放大器103进行向属于由行解码器102指定和/或选择出的行的存储单元的集合的数据的传送、从属于由行解码器102指定和/或选择出的行的存储单元的集合的数据的读出(sense)、以及缓存内的列(column)的选择等。

缓存104是应被写入单元阵列101的数据或从单元阵列101读出的数据的暂时保存场所。在此,例示了设置M+1个缓存来作为缓存104的情况。

存储器核用电源控制部105按照存储器核操作部106的指示,从来自外部的被供给的电源电压VCC产生存储器核11所需的电压和/或电流。

存储器核操作部106按照命令执行控制部109的指示,控制存储器核用电源控制部105产生单元阵列101的动作所需的电压和/或电流,还控制向单元阵列101写入数据的编程动作以及从单元阵列101读出数据的读出动作。

在编程动作中,存储器核操作部106使行解码器102选择操作对象的行,对缓存读出放大器103指示向单元阵列101的数据的写入(program)。在读出动作中,存储器核操作部106使行解码器10选择操作对象的行,对缓存读出放大器103指示从单元阵列101的数据的读出。

命令解码器107对经由输入缓存114从控制器2接收到的命令的内容进行解释,在命令队列108中保存命令,向命令执行控制部109通知命令的接收。

命令队列108是暂时保存命令解码器107接收到的命令的区域。命令队列108所保存的命令通过命令执行控制部109取得以及执行。而且若该命令的执行完成,则该命令被从命令队列108中删除。

命令执行控制部109在从命令解码器107接受表示接收到命令这一情况的通知时,从命令队列108取得该命令,通过控制存储器核操作部106、数据处理部110、以及输出缓存113来执行该命令。

数据处理部110按照命令执行控制部109的指示,进行缓存104内的数据的操作。数据处理部110将缓存104内的数据的操作指示给缓存控制部111。

缓存控制部111按照数据处理部110的指示,进行缓存104内的数据的操作以及管理。作为缓存104而被使用的各个缓存的有效无效等的管理也是缓存控制部111的职责。

图3B表示单元阵列101的构成例。

单元阵列101具有矩阵状排列而成的多个存储单元。单元阵列101如图3B所示,包含多个块(物理块)BLK0~BLK(j-1)。块BLK0~BLK(j-1)作为擦除动作的单位发挥功能。

块BLK0~BLK(j-1)包含多个页。也就是说,块BLK0~BLK(j-1)的分别包含页P0、P1、…P(k-1)。数据的读出以及数据的写入以页为单位执行。

非易失性存储器1可以是在一个存储单元保存1比特的数据的单层单元(SLC)-闪速存储器、可以是在一个存储单元保存2比特的数据的多层单元(MLC)-闪速存储器,可以是在一个存储单元保存3比特的数据的三层单元(TLC)-闪速存储器,也可以是在一个存储单元保存4比特的数据的四层单元(QLC)-闪速存储器。

在SLC中,与块内的相同字线连接的多个存储单元的集合作为一个页发挥功能。

在MLC中,与相同字线连接的多个存储单元的集合作为2个页(作为上页、下页而被参照)发挥功能。

另外,在TLC中,与相同字线连接的多个存储单元的集合作为3个页(作为上页、中页、下页而被参照)发挥功能。

图3C表示单元阵列101内所包含的各块的构成例。

一个块BLK包含多个字线WL0、WL1、WL2、WL3、WL4、…、。各字线WL连接有多个存储单元(存储单元晶体管)MT0、MT1、…、MTN。

例如,在每个存储单元保存3比特的数据的TLC中,各存储单元晶体管被设定为彼此阈值电压不同的8个状态中的某一个。各状态对应于8个数据值(“000”、“001”、“010”、“011”、“100”、“101”、“110”、“111”)中的某一个。

向各字线WL分配3个页(上页、中页、下页)。各存储单元晶体管所保持的3比特分别属于不同的3个页(上页、中页、下页)。

例如,向与字线WL0连接的存储单元晶体管的集合分配页0(上页)、页1(中页)、页2(下页)。同样地,向与字线WL1连接的存储单元晶体管的集合分配页3(上页)、页4(中页)、页5(下页),向与字线WL2连接的存储单元晶体管的集合分配页6(上页)、页7(中页)、页8(下页)。

图4表示规定适用于非易失性存储器1的编程顺序规则的编程顺表例。

由编程顺序规则表示的编程顺序表示向各块写入数据所需的页的顺序。在向各字线分配有多个页的情况下,该编程顺序也可以表示向各块写入数据所需的字线的顺序。

以下,例示闪速存储器(TLC),说明编程顺序例。

图4的编程顺表示出了作为属于相同块的多个字线WL被编程的顺序的编程顺序编号(编程顺序编号0号、编程顺序编号1号、编程顺序编号2号、…、)、和表示与编程顺序编号0号、编程顺序编号1号、编程顺序编号2号、…分别对应的页的页地址的对应关系。

例如,最初(编程顺序编号0号)的编程动作是对字线WL0的1st编程动作(=对页地址0的编程动作)。页地址0对应于字线WL0的上页。

下一个(编程顺序编号1号)编程动作是对字线WL1的1st编程动作(=对页地址3的编程动作)。页地址3对应于字线WL1的上页。

再下一个(编程顺序编号2号)编程动作是对字线WL0的2nd编程动作(=对页地址1的编程动作)。页地址1对应于字线WL0的中页。

再下一个(编程顺序编号3号)编程动作是对字线WL2的1st编程动作(=对页地址6的编程动作)。页地址6对应于字线WL2的上页。

再下一个(编程顺序编号4号)编程动作是对字线WL1的2nd编程动作(=对页地址4的编程动作)。页地址4对应于字线WL1的中页。

再下一个(编程顺序编号5号)编程动作是对字线WL0的3rd编程动作(=对页地址2的编程动作)。页地址2对应于字线WL0的下页。

这样,在非易失性存储器1中,确定了表示向各块写入数据所需的页的顺序的编程顺序。在图4的例子中,编程顺序被确定为,对相邻的几个字线的编程动作彼此交替执行。

即,对各字线WL的编程动作通过包含1st编程动作、2nd编程动作、3rd编程动作的不同的3个编程动作执行。对字线WL0的2nd编程动作在对字线WL1的1st编程动作完成之后开始。对字线WL1的2nd编程动作在对字线WL2的1st编程动作完成之后开始。

对字线WL0的3rd编程动作在对字线WL1的2nd编程动作完成之后开始。对字线WL1的3rd编程动作在对字线WL2的2nd编程动作完成之后开始。

非易失性存储器1的存储器核控制部12按表示向通过控制器2从多个块中选择的写入目的地块写入数据所需的页的顺序的编程顺序执行对该写入目的地块所包含的多个页的编程动作。

在图4的例子中,存储器核控制部12为了向写入目的地块写入数据,需要按对页地址0的编程动作、对页地址3的编程动作、对页地址1的编程动作、对页地址6的编程动作、对页地址4的编程动作、对页地址2的编程动作、…的顺序执行对向该写入目的地块所包含的多个页的编程动作。

图5是表示通过缓存控制部111维持和管理的缓存管理表。

该缓存管理表是用于管理非易失性存储器1内的缓存104的表,包含作为缓存104使用的多个缓存所分别对应的多个列。各列保存缓存编号51、有效无效标志52、块地址53、页地址54、数据必要期间55。

在缓存管理表的各列中,缓存编号51表示识别该列所对应的缓存的缓存编号。有效无效标志52表示该列所对应的缓存的内容是有效还是无效。块地址53表示识别该列所对应的缓存的内容所属的块的块地址。页地址54表示识别该列所对应的缓存的内容所对应的页的页地址。数据必要期间55表示为了执行使用了该列所对应的缓存所保存着的数据的编程动作而需要将该数据维持在缓存内的期间。

具体而言,作为与某数据对应的数据必要期间55的值,使用如下编程顺序编号,即,与使用该数据进行编程的字线相关的3rd编程动作所对应的编程顺序编号。

例如,关于保存有应写入页地址0的数据的缓存,字线WL0的3rd编程动作所对应的编程顺序编号(=5)是该缓存所保存着的数据所对应的数据必要期间。

同样地,关于保存有应写入页地址1或2的数据的缓存,字线WL0的3rd编程动作所对应的编程顺序编号(=5)成为该缓存所保存着的数据所对应的数据必要期间。

另外,关于保存有应写入页地址3的数据的缓存,字线WL1的3rd编程动作所对应的编程顺序编号(=8)成为该缓存所保存着的数据所对应的数据必要期间。

同样地,关于保存有应写入页地址4或5的数据的缓存,字线WL1的3rd编程动作所对应的编程顺序编号(=8)成为该缓存所保存着的数据所对应的数据必要期间。

图6表示通过数据处理部110维持和管理的块写入状态管理表。

块的写入状态管理表是用于管理非易失性存储器1内的多个块的写入状态的表,包含多个块所分别对应的多个列。各列保存块地址61、写入中标志62、下一个编程顺编号63、已完成的编程顺编号64。

在块的写入状态管理表的各列中,块地址61表示识别该列所对应的块的块地址。写入中标志62表示该列所对应的块是否作为写入目的地块(开放的块)而为使用中。下一个编程顺编号63表示对该列所对应的块应执行的下一个编程动作所对应的编程顺序编号(以下,称为“下一个编程顺序编号”)。已完成的编程顺编号64表示在该列所对应的块中已完成的编程动作的编程顺编号。

具体而言,作为下一个编程顺编号63的值以及已完成的编程顺编号64的值的每一个,使用在图4中说明的编程顺序41的值。

在某块作为写入目的地块而被选择了的情况下,该块所对应的下一个编程顺序编号成为编程顺序编号0号。当最初(编程顺序编号0号)的编程动作(字线WL0的1st编程动作)完成时,该块所对应的已完成的编程顺序编号成为编程顺序编号0号,该块所对应的下一个编程顺序编号成为编程顺序编号1号。

在此返回至图4的说明。

图4所示的编程顺表示出了,为了在一个字线的各存储单元保存3比特的数据(8状态)而需要3次编程动作(1st编程动作、2nd编程动作、3rd编程动作)。

例如为了将与字线WL0连接的各存储单元编程为8状态中的某一个所对应的希望的阈值电压电平,需要以编程顺序编号0号进行对字线WL0的1st编程动作,以编程顺序编号2号进行对字线WL0的2nd编程动作,以编程顺序编号5号进行对字线WL0的3rd编程动作。

同样地,为了将与字线WL1连接的各存储单元编程为8状态中的某一个所对应的希望的阈值电压电平,需要以编程顺序编号1号进行对字线WL1的1st编程动作,以编程顺序编号4号进行对字线WL1的2nd编程动作,以编程顺序编号8号进行对字线WL1的3rd编程动作。

这样,对与各字线连接的多个存储单元的数据写入处理分为3个不同的编程动作(1st编程动作、2nd编程动作、3rd编程动作)。

对某字线WLn的2nd编程动作在相邻的字线WLn+1的1st编程动作之后执行。同样地,字线WLn+2的2nd编程动作在相邻的字线WLn+2的1st编程动作之后执行。而且,对字线WLn的3rd编程动作在字线WLn+1的2nd编程动作之后执行。

这样,向与各字线连接的存储单元的数据写入处理以使对相邻的几个字线的编程动作彼此交错的方式执行。其原因在于,在NAND型闪速存储器这样的非易失性存储器1中,需要一边根据相邻的字线的状态校正各字线的存储单元的阈值电压,一边向各字线的存储单元写入数据。通过使对相邻的几个字线的编程动作彼此交错,能够降低因单元间干扰而引起的编程干扰。

此外,向各块的数据写入处理所需的编程顺规则根据非易失性存储器1的世代或数据写入方式而改变。

但是,在NAND型闪速存储器与控制器之间的以往的通信中,控制器自身需要决定数据应被写入的写入目的地页。也就是说,NAND型闪速存储器与控制器之间的以往的通信以控制器侧把握适用于NAND型闪速存储器的编程顺序(也就是说,向块写入数据所需的页的顺序)为前提。

因此,为了使得应使用的编程顺序能够应对不同的各种各样的非易失性存储器,需要预先开发应对各种写入方式(也即是各种编程顺序)的控制器,或者需要每当非易失性存储器的世代交替都开发新的控制器。

但是,为了制造能够应对各种写入方式的控制器,需要追加应对多种写入方式的多种电路,会相应地增加成本。另外,在通过软件安装实现了能够应对各种写入方式的控制器的情况下,有时因软件所导致的处理的延迟会造成性能低下。

另外,每当非易失性存储器1的世代交替都重新开发新的控制器会造成庞大的成本增加。

因此,本实施方式提供一种能够减轻为了控制非易失性存储器1所需的控制器2侧的处理负担的技术。具体而言,本实施方式提供一种使得控制器2能够应对各种写入方式、进而能够应对NAND闪速存储器的各种世代的技术。

进而,在数据写入动作中,在对各字线进行的第2次和第3次的编程动作时,也需要对相同字线以前进行编程动作时的数据。

例如,在字线WL0的第2次的编程动作时(2nd编程动作),为了决定字线WL0的各存储单元的目标阈值电压(4状态中的某一个),不仅需要在2nd编程动作中应写入的数据(与中页对应的数据),还需要在字线WL0的第1次的编程动作(1st编程动作)中使用过的数据(与上页对应的数据)。

另外,在字线WL0的第3次的编程动作时(3rd编程动作),为了决定各存储单元的最终目标阈值电压(8状态中的某一个),不仅需要在3rd编程动作中应写入的数据(与下页对应的数据),还需要在字线WL0的第1次的编程动作(1st编程动作)中使用过的数据(与上页对应的数据)、和在字线WL0的第2次的编程动作(2nd编程动作)中使用过的数据(与中页对应的数据)。

此时,在以往的存储器控制器间接口标准中,例如,在第2次的编程动作时,不仅是在第2次的编程动作中所需的数据,还需要将在第1次的编程动作中使用过的数据也从控制器2向非易失性存储器1传送。同样地,例如,在第3次的编程动作时,不仅是在第3次的编程动作所需的数据,还需要将在第1次的编程动作中使用过的数据和在第2次的编程动作中使用过的数据也从控制器2向非易失性存储器1传送。因而,控制器2与非易失性存储器1之间的通信次数变多。

当通信次数变多时,不仅无法将在控制器2内的通信路以及存储器控制器间的通信路中通信所花费的时间用于其他处理,而且由通信导致的消耗电力也会增加。

因而,在本实施方式中,也提供一种能够抑制存储器控制器间的通信次数的增加的技术。

以下,对非易失性存储器1与控制器2之间的具体的通信内容进行说明。

图7A以及图7B表示通过控制器2和非易失性存储器1执行的数据写入处理的步骤。

使用图7A以及图7B,对第1实施方式的数据写入处理的步骤进行说明。

如图7A所示,首先,控制器2对非易失性存储器1指定块地址,将开始向该块的写入处理这一情况向非易失性存储器1通知(步骤S701)。

在该步骤S701中,控制器2也可以将选择非易失性存储器1内的多个块(空闲块)内的一个块作为写入目的地块的请求(Block open请求)向非易失性存储器1发送。例如,在该选择的写入目的地块是具有块地址0的块的情况下,控制器2将Block open(0)向非易失性存储器1发送。在此,Block open(0)的(0)表示块地址0。

换言之,在该步骤S701中,控制器2将表示从非易失性存储器1内的多个块(空闲块)中选择的一个块的块地址向非易失性存储器1发送。在此,块地址也被称为第1地址信号。

在非易失性存储器1的存储器核控制部12从控制器2接收到选择写入目的地块的请求(Block open(0))即块地址的情况下,存储器核控制部12更新图6的块写入状态管理表,将所指定的块0(具有块地址0的块)所对应的写入中标志设定为Y(=是)(步骤S702)。

进而,存储器核控制部12更新图6的块写入状态管理表,将所指定的块0(具有块地址0的块)所对应的下一个编程顺编号63的值初始化为0(步骤S703)。

然后,非易失性存储器1的存储器核控制部12向控制器2通知为了进行对块0的下一个编程动作所需的数据是页0的数据这一情况(步骤S704)。换言之,在步骤S704中,存储器核控制部12针对从控制器2接收到的块地址,将基于块地址选择的页地址向控制器2发送。在此,页地址也被称为第2地址信号。

也就是说,在步骤S704中,存储器核控制部12将对块0进行的下一个编程动作所对应的页地址向控制器2通知。

下一个编程动作所对应的下一个编程顺序编号是下一个编程顺编号63的值(在此为0),参照图4的表可知,下一个编程顺序编号0的编程动作所需的页的页地址是0。以后也同样地,存储器核控制部12从图6的块写入状态管理表取得下一个编程顺序编号,根据图4的表,取得表示下一个编程顺序编号的编程动作所需的页的页地址。

这样,在步骤S704中,非易失性存储器1的存储器核控制部12将表示下一个编程动作所需的页的页地址、也即是“下一页”的页地址向控制器2通知(Notify next page 0,0))。Notify next page(0,0)的(0,0)表示写入目的地块的块地址0和该写入目的地块内的下一个写入目的地页的页地址0。Notify next page(0,0)也可以经由用于搬运I/O信号<7:0>的数据总线从非易失性存储器1向控制器2发送。

这样,通过将写入目的地块的块地址和该写入目的地块内的写入目的地页的页地址的对从非易失性存储器1向控制器2通知,即使在多个写入目的地块被同时开放(open)的情况下,非易失性存储器1的存储器核控制部12也能够按每个写入目的地块,将表示为了进行下一个编程动作所需的页的页地址正确地向控制器2通知。

此外,未必将写入目的地块地址和页地址这两方从非易失性存储器1向控制器2通知,写入目的地块地址的通知也可以省略,仅将页地址从非易失性存储器1向控制器2通知。

在控制器2从非易失性存储器1接收到“下一页”的页地址0的情况下,控制器2将指定页地址0的编程请求(Write(0,0))和应向具有页地址0的页写入的数据(也作为页0的数据而被参照)向非易失性存储器1传送(步骤S705)。Write(0,0)的(0,0)表示写入目的地块地址0和页地址0。此外,编程请求也可以未必指定写入目的地块地址和页地址这两方,可以使用仅指定页地址的编程请求。

具体而言,在步骤S705中,首先,编程命令、写入目的地块地址、页地址从控制器2向非易失性存储器1传送,接着,页0的数据从控制器2向非易失性存储器1传送。

在非易失性存储器1的存储器核控制部12从控制器2接收到编程请求(Write(0,0))和页0的数据的情况下,存储器核控制部12将接收到的页0的数据保存于缓存104,向图5的缓存管理表登记管理数据(步骤S706)。

例如,在缓存编号0的缓存保存有该数据的情况下,存储器核控制部12将与缓存管理表(图5)的缓存编号0相关的列的有效无效标志52设定为表示有效的值,将该列的块地址51的值设定为0,将该列的页地址54的值设定为0,将该列的数据必要期间55的值设定为5。数据必要期间的值(在此为5)通过参照图4的表而被决定。

也就是说,通过参照图4的表可知,页0的数据是字线WL0的数据,该字线WL0的第3次的编程动作是编程顺序编号5号。因此,可知,直到编程顺序编号5号的编程动作完成为止,页0的数据是必需的。由此可知,对页0的数据设定的数据必要期间55的值成为5。以后也同样地,从图4的表取得各页的数据所对应的数据必要期间。

返回至图7A的说明。

取得了写入目的地块0的下一个编程动作所需的页0的数据的存储器核控制部12,将与块写入状态管理表(图6)的块0相关的下一个编程顺编号63的值更新为1,对控制器2,通知写入目的地块0的下一个编程动作所需的数据的页地址为3这一情况(步骤S707)。

这样,在步骤S707中,存储器核控制部12将对写入目的地块0的下一个编程动作所对应的页地址3向控制器2通知(Notify next page(0,3))。Notify next page(0,3)的(0,3)表示写入目的地块的块地址0和该写入目的地块内的写入目的地页的页地址3。然后,存储器核控制部12进行将从控制器2接收到的页0的数据向块0的页0写入的编程动作(步骤S708)。换言之,在步骤S708中,存储器核控制部12针对从控制器2接收的、指定写入目的地块地址、页地址以及页0的数据的命令(编程命令),将页0的数据向基于写入目的地块地址以及页地址的地址(物理地址)所对应的存储单元进行编程。

若对页0的数据的编程完成,则存储器核控制部12将与块写入状态管理表(图6)的块0相关的已完成的编程顺编号64的值设定为0。

在控制器2从非易失性存储器1接收到“下一页”的页地址3的情况下,控制器2将指定页地址3的编程请求(Write(0,3))和应向具有页地址3的页写入的数据(也作为页3的数据而被参照)向非易失性存储器1传送(步骤S709)。

在非易失性存储器1的存储器核控制部12从控制器2接收到编程请求(Write(0,3))和页3的数据的情况下,存储器核控制部12将页3的数据保存于缓存104,向图5的缓存管理表登记管理数据(步骤S710)。例如,在缓存编号1的缓存中保存有该页3的数据的情况下,存储器核控制部12将与缓存管理表(图5)的缓存编号1相关的列的有效无效标志52设定为表示有效的值,将该列的块地址51的值设定为0,将该列的页地址54的值设定为3,将该列的数据必要期间55的值设定为8。数据必要期间的值(在此为8)通过参照图4的表而被决定。

取得了写入目的地块0的下一个编程动作所需的页3的数据的存储器核控制部12将与块写入状态管理表(图6)的块0相关的下一个编程顺编号63的值更新为1,向控制器2通知写入目的地块0的下一个编程动作所需的数据的页地址为1这一情况(步骤S711)。

这样,在步骤S711中,存储器核控制部12将对写入目的地块的下一个编程动作所对应的页地址1向控制器2通知(Notify next page(0,1))。Notify next page(0,1)的(0,1)表示写入目的地块的块地址0和该写入目的地块内的写入目的地页的页地址1。然后,存储器核控制部12进行将从控制器2接收到的页3的数据向块0的页3写入的编程动作(步骤S712)。

在控制器2从非易失性存储器1接收到“下一页”的页地址1的情况下,控制器2将指定页地址1的编程请求(Write(0,1))和应向具有页地址1的页写入的数据(也作为页1的数据而被参照)向非易失性存储器1传送(步骤S713)。

在非易失性存储器1的存储器核控制部12从控制器2接收到编程请求(Write(0,1))和页1的数据的情况下,存储器核控制部12将页1的数据保存于缓存104,向图5的缓存管理表登记管理数据(步骤S714)。例如,在缓存编号2的缓存中保存有该页1的数据的情况下,存储器核控制部12将与缓存管理表(图5)的缓存编号2相关的列的有效无效标志52设定为表示有效的值,将该列的块地址51的值设定为0,将该列的页地址54的值设定为1,将该列的数据必要期间55的值设定为5。数据必要期间的值(在此为5)通过参照图4的表而被决定。

取得了写入目的地块0的下一个编程动作所需的页1的数据的存储器核控制部12将与块写入状态管理表(图6)的块0相关的下一个编程顺编号63的值更新为6,向控制器2通知写入目的地块0的下一个编程动作所需的数据的页地址为6这一情况(步骤S715)。

这样,在步骤S715中,存储器核控制部12将对写入目的地块0的下一个编程动作所对应的页地址6向控制器2通知(Notify next page(0,6))。Notify next page(0,6)的(0,6)表示写入目的地块的块地址0和该写入目的地块内的写入目的地页的页地址6。然后,存储器核控制部12从缓存104读出页1的数据,使用从缓存104读出的页1的数据和从控制器2接收的页3的数据,进行对块0的页1的编程动作(步骤S716)。

这样,在对通过从控制器2接收的编程请求指定的页的编程动作是字线WL0的第2次的编程动作的情况下,存储器核控制部12从缓存104读出在对该字线WL0的第1次的编程动作中使用过的数据(页0的数据),使用该读出的页0的数据和从控制器2传送的页1的数据,进行对页1的编程动作。页0的数据和页1的数据这两方为了决定字线WL0的各存储单元的目标阈值电压电平而被使用。目标阈值电压电平是2比特所对应的4数据值所对应的4个阈值电压电平中的某一个。

以后,在控制器2与非易失性存储器1之间进行同样的通信以及处理(图7A的步骤S713~图7B的步骤S728)。

在图7B的步骤S728中,存储器核控制部12从缓存104读出页0的数据和页1的数据这两方,使用从缓存104读出的页0的数据以及页1的数据、和从控制器2接收的页2的数据,进行对块0的页2的编程动作。页0的数据、页1的数据以及页2的数据为了决定字线WL0的各存储单元的最终目标阈值电压电平而被使用。最终目标阈值电压电平是3比特所对应的8数据值所对应的8个阈值电压电平中的某一个。

然后,若对页2的数据的编程完成,则存储器核控制部12将与块写入状态管理表(图6)的块0相关的已完成的编程顺编号64的值设定为5。

具体而言,在该时间点的块写入状态管理表(图6)的内容如图9所示。另外,在该时间点的缓存管理表(图5)的内容如图8所示。

因此,存储器核控制部12参照图5的缓存管理表,寻找数据必要期间55的值成为5的缓存。于是,存储器核控制部12检测出缓存编号0的缓存、缓存编号2的缓存以及缓存编号5的缓存所对应的数据必要期间55的值成为5,将这些缓存所保存着的数据所对应的页地址54的值(在此,为页地址0、1、2)识别为在对写入目的地块0的哪个页的编程动作中都不再需要的页的数据。然后,在步骤S729中,存储器核控制部12将表示不需要页地址0、1、2所对应的数据这一情况的数据不要通知向控制器2通知(Notify free data(0,1,2))。Notifyfree data(0,1,2)的(0,1,2)表示页地址0、1、2。

此外,不仅不再需要的数据的页地址,这些页所属的块的块地址也可以从非易失性存储器1向控制器2通知。

进而,在步骤S729中,存储器核控制部12也执行将保存有页地址0、1、2所对应的数据的缓存(缓存104内的区域)释放的处理。

控制器2在接收到该数据不要通知时,判断为不需要控制器2内的缓存存储器206所保存着的、该指定的数据。然后,控制器2将保存有该指定的数据的缓存存储器206内的区域释放,将该释放了的区域再利用于其他数据的保存等。

如以上那样,非易失性存储器1的存储器核控制部12按预定的编程顺序执行对写入目的地块所包含的多个页的编程动作。预定的编程顺序表示向写入目的地块写入数据所需的页的顺序。然后,存储器核控制部12将对写入目的地块的下一个编程动作所对应的页地址向控制器2通知。

因此,由于控制器2仅进行将应向由非易失性存储器1指示的页地址写入的数据向非易失性存储器1传送这一处理即可,所以也可以不知道非易失性存储器1是否是需要以怎样的编程顺序对各个页进行编程的存储器。也就是说,即使变更控制对象的非易失性存储器1的写入方式,控制器2只要进行将由该非易失性存储器1指示的页地址所对应的数据向非易失性存储器1传送这一处理就能够执行正确的数据写入动作。

因而,即使变更非易失性存储器1的写入方式,也无需开发能够按照变更后的写入方式所对应的正确的编程顺序控制该非易失性存储器1的新控制器,从而能够继续使用该控制器2。

一般来说,作为非易失性存储器1而被使用的NAND型闪速存储器的世代例如每年变化。因此,如果每当NAND型闪速存储器的世代变化都开发新控制器,则会造成庞大的成本增加。

在本实施方式中,在从控制器2接收到表示从多个块中选择的一个块的块地址的情况下,非易失性存储器2将基于该块地址选择的页地址向控制器2发送。由此,能提供一种非易失性存储器1将对写入目的地块的下一个编程动作所对应的页地址向控制器2通知这一新的通信接口标准。因此,能够减轻为了控制非易失性存储器1所需的控制器2侧的处理负担,由此,能够以低成本实现能够应对多个世代的NAND型闪速存储器的存储器系统。

另外,在本实施方式中,如在图7A的步骤S704中说明的那样,存储器核控制部12在从控制器2接收到用于将多个块中的一个块选择为写入目的地块的处理请求(Block open请求)的情况下,将表示该写入目的地块所包含的多个页中、最先的编程顺序编号(编程顺序编号0)所对应的页的页地址(例如页地址0)作为表示为了执行对该写入目的地块的下一个编程动作所需的页的页地址而向控制器2通知。

另外,在本实施方式中,如在图7A的步骤S707中说明的那样,存储器核控制部12在从控制器2接收到指定最先的编程顺序编号(编程顺序编号0)所对应的页的页地址(例如页地址0)的编程请求和应向该页地址0写入的数据的情况下,将表示该写入目的地块所包含的多个页中、下一个编程顺序编号(编程顺序编号1)所对应的页的页地址(例如页地址3)作为表示为了进行对该写入目的地块的下一个编程动作所需的页的页地址而向控制器2通知。

这样,作为对Block open请求或编程请求的回答,将表示为了进行下一个编程动作所需的页的页地址从非易失性存储器1向控制器2通知。

因此,控制器2每当发出Block open请求或编程请求时,都能够容易获知表示为了进行下一个编程动作所需的页的页地址。

另外,控制器2能够通过从非易失性存储器1接受不要通知来获知不需要的数据。因而,控制器2尽管不知道分配给各字线的页数、编程顺序、写入方式等,也能够从缓存存储器206容易地删除写入目的地块的数据写入处理所不再需要的数据。

进而,在本实施方式中,属于写入目的地块的多个字线的每一个包含多个页,存储器核控制部12对写入目的地块内的各字线执行多次编程动作。编程顺序被决定为对相邻的各个字线的编程动作彼此交替执行。

如利用图3A进行说明的那样,存储器核控制部12包含保持从控制器2传送的数据的缓存104。而且,存储器核控制部12在对通过从控制器2接收的编程请求指定的页地址的编程动作是对例如字线WL0的第2次以后的编程动作的情况下,从缓存104读出在对字线WL0的以前的编程动作中使用过的数据,使用读出的数据和从控制器2传送的、应向该指定的页地址写入的数据,执行对字线WL0的编程动作。

因此,控制器2需要仅将由非易失性存储器1指示的页的数据向非易失性存储器1发送,即使在为了向各字线的数据写入而需要多个页数据的写入方式被适用于非易失性存储器1的情况下,由于控制器2不知道该写入方式也可以,所以也能够削减非易失性存储器1与控制器2之间的通信次数和/或通信时间。

具体而言,即使在根据写入对象页是上页、中页、和下页中的哪一个而数据写入所需的页数据的数量发生变化的写入方式被适用于非易失性存储器1的情况下,控制器2也无需考虑写入对象页是上页、中页、和下页中的哪一页等,仅进行将指定由非易失性存储器1通知了的页地址的编程请求和应向该页地址写入的1页量的写数据向非易失性存储器1传送的处理即可。

图12的流程图表示在从控制器2通知了开始向块的写入处理的情况下通过非易失性存储器1执行的处理的步骤,图13的流程图表示在从控制器2接收到编程请求和写数据的情况下通过非易失性存储器1执行的处理的步骤。针对这些步骤的详细内容,在后述的第2实施方式中进行说明。

(第2实施方式)

接着,对第2实施方式进行说明。

第2实施方式的非易失性存储器1以及控制器2各自的构成与第1实施方式的非易失性存储器1以及控制器2各自的构成同样。

在第1实施方式中,控制器2将由非易失性存储器1指定的页地址所对应的数据向非易失性存储器1进行了传送。

但是,根据控制器2的状况的不同,也考虑控制器2无法将由非易失性存储器1指定的页地址所对应的数据向非易失性存储器1传送的情形。图10示出了这样的情况下的处理内容。

由于图10的步骤S1001到步骤S1008的处理与图7A的步骤S701到步骤S708的处理相同,所以省略图10的步骤S1001到步骤S1008的处理的说明。

在此,尽管在步骤S1007中非易失性存储器1向控制器2通知了3来作为对块0的下一个编程动作所需的数据的页地址,但是考虑控制器2将指定块0的页地址1的编程请求和应向块0的页地址1写入的数据(页1的数据)向非易失性存储器1进行了传送的情况(步骤S1009)。

此时,非易失性存储器1的存储器核控制部12将从控制器2接收到的页1的数据保存于缓存104,向图5的缓存管理表登记管理数据(步骤S1010)。页1的数据的数据必要期间为5。

接着,存储器核控制部12对控制器2再次通知对块0的下一个编程动作所需的数据的页地址为3这一情况(步骤S1011)。

然后,由于块0的下一个编程动作所需的数据(页地址3的数据)不存在,所以存储器核控制部12不进行对块0的页地址3的编程动作。

进而,在控制器2将指定页地址2的编程请求和应向页地址2写入的数据(页2的数据)向非易失性存储器1进行了传送的情况下,存储器核控制部12也进行与在接收到指定块0的页地址1的编程请求和应向块0的页地址1的数据(页1的数据)的情况下同样的处理(步骤S1013、步骤S1014)。页2的数据的数据必要期间是5。

之后,在控制器2将指定块0的页地址3的编程请求和应向块0的页地址3写入的数据(页3的数据)向非易失性存储器1进行了传送的情况下(步骤S1015),存储器核控制部12将从控制器2接收到的页3的数据保存于缓存104,向图5的缓存管理表登记管理数据(步骤S1016)。页3的数据的数据必要期间是8。

存储器核控制部12向控制器2通知对块0的下一个编程动作所需的数据是页地址6的数据这一情况(步骤S1017)。

然后,存储器核控制部12进行将终于(刚刚)接受的页3的数据向块0的页3写入的编程动作(步骤S1018)。然后,存储器核控制部12将与块写入状态管理表(图6)的块0相关的下一个编程顺编号63的值更新为2,将与块0相关的已完成的编程顺编号64的值更新为1。

此时,图5的缓存管理表的内容成为如图11所示那样。

于是,存储器核控制部12知道了如下情况,即,下一个编程顺序编号是2、且编程顺序编号2所对应的页1的编程所需的数据是页地址0所对应的数据和页地址1所对应的数据这两方,而且页地址0所对应的数据和页地址1所对应的数据这两方已经存在于缓存104内。

因此,存储器核控制部12在页3的编程完成后,从缓存104读出页地址0所对应的数据和页地址1所对应的数据这两方,使用读出的页地址0所对应的数据和页地址1所对应的数据这两方,执行对页1的编程动作(步骤S1019)。

这样,非易失性存储器1的存储器核控制部12在并非下一个编程动作所需的页的数据的数据被从控制器2传送来的情况下,将该数据保存于缓存104,若下一个编程顺序编号成为需要该保存的数据的编程顺序编号,则不等待来自控制器1的指示就自动执行对该编程顺序编号所对应的页的编程动作。

以上,图12、图13以及图14以流程图示出在图7A以及图7B、图10中说明的处理内容。

以下,说明图12、图13、图14的内容。

图12表示从控制器2向非易失性存储器1通知开始向块的写入处理时(S701,S1001)通过非易失性存储器1执行的处理的步骤。

在从控制器2向非易失性存储器1通知了开始向具有某块地址的块的写入处理的情况下,非易失性存储器1的存储器核控制部12对块写入状态管理表(图6)内的与该块有关的列进行初始化(步骤S1201)。

在此所说的初始化是指,将写入中标志62设定为Y,将下一个编程顺编号63的值、也即是下一个编程顺序编号设定为0。

接着,非易失性存储器1的存储器核控制部12对控制器2返回下一个编程顺序编号0号所对应的页地址0(步骤S1202)。下一个编程顺序编号0所对应的页地址能够从图4的表中取得。

接着说明图13。

图13表示从控制器2向非易失性存储器1传送了编程请求和写数据时通过非易失性存储器1执行的处理的步骤。

从控制器2受领了编程请求的非易失性存储器1的存储器核控制部12通过参照块写入状态管理表(图6)来判定通过该受领到的编程请求指定的块是否是写入中的块(开放着的块)(步骤S1301)。

在该块并非写入中的块的情况下(步骤S1301,否),存储器核控制部12向控制器2返回表示该块尚未接收到写入处理的开始通知这一情况的错误(步骤S1302),结束处理。

在由受领到的编程请求指定的块是写入中的块的情况下(步骤S1301,是),存储器核控制部12通过参照图4的表判定由受领到的编程请求指定的页地址是否与块写入状态管理表(图6)的下一个编程顺编号63的值所对应的页地址一致(步骤S1303)。

在由受领到的编程请求指定的页地址与下一个编程顺编号63的值所对应的页地址一致的情况下(步骤S1303,是),存储器核控制部12将从控制器2受领到的数据保存于缓存104(步骤S1304),更新图5的缓存管理表(步骤S1305)。

在更新图5的缓存管理表的处理中,针对保存有数据的缓存编号所对应缓存管理表内的列,存储器核控制部12将有效无效标志52设定为表示有效的值,将块地址53的值设定为写入对象块地址,将页地址54的值设定为写入目的地页地址,将数据必要期间55的值设定为参照图4的表而取得的编程顺序编号。

存储器核控制部12在图5的缓存管理表的更新结束时,更新图6的块写入状态管理表的下一个编程顺编号63的值(步骤S1306)。例如,在编程顺序编号0所对应的编程请求以及数据被从控制器2传送至非易失性存储器1的情况下,下一个编程顺编号63的值、也即是下一个编程顺序编号被更新为1。

然后,存储器核控制部12对控制器2返回与该块相关的下一个编程顺编号63的被更新后的值所对应的页地址(步骤S1307)。例如,若下一个编程顺编号63的值(编程顺序编号)被更新为1,则根据图4,决定该更新后的编程顺序编号1所对应的页地址为3,该页地址3被返回至控制器2。

然后,存储器核控制部12使用在步骤S1304中保存于缓存104的数据,开始对由已经从控制器2接收的编程请求指定的页的编程动作(步骤S1308)。

在从控制器2受领到的数据的页地址并非下一个编程顺编号63的值所对应的页地址的情况下(步骤S1303,否),存储器核控制部12即使将下一个编程动作所需的页的数据以外的数据保存于缓存104也检查缓存104中是否存在能够保存下一个编程动作所需的页的数据的空余区域(余裕)(步骤S1309)。

在步骤S1309中,存储器核控制部12例如也可以检查缓存104是否存在下一个编程顺序编号所对应的数据用的空余区域以外的其他空余区域。也就是说,存储器核控制部12可以检查缓存104是否存在2个以上的空余区域(2个以上的空余缓存),若存在2个以上的空余区域(2个以上的空余缓存),则判定为缓存104存在余裕。

在缓存104不存在尽可能保存下一个编程动作所需的页的数据以外的数据的空余区域(余裕)的情况下(步骤S1309,否),存储器核控制部12将表示缓存104不存在空余区域(余裕)这一情况的错误向控制器2返回(步骤S1312)。

另一方面,在缓存104存在尽可能保存下一个编程动作所需的页的数据以外的数据的空余区域(余裕)的情况下(步骤S1309,是),存储器核控制部12将从控制器2受领到的数据保存于缓存104(步骤S1310),更新图5的缓存管理表(步骤S1311)。

在步骤S1311以及S1312的处理之后,在任何情况下,存储器核控制部12都向控制器2返回该块的下一个编程顺编号63的值所对应的页地址(步骤S1313),完成处理。

图14表示在图13的步骤S1308中开始了的编程动作完成时通过存储器核控制部12执行的处理的步骤。

存储器核控制部12在检测出对某写入目的地块的某页的编程动作已完成时,首先,对块写入状态管理表(图6)的与该块相关的已完成的编程顺编号64的值、也即是已完成的编程顺序编号进行更新(步骤S1401)。

接着,存储器核控制部12参照图5的缓存管理表,调查是否存在在数据必要期间55设定了该已完成的编程顺序编号的缓存(步骤S1402)。在数据必要期间55设定了该已完成的编程顺序编号的缓存所保存着的数据是在对该写入目的地块的哪个页的编程动作中都不再需要的数据(不要数据)。

若不存在在数据必要期间55设定了该已完成的编程顺顺序编号的缓存(步骤S1402,否),则存储器核控制部12结束处理。

在存在在数据必要期间55设定了该已完成的编程顺序编号的一个以上的缓存的情况下(步骤S1402,是),存储器核控制部12释放这些缓存(缓存104内的区域),进而,对控制器2返回表示不需要这些缓存所对应的页地址的数据这一情况的回答(步骤S1403)。这是对应于图7的步骤S729的处理。

之后,存储器核控制部12参照图5的缓存管理表,调查为了执行对已完成的编程顺序编号的下一个编程顺序编号所对应的页的编程动作、也即是下一个编程动作所需的全部数据是否已经存在于缓存104内(步骤S1404)。为了执行下一个编程动作所需的全部数据例如是,(1)在下一个编程动作对应于字线WL0的第2次的编程动作(2nd编程动作)的情况下,是页0的数据和页1的数据,(2)在下一个编程动作对应于字线WL0的第3次的编程动作(3rd编程动作)的情况下,是页0的数据、页1的数据和页2的数据,(3)在下一个编程动作对应于字线WL1的第1次的编程动作(1st编程动作)的情况下,是页3的数据。

因此,例如,在下一个编程动作对应于字线WL0的第2次的编程动作(2nd编程动作)的情况下,存储器核控制部12基于页0的数据、页1的数据这两方是否存在于缓存104内,调查为了执行下一个编程动作所需的全部数据是否存在于缓存104内。

在下一个编程动作所需的全部数据不存在于缓存104内的情况下(步骤S1404,否),存储器核控制部12结束处理。

另一方面,在下一个编程动作所需的全部数据存在于缓存104内的情况下(步骤S1404,是),存储器核控制部12使用缓存104内的这些数据,自动开始下一个编程动作(步骤S1405)。在此一系列的处理完成。

此外,若在步骤S1405开始了的编程动作完成,则再次进行从步骤S1401起的处理。

以上,在第2实施方式中,存储器核控制部12在从控制器2接收到指定与向控制器2通知了的页地址不同的其他页地址的编程请求和该其他页地址所对应的数据的情况下,不执行对具有该其他页地址的页的编程动作而将接收到的数据保存于缓存104。由此,即使控制器2将与通过非易失性存储器1指定的页不同的页的数据向非易失性存储器1发送,也能够将该数据不废弃地保持于该非易失性存储器1内的缓存104。

另外,在从控制器2接收到指定通知了的页地址的编程请求和具有通知了的页地址的页所对应的数据的情况下,存储器核控制部12执行对具有通知了的页地址的页的编程动作。而且,在执行了对具有通知了的页地址的页的编程动作之后,在下一个编程动作应被执行的下一页所对应的数据存在于缓存104的情况下,存储器核控制部12自动执行对下一页的编程动作。

因而,即使控制器2将与由非易失性存储器1指定的页不同的页所对应的数据向非易失性存储器1发送,也能够不使控制器2与非易失性存储器1之间的通信次数增加地,将与由非易失性存储器1指定的页不同的页所对应的数据按正确的编程顺序向写入目的地块写入。

(第3实施方式)

接着,作为第3实施方式,对通过来自控制器2的指示,非易失性存储器1从某块向其他块复制数据的构成进行说明。

第3实施方式的非易失性存储器1以及控制器2各自的构成与第1以及第2实施方式的非易失性存储器1以及控制器2各自的构成同样。

在此所说的复制是指接下来这样的处理。

例如如图15所示存在块a和块b,并且设为:块a所保存着的数据中、4个存储位置a10,a13,a20,a21各自所保存着的4个数据是有效数据,而且块b所保存着的数据中、4个存储位置b00,b01,b02,b10所分别保存着的4个数据是有效数据。

a10表示块地址a、页地址1、偏移0。同样地,b00表示块地址b、页地址0、偏移0。

将该图15中的块a的有效数据和块b的有效数据复制到作为其他块的块c这一情况,在此称为复制处理。该复制处理在非易失性存储器1内部执行。也就是说,存储器核控制部12将在单元阵列101的复制源位置保存着的数据(有效数据)从单元阵列101读出到缓存104,然后,执行将该数据(有效数据)从缓存104向单元阵列101的复制目的地位置(写入目的地页)写入的编程动作。

这样的处理的被称为垃圾回收(garbage collection)。

在此,有效数据是指,为了访问存储器系统而由主机使用的逻辑地址中的某一个所关联着的数据。某逻辑地址所关联着的数据是有可能由主机之后访问的数据。无效数据是指,与哪一个逻辑地址均不关联的数据。

在控制器2中,管理有地址转换表,该地址转换表用于管理各个逻辑地址与表示保存有这些逻辑地址所对应的数据的非易失性存储器1内的存储位置的各个物理地址之间的映射。某逻辑地址所对应的更新数据被写入到与保存有该逻辑地址所对应的以前的数据的非易失性存储器1的存储位置不同的位置。控制器2将地址转换表更新为,使得表示更新数据被写入了的存储位置的物理地址与该逻辑地址关联。各逻辑地址所对应的最新的物理地址所保存着的数据是有效数据。

与该复制处理相关的、非易失性存储器1与控制器2的通信内容如图16所示那样。

控制器2与通常的写入处理同样地,首先,对存储器1进行向块的写入开始的通知(步骤S1601)。在此进行对块c的写入开始通知。在步骤S1601中,控制器2也可以将选择非易失性存储器1内的多个块(空闲块)内的一个块来作为写入目的地块(在此,也作为复制目的地块而被参照)的请求(Block open请求)向非易失性存储器1发送。在该选择的写入目的地块是具有块地址c的块c的情况下,控制器2将Block open(c)向非易失性存储器1发送。在此,Block open(c)的(c)表示块地址c。

受领到向块c的写入开始通知的非易失性存储器1的存储器核控制部12对块写入状态管理表(图6)的块c的列进行初始化(步骤S1602),向控制器2通知为了进行对块c的下一个编程动作所需的数据是页0的数据这一情况(步骤S1603)。

在步骤S1603中,存储器核控制部12将块c的下一个编程顺序编号所对应的页地址0向控制器2通知(Notify next page(c,0))。

于是,控制器2将指定写入目的地块编号(在此为c)、写入目的地页地址(在此为0)以及复制源数据的位置信息的复制请求(Copy(c,0,a10,a13,a20,a21))向非易失性存储器1发送(步骤S1604)。

在图15的例子中,由于在块a的a10,a13,a20,a21这4个位置存在有效数据,所以控制器2将这些位置作为复制源数据的位置信息向非易失性存储器1发送。

在步骤S1604中,具体而言,复制命令、写入目的地块地址、写入目的地页地址、复制源数据的位置信息被从控制器2向非易失性存储器1传送。

接收到复制请求(Copy(c,0,a10,a13,a20,a21))的非易失性存储器1的存储器核控制部12将在由复制请求指定的复制源位置保存着的数据读出至缓存104(S1605),更新缓存管理表(图5)(S1606)。

例如,在缓存编号0的缓存保存有该数据的情况下,存储器核控制部12将缓存管理表(图5)的与缓存编号0相关的列的有效无效标志52设定为表示有效的值,将该列的块地址51的值设定为c,将该列的页地址54的值设定为0,将该列的数据必要期间55的值设定为5。

然后,存储器核控制部12向控制器2通知为了进行对块c的下一个编程动作所需的数据是页3的数据这一情况(步骤S1607)。

在步骤S1607中,存储器核控制部12将块c的下一个编程顺序编号1所对应的页地址3向控制器2通知(Notify next page(c,3))。

之后,存储器核控制部12使用读出至缓存104的数据开始对块c的页0的编程动作(步骤S1608)。然后,存储器核控制部12也更新与块c有关的、块写入状态管理表(图6)的内容。

接着,控制器2将指定写入目的地块编号(在此为c)、写入目的地页地址(在此为3)以及复制源数据的位置信息的复制请求(Copy(c,3,b00,b01,b02,b10))向非易失性存储器1发送(步骤S16009)。

在图15的例子中,由于在块b的b00,b01,b02,b10这4个位置存在有效数据,所以控制器2将这些位置作为复制源数据的位置信息向非易失性存储器1发送。

接收到复制请求(Copy(c,3,b00,b01,b02,b10))的非易失性存储器1的存储器核控制部12将在所指定的复制源位置保存着的数据读出至缓存104(S1610),更新缓存管理表(图5)(S1611)。

例如,在缓存编号1的缓存保存有该数据的情况下,存储器核控制部12将缓存管理表(图5)的与缓存编号1相关的列的有效无效标志52设定为表示有效的值,将该列的块地址51的值设定为c,将该列的页地址54的值设定为3,将该列的数据必要期间55的值设定为8。

然后,存储器核控制部12向控制器2通知为了进行对块c的下一个编程动作所需的数据是页1的数据这一情况(步骤S1612)。

之后存储器核控制部12使用读出至缓存104的数据开始对块c的页3的编程动作(步骤S1613)。并且,也更新与块c相关的、块写入状态管理表(图6)的内容。

通过这样,不在非易失性存储器1与控制器2之间收发实际的数据就能够进行非易失性存储器1内的数据的复制,从而能够实现由通信内容的简化引起的处理时间的削减和消耗电力的削减。

(第4实施方式)

接着,对第4实施方式进行说明。

第4实施方式的非易失性存储器1以及控制器2各自的构成与第1~第3实施方式的非易失性存储器1以及控制器2相比,不同之处在于,如图17所示,非易失性存储器1的存储器核控制部12包含纠错码(ECC)处理部116和错误抑制码(error mitigation code:EMC)处理部117。即,在第4实施方式中,在非易失性存储器1的存储器核控制部12内设有纠错码(ECC)处理部116和错误抑制码(error mitigation code:EMC)处理部117。

在图17中,为了便于图示,仅图示了存储器核控制部12内的几个要素,但是该第4实施方式的存储器核控制部12能够包含在图3A中说明的全部元件、以及纠错码(ECC)处理部116和错误抑制码(EMC)处理部117。

纠错码(ECC)处理部116包含ECC编码器116a和ECC解码器116b。ECC编码器116a执行对应向写入目的地块写入的数据(用户数据)进行编码并对该数据附加纠错码的纠错编码处理。ECC解码器116b执行对从单元阵列101读出的数据(包含用户数据和ECC的编码数据)进行解码并对该数据所包含的错误进行纠正的纠错解码处理。

作为纠错编码处理,能够使用RS(reed solomon)编码、BCH(bose chaudhurihocquenghem)编码等。

错误抑制码(EMC)处理部117包含EMC编码器117a和EMC解码器117b。EMC编码器117a进行将原始数据的数据模式(也称为比特模式)转换为难以产生错误的数据模式、也即是抑制错误的数据模式的错误抑制编码处理。EMC解码器117b进行将通过错误抑制编码处理编码后的数据进行解码而还原为原始数据的错误抑制解码处理。

例如,EMC编码器117a进行生成‘0’或‘1’的出现频度发生了偏置的码字的编码。在本说明中,将这样的编码称为错误抑制编码(error mitigating coding),将在该错误抑制编码中使用的符号称为错误抑制码(error mitigating code:EMC)。

在此,‘0’的出现频度是指,在构成码字的比特列中‘0’出现的次数(频度)。‘1’的出现频度是指,在构成码字的比特列中‘1’出现的次数(频度)。因此,‘0’或‘1’的出现频度发生了偏置的码字是指,‘0’的个数(出现次数)和‘1’的个数(出现次数)存在差的码字。

作为生成这样的码字的编码,存在对固定比特长的数据进行编码而生成固定比特长的码字的方式、对固定比特长的数据进行编码而生成可变比特长的码字的方式、对可变比特长的数据进行编码而生成固定比特长的码字的方式。以下,将对固定长的数据进行编码而生成固定长的码字的方式称为固定长方式。另外,将对固定比特长的数据进行编码而生成可变比特长的码字的方式、对可变比特长的数据进行编码而生成固定比特长的码字的方式、对可变比特长的数据进行编码而生成可变比特长的码字的方式称为可变长方式。

可变长方式与固定长方式相比,能够使0与1的出现频度之差更大。因此,作为EMC编码器117a进行的编码可以采用可变长方式的编码。

作为可变长方式的编码,能够例示Reverse Huffman编码、Reverse Tunstall编码、Reverse Tunstall Huffman编码等的熵编码。Reverse Huffman编码是成为Huffman编码的相反处理的编码。Reverse Tunstall Huffman编码是成为Tunstall Huffman编码的相反处理的编码。Reverse Tunstall编码是成为Tunstall编码的相反处理的编码。Huffman编码以及Tunstall编码是在数据压缩等中使用的编码。Tunstall Huffman编码是将Tunstall编码得到的结果进一步进行Huffman编码的编码。

另外,作为能够用于错误抑制编码处理的其他编码,能够例示对写入对象的数据进行编码以使得写入到存储单元的数据模式成为抑制单元间干扰的数据模式的单元间干扰抑制编码(ICI(inter-cell interference)-mitigating coding)、对写入对象的数据进行编码以使得向存储单元写入的数据模式成为使存储单元的损耗减少的数据模式的耐久性编码(endurance coding)、能够使向存储单元写入的数据(即码字)内的1与0的比例变化的非对称编码(asymmetric coding)等。

例如,在TLC中,各存储单元被编程为阈值电压彼此不同的8状态中的某一个,但是例如,用于减少被编程为最高阈值电压所对应的状态这样的容易发生错误的状态的存储单元的数量的编码处理也可以被用作错误抑制编码处理。

在数据写入处理中,存储器核控制部12使用EMC编码器117a,能够将应向写入目的地块写入的数据通过错误抑制编码处理进行编码,而且能够执行将通过错误抑制编码处理编码后的数据向写入目的地块的写入目的地页写入的编程动作。

进而,存储器核控制部12也可以使用ECC编码器116a,进一步执行向通过错误抑制编码处理编码后的数据附加ECC的纠错编码处理,执行将通过纠错编码处理得到的数据(通过错误抑制编码处理得到的编码数据+ECC)向写入目的地块的写入目的地页写入的编程动作。

在数据读出处理中,存储器核控制部12,首先,使用ECC解码器116b,对从单元阵列101读出的数据执行纠错解码处理。然后,存储器核控制部12使用EMC解码器117b,执行将错误被纠正了的数据还原为原始数据的错误抑制解码处理。

另外,单元阵列101所保存的数据由于时间经过等,在读出时会发生错误。

因此,尤其在第3实施方式那样在非易失性存储器1内进行数据的复制等情况下,在非易失性存储器1内部使用ECC解码器116b对从单元阵列101读出的数据进行纠错解码处理,对减少所读出的数据所包含的错误数、将进行了纠错后的数据向写入目的地块(复制目的地块)写入这一情况是有效的。

另外,由于写入到非易失性存储器1的单元阵列101的数据的错误的倾向,会根据存储器核11的特性(单元阵列101的特性)预先获知,所以对数据进行操作以使得难以发生这样的错误也是有效果的。该“对数据进行操作以使得难以发生错误”是上述的EMC处理部117的职责。

例如,在图16的复制处理的时序中,在S1601、S1604、或S1609中的从控制器2向非易失性存储器1的处理请求时,控制器2对非易失性存储器1指示使用了ECC处理部116的纠错处理的适用或非适用、使用了EMC处理部117的错误抑制处理的适用或非适用,由此在图16的S1605或S1610中的数据读出时,能够在非易失性存储器1内进行纠错解码处理和错误抑制解码处理中的至少一方,在图16的S1608或S1613中的编程时,能够在非易失性存储器1内进行纠错编码处理和错误抑制编码处理中的至少一方。

另外,在图7A的数据写入处理时序中,在S701、S705、或S709中的从控制器2向非易失性存储器1的处理请求时,指示使用了ECC处理部116的纠错处理的适用或非适用、使用了EMC处理部117的错误抑制处理的适用或非适用,由此在图7A的S708或S712中的编程时,能够在非易失性存储器1内进行纠错编码处理和错误抑制编码处理中的至少一方。

具体而言,存储器核控制部12,在通过控制器2指示了应使ECC解码器116b有效的情况下,使用ECC解码器116b进行对根据来自控制器2的处理请求(例如,读请求、或复制请求)从单元阵列101读出的数据(包含用户数据和ECC的编码数据)的纠错解码处理。

另外,存储器核控制部12,在通过控制器2指示了应使ECC编码器116a有效的情况下,使用ECC编码器116a进行对应向写入目的地块写入的数据附加纠错码的纠错编码处理。而且,存储器核控制部12进行将附加了纠错码的数据、也即是包含数据和ECC的编码数据向写入目的地块的写入目的地页写入的编程动作。

另外,存储器核控制部12在通过控制器2指示了应使EMC解码器117b有效的情况下,使用EMC解码器117b进行:将根据来自控制器2的处理请求(例如,读请求、或复制请求)从单元阵列101读出的、通过错误抑制编码处理编码后的数据还原为原始的数据的错误抑制解码处理。

另外,存储器核控制部12,在通过控制器2指示了应使EMC编码器117a有效的情况下,使用EMC编码器117a,通过错误抑制编码处理对应向写入目的地块写入的数据进行编码。而且,存储器核控制部12进行将通过错误抑制编码处理得到的数据向写入目的地块的写入目的地页写入的编程动作。

进而,存储器核控制部12,在通过控制器2指示了应使ECC解码器116b以及EMC解码器117b这两方有效的情况下,ECC解码器116b进行:对根据来自控制器2的处理请求(例如,读请求、或复制请求)从单元阵列101读出的、包含数据和ECC的编码数据的纠错解码处理,而且,使用EMC解码器117b进行将错误被纠正后的数据还原为原始数据的错误抑制解码处理。

另外,进而,存储器核控制部12,在通过控制器2指示了应使ECC编码器116a以及EMC编码器117a这两方有效的情况下,使用EMC编码器117a,通过错误抑制编码处理对应向写入目的地块写入的数据进行编码,而且使用ECC编码器116a进行对通过错误抑制编码处理编码后的数据附加纠错码的纠错编码处理。而且,存储器核控制部12执行将通过纠错编码处理得到的数据(通过错误抑制编码处理得到的编码数据+ECC)向写入目的地块的写入目的地页写入的编程动作。

此外,例如,在数据写入处理中,在控制器2将使用控制器2内部的ECC部207生成的编码数据(包含用户数据和ECC的编码数据)作为写数据向非易失性存储器1发送的情形中,控制器2也可以指示非易失性存储器1,以使得非易失性存储器1内部的纠错编码处理对写数据非适用,使得非易失性存储器1内的ECC编码器116a无效。而且,在复制处理或读出处理时,控制器2也可以指示非易失性存储器1,以使得非易失性存储器1内部的纠错编码处理对读数据适用,使得非易失性存储器1内的ECC编码器116a有效。在复制处理中,控制器2也可以指示非易失性存储器1,以使得非易失性存储器1内的ECC编码器116a以及ECC解码器116b这两方有效。

图18表示利用了ECC处理部116以及EMC处理部117的数据复制处理的时序。

图18的数据复制处理与用图16说明过的数据复制处理相比,不同之处仅在于,取代图16的S1604、S1605、S1608、S1609、S1610、S1613的处理而执行S1604’、S1605’、S1608’、S1609’、S1610’、S1613’的处理。由于图18的S1601~S1603、S1606~S1607、S1611~S1612的处理与用图16的S1601~S1603、S1606~S1607、S1611~S1612说明过的处理相同,所以省略其说明。

以下,假设在读出时使ECC解码器116b以及EMC解码器117b这两方有效,在写入时使ECC编码器116a以及EMC编码器117a这两方有效的情况。

S1604’:控制器2将指定写入目的地块编号(在此为c)、写入目的地页地址(在此为0)、以及复制源数据的位置信息的复制请求(Copy(c,0,a10,a13,a20,a21))向非易失性存储器1发送,并且对非易失性存储器1指示应使ECC解码器116b以及EMC解码器117b这两方有效。

S1605’:存储器核控制部12读出在由复制请求指定的复制源位置保存着的数据(包含用户数据和ECC的编码数据),使用ECC解码器116b进行对该读出的编码数据的纠错解码处理,而且使用EMC解码器117b进行将错误被纠正后的数据(通过错误抑制编码处理编码后的数据)还原为原始数据的错误抑制解码处理。而且,存储器核控制部12将通过错误抑制解码处理得到的原始数据保存于缓存104。此外,存储器核控制部12也可以将在复制源位置保存着的数据(包含用户数据和ECC的编码数据)读出至缓存104,对该缓存104的数据执行纠错解码处理以及错误抑制解码处理。

S1608’:存储器核控制部12使用EMC编码器117a,通过错误抑制编码处理对缓存104内的数据(执行了纠错解码处理、错误抑制解码处理后的数据)进行编码,而且使用ECC编码器116a进行对通过错误抑制编码处理编码后的数据附加纠错码的纠错编码处理。而且,存储器核控制部12执行将通过纠错编码处理得到的数据(通过错误抑制编码处理得到的编码数据+ECC)向写入目的地块c的写入目的地页0写入的编程动作。

在S1609’、S1610’、S1613’中,也执行与S1604’、S1605’、S1608’同样的处理。

图19表示利用了ECC处理部116以及EMC处理部117的数据写入处理的时序。

图19的数据写入处理,与用图7A说明过的数据写入处理相比,不同之处仅在于,取代图7A的S705、S708、S709、S712的处理,执行S705’、S708’、S709’、S712’的处理。由于图19的S701~S704、S706~S707、S710~S711的处理与用图7A的S701~S704、S706~S707、S710~S711说明过的处理相同,所以省略其说明。

以下,假设在写入时使ECC编码器116a以及EMC编码器117a这两方有效的情况。

S705’:从非易失性存储器1接收到“下一页”的页地址0的控制器2将指定页地址0的编程请求(Write(0,0))和应向具有页地址0的页写入的数据(页0的数据)向非易失性存储器1发送,并且,对非易失性存储器1指示应使ECC编码器116a以及EMC编码器117a这两方有效。

S708’:非易失性存储器1的存储器核控制部12使用EMC编码器117a,通过错误抑制编码处理对页0的数据进行编码,而且使用ECC编码器116a进行对通过错误抑制编码处理编码后的数据附加纠错码的纠错编码处理。而且,存储器核控制部12执行将通过纠错编码处理得到的数据(通过错误抑制编码处理得到的编码数据+ECC)向写入目的地块0的页0写入的编程动作。

S709’:从非易失性存储器1接收到“下一页”的页地址3的控制器2将指定页地址3的编程请求(Write(0,3))和应向具有页地址3的页写入的数据(页3的数据)向非易失性存储器1发送,并且对非易失性存储器1指示应使ECC编码器116a以及EMC编码器117a这两方有效。

S712’:非易失性存储器1的存储器核控制部12使用EMC编码器117a,通过错误抑制编码处理对页3的数据进行编码,而且使用ECC编码器116a进行对通过错误抑制编码处理编码后的数据附加纠错码的纠错编码处理。而且,存储器核控制部12执行将通过纠错编码处理得到的数据(通过错误抑制编码处理得到的编码数据+ECC)向写入目的地块0的页3写入的编程动作。

(第5实施方式)

接着,针对第5实施方式进行说明。

第5实施方式的非易失性存储器1以及控制器2各自的构成与第4实施方式的非易失性存储器1以及控制器2实质相同。但是,第5实施方式的非易失性存储器1也可以未必包含ECC处理部116和EMC处理部117这两方,也可以具有包含ECC处理部116而不包含EMC处理部117的构成。

在第5实施方式中,非易失性存储器1进行调查由控制器2指定的块所保存着的数据的错误比特数的处理。

图20表示通过控制器2和非易失性存储器1执行的错误比特数检查处理的步骤。

控制器2,首先,对非易失性存储器1指定块地址,向非易失性存储器1请求该块所保存着的数据的错误比特数的检查(步骤S2001)。

在步骤S2001中,例如,控制器2也可以将指定向全部页写入有数据的块内的一个块的块地址(例如块地址1)的块检查请求(Block check(1))向非易失性存储器1发送。Block check(1)是用于向控制器2指示应检查特定的块所保存着的数据的错误比特数这一情况的处理请求。Block check(1)的(1)表示块地址1。

在非易失性存储器1接收到该块检查请求(Block check(1))的情况下,非易失性存储器1的存储器核控制部12使用非易失性存储器1内的ECC解码器116b,调查具有块地址1的块1所保存着的数据所包含的错误比特数(步骤S2002)。

在步骤S2002中,存储器核控制部12从块1中读出数据,使用ECC解码器116b,对所读出的数据进行纠错解码处理,由此调查该数据所包含的错误比特数。在此,该数据的错误比特数是该数据被纠正前的错误比特的数。

在纠错解码处理中,也有可能无法纠错。其原因在于,能够通过ECC解码器116b纠正的最大错误比特数固定于某上限值。

读出块内的哪个页检查错误比特数、怎样读出,纠错处理的方式等可以由非易失性存储器1决定,也可以预先由控制器2对非易失性存储器1设定。例如,在预先获知各块内的容易蓄积错误的页、或各块内的容易蓄积错误的字线的情况下,可以从该页读出数据,或者也可以从该字线所对应的几个页分别读出数据。

而且,存储器核控制部12基于纠错解码处理的结果,进行错误比特数是否在容许范围内等的检查结果判定(步骤S2003),将与错误比特数相关的检查结果返回至控制器2(步骤S2004)。

在步骤S2004中,存储器核控制部12也可以将表示块1所保存着的数据的纠错的成功(pass)或失败(fail)的检查结果通知给控制器2(Notify check result(pass/fail))。或者,存储器核控制部12也可以将表示块1所保存着的数据的错误比特数是否为阈值以上的检查结果通知给控制器2。

或者,在从块0的几个页分别读出了数据的情况下,存储器核控制部12对从某页读出的第1数据进行纠错解码处理,由此调查该第1数据所包含的错误比特数。进而,存储器核控制部12对从其他页读出的第2数据进行纠错解码处理,由此调查该第2数据所包含的错误比特数。而且,存储器核控制部12将检查出的这些错误比特数中、最多的错误比特数作为检查结果通知给控制器2通知。

这样一来,能够在非易失性存储器1内检查非易失性存储器1所保存着的数据的错误比特数是怎样的,除了能够减少非易失性存储器1与控制器2之间的通信次数,还能够通过削减通信数据量来实现消耗电力的削减。

此外,由于控制器2能够基于从非易失性存储器1通知的检查结果确定错误比特数比较多的块,所以控制器2也可以向非易失性存储器1发送将该确定出的块内的数据复制到其他块的请求。

(第6实施方式)

接着,针对第6实施方式进行说明。

第6实施方式的非易失性存储器1以及控制器2各自的构成与第4实施方式的非易失性存储器1以及控制器2实质相同。但是,第6实施方式的非易失性存储器1也可以未必包含ECC处理部116和EMC处理部117这两方,也可以具有包含ECC处理部116、不包含EMC处理部117的构成。

在第6实施方式中,控制器2请求非易失性存储器1设定从单元阵列101中读出数据时的最佳读出电压电平(也作为最佳读出电平而被参照)。也就是说,控制器2向非易失性存储器1发送指示在从单元阵列101读出数据中使用的读出电压电平的调整的处理请求。

在非易失性存储器1接收到该处理请求的情况下,非易失性存储器1的存储器核控制部12一边变更向某字线(读出对象字线)施加的读出电压电平,一边反复进行从与该字线连接的多个存储单元读出数据的动作、和使用非易失性存储器1内的ECC解码器116b调查所读出的数据的错误比特数的动作,由此,将错误比特数最小的新的读出电压电平决定为最佳读出电压电平。

最佳读出电压电平的调整也可以按块进行。该情况下,控制器2也可以对非易失性存储器1指定应调整最佳读出电压电平的块的块地址。由此,能够在非易失性存储器1内决定每块的最佳读出电压电平。

以下,参照图21~图22,对调整在从单元阵列101读出数据中使用的读出电压电平的处理进行说明。

以下,例示TLC来说明读出电压电平调整处理,但是本实施方式的读出电压电平调整处理也可以适用于SLC、MLC或QLC。

图21表示刚刚进行了编程之后的存储单元的阈值电压分布与7个读出电压电平的关系。

在TLC中,3比特的数据被写入了的各存储单元被设定为8个状态(一个状态、以及7个编程状态)中的某一个。这8个状态作为“ER”状态、“A”状态、“B”状态、“C”状态、“D”状态、“E”状态、“F”状态、“G”状态而被参照。这些“ER”、“A”、“B”、“C”、“D”、“E”、“F”、“G”状态具有彼此不同的阈值电压电平。阈值电压电平按“ER”、“A”、“B”、“C”、“D”、“E”、“F”、“G”状态的顺序而变高。

用于从单元阵列101读出数据的读出电压电平例如被设定为相邻的2个的阈值电压分布的交叉部。

即,在数据读出处理中,用于将“ER”、“A”、“B”、“C”、“D”、“E”、“F”、“G”状态彼此分离的7个阈值电压Vth0、Vth1、Vth2、Vth3、Vth4、Vth5、Vth6中的某一个被用作读出电压电平。读出电压电平是向连接有读对象的存储单元的集合的字线(读出对象字线)施加的电压。

Vth0是“ER”状态所对应的阈值电压分布与“A”状态所对应的阈值电压分布的交点所对应的电压。Vth1被设定为“A”状态所对应的阈值电压分布与“B”状态所对应的阈值电压分布的交叉部所对应的电压。Vth2被设定为“B”状态所对应的阈值电压分布与“C”状态所对应的阈值电压分布的交叉部所对应的电压。Vth3被设定为“C”状态所对应的阈值电压分布与“D”状态所对应的阈值电压分布的交叉部所对应的电压。Vth4被设定为“D”状态所对应的阈值电压分布与“E”状态所对应的阈值电压分布的交叉部所对应的电压。Vth5被设定为“E”状态所对应的阈值电压分布与“F”状态所对应的阈值电压分布的交叉部所对应的电压。Vth6被设定为“F”状态所对应的阈值电压分布与“G”状态所对应的阈值电压分布的交叉部所对应的电压。

图22表示从对各存储单元进行编程开始经过了某时间时的各存储单元的阈值电压分布。

在图22中,刚刚进行编程后的阈值电压分布由单点划线表示,当前的阈值电压分布由实线表示。从编程开始经过了时间时的各存储单元的阈值电压分布被转换为比刚刚进行编程后的阈值电压分布低的电压。因此,刚刚进行编程后的阈值电压Vth0、Vth1、Vth2、Vth3、Vth4、Vth5、Vth6作为读出电压电平并不是最佳的。

此外,在编程/擦除循环数增加了的块中,在刚刚进行编程之后,各存储单元的阈值分压分布也有时被设定为由图22的实线表示那样低的值。

图23示出了图22的转换后的阈值分压分布所对应的最佳读出电压电平的例子。

在本实施方式中,在非易失性存储器1内部决定对转换后的阈值分压分布来说适当的读出电压电平。在此,阈值电压Vth0’、Vth1’、Vth2’、Vth3’、Vth4’、Vth5’、Vth6’表示最佳读出电压电平。

对某块的阈值电压Vth0’、Vth1’、Vth2’、Vth3’、Vth4’、Vth5’、Vth6’例如可以基于该块的编程/擦除循环数决定,也可以基于对该块进行编程开始的经过时间而决定。

或者,例如,也可以从预先决定的几个阈值电压候选之中选择最佳的阈值电压来作为最佳读出电压电平。

该情况下,也可以从编程/擦除循环数(或从编程开始的经过时间)所对应的几个阈值电压集(set)(TLC的情况下,各阈值电压集包含6个阈值电压候选)中选择最佳的阈值电压集。

图24表示决定最佳读出电平的处理。

在步骤S3401中,控制器2将用于设定最佳读出电压电平的处理请求向非易失性存储器1发送(Set optimal read level(1))。Set optimal read level(1)的(1)表示应设定最佳读出电压电平的块的块地址。

接收到该处理请求的非易失性存储器1的存储器核控制部12一边变更向属于具有块地址1的块1的字线之中的读出对象字线施加的读出电压电平,一边反复进行从与该读出对象字线连接的多个存储单元读出数据的动作、和使用非易失性存储器1的ECC解码器116b调查所读出的数据的错误比特数的动作(步骤S2402)。由此,存储器核控制部12将错误比特数最小的新的读出电压电平决定为用于从块1读出数据的最佳读出电压电平。

而且,存储器核控制部12将所决定的最佳读出电压电平记录于非易失性存储器1内的寄存器或单元阵列101(步骤S2403),将最佳化处理已完成这一情况向控制器2通知(步骤S2404)。

这样一来,控制器2无需知道非易失性存储器1是怎样构成的就能够将读出电压电平调整为使得非易失性存储器1的数据保持能力成为最大。

(第7实施方式)

在第7实施方式中,非易失性存储器1具备多个存储器核11,非易失性存储器1能够使所述多个存储器核11独立地工作。

图25表示第7实施方式的非易失性存储器1的构成。

如图25所示,第7实施方式的非易失性存储器1包含能够彼此独立地工作的存储器核11a、11b、11c。这些存储器核11a、11b、11c分别具有与用图3A说明过的存储器核11相同的构造,包含具有多个块的单元阵列。

进而,该非易失性存储器1包含存储器核控制部12a、12b、12c。存储器核控制部12a、12b、12c分别与存储器核11a、11b、11c连接。

存储器核控制部12a作为构成为对向存储器核11a内的单元阵列的数据的写入以及从存储器核11a内的单元阵列的数据的读出进行控制的存储器核控制电路而工作。

存储器核控制部12a与存储器核11a的对能够执行与用图3A说明过的存储器核11与存储器核控制部12的对相同的动作。也就是说,存储器核控制部12a具有与用第1实施方式~第6实施方式说明过的存储器核控制部12同样的构成以及能力。存储器核控制部12a与存储器核11a的对可以通过1个芯片(裸片:die)实现。

存储器核控制部12b作为构成为对向存储器核11b内的单元阵列的数据的写入以及从存储器核11b内的单元阵列的数据的读出进行控制的存储器核控制电路而工作。

存储器核控制部12b与存储器核11b的对也能够执行与用图3A说明过的存储器核11与存储器核控制部12的对相同的动作。也就是说,存储器核控制部12b具有与在第1实施方式~第6实施方式中说明过的存储器核控制部12同样的构成以及能力。存储器核控制部12b与存储器核11b的对也可以通过1个芯片(裸片)实现。

存储器核控制部12c作为构成为对向存储器核11c内的单元阵列的数据的写入以及从存储器核11c内的单元阵列的数据的读出进行控制的存储器核控制电路而工作。

存储器核控制部12c与存储器核11c的对也能够执行与用图3A说明过的存储器核11与存储器核控制部12的对相同的动作。也就是说,存储器核控制部12c具有与在第1实施方式~第6实施方式中说明过的存储器核控制部12同样的构成以及能力。存储器核控制部12b与存储器核11b的对也可以通过1个芯片(裸片)实现。

存储器核控制部12a、12b、12c经由非易失性存储器1内所包含的输入输出部13执行与控制器2的通信。存储器控制器通信线也可以包含3个芯片有效信号CE0n-CE2n、写有效信号WEn、读有效信号REn、命令锁存有效信号CLE、地址锁存有效信号ALE、写保护信号WPn、写有效信号WEn、I/O信号<7:0>、3个就绪/忙信号RB0n-RB2n。

在第7实施方式的非易失性存储器1中,存储器核控制部12a与存储器核11a的对、存储器核控制部12b与存储器核11b的对、以及存储器核控制部12c与存储器核11c的对能够彼此独立地工作。因此,这些对能够并行执行在第1实施方式~第6实施方式中说明过的工作,由此能够充分提高存储器系统的写入以及读出性能等。

此外,在第1实施方式~第7实施方式中,作为非易失性存储器例示了NAND型闪速存储器。但是,本各实施方式的功能例如也能够适用于MRAM(Magnetoresistive RandomAccess Memory:磁阻式随机存取存储器)、PRAM(Phase Change Random Access Memory:相变随机存储器)、ReRAM(Resistive Rando Access Memory:阻变存储器)、或FeRAM(Ferroelectric Random Access Memory:铁电随机存取存储器)这样的其他各种非易失性存储器。

对本发明的几个实施方式进行了说明,但是这些实施方式是作为例子而提示的内容,并非意在限定发明的范围。这些新的实施方式能够以其他各种方式实施,在不脱离发明的要旨的范围内能够进行各种省略、替换、变更。这些实施方式及其变形包含在发明的范围和要旨中,并且包含在与权利要求所记载的发明均等的范围中。

55页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:存储器系统及其操作方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!