存储系统以及用于控制存储系统的方法与流程

文档序号:22400680发布日期:2020-09-29 18:12阅读:375来源:国知局
存储系统以及用于控制存储系统的方法与流程

相关申请的交叉引用

本申请基于并主张2019年3月22日提交的序列号为2019-55415的日本专利申请的优先权益,该申请的全部内容通过引用并入本文中。

本文描述的实施例一般地涉及存储系统以及用于控制存储系统的方法。



背景技术:

近年来,具有非易失性存储器的存储系统被广泛使用。作为这样的存储系统之一,例如,固态驱动器(ssd)是已知的,ssd配备有诸如nand闪速存储器的非易失性存储器。在诸如ssd的存储系统中,可以使用以非易失性方式存储数据的命令(例如,转储清除(flush)命令等)。主机使用这样的命令来请求存储系统执行非易失化处理,以将最初以易失性方式存储的数据写入非易失性存储器中。



技术实现要素:

一般而言,根据一个实施例,一种存储系统包括易失性存储器、非易失性存储器以及控制器电路。所述控制器电路被配置为控制所述易失性存储器和所述非易失性存储器并执行写处理和非易失化处理。所述控制器电路被进一步配置为在所述写处理期间,将写数据存储在所述易失性存储器中,以及在所述非易失化处理期间,当确定存储在写缓冲区中的数据大小小于所述非易失性存储器的写入单位时,暂停所述非易失化处理的完成,并且不返回所述非易失化处理的完成的通知。

根据实施例,可以提高写入效率。

附图说明

图1是示出根据实施例的包括存储系统的信息处理系统的配置示例的框图。

图2是示出根据实施例的包括在存储系统中的非易失性存储器的存储块的配置示例的图。

图3是示出根据三层单元(tlc)写入模式将数据写入非易失性存储器时非易失性存储器的写入单位的示例的图。

图4是示出根据单层单元(slc)写入模式将数据写入非易失性存储器时非易失性存储器的写入单位的示例的图。

图5是示出根据第一比较示例的在非易失化处理期间将分数数据(fractionaldata)写入nand闪速存储器的tlc块中的示例的图。

图6是示出根据第二比较示例的在非易失化处理期间将分数数据临时保存到nand闪速存储器的伪slc块中的示例的图。

图7是示出根据实施例的存储系统的非易失化处理的示例的图。

图8是示出根据实施例的存储系统的非易失化处理的步骤的流程图。

图9是示出根据实施例的在存储系统的部件之间的非易失化处理期间发出的命令的序列图。

具体实施方式

图1是示出根据实施例的包括存储系统的信息处理系统1的配置示例的框图。

信息处理系统1包括主机(或主机设备)2和存储系统3。主机2可以是个人计算机、服务器、移动电话、成像设备、诸如平板pc或智能电话之类的移动终端,或诸如汽车导航系统之类的车载终端。

存储系统3例如是被配置为将数据写入非易失性存储器中以及从非易失性存储器读取数据的存储设备。该存储系统例如可以是固态驱动器(ssd)或存储卡。在下文中,描述了将存储系统实现为固态驱动器(ssd)的情况。

存储系统3用作主机2的存储设备,主机2是存储系统3外部的信息处理设备。存储系统3可以被包含在信息处理设备中,或者可以经由线缆或无线网络连接到信息处理设备。

作为用于互连主机2和存储系统3的接口,可以使用scsi、串行连接的scsi(sas)、ata、串行ata(sata)、pciexpress光纤通道、nvmexpress通用串行总线(usb)、移动工业处理器接口(mipi)、unipro等。

存储系统3包括控制器4和非易失性存储器5。非易失性存储器5例如是nand闪速存储器。控制器4电连接到非易失性存储器5。控制器4是控制非易失性存储器5的存储控制器。控制器4可以被实现为诸如片上系统(soc)的电路。

非易失性存储器5包括一个或多个nand闪速存储器芯片,每个芯片具有存储单元阵列。存储单元阵列具有以矩阵布置的多个存储单元。非易失性存储器5的存储单元阵列包括多个块(例如,物理块)。这些块中的每一个是用于擦除数据的单位。多个块中的每一个包括多个页。每个页是数据写入和读取的单位。

可以根据单层单元(slc)模式对非易失性存储器5的存储单元进行编程,其结果是,每个存储单元存储1位数据。或者,可以根据多层(mlc)模式对非易失性存储器5的存储单元进行编程,其结果是,每个存储单元存储2位数据,可以根据三层(tlc)模式对非易失性存储器5的存储单元进行编程,其结果是,每个存储单元存储3位数据,或者可以根据四层(qlc)模式对非易失性存储器5的存储单元进行编程,其结果是,每个存储单元存储4位数据。此外,可以根据上述模式的组合对非易失性存储器5的存储单元进行编程。

