存储器系统及控制方法与流程

文档序号:12719463阅读:340来源:国知局
存储器系统及控制方法与流程

本申请享有以日本专利申请2015-242997号(申请日:2015年12月14日)为基础申请的优先权。本申请通过参照该基础申请而包含基础申请的全部内容。

技术领域

本发明的实施方式涉及一种控制非易失性存储器的技术。



背景技术:

近年来,具备非易失性存储器的存储器系统广泛地普及。

作为此类存储器系统之一,众所周知有基于NAND(Not AND,与非)闪存技术的固态驱动器(SSD,Solid State Drives)。

SSD因其低耗电、高性能等特征,而被用作各种计算机的主存储器。

但,由主机写入SSD的数据有时存在数据局部性,即,其部分数据被频繁重写,而剩余部分不会被频繁重写。

这种数据局部性会增加SSD的写入放大倍数,有时会影响SSD的性能及寿命。



技术实现要素:

本发明的实施方式提供一种能够抑制因数据局部性引起的写入放大倍数增加的存储器系统及控制方法。

实施方式的存储器系统具备非易失性存储器和控制器,所述控制器构成为,电连接于所述非易失性存储器,执行所述非易失性存储器的无用存储单元收集动作。所述控制器管理无用存储单元收集次数,所述无用存储单元收集次数表示针对所述多个块内包含主机写入的数据的每个块,通过所述无用存储单元收集动作而复制该块内的数据的次数。所述控制器选择与相同无用存储单元收集次数关联的多个第1块,作为所述无用存储单元收集动作的对象块。所述控制器将所述多个第1块内的有效数据复制到复制目标空闲块。所述控制器将在所述多个第1块的无用存储单元收集次数加上1后的值,设定 为所述复制目标空闲块的无用存储单元收集次数。

附图说明

图1是说明实施方式的存储器系统的构成例的框图。

图2是所述实施方式的存储器系统执行的无用存储单元收集次数管理动作和无用存储单元收集动作的说明图。

图3是所述实施方式的存储器系统中使用的无用存储单元收集(GC)次数管理列表的例的说明图。

图4是所述实施方式的存储器系统基于无用存储单元收集次数管理列表而执行的无用存储单元收集对象块选择动作的说明图。

图5是所述实施方式的存储器系统执行的无用存储单元收集动作的说明图。

图6是写入所述实施方式的存储器系统的多种数据的例的说明图。

图7是无用存储单元收集次数和多种数据间的数据量比例的关系的例的说明图。

图8是说明所述实施方式的存储器系统执行的无用存储单元收集动作的次序的流程图。

图9是所述实施方式的存储器系统执行的包含将具有不同无用存储单元收集次数的2个块组的有效数据合并的处理的无用存储单元收集动作的说明图。

图10是说明所述实施方式的存储器系统执行的包含将具有不同无用存储单元收集次数的2个块组的有效数据合并的处理的无用存储单元收集动作的次序的流程图。

图11是只对特定的无用存储单元收集次数以上的块组允许合并处理的动作的说明图。

图12是说明包含只对特定的无用存储单元收集次数以上的块组允许合并处理的动作的无用存储单元收集动作的次序的流程图。

图13是所述实施方式的存储器系统执行的对主机的数据写入用依次分配空闲块的动作的说明图。

图14是所述实施方式的存储器系统使用的块使用顺序管理列表的例的说明图。

图15是请求向相同LBA(Logic Block Address,逻辑块地址)写入时所述实施方式的存储器系统执行的累计数据写入量算出动作的说明图。

图16是所述实施方式的存储器系统执行的累计数据写入量响应处理的处理序列的说明图。

图17是说明所述实施方式的存储器系统执行的累计数据写入量响应处理的次序的 流程图。

图18是所述实施方式的存储器系统执行的累计数据写入量响应处理的其他处理序列的说明图。

图19是说明所述实施方式的存储器系统执行的累计数据写入量响应处理的其他次序的流程图。

图20是所述实施方式的存储器系统使用的查找表的例的说明图。

图21是说明请求向相同LBA写入时所述实施方式的存储器系统执行的时间经过响应处理的次序的流程图。

图22是说明基于从所述实施方式的存储器系统接收的累计数据写入量/时间经过信息而由主机执行的处理的次序的例的流程图。

图23是说明主机的构成例的框图。

图24是表示包含所述实施方式的存储器系统和主机的计算机的构成例的图。

具体实施方式

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

首先,参照图1来说明包含一实施方式的存储器系统的信息处理系统1的构成。

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

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

SSD3能够被用作作为主机2发挥功能的信息处理装置的主存储器。SSD3可以内置于信息处理装置,也可以通过缆线或者网络连接于信息处理装置。

作为用来将主机2和SSD3相互连接的接口,可使用SCSI(Small Computer System Interface,小型计算机系统接口)、Serial Attached SCSI(SAS,串行连接SCSI)、ATA(Advanced Technology Attachment,高级技术附件)、Serial ATA(SATA)、PCI Express(PCIe)、Ethernet(注册商标)、Fibre channel(光纤信道)等。

SSD3具备控制器4、非易失性存储器(NAND存储器)5、及DRAM(Dynamic Random Access Memory,动态随机存取存储器)6。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)发挥功能。

数据管理包含(1)表示逻辑块地址(LBA)和物理地址之间的对应关系的映射信息的管理、(2)用来隐藏页单位的读取/写入和块单位的擦除动作的处理等。LBA和物理地址之间的映射的管理是使用作为逻辑物理地址转换表发挥功能的查找表(LUT)33而执行。查找表(LUT)33以规定的管理大小单位管理LBA和物理地址之间的映射。来自主机2的写入命令大多数是请求4K字节的数据写入。因此,查找表(LUT)33也可以用例如4K字节单位管理LBA和物理地址之间的映射。对应于某个LBA的物理地址表示写入该LBA的数据的NAND存储器5内的物理存储位置。物理地址包含物理块地址和物理页地址。物理页地址对所有页分配,且物理块地址对所有块分配。

向页的数据写入在1个擦除循环中只能进行一次。

因此,控制器4将向相同LBA的写入(覆写)映射到NAND存储器5上的其他页。即,控制器4向所述其他页写入数据。然后,控制器4更新查找表(LUT)33,将该LBA关联于所述其他页,并将原来的页(即曾关联该LBA的旧数据)无效化。

块管理包含不良块的管理、损耗平均、和无用存储单元收集动作等。损耗平均是用来使各物理块的编程/擦除次数平准化的动作。

无用存储单元收集动作是用来作出NAND存储器5内的空闲空间的动作。该无用存储单元收集动作为了增加NAND存储器5的空闲块的个数,将混杂有效数据和无效数据的若干块内的所有有效数据复制到其他块(复制目标空闲块)。然后,无用存储单元收集动作更新查找表(LUT)33,将复制的有效数据的LBA分别映射到正确的物理地址。通过将有效数据复制到其他块,只剩下无效数据的块作为空闲块而开放。由此,该块在擦除后能够再次利用。

