内存系统的制作方法

文档序号:18403485发布日期:2019-08-10 00:08阅读:198来源:国知局
内存系统的制作方法

本发明的实施方式涉及控制非易失性内存(memory)的内存系统。



背景技术:

近年来,具备非易失性内存的内存系统正在广泛普及。

作为这种内存系统之一,已知基于NAND闪存技术的固态硬盘驱动器(SSD)。SSD根据其低功耗、高性能这样的特性,作为各种各样的计算机的主存储器而使用。

SSD的种类有单层单元(SLC)-SSD这样的小容量/高速SSD、多层单元(MLC)-SSD、三层单元(TLC)-SSD这样的大容量SSD等。

通常,在数据中心,该多种SSD根据用途而选择使用。

但是,按数据种类使用专用种类的SSD这一情况,成为使数据中心的TCO(Total Cost of Ownership:总体拥有成本)增加的主要原因。



技术实现要素:

本发明的实施方式提供对各种种类的数据的存储有用的内存系统。

根据实施方式,内存系统具备包含多个物理块的非易失性内存、和控制器。所述控制器管理包括第1命名空间和第2命名空间的多个命名空间,所述多个命名空间用于分别保存具有不同的更新频度的多种数据,所述第1命名空间用于至少保存第1种类的数据,所述第2命名空间用于保存具有比所述第1种类的数据低的更新频度的第2种类的数据。所述控制器构成为基于按各个命名空间指定应该确保的物理资源的量的来自主机设备的要求,将第1个数的物理块作为所述第1命名空间用的物理资源进行分配,将第2个数的物理块作为所述第2命名空间用的物理资源进行分配。

附图说明

图1是表示实施方式涉及的内存系统的构成例的框图。

图2是用于说明通常的阶层化存储系统与单一阶层存储系统的关系的图。

图3是用于说明在该实施方式的内存系统内设定的多个阶层(tier)的图。

图4是用于说明该实施方式的内存系统内的多个区域与写入到这些区域的数据的关系的图。

图5是用于说明该实施方式的内存系统的命名空间管理的图。

图6是用于说明该实施方式的内存系统所适用的扩展命名空间管理命令的图。

图7是表示由该实施方式的内存系统执行的物理资源分配处理的时序的图。

图8是表示由该实施方式的内存系统执行的物理资源分配处理的步骤的流程图。

图9是表示由与该实施方式的内存系统连接的主机执行的写命令送出处理的步骤的流程图。

图10是用于说明该实施方式的内存系统所适用的写命令的图。

图11是表示由该实施方式的内存系统执行的写工作的处理时序的图。

图12是用于说明由该实施方式的内存系统执行的垃圾回收工作以及复制目的地空闲块分配工作的图。

图13是用于说明由该实施方式的内存系统执行的写数据量计数处理的图。

图14是表示由该实施方式的内存系统执行的写数据量计数处理的步骤的流程图。

图15是表示由该实施方式的内存系统执行的写入放大(WA)算出处理的步骤的流程图。

图16是表示从该实施方式的内存系统向主机发送的返回数据的例子的图。

图17是表示由该实施方式的内存系统执行的计数器复位处理的步骤的流程图。

图18是表示该实施方式的内存系统所适用的扩展垃圾回收控制命令的图。

图19是表示由该实施方式的内存系统执行的垃圾回收工作的步骤的流程图。

图20是用于说明由该实施方式的内存系统执行的控制耐久码与ECC的比率的处理的图。

图21是用于说明由该实施方式的内存系统执行的编码处理以及解码处理的图。

图22是表示该实施方式的内存系统内的耐久码编码器的构成例的框图。

图23是表示由该实施方式的内存系统执行的编码处理的步骤的流程图。

图24是表示由该实施方式的内存系统执行的写控制处理的步骤的流程图。

图25是表示该实施方式的内存系统所适用的闪存阵列的构成的图。

图26是表示该实施方式的闪存阵列存储器的构成的图。

图27是表示该实施方式的闪存阵列存储器的另一构成的图。

图28是用于说明该实施方式的闪存阵列存储器内的SSD各自的总容量与应该分配给阶层的物理资源的量的关系的图。

图29是用于说明该实施方式的闪存阵列存储器的写工作的图。

图30是表示该实施方式的主机的构成例的框图。

图31是表示包括该实施方式的内存系统和主机的计算机的构成例的图。

具体实施方式

以下,参照附图来说明实施方式。

首先,参照图1,说明包括一个实施方式涉及的内存系统的信息处理系统1的构成。

该内存系统是构成为向非易失性内存写入数据并从非易失性内存读取数据的半导体存储设备。该内存系统例如作为基于NAND闪存技术的固态硬盘驱动器(SSD)3而实现。

信息处理系统1包括主机(主机设备)2和SSD3。主机2是服务器、个人计算机这样的信息处理装置。

SSD3可以用作作为主机2发挥功能的信息处理装置的主存储器。SSD3既可以内置于信息处理装置,也可以经由电缆或网络与信息处理装置连接。

作为用于将主机2与SSD3彼此连接的接口,可以使用SCSI、串行连接方式的SCSI(Serial Attached SCSI(SAS))、ATA、串行ATA(Serial ATA(SATA))、PCI Express(PCIe)、Ethernet(注册商标)、光纤通道(Fibre channel)等。

SSD3具备控制器4、非易失性内存(NAND内存)5以及DRAM6。NAND内存5没有限定,但可以包含多个NAND闪存芯片。

NAND内存5包括许多NAND块(物理块)B0~Bm-1。物理块B0~Bm-1作为擦除单位发挥功能。物理块有时也被称为“块”或“擦除块”。

物理块B0~Bm-1包括许多页(物理页)。也即,物理块B0~Bm-1各自包括页P0~Pn-1。在NAND内存5中,数据的读取以及数据的写入以页为单位而执行。数据的擦除以物理块为单位而执行。

控制器4经由Toggle、ONFI这样的NAND接口13与作为非易失性内存的NAND内存5电连接。控制器4可以作为构成为执行NAND内存5的数据管理和NAND内存5的块管理的闪存转换层(FTL:Flash Translation Layer)发挥功能。

数据管理包括(1)表示逻辑块地址(LBA)与物理地址之间的对应关系的映射信息的管理、(2)用于隐藏页单位的读/写和块单位的擦除工作的处理等。LBA与物理地址之间的映射的管理,使用查找表(LUT)33而执行。与某LBA对应的物理地址表示该LBA的数据被写入的NAND内存5内的存储位置。物理地址包括物理页地址和物理块地址。物理页地址被分配给全部页,另外,物理块地址被分配给全部物理块。

向页的数据写入,每一个擦除周期仅能够进行一次。

因此,控制器4将向同一LBA的写入(覆写)映射到NAND内存5上的另外的页。也即,控制器4向该另外的页写入数据。并且,控制器4更新查找表(LUT)33,将该LBA与该另外的页进行关联,并且使原来的页(即与该LBA关联的旧数据)无效化。

块管理包括不良块的管理、耗损均衡(wear leveling)和垃圾回收等。耗损均衡是用于使物理块各自的编程/擦除次数平衡化的工作。

垃圾回收是用于生成NAND内存5内的空闲空间的工作。在垃圾回收工作中,为了使NAND内存5的空闲块的个数增加,将有效数据和无效数据混在的几个对象块内的全部有效数据复制到另外的块(例如空闲块)。并且,在垃圾回收工作中,更新查找表(LUT)33,将复制后的有效数据的LBA分别映射到正确的物理地址。通过将有效数据复制到另外的块,仅为无效数据的块作为空闲块而释放。由此,该块能够在擦除后进行再利用。

主机2将写命令送出到SSD3。该写命令包括写数据(即应该写入的数据)的逻辑地址(开始逻辑地址)和传送长。在本实施方式中,LBA被用作逻辑地址,但在其他的实施方式中对象(object)ID可以被用作逻辑地址。LBA由对逻辑扇区(大小:例如512字节)赋予的序列号(serial number)来表现。序列号从零开始。SSD3的控制器4将通过写命令内的开始逻辑地址(Starting LBA)和传送长所指定的写数据写入到NAND内存5内的物理块的物理页。进而,控制器4更新查找表(LUT)33,由此将与被写入的数据对应的LBA映射到与该数据被写入的物理存储位置对应的物理地址。

接着,对控制器4的构成进行说明。

控制器4包括主机接口11、CPU12、NAND接口13、DRAM接口14、SRAM15等。该CPU12、NAND接口13、DRAM接口14、SRAM15经由总线10相互连接。

主机接口11从主机2接收各种命令(写命令、读命令、扩展命名空间管理命令、扩展垃圾回收控制命令、解映射(UNMAP)命令等)。

写命令对SSD3要求写入由该写命令指定的数据。写命令包括领头的逻辑块的LBA和传送长(逻辑块的数量)。读命令对SSD3要求读取由该读命令指定的数据。读命令包括领头的逻辑块的LBA和传送长(逻辑块的数量)。

扩展命名空间管理命令是通常的命名空间管理命令的扩展命令。