在该实施例中,将描述根据tlc模式对非易失性存储器5进行编程的情况,尽管不限于此。

控制器4包括主机接口(主机i/f)41、写缓冲区42、nand接口(nandi/f)43、写缓冲处理电路44、非易失化处理控制器45、用于分数数据的第一nand写处理电路46、用于非分数数据的第二nand写处理电路47等。

主机接口41是处理在存储系统3和主机2之间传送的信号的硬件接口电路,主机2是存储系统3外部的信息处理设备。主机接口41处理从主机2接收的与各种命令和写数据相对应的信号,并将与响应和数据相对应的信号发送到主机2。所接收的命令的示例包括写命令、读命令、转储清除命令等。

写命令是用于请求存储系统3写入数据的命令。写命令指定与要写入的数据(写数据)相对应的逻辑地址(例如,起始逻辑地址)、长度、数据指针等。起始逻辑地址指示与写数据相对应的逻辑地址范围的第一逻辑地址。该起始逻辑地址可以由逻辑块地址(lba)表示,或者可以由逻辑簇地址(lca)表示。lba以逻辑块(诸如扇区)为单位指定逻辑地址空间中的地址。lca以簇为单位指定逻辑地址空间中的地址。

一个簇包括连续的扇区(例如8个扇区、16个扇区或32个扇区等)。例如,在一个簇包括八个扇区并且一个扇区的大小为512字节的情况下,一个簇的大小为4千字节(4kb)。

读命令是用于请求存储系统3读取数据的命令。读命令指定与要读取的数据相对应的起始逻辑地址、要读取的数据的长度,以及指示要读取的数据将被传输到的主机存储器中的位置的数据指针。

转储清除命令请求存储系统3执行将最初存储在写缓冲区42中的数据写入非易失性存储器5中的处理(该处理也被称为“非易失化处理”)。

转储清除命令请求执行非易失化处理,以将在发出转储清除命令之前已经存储在写缓冲区42中的所有数据写入非易失性存储器5。例如,使用转储清除命令将与在发出转储清除命令之前完成的所有命令相对应的数据提交到非易失性存储器5。与转储清除命令相对应的非易失化处理的目标数据包括在发出转储清除命令时存储在写缓冲区42中的数据的结束位置之前的所有数据。

执行非易失化处理的命令的另一示例包括write-fua(强制盘片访问)命令。write-fua命令是其中启用了强制盘片访问(fua)的写命令。fua强制以下规则:即,要求i/o数据在i/o被认为完成之前达到非易失性状态。在该实施例中,write-fua命令是具有等同于写命令和转储清除命令的对的功能的命令。

写缓冲区42是临时存储由存储系统3接收的写数据的易失性存储器。写缓冲区42例如是静态ram(sram)或动态ram(dram)。

nand接口43是在存储系统4和非易失性存储器5之间进行通信的硬件接口。nand接口43可以经由多个通道而被连接到在非易失性存储器5中包括的多个nand闪速存储器芯片。

写缓冲处理电路44经由主机i/f41从主机2接收命令,并将接收到的命令存储在控制器4中的命令队列44a中。命令队列44a可以存在于写缓冲处理电路44中。

写缓冲处理电路44从存储在命令队列44a中的一组命令获取要处理的命令。当要处理的命令是写命令时,写缓冲处理电路44从主机2接收与写命令相对应的写数据。然后,写缓冲处理电路44将接收到的写数据存储在写缓冲区42中。此外,写缓冲处理电路44可以执行将命令(写命令)发送到非易失化处理控制器45的处理。

即使要处理的命令是用于请求数据的非易失化处理的命令(例如,转储清除命令),写缓冲处理电路44也可以执行将命令(例如,转储清除命令)发送到非易失化处理控制器45的处理。

当执行将写缓冲区42中存储的写数据存储到非易失性存储器5中的处理时,非易失化处理控制器45选择性地将第一nand写处理电路46用于分数数据,将第二nand写处理电路47用于非分数数据。非易失化处理控制器45确定非易失性存储器5中要写入写数据的存储位置(即,写入目的地位置)。例如可以针对具有与非易失性存储器5的写入单位相同的大小的每条数据来确定写入目的地位置。

在与每个写命令相对应的写处理中,非易失化处理控制器45以具有与非易失性存储器5的写入单位相对应的大小的数据为单位将写缓冲区42中存储的数据写入非易失性存储器5中。与非易失性存储器5的写入单位相对应的大小取决于非易失性存储器5的配置。

尽管不限制与写入单位相对应的大小,但是在一个示例中,在根据tlc写入模式将数据写入非易失性存储器5中,并且非易失性存储器5的页大小为4簇(=16kb)的情况下,写入单位例如可以是12簇(=4簇×3页)。