主机2向SSD3送出写入命令。该写入命令包含写入数据(即须写入的数据)的逻辑地址(起始逻辑地址)和传输长度。本实施方式中,是使用LBA作为逻辑地址,在其他实施方式中也可以使用目标ID(identification,标识)作为逻辑地址。LBA是通过向逻辑扇区(逻辑块)赋予的序列号来表现。序列号从零开始。逻辑扇区的大小为例如512字节。

SSD3的控制器4将由写入命令内的起始逻辑地址和传输长度指定的写入数据,写入至NAND存储器5内的块的页。而且,控制器4通过更新查找表(LUT)33,将与写入数据对应的LBA映射到表示该数据写入的物理存储位置的物理地址。

更详细来说,控制器4将NAND存储器5内的一个空闲块分配给主机2的数据写入用。该分配块是须写入主机2的数据的写入对象块,也被称为“写入目标块”或者“输入块”等。控制器4一边更新查找表(LUT)33,一边将从主机2接收的写入数据依次写入至写入对象块(写入目标块)的可用页。当写入目标块无可用页时,控制器4分配新的空闲块作为写入目标块。

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

控制器4包含主机接口11、CPU(Central Processing Unit,中央处理器)12、NAND接口13、DRAM接口14、SRAM(Static Random Access Memory,静态随机存取存储器)15等。所述CPU12、NAND接口13、DRAM接口14、SRAM15是经由总线10而相互连接。

主机接口11从主机2接收各种命令(写入命令、读取命令、取消映射(UNMAP)命令等)。

写入命令是请求向SSD3写入由该写入命令指定的数据。写入命令包含须写入的最初的逻辑块的LBA(起始LBA)、和传输长度(逻辑块数量)。读取命令是请求从SSD3读取由该读取命令指定的数据。读取命令包含须读取的最初的逻辑块的LBA(起始LBA)、和传输长度(逻辑块数量)。

CPU12是以控制主机接口11、NAND接口13、DRAM接口14、SRAM15的方式构成的处理器。CPU12除了执行所述的FTL(Flash Translation Layer,闪存转换层)的处理外,还执行用来处理主机2的各种命令的命令处理等。

例如,当控制器4从主机2接收到写入命令时,在CPU12的控制下,控制器4执行以下写入动作,将由写入命令指定的写入数据写入至NAND存储器5。

即,控制器4将写入数据写入至当前写入目标块的物理存储位置(可用页),然后更新查找表(LUT)33,对写入命令所含的LBA(起始LBA)映射该物理存储位置的物理地址。

所述FTL处理及命令处理可以通过CPU12执行的固件来控制。该固件使CPU12作为无用存储单元收集(GC)次数管理部21、无用存储单元收集(GC)动作控制部22、及更新频率信息响应部23发挥功能。

由主机2写入SSD3的数据中,有时存在数据局部性,即,其部分数据频繁被重写,而剩余部分不会频繁被重写。这种情况下,例如通过选择无效数据量多的上位若干块作 为GC对象块的通常的GC算法而执行GC动作时,随着GC动作多次反复执行,而同一块内容以混杂更新频率高的数据和更新频率低的数据。更新频率高的数据和更新频率低的数据混杂成为SSD3的写入放大倍数增加的主要原因。

原因是,在更新频率高的数据(Hot(热)数据)和更新频率低的数据(Cold(冷)数据)混杂的块内,因Hot数据的更新而块内的部分区域快速地无效化,另一方面,该块内的剩余区域(Cold数据)则长期维持有效状态。

若块内写满Hot数据,则该块内的所有数据有很大可能性因为这些数据的更新(重写)而相对快速地无效化。因此,该块不用执行无用存储单元收集动作,只能通过擦除该块才能再次利用。

另一方面,若块内写满CoId数据,则该块内的所有数据长期维持有效状态。因此,该块由很大可能在很长期间内不会成为无用存储单元收集动作的对象。

写入放大倍数(WA)是以如下方式定义。

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

“写入SSD的数据的总量”相当于从主机写入SSD的数据的总量和通过无用存储单元收集动作等而内部写入SSD的数据的总量的和。

写入放大倍数(WA)的增加会引起SSD3内的各个块的重写次数(编程/擦除次数)的增加。即,写入放大倍数(WA)越大,块的编程/擦除次数便越快地达到其编程/擦除次数的上限值。结果,引起SSD3的耐久性及寿命的劣化。

本实施方式中,为了能够分离更新频率高的数据和更新频率低的数据,而具有“考虑块内的数据的GC次数的GC功能”、和“基于LBA的更新频率通知功能”。

无用存储单元收集(GC)次数管理部21及无用存储单元收集(GC)动作控制部22执行“考虑块内的数据的GC次数的GC功能”。“考虑块内的数据的GC次数的GC功能”执行能够抑制因数据局部性引起的SSD3的写入放大倍数增加的改善后的无用存储单元收集(GC)动作。

无用存储单元收集(GC)次数管理部21对包含由主机2写入的数据的每个块,管理无用存储单元收集(GC)次数。某个块的GC次数表示该块内的数据通过无用存储单元收集(GC)动作而被复制的次数。即,某个块的GC次数表示该块内的数据过去作为有效数据被复制了多少次。

对于刚由主机2写入数据后的块、即此数据一次也没有因GC而收集(复制)的块,将该块的GC次数设定为零。

若选择GC次数为零的若干块作为GC的对象块(复制源块),将这些块的有效数据 复制到复制目标空闲块,则GC次数管理部21将该复制目标空闲块的GC次数设定为1。原因是复制目标空闲块内的数据是作为有效数据而从GC对象块(复制源块)经过1次复制的数据。

通过将有效数据复制到复制目标空闲块而只剩无效数据的各块(复制源块)变成空闲块。空闲块不包含数据,因此无须管理该空闲块的GC次数。

若选择GC次数为1的若干块(复制源块)作为无用存储单元收集(GC)的对象块,将这些块的有效数据复制到复制目标空闲块,则GC次数管理部21将该复制目标的空闲块的GC次数设定为2。原因是该复制目标空闲块内的数据是过去作为有效数据而被复制了2次的数据。

这样,与某个块关联的GC次数的值表示该块内的数据通过过去的GC动作而被复制了多少次、即过去对该块内的数据执行了多少次GC动作。

GC动作控制部22执行改良后的GC动作,即,选择与相同GC次数关联的若干块作为无用存储单元收集(GC)动作的对象块,只将这些与相同GC次数关联的块的有效数据复制到相同复制目标块。

例如,GC动作控制部22从与相同GC次数关联的块组(即具有相同GC次数的块的集合)中选择若干块作为GC用对象块。GC动作控制部22将被选择为该GC对象块的这些块内的有效数据复制到复制目标空闲块。然后,由GC次数管理部21,将在被选择为GC对象块的这些块的GC次数加上1后的值,设定为该复制目标空闲块的GC次数。

“基于LBA的更新频率通知功能”是如下功能:向主机2通知各个写入命令所含的向各个LBA的写入频率,由此效率良好地辅助主机2分离Hot数据/Cold数据。

“基于LBA的更新频率通知功能”由更新频率信息响应部23执行。

