存储器系统以及存储器系统的控制方法与流程
未命名
09-24
阅读:64
评论:0
存储器系统以及存储器系统的控制方法1.关联申请2.本技术要求以日本专利申请2022-041509号(申请日:2022年3月16日)为基础申请的优先权。本技术通过参照该基础申请而包含基础申请的全部内容。
技术领域:
:3.本发明的实施方式涉及控制非易失性存储器的存储器系统以及存储器系统的控制方法。
背景技术:
::4.近年来,具备非易失性存储器的存储器系统被广泛普及。作为这种存储器系统之一,已知有具备nand型闪存的固态驱动器(ssd)。5.在ssd那样的存储器系统中,存在使用用于应对非预期的断电的断电保护功能(有时也称作plp功能)的情况。6.断电保护功能是使用电容器中积蓄的电力,将缓存器中储存的写入未完成数据写入非易失性存储器的功能。7.然而,能够使用电容器中积蓄的电力向非易失性存储器中写入的数据量被限制为某一上限值。因此,在写入未完成数据的量多的情况下,存在写入未完成数据的一部分丢失的情况。技术实现要素:8.本发明的一实施方式所要解决的课题在于提供能够确定哪一数据丢失的存储器系统以及存储器系统的控制方法。9.根据实施方式,能够与主机连接的存储器系统具备包含多个区块的非易失性存储器以及控制器,该控制器响应于从所述主机接收到指定逻辑地址的写入命令,将从所述主机接收的数据写入从所述多个区块分配的第一写入目标块。所述控制器管理第一列表以及第一存储位置信息,该第一列表包含与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址,该第一存储位置信息表示所述第一写入目标块中的、数据的写入未完成的写入未完成区域的开头的存储位置示。所述控制器在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自积蓄向所述存储器系统供给的电力的电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。附图说明10.图1是表示包含实施方式的存储器系统的信息处理系统的构成例的框图。11.图2是表示实施方式的存储器系统所含的nand型闪存裸片的构成例的框图。12.图3是表示实施方式的存储器系统所含的nand型闪存的区块的构成例的图。13.图4是表示在实施方式的存储器系统中使用的、多个信道与多个nand型闪存裸片的关系的例子的框图。14.图5是表示在实施方式的存储器系统中使用的超级块的构成例、以及超级块所含的多个存储位置各自与多个偏移各自之间的关系的例子的图。15.图6是表示在实施方式的存储器系统中执行的、对写入目标块进行的写入动作与断电保护(plp)动作的例子的图。16.图7是表示在实施方式的存储器系统中管理的、写入目标块与逻辑地址(lba列表)的关系的例子的图。17.图8是表示在实施方式的存储器系统中管理的、写入目标块与lba列表的关系的另一例的图。18.图9是表示在实施方式的存储器系统中用于保持lba列表的环形缓存器的构成例的图。19.图10是表示在实施方式的存储器系统中执行的数据写入动作的步骤的流程图。20.图11是表示在实施方式的存储器系统中执行的plp动作的步骤的流程图。21.图12是表示在实施方式的存储器系统中执行的lba通知动作的步骤的流程图。22.图13是表示在实施方式的存储器系统中执行的数据读出动作的步骤的流程图。23.附图标记说明[0024]1…信息处理系统,2…主机,3…存储器系统,4…总线,5…控制器,6…非易失性存储器,7…dram,8…电源电路,21…处理器,22…存储器,50…内部总线,51…主机接口,52…cpu,53…sram,54…dmac,55…ecc电路,56…dram接口,57…nand接口,71…l2p表,72…区块管理表,81…电容器,531…内部缓存器具体实施方式[0025]以下,参照附图对实施方式进行说明。[0026]图1是表示包含实施方式的存储器系统3的信息处理系统1的构成例的框图。实施方式的存储器系统3是包含非易失性存储器6的存储设备。[0027]信息处理系统1包含主机(主机设备)2、以及存储器系统3。主机2与存储器系统3能够经由总线4连接。[0028]主机2为信息处理装置。主机2例如为个人计算机、或者服务器计算机。主机2访问存储器系统3。具体而言,主机2向存储器系统3发送用于写入数据的命令即写入命令。此外,主机2向存储器系统3发送用于读出数据的命令即读取命令。[0029]存储器系统3为半导体存储设备。存储器系统3例如为固态驱动器(ssd)。存储器系统3包含非易失性存储器6。存储器系统3向非易失性存储器6写入数据。而且,存储器系统3从非易失性存储器6读出数据。[0030]总线4例如为基于pciexpresstm(pcietm)标准的总线。总线4是连接主机2与存储器系统3的传输路。总线4用于从主机2向存储器系统3的数据以及输入输出(i/o)命令的发送、和从存储器系统3向主机2的数据以及响应的发送。i/o命令是用于对非易失性存储器6进行数据的写入或者读出的命令。i/o命令包含写入命令以及读取命令。[0031]接下来,对主机2的内部构成进行说明。主机2包含处理器21、以及存储器22。[0032]处理器21例如为cpu(centralpprocessingunit)。处理器21经由总线4进行与存储器系统3的通信。处理器21执行从存储器系统3、或者与主机2连接的其他存储设备加载到存储器22中的软件(主机软件)。主机软件包含操作系统、文件系统、设备驱动程序、或者应用程序。[0033]存储器22例如为易失性的存储器。存储器22例如是动态随机存取存储器(dram)。[0034]接下来,对存储器系统3的内部构成进行说明。存储器系统3包含控制器5、以及非易失性存储器6。非易失性存储器6的一例为nand型闪存。以下,将非易失性存储器6称作nand存储器6。[0035]控制器5为存储器控制器。控制器5例如为soc(system-on-a-chip(soc)系统单芯片)那样的半导体设备。控制器5与nand存储器6电连接。控制器5执行对nand存储器6进行的数据的写入以及读出。此外,控制器5经由总线4执行与主机2的通信。作为连接控制器5与nand存储器6的物理接口,例如使用togglenand闪存接口、或者开放nand闪存接口(onfi)。控制器5的各部的功能能够通过专用硬件、执行程序的处理器、或者其组合而实现。[0036]nand存储器6例如为二维构造的闪存、或者三维构造的闪存。nand存储器6包含多个区块。各区块为nand存储器6中存储的数据的消除的最小单位、换句话说是数据消除动作的单位。[0037]存储器系统3除了控制器5、非易失性存储器6之外,还可以包含动态随机存取存储器(dram)7。dram7为易失性的存储器。dram7的存储区域的一部分例如也可以用作暂时地保持从主机2接收的写入数据、或者从nand存储器6读出的读取数据的内部缓存器73。[0038]存储器系统3还包含电源电路8。电源电路8为电源控制电路。电源电路8例如对控制器5、nand存储器6、dram7等存储器系统3的各构成要素供给从主机2供给的电力。[0039]接下来,对控制器5的内部结构进行说明。控制器5包含主机接口(主机i/f)51、cpu52、静态ram(sram)53、直接存储器存取控制器(dmac)54、ecc(errorcheckingandcorrection:误差校正)电路55、dram接口(drami/f)56、以及nand接口(nandi/f)57。这些控制器5内的各部经由内部总线50相互连接。对该内部总线50也供给来自电源电路8的电力。[0040]主机接口51为硬件接口电路。主机接口51执行与主机2的通信。主机接口51例如从主机2接收i/o命令。此外,主机接口51向主机2发送对所接收到的i/o命令的响应。[0041]cpu52为处理器。cpu52控制主机接口51、sram53、dmac54、ecc电路55、dram接口56、以及nand接口57。cpu52将nand存储器6或者未图示的rom中储存的控制程序(固件)加载到sram53中,而且通过执行该固件来进行各种处理。另外,固件也可以加载到dram7中。[0042]cpu52例如作为闪存转换层(ftl),执行存储于nand存储器6中的数据的管理以及nand存储器6所含的区块的管理。存储于nand存储器6中的数据的管理例如包含表示各个逻辑地址与各个物理地址之间的对应关系的映射信息的管理。逻辑地址是为了访问nand存储器6而由主机2使用的地址。逻辑地址例如为lba(logicalblockaddress:逻辑区块地址)。物理地址是表示nand存储器6所含的物理性的存储位置的地址。cpu52使用逻辑物理地址转换表(logical-to-physicaltranslationtable:l2p表)71,管理各个逻辑地址与各个物理地址之间的映射。此外,nand存储器6所含的区块的管理例如包含垃圾回收、不良区块(坏块)的管理、以及磨损均衡(wearleveling)。cpu52使用区块管理表72,执行nand存储器6所含的区块的管理。[0043]sram53为易失性的存储器。sram53例如用作cpu52的作业区域。此外,sram53包含内部缓存器531。内部缓存器531是暂时地保持与从主机2接收的写入命令相关联的数据的存储区域。[0044]dmac54是执行直接存储器访问(dma)的电路。dmac54执行主机2的存储器22与dram7或者sram53之间的数据传输。[0045]ecc电路55是执行数据的编码、以及数据的解码的电路。ecc电路55在向nand存储器6写入数据时,执行编码处理。在编码处理中,ecc电路55将ecc奇偶校验作为冗余码附加到要写入的数据中。ecc电路55使用从nand存储器6读出的数据中所附加的ecc奇偶校验,执行解码处理。在解码处理中,ecc电路55校正所读出的数据的错误。[0046]dram接口56是控制dram7的电路。dram接口56向dram7中储存数据。此外,dram接口56读出dram7中储存的数据。[0047]nand接口57是控制nand存储器6的电路。nand接口57例如包含nand控制器571-0、571-1、571-2、…、571-31。各个nand控制器571-0、571-1、571-2、…、571-31经由一个以上的信道ch0、ch1、ch2、…、ch31中的对应的一个信道,与nand存储器6所含的一个以上的闪存裸片连接。闪存裸片也称作闪存芯片。nand控制器571-0、571-1、571-2、…、571-31例如分别控制nand存储器6所含的闪存裸片(#0)61-0、闪存裸片(#1)61-1、…、闪存裸片(#31)61-31。[0048]接下来,对dram7中储存的信息进行说明。dram7中储存的信息包含l2p表71、以及区块管理表72。l2p表71、以及区块管理表72的一部分或者全部也可以储存于sram53中,而非dram7。[0049]l2p表71通过扇区那样的规定的大小单位来管理各个逻辑地址与各个物理地址之间的映射。[0050]区块管理表72管理nand存储器6所含的各区块。区块管理表72例如对各区块是否能够利用进行管理。此外,区块管理表72也可以对各区块是否为断电保护动作的对象进行管理。[0051]存储器系统3还包含电容器81。电容器81是能够积蓄电力的元件。电容器81电连接于电源电路8。电源电路8在从主机2供给的电源电压的值无来自主机2的预告而降低的情况下,向存储器系统3的各构成要素供给在电容器81中积蓄的电力。在电容器81中积蓄的电力例如能够用于控制器5执行lba列表保存动作。[0052]接下来,对由控制器5执行的lba列表保存动作进行说明。lba列表保存动作为了能够确定由于非预期的断电而丢失的数据而执行。非预期的断电是无来自主机2的预告(电源切断预告通知)而切断向存储器系统3供电的现象。电源切断预告通知是预告向存储器系统3的供电被断开的通知。在主机2的电源关闭之前,主机2向存储器系统3发送电源切断预告通知,通知存储器系统3即将断开向存储器系统3的供电。电源切断预告通知例如为由nvme标准规定的shutdownnotification(关机通知)、或者由sata标准规定的standbyimmediate(立即待机)命令。[0053]控制器5从主机2接收用于向nand存储器6写入数据的写入命令。写入命令对开始逻辑地址(开始lba)、数据大小以及数据指针等进行指定。开始lba表示与写入命令相关联的写入数据应当被写入的逻辑地址,换句话说是写入数据应当被写入的最初的逻辑区块。数据大小表示写入数据的大小。数据大小例如由lba的数量表示。数据指针是表示储存有写入数据的主机2的存储器22上的位置的缓存地址。写入命令也可以包含指定写入目标的区域的标识符。对写入目标的区域进行指定的标识符例如也可以是指定由分区命名空间(zonednamespace)标准规定的区域的逻辑地址、识别命名空间的命名空间标识符、或者识别流的流标识符。[0054]控制器5与从主机2接收到指定lba(开始lba)的写入命令相应地,执行对nand存储器6的数据写入动作。在数据写入动作中,控制器5将从主机2接收到的写入数据,写入到从nand存储器6所含的多个区块中分配的写入目标块。即,控制器5选择nand存储器6所含的多个区块中的区块,而且,控制器5将所选择的区块分配为写入目标块。写入目标块是数据应当被写入的区块。写入目标块例如为超级块。或者写入目标块也可以为物理区块。控制器5也可以被同时分配与不同的多个区域分别对应的多个写入目标块。以下,着眼于一个写入目标块,对lba列表保存动作进行说明。[0055]控制器5管理与写入目标块对应的lba列表。lba列表是包含与从主机2接收完成、且未完成向写入目标块的写入的写入未完成数据分别对应的多个lba的列表。向写入目标块的数据的写入从写入目标块的开头向末端执行。因此,写入正在进行的写入目标块包含写入完成区域、写入未完成区域、以及数据未受领区域。写入完成区域是从主机完成接收写入的数据,并且向写入目标块的数据的写入已完成的区域。写入完成区域中存储的数据是能够读出的数据。写入未完成区域是从主机2完成接收写入的数据,并且向写入目标块的数据的写入未完成的区域(写入未完成数据原本应当被写入的区域)。如果,写入的数据完成接收、并且向写入目标块的写入已完成的数据不存在,则从主机2指定的、与写入数据的写入目标对应的全部区域成为写入未完成区域。数据未受领区域是尚未从主机2接收应当写入的数据,但在接收到的情况下则写入此处的区域。另外,从主机2的数据的接收也称作从主机2的数据的受领。此外,将尚未从主机2接收数据称作数据的未受领或者数据的未接收,将已从主机2接收到数据称作数据的接收完成或者数据的受领完成。[0056]在无来自主机2的预告而发生断电的情况下,换句话说是发生非预期的断电的情况下,丢失的数据是与写入未完成区域对应的数据。因此,控制器5使用lba列表对多个lba进行管理,该多个lba与预定向写入未完成区域写入的数据即写入未完成数据分别对应。具体而言,lba列表包含下述剩余的lba的集合,该剩余的lba的集合是从与从主机2接收完成、且向写入目标块写入的数据分别对应的lba的集合中,除去与向写入目标块的写入完成而能够从写入目标块读出的数据分别对应的lba的集合而得到的集合。这里,从主机2接收完成且向写入目标块写入的数据包含从主机2接收完成且向写入目标块的写入已完成的写入完成数据、以及从主机2接收完成且向写入目标块的写入未完成的写入未完成数据。[0057]而且,控制器5管理表示写入未完成区域的开头的存储位置的位置信息。位置信息由写入目标块的区块地址、以及写入目标块中的偏移来表示。偏移是表示写入未完成区域的开头的存储位置相对于写入目标块的开头的存储位置的偏移。[0058]在发生非预期的断电的情况下,控制器5使用来自电容器81的电力,将lba列表而非写入未完成数据写入nand存储器6。具体而言,控制器5使用来自电容器81的电力,将lba列表、以及表示写入未完成区域的开头的存储位置的位置信息写入nand存储器6。[0059]如此,通过向nand存储器6写入lba列表,从而能够明确地确定由于非预期的断电而丢失的数据。lba列表的大小与写入未完成数据的大小相比足够小。因而,能够在能够使用电容器81的电力的有限的时间内向nand存储器6写入lba列表。[0060]此外,通过向nand存储器6写入表示写入未完成区域的开头的存储位置的位置信息,从而能够确定由于非预期的断电而写入被中断的存储位置。[0061]在针对存储器系统3的电力恢复之后,控制器5能够使用所保存的lba列表与位置信息,执行恢复处理。例如控制器5也可以执行向主机2报告与丢失的数据对应的lba的处理。此外,控制器5也可以执行将写入被中断的存储位置设定为错误位置的处理。[0062]接下来,对nand存储器6所含的闪存裸片61的构成例进行说明。图2是表示第一实施方式的存储器系统3所含的nand存储器6的闪存裸片61的构成例的框图。[0063]这里,着眼于闪存裸片(#0)61-0来对闪存裸片61的结构进行说明。其他闪存裸片也具有与闪存裸片(#0)61-0相同的结构。闪存裸片(#0)61-0包含周边电路611-0、以及存储单元阵列612-0。[0064]周边电路611-0是控制存储单元阵列612-0的电路。周边电路611-0例如包含行解码器、列解码器、读出放大器、锁存电路以及电压产生电路。周边电路611-0与从nand控制器571-0接收到地址以及命令相应地,对存储单元阵列612-0执行编程动作、读取动作、或者擦除动作。[0065]存储单元阵列612-0包含多个平面(plane)。具有多个平面的结构被称作多平面结构。存储单元阵列612-0能够使多个平面(这里为plane#0、以及plane#1)并列动作。[0066]存储单元阵列612-0的平面包含多个区块(blk0、blk1、blk2、…)。区块blk是非易失性存储单元晶体管(之后,仅称作存储单元晶体管或者存储单元)的集合。各区块包含多个串单元(stringunit)(su0、su1、su2、su3)。各串单元su是存储单元晶体管的集合。各串单元su包含多个nand串ns(也仅称作串)。各nand串ns是存储单元晶体管的集合。[0067]在图2中,说明了在各区块中包含四个串单元su0、su1、su2、su3的情况。但各区块中包含的串单元su的数量既可以是三个以下,也可以是五个以上。另外,也可以使用各区块仅包含一个串单元su的结构。即,各区块包含一个以上的串单元su。[0068]接下来,对区块的构成例进行说明。图3是表示实施方式的存储器系统3所含的nand存储器6的区块的构成例的图。[0069]在图3中,着眼于区块blk0对区块的结构进行说明。其他区块也具有与区块blk0相同的结构。区块blk0包含四个串单元(su0、su1、su2、su3)。四个串单元(su0、su1、su2、su3)沿与多个字线wl0~wl7层叠的方向(垂直方向)正交的方向(水平方向)配置。各串单元su包含多个nand串ns。各nand串ns的一端连接于多个位线(bl0~bl(l-1))中的对应的位线。各nand串ns沿垂直方向延伸。各nand串ns所含的多个存储单元晶体管的控制栅极分别连接于多个字线(wl0、wl1、…、wl7)。[0070]接下来,对多个信道与多个闪存裸片61的关系进行说明。图4是表示在实施方式的存储器系统3中使用的、多个信道ch.0、ch.1、…、ch.31与多个闪存裸片61(61-0、61-1、…、61-31)的关系的例子的图。[0071]在图4中,32个闪存裸片61分别具有包含2个平面(plane#0、plane#1)的多平面结构。各平面包含多个区块blk0~blkx-1。区块blk0~blkx-1各自包含多个字线。每一个字线连接于与四个串单元(su0、su1、su2、su3)对应的四个存储单元组。各个区块blk0~blkx-1是消除数据的数据消除动作的单位。区块blk0~blkx-1分别也称作物理区块、物理存储器区块、消除区块、或者闪存区块。[0072]32个闪存裸片61各自能够并列动作。而且,在各个闪存裸片61中,两个平面各自能够并列动作。[0073]为了并列执行对多个物理区块的数据写入动作,由控制器5管理多个区块组。区块组由能够进行并列动作的多个物理区块构成。以下,将区块组称作超级块。[0074]接下来,对超级块的构成例进行说明。图5是表示实施方式的存储器系统3中的超级块的构成例、与超级块所含的多个存储位置各自与多个偏移各自之间的关系的例子的图。[0075]这里,设想任意的闪存裸片61所含的平面#0(plane#0)的区块blk0、以及平面#1(plane#1)的区块blk0构建超级块sb0的情况。[0076]各区块包含四个串单元(su0、su1、su2、以及su3)。而且,各串单元连接于多个字线(wl0、wl1、…)。[0077]在通过每个存储单元中存储4位数据的四层式存储单元(qlc)模式将数据写入超级块sb0的情况下,向连接于一个字线并且包含于一个串单元的存储单元组中,写入与四个页(lower(下页)、middle(中间页)、upper(上页)以及higher(更高页))对应的数据。一个页的大小例如为16kb。一个页包含多个扇区。例如,在一个扇区的大小为4kb的情况下,一个页包含四个扇区。因此,连接于一个字线并且包含于一个串单元的存储单元组,包含与16个扇区对应的16个存储位置。[0078]以下,将连接于字线wln且包含于串单元sum的存储单元组(以下称作mg)表示为mg(wln,sum)。[0079]表示超级块sb0的某存储位置x的物理地址,由超级块sb0的区块地址、超级块sb0的存储位置x相对于开头的存储位置的偏移来表示。偏移由扇区的倍数表示。[0080]各存储位置的偏移基于对各扇区写入数据的顺序来设定。[0081]控制器5首先执行针对平面#0的区块blk0的mg(wl0、su0)的四页(lower、middle、upper以及higher)量的数据的写入、以及针对平面#1的区块blk0的mg(wl0、su0)的四页(lower、middle、upper以及higher)量的数据的写入。平面#0的区块blk0的mg(wl0、su0)与平面#1的区块blk0的mg(wl0、su0)包含共计32个存储位置(=4扇区×qlc(四页)×2平面)。因此,对平面#0的区块blk0的mg(wl0、su0)与平面#1的区块blk0的mg(wl0、su0)设定共计32个偏移(+0~+31)。例如,在平面#0的区块blk0的mg(wl0、su0)中,对lower页的4扇区能够设定偏移(+0~+3),对middle页的4扇区能够设定偏移(+4~+7),对upper页的4扇区能够设定偏移(+8~+11),对higher页的4扇区能够设定偏移(+12~+15)。此外,在平面#1的区块blk0的mg(wl0、su0)中,对lower页的4扇区能够设定偏移(+16~+19),对middle页的4扇区能够设定偏移(+20~+23),对upper页的4扇区能够设定偏移(+24~+27),对higher页的4扇区能够设定偏移(+28~+31)。[0082]接下来,控制器5执行针对平面#0的区块blk0的mg(wl0、su1)的四页量的数据的写入、以及针对平面#1的区块blk0的mg(wl0、su1)的四页量的数据的写入。因此,对平面#0的区块blk0的mg(wl0、su1)与平面#1的区块blk0的mg(wl0、su0)设定共计32个偏移(+32~+63)。例如,在平面#0的区块blk0的mg(wl0、su1)中,对lower页的4扇区能够设定偏移(+32~+35),对middle页的4扇区能够设定偏移(+36~+39),对upper页的4扇区能够设定偏移(+40~+43),对higher页的4扇区能够设定偏移(+44~+47)。此外,在平面#1的区块blk0的mg(wl0、su1)中,对lower页的4扇区能够设定偏移(+48~+51),对middle页的4扇区能够设定偏移(+52~+55),对upper页的4扇区能够设定偏移(+56~+59),对higher页的4扇区能够设定偏移(+60~+69)。[0083]接下来,控制器5执行针对平面#0的区块blk0的mg(wl0、su2)的四页量的数据的写入、以及针对平面#1的区块blk0的mg(wl0、su2)的四页量的数据的写入。因此,对平面#0的区块blk0的mg(wl0、su2)与平面#1的区块blk0的mg(wl0、su2)设定共计32个偏移(+64~+95)。例如,在平面#0的区块blk0的mg(wl0、su2)中,对lower页的4扇区能够设定偏移(+64~+67),对middle页的4扇区能够设定偏移(+68~+71),对upper页的4扇区能够设定偏移(+72~+75),对higher页的4扇区能够设定偏移(+76~+79)。此外,在平面#1的区块blk0的mg(wl0、su2)中,对lower页的4扇区能够设定偏移(+80~+83),对middle页的4扇区能够设定偏移(+84~+87),对upper页的4扇区能够设定偏移(+88~+91),对higher页的4扇区能够设定偏移(+92~+95)。[0084]接下来,控制器5执行针对平面#0的区块blk0的mg(wl0、su3)的四页量的数据的写入、以及针对平面#1的区块blk0的mg(wl0、su3)的四页量的数据的写入。因此,对平面#0的区块blk0的mg(wl0、su3)与平面#1的区块blk0的mg(wl0、su3)设定共计32个偏移(+96~+127)。例如在平面#0的区块blk0的mg(wl0、su3)中,对lower页的4扇区能够设定偏移(+96~+99),对middle页的4扇区能够设定偏移(+100~+71),对upper页的4扇区能够设定偏移(+72~+103),对higher页的4扇区能够设定偏移(+104~+107)。此外,在平面#1的区块blk0的mg(wl0、su3)中,对lower页的4扇区能够设定偏移(+112~+115),对middle页的4扇区能够设定偏移(+116~+119),对upper页的4扇区能够设定偏移(+120~+123),对higher页的4扇区能够设定偏移(+124~+127)。[0085]接下来,控制器5执行针对平面#0的区块blk0的mg(wl1、su0)的四页量的数据的写入、以及针对平面#1的区块blk0的mg(wl1、su0)的四页量的数据的写入。因此,对平面#0的区块blk0的mg(wl1、su0)与平面#1的区块blk0的mg(wl1、su0)设定共计32个偏移(+128~+159)。[0086]接下来,对多个阶段的编程动作进行说明。在通过qlc模式写入数据的情况下,控制器5使用至少包含第一阶段的编程动作及第二阶段的编程动作的多个阶段的编程动作,执行分别针对写入目标块所含的多个存储单元组的数据写入动作。在第一阶段的编程动作中,应当写入的四页量的数据被传输至nand存储器6,向写入目标块的存储单元组mg(wln,sum)写入该四页量的数据。在第一阶段的编程动作中,各存储单元的阈值电压被粗略地设定。在该状态下,不能从各存储单元正常地读出数据。在第二阶段的编程动作中,与在第一阶段的编程动作中传输的数据相同的四页量的数据被再次传输至nand存储器6,对执行了第一阶段的编程动作的存储单元组mg(wln,sum),写入该四页量的数据。在第二阶段的编程动作中,各存储单元的阈值电压被设定为与应当写入的数据对应的目标阈值电压。若第二阶段的编程动作完成,则能够从存储单元组mg(wln,sum)正确地读出数据。[0087]针对存储单元组mg(wln,sum)的第二阶段的编程动作,在针对属于与存储单元组mg(wln,sum)相同的串单元sum、并且与连接有存储单元组mg(wln,sum)的字线wln之后的字线wl(n+1)连接的另一存储单元组mg(wl(n+1),sum)的第一阶段的编程动作被执行之后执行。[0088]作为多个阶段的编程动作,例如能够使用模糊-精细编程(foggyfineprogram)动作。模糊-精细编程动作包含模糊编程动作、以及精细编程动作。模糊编程动作是粗略地设定各存储单元的阈值电压的编程动作(第一阶段的编程动作)。精细编程动作是调整各存储单元的阈值电压并将各存储单元的阈值电压设定为目标阈值电压的编程动作(第二阶段的编程动作)。[0089]针对写入目标块的模糊-精细编程动作如以下那样执行。以下,设想控制器5将图5所示的超级块sb0分配为写入目标块的情况。[0090](1)首先,执行针对平面#0的区块blk0的mg(wl0、su0)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl0、su0)的模糊编程动作。这里,向nand存储器6传输具有八页量的大小的写入数据。页大小相当于一个串单元su所含的串的数量、即一个存储单元组mg所含的存储单元的数量。[0091](2)接着,执行针对平面#0的区块blk0的mg(wl0、su1)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl0、su1)的模糊编程动作。[0092](3)接着,执行针对平面#0的区块blk0的mg(wl0、su2)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl0、su2)的模糊编程动作。[0093](4)接着,执行针对平面#0的区块blk0的mg(wl0、su3)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl0、su3)的模糊编程动作。[0094](5)针对平面#0的区块blk0的mg(wl0、su0)~mg(wl0、su3)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl0、su0)~mg(wl0、su3)的模糊编程动作完成后,执行针对平面#0的区块blk0的mg(wl1、su0)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl1、su0)的模糊编程动作。[0095](6)针对平面#0的区块blk0的mg(wl1、su0)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl1、su0)的模糊编程动作完成后,执行针对平面#0的区块blk0的mg(wl0、su0)的精细编程动作、以及针对平面#1的区块blk0的mg(wl0、su0)的精细编程动作。这里,向nand存储器6再次传输与对平面#0的区块blk0的mg(wl0、su0)以及平面#1的区块blk0的mg(wl0、su0)进行的模糊编程动作中使用的写入数据相同的写入数据。而且,执行针对平面#0的区块blk0的mg(wl0、su0)的精细编程动作、以及针对平面#1的区块blk0的mg(wl0、su0)的精细编程动作。若该精细编程动作完成,则对平面#0的区块blk0的mg(wl0、su0)以及平面#1的区块blk0的mg(wl0、su0)进行的写入完成。即,向平面#0的区块blk0的mg(wl0、su0)写入的数据、以及向平面#1的区块blk0的mg(wl0、su0)写入的数据成为能够从nand存储器6正常地读出的可读出数据。[0096](7)接着,执行针对平面#0的区块blk0的mg(wl1、su1)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl1、su1)的模糊编程动作。[0097](8)针对平面#0的区块blk0的mg(wl1、su1)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl1、su1)的模糊编程动作完成后,执行针对平面#0的区块blk0的mg(wl0、su1)的精细编程动作、以及针对平面#1的区块blk0的mg(wl0、su1)的精细编程动作。若该精细编程动作完成,则对平面#0的区块blk0的mg(wl0、su1)以及平面#1的区块blk0的mg(wl0、su1)进行的写入完成。即,向平面#0的区块blk0的mg(wl0、su1)写入的数据、以及向平面#1的区块blk0的mg(wl0、su1)写入的数据成为能够从nand存储器6正常地读出的可读出数据。[0098]接下来,说明对写入目标块进行的写入动作与断电保护(plp)动作。图6是表示在存储器系统3中执行的、对写入目标块进行的写入动作与plp动作的例子的图。[0099]控制器5能够执行两种plp动作。两种plp动作的一方是在发生非预期的断电的情况下,将lba列表备份的plp动作(第一plp动作)。两种plp动作的另一方是在发生非预期的断电的情况下,使写入未完成数据向nand存储器6的写入完成的plp动作(第二plp动作)。[0100]控制器5管理通过第一模式控制写入的第一区块的集合,以及使写入未完成数据向nand存储器6的写入完成的第二区块的集合,该第一模式是备份与从主机2接收完成且向nand存储器6的写入未完成的写入未完成数据分别对应的lba的列表的模式。[0101]以下,将属于第二区块的集合的区块称作plp对象的区块,将属于第一区块的集合的区块称作plp对象外的区块。[0102]在图6中,作为例子示出了控制器5将超级块sb0~sb19的20个超级块、以及一个单层式存储单元(slc)区块分配为写入目标块的情况。slc区块是通过在每一个存储单元存储一位数据的slc模式写入数据的区块。超级块sb0~sb14为plp对象的区块。超级块sb15~sb19为plp对象外的区块。[0103]首先,对plp对象的区块,例如对超级块sb0写入数据的情况进行说明。[0104](1)每次从主机2接收写入命令时,控制器5向内部缓存器531储存从主机2接收的数据。控制器5等待至写入大小量的数据被储存于内部缓存器531中。在页大小为4扇区(=16kb)的情况下,通过qlc模式向超级块sb0写入数据的情形中,写入大小为32扇区(=4扇区×2平面×4(qlc))。控制器5等待至向超级块sb0写入的32扇区量的数据被积蓄到内部缓存器531中。[0105](2-a)向超级块sb0写入的32扇区量的数据积蓄到内部缓存器531中后,控制器5执行向超级块sb0写入32扇区量的数据的模糊编程动作。例如,向超级块sb0的平面#0的区块的mg(wl0、su0)写入四页(=16扇区量)的数据。此外,向超级块sb0的平面#1的区块的mg(wl0、su0)写入四页(=16扇区量)的数据。针对平面#0的区块的mg(wl0、su0)的精细编程动作,能够在针对平面#0的区块的mg(wl0、su1)~mg(wl0、su3)、mg(wl1、su0)的模糊编程动作执行之后执行。同样,针对平面#1的区块的mg(wl0、su0)的精细编程动作也能够在针对平面#1的区块的mg(wl1、su0)~mg(wl0、su3)、mg(wl1、su0)的模糊编程动作执行之后执行。由此,若向超级块sb0的写入进行,则向超级块sb0的写入动作执行中的共计160扇区(=4扇区×2平面×4(qlc)×5串单元)量的数据被维持在内部缓存器531中。[0106](3-a)在写入进行的中途的时刻发生了非预期的断电的情况下,控制器5使用来自电容器81的电力,将向超级块sb0的写入未完成的写入未完成数据写入nand存储器6。写入未完成数据既可以被写入超级块sb0,也可以被写入nand存储器6的单层式存储单元(slc)区块。slc区块是通过在每一个存储单元存储一位数据的slc模式写入数据的区块。[0107]接下来对向plp对象外的区块、例如超级块sb15写入数据的情况进行说明。对超级块sb15分配一个lba列表。[0108](1)在每次从主机2接收写入命令时,控制器5向内部缓存器531储存从主机2接收的数据。[0109](2-b)向超级块sb15写入的数据每次向内部缓存器531储存时,控制器5将与内部缓存器531中储存的数据分别对应的lba的集合,追加到超级块sb15所对应的lba列表中。此外,控制器5将表示超级块sb15的写入未完成区域的开头的存储位置的位置信息(超级块地址sba,偏移)与lba列表建立关联地进行管理。控制器5等待至向超级块sb15写入的32扇区量的数据积蓄到内部缓存器531中。[0110](3-b)向超级块sb15写入的32扇区量的数据积蓄到内部缓存器531中后,控制器5执行向超级块sb15写入32扇区量的数据的模糊编程动作。例如向超级块sb15的平面#0的区块的mg(wl0、su0)写入四页(=16扇区量)的数据。此外,向超级块sb15的平面#1的区块的mg(wl0、su0)写入四页(=16扇区量)的数据。针对平面#0的区块的mg(wl0、su0)的精细编程动作,能够在执行针对平面#0的区块的mg(wl0、su1)~mg(wl0、su3)、mg(wl1、su0)的模糊编程动作之后执行。同样,针对平面#1的区块的mg(wl0、su0)的精细编程动作,也能够在执行针对平面#1的区块的mg(wl1、su0)~mg(wl0、su3)、mg(wl1、su0)的模糊编程动作之后执行。由此,若向超级块sb15的写入进行,则向超级块sb15的写入动作执行中的共计160扇区((=4扇区×2平面×4(qlc)×5串单元))量的数据被维持在内部缓存器531中。而且,与160扇区分别对应的160个lba,是向超级块sb15写入中的数据所分别对应的lba的集合。在与超级块sb15对应的lba列表中维持该160个lba。此外,在与超级块sb15对应的lba列表中,也维持与从主机2接收完成且向超级块sb15的写入尚未开始的数据分别对应的lba。在超级块sb15的写入大小为32扇区的情况下,接收完成且未写入的数据的最大大小为32扇区。由此,与超级块sb15对应的lba列表所含的lba的最大数为192(=4扇区×2平面×4(qlc)×(5串单元+1))。[0111](4-b)在写入进行中途的时刻发生非预期的断电的情况下,控制器5使用来自电容器81的电力,向nand存储器6写入与超级块sb15对应的lba列表所含的lba的集合、以及表示超级块sb15的写入未完成区域的开头的存储位置的位置信息(超级块地址sba,偏移)。lba的集合与位置信息也可以写入nand存储器6的slc区块。[0112]接下来,对写入目标块与逻辑地址(lba列表)的关系进行说明。图7是表示在实施方式的存储器系统3中管理的、写入目标块与逻辑地址(lba列表)的关系的例子的图。[0113]在将plp对象外的超级块分配为写入目标块的情况下,对超级块分配一个lba列表。[0114]lba列表被用于保持与从主机2接收完成且向超级块的写入未完成的写入未完成数据分别对应的多个lba。[0115]超级块包含“写入未完成”区域、以及“写入数据未受领/未写入”区域。“写入未完成”区域是从主机2接收完成、且向超级块的写入未完成的写入未完成数据应当被写入的区域。[0116]“写入未完成”区域包含“写入数据受领完成/写入中”区域、以及“写入数据受领完成/未写入区域”。[0117]“写入数据受领完成/写入中”区域是写入动作正在执行中的区域。在页大小为4扇区的情况下,在使用模糊-精细编程动作,通过qlc模式向超级块写入数据的情形中,“写入数据受领完成/写入中”区域的大小为160扇区(=4扇区×2平面×4(qlc)×5串单元)。[0118]“写入数据受领完成/未写入区域”是写入数据从主机2接收完成但写入尚未开始的区域。在页大小为4扇区的情况下,在使用模糊-精细编程动作,通过qlc模式向超级块写入数据的情形中,“写入数据受领完成/未写入”区域的最大大小为32扇区(=4扇区×2平面×4(qlc))。[0119]因此,“写入未完成”区域的大小为192扇区(=4扇区×2平面×4(qlc)×(5串单元+1))。[0120]此外,在使用全序列(fullseqience)编程动作通过tlc模式向超级块写入数据的情形中,向存储单元组写入三页量的数据,从而完成三页量的数据的写入。因此,“写入数据受领完成/写入中”区域的大小为24扇区(=4扇区×2平面×3(tlc)×1串单元)。此外,“写入数据受领完成/未写入区域”的最大大小为24扇区(=4扇区×2平面×3(tlc))。[0121]因此,“写入未完成”区域的大小为48扇区(=4扇区×2平面×4(qlc)×(1串单元+1))。[0122]以下,设想使用模糊-精细编程动作通过qlc模式向超级块写入数据的情形。[0123]lba列表所含的160个lba(lba#0~#31、lba#32~#63、lba#64~#95、lba#96~#127、lba#128~#159)是与从主机2接收完成且向超级块的写入未完成的写入未完成数据分别对应的lba。[0124]例如,最初的32个lba#0~#31是向与偏移#0~#31对应的超级块的32个存储位置写入的数据所分别对应的lba。偏移#0~#31是由图5中说明的偏移+0~+31表示的存储位置。[0125]lba#0~#31之后的32个lba#32~#63是向与偏移#32~#63对应的超级块的32个存储位置写入的数据所分别对应的lba。偏移#32~#63是由图5中说明的偏移+32~+63表示的存储位置。[0126]lba#32~#63之后的32个lba#64~#95是向与偏移#64~#95对应的超级块的32个存储位置写入的数据所分别对应的lba。偏移#64~#95是由图5中说明的偏移+64~+95表示的存储位置。[0127]lba#64~#95之后的32个lba#96~#127是向与偏移#96~#127对应的超级块的32个存储位置写入的数据所分别对应的lba。偏移#96~#127是由图5中说明的偏移+96~+127表示的存储位置。[0128]lba#96~#127之后的32个lba#128~#159是向与偏移#128~#159对应的超级块的32个存储位置写入的数据所分别对应的lba。偏移#128~#159是由图5中说明的偏移+128~+159表示的存储位置。[0129]此外,向“写入数据受领完成/未写入区域”写入的数据储存于内部缓存器531后,与所储存的数据分别对应的lba(例如lba#160~#n)被追加到lba列表中。此时,偏移#160~#n也可以与lba#160~#n一同被追加到lba列表中。[0130]如此,在lba列表中,与写入未完成数据分别对应的lba(lba#0~#159、#160~#n)以与写入未完成数据被向写入未完成区域写入的顺序相同的顺序,换句话说是以与偏移#0~#159、#160~#n的顺序相同的顺序排列。此外,在lba列表中,不仅保持有lba#0~#159、#160~#n,也可以保持偏移#0~#159、#160~#n。[0131]lba列表由两个指针p1、p2管理。指针p1是表示从lba列表中删除或者取出的下一lba的位置的指针。指针p2是表示储存新的lba的位置的指针。[0132]此外,在图7中,表示写入未完成区域的开头的存储位置的位置信息由超级块地址sba和偏移#0表示。[0133]图8是表示在实施方式的存储器系统3中管理的、写入目标块与逻辑地址(lba列表)的关系的另一例的图。[0134]在图8中,作为例子示出了与lba#0~#31对应的32扇区量的数据的写入完成,32扇区量的数据能够读出的情况。[0135]超级块的开头的32个存储位置成为“写入完成/可读出”区域。“写入完成/可读出”区域是存储有写入完成而能够从超级块读出的数据的区域。若32扇区量的数据能够读出,则与可读出数据对应的32个lba#0~#31被从lba列表中删除。由此,在lba列表中确保用于储存新的32个lba的空置区域。此外,表示写入未完成区域的开头的存储位置的位置信息前进写入大小(32扇区)量。[0136]在图8中,在lba列表中,160个lba#32~#191被作为与向“写入数据受领完成/写入中”区域写入中的数据分别对应的lba保持。[0137]此外,向“写入数据受领完成/未写入区域”写入的数据储存于内部缓存器531后,与所储存的数据分别对应的lba(例如lba#192~#m)被追加到lba列表中。[0138]在lba列表保持有lba#32~#191、lba#192~#m的状态下发生非预期的断电的情况下,向nand存储器6写入lba#32~#191以及lba#192~#m、和表示写入未完成区域的开头的存储位置的位置信息(超级块地址sba,偏移#32)。[0139]另外,针对超级块整体的数据的写入完成后,超级块整体成为“写入完成/可读出”区域。在该情况下,lba列表空置。而且,控制器5解除对该超级块的lba列表的分配。对超级块的分配解除后的lba列表,被分配给对写入目标块新分配的超级块。[0140]接下来,对环形缓存器(ringbuffer)的结果进行说明。图9是表示用于保持lba列表的环形缓存器的构成例的图。[0141]环形缓存器包含多个项,例如包含192个项(entry)。环形缓存器的多个项分别是保持一个lba的区域。指针p1是表示储存有从环形缓存器删除或者取出的下一lba的项的指针。指针p1也称为头指针。指针p2是表示用于储存新的lba下一项的指针。指针p2也称为尾指针。[0142]在图9的(a)中,在指针p1至指针p2所示的项#0~#q中分别储存有lba。[0143]若从主机2新接收向超级块写入的数据,则如图9的(b)所示,与接收的数据分别对应的lba被追加到环形缓存器中。指针p2的值递增所追加的lba的数量。在图9的(b)中,在指针p1至递增后的指针p2所示的项#0~#r中分别储存有lba。[0144]与项#0~#31对应的32个lba所对应的数据的精细编程动作完成后,如图9的(c)所示,指针p1的值被递增而更新为32。由此,由于项#0~#31被释放,因此32个lba被从环形缓存器中删除。在图9的(c)中,在递增后的指针p1至指针p2所示的项#32~#s中分别储存有lba。此时,指针p2也被更新。[0145]若对指针p2的值加1后成为值192,则指针p2的值复位为零。由此,能够对环形缓存器的开头的空置项分别追加lba。图9的(d)示出了对这样的环形缓存器的开头的空置项追加lba后的情况。在图9的(d)中,示出了指针p1表示项#32,指针p2表示项#t(<32)的状态。如此,在图9的(d)中,在项#32~#191、项#0~#t中分别储存有lba。[0146]接下来,对数据写入动作的顺序进行说明。图10是表示在实施方式的存储器系统3中执行的数据写入动作的顺序的流程图。[0147]控制器5判定是否从主机2接收到写入命令(s101)。[0148]在未接收写入命令的情况下(s101中为否(no)),控制器5等待至接收写入命令。[0149]在接收到写入命令的情况下(s101中为是(yes)),控制器5从主机2接收写入数据(s102)。控制器5将接收到的数据向内部缓存器531中储存。[0150]控制器5对写入接收到的写入数据的写入目标块是否为plp对象进行判定(s103)。[0151]在写入目标块为plp对象的情况下(s103中为是),控制器5判定写入数据是否达到写入大小(s104)。例如写入大小为32扇区量的数据大小。[0152]在写入数据未达到写入大小的情况下(s104中为否),控制器5等待至接收后续的写入命令(返回s101)。[0153]在写入数据达到写入大小的情况下(s104中为是),控制器5执行将写入大小的写入数据写入nand存储器6的写入动作(s105)。[0154]然后,控制器5结束数据写入动作(结束)。[0155]在写入目标块不是plp对象的情况下(s103中为否),控制器5向lba列表中追加由接收到的写入命令指定的lba、以及与写入数据被写入的存储位置对应的偏移(s106)。控制器5选择与写入目标块对应的lba列表。而且,控制器5对所选择的lba列表追加lba以及偏移。此外,控制器5基于lba的追加,使lba列表的指针p2递增。[0156]控制器5判定写入数据是否达到写入大小(s107)。[0157]在写入数据未达到写入大小的情况下(s107中为否),控制器5等待至接收后续的写入命令(返回s101)。[0158]在写入数据达到写入大小的情况下(s107中为是),控制器5执行将写入大小的写入数据写入nand存储器6的写入动作(s108)。[0159]控制器5判定是否存在通过在s108中执行的写入动作而能够读出的数据(s109)。控制器5判定是否在s108的写入动作中执行了模糊写入动作。[0160]在没有能够读出的数据的情况下(s109中为否),控制器5结束数据写入动作(结束)。[0161]在存在能够读出的数据的情况下(s109中为是),控制器5从lba列表中删除与可读出数据对应的lba,并更新与lba列表对应的存储位置信息(s110)。控制器5使与写入目标块对应的lba列表的指针p1递增。[0162]然后,控制器5结束数据写入动作(结束)。[0163]接下来,对plp动作的步骤进行说明。图11是表示在实施方式的存储器系统3中执行的plp动作的步骤的流程图。[0164]控制器5判定是否发生了非预期的断电(s201)。控制器5判定对存储器系统3的供电是否无来自主机2的通知地被切断。[0165]在未发生非预期的断电的情况下(s201中为否),控制器5等待。[0166]在发生了非预期的断电的情况下(s201中为是),控制器5从写入目标块中选择任意的区块(s202)。[0167]控制器5判定所选择的区块是否为plp对象(s203)。[0168]在所选择的区块不是plp对象的情况下(s203中为否),控制器5向slc区块中写入lba列表以及位置信息(sba,偏移)(s204)。控制器5通过将与所选择的区块对应的lba列表中储存的信息、以及位置信息写入slc区块从而进行非易失性化。[0169]控制器5判定是否选择了全部写入目标块(s205)。[0170]在存在尚未被选择的写入目标块的情况下(s205中为否),控制器5从未被选择的写入目标块中选择任意的区块(s202)。[0171]在所选择的区块为plp对象的情况下(s203中为是),控制器5完成与所选择的区块对应的写入未完成数据的写入(s206)。例如,控制器5通过将写入未完成数据、虚拟数据写入所选择的区块,从而将所选择的区块设为关闭状态。此外,控制器5也可以将写入未完成数据写入slc区块。[0172]然后,控制器5判定是否选择了全部写入目标块(s205)。[0173]在选择了全部写入目标块的情况下(s205中为是),控制器5结束plp动作(结束)。[0174]接下来,对lba通知动作的步骤进行说明。图12是表示在实施方式的存储器系统3中执行的lba通知动作的步骤的流程图。[0175]若对存储器系统3的电力恢复(s301中为是),则控制器5判定slc区块中是否存在lba列表的信息(s302)。[0176]在slc区块中存在lba列表的信息的情况下(s302中为是),控制器5更新l2p表71(s303)。控制器5向与lba列表的信息中包含的lba对应的l2p表71的项中,储存表示错误的值。表示错误的值例如也可以为表示无效的物理地址(pba)的幻数(magicnumber)。[0177]控制器5向主机2通知lba列表的信息(s304)。控制器5响应从主机2接收到的取得存储器系统3的日志(log)的命令,向主机2提供lba列表的信息。此外,控制器5也可以在执行s303的步骤之前,执行向主机2通知lba列表的信息的步骤。[0178]然后,控制器5结束lba通知动作(结束)。[0179]此外,在slc区块中不存在lba列表的信息的情况下(s302中为否),控制器5结束lba通知动作(结束)。[0180]接下来,对数据读出动作的步骤进行说明。图13是表示在实施方式的存储器系统3中执行的数据读出动作的步骤的流程图。[0181]控制器5判定是否从主机2接收到读取命令(s401)。[0182]在未接收到读取命令的情况下(s401中为否),控制器5等待至接收读取命令。[0183]在接收到读取命令的情况下(s401中为是),控制器5判定读出对象lba是否对应于无效的pba(s402)。控制器5通过参照l2p表71,从而取得与读取命令指定的lba对应的pba。控制器5判定所取得的pba是否为无效的值。[0184]在读出对象lba对应于无效的pba的情况下(s402中为是),控制器5向主机2通知错误(s403)。作为对接收到的读取命令的响应,控制器5向主机2发送表示错误的通知。[0185]然后,控制器5结束读取动作(结束)。[0186]在读出对象lba未对应于无效的pba的情况下(s402中为否),控制器5执行读取动作(s404)。控制器5读出在与读出对象lba对应的pba所表示的存储位置中存储的数据。[0187]控制器5向主机2发送所读出的数据(s405)。[0188]然后,控制器5结束读取动作(结束)。[0189]如以上说明那样,根据本实施方式,控制器5使用来自电容器81的电力,向nand存储器6写入包含与写入未完成数据分别对应的lba的集合的lba列表、以及表示写入未完成区域的开头的存储位置的位置信息。如此,通过向nand存储器6写入lba列表,从而能够明确地确定因非预期的断电而丢失的数据。[0190]因此,即使在由于非予期的断电而丢失写入未完成数据的情况下,控制器5也能够向主机2提供与丢失的数据对应的lba的信息。[0191]此外,通过向nand存储器6写入表示写入未完成区域的开头的存储位置的位置信息,从而能够确定由于非预期的断电而中断写入的存储位置。[0192]此外,通过将与丢失的数据对应的lba与无效的pba(幻数)建立对应,从而控制器5即使在接收到指定该lba的读取命令的情况下,也能够通知错误。这能够防止控制器5读出错误的数据并向主机2发送。[0193]虽然说明了本发明的几个实施方式,但这些实施方式作为例子而提示,并不意图限定发明的范围。这些新的实施方式能够以其他各种方式实施,在不脱离发明的主旨的范围内,能够进行各种省略、替换、变更。这些实施方式及其变形包含在发明的范围、主旨内,并且包含在权利要求书所记载的发明及其等同的范围内。当前第1页12当前第1页12
技术特征:
1.一种存储器系统,能够与主机连接,其特征在于,具备:非易失性存储器,包含多个区块;以及控制器,响应于从所述主机接收到指定逻辑地址的写入命令,将从所述主机接收的数据写入从所述多个区块分配的第一写入目标块,所述控制器管理第一列表以及第一存储位置信息,所述第一列表包含与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址,所述第一存储位置信息表示所述第一写入目标块中的、数据的写入未完成的写入未完成区域的开头的存储位置,所述控制器在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自积蓄向所述存储器系统供给的电力的电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。2.如权利要求1所述的存储器系统,其中,所述第一列表包含从与从所述主机接收完成且向所述第一写入目标块写入的数据分别对应的逻辑地址的集合中,除去与向所述第一写入目标块的写入完成而能够从所述第一写入目标块读出的数据分别对应的逻辑地址的集合后的剩余的逻辑地址的集合。3.如权利要求1所述的存储器系统,其中,所述第一列表所含的所述多个逻辑地址以与所述写入未完成数据被写入所述写入未完成区域的顺序相同的顺序排列。4.如权利要求1所述的存储器系统,其中,在对所述存储器系统的电力恢复后,所述控制器向所述主机提供所述非易失性存储器中存储的所述第一列表作为表示由于所述断电而丢失的数据的信息。5.如权利要求1所述的存储器系统,其中,所述控制器构成为:使用逻辑物理地址转换表来管理为了访问所述存储器系统而由所述主机使用的各个逻辑地址与所述非易失性存储器的各个物理地址之间的映射;在对所述存储器系统的电力恢复之后,基于所述非易失性存储器中存储的所述第一列表,向与所述第一列表所含的所述多个逻辑地址中的各个逻辑地址对应的所述逻辑物理地址转换表的项中储存表示错误的值。6.如权利要求1所述的存储器系统,其中,所述控制器构成为,管理通过第一模式控制写入的第一区块的集合、以及通过第二模式控制写入的第二区块的集合,所述第一模式是在发生了所述断电的情况下,对与从所述主机接收完成且向所述非易失性存储器的写入未完成的写入未完成数据分别对应的逻辑地址的列表进行备份的模式,所述第二模式是在发生了所述断电的情况下,完成所述写入未完成数据向所述非易失性存储器的写入的模式。7.如权利要求1所述的存储器系统,其中,所述第一存储位置信息包含所述第一写入目标块的区块地址、以及所述写入未完成区域的开头的存储位置相对于所述第一写入目标块的开头的存储位置的偏移。8.如权利要求1所述的存储器系统,其中,所述第一写入目标块是包含多个物理区块的区块组。
9.一种存储器系统,能够与主机连接,其特征在于,具备:非易失性存储器,包含多个区块;电容器,积蓄向所述存储器系统供给的电力;以及控制器,与所述非易失性存储器电连接,控制所述非易失性存储器,所述控制器构成为:将所述多个区块中的一个区块分配为第一写入目标块;在每次从所述主机接收指定逻辑地址的写入命令时,将与所述写入命令相关联的数据储存于内部缓存器中;将与所述内部缓存器中储存的所述数据分别对应的逻辑地址的集合追加到第一列表中,该第一列表是用于保持与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址的列表;在所述内部缓存器中储存的未写入的数据的大小每次达到所述非易失性存储器的写入大小时,向所述第一写入目标块写入具有所述写入大小的数据;在能够从所述第一写入目标块读出所述写入大小量的数据的情况下,从所述第一列表中删除与所述能够读出的数据对应的逻辑地址的集合,并以第一存储位置信息表示所述第一写入目标块的写入未完成区域的开头的存储位置的方式,使所述第一存储位置信息所表示的存储位置前进所述写入大小量;在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自所述电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。10.一种存储器系统的控制方法,控制包含含有多个区块的非易失性存储器的存储器系统,其特征在于,包括:将所述多个区块中的一个区块分配为第一写入目标块;在每次从主机接收指定逻辑地址的写入命令时,将与所述写入命令相关联的数据储存于所述存储器系统的内部缓存器中;将与所述内部缓存器中储存的所述数据分别对应的逻辑地址的集合追加到第一列表中,该第一列表是用于保持与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址的列表;在所述内部缓存器中储存的未写入的数据的大小每次达到所述非易失性存储器的写入大小时,向所述第一写入目标块写入具有所述写入大小的数据;在能够从所述第一写入目标块读出所述写入大小量的数据的情况下,从所述第一列表中删除与所述能够读出的数据对应的逻辑地址的集合,并以第一存储位置信息表示所述第一写入目标块的写入未完成区域的开头的存储位置的方式,使所述第一存储位置信息所表示的存储位置前进所述写入大小量;在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自积蓄向所述存储器系统供给的电力的电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。11.一种存储器系统,能够与主机连接,其特征在于,具备:非易失性存储器,包含多个区块;以及
控制器,响应于从所述主机接收到指定逻辑地址的写入命令,将从所述主机接收的数据写入从所述多个区块分配的第一写入目标块,所述控制器管理第一列表以及第一存储位置信息,所述第一列表包含与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址,所述第一存储位置信息表示所述第一写入目标块中的、数据的写入未完成的写入未完成区域的开头的存储位置,所述控制器在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自积蓄向所述存储器系统供给的电力的电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。12.如权利要求11所述的存储器系统,其中,所述第一列表包含从与从所述主机接收完成且应当向所述第一写入目标块写入的数据分别对应的逻辑地址的集合中,除去与向所述第一写入目标块的写入完成而能够从所述第一写入目标块读出的数据分别对应的逻辑地址的集合后的剩余的逻辑地址的集合。13.如权利要求11所述的存储器系统,其中,所述第一列表所含的所述多个逻辑地址以与所述写入未完成数据被写入所述写入未完成区域的顺序相同的顺序排列。14.如权利要求11所述的存储器系统,其中,所述控制器还构成为,在对所述存储器系统的电力恢复后,向所述主机提供所述非易失性存储器中存储的所述第一列表作为表示由于所述断电而丢失的数据的信息。15.如权利要求11所述的存储器系统,其中,所述控制器还构成为:使用逻辑物理地址转换表来管理为了访问所述存储器系统而由所述主机使用的各个逻辑地址与所述非易失性存储器的各个物理地址之间的映射;在对所述存储器系统的电力恢复之后,基于所述非易失性存储器中存储的所述第一列表,向与所述第一列表所含的所述多个逻辑地址中的各个逻辑地址对应的所述逻辑物理地址转换表的项中储存表示错误的值。16.如权利要求11所述的存储器系统,其中,所述控制器还构成为,管理通过第一模式控制写入的第一区块的集合、以及通过第二模式控制写入的第二区块的集合,所述第一模式是在发生了所述断电的情况下,对与从所述主机接收完成且向所述非易失性存储器的写入未完成的写入未完成数据分别对应的逻辑地址的列表进行备份的模式,所述第二模式是在发生了所述断电的情况下,完成所述写入未完成数据向所述非易失性存储器的写入的模式。17.如权利要求11所述的存储器系统,其中,所述第一存储位置信息包含所述第一写入目标块的区块地址、以及所述写入未完成区域的开头的存储位置相对于所述第一写入目标块的开头的存储位置的偏移。18.如权利要求11所述的存储器系统,其中,所述第一写入目标块是包含多个物理区块的区块组。19.一种存储器系统,能够与主机连接,其特征在于,具备:非易失性存储器,包含多个区块;
电容器,积蓄向所述存储器系统供给的电力;以及控制器,与所述非易失性存储器电连接,控制所述非易失性存储器,所述控制器构成为:将所述多个区块中的一个区块分配为第一写入目标块;在每次从所述主机接收指定逻辑地址的写入命令时,将与所述写入命令相关联的数据储存于内部缓存器中;将与所述内部缓存器中储存的所述数据分别对应的逻辑地址的集合追加到第一列表中,该第一列表是用于保持与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址的列表;在所述内部缓存器中储存的未写入的数据的大小每次达到所述非易失性存储器的写入大小时,向所述第一写入目标块写入具有所述写入大小的数据;在能够从所述第一写入目标块读出所述写入大小量的数据的情况下,从所述第一列表中删除与所述能够读出的数据对应的逻辑地址的集合,并以第一存储位置信息表示所述第一写入目标块的写入未完成区域的开头的存储位置的方式,使所述第一存储位置信息所表示的存储位置前进所述写入大小量;在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自所述电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。20.如权利要求19所述的存储器系统,其中,所述第一列表所含的所述多个逻辑地址以与所述写入未完成数据被写入所述写入未完成区域的顺序相同的顺序排列。21.如权利要求19所述的存储器系统,其中,所述控制器还构成为,在对所述存储器系统的电力恢复后,向所述主机提供所述非易失性存储器中存储的所述第一列表作为表示由于所述断电而丢失的数据的信息。22.如权利要求19所述的存储器系统,其中,所述控制器还构成为:使用逻辑物理地址转换表来管理为了访问所述存储器系统而由所述主机使用的各个逻辑地址与所述非易失性存储器的各个物理地址之间的映射;在对所述存储器系统的电力恢复之后,基于所述非易失性存储器中存储的所述第一列表,向与所述第一列表所含的所述多个逻辑地址中的各个逻辑地址对应的所述逻辑物理地址转换表的项中储存表示错误的值。23.如权利要求19所述的存储器系统,其中,所述控制器还构成为,管理通过第一模式控制写入的第一区块的集合、以及通过第二模式控制写入的第二区块的集合,所述第一模式是在发生了所述断电的情况下,对与从所述主机接收完成且向所述非易失性存储器的写入未完成的写入未完成数据分别对应的逻辑地址的列表进行备份的模式,所述第二模式是在发生了所述断电的情况下,完成所述写入未完成数据向所述非易失性存储器的写入的模式。24.如权利要求19所述的存储器系统,其中,所述第一存储位置信息包含所述第一写入目标块的区块地址、以及所述写入未完成区
域的开头的存储位置相对于所述第一写入目标块的开头的存储位置的偏移。25.一种存储器系统的控制方法,控制包含含有多个区块的非易失性存储器的存储器系统,其特征在于,包括:将所述多个区块中的一个区块分配为第一写入目标块;在每次从主机接收指定逻辑地址的写入命令时,将与所述写入命令相关联的数据储存于所述存储器系统的内部缓存器中;将与所述内部缓存器中储存的所述数据分别对应的逻辑地址的集合追加到第一列表中,该第一列表是用于保持与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址的列表;在所述内部缓存器中储存的未写入的数据的大小每次达到所述非易失性存储器的写入大小时,向所述第一写入目标块写入具有所述写入大小的数据;在能够从所述第一写入目标块读出所述写入大小量的数据的情况下,从所述第一列表中删除与所述能够读出的数据对应的逻辑地址的集合,并以第一存储位置信息表示所述第一写入目标块的写入未完成区域的开头的存储位置的方式,使所述第一存储位置信息所表示的存储位置前进所述写入大小量;在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自积蓄向所述存储器系统供给的电力的电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。26.如权利要求25所述的存储器系统的控制方法,其中,所述第一列表所含的所述多个逻辑地址以与所述写入未完成数据被写入所述写入未完成区域的顺序相同的顺序排列。27.如权利要求25所述的存储器系统的控制方法,其中,还包括:在对所述存储器系统的电力恢复后,向所述主机提供所述非易失性存储器中存储的所述第一列表作为表示由于所述断电而丢失的数据的信息。28.如权利要求25所述的存储器系统的控制方法,其中,还包括:使用逻辑物理地址转换表来管理为了访问所述存储器系统而由所述主机使用的各个逻辑地址与所述非易失性存储器的各个物理地址之间的映射;在对所述存储器系统的电力恢复之后,基于所述非易失性存储器中存储的所述第一列表,向与所述第一列表所含的所述多个逻辑地址中的各个逻辑地址对应的所述逻辑物理地址转换表的项中储存表示错误的值。29.如权利要求25所述的存储器系统的控制方法,其中,还包括:管理通过第一模式控制写入的第一区块的集合、以及通过第二模式控制写入的第二区块的集合,所述第一模式是在发生了所述断电的情况下,对与从所述主机接收完成且向所述非易失性存储器的写入未完成的写入未完成数据分别对应的逻辑地址的列表进行备份的模式,所述第二模式是在发生了所述断电的情况下,完成所述写入未完成数据向所述非易失性存储器的写入的模式。30.如权利要求25所述的存储器系统的控制方法,其中,所述第一存储位置信息包含所述第一写入目标块的区块地址、以及所述写入未完成区域的开头的存储位置相对于所述第一写入目标块的开头的存储位置的偏移。
技术总结
能够确定哪一数据丢失的存储器系统以及存储器系统的控制方法。存储器系统的控制器响应于从主机接收到指定逻辑地址的写入命令,将从主机接收的数据写入第一写入目标块。控制器管理第一列表以及第一存储位置信息,第一列表包含与从主机接收完成且向第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址,第一存储位置信息表示第一写入目标块中的、数据的写入未完成的写入未完成区域的开头的存储位置。控制器在无来自主机的预告而发生了断电的情况下,使用来自电容器的电力,向非易失性存储器写入第一列表以及第一存储位置信息。位置信息。位置信息。
技术研发人员:菅野伸一 佐佐木勇辉
受保护的技术使用者:铠侠股份有限公司
技术研发日:2022.06.22
技术公布日:2023/9/23
技术领域:
:3.本发明的实施方式涉及控制非易失性存储器的存储器系统以及存储器系统的控制方法。
背景技术:
::4.近年来,具备非易失性存储器的存储器系统被广泛普及。作为这种存储器系统之一,已知有具备nand型闪存的固态驱动器(ssd)。5.在ssd那样的存储器系统中,存在使用用于应对非预期的断电的断电保护功能(有时也称作plp功能)的情况。6.断电保护功能是使用电容器中积蓄的电力,将缓存器中储存的写入未完成数据写入非易失性存储器的功能。7.然而,能够使用电容器中积蓄的电力向非易失性存储器中写入的数据量被限制为某一上限值。因此,在写入未完成数据的量多的情况下,存在写入未完成数据的一部分丢失的情况。技术实现要素:8.本发明的一实施方式所要解决的课题在于提供能够确定哪一数据丢失的存储器系统以及存储器系统的控制方法。9.根据实施方式,能够与主机连接的存储器系统具备包含多个区块的非易失性存储器以及控制器,该控制器响应于从所述主机接收到指定逻辑地址的写入命令,将从所述主机接收的数据写入从所述多个区块分配的第一写入目标块。所述控制器管理第一列表以及第一存储位置信息,该第一列表包含与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址,该第一存储位置信息表示所述第一写入目标块中的、数据的写入未完成的写入未完成区域的开头的存储位置示。所述控制器在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自积蓄向所述存储器系统供给的电力的电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。附图说明10.图1是表示包含实施方式的存储器系统的信息处理系统的构成例的框图。11.图2是表示实施方式的存储器系统所含的nand型闪存裸片的构成例的框图。12.图3是表示实施方式的存储器系统所含的nand型闪存的区块的构成例的图。13.图4是表示在实施方式的存储器系统中使用的、多个信道与多个nand型闪存裸片的关系的例子的框图。14.图5是表示在实施方式的存储器系统中使用的超级块的构成例、以及超级块所含的多个存储位置各自与多个偏移各自之间的关系的例子的图。15.图6是表示在实施方式的存储器系统中执行的、对写入目标块进行的写入动作与断电保护(plp)动作的例子的图。16.图7是表示在实施方式的存储器系统中管理的、写入目标块与逻辑地址(lba列表)的关系的例子的图。17.图8是表示在实施方式的存储器系统中管理的、写入目标块与lba列表的关系的另一例的图。18.图9是表示在实施方式的存储器系统中用于保持lba列表的环形缓存器的构成例的图。19.图10是表示在实施方式的存储器系统中执行的数据写入动作的步骤的流程图。20.图11是表示在实施方式的存储器系统中执行的plp动作的步骤的流程图。21.图12是表示在实施方式的存储器系统中执行的lba通知动作的步骤的流程图。22.图13是表示在实施方式的存储器系统中执行的数据读出动作的步骤的流程图。23.附图标记说明[0024]1…信息处理系统,2…主机,3…存储器系统,4…总线,5…控制器,6…非易失性存储器,7…dram,8…电源电路,21…处理器,22…存储器,50…内部总线,51…主机接口,52…cpu,53…sram,54…dmac,55…ecc电路,56…dram接口,57…nand接口,71…l2p表,72…区块管理表,81…电容器,531…内部缓存器具体实施方式[0025]以下,参照附图对实施方式进行说明。[0026]图1是表示包含实施方式的存储器系统3的信息处理系统1的构成例的框图。实施方式的存储器系统3是包含非易失性存储器6的存储设备。[0027]信息处理系统1包含主机(主机设备)2、以及存储器系统3。主机2与存储器系统3能够经由总线4连接。[0028]主机2为信息处理装置。主机2例如为个人计算机、或者服务器计算机。主机2访问存储器系统3。具体而言,主机2向存储器系统3发送用于写入数据的命令即写入命令。此外,主机2向存储器系统3发送用于读出数据的命令即读取命令。[0029]存储器系统3为半导体存储设备。存储器系统3例如为固态驱动器(ssd)。存储器系统3包含非易失性存储器6。存储器系统3向非易失性存储器6写入数据。而且,存储器系统3从非易失性存储器6读出数据。[0030]总线4例如为基于pciexpresstm(pcietm)标准的总线。总线4是连接主机2与存储器系统3的传输路。总线4用于从主机2向存储器系统3的数据以及输入输出(i/o)命令的发送、和从存储器系统3向主机2的数据以及响应的发送。i/o命令是用于对非易失性存储器6进行数据的写入或者读出的命令。i/o命令包含写入命令以及读取命令。[0031]接下来,对主机2的内部构成进行说明。主机2包含处理器21、以及存储器22。[0032]处理器21例如为cpu(centralpprocessingunit)。处理器21经由总线4进行与存储器系统3的通信。处理器21执行从存储器系统3、或者与主机2连接的其他存储设备加载到存储器22中的软件(主机软件)。主机软件包含操作系统、文件系统、设备驱动程序、或者应用程序。[0033]存储器22例如为易失性的存储器。存储器22例如是动态随机存取存储器(dram)。[0034]接下来,对存储器系统3的内部构成进行说明。存储器系统3包含控制器5、以及非易失性存储器6。非易失性存储器6的一例为nand型闪存。以下,将非易失性存储器6称作nand存储器6。[0035]控制器5为存储器控制器。控制器5例如为soc(system-on-a-chip(soc)系统单芯片)那样的半导体设备。控制器5与nand存储器6电连接。控制器5执行对nand存储器6进行的数据的写入以及读出。此外,控制器5经由总线4执行与主机2的通信。作为连接控制器5与nand存储器6的物理接口,例如使用togglenand闪存接口、或者开放nand闪存接口(onfi)。控制器5的各部的功能能够通过专用硬件、执行程序的处理器、或者其组合而实现。[0036]nand存储器6例如为二维构造的闪存、或者三维构造的闪存。nand存储器6包含多个区块。各区块为nand存储器6中存储的数据的消除的最小单位、换句话说是数据消除动作的单位。[0037]存储器系统3除了控制器5、非易失性存储器6之外,还可以包含动态随机存取存储器(dram)7。dram7为易失性的存储器。dram7的存储区域的一部分例如也可以用作暂时地保持从主机2接收的写入数据、或者从nand存储器6读出的读取数据的内部缓存器73。[0038]存储器系统3还包含电源电路8。电源电路8为电源控制电路。电源电路8例如对控制器5、nand存储器6、dram7等存储器系统3的各构成要素供给从主机2供给的电力。[0039]接下来,对控制器5的内部结构进行说明。控制器5包含主机接口(主机i/f)51、cpu52、静态ram(sram)53、直接存储器存取控制器(dmac)54、ecc(errorcheckingandcorrection:误差校正)电路55、dram接口(drami/f)56、以及nand接口(nandi/f)57。这些控制器5内的各部经由内部总线50相互连接。对该内部总线50也供给来自电源电路8的电力。[0040]主机接口51为硬件接口电路。主机接口51执行与主机2的通信。主机接口51例如从主机2接收i/o命令。此外,主机接口51向主机2发送对所接收到的i/o命令的响应。[0041]cpu52为处理器。cpu52控制主机接口51、sram53、dmac54、ecc电路55、dram接口56、以及nand接口57。cpu52将nand存储器6或者未图示的rom中储存的控制程序(固件)加载到sram53中,而且通过执行该固件来进行各种处理。另外,固件也可以加载到dram7中。[0042]cpu52例如作为闪存转换层(ftl),执行存储于nand存储器6中的数据的管理以及nand存储器6所含的区块的管理。存储于nand存储器6中的数据的管理例如包含表示各个逻辑地址与各个物理地址之间的对应关系的映射信息的管理。逻辑地址是为了访问nand存储器6而由主机2使用的地址。逻辑地址例如为lba(logicalblockaddress:逻辑区块地址)。物理地址是表示nand存储器6所含的物理性的存储位置的地址。cpu52使用逻辑物理地址转换表(logical-to-physicaltranslationtable:l2p表)71,管理各个逻辑地址与各个物理地址之间的映射。此外,nand存储器6所含的区块的管理例如包含垃圾回收、不良区块(坏块)的管理、以及磨损均衡(wearleveling)。cpu52使用区块管理表72,执行nand存储器6所含的区块的管理。[0043]sram53为易失性的存储器。sram53例如用作cpu52的作业区域。此外,sram53包含内部缓存器531。内部缓存器531是暂时地保持与从主机2接收的写入命令相关联的数据的存储区域。[0044]dmac54是执行直接存储器访问(dma)的电路。dmac54执行主机2的存储器22与dram7或者sram53之间的数据传输。[0045]ecc电路55是执行数据的编码、以及数据的解码的电路。ecc电路55在向nand存储器6写入数据时,执行编码处理。在编码处理中,ecc电路55将ecc奇偶校验作为冗余码附加到要写入的数据中。ecc电路55使用从nand存储器6读出的数据中所附加的ecc奇偶校验,执行解码处理。在解码处理中,ecc电路55校正所读出的数据的错误。[0046]dram接口56是控制dram7的电路。dram接口56向dram7中储存数据。此外,dram接口56读出dram7中储存的数据。[0047]nand接口57是控制nand存储器6的电路。nand接口57例如包含nand控制器571-0、571-1、571-2、…、571-31。各个nand控制器571-0、571-1、571-2、…、571-31经由一个以上的信道ch0、ch1、ch2、…、ch31中的对应的一个信道,与nand存储器6所含的一个以上的闪存裸片连接。闪存裸片也称作闪存芯片。nand控制器571-0、571-1、571-2、…、571-31例如分别控制nand存储器6所含的闪存裸片(#0)61-0、闪存裸片(#1)61-1、…、闪存裸片(#31)61-31。[0048]接下来,对dram7中储存的信息进行说明。dram7中储存的信息包含l2p表71、以及区块管理表72。l2p表71、以及区块管理表72的一部分或者全部也可以储存于sram53中,而非dram7。[0049]l2p表71通过扇区那样的规定的大小单位来管理各个逻辑地址与各个物理地址之间的映射。[0050]区块管理表72管理nand存储器6所含的各区块。区块管理表72例如对各区块是否能够利用进行管理。此外,区块管理表72也可以对各区块是否为断电保护动作的对象进行管理。[0051]存储器系统3还包含电容器81。电容器81是能够积蓄电力的元件。电容器81电连接于电源电路8。电源电路8在从主机2供给的电源电压的值无来自主机2的预告而降低的情况下,向存储器系统3的各构成要素供给在电容器81中积蓄的电力。在电容器81中积蓄的电力例如能够用于控制器5执行lba列表保存动作。[0052]接下来,对由控制器5执行的lba列表保存动作进行说明。lba列表保存动作为了能够确定由于非预期的断电而丢失的数据而执行。非预期的断电是无来自主机2的预告(电源切断预告通知)而切断向存储器系统3供电的现象。电源切断预告通知是预告向存储器系统3的供电被断开的通知。在主机2的电源关闭之前,主机2向存储器系统3发送电源切断预告通知,通知存储器系统3即将断开向存储器系统3的供电。电源切断预告通知例如为由nvme标准规定的shutdownnotification(关机通知)、或者由sata标准规定的standbyimmediate(立即待机)命令。[0053]控制器5从主机2接收用于向nand存储器6写入数据的写入命令。写入命令对开始逻辑地址(开始lba)、数据大小以及数据指针等进行指定。开始lba表示与写入命令相关联的写入数据应当被写入的逻辑地址,换句话说是写入数据应当被写入的最初的逻辑区块。数据大小表示写入数据的大小。数据大小例如由lba的数量表示。数据指针是表示储存有写入数据的主机2的存储器22上的位置的缓存地址。写入命令也可以包含指定写入目标的区域的标识符。对写入目标的区域进行指定的标识符例如也可以是指定由分区命名空间(zonednamespace)标准规定的区域的逻辑地址、识别命名空间的命名空间标识符、或者识别流的流标识符。[0054]控制器5与从主机2接收到指定lba(开始lba)的写入命令相应地,执行对nand存储器6的数据写入动作。在数据写入动作中,控制器5将从主机2接收到的写入数据,写入到从nand存储器6所含的多个区块中分配的写入目标块。即,控制器5选择nand存储器6所含的多个区块中的区块,而且,控制器5将所选择的区块分配为写入目标块。写入目标块是数据应当被写入的区块。写入目标块例如为超级块。或者写入目标块也可以为物理区块。控制器5也可以被同时分配与不同的多个区域分别对应的多个写入目标块。以下,着眼于一个写入目标块,对lba列表保存动作进行说明。[0055]控制器5管理与写入目标块对应的lba列表。lba列表是包含与从主机2接收完成、且未完成向写入目标块的写入的写入未完成数据分别对应的多个lba的列表。向写入目标块的数据的写入从写入目标块的开头向末端执行。因此,写入正在进行的写入目标块包含写入完成区域、写入未完成区域、以及数据未受领区域。写入完成区域是从主机完成接收写入的数据,并且向写入目标块的数据的写入已完成的区域。写入完成区域中存储的数据是能够读出的数据。写入未完成区域是从主机2完成接收写入的数据,并且向写入目标块的数据的写入未完成的区域(写入未完成数据原本应当被写入的区域)。如果,写入的数据完成接收、并且向写入目标块的写入已完成的数据不存在,则从主机2指定的、与写入数据的写入目标对应的全部区域成为写入未完成区域。数据未受领区域是尚未从主机2接收应当写入的数据,但在接收到的情况下则写入此处的区域。另外,从主机2的数据的接收也称作从主机2的数据的受领。此外,将尚未从主机2接收数据称作数据的未受领或者数据的未接收,将已从主机2接收到数据称作数据的接收完成或者数据的受领完成。[0056]在无来自主机2的预告而发生断电的情况下,换句话说是发生非预期的断电的情况下,丢失的数据是与写入未完成区域对应的数据。因此,控制器5使用lba列表对多个lba进行管理,该多个lba与预定向写入未完成区域写入的数据即写入未完成数据分别对应。具体而言,lba列表包含下述剩余的lba的集合,该剩余的lba的集合是从与从主机2接收完成、且向写入目标块写入的数据分别对应的lba的集合中,除去与向写入目标块的写入完成而能够从写入目标块读出的数据分别对应的lba的集合而得到的集合。这里,从主机2接收完成且向写入目标块写入的数据包含从主机2接收完成且向写入目标块的写入已完成的写入完成数据、以及从主机2接收完成且向写入目标块的写入未完成的写入未完成数据。[0057]而且,控制器5管理表示写入未完成区域的开头的存储位置的位置信息。位置信息由写入目标块的区块地址、以及写入目标块中的偏移来表示。偏移是表示写入未完成区域的开头的存储位置相对于写入目标块的开头的存储位置的偏移。[0058]在发生非预期的断电的情况下,控制器5使用来自电容器81的电力,将lba列表而非写入未完成数据写入nand存储器6。具体而言,控制器5使用来自电容器81的电力,将lba列表、以及表示写入未完成区域的开头的存储位置的位置信息写入nand存储器6。[0059]如此,通过向nand存储器6写入lba列表,从而能够明确地确定由于非预期的断电而丢失的数据。lba列表的大小与写入未完成数据的大小相比足够小。因而,能够在能够使用电容器81的电力的有限的时间内向nand存储器6写入lba列表。[0060]此外,通过向nand存储器6写入表示写入未完成区域的开头的存储位置的位置信息,从而能够确定由于非预期的断电而写入被中断的存储位置。[0061]在针对存储器系统3的电力恢复之后,控制器5能够使用所保存的lba列表与位置信息,执行恢复处理。例如控制器5也可以执行向主机2报告与丢失的数据对应的lba的处理。此外,控制器5也可以执行将写入被中断的存储位置设定为错误位置的处理。[0062]接下来,对nand存储器6所含的闪存裸片61的构成例进行说明。图2是表示第一实施方式的存储器系统3所含的nand存储器6的闪存裸片61的构成例的框图。[0063]这里,着眼于闪存裸片(#0)61-0来对闪存裸片61的结构进行说明。其他闪存裸片也具有与闪存裸片(#0)61-0相同的结构。闪存裸片(#0)61-0包含周边电路611-0、以及存储单元阵列612-0。[0064]周边电路611-0是控制存储单元阵列612-0的电路。周边电路611-0例如包含行解码器、列解码器、读出放大器、锁存电路以及电压产生电路。周边电路611-0与从nand控制器571-0接收到地址以及命令相应地,对存储单元阵列612-0执行编程动作、读取动作、或者擦除动作。[0065]存储单元阵列612-0包含多个平面(plane)。具有多个平面的结构被称作多平面结构。存储单元阵列612-0能够使多个平面(这里为plane#0、以及plane#1)并列动作。[0066]存储单元阵列612-0的平面包含多个区块(blk0、blk1、blk2、…)。区块blk是非易失性存储单元晶体管(之后,仅称作存储单元晶体管或者存储单元)的集合。各区块包含多个串单元(stringunit)(su0、su1、su2、su3)。各串单元su是存储单元晶体管的集合。各串单元su包含多个nand串ns(也仅称作串)。各nand串ns是存储单元晶体管的集合。[0067]在图2中,说明了在各区块中包含四个串单元su0、su1、su2、su3的情况。但各区块中包含的串单元su的数量既可以是三个以下,也可以是五个以上。另外,也可以使用各区块仅包含一个串单元su的结构。即,各区块包含一个以上的串单元su。[0068]接下来,对区块的构成例进行说明。图3是表示实施方式的存储器系统3所含的nand存储器6的区块的构成例的图。[0069]在图3中,着眼于区块blk0对区块的结构进行说明。其他区块也具有与区块blk0相同的结构。区块blk0包含四个串单元(su0、su1、su2、su3)。四个串单元(su0、su1、su2、su3)沿与多个字线wl0~wl7层叠的方向(垂直方向)正交的方向(水平方向)配置。各串单元su包含多个nand串ns。各nand串ns的一端连接于多个位线(bl0~bl(l-1))中的对应的位线。各nand串ns沿垂直方向延伸。各nand串ns所含的多个存储单元晶体管的控制栅极分别连接于多个字线(wl0、wl1、…、wl7)。[0070]接下来,对多个信道与多个闪存裸片61的关系进行说明。图4是表示在实施方式的存储器系统3中使用的、多个信道ch.0、ch.1、…、ch.31与多个闪存裸片61(61-0、61-1、…、61-31)的关系的例子的图。[0071]在图4中,32个闪存裸片61分别具有包含2个平面(plane#0、plane#1)的多平面结构。各平面包含多个区块blk0~blkx-1。区块blk0~blkx-1各自包含多个字线。每一个字线连接于与四个串单元(su0、su1、su2、su3)对应的四个存储单元组。各个区块blk0~blkx-1是消除数据的数据消除动作的单位。区块blk0~blkx-1分别也称作物理区块、物理存储器区块、消除区块、或者闪存区块。[0072]32个闪存裸片61各自能够并列动作。而且,在各个闪存裸片61中,两个平面各自能够并列动作。[0073]为了并列执行对多个物理区块的数据写入动作,由控制器5管理多个区块组。区块组由能够进行并列动作的多个物理区块构成。以下,将区块组称作超级块。[0074]接下来,对超级块的构成例进行说明。图5是表示实施方式的存储器系统3中的超级块的构成例、与超级块所含的多个存储位置各自与多个偏移各自之间的关系的例子的图。[0075]这里,设想任意的闪存裸片61所含的平面#0(plane#0)的区块blk0、以及平面#1(plane#1)的区块blk0构建超级块sb0的情况。[0076]各区块包含四个串单元(su0、su1、su2、以及su3)。而且,各串单元连接于多个字线(wl0、wl1、…)。[0077]在通过每个存储单元中存储4位数据的四层式存储单元(qlc)模式将数据写入超级块sb0的情况下,向连接于一个字线并且包含于一个串单元的存储单元组中,写入与四个页(lower(下页)、middle(中间页)、upper(上页)以及higher(更高页))对应的数据。一个页的大小例如为16kb。一个页包含多个扇区。例如,在一个扇区的大小为4kb的情况下,一个页包含四个扇区。因此,连接于一个字线并且包含于一个串单元的存储单元组,包含与16个扇区对应的16个存储位置。[0078]以下,将连接于字线wln且包含于串单元sum的存储单元组(以下称作mg)表示为mg(wln,sum)。[0079]表示超级块sb0的某存储位置x的物理地址,由超级块sb0的区块地址、超级块sb0的存储位置x相对于开头的存储位置的偏移来表示。偏移由扇区的倍数表示。[0080]各存储位置的偏移基于对各扇区写入数据的顺序来设定。[0081]控制器5首先执行针对平面#0的区块blk0的mg(wl0、su0)的四页(lower、middle、upper以及higher)量的数据的写入、以及针对平面#1的区块blk0的mg(wl0、su0)的四页(lower、middle、upper以及higher)量的数据的写入。平面#0的区块blk0的mg(wl0、su0)与平面#1的区块blk0的mg(wl0、su0)包含共计32个存储位置(=4扇区×qlc(四页)×2平面)。因此,对平面#0的区块blk0的mg(wl0、su0)与平面#1的区块blk0的mg(wl0、su0)设定共计32个偏移(+0~+31)。例如,在平面#0的区块blk0的mg(wl0、su0)中,对lower页的4扇区能够设定偏移(+0~+3),对middle页的4扇区能够设定偏移(+4~+7),对upper页的4扇区能够设定偏移(+8~+11),对higher页的4扇区能够设定偏移(+12~+15)。此外,在平面#1的区块blk0的mg(wl0、su0)中,对lower页的4扇区能够设定偏移(+16~+19),对middle页的4扇区能够设定偏移(+20~+23),对upper页的4扇区能够设定偏移(+24~+27),对higher页的4扇区能够设定偏移(+28~+31)。[0082]接下来,控制器5执行针对平面#0的区块blk0的mg(wl0、su1)的四页量的数据的写入、以及针对平面#1的区块blk0的mg(wl0、su1)的四页量的数据的写入。因此,对平面#0的区块blk0的mg(wl0、su1)与平面#1的区块blk0的mg(wl0、su0)设定共计32个偏移(+32~+63)。例如,在平面#0的区块blk0的mg(wl0、su1)中,对lower页的4扇区能够设定偏移(+32~+35),对middle页的4扇区能够设定偏移(+36~+39),对upper页的4扇区能够设定偏移(+40~+43),对higher页的4扇区能够设定偏移(+44~+47)。此外,在平面#1的区块blk0的mg(wl0、su1)中,对lower页的4扇区能够设定偏移(+48~+51),对middle页的4扇区能够设定偏移(+52~+55),对upper页的4扇区能够设定偏移(+56~+59),对higher页的4扇区能够设定偏移(+60~+69)。[0083]接下来,控制器5执行针对平面#0的区块blk0的mg(wl0、su2)的四页量的数据的写入、以及针对平面#1的区块blk0的mg(wl0、su2)的四页量的数据的写入。因此,对平面#0的区块blk0的mg(wl0、su2)与平面#1的区块blk0的mg(wl0、su2)设定共计32个偏移(+64~+95)。例如,在平面#0的区块blk0的mg(wl0、su2)中,对lower页的4扇区能够设定偏移(+64~+67),对middle页的4扇区能够设定偏移(+68~+71),对upper页的4扇区能够设定偏移(+72~+75),对higher页的4扇区能够设定偏移(+76~+79)。此外,在平面#1的区块blk0的mg(wl0、su2)中,对lower页的4扇区能够设定偏移(+80~+83),对middle页的4扇区能够设定偏移(+84~+87),对upper页的4扇区能够设定偏移(+88~+91),对higher页的4扇区能够设定偏移(+92~+95)。[0084]接下来,控制器5执行针对平面#0的区块blk0的mg(wl0、su3)的四页量的数据的写入、以及针对平面#1的区块blk0的mg(wl0、su3)的四页量的数据的写入。因此,对平面#0的区块blk0的mg(wl0、su3)与平面#1的区块blk0的mg(wl0、su3)设定共计32个偏移(+96~+127)。例如在平面#0的区块blk0的mg(wl0、su3)中,对lower页的4扇区能够设定偏移(+96~+99),对middle页的4扇区能够设定偏移(+100~+71),对upper页的4扇区能够设定偏移(+72~+103),对higher页的4扇区能够设定偏移(+104~+107)。此外,在平面#1的区块blk0的mg(wl0、su3)中,对lower页的4扇区能够设定偏移(+112~+115),对middle页的4扇区能够设定偏移(+116~+119),对upper页的4扇区能够设定偏移(+120~+123),对higher页的4扇区能够设定偏移(+124~+127)。[0085]接下来,控制器5执行针对平面#0的区块blk0的mg(wl1、su0)的四页量的数据的写入、以及针对平面#1的区块blk0的mg(wl1、su0)的四页量的数据的写入。因此,对平面#0的区块blk0的mg(wl1、su0)与平面#1的区块blk0的mg(wl1、su0)设定共计32个偏移(+128~+159)。[0086]接下来,对多个阶段的编程动作进行说明。在通过qlc模式写入数据的情况下,控制器5使用至少包含第一阶段的编程动作及第二阶段的编程动作的多个阶段的编程动作,执行分别针对写入目标块所含的多个存储单元组的数据写入动作。在第一阶段的编程动作中,应当写入的四页量的数据被传输至nand存储器6,向写入目标块的存储单元组mg(wln,sum)写入该四页量的数据。在第一阶段的编程动作中,各存储单元的阈值电压被粗略地设定。在该状态下,不能从各存储单元正常地读出数据。在第二阶段的编程动作中,与在第一阶段的编程动作中传输的数据相同的四页量的数据被再次传输至nand存储器6,对执行了第一阶段的编程动作的存储单元组mg(wln,sum),写入该四页量的数据。在第二阶段的编程动作中,各存储单元的阈值电压被设定为与应当写入的数据对应的目标阈值电压。若第二阶段的编程动作完成,则能够从存储单元组mg(wln,sum)正确地读出数据。[0087]针对存储单元组mg(wln,sum)的第二阶段的编程动作,在针对属于与存储单元组mg(wln,sum)相同的串单元sum、并且与连接有存储单元组mg(wln,sum)的字线wln之后的字线wl(n+1)连接的另一存储单元组mg(wl(n+1),sum)的第一阶段的编程动作被执行之后执行。[0088]作为多个阶段的编程动作,例如能够使用模糊-精细编程(foggyfineprogram)动作。模糊-精细编程动作包含模糊编程动作、以及精细编程动作。模糊编程动作是粗略地设定各存储单元的阈值电压的编程动作(第一阶段的编程动作)。精细编程动作是调整各存储单元的阈值电压并将各存储单元的阈值电压设定为目标阈值电压的编程动作(第二阶段的编程动作)。[0089]针对写入目标块的模糊-精细编程动作如以下那样执行。以下,设想控制器5将图5所示的超级块sb0分配为写入目标块的情况。[0090](1)首先,执行针对平面#0的区块blk0的mg(wl0、su0)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl0、su0)的模糊编程动作。这里,向nand存储器6传输具有八页量的大小的写入数据。页大小相当于一个串单元su所含的串的数量、即一个存储单元组mg所含的存储单元的数量。[0091](2)接着,执行针对平面#0的区块blk0的mg(wl0、su1)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl0、su1)的模糊编程动作。[0092](3)接着,执行针对平面#0的区块blk0的mg(wl0、su2)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl0、su2)的模糊编程动作。[0093](4)接着,执行针对平面#0的区块blk0的mg(wl0、su3)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl0、su3)的模糊编程动作。[0094](5)针对平面#0的区块blk0的mg(wl0、su0)~mg(wl0、su3)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl0、su0)~mg(wl0、su3)的模糊编程动作完成后,执行针对平面#0的区块blk0的mg(wl1、su0)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl1、su0)的模糊编程动作。[0095](6)针对平面#0的区块blk0的mg(wl1、su0)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl1、su0)的模糊编程动作完成后,执行针对平面#0的区块blk0的mg(wl0、su0)的精细编程动作、以及针对平面#1的区块blk0的mg(wl0、su0)的精细编程动作。这里,向nand存储器6再次传输与对平面#0的区块blk0的mg(wl0、su0)以及平面#1的区块blk0的mg(wl0、su0)进行的模糊编程动作中使用的写入数据相同的写入数据。而且,执行针对平面#0的区块blk0的mg(wl0、su0)的精细编程动作、以及针对平面#1的区块blk0的mg(wl0、su0)的精细编程动作。若该精细编程动作完成,则对平面#0的区块blk0的mg(wl0、su0)以及平面#1的区块blk0的mg(wl0、su0)进行的写入完成。即,向平面#0的区块blk0的mg(wl0、su0)写入的数据、以及向平面#1的区块blk0的mg(wl0、su0)写入的数据成为能够从nand存储器6正常地读出的可读出数据。[0096](7)接着,执行针对平面#0的区块blk0的mg(wl1、su1)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl1、su1)的模糊编程动作。[0097](8)针对平面#0的区块blk0的mg(wl1、su1)的模糊编程动作、以及针对平面#1的区块blk0的mg(wl1、su1)的模糊编程动作完成后,执行针对平面#0的区块blk0的mg(wl0、su1)的精细编程动作、以及针对平面#1的区块blk0的mg(wl0、su1)的精细编程动作。若该精细编程动作完成,则对平面#0的区块blk0的mg(wl0、su1)以及平面#1的区块blk0的mg(wl0、su1)进行的写入完成。即,向平面#0的区块blk0的mg(wl0、su1)写入的数据、以及向平面#1的区块blk0的mg(wl0、su1)写入的数据成为能够从nand存储器6正常地读出的可读出数据。[0098]接下来,说明对写入目标块进行的写入动作与断电保护(plp)动作。图6是表示在存储器系统3中执行的、对写入目标块进行的写入动作与plp动作的例子的图。[0099]控制器5能够执行两种plp动作。两种plp动作的一方是在发生非预期的断电的情况下,将lba列表备份的plp动作(第一plp动作)。两种plp动作的另一方是在发生非预期的断电的情况下,使写入未完成数据向nand存储器6的写入完成的plp动作(第二plp动作)。[0100]控制器5管理通过第一模式控制写入的第一区块的集合,以及使写入未完成数据向nand存储器6的写入完成的第二区块的集合,该第一模式是备份与从主机2接收完成且向nand存储器6的写入未完成的写入未完成数据分别对应的lba的列表的模式。[0101]以下,将属于第二区块的集合的区块称作plp对象的区块,将属于第一区块的集合的区块称作plp对象外的区块。[0102]在图6中,作为例子示出了控制器5将超级块sb0~sb19的20个超级块、以及一个单层式存储单元(slc)区块分配为写入目标块的情况。slc区块是通过在每一个存储单元存储一位数据的slc模式写入数据的区块。超级块sb0~sb14为plp对象的区块。超级块sb15~sb19为plp对象外的区块。[0103]首先,对plp对象的区块,例如对超级块sb0写入数据的情况进行说明。[0104](1)每次从主机2接收写入命令时,控制器5向内部缓存器531储存从主机2接收的数据。控制器5等待至写入大小量的数据被储存于内部缓存器531中。在页大小为4扇区(=16kb)的情况下,通过qlc模式向超级块sb0写入数据的情形中,写入大小为32扇区(=4扇区×2平面×4(qlc))。控制器5等待至向超级块sb0写入的32扇区量的数据被积蓄到内部缓存器531中。[0105](2-a)向超级块sb0写入的32扇区量的数据积蓄到内部缓存器531中后,控制器5执行向超级块sb0写入32扇区量的数据的模糊编程动作。例如,向超级块sb0的平面#0的区块的mg(wl0、su0)写入四页(=16扇区量)的数据。此外,向超级块sb0的平面#1的区块的mg(wl0、su0)写入四页(=16扇区量)的数据。针对平面#0的区块的mg(wl0、su0)的精细编程动作,能够在针对平面#0的区块的mg(wl0、su1)~mg(wl0、su3)、mg(wl1、su0)的模糊编程动作执行之后执行。同样,针对平面#1的区块的mg(wl0、su0)的精细编程动作也能够在针对平面#1的区块的mg(wl1、su0)~mg(wl0、su3)、mg(wl1、su0)的模糊编程动作执行之后执行。由此,若向超级块sb0的写入进行,则向超级块sb0的写入动作执行中的共计160扇区(=4扇区×2平面×4(qlc)×5串单元)量的数据被维持在内部缓存器531中。[0106](3-a)在写入进行的中途的时刻发生了非预期的断电的情况下,控制器5使用来自电容器81的电力,将向超级块sb0的写入未完成的写入未完成数据写入nand存储器6。写入未完成数据既可以被写入超级块sb0,也可以被写入nand存储器6的单层式存储单元(slc)区块。slc区块是通过在每一个存储单元存储一位数据的slc模式写入数据的区块。[0107]接下来对向plp对象外的区块、例如超级块sb15写入数据的情况进行说明。对超级块sb15分配一个lba列表。[0108](1)在每次从主机2接收写入命令时,控制器5向内部缓存器531储存从主机2接收的数据。[0109](2-b)向超级块sb15写入的数据每次向内部缓存器531储存时,控制器5将与内部缓存器531中储存的数据分别对应的lba的集合,追加到超级块sb15所对应的lba列表中。此外,控制器5将表示超级块sb15的写入未完成区域的开头的存储位置的位置信息(超级块地址sba,偏移)与lba列表建立关联地进行管理。控制器5等待至向超级块sb15写入的32扇区量的数据积蓄到内部缓存器531中。[0110](3-b)向超级块sb15写入的32扇区量的数据积蓄到内部缓存器531中后,控制器5执行向超级块sb15写入32扇区量的数据的模糊编程动作。例如向超级块sb15的平面#0的区块的mg(wl0、su0)写入四页(=16扇区量)的数据。此外,向超级块sb15的平面#1的区块的mg(wl0、su0)写入四页(=16扇区量)的数据。针对平面#0的区块的mg(wl0、su0)的精细编程动作,能够在执行针对平面#0的区块的mg(wl0、su1)~mg(wl0、su3)、mg(wl1、su0)的模糊编程动作之后执行。同样,针对平面#1的区块的mg(wl0、su0)的精细编程动作,也能够在执行针对平面#1的区块的mg(wl1、su0)~mg(wl0、su3)、mg(wl1、su0)的模糊编程动作之后执行。由此,若向超级块sb15的写入进行,则向超级块sb15的写入动作执行中的共计160扇区((=4扇区×2平面×4(qlc)×5串单元))量的数据被维持在内部缓存器531中。而且,与160扇区分别对应的160个lba,是向超级块sb15写入中的数据所分别对应的lba的集合。在与超级块sb15对应的lba列表中维持该160个lba。此外,在与超级块sb15对应的lba列表中,也维持与从主机2接收完成且向超级块sb15的写入尚未开始的数据分别对应的lba。在超级块sb15的写入大小为32扇区的情况下,接收完成且未写入的数据的最大大小为32扇区。由此,与超级块sb15对应的lba列表所含的lba的最大数为192(=4扇区×2平面×4(qlc)×(5串单元+1))。[0111](4-b)在写入进行中途的时刻发生非预期的断电的情况下,控制器5使用来自电容器81的电力,向nand存储器6写入与超级块sb15对应的lba列表所含的lba的集合、以及表示超级块sb15的写入未完成区域的开头的存储位置的位置信息(超级块地址sba,偏移)。lba的集合与位置信息也可以写入nand存储器6的slc区块。[0112]接下来,对写入目标块与逻辑地址(lba列表)的关系进行说明。图7是表示在实施方式的存储器系统3中管理的、写入目标块与逻辑地址(lba列表)的关系的例子的图。[0113]在将plp对象外的超级块分配为写入目标块的情况下,对超级块分配一个lba列表。[0114]lba列表被用于保持与从主机2接收完成且向超级块的写入未完成的写入未完成数据分别对应的多个lba。[0115]超级块包含“写入未完成”区域、以及“写入数据未受领/未写入”区域。“写入未完成”区域是从主机2接收完成、且向超级块的写入未完成的写入未完成数据应当被写入的区域。[0116]“写入未完成”区域包含“写入数据受领完成/写入中”区域、以及“写入数据受领完成/未写入区域”。[0117]“写入数据受领完成/写入中”区域是写入动作正在执行中的区域。在页大小为4扇区的情况下,在使用模糊-精细编程动作,通过qlc模式向超级块写入数据的情形中,“写入数据受领完成/写入中”区域的大小为160扇区(=4扇区×2平面×4(qlc)×5串单元)。[0118]“写入数据受领完成/未写入区域”是写入数据从主机2接收完成但写入尚未开始的区域。在页大小为4扇区的情况下,在使用模糊-精细编程动作,通过qlc模式向超级块写入数据的情形中,“写入数据受领完成/未写入”区域的最大大小为32扇区(=4扇区×2平面×4(qlc))。[0119]因此,“写入未完成”区域的大小为192扇区(=4扇区×2平面×4(qlc)×(5串单元+1))。[0120]此外,在使用全序列(fullseqience)编程动作通过tlc模式向超级块写入数据的情形中,向存储单元组写入三页量的数据,从而完成三页量的数据的写入。因此,“写入数据受领完成/写入中”区域的大小为24扇区(=4扇区×2平面×3(tlc)×1串单元)。此外,“写入数据受领完成/未写入区域”的最大大小为24扇区(=4扇区×2平面×3(tlc))。[0121]因此,“写入未完成”区域的大小为48扇区(=4扇区×2平面×4(qlc)×(1串单元+1))。[0122]以下,设想使用模糊-精细编程动作通过qlc模式向超级块写入数据的情形。[0123]lba列表所含的160个lba(lba#0~#31、lba#32~#63、lba#64~#95、lba#96~#127、lba#128~#159)是与从主机2接收完成且向超级块的写入未完成的写入未完成数据分别对应的lba。[0124]例如,最初的32个lba#0~#31是向与偏移#0~#31对应的超级块的32个存储位置写入的数据所分别对应的lba。偏移#0~#31是由图5中说明的偏移+0~+31表示的存储位置。[0125]lba#0~#31之后的32个lba#32~#63是向与偏移#32~#63对应的超级块的32个存储位置写入的数据所分别对应的lba。偏移#32~#63是由图5中说明的偏移+32~+63表示的存储位置。[0126]lba#32~#63之后的32个lba#64~#95是向与偏移#64~#95对应的超级块的32个存储位置写入的数据所分别对应的lba。偏移#64~#95是由图5中说明的偏移+64~+95表示的存储位置。[0127]lba#64~#95之后的32个lba#96~#127是向与偏移#96~#127对应的超级块的32个存储位置写入的数据所分别对应的lba。偏移#96~#127是由图5中说明的偏移+96~+127表示的存储位置。[0128]lba#96~#127之后的32个lba#128~#159是向与偏移#128~#159对应的超级块的32个存储位置写入的数据所分别对应的lba。偏移#128~#159是由图5中说明的偏移+128~+159表示的存储位置。[0129]此外,向“写入数据受领完成/未写入区域”写入的数据储存于内部缓存器531后,与所储存的数据分别对应的lba(例如lba#160~#n)被追加到lba列表中。此时,偏移#160~#n也可以与lba#160~#n一同被追加到lba列表中。[0130]如此,在lba列表中,与写入未完成数据分别对应的lba(lba#0~#159、#160~#n)以与写入未完成数据被向写入未完成区域写入的顺序相同的顺序,换句话说是以与偏移#0~#159、#160~#n的顺序相同的顺序排列。此外,在lba列表中,不仅保持有lba#0~#159、#160~#n,也可以保持偏移#0~#159、#160~#n。[0131]lba列表由两个指针p1、p2管理。指针p1是表示从lba列表中删除或者取出的下一lba的位置的指针。指针p2是表示储存新的lba的位置的指针。[0132]此外,在图7中,表示写入未完成区域的开头的存储位置的位置信息由超级块地址sba和偏移#0表示。[0133]图8是表示在实施方式的存储器系统3中管理的、写入目标块与逻辑地址(lba列表)的关系的另一例的图。[0134]在图8中,作为例子示出了与lba#0~#31对应的32扇区量的数据的写入完成,32扇区量的数据能够读出的情况。[0135]超级块的开头的32个存储位置成为“写入完成/可读出”区域。“写入完成/可读出”区域是存储有写入完成而能够从超级块读出的数据的区域。若32扇区量的数据能够读出,则与可读出数据对应的32个lba#0~#31被从lba列表中删除。由此,在lba列表中确保用于储存新的32个lba的空置区域。此外,表示写入未完成区域的开头的存储位置的位置信息前进写入大小(32扇区)量。[0136]在图8中,在lba列表中,160个lba#32~#191被作为与向“写入数据受领完成/写入中”区域写入中的数据分别对应的lba保持。[0137]此外,向“写入数据受领完成/未写入区域”写入的数据储存于内部缓存器531后,与所储存的数据分别对应的lba(例如lba#192~#m)被追加到lba列表中。[0138]在lba列表保持有lba#32~#191、lba#192~#m的状态下发生非预期的断电的情况下,向nand存储器6写入lba#32~#191以及lba#192~#m、和表示写入未完成区域的开头的存储位置的位置信息(超级块地址sba,偏移#32)。[0139]另外,针对超级块整体的数据的写入完成后,超级块整体成为“写入完成/可读出”区域。在该情况下,lba列表空置。而且,控制器5解除对该超级块的lba列表的分配。对超级块的分配解除后的lba列表,被分配给对写入目标块新分配的超级块。[0140]接下来,对环形缓存器(ringbuffer)的结果进行说明。图9是表示用于保持lba列表的环形缓存器的构成例的图。[0141]环形缓存器包含多个项,例如包含192个项(entry)。环形缓存器的多个项分别是保持一个lba的区域。指针p1是表示储存有从环形缓存器删除或者取出的下一lba的项的指针。指针p1也称为头指针。指针p2是表示用于储存新的lba下一项的指针。指针p2也称为尾指针。[0142]在图9的(a)中,在指针p1至指针p2所示的项#0~#q中分别储存有lba。[0143]若从主机2新接收向超级块写入的数据,则如图9的(b)所示,与接收的数据分别对应的lba被追加到环形缓存器中。指针p2的值递增所追加的lba的数量。在图9的(b)中,在指针p1至递增后的指针p2所示的项#0~#r中分别储存有lba。[0144]与项#0~#31对应的32个lba所对应的数据的精细编程动作完成后,如图9的(c)所示,指针p1的值被递增而更新为32。由此,由于项#0~#31被释放,因此32个lba被从环形缓存器中删除。在图9的(c)中,在递增后的指针p1至指针p2所示的项#32~#s中分别储存有lba。此时,指针p2也被更新。[0145]若对指针p2的值加1后成为值192,则指针p2的值复位为零。由此,能够对环形缓存器的开头的空置项分别追加lba。图9的(d)示出了对这样的环形缓存器的开头的空置项追加lba后的情况。在图9的(d)中,示出了指针p1表示项#32,指针p2表示项#t(<32)的状态。如此,在图9的(d)中,在项#32~#191、项#0~#t中分别储存有lba。[0146]接下来,对数据写入动作的顺序进行说明。图10是表示在实施方式的存储器系统3中执行的数据写入动作的顺序的流程图。[0147]控制器5判定是否从主机2接收到写入命令(s101)。[0148]在未接收写入命令的情况下(s101中为否(no)),控制器5等待至接收写入命令。[0149]在接收到写入命令的情况下(s101中为是(yes)),控制器5从主机2接收写入数据(s102)。控制器5将接收到的数据向内部缓存器531中储存。[0150]控制器5对写入接收到的写入数据的写入目标块是否为plp对象进行判定(s103)。[0151]在写入目标块为plp对象的情况下(s103中为是),控制器5判定写入数据是否达到写入大小(s104)。例如写入大小为32扇区量的数据大小。[0152]在写入数据未达到写入大小的情况下(s104中为否),控制器5等待至接收后续的写入命令(返回s101)。[0153]在写入数据达到写入大小的情况下(s104中为是),控制器5执行将写入大小的写入数据写入nand存储器6的写入动作(s105)。[0154]然后,控制器5结束数据写入动作(结束)。[0155]在写入目标块不是plp对象的情况下(s103中为否),控制器5向lba列表中追加由接收到的写入命令指定的lba、以及与写入数据被写入的存储位置对应的偏移(s106)。控制器5选择与写入目标块对应的lba列表。而且,控制器5对所选择的lba列表追加lba以及偏移。此外,控制器5基于lba的追加,使lba列表的指针p2递增。[0156]控制器5判定写入数据是否达到写入大小(s107)。[0157]在写入数据未达到写入大小的情况下(s107中为否),控制器5等待至接收后续的写入命令(返回s101)。[0158]在写入数据达到写入大小的情况下(s107中为是),控制器5执行将写入大小的写入数据写入nand存储器6的写入动作(s108)。[0159]控制器5判定是否存在通过在s108中执行的写入动作而能够读出的数据(s109)。控制器5判定是否在s108的写入动作中执行了模糊写入动作。[0160]在没有能够读出的数据的情况下(s109中为否),控制器5结束数据写入动作(结束)。[0161]在存在能够读出的数据的情况下(s109中为是),控制器5从lba列表中删除与可读出数据对应的lba,并更新与lba列表对应的存储位置信息(s110)。控制器5使与写入目标块对应的lba列表的指针p1递增。[0162]然后,控制器5结束数据写入动作(结束)。[0163]接下来,对plp动作的步骤进行说明。图11是表示在实施方式的存储器系统3中执行的plp动作的步骤的流程图。[0164]控制器5判定是否发生了非预期的断电(s201)。控制器5判定对存储器系统3的供电是否无来自主机2的通知地被切断。[0165]在未发生非预期的断电的情况下(s201中为否),控制器5等待。[0166]在发生了非预期的断电的情况下(s201中为是),控制器5从写入目标块中选择任意的区块(s202)。[0167]控制器5判定所选择的区块是否为plp对象(s203)。[0168]在所选择的区块不是plp对象的情况下(s203中为否),控制器5向slc区块中写入lba列表以及位置信息(sba,偏移)(s204)。控制器5通过将与所选择的区块对应的lba列表中储存的信息、以及位置信息写入slc区块从而进行非易失性化。[0169]控制器5判定是否选择了全部写入目标块(s205)。[0170]在存在尚未被选择的写入目标块的情况下(s205中为否),控制器5从未被选择的写入目标块中选择任意的区块(s202)。[0171]在所选择的区块为plp对象的情况下(s203中为是),控制器5完成与所选择的区块对应的写入未完成数据的写入(s206)。例如,控制器5通过将写入未完成数据、虚拟数据写入所选择的区块,从而将所选择的区块设为关闭状态。此外,控制器5也可以将写入未完成数据写入slc区块。[0172]然后,控制器5判定是否选择了全部写入目标块(s205)。[0173]在选择了全部写入目标块的情况下(s205中为是),控制器5结束plp动作(结束)。[0174]接下来,对lba通知动作的步骤进行说明。图12是表示在实施方式的存储器系统3中执行的lba通知动作的步骤的流程图。[0175]若对存储器系统3的电力恢复(s301中为是),则控制器5判定slc区块中是否存在lba列表的信息(s302)。[0176]在slc区块中存在lba列表的信息的情况下(s302中为是),控制器5更新l2p表71(s303)。控制器5向与lba列表的信息中包含的lba对应的l2p表71的项中,储存表示错误的值。表示错误的值例如也可以为表示无效的物理地址(pba)的幻数(magicnumber)。[0177]控制器5向主机2通知lba列表的信息(s304)。控制器5响应从主机2接收到的取得存储器系统3的日志(log)的命令,向主机2提供lba列表的信息。此外,控制器5也可以在执行s303的步骤之前,执行向主机2通知lba列表的信息的步骤。[0178]然后,控制器5结束lba通知动作(结束)。[0179]此外,在slc区块中不存在lba列表的信息的情况下(s302中为否),控制器5结束lba通知动作(结束)。[0180]接下来,对数据读出动作的步骤进行说明。图13是表示在实施方式的存储器系统3中执行的数据读出动作的步骤的流程图。[0181]控制器5判定是否从主机2接收到读取命令(s401)。[0182]在未接收到读取命令的情况下(s401中为否),控制器5等待至接收读取命令。[0183]在接收到读取命令的情况下(s401中为是),控制器5判定读出对象lba是否对应于无效的pba(s402)。控制器5通过参照l2p表71,从而取得与读取命令指定的lba对应的pba。控制器5判定所取得的pba是否为无效的值。[0184]在读出对象lba对应于无效的pba的情况下(s402中为是),控制器5向主机2通知错误(s403)。作为对接收到的读取命令的响应,控制器5向主机2发送表示错误的通知。[0185]然后,控制器5结束读取动作(结束)。[0186]在读出对象lba未对应于无效的pba的情况下(s402中为否),控制器5执行读取动作(s404)。控制器5读出在与读出对象lba对应的pba所表示的存储位置中存储的数据。[0187]控制器5向主机2发送所读出的数据(s405)。[0188]然后,控制器5结束读取动作(结束)。[0189]如以上说明那样,根据本实施方式,控制器5使用来自电容器81的电力,向nand存储器6写入包含与写入未完成数据分别对应的lba的集合的lba列表、以及表示写入未完成区域的开头的存储位置的位置信息。如此,通过向nand存储器6写入lba列表,从而能够明确地确定因非预期的断电而丢失的数据。[0190]因此,即使在由于非予期的断电而丢失写入未完成数据的情况下,控制器5也能够向主机2提供与丢失的数据对应的lba的信息。[0191]此外,通过向nand存储器6写入表示写入未完成区域的开头的存储位置的位置信息,从而能够确定由于非预期的断电而中断写入的存储位置。[0192]此外,通过将与丢失的数据对应的lba与无效的pba(幻数)建立对应,从而控制器5即使在接收到指定该lba的读取命令的情况下,也能够通知错误。这能够防止控制器5读出错误的数据并向主机2发送。[0193]虽然说明了本发明的几个实施方式,但这些实施方式作为例子而提示,并不意图限定发明的范围。这些新的实施方式能够以其他各种方式实施,在不脱离发明的主旨的范围内,能够进行各种省略、替换、变更。这些实施方式及其变形包含在发明的范围、主旨内,并且包含在权利要求书所记载的发明及其等同的范围内。当前第1页12当前第1页12
技术特征:
1.一种存储器系统,能够与主机连接,其特征在于,具备:非易失性存储器,包含多个区块;以及控制器,响应于从所述主机接收到指定逻辑地址的写入命令,将从所述主机接收的数据写入从所述多个区块分配的第一写入目标块,所述控制器管理第一列表以及第一存储位置信息,所述第一列表包含与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址,所述第一存储位置信息表示所述第一写入目标块中的、数据的写入未完成的写入未完成区域的开头的存储位置,所述控制器在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自积蓄向所述存储器系统供给的电力的电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。2.如权利要求1所述的存储器系统,其中,所述第一列表包含从与从所述主机接收完成且向所述第一写入目标块写入的数据分别对应的逻辑地址的集合中,除去与向所述第一写入目标块的写入完成而能够从所述第一写入目标块读出的数据分别对应的逻辑地址的集合后的剩余的逻辑地址的集合。3.如权利要求1所述的存储器系统,其中,所述第一列表所含的所述多个逻辑地址以与所述写入未完成数据被写入所述写入未完成区域的顺序相同的顺序排列。4.如权利要求1所述的存储器系统,其中,在对所述存储器系统的电力恢复后,所述控制器向所述主机提供所述非易失性存储器中存储的所述第一列表作为表示由于所述断电而丢失的数据的信息。5.如权利要求1所述的存储器系统,其中,所述控制器构成为:使用逻辑物理地址转换表来管理为了访问所述存储器系统而由所述主机使用的各个逻辑地址与所述非易失性存储器的各个物理地址之间的映射;在对所述存储器系统的电力恢复之后,基于所述非易失性存储器中存储的所述第一列表,向与所述第一列表所含的所述多个逻辑地址中的各个逻辑地址对应的所述逻辑物理地址转换表的项中储存表示错误的值。6.如权利要求1所述的存储器系统,其中,所述控制器构成为,管理通过第一模式控制写入的第一区块的集合、以及通过第二模式控制写入的第二区块的集合,所述第一模式是在发生了所述断电的情况下,对与从所述主机接收完成且向所述非易失性存储器的写入未完成的写入未完成数据分别对应的逻辑地址的列表进行备份的模式,所述第二模式是在发生了所述断电的情况下,完成所述写入未完成数据向所述非易失性存储器的写入的模式。7.如权利要求1所述的存储器系统,其中,所述第一存储位置信息包含所述第一写入目标块的区块地址、以及所述写入未完成区域的开头的存储位置相对于所述第一写入目标块的开头的存储位置的偏移。8.如权利要求1所述的存储器系统,其中,所述第一写入目标块是包含多个物理区块的区块组。
9.一种存储器系统,能够与主机连接,其特征在于,具备:非易失性存储器,包含多个区块;电容器,积蓄向所述存储器系统供给的电力;以及控制器,与所述非易失性存储器电连接,控制所述非易失性存储器,所述控制器构成为:将所述多个区块中的一个区块分配为第一写入目标块;在每次从所述主机接收指定逻辑地址的写入命令时,将与所述写入命令相关联的数据储存于内部缓存器中;将与所述内部缓存器中储存的所述数据分别对应的逻辑地址的集合追加到第一列表中,该第一列表是用于保持与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址的列表;在所述内部缓存器中储存的未写入的数据的大小每次达到所述非易失性存储器的写入大小时,向所述第一写入目标块写入具有所述写入大小的数据;在能够从所述第一写入目标块读出所述写入大小量的数据的情况下,从所述第一列表中删除与所述能够读出的数据对应的逻辑地址的集合,并以第一存储位置信息表示所述第一写入目标块的写入未完成区域的开头的存储位置的方式,使所述第一存储位置信息所表示的存储位置前进所述写入大小量;在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自所述电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。10.一种存储器系统的控制方法,控制包含含有多个区块的非易失性存储器的存储器系统,其特征在于,包括:将所述多个区块中的一个区块分配为第一写入目标块;在每次从主机接收指定逻辑地址的写入命令时,将与所述写入命令相关联的数据储存于所述存储器系统的内部缓存器中;将与所述内部缓存器中储存的所述数据分别对应的逻辑地址的集合追加到第一列表中,该第一列表是用于保持与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址的列表;在所述内部缓存器中储存的未写入的数据的大小每次达到所述非易失性存储器的写入大小时,向所述第一写入目标块写入具有所述写入大小的数据;在能够从所述第一写入目标块读出所述写入大小量的数据的情况下,从所述第一列表中删除与所述能够读出的数据对应的逻辑地址的集合,并以第一存储位置信息表示所述第一写入目标块的写入未完成区域的开头的存储位置的方式,使所述第一存储位置信息所表示的存储位置前进所述写入大小量;在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自积蓄向所述存储器系统供给的电力的电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。11.一种存储器系统,能够与主机连接,其特征在于,具备:非易失性存储器,包含多个区块;以及
控制器,响应于从所述主机接收到指定逻辑地址的写入命令,将从所述主机接收的数据写入从所述多个区块分配的第一写入目标块,所述控制器管理第一列表以及第一存储位置信息,所述第一列表包含与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址,所述第一存储位置信息表示所述第一写入目标块中的、数据的写入未完成的写入未完成区域的开头的存储位置,所述控制器在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自积蓄向所述存储器系统供给的电力的电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。12.如权利要求11所述的存储器系统,其中,所述第一列表包含从与从所述主机接收完成且应当向所述第一写入目标块写入的数据分别对应的逻辑地址的集合中,除去与向所述第一写入目标块的写入完成而能够从所述第一写入目标块读出的数据分别对应的逻辑地址的集合后的剩余的逻辑地址的集合。13.如权利要求11所述的存储器系统,其中,所述第一列表所含的所述多个逻辑地址以与所述写入未完成数据被写入所述写入未完成区域的顺序相同的顺序排列。14.如权利要求11所述的存储器系统,其中,所述控制器还构成为,在对所述存储器系统的电力恢复后,向所述主机提供所述非易失性存储器中存储的所述第一列表作为表示由于所述断电而丢失的数据的信息。15.如权利要求11所述的存储器系统,其中,所述控制器还构成为:使用逻辑物理地址转换表来管理为了访问所述存储器系统而由所述主机使用的各个逻辑地址与所述非易失性存储器的各个物理地址之间的映射;在对所述存储器系统的电力恢复之后,基于所述非易失性存储器中存储的所述第一列表,向与所述第一列表所含的所述多个逻辑地址中的各个逻辑地址对应的所述逻辑物理地址转换表的项中储存表示错误的值。16.如权利要求11所述的存储器系统,其中,所述控制器还构成为,管理通过第一模式控制写入的第一区块的集合、以及通过第二模式控制写入的第二区块的集合,所述第一模式是在发生了所述断电的情况下,对与从所述主机接收完成且向所述非易失性存储器的写入未完成的写入未完成数据分别对应的逻辑地址的列表进行备份的模式,所述第二模式是在发生了所述断电的情况下,完成所述写入未完成数据向所述非易失性存储器的写入的模式。17.如权利要求11所述的存储器系统,其中,所述第一存储位置信息包含所述第一写入目标块的区块地址、以及所述写入未完成区域的开头的存储位置相对于所述第一写入目标块的开头的存储位置的偏移。18.如权利要求11所述的存储器系统,其中,所述第一写入目标块是包含多个物理区块的区块组。19.一种存储器系统,能够与主机连接,其特征在于,具备:非易失性存储器,包含多个区块;
电容器,积蓄向所述存储器系统供给的电力;以及控制器,与所述非易失性存储器电连接,控制所述非易失性存储器,所述控制器构成为:将所述多个区块中的一个区块分配为第一写入目标块;在每次从所述主机接收指定逻辑地址的写入命令时,将与所述写入命令相关联的数据储存于内部缓存器中;将与所述内部缓存器中储存的所述数据分别对应的逻辑地址的集合追加到第一列表中,该第一列表是用于保持与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址的列表;在所述内部缓存器中储存的未写入的数据的大小每次达到所述非易失性存储器的写入大小时,向所述第一写入目标块写入具有所述写入大小的数据;在能够从所述第一写入目标块读出所述写入大小量的数据的情况下,从所述第一列表中删除与所述能够读出的数据对应的逻辑地址的集合,并以第一存储位置信息表示所述第一写入目标块的写入未完成区域的开头的存储位置的方式,使所述第一存储位置信息所表示的存储位置前进所述写入大小量;在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自所述电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。20.如权利要求19所述的存储器系统,其中,所述第一列表所含的所述多个逻辑地址以与所述写入未完成数据被写入所述写入未完成区域的顺序相同的顺序排列。21.如权利要求19所述的存储器系统,其中,所述控制器还构成为,在对所述存储器系统的电力恢复后,向所述主机提供所述非易失性存储器中存储的所述第一列表作为表示由于所述断电而丢失的数据的信息。22.如权利要求19所述的存储器系统,其中,所述控制器还构成为:使用逻辑物理地址转换表来管理为了访问所述存储器系统而由所述主机使用的各个逻辑地址与所述非易失性存储器的各个物理地址之间的映射;在对所述存储器系统的电力恢复之后,基于所述非易失性存储器中存储的所述第一列表,向与所述第一列表所含的所述多个逻辑地址中的各个逻辑地址对应的所述逻辑物理地址转换表的项中储存表示错误的值。23.如权利要求19所述的存储器系统,其中,所述控制器还构成为,管理通过第一模式控制写入的第一区块的集合、以及通过第二模式控制写入的第二区块的集合,所述第一模式是在发生了所述断电的情况下,对与从所述主机接收完成且向所述非易失性存储器的写入未完成的写入未完成数据分别对应的逻辑地址的列表进行备份的模式,所述第二模式是在发生了所述断电的情况下,完成所述写入未完成数据向所述非易失性存储器的写入的模式。24.如权利要求19所述的存储器系统,其中,所述第一存储位置信息包含所述第一写入目标块的区块地址、以及所述写入未完成区
域的开头的存储位置相对于所述第一写入目标块的开头的存储位置的偏移。25.一种存储器系统的控制方法,控制包含含有多个区块的非易失性存储器的存储器系统,其特征在于,包括:将所述多个区块中的一个区块分配为第一写入目标块;在每次从主机接收指定逻辑地址的写入命令时,将与所述写入命令相关联的数据储存于所述存储器系统的内部缓存器中;将与所述内部缓存器中储存的所述数据分别对应的逻辑地址的集合追加到第一列表中,该第一列表是用于保持与从所述主机接收完成且向所述第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址的列表;在所述内部缓存器中储存的未写入的数据的大小每次达到所述非易失性存储器的写入大小时,向所述第一写入目标块写入具有所述写入大小的数据;在能够从所述第一写入目标块读出所述写入大小量的数据的情况下,从所述第一列表中删除与所述能够读出的数据对应的逻辑地址的集合,并以第一存储位置信息表示所述第一写入目标块的写入未完成区域的开头的存储位置的方式,使所述第一存储位置信息所表示的存储位置前进所述写入大小量;在发生了无来自所述主机的预告而向所述存储器系统的供电被断开的断电的情况下,使用来自积蓄向所述存储器系统供给的电力的电容器的电力,向所述非易失性存储器写入所述第一列表以及所述第一存储位置信息。26.如权利要求25所述的存储器系统的控制方法,其中,所述第一列表所含的所述多个逻辑地址以与所述写入未完成数据被写入所述写入未完成区域的顺序相同的顺序排列。27.如权利要求25所述的存储器系统的控制方法,其中,还包括:在对所述存储器系统的电力恢复后,向所述主机提供所述非易失性存储器中存储的所述第一列表作为表示由于所述断电而丢失的数据的信息。28.如权利要求25所述的存储器系统的控制方法,其中,还包括:使用逻辑物理地址转换表来管理为了访问所述存储器系统而由所述主机使用的各个逻辑地址与所述非易失性存储器的各个物理地址之间的映射;在对所述存储器系统的电力恢复之后,基于所述非易失性存储器中存储的所述第一列表,向与所述第一列表所含的所述多个逻辑地址中的各个逻辑地址对应的所述逻辑物理地址转换表的项中储存表示错误的值。29.如权利要求25所述的存储器系统的控制方法,其中,还包括:管理通过第一模式控制写入的第一区块的集合、以及通过第二模式控制写入的第二区块的集合,所述第一模式是在发生了所述断电的情况下,对与从所述主机接收完成且向所述非易失性存储器的写入未完成的写入未完成数据分别对应的逻辑地址的列表进行备份的模式,所述第二模式是在发生了所述断电的情况下,完成所述写入未完成数据向所述非易失性存储器的写入的模式。30.如权利要求25所述的存储器系统的控制方法,其中,所述第一存储位置信息包含所述第一写入目标块的区块地址、以及所述写入未完成区域的开头的存储位置相对于所述第一写入目标块的开头的存储位置的偏移。
技术总结
能够确定哪一数据丢失的存储器系统以及存储器系统的控制方法。存储器系统的控制器响应于从主机接收到指定逻辑地址的写入命令,将从主机接收的数据写入第一写入目标块。控制器管理第一列表以及第一存储位置信息,第一列表包含与从主机接收完成且向第一写入目标块的写入未完成的写入未完成数据分别对应的多个逻辑地址,第一存储位置信息表示第一写入目标块中的、数据的写入未完成的写入未完成区域的开头的存储位置。控制器在无来自主机的预告而发生了断电的情况下,使用来自电容器的电力,向非易失性存储器写入第一列表以及第一存储位置信息。位置信息。位置信息。
技术研发人员:菅野伸一 佐佐木勇辉
受保护的技术使用者:铠侠股份有限公司
技术研发日:2022.06.22
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/