每当写缓冲区42中存储的写数据的大小达到写入单位大小时,非易失化处理控制器45通过使用第二nand写处理电路47将非分数数据写入非易失性存储器5中的写目的地块中。这样写入的非分数数据具有与写入单位大小相对应的大小。

例如,当与某个写命令相对应的写数据的大小是18簇时,用于非分数数据的第二nand写处理电路47在非易失化处理控制器45的控制下将18簇当中的一部分写数据(非分数数据,其大小与写入单位大小相对应,例如12簇)写入非易失性存储器5的块中。其余的写数据(6簇,与未写入的分数数据相对应,其大小小于写入单位大小)仍存储在写缓冲区42中。

通过接收与后续写命令相对应的写数据,写缓冲区42中存储的数据的总大小增加。如果写缓冲区42中存储的数据的总大小达到写入单位大小,则用于非分数数据的第二nand写处理电路47在非易失化处理控制器45的控制下将数据写入非易失性存储器5的tlc块中。

以这种方式,与每个接收到的写命令相对应的写数据以具有与非易失性存储器5的写入单位大小相对应的大小的单位被写入非易失性存储器5。

尽管即使在写缓冲区42中存储的数据与后续写数据相结合的总大小小于非易失性存储器5的写入单位大小的情况下也可以将向非易失性存储器5中写入,但是为了减少将分数数据写入非易失性存储器5中的非易失化处理的次数,在实施例中,仅在写缓冲区42中存储的数据的总大小达到写入单位大小之后执行以非易失性存储器5的tlc块为目标的写处理。

通常,通过接收用于请求数据的非易失化的命令(例如,转储清除命令)来执行非易失化处理。然而,存在以下可能性:即,如果每次接收到转储清除命令时都执行非易失化处理,则存储系统3的写放大因子(waf)可能增加,由此存储系统3的寿命变短。

当剩余分数数据时,为了将分数数据写入非易失性存储器5中,相关技术通过将伪数据添加到分数数据来执行填充(padding)。然而,在这种情况下,需要使填充的执行次数与分数数据的出现次数一样多。

替代地,在相关技术中,为了减少执行填充的次数,将分数数据临时保存在非易失性存储器5的另一区域中,该另一区域的写入单位大小小于tlc块的写入单位大小(例如,分数数据以slc写入模式临时保存在slc块中)。然而,即使在这种情况下,最终也需要将保存在slc块中的分数数据写入tlc块中。随着写操作次数的增加,存储系统3的写放大因子(waf)可能增加。

图2是示出根据实施例的在存储系统中包括的非易失性存储器的存储块的配置示例的图。

一个块blk(此处为blk0)可以包括串(string)单元su0至su3。由于串单元su0至su3具有相同的配置,因此下面将描述串单元su0的配置。

串单元su0连接到多条字线wl0至wl7(例如,八条字线)和多条位线bl0至bl(l-1)(例如,数字l条位线)。串单元su0包括与多条位线bl0至bl(l-1)相对应的l个nand串str。

每个nand串str包括两个选择栅晶体管dt0和st0以及多个存储单元晶体管mt(mt0至mt7)(例如,八个存储单元晶体管)。选择栅晶体管dt0、存储单元晶体管mt0至mt7以及选择栅晶体管st0以此顺序串联连接在一条位线bl与公共源极线celsrc之间。

另外,多条位线bl0至bl(l-1)中的每一者共同连接到串单元su0至su3中的每一者的相应的nand串str。

每个存储单元晶体管mt用作存储单元。每个存储单元晶体管mt包括控制栅和电荷存储层。多个存储单元晶体管mt0至mt7的控制栅分别连接到相应的多条字线wl0至wl7。选择栅晶体管st0的栅极连接到选择栅极线sgsl0。选择栅晶体管dt0的栅极连接到选择栅极线sgdl0。

例如,在每个块blk的任何串单元su中,连接到相同字线wl的一组存储单元晶体管mt被称为页。当非易失性存储器5是tlcnand闪速存储器时,在任何串单元su中,连接到相同字线wl的一组存储单元晶体管mt具有三个页(下页、中间页和上页)。

多条字线wl(wl0至wl7)共同连接到串单元su0至su3。因此,对于一条字线,连接到该字线的一组存储单元晶体管mt在一个块blk中具有四组(即,一组存储单元晶体管mt属于串单元su0,一组存储单元单元晶体管mt属于串单元su1,一组存储单元晶体管mt属于串单元su2,以及一组存储单元晶体管mt属于串单元su3)。四组中的每一组是一个写入单位。

图3是示出根据三层单元(tlc)写入模式将数据写入非易失性存储器时非易失性存储器的写入单位的示例的图。

设置在非易失性存储器5中的每个块blk包括连接到字线wl0的一组存储单元晶体管、连接到字线wl1的一组存储单元晶体管,……以及连接到字线wl(n-1)的一组存储单元晶体管。块blk被用作上述tlc块。