更新频率信息响应部23在从主机2接收到包含LBA的写入命令时,将与向该LBA的前次写入至向该LBA的本次写入为止的时间经过相关的值、或者向该LBA的前次写入至向该LBA的本次写入为止的累计数据写入量,作为对该写入命令的响应而通知给主机2。由此,能够向主机2通知用户数据的实际更新频率(重写频率),因此,主机2能够将用户数据分类成更新频率互不相同的多种数据、例如频繁更新类型的数据(Hot数据)、低更新频率类型的数据(Cold数据)、具有Hot数据和CoId数据的中间的更新频率的类型的数据(Warm(温)数据)。结果,例如主机2能够视需要执行用来将这些不同类型的数据分散给不同的SSD的处理等。

接着,说明控制器4内的其他组件。

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

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

DRAM6的部分存储区域可以被用作写入缓冲器(WB)31,用于临时存储须写入NAND存储器5的数据。此外,DRAM6的存储区域也可以被用作GC缓冲器32,用于临时存储无用存储单元收集(GC)动作中被移动的数据。此外,DRAM6的存储区域也可以用于存储所述查找表33。

而且,DRAM6的存储区域还可以被用作GC次数管理列表34、及块使用顺序管理列表35。

GC次数管理列表34是用于针对包含由主机2写入的数据的每个块保持GC次数的列表。GC次数管理列表34还可以是表示各块的块ID(例如物理块地址)和这些块内的数据的GC次数之间的对应关系的表。

或者,GC次数管理列表34还可以由用于按GC次数(例如GC次数=0~GC次数=n)管理各个块的多个GC次数列表构成。于此,n是须管理的GC次数的上限值。例如,GC次数=0的GC次数列表保持与0次的GC次数关联的各个块的块ID(例如物理块地址)的列表。GC次数=1的GC次数列表保持与1次的GC次数关联的各个块的块ID(例如物理块地址)的列表。

块使用顺序管理列表35保持对分配给写入目标块用的各个块赋予的分配编号(序列号)。即,控制器4对分配为写入对象块的各个块赋予表示其分配顺序的编号(分配编号)。编号可以是从1开始的序列号。例如,对最先分配给写入目标块用的块赋予分配编号=1,对第二个分配给写入目标块用的块赋予分配编号=2,对第三个分配给写入目标块用的块赋予分配编号=3。由此,能够管理表示哪个块以何种顺序分配为写入目标块的块使用履历。作为分配编号,能够使用每当分配新的空闲块给写入目标块用时递增的计数器的值。

SSD3还可以保持其他各种管理信息。此类管理信息的例子可以包含保持与各个物理地址对应的有效/无效旗标的页管理表。各有效/无效旗标表示对应的物理地址(物理页)有效还是无效。所谓物理页有效是指此物理页内的数据为有效数据。所谓物理页无效是指此物理页内的数据是因更新(重写)而无效化的数据。

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

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

众所周知,操作系统(OS)42一般来说是软件,构成为执行以下控制:管理主机2全体,控制主机2内的硬件,让应用程序能够使用硬件及SSD3。

文件系统43的作用是执行文件操作(创建、保存、更新、删除等)用的控制。例如,文件系统43可以使用ZFS(Zettabyte File System,zetta字节文件系统)、Btrfs、XFS、ext4、NTFS(New Technology File System,新技术文件系统)等。或者,文件系统43还可以使用文件目标系统(例如Ceph Object Storage Daemon)、Key Value Store system(例如Rocks DB)。

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

当应用软件层41需要向SSD3送出比如读取命令或者写入命令这样的请求时,应用软件层41会向OS42送出其请求。OS42将此请求送出至文件系统43。文件系统43将此请求转码成命令(读取命令、写入命令等)。文件系统43将命令送出至SSD3。当收到来自SSD3的回应时,文件系统43将此回应送出至OS42。OS42将此回应送出至应用软件层41。

接着,参照图2~图12,详细说明“考虑块内的数据的GC次数的GC功能”。

图2表示SSD3执行的GC次数管理动作和GC动作。

SSD3的控制器4将某个空闲块分配为主机2的数据(写入数据)写入用的块(写入目标块),将从主机2接收的写入数据依次写入至该写入目标块内的可用页。当前写入目标块的所有页写满数据时,控制器4将当前写入目标块管理为活动块(包含数据的块)。然后,控制器4分配另一空闲块作为新的写入目标块。这样,SSD3中,从主机2接收的数据(写入数据)按照接收顺序而依次从当前写入目标块的最初页写入至最后页。

图2的块B11~B17是主机2刚写入数据后的块、即此块内的数据一次也没有因无用存储单元收集(GC)动作而被复制的块。这些块B11~B17对应的GC次数为0。

随着时间经过,块B11~B17的各个内的数据的一部分因重写而可能变得无效化。由此,块B11~B17的各个内有时混杂有效数据和无效数据。

当空闲块数量低至阈值个数以下时,控制器4开始GC动作,从混杂有效数据和无效数据的若干块中作出空闲块。

控制器4首先选择混杂有效数据和无效数据的若干块作为GC对象块。选择该GC对象块时,控制器4像所述那样选择与相同GC次数关联的块组作为GC对象块。该块组可以是例如无效数据量最多的块所属的块组、即具有与无效数据量最多的块的GC次数相同的GC次数的块的集合。这种情况下,控制器4可以最先从包含主机2写入的数据的块选择无效数据量最多的块。接着,控制器4可以选择无效数据量最多的块、以及与和该无效数据量最多的块的GC次数相同的GC次数关联的一个以上的块,作为无用 存储单元收集(GC)动作的对象块。

控制器4将选择的若干GC对象块(与相同GC次数关联的若干块)内的有效数据复制到复制目标空闲块,将在这些GC对象块的GC次数加上1后的值设定为复制目标空闲块的GC次数。由此,将在GC对象块的GC次数加上1后的值继承给复制目标空闲块,从而能够用复制目标空闲块的GC次数准确地表现此复制目标空闲块内的数据过去因GC动作而被复制了多少次。

例如,若选择与相同GC次数关联的2个块B11、B12作为GC对象块,并将这些块B11、B12的有效数据复制到复制目标空闲块B21,则该复制目标空闲块B21的GC次数设定为在块B11、B12的GC次数(这里为0)加上1后的值(这里为1)。

同样地,若选择与相同GC次数关联的3个块B13、B14、B15作为GC对象块,并将这些块B13、B14、B15的有效数据复制到复制目标空闲块B22,则该复制目标空闲块B22的GC次数设定为在块B13、B14、B15的GC次数(这里为0)加上1后的值(这里为1)。

同样地,若选择与相同GC次数关联的2个块B16、B17作为GC对象块,并将这些块B16、B17的有效数据复制到复制目标空闲块B23,则该复制目标空闲块B23的GC次数设定为在块B16、B17的GC次数(这里为0)加上1后的值(这里为1)。

随着时间经过,块B21、B22、B23的各个内的数据的一部分有可能因重写而无效化。由此,块B21、B22、B23的各个内有时会混杂有效数据和无效数据。

若选择与相同GC次数关联的2个块B21、B22作为GC对象块,并将这些块B21、B22的有效数据复制到复制目标空闲块B31,则该复制目标空闲块B31的GC次数设定为在块B21、B22的GC次数(这里为1)加上1后的值(这里为2)。

