具体实施方式
以下,参照附图,对实施方式进行说明。
首先,参照图1,对包含实施方式的存储器***的信息处理***1的构成进行说明。
该存储器***是以向非易失性存储器写入数据、从非易失性存储器读入数据的方式构成的半导体储存装置。该存储器***例如是以具备NAND型闪速存储器的固态硬盘(SSD)3的形式实现的。
信息处理***1包含主机(主机装置)2、及SSD3。主机2是服务器、个人计算机等信息处理装置(计算装置)。在以服务器的形式实现主机2的案例中,该主机(服务器)2也可经由网络50而连接于多个终端用户终端(用户端)90。主机2能对这些终端用户终端90提供各种服务。
主机(服务器)2所能提供的服务中也可包含对多个终端用户终端(用户端)90提供虚拟桌面环境的服务。在这种情况下,主机(服务器)2也可作为以使用虚拟桌面基础架构(VDI)提供虚拟桌面环境的方式构成的VDI服务器发挥功能。在作为VDI服务器发挥功能的主机(服务器)2中,也可运行与多个终端用户终端(用户端)90分别对应的多个虚拟机。这些虚拟机各自包含OS(Operating System,操作***)(虚拟桌面OS)、及在OS(虚拟桌面OS)上运行的应用程序。与这些虚拟机对应的多个OS/应用程序会被存储在SSD3中。
SSD3可被用作作为主机2发挥功能的信息处理装置的主储存器。SSD3既可内置于该信息处理装置,也可经由缆线或网络而连接于该信息处理装置。
作为用来将主机2与SSD3相互连接的接口,可使用SCSI(Small Computer SystemInterface,小型计算机***接口)、串行连接SCSI(Serial Attached SCSI,SAS)、ATA(Advanced Technology Attachment,高级技术附件)、串行ATA(Serial ATA,SATA)、***组件互连高速(Peripheral Component Interconnect Express,PCI Express,PCIe)、以太网(Ethernet,注册商标)、光纤信道(Fibre channel)、非易失性存储器高速(Non-VolatileMemory Express,NVM Express,NVMe,注册商标)等。
SSD3具备控制器4、及非易失性存储器(NAND型闪速存储器)5。SSD3也可还具备随机存取存储器,例如DRAM(Dynamic Random Access Memory,动态随机存取存储器)6。
NAND型闪速存储器5包含具备呈矩阵状配置的多个存储单元的存储单元阵列。NAND型闪速存储器5既可为2维结构的NAND型闪速存储器,也可为3维结构的NAND型闪速存储器。NAND型闪速存储器5内的区域(存储区域)包含用户数据区域7及管理区域8。用户数据区域7是用来存储来自主机2的数据(用户数据)的区域。管理区域8是用来存储管理SSD3的动作所用的管理信息的区域。
NAND型闪速存储器5的存储单元阵列如图2所示,包含多个物理块BLK0~BLKm-1。物理块BLK0~BLKm-1各自由多个页(于此,为页P0~Pn-1)组成。物理块BLK0~BLKm-1是作为能指定地址的最小删除单位发挥功能。物理块有时也会被称为“删除块”、“物理删除块”,或简称为“块”。页P0~Pn-1各自包含连接于同一字线的多个存储单元。页P0~Pn-1是数据写入动作及数据读入动作的单位。
物理块BLK0~BLKm-1具有有限的删除次数。删除次数也可通过编程/删除周期(Program/Erase cycles)数来表达。某物理块的一个编程/删除周期(Program/Erasecycles)包含用来使该物理块内的所有存储单元成为删除状态的删除动作、及向该物理块的各页中写入数据的写入动作(编程动作)。由于物理块BLK0~BLKm-1具有有限的删除次数(有限的编程/删除周期),所以优选将物理块BLK0~BLKm-1的编程/删除周期尽量均匀化。
在本实施方式中,图1的控制器4管理各自包含1个以上物理块的多个第1块,并以第1块为单位执行删除动作。因此,第1块实际上作为删除单位发挥功能。以下,将第1块作为超级块加以查阅。此外,超级块有时也会被称为逻辑块。
控制器4经由Toggle、开放式NAND型闪速存储器接口(Open NAND FlashInterface,ONFI)等NAND接口13而电连接于作为非易失性存储器的NAND型闪速存储器5。控制器4是控制NAND型闪速存储器5的存储器控制器(控制电路)。该控制器4也能以***芯片(system on a chip,SoC)等单芯片LSI(Large Scale Integration,大型集成电路)的形式实现。
NAND型闪速存储器5如图3所示,包含多个NAND型闪速存储器芯片(NAND型闪速存储器芯片块)。各个NAND型闪速存储器芯片能独立地动作。因此,NAND型闪速存储器芯片作为能并行动作的单位发挥功能。在图3中,例示了NAND接口13连接着16个信道Ch.1~Ch.16,16个信道Ch.1~Ch.16各自连接着2个NAND型闪速存储器芯片的情况。在这种情况下,连接于信道Ch.1~Ch.16的16个NAND型闪速存储器芯片#1~#16也可组成为存储体组(bank)#0,另外连接于信道Ch.1~Ch.16的剩余16个NAND型闪速存储器芯片#17~#32也可组成为存储体组#1。存储体组作为用来使多个存储器模块通过内存交错而并行动作的单位发挥功能。在图3的构成例中,通过16个信道、及使用2个存储体组的内存交错,能使最多32个NAND型闪速存储器芯片并行动作。
一个超级块并不限定于包含这些,也可包含从NAND型闪速存储器芯片#1~#32中逐一选择出来的共计32个物理块。此外,NAND型闪速存储器芯片#1~#32各自也可具有多平面构成。例如,在NAND型闪速存储器芯片#1~#32各自具有包含2个平面的多平面构成的情况下,一个超级块也可包含从与NAND型闪速存储器芯片#1~#32对应的64个平面逐一选择出来的共计64个物理块。
图4中例示了包含32个物理块(于此,为NAND型闪速存储器芯片#1内的物理块BLK2、NAND型闪速存储器芯片#2内的物理块BLK3、NAND型闪速存储器芯片#3内的物理块BLK7、NAND型闪速存储器芯片#4内的物理块BLK4、NAND型闪速存储器芯片#5内的物理块BLK6、…NAND型闪速存储器芯片#32内的物理块BLK3)的一个超级块(SB)。
此外,一个超级块也可利用仅包含一个物理块的构成,在这种情况下,一个超级块与一个物理块等同。
如上所述,控制器4是以超级块为单位执行删除动作。因此,同一超级块中包含的这32个物理块的删除动作是并行执行的。
另外,在向该超级块写入数据时,控制器4也可按照NAND型闪速存储器芯片#1内的物理块BLK2的页0、NAND型闪速存储器芯片#2内的物理块BLK3的页0、NAND型闪速存储器芯片#3内的物理块BLK7的页0、NAND型闪速存储器芯片#4内的物理块BLK4的页0、NAND型闪速存储器芯片#5内的物理块BLK6的页0、…NAND型闪速存储器芯片#32内的物理块BLK3的页0这样的顺序写入数据。由此,能并行执行最多向32个页中的数据写入。另外,在从该超级块读出数据时,也能并行执行最多从32个页中的数据读出。
其次,对图1的控制器4的构成进行说明。
控制器4经由多个信道(例如16个信道)而电连接于多个NAND型闪速存储器芯片。控制器4控制NAND型闪速存储器5(多个NAND型闪速存储器芯片)。
控制器4也可作为以执行NAND型闪速存储器5的数据管理及块管理的方式构成的快闪转换层(FTL)发挥功能。由该FTL执行的数据管理中包含如下等:(1)管理表示各逻辑地址与NAND型闪速存储器5的各物理地址之间的对应关系的映射信息;(2)进行用来将以页为单位的读出/写入及以块为单位(以超级块为单位)的删除动作隠蔽起来的处理。逻辑地址是为了对SSD3进行地址指定而供主机使用的地址。作为该逻辑地址,可使用LBA(logicalblock address(addressing),逻辑块地址(寻址))。
在普通SSD中,各逻辑地址与各物理地址之间的对应关系(映射)的管理仅使用作为逻辑-物理地址转换表发挥功能的查找表而执行。对应于某逻辑地址的物理地址表示写入有该逻辑地址的数据的NAND型闪速存储器内的最新位置(最新物理存储位置)。
在本实施方式中,为了既能维持垃圾回收的效率又能在SSD3内部执行用来实现重复数据删除(De-duplication)的动作,而利用新的地址查阅路径。
该新的地址查阅路径并非从逻辑地址直接查阅物理地址,而是经由中间地址从逻辑地址查阅物理地址。各逻辑地址与各中间地址的对应关系由作为逻辑-中间地址转换表(第1转换表)发挥功能的查找表(LUT)32来管理。各中间地址与各物理地址的对应关系由作为中间-物理地址转换表(第2转换表)发挥功能的中间查找表(iLUT)34来管理。
本实施方式中,在与从主机2新接收的写入数据(用户数据)一致的数据(作为“重复数据”加以查阅)已经存储在NAND型闪速存储器5中的情况下,控制器4不将该写入数据写入到NAND型闪速存储器5中。取而代之,控制器4更新逻辑-中间地址转换表(LUT)32,将已经与重复数据建立有关联的中间地址、即指示保存有与重复数据对应的物理地址的中间-物理地址转换表(iLUT)34内的条目的特定中间地址与该写入数据的逻辑地址建立关联。
由此,能从包含重复数据的逻辑地址及写入数据的逻辑地址的2个逻辑地址查阅同一中间地址,且能从该同一中间地址查阅存储有重复数据的物理存储位置的物理地址。结果,能从重复数据的逻辑地址及写入数据的逻辑地址两者查阅该重复数据,从而能提高储存效率。
如从所述说明所理解到的那样,在本实施方式中,使用逻辑-中间地址转换表(LUT)32及中间-物理地址转换表(iLUT)34而执行2级地址转换。在逻辑-中间地址转换表(LUT)32中,与已经存在的某数据一致的写入数据的逻辑地址关联着与已经存在的数据的中间地址相同的中间地址。因此,在中间-物理地址转换表(iLUT)34中,无论查阅某数据的逻辑地址数如何,各物理地址仅与一个中间地址建立有关联。
由此,在被多个逻辑地址查阅的数据(重复数据)通过垃圾回收而被复制到其他超级块的案例中,控制器4可保证:只进行仅将与这一个中间地址对应的中间-物理地址转换表(iLUT)34内的一个条目更新为复制目标物理地址这样的动作,便能从这多个逻辑地址正确查阅该复制目标物理地址。
进而,控制器4管理与用户数据区域7内的多个超级块(SB)100-0、100-1、…100-i分别对应的多个超级块(SB)管理表200-0、200-1、…200-i。
这些SB管理表200-0、200-1、…200-i各自为用来管理对应超级块中所保存的多个数据的块管理信息。
各SB管理表包含与对应超级块内的多个数据对应的多个查阅计数。在各SB管理表中,这些查阅计数是按照与对应超级块的物理地址的排列顺序相同的顺序配置的。各查阅计数表示查阅对应数据(即超级块内的对应位置(物理存储位置))的逻辑地址数。
例如,若某数据仅被1个逻辑地址查阅,也就是说,若与存储有该数据的物理存储位置的物理地址建立有关联的中间地址仅被1个逻辑地址独占性地使用,则对应于该数据的查阅计数为1。
若某数据被2个逻辑地址查阅,也就是说,若与存储有该数据的物理存储位置的物理地址建立有关联的中间地址被2个逻辑地址共用,则对应于该数据的查阅计数为2。
若某数据被3个逻辑地址查阅,也就是说,若与存储有该数据的物理存储位置的物理地址建立有关联的中间地址被3个逻辑地址共用,则对应于该数据的查阅计数为3。
控制器4使用SB管理表200-0、200-1、…200-i各者,而管理与各超级块内的多个数据对应的多个查阅计数。这些SB管理表200-0、200-1、…200-i也可在SSD3接通电源时从NAND型闪速存储器5内的管理区域8载入到DRAM6中。
在NAND型闪速存储器5内的管理区域8中,也存储有其他各种管理信息,例如,逻辑-中间地址转换表(LUT)32、哈希LUT33、及中间-物理地址转换表(iLUT)34。这些逻辑-中间地址转换表(LUT)32、哈希LUT33、及中间-物理地址转换表(iLUT)34同样地也可在SSD3接通电源时从NAND型闪速存储器5内的管理区域8载入到DRAM6中。
通常,在NAND型闪速存储器5中,向页中的数据写入每1删除周期仅能进行1次。
因此,控制器4将对应于某逻辑地址的更新数据写入到NAND型闪速存储器5内的其他位置,而非存储有对应于该逻辑地址的以往数据的NAND型闪速存储器5内的位置(物理存储位置)。然后,控制器4更新中间-物理地址转换表(iLUT)34,将该其他物理存储位置的物理地址与对应于该逻辑地址的中间地址建立关联。
块管理中包含坏块的管理、耗损平均、垃圾回收等。耗损平均是用来将物理块各自的消耗均匀化的动作。垃圾回收是为了增加能写入数据的空闲块(空闲超级块)的个数,将有效数据与无效数据混合存在的若干复制源块(复制源超级块)内的有效数据复制到复制目标块(复制目标超级块)。于此,所谓有效数据是指被逻辑地址作为最新数据关联起来的数据、即后面有可能会被主机2读出的某数据。所谓无效数据是指已无可能被主机2读出的数据。
在本实施方式中,超级块(SB)100-0、100-1、…100-i各者中包含的所有用户数据的查阅计数存储在对应于各超级块的SB管理表中。换句话讲,控制器4使用对应于各超级块的SB管理表,而管理与各超级块内的多个数据对应的多个查阅计数。因此,控制器4能仅基于与用于垃圾回收的复制源块对应的SB管理表内的查阅计数群,便执行用于垃圾回收的数据复制动作。也就是说,控制器4不复制与零查阅计数对应的数据,而仅将与非零查阅计数对应的数据从垃圾回收对象超级块(垃圾回收的复制源块)复制到复制目标块。垃圾回收对象超级块(垃圾回收的复制源块)也被作为GC源超级块加以查阅。另外,复制目标块也被作为GC宿超级块加以查阅。也就是说,由于与零查阅计数对应的数据未被任何逻辑地址查阅,所以被当作无效数据看待。由于与非零查阅计数对应的数据被1个以上逻辑地址查阅,所以被当作有效数据看待。通过将与非零查阅计数对应的数据移动到复制目标块而已经不再存在与非零查阅计数对应的数据的复制源块被解放成为空闲块(空闲超级块)。由此,该空闲超级块能在执行该删除动作后再次利用。
在垃圾回收中,控制器4进而将对应于复制源块的SB管理表内的各非零查阅计数复制到对应于复制目标块的SB管理表。由此,在数据从复制源块复制到复制目标块后,也能正确管理与所复制的各数据对应的查阅计数值。
另外,各SB管理表的内容在执行过与该SB管理表对应的超级块的删除动作后便不再有用。因此,某超级块内的各数据不再有用的时序与对应于该超级块的SB管理表内的各查阅计数不再有用的时序同时发生,所以能降低用来管理与各超级块内的各数据对应的各查阅计数的成本。
控制器4也可包含主机接口11、CPU(Central Processing Unit,中央处理器)12、NAND接口13、DRAM接口14等。这些CPU12、NAND接口13、DRAM接口14也可经由总线10而相互连接。
主机接口11从主机2接收各种指令(例如,写入指令、读出指令、映射取消(UNMAP)/禁用删除(Trim)指令等)。
CPU12是以控制主机接口11、NAND接口13、及DRAM接口14的方式构成的处理器。CPU12响应SSD3的电源接通,将存储在NAND型闪速存储器5或未图示的ROM(Read OnlyMemory,只读存储器)中的控制程序(固件)载入到DRAM6上,通过执行该固件而进行各种处理。该CPU12例如除了所述FTL的处理以外,还能执行用来对来自主机2的各种指令进行处理的指令处理等。CPU12的动作由通过CPU12加以执行的所述固件控制。此外,FTL处理及指令处理的一部分或全部也可由控制器4内的专用硬件执行。
CPU12能作为重复数据删除处理部21、垃圾回收(GC)动作控制部22、数据分离动作控制部23发挥功能。
<重复数据删除处理部21>
重复数据删除处理部21在SSD3内执行用来实现重复数据删除的数据写入动作。
当重复数据删除处理部21从主机2接收写入数据(应写入的用户数据)时,重复数据删除处理部21会执行以下数据写入动作。
(1)在NAND型闪速存储器5中不存在与写入数据一致的数据(重复数据)的情况下,重复数据删除处理部21更新管理各逻辑地址与各中间地址的对应关系的LUT32,将未使用的第1中间地址与写入数据的逻辑地址建立关联。重复数据删除处理部21将写入数据写入到多个超级块中的一个(写入目标超级块)。重复数据删除处理部21更新管理各中间地址与各物理地址的对应关系的iLUT34,将表示写入有写入数据的NAND型闪速存储器5内的位置(物理存储位置)的物理地址与第1中间地址建立关联。然后,重复数据删除处理部21将与该写入数据对应的查阅计数设置为1。
(2)在NAND型闪速存储器5中已经存在与写入数据一致的重复数据的情况下,重复数据删除处理部21不将写入数据写入到多个超级块中的一个(写入目标超级块),而更新LUT32,将第2中间地址与写入数据的逻辑地址建立关联,其中所述第2中间地址指示保存有与该重复数据对应的物理地址的iLUT34内的条目。然后,重复数据删除处理部21将与重复数据对应的查阅计数增加1。
(3)在写入数据是之前已经写入到NAND型闪速存储器5中的数据的更新数据的情况下,重复数据删除处理部21将与之前已经写入的该数据对应的查阅计数减去1。
重复数据删除处理部21也管理哈希LUT33。该哈希LUT33是管理各哈希值与各中间地址的对应关系的转换表。在用来将某中间地址与写入数据的逻辑地址建立关联的处理中,重复数据删除处理部21也可执行以下动作。
(1)重复数据删除处理部21获得写入数据的哈希值。
(2)在哈希LUT33中不存在与所获得的哈希值对应的中间地址的情况下,重复数据删除处理部21判定NAND型闪速存储器5中不存在与写入数据一致的重复数据。然后,重复数据删除处理部21将未使用的中间地址赋予给所获得的哈希值,并将所获得的哈希值与赋予给所获得的哈希值的中间地址的对应关系存储到哈希LUT33中。这样一来,在NAND型闪速存储器5中不存在与写入数据一致的重复数据的情况下,赋予给所获得的哈希值的中间地址作为所述第1中间地址而与写入数据的逻辑地址建立关联。
(3)在哈希LUT33中已经存在与所获得的哈希值对应的中间地址的情况下,重复数据删除处理部21查阅iLUT34,取得与对应于所述所获哈希值的中间地址建立有关联的物理地址。重复数据删除处理部21将写入数据与由所取得的物理地址指定的NAND型闪速存储器5内的位置上存储的数据加以比较。在这些数据相互一致的情况下,重复数据删除处理部21判定NAND型闪速存储器5中已经存在与写入数据一致的重复数据。这样一来,在NAND型闪速存储器5中已经存在与写入数据一致的重复数据的情况下,重复数据删除处理部21将与所获得的哈希值对应且已经存在于哈希LUT33中的所述中间地址作为所述第2中间地址而与写入数据的逻辑地址建立关联。
<GC动作控制部22>
GC动作控制部22基于与复制源块(复制源超级块)对应的SB管理表内的各查阅计数,而执行以下GC动作。
(1)在选择多个超级块100-1、100-2、…100-i中的一个作为垃圾回收的复制源块(复制源超级块)的情况下,GC动作控制部22基于与复制源块对应的SB管理表,而仅将与各非零查阅计数对应的数据从复制源块复制到复制目标块(复制目标超级块)。
(2)GC动作控制部22更新iLUT34,将表示复制有与各非零查阅计数对应的数据的复制目标块内的各位置的物理地址与对应于所复制数据的各中间地址建立关联。
(3)GC动作控制部22将与复制源块对应的SB管理表内的各非零查阅计数复制到与复制目标块对应的SB管理表中。
这样一来,在iLUT34中,各中间地址与各物理地址相互一对一地映射。因此,在被多个逻辑地址查阅的数据(重复数据)通过垃圾回收(GC)而从复制源块复制到复制目标块的案例中,控制器4只仅更新iLUT34,便能将该数据的旧物理地址(复制源物理地址)正确变更为新物理地址(复制目标物理地址)。
另外,控制器4对于与存储在某超级块中的多个数据分别对应的多个查阅计数全部,是使用与该超级块对应的SB管理表加以管理的。而且,在某超级块被选作用于GC的复制源块的情况下,基于与该超级块对应的SB管理表的内容,而执行仅将与非零查阅计数对应的数据从复制源块复制到复制目标块的处理、及将各非零查阅计数从与复制源块对应的SB管理表复制到与复制目标块对应的SB管理表的处理。因此,能仅基于与复制源块对应的SB管理表的内容而执行GC动作,从而既能实现重复数据删除,又能改善GC动作的效率。
<数据分离动作控制部23>
数据分离动作控制部23执行用来将具有较大查阅计数的数据群与具有较小查阅计数的数据群相互分离,将具有较大查阅计数的数据群与具有较小查阅计数的数据群存储在互不相同的超级块中的动作。换句话讲,数据分离动作控制部23为了将属于相同查阅计数范围的数据群集中于相同的超级块,而执行以下动作。
在选择超级块100-0、100-1、…100-i中的一个作为垃圾回收的复制源块的情况下,数据分离动作控制部23基于与复制源块对应的SB管理表,将包含在复制源块内且与属于第1查阅计数范围的各查阅计数对应的数据集合复制到第1复制目标块。进而,数据分离动作控制部23将包含在复制源块内且与属于第2查阅计数范围的各查阅计数对应的数据集合复制到第2复制目标块,其中所述第2查阅计数范围具有比第1查阅计数范围的上限大的下限。
各SB管理表具有能存储各自具有某设置比特长的多个查阅计数的查阅计数存储区域。虽然可为各查阅计数的比特长越长则所能计数的查阅计数的最大值越大,但是必须确保的查阅计数存储区域的尺寸也会增大。若一个超级块中混合存在具有较大查阅计数的数据群与具有较小查阅计数的数据群,则必须确保较大尺寸的查阅计数存储区域,其中所述查阅计数存储区域需能存储可表现出较大查阅计数且各自具有较长比特长的多个查阅计数。但是,该超级块中也包含具有较小查阅计数的数据群。因此,该较大尺寸的查阅计数存储区域内的很多存储器资源可能会被无端消耗。
在本实施方式中,可将属于相同查阅计数范围的数据群集中于相同的超级块。因此,能将需设置在各SB管理表内的查阅计数存储区域的尺寸优化,结果能削减查阅计数各自的管理所需的存储器资源量。
另外,具有较大查阅计数的数据群可以说是被覆写的概率较低的数据,也就是说,具有较长生命周期的数据。其原因在于,只要与查阅具有较大查阅计数的数据的大量逻辑地址分别对应的数据未被全部更新,与该数据对应的查阅计数便不会为零。例如,在将SSD3用作所述VDI服务器的储存器的案例中,若执行向多个终端用户提供的多个虚拟桌面OS各自的更新,则有可能会从主机2(VDI服务器)向SSD3发送多个写入请求,而这些写入请求是用来写入具有彼此相同的内容的数据。结果,在NAND型闪速存储器5中,会存在分别具有较大查阅计数的多个数据。这些具有较大查阅计数的数据群有较大可能会一直有效地维持到虚拟桌面OS各自的下次更新为止。
另一方面,具有较小查阅计数的数据群是被覆写的概率相对较高的数据,也就是说,具有较短生命周期的数据。
若为具有较大查阅计数的数据群及具有较小查阅计数的数据群混合存在于相同超级块的环境,则有可能写入放大会增加。
其原因在于,在具有较大查阅计数的数据群及具有较小查阅计数的数据群混合存在的超级块中,只有具有较小查阅计数的数据群会在较早的时序无效化,另一方面,该超级块内的剩余数据群(具有较大查阅计数的数据群)有可能会长时间地维持为有效状态。
写入放大(WA)是以如下方式定义的。
WA=“写入到SSD中的数据的总量”/“从主机写入到SSD中的数据的总量”
“写入到SSD中的数据的总量”相当于,从主机写入到SSD中的数据的总量与通过垃圾回收等内部性地写入到SSD中的数据的总量之和。
写入放大(WA)的增加会引起SSD3内的超级块/物理块各自的覆写次数(编程/擦除次数)的增加。也就是说,写入放大(WA)越大,则物理块的编程/擦除次数越容易快速地达到其编程/擦除次数的上限值。结果,会引起SSD3的耐用性及寿命的劣化。
在本实施方式中,由于属于相同查阅计数范围的数据群会被集中于相同的超级块,所以能使相同超级块中包含的数据各自的生命周期保持为相同程度。具有相同程度的生命周期的数据群表示有较大可能通过抹除或更新而在大致同一时期无效化的数据组。对于所有数据都已经无效化的超级块,不执行GC,便能使该超级块成为空闲块。结果,能使相同超级块中包含的数据各自的查阅计数保持为相同程度这一点能抑制GC的频率,由此能降低写入放大。
进而,数据分离动作控制部23在集中有具有较大查阅计数的数据群的超级块群、与集中有具有较小查阅计数的数据群的超级块群之间,执行变更用来选择GC源超级块(也就是说,复制源块候补)的条件的处理。也就是说,由于与数据对应的查阅计数越大,则该数据被覆写的概率越低,因此数据分离动作控制部23将集中有具有较大查阅计数的数据群的超级块群优先于集中有具有较小查阅计数的数据群的超级块群地选作GC候补。
更详细来讲,数据分离动作控制部23执行以下动作。
(1)数据分离动作控制部23将超级块100-1、100-2、…100-i分为集中有属于第1查阅计数范围的数据集合的第1块群、及集中有属于第2查阅计数范围的数据集合的第2块群。
(2)对于第1块群,数据分离动作控制部23选择满足无效数据量大于第1阈值这个条件的块(超级块)作为用于垃圾回收的复制源块候补。
(3)对于第2块群,数据分离动作控制部23选择满足无效数据量大于第2阈值这个条件的块(超级块)作为用于垃圾回收的复制源块候补,其中所述第2阈值小于第1阈值。
在集中有属于第2查阅计数范围的数据集合的第2块、即集中有具有较大查阅计数的数据群的超级块中,存储有无效数据的无效数据存储区域在较长时间内都不会被用于新数据的存储。该无效数据存储区域无端地消耗SSD3的超额配置(Over-provisioning)容量。在本实施方式中,能将集中有具有较大查阅计数的数据群的超级块群优先于集中有具有较小查阅计数的数据群的超级块群地选作GC候补,因此能容易将集中有具有较大查阅计数的数据群的超级块群内的无效数据存储区域用作用来存储新数据的存储器资源。这能增加SSD3的实质超额配置容量,由此能降低写入放大。
图1的DRAM接口14是以访问控制DRAM6的方式构成的DRAM控制器。DRAM6的存储区域的一部分用来存储写入缓冲器(WB)31。DRAM6的存储区域的另一部分用来将所述LUT32、哈希LUT33、iLUT34存储为查找表高速缓存。可为仅将LUT32、哈希LUT33、iLUT34各自的一部分存储在查找表高速缓存中,也可为将LUT32、哈希LUT33、iLUT34各自的全部存储在查找表高速缓存中。DRAM6的存储区域的进而另一部分用来存储所述SB管理表200-0、200-1、…200-i。
图5表示LUT32与iLUT34的关系。
如上所述,LUT32作为逻辑-中间地址转换表发挥功能,管理各逻辑地址(LBA)与各中间地址的对应关系。以下,将中间地址称为iLBA。
另外,如上所述,iLUT34是作为中间-物理地址转换表发挥功能的中间查找表,管理各iLBA与NAND型闪速存储器5的各物理地址的对应关系。以下,将物理地址也称为PBA。
在已经存在于NAND型闪速存储器5中的某数据被多个LBA查阅的情况下,LUT32中,这些LBA关联着同一iLBA。iLUT34中,该iLBA关联着表示存储有该数据的NAND型闪速存储器5内的位置的PBA。因此,能从这些LBA查阅同一iLBA,能从该同一iLBA查阅表示存储有该数据的NAND型闪速存储器5内的位置的PBA。
在iLUT34中,各iLBA与各PBA相互一对一地映射。因此,在被多个逻辑地址查阅的数据(重复数据)通过垃圾回收(GC)而从复制源块复制到复制目标块的案例中,控制器4只仅更新iLUT34,便能将该数据的旧PBA正确变更为新PBA。
也可使用从多个LBA直接查阅同一PBA的地址转换结构。但这种情况下,在LUT32中,若某数据被1000个LBA查阅,则需对与这1000个LBA对应的1000个条目分别存储相同的PBA。因此,在被1000个LBA查阅的数据(重复数据)通过垃圾回收(GC)而从复制源块复制到复制目标块的案例中,控制器4需分别更新这1000个条目内的PBA。
在本实施方式中,即便某数据被1000个LBA查阅,这些LBA也只查阅一个iLBA,该数据的PBA仅与这一个iLBA建立关联。因此,控制器4只要仅更新存储有该PBA的iLUT34内的一个条目的PBA即可。
如图6所示,也可从多个LUT32查阅iLUT34。在图6中,例示了从2个LUT32-0、LUT32-1查阅iLUT34的案例。LUT32-0也可为管理与某命名空间对应的各LBA与各iLBA的对应关系的LUT,LUT32-1也可为管理与另一命名空间对应的各LBA与各iLBA的对应关系的LUT。对各命名空间分配从LBA0开始的LBA范围。来自主机2的写入指令/读出指令也可包含指定特定命名空间的标识符(命名空间ID)。主机2也可按照来自某终端用户的I/O请求,将包含指定分配给该终端用户的特定命名空间的命名空间ID的写入指令/读出指令发送给SSD3。另外,主机2也可按照来自另一终端用户的I/O请求,将包含指定分配给该另一终端用户的另一特定命名空间的命名空间ID的写入指令/读出指令发送给SSD3。
图7表示地址查阅结构。
SSD3的控制器4从主机2接收写入数据及与该写入数据对应的LBA。与一个LBA对应的写入数据的尺寸例如也可为4K字节(4KB)。
控制器4获得从主机2接收的写入数据的哈希值。对用于哈希计算的演算法并不限定,可利用任意演算法。通过哈希计算获得的哈希值的比特宽度只要为小于写入数据的尺寸、例如4KB(=32768比特)的比特宽度即可。通过哈希计算获得的哈希值的比特宽度也可为256比特。控制器4对所获得的哈希值赋予某iLBA,并将所获得的哈希值及赋予给该哈希值的iLBA存储到哈希LUT33中。
对所获得的哈希值赋予iLBA的动作也可按照以下方式进行。
若哈希LUT33中不存在与所获得的哈希值对应的iLBA,则控制器4判定NAND型闪速存储器5中不存在与写入数据一致的数据(重复数据),从而将未使用的任意iLBA赋予给该哈希值。然后,控制器4将所获得的哈希值及赋予给该哈希值的iLBA存储到哈希LUT33中。该被赋予的iLBA会被通知给LUT32。在LUT32中,该被通知的iLBA与对应于从主机2接收的写入数据的LBA建立关联。控制器4将写入数据写入到多个超级块100-0、100-1、100-2、…中的一个(写入目标超级块)。然后,控制器4更新iLUT34,将表示写入有写入数据的NAND型闪速存储器5内的位置(物理存储位置)的物理地址(PBA)与该被赋予的iLBA建立关联。控制器4更新与写入目标超级块对应的SB管理表,将与该写入数据对应的查阅计数设置为1。
若哈希LUT33中已经存在与所获得的哈希值对应的iLBA,则控制器4判定NAND型闪速存储器5中有可能已经存在与该写入数据一致的数据(重复数据)。
在这种情况下,控制器4首先从哈希LUT33取得与所获得的哈希值对应的iLBA。控制器4从iLUT34取得与该iLBA对应的PBA,读出由所取得的PBA指定的NAND型闪速存储器5内的位置上存储的数据。然后,控制器4将写入数据与读出数据加以比较。若写入数据与读出数据一致,则控制器4判定NAND型闪速存储器5中已经存在与写入数据一致的数据(重复数据)。在这种情况下,写入数据不会被写入到多个超级块100-0、100-1、100-2、…中的一个(写入目标超级块)。控制器4将与所获得的哈希值对应的该iLBA、即指示iLUT34内的条目的iLBA通知给LUT32,该iLUT34保存着表示存储有重复数据的NAND型闪速存储器5内的位置的PBA。在LUT32中,该被通知的iLBA与对应于从主机2接收的写入数据的LBA建立关联。然后,控制器4更新与存储有重复数据的超级块对应的SB管理表,将对应于该重复数据的查阅计数增加1。
图8表示超级块管理表的构成例。
在图8中,为了简化附图,例示了超级块(SB)100-0具有各自能存储4个4KB数据的页0~k的案例。另外,对存储有各4KB数据的物理存储位置分配了物理地址(PBA)。
在页0中,对应于PBA0的物理存储位置上存储有数据A,对应于PBA1的物理存储位置上存储有数据B,对应于PBA2的物理存储位置上存储有数据C,对应于PBA3的物理存储位置上存储有数据D。
另外,在页1中,对应于PBA4的物理存储位置上存储有数据E,对应于PBA5的物理存储位置上存储有数据F,对应于PBA6的物理存储位置上存储有数据G,对应于PBA7的物理存储位置上存储有数据H。
同样地,在页k中,对应于PBAn-3的物理存储位置上存储有数据W,对应于PBAn-2的物理存储位置上存储有数据X,对应于PBAn-1的物理存储位置上存储有数据Y,对应于PBAn的物理存储位置上存储有数据Z。
超级块(SB)100-1、100-2、…也具有与超级块(SB)100-0相同的构成。
SB管理表200-0、200-1、200-2、…分别对应于超级块(SB)100-0、100-1、100-2、…而设。在各SB管理表中,存储与存储在对应超级块(SB)中的多个数据对应的多个查阅计数(Refcount)。这些查阅计数(Refcount)是按照对应超级块(SB)的物理地址(PBA)的排列顺序配置的。
作为例子,在对应于超级块(SB)100-0的SB管理表200-0中,与超级块(SB)100-0内的各数据对应的查阅计数是按照如下方式加以管理的。
在SB管理表200-0中,管理与超级块(SB)100-0的PBA0~n对应的n+1个查阅计数(Refcount)。这n+1个查阅计数(Refcount)按照PBA0~n的排列顺序配置在SB管理表200-0内。
与PBA0对应的SB管理表200-0内的前导存储位置上存储的查阅计数“3”是与对应于PBA0的物理存储位置上存储的数据A对应的查阅计数,表示查阅数据A的逻辑地址(LBA)数为3。
在不具有重复数据删除结构的普通SSD中,对应于这3个LBA的3个用户数据会被写入到NAND型闪速存储器中。若对应于一个LBA的用户数据尺寸为4K字节,则因为写入了3个4K字节数据,所以会消耗12K字节的存储器资源。
在本实施方式中,与这3个LBA对应的3个用户数据中仅一个会被写入到NAND型闪速存储器5中。因此,能将所消耗的存储器资源缩减到4K字节。这样一来,SSD3就能通过重复数据删除功能压缩应写入到SSD3中的用户数据了。
与PBA1对应的SB管理表200-0内的第2号存储位置上存储的查阅计数“4”是与对应于PBA1的物理存储位置上存储的数据B对应的查阅计数,表示查阅数据B的逻辑地址(LBA)数为4。同样地,与PBAn对应的SB管理表200-0内的第n+1号存储位置上存储的查阅计数“0”是与对应于PBAn的物理存储位置上存储的数据Z对应的查阅计数,表示查阅数据Z的逻辑地址(LBA)数为零。
同样地,在SB管理表200-1、200-2、…各者中,与对应超级块(SB)100-1、100-2、…内的多个数据对应的多个查阅计数是按照对应超级块(SB)内的PBA的排列顺序而配置的。
图9表示中间查找表(iLUT)34的构成例。
iLUT34管理各中间地址(iLBA)与NAND型闪速存储器5的各物理地址(PBA)的对应关系。
iLUT34也可具有与iLBA0~m对应的m+1个条目。例如,与iLBA0对应的条目用来存储表示存储有与被赋予了iLBA0的1个以上LBA对应的数据的NAND型闪速存储器5内的位置(物理存储位置)的PBA(于此,为PBA0)。与iLBA1对应的条目用来存储表示存储有与被赋予了iLBA1的1个以上LBA对应的数据的NAND型闪速存储器5内的位置(物理存储位置)的PBA(于此,为PBA1)。
图10表示查找表(LUT)32的构成例。
LUT32管理各逻辑地址(LBA)与各中间地址(iLBA)的对应关系。
LUT32也可具有与LBA0~j对应的j+1个条目。
例如,与LBA0对应的条目用来存储赋予给LBA0的iLBA(于此,为iLBA0)。与LBA1对应的条目用来存储赋予给LBA1的iLBA(这里iLBA1)。与LBA2对应的条目用来存储赋予给LBA2的iLBA(于此,为iLBA7)。同样地,与LBA10对应的条目用来存储赋予给LBA10的iLBA(于此,为iLBA0),与LBAj对应的条目用来存储赋予给LBAj的iLBA(于此,为iLBA0)。
图11表示哈希查找表(哈希LUT)33的构成例。
哈希LUT33管理各哈希值(Hash(Data))与各中间地址(iLBA)的对应关系。
哈希查找表(哈希LUT)33具有多个条目,各条目存储某哈希值(Hash(Data))、及赋予给该哈希值(Hash(Data))的中间地址(iLBA)。基本上,对不同的哈希值赋予不同的iLBA。SSD3获取来自主机2的写入数据的哈希值,若哈希LUT33中不存在所获得的哈希值,则将未使用的任意iLBA赋予给所获得的哈希值,并将所获得的哈希值与被赋予的iLBA的对应关系存储在哈希LUT33中。
在图11中,例示了如下情况:对数据A的哈希值(Hash(DataA))赋予iLBA0,对数据B的哈希值(Hash(DataB))赋予iLBA1,对数据C的哈希值(Hash(DataC))赋予iLBA7,对数据D的哈希值(Hash(DataD))赋予iLBA5,对数据E的哈希值(Hash(DataE))赋予iLBA10,对数据F的哈希值(Hash(DataF))赋予iLBA2,对数据G的哈希值(Hash(DataG))赋予iLBA4,对数据H的哈希值(Hash(DataH))赋予iLBA6。
其次,利用图12,对本实施方式中所执行的地址转换动作进行说明。
于此,假设为如下情况:SSD3从主机2接收了各自具有4KB尺寸的4个新写入数据,即数据A、数据B、数据C、数据D、数据E。另外,假设为如下情况:数据A、数据B、数据C、数据D是包含互不相同的内容,即互不相同的比特列的数据,且数据E是与数据A一致的数据。
计算数据A、数据B、数据C、数据D各自的哈希值(Hash(DataA)、Hash(DataB)、Hash(DataC)、Hash(DataD),对这些哈希值分别赋予未使用的中间地址(iLBA)。
在图12中,例示了对Hash(DataA)赋予iLBA0,对Hash(DataB)赋予iLBA1,对Hash(DataC)赋予iLBA2,对Hash(DataD)赋予iLBA3的情况。在哈希LUT33中,存储4个哈希值与4个iLBA的对应关系,也就是说,Hash(DataA)与iLBA0对、Hash(DataB)与iLBA1对、Hash(DataC)与iLBA2对、Hash(DataD)与iLBA3对。另外,更新LUT32,由此使iLBA0与对应于数据A的LBA0建立关联,使iLBA1与对应于数据B的LBA1建立关联,使iLBA2与对应于数据C的LBA2建立关联,使iLBA3与对应于数据D的LBA3建立关联。
将数据A、数据B、数据C及数据D写入到多个超级块中的一个(在图12中,为超级块(SB)100-0)。该超级块(SB)100-0是被分配为当前写入目标块(当前写入目标超级块)的超级块。然后,更新iLUT34,由此使表示写入有数据A的写入目标超级块(SB)100-0内的物理存储位置的PBA0与iLBA0建立关联,使表示写入有数据B的写入目标超级块(SB)100-0内的物理存储位置的PBA1与iLBA1建立关联,使表示写入有数据C的写入目标超级块(SB)100-0内的物理存储位置的PBA2与iLBA2建立关联,使表示写入有数据D的写入目标超级块(SB)100-0内的物理存储位置的PBA3与iLBA3建立关联。此外,也可在向超级块(SB)100-0中写入数据A、数据B、数据C及数据D前执行iLUT34的更新。
数据E的哈希值(Hash(DataE))与Hash(DataA)一致。因此,与Hash(DataE)(=Hash(DataA))对应的iLBA(于此,为iLBA0)已经存在于哈希LUT33中。在这种情况下,将由与iLBA0对应的PBA0指定的物理存储位置上存储的数据(于此,为数据A)与数据E加以比较,而判定数据E是否与数据A一致。
若数据E与数据A一致,则不将数据E写入到超级块(SB)100-0中(重复数据删除)。然后,更新LUT32,将与Hash(DataE)对应且已经存在于哈希LUT33中的iLBA(于此,为iLBA0)与对应于数据E的LBA4建立关联。
其次,利用图13,对本实施方式中所执行的数据读出动作进行说明。
在SSD3的控制器4从主机2接收包含LBA4的读出指令的情况下,控制器4查阅LUT32。由于与LBA4对应的中间地址是iLBA0,所以控制器4基于iLBA0而查阅iLUT34。与iLBA0对应的物理地址是PBA0。因此,控制器4从由PBA0指定的SB100-0内的物理存储位置读出数据A,并将数据A回传给主机2。
图14表示用于用户数据管理的结构。
在图14中,查找表高速缓存38用于将分别存储在NAND型闪速存储器5的管理区域8的LUT32整体及iLUT34整体各自的一部分保存在DRAM6上。另外,在图14中,非易失性LUT36表示存储在NAND型闪速存储器5的管理区域8的LUT32整体的内容,非易失性iLUT37表示存储在NAND型闪速存储器5的管理区域8的iLUT33整体的内容。
当查找表高速缓存38中不存在目标地址转换信息(LBA-iLBA转换信息、或iLBA-PBA转换信息)时(高速缓存缺失),会从NAND型闪速存储器5(非易失性LUT36、或非易失性iLUT37)中读出目标地址转换信息,并将查找表高速缓存38内的某个替换对象缓存行的内容替换成所述被读出的地址转换信息。当所述替换对象缓存行中保存的地址转换信息已被更新时,便将该替换对象源缓存行中保存的地址转换信息的内容重写到NAND型闪速存储器5(非易失性LUT36、或非易失性iLUT37)中(Updatate cache lines,更新后的缓存行)中。
用户数据区域7内的各超级块(SB)的状态大致分为存储着有效数据的工作块(工作超级块)、及未存储有效数据的空闲块(空闲超级块)。在本实施方式中,与非零查阅计数对应的数据被当作有效数据看待,与零查阅计数对应的数据被当作无效数据看待。
作为工作块的各超级块(SB)由被称为储存块池(工作块池)51的列表来管理。另一方面,作为空闲块的各超级块(SB)由被称为空闲块池52的列表来管理。
在本实施方式中,控制器4分配选自空闲块池52的一个超级块(空闲超级块)作为应写入从主机2接收的写入数据的写入目标块(写入目标超级块)。在这种情况下,控制器4首先对所选择的超级块(空闲超级块)内的各物理块执行删除动作,由此使该超级块内的各物理块成为能写入的删除状态。如果当前写入目标超级块整体被来自主机2的写入数据写满,控制器4就会将当前写入目标超级块54移动到储存块池51,从空闲块池52中分配一个新的超级块(空闲超级块)作为新的写入目标超级块。
当储存块池51内的某超级块内,所有数据各自的查阅计数因数据更新、取消映射、垃圾回收(GC)等而归零时,控制器4便会将该超级块移动到空闲块池52。
在GC动作中,控制器4分配选自空闲块池52的一个超级块(空闲超级块)作为用于GC的复制目标块(复制目标超级块)53。在这种情况下,控制器4首先对所选择的超级块(空闲超级块)内的各物理块执行删除动作,由此使该超级块内的各物理块成为能写入的删除状态。控制器4选择储存块池51内的一个以上超级块作为复制源块(复制源超级块)。如果当前复制目标块53整体被从复制源块(复制源超级块)复制过来的数据写满,控制器4就会将当前复制目标块53移动到储存块池51。另外,控制器4将因GC而不再存在与非零查阅计数对应的数据的复制源块移动到空闲块池52。
以下,对写入动作、读出动作、GC动作分别进行说明。
<写入动作>
若SSD3从主机2接收包含写入数据及LBA的写入指令,写入数据会被暂时存储到写入缓冲器(WB)31中。
若NAND型闪速存储器5中不存在与写入数据一致的重复数据,则将未使用的iLBA赋予给写入数据的LBA。然后,控制器4更新LUT32,将被赋予的iLBA与写入数据的LBA建立关联。在这种情况下,控制器4也可把用来将被赋予的iLBA与写入数据的LBA建立关联的查找表高速缓存更新请求(Update request)发送给查找表高速缓存38。由此,查找表高速缓存38(LUT32)得以更新,被赋予的iLBA与写入数据的LBA建立关联。然后,将该写入数据写入到写入目标超级块(SB)54中。若写入数据被写入到写入目标超级块(SB)54中,控制器4便更新iLUT34,将表示写入有写入数据的物理存储位置的PBA与所述被赋予的iLBA建立关联。在这种情况下,控制器4也可把用来将表示写入有写入数据的物理存储位置的PBA与所述被赋予的iLBA建立关联的查找表高速缓存更新请求(Update request)发送给查找表高速缓存38。由此,查找表高速缓存38(iLUT34)得以更新,该PBA与所述被赋予的iLBA建立关联。
若NAND型闪速存储器5中已经存在与写入数据一致的重复数据,则将赋予给重复数据的iLBA赋予给写入数据的LBA。然后,控制器4更新LUT32,将赋予给重复数据的iLBA与写入数据的LBA建立关联。在这种情况下,控制器4也可把用来将赋予给重复数据的iLBA与写入数据的LBA建立关联的查找表高速缓存更新请求(Update request)发送给查找表高速缓存38。由此,查找表高速缓存38(LUT32)得以更新,被赋予的iLBA与写入数据的LBA建立关联。由于该写入数据与重复数据一致,所以控制器4并不执行用来将该写入数据写入到写入目标超级块(SB)54中的写入动作。由此,能执行重复数据删除。
<读出动作>
若从主机2接收包含LBA的读出指令,控制器4便会查阅查找表高速缓存38(LUT32),取得与由该读出指令指定的LBA对应的iLBA。在这种情况下,控制器4也可将用来取得与所指定的LBA对应的iLBA的查找表高速缓存(LUT)查阅请求(Lookup request)发送给查找表高速缓存38。
接着,控制器4基于所取得的iLBA,查阅查找表高速缓存38(iLUT34),取得PBA。在这种情况下,控制器4也可将用来取得与所取得的iLBA对应的PBA的查找表高速缓存(iLUT)查阅请求(Lookup request)发送给查找表高速缓存38。
然后,控制器4从由所取得的PBA指定的物理存储位置读出数据,并将所读出的数据回传给主机2。于此,有与读出指令中包含的LBA对应的PBA对应于储存块池(工作块池)51内的任一工作块或写入目标超级块内的物理存储位置的情况。另外,也有对应于写入缓冲器31内的物理存储位置的情况。
<GC动作>
控制器4分配选自空闲块池52的一个超级块(空闲超级块)作为复制目标块(复制目标超级块)53。
另外,控制器4从储存块池(工作块池)51内的工作块(工作超级块)当中选择被判断出需要GC动作的一个工作块(工作超级块)作为GC对象超级块(复制源超级块)。这时,也可以在存储在工作块(工作超级块)中的无效数据量多于某个阈值时,判断该工作块(工作超级块)需要GC动作。
控制器4基于与复制源块对应的SB管理表,仅将与各非零查阅计数对应的数据从复制源块复制到复制目标块53。然后,控制器4更新iLUT34,将分别表示复制有数据的复制目标块53内的物理存储位置的PBA与对应于这些复制数据的各iLBA建立关联。在这种情况下,控制器4也可把用来将表示写入有写入数据的物理存储位置的PBA与所述被赋予的iLBA建立关联的查找表高速缓存更新请求(Update request)发送给查找表高速缓存38。由此,查找表高速缓存38(iLUT34)得以更新,该PBA与对应于所述复制数据的各iLBA建立关联。
若复制目标块53被非零查阅计数的数据写满,该复制目标块53就会被移动到储存块池(工作块池)51,作为工作块(工作超级块)进行管理。
利用图15及图16,对本实施方式中所执行的垃圾回收动作进行说明。于此,为了简化附图,假设为超级块(SB)100-0、100-1、100-2各自具有页0~3,且在各页中存储4个4KB数据的情况。
图15中表示了通过垃圾回收动作将包含在超级块(SB)100-0内且与各非零查阅计数对应的数据复制到超级块(SB)100-2的情况。
在超级块(SB)100-0中,由PBA0~15分别指定的物理存储位置上分别存储有数据A0~P0,其中,数据A0、数据B0、数据G0、数据H0、数据I0、数据K0、数据N0、数据P0是与非零查阅计数(Refcount)对应的数据。另一方面,数据C0、数据D0、数据E0、数据F0、数据J0、数据L0、数据M0、数据O0是与零查阅计数(Refcount)对应的数据。存储在超级块(SB)100-0中的这些数据各自的查阅计数(Refcount)按照PBA0~15的排列顺序配置在SB管理表200-0内。
在图15中,表示出了:由PBA0指定的物理存储位置上存储的数据A0的查阅计数(Refcount)为“1”,由PBA1指定的物理存储位置上存储的数据B0的查阅计数(Refcount)为“2”,由PBA2指定的物理存储位置上存储的数据C0的查阅计数(Refcount)为“0”,由PBA3指定的物理存储位置上存储的数据D0的查阅计数(Refcount)为“0”,…由PBA15指定的物理存储位置上存储的P0的查阅计数(Refcount)为“2”。
现在,若选择超级块(SB)100-0作为GC对象超级块(复制源块),则控制器4基于与超级块(SB)100-0对应的SB管理表(于此,为SB管理表200-0),仅将包含在超级块(SB)100-0内且与非零查阅计数(Refcount)对应的数据复制到复制目标超级块(于此,为超级块(SB)100-2)。在图15中,数据A0、数据B0、数据G0、数据H0、数据I0、数据K0、数据N0、数据P0分别被复制到复制目标超级块(于此,为超级块(SB)100-2)的由PBA100~107指定的各自的物理存储位置。
接着,控制器4将各非零查阅计数从与GC对象超级块(复制源块)对应的SB管理表(于此,为SB管理表200-0)复制到与复制目标超级块(SB)对应的SB管理表(于此,为SB管理表200-2)。具体而言,将之前在与复制源超级块(超级块(SB)100-0)对应的SB管理表200-0中加以管理的、与数据A0、数据B0、数据G0、数据H0、数据I0、数据K0、数据N0、数据P0分别对应的查阅计数(于此,为1、2、2、3、2、1、1、2)复制到与复制目标超级块(超级块(SB)100-2)对应的SB管理表200-2。零查阅计数(Refcount)不被复制。复制非零查阅计数(Refcount)的结果,如图15所示,在SB管理表200-2中,与数据A0、数据B0、数据G0、数据H0、数据I0、数据K0、数据N0、数据P0分别对应的查阅计数(1、2、2、3、2、1、1、2)按照PBA100~107的排列顺序配置。
另外,iLUT34得以更新,分别表示复制有数据的复制目标超级块内的物理存储位置的PBA与对应于这些复制数据的各iLBA建立关联。在图15中,指定数据A0的复制目标超级块的物理存储位置的PBA100与对应于数据A0的iLBA0建立关联,指定数据B0的复制目标超级块的物理存储位置的PBA101与对应于数据B0的iLBA1建立关联,指定数据G0的复制目标超级块的物理存储位置的PBA102与对应于数据G0的iLBA4建立关联,指定数据H0的复制目标超级块的物理存储位置的PBA103与对应于数据H0的iLBA6建立关联,指定数据I0的复制目标超级块的物理存储位置的PBA104与对应于数据I0的iLBA12建立关联,指定数据K0的复制目标超级块的物理存储位置的PBA105与对应于数据K0的iLBA9建立关联,指定数据N0的复制目标超级块的物理存储位置的PBA106与对应于数据N0的iLBA13建立关联,指定数据P0的复制目标超级块的物理存储位置的PBA107与对应于数据P0的iLBA17建立关联。在各超级块中,也可为按每个用户数据逐一存储4KB的用户数据与对应于该用户数据的iLBA对。在这种情况下,控制器4通过查阅复制源块,能容易地识别出与数据A0对应的iLBA0、与数据B0对应的iLBA1、与数据G0对应的iLBA4、与数据H0对应的iLBA6、与数据I0对应的iLBA12、与数据K0对应的iLBA9、与数据N0对应的iLBA13、与数据P0对应的iLBA17,由此能容易地更新iLUT34。
图16中表示了在对超级块(SB)100-0执行垃圾回收动作后,对超级块(SB)100-1执行垃圾回收动作,由此将包含在超级块(SB)100-1内且与各非零查阅计数对应的数据复制到超级块(SB)100-2的情况。
在超级块(SB)100-1的由PBA50~65分别指定的物理存储位置,分别存储有数据A1~P1,其中,数据C1、数据D1、数据E1、数据F1、数据I1、数据L1、数据N1、数据O1是查阅计数(Refcount)不为零的数据。另一方面,数据A1、数据B1、数据G1、数据H1、数据J1、数据K1、数据M1、数据P1是查阅计数(Refcount)为零的数据。存储在超级块(SB)100-1中的各数据的查阅计数(Refcount)按照PBA50~65的排列顺序配置在SB管理表200-1内。
在图16中,表示出了:由PBA50指定的物理存储位置上存储的数据A1的查阅计数(Refcount)为“0”,由PBA51指定的物理存储位置上存储的数据B1的查阅计数(Refcount)为“0”,由PBA52指定的物理存储位置上存储的数据C1的查阅计数(Refcount)为“2”,由PBA53指定的物理存储位置上存储的数据D1的查阅计数(Refcount)为“1”,…由PBA65指定的物理存储位置上存储的数据P1的查阅计数(Refcount)为“0”。
现在,若选择超级块(SB)100-1作为GC对象超级块(复制源块),则控制器4基于与GC对象超级块(复制源块)对应的SB管理表(于此,为SB管理表200-1),而仅将包含在超级块(SB)100-1中且与非零查阅计数(Refcount)对应的数据复制到复制目标超级块(于此,为超级块(SB)100-2)。在图16中,数据C1、数据D1、数据E1、数据F1、数据I1、数据L0、数据N1、数据O1分别被复制到复制目标超级块(于此,为超级块(SB)100-2)的由PBA108~115指定的物理存储位置。
接着,控制器4将各非零查阅计数从与GC对象超级块(复制源块)对应的SB管理表(于此,为SB管理表200-1)复制到与复制目标超级块(SB)对应的SB管理表(于此,为SB管理表200-2)。具体而言,将之前在与复制源超级块(超级块(SB)100-1)对应的SB管理表200-1中加以管理的、数据C1、数据D1、数据E1、数据F1、数据I1、数据L0、数据N1、数据O1的查阅计数(Refcount)复制到与复制目标超级块(超级块(SB)100-2)对应的SB管理表200-2。复制查阅计数(Refcount)的结果,在图16中,SB管理表200-2上按照PBA108~115的排列顺序配置有数据C1、数据D1、数据E1、数据F1、数据I1、数据L0、数据N1、数据O1各自的查阅计数(Refcount)。
另外,iLUT34得以更新,分别表示复制有数据的复制目标超级块内的物理存储位置的PBA与对应于所复制数据的各iLBA建立关联。在图16中,指定数据C1的复制目标超级块的物理存储位置的PBA108与对应于数据C1的iLBA23建立关联,指定数据D1的复制目标超级块的物理存储位置的PBA109与对应于数据D1的iLBA32建立关联,指定数据E1的复制目标超级块的物理存储位置的PBA110与对应于数据E1的iLBA25建立关联,指定数据F1的复制目标超级块的物理存储位置的PBA111与对应于数据F1的iLBA30建立关联,指定数据I1的复制目标超级块的物理存储位置的PBA112与对应于数据I1的iLBA21建立关联,指定数据L1的复制目标超级块的物理存储位置的PBA113与对应于数据L1的iLBA35建立关联,指定数据N1的复制目标超级块的物理存储位置的PBA114与对应于数据N1的iLBA22建立关联,指定数据O1的复制目标超级块的物理存储位置的PBA115与对应于数据O1的iLBA31建立关联。
如上所述,能不变更在LUT32中加以管理的LBA与iLBA的关系,只仅使用与复制源块对应的SB管理表内的查阅计数信息便能执行垃圾回收动作。
图17的流程图表示本实施方式中的数据写入动作的顺序。
图17的左下方表示出了SB管理表200-0、超级块(SB)100-0、LUT32、哈希LUT33、iLUT34的数据结构。SB管理表200-0上配置有与存储在超级块(SB)100-0中的各数据对应的查阅计数(Refcount)。超级块(SB)100-0中存储有数据及与该数据对应的iLBA或LBA。LUT32存储有各LBA与各iLBA的对应关系。此外,在NAND型闪速存储器5内不存在与某写入数据一致的重复数据的情况下,该写入数据的LBA也可直接关联着PBA而非iLBA。在这种情况下,超级块(SB)100-0中也可存储有该写入数据与对应于该写入数据的LBA对,而非该写入数据与iLBA对。哈希LUT33管理各哈希值(数据的Hash(Data))与各iLBA的对应关系。iLUT34管理各iLBA与各PBA的对应关系。
接着,对写入动作进行说明。
控制器4首先对LUT32中是否存在与从主机2接收的写入指令中包含的LBA对应的iLBA进行判定(步骤S101)。若LUT32中不存在与写入指令中包含的LBA对应的iLBA(步骤S101中为否),则控制器4对LUT32中是否存在与写入指令中包含的LBA对应的PBA进行判定(步骤S102)。若LUT32中不存在与写入指令中包含的LBA对应的iLBA/PBA(步骤S102中为否),则表示写入指令中包含的写入数据是第一次被写入的数据,而非已经写入到NAND型闪速存储器5内的数据的更新数据(首次LBA的写入)。在这种情况下,进入下述步骤S104。
若LUT32中存在与写入指令中包含的LBA对应的iLBA(步骤S101中为是),则控制器4判定写入数据是已经写入到NAND型闪速存储器5内的数据的更新数据。也就是说,该写入数据的写入并非第一次的写入,而是第二次及第二次以上的写入(第二次及第二次以上的LBA写入)。在这种情况下,更新SB管理表200-0(步骤S103)。于此,控制器4将与已经写入的数据对应的查阅计数减去1。其原因在于,该写入数据(更新数据)与已经写入的数据(更新前数据)不同,该更新前数据不再会被该写入数据的LBA查阅。这时,控制器4从iLUT34取得与对应于写入指令中包含的LBA的iLBA对应的PBA,在SB管理表200-0中,将与所取得的PBA对应的数据的查阅计数(Refcount)减去“1”。
其次,控制器4计算写入数据的哈希值(步骤S104)。然后,控制器4对哈希LUT33中是否存在与通过计算而获得的哈希值对应的iLBA进行判定(步骤S105)。若哈希LUT33中已经存在与所获得的哈希值对应的iLBA(步骤S105中为是),则控制器4查阅iLUT34,取得与对应于所获哈希值的iLBA对应的PBA的数据,并将所取得的数据与接收的写入数据(输入数据)加以比较,对两数据是否一致进行判定(步骤S106)。若两数据一致(步骤S106中为是),则NAND型闪速存储器5内会存在与写入数据一致的重复数据。在这种情况下,不将写入数据写入到写入目标超级块(超级块(SB)100-0),而更新管理与赋予给所获哈希值的iLBA对应的PBA的查阅计数(Refcount)的SB管理表200-0,将与该PBA对应的查阅计数(Refcount)增加“1”(步骤S114)。另外,更新LUT32,将与所获得的哈希值对应的iLBA与写入指令中包含的LBA建立关联(步骤S115)。
另一方面,若两数据不一致(步骤S106中为否),则NAND型闪速存储器5内不会存在重复数据。另外,在哈希LUT33中不存在与所获得的哈希值对应的iLBA的情况下(步骤S105中为否),也不会存在重复数据。
在步骤S106中为否、或步骤S105中为否的情况下,控制器4对与供写入数据写入的写入目标超级块(超级块(SB)100-0)对应的在SB管理表200-0中加以管理的查阅计数(Refcount)中的最大查阅计数(Refcount)是否为“1”进行判定(步骤S107)。若最大查阅计数(Refcount)为“1”(步骤S107中为是),则也可不使用iLBA,而使LBA与PBA直接建立关联。当然,也可始终使用iLBA。
若最大查阅计数(Refcount)不为“1”(步骤S107中为否),则更新哈希LUT33(步骤S110)。这时,对在步骤S104中获得的哈希值赋予新的iLBA(未使用的iLBA)。而且,所获得的哈希值与被赋予的iLBA的对应关系存储在哈希LUT33中。此外,在步骤S105中为否的情况下,于与在步骤S104中获得的哈希值对应的哈希LUT33内的条目已经存在iLBA,因此也可对该条目追加新的iLBA(未使用的iLBA)。
另外,更新iLUT34,将表示供写入数据写入的预定的NAND型闪速存储器5内的物理存储位置的PBA与被赋予的iLBA建立关联(步骤S111)。
进而,更新写入目标超级块(超级块(SB)100-0)(步骤S112)。这时,写入数据与被赋予的iLBA一起被写入到写入目标超级块(超级块(SB)100-0)的与供写入数据写入的预定的PBA(新的PBA)对应的物理存储位置。
进而,更新与写入目标超级块(超级块(SB)100-0)对应的SB管理表200-0(步骤S113)。这时,将与写入数据对应的查阅计数(Refcount)、即与写入有该写入数据的物理存储位置的PBA对应的查阅计数(Refcount)设置为“1”。
另外,更新LUT32,将被赋予的iLBA与写入指令中包含的LBA建立关联(步骤S115)。
若最大查阅计数(Refcount)为“1”(步骤S107中为是),则写入目标超级块(超级块(SB)100-0)中不会存在被2个以上LBA查阅的数据。在这种情况下,能判断出写入到写入目标超级块(超级块(SB)100-0)的写入数据可不使用iLBA而利用PBA直接管理。此外,在该状况下也可还使用iLBA进行管理。
接着,更新写入目标超级块(超级块(SB)100-0)(步骤S108)。这时,写入数据与写入指令中包含的LBA一起被写入到写入目标超级块(超级块(SB)100-0)的与供写入数据写入的预定的PBA(新的PBA)对应的物理存储位置。
然后,更新与写入目标超级块(超级块(SB)100-0)对应的SB管理表200-0(步骤S109)。这时,将与写入数据对应的查阅计数(Refcount)、即与写入有该写入数据的物理存储位置的PBA对应的查阅计数(Refcount)设置为“1”。
另外,更新LUT32,将写入有写入数据的物理存储位置的PBA与写入指令中包含的LBA建立关联(步骤S116)。
另外,在LUT32中存在与写入指令中包含的LBA对应的PBA的情况下(步骤S102中为是),写入数据的写入就是第二次及第二次以上的写入(第二次及第二次以上的LBA写入)。另外,由于不存在与写入指令中包含的LBA对应的iLBA所以不存在重复数据,因此处于以不使用iLBA的方法便能进行数据管理的状况。
然后,将写入数据写入到写入目标超级块(超级块(SB)100-0)中,更新LUT32,将指定写入有写入数据的物理存储位置的新PBA与写入指令中包含的LBA建立关联(步骤S116)。
图18的流程图表示垃圾回收动作的顺序。
控制器4选择应进行GC的超级块作为GC对象超级块(复制源块)(步骤S201)。其次,控制器4查阅SB管理表,特定与非零查阅计数(Refcount)对应的PBA(步骤S202)。
接着,控制器4将与所特定的PBA对应的物理存储位置上存储的数据,也就是说,将与非零查阅计数对应的数据复制到复制目标块(步骤S203)。其后,控制器4更新iLUT34,将表示存储有复制数据的复制目标块内的物理存储位置的PBA与对应于该复制数据的iLBA建立关联(步骤S204)。在步骤S204中,控制器4进而向与复制目标块对应的SB管理表复制与该复制数据对应的查阅计数(Refcount)。
其次,控制器4对GC对象超级块(复制源块)内是否存在与非零查阅计数(Refcount)对应的数据进行判定(步骤S205)。
若GC对象超级块(复制源块)内存在与非零查阅计数(Refcount)对应的数据(步骤S205中为否),则进入步骤S202的处理。此外,反复进行步骤S202~S204的处理,直到GC对象超级块(复制源块)内不再存在与非零查阅计数(Refcount)对应的数据为止。
若GC对象超级块(复制源块)内不再存在与非零查阅计数(Refcount)对应的数据(步骤S205中为是),则垃圾回收动作完成。
图19的流程图表示本实施方式中的数据读出动作的顺序。
若从主机2接收读出指令(步骤S301中为是),则控制器4查阅LUT32,取得与读出指令中包含的LBA对应的iLBA(步骤S302)。其次,控制器4查阅iLUT34,取得与所取得的iLBA对应的PBA(步骤S303)。然后,控制器4读出与所取得的PBA对应的物理存储位置上存储的数据(步骤S304)。
图20表示各超级块管理表内的查阅计数存储区域部的构成例。
SB管理表是针对每个超级块(SB)逐一而设。SB管理表保存对应超级块(SB)的各种相关管理信息(元数据)。管理信息(元数据)的例子可包括对应超级块(SB)的编程/擦除周期数、对应超级块(SB)的无效数据量(或有效数据量)。
进而,SB管理表具有查阅计数存储区域,该查阅计数存储区域用来存储对应超级块(SB)中所能存储的全部数据各自的查阅计数。各SB管理表内的一个查阅计数指针指示出一定尺寸(例如,1024比特)的一个查阅计数存储区域部的位置。各SB管理表包含多个查阅计数指针。由此,各SB管理表与多个查阅计数存储区域部建立关联。所述多个查阅计数存储区域部被用作对应SB管理表用的查阅计数存储区域。
例如,在一个超级块的尺寸为4GB的情况下,1M个4KB数据存储在一个超级块中。这种情况下,一个SB管理表需要有能保存1M个查阅计数的查阅计数存储区域。
若一个查阅计数比特长为2比特,则“00”用来表示对应数据未被任何逻辑地址查阅,“01”用来表示对应数据被一个逻辑地址查阅,“10”用来表示对应数据被2个逻辑地址查阅,“11”用来表示对应数据被3个逻辑地址查阅。因此,所能管理的最大查阅计数值为3。
若一个查阅计数比特长为3比特,则所能管理的最大查阅计数值为7。若一个查阅计数比特长为4比特,则所能管理的最大查阅计数值为15。若一个查阅计数比特长为8比特,则所能管理的最大查阅计数值为255。
虽然如上所述,查阅计数比特长越长,则所能管理的最大查阅计数值越为增加,但是被查阅计数存储区域消耗的存储器资源量也会增加。
通常,每个数据的查阅计数值都不相同的情况较多。因此,相同超级块中会混合存在查阅计数互不相同的数据。查阅计数不同的数据混合存在于相同超级块这种状况成为使被确保用作查阅计数存储区域的存储器资源遭到浪费的原因。
在本实施方式中,通过GC,具有较大查阅计数的数据群与具有较小查阅计数的数据群得以相互分离。由此,能将属于相同查阅计数范围的数据彼此存储到相同超级块中。结果,能对集中了具有较大查阅计数的数据群的超级块,确保包含能存储各自具有较长比特长的多个查阅计数的大尺寸查阅计数存储区域的SB管理表,能对集中了具有较小查阅计数的数据群的超级块,确保包含能存储各自具有较短比特长的多个查阅计数的小尺寸查阅计数存储区域的SB管理表。
因此,各SB管理表构成为能改变查阅计数存储区域的尺寸。各SB管理表也可预先含有数量与构成最大尺寸的查阅计数存储区域所需的查阅计数存储区域部数相同的查阅计数指针。
在图20中,例示了包含不同尺寸的查阅计数存储区域的3种SB管理表。
SB管理表200-0被设置成包含能存储各为1比特的多个查阅计数的最小尺寸的查阅计数存储区域的SB管理表。
在SB管理表200-0中,仅利用SB管理表200-0中包含的所有查阅计数指针中的1000个查阅计数指针。一个查阅计数指针表示具有1024比特长的一个查阅计数存储区域部的位置。各查阅计数的比特长为1比特。因此,查阅计数存储区域部包含与1024个4KB数据分别对应的1024个点阵图标志(BM)。查阅计数(点阵图标志)=“0”表示查阅对应4KB数据的逻辑地址数为零。查阅计数(点阵图标志)=“1”表示查阅对应4KB数据的逻辑地址数为1。
SB管理表200-1被设置成包含能存储各为2比特的多个查阅计数的查阅计数存储区域的SB管理表。
在SB管理表200-1中,利用SB管理表200-1中包含的所有查阅计数指针中的2000个查阅计数指针。一个查阅计数指针表示具有1024比特长的一个查阅计数存储区域部的位置。各查阅计数的比特长为2比特。一个查阅计数存储区域部包含512个查阅计数。因此,为了存储与1024个4KB数据分别对应的1024个查阅计数,要利用2个查阅计数存储区域部。
SB管理表200-2被设置成包含能存储各为4比特的多个查阅计数的查阅计数存储区域的SB管理表。
在SB管理表200-2中,利用SB管理表200-2中包含的所有查阅计数指针中的4000个查阅计数指针。一个查阅计数指针表示具有1024比特长的一个查阅计数存储区域部的位置。各查阅计数的比特长为4比特。一个查阅计数存储区域部包含256个查阅计数。因此,为了存储与1024个4KB数据分别对应的1024个查阅计数,要利用4个查阅计数存储区域部。
与SB管理表200-0建立有关联的超级块(SB)100-0被用作用来存储查阅计数(Refcount)=0~1的数据的超级块(SB)。与SB管理表200-1建立有关联的超级块(SB)100-1主要被用作用来存储查阅计数(Refcount)=2~3的数据的超级块(SB)。
与SB管理表200-2建立有关联的超级块(SB)100-2主要被用作用来存储查阅计数(Refcount)=4~15的数据的超级块(SB)。
图21表示将对应于较大查阅计数(Refcount)的数据与对应于较小查阅计数(Refcount)的数据分离的垃圾回收动作的概要。
于此,分配有复制目标超级块(SB)221、222。另外,SB管理表221A、222A分别与复制目标超级块(SB)221、222建立有关联。另外,SB管理表221A具有能存储各为4比特长的多个查阅计数(Refcount)的查阅计数存储区域,SB管理表222A具有能存储各为2比特长的多个查阅计数(Refcount)的查阅计数存储区域。
超级块(SB)210中存储有具有较大查阅计数(Refcount=4~15)的数据d1、数据d2、数据d4、数据d5、具有较小查阅计数(Refcount=1~3)的数据d6、数据d8、具有零查阅计数(Refcount)的数据d3、d7等。
超级块(SB)211中存储有具有较大查阅计数(Refcount=4~15)的数据d17、具有较小查阅计数(Refcount=1~3)的数据d11、数据d13、数据d14、数据d18、具有零查阅计数的数据d12、数据d15、数据d16等。
超级块(SB)212中存储有具有较大查阅计数(Refcount=4~15)的数据d22、数据d23、数据d24、具有较小查阅计数(Refcount=1~3)的数据d27、数据d28、具有零查阅计数的数据d21、数据d25、数据d26等。
在选择超级块(SB)210作为GC对象超级块(复制源块)的情况下,控制器4基于与超级块(SB)210对应的SB管理表,将包含在超级块(SB)210中且具有属于第1查阅计数范围(于此,为1~3)的查阅计数的数据集合复制到复制目标超级块(SB)222,并将包含在超级块(SB)210中且具有属于第2查阅计数范围(于此,为4~15)的查阅计数的数据集合复制到复制目标超级块(SB)221,其中所述第2查阅计数范围具有比第1查阅计数范围的上限(于此,为3)大的下限。
具体而言,将具有较大查阅计数(Refcount=4~15)的数据d1、数据d2、数据d4、数据d5复制到复制目标超级块(SB)221,并将具有较小查阅计数(Refcount=1~3)的数据d6、数据d8复制到复制目标超级块(SB)222。
其次,在选择超级块(SB)211作为GC对象超级块(复制源块)的情况下,控制器4基于与超级块(SB)211对应的SB管理表,将包含在超级块(SB)211中且具有属于第1查阅计数范围(于此,为1~3)的查阅计数的数据集合复制到复制目标超级块(SB)222,并将包含在超级块(SB)211中且具有属于第2查阅计数范围(于此,为4~15)的查阅计数的数据集合复制到复制目标超级块(SB)221,其中所述第2查阅计数范围具有比第1查阅计数范围的上限(于此,为3)大的下限。
具体而言,将具有较大查阅计数(Refcount=4~15)的数据d17复制到复制目标超级块(SB)221,并将具有较小查阅计数(Refcount=1~3)的数据d11、数据d13、数据d14、数据d18复制到复制目标超级块(SB)222。
其次,在选择超级块(SB)212作为GC对象超级块(复制源块)的情况下,控制器4基于与超级块(SB)212对应的SB管理表内,将包含在超级块(SB)212中且具有属于第1查阅计数范围(于此,为1~3)的查阅计数的数据集合复制到复制目标超级块(SB)222,并将包含在超级块(SB)212中且具有属于第2查阅计数范围(于此,为4~15)的查阅计数的数据集合复制到复制目标超级块(SB)221,其中所述第2查阅计数范围具有比第1查阅计数范围的上限(于此,为3)大的下限。
具体而言,将具有较大查阅计数(Refcount=4~15)的数据d22、数据d23、数据d24复制到复制目标超级块(SB)221,并将具有较小查阅计数(Refcount=1~3)的数据d27、数据d28复制到复制目标超级块(SB)222。
这样一来,在GC动作中,应被复制数据的复制目标块会随着该数据的查阅计数(Refcount)的值而变更。结果,能将属于相同查阅计数范围的数据集中于相同的超级块。由此,能仅将具有较大查阅计数的数据群集中于与能存储各自具有较长比特长的多个查阅计数的SB管理表建立有关联的超级块,另外,能仅将具有较小查阅计数的数据群集中于与能存储各自具有较短比特长的多个查阅计数的SB管理表建立有关联的超级块。由此,与查阅计数不同的数据混合存在于相同超级块的状况相比,能大幅降低查阅计数存储区域用存储器资源的消耗量。
另外,属于相同查阅计数范围的数据群是具有类似生命周期的数据群。因此,能提高使相同超级块中包含的各数据在同一时期无效化的概率,由此能抑制GC的频率。这能降低写入放大,结果能将SSD3的寿命延长到最大限度。
图22表示垃圾回收动作中包含的数据复制动作及查阅计数复制动作。
于此,选择超级块(SB)100-0作为GC对象超级块(GC的复制源块),分配超级块(SB)100-2及超级块100-3作为复制目标超级块。
另外,SB管理表200-0、200-2、200-3分别与超级块(SB)100-0、100-2、100-3建立有关联。另外,SB管理表200-2具有能存储各为2比特长的多个查阅计数(Refcount)的查阅计数存储区域,SB管理表200-3具有能存储各为3比特长的多个查阅计数(Refcount)的查阅计数存储区域。
在作为GC对象超级块(GC的复制源块)的超级块(SB)100-0中,存储有与非零查阅计数对应的数据A0、数据B0、数据G0、数据H0、数据I0、数据K0、数据N0、数据P0、与零查阅计数对应的数据C0、数据D0、数据E0、数据F0、数据J0、数据L0、数据M0、数据O0。
另外,与查阅计数(Refcount)=4~7对应的数据即数据I0、数据K0、数据N0、数据P0分别存储在超级块(SB)100-0内的由PBA8、PBA10、PBA13、PBA15指定的物理存储位置。与查阅计数(Refcount)=1~3对应的数据即数据A0、数据B0、数据G0、数据H0分别存储在超级块(SB)100-0内的由PBA0、PBA1、PBA6、PBA7指定的物理存储位置。查阅计数为零的数据C0、数据D0、数据E0、数据F0、数据J0、数据L0、数据M0、数据O0分别存储在超级块(SB)100-0内的与PBA2、PBA3、PBA4、PBA5、PBA9、PBA11、PBA12、PBA14对应的物理存储位置。
在与超级块(SB)100-0对应的SB管理表200-0中,存储有存储在超级块(SB)100-0内的数据各自的查阅计数(Refcount)。
若对超级块(SB)100-0开始GC动作,则超级块(SB)100-0内的数据A0、数据B0、数据G0、数据H0分别被复制到作为复制目标超级块的超级块(SB)100-2内的由PBA100、PBA101、PBA102、PBA103指定的物理存储位置。随之,与在SB管理表200-0中加以管理的数据A0、数据B0、数据G0、数据H0分别对应的查阅计数(“1”、“2”、“2”、“3”)被复制到与作为复制目标超级块的超级块(SB)100-2对应的SB管理表200-2。这时,在SB管理表200-2中,与数据A0、数据B0、数据G0、数据H0分别对应的查阅计数(“1”、“2”、“2”、“3”)按照这个顺序连续地配置。
另外,超级块(SB)100-0内的数据I0、数据K0、数据N0、数据P0分别被复制到作为复制目标超级块的超级块(SB)100-3内的由PBA150、PBA151、PBA152、PBA153指定的各自的物理存储位置。随之,与在SB管理表200-0中加以管理的数据I0、数据K0、数据N0、数据P0分别对应的查阅计数(“4”、“5”、“4”、“6”)被复制到与作为复制目标超级块的超级块(SB)100-3对应的SB管理表200-3。这时,在SB管理表200-2中,与数据I0、数据K0、数据N0、数据P0分别对应的查阅计数(“4”、“5”、“4”、“6”)按照这个顺序连续地配置。
利用图23及图24,对与某数据对应的查阅计数(Refcount)溢出的情况下执行的数据复制动作进行说明。于此,与超级块(SB)100-0建立有关联的SB管理表200-0具有能存储各为2比特长的多个查阅计数(Refcount)的查阅计数存储区域,与超级块(SB)100-1建立有关联的SB管理表200-1具有能存储各为3比特长的多个查阅计数(Refcount)的查阅计数存储区域。
在超级块(SB)100-0中,与查阅计数(Refcount)=1~3对应的数据即数据A0、数据C0、数据D0、数据E0、数据F0、数据G0、数据H0、数据I0、数据J0、数据K0、数据L0、数据M0、数据N0、数据O0、数据P0分别存储在由PBA0、PBA2、PBA3、PBA4、PBA5、PBA6、PBA7、PBA8、PBA9、PBA10、PBA11、PBA12、PBA13、PBA14、PBA15指定的物理存储位置,与查阅计数(Refcount)=0对应的数据即数据B0存储在由PBA1指定的物理存储位置。
在超级块(SB)100-1中,与查阅计数=4~7对应的数据即数据A1、数据B1、数据C1、数据D1、数据E1、数据F1、数据G1、数据H1、数据I1、数据J1、数据K1分别存储在由PBA50、PBA51、PBA52、PBA53、PBA54、PBA55、PBA56、PBA57、PBA58、PBA59、PBA60指定的物理存储位置。在由PBA61~PBA65指定的物理存储位置未存储数据,而对应于删除状态的物理存储位置(能利用的物理存储位置)。
与存储在超级块(SB)100-0中的数据H0对应的查阅计数值为“3”。因此,与数据H0对应的查阅计数值因来自主机2的与数据H0一致的写入数据的接收,而超过以能存储在SB管理表200-0查阅计数存储区域的各查阅计数的比特长(于此,为2比特)所能表现出的最大值(于此,为3)(溢出)。
在这种情况下,控制器4如图24所示,将数据H0复制到与SB管理表200-1建立有关联的超级块(SB)100-1,所述SB管理表200-1包含能存储各自具有比SB管理表200-0长的比特长的多个查阅计数的查阅计数存储区域。数据H0会被复制到超级块(SB)100-1内的下个可利用物理存储位置(于此,为由PBA61指定的物理存储位置)。随之,将表示复制源超级块(超级块(SB)100-0)内的原来存储有数据H0的物理存储位置的PBA7的查阅计数(Refcount)由3更新为0。这是为了将由PBA7指定的物理存储位置上存储的数据无效化。另外,数据H0的查阅计数(于此,为“4”)会被复制到与PBA61对应的SB管理表200-1内的位置。
利用图25,对与某数据对应的查阅计数(Refcount)溢出的情况下执行的查阅计数存储区域扩展动作进行说明。于此,与超级块(SB)100-0建立有关联的SB管理表200-0具有能存储各为2比特长的多个查阅计数的查阅计数存储区域。
现在,在超级块(SB)100-0中,与查阅计数(Refcount)=1~3对应的数据即数据A0、数据C0、数据D0、数据E0、数据F0、数据G0、数据H0、数据I0、数据J0、数据K0、数据L0、数据M0、数据N0、数据O0、数据P0分别存储在由PBA0、PBA2、PBA3、PBA4、PBA5、PBA6、PBA7、PBA8、PBA9、PBA10、PBA11、PBA12、PBA13、PBA14、PBA15指定的物理存储位置,与查阅计数(Refcount)=0对应的数据即数据B 0存储在由PBA1指定的物理存储位置。
控制器4在与超级块(SB)100-0内的数据H0对应的查阅计数值因来自主机2的包含与数据H0一致的写入数据的写入指令的接收,而超过以能存储在SB管理表200-0查阅计数存储区域的各查阅计数的比特长所能表现出的最大值的情况下,通过将SB管理表200-0的查阅计数存储区域的尺寸扩展,而延长能存储在SB管理表200-0查阅计数存储区域的各查阅计数的比特长。
具体而言,在从主机2接收包含与数据H0一致的写入数据的写入指令后,数据H0的查阅计数(Refcount)从3增加到4。在这种情况下,数据H0的查阅计数(Refcount)超过能存储在与超级块(SB)100-0对应的SB管理表200-0查阅计数存储区域的查阅计数最大值(溢出)。这时,如图25的右侧所示,例如以使各查阅计数的比特长从2比特变更为4比特的方式,扩展SB管理表200-0查阅计数存储区域的尺寸。在这种情况下,控制器4也可将以往的查阅计数存储区域开放,而且,也可取而代之,重新确保较大尺寸的查阅计数存储区域。
然后,控制器4将与数据H0对应的查阅计数增加1,由此将与数据H0对应的查阅计数从“3”变更为“4”。
其次,利用图26,对垃圾回收对象块(复制源块)候补的选择条件进行说明。
控制器4基于超级块(SB)各自的无效数据量(或有效数据量),而从这些超级块(SB)中选择GC对象块(复制源块)候补。在这种情况下,控制器4将集中有具有较大查阅计数的数据的超级块(SB)优先于集中有具有较小查阅计数的数据的超级块(SB)地选作GC的复制源块候补。也就是说,查阅计数越大的数据,该数据被覆写的概率越低,因此即使集中有具有较大查阅计数的数据的超级块(SB)相比于集中有具有较小查阅计数的数据的超级块(SB)来说有效数据量更多,控制器4也将其选作GC的复制源块候补。
多个超级块(SB)分为集中有属于第1查阅计数范围的数据集合的超级块(SB)群、及集中有属于第2查阅计数范围的数据集合的超级块(SB)群。
在图26中,超级块(SB)100-0归为集中有属于某查阅计数范围(第1查阅计数范围)的数据的超级块(SB)群、即集中有具有较小查阅计数的数据的超级块(SB)群,超级块(SB)100-1归为集中有属于具有比第1查阅计数范围的上限大的下限的查阅计数范围(第2查阅计数范围)的数据的超级块(SB)群、即集中有具有较大查阅计数的数据的超级块(SB)群。
这时,控制器4对于超级块(SB)100-0,在满足无效数据量大于某阈值Xa这个条件的情况下,将其选作用于GC的复制源块候补。另一方面,控制器4对于超级块(SB)100-1,在满足无效数据量大于阈值Xb这个条件的情况下,将其选作用于GC的复制源块候补,其中所述阈值Xb是小于阈值Xa的值。
如上所述,查阅计数越大的数据,该数据被覆写的概率越低。因此,通常,集中有具有较大查阅计数的数据的超级块(SB)内的各数据会在较长时间内被持续利用,该超级块(SB)再用于其他数据的存储的概率变低。因此,SSD3的超额配置会以集中有具有较大查阅计数的数据的超级块(SB)内所存在的无效数据(具有零查阅计数的数据)的量来减少。在本实施方式中,如上所述,集中有具有较大查阅计数的数据的超级块(SB)即使相比于集中有具有较小查阅计数的数据的超级块(SB)来说有效数据量更多,也会被选作GC的复制源块候补。因此,能降低SSD3的超额配置的减少,能降低写入放大。
图27表示选择用于GC的复制源块候补的动作。
超级块(SB)100-0集中有与查阅计数=1~3对应的数据。在超级块(SB)100-0中,数据A0~数据P0分别存储在由PBA0~15指定的物理存储位置。由SB管理表200-0可知,存储在超级块(SB)100-0中的数据之中查阅计数为零的数据是由PBA1指定的数据B0、由PBA4指定的数据E0、由PBA11指定的数据L0、由PBA12指定的数据M0。控制器4在超级块(SB)100-0的无效数据量大于阈值X1的条件下,选择超级块(SB)100-0作为GC对象块候补、即用于GC的复制源块候补。无效数据量也可通过具有零查阅计数的数据数来表达。在这种情况下,超级块(SB)100-0的当前无效数据量为4。若将阈值X1设置为4,则超级块(SB)100-0不满足所述条件,因此不会被选作用于GC的复制源块候补。
在超级块(SB)100-1中,集中有与查阅计数=4~7对应的数据。在超级块(SB)100-1中,数据A1~数据P1分别存储在由PBA50~65指定的物理存储位置。由SB管理表200-1可知,存储在超级块(SB)100-1中的数据之中查阅计数为零的数据是由PBA53指定的数据D1、由PBA55指定的数据F1、由PBA60指定的数据K1、由PBA62指定的数据M1。控制器4在超级块(SB)100-1的无效数据量大于阈值X2的条件下,选择超级块(SB)100-1作为GC对象块候补、即用于GC的复制源块候补。超级块(SB)100-1的当前无效数据量与超级块(SB)100-0的无效数据量相同为4。阈值X2小于阈值X1。若将阈值X1设置为4,则阈值X2会被设置为3以下的值。因此,超级块(SB)100-1满足所述条件,所以会被选作用于GC的复制源块候补。
图28的流程图表示选择复制源块候补的动作的顺序。于此,为了简化说明,假设为如下情况:将NAND型闪速存储器5的所有超级块(SB)分为集中有属于查阅计数为1~3的范围的数据的超级块(SB)群、集中有属于查阅计数为4~7的范围的数据的超级块(SB)群、及集中有属于查阅计数为8~15的范围的数据的超级块(SB)群。
首先,控制器4选择某一个超级块(SB)(步骤S401)。然后,控制器4查阅与所选择的超级块(SB)建立有关联的SB管理表(步骤S402),基于存储在所选超级块(SB)中的所有数据的查阅计数(Refcount),而从它们中特定最大的查阅计数(Refcount)(步骤S403)。
若所特定的最大查阅计数(Refcount)未达4(步骤S404中为是),则控制器4判定所选超级块(SB)属于集中有属于查阅计数为1~3的范围的数据的超级块(SB)群。然后,控制器4对所选超级块(SB)的无效数据量是否多于阈值X1进行判定(步骤S405)。
若无效数据量多于阈值X1(步骤S405中为是),则控制器4将所选择的超级块(SB)选作GC对象超级块(复制源块)候补(步骤S406)。若无效数据量为阈值X1以下(步骤S405中为否),则控制器4不将所选择的超级块(SB)选作GC对象超级块(复制源块)候补(步骤S407)。
若所特定的最大查阅计数(Refcount)为4以上且未达8(步骤S404中为否,且步骤S408中为是),则控制器4判定所选超级块(SB)属于集中有属于查阅计数为4~7的范围的数据的超级块(SB)群。然后,控制器4对所选超级块(SB)的无效数据量是否多于阈值X2(<X1)进行判定(步骤S409)。
若无效数据量多于阈值X2(步骤S409中为是),则控制器4将所选择的超级块(SB)选作GC对象超级块(复制源块)候补(步骤S410)。若无效数据量为阈值X2以下(步骤S409中为否),则控制器4不将所选择的超级块(SB)选作GC对象超级块(复制源块)候补(步骤S411)。
若所特定的最大查阅计数(Refcount)为8以上(步骤S408中为否),则控制器4判定所选超级块(SB)属于集中有属于查阅计数为8~15的范围的数据的超级块(SB)群。然后,控制器4对所选超级块(SB)的无效数据量是否多于阈值X3(<X2)进行判定(步骤S412)。
若无效数据量多于阈值X3(步骤S412中为是),则控制器4将所选择的超级块(SB)选作GC对象超级块(复制源块)候补(步骤S413)。若无效数据量为阈值X3以下(步骤S412中为否),则控制器4不将所选择的超级块(SB)选作GC对象超级块(复制源块)候补(步骤S414)。
图29表示写入到超级块(SB)内各页中的用户数据与中间地址(iLBA)的关系。
控制器4将用户数据与iLBA对写入到超级块(SB)内的页中。在这种情况下,控制器4也可首先基于iLBA与用户数据的组合而生成错误检测符号(EDC)。然后,控制器4将iLBA-用户数据-EDC组写入到超级块(SB)内的页中。控制器4在从超级块(SB)读出用户数据时,会通过对基于所读出的iLBA及所读出的用户数据而计算出的值与所读出的EDC是否一致进行检查,来判定是否正确读出了用户数据。其次,利用图30~34,对在垃圾回收(GC)动作中执行的重复数据删除动作进行说明。
图30表示与某数据对应的查阅计数(Refcount)溢出的情况下执行的数据写入动作。
于此,超级块(SB)100-0是用来存储与查阅计数(Refcount)=0~3对应的数据的超级块。也就是说,与超级块(SB)100-0建立有关联的SB管理表200-0具有能存储各为2比特长的多个查阅计数(Refcount)的查阅计数存储区域。
设定为从主机2接收的写入数据(数据X)与已经存储在超级块(SB)100-0中的数据A0一致。若该数据A0的当前查阅计数为3,则需将与数据A0对应的查阅计数值从3变更为4。但是,管理数据A0的查阅计数(Refcount)的SB管理表200-0无法存储大于3的查阅计数(Refcount),因此无法将数据A0的查阅计数(Refcount)从3变更为4(溢出)。
因此,控制器4将数据X写入到写入目标超级块(于此,为超级块(SB)100-1)中。这时,LUT32得到更新,未使用的iLBA(于此,为iLBAx)与对应于数据X的LBAj建立关联。另外,iLUT34得到更新,表示写入有数据X的NAND型闪速存储器5内的物理存储位置的PBA61与iLBAx建立关联。进而,在管理写入目标超级块(超级块(SB)100-1)的查阅计数(Refcount)的SB管理表200-1中,与数据X对应的查阅计数(Refcount)被设置为1。
其次,对在GC时执行的重复数据删除动作进行说明。
在图31中,例示了如下情况:选择写入有数据X的写入目标超级块(超级块(SB)100-1)整体在被来自主机2的写入数据写满后作为GC对象超级块(用于GC的复制源块),且与数据X一致的数据A0的查阅计数(Refcount)由3减少到2。在这种情况下,如图32所示,控制器4仅将数据X以外的与非零查阅计数对应的数据(数据A1、数据D1、数据F1、数据G1、数据I1、数据M1、数据O1)从复制源块(超级块(SB)100-1)复制到复制目标块(超级块(SB)100-2)。
然后,如图33所示,控制器4将非零查阅计数(Refcount)之中数据X(对应于PBA61)以外数据的查阅计数(Refcount)从SB管理表200-1复制到SB管理表200-2。也就是说,将数据A1(对应于PBA50)、数据D1(对应于PBA53)、数据F1(对应于PBA55)、数据G1(对应于PBA56)、数据I1(对应于PBA58)、数据M1(对应于PBA62)、数据O1(对应于PBA64)各自的查阅计数(Refcount)从与复制源块(超级块(SB)100-1)对应的SB管理表200-1复制到与复制目标超级块(超级块(SB)100-2)对应的SB管理表200-2。
另外,控制器4将数据A0(对应于PBA0)的查阅计数(Refcount)增加1。由此,在对应于存储有与数据X一致的数据A0的超级块(SB)100-0的SB管理表200-0中,数据A0(对应于PBA0)的查阅计数(Refcount)例如由2变更为3。
进而,如图34所示,控制器4更新LUT32,将指示保存有与数据A0对应的PBA0的iLUT34内的条目的iLBA(于此,为iLBA0)与数据X的LBA(于此,为LBAj)建立关联。由此,在接收包含LBAj的读出指令时,能基于与LBAj对应的iLBA0,而查阅与iLBA0建立有关联的PBA0。因此,能读出与数据X一致的数据A0。
图35的流程图表示用来将具有较大查阅计数的数据与具有较小查阅计数的数据分离的GC动作的顺序。
控制器4从具有非零查阅计数的数据与具有零查阅计数的数据混合存在的超级块群中选择GC对象超级块(复制源块)(步骤S501)。
控制器4基于与复制源块对应的SB管理表,将包含在复制源块内且与属于第1查阅计数范围的各查阅计数对应的数据集合复制到第1复制目标块(步骤S502)。第1复制目标块是与包含能存储各自具有第1比特长的多个查阅计数的查阅计数存储区域的SB管理表建立有关联的超级块。
接着,控制器4基于与复制源块对应的SB管理表,将包含在复制源块内且与属于第2查阅计数范围的各查阅计数对应的数据集合复制到第2复制目标块,其中所述第2查阅计数范围具有比第1查阅计数范围的上限大的下限(步骤S503)。第2复制目标块是与包含能存储各自具有第2比特长的多个查阅计数的查阅计数存储区域的SB管理表建立有关联的超级块,其中所述第2比特长长于第1比特长。
通过以上的处理,具有属于第1查阅计数范围的查阅计数的数据与具有属于第2查阅计数范围的查阅计数的数据会被移动到互不相同的超级块,因此能将属于相同查阅计数范围的数据群集中于相同的超级块。因此,能提高各SB管理表的查阅计数存储区域的利用效率,结果能削减查阅计数各自的管理所需的存储器资源量。
图36的流程图表示与某数据对应的查阅计数溢出时执行的重复数据复制处理的顺序。
控制器4对已经存储的某数据(第1数据)的查阅计数是否因来自主机2的新写入数据的接收而溢出进行判定(步骤S601)。在步骤S601中,控制器4对与第1数据对应的查阅计数值因来自主机2的与第1数据一致的写入数据的接收,是否超过了以能存储在SB管理表查阅计数存储区域的各查阅计数的比特长所能表现出的最大值进行判定,其中所述SB管理表是与存储有第1数据的第1超级块对应的SB管理表。
若与第1数据对应的查阅计数值超过以能存储在与第1超级块对应的SB管理表查阅计数存储区域内的各查阅计数的比特长所能表现出的最大值(步骤S601中为是),则控制器4将第1数据复制到与包含如下查阅计数存储区域的管理表建立有关联的其他超级块,所述查阅计数存储区域为能存储各自具有比与存储有第1数据的第1超级块对应的SB管理表内的各查阅计数长的比特长的多个查阅计数(步骤S602)。另外,在步骤S602中,控制器4如图24中所说明的那样,更新与复制有第1数据的超级块对应的SB管理表,将与第1数据对应的查阅计数增加1。进而,控制器4更新iLUT34,将表示复制有第1数据的物理存储位置的PBA与对应于第1数据的iLBA建立关联。
图37的流程图表示与某数据对应的查阅计数溢出时执行的查阅计数存储区域扩展处理的顺序。
控制器4对已经存储的某数据(第1数据)的查阅计数是否因来自主机2的新写入数据的接收而溢出进行判定(步骤S701)。在步骤S701中,控制器4对与第1数据对应的查阅计数值因来自主机2的与第1数据一致的写入数据的接收,是否超过了以能存储在SB管理表查阅计数存储区域的各查阅计数的比特长所能表现出的最大值进行判定,其中所述SB管理表是与存储有第1数据的第1超级块对应的SB管理表。
若与第1数据对应的查阅计数值超过以能存储在与第1超级块对应的SB管理表查阅计数存储区域内的各查阅计数的比特长所能表现出的最大值(步骤S701中为是),则控制器4通过将与第1超级块对应的SB管理表查阅计数存储区域的尺寸扩展,而延长能存储在与第1超级块对应的SB管理表查阅计数存储区域的各查阅计数的比特长(步骤S702)。在步骤S702中,如图20中所说明那样,控制器4也可将以往的查阅计数存储区域开放,而且,也可重新确保较大尺寸的查阅计数存储区域。
图38的流程图表示与某数据对应的查阅计数溢出时执行的数据写入处理的顺序。
控制器4对已经存储的某数据(第1数据)的查阅计数是否因来自主机2的新写入数据的接收而溢出进行判定(步骤S801)。在步骤S801中,控制器4对与第1数据对应的查阅计数值因来自主机2的与第1数据一致的写入数据的接收,是否超过了以能存储在SB管理表查阅计数存储区域的各查阅计数的比特长所能表现出的最大值进行判定,其中所述SB管理表是与存储有第1数据的第1超级块对应的SB管理表。
若与第1数据对应的查阅计数值超过以能存储在与第1超级块对应的SB管理表查阅计数存储区域内的各查阅计数的比特长所能表现出的最大值(步骤S801中为是),则控制器4执行以下处理,来代替将已经赋予给第1数据的iLBA与写入数据的LBA建立关联。
控制器4更新LUT32,将未使用的iLBA(例如iLBAx)与写入数据的LBA建立关联(步骤S802)。接着,控制器4将写入数据写入到某超级块(例如,当前写入目标超级块)中(步骤S803)。控制器4更新iLUT34,将表示写入有写入数据的NAND型闪速存储器5内的位置(物理存储位置)的PBA与关联着写入数据的LBA的所述iLBA(iLBAx)建立关联(步骤S804)。然后,控制器4更新与写入有写入数据的超级块对应的SB管理表,将与写入数据对应的查阅计数设置为1(步骤S805)。
结果,即便在与写入数据一致的现有数据(第1数据)的当前查阅计数值达到以能利用的查阅计数的最大比特长所能表现出的最大值的情况下,也能将该写入数据写入到NAND型闪速存储器5中。
图39表示从LBA直接查阅PBA的地址查阅路径、及经由iLBA而从LBA查阅PBA的地址查阅路径混合存在的地址查阅结构。
在图39中,LBA32是以某一个LBA关联着iLBA或PBA中的任一者的方式构成。
在某LBA关联着iLBA的情况下,并非从该LBA直接查阅PBA,而是经由iLBA从该LBA查阅PBA。在这种情况下,如上所述,利用包含LBA32及iLUT34这2个地址转换表来执行地址转换。
另一方面,在某LBA关联着PBA的情况下,与普通SSD同样地,能从LBA直接查阅PBA,由此,能改善例如数据读出动作的性能。
本实施方式中,在NAND型闪速存储器5中不存在与从主机2接收的写入数据一致的数据(重复数据)的情况下,执行以下任一项。
(1)控制器4更新哈希LUT33,而对写入数据的哈希值赋予未使用的iLBA,然后更新LUT32,而对写入数据的LBA关联该iLBA。
(2)控制器4更新LUT32,而对写入数据的LBA直接关联PBA。
在(2)的案例中,该写入数据也可写入到独占类型的超级块中。在图39中,超级块(SB)100-100、100-101、100-102…表示独占类型的超级块(SB)。所谓独占类型的超级块(SB)是指用来存储仅被单独LBA查阅的数据的超级块(SB)。独占类型的超级块(SB)与包含能存储各为1比特长的多个查阅计数(Refcount)的查阅计数存储区域的SB管理表建立有关联。1比特长的查阅计数=0表示对应数据未被任何LBA查阅,即对应数据为无效数据。1比特长的查阅计数=1表示对应数据仅被一个LBA查阅,即对应数据为有效数据。在将写入数据写入到独占类型的超级块的案例中,由LUT32来通知写入目标超级块为独占类型的超级块,由此,也可对写入数据的LBA关联PBA。
在(1)的案例中,该写入数据也可写入到共用类型的超级块中。在图39中,超级块(SB)100-0、100-1、100-2、…、100-50、100-51、100-52、…表示共用类型的超级块(SB)。所谓共用类型的超级块(SB)是指用来存储有可能被多个LBA查阅的数据的超级块(SB)。共用类型的超级块(SB)与包含能存储各为2比特以上的多个查阅计数(Refcount)的查阅计数存储区域的SB管理表建立有关联。在图39中,例示了如下情况:与超级块(SB)100-50、100-51、100-52、…各者建立有关联的SB管理表具有能存储各为2比特长(或8比特长)的多个查阅计数的查阅计数存储区域,与超级块(SB)100-0、100-1、100-2、…各者建立有关联的SB管理表具有能存储各为4比特长(或16比特长)的多个查阅计数的查阅计数存储区域。在将写入数据写入到共用类型的超级块的案例中,由LUT32来通知写入目标超级块为共用类型的超级块,由此,也可对写入数据的LBA关联iLBA。
在共用类型的各超级块(SB)中,当发生与所存储的某数据对应的查阅计数的溢出时,也可扩展对应SB管理表的查阅计数存储区域的尺寸。例如,在需将与存储在超级块(SB)100-50中的某数据对应的查阅计数从3变更为4时(或需从255变更为256时),也可通过扩展与超级块(SB)100-50对应的SB管理表查阅计数存储区域的尺寸,来将该SB管理表的各查阅计数的比特长从2比特变更为4比特(或从8比特变更为16比特)。
在NAND型闪速存储器5中不存在与从主机2接收的写入数据一致的数据(重复数据)的情况下,控制器4也可将iLBA/PBA中的某一个与该写入数据的LBA建立关联。在这种情况下,控制器4也可基于从主机2接收的提示信息,而决定将iLBA/PBA中的哪一个与该写入数据的LBA建立关联。例如,在将表示有可能被其他LBA查阅的LBA群的提示信息通知给SSD3的案例中,控制器4在NAND型闪速存储器5中不存在与写入数据一致的数据(重复数据),且该写入数据的LBA不属于通过该提示信息而通知的LBA群的情况下,也可将PBA与该写入数据的LBA建立关联,将该写入数据写入到独占类型的超级块中。
图40表示对于所有数据都经由iLBA而从LBA查阅PBA的地址查阅结构。
在NAND型闪速存储器5中不存在与从主机2接收的写入数据一致的数据(重复数据)的情况下,控制器4对写入数据的哈希值赋予未使用的iLBA,对写入数据的LBA关联该iLBA。然后,控制器4将该写入数据写入到独占类型的超级块中。
在某独占类型的超级块(SB)中,当发生与所存储的某数据对应的查阅计数的溢出时,也可扩展对应SB管理表的查阅计数存储区域的尺寸。
例如,在需将与存储在超级块(SB)100-10中的某数据对应的查阅计数从1变更为2时,也可通过扩展与超级块(SB)100-100对应的SB管理表查阅计数存储区域的尺寸。来将该SB管理表的各查阅计数的比特长从1比特变更为2比特(或从1比特变更为8比特)。
另外,在共用类型的超级块(SB)中同样地,当发生与所存储的某数据对应的查阅计数的溢出时,也可扩展对应SB管理表的查阅计数存储区域的尺寸。
例如,在需将与存储在超级块(SB)100-50中的某数据对应的查阅计数从3变更为4时(或从255变更为256时),也可通过扩展与超级块(SB)100-50对应的SB管理表查阅计数存储区域的尺寸。来将该SB管理表的各查阅计数的比特长从2比特变更为4比特(或从8比特变更为16比特)。
此外,在NAND型闪速存储器5中不存在与从主机2接收的写入数据一致的数据(重复数据)的情况下,控制器4也可基于从主机2接收的提示信息,而决定应被写入该写入数据的超级块(SB)的类型。例如,在将表示有较大可能被其他LBA分别查阅的LBA群的提示信息通知给SSD3的案例中,控制器4在NAND型闪速存储器5中不存在与写入数据一致的数据(重复数据),且该写入数据的LBA不属于通过该提示信息而通知的LBA群的情况下,也可将该写入数据写入到共用类型的超级块中。
图41表示图39的地址查阅结构中使用的查找表(LUT)32的构成例。
LUT32包含与多个LBA对应的多个条目。各条目包含标志字段、及iLBA/PBA字段。标志字段保存表示对应iLBA/PBA字段的内容是iLBA或PBA中的哪一个的标志。例如,“1”的标志表示对应iLBA/PBA字段的内容为iLBA,“0”的标志表示对应iLBA/PBA字段的内容为PBA。
当从主机2接收读出指令时,控制器4查阅LUT32,从与读出指令中包含的LBA对应的条目中取得标志及地址(iLBA/PBA)。
若从LUT32取得的标志为“1”,则控制器4使用从LUT32取得的地址(iLBA),查阅iLUT34,从iLUT34取得PBA。然后,控制器4从由自iLUT34取得的PBA指定的NAND型闪速存储器5内的物理存储位置读出数据。
另一方面,若所取得的标志为“0”,则控制器4不查阅iLUT34,从由自LUT32取得的地址(PBA)指定的NAND型闪速存储器5内的物理存储位置读出数据。
图42表示作为主机2发挥功能的信息处理装置(计算装置)的硬件构成例。
该信息处理装置是以服务器等计算装置的形式实现的。该信息处理装置包含处理器(CPU)101、主存储器102、BIOS(Basic Input/Output System,基本输入输出***)-ROM103、网络控制器105、***接口控制器106、控制器107、及嵌入式控制器(EC)108等。
处理器101是以控制该信息处理装置各组件的动作的方式构成的CPU。该处理器101执行从多个SSD3中的任一个载入到主存储器102的各种程序。主存储器102包含DRAM等随机存取存储器。
另外,处理器101也运行存储在作为非易失性存储器的BIOS-ROM103中的基本输入输出***(BIOS)。BIOS是用于硬件控制的***程序。
网络控制器105是有线LAN(Local Area Network,局域网)控制器、无线LAN控制器等通信设备。***接口控制器106是以执行与USB设备等***设备的通信的方式构成。
控制器107是以执行与分别连接于多个连接器107A的设备的通信的方式构成。多个SSD3也可分别连接于多个连接器107A。控制器107为SAS扩展器(SAS expander)、PCIe交换器(PCIe Switch)、PCIe扩展器(PCIe expander)、快闪阵列控制器、或RAID(RedundantArrays of Independent Disks,独立冗余磁盘阵列)控制器等。
EC108作为以执行信息处理装置的电力管理的方式构成的***控制器发挥功能。EC108根据用户对电源开关的操作而将信息处理装置接通电源及切断电源。
图43表示包含多个SSD3及主机2的信息处理装置(计算装置)的构成例。
该信息处理装置具备能收容于机架的薄的箱形壳体201。多个SSD3也可配置在壳体201内。在这种情况下,各SSD3也可能够插拔地***设置在壳体201前面201A的插槽中。
***板(母板)202配置在壳体201内。在***板(母板)202上,安装有包括CPU101、主存储器102、网络控制器105、控制器107的各种电子零件。这些电子零件作为主机2发挥功能。
如以上所说明的那样,根据本实施方式,使用LUT32及iLUT34而执行2级地址转换。在LUT32中,与已经存在的某数据一致的写入数据的逻辑地址(LBA)关联着与已经存在的数据的中间地址(iLBA)相同的中间地址(iLBA)。因此,在iLUT34中,无论查阅某数据的逻辑地址数如何,各物理地址仅与一个中间地址(iLBA)建立关联。
由此,在被多个逻辑地址查阅的数据(重复数据)通过垃圾回收而被复制到其他块的案例中,控制器4也可保证:只进行仅将与这一个中间地址对应的iLUT34内的一个条目更新为复制目标物理地址这样的动作,便能从这多个逻辑地址正确查阅该复制目标物理地址。
进而,与某第1块(超级块)中存储的多个数据分别对应的多个查阅计数全部由该第1块对应的管理表(SB管理表)管理。并且,在某第1块被选作用于GC的复制源块的情况下,执行以下处理:基于该第1块对应的管理表的内容,仅将与非零的查阅计数对应的数据从复制源块复制到复制目标块;及将各个非零的查阅计数从复制源块对应的管理表复制到复制目标块对应的管理表。因此,可仅根据复制源块对应的管理表的内容执行GC动作,可一边实现重复数据删除一边改善GC动作的效率。
此外,在本实施方式中,对以包含多个物理块的超级块为单位进行写入目标块/复制目标块的分配、删除动作、写入动作、及读出动作的情况进行了说明,但也可以物理块为单位进行写入目标块/复制目标块的分配、删除动作、写入动作、及读出动作。换句话说,第1块中包含的物理块的数量只要为1个以上即可。
此外,在本实施方式中,例示出NAND型闪速存储器作为非易失性存储器。但是,本实施方式的功能例如也可应用于像MRAM(Magnetoresistive Random Access Memory,磁阻式随机存取存储器)、PRAM(Phase change Random Access Memory,相变随机存取存储器)、ReRAM(Resistive Random Access Memory,阻变式随机存取存储器)、或FeRAM(Ferroelectric Random Access Memory,铁电随机存取存储器)那样的其他各种非易失性存储器。
已对本发明的若干实施方式进行了说明,但这些实施方式是作为例子而提出的,并不意图限定发明的范围。这些新颖的实施方式能以其他多种方式实施,能够在不脱离发明主旨的范围内进行各种省略、置换、变更。这些实施方式或其变化包含在发明的范围或主旨中,并且包含在权利要求书所记载的发明及其均等的范围内。
[符号的说明]
2 主机
3 SSD
4 控制器
5 NAND型闪速存储器
21 重复数据删除处理部
22 GC动作控制部
23 数据分离动作控制部
32 LUT
33 哈希LUT
34 iLUT