如图3所示,在针对块blk写入数据的操作中,首先,将与三个页(下页、中间页和上页)相对应的数据写入连接到字线wl0并属于串单元su0的存储单元晶体管组中。然后,将与三个页(下页、中间页和上页)相对应的数据写入连接到字线wl0并属于串单元su1的存储单元晶体管组中。在将与三个页(下页、中间页和上页)相对应的数据写入属于字线wl0的串单元su3的存储单元晶体管组中之后,用于写入数据的字线从wl0改变为wl1。

因此,连接到相同字线并属于相同串单元的存储单元晶体管组用作一个写入单位。与写入单位相对应的大小是被写入连接到相同字线并属于相同串单元的存储单元晶体管组的三个页(下页、中间页、上页)的数据的大小。

图4是示出根据单层单元(slc)写入模式将数据写入非易失性存储器时非易失性存储器的写入单位的示例的图。

当以slc模式将数据写入特定块中时,只有与一个页相对应的数据被写入连接到相同字线并属于相同串单元的存储单元晶体管中。该块被称为slc块或伪slc(pslc)块。

应用于pslc块的写入单位的大小是与被写入连接到相同字线并属于相同串单元的存储单元晶体管组的一个页相对应的大小。

图5是示出根据第一比较示例的在非易失化处理期间将分数数据写入nand闪速存储器的tlc块中的示例的图。

在图5中,假设存储系统3以写命令w1、转储清除命令f1、写命令w2、转储清除命令f2、写命令w3和转储清除命令f3的顺序接收命令。与写命令w1相对应的写数据(d11至d14)的大小略大于tlcnand闪速存储器的写入单位(即,3页数据)。主机2在写命令w1之后发出转储清除命令f1。在写缓冲区42中,存储写数据(d11至d14)。在这种情况下,包括分数数据(例如,在此为d14)的整个写数据(d11至d14)是要被写入tlcnand闪速存储器中的非易失化处理的目标(即,转储清除目标)。

与写入单位相对应的3页数据(d11、d12和d13)被写入tlcnand闪速存储器中的写入目的地块(tlc块)中。在该tlc块中,3页数据(d11、d12和d13)被写入连接到特定字线wlx并属于串单元su0的存储单元晶体管组中。

接下来,执行填充以将伪数据添加到分数数据(d14),从而将与写入单位相对应的包括数据d14和伪数据的3页数据写入连接到字线wlx并属于串单元su1的存储单元晶体管组中。

这样,完成了与写命令w1相对应的写数据(d11至d14)的非易失化处理,并且从写缓冲区42丢弃(discard)写数据(d11至d14)。

接下来,非易失化处理转换到与写命令w2相对应的写数据(d21、d22)的写处理。与写命令w2相对应的写数据(d21、d22)的大小例如是1页+α(α<1页)。因此,由于写数据(d21、d22)的大小小于写入单位(3页),因此写数据(d21、d22)是分数数据。在写命令w2之后,当写数据(d21、d22)被存储在写缓冲区42中时,主机2发出转储清除命令f2。在这种情况下,整个写数据(d21、d22)是非易失化处理的目标(转储清除目标),但却是不满足写入单位大小的分数数据。

此时,在写缓冲区42中存储的分数数据是唯一的写数据(d21、d22)。因此,执行填充以将伪数据添加到写数据(d21、d22),从而将包括数据d21、d22和伪数据的3页数据(与写入单位相对应)写入连接到字线wlx并属于串单元su2的存储单元晶体管组中。

在完成与写命令w2相对应的写数据(d21、d22)的非易失化处理之后,从写缓冲区42中丢弃写数据(d21、d22)。

接下来,非易失化处理转换到与写命令w3相对应的写数据(d31、d32)的写处理。与写命令w3相对应的写数据(d31、d32)例如是大小为约1.5页的分数数据,该大小不满足写入单位大小。在写命令w3之后,当写缓冲区42存储作为分数数据的写数据(d31、d32)时,主机2发出转储清除命令f3。在这种情况下,作为分数数据的整个写数据(d31、d32)是非易失化处理的目标(转储清除目标)。

此时,在写缓冲区42中存储的分数数据是唯一的写数据(d31、d32)。因此,执行填充以将伪数据添加到写数据(d31、d32),从而将与写入单位相对应的3页数据写入连接到字线wlx并属于串单元su3的存储单元晶体管组中。

如上所述,在存储系统3连续接收多对写命令和转储清除命令的情况下,即使对于分数数据,每次也需要执行非易失化处理。结果,写放大因子(waf)可能增加。

图6是示出根据第二比较示例的在非易失化处理期间将分数数据临时保存到nand闪速存储器的pslc块中的示例的图。