这样,在本实施方式中,对每个块管理的GC次数表示此块内的数据因过去的GC动作而被复制的次数。为了准确地管理该GC次数,将在GC对象块的GC次数加上1后的值继承给复制目标空闲块内的数据。

图3表示GC次数管理列表34的例。

当须管理的GC次数的上限值n为例如10时,GC次数管理列表34可以由分别与GC次数=0~GC次数=10对应的11个GC次数列表构成。

GC次数=0的GC次数列表表示与GC次数=0关联的各个块的块ID(例如物理块地址)的列表。GC次数=1的GC次数列表表示与GC次数=1关联的各个块的块ID(例如物理块地址)的列表。同样地,GC次数=10的GC次数列表表示与GC次数=10关联的各个块的块ID(例如物理块地址)的列表。各GC次数列表并无限定,也可以只包含混 杂有效数据和无效数据的块。

图4表示由控制器4执行的GC对象块选择动作。

在选择GC对象块的处理中,控制器4的无用存储单元收集动作控制部22首先可以从与不同GC次数分别关联的多个块组(多个GC次数列表)中选择GC对象的块组。图4中,例示的情况为,选择GC次数=5的块组(块B2、块B5、块B11、块B21)作为GC对象的块组,并从该GC次数=5的块组中选择若干GC对象块。

在选择GC对象块的处理中,例如可以首先选择符合规定条件的块作为最初的GC候补。符合规定条件的块可以是活动块(包含主机2写入的数据的块)中无效数据量最多的块。在其他实施方式中,符合规定条件的块可以是活动块中最旧的块。以下,假设情况为选择无效数据量最多的块作为最初的GC候补。

若无效数据量最多的块为块B5,则控制器4特定出包含块B5的GC次数列表(这里为GC次数=5的GC次数列表),选择由该GC次数=5的GC次数列表表示的块组(块B2、块B5、块B11、块B21)作为GC对象的块组,并从该GC对象的块组中选择若干GC对象块。例如,可以从这些块B2、块B5、块B11、块B21中选择无效数据量从多到少的上位若干块作为GC对象块。这种情况下,例如可以从块B5、块B2、块B11、块B21中选择无效数据量最多的上位一个以上的块作为GC对象块。

图5表示控制器4执行的GC动作。

控制器4管理包含所有空闲块的空闲块池(空闲块列表)60。控制器4从这些空闲块中选择一个空闲块。控制器4将选择的空闲块分配为复制目标空闲块B1000。控制器4将所有有效数据从具有相同GC次数的GC对象块(这里为块B2、B5、B11)复制到复制目标空闲块B1000。然后,控制器4更新查找表33,将有效数据的各LBA分别映射至复制目标空闲块B1000的物理地址。

复制目标空闲块B1000的GC次数设定为块B2、B5、B11的GC次数(=5)+1。将块B1000追加至GC次数=6的GC次数列表。块B2、B5、B11变成不含有效数据的空闲块。从GC次数=5的GC次数列表中丢弃变成空闲块的块B2、B5、B11。

图6表示写入SSD3的多种数据的例。

图6中,假设情况为向SSD3写入更新频率互不相同的3种数据(数据A、数据B、数据C)。SSD3的数据存储区域(LBA空间)包含与LBA组A、B、C对应的3个空间。

写入LBA组A的数据A为更新频率低的数据,且数据A的量在数据A、B、C中最多。即,LBA组A具有最大的LBA范围。

写入LBA组C的数据C是更新频率高的数据,且数据C的量在数据A、B、C中 最少。即,LBA组C具有最小的LBA范围。

写入LBA组B的数据B是具有数据A与数据C的中间的更新频率的数据,且数据B的量处于数据A的量与数据C的量的中间。

数据A的量相对于SSD3的总用户容量的比例可为例如50%。数据B的量相对于SSD3的总用户容量的比例可为例如30%。数据C的量相对于SSD3的总用户容量的比例可为例如20%。

数据A的更新频率即向LBA组A的写入的频率可为例如20%。数据B的更新频率即向LBA组B的写入的频率可为例如30%。数据C的更新频率即向LBA组C的写入的频率可为例如50%。

这种情况下,例如当SSD3写满数据A、数据B、数据C后,以2次写入命令中1次的比例,从主机2向SSD3发布请求向数据C(LBA组C)写入的写入命令,且以5次写入命令中1次的比例,从主机2向SSD3发布请求向数据A(LBA组A)写入的写入命令。例如,数据C以2次写入命令中1次的比例(50%)这样的高频率进行更新。

当写入SSD3的数据具有如图6那样的数据局部性时,如图6下部所示,各写入目标块内混杂数据A、数据B、数据C。

一个写入目标块内,数据C的量相对于块容量的比例为50%,数据B的量对于块容量的比例为30%,数据A的量对于块容量的比例为20%。

如上所述,数据C的量比数据A、数据B少,且数据C的更新频率高于数据A、数据B,因此各块内的数据C大部分有很大概率快速无效化。另一方面,数据A及数据B,尤其是数据A有很大概率长期维持有效状态。

因数据C的更新(重写)而无效数据量增加的各个块均成为GC对象块,将有效数据从这些块中复制到复制目标空闲块。各GC对象块中,有很大概率是大部分数据C无效化且大部分数据A、数据B维持为有效数据。因此,复制目标块中,数据A的量和数据B的量相比GC对象块而增加,相应地数据C的量相比GC对象块而减少。

本实施方式中,是将相同GC次数的若干块内的有效数据复制到复制目标空闲块,因此GC次数少的块内的有效数据和GC次数多的块内的有效数据,不会因GC动作而被复制到相同复制目标空闲块。因此,块的GC次数越多,越能增加数据A的量相对于此块的容量的比例,由此能够将数据A(Cold数据)和数据C(热数据)分离。

图7表示GC次数和各块内的数据A、B、C间的数据量的比例的关系的例。

GC次数=0的各块中,数据C的量相对于块的容量的比例为50%,数据B的量相对于块的容量的比例为30%,数据A的量相对于块的容量的比例为20%。

数据C的量相对于相对于块的容量的比例在1~2次的GC动作后迅速降低。随着GC次数增加,数据B的量相对于块的容量的比例也逐渐降低。

如上所述,本实施方式中,GC次数少的块内的有效数据和GC次数多的块内的有效数据不会被复制到相同复制目标空闲块,因此包含数据的各个块能够分类为:(1)基本上只包含数据A的组(例如GC次数7~10左右);(2)包含数据A和数据B且基本上不含数据C的组(例如GC次数3~6左右);(3)包含数据A、数据B和数据C的组(例如GC次数0~2左右)。

换句话说,本实施方式中,对于相同GC次数的块,能够使这些块所含的数据A、B、C的量的比例相同。

由此,将相同GC次数的若干块内的有效数据复制到相同复制目标空闲块的本实施方式的改良后的GC动作,即便在写入SSD3的数据具有高数据局部性的情况下,也能够形成基本上只包含数据A的块的组、包含数据A和数据B且基本上不含数据C的块的组、包含数据A、数据B和数据C的块的组,由此能够逐渐将Hot数据和Cold数据分离。结果,能够抑制SSD3的写入放大倍数增加。

