存储器系统及其控制方法
[相关申请]
本申请享有以日本专利申请2018-14794号(申请日:2018年1月31日)为基础申请的优先权。本申请通过参照该基础申请而包含基础申请的全部内容。
技术领域
本发明的实施方式涉及一种具备非易失性存储器的存储器系统及其控制方法。
背景技术
近年来,具备非易失性存储器的存储器系统正广泛地普及。作为这种存储器系统之一,已知有基于NAND(Not And,与非)闪存技术的固态驱动器(SSD)。
对于数据中心的服务器也使用SSD作为存储装置。
对于服务器之类的主机计算机系统中所利用的存储装置,要求较高的I/O(Input/Output,输入/输出)性能。
因此,最近,开始提出主机与存储装置之间的新接口。
另外,对于最近的存储装置,有要求能够将不同种类的数据写入到不同的写入目标块的情况。
但是,如果能同时利用的写入目标块的数量增加,则需要保存到写入缓冲区的数据量增加,因此,写入缓冲区所消耗的存储器资源量增加。通常,能用作写入缓冲区的存储器资源量有限,所以要求实现旨在能够削减写入缓冲区所消耗的存储器资源量的技术。
发明内容
本发明的实施方式提供一种能够谋求削减写入缓冲区所消耗的存储器资源量的存储器系统及其控制方法。
根据实施方式,能连接于主机的存储器系统具备:非易失性存储器,包含多个块;以及控制器,电连接于所述非易失性存储器,构成为管理从所述多个块分配的多个写入目标块,且针对每个写入目标块按照从开头页到最终页的顺序写入数据。被写入到一个写入目标块的1页数据能够在对所述一个写入目标块的后续1个以上的页写入了数据之后读出。从所述主机接收的各写入请求包含指定写入数据应写入的写入目标块的块标识符。所述控制器从所述主机接收第1写入请求,该第1写入请求包含指定第1写入数据应写入的第1写入目标块的第1块标识符。所述控制器从暂时保存与各写入请求对应的写入数据的写入缓冲区获取所述第1写入数据。所述控制器将所述第1写入数据写入到所述第1写入目标块内的写入目标页。所述控制器将已写入有所述第1写入数据的所述写入目标页的页地址通知给所述主机。所述控制器使接下来数据应写入的所述第1写入目标块内的页地址增加1页。所述控制器将所述写入缓冲区内的区域释放,该写入缓冲区内的区域存储着能够通过对所述写入目标页写入所述第1写入数据而从所述第1写入目标块读出的先于所述写入目标页的所述第1写入目标块内的页的数据。
附图说明
图1是表示主机与实施方式的存储器系统(闪速存储设备)的关系的框图。
图2是表示本实施方式的存储器系统的构成例的框图。
图3是表示本实施方式的存储器系统中所使用的多个通道与多个NAND型闪速存储器芯片的关系的框图。
图4是表示本实施方式的存储器系统中所使用的某超级块的构成例的图。
图5是表示由本实施方式的存储器系统管理的激活块池、自由块池与多个写入目标块的关系的框图。
图6是用来说明主机指定写入目标块且本实施方式的存储器系统决定写入目标页的数据写入动作、及主机指定块地址及页地址的数据读出动作的图。
图7是用来说明本实施方式的存储器系统中所应用的块分配指令(块分配请求)的图。
图8是用来说明对块分配指令的应答的图。
图9是用来说明本实施方式的存储器系统中所应用的写入指令的图。
图10是用来说明对写入指令的应答的图。
图11是用来说明本实施方式的存储器系统中所应用的读取指令的图。
图12是表示由主机及本实施方式的存储器系统执行的写入处理的顺序的序列图。
图13是用来说明将写入缓冲区内的区域释放的动作的图,该写入缓冲区内的区域存储着能够通过对某写入目标块写入数据而从该写入目标块读出的数据。
图14是表示写入缓冲区内的多个区域全部被用来保存写入数据的状态的图。
图15是用来说明将写入缓冲区内的区域释放的动作的图,该写入缓冲区内的区域存储着能够通过对某写入目标块写入虚拟数据而从该写入目标块读出的数据。
图16是用来说明多阶段编程动作的例子的图。
图17是按照时间序列顺序表示图16的模糊到精细(Foggy-Fine)编程动作的时序图。
图18是表示在写入缓冲区不存在未使用区域的情况下,由本实施方式的存储器系统执行的虚拟数据写入动作的顺序的流程图。
图19是表示在检测出未每特定期间地执行特定页数的数据的写入的情况下,由本实施方式的存储器系统执行的虚拟数据写入动作的顺序的流程图。
图20是表示由本实施方式的存储器系统管理的写入顺序管理表的构成例的图。
具体实施方式
以下,参照附图对实施方式进行说明。
首先,参照图1,说明本实施方式的存储器系统与主机的关系。
该存储器系统是以对非易失性存储器写入数据,且从非易失性存储器读出数据的方式构成的半导体存储装置。该存储器系统是以基于NAND闪存技术的闪速存储设备3的形式实现。
主机(主机装置)2是以控制多个闪速存储设备3的方式构成。主机2是通过以将由多个闪速存储设备3构成的闪存阵列用作存储器的方式构成的信息处理装置来实现。该信息处理装置可为个人计算机,也可为服务器计算机。
此外,闪速存储设备3也可被用作设置在存储器阵列内的多个存储装置之一。存储器阵列也可经由缆线或网络而连接于服务器计算机之类的信息处理装置。存储器阵列包含控制该存储器阵列内的多个存储器(例如多个闪速存储设备3)的控制器。在闪速存储设备3被应用于存储器阵列的情况下,该存储器阵列的控制器也可作为闪速存储设备3的主机发挥功能。
以下,例示服务器计算机之类的信息处理装置作为主机2发挥功能的情况进行说明。
主机(服务器)2与多个闪速存储设备3经由接口50而相互连接(内部相互连接)。作为用于该相互连接的接口50,并不限定于此,可使用PCI Express(Peripheral ComponentInterconnect Express,外围组件互连高速)(PCIe)(注册商标)、NVM Express(Non-Volatile Memory Express,非易失性存储器标准)(NVMe)(注册商标)、以太网(Ethernet,注册商标)、NVMe over Fabrics(NVMeOF,非易失性存储器标准织物)等。
作为以主机2的形式发挥功能的服务器计算机的典型例,可列举数据中心内的服务器计算机(以下,称为服务器)。
在主机2通过数据中心内的服务器实现的实例中,该主机(服务器)2也可经由网络51而连接于多个最终用户终端(客户端)61。主机2能够对这些最终用户终端61提供多种服务。
主机(服务器)2所能提供的服务的例子有(1)对各客户端(各最终用户终端61)提供系统运转平台的平台即服务(PaaS,platform as a service);(2)对各客户端(各最终用户终端61)提供虚拟服务器之类的基础设施的基础设施即服务(IaaS,Infrastructure asa Service)等。
多个虚拟机也可在作为该主机(服务器)2发挥功能的物理服务器上执行。在主机(服务器)2上运行的这些虚拟机各自能够作为以向对应于该虚拟机的若干个客户端(最终用户终端61)提供各种服务的方式构成的虚拟服务器发挥功能。
主机(服务器)2包含管理构成闪存阵列的多个闪速存储设备3的存储器管理功能、及对各最终用户终端61提供包含存储器存取的多种服务的前端功能。
闪速存储设备3包含NAND型闪速存储器之类的非易失性存储器。闪速存储设备3管理从非易失性存储器内的多个块分配的多个写入目标块。所谓写入目标块意指应被写入数据的块。从主机2送出到闪速存储设备3的写入请求(写入指令)中包含指定数据应写入的一个写入目标块的块标识符。闪速存储设备3对该写入请求中所包含的具有该块标识符的写入目标块写入来自主机2的数据(写入数据)。因此,主机2能够指定数据应写入的特定写入目标块。例如,主机2可对存储装置3请求将来自某最终用户终端61(客户端)的数据写入到对应于该最终用户终端61的1个以上的特定写入目标块,也可对存储装置3请求将来自其它最终用户终端61(客户端)的数据写入到对应于该最终用户终端61的1个以上的其它特定写入目标块。
从该主机2送出的写入请求中所包含的块标识符也可由指定特定写入目标块的块地址(块编号)表示。或者,在闪速存储设备3包含多个NAND型闪速存储器芯片的实例中,该块标识符也可由块地址(块编号)与芯片编号的组合表示。
由闪速存储设备3管理的多个写入目标块能够被共有该闪速存储设备3的多个最终用户(客户端)分别使用。在该情况下,在闪速存储设备3中,开放与共有闪速存储设备3的最终用户的数量相同数量或超出其上的数量的写入目标块。
但是,如果能同时利用的写入目标块的数量增加,则需要保存到写入缓冲区的数据量增加,因此,写入缓冲区所消耗的存储器资源量增加。
因此,在本实施方式中,闪速存储设备3执行用来削减写入缓冲区所消耗的存储器资源量的动作。在本实施方式中,可将主机2的存储器上的特定存储区域用作写入缓冲区,或者也可将闪速存储设备3内的随机存取存储器上的特定存储区域用作写入缓冲区。
图2表示闪速存储器装置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是数据写入动作及数据读入动作的单位。
控制器4是经由触发器(Toggle)、开放式NAND闪速接口(ONFI,Open NAND FlashInterface)之类的NAND接口13而电连接于作为非易失性存储器的NAND型闪速存储器5。控制器4作为以控制NAND型闪速存储器5的方式构成的存储器控制器动作。该控制器4也可通过芯片上系统(SoC,System-on-a-chip)之类的电路实现。
如图3所示,NAND型闪速存储器5也可包含多个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也可以存储体#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)。
写入目标块可为一个物理块,也可为一个超级块。此外,也可利用一个超级块仅包含一个物理块的构成,在该情况下,一个超级块与一个物理块等效。
接下来,对图2的控制器4的构成进行说明。
控制器4包含主机接口11、CPU(Central Processing Unit,中央处理器)12、NAND接口13及DRAM接口14等。这些CPU12、NAND接口13及DRAM接口14是经由总线10而相互连接。
该主机接口11是以执行与主机2的通信方式构成的主机接口电路。该主机接口11例如可为PCIe控制器(NVMe控制器)。或者,在闪速存储设备3经由Ethernet(注册商标)连接于主机2的构成中,主机接口11也可为NVMe over Fabrics(NVMeOF)控制器。闪速存储设备3经由Ethernet(注册商标)而连接于主机2的构成能够视需要容易地使闪速存储设备3的数量增加。进而,也能够容易地使主机2的数量增加。
主机接口11从主机2接收多种请求(指令)。这些请求(指令)中包含写入请求(写入指令)、读取请求(读取指令)及其它多种请求(指令)。
CPU12是以控制主机接口11、NAND接口13及DRAM接口14的方式构成的处理器。CPU12响应于闪速存储设备3的电源接通,从NAND型闪速存储器5或未图示的ROM(Read OnlyMemory,只读存储器)将控制编程(固件)加载到DRAM6,然后执行该固件,由此进行多种处理。此外,固件也可加载到控制器4内的未图示的SRAM(Static Random-Access Memory,静态随机存取存储器)上。该CPU12能够执行用于处理来自主机2的多种指令的指令处理等。CPU12的动作是由CPU12所执行的所述固件加以控制。此外,指令处理的一部分或全部也可利用控制器4内的专用硬件执行。
CPU12能够作为写入动作控制部21及读取动作控制部22发挥功能。
写入动作控制部21对从NAND型闪速存储器5的多个块分配的多个写入目标块进行管理,且针对每个写入目标块按照从开头页到最终页的顺序写入数据。
在多个NAND型闪速存储器中,被写入到一个写入目标块的1页数据无法在其刚写入后就从写入目标块读出,而能够在对该写入目标块的后续1个以上的页写入了数据之后读出。
例如,在通过包含第1阶段及第2阶段的多阶段编程动作来执行对写入目标块的各页写入数据的实例中,通过第1阶段的编程动作而写入到写入目标块内的某页(第1页)的数据能够在通过第1阶段的编程动作将数据写入到后续1个以上的页之后读出。这是因为,在通过第1阶段的编程动作对后续1个以上的页写入数据之前,无法执行针对第1页的第2阶段的编程动作。因此,即使通过第1阶段的编程动作对写入目标块的第1页写入数据,该数据也无法在其刚写入之后就从写入目标块读出,而能够在通过第1阶段的编程动作对后续1个以上的页写入了数据之后读出。
作为这种多阶段编程动作的例子,可列举模糊到精细编程动作。在模糊到精细编程动作中,对连接于相同字线的存储单元群的数据写入是通过粗略地设定各存储单元的阈值分布的模糊编程动作、及调整各存储单元的阈值分布的精细编程动作来执行。为了减少相邻的字线间的编程干扰,对连接于某字线的存储单元群的精细编程动作是在执行了对连接于相邻的字线的存储单元群的模糊编程动作之后执行。
因此,在通过模糊到精细编程动作写入数据的实例中,即使对连接于写入目标块内的最初的字线(WL0)的存储单元群执行模糊编程动作,也无法在对连接于该写入目标块内的下一字线(WL1)的存储单元群的模糊编程动作结束之前,对连接于最初的字线(WL0)的存储单元群执行精细编程动作。因此,至少在对连接于下一字线(WL1)的存储单元群的模糊编程动作结束之前,无法读出被写入到连接于最初的字线(WL0)的存储单元群的页数据。
写入动作控制部21从主机2接收写入请求,该写入请求包含指定写入数据应写入的写入目标块的块标识符。在写入动作控制部21从主机2接收到该写入请求时,写入动作控制部21从写入缓冲区(WB)获得与该写入请求对应的写入数据。该写入缓冲区(WB)是暂时保存与各写入请求对应的写入数据的缓冲区。与某写入请求对应的写入数据被保存在写入缓冲区(WB),直到该写入数据能够从NAND型闪速存储器5读出为止。该写入缓冲区(WB)既可通过设置在主机2的存储器上的写入缓冲区(WB)45实现,也可通过DRAM6上的写入缓冲区(WB)31实现。
写入动作控制部21将所获取的写入数据写入到具有由所接收到的写入请求指定的块标识符的写入目标块内的页(写入目标页)。写入请求包含块标识符(块地址),但不包含页地址。写入目标页是由写入动作控制部21自动地决定。
写入动作控制部21将被写入了写入数据的页的页地址通知给主机2。
另外,写入动作控制部21使接下来数据应写入的该写入目标块内的页地址增加1页。然后,写入动作控制部21将写入缓冲区内的区域释放,该写入缓冲区内的区域存储着能够通过对写入目标页写入写入数据而从写入目标块读出的先于该写入目标页的该写入目标块内的页的数据。此处,所谓先于写入目标页的页意指关于写入目标块的页写入顺序,在该写入目标页之前被写入数据的页。例如,在通过对写入目标块的第n页写入数据,能够读出先于第n页的该写入目标块内的例如第1页的情况下,存储着该第1页的数据的写入缓冲区内的区域被释放。同样地,在通过对写入目标块的第n+1页写入数据,能够读出该写入目标块内的例如第2页的情况下,存储着该第2页数据的写入缓冲区内的区域被释放。
在通过包含第1阶段及第2阶段的多阶段编程动作来执行对各页写入数据的实例中,能够通过对写入目标块的写入目标页写入数据而从写入目标块读出的页是能够通过对写入目标页执行第1阶段的编程动作而执行第2阶段的编程动作的页。例如,在能够通过对写入目标块的第n页执行第1阶段的编程动作(例如模糊编程动作)而对写入目标块的第1页执行第2阶段的编程动作(例如精细编程动作)的情况下,能够通过对写入目标页写入数据而从写入目标块读出的页为该第1页。
通过像这样进行将写入缓冲区内的区域释放的控制,能够将每一写入目标块所消耗的写入缓冲区的量抑制为所需最小限度,由此能够谋求削减写入缓冲区所消耗的存储器资源量,所述写入缓冲区内的区域存储着能够通过对写入目标块内的某写入目标页写入数据而读出的先于该写入目标页的该写入目标块内的页的数据。
此外,此处假定了将1页写入数据(用户数据)写入到写入目标块的情况,在将2页新写入数据(用户数据)写入到写入目标块的情况下,能够读出以前被写入到该写入目标块的2页数据(用户数据)。因此,在该情况下,能将存储着该可读出的2页数据(用户数据)的写入缓冲区内的区域释放。
同样地,在已将3页新写入数据(用户数据)写入到写入目标块的情况下,能够读出以前被写入到该写入目标块的3页数据(用户数据)。因此,在该情况下,能将存储着该可读出的3页数据(用户数据)的写入缓冲区内的区域释放。
进而,写入动作控制部21为了使写入缓冲区内的可利用区域增加,也视需要执行对写入目标块写入1页以上的虚拟数据的动作。
例如,当在写入缓冲区中不存在未使用区域的情况下,写入动作控制部21也可对某写入目标块内的1个以上的页写入虚拟数据。由此,能够读出以前被写入到该写入目标块的1页以上的数据(用户数据),且能够将存储着该可读出的1页以上的数据(用户数据)的写入缓冲区内的区域释放。由此,能够将该写入缓冲区内的区域利用到下一写入数据(用户数据)的存储。此外,无需从主机2发布对虚拟数据的读取请求,所以该虚拟数据无需存储到写入缓冲区。因此,即使将虚拟数据写入到写入目标块,写入缓冲区也不会被该虚拟数据消耗。
另外,写入动作控制部21在检测出未对多个写入目标块的任一个写入目标块每特定期间地执行特定页数的数据(用户数据或虚拟数据)写入的情况下,也可对该写入目标块内的1个以上的页写入虚拟数据。在该情况下,例如,写入动作控制部21也可判定对某写入目标块最后写入数据(用户数据或虚拟数据)之后的经过时间是否为阈值以上,在经过时间为阈值以上的情况下,也可对该写入目标块内的1个以上的页写入虚拟数据。结果,能够读出以前被写入到该写入目标块的1页数据(用户数据),且能够将存储着该可读出的1页以上的数据(用户数据)的写入缓冲区内的区域释放。同样地,关于其它各写入目标块,写入动作控制部21也可判定从对该写入目标块最后写入数据(用户数据或虚拟数据)的经过时间是否为阈值以上,在经过时间为阈值以上的情况下,也可对该写入目标块内的1个以上的页写入虚拟数据。
读取动作控制部22从主机2接收读取请求(读取指令),该读取请求(读取指令)指定表示存储着应读取的数据的NAND型闪速存储器5内的物理存储位置的物理地址(块地址、页地址)。然后,读取动作控制部22基于这些块地址及页地址,从读取对象的块内的读取对象的物理存储位置读取数据。读取对象的块是由块地址特定出。该块内的读取对象的物理存储位置是由页地址特定出。此外,读取指令除包含块地址及页地址以外,也可包含页内偏移。
NAND接口13是构成为在CPU12的控制下,控制NAND型闪速存储器5的存储器控制电路。
DRAM接口14是构成为在CPU12的控制下,控制DRAM6的DRAM控制电路。DRAM6的存储区域的一部分也可被用来存储读取缓冲区(RB)30、写入缓冲区(WB)31、块管理表32及不良信息管理表33。此外,这些读取缓冲区(RB)30、写入缓冲区(WB)31、块管理表32、不良信息管理表33也可被存储在控制器4内的未图示的SRAM。块管理表32包含与NAND型闪速存储器5内的多个块分别对应的多个管理表。各管理表包含多个有效/无效管理信息,该多个有效/无效管理信息分别与对应于该管理表的块中所包含的多个数据对应。各有效/无效管理信息表示与该有效/无效管理信息对应的数据为有效数据或无效数据中的哪一个。不良信息管理表33管理不良块列表。
如上所述,主机2也可为以执行多种编程的方式构成的信息处理装置(例如计算机系统)。由计算机系统执行的编程中包含应用软件层41、操作系统42、文件系统43及设备驱动程序43等。
如一般所知,操作系统42是以如下方式构成的软件:管理主机2整体,控制主机2内的硬件,且执行用来使应用可使用硬件及闪速存储设备3的控制。
文件系统43用于进行为实施文件操作(创建、保存、更新、删除等)的控制。
多种应用软件线程在应用软件层41上运行。作为应用软件线程的例子,有客户端软件、数据库软件、虚拟机等。
设备驱动程序44是在文件系统43的控制下,控制闪速存储设备3。
文件系统43或设备驱动程序44也可包含用来管理作为地址转换表发挥功能的查找表(LUT)45的闪速转换层(FTL)2A。在图2中,例示了设备驱动程序44包含闪速转换层(FTL)2A的实例。
查找表(LUT)45管理用来识别各个数据的各标签与表示闪速存储设备3(也就是NAND型闪速存储器5)内的各物理存储位置的各物理地址之间的映射。标签可利用逻辑块地址(LBA)之类的逻辑地址表示,也可利用键值存储的键表示,还可利用文件名与文件偏移的组表示。
主机2的存储器上的特定存储区域也可被用作写入缓冲区(WB)45(UWB:UnifiedWrite Buffer,统一写入缓冲区)。在主机2希望对多个写入目标块内的任意写入目标块写入数据时,主机2将应写入到该写入目标块的数据(写入数据)存储在写入缓冲区(WB)45。然后,主机2将包含指定该写入目标块的块标识符(块地址)的写入请求送出到存储装置3。此外,该写入请求也可还包含表示存储着该写入数据的写入缓冲区(WB)45内的区域(存储区域)的存储位置信息。
闪速存储设备3在将该写入数据写入到NAND型闪速存储器5时,能够通过将包含所述存储位置信息的传送请求送出到主机2而从写入缓冲区(WB)46获取所述写入数据。
图5表示由闪速存储设备3管理的激活块池、自由块池及多个写入目标块的关系。
NAND型闪速存储器5内的各块的状态被大致分为存储着有效数据的激活块、及未存储有效数据的自由块。作为激活块的各块由被称为激活块池51的列表管理。另一方面,作为自由块的各块由被称为自由块池52的列表管理。
所谓有效数据是指与某标签建立关联的数据(与该标签建立关联的最新数据)。所谓无效数据是指未与任何标签建立关联的数据。
在闪速存储设备3的控制器4从主机2接收到块分配请求时,控制器4从自由块池52内的多个自由块选择1个自由块,且将所选择出的自由块分配为能够写入从主机2接收到的写入数据的写入目标块。每当从主机2接收到块分配请求时,控制器4便执行从自由块池52内的多个自由块选择1个自由块的动作、及将所选择出的自由块分配为写入目标块的动作。由此,在闪速存储设备3中,同时存在多个可利用的写入目标块。在图5中,假定了块BLK11、BLK12、BLK13、…被分配为写入目标块的情况。
在分配写入目标块的处理中,控制器4首先对从自由块池52内的多个自由块选择出的一个块(自由块)执行删除动作,由此使该块为可写入的删除状态。经分配的各写入目标块的块标识符(块地址)从控制器4被通知给主机2。主机2选择当前所分配的多个写入目标块BLK11、BLK12、BLK13、…的一个,并将包含指定所选择的写入目标块的块标识符(块地址)的写入请求送出到闪速存储设备3,由此,能够对写入目标块BLK11、BLK12、BLK13、…内的任意写入目标块写入数据。
如果某写入目标块整体被来自主机2的写入数据(用户数据)填满,则控制器4使该写入目标块移动到激活块池51。
当激活块池51内的某块内的全部有效数据因数据更新、映射释放、垃圾回收等而无效化时,控制器4使该块移动到自由块池52。
图6是用来说明主机2指定写入目标块且闪速存储设备3决定写入目标页的数据写入动作、及主机2指定块地址及页地址的数据读出动作的图。
主机2包含以将块分配请求及写入请求送出到闪速存储设备3的方式构成的写入处理部412。该写入处理部412也可包含在图2中所说明的FTL2A内。
闪速存储设备3的控制器4包含块分配部701及页分配部702。块分配部701及页分配部702也可包含在图2中所说明的写入动作控制部21内。
数据写入动作是按照以下顺序执行。
(1)当主机2的写入处理部412需要对闪速存储设备3写入数据(写入数据)时,写入处理部412也可对闪速存储设备3请求分配自由块。闪速存储设备3的控制器4包含管理NAND型闪速存储器5的自由块群的块分配部701。在块分配部701从写入处理部412接收到该请求(块分配请求)时,块分配部701将自由块群的一个自由块分配给主机2,且将所分配的块的块地址(BLK#)通知给主机2。
(2)写入处理部412将包含识别写入数据的标签(例如LBA之类的逻辑地址)及指定写入目标块的块地址(BLK#)的写入请求发送至闪速存储设备3。
(3)闪速存储设备3的控制器4包含分配数据写入用页的页分配部702。在页分配部702接收到写入请求时,页分配部702决定表示具有由写入请求指定的块地址的块(写入目标块)内的写入目标页的页地址。控制器4对写入目标块内的该决定出的写入目标页写入来自主机2的写入数据。
(4)控制器4将表示该写入目标页的页地址作为对写入请求的应答而通知给主机2。或者,控制器4也可将写入请求中所包含的标签、写入请求中所包含的块地址与决定出的页地址的组,作为对写入请求的应答而通知给主机2。在主机2中,以将表示被写入了写入数据的物理存储位置的物理地址(块地址、页地址)映射到该写入数据的标签的方式更新LUT2B。
数据读取动作是按照以下顺序执行。
(1)'当主机2需要从闪速存储设备3读取数据时,主机2通过参照LUT2B,而从LUT411获取与应读取的数据的标签对应的物理地址(块地址、页地址)。
(2)'主机2将所获取的指定块地址及页地址的读取请求送出到闪速存储设备3。在闪速存储设备3的控制器4从主机2接收到该读取请求时,控制器4基于块地址及页地址,从读取对象的块内的读取对象的物理存储位置读取数据。
图7表示闪速存储设备3中所应用的块分配指令。
块分配指令是对闪速存储设备3请求分配写入目标块(自由块)的指令(块分配请求)。主机2通过将块分配指令发送给闪速存储设备3,而对闪速存储设备3请求分配写入目标块,由此能够获取块地址(经分配的写入目标块的块地址)。
图8表示对块分配指令的应答。
在从主机2接收到块分配指令时,闪速存储设备3从自由块列表选择应分配给主机2的自由块,且将所选择的自由块分配为写入目标块,然后将包含该写入目标块的块地址的应答返回到主机2。
图9表示闪速存储设备3中所应用的写入指令。
写入指令是对闪速存储设备3请求写入数据的指令。该写入指令也可包含指令ID(Identifier,标识符)、块地址、标签及长度等。
指令ID是表示该指令为写入指令的ID(指令码),写入指令中包含写入指令用指令ID。
块地址是指定数据应写入的写入目标块的物理地址。
标签是用来识别应被写入的写入数据的标识符。如上所述,该标签可为LBA之类的逻辑地址,也可为键值存储的键。在标签为LBA之类的逻辑地址的情况下,该写入指令中所包含的逻辑地址(起始LBA)表示写入数据应写入的逻辑地址空间内的逻辑位置(最初逻辑位置)。
长度表示应被写入的写入数据的长度。
在从主机2接收到写入指令时,控制器4决定具有由写入指令指定的块地址的写入目标块内的写入目标位置(写入目标页)。该写入目标页是考虑到页写入顺序的制约及坏页等而决定的。然后,控制器4将来自主机2的数据写入到该写入目标块内的该写入目标位置(写入目标页)。
图10表示对图9的写入指令的应答。
该应答包含页地址及长度。页地址是表示已写入有数据的写入目标块内的物理存储位置的物理地址。该物理地址也可利用块内偏移(也就是页地址与页内偏移的组)表示。长度表示已写入的数据的长度。
或者,该应答不仅包含页地址(块内偏移)及长度,还包含标签及块地址。标签是图9的写入指令中所包含的标签。块地址是图9的写入指令中所包含的块地址。
图11表示闪速存储设备3中所应用的读取指令。
读取指令是对闪速存储设备3请求读出数据的指令。该读取指令包含指令ID、标签、块地址、页地址及长度。
指令ID是表示该指令为读取指令的ID(指令码),读取指令中包含读取指令用指令ID。
块地址指定存储着应读取的数据的块。页地址指定存储着应读取的数据的页。该页地址也可由表示存储着应读取的数据的块内的物理存储位置的块内偏移(也就是页地址与页内偏移的组)表示。长度表示应读取的数据的长度。
图12表示由主机2及闪速存储设备3执行的写入处理的序列。
主机2首先通过将块分配指令发送给闪速存储设备3而对闪速存储设备3请求分配写入目标块。在对已分配的写入目标块写入数据的情况下,主机2也可不将块分配指令发送给闪速存储设备3。
然后,主机2将包含识别写入数据的标签、指定写入数据应写入的写入目标块的块地址、及写入数据的长度的写入指令发送给闪速存储设备3(步骤S20)。
当闪速存储设备3的控制器4接收到该写入指令时,控制器4决定具有由该写入指令指定的块地址的写入目标块内的写入目标页,且从写入缓冲区(WB)获取写入数据,对该写入目标块内的该决定出的写入目标页写入写入数据(步骤S11)。在写入缓冲区(WB)通过设置在主机2的存储器上的写入缓冲区(WB)45而实现的情况下,写入指令也可包含表示存储着写入数据的写入缓冲区内的位置(区域)的存储位置信息。控制器4通过将包含该存储位置信息的传送请求送出到主机2,能够从设置在主机2的存储器上的写入缓冲区(WB)45获取写入数据。
控制器4将对该写入指令的应答返回到主机2(步骤S12)。该应答至少包含已写入有该数据的页地址(例如页地址与页内偏移的组)。
在主机2接收到该应答时,主机2通过将由主机2管理的LUT2B更新,而将表示已写入有写入数据的物理存储位置的物理地址(块地址、页地址、页内偏移的组)映射到写入数据的标签(步骤S21)。
进而,控制器4将写入缓冲区(WB)内的区域释放,该写入缓冲区(WB)内的区域特定出能够通过对写入目标块内的写入目标页写入写入数据而从该写入目标块读出的先于该写入目标页的该写入目标块内的页,且存储着该被特定出的页的数据(步骤S13)。在通过包含第1阶段及第2阶段的多阶段编程动作来执行对写入目标块的各页写入数据的实例中,该可读出的页是能够通过对该写入目标页执行第1阶段的编程动作而执行第2阶段的编程动作的页。
将写入缓冲区(WB)内的该区域释放的处理例如既可在应写入到该被特定出的页的数据从写入缓冲区(WB)被传送到NAND型闪速存储器5的页缓冲区的时刻执行,也可在对该被特定出的页执行第2阶段的编程动作(例如精细编程动作)之后执行。
在写入缓冲区(WB)是通过设置在主机2的存储器上的写入缓冲区(WB)45而实现的情况下,在步骤S13中,控制器4对主机2送出用来将存储着可读出的页的数据的写入缓冲区(WB)45内的该区域释放的请求。
图13表示将写入缓冲区内的区域释放的动作,该写入缓冲区内的区域存储着能够通过对某写入目标块写入数据而从该写入目标块读出的数据。
在写入缓冲区(WB)31(或45)中,存储着与各写入请求对应的写入数据。写入缓冲区(WB)31(或45)包含用来存储多页数据的多个区域。在图13中,为了简化图示,例示了写入缓冲区(WB)31(或45)包含区域101~109的情况。这些区域101~109各自具有1页的尺寸。
在写入缓冲区(WB)的区域101~109中所存储的写入数据D1、D2、D3为应写入到写入目标块BLK11的写入数据的情况下,这些写入数据D1、D2、D3例如分别被写入到写入目标块BLK11的页P0、页P1、页P2。
在写入缓冲区(WB)的区域107、108、104、105中所存储的写入数据D11、D12、D13、D14为包含应写入到写入目标块BLK12的写入数据的情况下,这些写入数据D11、D12、D13、D14例如分别被写入到写入目标块BLK12的页P0、页P1、页P2、页P3。
在各写入目标块中,即使对开头页P0写入了数据,也无法从该页P0直接读出数据,而能够在对后续的若干个页执行数据写入之后,从该页P0读出数据。同样地,即使对页P1写入了数据,也无法从该页P1直接读出数据,而能够在对后续的若干个页执行数据写入之后,从该页P1读出数据。
此处,作为例子,假定在对后续于页P0的页P1~P3写入数据之后,能够从先于这些页P1~P3的页P0读出数据的实例。
在该情况下,在控制器4将写入数据D14写入到写入目标块BLK12的页P3之后,控制器4将写入缓冲区(WB)内的区域107释放,该区域107存储着能够通过写入数据D14的写入而读出的先于页P3的写入目标块BLK12内的页P0的写入数据D11。由此,被释放的区域107能够用于存储新写入数据。
图14表示写入缓冲区(WB)内的多个区域全部被用来保存写入数据的状态。
在图14中,写入缓冲区(WB)的区域101~109是用来存储被写入到写入目标块BLK11的写入数据D1、D2、D3、被写入到写入目标块BLK12的写入数据D12、D13、D14、及被写入到写入目标块BLK13的写入数据D21、D22、D23。
像这样,在写入缓冲区(WB)不存在未使用区域的状态下,主机2无法将新写入数据存储到写入缓冲区(WB)。
在该情况下,如图15所示,控制器4例如对写入目标块BLK12的1个以上的页写入虚拟数据。
通过对写入目标块BLK12的页P4写入虚拟数据,能够读出先于页P4的写入目标块BLK12内的某页的数据。此处,假定能够从写入目标块BLK12读出写入目标块BLK12的页P1的写入数据D12的情况。在该情况下,控制器4将存储着写入数据D12的写入缓冲区(WB)内的区域108释放。
同样地,通过对写入目标块BLK12的页P5写入虚拟数据,能够读出先于页P4的写入目标块BLK12内的某页的数据。此处,假定能够从写入目标块BLK12读出写入目标块BLK12的页P2的写入数据D13的情况。在该情况下,控制器4将存储着写入数据D13的写入缓冲区(WB)内的区域104释放。
主机2能够将新写入数据存储到写入缓冲区(WB)内的区域108或区域104。
接下来,参照图16,说明通过包含第1阶段及第2阶段的多阶段编程动作对写入目标块的各页写入数据的动作的例子。
在图16中,假定了NAND型闪速存储器5为对每一存储单元写入3比特的数据的三层单元(TLC)-闪速存储器的情况。另外,在图16中,假定一边沿着相邻的2条字线往返移动,一边执行多阶段编程动作(此处为模糊到精细编程动作)的情况。
(1)控制器4对字线WL0的页P0、P1、P2执行第1阶段的编程动作(模糊编程动作(也称为模糊写入动作)。即使对页P0、P1、P2的第1阶段的编程动作(模糊编程动作)结束,也无法在对字线WL1的页P3、P4、P5执行第1阶段的编程动作(模糊编程动作)之前,对页P0、P1、P2执行第2阶段的编程动作(精细编程动作(也称为精细写入动作))。因此,在对页P0、P1、P2的第1阶段的编程动作(模糊编程动作)已结束的阶段,无法读出页P0、P1、P2的数据。
(2)(3)当对页P0、P1、P2的第1阶段的编程动作(模糊编程动作)结束时,控制器4对字线WL1的页P3、P4、P5执行第1阶段的编程动作(模糊编程动作)。当对字线WL1的页P3、P4、P5的第1阶段的编程动作(模糊编程动作)结束时,能够对页P0、P1、P2执行第2阶段的编程动作(精细编程动作),由此能够读出页P0、P1、P2的数据。
(4)(5)当对页P0、P1、P2的第2阶段的编程动作(精细编程动作)结束时,控制器4对字线WL2的页P6、P7、P8执行第1阶段的编程动作(模糊编程动作)。当对字线WL2的页P6、P7、P8的第1阶段的编程动作(模糊编程动作)结束时,能够对页P3、P4、P5执行第2阶段的编程动作(精细编程动作),由此能够读出页P3、P4、P5的数据。
图17的时序图是按照时间序列顺序表示图16的编程动作。
控制器4首先对页P0、P1、P2执行第1阶段的编程动作(模糊编程动作),然后对后续的页P3、P4、P5执行第1阶段的编程动作(模糊编程动作)。通过对后续的页P3、P4、P5的第1阶段的编程动作(模糊编程动作),能够对先行的页P0、P1、P2执行第2阶段的编程动作(精细编程动作),所以通过对页P3、P4、P5的第1阶段的编程动作(模糊编程动作),能够读出先行的页P0、P1、P2的数据。然后,例如当对页P5执行模糊编程动作时,控制器4使接下来数据应写入的页地址增加1页并设为页P6。
然后,控制器4在对先行的页P0、P1、P2执行第2阶段的编程动作(精细编程动作)之后,对后续的页P6、P7、P8执行第1阶段的编程动作(模糊编程动作)。
因为能够通过对后续的页P6、P7、P8的第1阶段的编程动作(模糊编程动作)来对先行的页P3、P4、P5执行第2阶段的编程动作(精细编程动作),所以通过对页P6、P7、P8的第1阶段的编程动作(模糊编程动作),能够读出先行的页P3、P4、P5的数据。
也就是说,在控制器4从主机2接收到包含块地址的写入请求的情况下,控制器4从写入缓冲区获取与该写入请求对应的写入数据,通过第1阶段的编程动作(模糊编程动作)而将该写入数据写入到具有写入请求内所包含的块地址的写入目标块内的写入目标页。然后,控制器4通过将应答返回到主机2,而将已写入有该写入数据的写入目标页的页地址通知给主机2。然后,控制器4使接下来数据应写入的该写入目标块内的页地址增加1页。然后,控制器4将写入缓冲区内的区域释放,该写入缓冲区内的区域存储着能够通过执行第2阶段的编程动作(精细编程动作)而读出的先于写入目标页的该写入目标块内的页的数据,该第2阶段的编程动作(精细编程动作)能够通过对写入目标页的第1阶段的编程动作(模糊编程动作)来执行。
图18的流程图表示在写入缓冲区(WB)中不存在未使用区域的情况下由闪速存储设备3执行的虚拟数据写入动作的顺序。
闪速存储设备3的控制器4判定在写入缓冲区(WB)中是否存在未使用区域(空闲区域)(步骤S101)。如果写入缓冲区(WB)的多个区域全部被向当前开放的多个写入目标块的写入数据填满、也就是在写入缓冲区(WB)中不存在未使用区域(空闲区域)(步骤S101为否(NO)),则控制器4从多个写入目标块中选择出应写入虚拟数据的写入目标块(步骤S102)。例如,控制器4也可从多个写入目标块中选择出保存着最旧的数据(最长时间未更新的数据)的写入目标块作为应写入虚拟数据的写入目标块。
控制器4对所选择的写入目标块内的1个以上的页写入虚拟数据(步骤S103),使接下来数据应写入的该写入目标块内的页地址增加1个以上的页的数量(也就是已写入的虚拟数据的页数)(步骤S104)。在步骤S104中,在已写入1页虚拟数据的情况下,页地址增加1页,在已写入2页虚拟数据的情况下,页地址增加3页。
控制器4将写入缓冲区(WB)内的1个以上的区域释放,该写入缓冲区(WB)内的1个以上的区域存储着能够通过1个以上的页的虚拟数据的写入而从该写入目标块读出的先于已写入有该虚拟数据的1个以上的页的1个以上的页的数据(步骤S104)。
在通过多阶段编程动作来执行对各页的数据写入的实例中,在写入缓冲区中不存在未使用区域的情况下,控制器4通过第1阶段的编程动作(模糊编程动作)而对多个写入目标块的1个写入目标块内的1个以上的页写入虚拟数据,使接下来数据应写入的该写入目标块内的页地址增加已写入有虚拟数据的1个以上的页的数量。然后,控制器4将写入缓冲区内的1个以上的区域释放,该写入缓冲区内的1个以上的区域存储着能够通过执行第2阶段的编程动作(精细编程动作)而读出的先于该1个以上的页的该写入目标块内的1个以上的页的数据,该第2阶段的编程动作(精细编程动作)能够通过虚拟数据的第1阶段的编程动作来执行。
此外,在可读出除虚拟数据以外的该写入目标块内的全部数据的情况下,控制器4停止对该写入目标块写入虚拟数据。例如,在图15中,在对写入目标块BLK12的多个页写入虚拟数据,由此能够读出除虚拟数据以外的该写入目标块BLK12内的全部数据(用户数据)D11、D12、D13、D14的情况下,控制器4停止进一步对该写入目标块写入虚拟数据。
图19的流程图表示在检测出未每特定期间地执行特定页数的数据写入的情况下,由闪速存储设备3执行的虚拟数据写入动作的顺序。
闪速存储设备3的控制器4选择当前开放的多个写入目标块中的一个(步骤S201)。控制器4判定是否从对该所选择的块最后写入数据(用户数据或虚拟数据)之后经过了阈值时间(步骤S202)。
如果未从最后写入数据(用户数据或虚拟数据)之后经过阈值时间(步骤S202为否),则控制器4判定对所有写入目标块的步骤S202的检查处理是否结束(步骤S206),如果未结束(步骤S206为否),则进入到步骤S201,在步骤S201中选择下一写入目标块。
如果从最后写入数据(用户数据或虚拟数据)之后经过了阈值时间(步骤S202为是(YES)),则控制器4判定该所选择的块是每特定期间地执行特定页数的数据的写入的块,为了使该所选择的块整体在特定的限制时间内被数据填满而对该所选择的写入目标块内的1个以上的页写入虚拟数据(步骤S203)。然后,控制器4使接下来数据应写入的该写入目标块内的页地址增加1个以上的页的数量(也就是已写入的虚拟数据的页数)(步骤S204)。在步骤S204中,例如,在将1页虚拟数据写入到该所选择的块的情况下,页地址增加1页,在将2页虚拟数据写入到该所选择的块的情况下,页地址增加2页,在将3页虚拟数据写入到该所选择的块的情况下,页地址增加3页。然后,控制器4将写入缓冲区内的1个以上的区域释放,该写入缓冲区内的1个以上的区域存储着能够通过写入虚拟数据而从该所选择的写入目标块读出的先于已写入有虚拟数据的1个以上的页的该所选择的写入目标块内的1个以上的页的数据(步骤S205)。然后,控制器4判定对所有写入目标块的步骤S202的检查处理是否已结束(步骤S206),如果未结束(步骤S206为否),则进入到步骤S201,在步骤S201中选择下一写入目标块。
在通过多阶段编程动作来执行对各页的数据写入的实例中,在从对某写入目标块最后写入数据之后经过了阈值时间的情况下,控制器4通过第1阶段的编程动作(模糊编程动作)而对该写入目标块内的1个以上的页写入虚拟数据,使接下来数据应写入的该写入目标块内的页地址增加已写入有虚拟数据的1个以上的页的数量。然后,控制器4将写入缓冲区内的1个以上的区域释放,该写入缓冲区内的1个以上的区域存储着能够通过执行第2阶段的编程动作(精细编程动作)而读出的先于该1个以上的页的该写入目标块内的1个以上的页的数据,该第2阶段的编程动作(精细编程动作)能够通过虚拟数据的第1阶段的编程动作来执行。
此外,在可读出除虚拟数据以外的该写入目标块内的全部数据的情况下,控制器4也可停止对该写入目标块写入虚拟数据。例如,在图15中,在对写入目标块BLK12的多个页写入虚拟数据,由此能够读出除虚拟数据以外的该写入目标块BLK12内的全部数据(用户数据)D11、D12、D13、D14的情况下,控制器4也可停止进一步对该写入目标块写入虚拟数据。
图20表示由闪速存储设备3管理的写入顺序管理表的构成例。
控制器4对与多个写入目标块对应的多个写入顺序管理表进行管理。各写入顺序管理表保存与对应于该写入顺序管理表的写入目标块内的多个页对应的多个写入完成标志。
多个写入完成标志分别表示是否对与该标志对应的页写入了数据。与已写入有数据的页对应的写入完成标志被设定为表示已写入数据的值(例如“1”)。与未被写入数据的页对应的写入完成标志被设定为表示未被写入数据的值(例如“0”)。
在已对某写入目标块的页P0、P1、P2写入数据的情况下,如图20所示,控制器4将与该写入目标块对应的写入顺序管理表予以更新,将与页P0对应的写入完成标志、与页P1对应的写入完成标志、及与页P2对应的写入完成标志分别设定为表示已写入数据的值(例如“1”)。
在控制器4已对该写入目标块的页P3、P4、P5写入虚拟数据的情况下,控制器4将与该写入目标块对应的写入顺序管理表予以更新,将与页P3对应的写入完成标志、与页P4对应的写入完成标志、及与页P5对应的写入完成标志分别设定为表示已写入数据的值(例如“1”)。
虚拟数据无需被主机2读取,所以虚拟数据未被存储在写入缓冲区中。在虚拟数据已被写入到写入目标块的1个以上的页的情况下,与该1个以上的页对应的1个以上的写入完成标志分别被设定为表示已写入数据的值(例如“1”)。因此,即使在控制器4已将虚拟数据写入到任一写入目标块的情况下,控制器4也能够通过参照各写入顺序管理表来正确地管理各写入目标块的页写入顺序。
如以上所作说明那样,根据本实施方式,控制器3对多个写入目标块进行管理,且将数据写入到具有由来自主机2的写入请求所指定的块标识符的写入目标块。像这样,利用主机2能够指定写入目标块的构成,例如能够实现将与不同的最终用户建立关联的数据写入到不同的写入目标块这一控制。另外,控制器4进行将写入缓冲区内的区域释放这一控制,该写入缓冲区内的区域存储着能够通过对某写入目标块内的某写入目标页写入数据而读出的先于该写入目标页的该写入目标块内的页的数据。由此,在存在多个写入目标块的环境中,例如能够进行如下等缓冲区管理:将存储着某写入目标块用的写入数据的写入缓冲区内的区域释放,将该区域用于存储该写入目标块用的新写入数据或其它写入目标块用的新写入数据。由此,能够将每一写入目标块所消耗的写入缓冲区的量抑制为所需最小限度,所以即使在存在多个写入目标块的环境中,也能够谋求削减写入缓冲区所消耗的存储器资源量。
进而,控制器4也执行对写入目标块写入1页以上的虚拟数据的动作。由此,能容易地增加写入缓冲区内的可利用区域。
另外,在本实施方式中,能在主机2的存储器上设置写入缓冲区。因此,控制器4能从主机2的存储器上的写入缓冲区获取写入数据,所以能够不在闪速存储设备3准备大容量的写入缓冲区,而容易地增加能同时利用的写入目标块的数量。由此,能够不导致闪速存储设备3的成本增加,而容易地增加共有闪速存储设备3的最终用户的数量。
此外,本实施方式中所说明的写入缓冲区的释放控制不仅应用于在主机2侧管理各标签与各物理地址之间的映射的构成,也可应用于在闪速存储设备3侧使用逻辑物理地址转换表管理各标签(例如LBA之类的逻辑地址)与各物理地址之间的映射的构成。
另外,本实施方式中所说明的写入缓冲区的释放控制不仅应用于在主机2侧决定写入目标块的构成,也可应用于在闪速存储设备3侧决定写入目标块的构成。对于在闪速存储设备3侧决定写入目标块的构成,从主机2发送的各写入请求也可不包含块地址。另外,对于在闪速存储设备3侧决定写入目标块的构成,闪速存储设备3的控制器4也可针对每个写入请求,决定写入目标块及写入目标页这两者。
因此,闪速存储设备3的控制器4也可构成为以如下方式动作。
控制器4从暂时保存与各写入请求对应的写入数据的写入缓冲区(WB)获取与来自主机2的第1写入请求对应的第1写入数据。控制器4将第1写入数据写入到多个写入目标块中的第1写入目标块内的写入目标页。然后,控制器4将写入缓冲区(WB)内的区域释放,该写入缓冲区(WB)内的区域存储着能够通过对写入目标页写入第1写入数据而从第1写入目标块读出的先于写入目标页的第1写入目标块内的页的数据。将写入缓冲区(WB)内的该区域释放的处理例如可在应写入到先于写入目标页的第1写入目标块内的该页的写入数据从写入缓冲区(WB)被传送到NAND型闪速存储器5的时刻执行,也可在对该页执行第2阶段的编程动作(例如精细编程动作)之后执行。
另外,在本实施方式中,例示了NAND型闪速存储器作为非易失性存储器。但是,本实施方式的功能例如也能应用于MRAM(Magnetoresistive Random Access Memory,磁阻式随机存取存储器)、PRAM(Phase change Random Access Memory,相变随机存取存储器)、ReRAM(Resistive Random Access Memory,电阻式随机存取存储器)、或FeRAM(Ferroelectric Random Access Memory,铁电随机存取存储器)之类的其它多种非易失性存储器。
已对本发明的若干实施方式进行了说明,但这些实施方式是作为例子而提出的,并不意图限定发明的范围。这些新颖的实施方式能以其它多种方式实施,能够在不脱离发明主旨的范围内进行各种省略、置换、变更。这些实施方式或其变化包含在发明的范围或主旨中,并且包含在权利要求书所记载的发明及其均等的范围内。
[符号的说明]
2:主机
2A:闪速传送层、写入缓冲区
3:闪速存储设备
4:控制器
5:NAND型闪速存储器
21:写入控制部
22:读取控制部
31、45:写入缓冲区