具体实施方式
以下,参照附图说明实施方式。
首先,参照图1,说明包括一实施方式涉及的存储系统的信息处理系统1的构成。
该存储系统是构成为向非易失性存储器写入数据,并从非易失性存储器读出数据的半导体存储设备。该存储系统例如作为基于NAND闪存技术的固态硬盘(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(注册商标)、Fibre channel以及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以NAND型闪速存储器裸片中的每一个仅属于一个裸片组的方式,将K×N个NAND型闪速存储器裸片600~646分类为多个裸片组。在以下说明中,将该裸片组称为“非易失性存储器子集(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集对应的区域的数量既可以是一个,也可以是两个以上。并且,与各NVM集对应的区域的数量可以按每个NVM集不同。
控制器4能够无裸片争用且同时执行多个I/O命令(写入命令或读出命令),所述多个I/O命令分别指定与不同的NVM集对应的不同的区域。因此,例如,即使在执行对NVM集60的数据写入工作期间从主机2接收到面向与NVM集61对应的区域的读出命令,控制器4也能够立刻执行与该读出命令对应的数据读出工作,而无需等待该数据写入工作的完成。
在图1所示的SSD3中,控制器4也能够作为闪存转换层(FTL)发挥功能,所述闪存转换层构成为执行NAND型闪速存储器5的数据管理和NAND型闪速存储器5的块管理。
由该FTL执行的数据管理包括(1)表示各个逻辑地址与NAND型闪速存储器5的各个物理地址之间的对应关系的映射信息的管理、(2)用于省去以页为单位的读出/写入和以块为单位的擦除工作的处理等。逻辑地址是为了对SSD3进行寻址而由主机2使用的地址。作为该逻辑地址,通常使用逻辑块地址(LBA)。
使用作为地址转换表(逻辑物理地址转换表)发挥功能的查找表(LUT),执行各个逻辑块地址(LBA)与各个物理地址之间的映射的管理。与某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,决定应读出数据的作为访问对象的区域(命名空间)。
块管理包括坏块的管理、损耗均衡以及垃圾收集等。
损耗均衡是用于使各个块的消耗均匀化的工作。
垃圾收集是用于增加能够写入数据的空闲块的个数的工作。在垃圾收集工作中,控制器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上。例如,除了上述FTL的处理外,该CPU12还能够执行用于处理来自主机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根据指定多个区域中的任一个的来自主机2的I/O命令,执行对多个NVM集内的一个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的写入数据或为了垃圾收集而应复制的数据)的块的工作、将该用户数据写入到所分配的块的工作、通过数据块池(也称为活块池,activeblock pool)管理由该用户数据填满的块的工作、将通过数据块池进行管理且不保持有效数据的块返还给对应的空闲块池的工作。
由此,由于能够使配置于与某NVM集对应的空闲块池中的块组仅由与该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集的GC制作而成的空闲块仅由与该NVM集对应的一个以上区域使用,所以能够保证在多个NVM集间不发生裸片争用。
在共有NVM集的垃圾收集,也即是,属于共有NVM集的多个数据块池的一个数据块池内的块组的垃圾收集中,GC工作控制部22执行如下工作:(1)分配与共有NVM集对应的空闲块池内的一个空闲块来作为复制目的地块,(2)从一个数据块池所包含的且有效数据和无效数据并存的一个以上块中仅将有效数据复制到复制目的地块,(3)将由于向复制目的地块复制有效数据而成为仅有无效数据的一个以上块返还给与共有NVM集对应的空闲块池。由此,由于能够使通过某共有NVM集的GC制作而成的空闲块仅由与该共有NVM集对应的一个以上区域使用,所以能够保证在多个NVM集间不发生裸片争用。
为了使各个NVM集的消耗度(编程/擦除循环的数量)变均匀,NVM集间复制控制部23执行NVM集间复制工作。该NVM集间复制工作例如能够使用于将存储在具有高消耗度的分离的NVM集中的有效数据复制到具有低消耗度的分离的NVM集。由此,能够使这些NVM集的消耗度变均匀。主机2能够向SSD3送出NVM集间复制命令,所述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集分割为两个NVM集。
为了使各个NVM集的消耗度(编程/擦除循环的数量)变均匀,NVM集交换控制部25执行NVM集交换工作。该NVM集交换工作例如能够使用于在具有高消耗度的分离的NVM集与具有低消耗度的分离的NVM集之间交换数据。由此,能够使这些NVM集的消耗度变均匀。主机2能够向SSD3送出NVM集交换命令,所述NVM集交换命令包含指定应交换存储着的数据的两个NVM集(第一NVM集、第二NVM集)的参数。
NVM集交换控制部25执行仅将第一NVM集内的有效数据复制到第二NVM集的工作和仅将第二NVM集内的有效数据复制到第一NVM集的工作。
在仅将第一NVM集内的有效数据复制到第二NVM集的工作中,NVM集交换控制部25进行:(1)从属于第一NVM集的块中选择保持有效数据的块来作为复制源块,(2)仅将复制源块内的有效数据复制到从与第二NVM集对应的空闲块池中分配的复制目的地块,(3)将管理各个逻辑地址与第一NVM集的各个物理地址之间的映射的查找表更新,将表示复制了有效数据的复制目的地块内的物理存储位置的物理地址映射到与复制了的有效数据对应的逻辑地址,(4)在有效数据从复制源块中消失了的情况下,将复制源块返还给与第一NVM集对应的空闲块池,(5)反复进行(1)~(4)的工作,直到在第一NVM集中不存在保持有效数据的块。
在仅将第二NVM集内的有效数据复制到第一NVM集的工作中,NVM集交换控制部25进行:(1)从属于第二NVM集的块中选择保持有效数据的块来作为复制源块,(2)仅将复制源块内的有效数据复制到从与第一NVM集对应的空闲块池中分配的复制目的地块,(3)将管理各个逻辑地址与第二NVM集的各个物理地址之间的映射的查找表更新,将表示复制了有效数据的复制目的地块内的物理存储位置的物理地址映射到与复制了的有效数据对应的逻辑地址,(4)在有效数据从复制源块中消失了的情况下,将复制源块返还给与第二NVM集对应的空闲块池,(5)反复进行(1)~(4)的工作,直到在第二NVM集中不存在保持有效数据的块。
由此,能够使这些两个NVM集的消耗度均匀化。
NVM集结合部26将两个以上NVM集结合为一个NVM集。作为结合对象的两个以上NVM集和作为结合目的地的一个NVM集能够由主机2指定。
NAND接口13在CPU12的控制之下控制NAND型闪速存储器5。DRAM接口14是构成为在CPU12的控制之下控制DRAM6的DRAM控制器。DRAM6的存储区域的一部分作为写入缓冲器(WB)而被利用,所述写入缓冲器用于暂时存储来自主机2的写入数据。在本实施方式中,利用多个写入缓冲器(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的全部块,也即是NAND型闪速存储器裸片600、610、620、…640内的全部块配置于与NVM集60对应的空闲块池80。
属于NVM集60的块使用空闲块池80和NVM子集90来管理。NVM子集90是用于管理属于NVM集60且保持有效数据的各个块的数据块池。该NVM子集90所包含的块组构成一个垃圾收集用组。
空闲块池80是一个NVM子集90专用的空闲块池。因此,NVM集60作为由一个NVM子集90专有的NVM集(分离的NVM集)发挥功能。对NVM子集90关联一个写入缓冲器(WB)30。
NVM集60作为用于可由主机2指定的至少一个区域(命名空间)的物理存储空间加以利用。NVM集60可以是仅一个命名空间专用的物理存储空间。在图3中,例示了将NVM集60作为两个命名空间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的全部块,即NAND型闪速存储器裸片601、611、621、…641内的全部块配置于与NVM集61对应的空闲块池81。
属于NVM集61的块使用空闲块池81和NVM子集91来管理。NVM子集91是用于管理属于NVM集61且保持有效数据的各个块的数据块池。该NVM子集91所包含的块组构成一个垃圾收集用组。空闲块池81是一个NVM子集91专用的空闲块池。因此,NVM集61作为由一个NVM子集91专有的NVM集(分离的NVM集)发挥功能。对NVM子集91关联一个写入缓冲器(WB)31。
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的全部块,即NAND型闪速存储器裸片602~646内的全部块配置于与NVM集62对应的空闲块池82。
属于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集发挥功能。对NVM子集92、93、94、95分别关联写入缓冲器(WB)32、33、34、35。
NVM集62作为用于至少一个区域(命名空间)的物理存储空间加以利用。NVM集62既可以是仅一个命名空间专用的物理存储空间,也可以是用于多个命名空间的物理存储空间。在图3中,例示了将NVM集62利用作为四个命名空间103、104、105、106用的物理存储空间的情况。
另外,在图3中,例示了命名空间103使用两个NVM子集92、93的情况。例如,与命名空间103对应的LBA范围可以分割为两个子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集共存于一台SSD3内。因此,例如,能够根据工作负载,分开使用共有NVM集和分离的NVM集。
另外,在图3的事例中,对各个命名空间提供以下环境。
<NVM集60>
命名空间100、101共有一个NVM子集90。虽然不会产生命名空间100、101与其他命名空间之间的裸片争用,但可能产生命名空间100、101间的GC争用。
<NVM集61>
命名空间102专有一个NVM子集91。不会产生命名空间102与其他命名空间之间的裸片争用、GC争用。
<NVM集62>
命名空间103专有两个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内的一个空闲块分配作为用户输入块210。用户输入块210是指用于写入来自主机2的写入数据的块,也称为写入目的地块。此外,如果已经分配用户输入块210,则不执行该工作。
(2)主机写入
从写入缓冲器30向用户输入块210写入来自主机2的写入数据。在写入缓冲器30中暂时存储与命名空间100或命名空间101关联的写入数据。然后,更新与NVM集60对应的查找表,由此,表示写入了该写入数据的用户输入块210内的物理存储位置的物理地址映射到与写入数据对应的逻辑地址(LBA)。
(3)用户输入块的移动
当用户输入块210由写入数据填满时,将该用户输入块210移动到NVM子集(数据块池)90。也就是说,由数据填满的用户输入块210通过NVM子集(数据块池)90来管理。
(4)GC输入块的分配
在NVM集60中需要执行垃圾收集的情况下,与其他NVM集独立地执行用于NVM子集90内的块组的垃圾收集工作。例如,可以在NVM子集90所包含的块数比与NVM子集90对应的某阈值X1多的情况下,判断为需要进行垃圾收集工作。可以基于能够分配给NVM子集90用的块的总数来决定阈值X1。例如,可以将从能够分配给NVM子集90用的块的总数中减去预定数得到的剩余值作为与NVM子集90对应的某阈值X1加以利用。
在NVM集60中需要进行垃圾收集工作的情况下,将空闲块池80内的一个空闲块分配作为GC输入块200。GC输入块200是指在垃圾收集中成为有效数据的复制目的地的块,也称为复制目的地块。
(5)有效数据的复制
从NVM子集90内的块之中选择有效数据和无效数据并存的一个以上块作为复制源块。仅将该选择出的块的有效数据复制到GC输入块200。然后,更新与NVM集60对应的查找表,由此,表示复制了该有效数据的GC输入块200内的物理存储位置的物理地址映射到与复制了的有效数据对应的逻辑地址(LBA)。
(6)GC输入块的移动
当GC输入块200由有效数据填满时,将GC输入块200移动到NVM子集90。也就是说,由有效数据填满的GC输入块200通过NVM子集(数据块池)90来管理。
(7)块的返还
将通过NVM子集90管理且不保持有效数据的块从NVM子集90返还给空闲块池80。不保持有效数据的块是其全部数据因主机写入而被无效化的块或其全部有效数据因垃圾收集工作而被复制到复制目的地块的块。
图4的左下部表示用于NVM集61的主机写入/垃圾收集工作。
(1)用户输入块的分配
将空闲块池81内的一个空闲块分配作为用户输入块211。
(2)主机写入
从写入缓冲器31向用户输入块211写入来自主机2的写入数据。在写入缓冲器31中暂时存储有与命名空间102关联的写入数据。然后,更新与NVM集61对应的查找表,由此,表示写入了该写入数据的用户输入块211内的物理存储位置的物理地址映射到与写入数据对应的逻辑地址(LBA)。
(3)用户输入块的移动
当用户输入块211由写入数据填满时,将该用户输入块211移动到NVM子集(数据块池)91。也就是说,由数据填满的用户输入块211通过NVM子集(数据块池)91来管理。
(4)GC输入块的分配
在NVM集61中需要执行垃圾收集的情况下,与其他NVM集独立地执行用于NVM子集91内的块组的垃圾收集工作。例如,可以在NVM子集91所包含的块数比与NVM子集91对应的某阈值X1多的情况下,判断为需要进行垃圾收集工作。可以基于能够分配给NVM子集91用的块的总数决定阈值X1。例如,可以将从能够分配给NVM子集91用的块的总数中减去预定数得到的剩余值作为与NVM子集91对应的某阈值X1加以利用。
在NVM集61中需要进行垃圾收集工作的情况下,将空闲块池81内的一个空闲块分配作为GC输入块201。
(5)有效数据的复制
从NVM子集91内的块之中选择有效数据和无效数据并存的一个以上块作为复制源块。仅将该选择出的块的有效数据复制到GC输入块201。然后,更新与NVM集61对应的查找表,由此,表示复制了该有效数据的GC输入块201内的物理存储位置的物理地址映射到与复制了的有效数据对应的逻辑地址(LBA)。
(6)GC输入块的移动
当GC输入块201由有效数据填满时,将GC输入块201移动到NVM子集91。也就是说,由有效数据填满的GC输入块201通过NVM子集(数据块池)91来管理。
(7)块的返还
将利用NVM子集91管理且不保持有效数据的块从NVM子集91返还给空闲块池81。不保持有效数据的块是其全部数据因主机写入而被无效化的块或其全部有效数据因垃圾收集工作而被复制到复制目的地块的块。
图5表示为共有NVM集62执行的主机写入/垃圾收集工作。在这里,假设共有NVM集62仅包括两个NVM子集94、95的情况。
如下执行NVM子集94用的主机写入/垃圾收集工作。
(1)用户输入块的分配
将空闲块池82内的一个空闲块分配作为用户输入块214。
(2)主机写入
从写入缓冲器34向用户输入块214写入来自主机2的写入数据。在写入缓冲器34中暂时存储有与命名空间104或105关联的写入数据。然后,更新与NVM子集94对应的查找表,由此,表示写入了该写入数据的用户输入块214内的物理存储位置的物理地址映射到与写入数据对应的逻辑地址(LBA)。
(3)用户输入块的移动
当用户输入块214由写入数据填满时,将该用户输入块214移动到NVM子集(数据块池)94。也就是说,由数据填满的用户输入块214通过NVM子集(数据块池)94来管理。
(4)GC输入块的分配
在NVM子集(数据块池)94中需要执行垃圾收集的情况下,与其他NVM集和NVM集62内的其他NVM子集独立地执行用于NVM子集94内的块组的垃圾收集工作。例如,可以在NVM子集94所包含的块数比与NVM子集94对应的某阈值X1多的情况下,判断为需要进行垃圾收集工作。可以基于能够分配给NVM子集94用的块的总数决定阈值X1。例如,可以讲从能够分配给NVM子集94用的块的总数中减去预定数得到的剩余值作为与NVM子集94对应的某阈值X1加以利用。
在NVM子集94中需要进行垃圾收集工作的情况下,将空闲块池82内的一个空闲块分配作为GC输入块204。
(5)有效数据的复制
从NVM子集94内的块之中选择有效数据和无效数据并存的一个以上块作为复制源块。仅将该选择出的块的有效数据复制到GC输入块204。然后,更新与NVM子集94对应的查找表,由此,表示复制了该有效数据的GC输入块204内的物理存储位置的物理地址映射到与复制了的有效数据对应的逻辑地址(LBA)。
(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的访问的冲突导致的延时(latency)的增加。
在图6的NVM集构成中,由于经由不同的信道执行向NVM集110、111、112的访问,所以即使同时发生对NVM集110、111、112中的每一个的写入/读出请求,也能够立刻执行这些写入/读出请求。因此,能够减小对来自主机2的访问请求的延时。
但是,在图6的NVM集构成中,各NVM集的峰I/O性能受单一信道的性能限制。因此,优选的是,图6的NVM集构成与能够使单一信道的性能提高的机构进行组合来利用。
图7表示图6的各NVM集所对应的块管理与各NVM集所对应的一个以上区域(命名空间)的关系。
与图2的NVM集60同样地,NVM集110可作为分离的NVM集发挥功能。在将SSD3初始化的处理中,属于NVM集110的全部块配置于NVM子集90专用的空闲块池80。与图2的NVM集61同样地,NVM集111可作为分离的NVM集发挥功能。在将SSD3初始化的处理中,属于NVM集111的全部块配置于NVM子集91专用的空闲块池81。与图2的NVM集62同样地,NVM集112可作为共有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的背面配置有多个焊接凸块916,所述焊接凸块916作为用于输入输出信号的多个外部I/O端子(电极)发挥功能。这些信号包括8位宽的I/O信号和各种控制信号(多个芯片使能信号CE、命令锁存使能信号CLE、地址锁存使能信号ALE、写入使能信号WE、读出使能信号RE以及多个就绪/忙信号RB等)。8位宽的I/O信号使用于命令、地址以及数据等的传送。也可以是,地址的一部分包括芯片地址。也可以是,通过芯片使能信号CE和芯片地址的组合来选择作为访问对象的NAND型闪速存储器裸片。
在封装基板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条垂直通孔将这些64位宽的I/O信号传送给NAND型闪速存储器裸片D0~D7。
垂直通孔925中的每一个包括多个贯通电极V和多个凸块电极(焊接凸块)919,所述多个贯通电极V贯通层叠的NAND型闪速存储器裸片D0~D7各自的半导体基板,所述多个凸块电极919将层叠的NAND型闪速存储器裸片D0~D7间分别连接。
在使用导线键合(bonding)的以往的存储器封装中,当层叠的裸片的数量增加时,封装的外部I/O端子的寄生电容和寄生电阻增大,由此,难以使存储器封装以高频率工作。
在图8的闪速存储器封装910中,利用多个垂直通孔925取代键合线,将层叠的NAND型闪速存储器裸片D0~D7相互连接。因此,能够降低外部I/O端子的寄生电容和寄生电阻,能够使闪速存储器封装910内的各NAND型闪速存储器裸片以高频率工作。
图9是闪速存储器封装910的剖视图。
在支撑基板912的表面上安装有层叠的NAND型闪速存储器裸片D0~D7。在NAND型闪速存储器裸片D0~D7中的每一个中埋入有贯通电极V。贯通电极V是贯通对应的NAND型闪速存储器裸片内的半导体基板的电极。相邻的两个NAND型闪速存储器裸片的贯通电极V之间利用焊接凸块919连接。在该情况下,也可以是,在各NAND型闪速存储器裸片的表面上,贯通电极V经由设置于其半导体基板的上方的布线层与焊接凸块919连接。另外,也可以是,相邻的两个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集使用的一个以上闪速存储器封装的关系。
在图10中,例示了将NAND型闪速存储器5内的多个NAND型闪速存储器裸片分类为两个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等)的多条控制信号线。经由信道Ch0从NAND接口13接收的这些信号经由接口裸片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等)的多条控制信号线。经由信道Ch1从NAND接口13接收的这些信号经由接口裸片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型闪速存储器裸片的情况,但也能够由使用多个垂直通孔(TSV)的存储器封装实现共有NVM集所包含的多个NAND型闪速存储器裸片。
另外,在使用了多个垂直通孔(TSV)的单一的存储器封装支持两个以上信道的情况下,也可以通过单一的存储器封装实现与两个以上信道对应的两个以上NVM集所包含的多个NAND型闪速存储器裸片。
接着,参照图11~图13,具体地说明对在图2、3中说明的NVM集60的垃圾收集工作。
在图11~图13中,为了使图示变简单,假想了如下情况:NVM集60包含两个NAND型闪速存储器裸片1~2,各裸片具有包含页P1~P4的两个块。
如图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内的一个空闲块分配作为用户输入块211。
(2)主机写入
从写入缓冲器31向用户输入块211写入来自主机2的写入数据。通常来说,在写入缓冲器31中存储与复制目的地NVM集所对应的命名空间102进行了关联的写入数据,但开始了NVM集间复制工作之后,在写入缓冲器31中存储与复制源NVM集所对应的命名空间100或101进行了关联的写入数据。然后,更新与NVM子集90对应的查找表,由此,表示写入了该写入数据的用户输入块211内的物理存储位置的物理地址映射到与写入数据对应的逻辑地址(LBA)。
这样,在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内的一个空闲块分配作为GC输入块201。
(5)从复制源NVM集向复制目的地NVM集的有效数据的复制
从复制源NVM集(NVM集60)的NVM子集90内的块中选择保持有效数据的块作为复制源块。然后,仅将该复制源块内的有效数据复制到复制目的地NVM集(NVM集61)的GC输入块(复制目的地块)201。在该情况下,首先,从该复制源块中选择作为复制对象的有效数据。然后,从该复制源块读出该选择出的有效数据,然后写入GC输入块(复制目的地块)201。
当将有效数据复制到GC输入块201时,更新与NVM子集90对应的查找表,由此,表示复制了该有效数据的GC输入块201内的物理存储位置的物理地址映射到与被复制的有效数据对应的逻辑地址(LBA)。
(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复制被选择为复制对象的有效数据之前,有时会向用户输入块211写入具有与该有效数据的LBAx相同的LBAx的写入数据(与该LBAx对应的新数据)。当将写入数据(与该LBAx对应的新数据)写入到用户输入块211时,更新与NVM子集90对应的查找表,由此,表示写入了该写入数据的用户输入块211内的物理存储位置的物理地址映射到与该写入数据对应的LBAx。
在该情况下,被选择的有效数据已经成为不会由主机2读出的旧数据。因此,如果在实际向GC输入块201复制被选择为复制对象的有效数据之前,已向用户输入块211写入了具有与该有效数据的LBAx相同的LBAx的写入数据,则可以中止该有效数据的复制工作。由此,能够防止执行无用的复制工作。
或者,也可以是,执行被选择的有效数据的复制工作本身且不更新与NVM子集90对应的查找表来取代中止有效数据的复制工作。由此,能够防止与LBAx对应的物理地址被变更为表示复制了该有效数据(旧数据)的物理存储位置的值这一情况的发生。更详细而言,也可以是,每当向GC输入块201复制与某LBA对应的有效数据时,通过参照查找表,判定与该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的物理地址。例如,在从复制源NVM集(NVM集60)向复制目的地NVM集(NVM集61)的GC输入块201复制与LBA10对应的数据d10的情况下,将表示复制了数据d10的复制目的地NVM集(NVM集61)内的物理存储位置的物理地址映射到LUT40的LBA10。因此,当NVM集间复制工作完成时,LUT40仅保持NVM集61的物理地址。
这样,通过使用与GC同样的机制来执行NVM集间复制工作,控制器4能够通过参照LUT40来从复制目的地NVM集(NVM集61)读出从主机2请求的数据,而不进行用于制作地址转换信息的特别处理,所述地址转换信息是与复制到复制目的地NVM集(NVM集61)的数据对应的信息。
接着,参照图16~图18,具体地说明NVM集间复制工作。
在图16~图18中,为了使图示变简单,假想了如下情况:NVM集60包括NAND型闪速存储器裸片1~2,NVM集61包括NAND型闪速存储器裸片3~4,各裸片具有分别包括页P1~P4的两个块。另外,假想从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表示在两个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天的时间点,根据来自主机2的请求NVM集交换的命令,在NVM集#1(NVM集60)与NVM集#2(NVM集61)之间交换数据。
在NVM集交换工作中,将存储于NVM集#1(NVM集60)的有效数据复制到NVM集#2(NVM集61)。然后,更新与NVM集#1(NVM集60)对应的查找表,由此,表示复制了该有效数据的NVM集#2(NVM集61)内的物理存储位置的物理地址映射到与被复制的有效数据对应的逻辑地址(LBA)。
另外,将存储于NVM集#2(NVM集61)的有效数据复制到NVM集#1(NVM集60)。然后,更新与NVM集#2(NVM集61)对应的查找表,由此,表示复制了该有效数据的NVM集#1(NVM集60)内的物理存储位置的物理地址映射到与被复制的有效数据对应的逻辑地址(LBA)。
当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集#1(NVM集60)与NVM集#2(NVM集61)的块的改写次数均匀化。因此,能够使NVM集间的消耗度均匀化。
图20表示为了NVM集交换工作之前的两个NVM集所执行的主机写入/垃圾收集工作。
在执行NVM集交换工作之前,在NVM集#1(NVM集60)和NVM集#2(NVM集61)中,相互独立地执行主机写入/垃圾收集工作。详细而言,如在图4中说明的那样。
图21表示为了NVM集交换工作而在两个NVM集间执行的主机写入/垃圾收集工作。
(1)用户输入块的分配
在NVM集#1中,将空闲块池80内的一个块分配作为用户输入块210。另外,在NVM集#2中,将空闲块池81内的一个块分配作为用户输入块211。
(2)主机写入
从写入缓冲器30向用户输入块210写入来自主机2的写入数据。通常来说,在写入缓冲器30中存储与NVM集#1(NVM集60)所对应的命名空间100或命名空间101进行了关联的写入数据,但在开始NVM集交换工作之后,在写入缓冲器30中存储与NVM集#2(NVM集61)所对应的命名空间102进行了关联的写入数据。然后,更新与NVM集#2(NVM集61)对应的查找表,由此,表示写入了该写入数据的用户输入块210内的物理存储位置的物理地址映射到与写入数据对应的逻辑地址(LBA)。
这样,在NVM集交换工作之前,与命名空间102进行了关联的写入数据的写入目的地为NVM集#2(NVM集61)的用户输入块211,但在开始NVM集交换工作时,与命名空间102进行了关联的写入数据的写入目的地变更为NVM集#1(NVM集60)的用户输入块210。
另外,从写入缓冲器31向用户输入块211写入来自主机2的写入数据。通常来说,在写入缓冲器31中存储与NVM集#2(NVM集61)所对应的命名空间102关联的写入数据,但在开始NVM集交换工作后,在写入缓冲器31中存储与NVM集#1(NVM集60)所对应的命名空间100或101关联的写入数据。然后,更新与NVM集#1(NVM集60)对应的查找表,由此,表示写入了该写入数据的用户输入块211内的物理存储位置的物理地址映射到与写入数据对应的逻辑地址(LBA)。
这样,在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内的一个空闲块分配作为GC输入块200。
另外,在NVM集(NVM集61)中,将空闲块池81内的一个空闲块分配作为GC输入块201。
(5)有效数据的交换
从复制源NVM集(NVM集60)的NVM子集90内的块中选择保持有效数据的块来作为复制源块。然后,仅将该复制源块内的有效数据复制到NVM集#2(NVM集61)的GC输入块201。然后,更新与NVM子集90对应的查找表,由此,表示复制了该有效数据的GC输入块201内的物理存储位置的物理地址映射到与被复制的有效数据对应的逻辑地址(LBA)。
从NVM集#2(NVM集61)的NVM子集91内的块中选择保持有效数据的块作为复制源块。然后,仅将该复制源块内的有效数据复制到NVM集#1(NVM集60)的GC输入块200。然后,更新与NVM子集91对应的查找表,由此,表示复制了该有效数据的GC输入块200内的物理存储位置的物理地址映射到与被复制的有效数据对应的逻辑地址(LBA)。
(6)GC输入块的移动
在NVM集#1(NVM集60)中,当GC输入块200由来自NVM集#2(NVM集61)的一个以上块的有效数据填满时,将GC输入块200移动到NVM子集90。也就是说,由有效数据填满的GC输入块200通过NVM子集(数据块池)90来管理。
另外,在NVM集#2(NVM集61)中,当GC输入块201由来自NVM集#1(NVM集60)的一个以上块的有效数据填满时,将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集制作工作的概要。
现在,假想利用NVM集160的情况,所述NVM集160包括NAND型闪速存储器裸片600~606、610~616、620~626、…640~646。在该NVM集160中,存在空闲块池180。空闲块池180由NVM子集190B和NVM子集190C共有。并且,与NVM子集190B对应地设置有写入缓冲器130B,与NVM子集190C对应地设置有写入缓冲器130C。
如图22的下部所示,控制器4能够基于NVM集160制作新的NVM集161。在该情况下,首先,从NVM集160所包含的多个NAND型闪速存储器裸片之中,决定应确保为新的NVM集161用的NAND型闪速存储器裸片。在图22的例子中,将NAND型闪速存储器裸片600、610、620、…640决定为NVM集161用的NAND型闪速存储器裸片。将这些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集制作执行的主机写入/垃圾收集工作。在这里,假想如下情况:基于包括两个NVM子集的原来的NVM集160制作新的NVM集161。
(1)用户输入块的分配
将与原来的NVM集160对应的空闲块池180内的一个空闲块分配作为与NVM子集190B对应的用户输入块410。另外,将空闲块池180内的一个空闲块分配作为与NVM子集190C对应的用户输入块411。此外,如果已经分配用户输入块410、411,则不执行该工作。
(2)主机写入
从写入缓冲器130B向用户输入块410写入来自主机2的写入数据。然后,更新与NVM子集190B对应的查找表,由此,表示写入了该写入数据的用户输入块410内的物理存储位置的物理地址映射到与写入数据对应的逻辑地址(LBA)。
另外,从写入缓冲器130C向用户输入块411写入来自主机2的写入数据。然后,更新与NVM子集190C对应的查找表,由此,表示写入了该写入数据的用户输入块411内的物理存储位置的物理地址映射到与写入数据对应的逻辑地址(LBA)。
(3)用户输入块的移动
当用户输入块410由写入数据填满时,将该用户输入块410移动到NVM子集(数据块池)190B。也就是说,由数据填满的用户输入块410通过NVM子集(数据块池)190B来管理。
另外,当用户输入块411由写入数据填满时,将该用户输入块411移动到NVM子集(数据块池)190C。也就是说,由数据填满的用户输入块411通过NVM子集(数据块池)190C来管理。
(4)GC输入块的分配
在原来的NVM集(NVM集160)中,从空闲块池180内的空闲块中分配一个块作为与NVM子集190B对应的GC输入块400。另外,从空闲块池180内的空闲块中分配一个块作为与NVM子集190C对应的GC输入块401。
(5)有效数据的复制
从NVM子集190B(或NVM子集190C)内的块中选择有效数据和无效数据并存的一个以上块作为复制源块,仅将复制源块内的有效数据复制到GC输入块400(或GC输入块401)。然后,更新与NVM子集190B(或NVM子集190C)对应的查找表,由此,表示复制了该有效数据的GC输入块400(或GC输入块401)内的物理存储位置的物理地址映射到与被复制的有效数据对应的逻辑地址(LBA)。
(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的两个块。
首先,从所属于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集#3(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内的一个空闲块分配作为用户输入块413。另外,将空闲块池184内的一个空闲块分配作为用户输入块414。并且,将空闲块池185内的一个空闲块分配作为用户输入块415。此外,如果已经分配用户输入块413、414、415,则不执行该工作。
(2)主机写入
在NVM集#1(NVM集163)中,从写入缓冲器130A向用户输入块413写入来自主机2的写入数据。在写入缓冲器130A中,暂时存储有与NVM子集190A进行了关联的写入数据。然后,更新与NVM集163对应的查找表,由此,表示写入了该写入数据的用户输入块413内的物理存储位置的物理地址映射到与写入数据对应的逻辑地址(LBA)。
另外,在NVM集#2(NVM集164)中,从写入缓冲器130B向用户输入块414写入来自主机2的写入数据。在写入缓冲器130B中,暂时存储有与NVM子集190B进行了关联的写入数据。然后,更新与NVM集164对应的查找表,由此,表示写入了该写入数据的用户输入块414内的物理存储位置的物理地址映射到与写入数据对应的逻辑地址(LBA)。
并且,在NVM集#3(NVM集165)中,从写入缓冲器130C向用户输入块415写入来自主机2的写入数据。在写入缓冲器130C中,暂时存储有与NVM子集190C进行了关联的写入数据。然后,更新与NVM集165对应的查找表,由此,表示写入了该写入数据的用户输入块415内的物理存储位置的物理地址映射到与写入数据对应的逻辑地址(LBA)。
(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多的情况下,判断为需要进行垃圾收集工作。可以基于能够分配给NVM子集190A用的块的总数来决定阈值X1。例如,可以将从能够分配给NVM子集190A用的块的总数中减去预定数得到的剩余值作为与NVM子集190A对应的某阈值X1加以利用。
在NVM子集190A中需要进行垃圾收集工作的情况下,将空闲块池183内的一个空闲块分配作为GC输入块403。
另外,在NVM子集(数据块池)190B中需要执行垃圾收集的情况下,与其他NVM集独立地执行用于NVM子集190B内的块组的垃圾收集工作。例如,可以在NVM子集190B所包含的块数比与NVM子集190B对应的某阈值X1多的情况下,判断为需要进行垃圾收集工作。可以基于能够分配给NVM子集190B用的块的总数来决定阈值X1。例如,可以将从能够分配给NVM子集190B用的块的总数中减去预定数得到的剩余值作为与NVM子集190B对应的某阈值X1加以利用。
在NVM子集190B中需要进行垃圾收集工作的情况下,将空闲块池184内的一个空闲块分配作为GC输入块404。
在NVM子集(数据块池)190C中需要执行垃圾收集的情况下,与其他NVM集独立地执行用于NVM子集190C内的块组的垃圾收集工作。例如,可以在NVM子集190C所包含的块数比与NVM子集190C对应的某阈值X1多的情况下,判断为需要进行垃圾收集工作。可以基于能够分配给NVM子集190C用的块的总数来决定阈值X1。例如,可以将从能够分配给NVM子集190C用的块的总数减去预定数得到的剩余值作为与NVM子集190C对应的某阈值X1加以利用。
在NVM子集190C中需要进行垃圾收集工作的情况下,将空闲块池185内的一个空闲块分配作为GC输入块405。
(5)有效数据的复制
从NVM子集190A内的块之中选择有效数据和无效数据并存的一个以上块作为复制源块。仅将该选择出的块的有效数据复制到GC输入块403。然后,更新与NVM集163对应的查找表,由此,表示复制了该有效数据的GC输入块403内的物理存储位置的物理地址映射到与被复制的有效数据对应的逻辑地址(LBA)。
另外,从NVM子集190B内的块之中选择有效数据和无效数据并存的一个以上块作为复制源块。仅将该选择出的块的有效数据复制到GC输入块404。然后,更新与NVM集164对应的查找表,由此,表示复制了该有效数据的GC输入块404内的物理存储位置的物理地址映射到与被复制的有效数据对应的逻辑地址(LBA)。
并且,从NVM子集190C内的块之中选择有效数据和无效数据并存的一个以上块作为复制源块。仅将该选择出的块的有效数据复制到GC输入块405。然后,更新与NVM集165对应的查找表,由此,表示复制了该有效数据的GC输入块405内的物理存储位置的物理地址映射到与被复制的有效数据对应的逻辑地址(LBA)。
(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)'向结合目的地NVM集的GC输入块的移动
当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向主机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向主机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、PCIe expander、闪存阵列控制器或RAID控制器等。
EC808作为系统控制器发挥功能,所述系统控制器构成为执行信息处理装置的电力管理。
图37表示包括多个SSD3和主机2的信息处理装置(服务器)的构成例。
该信息处理装置(服务器)具备能够收容于架子的薄的箱形的框体901。多个SSD3可以配置在框体901内。在该情况下,也可以是,各SSD3可卸下地插入设置在框体901的前表面901A的槽中。
系统板(母板)902配置在框体901内。在系统板(母板)902上,安装有包括CPU801、主存储器802、网络控制器805以及控制器807的各种电子部件。这些电子部件作为主机2发挥功能。
如以上说明地,根据本实施方式,以多个NAND型闪速存储器裸片中的每一个仅属于一个NVM集的方式将这些NAND型闪速存储器裸片分类到多个NVM集。然后,根据指定与各NVM集对应的至少一个区域(例如命名空间)的、来自主机的I/O命令,执行对多个NVM集中的一个NVM集的数据写入/读出工作。因此,能够无裸片争用且同时执行多个I/O命令(写入命令或读出命令),所述多个I/O命令分别指定与不同的NVM集对应的不同的区域。因此,例如,即使在执行对某NVM集的数据写入工作期间从主机2接收到面向与其他NVM集对应的区域的读出命令,控制器4也能够立刻执行与该读出命令对应的数据读出工作,而无需等待该数据写入工作的完成。
另外,即使向特定的NVM集的数据写入集中,也能够通过NVM集间复制工作使这些NVM集的消耗变得均等。因此,能够无裸片争用地访问非易失性存储器,且能够消除NVM集间的不均等的消耗。
此外,在本实施方式中,作为非易失性存储器,例示了NAND型闪速存储器。但是,本实施方式的功能例如也能应用于MRAM(Magnetoresistive Random Access Memory:磁阻式随机存取存储器)、PRAM(Phase change Random Access Memory:相变随机存取存储器)、ReRAM(Resistive Random Access Memory:电阻式随机存取存储器)或FeRAM(Ferroelectric Random Access Memory:铁电随机存取存储器)这样的其他各种非易失性存储器。
以上说明了本发明的几个实施方式,但是这些实施方式作为例子而出示,并不是意在限定发明的范围。这些新颖的实施方式能以其他各种方式来实施,在不偏离发明的要旨的范围内,能够进行各种省略、置换以及变更。这些实施方式或其变形被包含在发明的范围或要旨内,并被包含在权利要求书所记载的发明及与之等同的范围内。