具体实施方式
以下,参照附图来说明实施方式。
首先,参照图1来说明包括一个实施方式涉及的存储器系统的信息处理系统1的构成。
该存储器系统是构成为向非易失性存储器写入数据、从非易失性存储器读出数据的半导体储存设备。该存储器系统例如作为NAND Flash技术基础的固态驱动器(SSD)3来实现。
信息处理系统1包括主机(主机设备)2和SSD3。主机2是如服务器、个人计算机那样的信息处理装置。作为主机2发挥作用的服务器的典型例,可列举数据中心内的服务器。
在主机2由数据中心内的服务器实现的实例中,该主机(服务器)2也可以经由网络50连接在多个最终用户终端51上。主机2能够向这些最终用户终端51提供各种服务。多个虚拟机可以在作为该主机(服务器)2发挥作用的物理服务器上被执行。这些虚拟机能够作为虚拟服务器发挥作用,该虚拟服务器构成为向对应的客户端(最终用户终端51)提供各种服务。
SSD3能够被用作作为主机2发挥作用的信息处理装置(计算设备)的主储存器。SSD3既可以内置于信息处理装置中,也可以经由电缆或网络连接在信息处理装置上。
作为用于将主机2和SSD3相互连接的接口,可使用SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)、Ethernet(注册商标)、Fibrechannel、NVM Express(NVMe)(注册商标)等。
SSD3具备控制器4和非易失性存储器(NAND型闪速存储器)5。SSD3也可以具备随机存取存储器、例如DRAM6。
NAND型闪速存储器5包括存储器单元阵列,该存储器单元阵列包括配置成矩阵状的多个存储器单元。NAND型闪速存储器5可以是二维结构的NAND型闪速存储器,也可以是三维结构的NAND型闪速存储器。
NAND型闪速存储器5的存储器单元阵列包括多个块B0~Bm-1。块B0~Bm-1分别由许多页(在此为页P0~Pn-1)组成。块B0~Bm-1作为擦除单位发挥作用。块有时也称为“擦除块”或“物理块”。页P0~Pn-1分别包括连接于同一字线的多个存储器单元。页P0~Pn-1是数据写入工作和数据读取工作的单位。
控制器4经由如Toggle、开放NAND闪存接口(ONFI)那样的NAND接口13、和多个信道(Ch),与NAND型闪速存储器5电连接。NAND接口13作为NAND控制电路发挥作用,该NAND控制电路构成为控制NAND型闪速存储器5。
如图2所示,NAND型闪速存储器5包括多个NAND型闪速存储器裸片(在图2中示出为“NAND裸片”)。各NAND型闪速存储器裸片是包括含有多个块的存储器单元阵列和控制该存储器单元阵列的周边电路的非易失性存储器裸片。各个NAND型闪速存储器裸片能够独立地工作。因而,NAND型闪速存储器裸片作为单一的并行工作单位发挥作用。NAND型闪速存储器裸片也称为“NAND型闪速存储器芯片”。
在图2中,示例了下述情况:在NAND接口13连接有多个信道Ch0、Ch1、Ch2、…ChN,在这些信道Ch0、Ch1、Ch2、…ChN的各信道上分别连接有相同数量(例如每个信道K个裸片,K为2以上的整数)的NAND型闪速存储器裸片。各信道包括用于与对应的NAND型闪速存储器裸片进行通信的通信线路(存储器总线)。
在图2中,NAND型闪速存储器裸片600、601、602~606连接在信道Ch0上。NAND型闪速存储器裸片610、611、612~616连接在信道Ch1上。NAND型闪速存储器裸片620、621、622~626连接在信道Ch2上。同样地,NAND型闪速存储器裸片640、641、642~646连接在信道ChN上。
控制器4经由信道Ch0、Ch1、Ch2、…ChN控制NAND型闪速存储器5。控制器4能够同时驱动信道Ch0、Ch1、Ch2、…ChN。也就是说,NAND接口13包括分别与信道Ch0、Ch1、Ch2、…ChN对应的N个NAND控制电路。控制器4能够通过使用这些NAND控制电路相互独立地驱动信道Ch0、Ch1、Ch2、…ChN。
在本实施方式中,控制器4将K×N个NAND型闪速存储器裸片600~646分类为多个裸片组,以使得NAND型闪速存储器裸片的每一个仅属于一个裸片组。以下,将该裸片组称为“非易失性存储器子集(NVM集)”。
在图2中,各NVM集跨多个信道Ch0、Ch1、Ch2、…ChN。例如,NVM集60包括分别连接在信道Ch0、Ch1、Ch2、…ChN的NAND型闪速存储器裸片600、610、620、…640。NVM集61包括分别连接在信道Ch0、Ch1、Ch2、…ChN的NAND型闪速存储器裸片601、611、621、…641。NVM集62包括:连接于信道Ch0的NAND型闪速存储器裸片602、603、…605、606;连接于信道Ch1的NAND型闪速存储器裸片612、613、…615、616;连接于信道Ch2的NAND型闪速存储器裸片622、623、…625、626;以及连接于信道ChN的NAND型闪速存储器裸片642、643、…645、646。
这样地,在图2中,K×N个NAND型闪速存储器裸片600~646被分类为各自跨多个信道的多个NVM集。在各NVM集中,能够同时执行对最大N个NAND型闪速存储器裸片的数据写入/读出工作。
能够使能由主机2指定的多个区域与这些多个NVM集分别相关联。这些多个区域是能由主机2访问的逻辑区域。与各NVM集对应的区域的数量既可以是1个,也可以是2个以上。进而,与各NVM集对应的区域的数量也可以按每个NVM集而不同。
控制器4能够以无裸片争用的方式同时执行分别指定与不同的NVM集对应的不同的区域的多个I/O指令(写指令或读指令)。因此,例如,即使在对NVM集60的数据写入工作的执行中从主机2接收到面向与NVM集61对应的区域的读指令,控制器4也不用等待该数据写入工作的完成,就能够立即执行与该读指令对应的数据读出工作。
在图1所示的SSD3中,控制器4也能够作为闪存转换层(FTL)发挥作用,该闪存转换层构成为执行NAND型闪速存储器5的数据管理和NAND型闪速存储器5的块管理。
在由该FTL执行的数据管理中,包括(1)表示各逻辑地址与NAND型闪速存储器5的各物理地址之间的对应关系的映射信息的管理、(2)用于隐藏以页为单位的读出/写入和以块为单位的擦除工作的处理等。逻辑地址是为了对SSD3进行地址指定而被主机2使用的地址。作为该逻辑地址,通常使用逻辑块地址(LBA)。
各逻辑块地址(LBA)与各物理地址之间的映射的管理是使用作为地址转换表(逻辑物理地址转换表)发挥作用的查找表(LUT)来执行的。与某LBA对应的物理地址表示写入了该LBA的数据的NAND型闪速存储器5内的物理存储位置。查找表(LUT)也可以在SSD3的电源接通时从NAND型闪速存储器5被加载到DRAM6。一般而言,各查找表的大小较大。因此,各查找表的至少一部分也可以作为地址转换表高速缓存存储在DRAM6中。
在NAND型闪速存储器5中,对页的数据写入能够在每个擦除周期仅进行一次。因而,控制器4将与某LBA对应的更新数据写入别的物理存储位置而不是与该LBA对应的存储有以前的数据的物理存储位置。并且,控制器4更新对应的查找表(LUT)以将该LBA与该别的物理存储位置相关联。由此,与该LBA对应的以前的数据被无效化。
在本实施方式中,使用多个查找表(LUT)40、41、42…。这些查找表(LUT)40、41、42…基本上分别对应于多个NVM集。再者,各查找表既可以与某一个区域建立对应,也可以与无用单元收集的一个组建立对应。
各NVM集包括至少一个无用单元收集用的组。无用单元收集用的组包括多个块,作为被实施无用单元收集的单位来使用。对于仅包括一个无用单元收集用的组的NVM集,也可以仅使用一个查找表。对于包括多个无用单元收集用的组的NVM集,也可以使用多个查找表。
控制器4还具有多命名空间控制功能。多命名空间控制功能为,为了能够像是多个驱动器那样处理一个储存设备,能够对SSD3分配多个逻辑地址空间(LBA空间)。
上述多个区域也可以分别由命名空间来实现。各命名空间相当于NAND型闪速存储器5内的区域。对各命名空间分配逻辑地址范围(LBA范围)。LBA范围的大小(也就是说LBA的数量)按每个命名空间而可变。各LBA范围从LBA0开始。各个命名空间通过这些命名空间的标识符来标识。
来自主机2的写指令包括特定的命名空间的标识符、也就是命名空间ID(NSID)。控制器4基于来自主机2的写指令内的命名空间ID来决定应被写入写数据的访问对象的区域(命名空间)。同样地,来自主机2的读指令也包括与特定的命名空间对应的命名空间ID。控制器4基于来自主机2的读指令内的命名空间ID来决定应被读出数据的访问对象的区域(命名空间)。
在块管理中包括坏块的管理、损耗均衡(Wear leveling)、无用单元收集等。
损耗均衡是用于使各块的消耗均匀化的工作。
无用单元收集是用于增加能够写入数据的空闲块的个数的工作。在无用单元收集工作中,控制器4仅将有效数据和无效数据混杂的几个块内的有效数据向别的块(例如空闲块)复制。在此,有效数据是指从LUT参照的数据(即根据逻辑地址作为最新的数据而链接的数据)、且是有可能之后从主机2被读出的数据。无效数据是指已经不可能从主机2被读出的数据。例如,与某逻辑地址相关联的数据是有效数据,与哪个逻辑地址都不相关联的数据是无效数据。并且,控制器4将复制后的有效数据的LBA分别映射到该有效数据的复制目的地物理地址。通过有效数据被复制到别的块而变为仅有无效数据的块作为空闲块被释放。由此,该块能够在执行了其擦除工作后被再次利用。
接着,对控制器4的构成进行说明。
控制器4包括主机接口11、CPU12、NAND接口13、以及DRAM接口14等。这些CPU12、NAND接口13、DRAM接口14经由总线10相互连接。
该主机接口11是构成为执行与主机2的通信的主机接口电路。该主机接口11例如可以是PCIe控制器(NVMe控制器)。主机接口11从主机2接收各种指令(写指令、读指令、各种控制指令、取消映射(UNMAP)指令等)。
写指令向SSD3请求以写入由该写指令所指定的数据。写指令也可以包括开始LBA、传输长度、以及ID。写指令内的ID是用于唯一地标识应被写入数据的区域的标识符。该ID也可以是命名空间ID。读指令向SSD3请求以读出由该读指令所指定的数据。读指令也可以包括开始LBA、传输长度、以及ID。读指令内的ID是用于唯一地标识应被读出数据的区域的标识符。该ID也可以是命名空间ID。
CPU12是构成为控制主机接口11、NAND接口13、DRAM接口14的处理器。CPU12响应于SSD3的电源接通而从NAND型闪速存储器5或未图示的ROM向DRAM6加载控制程序(固件),并且通过执行该固件来进行各种处理。再者,固件也可以加载到控制器4内的未图示的SRAM上。该CPU12例如除了执行上述的FTL处理之外,还能够执行用于处理来自主机2的各种指令的指令处理等。CPU12的工作通过被CPU12执行的上述固件来控制。再者,FTL处理和指令处理的一部分或全部也可以通过控制器4内的专用硬件来执行。
CPU12能够作为NVM集控制部21、无用单元收集(GC)工作控制部22、NVM集间复制控制部23、新NVM集作成控制部24、NVM集交换控制部25、NVM集结合部26发挥作用。
NVM集控制部21将K×N个NAND型闪速存储器裸片600~646分类为多个NVM集,以使得K×N个NAND型闪速存储器裸片600~646的每一个仅属于一个NVM集。并且,NVM集控制部21按照对包括与各NVM集对应的至少一个区域的多个区域的任意一个进行指定的来自主机2的I/O指令而执行对多个NVM集内的一个NVM集的数据写入/读出工作。例如,在多个NVM集具有第一NVM集和第二NVM集的实例中,NVM集控制部21按照对与第一NVM集对应的至少一个区域进行指定的来自主机2的第一I/O指令而执行对第一NVM集的数据写入/读出工作,按照对与第二NVM集对应的至少一个区域进行指定的来自主机2的第二I/O指令而执行对第二NVM集的数据写入/读出工作。
另外,NVM集控制部21通过与多个NVM集分别对应的多个空闲块池按每个NVM集单独地管理NAND型闪速存储器5(许多NAND型闪速存储器裸片)5内的空闲块组。空闲块指的是没有保持有效数据的块。例如,属于第一NVM集的空闲块分别通过与第一NVM集对应的第一空闲块池来管理,属于第二NVM集的空闲块分别通过与第二NVM集对应的第二空闲块池来管理。在将SSD3初始化的工作时,NVM集控制部21将属于第一NVM集的全部块配置在第一空闲块池,将属于第二NVM集的全部块配置在第二空闲块池。
对于多个NVM集的每一个,NVM集控制部21执行以下工作:将对应的空闲块池内的空闲块之一分配为应被写入用户数据(来自主机2的写数据、或为了无用单元收集而应被复制的数据)的块的工作;向所分配的块写入该用户数据的工作;通过数据块池(也称为有效块池)管理被该用户数据填满的块的工作;以及将被数据块池管理且没有保持有效数据的块返还到对应的空闲块池的工作。
由此,能够仅由与某个NVM集对应的1个以上的区域来使用配置在与该NVM集对应的空闲块池中的块组,因此能够保证在多个NVM集间不发生裸片争用。再者,数据块池是指用于对属于对应的NVM集且保持有效数据的块的每一个进行管理的池。
在本实施方式中,能够对分离了的NVM集和共有NVM集这两种NVM集进行处理。
分离了的NVM集是包括仅一个无用单元收集用组(仅一个数据块池)的NVM集。也就是说,与分离了的NVM集对应的空闲块池是对属于该NVM集且保持有效数据的块的每一个进行管理的单一数据块池所专用的空闲块池。在分离了的NVM集中,单一数据块池占有与分离了的NVM集对应的空闲块池。
共有NVM集是包括多个无用单元收集用组(多个数据块池)的NVM集。也就是说,与共有NVM集对应的空闲块池是对属于该NVM集且保持有效数据的块的每一个进行管理的多个数据块池所共有的空闲块池。在共有NVM集中,多个数据块池共有与共有NVM集对应的空闲块池。
无用单元收集(GC)工作控制部22按每个上述的无用单元收集用组独立地执行无用单元收集。
在分离了的NVM集的无用单元收集、也就是属于分离了的NVM集的单一数据块池内的块组的无用单元收集中,GC工作控制部22执行以下工作:(1)将与分离了的NVM集对应的空闲块池内的空闲块之一分配为复制目的地块;(2)从包括在该数据块池中且有效数据和无效数据混杂的一个以上的块,仅将有效数据向复制目的地块复制;(3)将因有效数据向复制目的地块的复制而变为仅无效数据的块,返还到与分离了的NVM集对应的空闲块池。由此,能够仅由与某分离了的NVM集对应的1个以上的区域来使用由该NVM集的GC作成的空闲块,因此能够保证多个NVM集间不发生裸片争用。
在共有NVM集的无用单元收集、也就是属于共有NVM集的多个数据块池的一个数据块池内的块组的无用单元收集中,GC工作控制部22执行以下工作:(1)将与共有NVM集对应的空闲块池内的空闲块之一分配为复制目的地块;(2)从包括在一个数据块池中且有效数据和无效数据混杂的一个以上的块,仅将有效数据向复制目的地块复制;(3)将因有效数据向复制目的地块的复制而变为仅无效数据的一个以上的块,返还到与共有NVM集对应的空闲块池。由此,能够仅由与某个共有NVM集对应的1个以上的区域来使用由该共有NVM集的GC作成的空闲块,因此能够保证多个NVM集间不发生裸片争用。
NVM集间复制控制部23为了使各NVM集的消耗度(编程/擦除周期的数量)均匀而执行NVM集间复制工作。该NVM集间复制工作能够用于例如将具有高消耗度的分离了的NVM集所存储的有效数据向具有低消耗度的分离了的NVM集复制。由此,能够使这些NVM集的消耗度均匀。主机2能够向SSD3发送包括对复制源NVM集和复制目的地NVM集进行指定的参数的NVM集间复制指令。
NVM集间复制控制部23执行以下工作:(1)从属于复制源NVM集的块中选择保持有效数据的块作为复制源块;(2)仅将复制源块内的有效数据复制到从与复制目的地NVM集对应的空闲块池中所分配的复制目的地块;(3)更新对各逻辑地址与复制源NVM集的各物理地址之间的映射进行管理的查找表,向与所复制的有效数据对应的逻辑地址映射表示复制了有效数据的复制目的地块内的物理存储位置的物理地址;(4)在复制源块中变得没有有效数据的情况下,将复制源块返还到与复制源NVM集对应的空闲块池;(5)反复进行(1)~(4)的工作,直到在复制源NVM集中变得不存在保持有效数据的块。由此,能够将复制源NVM集内的数据(具有高更新频率的数据)向具有较少的编程/擦除周期的数量的复制目的地NVM集移动。其结果是,消耗度低的复制目的地NVM集被用于具有高更新频率的数据的写入。因此,能够使复制源NVM集的编程/擦除周期的数量达到限制值的定时延迟。
新NVM集作成控制部24从其它的NVM集作成新的NVM集。例如,新NVM集作成控制部24能够将某个NVM集内的一部分的NAND型闪速存储器裸片集合作成为新的NVM集。由此,能够将一个NVM集分割为2个NVM集。
NVM集交换控制部25为了使各NVM集的消耗度(编程/擦除周期的数量)均匀而执行NVM集交换工作。该NVM集交换工作能够用于例如在具有高消耗度的分离了的NVM集与具有低消耗度的分离了的NVM集之间交换数据。由此,能够使这些NVM集的消耗度均匀。主机2能够向SSD3发送:包括对于应交换所存储的数据的2个NVM集(第一NVM集、第二NVM集)进行指定的参数的NVM集交换指令。
NVM集交换控制部25执行仅将第一NVM集内的有效数据向第二NVM集复制的工作、和仅将第二NVM集内的有效数据向第一NVM集复制的工作。
在仅将第一NVM集内的有效数据向第二NVM集复制的工作中,NVM集交换控制部25执行以下工作:(1)从属于第一NVM集的块中选择保持有效数据的块作为复制源块;(2)仅将复制源块内的有效数据复制到从与第二NVM集对应的空闲块池所分配的复制目的地块;(3)更新对各逻辑地址与第一NVM集的各物理地址之间的映射进行管理的查找表,向与所复制的有效数据对应的逻辑地址映射表示复制了有效数据的复制目的地块内的物理存储位置的物理地址;(4)在复制源块中变得没有有效数据的情况下,将复制源块返还到与第一NVM集对应的空闲块池;(5)反复进行(6)~(9)的工作,直到在第一NVM集中变得不存在保持有效数据的块。
在仅将第二NVM集内的有效数据向第一NVM集复制的工作中,NVM集交换控制部25执行以下工作:(1)从属于第二NVM集的块中选择保持有效数据的块作为复制源块;(2)仅将复制源块内的有效数据复制到从与第一NVM集对应的空闲块池所分配的复制目的地块;(3)更新对各逻辑地址与第二NVM集的各物理地址之间的映射进行管理的查找表,向与所复制的有效数据对应的逻辑地址映射表示复制了有效数据的复制目的地块内的物理存储位置的物理地址;(4)在从复制源块中变得没有有效数据的情况下,将复制源块返还到与第二NVM集对应的空闲块池;(5)反复进行(1)~(4)的工作,直到在第二NVM集中变得不存在保持有效数据的块。
由此,能够使这两个NVM集的消耗度均匀化。
NVM集结合部26将2个以上的NVM集结合到一个NVM集。结合对象的2个以上的NVM集和结合目的地的一个NVM集能够由主机2指定。
NAND接口13在CPU12的控制下控制NAND型闪速存储器5。DRAM接口14是构成为在CPU12的控制下控制DRAM6的DRAM控制器。DRAM6的存储区域的一部分被用作用于暂时存储来自主机2的写数据的写缓冲器(WB)。在本实施方式中,利用多个写缓冲器(WB)30、31、32…。也可以按每个NVM集准备至少一个写缓冲器(WB)。另外,DRAM6的存储区域的其他的一部分被用于上述的查找表(LUT)40、41、42…的存储。
图3表示与图2的各NVM集对应的块管理和与各NVM集对应的一个以上的区域(命名空间)的关系的例子。
NVM集60包括连接于信道Ch0的NAND型闪速存储器裸片600、连接于信道Ch1的NAND型闪速存储器裸片610、连接于信道Ch2的NAND型闪速存储器裸片620、…、连接于信道ChN的NAND型闪速存储器裸片640。属于NVM集60且没有保持有效数据的块(空闲块)分别通过与NVM集60对应的空闲块池80来管理。在将SSD3初始化的处理中,控制器4在与NVM集60对应的空闲块池80中配置属于NVM集60的全部块、也就是NAND型闪速存储器裸片600、610、620、…640内的全部块。
属于NVM集60的块是使用空闲块池80和NVM子集90来管理的。NVM子集90是用于对属于NVM集60且保持有效数据的块的每一个进行管理的数据块池。该NVM子集90所含有的块组构成一个无用单元收集用组。
空闲块池80是专用于一个NVM子集90的空闲块池。因此,NVM集60作为由一个NVM子集90专有的NVM集(分离了的NVM集)发挥作用。一个写缓冲器(WB)30与NVM子集90相关联。
NVM集60被用作用于能由主机2指定的至少一个区域(命名空间)的物理存储空间。NVM集60也可以是仅专用于一个命名空间的物理存储空间。在图3中,例示了NVM集60被用作2个命名空间100、101用的物理存储空间的情况。
NVM集61包括连接于信道Ch0的NAND型闪速存储器裸片601、连接于信道Ch1的NAND型闪速存储器裸片611、连接于信道Ch2的NAND型闪速存储器裸片621、…、连接于信道ChN的NAND型闪速存储器裸片641。属于NVM集61且没有保持有效数据的块(空闲块)分别通过与NVM集61对应的空闲块池81来管理。在将SSD3初始化的处理中,控制器4在与NVM集61对应的空闲块池81中配置属于NVM集61的全部块、也就是NAND型闪速存储器裸片601、611、621、…641内的全部块。
属于NVM集61的块是使用空闲块池81和NVM子集91来管理的。NVM子集91是用于对属于NVM集61且保持有效数据的块的每一个进行管理的数据块池。该NVM子集91所含有的块组构成一个无用单元收集用组。空闲块池81是专用于一个NVM子集91的空闲块池。因此,NVM集61作为由一个NVM子集91专有的NVM集(分离了的NVM集)发挥作用。一个写缓冲器(WB)31与NVM子集91相关联。
NVM集61被用作用于至少一个区域(命名空间)的物理存储空间。NVM集61也可以是仅专用于一个命名空间的物理存储空间。在图3中,例示了NVM集61被用作一个命名空间102用的物理存储空间的情况。
NVM集62包括:连接于信道Ch0的NAND型闪速存储器裸片602、603、…605、606;连接于信道Ch1的NAND型闪速存储器裸片612、613、…615、616;连接于信道Ch2的NAND型闪速存储器裸片622、623、…625、626;…连接于信道ChN的NAND型闪速存储器裸片642、643、…645、646。属于NVM集62且没有保持有效数据的块(空闲块)分别通过与NVM集62对应的空闲块池82来管理。在将SSD3初始化的处理中,控制器4在与NVM集62对应的空闲块池82中配置属于NVM集62的全部块、也就是NAND型闪速存储器裸片602~646内的全部块。
属于NVM集62的块是使用空闲块池82和NVM子集92、93、94、95来管理的。NVM子集92、93、94、95分别是用于对属于NVM集62且保持有效数据的块的每一个进行管理的数据块池。NVM子集92所含有的块组构成一个无用单元收集用组,NVM子集93所含有的块组构成另一个无用单元收集用组,NVM子集94所含有的块组构成又一个无用单元收集用组,NVM子集95所含有的块组构成再一个无用单元收集用组。空闲块池82是被NVM子集92、93、94、95共有的空闲块池。因此,NVM集62作为被多个NVM子集92~95共有的共有NVM集而发挥作用。写缓冲器(WB)32、33、34、35分别与NVM子集92、93、94、95相关联。
NVM集62被用作用于至少一个区域(命名空间)的物理存储空间。NVM集62可以是仅专用于一个命名空间的物理存储空间,也可以是用于多个命名空间的物理存储空间。在图3中,例示了NVM集62被用作4个命名空间103、104、105、106用的物理存储空间的情况。
另外,在图3中,例示了命名空间103使用2个NVM子集92、93的情况。例如,与命名空间103对应的LBA范围也可以被分割为2个子LBA范围。与一个子LBA范围对应的写数据(例如更新频率低的冷数据)也可以经由写缓冲器(WB)32写入到NVM子集92用的输入块(写入目的地块)。与另一个子LBA范围对应的写数据(例如更新频率高的热数据(元数据))也可以经由写缓冲器(WB)33写入到NVM子集93用的输入块(写入目的地块)。
在图3中,按照包括命名空间100或101的ID的来自主机2的I/O指令,执行对NVM集60的数据写入/读出工作。另外,按照包括命名空间102的ID的来自主机2的I/O指令,执行对NVM集61的数据写入/读出工作。另外,按照包括命名空间103~106的任一个命名空间的ID的来自主机2的I/O指令,执行对NVM集62的数据写入/读出工作。因此,能够同时访问NVM集60、61、62各自,能够抑制起因于裸片争用的较长的等待时间(特别是较长的读取等待时间)。
另外,无用单元收集按每个NVM子集独立地被执行,因此专有一个以上的NVM子集的命名空间不受到被其它命名空间使用的其它NVM子集的无用单元收集带来的影响(GC争用)。
共有NVM集62具有以下的特点。
在共有NVM集62的内部,由于在多个NVM子集92~95间共有了空闲块池82,所以有时发生裸片争用。但是,在需要分配某NVM子集用的新的输入块时,控制器4能从共有空闲块池82内的空闲块组中选择编程/擦除周期的数量少的块,将该选择出的块作为新的输入块来分配。由此,能够使NVM子集92、93、94、95各自的消耗变得均匀。
另外,分离了的NVM集60、61具有以下的特点。
在分离了的NVM集60、61的各自的内部,一个NVM子集能够专有一个空闲块池。因此,如果一个命名空间对应于该一个NVM子集,则该命名空间能够以无裸片争用的方式专有分离了的NVM集。但是,由于分离了的NVM集与其它NVM集不共有空闲块组,因此,如果存储在某特定的分离了的NVM集的数据的改写频率高,则可能产生该NVM集的消耗度比其它NVM集的消耗度高的状态。这样,不均等的消耗成为使SSD3的寿命降低的主要原因。
在本实施方式中,能够使共有NVM集和分离了的NVM集共存于1台SSD3内。因此,例如能够按照工作负载(work load)分别使用共有NVM集和分离了的NVM集。
另外,在图3的实例中,对各个命名空间提供以下的环境。
<NVM集60>
命名空间100、101共有一个NVM子集90。不会发生命名空间100、101与其它命名空间之间的裸片争用,但可能发生命名空间100、101间的GC争用。
<NVM集61>
命名空间102专有一个NVM子集91。不会发生命名空间102与其它命名空间之间的裸片争用、GC争用。
<NVM集62>
命名空间103专有2个NVM子集92、93。可能发生命名空间103与使用NVM集62的其它命名空间之间的裸片争用,但不会发生命名空间103与其它命名空间之间的GC争用。
命名空间104、105共有一个NVM子集94。可能发生命名空间104、105与使用NVM集62的其它命名空间之间的裸片争用。另外,不会发生命名空间104、105与其它命名空间之间的GC争用,但可能发生命名空间104、105间的GC争用。
命名空间106专有一个NVM子集95。可能发生命名空间106与使用NVM集62的其它命名空间之间的裸片争用,但不会发生命名空间106与其它命名空间之间的GC争用。
接着,参照图4,说明用于分离了的NVM集60、61的主机写入/无用单元收集工作。
图4的左上部示出了用于NVM集60的主机写入/无用单元收集工作。
(1)用户输入块的分配
最初,空闲块池80内的1个空闲块被分配为用户输入块210。用户输入块210是指用于写入来自主机2的写数据的块,也称为写入目的地块。再者,如果用户输入块210已经被分配,则不执行该工作。
(2)主机写入
来自主机2的写数据从写缓冲器30写入到用户输入块210。在写缓冲器30中,暂时存储有与命名空间100或命名空间101相关联的写数据。然后,与NVM集60对应的查找表被更新,由此向与写数据对应的逻辑地址(LBA),映射表示被写入了该写数据的用户输入块210内的物理存储位置的物理地址。
(3)用户输入块的移动
当用户输入块210被写数据填满时,该用户输入块210移动到NVM子集(数据块池)90。也就是说,被数据填满的用户输入块210通过NVM子集(数据块池)90来管理。
(4)GC输入块的分配
在NVM集60中需要执行无用单元收集的情况下,与其它NVM集独立地,执行用于NVM子集90内的块组的无用单元收集工作。例如,也可以在NVM子集90所包括的块数比与NVM子集90对应的某阈值X1多的情况下,判断为需要进行无用单元收集工作。阈值X1可以基于能分配给NVM子集90用的块的总数来决定。例如,从能分配给NVM子集90用的块的总数减去预定数的剩余的值也可以用作与NVM子集90对应的某阈值X1。
在NVM集60中需要进行无用单元收集工作的情况下,空闲块池80内的1个空闲块被分配为GC输入块200。GC输入块210是指在无用单元收集中成为有效数据的复制目的地的块,也称为复制目的地块。
(5)有效数据的复制
从NVM子集90内的块中选择有效数据和无效数据混杂的一个以上的块作为复制源块。仅该选择出的块的有效数据被复制到GC输入块200。然后,与NVM集60对应的查找表被更新,由此,向与被复制的有效数据对应的逻辑地址(LBA),映射表示被复制了该有效数据的GC输入块200内的物理存储位置的物理地址。
(6)GC输入块的移动
当GC输入块200被有效数据填满时,GC输入块200移动到NVM子集90。也就是说,被有效数据填满的GC输入块200通过NVM子集(数据块池)90来管理。
(7)块的返还
被NVM子集90管理且没有保持有效数据的块从NVM子集90返还到空闲块池80。没有保持有效数据的块是通过主机写入而其全部的数据被无效化的块、或者是通过无用单元收集工作而其全部的有效数据被复制到复制目的地块的块。
图4的左下部示出了用于NVM集61的主机写入/无用单元收集工作。
(1)用户输入块的分配
空闲块池81内的1个空闲块被分配为用户输入块211。
(2)主机写入
来自主机2的写数据从写缓冲器31被写入到用户输入块211。在写缓冲器31中,暂时存储有与命名空间102相关联的写数据。然后,与NVM集61对应的查找表被更新,由此,向与写数据对应的逻辑地址(LBA),映射表示被写入了该写数据的用户输入块211内的物理存储位置的物理地址。
(3)用户输入块的移动
当用户输入块211被写数据填满时,该用户输入块211移动到NVM子集(数据块池)91。也就是说,被数据填满的用户输入块211通过NVM子集(数据块池)91来管理。
(4)GC输入块的分配
在NVM集61中需要执行无用单元收集的情况下,与其它NVM集独立地,执行用于NVM子集91内的块组的无用单元收集工作。例如,也可以在NVM子集91所包括的块数比与NVM子集91对应的某阈值X1多的情况下,判断为需要进行无用单元收集工作。阈值X1可以基于能分配给NVM子集91用的块的总数来决定。例如,从能分配给NVM子集91用的块的总数减去预定数的剩余的值也可以用作与NVM子集91对应的某阈值X1。
在NVM集61中需要进行无用单元收集工作的情况下,空闲块池81内的1个空闲块被分配为GC输入块201。
(5)有效数据的复制
从NVM子集91内的块中选择有效数据和无效数据混杂的一个以上的块作为复制源块。仅该选择出的块的有效数据被复制到GC输入块201。然后,与NVM集61对应的查找表被更新,由此,向与被复制的有效数据对应的逻辑地址(LBA),映射表示被复制了该有效数据的GC输入块201内的物理存储位置的物理地址。
(6)GC输入块的移动
当GC输入块201被有效数据填满时,GC输入块201移动到NVM子集91。也就是说,被有效数据填满的GC输入块201通过NVM子集(数据块池)91来管理。
(7)块的返还
被NVM子集91管理且没有保持有效数据的块从NVM子集91返还到空闲块池81。没有保持有效数据的块是通过主机写入而其全部的数据被无效化的块、或者是通过无用单元收集工作而其全部的有效数据被复制到复制目的地块的块。
图5表示用于共有NVM集62而执行的主机写入/无用单元收集工作。在此,假设共有NVM集62仅包括2个NVM子集94、95的情况。
NVM子集94用的主机写入/无用单元收集工作如以下这样执行。
(1)用户输入块的分配
空闲块池82内的1个空闲块被分配为用户输入块214。
(2)主机写入
来自主机2的写数据从写缓冲器34写入到用户输入块214。在写缓冲器34中,暂时存储有与命名空间104或105相关联的写数据。然后,与NVM子集94对应的查找表被更新,由此,向与写数据对应的逻辑地址(LBA),映射表示被写入了该写数据的用户输入块214内的物理存储位置的物理地址。
(3)用户输入块的移动
当用户输入块214被写数据填满时,该用户输入块214移动到NVM子集(数据块池)94。也就是说,被数据填满的用户输入块214通过NVM子集(数据块池)94来管理。
(4)GC输入块的分配
在NVM子集(数据块池)94中需要执行无用单元收集的情况下,与其它NVM集及NVM集62内的其它NVM子集独立地,执行用于NVM子集94内的块组的无用单元收集工作。例如,也可以在NVM子集94所包括的块数比与NVM子集94对应的某阈值X1多的情况下,判断为需要进行无用单元收集工作。阈值X1可以基于能分配给NVM子集94用的块的总数来决定。例如,从能分配给NVM子集94用的块的总数减去预定数的剩余的值也可以用作与NVM子集94对应的某阈值X1。
在NVM子集94中需要进行无用单元收集工作的情况下,空闲块池82内的1个空闲块被分配为GC输入块204。
(5)有效数据的复制
从NVM子集94内的块中选择有效数据和无效数据混杂的一个以上的块作为复制源块。仅该选择出的块的有效数据被复制到GC输入块204。然后,与NVM子集94对应的查找表被更新,由此,向与被复制的有效数据对应的逻辑地址(LBA),映射表示被复制了该有效数据的GC输入块204内的物理存储位置的物理地址。
(6)GC输入块的移动
当GC输入块204被有效数据填满时,GC输入块204移动到NVM子集94。也就是说,被有效数据填满的GC输入块204通过NVM子集(数据块池)94来管理。
(7)块的返还
被NVM子集94管理且没有保持有效数据的块从NVM子集94返还到空闲块池82。没有保持有效数据的块是通过主机写入而其全部的数据被无效化的块、或者是通过无用单元收集工作而其全部的有效数据被复制到复制目的地块的块。
NVM子集95用的主机写入/无用单元收集工作也以与NVM子集94用的主机写入/无用单元收集工作同样的次序执行。
图6表示多个NVM集的另一个构成例。
在图6中,各NVM集包括连接于同一信道的NAND型闪速存储器裸片的集合。即,NVM集110包括连接于信道Ch0的NAND型闪速存储器裸片600、601、602、603、…605、606。NVM集111包括连接于信道Ch1的NAND型闪速存储器裸片610、611、612、613、…615、616。NVM集112包括:连接于信道Ch2的NAND型闪速存储器裸片620、621、622、623、…625、626;…连接于信道ChN的NAND型闪速存储器裸片640、641、642、643、…645、646。
在图6的NVM集构成中,对NVM集110、111、112的访问经由不同的信道而执行。因此,即使在对某个NVM集内的哪个NAND型闪速存储器裸片的数据写入/读出工作的执行中,也能够立刻执行对其它NVM集内的任意的NAND型闪速存储器裸片的数据写入/读出工作。
在各NVM集跨多个信道的图2的NVM集构成中,在NVM集间共有一个信道。因此,在图2的NVM集构成中,如果对NVM集60内的NAND型闪速存储器裸片600的写入/读出请求和对NVM集61内的NAND型闪速存储器裸片601的写入/读出请求同时发生,则有时发生由对信道Ch0的访问的竞争而引起的等待时间的增加。
在图6的NVM集构成中,对NVM集110、111、112的访问经由不同的信道而执行,因此即使同时发生分别对NVM集110、111、112的写入/读出请求,也能够立刻执行这些写入/读出请求。因此,能够减少对来自主机2的访问请求的等待时间。
但是,在图6的NVM集构成中,各NVM集的峰值(peak)I/O性能被限制为单一信道的性能。因此,图6的NVM集构成适合与能够使单一信道的性能提高的机构组合来利用。
图7表示与图6的各NVM集对应的块管理和与各NVM集对应的一个以上的区域(命名空间)的关系。
NVM集110与图2的NVM集60同样地,能够作为分离了的NVM集来发挥作用。在将SSD3初始化的处理中,属于NVM集110的全部块配置在专用于NVM子集90的空闲块池80。NVM集111与图2的NVM集61同样地,能够作为分离了的NVM集来发挥作用。在将SSD3初始化的处理中,属于NVM集111的全部块配置在专用于NVM子集91的空闲块池81。NVM集112与图2的NVM集62同样地,能够作为共有NVM集来发挥作用。在将SSD3初始化的处理中,属于NVM集112的全部块配置在被NVM子集92~95共有的空闲块池82。
图8示意地表示能够作为搭载在SSD3中的NAND型闪速存储器5来使用的闪速存储器封装体。
该闪速存储器封装体910是利用TSV(through silicon via,硅通孔)技术能够实现数据输入输出的高速化和消耗电力的降低的存储器封装体,该TSV技术使用在封装体内的被层叠的NAND型闪速存储器裸片的内部垂直地贯通的电极。在闪速存储器封装体910中,被层叠的多个NAND型闪速存储器裸片收纳在单一的封装体内。在此,例示了8个NAND型闪速存储器裸片D0~D7收纳在单一的封装体内的情况,但收纳在封装体内的NAND型闪速存储器裸片的数量不限于该例。
该闪速存储器封装体910包括如印制布线基板那样的封装体基板911、接口裸片(也称为接口芯片)Ce、上述的被层叠的NAND型闪速存储器裸片D0~D7。在封装体基板911的背面,配置有作为用于对信号进行输入输出的多个外部I/O端子(电极)而发挥作用的多个焊料凸块916。在这些信号中包括8位宽的I/O信号、各种控制信号(多个芯片使能信号CE、指令锁存使能信号CLE、地址锁存使能信号ALE、写入使能信号WE、读出使能信号RE、多个就绪/忙碌信号RB等)。8位宽的I/O信号被用于指令、地址、数据等的传送。地址的一部分也可以包括芯片地址。访问对象的NAND型闪速存储器裸片也可以通过芯片使能信号CE和芯片地址的组合来选择。
在封装体基板911的表面,配置有接口裸片Ce。接口裸片Ce经由未图示的布线层连接在多个焊料凸块916上。
被层叠的NAND型闪速存储器裸片D0~D7通过许多垂直过孔925相互连接。接口裸片Ce经由这些许多垂直过孔925向NAND型闪速存储器裸片D0~D7传送I/O信号、芯片使能信号CE、指令锁存使能信号CLE、地址锁存使能信号ALE、写入使能信号WE、读出使能信号RE等,另外经由这些许多垂直过孔925从NAND型闪速存储器裸片D0~D7接收I/O信号、就绪/忙碌信号RB等。
接口裸片Ce也可以内置并行/串行转换电路。接口裸片Ce也可以使用并行/串行转换电路将来自控制器4的8位宽的I/O信号转换为例如64位宽的I/O信号,经由包括在许多垂直过孔925内的特定的64条垂直过孔向NAND型闪速存储器裸片D0~D7传送这些64位宽的I/O信号。
垂直过孔925的各个包括贯通被层叠的NAND型闪速存储器裸片D0~D7各自的半导体基板的多个贯通电极V、和将被层叠的NAND型闪速存储器裸片D0~D7间分别连接的多个凸块电极(焊料凸块)919。
在使用引线接合的以往的存储器封装体中,当被层叠的裸片的数量增加时,封装体的外部I/O端子的寄生电容、寄生电阻增大,由此很难使存储器封装体以高频率工作。
在图8的闪速存储器封装体910中,代替接合引线,通过许多垂直过孔925,使被层叠的NAND型闪速存储器裸片D0~D7相互连接。因此,能够降低外部I/O端子的寄生电容、寄生电阻,能够使闪速存储器封装体910内的各NAND型闪速存储器裸片以高频率工作。
图9是闪速存储器封装体910的剖视图。
在支承基板912的表面上安装有被层叠的NAND型闪速存储器裸片D0~D7。在NAND型闪速存储器裸片D0~D7的各自中埋入有贯通电极V。贯通电极V是贯通对应的NAND型闪速存储器裸片内的半导体基板的电极。相邻的2个NAND型闪速存储器裸片的贯通电极V之间通过焊料凸块919来连接。在该情况下,在各NAND型闪速存储器裸片的表面,贯通电极V也可以经由设置于该半导体基板的上方的布线层连接在焊料凸块919上。另外,相邻的2个NAND型闪速存储器裸片间也可以经由粘接层915物理性地结合。
在支承基板912的背面上,安装有接口裸片Ce。在支承基板912形成有布线层923。接口裸片Ce经由多个焊料凸块918连接在布线层923上。最下层的NAND型闪速存储器裸片D0的各贯通电极V连接在布线层923上。由此,接口裸片Ce与NAND型闪速存储器裸片D0~D7电连接。
支承基板912经由多个焊料凸块917连接于封装体基板911。接口裸片Ce用密封树脂921进行密封。NAND型闪速存储器裸片D0~D7用密封树脂922进行密封。密封树脂921、922的外周用密封树脂920进行密封,并且密封树脂922的上部用金属板913进行密封。
图10表示用图6说明的多个NVM集和作为这些NVM集使用的1个以上的闪速存储器封装体的关系。
在图10中,例示了NAND型闪速存储器5内的许多NAND型闪速存储器裸片被分类为2个NVM集130、131的情况。NVM集130、131分别对应于用图6说明的分离了的NVM集110、111。NVM集130包括分别连接于信道Ch0的NAND型闪速存储器裸片D0~D7,NVM集131包括分别连接于信道Ch1的NAND型闪速存储器裸片D10~D17。
NVM集130内的NAND型闪速存储器裸片D0~D7通过单一的闪速存储器封装体910来实现。在闪速存储器封装体910中,如用图8、图9说明的那样,层叠有NAND型闪速存储器裸片D0~D7,且这些NAND型闪速存储器裸片D0~D7通过许多垂直过孔(各垂直过孔包括贯通电极V和焊料凸块919)相互连接。闪速存储器封装体910的设置于封装体基板911的背面的多个外部I/O端子(焊料凸块916)连接在信道Ch0内的多个信号线上。这些信号线可以包括8位宽的I/O信号线、和用于各种控制信号(多个芯片使能信号CE、指令锁存使能信号CLE、地址锁存使能信号ALE、写入使能信号WE、读出使能信号RE、多个就绪/忙碌信号RB等)的多个控制信号线。从NAND接口13经由信道Ch0接收的这些信号经由接口裸片Ce以及多个垂直过孔传送到NAND型闪速存储器裸片D0~D7。
同样地,NVM集131内的NAND型闪速存储器裸片D10~D17也通过单一的闪速存储器封装体930来实现。闪速存储器封装体930具有与闪速存储器封装体910同样的结构。即,在闪速存储器封装体930中,层叠有NAND型闪速存储器裸片D10~D17,且这些NAND型闪速存储器裸片D10~D17通过许多垂直过孔(各垂直过孔包括贯通电极V和焊料凸块939)相互连接。闪速存储器封装体930的设置于封装体基板931的背面的多个外部I/O端子(焊料凸块936)连接在信道Ch1内的多个信号线上。这些信号线可以包括8位宽的I/O信号线、和用于各种控制信号(多个芯片使能信号CE、指令锁存使能信号CLE、地址锁存使能信号ALE、写入使能信号WE、读出使能信号RE、多个就绪/忙碌信号RB等)的多个控制信号线。从NAND接口13经由信道Ch1接收的这些信号经由接口裸片Ce以及多个垂直过孔传送到NAND型闪速存储器裸片D10~D17。
控制器4按照对与NVM集130对应的区域(命名空间)进行指定的来自主机2的I/O指令经由信道Ch0执行对NVM集130的数据写入/读出工作。另外,控制器4按照对与NVM集131对应的区域(命名空间)进行指定的来自主机2的I/O指令经由信道Ch1执行对NVM集131的数据写入/读出工作。
在图10的构成中,虽然各NVM集的峰值I/O性能限制为单一信道的性能,但是各信道的性能相比于使用了用引线接合连接多个裸片的通常的存储器封装体的情况被提高。因此,图10的构成能够同时执行对NVM集130、131各自的写入/读出请求,且能够将各NVM集的峰值I/O性能的下降抑制到最小限度。
再者,在图10中例示了通过使用了许多垂直过孔(TSV)的存储器封装体来实现各分离了的NVM集所含有的多个NAND型闪速存储器裸片的情况,但共有NVM集所含有的多个NAND型闪速存储器裸片也能够通过使用了许多垂直过孔(TSV)的存储器封装体来实现。
另外,在使用了许多垂直过孔(TSV)的单一的存储器封装体支持2个以上的信道的情况下,也可以通过单一的存储器封装体来实现与2个以上的信道对应的2个以上的NVM集所含有的多个NAND型闪速存储器裸片。
接着,参照图11~图13,关于对用图2、图3说明的NVM集60的无用单元收集工作,具体地进行说明。
在图11~图13中,为了图示简单,假设NVM集60包括2个NAND型闪速存储器裸片1~2、各裸片具有包括页P1~P4的2个块的情况。
如图11所示,空闲块池80内的空闲块(在此,为空闲块#21)被分配为GC输入块200。
接着,从NVM子集90中选择有效数据和无效数据混杂的块(块#11)作为复制源块,仅该选择出的复制源块(块#11)内的有效数据被复制到GC输入块200(块#21)。
在块#11中,有效数据d1、d3和无效数据d2、d4混杂的情况下,仅有效数据d1和数据d3被复制到GC输入块200(块#21)。此时,数据d1被复制到块#21的页P1,数据d3被复制到块#21的页P2。
当块#11的有效数据(数据d1和数据d3)被复制到GC输入块200(块#21)时,块#11的数据d1和数据d3被无效化。由此,块#11变为没有保持有效数据的块,因此如图12所示,块#11返还到空闲块池80。
在NVM子集90中存在有效数据d5、d7和无效数据d6、d8混杂的块#12。当块#12作为复制源块而被选择时,仅块#12的有效数据(数据d5和数据d7)被复制到GC输入块200(块#21)。此时,数据d5被复制到块#21的页P3,数据d7被复制到块#21的页P4。
当块#12的有效数据(数据d5和数据d7)被复制到GC输入块200(块#21)时,块#12的数据d5和数据d7被无效化。由此,块#12变为没有保持有效数据的块,因此如图13所示,块#12返还到空闲块池80。另外,数据d5和数据d7被复制到GC输入块200(块#21)时,块#21被有效数据填满。在该情况下,块#21移动到NVM子集90。
图14表示NVM集间复制工作。在此,图2中的NVM集60作为复制源NVM集进行说明,且图2中的NVM集61作为复制目的地NVM集进行说明。主机2能够指定复制源NVM集和复制目的地NVM集。复制目的地NVM集也可以是当前没有被主机2利用的NVM集。通过将当前没有被主机2利用的NVM集作为复制目的地NVM集来使用,能够防止因NVM集间复制工作而导致热数据和冷数据在复制目的地NVM集中混杂的情况。再者,在不存在当前没有被利用的NVM集的情况下,主机2也可以向SSD3发送请求作成新的NVM集的指令。
NVM集间复制工作按以下的次序执行。
(1)用户输入块的分配
在复制目的地NVM集(NVM集61)中,空闲块池81内的1个空闲块被分配为用户输入块211。
(2)主机写入
来自主机2的写数据从写缓冲器31被写入到用户输入块211。通常,在写缓冲器31中存储与对应于复制目的地NVM集的命名空间102相关联的写数据,但开始进行NVM集间复制工作后,与对应于复制源NVM集的命名空间100或101相关联的写数据被存储在写缓冲器31中。然后,与NVM子集90对应的查找表被更新,由此,向与写数据对应的逻辑地址(LBA),映射表示被写入了该写数据的用户输入块211内的物理存储位置的物理地址。
这样,在NVM集间复制工作之前,与命名空间101或命名空间100相关联的写数据的写入目的地是复制源NVM集(NVM集60)的用户输入块210,但在NVM集间复制工作后,与命名空间101或命名空间100相关联的写数据的写入目的地变为复制目的地NVM集(NVM集61)的用户输入块211。
(3)用户输入块的移动
当用户输入块211被写数据填满时,该用户输入块211移动到NVM子集(数据块池)91。也就是说,被数据填满的用户输入块211通过NVM子集(数据块池)91来管理。
(4)GC输入块的分配
在复制目的地NVM集(NVM集61)中,空闲块池81内的1个空闲块被分配为GC输入块201。
(5)有效数据从复制源NVM集向复制目的地NVM集的复制
从复制源NVM集(NVM集60)的NVM子集90内的块中选择保持有效数据的块来作为复制源块。然后,仅该复制源块内的有效数据被复制到复制目的地NVM集(NVM集61)的GC输入块(复制目的地块)201。在该情况下,首先从该复制源块中选择复制对象的有效数据。然后,从该复制源块中读出该所选择的有效数据,并且写入到GC输入块(复制目的地块)201。
当有效数据被复制到GC输入块201时,与NVM子集90对应的查找表被更新,由此,向与被复制的有效数据对应的逻辑地址(LBA),映射表示被复制了该有效数据的GC输入块201内的物理存储位置的物理地址。
(6)GC输入块的移动
在复制目的地NVM集(NVM集61)中,当GC输入块201被来自复制源NVM集(NVM集60)的块的有效数据填满时,GC输入块201移动到NVM子集91。也就是说,被有效数据填满的GC输入块201通过NVM子集(数据块池)91来管理。
(7)块的返还
在复制目的地NVM集(NVM集61)中,被NVM子集91管理且没有保持有效数据的块从NVM子集91返还到空闲块池81。例如,当NVM子集91内的某块所保持的全部数据因向用户输入块211写入新的写数据而被无效化时,该块从NVM子集91被返还到空闲块池81。
(7)’复制源块的返还
在复制源NVM集(NVM集60)中,因复制源块的有效数据被复制到GC输入块201而在该复制源块中不存在有效数据的情况下,该复制源块从NVM子集90返还到空闲块池80。
通过该NVM集间复制工作,例如能够将存储在复制源NVM集的数据(热数据)用的物理存储空间变更为具有很少的改写次数(很少的编程/擦除周期的数量)的复制目的地NVM集。因此,能够执行使NVM集间的消耗度均匀化的损耗均衡。
再者,在作为复制对象而被选择的有效数据实际地被复制到GC输入块201之前,有时具有与该有效数据的LBAx相同的LBAx的写数据(与该LBAx对应的新数据)被写入到用户输入块211。当写数据(与该LBAx对应的新数据)被写入到用户输入块211时,与NVM子集90对应的查找表被更新,由此,向与该写数据对应的LBAx,映射表示被写入了该写数据的用户输入块211内的物理存储位置的物理地址。
在该情况下,所选择的有效数据已经变为不被主机2读出的旧数据。因此,如果在作为复制对象而被选择的有效数据实际地被复制到GC输入块201之前,具有与该有效数据的LBAx相同的LBAx的写数据被写入到用户输入块211,则该有效数据的复制工作可以被中止。由此,能够防止无谓(多余)的复制工作被执行这一情况。
或者,也可以代替将有效数据的复制工作中止,而执行所选择的有效数据的复制工作本身且不更新与NVM子集90对应的查找表。由此,能够防止与LBAx对应的物理地址被变更为表示被复制了该有效数据(旧数据)的物理存储位置的值。更详细地说,也可以:每次与某LBA对应的有效数据被复制到GC输入块201时,通过参照查找表,判定与该LBA对应的物理地址是否为与复制源NVM集(NVM集60)或复制目的地NVM集(NVM集61)的任一个对应的物理地址。如果该物理地址为与复制目的地NVM集(NVM集61)对应的物理地址,则识别为与该LBA对应的新数据被写入到用户输入块211,不执行查找表的更新。另一方面,如果该物理地址是与复制源NVM集(NVM集60)对应的物理地址,则识别为被复制的有效数据为与该LBA对应的最新的数据,使查找表被更新。通过查找表的更新,向该LBA映射表示被复制了有效数据的物理存储位置的物理地址。
图15表示图14的NVM集间复制工作之前的地址转换表的内容与NVM集间复制工作之后的地址转换表的内容的关系。
在执行NVM集间复制工作之前,与NVM子集90对应的LUT40仅保持着复制源NVM集(NVM集60)的物理地址。
当从复制源NVM集(NVM集60)向复制目的地NVM集(NVM集61)开始进行NVM集间复制工作时,LUT40的物理地址依次被更新。例如,在与LBA10对应的数据d10从复制源NVM集(NVM集60)被复制到复制目的地NVM集(NVM集61)的GC输入块201的情况下,向LUT40的LBA10映射表示被复制了数据d10的复制目的地NVM集(NVM集61)内的物理存储位置的物理地址。因此,当NVM集间复制工作完成时,LUT40仅保持NVM集61的物理地址。
这样,通过使用与GC同样的手法执行NVM集间复制工作,控制器4不用进行用于作成与被复制到复制目的地NVM集(NVM集61)的数据对应的地址转换信息的特殊处理,就能够通过参照LUT40从复制目的地NVM集(NVM集61)读出被主机2请求的数据。
接着,参照图16~图18,具体地说明NVM集间复制工作。
在图16~图18中,为了图示简单,假设NVM集60包括NAND型闪速存储器裸片1~2、NVM集61包括NAND型闪速存储器裸片3~4、各裸片具有分别包括页P1~P4的2个块的情况。另外,假设从NVM集60向NVM集61复制有效数据。
如图16所示,在复制目的地NVM集(NVM集61)中,空闲块池81内的空闲块(在此为块#41)被分配为GC输入块201。
接着,在复制源NVM集(NVM集60)中,从NVM子集90内的块中选择保持有效数据的块作为复制源块,仅该选择出的复制源块(块#11)内的有效数据被复制到复制目的地NVM集(NVM集61)的GC输入块201(块#41)。
在块#11中有效数据d1、d3和无效数据d2、d4混杂的情况下,仅有效数据d1和数据d3被复制到GC输入块201(块#41)。此时,数据d1被复制到块#41的页P1,数据d3被复制到块#41的页P2。
当块#11的有效数据(数据d1和数据d3)被复制到GC输入块201(块#41)时,块#11的数据d1和数据d3被无效化。由此,块#11变为没有保持有效数据的块,因此,如图17所示,块#11返还到空闲块池80。
在NVM子集90中存在有效数据d5、d7和无效数据d6、d8混杂的块#12。当块#12被选择为复制源块时,仅块#12的有效数据(数据d5和数据d7)被复制到GC输入块201(块#41)。此时,数据d5被复制到块#41的页P3,数据d7被复制到块#41的页P4。
当块#12的有效数据(数据d5和数据d7)被复制到GC输入块201(块#41)时,块#12的数据d5和数据d7被无效化。由此,块#12变为没有保持有效数据的块,因此,如图18所示,块#12返还到空闲块池80。另外,数据d5和数据d7被复制到GC输入块201(块#41)时,块#41被有效数据填满。在该情况下,块#41移动到NVM子集91。
图19表示在2个NVM集(NVM集#1、NVM集#2)间交换数据的NVM集交换工作的概要。
在此,假设NVM集#1为NVM集60、NVM集#2为NVM集61。另外,假设:在NVM集交换工作之前,在NVM集#1(NVM集60)中存储有数据A(具有高更新频率的数据),在NVM集#2(NVM集61)中存储有数据B(具有低更新频率的数据)。
在该情况下,NVM集#1(NVM集60)的改写次数(编程/擦除周期的数量)变得比NVM集#2(NVM集61)的改写次数(编程/擦除周期的数量)多。在此,NVM集的改写次数(编程/擦除周期的数量)可以通过属于该NVM集的全部块的编程/擦除周期的数量的平均来表示,也可以通过属于该NVM集的全部块的编程/擦除周期的数量的合计来表示。
例如,NVM集#1(NVM集60)在100天的期间中被改写800次(编程/擦除周期的数量=800),相对于此,NVM集#2(NVM集61)在相同的100天的期间中仅被改写100次(编程/擦除周期的数量=100次)。在各个块的改写次数的限制值为例如1000次的情况下,当在NVM集#1中执行200次(=1000次-800次)的量的改写(编程/擦除工作)时,NVM集#1的改写次数达到该限制值。在该情况下,NVM集#1内的各块已经不能正常地发挥作用的可能性高。
在本实施方式中,能够根据需要执行在NVM集#1(NVM集60)和NVM集#2(NVM集61)之间交换数据的工作。例如,也可以在从SSD3的使用开始经过了100天的时点,根据请求NVM集交换的来自主机2的指令,在NVM集#1(NVM集60)与NVM集#2(NVM集61)之间交换数据。
在NVM集交换工作中,存储在NVM集#1(NVM集60)的有效数据被复制到NVM集#2(NVM集61)。然后,与NVM集#1(NVM集60)对应的查找表被更新,由此,向与被复制的有效数据对应的逻辑地址(LBA),映射表示复制了该有效数据的NVM集#2(NVM集61)内的物理存储位置的物理地址。
另外,存储在NVM集#2(NVM集61)的有效数据被复制到NVM集#1(NVM集60)。然后,与NVM集#2(NVM集61)对应的查找表被更新,由此,向与被复制的有效数据对应的逻辑地址(LBA),映射表示复制了该有效数据的NVM集#1(NVM集60)内的物理存储位置的物理地址。
当NVM集交换工作完成时,数据A(具有高更新频率的数据)用的物理存储空间变更为NVM集#2(NVM集61),数据B(具有低更新频率的数据)用的物理存储空间变更为NVM集#1(NVM集60)。
NVM集交换工作刚完成后的NVM集#2(NVM集61)的改写次数为100次,数据交换刚完成后的NVM集#2(NVM集61)的改写次数为100次,NVM集#1(NVM集60)的改写次数为800次。
然后,数据A再次以高频率被更新,由此NVM集#2的改写次数在100天期间增加800次。另一方面,数据B也以较低的频率被更新,由此NVM集#1的改写次数在100天期间增加100次。其结果是,在从初始状态起经过200天时(从NVM集交换起经过100天时),NVM集#2(NVM集61)的改写次数变为900次,NVM集#1(NVM集60)的改写次数变为900次。
这样地,通过执行NVM集交换工作,能够在NVM集#1(NVM集60)与NVM集#2(NVM集61)间使属于各自的块的改写次数均匀化。因而,能够使NVM集间的消耗度均匀化。
图20表示用于NVM集交换工作之前的2个NVM集而执行的主机写入/无用单元收集工作。
在NVM集交换工作执行前,在NVM集#1(NVM集60)和NVM集#2(NVM集61)中,相互独立地执行主机写入/无用单元收集工作。详细地说,如用图4说明的那样。
图21表示为了NVM集交换工作而在2个NVM集间所执行的主机写入/无用单元收集工作。
(1)用户输入块的分配
在NVM集#1中,空闲块池80内的1个块被分配为用户输入块210。另外,在NVM集#2中,空闲块池81内的1个块被分配为用户输入块211。
(2)主机写入
来自主机2的写数据从写缓冲器30被写入到用户输入块210。通常,在写缓冲器30中存储与对应于NVM集#1(NVM集60)的命名空间100或命名空间101相关联的写数据,但在开始进行NVM集交换工作后,与对应于NVM集#2(NVM集61)的命名空间102相关联的写数据被存储在写缓冲器30中。然后,与NVM集#2(NVM集61)对应的查找表被更新,由此,向与写数据对应的逻辑地址(LBA),映射表示被写入了该写数据的用户输入块210内的物理存储位置的物理地址。
这样,在NVM集交换工作之前,与命名空间102相关联的写数据的写入目的地是NVM集#2(NVM集61)的用户输入块211,但当开始进行NVM集交换工作时,与命名空间102相关联的写数据的写入目的地变更为NVM集#1(NVM集60)的用户输入块210。
另外,来自主机2的写数据从写缓冲器31被写入到用户输入块211。通常,在写缓冲器31中存储与对应于NVM集#2(NVM集61)的命名空间102相关联的写数据,但在开始进行NVM集交换工作后,与对应于NVM集#1(NVM集60)的命名空间100或101相关联的写数据被存储在写缓冲器31中。然后,与NVM集#1(NVM集60)对应的查找表被更新,由此,向与写数据对应的逻辑地址(LBA),映射表示被写入了该写数据的用户输入块211内的物理存储位置的物理地址。
这样,在NVM集交换工作之前,与命名空间101或命名空间100相关联的写数据的写入目的地是NVM集#1(NVM集60)的用户输入块210,但当开始进行NVM集交换工作时,与命名空间101或命名空间100相关联的写数据的写入目的地变更为NVM集#2(NVM集61)的用户输入块211。
(3)用户输入块的移动
当用户输入块210被写数据填满时,该用户输入块210移动到NVM子集(数据块池)90。也就是说,被数据填满的用户输入块210通过NVM子集(数据块池)90来管理。
另外,当用户输入块211被写数据填满时,该用户输入块211移动到NVM子集(数据块池)91。也就是说,被数据填满的用户输入块211通过NVM子集(数据块池)91来管理。
(4)GC输入块的分配
在NVM集#1(NVM集60)中,空闲块池80内的1个空闲块被分配为GC输入块200。
另外,在NVM集(NVM集61)中,空闲块池81内的1个空闲块被分配为GC输入块201。
(5)有效数据的交换
从复制源NVM集(NVM集60)的NVM子集90内的块中选择保持有效数据的块来作为复制源块。然后,仅该复制源块内的有效数据被复制到NVM集#2(NVM集61)的GC输入块201。然后,与NVM子集90对应的查找表被更新,由此,向与被复制的有效数据对应的逻辑地址(LBA),映射表示复制了该有效数据的GC输入块201内的物理存储位置的物理地址。
从NVM集#2(NVM集61)的NVM子集91内的块中选择保持有效数据的块来作为复制源块。然后,仅该复制源块内的有效数据被复制到NVM集#1(NVM集60)的GC输入块200。然后,与NVM子集91对应的查找表被更新,由此,向与被复制的有效数据对应的逻辑地址(LBA),映射表示复制了该有效数据的GC输入块200内的物理存储位置的物理地址。
(6)GC输入块的移动
在NVM集#1(NVM集60)中,当GC输入块200被来自NVM集#2(NVM集61)的1个以上的块的有效数据填满时,GC输入块200移动到NVM子集90。也就是说,被有效数据填满的GC输入块200通过NVM子集(数据块池)90来管理。
另外,在NVM集#2(NVM集61)中,当GC输入块201被来自NVM集#1(NVM集60)的1个以上的块的有效数据填满时,GC输入块201移动到NVM子集91。也就是说,被有效数据填满的GC输入块201通过NVM子集(数据块池)91来管理。
(7)复制源块的返还
在NVM集#1(NVM集60)中,被NVM子集90管理且没有保持有效数据的块从NVM子集90返还到空闲块池80。例如,当被NVM子集90内的某块所保持的全部数据因向用户输入块210写入新的写数据而被无效化时,该块从NVM子集90被返还到空闲块池80。
在NVM集#2(NVM集61)中,被NVM子集91管理且没有保持有效数据的块从NVM子集91返还到空闲块池81。例如,当被NVM子集91内的某块所保持的全部数据因向用户输入块211写入新的写数据而被无效化时,该块从NVM子集91返还到空闲块池81。
图22表示新NVM集作成工作的概要。
现在,假设利用了包括NAND型闪速存储器裸片600~606、610~616、620~626、…640~646的NVM集160的情况。在该NVM集160中存在空闲块池180。空闲块池180被NVM子集190B和NVM子集190C共有。进而,与NVM子集190B对应地设置有写缓冲器130B,与NVM子集190C对应地设置有写缓冲器130C。
控制器4如图22的下部所示那样,能够从NVM集160作成新的NVM集161。在该情况下,首先,从NVM集160所含有的多个NAND型闪速存储器裸片之中决定(确定)应确保为新的NVM集161用的NAND型闪速存储器裸片。在图22的例子中,作为NVM集161用的NAND型闪速存储器裸片,决定了NAND型闪速存储器裸片600、610、620、…640。这些NAND型闪速存储器裸片600、610、620、…640内的有效数据被复制到属于NVM集160内的剩余的NAND型闪速存储器裸片的块组。
由此,作成NVM集161用的空闲块池181、NVM子集190A、写缓冲器130A。NAND型闪速存储器裸片600、610、620…640内的空闲块分别通过NVM集161用的空闲块池181来管理。原来的NVM集160变为被缩小的NVM集。空闲块池180仅管理属于除了NAND型闪速存储器裸片600、610、620、…640之外的剩余的裸片的空闲块组。
图23表示为了作成新NVM集而执行的主机写入/无用单元收集工作。在此,假设从包括2个NVM子集的原来的NVM集160作成新的NVM集161的情况。
(1)用户输入块的分配
与原来的NVM集160对应的空闲块池180内的1个空闲块被分配为与NVM子集190B对应的用户输入块410。另外,空闲块池180内的1个空闲块被分配为与NVM子集190C对应的用户输入块411。再者,如果已经分配了用户输入块410、411,则不执行该工作。
(2)主机写入
来自主机2的写数据从写缓冲器130B被写入到用户输入块410。然后,与NVM子集190B对应的查找表被更新,由此,向与写数据对应的逻辑地址(LBA),映射表示被写入了该写数据的用户输入块410内的物理存储位置的物理地址。
另外,来自主机2的写数据从写缓冲器130C被写入到用户输入块411。然后,与NVM子集190C对应的查找表被更新,由此,向与写数据对应的逻辑地址(LBA),映射表示被写入了该写数据的用户输入块411内的物理存储位置的物理地址。
(3)用户输入块的移动
当用户输入块410被写数据填满时,该用户输入块410移动到NVM子集(数据块池)190B。也就是说,被数据填满的用户输入块410通过NVM子集(数据块池)190B来管理。
另外,当用户输入块411被写数据填满时,该用户输入块411移动到NVM子集(数据块池)190C。也就是说,被数据填满的用户输入块411通过NVM子集(数据块池)190C来管理。
(4)GC输入块的分配
在原来的NVM集(NVM集160)中,从空闲块池180内的空闲块将1个块分配为与NVM子集190B对应的GC输入块400。另外,从空闲块池180内的空闲块将1个块分配为与NVM子集190C对应的GC输入块401。
(5)有效数据的复制
从NVM子集190B(或NVM子集190C)内的块中选择有效数据和无效数据混杂的一个以上的块作为复制源块,仅复制源块内的有效数据被复制到GC输入块400(或GC输入块401)。然后,与NVM子集190B(或NVM子集190C)对应的查找表被更新,由此,向与被复制的有效数据对应的逻辑地址(LBA),映射表示复制了该有效数据的GC输入块400(或GC输入块401)内的物理存储位置的物理地址。
(6)GC输入块的移动
当GC输入块400(或GC输入块401)被有效数据填满时,GC输入块400(或GC输入块401)移动到NVM子集190B(或NVM子集190C)。也就是说,被有效数据填满的GC输入块通过对应的NVM子集(数据块池)来管理。
(7)、(7)’块的返还
被NVM子集190B(或NVM子集190C)管理且没有保持有效数据的块被返还到空闲块。在该情况下,不属于应分配给新的NVM集161的裸片集合的块从NVM子集190B(或NVM子集190C)返还到空闲块池180。另一方面,不属于应分配给新的NVM集161的裸片集合的块从NVM子集190B(或NVM子集190C)返还到新NVM集的空闲块池181。
再者,在上述的说明中,说明了对原来的NVM集160整体进行GC的情况,但也可以从属于应分配给新的NVM集161的裸片集合的块中优先地选择保持有效数据的块来作为复制源块,仅将该复制源块内的有效数据向GC输入块(复制目的地块)复制。由此,能够在短时间内作成新的NVM集161。
接着,使用图24~图26,具体地说明新NVM集作成工作。在图24~图26中,为了图示简单,假设NVM集330(NVM集A)包括NAND型闪速存储器裸片1~4、各裸片具有分别包括页P1~P4的2个块的情况。
首先,从属于NVM集A的NAND型闪速存储器裸片1~4中决定应确保为新的NVM集B用的NAND型闪速存储器裸片1~2。
接着,如图24所示,NVM集A的空闲块池300内的块(在此,为块#41)被分配为GC输入块320。另外,从确保为NVM集B用的NAND型闪速存储器裸片1~2的块中选择保持有效数据的块(在此为块#11)作为复制源块,该选择出的复制源块(块#11)内的有效数据被复制到GC输入块320(块#41)。
在块#11中有效数据d1、d3和无效数据d2、d4混杂的情况下,仅有效数据d1和数据d3被复制到GC输入块320(块#41)。此时,数据d1被复制到块#41的页P1,数据d3被复制到块#41的页P2。
当块#11的有效数据(数据d1和数据d3)被复制到GC输入块320(块#41)时,块#11的数据d1和数据d3被无效化。由此,块#11变为没有保持有效数据的块,因此如图25所示,块#11返还到新作成为NVM集B(新的NVM集)用的空闲块池301。
在确保为NVM集B用的NAND型闪速存储器裸片之中,存在有效数据d5、d7和无效数据d6、d8混杂的块#12。当块#12作为复制源块而被选择时,仅块#12的有效数据(数据d5和数据d7)被复制到GC输入块320(块#41)。此时,数据d5被复制到块#21的页P3,数据d7被复制到块#41的页P4。
当块#12的有效数据(数据d5和数据d7)被复制到GC输入块320(块#41)时,块#12的数据d5和数据d7被无效化。由此,块#12变为没有保持有效数据的块,因此如图26所示,块#12返还到NVM集B(新的NVM集)的空闲块池301。
图27表示NVM集结合工作的概要。
在图27中示出了将NVM集#1(NVM集163)和NVM集#2(NVM集164)结合到NVM集#3(NVM集165)的工作。
NVM集#1(NVM集163)包括NAND型闪速存储器裸片600、610、620、…640。NVM集#2(NVM集164)包括NAND型闪速存储器裸片601、611、621、…641。NVM集#3(NVM集165)包括NAND型闪速存储器裸片602~606、612~616、622~626、…642~646。
在NVM集#1(NVM集163)和NVM集#2(NVM集164)与NVM集#3(NVM集165)结合了的情况下,与NVM集#1(NVM集163)对应的空闲块池183和与NVM集#2(NVM集164)对应的空闲块池184,也与对应于NVM集#1(NVM集165)的空闲块池185结合。另外,NVM集#1(NVM集163)的NVM子集190A和NVM集#2(NVM集164)的NVM子集190B,也与NVM集#3(NVM集165)的NVM子集190C结合。
图28表示为了NVM集结合而执行的主机写入/无用单元收集工作。
在执行NVM集结合工作之前,在NVM集#1~#3中相互独立地执行写数据的写入工作和无用单元收集工作。
(1)用户输入块的分配
空闲块池183内的1个空闲块被分配为用户输入块413。另外,空闲块池184内的1个空闲块被分配为用户输入块414。进而,空闲块池185内的1个空闲块被分配为用户输入块415。再者,如果用户输入块413、414、415已经被分配,则不执行该工作。
(2)主机写入
在NVM集#1(NVM集163)中,来自主机2的写数据从写缓冲器130A被写入到用户输入块413。在写缓冲器130A中,暂时存储有与NVM子集190A相对应的写数据。然后,与NVM集163对应的查找表被更新,由此,向与写数据对应的逻辑地址(LBA),映射表示被写入了该写数据的用户输入块413内的物理存储位置的物理地址。
另外,在NVM集#2(NVM集164)中,来自主机2的写数据从写缓冲器130B被写入到用户输入块414。在写缓冲器130B中,暂时存储有与NVM子集190B相对应的写数据。然后,与NVM集164对应的查找表被更新,由此,向与写数据对应的逻辑地址(LBA),映射表示被写入了该写数据的用户输入块414内的物理存储位置的物理地址。
进而,在NVM集#3(NVM集165)中,来自主机2的写数据从写缓冲器130C被写入到用户输入块415。在写缓冲器130C中,暂时存储有与NVM子集190C相对应的写数据。然后,与NVM集165对应的查找表被更新,由此,向与写数据对应的逻辑地址(LBA),映射表示被写入了该写数据的用户输入块415内的物理存储位置的物理地址。
(3)用户输入块的移动
在NVM集#3中,当用户输入块415被写数据填满时,该用户输入块415移动到NVM子集(数据块池)190C。也就是说,被数据填满的用户输入块415通过NVM子集(数据块池)190C来管理。
在执行NVM集结合工作之前,在NVM集#1中,当用户输入块413被写数据填满时,该用户输入块413移动到NVM子集(数据块池)190A,在NVM集#2中,当用户输入块414被写数据填满时,该用户输入块414移动到NVM子集(数据块池)190B。但是,在执行了NVM集结合工作后,代替(3)而执行由(3)’表示的工作。
(3)’用户输入块向结合目的地NVM集的移动
当NVM集#1内的用户输入块413被写数据填满时,该用户输入块413移动到NVM集#3的NVM子集190C。也就是说,被数据填满的用户输入块413通过NVM子集(数据块池)190C来管理。
另外,当NVM集#2内的用户输入块414被写数据填满时,该用户输入块414移动到NVM集#3的NVM子集190C。也就是说,被数据填满的用户输入块414通过NVM子集(数据块池)190C来管理。
(4)GC输入块的分配
在NVM子集(数据块池)190A中需要执行无用单元收集的情况下,与其它NVM集独立地,执行用于NVM子集190A内的块组的无用单元收集工作。例如,也可以在NVM子集190A所包括的块数比与NVM子集190A对应的某阈值X1多的情况下,判断为需要进行无用单元收集工作。阈值X1可以基于能分配给NVM子集190A用的块的总数来决定。例如,从能分配给NVM子集190A用的块的总数减去预定数所得的剩余的值也可以用作与NVM子集190A对应的某阈值X1。
在NVM子集190A中需要进行无用单元收集工作的情况下,空闲块池183内的1个空闲块被分配为GC输入块403。
另外,在NVM子集(数据块池)190B中需要执行无用单元收集的情况下,与其它NVM集独立地,执行用于NVM子集190B内的块组的无用单元收集工作。例如,也可以在NVM子集190B所包括的块数比与NVM子集190B对应的某阈值X1多的情况下,判断为需要进行无用单元收集工作。阈值X1可以基于能分配给NVM子集190B用的块的总数来决定。例如,从能分配给NVM子集190B用的块的总数减去预定数所得的剩余的值也可以用作与NVM子集190B对应的某阈值X1。
在NVM子集190B中需要进行无用单元收集工作的情况下,空闲块池184内的1个空闲块被分配为GC输入块404。
在NVM子集(数据块池)190C中需要执行无用单元收集的情况下,与其它NVM集独立地,执行用于NVM子集190C内的块组的无用单元收集工作。例如,也可以在NVM子集190C所包括的块数比与NVM子集190C对应的某阈值X1多的情况下,判断为需要进行无用单元收集工作。阈值X1可以基于能分配给NVM子集190C用的块的总数来决定。例如,从能分配给NVM子集190C用的块的总数减去预定数所得的剩余的值也可以用作与NVM子集190C对应的某阈值X1。
在NVM子集190C中需要进行无用单元收集工作的情况下,空闲块池185内的1个空闲块被分配为GC输入块405。
(5)有效数据的复制
从NVM子集190A内的块中选择有效数据和无效数据混杂的一个以上的块作为复制源块。仅该选择出的块的有效数据被复制到GC输入块403。然后,与NVM集163对应的查找表被更新,由此,向与被复制的有效数据对应的逻辑地址(LBA),映射表示复制了该有效数据的GC输入块403内的物理存储位置的物理地址。
另外,从NVM子集190B内的块中选择有效数据和无效数据混杂的一个以上的块作为复制源块。仅该选择出的块的有效数据被复制到GC输入块404。然后,与NVM集164对应的查找表被更新,由此,向与被复制的有效数据对应的逻辑地址(LBA),映射表示复制了该有效数据的GC输入块404内的物理存储位置的物理地址。
进而,从NVM子集190C内的块中选择有效数据和无效数据混杂的一个以上的块作为复制源块。仅该选择出的块的有效数据被复制到GC输入块405。然后,与NVM集165对应的查找表被更新,由此,向与被复制的有效数据对应的逻辑地址(LBA),映射表示复制了该有效数据的GC输入块405内的物理存储位置的物理地址。
(6)GC输入块的移动
在NVM集#3中,GC输入块405被有效数据填满时,GC输入块403移动到NVM子集190C。也就是说,被有效数据填满的GC输入块405通过NVM子集(数据块池)190C来管理。
在执行NVM集结合工作之前,在NVM集#1中,当GC输入块403被有效数据填满时,GC输入块403移动到NVM子集190A,在NVM集#2中,GC输入块404被有效数据填满时,GC输入块404移动到NVM子集190B。但是,在执行了NVM集结合工作后,代替(6)而执行由(6)’表示的工作。
(6)’GC输入块向结合目的地NVM集的移动
当NVM集#1内的GC输入块403被有效数据填满时,GC输入块403移动到NVM集#3内的NVM子集190C。被有效数据填满的用户输入块403通过NVM子集(数据块池)190C管理。
另外,当NVM集#2内的GC输入块404被有效数据填满时,GC输入块404移动到NVM集#3内的NVM子集190C。被有效数据填满的用户输入块403通过NVM子集(数据块池)190C管理。
(7)块的返还
在NVM集#3中,被NVM子集190C管理且没有保持有效数据的块从NVM子集190C返还到空闲块池185。没有保持有效数据的块是因主机写入而其全部的数据被无效化的块、或者是因无用单元收集工作而其全部的有效数据被复制到复制目的地块的块。
在执行NVM集结合工作之前,在NVM集#1中,被NVM子集190A管理且没有保持有效数据的块从NVM子集190A返还到空闲块池183,被NVM子集190B管理且没有保持有效数据的块从NVM子集190B返还到空闲块池184。但是,在执行了NVM集结合工作后,代替(7)而执行由(7)’表示的工作。
(7)’NVM子集的块向结合目的地NVM集的移动
NVM子集190A的块移动到NVM集#3的NVM子集190C。也就是说,NVM子集190A的块通过NVM子集(数据块池)190C来管理。
另外,NVM子集190B的块移动到NVM集#3的NVM子集190C。即,NVM子集190B的块通过NVM子集(数据块池)190C来管理。
(8)空闲块向结合目的地NVM集的移动
NVM集#1的空闲块池183内的空闲块移动到NVM集#3的空闲块池185。另外,NVM集#2的空闲块池184内的空闲块移动到NVM集#3的空闲块池185。
图29和图30的流程图表示由控制器4执行的数据写入/读出工作的次序。
当接收来自主机2的指令时(步骤S101的是),NVM集控制部21检查所接收到的指令所含有的命名空间ID(步骤S102)。如果根据接收到的指令而指定了与NVM集#1对应的区域(步骤S103的是),则NVM集控制部21将NVM集#1决定为访问对象(步骤S104)。例如,在NSID1的命名空间对应于NVM集#1的实例中,如果接收到的指令包括NSID1,则可以判定为指定了与NVM集#1对应的区域。
如果接收到的指令为写指令(步骤S105的是),则NVM集控制部21判定是否需要进行新用户输入块的分配(步骤S106)。如果需要进行新用户输入块的分配(步骤S106的是),则NVM集控制部21将NVM集#1的空闲块池内的空闲块分配为用户输入块(步骤S107),向所分配的用户输入块写入写数据(步骤S108)。如果不需要进行新用户输入块的分配(步骤S106的否),则NVM集控制部21向已经分配的用户输入块写入写数据(步骤S108)。
在向用户输入块写入了写数据的情况下,NVM集控制部21更新与NVM集#1对应的LUT(步骤S109)。然后,NVM集控制部21将写入完成的响应(response,应答)返回给主机2(步骤S110)。
如果接收到的指令为读指令(步骤S105的否,步骤S111的是),则NVM集控制部21参照与NVM集#1对应的LUT(步骤S112),得到与读指令内的开始LBA对应的物理地址。NVM集控制部21基于该物理地址从属于NVM集#1的NVM子集的块中读出根据读指令指定的数据(步骤S113)。然后,NVM集控制部21将读出的数据和读出完成的响应返回给主机2(步骤S114)。
如果根据接收到的指令没有指定与NVM集#1对应的区域(步骤S103的否),则NVM集控制部21判定是否根据接收到的指令指定了与NVM集#2对应的区域(步骤S115)。如果根据接收到的指令而指定了与NVM集#2对应的区域(步骤S115的是),则NVM集控制部21将NVM集#2决定为访问对象(步骤S116)。例如,在NSID2的命名空间对应于NVM集#2的实例中,如果接收到的指令包括NSID2,则可以判定为指定了与NVM集#2对应的区域。
如果接收到的指令为写指令(步骤S117的是),则NVM集控制部21判定是否需要进行新用户输入块的分配(步骤S118)。如果需要进行新用户输入块的分配(步骤S118的是),则NVM集控制部21将NVM集#2的空闲块池内的空闲块分配为用户输入块(步骤S119),向所分配的用户输入块写入写数据(步骤S120)。如果不需要进行新用户输入块的分配(步骤S118的否),则NVM集控制部21向已经分配的用户输入块写入写数据(步骤S120)。
在向用户输入块写入了写数据的情况下,NVM集控制部21更新与NVM集#2对应的LUT(步骤S121)。然后,NVM集控制部21将写入完成的响应(response,应答)返回给主机2(步骤S122)。
如果接收到的指令为读指令(步骤S117的否,步骤S123的是),则NVM集控制部21参照与NVM集#2对应的LUT(步骤S124),得到与读指令内的开始LBA对应的物理地址。NVM集控制部21基于该物理地址从属于NVM集#2的NVM子集的块中读出由读指令所指定的数据(步骤S125)。然后,NVM集控制部21将读出的数据和读出完成的响应返回给主机2(步骤S126)。
图31的流程图表示通过GC工作控制部22按属于某个NVM集的每个NVM子集而执行的无用单元收集工作的次序。
GC工作控制部22判定属于NVM集#1的NVM子集#1中所包括的块数是否达到了与NVM子集#1对应的阈值X1(步骤S201)。如果属于NVM集#1的NVM子集#1所包括的块数达到了阈值X1(步骤S201的是),则GC工作控制部22开始进行NVM子集#1的GC。
GC工作控制部22首先将NVM集#1的空闲块池内的空闲块分配为复制目的地块(步骤S202)。然后,GC工作控制部22从NVM子集#1的块中选择有效数据和无效数据混杂的块作为复制源块(步骤S203)。
接着,GC工作控制部22仅将所选择的块(复制源块)的有效数据向复制目的地块复制(步骤S204)。然后,GC工作控制部22更新与NVM子集#1对应的LUT(步骤S205)。然后,GC工作控制部22将变为仅无效数据的块(复制源块)返还到NVM集#1的空闲块池(步骤S206)。
接着,GC工作控制部22判定NVM子集#1所含有的块数是否下降到与NVM子集#1对应的阈值X2(<X1)以下(步骤S207)。如果NVM子集#1所含有的块数下降到阈值X2(<X1)以下(步骤S207的是),则GC工作控制部22结束无用单元收集工作。如果NVM子集#1所含有的块数没有下降到阈值X2(<X1)以下(步骤S207的否),则GC工作控制部22继续进行无用单元收集工作(步骤S202~S206)。
图32的流程图表示由NVM集间复制控制部23执行的NVM集间复制工作的次序。
当接收到包括指定复制源NVM集和复制目的地NVM集的参数的来自主机2的NVM集间复制指令时(步骤S301的是),NVM集间复制控制部23将复制目的地NVM集的空闲块池内的空闲块分配为复制目的地块(步骤S302)。然后,NVM集间复制控制部23从属于复制源NVM集的块中选择具有有效数据的块来作为复制源块(步骤S303)。
接着,NVM集间复制控制部23从复制源块向复制目的地块复制有效数据(步骤S304)。当进行有效数据的复制时,NVM集间复制控制部23更新与复制源NVM集的NVM子集对应的LUT(步骤S305)。
然后,NVM集间复制控制部23将不具有有效数据的复制源块返还到复制源NVM集的空闲块池(步骤S306)。
NVM集间复制控制部23反复进行步骤S302~S306的处理,直到在复制源NVM集中不存在具有有效数据的块为止(步骤S307)。
图33的流程图表示由NVM集间复制控制部23执行的NVM集间复制工作的另一次序。在此,假设在NVM集间复制工作中允许进行主机写入工作的情况。
当接收到包括指定复制源NVM集和复制目的地NVM集的参数的来自主机2的NVM集间复制指令时(步骤S401的是),NVM集间复制控制部23将复制目的地NVM集的空闲块池内的空闲块分配为复制目的地块(步骤S402)。然后,NVM集间复制控制部23从属于复制源NVM集的块中选择具有有效数据的块来作为复制源块(步骤S403)。
接着,NVM集间复制控制部23从复制源块向复制目的地块复制有效数据(步骤S404)。当进行有效数据的复制时,NVM集间复制控制部23更新与复制源NVM集的NVM子集对应的LUT(步骤S405)。
然后,NVM集间复制控制部23将不具有有效数据的复制源块返还到复制源NVM集的空闲块池(步骤S406)。
接着,NVM集间复制控制部23判定在复制源NVM集中是否不存在具有有效数据的块(步骤S407)。如果在复制源NVM集中不存在具有有效数据的块(步骤S407的是),NVM集间复制控制部23结束NVM集间复制工作。
另一方面,如果在复制源NVM集中存在具有有效数据的块(步骤S407的否),则控制器4的NVM集控制部21判定是否接收到对属于复制源NVM集的NVM子集的写数据(步骤S408)。如果没有接收对属于复制源NVM集的NVM子集的写数据(步骤S408的否),则处理进入步骤S402。
如果正接收对属于复制源NVM集的NVM子集的写数据(步骤S408的是),则NVM控制部21将复制目的地NVM集的空闲块池的空闲块分配为写入目的地块(步骤S409)。然后,NVM控制部21向该所分配的块写入写数据(步骤S410)。当写数据被写入时,NVM控制部21更新与属于复制源NVM集的NVM子集对应的LUT(步骤S411)。
接着,控制器4将写入完成的响应返回给主机2(步骤S412)。当写入完成的响应被返回到主机2时,处理进入步骤S402。
反复进行步骤S402~S412的处理,直到在复制源NVM集中不存在具有有效数据的块为止(步骤S407)。
图34的流程图表示由新NVM集作成控制部24执行的新NVM集作成工作的次序。
当接收到新NVM集作成指令时(步骤S501的是),新NVM集作成控制部24从属于原来的NVM集的全部的NAND型闪速存储器裸片之中决定应确保为新NVM集用的NAND型闪速存储器裸片的组(步骤S502)。原来的NVM集也可以根据新NVM集作成指令而成。
接着,新NVM集作成控制部24将原来的NVM集的空闲块池的空闲块分配为复制目的地块(步骤S503)。然后,新NVM集作成控制部24从属于新NVM集的块(也就是说属于已确保的NAND型闪速存储器裸片的组的块)中选择保持有效数据的块作为复制源块(步骤S504)。
接着,新NVM集作成控制部24从复制源块向复制目的地块复制有效数据(步骤S505)。当有效数据被复制时,新NVM集作成控制部24更新与复制源NVM集的NVM子集对应的LUT(步骤S506)。然后,新NVM集作成控制部24将不具有有效数据的复制源块返还到新NVM集的空闲块池(步骤S507)。
接着,新NVM集作成控制部24判定在新NVM集中是否不存在具有有效数据的块(步骤S508)。如果在新NVM集中不存在具有有效数据的块(步骤S508的是),新NVM集作成控制部24结束新NVM集作成工作。如果在新NVM集中存在具有有效数据的块(步骤S508的否),新NVM集作成控制部24继续进行新NVM集作成工作(步骤S503~S507)。
反复进行步骤S503~S507的处理,直到在新NVM集中不存在具有有效数据的块为止。
图35的流程图表示由新NVM集作成控制部24执行的新NVM集作成工作的另一次序。在此,示出了并行地执行新NVM集作成工作和原来的NVM集中的无用单元收集工作的次序。
当接收到新NVM集作成指令时(步骤S601),新NVM集作成控制部24决定应确保为新NVM集用的NAND型闪速存储器裸片的组(步骤S602)。接着,新NVM集作成控制部24将原来的NVM集的空闲块池的空闲块分配为复制目的地块(步骤S603)。然后,新NVM集作成控制部24从属于原来的NVM集的块中选择有效数据和无效数据混杂的块作为复制源块(步骤S604)。在步骤S604中,新NVM集作成控制部24也可以优先地选择有效数据少的块来作为复制源块。
接着,新NVM集作成控制部24从复制源块向复制目的地块复制有效数据(步骤S605)。当有效数据被复制时,新NVM集作成控制部24更新与复制源NVM集的NVM子集对应的LUT(步骤S606)。
然后,新NVM集作成控制部24判定变得不具有有效数据的复制源块的物理位置是否属于新NVM集(步骤S607)。如果变得不具有有效数据的复制源块的物理位置属于新NVM集(步骤S607的是),则新NVM集作成控制部24将变得不具有有效数据的复制源块返还到新NVM集的空闲块池(步骤S608)。如果变得不具有有效数据的复制源块的物理位置不属于新的NVM集(步骤S607的否),则新NVM集作成控制部24将变得不具有有效数据的复制源块返还到原来的NVM集的空闲块池(步骤S609)。
接着,新NVM集作成控制部24判定在新NVM集中是否不存在具有有效数据的块(步骤S610)。如果在新NVM集中不存在具有有效数据的块(步骤S610的是),则新NVM集作成控制部24结束新NVM集作成工作。如果在新NVM集中存在具有有效数据的块(步骤S610的否),则新NVM集作成控制部24执行步骤S603的处理。
反复进行步骤S603~S607的处理,直到在新NVM集中不存在具有有效数据的块为止。
图36表示作为主机2发挥作用的信息处理装置(计算设备)的硬件的构成例。
该信息处理装置作为如服务器那样的计算设备来实现。该信息处理装置包括处理器(CPU)801、主存储器802、BIOS-ROM803、网络控制器805、周边接口控制器806、控制器807及嵌入式控制器(EC)808等。
处理器801是构成为控制该信息处理装置的各组件的工作的CPU。该处理器801执行从多个SSD3的任意一个加载到主存储器802的各种程序。主存储器802由如DRAM那样的随机存取存储器构成。另外,也可以在该程序中包括用于发出对上述的NVM集间复制、NVM集交换、新NVM集作成以及NVM集结合进行指示的指令的设定程序。
另外,处理器801也对存储于作为非易失性存储器的BIOS-ROM803中的基本输入输出系统(BIOS)进行执行。BIOS是用于硬件控制的系统程序。
网络控制器805是如有线LAN控制器、无线LAN控制器那样的通信设备。周边接口控制器806构成为执行与如USB设备那样的周边设备的通信。
控制器807构成为执行与分别连接在多个连接器807A的设备的通信。多个SSD3也可以分别连接在多个连接器807A。控制器807是SAS expander、PCIe Switch、PCIeexpander、闪速阵列控制器、或RAID控制器等。
EC808作为系统控制器来发挥作用,该系统控制器构成为执行信息处理装置的电力管理。
图37表示包括多个SSD3和主机2的信息处理装置(服务器)的构成例。
该信息处理装置(服务器)具备可收纳于机架(rack)的薄的箱形的框体901。许多的SSD3也可以配置在框体901内。在该情况下,各SSD3也可以可拆卸地插入到设置于框体901的前侧的面901A的插槽中。
系统板(母板)902配置在框体901内。在系统板(母板)902上,安装有包括CPU801、主存储器802、网络控制器805、控制器807的各种电子部件。这些电子部件作为主机2发挥作用。
如以上说明的那样,根据本实施方式,使用通过多个垂直过孔相互连接有层叠的多个非易失性存储器裸片的存储器封装体,并且这些多个NAND型闪速存储器裸片分类为:包括分别连接于第一信道的多个第一NAND型闪速存储器裸片的集合的第一NVM集、和包括分别连接于第二信道的多个第二NAND型闪速存储器裸片的集合的第二NVM集。并且,按照对与第一NVM集对应的第一区域进行指定的来自主机2的第一I/O指令,经由第一信道执行对第一NVM集的数据写入/读出工作。另外,按照对与第二NVM集对应的第二区域进行指定的来自主机2的第二I/O指令,经由第二信道执行对第二NVM集的数据写入/读出工作。这样,通过将通过多个垂直过孔相互连接有被层叠的多个非易失性存储器裸片的存储器封装体、和经由不同的信道执行对多个NVM集的访问的构成组合,能够将各NVM集的峰值I/O性能的下降抑制到最小限度,而且,即使同时发生对各NVM集的写入/读出请求,也能够立即执行这些写入/读出请求。
另外,NAND型闪速存储器5的空闲块组通过与多个NVM集对应的多个空闲块池按每个NVM集单独地管理。并且,针对多个NVM集的各个执行:将对应的空闲块池内的空闲块的一个分配为输入块(用户输入块或GC输入块)的工作;向输入块写入写数据的工作;通过NVM子集管理被写数据填满了的输入块的工作;将被NVM子集管理且没有保持有效数据的块返还到对应的空闲块池的工作。这样,通过使用与多个NVM集分别对应的空闲块,能够按每个NVM集独立地执行输入块的分配和空闲块的返还。由此,能够防止属于某个NVM集的裸片内的块被分配为另一个NVM集用的输入块的情况等。因此,能够保证不发生裸片争用。
再者,在本实施方式中,作为非易失性存储器,例示了NAND型闪速存储器。但是,本实施方式的功能例如也能够应用于如MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random AccessMemory)、或FeRAM(Ferroelectric Random Access Memory)那样的其它的各种非易失性存储器。
虽然说明了本发明的几个实施方式,但是这些实施方式只是例示,而不是用于限定发明的范围。这些新实施方式能够以其它各种方式来实施,在不超出发明的主旨的范围内能够进行各种省略、替换、变更。这些实施方式和/或其变形包括在发明的范围和/或主旨内,并且包括在技术方案所记载的发明和与其等同的范围内。