3页数据(d11、d12、d13)被写入tlcnand闪速存储器中的写入目的地块(tlc块)中。在该tlc块中,3页数据(d11、d12、d13)被写入连接到特定字线wlx并属于串单元su0的存储单元晶体管组中。接下来,将分数数据(d14)暂时保存到pslc块中。在pslc块中,连接到字线wly并属于串单元su0的存储单元晶体管形成一页。在pslc块中,可以以小于页大小的单位写入数据。在pslc块中,分数数据(d14)以slc模式被写入连接到字线wly并属于串单元su0的存储单元晶体管组的一部分中。

因此,完成了与写命令w1相对应的写数据(d11至d14)的非易失化处理,并且从写缓冲区42丢弃写数据(d11至d14)。

接下来,非易失化处理转换到与写命令w2相对应的写数据(d21、d22)的写处理。与写命令w2相对应的写数据(d21、d22)是大小为1页+α的分数数据。由于在写命令w2之后接收到转储清除命令f2,因此作为分数数据的整个写数据(d21、d22)成为非易失化处理的目标(转储清除目标)。

此时,写缓冲区42中存储的分数数据是唯一的写数据(d21、d22)。因此,控制器4将作为分数数据的写数据(d21、d22)临时保存到pslc块中。

在这种情况下,分数数据(d21)以slc模式被写入连接到字线wly并属于串单元su0的存储单元晶体管组的剩余部分中。分数数据(d22)被写入连接到字线wly并属于串单元su1的存储单元晶体管组的一部分中。

这样,完成了与写命令w2相对应的写数据(d21、d22)的非易失化处理。控制器4从写缓冲区42中丢弃写数据(d21、d22)。

接下来,处理转换到与写命令w3相对应的写数据(d31、d32)的写处理。与写命令w3相对应的写数据(d31、d32)是大小为约1.5页的分数数据。由于在写命令w3之后接收到转储清除命令f3,因此作为分数数据的整个写数据(d31、d32)成为非易失化处理的目标(转储清除目标)。

此时,写缓冲区42中存储的分数数据是唯一的写数据(d31、d32)。因此,控制器4将作为分数数据的写数据(d31、d32)临时保存在pslc块中。

在这种情况下,数据(d31)以slc模式被写入连接到字线wly并属于串单元su1的存储单元晶体管组的剩余部分中,并且数据(d32)以slc模式被写入连接到字线wlxy并属于串单元su2的存储单元晶体管组中。

因此,通过将分数数据临时保存到pslc块中,可以减少执行填充的次数。然而,临时保存到pslc块中的数据(d14、d21、d22、d31、d32)最终必须被写入tlcnand闪速存储器的tlc块中。因此,存储系统3的写放大因子(waf)可能增加。

图7是示出根据实施例的存储系统的非易失化处理的示例的图。

在该实施例中,当存储系统3接收到用于请求数据的非易失化处理的命令(例如,该命令是转储清除命令)时,如果分数数据的大小小于写入单位大小,则在控制器4中设置的非易失化处理控制器45暂停非易失化处理的执行。即,不执行将分数数据临时保存到pslc块中的处理。也不执行使用填充将分数数据写入tlcnand闪速存储器中的处理。

然后,在包括分数数据的写缓冲区42中的当前数据的总大小达到写入单位大小之后,非易失化处理控制器45执行非易失化处理以将写数据写入非易失性存储器5(例如,tlcnand闪速存储器)中。此外,非易失化处理控制器45还向主机2返回转储清除命令的完成的通知,非易失化处理的执行因为转储清除命令的完成而已被暂停。

如上所述,在该实施例中,控制器4的非易失化处理控制器45临时暂停与转储清除命令相对应的非易失化处理的执行。在收集到与写入单位大小相对应的一组写数据之后,非易失化处理控制器45执行具有写入单位大小的数据向非易失性存储器5中的写入,并向主机2通知转储清除命令完成。

因此,从接收转储清除命令到将转储清除命令完成的通知返回给主机2的时间段变得更长。然而,因为不执行将分数数据临时保存到pslc块中以及将利用填充添加有伪数据的分数数据写入tlcnand闪速存储器中,所以可以提高写入效率。

在下文中,将描述其中存储系统3按照写命令w1、转储清除命令f1、写命令w2、转储清除命令f2、写命令w3和转储清除命令f3的顺序接收命令的情况作为由非易失化处理控制器45执行的非易失化处理。

执行与写命令w1相对应的写数据(d21、d22)的写处理。与写命令w1相对应的写数据(d11至d14)的大小略大于tlcnand闪速存储器的写入单位大小(3页数据)。写缓冲区42中的3页数据(d11、d12和d13)被写入tlcnand闪速存储器中的写入目的地块(tlc块)中。在该tlc块中,3页数据(d11、d12和d13)被写入连接到特定字线wlx并属于串单元su0的存储单元晶体管组中。

