存储系统及非易失性存储器的控制方法与流程

未命名 07-15 阅读:60 评论:0

存储系统及非易失性存储器的控制方法
1.分案申请的相关信息
2.本案是分案申请。该分案的母案是申请日为2018年12月14日、申请号为201811532009.1、发明名称为“存储系统及非易失性存储器的控制方法”的发明专利申请案。
3.[相关申请]
[0004]
本技术享有以日本专利申请2018-78422号(申请日:2018年4月16日)为基础申请的优先权。本技术通过参照该基础申请而包含基础申请的全部内容。
技术领域
[0005]
本发明的实施方式涉及一种存储系统及非易失性存储器的控制方法。


背景技术:

[0006]
近年来,具备非易失性存储器的存储系统广泛普及。作为如此的存储系统之一,已知有基于nand(not and,与非)闪存技术的固态硬盘(ssd,solid state drive)。
[0007]
即便在数据中心的服务器中,像ssd这样的存储系统也被用作存储设备。
[0008]
像服务器这样的计算机系统中利用的存储系统中,该计算机系统作为存储系统的主机发挥作用。因此,随着利用该计算机系统的最终用户(客户端)数量增加而要求存储系统处理更多的i/o。而且,随着客户端数量增加,出现从作为主机的计算机系统传送到存储系统的数据量、即数据流通量增加的倾向。


技术实现要素:

[0009]
本发明的实施方式提供一种可将主机与存储系统之间的数据流通量削减的存储系统及非易失性存储器的控制方法。
[0010]
根据实施方式,可与主机连接的存储系统具备:非易失性存储器,包含多个块;及控制器,与所述非易失性存储器电性连接,至少包含第1阶段写入操作与第2阶段写入操作,且构成为执行将多页份的相同数据多次传送到所述非易失性存储器的多阶段写入操作。所述控制器在每次从所述主机接收到写入请求时,从所述主机接收与从所述多个块分配的多个写入对象块分别对应的所述主机的存储器上的多个写入缓冲器的任一个中储存的写入数据,将所述接收的写入数据储存到在所述多个写入对象块间共享的共享写入缓冲器。所述控制器从所述共享写入缓冲器获取应对所述多个写入对象块内的第1写入对象块写入的多页份的第1写入数据,利用所述第1阶段写入操作将所述第1写入数据写入至所述第1写入对象块。所述控制器当在所述共享写入缓冲器中没有空区之状态下,从所述主机接收到写入数据的情况下,将所述第1阶段写入操作已结束的所述共享写入缓冲器内的写入数据丢弃,在所述共享写入缓冲器中确保所述空区。所述控制器在应执行所述第1写入数据的所述第2阶段的写入操作的时间点,所述第1写入数据不存在于所述共享写入缓冲器的情况下,通过将用以获取所述第1写入数据的请求发送至所述主机而从所述主机获取所述第1写入
数据。
附图说明
[0011]
图1是表示实施方式的存储系统与主机的关系的框图。
[0012]
图2是表示设置在主机的多个写入缓冲器(主机侧写入缓冲器)与该实施方式的存储系统中设置的共享写入缓冲器(共享设备侧写入缓冲器)的关系的图。
[0013]
图3是表示使用共享写入缓冲器通过该实施方式的存储系统执行的对各写入对象块的数据写入操作的框图。
[0014]
图4是用以说明在3个字线中往返的情况下的模糊-精细写入操作的图。
[0015]
图5是用以说明在2个字线中往返的情况下的模糊-精细写入操作的图。
[0016]
图6是表示包含该实施方式的存储系统与主机的计算机系统的构成例的框图。
[0017]
图7是表示该实施方式的存储系统中使用的多个通道与多个nand型快闪存储芯片的关系的框图。
[0018]
图8是表示该实施方式的存储系统中使用的某一超级块的构成例的图。
[0019]
图9是用以说明由主机与该实施方式的存储系统执行的写入处理的例子的框图。
[0020]
图10是用以说明由主机与该实施方式的存储系统执行的写入处理的另一例的框图。
[0021]
图11是用以说明使用共享写入缓冲器通过该实施方式的存储系统执行的模糊-精细写入操作与将共享写入缓冲器的数据丢弃的处理的图。
[0022]
图12是在共享写入缓冲器中没有未使用区域的情况下由该实施方式的存储系统执行的将模糊写入操作已结束的共享写入缓冲器内的写入数据丢弃的处理的图。
[0023]
图13是表示由该实施方式的存储系统执行的数据写入处理的顺序的流程图。
[0024]
图14是用以说明主机指定写入对象块且该实施方式的存储系统决定写入对象页面的数据写入处理、及主机指定块地址与页面地址的数据读出处理的图。
[0025]
图15是用以说明该实施方式的存储系统中应用的块分配指令(块分配请求)的图。
[0026]
图16是用以说明对块分配指令的响应的图。
[0027]
图17是用以说明该实施方式的存储系统中应用的写入指令的图。
[0028]
图18是用以说明对写入指令的响应的图。
[0029]
图19是用以说明该实施方式的存储系统中应用的读取指令的图。
[0030]
图20是表示使用包含1个以上slc块的共享写入缓冲器通过该实施方式的存储系统执行的对各写入对象块的数据写入操作的框图。
具体实施方式
[0031]
以下,参照附图,说明实施方式。
[0032]
首先,参照图1,说明主机与实施方式的存储系统的关系。
[0033]
该存储系统是以将数据写入至非易失性存储器,从非易失性存储器将数据读出的方式构成的半导体存储设备。该存储系统已作为基于nand闪存技术的快闪存储设备3实现。
[0034]
主机(主机设备)2是以控制多个快闪存储设备3的方式构成。主机2是通过以将包括多个快闪存储设备3的闪存阵列用作存储的方式构成的计算机而实现。
[0035]
以下,例示像服务器计算机这样的计算机作为主机2发挥作用的情况进行说明。
[0036]
主机(服务器计算机)2与多个快闪存储设备3是经由接口50相互连接(内部相互连接)。作为用于该相互连接的接口50,并不限于此,但可使用pci express(pcie)(注册商标)、nvm express(nvme)(注册商标)、ethernet(注册商标)、nvme over fabrics(nvmeof)等。
[0037]
作为以主机2发挥作用的服务器计算机的典型例,可列举数据中心内的服务器计算机(以下,称为服务器)。
[0038]
在主机2通过数据中心内的服务器实现的实例中,该主机(服务器)2可经由网络51而与多个最终用户终端(客户端)61连接。主机2可对该等最终用户终端61提供各种各样的服务。
[0039]
可由主机(服务器)2提供的服务例中,有(1)将系统运转平台提供给各客户端(各最终用户终端61)的平台即服务(paas,platform-as-a-service)、(2)将像虚拟服务器这样的基础设施提供给各客户端(各最终用户终端61)的基础设施即服务(iaas,infrastructure as aservice)等。
[0040]
多个虚拟机器也可在作为该主机(服务器)2发挥作用的物理服务器上执行。在主机(服务器)2上运行的该等虚拟机器各自可作为以将各种服务提供给对应的若干个客户端(最终用户终端61)的方式构成的虚拟服务器发挥作用。
[0041]
主机(服务器)2包含:存储管理功能,管理构成闪存阵列的多个快闪存储设备3;及前端功能,分别对最终用户终端61提供包含存储存取的各种服务。
[0042]
快闪存储设备3包含像nand型快闪存储器这样的非易失性存储器。一个快闪存储设备3管理从非易失性存储器内的多个块分配的多个写入对象块。所谓写入对象块表示应被写入数据的块。
[0043]
由快闪存储设备3管理的多个写入对象块分别由利用主机(服务器)2的多个客户端使用。与某一客户端对应的数据被写入至某个一个以上的写入对象块,与其他客户端对应的数据被写入至其他一个以上的写入对象块。
[0044]
若仅一个快闪存储设备3连接于主机(服务器)2,则分配与利用主机(服务器)2的客户端总数相同或更多的块作为写入对象块。
[0045]
另一方面,若多个快闪存储设备3、例如8台快闪存储设备3连接于主机(服务器)2,且主机2对该等8台快闪存储设备3均等地分配相同数量的客户端,则可在各快闪存储设备3中,分配客户端总数的1/8的数量的块作为写入对象块。
[0046]
nand型快闪存储器大多构成为对每一存储单元写入多位数据,且必须预先在每一写入对象块中,保持应写入至该写入对象块的多页份的数据。
[0047]
因此,在快闪存储设备3中存在可同时利用的多个写入对象块的环境中,必须准备与该等写入对象块的个数为相同数量的写入缓冲器。换言之,必须准备与客户端的个数为相同数量的写入缓冲器。
[0048]
而且,现代的nand型快闪存储器中,存在为削减程序干扰而应用对nand型快闪存储器多次传送多页份的相同数据之类的多阶段写入操作的实例。该多阶段写入操作至少包括第1阶段写入操作与第2阶段写入操作。
[0049]
在第1阶段写入操作中,多页份的数据被传送至nand型快闪存储器,且被写入至
nand型快闪存储器内的与某个写入对象块内的相同字线连接的多个存储单元中。在第2阶段写入操作中,该多页份数据被再次传送至nand型快闪存储器,且被写入至该写入对象块内的该等多个存储单元。如此一来,作为伴有多次传送相同数据的多阶段写入操作的典型例,可列举模糊-精细写入操作。
[0050]
通常,像模糊-精细写入操作这样的多阶段写入操作中,为削减字线间的干扰引起的程序干扰,而将数据写入操作一面在多个字线中往返一面执行。
[0051]
例如在3个字线往返的模糊-精细写入操作是将多页份的第1写入数据传送至nand型快闪存储器,而且,将第1写入数据写入至最初的物理页(与最初的字线连接的多个存储单元)(模糊写入操作)。接着,将多页份的第2写入数据传送至nand型快闪存储器,而且,将第2写入数据写入至下一个物理页(与下一个字线连接的多个存储单元)(模糊写入操作)。接着,将多页份的第3写入数据传送至nand型快闪存储器,而且,将第3写入数据进而写入至下一个物理页(与进而下一个字线连接的多个存储单元)(模糊写入操作)。而且,使写入对象的物理页面返回至最初的物理页面(与最初的字线连接的多个存储单元),将多页份的上述第1写入数据再次传送至nand型快闪存储器,而且,将该第1写入数据写入至最初的物理页面(与最初的字线连接的多个存储单元)(精细写入操作)。
[0052]
因此,在执行像模糊-精细写入操作这样的多阶段写入操作的实例中,必须在每一写入对象块中,将由应写入至一个存储单元的位数与往返的字线数的乘积表示的页份数的数据保持在写入缓冲器中。
[0053]
进而,实际上为获得更高的数据写入速度,而将数据并列地写入至多个块的实例较为多见。在此情况下,必须保持在各写入缓冲器中的数据量进而增加。
[0054]
因而,在快闪存储设备3被多个客户端共享的实例中,必须在每一客户端、即每一写入对象块中准备写入缓冲器,且在各写入缓冲器中保持大量页份数的数据。
[0055]
然而,通常快闪存储设备3内的随机存取存储器的容量有限,因此,存在难以在快闪存储设备3内的随机存取存储器上准备各自具有充分容量的充分数量的写入缓冲器的情形。
[0056]
而且,即便快闪存储设备3中设置有大容量的随机存取存储器,当共享快闪存储设备3的客户端数量较少时,也变成该大容量的随机存取存储器被浪费的结果。
[0057]
因此,本实施方式是将主机2的存储器上的特定的存储区域用作与多个写入对象块分别对应的多个写入缓冲器。因多个写入对象块分别对应于多个客户端,故该等多个写入缓冲器分别对应于该等多个客户端。
[0058]
主机2的存储器上所准备的写入缓冲器的数量与写入对象块的数量、即客户端的数量为相同数量。在主机2中,来自某个客户端的写入数据被储存在与该客户端对应的写入缓冲器。而且,来自另一客户端的写入数据被储存在与该另一客户端对应的另一写入缓冲器。
[0059]
通常,相对于快闪存储设备3可管理的最大存储容量为4g字节左右,主机2可管理的最大存储容量达到数个太字节。因此,使用主机2侧的写入缓冲器的写入缓存相比使用快闪存储设备3侧的写入缓冲器的写入缓存,可容易地增加利用主机2的客户端数。
[0060]
然而,大多数现代的nand型快闪存储器中,为减少程序干扰,而如上所述,要求进行像模糊-精细写入操作这样的多阶段写入操作。在此情况下,必须对nand型快闪存储器多
次传送相同数据,因此,若利用仅使用主机侧的写入缓冲器的构成,则必须从主机2对快闪存储设备3多次传送相同数据。由此,必须从主机2向快闪存储设备3传送的数据量、即主机2与快闪存储设备3之间的数据流通量增大,其结果,存在i/o性能低下的可能性。
[0061]
因此,本实施方式是在快闪存储设备3中,准备在多个写入对象块间共享的写入缓冲器(共享设备侧写入缓冲器)。而且,设置在快闪存储设备3内的控制器在每次从主机2接收写入请求时,均从主机2接收主机侧的多个写入缓冲器的任一个中储存的写入数据,将所接收的写入数据储存在快闪存储设备3内的共享设备侧写入缓冲器。即,与应被写入写入数据的写入对象块无关,任何写入数据均储存到该共享设备侧写入缓冲器。
[0062]
快闪存储设备3的控制器通过像模糊-精细写入操作这样的多阶段写入操作,将写入数据写入至nand型快闪存储器。多阶段写入操作至少包含像模糊写入操作这样的第1阶段写入操作、及像精细写入操作这样的第2阶段写入操作。模糊写入操作是粗略地设定各存储单元的阈值分布的写入操作,精细写入操作是调整各存储单元的阈值分布的写入操作。进而,也可在模糊写入操作与精细写入操作之间,执行中间的写入操作。
[0063]
快闪存储设备3的控制器从共享设备侧写入缓冲器获取应写入至多个写入对象块内的某个写入对象块的多页份的写入数据(第1写入数据),通过像模糊写入操作这样的第1阶段写入操作将第1写入数据写入至该写入对象块。
[0064]
为了可将来自主机2的写入数据有效地储存至共享设备侧写入缓冲器,而在共享设备侧写入缓冲器中没有空区的状态下自主机2接收到新的写入数据的情况下,快闪存储设备3的控制器将像模糊写入操作这样的第1阶段写入操作已结束的共享设备侧写入缓冲器内的写入数据(模糊状态的写入数据)丢弃,在共享设备侧写入缓冲器中确保可储存新的写入数据的空区。例如在共享设备侧写入缓冲器整体被大量模糊状态的写入数据充满的状态下,从主机2接收到新的写入数据的情况下,快闪存储设备3的控制器从该等模糊状态的写入数据之中选择应丢弃的特定的写入数据,将该选择的写入数据丢弃。由此,可将与多个客户端对应的较多数量的写入数据有效地储存至具有受到限制的容量的共享设备侧写入缓冲器中。
[0065]
而且,快闪存储设备3在应执行像第1写入数据的精细写入操作这样的第2阶段写入操作的时间点,共享设备侧写入缓冲器中不存在第1写入数据的情况下,通过将用以获取第1写入数据的请求(传送请求)发送至主机2而从主机2获取第1写入数据。
[0066]
共享设备侧写入缓冲器具有某个受到限制的容量,但若利用主机2的客户端的个数为某个固定数以下,则在应执行第2阶段写入操作的时间点,第1写入数据存在于共享设备侧写入缓冲器的概率(中率)相对较高。因此,无需将相同写入数据从主机2多次传送至快闪存储设备3,便可执行像模糊-精细写入操作这样的多阶段写入操作。由此,可将主机2与快闪存储设备3之间的数据流通量削减,因此,与每次数据写入时将相同写入数据从主机2多次传送至快闪存储设备3的情况相比,可提升快闪存储设备3的i/o性能。
[0067]
随着利用主机2的客户端的数量增加,共享设备侧写入缓冲器的中率下降。然而,在共享设备侧写入缓冲器中不存在第1写入数据的情况下(失效),快闪存储设备3的控制器通过将传送请求发送至主机2而从主机2获取第1写入数据。因此,即便客户端的数量增加,也可正常地执行像模糊-精细写入操作这样的多阶段写入操作。
[0068]
因而,快闪存储设备3可灵活应对共享快闪存储设备3的客户端的数量增加,且可
削减主机2与快闪存储设备3之间的数据流通量。
[0069]
图2表示设置在主机2的多个写入缓冲器(主机侧写入缓冲器)与设置在快闪存储设备3的共享写入缓冲器(共享设备侧写入缓冲器)的关系。
[0070]
在主机(服务器)2中,执行与多个最终用户(多个客户端)分别对应的多个虚拟机器401。在超大规模用户型的数据中心中,存在大量客户端、例如数百上千程度的客户端利用主机(服务器)2的情况。该等客户端也称为租户。
[0071]
主机(服务器)2对每一客户端(租户)提供独立的服务。在图2中,例示了客户端#0、客户端#1、客户端#2、...、客户端#m-1利用主机(服务器)2的情况。
[0072]
在各虚拟机器401中,执行由对应的客户端(租户)使用的操作系统402及用户应用程序403。
[0073]
而且,在主机(服务器)2中,执行与多个客户端分别对应的多个i/o服务404。该等i/o服务404中,也可包含块i/o服务、键值存储服务、及其他各种i/o服务。各i/o服务404包括管理用以识别数据的标签各自与快闪存储设备3的物理地址各自之间的映射的地址转换表即查询表(lut)404a。此处,标签既可以是指定逻辑地址空间上的位置的逻辑地址(例如逻辑块地址:lba),也可以是键值存储的键。
[0074]
例如,在基于lba的块i/o服务中,可使用管理逻辑地址(lba)各自与快闪存储设备3的物理地址各自之间的映射的lut。
[0075]
而且,在键值存储服务中,也可使用管理键各自与储存有对应于该等键的数据的快闪存储设备3的物理地址各自之间的映射的lut。在该lut中,也可管理标签、储存有由该标签识别的数据的物理地址、及该数据的数据长度的对应关系。
[0076]
该等各lut404a并非将来自用户应用程序403的标签(例如lba)各自分别转换为快闪存储设备3用的lba,而是将来自用户应用程序403的标签(例如lba)各自分别转换为快闪存储设备3的物理地址。
[0077]
而且,在主机(服务器)2中,设置有与多个客户端(多个租户)#0、#1、#2、...、#m-1分别对应的多个主机侧写入缓冲器(#0、#1、#2、...、#m-1)405。该等主机侧写入缓冲器405是设置在主机(服务器)2的存储器上。
[0078]
各主机侧写入缓冲器405是为了临时保持来自对应的客户端的写入数据而使用。例如将客户端(租户)#0的写入数据储存在主机侧写入缓冲器#0,将客户端(租户)#1的写入数据储存在主机侧写入缓冲器#1,将客户端(租户)#2的写入数据储存在主机侧写入缓冲器#2,同样地,将客户端(租户)#m-1的写入数据储存在主机侧写入缓冲器#m-1。
[0079]
从主机(服务器)2向快闪存储设备3的指令发送、及从快闪存储设备3向主机(服务器)2的指令完成的响应等回传是经由与多个客户端分别对应的多个i/o队列500执行。
[0080]
快闪存储设备3的控制器管理与共享快闪存储设备3的多个客户端(多个租户)#0、#1、#2、...、#m-1分别对应的多个写入对象块(闪存块#0、#1、#2、...、#m-1)602。而且,在快闪存储设备3中,设置有被多个写入对象块(闪存块)602共享的共享设备侧写入缓冲器601。共享设备侧写入缓冲器601是为了临时储存应被写入至多个写入对象块(闪存块#0、#1、#2、...、#m-1)602的任一个中的写入数据而使用。换言之,来自所有客户端的写入数据均储存在共享设备侧写入缓冲器601。
[0081]
图3表示使用共享设备侧写入缓冲器601通过快闪存储设备3执行的对各写入对象
块的数据写入操作。
[0082]
此处,快闪存储设备3中,设想对各写入对象块的数据写入由上述模糊-精细写入操作执行的情况。
[0083]
为了能够支持模糊-精细写入操作,各主机侧写入缓冲器405必须具有充分的容量。
[0084]
例如在页面大小=16k字节、每一nand型快闪存储芯片的平面数=2、往返的字线数=3、每一存储单元中写入的位数=4(qlc)、并列存取的nand型快闪存储芯片数=32的情况下,各主机侧写入缓冲器405的容量成为12m字节(=16k字节
×2×3×4×
32)。主机侧写入缓冲器405的数量与客户端(租户)的数量为相同数量,因此,该等主机侧写入缓冲器405的总容量由12m字节与客户端(租户)数的乘积表示。例如客户端(租户)数为1000,则该等主机侧写入缓冲器405的总容量成为12g字节。
[0085]
被与客户端(租户)#0对应的用户应用程序请求写入的写入数据储存在主机侧写入缓冲器(#0)405,被与客户端(租户)#1对应的用户应用程序请求写入的写入数据储存在主机侧写入缓冲器(#1)405,同样地,被与客户端(租户)#m-1对应的用户应用程序请求写入的写入数据储存在主机侧写入缓冲器(#m-1)405。
[0086]
该等各主机侧写入缓冲器(#m-1)405被当作一种高速缓存利用。因此,当由来自某个客户端的读取请求所指定的数据存在于与该客户端对应的主机侧写入缓冲器405的情况下,该数据也可从该主机侧写入缓冲器405读出。
[0087]
设置在快闪存储设备3中的共享设备侧写入缓冲器601的容量根据应实现的写入速度决定。例如共享设备侧写入缓冲器601的容量既可为2m字节到3g字节的范围内的任意容量,也可以是2m字节到4g字节的范围内的任意容量。
[0088]
在快闪存储设备3中,从主机2接收的所有写入数据均被储存在共享设备侧写入缓冲器601。
[0089]
快闪存储设备3的控制器通过模糊-精细写入操作将写入数据写入至各写入对象块602。
[0090]
从主机2接收的各写入请求包含指定应被写入写入数据的写入对象块的块地址。快闪存储设备3的控制器从共享设备侧写入缓冲器601获取与指定多个写入对象块602内的某个写入对象块(例如此处设为写入对象块#0)的一个以上的写入请求建立关联的多页份写入数据(第1写入数据)作为模糊写入操作用的写入数据(模糊数据)。例如在页面大小为16k字节,对一个存储单元写入4位数据的情况下,快闪存储设备3的控制器从共享设备侧写入缓冲器601获取应写入至写入对象块#0中的64k字节的写入数据作为模糊数据。该64k字节的写入数据也可以是与包含指定写入对象块#0的块地址的一个写入请求建立关联的写入数据。或者,在与包含指定写入对象块#0的块地址的各写入请求建立关联的写入数据的大小小于64k字节的情况下,该64k字节的写入数据也可以是与若干个写入请求分别建立关联的多个写入数据部的集合。
[0091]
而且,快闪存储设备3的控制器通过模糊写入操作将该第1写入数据(模糊数据)写入至与写入对象块#0内的写入对象的一个字线连接的多个存储单元(多个第1存储单元)。
[0092]
以同样方式,快闪存储设备3的控制器执行对该写入对象块#0内的后续的一个以上字线的模糊写入操作。
[0093]
而且,在应执行第1写入数据的精细写入操作的时间点,快闪存储设备3的控制器对共享设备侧写入缓冲器601请求第1写入数据。若共享设备侧写入缓冲器601中存在第1写入数据(点击),则快闪存储设备3的控制器从共享设备侧写入缓冲器601获取该第1写入数据作为精细写入操作用的写入数据(精细数据)。而且,快闪存储设备3的控制器通过精细写入操作将该第1写入数据(精细数据)写入至写入对象块#0内的上述多个第1存储单元。
[0094]
对于其他各写入对象块602,也以同样方式执行模糊-精细写入操作。
[0095]
快闪存储设备3的控制器例如从共享设备侧写入缓冲器601获取与指定写入对象块#m-1的一个以上的写入请求建立关联的多页份写入数据(第2写入数据)作为模糊写入操作用的写入数据(模糊数据)。而且,快闪存储设备3的控制器通过模糊写入操作将该第2写入数据(模糊数据)写入至与写入对象块#m-1内的写入对象的一个字线连接的多个存储单元(多个第2存储单元)。
[0096]
以同样方式,快闪存储设备3的控制器执行对该写入对象块#m-1内的后续的一个以上字线的模糊写入操作。
[0097]
而且,在应执行第2写入数据的精细写入操作的时间点,快闪存储设备3的控制器对于共享设备侧写入缓冲器601请求第2写入数据。本实施方式是在共享设备侧写入缓冲器601中没有空区的状态下从主机2接收到新的写入数据的情况下,将模糊写入操作已结束的共享设备侧写入缓冲器601内的某个写入数据丢弃,由此,在共享设备侧写入缓冲器601中确保用以储存新的写入数据的空区。新的写入数据储存在该得到确保的空区中。换言之,将模糊写入操作已结束的共享设备侧写入缓冲器601内的某个写入数据从共享设备侧写入缓冲器601清除,以该新的写入数据置换储存有该写入数据的共享设备侧写入缓冲器601内的区域的内容。
[0098]
因此,在利用主机2的客户端的数量相对较多的情况下,出现在应对某个字线执行精细写入操作的时间点,对该字线以模糊写入操作使用的写入数据已被丢弃的可能性。
[0099]
若上述第2写入数据不存在于共享设备侧写入缓冲器601中(失效),则快闪存储设备3的控制器通过将用以获取第2写入数据的请求(传送请求)发送至主机2,从主机2的主机侧写入缓冲器#m-1获取第2写入数据作为精细写入操作用的写入数据(精细数据)。在此情况下,将第2写入数据从主机2的主机侧写入缓冲器#m-1传送至快闪存储设备3。该传送的第2写入数据也可储存在共享设备侧写入缓冲器601。
[0100]
而且,快闪存储设备3的控制器通过精细写入操作将该第2写入数据(精细数据)写入至写入对象块#m-1内的上述多个第2存储单元。
[0101]
此处,设想支持模糊-精细写入操作所需的各主机侧写入缓冲器405的容量为12m字节,与1000个客户端(租户)对应的1000个主机侧写入缓冲器405的总容量为12g字节的情形。在共享设备侧写入缓冲器601的容量(总容量)设定为3g字节的情况下,若客户端(租户)的数量为250个以下,则不用将相同写入数据从主机2多次传送至快闪存储设备3,便可执行像模糊-精细写入操作这样的多阶段写入操作。
[0102]
随着利用主机2的客户端的数量增多,共享设备侧写入缓冲器601的中率逐渐下降。然而,在应以精细写入操作使用的写入数据不存在于共享设备侧写入缓冲器601中的情况下(失效),快闪存储设备3通过将传送请求发送至主机2而从主机2获取该写入数据。因此,即便客户端(租户)的数量增加到1000,仍可正常地执行像模糊-精细写入操作这样的多
阶段写入操作。
[0103]
而且,即便存在1000个客户端(租户),若例如8台快闪存储设备3连接于主机(服务器)2,且主机2将相同数量的客户端均等地分配至该等8台快闪存储设备3,则各快闪存储设备3只要具备1.5g字节的共享设备侧写入缓冲器601,则无需将相同写入数据从主机2多次传送至快闪存储设备3,也可执行像模糊-精细写入操作这样的多阶段写入操作。
[0104]
图4表示在3个字线往返的情况下的模糊-精细写入操作。
[0105]
此处,设想快闪存储设备3内的nand型快闪存储器是每一存储单元中储存4位数据的qlc-闪存的情形。对某个nand型快闪存储器内的一个特定写入对象块的模糊-精细写入操作以如下方式执行。
[0106]
(1)首先,将4页(p0~p3)份的写入数据传送至该nand型快闪存储器,对与该写入对象块内的字线wl0连接的多个存储单元,执行用以写入该等4页(p0~p3)份的写入数据的模糊写入操作。
[0107]
(2)接着,将下一个4页(p4~p7)份的写入数据传送至该nand型快闪存储器,对与该写入对象块内的字线wl1连接的多个存储单元,执行用以写入该等4页(p4~p7)份的写入数据的模糊写入操作。
[0108]
(3)接着,将下一个4页(p8~p11)份的写入数据传送至该nand型快闪存储器,对与该写入对象块内的字线wl2连接的多个存储单元,执行用以写入该等4页(p8~p11)份的写入数据的模糊写入操作。
[0109]
(4)当对于与字线wl2连接的多个存储单元的模糊写入操作已结束时,写入对象的字线返回字线wl0,从而可执行对于与字线wl0连接的多个存储单元的精细写入操作。而且,将与对字线wl0的模糊写入操作中使用的4页(p0~p3)份的写入数据相同的4页(p0~p3)份的写入数据再次传送至nand型快闪存储器,对与该写入对象块内的字线wl0连接的多个存储单元,执行用以写入该等4页(p0~p3)份的写入数据的精细写入操作。由此,对于页面p0~p3的模糊-精细写入操作结束。其结果,可从页面p0~p3将数据读出。
[0110]
(5)接着,将下一个4页(p12~p15)份的写入数据传送至nand型快闪存储器,对与该写入对象块内的字线wl3连接的多个存储单元,执行用以写入该等4页(p12~p15)份的写入数据的模糊写入操作。
[0111]
(6)当对于与字线wl3连接的多个存储单元的模糊写入操作已结束时,写入对象的字线返回字线wl1,从而可执行对于与字线wl1连接的多个存储单元的精细写入操作。而且,将与对字线wl1的模糊写入操作中使用的4页(p4~p7)份的写入数据相同的4页(p4~p7)份的写入数据再次传送至nand型快闪存储器,对与该写入对象块内的字线wl1连接的多个存储单元,执行用以写入该等4页(p4~p7)份的写入数据的精细写入操作。由此,对于页面p4~p7的模糊-精细写入操作结束。其结果,可从页面p4~p7将数据读出。
[0112]
图5表示在2个字线往返的情况下的模糊-精细写入操作。
[0113]
此处,设想快闪存储设备3内的nand型快闪存储器是在每一存储单元中储存4位数据的qlc-闪存的情形。对某个nand型快闪存储器内的一个特定的写入对象块的模糊-精细写入操作以如下方式执行。
[0114]
(1)首先,将4页(p0~p3)份的写入数据传送至该nand型快闪存储器,对与该写入对象块内的字线wl0连接的多个存储单元,执行用以写入该等4页(p0~p3)份的写入数据的
模糊写入操作。
[0115]
(2)接着,将下一个4页(p4~p7)份的写入数据传送至该nand型快闪存储器,对与该写入对象块内的字线wl1连接的多个存储单元,执行用以写入该等4页(p4~p7)份的写入数据的模糊写入操作。
[0116]
(3)当对于与字线wl1连接的多个存储单元的模糊写入操作已结束时,写入对象的字线返回字线wl0,从而可执行对于与字线wl0连接的多个存储单元的精细写入操作。而且,将与对字线wl0的模糊写入操作中使用的4页(p0~p3)份的写入数据相同的4页(p0~p3)份的写入数据再次传送至nand型快闪存储器,对与该写入对象块内的字线wl0连接的多个存储单元,执行用以写入该等4页(p0~p3)份的写入数据的精细写入操作。由此,对于页面p0~p3的模糊-精细写入操作结束。其结果,可从页面p0~p3将数据读出。
[0117]
(4)接着,将下一个4页(p8~p11)份的写入数据传送至nand型快闪存储器,对与该写入对象块内的字线wl2连接的多个存储单元,执行用以写入该等4页(p8~p11)份的写入数据的模糊写入操作。
[0118]
(5)当对于与字线wl2连接的多个存储单元的模糊写入操作已结束时,写入对象的字线返回字线wl1,从而可执行对于与字线wl1连接的多个存储单元的精细写入操作。而且,将与对字线wl1的模糊写入操作中使用的4页(p4~p7)份的写入数据相同的4页(p4~p7)份的写入数据再次传送至nand型快闪存储器,对与该写入对象块内的字线wl1连接的多个存储单元,执行用以写入该等4页(p4~p7)份的写入数据的精细写入操作。由此,对于页面p4~p7的模糊-精细写入操作结束。其结果,可从页面p4~p7将数据读出。
[0119]
(6)接着,将下一个4页(p12~p15)份的写入数据传送至nand型快闪存储器,对与该写入对象块内的字线wl3连接的多个存储单元,执行用以写入该等4页(p12~p15)份的写入数据的模糊写入操作。
[0120]
图6表示包含本实施方式的快闪存储设备3与主机2的计算机系统1的构成例。
[0121]
快闪存储设备3具备控制器4及非易失性存储器(nand型快闪存储器)5。快闪存储设备3也可具有随机存取存储器、例如dram6。
[0122]
nand型快闪存储器5包含具有矩阵状配置的多个存储单元的存储单元阵列。nand型快闪存储器5既可以是2维结构的nand型快闪存储器,也可以是3维结构的nand型快闪存储器。
[0123]
nand型快闪存储器5的存储单元阵列包含多个块blk0~blkm-1。块blk0~blkm-1各自由大量页面编排。擦除操作是以块为单位执行,数据写入操作及数据读入操作是以页面为单位执行。
[0124]
nand型快闪存储器5可由在一个存储单元中可储存多位的多值-快闪存储器、例如在一个存储单元中可储存4位的四阶单元(qlc,quad level cell)-快闪存储器实现。在此情况下,nand型快闪存储器5可在每一块中选择性使用用以对一个存储单元写入4位的写入模式(qlc模式)、及用以对一个存储单元写入1位的写入模式(单阶单元(slc,single level cell)模式)。适用qlc模式的块可作为qlc块进行参照,适用slc模式的块可作为slc块进行参照。上述多阶段写入操作是为了对qlc块写入数据而使用。此外,nand型快闪存储器5不限于由qlc-快闪存储器实现,也可由在一个存储单元中可储存2位的多阶单元(mlc)-快闪存储器、或在一个存储单元中可储存3位的三阶单元(tlc)-快闪存储器实现。上述多阶段的写
入操作既可用于对适用mlc模式的块(mlc块)写入数据,也可用于对适用tlc模式的块(tlc块)写入数据。
[0125]
控制器4是经由像togglenand接口、开放nand闪存接口(onfi)这样的nand接口13,与作为非易失性存储器的nand型快闪存储器5电性连接。控制器4作为以控制nand型快闪存储器5的方式构成的存储控制器运行。该控制器4也可由像system-on-a-chip(soc)(片上系统)这样的电路实现。
[0126]
nand型快闪存储器5也可如图7所示包含多个nand型快闪存储芯片(nand型快闪存储裸片)。各个nand型快闪存储芯片可独立地运行。因此,nand型快闪存储芯片作为可并列运行的单位发挥作用。在图7中,例示了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编排。内存库是作为通过内存库交错使多个存储器模块并列运行的单位发挥作用。在图7的构成例中,可通过16通道、及使用2个内存库的内存库交错,使最多32个nand型快闪存储芯片并列运行。
[0127]
擦除操作既可以一个块(物理块)为单位执行,也可以包含可并列运行的多个块的集合的超级块为单位执行。一个超级块并不限于此,但可包含从nand型快闪存储芯片#1~#32中逐一选择的总计32个块。此外,nand型快闪存储芯片#1~#32各自可具有多平面构成。例如在nand型快闪存储芯片#1~#32各自具有包含2个平面的多平面构成的情况下,一个超级块也可包含从与nand型快闪存储芯片#1~#32对应的64个平面中逐一地选择的总计64个块。
[0128]
在图8中,例示了包含32个块(此为nand型快闪存储芯片#1内的块blk2、nand型快闪存储芯片#2内的块blk3、nand型快闪存储芯片#3内的块blk7、nand型快闪存储芯片#4内的块blk4、nand型快闪存储芯片#5内的块blk6、...nand型快闪存储芯片#32内的块blk3)的一个超级块(sb)。
[0129]
作为图2、图3中说明的各写入对象块602,也可使用可并列存取的多个块的集合即超级块。
[0130]
接着,对图6的控制器4的构成进行说明。
[0131]
控制器4包含主机接口11、cpu12、nand接口13、及dram接口14等。该等主机接口11、cpu12、nand接口13、dram接口14是经由总线10相互连接。
[0132]
该主机接口11是以执行与主机2的通信的方式构成的主机接口电路。该主机接口11也可以是例如pcie控制器(nvme控制器)。或者,在快闪存储设备3经由ethernet(注册商标)而与主机2连接的构成中,主机接口11也可以是nvme over fabrics(nvmeof)控制器。快闪存储设备3经由ethernet(注册商标)而与主机2连接的构成可视需要而容易地增加快闪存储设备3的数量。进而,也可容易地增加主机2的数量。
[0133]
主机接口11从主机2接收各种请求(指令)。该等请求(指令)中,包括写入请求(写入指令)、读取请求(读取指令)、及其他各种请求(指令)。
[0134]
cpu12是以控制主机接口11、nand接口13、dram接口14的方式构成的处理器。cpu12响应快闪存储设备3的电源接通,从nand型快闪存储器5或未图示的rom将控制程序(固件)加载到dram6,而且,通过执行该固件而进行各种处理。此外,固件也可加载到控制器4内的
未图示的sram上。该cpu12可执行用以处理来自主机2的各种指令的指令处理等。cpu12的运行是通过由cpu12执行的上述固件进行控制。此外,指令处理的一部分或全部也可由控制器4内的专用硬件执行。
[0135]
cpu12可作为写入控制部21及读取控制部22发挥作用。该等写入控制部21及读取控制部22也可通过控制器4内的专用硬件实现。
[0136]
写入控制部21构成为通过至少包含伴有将多页份的数据传送至nand型快闪存储器5的第1阶段写入操作与伴有将该数据传送至nand型快闪存储器5的第2阶段写入操作的多阶段写入操作,将该数据写入至nand型快闪存储器5的与特定写入对象块内的相同字线连接的多个存储单元。该多阶段写入操作的典型例中,如上所述,存在模糊-精细写入操作。
[0137]
写入控制部21管理从nand型快闪存储器5中所含的多个块中分配的多个写入对象块。写入控制部21从主机2接收包含指定多个写入对象块的任一个写入对象块的块地址的写入请求。每当从主机2接收到写入请求时,写入控制部21从主机2接收主机2的存储器33上的多个主机侧写入缓冲器405的任一个中储存的写入数据,并将接收的写入数据储存在dram6上的共享设备侧写入缓冲器601。
[0138]
写入控制部21从共享设备侧写入缓冲器601获取与指定某个写入对象块(第1写入对象块)的一个以上写入请求建立关联的多页份写入数据(第1写入数据)。而且,写入控制部21通过像模糊写入操作这样的第1阶段写入操作,将该第1写入数据写入至与第1写入对象块内的写入对象的一个字线连接的多个存储单元(多个第1存储单元)。
[0139]
当在应执行第1写入数据的第2阶段写入操作的时间点,第1写入数据存在于共享设备侧写入缓冲器601的情况下,写入控制部21从共享设备侧写入缓冲器601获取第1写入数据,通过第2阶段写入操作将第1写入数据写入至第1写入对象块的上述多个第1存储单元。
[0140]
当在应执行第1写入数据的第2阶段写入操作的时间点,第1写入数据不存在于共享设备侧写入缓冲器601的情况下,写入控制部21通过将用以获取第1写入数据的请求(传送请求)发送至主机2,从主机2获取第1写入数据,并通过第2阶段写入操作将第1写入数据写入至第1写入对象块的上述多个第1存储单元。
[0141]
而且,写入控制部21通过将共享设备侧写入缓冲器601内的某个写入数据丢弃而在共享设备侧写入缓冲器601中确保空区。
[0142]
例如,写入控制部21在某个写入数据的精细写入操作已结束的情况下、即该写入数据的多阶段写入操作已结束的情况下,将该写入数据从共享设备侧写入缓冲器601中丢弃。
[0143]
而且,当共享设备侧写入缓冲器601中没有空区的状态下,从主机2接收到新的写入数据的情况下,写入控制部21从模糊写入操作已结束的共享设备侧写入缓冲器601内的写入数据之中选择应丢弃的写入数据,将所选择的写入数据从共享设备侧写入缓冲器601中丢弃。
[0144]
作为用以选择应丢弃的写入数据的演算法可使用在像模糊写入操作这样的第1阶段写入操作已结束的共享设备侧写入缓冲器601内的写入数据之中选择最早期的写入数据的先进先出。
[0145]
相较对与数据写入量较少的客户端(租户)对应的写入对象块的数据写入操作的
进行速度,对与数据写入量较多的客户端(租户)对应的写入对象块的数据写入操作的进行速度存在变快的倾向。因此,可通过使用将像模糊写入操作这样的第1阶段写入操作已结束的共享设备侧写入缓冲器601内的写入数据之中最早期的写入数据丢弃之类的方法,减少将传送请求发送至主机2的频度。
[0146]
此外,用以选择应从像模糊写入操作这样的第1阶段写入操作已结束的共享设备侧写入缓冲器601内的写入数据之中丢弃的写入数据的演算法不限于先进先出,也可使用lru、像随机那样的其他演算法。
[0147]
读取控制部22从主机2接收指定块地址及页面地址的读取请求(读取指令),将由该块地址及页面地址指定的nand型快闪存储器5内的物理存储位置中储存的数据读出,并将该读出的数据回传至主机2。
[0148]
nand接口13是以在cpu12的控制之下,控制nand型快闪存储器5的方式构成的存储器控制电路。
[0149]
dram接口14是以在cpu12的控制之下,控制dram6的方式构成的dram控制电路。dram6的存储区域的一部分被用作共享设备侧写入缓冲器601。
[0150]
主机2是像服务器那样的计算机,且作为它的硬件组件,具备主机存储控制器31、处理器32、及存储器33。该等主机存储控制器31、处理器32、存储器33也可经由总线30而相互连接。存储器33是像dram那样的随机存取存储器,且存储器33的存储区域的一部分被用作多个主机侧写入缓冲器405。
[0151]
主机2更具备网络接口34。
[0152]
图9表示由主机2与快闪存储设备3执行的数据写入处理的例子。
[0153]
此处,设想在应执行对某个写入对象块的某个字线的精细写入操作的时间点,应对与该字线连接的多个存储单元写入的写入数据存在于共享设备侧写入缓冲器601的情形。
[0154]
(1)若与某个客户端(租户)对应的用户应用程序请求数据写入,则将该数据(写入数据)储存到与该客户端(租户)对应的主机侧写入缓冲器405。而且,从主机2对快闪存储设备3发送写入请求。写入请求亦可包含例如块地址与标签。如上所述,标签是用以识别写入数据的信息(例如lba、键值存储的键等)。而且,写入请求也可包含表示储存有写入数据的主机侧写入缓冲器405内的位置的存储位置信息。写入请求可在例如主机侧写入缓冲器405中储存有特定量的写入数据之类的条件满足时,从主机2发送至快闪存储设备3。在快闪存储设备3的控制器4中,写入控制部21接收到来自主机2的写入请求的情况下,写入控制部21从主机2接收主机侧写入缓冲器405中储存的写入数据。该写入数据可与写入请求一同地从主机2发送至快闪存储设备3,写入控制部21也可通过将用以获取写入数据的请求(传送请求)发送至主机2而从主机2获取该写入数据。该传送请求包含表示主机侧写入缓冲器405内的位置的上述存储位置信息。
[0155]
(2)(3)在快闪存储设备3的控制器4中,写入控制部21决定由所接收的写入请求中的块地址指定的写入对象块内的写入对象的页面的页面地址。写入控制部21从共享设备侧写入缓冲器601获取应写入至该写入对象块的多页份的第1写入数据。写入控制部21通过模糊写入操作将该多页份的第1写入数据经由nand接口13写入至该写入对象块。在此情况下,写入控制部21将该多页份的第1写入数据(模糊数据)传送至包含该写入对象块的nand型快
闪存储芯片,将第1写入数据写入至与该写入对象块内的写入对象的字线连接的多个第1存储单元(模糊写入操作)。
[0156]
(4)因对后续的1个以上字线的模糊写入操作结束而达到应执行该第1写入数据的精细写入的时间点后,写入控制部21对共享设备侧写入缓冲器601请求多页份的第1写入数据。在该多页份的第1写入数据存在于共享设备侧写入缓冲器601的情况下,写入控制部21从共享设备侧写入缓冲器601获取多页份的第1写入数据。写入控制部21通过精细写入操作将该多页份的第1写入数据经由nand接口13写入至该写入对象块。在此情况下,写入控制部21将该多页份的第1写入数据(精细数据)传送至包含该写入对象块的nand型快闪存储芯片,并将第1写入数据写入至该写入对象块内的上述多个第1存储单元(精细写入操作)。
[0157]
(5)写入控制部21将精细写入操作已结束的多页份的第1写入数据(精细状态的写入数据)从共享设备侧写入缓冲器601中丢弃,由此,增加共享设备侧写入缓冲器601的空区。
[0158]
图10表示通过主机2与快闪存储设备3执行的数据写入处理的另一例。
[0159]
此处,设想在应执行对某个写入对象块的某个字线的精细写入操作的时间点,应写入至与该字线连接的多个存储单元的写入数据不存在于共享设备侧写入缓冲器601中的情形。
[0160]
(1’)若与某个客户端(租户)对应的用户应用程序请求数据写入,则将该数据(写入数据)储存到与该客户端(租户)对应的主机侧写入缓冲器405。而且,从主机2对快闪存储设备3发送写入请求。写入请求也可包含例如块地址与标签。如上所述,标签是用以识别写入数据的信息(例如lba、键值存储的键等)。而且,写入请求也可包含表示储存有写入数据的主机侧写入缓冲器405内的位置的存储位置信息。写入请求可在例如主机侧写入缓冲器405中储存有特定量的写入数据之类的条件满足时,从主机2发送至快闪存储设备3。在快闪存储设备3的控制器4中,写入控制部21接收到来自主机2的写入请求的情况下,写入控制部21从主机2接收主机侧写入缓冲器405中储存的写入数据。该写入数据可与写入请求一同地从主机2发送至快闪存储设备3,写入控制部21也可通过将用以获取写入数据的请求(传送请求)发送至主机2而从主机2获取该写入数据。该传送请求包含表示主机侧写入缓冲器405内的位置的上述存储位置信息。
[0161]
(2’)(3’)在快闪存储设备3的控制器4中,写入控制部21决定由接收的写入请求内的块地址指定的写入对象块内的写入对象的页面的页面地址。写入控制部21从共享设备侧写入缓冲器601获取应写入至该写入对象块的多页份的第1写入数据。写入控制部21通过模糊写入操作将该多页份的第1写入数据经由nand接口13写入至该写入对象块。在此情况下,写入控制部21将该多页份的第1写入数据(模糊数据)传送至包含该写入对象块的nand型快闪存储芯片,并将第1写入数据写入至与该写入对象块内的写入对象的字线连接的多个第1存储单元(模糊写入操作)。
[0162]
(4’)因对后续的1个以上的字线的模糊写入操作结束而达到应执行该第1写入数据的精细写入的时间点后,写入控制部21对共享设备侧写入缓冲器601请求多页份的第1写入数据。在该多页份的第1写入数据不存在于共享设备侧写入缓冲器601中的情况下,写入控制部21通过将用以获取第1写入数据的请求(传送请求)发送至主机2而从主机2获取第1写入数据。该传送请求包含表示主机侧写入缓冲器405内的位置的上述存储位置信息。所获
取的第1写入数据也可储存在共享设备侧写入缓冲器601中。
[0163]
(5’)写入控制部21通过精细写入操作将该多页份的第1写入数据经由nand接口13写入至该写入对象块。在此情况下,写入控制部21将该多页份的第1写入数据(精细数据)传送至包含该写入对象块的nand型快闪存储芯片,并将第1写入数据写入至该写入对象块内的上述多个第1存储单元(精细写入操作)。
[0164]
(6’)写入控制部21将精细写入操作已结束的多页份的第1写入数据(精细状态的写入数据)从共享设备侧写入缓冲器601中丢弃,由此,增加共享设备侧写入缓冲器601的空区。
[0165]
图11表示使用共享设备侧写入缓冲器601通过快闪存储设备3的控制器4执行的模糊-精细写入操作与将共享设备侧写入缓冲器601的数据丢弃的处理。
[0166]
图11中,为简化图示而例示共享设备侧写入缓冲器601包含区域101~109的情形。该等区域101~109各自具有例如4页份的大小。而且,在图11中,设想一边在3个字线wl中往返一边执行模糊-精细写入操作的情形。
[0167]
在共享设备侧写入缓冲器601的区域101、102中分别储存的写入数据d1、d2为应写入至写入对象块blk11的写入数据的情况下,控制器4(1)将4页份的写入数据d1通过模糊写入操作写入至写入对象块blk11的页面p0-p3(与字线wl0连接的多个存储单元),而且,(2)将4页份的写入数据d2通过模糊写入操作写入至写入对象块blk11的页面p4-p7(与字线wl1连接的多个存储单元)。
[0168]
在共享设备侧写入缓冲器601的区域103、104、105中储存的写入数据d11、d12、d13为应写入至写入对象块blk101的写入数据的情况下,控制器4(3)将4页份的写入数据d11通过模糊写入操作写入至写入对象块blk101的页面p0-p3(与字线wl0连接的多个存储单元),(4)将4页份的写入数据d12通过模糊写入操作写入至写入对象块blk101的页面p4-p7(与字线wl1连接的多个存储单元),(5)将4页份的写入数据d13通过模糊写入操作写入至写入对象块blk101的页面p8-p11(与字线wl2连接的多个存储单元)。
[0169]
当对字线wl2的4页份写入数据d13的模糊写入操作已结束之后,控制器4(6)将4页份的写入数据d11通过精细写入操作写入至写入对象块blk101的页面p0-p3(与字线wl0连接的多个存储单元)。在写入数据d11的精细写入操作结束后,该写入数据d11的状态从模糊状态变为精细状态。而且,控制器4(7)将精细写入操作已结束的该写入数据d11(精细状态的写入数据)从共享设备侧写入缓冲器601中丢弃,使区域103成为空区。
[0170]
图12表示将共享设备侧写入缓冲器601中没有空区的状态下从主机2接收到新的写入数据的情况下执行的精细写入操作已结束的共享设备侧写入缓冲器601内的写入数据丢弃的处理。
[0171]
图12的上部表示共享设备侧写入缓冲器601整体被模糊写入操作已结束的模糊状态的写入数据(d21~d23、d31~d33、d41~d43)充满,共享设备侧写入缓冲器601中没有空区的状态。
[0172]
在该状态下从主机2接收到新的写入数据的情况下,快闪存储设备3的控制器4如图12的中部所示,从模糊写入操作已结束的写入数据(模糊状态的写入数据)之中,选择最早期的写入数据(此处为写入数据d11)作为应丢弃的写入数据,将该最早期的写入数据(此处为写入数据d11)从共享设备侧写入缓冲器601中丢弃。
[0173]
而且,快闪存储设备3的控制器4如图12的下部所示,在通过将写入数据d11丢弃而成为空区的区域101中储存已接收的新的写入数据(此处为写入数据d51)。
[0174]
图13的流程图表示通过快闪存储设备3的控制器4执行的数据写入处理的顺序。
[0175]
在步骤s101中,控制器4从主机2接收包含指定多个写入对象块602中的任一个的块地址的写入请求。每当控制器4从主机2接收写入请求时,控制器4从主机2接收多个主机侧写入缓冲器405的任一个中储存的写入数据,并将接收的写入数据储存在共享设备侧写入缓冲器601中。
[0176]
在步骤s102中,控制器4从共享设备侧写入缓冲器601获取与指定某个写入对象块的一个以上的写入请求建立关联的多页份的第1写入数据。
[0177]
在步骤s103、s104中,控制器4将获取的多页份的第1写入数据传送至nand型快闪存储器5,通过模糊写入操作将该第1写入数据写入至与该写入对象块内的写入对象的一个字线连接的多个第1存储单元。
[0178]
在步骤s105中,在应开始该第1写入数据的精细写入操作的时间点,控制器4判定该第1写入数据是否存在于共享设备侧写入缓冲器601。
[0179]
若该第1写入数据存在于共享设备侧写入缓冲器601(步骤s106的是(yes)),则在步骤s107中,控制器4从共享设备侧写入缓冲器601获取第1写入数据。在步骤s108、s109中,控制器4将获取的多页份的第1写入数据传送至nand型快闪存储器5,通过精细写入操作将该第1写入数据写入至该写入对象块内的上述多个第1存储单元。而且,在步骤s110中,控制器4将第1写入数据从共享设备侧写入缓冲器601中丢弃。
[0180]
若该第1写入数据不存在于共享设备侧写入缓冲器601中(步骤s106的否(no)),则在步骤s111中,控制器4将传送请求发送至主机2,将从主机侧写入缓冲器405传送至快闪存储设备3的该第1写入数据储存在共享设备侧写入缓冲器601。而且,控制器4执行步骤s107~s110的处理。
[0181]
图14是用以说明主机2指定写入对象块且快闪存储设备3决定写入对象页面的数据写入操作、及主机2指定块地址与页面地址的数据读出操作的图。
[0182]
主机2的i/o服务404将块分配请求及写入请求送出至快闪存储设备3。
[0183]
快闪存储设备3的控制器4包含块分配部701、及页面分配部702。块分配部701、及页面分配部702也可包含在图6中说明的写入控制部21。
[0184]
数据写入操作以如下的顺序执行。
[0185]
(1)在主机2的i/o服务404必须将数据(写入数据)写入至快闪存储设备3时,i/o服务404也可请求快闪存储设备3分配可用作写入对象块的空闲块。当块分配部701接收到该请求(块分配请求)时,块分配部701将空闲块群的一个空闲块作为写入对象块分配给主机2,并将被分配的写入对象块的块地址(blk#)通知主机2。
[0186]
(2)主机2的i/o服务404将包含指定被分配的写入对象块的块地址、识别写入数据的标签、及该写入数据的数据长度的写入请求发送至快闪存储设备3。而且,i/o服务404将写入数据传送至快闪存储设备3。
[0187]
(3)在页面分配部702接收到写入请求时,页面分配部702决定表示具有由写入请求指定的块地址的块(写入对象块)内的写入对象页面的页面地址。控制器4从共享设备侧写入缓冲器601获取写入数据,将该写入数据写入至写入对象块内的该被决定的写入对象
页面。
[0188]
(4)控制器4将表示该写入对象页面的页面地址作为对写入请求的响应通知主机2。或者,控制器4也可将写入请求中所含的标签、写入请求中所含的块地址及被决定的页面地址之组作为对写入请求的响应通知主机2。在主机2中,以将表示写入有写入数据的物理存储位置的物理地址(块地址、页面地址)映射至该写入数据的标签的方式,将lut404a更新。
[0189]
数据读取操作以如下的顺序执行。
[0190]
(1)’在主机2必须从快闪存储设备3读取数据时,主机2通过参照lut404a,从lut404a获取与应读取的数据的标签对应的物理地址(块地址、页面地址)。
[0191]
(2)’主机2将指定所获取的块地址及页面地址的读取请求送出至快闪存储设备3。在快闪存储设备3的控制器4从主机2接收到该读取请求时,控制器4基于块地址及页面地址,从读取对象的块内的读取对象的物理存储位置中读取数据。
[0192]
图15表示快闪存储设备3中适用的块分配指令。
[0193]
块分配指令是对快闪存储设备3请求写入对象块(空闲块)分配的指令(块分配请求)。主机2通过将块分配指令发送至快闪存储设备3,对快闪存储设备3请求分配写入对象块,由此,便可获取块地址(被分配的写入对象块的块地址)。
[0194]
图16表示对块分配指令的响应。
[0195]
当从主机2接收到块分配指令时,快闪存储设备3从空闲块列表中,选择应分配给主机2的空闲块,并将所选择的空闲块作为写入对象块分配,而且,使包含该写入对象块的块地址的响应返回至主机2。
[0196]
图17表示快闪存储设备3中适用的写入指令。
[0197]
写入指令是对快闪存储设备3请求数据写入的指令。该写入指令也可包含指令id、块地址、标签、长度等。
[0198]
指令id是表示该指令为写入指令的id(指令码),且写入指令中包含写入指令用的指令id。
[0199]
块地址是指定应被写入数据的写入对象块的物理地址。
[0200]
标签是用以识别应写入的写入数据的标识符。该标签如上所述既可以是像lba这样的逻辑地址,也可以是键值存储的键。在标签是像lba这样的逻辑地址时,该写入指令中所含的逻辑地址(起始lba)表示应写入有写入数据的逻辑地址空间内的逻辑位置(初始的逻辑位置)。
[0201]
长度表示应写入的写入数据的长度。
[0202]
写入指令可更包含表示储存有写入数据的主机侧写入缓冲器405内的位置的存储位置信息。
[0203]
当从主机2接收到写入指令时,控制器4决定具有由写入指令指定的块地址的写入对象块内的写入对象位置(写入对象页面)。该写入对象页面是考量页面写入顺序的制约及坏页等后决定。而且,控制器4将来自主机2的数据写入至该写入对象块内的该写入对象位置(写入对象页面)。
[0204]
图18表示对图17的写入指令的响应。
[0205]
该响应包括页面地址及长度。页面地址是表示被写入数据的写入对象块内的物理
存储位置的物理地址。该物理地址可由块内偏移(即页面地址与页面内偏移之组)表示。长度表示被写入的数据的长度。
[0206]
或者,该响应不仅包含页面地址(块内偏移)及长度,也可更包含标签、块地址。标签是图17的写入指令中所含的标签。块地址是图17的写入指令中所含的块地址。
[0207]
图19表示快闪存储设备3中适用的读取指令。
[0208]
读取指令是对快闪存储设备3请求数据读出的指令。该读取指令包括指令id、标签、块地址、页面地址、及长度。
[0209]
指令id是表示该指令为读取指令的id(指令码),且读取指令中包含读取指令用的指令id。
[0210]
块地址指定储存有应读取的数据的块。页面地址指定储存有应读取的数据的页面。该页面地址也可由表示储存有应读取的数据的块内的物理存储位置的块内偏移(即页面地址与页面内偏移之组)表示。长度表示应读取的数据的长度。
[0211]
图20表示由1个以上的slc-块实现的共享设备侧写入缓冲器601的例子。
[0212]
在至此为止的说明中,设想了由像dram6这样的随机存取存储器实现共享设备侧写入缓冲器601的情形。然而,由于对每一存储单元写入1位数据的slc-块的数据写入速度快于对每一存储单元写入多位数据的块的数据写入速度,故而,共享设备侧写入缓冲器601如图20所示也可由对每一存储单元写入1位数据的一个以上slc-块实现。在此情况下,各写入对象块也可由对每一存储单元写入多位数据的块、例如对每一存储单元写入4位数据的qlc-块实现。
[0213]
如以上所说明,根据本实施方式,每当从主机2接收到写入请求时,与多个写入对象块602分别对应的多个主机侧写入缓冲器405的任一个中储存的写入数据被储存到在多个写入对象块602间共享的共享设备侧写入缓冲器601中。而且,从共享设备侧写入缓冲器601获取应写入至多个写入对象块602内的第1写入对象块的多页份的第1写入数据,通过像模糊写入操作这样的第1阶段写入操作将第1写入数据写入至第1写入对象块。当在共享设备侧写入缓冲器601中没有空区的状态下从主机2接收到写入数据的情况下,将第1阶段写入操作已结束的共享设备侧写入缓冲器601内的写入数据丢弃,在共享设备侧写入缓冲器601中确保空区。当在应执行像第1写入数据的精细写入操作这样的第2阶段写入操作的时间点,共享设备侧写入缓冲器601中不存在第1写入数据的情况下,通过将用以获取第1写入数据的请求发送至主机2而从主机2获取第1写入数据。
[0214]
因此,仅在共享设备侧写入缓冲器601中不存在第1写入数据的情况下,将相同写入数据从主机2再次传送至快闪存储设备3即可,故而,可灵活地应对写入对象指南的增加即共享快闪存储设备3的客户端的数量增加,且可将主机2与快闪存储设备3之间的数据流通量削减。
[0215]
此外,在本实施方式中,说明了使用共享设备侧写入缓冲器601执行像模糊-精细写入操作这样的多阶段写入操作的情况,但本实施方式的构成及写入处理的顺序不仅限于多阶段写入操作,也可适用于将多页份数据1次传送至nand型快闪存储器5的全序列写入操作。
[0216]
而且,在本实施方式中,作为快闪存储设备3中适用的写入指令,说明了包含指定写入对象块的块地址的写入请求(写入指令),但也可使用包含块地址与页面地址两者的写
入请求(写入指令)。
[0217]
而且,在本实施方式中,作为非易失性存储器,例示了nand型快闪存储器。然而,本实施方式的功能也可适用于例如像mram(magnetoresistive random access memory,磁阻式随机存取存储器)、pram(phase change random access memory,相变随机存取存储器)、reram(resistive random access memory,电阻随机存取存储器)、或feram(ferroelectric random access memory,铁电随机存取存储器)这样的其他各种非易失性存储器。
[0218]
对本发明的若干实施方式进行了说明,但该等实施方式是作为示例而提示,并非意在限定发明范围。该等新颖的实施方式可利用其他各种方式实施,在不脱离发明主旨的范围内,可进行省略、置换、变更。该等实施方式或其变化包含在发明的范围或主旨中,并且包含在权利要求书中记载的发明及其均等的范围中。
[0219]
[符号的说明]
[0220]2ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
主机
[0221]3ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
快闪存储设备
[0222]4ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
控制器
[0223]5ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
nand型快闪存储器
[0224]
21
ꢀꢀꢀꢀꢀꢀꢀꢀ
写入控制部
[0225]
405
ꢀꢀꢀꢀꢀꢀꢀ
主机侧写入缓冲器
[0226]
601
ꢀꢀꢀꢀꢀꢀꢀ
共享设备侧写入缓冲器

技术特征:
1.一种存储系统,可与主机连接,所述主机包含数据缓冲器,所述存储系统具备:非易失性存储器,包含多个字线,所述多个字线至少包含第1字线和第2字线,所述多个字线中的每一个连接多个存储单元;写入缓冲器;及控制器,与所述非易失性存储器电性连接,且构成为:执行将数据写入至所述非易失性存储器的多阶段写入操作,所述多阶段写入操作至少包含第1阶段写入操作与第2阶段写入操作,所述控制器进而构成为:将第1数据从所述主机的所述数据缓冲器传送至所述写入缓冲器;将所述第1数据从所述写入缓冲器传送至所述非易失性存储器;对与所述第1字线连接的所述多个存储单元执行所述第1数据的所述第1阶段写入操作;将第2数据从所述主机的所述数据缓冲器传送至所述写入缓冲器;将所述第2数据从所述写入缓冲器传送至所述非易失性存储器;对与所述第2字线连接的所述多个存储单元执行所述第2数据的所述第1阶段写入操作;且在执行所述第1数据的所述第2阶段写入操作中,判定所述第1数据未储存在所述写入缓冲器中;响应于判定所述第1数据未储存在所述写入缓冲器中,将所述第1数据再次从所述主机的所述数据缓冲器传送至所述写入缓冲器;将所述第1数据再次从所述写入缓冲器传送至所述非易失性存储器;且对与所述第1字线连接的所述多个存储单元执行所述第1数据的所述第2阶段写入操作。2.根据权利要求1所述的存储系统,其中所述控制器进而构成为:在执行所述第1数据的所述第2阶段写入操作中,判定所述第1数据储存在所述写入缓冲器中;响应于判定所述第1数据储存在所述写入缓冲器中,不将所述第1数据再次从所述主机的所述数据缓冲器传送至所述写入缓冲器地,将所述第1数据再次从所述写入缓冲器传送至所述非易失性存储器;且对与所述第1字线连接的所述多个存储单元执行所述第1数据的所述第2阶段写入操作。3.根据权利要求1所述的存储系统,其中所述控制器进而构成为:判定储存所述第1数据的所述写入缓冲器不包含用于储存所述第2数据的未使用空间;且响应于判定储存所述第1数据的所述写入缓冲器不包含用于储存所述第2数据的未使用空间,在将所述第2数据从所述主机的所述数据缓冲器传送至所述写入缓冲器之前,将所述第1数据从所述写入缓冲器中丢弃。
4.根据权利要求1所述的存储系统,其中所述控制器进而构成为:判定所述写入缓冲器不包含用于储存第3数据的未使用空间;且响应于判定所述写入缓冲器不包含用于储存所述第3数据的未使用空间,将所述第1阶段写入操作已结束的所述写入缓冲器内的数据中的最早期的数据从所述写入缓冲器中丢弃。5.根据权利要求1所述的存储系统,其中所述控制器进而构成为:判定所述写入缓冲器不包含用于储存第3数据的未使用空间;且响应于判定所述写入缓冲器不包含用于储存所述第3数据的未使用空间,将所述第1阶段写入操作已结束的所述写入缓冲器内的数据中最近最少使用的数据从所述写入缓冲器中丢弃。6.根据权利要求1所述的存储系统,其中所述控制器进而构成为:在所述第1数据的所述第2阶段写入操作已结束之后,将所述第1数据从所述写入缓冲器中丢弃。7.根据权利要求1所述的存储系统,其中所述非易失性存储器进而包含多个块,所述多个块中的每一个是数据擦除操作的单位,所述多个块至少包含第1块和第2块,所述第1块包含所述第1字线,所述第2块包含所述第2字线,所述主机的所述数据缓冲器包含分别对应于所述多个块的多个区,所述多个区至少包含第1区和第2区,且所述控制器进而构成为:通过将请求发送至所述主机,将所述第1数据从所述数据缓冲器的所述第1区传送至所述写入缓冲器,所述第1区对应于所述第1块;且通过将另一请求发送至所述主机,将所述第2数据从所述数据缓冲器的所述第2区传送至所述写入缓冲器,所述第2区对应于所述第2块。8.根据权利要求1所述的存储系统,其中所述第1阶段写入操作包含:用于将具有第1大小的数据编程到与所述多个字线中的一个字线连接的所述多个存储单元以设定与所述一个字线连接的所述多个存储单元的阈值电压分布的操作,所述第2阶段写入操作包含:用于将具有所述第1大小的所述数据编程到与所述一个字线连接的所述多个存储单元以调整与所述一个字线连接的所述多个存储单元的所述阈值电压分布的操作。9.根据权利要求1所述的存储系统,其中所述写入缓冲器由随机存取存储器实现。10.根据权利要求1所述的存储系统,其中所述非易失性存储器进而包含多个块,所述多个块中的每一个是数据擦除操作的单位,所述多个块至少包含第1块和第2块,所述第1块包含所述第1字线和所述第2字线,
所述第1块中的至少一个存储单元构成为储存第1数目位的数据,所述第2块中的至少一个存储单元构成为储存第2数目位的数据,所述第2数目小于所述第1数目,且所述写入缓冲器由所述第2块实现。11.一种存储系统中的非易失性存储器的控制方法,所述存储系统可与包含数据缓冲器的主机连接,所述存储系统包含写入缓冲器和所述非易失性存储器,所述非易失性存储器包含多个字线,所述多个字线至少包含第1字线和第2字线,所述多个字线中的每一个连接多个存储单元,所述方法包括:将第1数据从所述主机的所述数据缓冲器传送至所述写入缓冲器;将所述第1数据从所述写入缓冲器传送至所述非易失性存储器;对与所述第1字线连接的所述多个存储单元执行所述第1数据的第1阶段写入操作;所述第1阶段写入操作是用于将所述数据写入至所述非易失性存储器的多阶段写入操作中的一个操作;将第2数据从所述主机的所述数据缓冲器传送至所述写入缓冲器;将所述第2数据从所述写入缓冲器传送至所述非易失性存储器;对与所述第2字线连接的所述多个存储单元执行所述第2数据的所述第1阶段写入操作;及在执行所述第1数据的第2阶段写入操作中,所述第2阶段写入操作是所述多阶段写入操作中的另一个操作,判定所述第1数据未储存在所述写入缓冲器中;响应于判定所述第1数据未储存在所述写入缓冲器中,将所述第1数据再次从所述主机的所述数据缓冲器传送至所述写入缓冲器;将所述第1数据再次从所述写入缓冲器传送至所述非易失性存储器;及对与所述第1字线连接的所述多个存储单元执行所述第1数据的所述第2阶段写入操作。12.根据权利要求11所述的方法,其更包括:在执行所述第1数据的所述第2阶段写入操作中,判定所述第1数据储存在所述写入缓冲器中;响应于判定所述第1数据储存在所述写入缓冲器中,不将所述第1数据再次从所述主机的所述数据缓冲器传送至所述写入缓冲器地,将所述第1数据再次从所述写入缓冲器传送至所述非易失性存储器;及对与所述第1字线连接的所述多个存储单元执行所述第1数据的所述第2阶段写入操作。13.根据权利要求11所述的方法,其更包括:判定储存所述第1数据的所述写入缓冲器不包含用于储存所述第2数据的未使用空间;及响应于判定储存所述第1数据的所述写入缓冲器不包含用于储存所述第2数据的未使用空间,在将所述第2数据从所述主机的所述数据缓冲器传送至所述写入缓冲器之前,将所述第1数据从所述写入缓冲器中丢弃。
14.根据权利要求11所述的方法,其更包括:判定所述写入缓冲器不包含用于储存第3数据的未使用空间;及响应于判定所述写入缓冲器不包含用于储存所述第3数据的未使用空间,将所述第1阶段写入操作已结束的所述写入缓冲器内的数据中的最早期数据从所述写入缓冲器中丢弃。15.根据权利要求11所述的方法,其更包括:判定所述写入缓冲器不包含用于储存第3数据的未使用空间;及响应于判定所述写入缓冲器不包含用于储存所述第3数据的未使用空间,将所述第1阶段写入操作已结束的所述写入缓冲器内的数据中最近最少使用的数据从所述写入缓冲器中丢弃。16.根据权利要求11所述的方法,其更包括:在所述第1数据的所述第2阶段写入操作已结束之后,将所述第1数据从所述写入缓冲器中丢弃。17.根据权利要求11所述的方法,其中所述非易失性存储器进而包含多个块,所述多个块中的每一个是数据擦除操作的单位,所述多个块至少包含第1块和第2块,所述第1块包含所述第1字线,所述第2块包含所述第2字线,所述主机的所述数据缓冲器包含分别对应于所述多个块的多个区,所述多个区至少包含第1区和第2区,且所述方法更包括:通过将请求发送至所述主机,将所述第1数据从所述数据缓冲器的所述第1区传送至所述写入缓冲器,所述第1区对应于所述第1块;及通过将另一请求发送至所述主机,将所述第2数据从所述数据缓冲器的所述第2区传送至所述写入缓冲器,所述第2区对应于所述第2块。18.根据权利要求11所述的方法,其中所述第1阶段写入操作包含:用于将具有第1大小的数据编程到与所述多个字线中的一个字线连接的所述多个存储单元以设定与所述一个字线连接的所述多个存储单元的阈值电压分布的操作,所述第2阶段写入操作包含:用于将具有所述第1大小的所述数据编程到与所述一个字线连接的所述多个存储单元以调整与所述一个字线连接的所述多个存储单元的所述阈值电压分布的操作。19.根据权利要求11所述的方法,其中所述写入缓冲器由随机存取存储器实现。20.根据权利要求11所述的方法,其中所述非易失性存储器进而包含多个块,所述多个块中的每一个是数据擦除操作的单位,所述多个块至少包含第1块和第2块,所述第1块包含所述第1字线和所述第2字线,所述第1块中的至少一个存储单元构成为储存第1数目位的数据,所述第2块中的至少一个存储单元构成为储存第2数目位的数据,所述第2数目小于所述第1数目,且所述写入缓冲器由所述第2块实现。

技术总结
实施方式将实现可将数据流通量削减的存储系统及非易失性存储器的控制方法。实施方式的存储系统将从主机接收的写入数据储存到在多个写入对象块间共享的共享写入缓冲器,从共享写入缓冲器获取多页份的第1写入数据,利用第1阶段的写入操作将第1写入数据写入到第1写入对象块。存储系统在共享写入缓冲器中没有空区的状态下从主机接收到写入数据的情况下,将第1阶段写入操作已结束的共享写入缓冲器内的写入数据丢弃。当在应执行第1写入数据的第2阶段写入操作的时间点,第1写入数据不存在于共享写入缓冲器的情况下,存储系统将用以获取第1写入数据的请求发送给主机。1写入数据的请求发送给主机。1写入数据的请求发送给主机。


技术研发人员:菅野伸一
受保护的技术使用者:铠侠股份有限公司
技术研发日:2018.12.14
技术公布日:2023/7/12
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