本申请案享有以日本专利申请案2017-236269号(申请日:2017年12月8日)为基础申请案的优先权。本申请案通过参照该基础申请案而包含基础申请案的全部内容。
具体实施方式
以下,参照图式对实施方式进行说明。
首先,参照图1对主机与存储器系统的关系进行说明。
该存储器系统为以如下方式构成的半导体存储器件,即,将数据写入至非易失性存储器,且从非易失性存储器读出数据。该存储器系统是作为基于NAND闪速存储器技术的闪速存储器件3来实现。
主机(主机器件)2以控制多个闪速存储器件3的方式构成。主机2通过信息处理装置实现,该信息处理装置以将由多个闪速存储器件3构成的闪速存储器阵列作为存储器来使用的方式构成。该信息处理装置也可为个人电脑,也可为服务器电脑。
另外,闪速存储器件3也可作为设置在存储器阵列内的多个存储器件之一来利用。存储器阵列也可经由缆线或网络连接于服务器电脑那样的信息处理装置,存储器阵列包含控制该存储器阵列内的多个存储器(例如多个闪速存储器件3)的控制器。在将闪速存储器件3应用于存储器阵列的情况下,该存储器阵列的控制器也可作为闪速存储器件3的主机发挥功能。
以下,例示服务器电脑那样的信息处理装置作为主机2发挥功能的情况来进行说明。
主机(服务器)2与多个闪速存储器件3经由接口50相互连接(内部相互连接)。作为用于该相互连接的接口50,可使用PCI Express(Peripheral Component InterconnectExpress,外围部件互连高速)(PCIe)(注册商标)、NVM Express(Non Volatile MemoryExpress,非易失性存储器高速)(NVMe)(注册商标)、Ethernet(以太网)(注册商标)、NVMeover Fabrics(结构上NVMe)(NVMeOF)等,但并不限定于此。
至于作为主机2发挥功能的服务器电脑的典型例,可列举数据中心内的服务器电脑(以下,称为服务器)。
在主机2通过数据中心内的服务器实现的情况下,该主机(服务器)2也可经由网络51连接于多个最终用户终端(用户端)61。主机2可对这些最终用户终端61提供各种服务。
能够通过主机(服务器)2提供的服务的例,存在:(1)对各用户端(各最终用户终端61)提供系统运转平台的平台即服务(PaaS,platform as a service);及(2)对各用户端(各最终用户终端61)提供虚拟服务器那样的基础设施的基础设施即服务(IaaS,infrastructure as a service)等。
多个虚拟机器在作为所述主机(服务器)2发挥功能的物理服务器上执行。在主机(服务器)2上运行的这些虚拟机器的各者可作为以如下方式构成的虚拟服务器发挥功能,即,向对应的几个用户端(最终用户终端61)提供各种服务。
主机(服务器)2包含:存储器管理功能,对构成闪速存储器阵列的多个闪速存储器件3进行管理;及前端功能,对最终用户终端61分别提供包含存储器存取的各种服务。
闪速存储器件3包含NAND型闪速存储器那样的非易失性存储器。一个闪速存储器件3对从非易失性存储器内的多个区块分配的多个写入目标区块进行管理。写入目标区块是指应写入数据的区块。从主机2送出至闪速存储器件3的写入请求(写入指令)中,包含与应写入数据的一个写入目标区块建立关联的识别符。基于该写入请求中所包含的该识别符,闪速存储器件3从多个写入目标区块中决定应写入该数据的一个写入目标区块。
该写入请求中所包含的识别符也可为对特定的写入目标区块进行指定的区块识别符。区块识别符也可通过区块地址(区块编号)表示。或者,在闪速存储器件3包含多个NAND型闪速存储器芯片的情况下,区块识别符也可通过区块地址(区块编号)与芯片编号的组合表示。
在闪速存储器件3支持串流写入的情况下,该写入请求中所包含的识别符也可为多个串流中的一个串流的识别符(串流ID(IDentification))。在串流写入中,多个写入目标区块分别与多个串流建立关联。换言之,在闪速存储器件3从主机2接收到包含某串流ID的写入请求的情况下,该闪速存储器件3将数据写入至与该串流ID所对应的串流建立关联的写入目标区块。在闪速存储器件3从主机2接收到包含其他串流ID的写入请求的情况下,该闪速存储器件3将数据写入至与该其他串流ID所对应的其他串流建立关联的其他写入目标区块。
通过闪速存储器件3管理的多个写入目标区块也可分别由共有该闪速存储器件3的多个最终用户(用户端)使用。该情况下,在闪速存储器件3中,开放有与共有闪速存储器件3的最终用户的数量为相同数量或其以上的写入目标区块。
如此,当在闪速存储器件3存在多个能够同时利用的写入目标区块的环境中,必须准备与这些写入目标区块的数量为相同数量的写入缓冲器。
其原因在于,最近的NAND型闪速存储器多为以在每一存储单元写入多个位的数据的方式构成,必须预先在每一写入目标区块保存应写入至该写入目标区块的多个页面量的数据。
此外,在最近的NAND型闪速存储器中,为了减少编程干扰而存在应用如下写入方法的情况,即,通过伴随将写入数据多次传送至NAND型闪速存储器的多个阶段的编程动作而将写入数据写入至NAND型闪速存储器。作为此种写入方法的典型例,可列举模糊-精细编程动作。即便在该情况下,在多个阶段的编程动作结束之前也必须保存写入数据,因此必须准备与写入目标区块的数量为相同数量的写入缓冲器。
在模糊-精细编程动作中,例如将多个页面量的第1写入数据传送至NAND型闪速存储器,而且将第1写入数据写入至初始物理页面(与一字线连接的存储单元群)(第一阶段的写入:模糊写入)。其后,对与初始物理页面邻接的其他物理页面(与其他字线连接的存储单元群)执行模糊写入。然后,将所述多个页面量的第1写入数据再次传送至NAND型闪速存储器,而且将该第1写入数据写入至初始物理页面(第二阶段的写入:精细写入)。其后,对所述其他物理页面执行精细写入。
然而,由于闪速存储器件3内的随机存取存储器的容量有限,因此存在难以在闪速存储器件3内的随机存取存储器上准备充分数量的写入缓冲器的情况。此外,即便在闪速存储器件3准备有大容量的随机存取存储器,在共有闪速存储器件3的最终用户的数量较少的情况下,结果为大容量的随机存取存储器被白白浪费。
由此,在本实施方式中,主机2的存储器上的特定存储区域被用作写入缓冲器(以下,称为UWB:Unified Write Buffer(统一写入缓冲器))2A。主机2侧的UWB2A包含与多个写入目标区块对应的多个写入缓冲区域。
主机2将应写入至一个写入目标区块的写入数据存储在UWB2A(与该写入目标区块对应的写入缓冲区域)。而且,主机2将包含识别符(区块识别符或串流ID)与存储位置信息的写入请求送出至闪速存储器件3,该识别符与该一个写入目标区块建立关联,该存储位置信息表示存储有该写入数据的UWB2A内的位置。
闪速存储器件3从主机2接收该写入请求,并保存识别符与存储位置信息。闪速存储器件3在将该写入数据写入至NAND型闪速存储器时,通过将包含所述存储位置信息的传送请求送出至主机2而从UWB2A获取所述写入数据。例如,在NAND型闪速存储器为在每一存储单元存储3位数据的TLC(Trinary-Level Cell,三阶存储单元)-闪速存储器的情况下,从UWB2A获取写入至相同物理页面的3页面量的写入数据。也可对一个物理页面分配3个页面地址。而且,闪速存储器件3将该写入数据写入至一个写入目标区块(该写入目标区块的一物理页面)。
闪速存储器件3也可通过全序列编程动作而将该写入数据写入至一个写入目标区块。
或者,闪速存储器件3也可通过伴随将写入数据(例如3页面量的写入数据)多次传送至NAND型闪速存储器的多个阶段的编程动作(例如模糊-精细编程动作)而将该写入数据写入至一个写入目标区块。该情况下,闪速存储器件3首先执行第一阶段的写入动作。其后,在成为执行第二阶段的写入动作的时序时,闪速存储器件3再次将包含所述存储位置信息的传送请求送出至主机2。主机2每当从闪速存储器件3接收到包含所述存储位置信息的传送请求时,将该写入数据从UWB2A传送至闪速存储器件3。当再次从UWB2A获取所述写入数据时,闪速存储器件3执行第二阶段的写入动作。
闪速存储器件3在该写入数据的写入结束且该写入数据变为能够从NAND型闪速存储器读出的情况下(在全序列编程动作中为全序列编程动作结束的情况下,在模糊-精细编程动作中为模糊写入动作与精细写入动作的两者结束的情况下),对主机2通知保存在UWB2A中的该写入数据变为多余。
因此,本实施方式中,能够同时利用多个写入目标区块而又无需在闪速存储器件3准备多个写入缓冲器。因此,无需在闪速存储器件3设置大容量的随机存取存储器,由此能够容易地增加共有闪速存储器件3的最终用户的数量而又不会导致闪速存储器件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的各者包含与相同字线连接的多个存储单元。页面P0~Pn-1也存在称为“物理页面”的情况。页面P0~Pn-1为数据写入动作及数据读入动作的单位。
控制器4经由触发器、开放NAND闪速存储器接口(ONFI)那样的闪速存储器编程控制器13而与作为非易失性存储器的NAND型闪速存储器5电性连接。控制器4作为以控制NAND型闪速存储器5的方式构成的存储器控制器动作。该控制器4也可通过System-on-a-chip(SoC,系统级芯片)那样的电路实现。
NAND型闪速存储器5也可如图3所示,包含多个NAND型闪速存储器芯片(NAND型闪速存储器裸片)。各个NAND型闪速存储器芯片能够独立动作。因此,NAND型闪速存储器芯片作为能够并列动作的单位发挥功能。图3中例示如下情况,即,在闪速存储器编程控制器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)。
写入目标区块也可为一个物理区块,也可为一个超级区块。另外,也可利用一个超级区块仅包含一个物理区块的构成,在该情况下,一个超级区块等同于一个物理区块。
接下来,对图1的控制器4的构成进行说明。
控制器4包含主机接口11、CPU12、闪速存储器编程控制器13、及DRAM接口14等。这些CPU12、闪速存储器编程控制器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、闪速存储器编程控制器13、DRAM接口14的方式构成的处理器。CPU12响应于闪速存储器件3的电源接通而从NAND型闪速存储器5或未图示的ROM将控制程序(固件)载入于DRAM6,而且通过执行该固件而进行各种处理。另外,固件也可载入于控制器4内的未图示的SRAM上。该CPU12可执行用以对来自主机2的各种指令进行处理的指令处理等。CPU12的动作由通过CPU12执行的所述固件控制。另外,指令处理的一部分或全部也可由控制器4内的专用硬件执行。
CPU12可作为区块识别符/缓冲器地址接收部21、传送请求发送部22、及通知部23发挥功能。
区块识别符/缓冲器地址接收部21从主机2接收包含区块识别符与缓冲器地址的写入请求,并将这些区块识别符与缓冲器地址保存于特定存储区域。写入请求中所包含的区块识别符也可为对某特定的写入目标区块进行指定的区块地址。或者,写入请求也可包含串流ID代替区块识别符。区块识别符或串流ID作为与一个写入目标区块建立关联的识别符发挥功能。写入请求中所包含的缓冲器地址为表示存储有应写入的数据(写入数据)的UWB2A内的位置的存储位置信息。或者,写入请求也可包含缓冲器内偏移作为存储位置信息来代替缓冲器地址。缓冲器内偏移表示存储有写入数据的UWB2A内的偏移位置。
传送请求发送部22在将所述写入数据写入至NAND型闪速存储器5时,将包含存储位置信息(例如缓冲器地址)的传送请求送出至主机2,由此从UWB2A获取写入数据。
通知部23在所述写入数据的写入结束且所述写入数据变为能够从NAND型闪速存储器5读出的情况下,对主机2通知保存在UWB2A中的所述写入数据变为多余。
闪速存储器编程控制器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对存储在各区块的数据为有效数据或无效数据的任一者进行管理。不良信息管理表33对不良区块的列表进行管理。
图5表示与多个最终用户对应的多个写入目标区块和多个写入缓冲区域的关系。
在闪速存储器件3中,区块的状态大体分为存储有效数据的有效区块、与不存储有效数据的空闲区块。作为有效区块的各区块通过称为有效区块池的列表来管理。另一方面,作为空闲区块的各区块通过称为空闲区块池的列表来管理。
本实施方式中,控制器4将从空闲区块池选择的多个区块(空闲区块)分配为应写入从主机2接收到的写入数据的写入目标区块。该情况下,控制器4首先执行对所选择的各区块(空闲区块)的删除动作,由此使各区块为能够写入的删除状态。设为能够写入的删除状态的区块称为开放的写入目标区块。当一写入目标区块全体写满来自主机2的写入数据时,控制器4将该写入目标区块移动至有效区块池,从空闲区块池分配一个新区块(空闲区块)作为新的写入目标区块。
在闪速存储器件3中,开放有与共有闪速存储器件3的最终用户(最终用户终端)为相同数量或多于其的写入目标区块(闪速存储器区块)。主机2侧的UWB2A也可包含与这些写入目标区块(闪速存储器区块)为相同数量的写入缓冲区域(UWB区域)。
图5中,写入缓冲区域#1与写入目标区块#1建立关联,将应写入至写入目标区块#1的全部数据存储在写入缓冲区域#1。写入缓冲区域#2与写入目标区块#2建立关联,将应写入至写入目标区块#2的全部数据存储在写入缓冲区域#2。写入缓冲区域#3与写入目标区块#3建立关联,将应写入至写入目标区块#4的全部数据存储在写入缓冲区域#3。同样,写入缓冲区域#n与写入目标区块#n建立关联,将应写入至写入目标区块#n的全部数据存储在写入缓冲区域#n。
主机2将来自最终用户终端#1的写入数据存储在写入缓冲区域#1,将来自最终用户终端#2的写入数据存储在写入缓冲区域#2,将来自最终用户终端#3的写入数据存储在写入缓冲区域#3,将来自最终用户终端#4的写入数据存储在写入缓冲区域#4,而且,将来自最终用户终端#n的写入数据存储在写入缓冲区域#n。
主机2将包含识别符与存储位置信息的写入请求送出至闪速存储器件3,该识别符与写入目标区块#1建立关联,该存储位置信息表示存储有来自最终用户终端#1的写入数据的写入缓冲区域#1内的位置。与写入目标区块#1建立关联的识别符也可为指定写入目标区块#1的区块识别符(区块地址),也可为与写入目标区块#1建立关联的串流ID。
闪速存储器件3通过将包含该存储位置信息的传送请求送出至主机2,而从写入缓冲区域#1获取相当于1物理页面的大小的写入数据(例如,在TLC-闪速存储器的情况下为3页面量的写入数据)。另外,该传送请求不仅可包含存储位置信息,也可包含与写入目标区块#1建立关联的识别符(例如指定写入目标区块#1的区块识别符、或与写入目标区块#1建立关联的串流ID)。由此,主机2可容易地特定出存储有应传送至闪速存储器件3的写入数据的写入缓冲区域及该写入缓冲区域内的位置(存储位置)。
主机2将包含识别符与存储位置信息的写入请求送出至闪速存储器件3,该识别符与写入目标区块#2建立关联(例如为指定写入目标区块#2的区块识别符,或与写入目标区块#2建立关联的串流ID),该存储位置信息表示存储有来自最终用户终端#2的写入数据的写入缓冲区域#2内的位置。
闪速存储器件3通过将包含该存储位置信息的传送请求送出至主机2,而从写入缓冲区域#2获取相当于1物理页面的大小的写入数据(例如在TLC-闪速存储器的情况下为3页面量的写入数据)。另外,该传送请求不仅可包含存储位置信息,也可包含与写入目标区块#2建立关联的识别符(例如为指定写入目标区块#2的区块识别符,或与写入目标区块#2建立关联的串流ID)。由此,主机2可容易地特定出存储有应传送至闪速存储器件3的写入数据的写入缓冲区域与该写入缓冲区域内的位置(存储位置)。
同样,主机2将包含识别符与存储位置信息的写入请求送出至闪速存储器件3,该识别符与写入目标区块#n建立关联(例如为指定写入目标区块#n的区块识别符、或与写入目标区块#n建立关联的串流ID),该存储位置信息表示存储有来自最终用户终端#n的写入数据的写入缓冲区域#n内的位置。
闪速存储器件3通过将包含该存储位置信息的传送请求送出至主机2,而从写入缓冲区域#n获取相当于1物理页面的大小的写入数据(例如在TLC-闪速存储器的情况下为3页面量的写入数据)。另外,该传送请求不仅可包含存储位置信息,也可包含与写入目标区块#n建立关联的识别符(例如指定写入目标区块#n的区块识别符、或与写入目标区块#n建立关联的串流ID)。由此,主机2可容易地特定出存储有应传送至闪速存储器件3的写入数据的写入缓冲区域及该写入缓冲区域内的位置(存储位置)。
图6表示存储器件3与主机侧UWB2A的关系及通过主机2与闪速存储器件3执行的数据写入处理。
此处,为使图示简单,例示对某一个写入目标区块BLK的数据写入处理而进行说明。此外,此处设定通过全序列编程动作将写入数据写入至一个写入目标区块BLK的情况。
(1)在主机2中,执行对闪速存储器件3进行管理的主机软件即闪速存储器管理器。闪速存储器管理器也可组入于闪速存储器件3用的器件驱动器内。闪速存储器管理器管理UWB2A。根据来自上位软件(应用程序或文档系统)的写入数据的请求,闪速存储器管理器将伴随有应写入的数据、标签、区块识别符的写入请求存储在UWB2A。标签为能够识别该数据的识别符。标签也可为逻辑区块地址(LBA,Logical Block Address)那样的逻辑地址,也可为键值存储的键,也可为文档名那样的文档识别符。区块识别符为写入目标区块BLK的区块地址。另外,该写入请求也可包含应写入的数据的长度(Length),在请求固定长度的写入数据的写入的情况下,该写入请求也可不包含长度(Length)。此外,该写入请求也可包含表示应写入数据的页面的页面地址。另外,上位软件也可发行该写入请求,而且闪速存储器管理器从上位软件接收该写入请求,并将接收的写入请求存储在UWB2A。
(2)闪速存储器管理器将写入请求(写入指令)送出至闪速存储器件3。该写入请求包含标签、区块识别符(区块地址)、缓冲器地址(或缓冲器内偏移)。缓冲器地址表示存储有写入数据的UWB2A内的位置。此外,该写入请求也可包含表示应写入数据的页面的页面地址。闪速存储器件3的控制器4接收该写入请求,并保存该写入请求中所包含的标签、区块识别符、缓冲器地址(或缓冲器内偏移)。
(3)在闪速存储器编程控制器13将该数据写入至写入目标区块BLK时,闪速存储器件3的控制器4将传送请求(Transfer Request)送出至主机2。该传送请求包含所保存的缓冲器地址(或缓冲器内偏移)。或者,该传送请求也可包含所保存的标签、及所保存的缓冲器地址(或缓冲器内偏移)。或者,该传送请求也可包含所保存的缓冲器地址(或缓冲器内偏移)、及所保存的区块识别符(区块地址)。
(4)主机2的闪速存储器管理器当接收到至少包含缓冲器地址(或缓冲器内偏移)的传送请求时,将存储在由该缓冲器地址(或缓冲器内偏移)指定的UWB2A内的位置的数据从UWB2A传送至闪速存储器件3。例如,在NAND型闪速存储器5为TLC-闪速存储器情况下,将3页面量的数据从UWB2A传送至闪速存储器件3。传送请求也可包含应传送的数据的长度。
(5)闪速存储器件3的控制器4接收该数据,而且将该数据经由闪速存储器编程控制器13传送至NAND型闪速存储器5,且将该数据写入至写入目标区块BLK。在通过全序列编程动作将3页面量的数据写入至某物理页面的情况下,闪速存储器编程控制器13将3页面量的数据依序传送至NAND型闪速存储器5内的页面缓冲器群,然后将写入指示送出至NAND型闪速存储器5。闪速存储器编程控制器13可通过对来自NAND型闪速存储器5的状态进行监控,而判定写入动作(全序列编程动作)是否结束。
(6)在写入动作结束且该数据(此处为3页面量的数据)能够读出的情况下,即全序列编程动作成功并结束的情况下,控制器4对主机2通知保存在UWB2A的该数据(此处为3页面量的数据)变为多余。该情况下,闪速存储器件3的控制器4也可将包含标签、页面地址、长度的写入完成(Write Done)送出至主机2,也可将无效化请求(invalidate Request)送出至主机2。无效化请求包含存储有能够读出的数据的缓冲器地址(或缓冲器内偏移)。或者,无效化请求也可包含能够读出的数据的标签、及存储有能够读出的数据的缓冲器地址(或缓冲器内偏移)。或者,在向该写入目标区块BLK的最后物理页面的全序列编程动作结束而该写入目标区块BLK全体被数据写满的情况下,控制器4对主机2通知与写入目标区块BLK对应的UWB区域变为多余。该情况下,控制器4将关闭请求(Close Request)送出至主机2。关闭请求也可包含写入目标区块BLK的区块识别符(区块地址)。在接收到包含写入目标区块BLK的区块识别符的关闭请求的情况下,主机2的闪速存储器管理器将与该写入目标区块BLK建立关联的UWB区域开放,将该UWB区域用于其他用途。该情况下,闪速存储器管理器也可将该开放的UWB区域再次利用作其他写入目标区块(例如新开放的写入目标区块)用的UWB区域。
图7表示多个写入目标区块与多个写入缓冲区域(UWB区域)的关系的例。
与一写入目标区块BLK#1对应的写入缓冲区域(UWB区域#1),例如也可包含用以暂时存储多个页面量的数据的多个存储区域。该情况下,各存储区域也可包含标签字段、合法/非法字段、数据存储字段、页面地址字段。标签字段存储对应的数据的标签。合法/非法字段保存合法/非法旗标,该合法/非法旗标表示是否必须保存对应的数据。数据存储字段存储应写入至写入目标区块BLK#1的数据。数据存储字段也可具有1页面量的大小。页面地址字段为可选字段,如果写入请求包含页面地址,则将该页面地址存储在页面地址字段。
在从闪速存储器件3通知有保存在UWB区域#1的数据变为多余的情况下,主机2(闪速存储器管理器)将与该数据对应的存储区域内的合法/非法旗标更新为表示无效的值。将合法/非法旗标更新为表示无效的值的存储区域,被再次利用于应写入至写入目标区块BLK#1的其他数据的存储。
图7所示的UWB区域的数据构造为一例,例如,也可在UWB区域管理与页面大小不同的大小的数据(写入数据)。
图8表示闪速存储器件3与主机侧UWB2A的关系及通过主机2与闪速存储器件3执行的数据读出处理。
(1)响应于来自上位软件的用以读出数据的请求,主机2的闪速存储器管理器将用以读出该数据的读出请求送出至闪速存储器件3。该读出请求也可包含例如标签、区块识别符(区块地址)、页面地址、长度。
(2)如果由该读出请求指定的数据向写入目标区块BLK的写入动作已结束且该数据能够读出,则闪速存储器件3的控制器4经由闪速存储器编程控制器13从写入目标区块BLK读出该数据。
(3)闪速存储器件3的控制器4将读出的数据与该数据的标签一起送出至主机2。
(3')如果由该读出请求指定的数据无法读出,即在从该数据开始写入至该数据能够读出为止的期间中从主机2接收到用以读出该数据的读出请求的情况下,闪速存储器件3的控制器4将以作为对读出请求的响应而从UWB2A送回该数据的方式请求的传送请求送出至主机2。该传送请求中作为能够特定出应传送的UWB2A内的数据的信息,也可包含与该数据对应的缓冲器地址,或与该数据对应的缓冲器地址和与该数据对应的区块识别符的两者。或者,该传送请求也可包含与该数据对应的标签,也可包含与该数据对应的区块识别符及页面地址。
(4')主机2的闪速存储器管理器从UWB2A读出该数据,并将读出的数据与该数据的标签一起送回至上位软件。
或者,主机2的闪速存储器管理器在从闪速存储器件3通知存储在UWB2A的数据变为多余之前,响应于来自上位软件的用以读出该数据的请求,直接从UWB2A读出该数据而不将读出请求送出至闪速存储器件3。该情况下,数据读出处理如下所述那样执行。
(1”)在从闪速存储器件3通知存储在UWB2A的某数据变为多余之前,主机2的闪速存储器管理器响应于来自上位软件的用以读出该数据的请求,将读出请求送出至UWB2A而从UWB2A读出该数据。该读出请求例如也可包含标签、缓冲器地址、长度。
(2”)闪速存储器管理器将从UWB2A读出的数据与该数据的标签一起送回至上位软件。
图9表示支持模糊-精细写入的闪速存储器件3与主机侧UWB2A的关系及通过主机2与闪速存储器件3执行的数据写入处理。
此处,设定通过多个阶段的写入动作(模糊-精细编程动作)将写入数据写入至一个写入目标区块BLK的情况。
(1)在主机2中,闪速存储器管理器根据来自上位软件的写入数据的请求,将伴随有应写入的数据、标签、区块识别符的写入请求存储在UWB2A。另外,该写入请求也可包含应写入的数据的长度(Length),在请求固定长度的写入数据的写入的情况下,该写入请求也可不包含长度(Length)。此外,该写入请求也可包含表示应写入数据的页面的页面地址。另外,也可由上位软件发行该写入请求,而且也可由闪速存储器管理器从上位软件接收该写入请求,并将接收的写入请求存储在UWB2A。
(2)闪速存储器管理器将写入请求(写入指令)送出至闪速存储器件3。该写入请求包含标签、区块识别符(区块地址)、缓冲器地址(或缓冲器内偏移)。此外,该写入请求也可包含表示应写入数据的页面的页面地址。闪速存储器件3的控制器4接收该写入请求,并保存该写入请求中所包含的标签、区块识别符、缓冲器地址(或缓冲器内偏移)。
(3)在闪速存储器编程控制器13开始该数据的第一阶段的写入动作(模糊写入)时,闪速存储器件3的控制器4将传送请求(Transfer Request)送出至主机2。该传送请求包含所保存的缓冲器地址(或缓冲器内偏移)。或者,该传送请求也可包含所保存的标签及所保存的缓冲器地址(或缓冲器内偏移)。或者,该传送请求也可包含所保存的缓冲器地址(或缓冲器内偏移)及所保存的区块识别符(区块地址)。
(4)主机2的闪速存储器管理器当接收到至少包含缓冲器地址(或缓冲器内偏移)的传送请求时,将存储在由该缓冲器地址(或缓冲器内偏移)指定的UWB2A内的位置的数据(此处,图示为“Foggy Data(模糊数据)”)从UWB2A传送至闪速存储器件3。例如,在NAND型闪速存储器5为TLC-闪速存储器的情况下,将3页面量的数据作为Foggy Data从UWB2A传送至闪速存储器件3。传送请求也可包含应传送的数据的长度。
(5)闪速存储器件3的控制器4接收该数据,而且将该数据经由闪速存储器编程控制器13传送至NAND型闪速存储器5,从而将该数据写入至写入目标区块BLK的写入目标物理页面(第一阶段的写入:模糊写入)。在通过模糊写入而将3页面量的数据写入至某写入目标物理页面的情况下,闪速存储器编程控制器13将3页面量的数据依序传送至NAND型闪速存储器5内的页面缓冲器群,而且将第一阶段的写入指示送出至NAND型闪速存储器5。闪速存储器编程控制器13可通过监控来自NAND型闪速存储器5的状态而判定写入动作(第一阶段的写入动作)是否结束。通常,模糊-精细编程动作为了减少编程干扰,例如以物理页面#1的模糊写入、物理页面#2的模糊写入、物理页面#1的精细写入、物理页面#2的精细写入的方式,一面在多个字线(多个物理页面)重复一面执行。
(6)当执行向该写入目标物理页面的第二阶段的写入(精细写入)的时序到来时,闪速存储器件3的控制器4为了获取应通过精细写入而写入的数据(与已通过模糊写入而写入的数据相同的数据),再次将传送请求(Transfer Request)送出至主机2。该传送请求包含所述保存的缓冲器地址,即与通过处理(3)送出的传送请求中所包含的缓冲器地址相同的缓冲器地址。
(7)主机2的闪速存储器管理器当接收到至少包含缓冲器地址(或缓冲器内偏移)的传送请求时,将存储在由该缓冲器地址(或缓冲器内偏移)指定的UWB2A内的位置的数据(此处,图示为“Fine Data(精细数据)”)从UWB2A传送至闪速存储器件3。Fine Data为与Foggy Data相同的数据。例如在NAND型闪速存储器5为TLC-闪速存储器的情况下,将所述3页面量的数据作为Fine Data从UWB2A传送至闪速存储器件3。传送请求也可包含应传送的数据的长度。另外,主机2无需识别应传送的数据为Foggy Data或Fine Data的任一者。
(8)闪速存储器件3的控制器4接收该数据,而且将该数据经由闪速存储器编程控制器13传送至NAND型闪速存储器5,从而将该数据写入至写入目标区块BLK的所述写入目标物理页面(第二阶段的写入:精细写入)。在通过精细写入将3页面量的数据写入至该写入目标物理页面的情况下,闪速存储器编程控制器13将与在模糊写入中使用的3页面量的数据相同的3页面量的数据依序传送至NAND型闪速存储器5内的页面缓冲器群,而且将第二阶段的写入指示送出至NAND型闪速存储器5。闪速存储器编程控制器13可通过监控来自NAND型闪速存储器5的状态而判定写入动作(第二阶段的写入动作)是否结束。
(9)在第二阶段的写入动作结束且该数据(此处为3页面量的数据)能够读出的情况下,即模糊-精细编程动作全部成功并结束的情况下,控制器4对主机2通知保存在UWB2A的该数据(此处为3页面量的数据)变为多余。该情况下,闪速存储器件3的控制器4也可将包含标签、页面地址、长度的写入完成(Write Done)送出至主机2,也可将无效化请求(invalidate Request)送出至主机2。无效化请求包含存储有能够读出的数据的缓冲器地址(或缓冲器内偏移)。或者,无效化请求也可包含能够读出的数据的标签、及存储有能够读出的数据的缓冲器地址(或缓冲器内偏移)。或者,在向该写入目标区块BLK的最后物理页面的模糊-精细编程动作结束而该写入目标区块BLK全体被数据写满的情况下,控制器4对主机2通知与写入目标区块BLK对应的UWB区域变为多余。该情况下,控制器4将关闭请求(Close Request)送出至主机2。关闭请求也可包含写入目标区块BLK的区块识别符(区块地址)。在接收到包含写入目标区块BLK的区块识别符的关闭请求的情况下,主机2的闪速存储器管理器将与该写入目标区块BLK建立关联的UWB区域开放而将该UWB区域使用于其他用途。该情况下,闪速存储器管理器也可将该开放的UWB区域再次利用作其他写入目标区块(例如新开放的写入目标区块)用的UWB区域。
图10表示支持模糊-精细写入的闪速存储器件3与主机侧UWB2A的关系及通过主机2与闪速存储器件3执行的数据读出处理。
(1)响应于来自上位软件的用以读出数据的请求,主机2的闪速存储器管理器将用以读出该数据的读出请求送出至闪速存储器件3。该读出请求例如也可包含标签、区块识别符(区块地址)、页面地址、长度。
(2)如果由该读出请求指定的数据的向写入目标区块BLK的写入动作已结束且该数据能够读出,即该数据的模糊写入与该数据的精细写入的两者结束,则闪速存储器件3的控制器4经由闪速存储器编程控制器13从写入目标区块BLK读出该数据。
(3)闪速存储器件3的控制器4将读出的数据与该数据的标签一起送出至主机2。
(3')如果由该读出请求指定的数据无法读出,即在从该数据开始写入至该数据能够读出为止的期间中从主机2接收到用以读出该数据的读出请求的情况下,闪速存储器件3的控制器4将以作为对读出请求的响应而从UWB2A送回该数据的方式请求的传送请求送出至主机2。该传送请求也可包含与该数据对应的缓冲器地址。
(4')主机2的闪速存储器管理器从UWB2A读出该数据,并将读出的数据与该数据的标签一起送回至上位软件。
或者,主机2的闪速存储器管理器在从闪速存储器件3通知存储在UWB2A的数据变为多余之前,响应于来自上位软件的用以读出该数据的请求,直接从UWB2A读出该数据而不将读出请求送出至闪速存储器件3。该情况下,数据读出处理如下所述那样执行。
(1”)在从闪速存储器件3通知存储在UWB2A的数据变为多余之前,主机2的闪速存储器管理器响应于来自上位软件的用以读出该数据的请求,将读出请求送出至UWB2A而从UWB2A读出该数据。该读出请求例如也可包含标签、缓冲器地址、长度。
(2”)闪速存储器管理器将从UWB2A读出的数据与该数据的标签一起送回至上位软件。
图11的序列图表示通过主机2与闪速存储器件2执行的数据写入处理的步骤。
主机2将应写入至某写入目标区块的数据(写入数据)存储在与该写入目标区块建立关联的UWB区域,而且将包含区块识别符与缓冲器地址(或缓冲器内偏移)的写入请求送出至闪速存储器件3(步骤S11)。区块识别符为应写入该写入数据的写入目标区块的区块地址。缓冲器地址表示存储有该写入数据的UWB区域内的位置。
闪速存储器件3的控制器4从主机2接收该写入请求,并保存该写入请求内的区块识别符与缓冲器地址(或缓冲器内偏移)(步骤S21)。该情况下,控制器4也可通过将区块识别符与缓冲器地址存储在DRAM6上的写入缓冲器31而保存这些区块识别符与缓冲器地址。
在由保存的区块识别符指定的写入目标区块写入与该写入请求对应的写入数据时,闪速存储器件3的控制器4将包含所保存的缓冲器地址(或缓冲器内偏移)的传送请求送出至主机2(步骤S22)。
主机2当接收到该传送请求时,主机2将该写入数据从UWB区域传送至闪速存储器件3(步骤S12)。
闪速存储器件3的控制器4接收从主机2传送的该写入数据(步骤S23)。控制器4通过将接收到的写入数据存储在例如DRAM6上的写入缓冲器31等而保存该写入数据(步骤S24)。
控制器4将接收到的写入数据传送至NAND型闪速存储器5(步骤S25)。写入数据的向NAND型闪速存储器5的传送完成之前,控制器4保存该写入数据。而且,控制器4将该写入数据写入至由所保存的区块识别符指定的写入目标区块(步骤S26)。该情况下,应写入写入数据的写入目标区块内的写入目标页面由控制器4决定。另外,写入请求也可包含指定写入目标页面的页面地址。
在该写入数据的写入动作结束且该写入数据能够读出的情况下(在全序列编程动作中为全序列编程动作结束的情况下),控制器4对主机2通知存储在UWB区域的该写入数据变为多余(步骤S27)。
图12的流程图表示通过闪速存储器件3执行的通知处理的步骤。
闪速存储器件3的控制器4可判定是否为向写入目标区块的数据的写入动作结束且该数据能够读出(步骤S31)。
如果数据的写入动作结束且该数据能够读出(步骤S31的是),则控制器4判定是否为向该写入目标区块的最后页面(最后物理页面)的写入动作结束而该写入目标区块全体被数据写满(步骤S32)。
如果剩余有能够在该写入目标区块利用的物理页面(未写入的物理页面)(步骤S32的否),则控制器4为了对主机2通知保存在UWB区域的能够读出的数据变为多余,而将写入完成(Write Done)或无效化请求(invalidate Request)送出至主机2(步骤S33)。
如果向该写入目标区块的最后页面(最后物理页面)的写入动作结束而该写入目标区块全体被数据写满(步骤S32的是),则控制器4为了对主机2通知与该写入目标区块对应的UWB区域全体变为多余,而将关闭请求(Close Request)送出至主机2(步骤S34)。
图13的流程图表示根据接收到传送请求而执行的主机侧处理的步骤。
主机2将包含区块识别符与缓冲器地址(或缓冲器内偏移)的写入请求送出至闪速存储器件3(步骤S40)。主机2判定是否从闪速存储器件3接收到传送请求(步骤S41)。
如果从闪速存储器件3接收到传送请求(步骤S41的是),则主机2将存储在由传送请求内的缓冲器地址(或缓冲器内偏移)指定的UWB区域内的位置的数据传送至闪速存储器件3(步骤S42)。而且,主机2判定是否从闪速存储器件3通知UWB区域内的多余数据,或是否从闪速存储器件3接收到关闭请求(Close Request)(步骤S43,S44)。
如果从闪速存储器件3通知UWB区域内的多余数据(步骤S43的是),则主机2将与该多余数据对应的合法/非法旗标更新为表示无效的值,将存储有该多余数据的UWB区域内的一个存储区域开放(步骤S44)。主机2可将该开放的存储区域作为用以写入至与该UWB区域对应的写入目标区块的新的写入数据的存储区域再次利用。
如此,在本实施方式中,当某数据的写入动作结束且该数据能够读出时,从闪速存储器件3对主机2通知UWB区域内的该数据变为多余。因此,在该数据能够从NAND型闪速存储器5读出之前,将该数据保存在UWB区域内。
如果从闪速存储器件3接收到关闭请求(Close Request)(步骤S45的是),则主机2将与关闭请求中所包含的区块识别符的写入目标区块建立关联的UWB区域全体开放(步骤S46)。主机2可将该开放的UWB区域作为通过闪速存储器件3新分配的写入目标区块用的UWB区域再次利用。
图14的流程图表示根据接收到读出请求而通过闪速存储器件3执行的数据读出动作的步骤。
闪速存储器件3的控制器4从主机2接收读出请求(步骤S51)。控制器4判定由读出请求指定的读出数据是否为向写入目标区块的写入动作结束且能够读出的数据(步骤S52)。
如果应读出的数据为向写入目标区块的写入动作结束且能够读出的数据(步骤S52的是),则控制器4将应读出的数据从NAND型闪速存储器5读出(步骤S53),并将该读出的数据送回至主机2(步骤S54)。
另一方面,如果应读出的数据不为向写入目标区块的写入动作结束且能够读出的数据,即在从该数据开始写入至该数据能够读出为止的期间内从主机2接收到对该数据的读出请求(步骤S52的否),则控制器4将以作为对读出请求的响应而从UWB区域送回该数据的方式请求的传送请求送出至主机2(步骤S55)。
图15的流程图表示用于数据读出的主机侧处理的步骤。
主机2不管在UWB区域内是否存在应读出的数据,均将请求读出该数据的读出请求送出至闪速存储器件3(步骤S61)。
而且,主机2判定是否从闪速存储器件3接收到以从UWB区域送回(读出)该数据的方式请求的传送请求(步骤S62)。
如果从闪速存储器件3接收到该传送请求(步骤S62的是),则主机2将该数据从UWB区域读出(步骤S63)。
图16表示支持串流写入的闪速存储器件3与主机侧UWB2A的关系及通过主机2与闪速存储器件3执行的数据写入处理。
此处,设定通过全序列编程动作将写入数据写入至一个写入目标区块BLK的情况。
(1)在主机2中,根据来自上位软件(应用程序或文档系统)的写入数据的请求,闪速存储器管理器将伴随有应写入的数据、串流ID、LBA、长度的写入请求存储在UWB2A。串流ID为与多个写入目标区块建立关联的多个串流内的某串流的识别符。另外,上位软件也可发行该写入请求,而且闪速存储器管理器也可从上位软件接收该写入请求并将接收到的写入请求存储在UWB2A。
(2)闪速存储器管理器将写入请求(写入指令)送出至闪速存储器件3。该写入请求包含串流ID、LBA、长度、缓冲器地址(或缓冲器内偏移)。缓冲器地址表示存储有应写入的数据的UWB2A内的位置。闪速存储器件3的控制器4接收该写入请求,并保存该写入请求中所包含的串流ID、LBA、长度、缓冲器地址。
(3)在闪速存储器编程控制器13将该数据写入至写入目标区块BLK时,闪速存储器件3的控制器4将传送请求(Transfer Request)送出至主机2。该传送请求包含所保存的缓冲器地址(或缓冲器内偏移)。或者,该传送请求也可包含所保存的LBA及所保存的缓冲器地址(或缓冲器内偏移)。或者,该传送请求也可包含所保存的缓冲器地址(或缓冲器内偏移)及所保存的串流ID。或者,该传送请求也可包含所保存的缓冲器地址(或缓冲器内偏移)及与所保存的串流ID建立关联的写入目标区块的区块识别符(区块地址)。
(4)主机2的闪速存储器管理器当接收到至少包含缓冲器地址(或缓冲器内偏移)的传送请求时,将存储在由该缓冲器地址(或缓冲器内偏移)指定的UWB2A内的位置的数据从UWB2A传送至闪速存储器件3。例如,在NAND型闪速存储器5为TLC-闪速存储器的情况下,将3页面量的数据从UWB2A传送至闪速存储器件3。传送请求包含应传送的数据的长度。
(5)闪速存储器件3的控制器4接收该数据,而且将该数据经由闪速存储器编程控制器13传送至NAND型闪速存储器5,从而将该数据写入至写入目标区块BLK。在通过全序列编程动作将3页面量的数据写入至物理页面的情况下,闪速存储器编程控制器13将3页面量的数据依序传送至NAND型闪速存储器5内的页面缓冲器群,而且将写入指示送出至NAND型闪速存储器5。闪速存储器编程控制器13可通过监控来自NAND型闪速存储器5的状态而判定写入动作(全序列编程动作)是否结束。
(6)在写入动作结束且该数据(此处为3页面量的数据)能够读出的情况下,即全序列编程动作成功并结束的情况下,控制器4对主机2通知保存在UWB2A的该数据(此处为3页面量的数据)变为多余。该情况下,闪速存储器件3的控制器4也可将包含LBA、长度的写入完成(Write Done)送出至主机2,也可将无效化请求(invalidate Request)送出至主机2。无效化请求包含存储有能够读出的数据的缓冲器地址(或缓冲器内偏移)。或者,无效化请求也可包含能够读出的数据的LBA、及存储有能够读出的数据的缓冲器地址(或缓冲器内偏移)。或者,在向该写入目标区块BLK的最后物理页面的全序列编程动作结束而该写入目标区块BLK全体被数据写满的情况下,控制器4对主机2通知与写入目标区块BLK对应的UWB区域变为多余。该情况下,控制器4将关闭请求(Close Request)送出至主机2。关闭请求也可包含写入目标区块BLK的区块识别符(区块地址)。在接收到包含写入目标区块BLK的区块识别符的关闭请求的情况下,主机2的闪速存储器管理器将与该写入目标区块BLK建立关联的UWB区域开放而将该UWB区域使用于其他用途。该情况下,闪速存储器管理器也可将该开放的UWB区域作为其他写入目标区块(例如新开放的写入目标区块)用的UWB区域再次利用。
图17表示多个串流ID和与这些串流ID建立关联的多个写入目标区块的关系。
此处,例示写入目标区块BLK#1与串流ID#1的串流建立关联,写入目标区块BLK#2与串流ID#2的串流建立关联,写入目标区块BLK#3与串流ID#3的串流建立关联,而且写入目标区块BLK#n与串流ID#n的串流建立关联的情况。
将由包含串流ID#1的写入请求指定的写入数据写入至写入目标区块BLK#1。将由包含串流ID#2的写入请求指定的写入数据写入至写入目标区块BLK#2。将由包含串流ID#3的写入请求指定的写入数据写入至写入目标区块BLK#3。将由包含串流ID#n的写入请求指定的写入数据写入至写入目标区块BLK#n。
图18表示支持串流写入的闪速存储器件3与主机侧UWB2A的关系及通过主机2与闪速存储器件3执行的数据读出处理。
(1)响应于来自上位软件的用以读出数据的请求,主机2的闪速存储器管理器将该用以读出数据的读出请求送出至闪速存储器件3。该读出请求例如也可包含LBA、长度。
(2)如果由该读出请求指定的数据的向写入目标区块BLK的写入动作已结束且该数据能够读出,则闪速存储器件3的控制器4经由闪速存储器编程控制器13将该数据从写入目标区块BLK读出。
(3)闪速存储器件3的控制器4将读出数据与该数据的LBA一起送出至主机2。
(3')如果由该读出请求指定的数据无法读出,即在从该数据开始写入至该数据能够读出为止的期间中从主机2接收到用以读出该数据的读出请求的情况下,闪速存储器件3的控制器4将以作为对读出请求的响应而从UWB2A送回该数据的方式请求的传送请求送出至主机2。该传送请求也可包含与该数据对应的缓冲器地址。
(4')主机2的闪速存储器管理器将该数据从UWB2A读出,并将读出的数据与该数据的LBA一起送回至上位软件。
或者,主机2的闪速存储器管理器也可在从闪速存储器件3通知存储在UWB2A的数据变为多余之前,响应于来自上位软件的用以读出该数据的请求,直接从UWB2A读出该数据而不将读出请求送出至闪速存储器件3。该情况下,数据读出处理如下所述那样执行。
(1”)在从闪速存储器件3通知存储在UWB2A的数据变为多余之前,主机2的闪速存储器管理器响应于来自上位软件的用以读出该数据的请求,将读出请求送出至UWB2A而将该数据从UWB2A读出。该读出请求例如也可包含LBA、长度。
(2”)闪速存储器管理器将从UWB2A读出的数据与该数据的LBA一起送回至上位软件。
图19的序列图表示通过支持模糊-精细写入的闪速存储器件3与主机2执行的数据写入处理的步骤。
此处,例示写入请求包含区块识别符与缓冲器地址(或缓冲器内偏移)的情况进行说明。
主机2将应写入至某写入目标区块的数据(写入数据)存储在与该写入目标区块建立关联的UWB区域,而且将包含区块识别符与缓冲器地址(或缓冲器内偏移)的写入请求送出至闪速存储器件3(步骤S71)。区块识别符为应写入该写入数据的写入目标区块的区块地址。缓冲器地址表示存储有该写入数据的UWB区域内的位置。
闪速存储器件3的控制器4从主机2接收该写入请求,并保存该写入请求内的区块识别符与缓冲器地址(或缓冲器内偏移)(步骤S81)。该情况下,控制器4也可通过将区块识别符与缓冲器地址存储在DRAM6上的写入缓冲器31而保存这些区块识别符与缓冲器地址。
在通过多个阶段的编程动作(模糊-精细编程动作)而将与该写入请求对应的写入数据写入至由所保存的区块识别符指定的写入目标区块时,闪速存储器件3的控制器4,首先为了从UWB区域获取使用于模糊写入的写入数据(模糊数据),而将包含所保存的缓冲器地址(或缓冲器内偏移)的传送请求送出至主机2(步骤S82)。
当主机2接收到该传送请求时,主机2将该写入数据从UWB区域传送至闪速存储器件3(步骤S72)。
闪速存储器件3的控制器4接收从主机2传送的该写入数据作为模糊数据(步骤S83)。控制器4通过将接收的写入数据(模糊数据)存储在例如DRAM6上的写入缓冲器31等而加以保存(步骤S84)。
控制器4将接收到的写入数据(模糊数据)传送至NAND型闪速存储器5(步骤S85)。在写入数据(模糊数据)的向NAND型闪速存储器5的传送完成之前,控制器4保存该写入数据(模糊数据)。而且,控制器4将该写入数据(模糊数据)写入至由所保存的区块识别符指定的写入目标区块的写入目标物理页面(第一阶段的写入:模糊写入)(步骤S86)。
其后,当执行向该写入目标物理页面的第二阶段的写入(精细写入)的时序到来时,闪速存储器件3的控制器4为了从UWB区域获取使用于精细写入的写入数据(精细数据),而将包含所保存的缓冲器地址(或缓冲器内偏移)的传送请求再次送出至主机2(步骤S87)。精细数据为与模糊数据相同的数据。
当主机2接收到该传送请求时,主机2将该写入数据从UWB区域传送至闪速存储器件3(步骤S73)。
闪速存储器件3的控制器4接收从主机2传送的该写入数据作为精细数据(步骤S88)。控制器4通过将接收的写入数据(精细数据)存储在例如DRAM6上的写入缓冲器31等而加以保存(步骤S89)。
控制器4将接收的写入数据(精细数据)传送至NAND型闪速存储器5(步骤S90)。在写入数据(精细数据)的向NAND型闪速存储器5的传送完成之前,控制器4保存该写入数据(精细数据)。而且,控制器4将该写入数据(精细数据)写入至该写入目标区块的该写入目标物理页面(第二阶段的写入:精细写入)(步骤S91)。
在写入动作结束且该写入数据能够读出的情况下(即,模糊写入动作与精细写入动作的两者结束的情况下),控制器4对主机2通知存储在UWB区域的该写入数据变为多余(步骤S92)。
图20表示主机2(信息处理装置)的构成例。
该主机2包含处理器(CPU,Central Processing Unit,中央处理器)101、主存储器102、BIOS(Basic Input Output System,基本输入输出系统)-ROM(Read-Only Memory,只读存储器)103、网络控制器105、周边接口控制器106、控制器107、及嵌入式控制器(EC,Embedded Controller)108等。
处理器101为以控制该信息处理装置内的各组件的动作的方式构成的CPU。该处理器101执行主存储器102上的各种程序。主存储器102由DRAM那样的随机存取存储器构成。通过处理器101执行的程序包含应用程序软件层41、操作系统(OS,Operating System)42、文档系统43、器件驱动器44等。
各种应用程序在应用程序软件层41上运行。如一般周知那样,OS42为以如下方式构成的软件,即,管理该信息处理装置全体,控制该信息处理装置内的硬件,执行用以使软件能够使用硬件及闪速存储器件3的控制。文档系统43是用以进行用于文档操作(创建、保存、更新、删除等)的控制而使用。
器件驱动器44为用以控制及管理闪速存储器件3的程序。该器件驱动器44包含所述闪速存储器管理器。该闪速存储器管理器45包含用以管理主存储器102上的UWB2A的命令群、用以对闪速存储器件3送出写入请求、读出请求等的命令群、每当从闪速存储器件3接收到传送请求时用以从UWB2A对闪速存储器件3传送数据的命令群、在从闪速存储器件3通知存储在UWB2A的数据变为多余之前用以将该数据从UWB2A读出的命令群等。处理器101通过执行器件驱动器44内的闪速存储器管理器45的命令群,而执行数据写入处理、数据读出处理、UWB区域开放处理等。
网络控制器105为ethernet控制器那样的通信器件。周边接口控制器106以执行与USB(Universal Serial Bus,通用串行总线)器件那样的周边器件的通信的方式构成。
控制器107以执行与和多个连接器107A分别连接的器件的通信的方式构成。本实施方式中,多个闪速存储器件3也可与多个连接器107A分别连接。控制器107也可为SAS(serial attached Small Computer System Interface,串行连接小型计算机系统接口)expander(扩展器)、PCIe Switch(开关)、PCIe expander、闪速存储器阵列控制器、或RAID(Redundant Arrays of Independent Disks,独立磁盘冗余阵列)控制器。或者,多个闪速存储器件3也可经由ethernet与网络控制器105连接。
图21的流程图表示通过处理器101执行的数据写入处理的步骤。
在数据写入处理中,处理器101将应写入至一个写入目标区块的写入数据存储在UWB2A(与该写入目标区块对应的UWB区域)(步骤S101)。处理器101将包含识别符与存储位置信息的写入请求送出至闪速存储器件3,该识别符与该写入目标区块建立关联,该存储位置信息表示存储有写入数据的UWB2A内的位置(无UWB区域的位置)(步骤S102)。与写入目标区块建立关联的识别符如所述那样也可为写入目标区块的区块识别符(区块地址)。存储位置信息如所述那样也可为缓冲器地址(或缓冲器内偏移)。该情况下,处理器101也可将包含标签、区块识别符、缓冲器地址(或缓冲器内偏移)的写入请求送出至闪速存储器件3。此外,在主机2不仅指定区块也指定页面的构成中,写入请求也可包含标签、区块识别符(区块地址)、页面地址、缓冲器地址(或缓冲器内偏移)。
或者,在使用串流写入的情况下,也可代替区块识别符(区块地址)而使用串流ID。该情况下,写入请求也可包含串流ID、LBA、缓冲器地址(或缓冲器内偏移)。
在处理器101将写入请求送出至闪速存储器件3之后,处理器101每当从闪速存储器件3接收到包含缓冲器地址(或缓冲器内偏移)的传送请求时,就会将所述写入数据从UWB2A(UWB区域)传送至闪速存储器件3(步骤S103、S104)。更详细而言,处理器101判定是否从闪速存储器件3接收到包含缓冲器地址(或缓冲器内偏移)的传送请求(步骤S103)。而且,如果从闪速存储器件3接收到该传送请求(步骤S103的是),则处理器101将所述写入数据从UWB2A(UWB区域)传送至闪速存储器件3。
如所述那样,在通过多个阶段的编程动作(模糊-精细编程动作)将写入数据写入至写入目标区块的情况下,处理器101从闪速存储器件3多次接收包含相同缓冲器地址(或相同缓冲器内偏移)的传送请求。而且,每当接收到该传送请求时,处理器101就会将所述写入数据从UWB2A(UWB区域)传送至闪速存储器件3。
图22的流程图表示通过处理器101执行的数据读出处理的步骤。
在从闪速存储器件3通知存储在UWB2A(UWB区域)的数据变为多余之前,处理器101响应于来自上位软件的用以读出该数据的请求而将该数据从UWB2A(UWB区域)读出,并将该读出的数据送回至上位软件。
即,如果从上位软件请求数据读出(步骤S111的是),则处理器101判定是否从闪速存储器件3已通知UWB2A(UWB区域)上的该数据变为多余(步骤S112)。
如果尚未通知该数据变为多余(步骤S112的否),则处理器101将该数据从UWB2A(UWB区域)读出,并将读出的数据送回至上位软件(步骤S112)。
另一方面,如果已通知该数据变为多余(步骤S112的是),则处理器101将用以读出该数据的读出请求送出至闪速存储器件3,由此将该数据从闪速存储器件3读出(步骤S114)。
图23的流程图表示通过处理器101执行的数据读出处理的其他步骤。
如果从上位软件接收到用以读出数据的请求(步骤S121的是),则处理器101不管在UWB2A(UWB区域)是否存在该数据,即不管是否已从闪速存储器件3通知该数据变为多余,均将用以读出该数据的读出请求送出至闪速存储器件3(步骤S122)。
如果由该读出请求指定的数据尚无法读出,则闪速存储器件3将以从UWB2A(UWB区域)送回该数据的方式请求的传送请求送出至主机2。
如果从闪速存储器件3接收到该传送请求(步骤S123的是),则处理器101将该数据从UWB2A(UWB区域)读出,并将该读出的数据送回至上位软件(步骤S124)。
如果未从闪速存储器件3接收该传送请求(步骤S123的否),则处理器101接收作为对读出请求的响应而从闪速存储器件3送回的数据,并将该数据送回至上位软件(步骤S125)。
图24的流程图表示通过处理器101执行的UWB区域开放处理的步骤。
在处理器101从闪速存储器件3接收到表示与一个写入目标区块建立关联的UWB区域全体变为多余的通知(关闭请求)的情况下(步骤S131的是),处理器101将该UWB区域全体开放(步骤S132)。步骤S132中,处理器101可将与该开放的UWB区域对应的存储器空间使用于其他任意用途。例如,处理器也可再次利用该开放的UWB区域作为与通过闪速存储器件3的控制器4新分配的写入目标区块建立关联的UWB区域。当必须在该新分配的写入目标区块写入数据时,处理器101首先将该数据存储在与该新分配的写入目标区块建立关联的UWB区域,而且,将包含识别符(区块识别符、或串流ID)与存储位置信息(例如缓冲器地址)的写入请求送出至闪速存储器件3,该识别符与该新分配的写入目标区块建立关联,该存储位置信息表示存储该数据的该UWB区域内的位置。
如以上所说明那样,根据本实施方式,闪速存储器件3的控制器4从主机2接收包含第1识别符(区块识别符、或串流ID)与存储位置信息(缓冲器地址、或缓冲器内地址)的写入请求,该第1识别符与一个写入目标区块建立关联,该存储位置信息表示存储有应写入的第1数据的主机2的存储器上的写入缓冲器(UWB2A)内的位置。而且,在将第1数据写入至NAND型闪速存储器5时,控制器4通过将包含存储位置信息的传送请求送出至主机2,而从写入缓冲器(UWB2A)获取第1数据。因此,可从主机2的写入缓冲器(UWB2A)获取用于写入动作而必需的数据,因此可增加能够同时利用的写入目标区块的数量而又无需在闪速存储器件3准备多个写入缓冲器。由此,能够容易地增加共有闪速存储器件3的最终用户的数量而又不会导致闪速存储器件3的成本上升。
此外,控制器4在第1数据的写入结束且第1数据能够从NAND型闪速存储器5读出的情况下,对主机2通知保存在写入缓冲器(UWB2A)的第1数据变为多余。根据该通知,主机2可视需要废弃该数据。因此,在应写入的数据能够从NAND型闪速存储器5读出之前,控制器4也可视需要从写入缓冲器(UWB2A)反复获取该数据。因此,即便在执行模糊-精细编程动作那样的多个阶段的编程动作的情况下,控制器4每当开始各阶段的编程动作时,就可从写入缓冲器(UWB2A)获取必要数据。
另外,本实施方式中,例示NAND型闪速存储器作为非易失性存储器。然而,本实施方式的功能也可应用于例如MRAM(Magnetoresistive Random Access Memory,磁阻式随机存取存储器)、PRAM(Phase change Random Access Memory,相变随机存取存储器)、ReRAM(Resistive Random Access Memory,电阻式随机存取存储器)、或FeRAM(FerroelectricRandom Access Memory,铁电随机存取存储器)那样的其他各种非易失性存储器。
对本发明的几个实施方式进行了说明,但这些实施方式是作为示例提示者,并未意图限定发明的范围。这些新颖的实施方式能够以其他各种方式实施,可在不脱离发明要旨的范围进行各种省略、替换、变更。这些实施方式或其变化包含在发明的范围或要旨中,并且包含在权利要求书中所记载的发明及其均等的范围。
[符号的说明]
2 主机
2A 写入缓冲器
3 闪速存储器件
4 控制器
5 NAND型闪速存储器
21 区块识别符/缓冲器地址接收部
22 传送请求发送部
23 通知部