图8的流程图表示由控制器4执行的GC动作的次序。

控制器4检查剩余空闲块数量(步骤S11),并判定剩余空闲块数量是否为阈值th1以下(步骤S12)。该检查也可以定期执行。例如,可以在须将新空闲块分配为写入目标块时检查剩余空闲块数量。

若剩余空闲块数量为阈值th1以下(步骤S12的是),控制器4首先从所有活动块选择最初的GC候补。最初的GC候补可以是最大无效数据量的块。这种情况下,从所有活动块选择最大无效数据量的块作为最初的GC候补(步骤S13)。控制器4参照GC次数管理列表34,选择与和最初的GC候补(这里例如为最大无效数据量的块)的GC次数相同的GC次数关联的块组(第1块组),然后从该第1块组中选择若干GC对象块(步骤S14)。在步骤S14中,选择由包含最初的GC候补(例如最大无效数据量的块)的GC次数列表所示的块组(第1块组),然后从第1块组中选择若干GC对象块。这种情况下,也可以选择最初的GC候补(例如最大无效数据量的块)、和该GC次数列表所含的其他1个以上的块作为GC对象块。

控制器4将这些被选择的GC对象块内的所有有效数据复制到复制目标空闲块(步骤S15)。在步骤S15中,从这些被选择的GC对象块内的各个有效页中读取有效数据,并将读取的有效数据分别写入复制目标空闲块的各个可用页。在步骤S15中,控制器4进一步更新查找表(LUT)33,将复制的有效数据的LBA关联于复制目标空闲块的物理地址, 并更新页管理表,使各GC对象块内的原来的页(即该LBA关联的旧数据)无效化。这种情况下,控制器4可以先通过参照查找表(LUT)33,取得存储复制的有效数据的原来的页的物理地址,然后更新页管理表,将与该物理地址对应的有效/无效旗标设定为表示无效的值。

之后,控制器4将这些被选择的GC对象块的GC次数+1、即在第1块组的GC次数加上1后的值,设定为复制目标空闲块的GC次数(步骤S16)。

图9表示包含将具有不同GC次数的2个块组的有效数据合并的处理的GC动作。

例如,当与和最大无效数据量的块的GC次数相同的GC次数关联的块组(GC对象块组)所含的有效数据的量少于阈值时,控制器4执行将具有不同GC次数的2个块组的有效数据合并的处理。这种情况下,控制器4也可以选择具有与GC对象块组的GC次数尽可能接近的GC次数的另一个块组。

例如,假设当前最大无效数据量的块为块B300,块B300的GC次数为10的情况。这种情况下,控制器4检查GC次数=10的GC次数管理列表所含的块组的总有效数据量。例如,当GC次数=10的GC次数管理列表所含的块只有块B300时,或者GC次数=10的GC次数管理列表包含2~3个块但这些块内的有效数据量非常少时,控制器4选择须与GC次数=10的块组一起执行GC动作的块组。

这种情况下,控制器4也可以从GC次数比最大无效数据量的块B300的GC次数少1次以上的所有块组(这里为GC次数9的块组、GC次数8的块组、GC次数7的块组、…GC次数0的块组)中,选择具有最大无用存储单元收集次数的块组。

控制器4首先参照GC次数=9的GC次数管理列表,判定是否存在GC次数=9的块。若不存在GC次数=9的块,控制器4便参照GC次数=8的GC次数管理列表,判定是否存在GC次数=8的块。

若不存在GC次数=9的块,但存在GC次数=8的块,控制器4便选择GC次数=8的块组(例如块B41、B42、B43)。然后,控制器4将块B300的有效数据和GC次数=8的块组的有效数据复制到复制目标空闲块。这种情况下,并非必须利用块B41、B42、B43的所有有效数据,只要利用块B41、B42、B43内的至少一个块内的有效数据便可。

图10的流程图表示包含将具有不同GC次数的2个块组的有效数据合并的处理的GC动作的次序。

控制器4检查剩余空闲块数量(步骤S21),并判定剩余空闲块数量是否为阈值th1以下(步骤S22)。如上所述,该检查可以定期执行。

若剩余空闲块数量为阈值th1以下(步骤S22的是),控制器4先从所有活动块中选 择最初的GC候补。最初的GC候补也可以是最大无效数据量的块。这种情况下,从所有活动块中选择最大无效数据量的块作为最初的GC候补(步骤S23)。控制器4参照GC次数管理列表34,选择与和最初的GC候补(这里例如为最大无效数据量的块)的GC次数相同的GC次数关联的块组(第1块组),并判定该块组(第1块组)的有效数据的总量是否为阈值th2以下(步骤S24)。

阈值th2的值可以是固定值,也可以是能够视需要变更的值。阈值th2的值越大则越容易允许所述合并处理的执行。

例如,阈值th2可以预先设定为表示SSD3内的一个块的容量的值。由此,只有在只对与和最初的GC候补的GC次数相同的GC次数关联的块组执行GC动作时,才允许执行合并处理。或者,阈值th2也可以设定成SSD3内的1个块的容量的整数倍、例如2倍的值。

若该第1块组的有效数据的总量并非阈值th2以下(步骤S24的否),控制器4便从该第1块组选择若干GC对象块(步骤S25)。在步骤S25中,从由包含最初的GC候补(例如最大无效数据量的块)的GC次数列表所示的第1块组中,选择这些GC对象块。这种情况下,也可以选择最初的GC候补(例如最大无效数据量的块)、和该GC次数列表所含的其他块作为GC对象块。

在步骤S25中,控制器4将这些被选择的GC对象块内的所有有效数据复制到复制目标空闲块。在步骤S25中,控制器4进一步更新查找表(LUT)33,将复制的有效数据的LBA关联于复制目标空闲块的物理地址,并使各GC对象块内的原来的页无效化。

之后,控制器4将这些被选择的GC对象块的GC=次数+1、即在第1块组的GC次数加上1后的值,设定为复制目标空闲块的GC次数(步骤S26)。

另一方面,若第1块组的有效数据的总量为阈值th2以下(步骤S24的是),控制器4便从与比该第1块组的GC次数少1次以上的GC次数关联的所有块组中,选择与最大GC次数关联的块组(第2块组)(步骤S27)。

控制器4将第1块组的有效数据和第2块组的有效数据复制到复制目标空闲块(步骤S28)。在步骤S28中,控制器4进一步更新查找表(LUT)33,将复制的有效数据的LBA关联于复制目标空闲块的物理地址,并使各GC对象块内的原来的页无效化。

控制器4将第2块组的GC次数+1设定为复制目标空闲块的GC次数,或者将第1块组的GC次数+1设定为复制目标空闲块的GC次数(步骤S29)。或者,也可以在第2块组内的GC对象块数量比第1块组内的GC对象块数量多时,将第2块组的GC次数+1设定为复制目标空闲块的GC次数,在第1块组内的GC对象块数量比第2块组内 的GC对象块数量多时,将第1块组的GC次数+1设定为复制目标空闲块的GC次数。

图11表示只对特定的GC次数以上的块组允许合并处理的动作。