一般而言,主机软件能够指定的仅是命名空间用的逻辑块地址(LBA)的数量,实际上无法指定应该分配为该命名空间用的物理块的个数(非易失性内存容量)。即,通常,命名空间的大小是基于在该命名空间创建工作中要求的LBA的数量的大小。对于通常的SSD而言,被分配为该命名空间用的物理块的个数会由SSD内的控制器来决定。例如,如果与命名空间用所要求的LBA的数量对应的大小是90M字节,并且1个物理块的容量是100M字节,则通常的SSD的控制器可能将1个物理块分配为该命名空间用。或者,如果与命名空间用所要求的LBA的数量对应的大小是120M字节,并且1个物理块的容量为100M字节,则通常的SSD的控制器可能将2个物理块分配为该命名空间用。但是,在这样的取决于SSD的物理块分配方法中,主机软件不能对SSD要求分别创建具有不同的特征(耐久性)的命名空间。

扩展命名空间管理命令不仅能够对SSD3指定命名空间用的逻辑块地址(LBA)的数量,还能够对SSD3指定为了该命名空间而应该分配的物理块的个数。也即,扩展命名空间管理命令包括表示为应该创建的命名空间用而应该确保的物理资源的量(物理块的个数)的参数。扩展命名空间管理命令能够使得主机2(主机软件)将与主机2内的工作量相适合的个数的物理块确保用于各个命名空间。通常,分配给命名空间的物理块的数量越多,则越能够提高该命名空间的耐久性。因此,主机软件通过使用扩展命名空间管理命令,能够创建具有不同的特征(耐久性)的各个命名空间。

扩展垃圾回收控制命令是用于由主机2控制SSD3的垃圾回收工作的主机·启动·垃圾回收命令的扩展命令。扩展垃圾回收控制命令能够对SSD3指定应该设为垃圾回收对象的命名空间。也即,扩展垃圾回收控制命令包括表示应该被执行垃圾回收的对象命名空间的参数。

CPU12是构成为控制主机接口11、NAND接口13、DRAM接口14、SRAM15的处理器。CPU12除了执行上述的FTL层的处理之外,还执行用于处理来自主机2的各种命令的命令处理等。

该FTL层处理以及命令处理也可以通过由CPU12执行的固件(firm ware)来控制。该固件使CPU12作为命名空间控制部21、写入放大(Write amplification)算出部22、垃圾回收工作控制部23以及消耗/保留控制部24发挥功能。

命名空间控制部21具有用于管理多个命名空间的多命名空间管理功能。命名空间与作为非易失性内存的NAND内存5内的一种区域相当。命名空间控制部21基于来自主机2的命名空间各自的创建要求来创建多个命名空间。换言之,命名空间控制部21基于来自主机2的命名空间各自的创建要求,将NAND内存5在逻辑上分割成多个区域(命名空间)。主机2能够使用上述的扩展命名空间管理命令对SSD3要求创建各个命名空间。命名空间控制部21对该各个区域(命名空间)分配由主机2指定的个数的物理块。该多个区域(命名空间)用于分别保存具有不同的更新频度的多种数据。

例如,频繁更新的类型的数据(Hot数据)被写入到用于保存Hot数据的特定的区域。Hot数据有时也称为动态数据。更新频度低的类型的数据(Cold数据)被写入到用于保存Cold数据的特定的另一区域(tier)。Cold数据有时也称为非动态数据或静态数据。

也即,SSD3在物理上是一个存储设备,但SSD3内的多个区域作为不同阶层(tier)存储器发挥功能。

该多个区域与多个命名空间分别关联。由此,主机软件仅通过将Hot数据与特定的命名空间的ID关联并且将Cold数据与特定的另外的命名空间的ID关联,能够容易地指定该数据应该被写入的区域(tier)。

如果是Hot数据和Cold数据在同一物理块中混在的环境,则写入放大有可能会显著增加。

原因在于:在Hot数据和Cold数据混在的物理块中,通过Hot数据的更新导致物理块内的一部分数据在早的定时(timing)被无效化,而该物理块内的剩余的数据部(Cold数据)有可能会长时间维持为有效状态。

写入放大(WA)定义为如下。

WA=“写入到SSD的数据的总量”/“从主机写入到SSD的数据的总量”

“写入到SSD的数据的总量”相当于从主机写入到SSD的数据的总量和通过垃圾回收等在内部写入到SSD的数据的总量之和。

写入放大(WA)的增加引起SSD3内的物理块各自的改写次数(编程/擦除次数)的增加。也即,写入放大(WA)越大,则物理块的编程/擦除次数越容易快速达到该编程/擦除次数的上限值。其结果是,引起SSD3的耐久性以及寿命的劣化。

如果仅由Hot数据填满了物理块,则该块内的全部数据通过这些数据的更新而在比较早的定时被无效化的可能性高。因此,该块没有执行垃圾回收,仅通过对该块进行擦除就能够进行再利用。

另一方面,如果仅由Cold数据填满了物理块,则该块内的全部数据长时间维持为有效状态。因此,该块不成为垃圾回收的对象的可能性高。