此时,写缓冲区42中存储的数据是分数数据(d14)。因此,非易失化处理控制器45暂停将分数数据(d14)写入非易失性存储器5中的非易失化处理的执行,或者与转储清除命令f1相对应的非易失化处理的执行。在这种情况下,既不执行使用填充将分数数据(d14)写入tlcnand闪速存储器中的处理,也不执行将分数数据(d14)保存到pslc块中的处理。因此,分数数据(d14)被保留在写缓冲区42中。

由于对与写命令w1相对应的写数据(d11至d14)的一部分(d11、d12和d13)执行了非易失化处理,因此,实际上仅部分地完成了与转储清除命令f1相对应的非易失化处理。然而,由于分数数据(d14)的非易失化处理被暂停,此时,非易失化处理控制器45不向主机2返回转储清除命令f1完成的通知。

非易失化处理控制器45暂停与转储清除命令f1相对应的非易失化处理的执行,然后等待写缓冲区42中的当前数据的总大小在接收到后续写数据时达到与tlcnand闪速存储器的写入单位大小相对应的大小。

在此,在从暂停将分数数据(d14)写入非易失性存储器5中的非易失化处理时到写缓冲区42中的当前数据的总大小达到写入单位大小时的时间段期间,暂停与接收到的每个转储清除命令相对应的非易失化处理的执行。

随后,非易失化处理控制器45执行下面的处理。

处理转换到与写命令w2相对应的写数据(d21、d22)的写处理。在写命令w2和随后的转储清除命令f2的处理中,非易失化处理控制器45计算写缓冲区42中的当前数据的总大小,当前数据包括分数数据(d14)和与写命令w2相对应的写数据(d21、d22)。非易失化处理控制器45确定写缓冲区42中的当前数据的总大小是否小于tlcnand闪速存储器的写入单位大小。

如果写缓冲区42中的当前数据的总大小小于写入单位大小,则非易失化处理控制器45暂停与转储清除命令f2相对应的非易失化处理。即,非易失化处理控制器45暂停将写缓冲区42中包括分数数据(d14)和写数据(d21、d22)的当前数据写入非易失性存储器5中的非易失化处理。

在这种情况下,既不执行使用填充将写缓冲区42中的当前数据(分数数据(d14)和后续写数据(d21、d22))写入tlcnand闪速存储器中的处理,也不执行将数据保存到pslc块中的处理,这些数据被保留在写缓冲区42中。

接着,处理转换到与写命令w3相对应的写数据(d31、d32)的写处理。在写命令w3和随后的转储清除命令f3的处理中,非易失化处理控制器45计算写缓冲区42中的当前数据的总大小,当前数据包括分数数据(d14)、与写命令w2相对应的写数据(d21、d22),以及与写命令w3相对应的后续写数据(d31、d32)。

非易失化处理控制器45确定写缓冲区42中的当前数据的总大小是否小于tlcnand闪速存储器的写入单位大小。

当写缓冲区42中的当前数据的总大小达到写入单位大小时,非易失化处理控制器45将数据(d14、d21、d22、d31和d32)写入连接到字线wlx并属于串单元su1的存储单元晶体管组中。

然后,非易失化处理控制器45向主机2返回转储清除命令f1完成的通知、转储清除命令f2完成的通知,以及转储清除命令f3完成的通知。

当与写命令w3相对应的写数据的大小较大并且要写入的当前数据的大小等于写入单位大小+α时,执行与写命令w3相对应的写数据的非易失化处理的一部分,并且暂停写数据的其余部分(分数数据)的非易失化处理的执行。因此,此时,非易失化处理控制器45仅向主机2返回转储清除命令f1完成的通知和转储清除命令f2完成的通知,不向主机2返回转储清除命令f3完成的通知。

此后,当与写命令w3相对应的写数据的其余部分(分数数据)和后续写数据的分数数据的总大小达到写入单位大小时,执行向非易失性存储器5中的写入。

如上所述,根据实施例,可以减少向非易失性存储器5中写入分数数据的次数,并且可以提高写入效率。

图8是示出根据实施例的存储系统的非易失化处理的步骤的流程图。

控制器4的写缓冲处理电路44从存储在命令队列44a中的一组命令中获取由主机2请求的一个要处理的命令。然后,写缓冲处理电路44获取要处理的命令(步骤s10)。

当确定在s10中获取的要处理的命令是写命令时(s10,写命令),控制器4的写缓冲处理电路44接收与要处理的写命令相对应的写数据。然后,将写数据存储在写缓冲区42中(步骤s11)。在步骤s11,写缓冲处理电路44基于由写命令指定的数据指针和长度而从主机中获取与写命令相对应的写数据,并将所获取的写数据存储在写缓冲区42中。

当写数据的存储完成时,控制器4向主机2返回写命令完成的通知(步骤s12),然后结束处理(结束)。