GC次数多的块内所含的有效数据有很大可能是更新频率低的数据(数据A)。但,数据A也会以20%的比例被重写,所以对于GC次数多的块、例如GC次数=10的块,有其无效数据量变多的情况。GC次数多的块内的有效数据是至今为止一次也未被更新(重写)的数据、即长期维持有效状态的数据。因此,该有效数据今后也不会被更新的概率高。

另一方面,GC次数少的块中,有很大可能包含数据B或者数据C。此类块中,即便不立即执行此块的GC动作,随着时管理经过,块内的所有数据也有可能无效化。

因此,允许合并处理的块组只有具有合并允许阈值th3以上的GC次数的块组,由此能够防止产生无用复制,从而能够提高GC的效率。

图11中例示了将合并允许阈值th3设定为GC次数=8的情况。

这种情况下,若与和最初的GC候补的GC次数相同的GC次数关联的块组(第1块组)的GC次数为8以上,则允许第1块组和其他块组的合并处理。

例如,允许GC次数=10的块组和其他块组的合并处理、及GC次数=9的块组和其他块组的合并处理。另一方面,例如禁止GC次数=7的块组和其他块组的合并处理。

图12的流程图表示包含只对特定的GC次数以上的块组允许合并处理的动作的GC动作的次序。

该图12的流程图所示的GC动作中,除了图10说明的处理以外,还追加了步骤S30~S33的处理。以下,主要说明步骤S30~S33的处理。

若第1块组的有效数据的总量为阈值th2以下(步骤S24的是),控制器4的处理进入步骤S30。在步骤S30中,控制器4判定第1块组的GC次数是否为合并允许阈值th3以上。

若第1块组的GC次数为合并允许阈值th3以上(步骤S30的是),控制器4执行图10说明的步骤S27~S29的合并处理。

另一方面,若第1块组的GC次数(最初的GC候补的块的GC次数)少于合并允许阈值th3(步骤S30的否),控制器4禁止步骤S27~S29的合并处理的执行,取而代之的执行步骤S31~S33的处理。

在步骤S31中,控制器4选择与第1块组不同的其他块组作为GC对象块组。例如,控制器4可以选择最初的GC候补的块的无效数据量第二多的块作为新GC候补,并选择包含该新GC候补的GC次数列表所示的块组作为GC对象块组。

接着,控制器4将选择的GC对象块组的有效数据复制到复制目标空闲块(步骤S32), 并将复制目标空闲块的GC次数设定为在GC对象块组的GC次数加上1后的值(步骤S33)。

当最初的GC候补的块关联于比合并允许阈值th3少的GC次数时,该最初的GC候补的块很有可能包含频繁被更新的数据。因此,控制器4可以不对最初的GC候补的块执行GC,而是等到该块的有效数据全部无效化为止。

接着,参照图13~图22,详细说明“基于LBA的更新频率通知功能”。

图13表示将空闲块依次分配给主机2的数据写入用的动作。

控制器4将空闲块列表60所示的空闲块之一分配为写入目标块62。这种情况下,控制器4更新块使用顺序管理列表35,并将作为写入目标块62最先分配的块的分配编号(序列号)设定为1。如图14所示,块使用顺序管理列表35保持与各块地址对应的分配编号(序列号)。这些分配编号表示分配为写入目标块62的块的顺序关系。即,控制器4对作为写入对象块分配而各个块赋予表示其分配顺序的分配编号,并使用块使用顺序管理列表35管理这些分配编号。

控制器4将从主机2接收的写入数据写入到写入缓冲器31。之后,控制器4一边更新查找表(LUT)33,一边将写入缓冲器31内的写入数据从写入目标块62的起始页依次写入到最终页。

若写入目标块62无可用页,则控制器4将写入目标块62移动到活动块列表61,分配空闲块列表60的空闲块作为新的写入目标块62。这种情况下,控制器4更新块使用顺序管理列表35,并将作为该新的写入目标块62分配的该块的分配编号(序列号)设定为2。

若活动块列表61内的所有块的所有数据均因更新而无效化,将该块移动到空闲块列表60。

若空闲块列表60内的空闲块数量降低至阈值th1以下,便执行作出空闲块的所述GC动作。

图15表示请求向相同LBA写入时执行的累计数据写入量算出动作。

控制器4从主机2接收到包含某个LBA的写入命令时,将向该LBA的前次写入起的累计数据写入量,作为对该写入命令的响应而通知给主机2。累计数据写入量表示从与接收到的写入命令的LBA相同的LBA的前次写入起,到写入命令的向LBA的本次写入为止的期间,主机2向NAND存储器5写入的数据的总量。

累计数据写入量例如能够利用以下值而算出。

(1)各块的容量

(2)块内所含的页数

(3)通过向相同LBA的前次写入而被写入数据的NAND存储器5内的第1物理存储位置(旧物理地址)

(4)通过本次写入而须被写入数据的NAND存储器5内的第2物理存储位置(新物理地址)

(5)从包含第1物理存储位置(旧物理地址)的块的分配起,到包含第2物理存储位置(新物理地址)的块的分配为止的期间,用于主机2的数据写入而分配的块数量

(1)~(4)的值是SSD3内的通常的管理信息,并非为了算出累计数据写入量而专门准备。例如,控制器4通过参照查找表(LUT)33,能够容易地取得对接收到的写入命令内的LBA映射的物理地址作为第1物理存储位置。

(5)的“块数量”能够根据例如对包含第1物理存储位置的块赋予的分配编号、和对包含第2物理存储位置的块赋予的分配编号而容易地算出。

分配编号(序列号)是由图14的块使用顺序管理列表35管理。这些分配编号(序列号)的管理单位为块单位,因此用来保持这些分配编号的必要容量可为少量。因此,累计数据写入量基本上无须使用专门的算出用管理信息,能够低成本地取得。

图15中,表示接收到包含LBA10的写入命令时执行的累计数据写入量算出动作。

这里,假设情况为通过向LBA10的前次写入而数据已被写入到块B51的页Px,且通过向LBA10的本次写入而数据须被写入到当前写入目标块B62的页Py。可知若块B51的分配编号为10,块B51的分配编号为13,在块51与块B62之间分配了2个写入目标块(例如块B52、B61)。

累计数据写入量是通过d1+d2+d2+d3而赋予。

这里,d1表示页Px后续的块B51内的页数、或者与这些页数对应的容量。d2表示一个块内的页数、或者一个块的容量。d3表示页Py前的块B62内的页数、或者与该页数对应的容量。

从包含LBA10的前次写入命令的接收到包含LBA10的本次写入命令的接收为止的期间,从主机2接收的写入命令数量越多,则累计数据写入量越增加。因此,所述累计数据写入量能够表现出由LBA10指定的数据的更新频率、即向LBA10的写入频率。

当接收写入命令时,控制器4也可以按以下次序取得(算出)累计数据写入量。