在本实施方式中,具有不同的更新频度的多种数据被写入到不同的区域(不同的命名空间)。例如,Hot数据被写入到与某个特定的命名空间(NS#1)关联的区域,Cold数据被写入到与另外的特定的命名空间(NS#n)关联的另外的区域。因此,能够防止Hot数据和Cold数据在同一物理块中混在这一状况的产生。这能够使执行垃圾回收工作的频度减少,其结果是能够使写入放大降低。

进而,在本实施方式中,命名空间控制部21基于按各个命名空间指定应该确保的物理块的个数的来自主机2的要求,将所希望的个数的物理块分别地分配给各个区域(命名空间)。

例如,在主机2想要创建新的命名空间时,主机2将包含表示对象命名空间用所应该确保的物理块的个数的参数在内的扩展命名空间管理命令送出到SSD3。命名空间控制部21创建命名空间(NS#1),向该命名空间(与该命名空间关联的区域)分配由参数指定的个数的物理块。

主机2一边变更表示对象命名空间用所应该确保的物理块的个数的参数的值,一边反复向SSD3送出扩展命名空间管理命令。其结果是,创建出多个命名空间(区域),NAND内存5在逻辑上被分割成该多个区域。

因此,基于各个区域的大小(LBA的数量)和各个区域所应该设定的耐久性,能够向多个区域(多个tier)最适当地分配NAND内存5的物理资源(物理块的个数)。

写入放大算出部22不是算出SSD3整体的写入放大,而是算出各个命名空间(各个区域)的写入放大。由此,写入放大算出部22能够将与各命名空间(各区域)对应的写入放大提供给主机2。

垃圾回收工作控制部23以命名空间为单位(以区域为单位)执行垃圾回收工作,由此防止Hot数据和Cold数据会在同一物理块中混在。更详细而言,在垃圾回收工作控制部23从主机2接收到扩展垃圾回收控制命令时,垃圾回收工作控制部23从被分配给由扩展垃圾回收控制命令指定的对象命名空间的物理块组中选择垃圾回收的对象物理块组。并且,垃圾回收工作控制部23执行将有效数据从对象物理块组复制到复制目的地空闲块的垃圾回收工作。

进而,垃圾回收工作控制部23将通过按各个命名空间执行的垃圾回收工作而生成的空闲块组作为由这些命名空间共用的共用空闲块组进行管理。也即,该空闲块组在命名空间之间共用。垃圾回收工作控制部23从空闲块组中选择最小的编程/擦除次数的空闲块。并且,垃圾回收工作控制部23将所选择出的空闲块作为与上述的对象命名空间对应的区域的复制目的地空闲块进行分配。

通常,通过Cold数据用的区域的垃圾回收工作而生成的空闲块的编程/擦除次数,远比通过Hot数据用的区域的垃圾回收工作而生成的空闲块的编程/擦除次数少。原因在于:某量的Cold数据一旦被写入到Cold数据用的区域之后,该Cold数据不频繁更新或者不常更新的情况多。另一方面,通过Hot数据用的区域的垃圾回收工作而生成的空闲块的编程/擦除次数通常比较多。因此,将最小的编程/擦除次数的空闲块作为复制目的地空闲块进行分配的上述工作,能够将在Cold数据用的区域中使用的编程/擦除次数少的块自动地分配给Hot数据用的区域。

消耗/保留控制部24执行用于通过控制用于抑制内存单元的消耗的码与纠错码(ECC)的比率来使可靠性(数据保留)与耐久性(DWPD值)之间的二律背反(trade off)最佳化的工作。由此,能够提高Hot数据用的区域的耐久性,另外,能够延长Cold数据用的区域的数据保留(被写入的数据的保留时间)。

NAND接口13是构成为在CPU12的控制下控制NAND内存5的NAND控制器。

DRAM接口14是构成为在CPU12的控制下控制DRAM6的DRAM控制器。

DRAM6的存储区域的一部分可以作为用于暂时保存应该向NAND内存5写入的数据的写入缓冲器(WB)31而利用。另外,DRAM6的存储区域也可以作为用于暂时保存在垃圾回收(GC)工作中被移动的数据的GC缓冲器32而利用。另外,DRAM6的存储区域也可以用于保存上述的查找表33。查找表33可以被分割成与多个命名空间分别对应的多个查找表(LUT#1,LUT#2,…),以便能够按各个命名空间执行独立的垃圾回收(GC)工作。

接着,对主机2的构成进行说明。

主机2是执行各种程序的信息处理装置。由信息处理装置执行的程序包括应用软件层41、操作系统42、文件系统43。

众所周知,操作系统42是构成为管理主机2整体、控制主机2内的硬件、并执行用于使应用能够使用硬件以及SSD3的控制的软件。

文件系统43为了进行用于文件的操作(创建、保存、更新、删除等)的控制而使用。例如,ZFS、Btrfs、XFS、ext4、NTFS等可以作为文件系统42而使用。或者,文件对象系统(例如,Ceph Object Storage Daemon)、Key Value Store System(例如,Rocks DB)可以作为文件系统42而使用。

各种应用软件线程在应用软件层41上运行。作为应用软件线程的例子,有客户端软件、数据库软件、虚拟机等。

在需要应用软件层41将读命令或写命令这样的请求(request)送出到SSD3时,应用软件层41向OS42送出该请求。OS42将该请求送出到文件系统43。文件系统43将该请求翻译成命令(读命令、写命令等)。文件系统43将命令送出到SSD3。在接收到来自SSD3的答复时,文件系统43将该答复送出到OS42。OS42将该答复送出到应用软件层41。

在本实施方式中,主机2通过使用上述的扩展命名空间管理命令、扩展垃圾回收控制命令等来周到地管理控制SSD3。例如,设想文件系统43的阶层管理部44需要创建Hot数据用的命名空间(区域)和Cold数据用的命名空间(区域)的情况。阶层管理部44将包含表示应该分配给Hot数据用的命名空间(区域)的物理块的个数的参数在内的扩展命名空间管理命令送出到SSD3。在从SSD3接收到包含该命名空间的ID在内的答复时,阶层管理部44将该命名空间的ID作为Hot数据用的命名空间ID进行管理。接着,阶层管理部44将包含表示应该分配给Cold数据用的命名空间(区域)的物理块的个数的参数在内的扩展命名空间管理命令送出到SSD3。在从SSD3接收到包含该命名空间的ID在内的答复时,阶层管理部44将该命名空间的ID作为Cold数据用的命名空间ID进行管理。

在需要将某Hot数据写入到SSD3时,阶层管理部44将包含Hot数据用的命名空间ID的写命令送出到SSD3。在需要将某Cold数据写入到SSD3时,阶层管理部44将包含Cold数据用的命名空间ID的写命令送出到SSD3。

在需要读取某Hot数据时,阶层管理部44将包含Hot数据用的命名空间ID的读命令送出到SSD3。在需要读取某Cold数据时,阶层管理部44将包含Cold数据用的命名空间ID的读命令送出到SSD3。

图2表示通常的阶层化存储系统与单一阶层存储系统的关系。

在图2的左部所示的阶层化存储系统中,3种SSD根据用途而分开使用。阶层(T1)用的SSD是小容量·高速SSD。小容量·高速SSD例如可以是每个内存单元保存一位(bit)的信息的SLC-SSD。因此,阶层(T1)用的SSD是高价SSD。

阶层(T1)用的SSD作为访问(读/写)频度高的数据、例如频繁更新的数据的存储器而使用。访问频度高的数据的例子包括文件系统的元数据。元数据包括文件内的数据的存储位置、该数据的创建日期时刻、该数据被更新的日期时刻、该数据被读取的日期时刻等各种管理信息。因此,对元数据的访问的频度(写入访问的频度、读取访问的频度)非常高。因此,元数据的保存所使用的阶层(T1)用的SSD需要高的耐久性。

表示SSD的耐久性的指标之一是DWPD(Drive Write Per Day:每日写入量)。例如,DWPD=10是指:关于具有1T字节的总容量的SSD,能够横跨5年时间每日都执行10T字节(=10×1T字节)的数据的写入。对于阶层(T1)用的SSD,有时要求DWPD=10的耐久性。

阶层(T1)的容量相对于阶层化存储系统整体的容量的比例例如为1%。因为元数据的大小与文件内容的大小相比非常小。

阶层(T2)用的SSD是中容量SSD。中容量SSD例如可以是每个内存单元保存2位的信息的MLC-SSD。阶层(T2)用的SSD作为更新频度比元数据低的数据的存储器而使用。对于阶层(T2)用的SSD,有时要求DWPD=1。阶层(T2)的容量相对于阶层化存储系统整体的容量的比例例如为4%。

阶层(T3)用的SSD是低价的大容量SSD。该大容量SSD例如可以是MLC-SSD或TLC-SSD。阶层(T3)用的SSD作为不常更新的数据的存储器而使用。在阶层(T3)用的SSD中,有时DWPD=0.1左右的低耐久性就足够。阶层(T3)的容量相对于阶层化存储系统整体的容量的比例例如为95%。

图2的右部表示在一个SSD保存3个阶层T1~T3的全部数据的单一阶层存储系统的例子。单一阶层存储系统整体所要求的DWPD能够如下来求出。

DWPD=(10×0.01)+(1×0.04)+(0.1×0.95)=0.235

因此,若适用单一阶层存储系统,虽然对SSD而言需要的容量大幅增加,但对SSD而言需要的耐久性降低。要实现低价·大容量的SSD,MLC-SSD或TLC-SSD是优选的。MLC-SSD/TLC-SSD的写入速度比SLC-SSD的写入速度慢,但MLC-SSD/TLC-SSD的读取速度与SLC-SSD是同等程度。因此,即使是使用低价·大容量的SSD的单一阶层存储系统,通过追加用于使多个阶层间的耐久性的关系最佳化的功能,也能够获得与阶层化存储系统大致同等的耐久性·性能。

图3表示本实施方式的SSD3(SSD#1)中的多个区域(命名空间)间的物理资源的分配的例子。

SSD#1的存储空间例如在逻辑上被分割成用于分别保存具有不同的更新频度的多种数据(Hot数据、Warm数据、Middle数据、Cool数据、Cold数据)的区域51、52、53、54、55。

数据根据其更新的频度而分类成5个数据组(Hot数据、Warm数据、Middle数据、Cool数据、Cold数据)。按Hot数据、Warm数据、Middle数据、Cool数据、Cold数据的顺序,数据的更新频度减少。Warm数据、Middle数据、Cool数据是具有Hot数据和Cold数据的中间的更新频度的数据。

区域51作为用于保存Hot数据的阶层存储器(tier#1)而使用。在区域51关联有命名空间(NS#1)。区域51为了保存小容量·高更新频度的Hot数据(active data,常用数据)而利用。区域51的容量相对于SSD#1的总容量的比例例如可以为1%。区域51所要求的DWPD例如可以为10。

区域52作为用于保存Warm数据的阶层存储器(tier#2)而使用。在区域52关联有命名空间(NS#2)。区域52的容量相对于SSD#1的总容量的比例例如可以为2%。区域52所要求的DWPD例如可以为3。

区域53作为用于保存Middle数据的阶层存储器(tier#3)而使用。在区域53关联有命名空间(NS#3)。区域53的容量相对于SSD#1的总容量的比例例如可以为3%。区域53所要求的DWPD例如可以为1。

区域54作为用于保存Cool数据的阶层存储器(tier#4)而使用。在区域54关联有命名空间(NS#4)。区域54的容量相对于SSD#1的总容量的比例例如可以为14%。区域54所要求的DWPD例如可以为0.3。

区域55作为用于保存Cold数据的阶层存储器(tier#n)而使用。在区域55关联有命名空间(NS#n)。区域55为了保存大容量·低更新频度的Cold数据(不常用数据)而利用。区域55的容量相对于SSD#1的总容量的比例例如可以为80%。例如,区域55的更新的频度为区域51的更新的频度的1/100左右。因此,区域55所要求的DWPD例如可以为0.1。

如此,Hot数据、Warm数据、Middle数据、Cool数据、Cold数据分别被保存在不同的区域。由此,能够防止更新频度不同的数据、例如Hot数据和Cold数据在同一块中混在这一状况的发生。其结果是能够使SSD3的写入放大降低。

在以图3那样的比率将物理资源分配给了多个区域51~55的情况下,SSD3(SSD#1)整体所要求的DWPD能够如下来求出。

DWPD=(10×0.01)+(3×0.02)+(1×0.03)+(0.3×0.14)+(0.1×0.8)=0.312

这意味着原理上在逻辑上分割成区域51~55的SSD3(SSD#1)能够通过大容量·低价的SSD来实现。

在本实施方式中,如上所述,主机2能够按各个命名空间来指定应该确保的物理块的个数,SSD3能够对各个区域(tier)分别分配所指定的个数的物理块。

如果多个tier由不同的SSD实现,则只要不更换所使用的SSD自身,就无法改变各个tier的大小。在本实施方式中,同一个SSD在逻辑上被分割成多个tier(区域)。因此,能够将各个tier的大小按照工作量以及对各tier(区域)应该设定的耐久性进行最佳化。

也即,在本实施方式中,能够通过主机2的控制按各个区域来决定对区域51~55分配几个物理块。

例如,关于Hot数据用的区域51(tier#1),主机软件可以对SSD3要求分配超过Hot数据的预想的总量(用户数据容量)的足够个数的物理块。响应于该要求,SSD3的控制器4将Hot数据用的区域51(tier#1)所专用的被指定的个数的物理块分配给该Hot数据用的区域51(tier#1)。例如,在Hot数据的预想的总量(用户数据容量)为100G字节的情况下,主机软件可以要求分配与200G字节相当的个数的物理块。该情况下,控制器4将与200G字节相当的个数的物理块分配给区域51(tier#1)。其结果是,与区域51(tier#1)的用户区域的2倍的容量相当的个数的物理块被分配为区域51(tier#1)用。从200G字节减去用户区域的容量而剩余的100GB的物理资源作为区域51(tier#1)的超额配置(over provisioning)区域发挥功能。

在此,对超额配置区域进行说明。

超额配置是指对于主机2而言作为能够利用的用户空间(用户可访问的LBA空间)配置看不到的SSD3内的存储器容量。对于主机2作为用户可访问的LBA空间而分配了看不到的存储器容量的空间为超额配置区域。通过超额配置,超过用户可访问的LBA空间(用户区域的容量)的容量的物理块组被分配。

在通常的SSD中,主机能够指定某命名空间用的LBA的数量,但却无法指定为该命名空间用而应该分配几个物理块。另外,通常在1个SSD内只设定一个超额配置区域。

与此相对,在本实施方式中,能够将由主机2指定的个数的物理块分配给各个命名空间(区域),进而,其结果是,能够按各个区域分别设定所希望的容量的超额配置区域。

例如,区域51的总容量(总NS#1容量)通过被分配给区域51的物理块的总数来决定。区域51包含用户区域51a和超额配置区域51b。从区域51的总容量减去用户区域51a的容量而剩余的容量作为超额配置区域51b发挥功能。用户区域51a是分配给了LBA的物理块组。通过超额配置区域51b的存在,区域51内的用户区域51a的耐久性·性能得以改善。

关于其他的各区域,从由分配给了该区域的物理块的总数所决定的容量中减去该区域内的用户区域的容量而剩余的容量,作为该区域内的超额配置区域发挥功能。

与Hot数据用的区域51同样地,关于Warm数据用的区域52(tier#2),主机软件也可以对SSD3要求分配超过Warm数据的预想的总量(用户区域的容量)的个数的物理块。响应于该要求,SSD3的控制器4将Warm数据用的区域52所专用的被指定的个数的物理块分配给该Warm数据用的区域52(tier#2)。例如,如果Warm数据的预想的总量(用户数据容量)为200G字节,通过主机软件要求了分配与250G字节相当的个数的物理块,则控制器4将与250G字节相当的个数的物理块分配给区域52(tier#2)。其结果是,比区域52(tier#2)的用户区域的容量大50GB的物理资源被分配给区域52(tier#2)。从250G字节的物理资源减去用户区域的容量而剩余的50GB的物理资源,作为区域52(tier#2)的超额配置区域发挥功能。

同样,主机软件对剩余的全部区域分别指定应该分配的物理块的量。

例如,关于Cold数据用的区域55(tier#n),主机软件可以对SSD3要求分配考虑Cold数据的预想的总量(用户数据的容量)而决定的最小个数的物理块。响应于该要求,控制器4将Cold数据用的区域55(tier#n)所专用的被指定的个数的物理块分配给该Cold数据用的区域55(tier#n)。例如,如果Cold数据的预想的总量(用户数据容量)为8000G字节,通过主机软件要求了分配与8001G字节相当的个数的物理块,则控制器4将与8001G字节相当的个数的物理块分配给区域55(tier#n)。其结果是,比区域55(tier#n)的用户区域的容量大1GB的物理资源被分配给区域55(tier#n)。从8001G字节的物理资源减去用户数据容量而剩余的1GB的物理资源,作为区域55(tier#n)的超额配置区域发挥功能。

如此,SSD3基于按各个命名空间指定应该确保的物理块的个数的来自主机2的要求,对各个区域分配所指定的个数的物理块。其结果是,能够使超额配置区域的容量相对于用户区域的容量的比率按各个区域而最佳化。例如,可以调整分配给各个区域的物理块的个数,使得:越是上面的阶层,被分配的超额配置区域的量越多。该情况下,例如,区域55内的超额配置区域的容量相对于区域55内的用户区域的容量的比率,比区域51内的超额配置区域的容量相对于区域51内的用户区域的容量的比率小。

在区域51中,通过大的大小的超额配置区域的活用,能够高效地减少区域51的写入放大。原因在于:例如区域51的用户区域51a的物理块组由100M字节的数据填满,其结果是,即使该各物理块成为没有该块的擦除就不包含可利用页的状态,也能够取代该物理块而将超额配置区域51b的物理块组用于数据的写入。由此,能够使执行区域51的垃圾回收工作的定时充分延迟。随着向超额配置区域51b的物理块组写入数据,用户区域51a的物理块组内的数据由于该更新而被无效化。全部数据被无效化后的物理块能够不用该垃圾回收而进行再利用。因此,能够高效地减少区域51的写入放大,因此能够将区域51的物理块组的写入/擦除次数抑制为低。这意味着能够使区域51的耐久性提高。

因为区域55的超额配置区域小,所以区域55的写入放大增加。但是,Cold数据用的区域55的更新频度远比Hot数据用的区域51的更新频度低。例如,Cold数据用的区域55的更新频度为Hot数据用的区域51的更新频度的百分之一。也即,在区域51被改写了100次的期间区域55只被改写了1次,因此Cold数据的区域55的物理块各自的编程/擦除次数非常少。因此,关于Cold数据的区域55,即使例如其写入放大大,也不会产生Cold数据的区域55的物理块组的编程/擦除次数马上达到SSD3的编程/擦除次数上限值这样的现象。

图4表示多个区域51~55与向这些区域51~55写入的数据的关系。

NAND内存5在逻辑上被分割成与命名空间NS#1~NS#5对应的区域51~55。与命名空间NS#1的ID(NSID=1)关联的写数据即Hot数据被写入到区域51。与命名空间NS#2的ID(NSID=2)关联的写数据即Warm数据被写入到区域52。同样,与命名空间NS#n的ID(NSID=n)关联的写数据即Cold数据被写入到区域55。

图5表示由SSD3进行的命名空间管理。

在此,设想创建多个命名空间NS#1~NS#n的情况。向命名空间NS#1分配0~E0的逻辑地址空间(LBA空间)A1。向命名空间NS#2分配0~E1的逻辑地址空间(LBA空间)A2。同样,向命名空间NS#n分配0~En的逻辑地址空间(LBA空间)An。

在本实施方式中,查找表LUT按各个命名空间而分割。也即,与命名空间NS#1~NS#n对应的n个查找表LUT#1~LUT#n由SSD3的控制器4来管理。

查找表LUT#1对命名空间NS#1的LBA空间A1与NAND内存5的物理地址之间的映射进行管理。查找表LUT#2对命名空间NS#2的LBA空间A2与NAND内存5的物理地址之间的映射进行管理。查找表LUT#n对命名空间NS#n的LBA空间An与NAND内存5的物理地址之间的映射进行管理。

控制器14通过使用查找表LUT#1~LUT#n,能够按各个命名空间(区域)独立地进行垃圾回收工作。

管理数据100可以保持表示命名空间NS#1~NS#n与分配给了这些命名空间NS#1~NS#n的物理块的个数之间的关系的信息。

在本实施方式中,通过垃圾回收而生成的空闲块能够在命名空间NS#1~NS#n间共用。

图6表示扩展命名空间管理命令。

扩展命名空间管理命令用于包含命名空间的创建以及删除的命名空间管理。扩展命名空间管理命令包含以下的参数。

(1)创建/删除

(2)LBA范围

(3)物理资源大小

(4)tier属性(可选)

创建/删除的参数的值0h对SSD3要求命名空间的创建。创建/删除的参数的值1h对SSD3要求命名空间的删除。在要求命名空间的删除的情况下,在扩展命名空间管理命令中设定表示删除对象的命名空间的ID的参数。

LBA范围的参数表示命名空间的LBA范围(LBA0~n-1)。该LBA范围被映射到该命名空间的用户区域。

物理资源大小的参数表示命名空间用所应该确保的物理块的个数。

在另外的实施方式中,扩展命名空间管理命令也可以取代物理资源大小的参数而包含表示超额配置的大小的参数。

超额配置的大小的参数表示与命名空间关联的区域内的超额配置区域用所应该确保的物理块的个数。如果扩展命名空间管理命令包含超额配置的大小的参数,则SSD3可以创建命名空间并且对与该命名空间关联的区域内的超额配置区域分配由该参数指定的个数的物理块。

tier属性的参数表示与该命名空间对应的阶层属性。tier属性的参数的值与tier属性的关系如下。

000:Hot

001:Warm

010:Middle

011:Cool

100:Cold

图7表示由主机2和SSD3执行的物理资源分配处理的时序。

主机2将要求创建命名空间(Hot数据用的区域)的扩展命名空间管理命令送出到SSD3。该扩展命名空间管理命令包含指定Hot数据用的区域用所应该确保的物理块的个数的物理资源大小参数。因为SSD3内的一个物理块的容量被从SSD3报告给主机2,所以主机2能够要求与Hot数据用的区域相适合的个数的物理块。对该扩展命名空间管理命令的接收进行响应,SSD3的控制器4创建命名空间(NS#1),对该命名空间(NS#1)分配所指定的个数的物理块(步骤S11)。控制器4将表示命令完成的答复送出到主机2。该答复可以包含所创建出的命名空间的ID。

主机2将要求创建接着的命名空间(Warm数据用的区域)的扩展命名空间管理命令送出到SSD3。该扩展命名空间管理命令包含指定Warm数据用的区域用所应该确保的物理块的个数的物理资源大小参数。对该扩展命名空间管理命令的接收进行响应,SSD3的控制器4创建命名空间(NS#2),对该命名空间(NS#2)分配所指定的个数的物理块(步骤S12)。控制器4将表示命令完成的答复送出到主机2。该答复可以包含所创建出的命名空间的ID。

同样地创建命名空间(Middle数据用的区域)、命名空间(Cool数据用的区域)。

然后,主机2将要求创建接着的命名空间(Cold数据用的区域)的扩展命名空间管理命令送出到SSD3。该扩展命名空间管理命令包含指定Cold数据用的区域用所应该确保的物理块的个数的物理资源大小参数。对该扩展命名空间管理命令的接收进行响应,SSD3的控制器4创建命名空间(NS#n),对该命名空间(NS#n)分配所指定的个数的物理块(步骤S13)。控制器4将表示命令完成的答复送出到主机2。该答复可以包含所创建出的命名空间的ID。

如此,通过反复进行一边将所指定的个数的物理块分配给命名空间一边创建命名空间的处理,NAND内存5在逻辑上被分割成多个区域,进而按各个区域分配所指定的个数的物理块。

图8的流程图表示由SSD3执行的物理资源分配处理的步骤。

SSD3的控制器4从主机2接收扩展命名空间管理命令(步骤S21)。控制器4基于扩展命名空间管理命令内的创建/删除参数,判定扩展命名空间管理命令是否要求创建命名空间(步骤S22)。

如果扩展命名空间管理命令要求创建命名空间(步骤S22的“是”),则控制器4基于空闲块组内的剩余物理块的个数来判定是否能够确保由扩展命名空间管理命令内的物理资源参数指定的个数的物理块(步骤S23)。

如果物理块的个数为所指定的个数以上(步骤S23的“是”),则控制器4创建命名空间,将所指定的个数的物理块分配给与该命名空间关联的区域(步骤S24)。控制器4将命令完成通知给主机2(步骤S25)。

如果剩余物理块的个数比所指定的个数少(步骤S23的“否”),则控制器4将错误通知给主机2(步骤S26)。被报告了错误的主机2可以变更应该确保的物理块的个数。或者,被通知了错误答复的主机2也可以从开始重新进行一边指定各命名空间用所应该确保的物理块的个数一边分别创建命名空间的处理。

图9的流程图表示由主机2执行的写命令送出处理的步骤。

主机2在产生了写入数据的要求时(步骤S31的“是”),将该写数据(应该写入的数据)分类为Hot数据、Warm数据、Middle数据、Cool数据或Cold数据(步骤S32)。主机2例如可以根据元数据、文件的内容(contents)这样的数据类别,将写数据(应该写入的数据)分类为Hot数据、Warm数据、Middle数据、Cool数据或Cold数据。

如果写数据是Hot数据(步骤S33的“是”),则主机2将包含Hot数据用的命名空间的ID(NSID#1)的写命令送出到SSD3(步骤S36)。

如果写数据是Warm数据(步骤S34的“是”),则主机2将包含Warm数据用的命名空间的ID(NSID#2)的写命令送出到SSD3(步骤S37)。

如果写数据是Cold数据(步骤S35的“是”),则主机2将包含Cold数据用的命名空间的ID(NSID#n)的写命令送出到SSD3(步骤S38)。

图10表示写命令。

写命令包含以下的参数。

(1)领头LBA

(2)逻辑块的数量

(3)命名空间ID

领头LBA的参数表示应该写入的数据的领头LBA。

逻辑块的数量的参数表示与应该写入的数据对应的逻辑块的数量(即传送长)。

命名空间ID的参数表示应该写入数据的命名空间的ID。

图11表示由主机2和SSD3执行的写工作的处理时序。

主机2将写命令送出到SSD3,将写数据送出到SSD3。SSD3的控制器4将写数据写入到写入缓冲器(WB)31(步骤S41),然后将命令完成(command completion)的答复通知给主机2。然后,控制器4将写数据写入到与由写命令内的命名空间ID指定的命名空间关联的区域内的可利用块(步骤S42)。

图12表示由SSD3执行的垃圾回收工作以及复制目的地空闲块分配工作。

如上所述,垃圾回收工作按各个命名空间而执行。在命名空间(NS#1)的垃圾回收工作中,SSD3的控制器4从与命名空间(NS#1)关联的区域51内的物理块(活动块)中选择垃圾回收的对象物理块。例如,控制器4可以通过参照查找表LUT#1来特定无效数据的比率最大的上位几个物理块,将该物理块选择为垃圾回收的对象物理块。

控制器4管理包括在命名空间间共用的空闲块组的空闲块池(空闲块列表)60。控制器4从空闲块组中选择最小的编程/擦除次数的空闲块。控制器4将所选择出的空闲块作为复制目的地空闲块B1000分配给命名空间(NS#1)。控制器4从垃圾回收的对象物理块组(在此为块B0~B3)向复制目的地空闲块B1000复制全部有效数据。然后,控制器4更新查找表LUT#1,将有效数据映射到复制目的地空闲块B1000。垃圾回收的对象物理块组B0~B3成为不包含有效数据的空闲块。这些空闲块被移动到空闲块池。

关于其他的命名空间(NS#2~NS#n),也同样地执行垃圾回收工作。

例如,在命名空间(NS#n)的垃圾回收工作中,控制器4从与命名空间(NS#n)关联的区域55内的物理块(活动块)中选择垃圾回收的对象物理块。例如,控制器4可以通过参照查找表LUT#n来特定无效数据的比率最大的上位几个物理块,将该物理块选择为垃圾回收的对象物理块。

控制器4从空闲块组中选择最小的编程/擦除次数的空闲块。控制器4将所选择出的空闲块作为复制目的地空闲块B1001分配给命名空间(NS#n)。控制器4从垃圾回收的对象物理块组(在此为块B2000~B2003)向复制目的地空闲块B1001复制全部有效数据。然后,控制器4更新查找表LUT#n,将有效数据映射到复制目的地空闲块B1001。垃圾回收的对象物理块组B2000~B2003成为不包含有效数据的空闲块。这些空闲块被移动到空闲块池。

如上所述,因为命名空间(NS#n)的更新频度远比命名空间(NS#1)的更新频度低,所以通过命名空间(NS#n)的垃圾回收而生成的空闲块的编程/擦除次数少。在本实施方式的垃圾回收工作中,每次执行命名空间(NS#1)的垃圾回收时,由命名空间(NS#n)过去使用过的物理块被分配作为命名空间(NS#1)的复制目的地空闲块。因此,能够将由命名空间(NS#n)使用过的编程/擦除次数少的物理块在命名空间(NS#1)中有效地再利用。其结果是,能够改善命名空间(NS#1)的耐久性。

进而,控制器4为了改善命名空间(NS#1)的耐久性,也可以执行在命名空间(NS#1)与命名空间(NS#n)之间替换物理块的耗损均衡处理。例如,如果由命名空间(NS#1)正在使用的物理块的任一个物理块的编程/擦除次数达到阈值次数(阈值次数被设定为比编程/擦除次数的上限少的值),则控制器4可以将该物理块与命名空间(NS#n)内的最小编程/擦除次数的物理块进行替换。

图13表示由SSD3执行的写数据量计数处理。

SSD3的控制器4不是算出SSD3整体的写入放大,而是能够算出各个命名空间的写入放大。因此,控制器4按各个命名空间具备用于对由主机2写入的数据的量进行计数的计数器和用于对通过垃圾回收工作而写入的数据的量进行计数的计数器这2种计数器。

计数器61以及计数器62用于算出命名空间(NS#1)的写入放大。计数器61对由主机2写入到命名空间(NS#1)即区域51的数据的量进行计数。计数器62对通过命名空间(NS#1)的垃圾回收而写入到命名空间(NS#1)即区域51的数据的量进行计数。

计数器63以及计数器64用于算出命名空间(NS#2)的写入放大。计数器63对由主机2写入到命名空间(NS#2)即区域52的数据的量进行计数。计数器64对通过命名空间(NS#2)的垃圾回收而写入到命名空间(NS#2)即区域52的数据的量进行计数。

计数器65以及计数器66用于算出命名空间(NS#n)的写入放大。计数器65对由主机2写入到命名空间(NS#n)即区域55的数据的量进行计数。计数器66对通过命名空间(NS#n)的垃圾回收而写入到命名空间(NS#n)即区域55的数据的量进行计数。

图14的流程图表示由SSD3执行的写数据量计数处理的步骤。

在SSD3的控制器4从主机2接收到写命令时,控制器4基于写命令内所包含的命名空间ID,决定应该被写入写数据的对象命名空间(区域)(步骤S41~S43)。然后,控制器4将写数据写入到对象命名空间(区域),并且对被写入的数据的量进行计数(步骤S44~S46)。

例如,如果对象命名空间(区域)是命名空间(NS#1)(步骤S41的“是”),则控制器4使用计数器61对写入到命名空间(NS#1)的数据的量进行计数(步骤S44)。在步骤S44中,计数器61的当前的计数值可以增加写数据的传送长。

如果对象命名空间(区域)是命名空间(NS#2)(步骤S42的“是”),则控制器4使用计数器63对写入到命名空间(NS#2)的数据的量进行计数(步骤S45)。在步骤S45中,计数器63的当前的计数值可以增加写数据的传送长。

如果对象命名空间(区域)是命名空间(NS#n)(步骤S43的“是”),则控制器4使用计数器65对写入到命名空间(NS#n)的数据的量进行计数(步骤S46)。在步骤S46中,计数器65的当前的计数值可以增加写数据的传送长。

在执行命名空间(NS#1)的垃圾回收工作时(步骤S51的“是”),控制器4使用计数器62对通过该垃圾回收工作而写入到命名空间(NS#1)的数据的量进行计数(步骤S54)。在步骤S54中,计数器62的计数值可以增加垃圾回收工作的对象块组内的全部有效数据的总量。

在执行命名空间(NS#2)的垃圾回收工作时(步骤S52的“是”),控制器4使用计数器64对通过该垃圾回收工作而写入到命名空间(NS#2)的数据的量进行计数(步骤S55)。在步骤S55中,计数器64的计数值可以增加垃圾回收工作的对象块组内的全部有效数据的总量。

在执行命名空间(NS#n)的垃圾回收工作时(步骤S53的“是”),控制器4使用计数器66对通过该垃圾回收工作而写入到命名空间(NS#n)的数据的量进行计数(步骤S56)。在步骤S56中,计数器66的计数值可以增加垃圾回收工作的对象块组内的全部有效数据的总量。

图15的流程图表示由SSD3执行的写入放大(WA)算出处理的步骤。

SSD3的控制器4取得由主机2写入到命名空间(NS#1)的数据的量(计数器61的计数值)(步骤S61)。控制器4取得通过命名空间(NS#1)的垃圾回收工作而写入到命名空间(NS#1)的数据的量(计数器62的计数值)(步骤S62)。控制器4基于计数器61的计数值和计数器62的计数值,算出命名空间(NS#1)的写入放大(步骤S63)。命名空间(NS#1)的写入放大(NS#1-WA)如下来得到。

NS#1-WA=“计数器61的计数值+计数器62的计数值”/“计数器61的计数值”

控制器4取得由主机2写入到命名空间(NS#2)的数据的量(计数器63的计数值)(步骤S64)。控制器4取得通过命名空间(NS#2)的垃圾回收工作而写入到命名空间(NS#2)的数据的量(计数器64的计数值)(步骤S65)。控制器4基于计数器63的计数值和计数器64的计数值,算出命名空间(NS#2)的写入放大(步骤S66)。命名空间(NS#2)的写入放大(NS#2-WA)如下来得到。

NS#2-WA=“计数器63的计数值+计数器64的计数值”/“计数器63的计数值”

控制器4取得由主机2写入到命名空间(NS#n)的数据的量(计数器65的计数值)(步骤S67)。控制器4取得通过命名空间(NS#n)的垃圾回收工作而写入到命名空间(NS#n)的数据的量(计数器66的计数值)(步骤S68)。控制器4基于计数器65的计数值和计数器66的计数值,算出命名空间(NS#n)的写入放大(步骤S69)。命名空间(NS#n)的写入放大(NS#n-WA)如下来得到。

NS#n-WA=“计数器65的计数值+计数器66的计数值”/“计数器65的计数值”

在从主机2接收到要求命名空间各自的写入放大的WA取得命令时(步骤S70的“是”),控制器4向主机2送出图16所示的返回数据,将命名空间各自的写入放大通知给主机2(步骤S71)。

步骤S61~S69的处理可以对WA取得命令的接收进行响应来执行。

图17的流程图表示由SSD3执行的计数器复位处理的步骤。

该计数器复位处理用于将产生了SSD3的设定的变更这样的特定的复位事件之后的SSD3的各命名空间的写入放大提供给主机2。SSD3的设定的变更例如可以是某命名空间的设定的变更,也可以是某命名空间的删除。或者,SSD3的设定的变更例如还可以是SSD3整体的设定的变更。

SSD3根据来自主机2的要求来执行计数器复位处理。

该要求可以是要求对计数器进行复位的命令。对该命令的接收进行响应,SSD3可以对与全部命名空间对应的计数器61~66进行复位。在该命令包含命名空间ID的情况下,SSD3可以仅对与命名空间ID对应的命名空间所关联的2个计数器进行复位。

或者,也可以将用于变更某命名空间的设定或SSD3整体的设定的控制命令作为该要求来处理。某命名空间的设定的变更可以是该命名空间的大小(LBA范围)的变更,也可以是该命名空间用的物理块的个数的变更。

以下虽然没有限定,但例示对某命名空间的设定的变更进行响应来执行计数器复位处理的情况来说明计数器复位处理的步骤。

在控制器4从主机2接收到要求变更命名空间的设定的控制命令时,控制器4基于控制命令内的命名空间ID,决定设定变更的对象命名空间。

如果对象命名空间是命名空间(NS#1)(步骤S81的“是”),则控制器4按照控制命令内的参数来变更命名空间(NS#1)的设定(步骤S82)。控制器4将与命名空间(NS#1)对应的计数器61、62的计数值清零(步骤S83)。

如果对象命名空间是命名空间(NS#2)(步骤S84的“是”),则控制器4按照控制命令内的参数来变更命名空间(NS#2)的设定(步骤S85)。控制器4将与命名空间(NS#2)对应的计数器63、64的计数值清零(步骤S86)。

如果对象命名空间是命名空间(NS#n)(步骤S87的“是”),则控制器4按照控制命令内的参数来变更命名空间(NS#n)的设定(步骤S88)。控制器4将与命名空间(NS#n)对应的计数器65、66的计数值清零(步骤S89)。

图18表示扩展垃圾回收(GC)控制命令。

如上所述,扩展垃圾回收(GC)控制命令作为用于由主机2控制SSD3的任意的命名空间的垃圾回收工作的主机·启动·垃圾回收命令而使用。

该扩展垃圾回收(GC)控制命令包含以下的参数。

(1)命名空间ID

(2)空闲块的量

(3)定时器

命名空间ID的参数表示应该被执行垃圾回收的对象命名空间的ID。

空闲块的量的参数表示为了对象命名空间而应该确保的空闲块的量(例如,空闲块的个数)。

定时器的参数指定垃圾回收工作的最大时间。

主机2通过使用扩展垃圾回收(GC)控制命令,能够对SSD3要求执行命名空间(NS#1)~命名空间(NS#n)内的任意的命名空间的垃圾回收。

例如,主机2可以通过将WA取得命令定期发送给SSD3来监视各个命名空间(区域)的写入放大。在某命名空间(区域)的写入放大达到了与该命名空间对应的写入放大阈值时,主机2可以将包含该命名空间的命名空间ID的扩展垃圾回收(GC)控制命令送出到SSD3。

或者,在主机2希望以良好的延迟时间(latency)来进行向某命名空间(区域)写入数据的情况下,主机2可以将包含该命名空间的命名空间ID的扩展垃圾回收(GC)控制命令送出到SSD3。

对从主机2接收到扩展垃圾回收(GC)控制命令进行响应,SSD3的控制器4执行为对象命名空间所专用的用于确保所指定的量的空闲空间的垃圾回收工作。控制器4在确保了所指定的量的空闲空间的时刻或经过最大时间的时刻的任一较早的时刻,结束垃圾回收工作。

图19的流程图表示由SSD3执行的垃圾回收工作的步骤。

在SSD3的控制器4从主机2接收到扩展垃圾回收(GC)控制命令时(步骤S91的“是”),控制器4执行由扩展垃圾回收(GC)控制命令内的命名空间ID指定的对象命名空间的垃圾回收工作(步骤S92)。在步骤S92中,控制器4从对象命名空间的活动块组中选择垃圾回收对象的几个物理块,将这些物理块的有效数据复制到复制目的地物理块。

垃圾回收工作在确保了所指定的量的空闲空间的时刻或经过最大时间的时刻的任一较早的时刻结束(步骤S93,S94)。

图20表示根据应该被写入数据的命名空间(区域)来控制用于抑制内存单元的消耗的码与纠错码(ECC)的比率的处理。

在本实施方式中,通过控制用于抑制内存单元的消耗的码与纠错码(ECC)的比率,使可靠性(数据保留)与耐久性(DWPD值)之间的二律背反最佳化。

在此,对使用用于抑制每一次写入的内存单元的消耗的码(coding,编码处理)对写数据进行编码的工作的概要进行说明。

SSD3的控制器4首先使用用于抑制内存单元的消耗的码(编码处理)对写数据进行编码,生成第1编码数据(在图20中记为“耐久码”的部分)。该码(编码处理)用于降低使内存单元急剧消耗的特定码(与高阈值电压对应的高编程电平的码)的出现频度。作为该码(编码处理),例如有上述的耐久码(耐久编码处理)等。

例如,在MLC中,内存单元通过编程而设定为与2位对应的4个电平(“E”电平、“A”电平、“B”电平、“C”电平)的任一方所对应的状态(编程电平)。“E”电平为擦除状态。内存单元的阈值电压分布按“E”电平、“A”电平、“B”电平、“C”电平的顺序变高。“C”电平的状态为使内存单元急剧消耗的状态(编程电平)。

在使用了用于抑制内存单元的消耗的码(编码处理)的编码中,例如,与内存单元的消耗大的特定的电平(例如“C”电平)对应的码可以转换成另外的码(例如,与2个“B”电平连续的“B-B”对应的长的位模式)。

如此,在编码中,因为使内存单元消耗的特定码(位模式)被替换为另外的长码(位模式),所以写数据的码字(codeword)延长。因此,在编码中,控制器4可以首先对写数据进行可逆压缩。然后,控制器4可以将压缩后的写数据内的各特定的位模式替换成内存单元的消耗少的另外的长的位模式。

控制器4对通过编码而得到的第1编码数据(图20中的“耐久码”)附加纠错码(ECC),由此生成第2编码数据(图20中的包含“耐久码”和“ECC”的数据),将该第2编码数据写入到物理块内的可利用页。各页包含数据区域和冗长区域。第2编码数据的位长与包含数据区域和冗长区域的页的大小匹配。

进而,控制器4根据写数据被写入到哪个区域(命名空间),自动地变更第1编码数据与纠错码(ECC)的比率。

第1编码数据(耐久码)越长,则使内存单元急剧消耗的特定码的出现频度越少。因此,第1编码数据(耐久码)越长,越能够抑制每一次写入的内存单元的消耗。

例如,在写数据是应该写入到Hot数据用的区域的写数据的情况下,控制器4为了提高Hot数据用的区域的耐久性(DWPD),控制第1编码数据与纠错码的比率,以使得得到包含较长的第1编码数据和较短的纠错码的组合在内的第2编码数据。也即,在Hot数据的写入中,利用相比于可靠性(数据保留)使耐久性优先的编码方法。

另一方面,在写数据是应该写入到Cold数据用的区域的写数据的情况下,控制器4为了延长写入到Cold数据用的区域的数据的数据保留,控制第1编码数据与纠错码的比率,以使得得到包含较短的第1编码数据和较长的纠错码的组合在内的第2编码数据。也即,在Cold数据的写入中,利用相比于耐久性使可靠性(数据保留)优先的编码方法。

在本实施方式中,如图20所示,改写频度(更新的频度)越高的命名空间(区域),ECC的位长越短,取而代之第1编码数据(耐久码)的位长越长。另外,改写频度(更新的频度)越低的命名空间(区域),ECC的位长越长,取而代之第1编码数据(耐久码)的位长越短。

ECC的位长越长,能够纠正的位的数量越多,因此可改善可靠性(数据保留)。通常,随着时间经过,位错误率增加。因此,能够纠正的位的数量的增加,能够改善数据保留。

另一方面,如上所述,耐久码的位长越长,越能够抑制页内的内存单元组的消耗,因此可改善耐久性。

图21表示由SSD3执行的编码处理以及解码处理。

SSD3的控制器4包括耐久码编码器91、ECC编码器92、耐久码解码器93以及ECC解码器94。

ECC编码器92以及ECC解码器94分别执行生成ECC的ECC编码处理以及用于纠错的ECC解码处理。在ECC编码器92中,为了生成ECC而使用系统码。作为系统码,例如有Hamming码、BHC符号、Reed-Solomon码等。

耐久码编码器91以及耐久码解码器93执行用于抑制内存单元的消耗的编码处理以及与该编码处理对应的解码处理。在耐久码编码器91中,为了生成第1编码数据(耐久码),使用作为非系统码的耐久码。在耐久码编码器91中,如上所述,使内存单元急剧消耗的特定码(例如与“C”电平对应的位模式)被转换成另外的长码(例如,与“B-B”对应的长的位模式等)。也即,该编码处理为使码字伸长的伸长处理。

图22表示耐久码编码器91的构成例。

耐久码编码器91包括熵解析部911、压缩部912、搜索部914、替换部915、码长检查部916以及输出部917等。

熵解析部911求出在写数据内出现的位模式各自的出现次数(或者出现概率)。压缩部912基于熵解析部911的解析结果来生成码本(code book)913,使用码本913对写数据进行可逆压缩。码本913表示在写数据内出现的位模式各自和与这些位模式对应的转换码之间的对应关系。压缩部912对出现次数多的位模式分配短的转换码。

搜索部914求出使内存单元急剧消耗的特定码,对压缩数据(压缩后的数据)例如从其最高位的位开始进行搜索。特定码例如可以是与“C”电平对应的位模式。替换部915将由搜索部914搜索出的特定码替换成另外的长码(例如,与“B-B”对应的长的位模式等)。由此,压缩数据内的特定码被转换成内存单元的消耗少的另外的长码。替换部915更新码本913,由此将与上述的特定码对应的码本913内的特定的转换码替换成上述的另外的长码。

码长检查部916检查当前的压缩数据的码长(位长)。在当前的压缩数据的码长(位长)比预先决定的阈值(目标位长)短的情况下,反复进行搜索以及替换的处理。由此,当前的压缩数据的码长得以最佳化。

目标位长根据应该被写入写数据的命名空间(区域)而适宜变更。因此,改写频度(更新的频度)越高的命名空间(区域),编码数据(耐久码)的位长越长。换言之,改写频度(更新的频度)越低的命名空间(区域),编码数据(耐久码)的位长越短。

输出部917将最佳化后的位长的压缩数据作为第1编码数据(耐久码)而输出。可以对第1编码数据附加码本913。

图23的流程图表示用于抑制内存单元的消耗的编码处理的步骤。

控制器4求出写数据内的几个位模式的出现次数,将这些位模式按出现次数的大小顺序进行分类(步骤S1)。控制器4基于熵解析的结果,生成包含用于压缩各个位模式的转换码在内的码本913,然后使用码本913对写数据进行可逆压缩(步骤S2)。

控制器4通过使用用于抑制内存单元的消耗的码对该压缩数据进行编码,生成编码数据。

该情况下,控制器4首先从压缩数据中搜索使内存单元消耗的某特定码(特定的位模式)(步骤S3)。控制器4将所搜索出的该码(位模式)转换成内存单元的消耗小的长的另外的码(位模式)(步骤S4)。控制器4更新与所搜索出的该特定码对应的码本内的转换码(步骤S5)。

控制器4判定当前的压缩数据(编码数据)的位长是否比目标位长长(步骤S6)。目标位长根据应该被写入数据的命名空间(区域)而预先决定。例如,关于向命名空间NS#1写入的数据(Hot数据),使用长的目标位长,关于向命名空间NS#n写入的数据(Cold数据),使用短的目标位长。

如果当前的压缩数据(编码数据)的位长比目标位长短,则再次执行步骤S3~S5的处理。越多地反复进行步骤S3~S5的处理,越能够降低使内存单元急剧消耗的特定码(例如与“C”电平对应的位模式)的出现频度。相应地,编码数据的位长更长。

如果当前的压缩数据(编码数据)的位长比目标位长长(步骤S6的“是”),则控制器4在编码数据的例如末尾附加码本(步骤S7)。

图24的流程图表示由SSD3执行的写控制处理的步骤。

SSD3的控制器4判定所接收到的写数据是应该写入到哪个阶层属性的命名空间(区域)的写数据,根据该判定结果,变更用于对写数据进行编码的编码方法。编码方法的变更通过控制耐久码与ECC的比率来执行。

即,在SSD3的控制器4从主机2接收到写命令时(步骤S101的“是”),控制器4判定由写命令内的命名空间ID指定的对象命名空间(区域)的阶层属性(Hot/Warm/Middle/Cool/Cold)(步骤S102)。对象命名空间(区域)的阶层属性可以基于对象命名空间(区域)的超额配置区域的大小(用户区域与超额配置区域的比率等)来决定。或者,如果要求创建对象命名空间的扩展命名空间管理命令包含tier属性参数,则控制器4可以将由该tier属性参数表示的阶层属性判定为对象命名空间的阶层属性。或者,写命令除了对象命名空间的ID之外,也可以包含表示对象命名空间的阶层属性的参数。

例如,如果对象命名空间的阶层属性是Hot(步骤S103的“是”),即如果写数据与命名空间NS#1的ID关联,则控制器4通过控制耐久码与ECC的比率,使用相比于可靠性使耐久性优先的编码方法对写数据进行编码(步骤S104)。根据此处的编码方法,写数据被编码成包含较长的耐久码和较短的ECC的组合在内的数据。控制器4将编码后的数据写入到区域51内的物理块的可利用页(步骤S105)。

例如,如果对象命名空间的阶层属性是Cold(步骤S106的“是”),即如果写数据与命名空间NS#n的ID关联,则控制器4通过控制耐久码与ECC的比率,使用相比于耐久性使可靠性优先的编码方法对写数据进行编码(步骤S107)。根据此处的编码方法,写数据被编码成包含较短的耐久码和较长的ECC的组合在内的数据。控制器4将编码后的数据写入到区域55内的物理块的可利用页(步骤S108)。

图25表示本实施方式的闪存阵列存储器的构成。

该闪存阵列存储器从主机2识别为1台存储设备。该闪存阵列存储器为了实现大容量化以及高速化而进行条带化控制,包含多个SSD即SSD#1、SSD#2、SSD#3、…SSD#n。

SSD#1、SSD#2、SSD#3、…SSD#n各自包含非易失性内存。进而,SSD#1、SSD#2、SSD#3、…SSD#n各自具有与本实施方式的SSD3同样的命名空间管理功能。

在该闪存阵列中,区域51(NS#1)跨越SSD#1、SSD#2、SSD#3、…SSD#n而配置。也即,区域51包括SSD#1的确保为命名空间(NS#1)用的几个物理块、SSD#2的确保为命名空间(NS#1)用的几个物理块、SSD#3的确保为命名空间(NS#1)用的几个物理块和SSD#n的确保为命名空间(NS#1)用的几个物理块。

区域52(NS#2)也跨越SSD#1、SSD#2、SSD#3、…SSD#n而配置。也即,区域52包括SSD#1的确保为命名空间(NS#2)用的几个物理块、SSD#2的确保为命名空间(NS#2)用的几个物理块、SSD#3的确保为命名空间(NS#2)用的几个物理块和SSD#n的确保为命名空间(NS#2)用的几个物理块。

区域53(NS#3)也跨越SSD#1、SSD#2、SSD#3、…SSD#n而配置。也即,区域53包括SSD#1的确保为命名空间(NS#3)用的几个物理块、SSD#2的确保为命名空间(NS#3)用的几个物理块、SSD#3的确保为命名空间(NS#3)用的几个物理块和SSD#n的确保为命名空间(NS#3)用的几个物理块。

区域54(NS#4)也跨越SSD#1、SSD#2、SSD#3、…SSD#n而配置。也即,区域54包括SSD#1的确保为命名空间(NS#4)用的几个物理块、SSD#2的确保为命名空间(NS#4)用的几个物理块、SSD#3的确保为命名空间(NS#4)用的几个物理块和SSD#n的确保为命名空间(NS#4)用的几个物理块。

区域55(NS#n)也跨越SSD#1、SSD#2、SSD#3、…SSD#n而配置。也即,区域55包括SSD#1的确保为命名空间(NS#n)用的几个物理块、SSD#2的确保为命名空间(NS#n)用的几个物理块、SSD#3的确保为命名空间(NS#n)用的几个物理块和SSD#n的确保为命名空间(NS#n)用的几个物理块。

图26表示图25的闪存阵列存储器的硬件构成。

闪存阵列存储器80除了上述的SSD#1、SSD#2、SSD#3、…SSD#n之外,还包括闪存阵列控制器81。闪存阵列控制器81构成为执行用于使数据分布到SSD#1、SSD#2、SSD#3、…SSD#n的条带化控制。例如,在向区域51(NS#1)写入数据的情况下,例如,最初的4K字节的数据D1被写入到与NS#1对应的SSD#1内的区域,接着的4K字节的数据D2被写入到与NS#1对应的SSD#2内的区域,接着的4K字节的数据D3被写入到与NS#1对应的SSD#3内的区域,接着的4K字节的数据Dn被写入到与NS#1对应的SSD#n内的区域,接着的4K字节的数据Dn+1被写入到与NS#1对应的SSD#1内的区域。

如此,写数据以预定数据大小(4K字节)为单位而分布到SSD#1、SSD#2、SSD#3、…SSD#n。例如,在由主机2要求了向NS#1写入1M字节的数据的情况下,1M字节的数据被分割成各自具有预定数据大小(4K字节)的多个数据部分,这些数据部分可以并行地写入到SSD#1、SSD#2、SSD#3、…SSD#n。

如此,因为SSD#1、SSD#2、SSD#3、…SSD#n并行地工作,所以能够提高用于数据写入的性能。

闪存阵列控制器81如图27所示,可以不设置在闪存阵列存储器80内而设置在主机2内。

图28表示闪存阵列存储器80内的SSD各自的容量与从这些SSD分配用于某阶层的容量的比例的关系。

在此,例示tier#1(NS#1)来说明。主机2将扩展命名空间管理命令送出到闪存阵列控制器81,要求应该将与闪存阵列存储器80整体的总容量的1%相当的个数的物理块确保为tier#1(NS#1)用。闪存阵列控制器81基于SSD#1、SSD#2、SSD#3、…SSD#n各自的容量,决定在各SSD内应该确保为tier#1(NS#1)用的物理块的个数。

在此,设想SSD#1的容量为100GB、SSD#2的容量为200GB、SSD#3的容量为1TB、SSD#n的容量为100GB的情况。

闪存阵列控制器81将扩展命名空间管理命令送出到SSD#1,对SSD#1要求应该将与100GB的1%的容量(1GB)相当的个数的物理块确保为NS#1用。闪存阵列控制器81将扩展命名空间管理命令送出到SSD#2,对SSD#2要求应该将与200GB的1%的容量(2GB)相当的个数的物理块确保为NS#1用。闪存阵列控制器81将扩展命名空间管理命令送出到SSD#3,对SSD#3要求应该将与1TB的1%的容量(10GB)相当的个数的物理块确保为NS#1用。闪存阵列控制器81将扩展命名空间管理命令送出到SSD#n,对SSD#n要求应该将与100GB的1%的容量(1GB)相当的个数的物理块确保为NS#1用。

图29表示与图28的容量分配对应的写工作的例子。

在通过条带化控制向区域51(NS#1)写入数据的情况下,例如,最初的4K字节的数据D1被写入到与NS#1对应的SSD#1内的区域。接着的4K字节的数据D2和接着的4K字节的数据D3被写入到与NS#1对应的SSD#2内的区域。接着的数据D3~D13被写入到与NS#1对应的SSD#3内的区域。接着的4K字节的数据D14被写入到与NS#1对应的SSD#n内的区域,接着的4K字节的数据D15被写入到与NS#1对应的SSD#1内的区域。

图30表示作为主机2发挥功能的信息处理装置的硬件构成例。

该信息处理装置作为服务器计算机或个人计算机而实现。该信息处理装置包括处理器(CPU)101、主内存102、BIOS-ROM103、网络控制器105、周边接口控制器106、控制器107以及嵌入控制器(EC)108等。

处理器101是构成为控制该信息处理装置的各构成部分的工作的CPU。该处理器101执行从多个SSD3的任一个装载到主内存102的各种程序。主内存102由DRAM这样的随机读取内存构成。由处理器101执行的程序包括上述的应用软件层41、OS42以及文件系统43。文件系统43作为上述的阶层管理部44发挥功能。

另外,处理器101也执行保存在作为非易失性内存的BIOS-ROM103中的基本输入输出系统(BIOS)。BIOS是用于硬件控制的系统程序。

网络控制器105是有线LAN控制器、无线LAN控制器这样的通信设备。周边接口控制器106构成为执行与USB设备这样的周边设备之间的通信。

控制器107构成为执行与分别连接于多个连接器107A的设备之间的通信。在本实施方式中,多个SSD3与多个连接器107A分别连接。控制器107是SAS expander、PCIe Switch、PCIe expander、闪存阵列控制器或RAID控制器等。

EC108作为构成为执行信息处理装置的电力管理的系统控制器发挥功能。EC108根据用户对电源开关的操作使信息处理装置通电以及断电。EC108作为单芯片微控制器这样的处理电路而实现。EC108可以内置有控制键盘(KB)等输入设备的键盘控制器。

在该信息处理装置中,在主机软件(应用软件层41、OS42以及文件系统43)的控制下,处理器101执行以下的处理。

处理器101将扩展命名空间管理命令送出到SSD3,在SSD3内创建Hot数据用的命名空间NS#1(区域51)。扩展命名空间管理命令包含表示应该对Hot数据用的命名空间NS#1(区域51)分配的物理块的个数的参数。

处理器101将扩展命名空间管理命令送出到SSD3,在SSD3内创建Warm数据用的命名空间NS#2(区域52)。扩展命名空间管理命令包含表示应该对Warm数据用的命名空间NS#2(区域52)分配的物理块的个数的参数。

同样,处理器101将扩展命名空间管理命令送出到SSD3,在SSD3内创建Cold数据用的命名空间NS#n(区域55)。扩展命名空间管理命令包含表示应该对Cold用的命名空间NS#n(区域55)分配的物理块的个数的参数。

处理器101将命名空间NS#1的命名空间ID作为Hot数据用的命名空间ID进行管理,将命名空间NS#2的命名空间ID作为Warm数据用的命名空间ID进行管理,并且将命名空间NS#n的命名空间ID作为Cold数据用的命名空间ID进行管理。

在需要将某Hot数据写入到SSD3时,处理器101将包含命名空间NS#1的命名空间ID在内的写命令送出到SSD3。在需要将某Cold数据写入到SSD3时,处理器101将包含命名空间NS#n的命名空间ID在内的写命令送出到SSD3。

图31表示包含多个SSD3和主机2的信息处理装置的构成例。

该信息处理装置具备能够容纳于机箱的薄的箱形的框体201。许多SSD3可以配置在框体201内。该情况下,各SSD3可以以能够拆下的方式插入到设置在框体201的前面201A的卡槽中。

系统板(母板)202配置在框体201内。在系统板(母板)202上,安装有包括CPU101、内存102、网络控制器105、控制器107的各种电子部件。这些电子部件作为主机2发挥功能。

如以上的说明,根据本实施方式,管理用于保存多种数据的多个命名空间(区域),进而,基于按各个命名空间指定应该确保的物理资源的量(物理块的个数)的来自主机2的要求,将所指定的个数的物理块作为这些命名空间用的物理资源分别进行分配。因此,能够考虑多种数据各自的容量和/或更新频度,将物理块组容易且最适当地分配给多个命名空间(区域)。由此,能够按各个命名空间(区域)实现与应该保存的数据的更新的频度相适合的耐久性,能够减少更新频度高的数据用的命名空间(区域)的写入放大,因此能够实现SSD的寿命的最大化。

换言之,根据本实施方式,能够灵活地进行为了更新频度高的数据用的命名空间(区域)用而确保多量的超额配置区域、或者为了更新频度低的数据用的命名空间(区域)用而确保少量的超额配置区域这样的控制。由此,能够减少更新频度高的数据用的命名空间(区域)的写入放大,因此能够实现SSD的寿命的最大化。

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

说明了本发明的几个实施方式,但是这些实施方式是作为例子而举出的,没有限定发明范围的意图。这些新的实施方式能够以其他的各种各样的方式来实施,在不脱离发明要旨的范围内能够进行各种省略、替换、变更。这些实施方式及其变形包含于发明的范围或要旨内,并且包含于权利要求所记载的发明及其等同的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1