另一方面,当写缓冲处理电路44确定在s10中获取的要处理的命令是转储清除命令时(s10,转储清除命令),控制器4的非易失化处理控制器45确定写缓冲区42中存储的写数据的大小。然后,非易失化处理控制器45确定写缓冲区42中存储的写数据的大小是否等于或大于非易失性存储器5(其是tlcnand闪速存储器)的写入单位大小(步骤s13)。

当确定写缓冲区42中存储的写数据的大小等于或大于非易失性存储器5的写入单位大小时(步骤s13,是),非易失化处理控制器45从写缓冲区42获取与非易失性存储器5的写入单位大小相对应的一部分写数据(非分数数据)(步骤s14),并将所获取的写数据(非分数数据)存储在非易失性存储器5中(步骤s15)。

当确定写缓冲区42中存储的写数据的大小并非等于或大于非易失性存储器5的写入单位大小时(步骤s13,否),非易失化处理控制器45暂停转储清除命令的处理(步骤s18),然后结束处理(结束)。

在完成s15的非易失化处理之后,非易失化处理控制器45识别处理已经完成的转储清除命令(步骤s16)。在步骤s16,可以识别多个转储清除命令,其中包括在s18中暂停的转储清除命令。然后,非易失化处理控制器45向主机2返回在s16中指定的转储清除命令的完成的通知(步骤s17),然后结束处理(结束)。

以这种方式,每当具有写入单位大小的写数据(非分数数据)在写缓冲区42中对准时,执行用于将非分数数据写入tlcnand闪速存储器中的非易失化处理。因此,保留在写缓冲区42中的数据仅是分数数据。

图9是示出根据实施例的在存储系统的部件之间的非易失化处理期间发出的命令的序列图。

在图9中,与在图7中一样,假设存储系统3按照写命令w1、转储清除命令f1、写命令w2、转储清除命令f2、写命令w3和转储清除命令f3的顺序接收命令。

写缓冲处理电路44从主机存储器中获取与写命令w1相对应的写数据,并将该数据存储到写缓冲区42中。在将与写命令w1相对应的写数据存储到写缓冲区42中之后,写缓冲处理电路44向非易失化处理控制器45通知写命令w1的内容(lca,长度)。

非易失化处理控制器45能够基于由写命令w1指定的长度识别写缓冲区42中存储的写数据的大小等于或大于写入单位大小。在这种情况下,非易失化处理控制器45使用用于非分数数据的第二nand写处理电路47将写缓冲区42中存储的写数据(非分数数据)写入tlcnand闪速存储器中。

写缓冲处理电路44将转储清除命令f1发送到非易失化处理控制器45。

当非易失化处理控制器45从写缓冲处理电路44接收到转储清除命令f1时,非易失化处理控制器45确定写缓冲区42中存储的数据的大小是否小于tlcnand闪速存储器的写入单位大小。由于写缓冲区42中存储的当前数据只是分数数据d14,因此,写缓冲区42中存储的当前数据的大小小于写入单位大小。在这种情况下,非易失化处理控制器45暂停与转储清除命令f1相对应的非易失化处理的执行,从而使得分数数据d14被保留在写缓冲区42中,而不被保存到pslc块中(并且不被写入tlcnand闪速存储器中)。

然后,非易失化处理控制器45向用于分数数据的第一nand写处理电路46通知转储清除命令f1的标识符(id)。为了记住其非易失化处理的执行被暂停的转储清除命令,转储清除命令f1的id被发送到用于分数数据的第一nand写处理电路46。

写缓冲处理电路44从主机存储器获取与写命令w2相对应的写数据,并将该写数据存储到写缓冲区42中。在将与写命令w2相对应的写数据存储到写缓冲区42中之后,写缓冲处理电路44将写命令w2的内容(lca,长度)通知给非易失化处理控制器45。

非易失化处理控制器45通过将由写命令w2指定的长度加到分数数据d14的大小上来计算写缓冲区42中存储的当前数据的大小。然后,非易失化处理控制器45确定写缓冲区42中存储的当前数据的大小是否小于tlcnand闪速存储器的写入单位大小。此时,由于写缓冲区42中存储的当前数据只是分数数据d14以及写数据d21和d22,因此,当前数据的大小仍然小于写入单位大小。因此,此时,不执行用于将这样的数据写入tlcnand闪速存储器中的非易失化处理。

写缓冲处理电路44将转储清除命令f2发送到非易失化处理控制器45。写缓冲区42中的当前数据的大小小于tlcnand闪速存储器的写入单位大小。因此,非易失化处理控制器45执行与转储清除命令f2相对应的非易失化处理,从而使得数据(d14、d21、d22)被保留在写缓冲区42中,而不被保存到pslc块中(并且不被写入tlcnand闪速存储器中)。然后,非易失化处理控制器45将转储清除命令f2的标识符(id)发送到用于分数数据的第一nand写处理电路46。