首先,控制器4参照查找表(LUT)33,取得对写入命令所含的LBA(这里为LBA10)映射的旧物理地址(这里为PA1)。然后,控制器4参照块使用顺序管理列表35,取得由旧物理地址指定的块的分配编号(这里为10)、由新物理地址(这里为PA2)指定的块的分 配编号(这里为13)。控制器4根据块内所含的页数和旧物理地址(PA1)求出d1,并根据块内所含的页数和新物理地址(PA2)求出d3。并且,控制器4根据分配编号(13)和分配编号(10)之间的差量,求出由旧物理地址指定的块的分配起到由新物理地址指定的块的分配为止的期间,作为写入目标块而分配的块的总数(这里为2)。由此,能够取得(算出)累计数据写入量(=d1+d2+d2+d3)。

图16表示累计数据写入量响应处理的处理序列。

这里,假设情况为将该处理序列应用于分割写入命令和写入数据的NCQ(Native Command Queing,全速命令队列)系统。

主机2将包含表示某个LBA(=LBAx)的起始LBA的写入命令送出至SSD3。响应该写入命令的接收,SSD3的控制器4算出从向LBAx的前次写入到向LBAx的本次写入为止的累计数据写入量(步骤S41),并将包含算出的累计数据写入量的命令允许响应发送给主机2。命令允许响应是表示对接收的写入命令的响应(写入命令的执行允许)的允许响应。通过从SSD3向主机2发送允许响应,而开始由该写入命令指定的写入数据的传送。允许响应可以包含对须允许执行的写入命令进行识别的值。累计数据写入量例如可用字节表示,也可以用逻辑块(逻辑扇区)的数量来表示。

响应命令允许响应的接收,主机2将写入数据送出至SSD3。SSD3的控制器4将写入数据写入到写入缓冲器31,将写入缓冲器31的写入数据写入到写入目标块(步骤S42),并将命令结束的响应(回应)发送给主机2。另外,也可以在将写入数据写入到写入缓冲器31的时点将命令结束的回应发送给主机2。

主机2能够基于从SSD3接收的命令允许响应所含的累计数据写入量,把握LBAx的数据的实际更新频率(向LBAx的写入频率)。

若LBAx的数据的实际更新频率与主机2预期的LBAx的数据的更新频率不同,例如若LBAx的数据的实际更新频率高于主机2预期的LBAx的数据的更新频率,主机2可以视需要向SSD3送出用来终止送出的写入命令的终止命令。这种情况下,不执行由写入命令指定的数据的写入。

图17的流程图表示控制器4执行的累计数据写入量响应处理的次序。

控制器4从主机2接收包含LBAx作为起始LBA的写入命令(步骤S51)。控制器4基于对LBAx映射的旧物理地址、须对LBAx映射的新物理地址、对包含由旧物理地址指定的物理存储位置的块赋予的分配编号、对包含由新物理地址指定的物理存储位置的块(当前写入目标块)赋予的分配编号等,算出向LBAx的前次写入到向LBAx的本次写入为止的累计数据写入量(步骤S52)。控制器4将包含累计数据写入量的允许响应返回 给主机2(步骤S53)。

控制器4判定与该写入命令对应的写入数据或者用来终止该写入命令的终止命令的哪一个是从主机2接收的(步骤S54)。

若接收的是写入数据,控制器4进入步骤S55。在步骤S55中,控制器4将该写入数据写入到写入缓冲器31,将写入缓冲器31内的写入数据写入到当前写入目标块,并更新查找表(LUT)33对LBAx映射新物理地址,然后更新页管理表使旧物理地址(旧数据)无效化。

之后,控制器4将命令结束的回应返回给主机2(步骤S56)。

另外,如上所述,也可以在将写入数据写入到写入缓冲器31的时点将命令结束的回应发送给主机2。

另一方面,若接收的是终止命令,控制器4丢弃该写入命令(步骤S57)。

图18表示累计数据写入量响应处理的其他处理序列。

主机2将包含某个LBA(=LBAx)作为起始LBA的写入命令送出至SSD3。响应该写入命令的接收,SSD3的控制器4将命令允许响应发送给主机2。响应命令允许响应的接收,主机2将写入数据送出至SSD3。写入数据被写入到写入缓冲器31。SSD3的控制器4算出累计数据写入量(步骤S58)。算出累计数据写入量的处理也可以响应写入命令的接收而开始。

之后,控制器4执行向写入目标块的写入数据的写入(步骤S59),并将包含算出的累计数据写入量的命令结束的回应发送给主机2。

另外,如上所述,也可以在将写入数据写入到写入缓冲器31的时点,将包含累计数据写入量的命令结束的回应发送给主机2。

图19的流程图表示累计数据写入量响应处理的其他次序。

控制器4从主机2接收包含LBAx作为起始LBA的写入命令(步骤S61)。控制器4将允许响应返回给主机2(步骤S62)。控制器4从主机2接收写入数据(步骤S63)。写入数据被写入到写入缓冲器31。

控制器4基于对LBAx映射的旧物理地址、须对LBAx映射的新物理地址、对包含由旧物理地址指定的物理存储位置的块赋予的分配编号、对包含由新物理地址指定的物理存储位置的块(当前写入目标块)赋予的分配编号等,算出向LBAx的前次写入到向LBAx的本次写入为止的累计数据写入量(步骤S64)。控制器4进入步骤S65。

在步骤S65中,控制器4将写入缓冲器31内的写入数据写入到当前写入目标块,更新查找表(LUT)33并对LBAx映射新物理地址,然后更新页管理表使旧物理地址(旧数 据)无效化。

之后,控制器4将包含累计数据写入量的命令结束的回应返回给主机2(步骤S66)。

另外,如上所述,也可以在将写入数据写入到写入缓冲器31的时点,将命令结束的回应发送给主机2。

接着,参照图20~图23,说明代替通知累计数据写入量,而将向相同LBA的前次写入起的时间经过值通知给主机2的处理。

该时间经过值是与向相同LBA的前次写入起的时间经过相关的信息,时间经过值的例子可以是向相同LBA的前次写入的时刻,也可以是向相同LBA的前次写入的时刻和向该相同LBA的本次写入的时刻之间的时间间隔。

图20表示以例如4K字节这样的规定管理单位,管理LBA、物理地址、和前回写入时刻的对应关系而构成的查找表(LUT)33的例子。

查找表(LUT)33中对应每个LBA而包含物理地址存储区域33A和时刻存储区域33B。各时刻存储区域33B用于保持表示向对应的LBA的写入发生时刻的值、即表示写入对应的LBA的数据的时刻的值。各时刻存储区域33B内保持的时刻例如可以是时分秒。

接收到包含某个LBA的写入命令时,控制器4将在与该LBA对应的物理地址区域33A登记物理地址,并在与该LBA对应的时刻区域33B登记由写入命令指定的数据(写入数据)的写入时刻。物理地址表示由写入命令指定的数据被写入的物理存储位置的物理地址。写入时刻可以是接收到写入命令的时刻,也可以是将由写入命令指定的数据写入到写入缓冲器31的时刻,还可以是将由写入命令指定的数据写入到NAND存储器5的写入目标块的时刻。

图21的流程图表示控制器4执行的时间经过响应处理的次序。

这里,假设情况为将包含时间经过值的命令允许响应发送给主机2。

