本申请案享有以日本专利申请案2017-208105号(申请日:2017年10月27日)为基础申请案的优先权。本申请案通过参照该基础申请案而包含基础申请案的所有内容。
具体实施方式
以下,参照附图,对实施方式进行说明。
首先,参照图1,对包含一实施方式的存储器***的计算机***的构成进行说明。
该存储器***是以将数据写入到非易失性存储器,并从非易失性存储器读出数据的方式构成的半导体存储器装置。该存储器***作为NAND闪存技术基础的闪速存储装置3而实现。
该计算机***也可以包含主机(主机装置)2及多个闪速存储装置3。主机2也可以为以将由多个闪速存储装置3而构成的闪存阵列用作存储器的方式构成的服务器。主机(服务器)2与多个闪速存储装置3经由接口50而相互连接(内部相互连接)。作为该内部相互连接用的接口50,并不限定于此,可使用PCI Express(PCIe)(注册商标)、NVM Express(NVMe)(注册商标)、Ethernet(注册商标)、NVMe over Fabrics(NVMeOF)等。
至于作为主机2而发挥功能的服务器的典型例,可列举数据中心内的服务器。
在主机2由数据中心内的服务器而实现的实例中,该主机(服务器)2也可以经由网络51而连接于多个最终用户终端(客户端)61。主机2能够对这些最终用户终端61提供各种服务。
能够由主机(服务器)2提供的服务的例有(1)将***运转平台提供给各客户端(各最终用户终端61)的平台即服务(PaaS),(2)将像虚拟服务器一样的基础设施提供给各客户端(各最终用户终端61)的基础设施即服务(IaaS)等。
多个虚拟机器也可以在作为该主机(服务器)2而发挥功能的物理服务器上执行。在主机(服务器)2上运行的这些虚拟机器的各者能够作为以将各种服务提供给对应的几个客户端(最终用户终端61)的方式构成的虚拟服务器而发挥功能。
主机(服务器)2包含管理构成闪存阵列的多个闪速存储装置3的存储器管理功能、及分别对最终用户终端61提供包含存储器存取的各种服务的前端功能。
在现有型SSD中,NAND型闪速存储器的区块/页的阶层构造由SSD内的闪存平移层(FTL)隐蔽。也就是说,现有型SSD的FTL具有:(1)使用作为逻辑物理地址转换表格而发挥功能的查找表,管理逻辑地址各者与NAND型闪速存储器的物理地址各者之间的映射的功能;(2)用来将页单位的读取/写入与区块单位的删除动作隐蔽的功能;(3)执行NAND型闪速存储器的无用信息收集(GC)的功能等。从主机观察不到逻辑地址各者与NAND型闪速存储器的物理地址之间的映射。从主机也观察不到NAND型闪速存储器的区块/页构造。
另一方面,在主机中,也有时执行一种地址转换(应用程序级地址转换)。该地址转换使用应用程序级地址转换表格,管理应用程序级的逻辑地址各者与SSD用的逻辑地址各者之间的映射。另外,在主机中,为了消除SSD用的逻辑地址空间上产生的碎片,也执行将该逻辑地址空间上的数据配置变更的一种GC(应用程序级GC)。
然而,在主机及SSD分别为具有地址转换表格的冗长的构成(SSD具有作为逻辑物理地址转换表格而发挥功能的查找表,主机具有应用程序级地址转换表格)中,为了保存这些地址转换表格而消耗庞大的存储资源。进而,包含主机侧的地址转换与SSD侧的地址转换的双重地址转换也成为使I/O性能降低的因素。
进而,主机侧的应用程序级GC成为使向SSD的数据写入量增加为实际的用户数据量的数倍(例如2倍)左右的因素。这种数据写入量的增加与SSD的写入应用程序互相结合而使***整体的存储器性能降低,另外使SSD的寿命也变短。
为了消除这种问题点,也考虑将现有型SSD的FTL的所有功能移至主机的对策。
然而,为了安装该对策,必须将NAND型闪速存储器的区块及页由主机直接操作。在NAND型闪速存储器中,由存在页写入顺序限制,所以主机难以直接操作页。另外,在NAND型闪速存储器中,存在区块包含不良页(坏页)的情况。操作坏页对主机而言更加困难。
因此,在本实施方式中,FTL的作用在主机2与闪速存储装置3之间分担。大概来说,主机2管理作为逻辑物理地址转换表格而发挥功能的查找表,主机2仅指定应写入数据的区块的区块编号及与该数据对应的逻辑地址,应写入该数据的该区块内的位置(写入目的地位置)由闪速存储装置3来决定。表示已经决定的该区块内的位置(写入目的地位置)的区块内物理地址从闪速存储装置3通知给主机2。
这样,主机2仅操作区块,区块内的位置(例如,页、页内的位置)由闪速存储装置3来操作。
在必须将数据写入到闪速存储装置3时,主机2选择区块编号(或以对闪速存储装置3分配空闲区块的方式要求),并将指定逻辑地址与已经选择的区块的区块编号(或由闪速存储装置3通知的分配的区块的区块编号)的写入要求(写入指令)发送至闪速存储装置3。闪速存储装置3将来自主机2的数据写入到具有已经指定的区块编号的区块。在该情况下,闪速存储装置3决定该区块内的位置(写入目的地位置),将来自主机2的数据写入到该区块内的位置(写入目的地位置)。而且,闪速存储装置3将表示该区块内的位置(写入目的地位置)的区块内物理地址作为对写入要求的响应(返回值)通知给主机2。以下,将移至主机2的FTL功能称为全局FTL。
主机2的全局FTL具有执行存储服务的功能、耗损控制功能、用来实现高可用性的功能、防止具有相同内容的多个重复数据部存储在存储器中的重复排除(De-duplication)功能、无用信息收集(GC)区块选择功能、QoS控制功能等。QoS控制功能中包含针对每个QoS区(或每个区块)决定存取单位的功能。存取单位表示主机2能够写入/读取的最小数据尺寸(Grain)。闪速存储装置3支持单一或多个存取单位(Grain),主机2能够在闪速存储装置3支持多个存取单位的情况下针对每个QoS区(或每个区块),将应使用的存取单位指示给闪速存储装置3。
另外,QoS控制功能中包含用来尽量防止QoS区间的性能干扰的功能。该功能基本上为用来保存稳定的等待时间的功能。
另一方面,闪速存储装置3能够执行低级抽象化(LLA)。LLA为NAND型闪速存储器的抽象化用的功能。LLA包含将不良页(坏页)隐蔽的功能、及遵守页写入顺序限制的功能。LLA也包含GC执行功能。GC执行功能将由主机2指定的复制源区块(GC源区块)内的有效数据复制为由主机2指定的复制目的地区块(GC目的地区块)。闪速存储装置3的GC执行功能决定应写入有效数据的GC目的地区块内的位置(复制目的地位置),并将GC源区块内的有效数据复制为GC目的地区块内的复制目的地位置。
图2表示现有型SSD与主机之间的作用分担、及本实施方式的闪速存储装置3与主机2之间的作用分担。
图2的左部表示包含现有型SSD与执行虚拟磁盘服务的主机的计算机***整体的阶层构造。
在主机(服务器)中,执行用来对多个最终用户提供多个虚拟机器的虚拟机器服务101。在虚拟机器服务101上的各虚拟机器中,执行由对应的最终用户使用的操作***及用户应用程序102。
另外,在主机(服务器)中,执行与多个用户应用程序102对应的多个虚拟磁盘服务103。各虚拟磁盘服务103将现有型SSD内的存储资源的容量的一部分作为对应的用户应用程序102用的存储资源(虚拟磁盘)分配。在各虚拟磁盘服务103中,也执行使用应用程序级地址转换表格将应用程序级的逻辑地址转换为SSD用逻辑地址的应用程序级地址转换。进而,在主机中,也执行应用程序级GC104。
指令从主机(服务器)向现有型SSD的发送及指令完成的响应从现有型SSD向主机(服务器)的回传是经由主机(服务器)及现有型SSD各自所存在的I/O队列200来执行的。
现有型SSD包含写入缓冲器(WB)301、查找表(LUT)302、无用信息收集功能303、NAND型闪速存储器(NAND闪存阵列)304。现有型SSD仅管理一个查找表(LUT)302,NAND型闪速存储器(NAND闪存阵列)304的资源由多个虚拟磁盘服务103共有。
该构成中,因包含虚拟磁盘服务103下的应用程序级GC104与现有型SSD内的无用信息收集功能303(LUT级GC)的重复的GC,导致写入扩增变大。另外,在现有型SSD中,可能会产生相邻干扰问题,即由于来自某一最终用户或某一虚拟磁盘服务103的数据写入量的增加而使GC的频率增加,由此导致对于其它最终用户或其它虚拟磁盘服务103的I/O性能劣化。
另外,因存在包含各虚拟磁盘服务内的应用程序级地址转换表格与现有型SSD内的LUT302的重复资源,而消耗较多的存储器资源。
图2的右部表示包含本实施方式的闪速存储装置3与主机2的计算机***整体的阶层构造。
在主机(服务器)2中,执行用来对多个最终用户提供多个虚拟机器的虚拟机器服务401。在虚拟机器服务401上的各虚拟机器中,执行由对应的最终用户使用的操作***及用户应用程序402。
另外,在主机(服务器)2中,执行与多个用户应用程序402对应的多个I/O服务403。这些I/O服务403也可以包含基于LBA(Logical Block Address,逻辑区块地址)的区块I/O服务、键值存储服务等。各I/O服务403包含查找表(LUT)411,该查找表(LUT)411管理逻辑地址各者与闪速存储装置3的物理地址各者之间的映射。此处,所谓逻辑地址是指能够识别存取对象的数据的标识符。该逻辑地址也可以为指定逻辑地址空间上的位置的逻辑区块地址(LBA),或者,也可以为键值存储的键(标签),还可以为键的杂凑值。
在基于LBA的区块I/O服务中,也可以使用管理逻辑地址(LBA)各者与闪速存储装置3的物理地址各者之间的映射的LUT411。
在键值存储服务中,也可以使用管理逻辑地址(也就是像键一样的标签)各者与物理地址各者之间的映射的LUT411,所述物理地址表示存储着与这些逻辑地址(也就是像键一样的标签)对应的数据的闪速存储装置3内的物理存储位置。在该LUT411中,也可以管理标签、存储着由该标签识别的数据的物理地址、及该数据的数据长度的对应关系。
各最终用户能够选择应使用的定址方法(LBA、键值存储器的键等)。
这些各LUT411并不将来自用户应用程序402的逻辑地址各者转换为闪速存储装置3用的逻辑地址各者,而将来自用户应用程序402的逻辑地址各者转换为闪速存储装置3的物理地址各者。也就是说,这些各LUT411为将闪速存储装置3用的逻辑地址转换为物理地址的表格与应用程序级地址转换表格的综合(合并(merge))的表格。
另外,各I/O服务403包含GC区块选择功能。GC区块选择功能能够使用对应的LUT管理各区块的有效数据量,由此,能够选择GC源区块。
在主机(服务器)2中,也可以针对所述的每个QoS区存在I/O服务403。属于某QoS区的I/O服务403也可以管理由对应的QoS区内的用户应用程序402使用的逻辑地址各者与属于分配至对应的QoS区的资源群的区块群的区块编号各者之间的映射。
指令从主机(服务器)2向闪速存储装置3的发送及指令完成的响应等从闪速存储装置3向主机(服务器)2的回传是经由主机(服务器)2及闪速存储装置3的各自所存在的I/O队列500而执行。这些I/O队列500也可以分类为与多个QoS区对应的多个队列群。
闪速存储装置3包含与多个QoS区对应的多个写入缓冲器(WB)601、与多个QoS区对应的多个无用信息收集(GC)功能602、及NAND型闪速存储器(NAND闪存阵列)603。
在该图2的右部所示的构成中,由于上位阶层(主机2)能够辨识区块交界,所以能够考虑区块交界/区块尺寸将用户数据写入到各区块。也就是说,主机2能够辨识NAND型闪速存储器(NAND闪存阵列)603的各个区块,由此,例如,能够进行将数据一齐写入到一个区块整体,将一个区块内的数据整体通过删除或更新而无效化的控制。其结果,能够使在一个区块混合存在有效数据与无效数据的状况容易产生。因此,能够降低执行GC所需要的频率。通过降低GC的频率,而写入应用程序降低,能够实现闪速存储装置3的性能的提高、闪速存储装置3的寿命的最大化。这样,上位阶层(主机2)能够辨识区块编号的构成较为有用。
另一方面,应写入数据的区块内的位置并非由上位阶层(主机2)决定,而是由闪速存储装置3决定。因此,能够将不良页(坏页)隐蔽,另外能够遵守页写入顺序限制。
图3表示图1的***构成的变化例。
在图3中,多个主机2A与多个闪速存储装置3之间的数据传送经由网络设备(此处,为网络开关1)而执行。
也就是说,在图3的计算机***中,将图1的主机(服务器)2的存储器管理功能移至管理员2B,且将主机(服务器)2的前端功能移至多个主机(最终用户服务用主机)2A。
管理员2B管理多个闪速存储装置3,根据来自各主机(最终用户服务用主机)2A的要求,将这些闪速存储装置3的存储资源分配至各主机(最终用户服务用主机)2A。
各主机(最终用户服务用主机)2A经由网络而连接于一个以上的最终用户终端61。各主机(最终用户服务用主机)2A管理作为所述综合(合并)的逻辑物理地址转换表格的查找表(LUT)。各主机(最终用户服务用主机)2A使用自身的LUT,仅管理由对应的最终用户使用的逻辑地址各者与分配至自身的资源的物理地址各者之间的映射。因此,该构成能够使***容易地向外扩展。
各主机2A的全局FTL具有管理查找表(LUT)的功能、用来实现高可用性的功能、QoS控制功能、GC区块选择功能等。
管理员2B为用来管理多个闪速存储装置3的专用的装置(计算机)。管理员2B具有预约从各主机2A要求的容量量的存储资源的全局资源预约功能。进而,管理员2B具有用来监视各闪速存储装置3的消耗度的耗损监视功能、将已经预约的存储资源(NAND资源)分配至各主机2A的NAND资源分配功能、QoS控制功能、全局时钟管理功能等。
各闪速存储装置3的低级抽象化(LLA)具有将不良页(坏页)隐蔽的功能、遵守页写入顺序限制的功能、管理写入缓冲器的功能、GC执行功能等。
根据图3的***构成,由于各闪速存储装置3的管理由管理员2B执行,所以各主机2A只要仅执行将I/O要求发送至分配至自身的一个以上的闪速存储装置3的动作、与接收来自闪速存储装置3的响应的动作即可。也就是说,多个主机2A与多个闪速存储装置3之间的数据传送仅经由网络开关1而执行,管理员2B与该数据传送无关。另外,如上所述,由主机2A各者管理的LUT的内容相互独立。因此,由于能够容易地增加主机2A的数量,所以能够实现向外扩展型的***构成。
图4表示闪速存储装置3的构成例。
闪速存储装置3具备控制器4及非易失性存储器(NAND型闪速存储器)5。闪速存储装置3也可以具备随机存取存储器,例如,DRAM(Dynamic Random Access Memory,动态随机存取存储器)6。
NAND型闪速存储器5包含存储器单元阵列,该存储器单元阵列包含矩阵状地配置的多个存储器单元。NAND型闪速存储器5既可以为二维构造的NAND型闪速存储器,也可以为三维构造的NAND型闪速存储器。
NAND型闪速存储器5的存储器单元阵列包含多个区块BLK0~BLKm-1。区块BLK0~BLKm-1的各者由多数个页(此处为页P0~Pn-1)组成。区块BLK0~BLKm-1作为删除单位而发挥功能。区块也有时被称为「删除区块」、「物理区块」、或「物理删除区块」。页P0~Pn-1的各者包含连接于相同字线的多个存储器单元。页P0~Pn-1为数据写入动作及数据读入动作的单位。
控制器4经由像Toggle、开放式NAND闪存接口(ONFI)一样的NAND接口13,而电连接于作为非易失性存储器的NAND型闪速存储器5。控制器4为以控制NAND型闪速存储器5的方式构成的存储器控制器(控制电路)。
NAND型闪速存储器5如图5所示,包含多个NAND型闪速存储器裸片。各NAND型闪速存储器裸片为包括包含多个区块BLK的存储器单元阵列与控制该存储器单元阵列的周边电路的非易失性存储器裸片。各个NAND型闪速存储器裸片能够独立地动作。因此,NAND型闪速存储器裸片作为并列动作单位而发挥功能。NAND型闪速存储器裸片也被称为「NAND型闪速存储器芯片」或「非易失性存储器芯片」。在图5中,例示了如下情况:在NAND接口13连接着16个的信道Ch1、Ch2、…Ch16,在这些信道Ch1、Ch2、…Ch16的各者连接着相同数量(例如每个信道2个裸片)的NAND型闪速存储器裸片各者。各信道包含用来与对应的NAND型闪速存储器裸片进行通信的通信线(存储器总线)。
控制器4经由信道Ch1、Ch2、…Ch16而控制NAND型闪速存储器裸片#1~#32。控制器4能够同时驱动信道Ch1、Ch2、…Ch16。
连接于信道Ch1~Ch16的16个NAND型闪速存储器裸片#1~#16也可以作为第1存储器组而组成,另外连接于信道Ch1~Ch16的其余16个NAND型闪速存储器裸片#17~#32也可以作为第2存储器组而组成。存储器组作为用来使多个存储器模块利用存储器组交错而并列动作的单位而发挥功能。在图5的构成例中,利用16信道与使用2个存储器组的存储器组交错,能够使最大32个NAND型闪速存储器裸片并列动作。
在本实施方式中,控制器4也可以管理各者由多个区块BLK构成的多个区块(以下,称为超级区块),也可以利用超级区块的单位执行删除动作。
超级区块并不限定于此,也可以包含从NAND型闪速存储器裸片#1~#32中一个一个地选择的合计32个区块BLK。此外,NAND型闪速存储器裸片#1~#32的各者也可以具有多平面构成。例如,在NAND型闪速存储器裸片#1~#32的各者具有包含2个平面的多平面构成的情况下,一个超级区块也可以包含从与NAND型闪速存储器裸片#1~#32对应的64个平面中一个一个地选择的合计64个区块BLK。图6中例示了一个超级区块SB由从NAND型闪速存储器裸片#1~#32中一个一个地选择的合计32个区块BLK(在图5中由粗框包围的区块BLK)构成的情况。
如图4所示,控制器4包含主机接口11、CPU(Central Processing Unit,中央处理器)12、NAND接口13、及DRAM接口14等。这些CPU12、NAND接口13、DRAM接口14经由总线10而相互连接。
该主机接口11为以执行与主机2的通信的方式构成的主机接口电路。该主机接口11例如也可以为PCIe控制器(NVMe控制器)。主机接口11从主机2接收各种要求(指令)。这些要求(指令)中包含写入要求(写入指令)、读取要求(读取指令)、及其它各种要求(指令)。
CPU12为以控制主机接口11、NAND接口13、DRAM接口14的方式构成的处理器。CPU12响应闪速存储装置3的电源接通从NAND型闪速存储器5或未图示的ROM(Read Only Memory,只读存储器)将控制程序(固件)载入至DRAM6,然后执行该固件,由此进行各种处理。此外,固件也可以载入至控制器4内的未图示的SRAM(Static Random Access Memory,静态随机存取存储器)上。该CPU12能够执行用来处理来自主机2的各种指令的指令处理等。CPU12的动作是通过由CPU12执行的所述固件来控制。此外,指令处理的一部分或全部也可以由控制器4内的专用硬件执行。
CPU12能够作为写入动作控制部21、读取动作控制部22、及GC动作控制部23而发挥功能。在这些写入动作控制部21、读取动作控制部22、及GC动作控制部23中,安装着用来实现图2的右部所示的***构成的应用程序接口(API)。
写入动作控制部21从主机2接收指定区块编号与逻辑地址的写入要求(写入指令)。逻辑地址为能够识别应写入的数据(用户数据)的标识符,例如,既可以为LBA,或者也可以为像键值存储器的键一样的标签,也可以为键的杂凑值。区块编号为指定应写入该数据的区块的标识符。作为区块编号,可使用能够将多个区块内的任意的一个唯一地识别的各种值。由区块编号指定的区块既可以为物理区块,也可以为所述超级区块。在接收写入指令的情况下,写入动作控制部21首先决定应写入来自主机2的数据的具有该已经指定的区块编号的区块(写入目的地区块)内的位置(写入目的地位置)。接着,写入动作控制部21将来自主机2的数据(写入数据)写入到该写入目的地区块的写入目的地位置。在该情况下,写入动作控制部21不仅能够将来自主机2的数据写入到写入目的地区块,而且能够将该数据与该数据的逻辑地址的两者写入到写入目的地区块。
然后,写入动作控制部21将表示该写入目的地区块的所述写入目的地位置的区块内物理地址通知给主机2。该区块内物理地址由表示该写入目的地区块内的写入目的地位置的区块内偏移来表示。
在该情况下,该区块内偏移表示写入目的地区块的开端到写入目的地位置的偏移,也就是说相对于写入目的地区块的开端的写入目的地位置的偏移。写入目的地区块的开端到写入目的地位置的偏移的尺寸由具有与页尺寸不同的尺寸的粒度(Grain)的倍数表示。粒度(Grain)为所述存取单位。粒度(Grain)的尺寸的最大值限制为区块尺寸。换句话说,区块内偏移由使写入目的地区块的开端到写入目的地位置的偏移具有与页尺寸不同的尺寸的粒度的倍数表示。
粒度(Grain)也可以具有小于页尺寸的尺寸。例如,在页尺寸为16K字节的情况下,粒度(Grain)的尺寸也可以为4K字节。在该情况下,在某一个区块中,规定尺寸分别为4K字节的多个偏移位置。与区块内的最初的偏移位置对应的区块内偏移例如为0,与区块内的下一偏移位置对应的区块内偏移例如为1,与区块内的再下一偏移位置对应的区块内偏移例如为2。
或者,粒度(Grain)也可以具有大于页尺寸的尺寸。例如,粒度(Grain)也可以为页尺寸的数倍的尺寸。在页尺寸为16K字节的情况下,粒度也可以为32K字节的尺寸。
这样,写入动作控制部21由自身决定具有来自主机2的区块编号的区块内的写入目的地位置,然后将来自主机2的写入数据写入到该区块内的该写入目的地位置。然后,写入动作控制部21将表示该写入目的地位置的区块内物理地址(区块内偏移)作为与写入要求对应的响应(返回值)而通知给主机2。或者,写入动作控制部21并不将仅区块内物理地址(区块内偏移)通知给主机2,也可以将逻辑地址、区块编号及区块内物理地址(区块内偏移)的组通知给主机2。
因此,闪速存储装置3能够使主机2操作区块编号,且将页写入顺序限制、坏页、页尺寸等隐蔽。
其结果,主机2能够辨识区块交界,但关于页写入顺序限制、坏页、页尺寸并不意识,能够管理哪个用户数据存在于哪个区块编号。
读取动作控制部22在从主机2接收指定物理地址(也就是说,区块编号及区块内偏移)的读取要求(读取指令)的情况下,基于这些区块编号及区块内偏移,从读取对象的区块内的读取对象的物理存储位置读取数据。读取对象的区块由区块编号特定。该区块内的读取对象的物理存储位置由区块内偏移特定。通过使用该区块内偏移,主机2无须操作NAND型闪速存储器的每一代的不同的页尺寸。
为了获得读取对象的物理存储位置,读取动作控制部22也可以首先将该区块内偏移除以表示页尺寸的粒度的数(在页尺寸为16K字节且粒度(Grain)为4K字节的情况下,表示页尺寸的粒度的数为4),然后将该除法所得的商及余数作为读取对象的页编号及读取对象的页内偏移而分别决定。
GC动作控制部23在从主机2接收指定NAND型闪速存储器5的无用信息收集用的复制源区块编号(GC源区块编号)及复制目的地区块编号(GC目的地区块编号)的GC控制指令的情况下,从NAND型闪速存储器5的多个区块,将具有已经指定的复制源区块编号的区块与具有已经指定的复制目的地区块编号的区块选择为复制源区块(GC源区块)及复制目的地区块(GC目的地区块)。GC动作控制部23决定应写入存储在已经选择的GC源区块中的有效数据的GC目的地区块内的复制目的地位置,将有效数据复制到GC目的地区块内的复制目的地位置。
然后,GC动作控制部23将有效数据的逻辑地址、复制目的地区块编号、及表示GC目的地区块内的复制目的地位置的区块内物理地址(区块内偏移)通知给主机2。
有效数据/无效数据的管理也可以使用区块管理表格32来执行。该区块管理表格32例如也可以针对每个区块存在。在与某区块对应的区块管理表格32中,存储着表示该区块内的数据各者的有效/无效的位图标记。此处,所谓有效数据,是指从逻辑地址作为最新的数据链接的数据,且是指之后有从主机2读取的可能性的数据。所谓无效数据,是指已经无从主机2读取的可能性的数据。例如,与某逻辑地址建立关联的数据为有效数据,与任何逻辑地址均未建立关联的数据为无效数据。
如上所述,GC动作控制部23决定应写入存储在复制源区块(GC源区块)内的有效数据的复制目的地区块(GC目的地区块)内的位置(复制目的地位置),将有效数据复制到复制目的地区块(GC目的地区块)的该已经决定的位置(复制目的地位置)。在该情况下,GC动作控制部23也可以将有效数据与该有效数据的逻辑地址的两者复制到复制目的地区块(GC目的地区块)。
在本实施方式中,如上所述,写入动作控制部21能够将来自主机2的数据(写入数据)与来自主机2的逻辑地址的两者写入到写入目的地区块。因此,GC动作控制部23能够从该复制源区块(GC源区块)容易地取得复制源区块(GC源区块)内的各数据的逻辑地址,所以能够将已经复制的有效数据的逻辑地址容易地通知给主机2。
NAND接口13为以在CPU12的控制之下,控制NAND型闪速存储器5的方式构成的存储器控制电路。DRAM接口14为以在CPU12的控制之下,控制DRAM6的方式构成的DRAM控制电路。DRAM6的存储区域的一部分为了写入缓冲器(WB)31的存储而使用。另外,DRAM6的存储区域的另一部分为了区块管理表格32的存储而使用。此外,这些写入缓冲器(WB)31、及区块管理表格32也可以存储在控制器4内的未图示的SRAM。
图7是表示主机2指定逻辑地址与区块编号且闪速存储装置3决定区块内物理地址(区块内偏移)的数据写入动作、与主机2指定区块编号与区块内物理地址(区块内偏移)的数据读出动作。
数据写入动作按照以下的顺序执行。
(1)在主机2的写入处理部412必须将数据(写入数据)写入到闪速存储装置3时,写入处理部412也可以要求闪速存储装置3以分配空闲区块。闪速存储装置3的控制器4包含管理NAND型闪速存储器5的空闲区块群的区块分配部701。在区块分配部701从写入处理部412接收该要求(区块分配要求)时,区块分配部701将空闲区块群的一个空闲区块分配至主机2,并将已经分配的区块的区块编号(BLK#)通知给主机2。
或者,在写入处理部412管理空闲区块群的构成中,写入处理部412也可以由自身选择写入目的地区块。
(2)写入处理部412将指定与写入数据对应的逻辑地址(例如LBA)与写入目的地区块的区块编号(BLK#)的写入要求发送至闪速存储装置3。
(3)闪速存储装置3的控制器4包含分配数据写入用的页的页分配部702。在页分配部702接收写入要求时,页分配部702决定表示具有由写入要求指定的区块编号的区块(写入目的地区块)内的写入目的地位置的区块内物理地址(区块内PBA)。区块内物理地址(区块内PBA)能够由所述区块内偏移(也仅参照为偏移)来表示。控制器4基于由写入要求指定的区块编号与区块内物理地址(区块内PBA),将来自主机2的写入数据写入到写入目的地区块内的写入目的地位置。
(4)控制器4将表示写入目的地位置的区块内物理地址(区块内PBA)作为对写入要求的响应而通知给主机2。或者,控制器4也可以将与写入数据对应的逻辑地址(LBA)、写入目的地区块的区块编号(BLK#)、及表示写入目的地位置的区块内PBA(偏移)的组作为对写入要求的响应而通知给主机2。换句话说,控制器将区块内物理地址、或逻辑地址、区块编号及区块内物理地址的组的任一者通知给主机2。在主机2中,以表示写入有写入数据的物理存储位置的物理地址(区块编号、区块内物理地址(区块内偏移))映射为该写入数据的逻辑地址的方式,更新LUT411。
数据读取动作按照以下的顺序执行。
(1)'在主机2必须从闪速存储装置3读取数据时,主机2参照LUT411,从LUT411取得与应读取的数据的逻辑地址对应的物理地址(区块编号、区块内物理地址(区块内偏移))。
(2)'主机2将指定已经取得的区块编号及区块内物理地址(区块内偏移)的读取要求送出至闪速存储装置3。在闪速存储装置3的控制器4从主机2接收该读取要求时,控制器4基于区块编号及区块内物理地址,对读取对象的区块及读取对象的物理存储位置进行特定,从该读取对象的区块内的读取对象的物理存储位置读取数据。
图8是表示闪速存储装置3中所应用的写入指令。
写入指令为对闪速存储装置3要求数据的写入的指令。该写入指令也可以包含指令ID、区块编号BLK#、逻辑地址、长度等。
指令ID为表示该指令为写入指令的ID(指令码),写入指令中包含写入指令用的指令ID。
区块编号BLK#为能够唯一地识别应写入数据的区块的标识符(区块地址)。
逻辑地址为用来识别应写入的写入数据的标识符。该逻辑地址如上所述,也可以为LBA,也可以为键值存储器的键,也可以为键的杂凑值。在逻辑地址为LBA的情况下,包含在该写入指令中的逻辑地址(开始LBA)表示应写入有写入数据的逻辑位置(最初的逻辑位置)。
长度表示应写入的写入数据的长度。该长度(数据长度)既可以由粒度(Grain)的数来指定,也可以由LBA的数来指定,或者,它的尺寸也可以由字节来指定。
在从主机2接收写入指令时,控制器4决定具有由写入指令指定的区块编号的区块内的写入目的地位置。该写入目的地位置考虑页写入顺序的限制及坏页等而决定。然后,控制器4将来自主机2的数据写入到具有由写入指令指定的区块编号的该区块内的该写入目的地位置。
图9是表示对图8的写入指令的响应。
该响应包含区块内物理地址、长度。区块内物理地址表示写入有数据的区块内的位置(物理存储位置)。区块内物理地址如上所述,能够由区块内偏移来指定。长度表示写入的数据的长度。该长度(数据长度)既可以由粒度(Grain)的数来指定,也可以由LBA的数来指定,或者,它的尺寸也可以由字节来指定。
或者,该响应不仅包含区块内物理地址及长度,也可以进而包含逻辑地址及区块编号。逻辑地址为包含在图8的写入指令中的逻辑地址。区块编号为包含在图8的写入指令中的逻辑地址。
图10是表示闪速存储装置3中所应用的Trim指令。
该Trim指令包含表示存储有应为无效的数据的物理存储位置的区块编号及区块内物理地址(区块内偏移)的指令。也就是说,该Trim指令能够指定物理地址,而并非像LBA一样的逻辑地址。该Trim指令包含指令ID、物理地址、长度。
指令ID为表示该指令为Trim指令的ID(指令码),在Trim指令中包含Trim指令用的指令ID。
物理地址表示存储有应无效化的数据的最初的物理存储位置。在本实施方式中,该物理地址由区块编号与偏移(区块内偏移)的组合来指定。
长度表示应无效化的数据的长度。该长度(数据长度)既可以由粒度(Grain)的数来指定,也可以由字节来指定。
控制器4使用区块管理表格32管理表示多个区块的各者中所包含的数据各者的有效/无效的标记(位图标记)。在从主机2接收包含表示存储有应为无效的数据的物理存储位置的区块编号及偏移(区块内偏移)的Trim指令的情况下,控制器4更新区块管理表格32,将与Trim指令中所包含的区块编号及区块内偏移对应的物理存储位置的数据所对应的标记(位图标记)变更为表示无效的值。
图11是表示规定区块内物理地址的区块内偏移。
区块编号指定某一个区块BLK。各区块BLK如图11所示,包含多个页(此处,为页0~页n)。
在页尺寸(各页的用户数据存储区域)为16K字节,粒度(Grain)为4KB的尺寸的实例中,该区块BLK逻辑上分割为4×(n+1)个区域。
偏移+0表示页0的最初的4KB区域,偏移+1表示页0的第2个4KB区域,偏移+2表示页0的第3个4KB区域,偏移+3表示页0的第4个4KB区域。
偏移+4表示页1的最初的4KB区域,偏移+5表示页1的第2个4KB区域,偏移+6表示页1的第3个4KB区域,偏移+7表示页1的第4个4KB区域。
图12是表示根据写入指令执行的写入动作。
现在,设想区块BLK#1作为写入目的地区块而分配的情况。控制器4按照页0、页1、页2、…页n的顺序,将数据以页单位写入到区块BLK#1。
在图11中,设想在将16K字节量的数据已经写入到区块BLK#1的页0的状态下,从主机2接收指定区块编号(=BLK#1)、逻辑地址(LBAx)及长度(=4)的写入指令的情况。控制器4将区块BLK#1的页1决定为写入目的地位置,将从主机2接收的16K字节量的写入数据写入到区块BLK#1的页1。然后,控制器4作为对该写入指令的响应,使偏移(区块内偏移)、长度返回至主机2。在该实例中,偏移(区块内偏移)为+5,长度为4。或者,控制器4也可以作为对该写入指令的响应,使逻辑地址、区块编号、偏移(区块内偏移)、长度返回至主机2。在该实例中,逻辑地址为LBAx,区块编号为BLK#1,偏移(区块内偏移)为+5,长度为4。
图13是表示跳过不良页(坏页)的写入动作。
在图13中,设想在将数据已经写入到区块BLK#1的页0、页1的状态下,从主机2接收指定区块编号(=BLK#1)、逻辑地址(LBAx+1)及长度(=4)的写入指令的情况。如果区块BLK#1的页2为不良页,那么控制器4将区块BLK#1的页3决定为写入目的地位置,将从主机2接收的16K字节量的写入数据写入到区块BLK#1的页3。然后,控制器4作为对该写入指令的响应,使偏移(区块内偏移)、长度返回至主机2。在该实例中,偏移(区块内偏移)为+12,长度为4。或者,控制器4也可以作为对该写入指令的响应,使逻辑地址、区块编号、偏移(区块内偏移)、长度返回至主机2。在该实例中,逻辑地址为LBAx+1,区块编号为BLK#1,偏移(区块内偏移)为+12,长度为4。
图14是表示跳过不良页的写入动作的另一例。
在图14中,设想跨隔着不良页的2个页而写入数据的情况。现在,设想将数据已经写入到区块BLK#2的页0、页1,且在写入缓冲器31中保留有未写入的8K字节量的写入数据的情况。在该状态下,如果接收指定区块编号(=BLK#2)、逻辑地址(LBAy)及长度(=6)的写入指令,那么控制器4使用未写入的8K字节写入数据与从主机2新接收的24K字节写入数据内的最初的8K字节写入数据,准备与页尺寸对应的16K字节写入数据。然后,控制器4将该已经准备的16K字节写入数据写入到区块BLK#2的页2。
如果区块BLK#2的下一页3为不良页,那么控制器4将区块BLK#2的页4决定为下一写入目的地位置,将从主机2接收的24K字节写入数据内的剩余的16K字节写入数据写入到区块BLK#2的页4。
然后,控制器4作为对该写入指令的响应,使2个偏移(区块内偏移)与2个长度返回至主机2。在该实例中,该响应也可以包含偏移(=+10)、长度(=2)、偏移(=+16)、长度(=4)。或者,控制器4也可以作为对该写入指令的响应,使LBAy、区块编号(=BLK#2)、偏移(=+10)、长度(=2)、区块编号(=BLK#2)、偏移(=+16)、长度(=4)返回至主机2。
图15、图16是表示将逻辑地址与数据的对写入到区块内的页的动作。
在各区块中,各页也可以包含用来存储用户数据的用户数据区域与用来存储管理数据的冗长区域。页尺寸为16KB+α。
控制器4将4KB用户数据及与该4KB用户数据对应的逻辑地址(例如LBA)的两者写入到写入目的地区块BLK。在该情况下,如图15所示,也可以将各者包含LBA与4KB用户数据的4个数据组写入到相同的页。区块内偏移也可以表示组交界。
或者,如图16所示,也可以将4个4KB用户数据写入到页内的用户数据区域,将与这些4个4KB用户数据对应的4个LBA写入到该页内的冗长区域。
图17是表示使用超级区块的实例中的区块编号与偏移(区块内偏移)的关系。以下,区块内偏移也仅参照为偏移。
此处,为了简化图示,设想某一个超级区块SB#1由4个区块BLK#11、BLK#21、BLK#31、BLK#41构成的情况。控制器4按照区块BLK#11的页0、区块BLK#21的页0、区块BLK#31的页0、区块BLK#41的页0、区块BLK#11的页1、区块BLK#21的页1、区块BLK#31的页1、区块BLK#41的页1、…的顺序写入数据。
偏移+0表示区块BLK#11的页0的最初的4KB区域,偏移+1表示区块BLK#11的页0的第2个4KB区域,偏移+2表示区块BLK#11的页0的第3个4KB区域,偏移+3表示区块BLK#11的页0的第4个4KB区域。
偏移+4表示区块BLK#21的页0的最初的4KB区域,偏移+5表示区块BLK#21的页0的第2个4KB区域,偏移+6表示区块BLK#21的页0的第3个4KB区域,偏移+7表示区块BLK#21的页0的第4个4KB区域。
同样地,偏移+12表示区块BLK#41的页0的最初的4KB区域,偏移+13表示区块BLK#41的页0的第2个4KB区域,偏移+14表示区块BLK#41的页0的第3个4KB区域,偏移+15表示区块BLK#41的页0的第4个4KB区域。
偏移+16表示区块BLK#11的页1的最初的4KB区域,偏移+17表示区块BLK#11的页1的第2个4KB区域,偏移+18表示区块BLK#11的页1的第3个4KB区域,偏移+19表示区块BLK#11的页1的第4个4KB区域。
偏移+20表示区块BLK#21的页1的最初的4KB区域,偏移+21表示区块BLK#21的页1的第2个4KB区域,偏移+22表示区块BLK#21的页1的第3个4KB区域,偏移+23表示区块BLK#21的页1的第4个4KB区域。
同样地,偏移+28表示区块BLK#41的页1的最初的4KB区域,偏移+29表示区块BLK#41的页1的第2个4KB区域,偏移+30表示区块BLK#41的页1的第3个4KB区域,偏移+31表示区块BLK#41的页1的第4个4KB区域。
图18是表示闪速存储装置3中所应用的最大区块编号获得指令。
最大区块编号获得指令为用来从闪速存储装置3取得最大区块编号的指令。主机2通过对闪速存储装置3发送最大区块编号获得指令,能够辨识表示闪速存储装置3中所包含的区块的数的最大区块编号。最大区块编号获得指令包含最大区块编号获得指令用的指令ID,不包含参数。
图19是表示对最大区块编号获得指令的响应。
在从主机2接收最大区块编号获得指令时,闪速存储装置3使图19所示的响应返回至主机2。该响应包含表示最大区块编号(也就是说,闪速存储装置3中所包含的能够利用的区块的总数)的参数。
图20是表示闪速存储装置3中所应用的区块尺寸获得指令。
区块尺寸获得指令为用来从闪速存储装置3取得区块尺寸的指令。主机2通过对闪速存储装置3发送区块尺寸获得指令,能够辨识闪速存储装置3中所包含的NAND型闪速存储器5的区块尺寸。
此外,在其它实施方式中,区块尺寸获得指令也可以包含指定区块编号的参数。在从主机2接收指定某区块编号的区块尺寸获得指令的情况下,闪速存储装置3使具有该区块编号的区块的区块尺寸返回至主机2。由此,即便在NAND型闪速存储器5中所包含的区块各者的区块尺寸不均匀的情况下,主机2也能够辨识各个区块各者的区块尺寸。
图21是表示对区块尺寸获得指令的响应。
在从主机2接收区块尺寸获得指令时,闪速存储装置3使区块尺寸(NAND型闪速存储器5中所包含的区块各者的共通的区块尺寸)返回至主机2。在该情况下,如果区块编号由区块尺寸获得指令来指定,那么闪速存储装置3如上所述,使具有该区块编号的区块的区块尺寸返回至主机2。
图22是表示闪速存储装置3中所应用的区块分配指令。
区块分配指令为对闪速存储装置3要求区块(空闲区块)的分配的指令(区块分配要求)。主机2通过将区块分配指令发送至闪速存储装置3,能够要求闪速存储装置3以分配空闲区块,由此取得区块编号(已经分配的空闲区块的区块编号)。
在闪速存储装置3利用空闲区块列表管理空闲区块群,主机2不管理空闲区块群的实例中,主机2要求闪速存储装置3以分配空闲区块,由此取得区块编号。另一方面,在主机2管理空闲区块群的实例中,主机2由于能够由自身选择空闲区块群的一个,所以无须将区块分配指令发送至闪速存储装置3。
图23是表示对区块分配指令的响应。
在从主机2接收区块分配指令时,闪速存储装置3从空闲区块列表选择应分配至主机2的空闲区块,并使包含已经选择的空闲区块的区块编号的响应返回至主机2。
图24是表示由主机2与闪速存储装置3执行的区块信息取得处理。
在主机2开始使用闪速存储装置3时,主机2首先将最大区块编号获得指令发送至闪速存储装置3。闪速存储装置3的控制器使最大区块编号返回至主机2。最大区块编号表示能够利用的区块的总数。此外,在使用所述超级区块的实例中,最大区块编号也可以表示能够利用的超级区块的总数。
接着,主机2将区块尺寸获得指令发送至闪速存储装置3,取得区块尺寸。在该情况下,主机2也可以将指定区块编号1的区块尺寸获得指令、指定区块编号2的区块尺寸获得指令、指定区块编号3的区块尺寸获得指令、…分别发送至闪速存储装置3,个别地取得所有区块各者的区块尺寸。
通过该区块信息取得处理,主机2能够辨识能够利用的区块数、各个区块的区块尺寸。
图25是表示由主机2与闪速存储装置3执行的写入处理的序列。
主机2首先要求闪速存储装置3以由自身选择为了写入应使用的区块(空闲区块),或通过将区块分配指令发送至闪速存储装置3来分配空闲区块。然后,主机2将包含由自身选择的区块的区块编号BLK#(或由闪速存储装置3分配的空闲区块的区块编号BLK#)、逻辑地址(LBA)、及长度的写入指令发送至闪速存储装置3(步骤S20)。
在闪速存储装置3的控制器4接收该写入指令时,控制器4决定应写入来自主机2的写入数据的具有该区块编号BLK#的区块(写入目的地区块BLK#)内的写入目的地位置,并将写入数据写入到该写入目的地区块BLK#的写入目的地位置(步骤S11)。在步骤S11中,控制器4也可以将逻辑地址(此处为LBA)与写入数据的两者写入到写入目的地区块。
控制器4更新与写入目的地区块BLK#对应的区块管理表格32,将与已经写入的数据对应的位图标记(也就是说,与已经写入有该数据的偏移(区块内偏移)对应的位图标记)从0变更为1(步骤S12)。
例如,如图26所示,设想将开始LBA为LBAx的16K字节更新数据写入到与区块BLK#1的偏移+4~+7对应的物理存储位置的情况。在该情况下,如图27所示,在区块BLK#1用的区块管理表格中,与偏移+4~+7对应的位图标记各者从0变更为1。
然后,如图25所示,控制器4使对该写入指令的响应返回至主机2(步骤S13)。该响应至少包含写入有该数据的偏移(区块内偏移)。
在主机2接收该响应时,主机2更新由主机2管理的LUT411,对与已经写入的写入数据对应的逻辑地址各者映射物理地址。如图28所示,LUT411包含与多个逻辑地址(例如LBA)各者对应的多个输入值。在与某逻辑地址(例如某LBA)对应的输入值中,存储着表示存储有与该LBA对应的数据的NAND型闪速存储器5内的位置(物理存储位置)的物理地址PBA,也就是说区块编号、偏移(区块内偏移)。如图26所示,如果将开始LBA为LBAx的16K字节更新数据写入到与区块BLK#1的偏移+4~+7对应的物理存储位置,那么如图28所示,LUT411被更新,在与LBAx对应的输入值中存储BLK#1、偏移+4,在与LBAx+1对应的输入值中存储BLK#1、偏移+5,在与LBAx+2对应的输入值中存储BLK#1、偏移+6,在与LBAx+3对应的输入值中存储BLK#1、偏移+7。
如图25所示,此后,主机2将用来使利用所述更新数据的写入而不需要的以前的数据无效化的Trim指令发送至闪速存储装置3。如图26所示,在以前的数据存储在与区块BLK#0的偏移+0、偏移+1、偏移+2、偏移+3对应的位置的情况下,如图29所示,将指定区块编号(=BLK#0)、偏移(=+0)、长度(=4)的Trim指令从主机2发送至闪速存储装置3。闪速存储装置3的控制器4根据该Trim指令,更新区块管理表格32(图25,步骤S14)。在步骤S15中,如图29所示,在区块BLK#0用的区块管理表格中,与偏移+0~+3对应的位图标记各者从1变更为0。
图30是表示闪速存储装置3中所应用的读取指令。
读取指令为对闪速存储装置3要求数据的读出的指令。该读取指令包含指令ID、物理地址PBA、长度、传送目的地指标。
指令ID为表示该指令为读取指令的ID(指令码),读取指令包含读取指令用的指令ID。
物理地址PBA表示应读出数据的最初的物理存储位置。物理地址PBA由区块编号、偏移(区块内偏移)来指定。
长度表示应读取的数据的长度。该数据长度能够由Grain的数来指定。
传送目的地指标表示应传送已经读出的数据的主机2内的存储器上的位置。
一个读取指令能够指定多个物理地址PBA(区块编号、偏移)与长度的组。
图31是表示读取动作。
此处,设想从主机2接收指定区块编号(=BLK#2)、偏移(=+5)、长度(=3)的读取指令的情况。闪速存储装置3的控制器4基于区块编号(=BLK#2)、偏移(=+5)、长度(=3),从BLK#2读取数据d1~d3。在该情况下,控制器4从BLK#2的页1读取1页尺寸量的数据,从该读取数据抽出数据d1~数据d3。接着,控制器4将数据d1~数据d3传送至由传送目的地指标指定的主机存储器上。
图32是表示根据来自主机2的读取指令,将分别存储在不同的物理存储位置的数据部读取的动作。
此处,设想从主机2接收指定区块编号(=BLK#2)、偏移(=+10)、长度(=2)、区块编号(=BLK#2)、偏移(=+16)、长度(=4)的读取指令的情况。闪速存储装置3的控制器4基于区块编号(=BLK#2)、偏移(=+10)、长度(=2),从BLK#2的页2读取1页尺寸量的数据,从该读取数据抽出数据d1~数据d2。接着,控制器4基于区块编号(=BLK#2)、偏移(=+16)、长度(=4),从BLK#2的页4读取1页尺寸量的数据(数据d3~数据d6)。然后,控制器4将通过使数据d1~数据d2与数据d3~数据d6结合所获得的长度(=6)的读取数据传送至由读取指令内的传送目的地指标指定的主机存储器上。
由此,即便在区块内存在不良页的情况下,也不会引起读取错误,能够从另一个物理存储位置读取数据部。另外,即便在数据跨2个区块而写入的情况下,也能够将该数据利用一个读取指令的发行来读取。
图33是表示由主机2与闪速存储装置3执行的读取处理的序列。
主机2参照由主机2管理的LUT411,将来自用户应用程序的读取要求中所包含的逻辑地址转换为区块编号、偏移。然后,主机2将指定该区块编号、偏移、长度的读取指令发送至闪速存储装置3。
在闪速存储装置3的控制器4从主机2接收读取指令时,控制器4就爱那个与由该读取指令指定的区块编号对应的区块决定为读取对象的区块,并且基于由该读取指令指定的偏移决定读取对象的页(步骤S31)。在步骤S31中,控制器4首先也可以将由读取指令指定的偏移除以表示页尺寸的粒度的数(此处,为4)。然后,控制器4也可以将该除法所得的商及余数分别决定为读取对象的页编号及读取对象的页内偏移位置。
控制器4将由区块编号、偏移、长度规定的数据从NAND型闪速存储器5读取(步骤S32),并将该读取数据发送至主机2。
图34是表示闪速存储装置3中所应用的GC控制指令。
GC控制指令是为了将GC源区块编号及GC目的地区块编号通知给闪速存储装置3而使用。主机2能够管理各区块的有效数据量/无效数据量,并将有效数据量更少的几个区块选择为GC源区块。另外,主机2能够管理空闲区块列表,并将几个空闲区块选择为GC目的地区块。该GC控制指令也可以包含指令ID、GC源区块编号、GC目的地区块编号等。
指令ID为表示该指令为GC控制指令的ID(指令码),GC控制指令包含GC控制指令用的指令ID。
GC源区块编号为表示GC源区块的区块编号。主机2能够指定应使哪个区块为GC源区块。主机2也可以将多个GC源区块编号设定为一个GC控制指令。
GC目的地区块编号为表示GC目的地区块的区块编号。主机2能够指定应使哪个区块为GC目的地区块。主机2也可以将多个GC目的地区块编号设定为一个GC控制指令。
图35是表示GC用回调指令。
GC用回调指令是为了将由GC复制的有效数据的逻辑地址与表示该有效数据的复制目的地位置的区块编号及偏移通知给主机2而使用。
GC用回调指令可以包含指令ID、逻辑地址、长度、目的地物理地址。
指令ID为表示该指令为GC用回调指令的ID(指令码),GC用回调指令包含GC用回调指令用的指令ID。
逻辑地址表示利用GC从GC源区块复制到GC目的地区块的有效数据的逻辑地址。
长度表示该复制数据的长度。该数据长度也可以由粒度(Grain)的数来指定。
目的地物理地址表示复制着有效数据的GC目的地区块内的位置。目的地物理地址由区块编号、偏移(区块内偏移)来指定。
图36是表示无用信息收集(GC)动作的顺序。
例如,主机2在由主机2管理的空闲区块列表中所包含的剩余的空闲区块的数降低至阈值以下的情况下,选择GC源区块及GC目的地区块,并将指定已经选择的GC源区块及已经选择的GC目的地区块的GC控制指令发送至闪速存储装置3(步骤S41)。或者,在写入处理部412管理空闲区块群的构成中,在剩余的空闲区块的数降低至阈值以下时写入处理部412也可以对主机2进行该主旨通知,已经接收通知的主机2进行区块选择及GC控制指令的发送。
当接收该GC控制指令时,闪速存储装置3的控制器4执行数据复制动作,该数据复制动作包含决定应写入GC源区块内的有效数据的GC目的地区块内的位置(复制目的地位置)的动作,及将GC源区块内的有效数据复制到GC目的地区块内的复制目的地位置的动作(步骤S51)。在步骤S51中,控制器4不仅将GC源区块(复制源区块)内的有效数据,而且将该有效数据及与该有效数据对应的逻辑地址的两者从GC源区块(复制源区块)复制到GC目的地区块(复制目的地区块)。由此,能够在GC目的地区块(复制目的地区块)内保存数据与逻辑地址的对。
另外,在步骤S51中,直至GC源区块内的所有有效数据的复制完成为止重复执行数据复制动作。在多个GC源区块由GC控制指令指定的情况下,直至所有GC源区块内的所有有效数据的复制完成为止重复执行数据复制动作。
然后,控制器4针对已经复制的每个有效数据,将该有效数据的逻辑地址(LBA)、及表示该有效数据的复制目的地位置的目的地物理地址等使用GC用回调指令通知给主机2(步骤S52)。与某有效数据对应的目的地物理地址由复制有该有效数据的复制目的地区块(GC目的地区块)的区块编号、与表示复制有该有效数据的复制目的地区块内的物理存储位置的区块内物理地址(区块内偏移)来表示。
在主机2接收该GC用回调指令时,主机2更新由主机2管理的LUT411,并对与已经复制的各有效数据对应的逻辑地址映射目的地物理地址(区块编号、区块内偏移)(步骤S42)。
图37是表示为了GC而执行的数据复制动作的例。
在图37中,设想将存储在与GC源区块(此处为区块BLK#50)的偏移+4对应的位置的有效数据(LBA=10)复制到与GC目的地区块(此处为区块BLK#100)的偏移+0对应的位置,将存储在与GC源区块(此处为区块BLK#50)的偏移+10对应的位置的有效数据(LBA=20)复制到与GC目的地区块(此处为区块BLK#100)的偏移+1对应的位置的情况。在该情况下,控制器4将{LBA10、BLK#100、偏移(=+0)、LBA20、BLK#100、偏移(=+1)}通知给主机(GC用回调处理)。
图38是表示基于图37的数据复制动作的结果更新的主机2的LUT411的内容。
在该LUT411中,与LBA10对应的区块编号及偏移从BLK#50、偏移(=+4)更新为BLK#100、偏移(=+0)。同样地,与LBA20对应的区块编号及偏移从BLK#50、偏移(=+10)更新为BLK#100、偏移(=+1)。
在LUT411被更新之后,主机2也可以将指定BLK#50及偏移(=+4)的Trim指令发送至闪速存储装置3,使存储在与BLK#50的偏移(=+4)对应的位置的数据无效化。进而,主机2也可以将指定BLK#50及偏移(=+10)的Trim指令发送至闪速存储装置3,使存储在与BLK#50的偏移(=+10)对应的位置的数据无效化。
或者,也可以不从主机2发送Trim指令,作为GC处理的一环而控制器4更新区块管理表格32并使这些数据无效化。
像以上所说明的一样,根据本实施方式,在从主机2接收指定第1逻辑地址与第1区块编号的写入要求的情况下,闪速存储装置3的控制器4决定应写入来自主机2的数据的具有第1区块编号的区块(写入目的地区块)内的位置(写入目的地位置),将来自主机2的数据写入到写入目的地区块的写入目的地位置,将表示第1位置的第1区块内物理地址、或第1逻辑地址、第1区块编号及第1区块内物理地址的组的任一者通知给主机2。
因此,能够实现如下构成:主机2操作区块编号,闪速存储装置3考虑页写入顺序限制/坏页等,决定具有由主机2指定的区块编号的区块内的写入目的地位置(区块内偏移)。通过主机2操作区块编号,能够实现上位阶层(主机2)的应用程序级地址转换表格与现有型SSD的LUT级地址转换表格的合并。另外,闪速存储装置3能够考虑NAND型闪速存储器5的特征/限制对NAND型闪速存储器5进行控制。进而,由于主机2能够辨识区块交界,所以能够考虑区块交界/区块尺寸将用户数据写入到各区块。由此,由于主机2能够进行将相同区块内的数据利用数据更新等而一齐地无效化等的控制,所以能够降低GC执行的频率。其结果,写入应用程序降低,能够实现闪速存储装置3的性能的提高、闪速存储装置3的寿命的最大化。
因此,能够实现主机2与闪速存储装置3之间的适当的作用分担,由此能够谋求包含主机2与闪速存储装置3的***整体的I/O性能的提高。
另外,在从主机2接收指定无用信息收集用的复制源区块编号及复制目的地区块编号的控制指令的情况下,闪速存储装置3的控制器4从多个区块,选择具有复制源区块编号的第2区块与具有复制目的地区块编号的第3区块,决定应写入存储在第2区块的有效数据的第3区块内的复制目的地位置,将有效数据复制到第3区块的复制目的地位置。然后,控制器将有效数据的逻辑地址、复制目的地区块编号、表示第3区块内的复制目的地位置的第2区块内物理地址通知给主机2。由此,能够实现如下构成:在GC中,主机2也仅操作区块编号(复制源区块编号、复制目的地区块编号),闪速存储装置3决定复制目的地区块内的复制目的地位置。
此外,闪速存储装置3也可以作为设置在存储器阵列内的多个闪速存储装置3的一个而加以利用。存储器阵列也可以经由缆线或网络而连接于像服务器计算机一样的信息处理装置。存储器阵列包含对该存储器阵列内的多个闪速存储装置3进行控制的控制器。在将闪速存储装置3应用于存储器阵列的情况下,该存储器阵列的控制器也可以作为闪速存储装置3的主机2而发挥功能。
另外,在本实施方式中,作为非易失性存储器例示了NAND型闪速存储器。然而,本实施方式的功能例如也可以应用于像MRAM(Magnetoresistive Random Access Memory,磁阻随机存取存储器)、PRAM(Phase change Random Access Memory,相变随机存取存储器)、ReRAM(Resistive Random Access Memory,电阻随机存取存储器)、或FeRAM(Ferroelectric Random Access Memory,铁电随机存取存储器)一样的其它各种非易失性存储器。
对本发明的几个实施方式进行了说明,但这些实施方式是作为例而提示,并不意图限定发明的范围。这些新颖的实施方式是能够以其它各种形态实施,能够在不脱离发明的主旨的范围内,进行各种省略、置换、变更。这些实施方式或其变化包含在发明的范围或主旨中,并且包含在权利要求书所记载的发明与其均等的范围中。
[符号的说明]
2 主机
3 闪速存储装置
4 控制器
5 NAND型闪速存储器
21 写入动作控制部
22 读取动作控制部
23 GC动作控制部