写缓冲处理电路44从主机存储器获取与写命令w3相对应的写数据,并将该写数据存储到写缓冲区42中。在将与写命令w3相对应的写数据存储到写缓冲区42中之后,写缓冲处理电路44将写命令w3的内容(lca,长度)通知给非易失化处理控制器45。

非易失化处理控制器45通过将由写命令w3指定的长度加到数据(d14、d21、d22)的大小上来计算写缓冲区42中存储的当前数据的大小。然后,非易失化处理控制器45确定写缓冲区42中的当前数据的大小是否小于tlcnand闪速存储器的写入单位大小。

在该实施例中,当前数据(d14、d21、d22、d31和d32)的大小与写入单位大小匹配。

因此,非易失化处理控制器45通过使用用于非分数数据的第二nand写处理电路47将写缓冲区42中存储的当前数据(d14、d21、d22、d31和d32)写入tlcnand闪速存储器中。

非易失化处理控制器45向用于分数数据的第一nand写处理电路46查询其非易失化处理已被暂停的所有转储清除命令的id。因此,非易失化处理控制器45从用于分数数据的第一nand写处理电路46中获取转储清除命令f1的id和转储清除命令f2的id。然后,非易失化处理控制器45准备经由写缓冲处理电路44向主机2返回转储清除命令f1完成的通知和转储清除命令f2完成的通知。

在该实施例中,将下一转储清除命令f3从写缓冲处理电路44通知给非易失化处理控制器45。此时,与所有先前的写命令w1至w3相对应的所有写数据已经执行了非易失化。因此,写缓冲区42中不存在数据。

然后,非易失化处理控制器45可以经由写缓冲处理电路44向主机2集体地返回转储清除命令f1完成的通知、转储清除命令f2完成的通知和转储清除命令f3完成的通知。

当未写数据(d14、d21、d22、d31和d32)的大小大于写入单位大小时,非易失化处理控制器45仅将未写数据(d14、d21、d22、d31和d32)当中具有与写入单位大小相对应的大小的非分数数据写入tlcnand闪速存储器中。然后,非易失化处理控制器45经由写缓冲处理电路44向主机2返回转储清除命令f1完成的通知和转储清除命令f2完成的通知。然后,写缓冲处理电路44将转储清除命令f3发送到非易失化处理控制器45。

此时,写缓冲区42中的当前数据只是分数数据。因此,非易失化处理控制器45暂停与转储清除命令f3相对应的非易失化处理,从而使得分数数据被保留在写缓冲区42中,而未被保存到pslc块中(并且未被写入tlcnand闪速存储器中)。

如上所述,根据实施例,当存储系统3接收到用于请求数据的非易失化处理的命令(例如,转储清除命令)时,临时暂停将分数数据写入非易失性存储器5中的非易失化处理的执行,并且在写缓冲区42中收集了足够的数据(大于或等于写入单位大小)之后,执行将数据写入非易失性存储器5中的处理以及向主机2通知转储清除命令完成的处理。因此,尽管向主机2返回转储清除命令完成的通知需要更长的时间,但是由于既不执行用于将分数数据临时保存到pslc块中的处理,也不执行通过使用填充将分数数据写入tlcnand闪速存储器中的处理,所以可以提高写入效率。因此,可以抑制写放大因子(waf)的增大。

并且,当在当前数据的总大小达到写入单位大小之前接收到另一转储清除命令时,控制器2暂停将写缓冲区42中的当前数据写入非易失性存储器5中的非易失化处理(即,与该另一转储清除命令相对应的非易失化处理)的执行。然后,当写缓冲区42中的当前数据的总大小达到写入单位大小时,执行用于将写缓冲区42中的当前数据写入非易失性存储器5中的非易失化处理,以及向主机2返回这些暂停的转储清除命令的完成的通知的处理。

因此,即使在连续接收到多对写命令和转储清除命令的情况下,也不执行将分数数据临时保存到pslc块中的处理以及通过使用填充将分数数据写入tlcnand闪速存储器中的处理。因此,与每次接收到转储清除命令时将分数数据临时保存到pslc块中的处理以及通过使用填充将分数数据写入tlcnand闪速存储器中的处理相比,写入效率得到了显著提高。

在该实施例中,nand闪速存储器被示例作为非易失性存储器。然而,实施例的功能可以应用于各种非易失性存储器,例如磁阻随机存取存储器(mram)、相变随机存取存储器(pram)、电阻式随机存取存储器(reram)和铁电随机存取存储器(feram)。

尽管已经描述了某些实施例,但是这些实施例仅以示例的方式给出,并且不意图限制本发明的范围。实际上,本文描述的新颖方法和系统可以以多种其它形式来体现。此外,在不脱离本发明的精神的情况下,可以对本文所述方法和系统的形式进行各种省略、替换和改变。所附权利要求及其等同物旨在覆盖落入本发明的范围和精神内的这些形式或修改。

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