控制器4从主机2接收包含LBAx作为起始LBA的写入命令(步骤S71)。控制器4参照查找表(LUT)33,取得向LBAx的前次写入的时刻、即通过包含LBAx的前次写入命令而数据被写入的时刻(步骤S72)。控制器4将包含表示向LBAx的前次写入的时刻的时间经过值的允许响应返回给主机2(步骤S73)。如上所述,时间经过值可以是向LBAx的前次写入的时刻和LBAx的本次写入的时刻之间的时间间隔、即从当前时刻(向LBAx的本次写入的时刻)减去向LBAx的前次写入的时刻后的值。

控制器4判定与该写入命令对应的写入数据或者用于终止该写入命令的终止命令的哪一个是从主机2接收的(步骤S74)。

若接收的是写入数据,控制器4进入步骤S75。在步骤S75中,控制器4将该写入数据写入到写入缓冲器31,将写入缓冲器31内的写入数据写入到当前写入目标块,并更新查找表(LUT)33对LBAx映射新物理地址和新写入时刻,然后更新页管理表使旧物理地址(旧数据)无效化。

之后,控制器4将命令结束的回应返回给主机2(步骤S76)。

另外,如上所述,也可以在将写入数据写入到写入缓冲器31的时点,将命令结束的回应发送给主机2。

另一方面,若接收的是终止命令,控制器4丢弃该写入命令(步骤S77)。

在图21的流程图中,说明了将包含时间经过值的命令允许响应发送给主机2的情况,但也可以将包含时间经过值的命令结束的回应发送给主机2。包含时间经过值的命令结束的回应的发送能够按与图18、图19相同的次序执行。

图22的流程图表示主机2基于从SSD3通知的累计数据写入量/时间经过值而执行的处理的次序。

主机2也可以基于从SSD3通知的累计数据写入量/时间经过值,将数据分类成更新频率不同的多种数据组。例如,主机2的文件系统43包含数据管理部,该数据管理部将数据分类成多种数据组,将数据分类成频繁更新的数据组(Hot数据)和不会频繁更新的数据组(Cold数据)。若写入SSD3的数据的更新频率为某个阈值以上,则数据管理部能够将该数据识别为Hot数据。

数据管理部为了使同一SSD内的各个LBA范围的更新频率尽可能一致为相同范围的频率,也可以将识别为Hot数据的数据从SSD3移动到其他存储装置。

或者,若SSD3以具有高耐久性的昂贵SSD形式实现,也可以将Hot数据保留在SSD3内,将Cold数据从SSD3移动到其他存储装置。具有高耐久性的昂贵SSD的例子包含对每个存储单元存储1比特信息的SLC(Single-Level Cell,单阶存储单元)-SSD。

表示SSD的耐久性的指标之一为DWPD(Drive Write Per Day,驱动器每日写入量)。例如,DWPD=10对于具有1T字节的总容量的SSD意味着:能够连续5年每天执行10T字节(=10×1T字节)的数据写入。

以下,说明用于前者的处理的次序的例子。

主机2将包含LBAx的写入命令发送给SSD3(步骤S81),并从SSD3接收包含累计数据写入量或者时间经过值的响应(允许响应、命令结束回应)(步骤S82)。

主机2基于累计数据写入量或者时间经过值,判定LBAx的数据的更新频率(向LBAx的写入的频率)是否为规定的上限频率(阈值th4)以上(步骤S83)。例如,可以在从 SSD3通知累计数据写入量时,主机2判定累计数据写入量是否为阈值th4所示的阈值数据量以上。也可以在从SSD3通知时间经过值(向相同LBA的前次写入的时刻)时,主机2通过从当前时刻减去前次写入的时刻而算出时间间隔,并判定该时间间隔是否为阈值th4所示的阈值时间间隔以上。或者,主机2还可以将累计数据写入量或者时间经过值换算成表示多少次写入访问中产生1次向LBAx的写入的比例的比例[百分比],并判定该时间间隔是否为阈值th4所示的阈值时间间隔以上。

若LBAx的数据的更新频率(向LBAx的写入的频率)为阈值th4以上(步骤S83的是),主机2将LBAx的数据分类成高更新频率数据组(Hot数据)(步骤S84),并将LBAx的数据从SSD3移动到其他存储装置(步骤S85)。

在步骤S84中,若包含累计数据写入量或者时间经过值的回应是对写入命令的允许响应,则主机2也可以执行终止写入命令的处理。

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

该信息处理装置是作为服务器计算机或者个人计算机而实现。该信息处理装置包含处理器(CPU)101、主存储器102、BIOS-ROM(Basic Input Output System-Read Only Memory,基本输入输出系统-只读存储器)103、网络控制器105、周边接口控制器106、控制器107、及嵌入式控制器(EC,Embedded Controller)108等。

处理器101是以控制该信息处理装置的各组件的动作的方式构成的CPU。该处理器101执行从多个SSD3的任一个加载到主存储器102的各种程序。主存储器102包括像DRAM这样的随机存取存储器。处理器101执行的程序包含所述应用软件层41、OS42及文件系统43。

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

网络控制器105是有线LAN(Local Area Network,局域网络)控制器、无线LAN控制器之类的通信装置。周边接口控制器106以执行与USB(Universal Serial Bus,通用串行总线)装置这样的周边装置的通信的方式构成。

控制器107以执行与分别连接于多个连接器107A的装置的通信的方式构成。本实施方式中,多个SSD3分别连接于多个连接器107A。控制器107是SAS expander、PCIe Switch、PCIe expander、闪存阵列控制器、或者RAID(Redundant Arrays of Independent Disks,独立冗余磁盘阵列)控制器等。

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

图22说明的处理是在文件系统43的控制下由处理器101执行。

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

该信息处理装置具备能够收纳在支架上的薄箱形的壳体201。多个SSD3可以配置在壳体201内。这种情况下,各SSD3可拆卸地插入壳体201的前表面201A所设的插槽内。

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

如以上说明所示,根据本实施方式的“考虑块内的数据的GC次数的GC功能”,对包含主机2写入的数据的每个块,管理表示该块内的数据因无用存储单元收集(GC)动作而被复制的次数的GC次数,且选择与相同GC次数关联的多个块(第1块)作为无用存储单元收集(GC)动作的对象块。然后,将这些第1块内的有效数据复制到复制目标空闲块,将在这些第1块的GC次数加上1后的值设定为复制目标空闲块的GC次数。因此,能够防止更新频率高的数据和更新频率低的数据因GC动作而一起被复制到同一块。由此,因块的GC次数越多则更新频率低的数据的量相对于块的容量的比例越增加,因此能够将更新频率低的数据与更新频率高的数据分离。这意味着能够抑制混杂更新频率不同的多种数据的块数量的增加。由此,即便当写入SSD3的数据具有高数据局部性时,也能够抑制更新频率高的数据和更新频率低的数据混杂的块数量的增加,从而能够抑制SSD3的写入放大倍数的增加。

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

虽对本发明的若干实施方式进行了说明,但这些实施方式是作为例子提示的,并不意图限定发明的范围。这些新颖的实施方式能够以其他各种形态实施,且在不脱离发明主旨的范围内,能够进行各种省略、置换、变更。这些实施方式或其变化包含于发明的 范围及主旨,且包含于申请专利范围所记载的发明及其均等范围内。

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