数据写入方法和存储设备转让专利

申请号 : CN201711007552.5

文献号 : CN107967121B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周猛周建华

申请人 : 华为技术有限公司

摘要 :

本申请提供了一种数据写入方法和存储设备。该方法应用于固态存储设备SSD,该方法包括:接收写命令,该写命令携带待写入数据的类型;根据该待写入数据的类型,确定写入该待写入数据的SSD中的存储区域的类型,该SSD包括多种类型的存储区域;根据该存储区域的类型,确定写入该待写入数据的目标存储区域;将该待写入数据写入该目标存储区域。本申请实施例能够提高数据处理的效率。

权利要求 :

1.一种数据写入方法,应用于固态存储设备SSD,其特征在于,所述方法包括:接收写命令,所述写命令携带待写入数据的类型;

根据所述待写入数据的类型,确定写入所述待写入数据的SSD中的存储区域的类型,所述SSD包括多种类型的存储区域;

根据所述存储区域的类型,确定写入所述待写入数据的目标存储区域;

将所述待写入数据写入所述目标存储区域;

所述SSD中存储有数据类型与存储区域类型的对应关系,所述根据所述待写入数据的类型,确定写入所述待写入数据的SSD中的存储区域的类型包括:根据所述待写入数据的类型及所述对应关系,确定所述写入所述待写入数据的目标存储区域的类型;

所述SSD包括多个存储块,所述SSD按照存储块的类型分为不同类型的存储区域,所述对应关系为数据类型与存储块的类型的对应关系;或所述SSD包括多个存储块,每个存储块包括至少一种类型的存储页,按照存储页的类型分成不同的存储区域,所述对应关系为数据类型与所述存储页的类型的对应关系。

2.根据权利要求1所述的方法,其特征在于,所述SSD包括SLC区域、MLC区域、TLC区域和QLC区域中的至少两项,且所述SLC区域、所述MLC区域、所述TLC区域和所述QLC区域的性能依次降低,在根据所述存储区域的类型确定写入所述待写入数据的目标存储区域之前,所述方法还包括:若所述写入所述待写入数据的SSD中的存储区域的类型对应的存储区域中的存储块都不包括空闲存储页,将性能低于所述写入所述待写入数据的SSD中的存储区域的类型的存储区域的至少一个包括空闲存储页的块的类型转换为与所述写入所述待写入数据的SSD中的存储区域的类型的存储区域的类型相同。

3.根据权利要求1所述的方法,其特征在于,不同类型的存储页分别对应一个存储列表,每个存储列表中记录有一种类型的存储页;

所述根据所述存储区域的类型,确定写入所述待写入数据的目标存储区域包括:根据存储页的类型在所述存储页类型对应的存储列表中找可用的存储页作为所述目标存储区域;

如果所述存储列表中有可用的存储页,则将所述可用的存储页作为所述目标存储区域;

如果所述存储列表中没有可用的存储页,则在所述SSD中获取一个空闲存储块,将所述空闲存储块的第一个存储页作为所述目标存储区域。

4.根据权利要求3所述的方法,其特征在于,所述存储块包括LSB页、CSB页和MSB页中的至少两项,且所述LSB页、所述CSB页和所述MSB页的性能依次降低,所述根据所述存储区域的类型,确定写入所述待写入数据的目标存储区域包括:若所述写入所述待写入数据的SSD中的存储区域的类型的存储区域为所述MSB页或所述CSB页,且所述写入所述待写入数据的SSD中的存储区域的类型的存储区域不存在可用的存储页,将性能高于所述写入所述待写入数据的SSD中的存储区域的类型对应的至少一个可用的存储页确定为所述目标存储区域。

5.一种存储设备,应用于固态存储设备SSD,其特征在于,所述存储设备包括:接收模块,用于接收写命令,所述写命令携带待写入数据的类型;

处理模块,用于根据所述待写入数据的类型,确定写入所述待写入数据的SSD中的存储区域的类型,所述SSD包括多种类型的存储区域;

所述处理模块,还用于根据所述存储区域的类型,确定写入所述待写入数据的目标存储区域;

所述处理模块,还用于将所述待写入数据写入所述目标存储区域;

所述SSD中存储有数据类型与存储区域类型的对应关系,所述处理模块具体用于:根据所述待写入数据的类型及所述对应关系,确定所述写入所述待写入数据的目标存储区域的类型;

所述SSD包括多个存储块,所述SSD按照存储块的类型分为不同类型的存储区域,所述对应关系为数据类型与存储块的类型的对应关系;或所述SSD包括多个存储块,每个存储块包括至少一种类型的存储页,所述SSD按照存储页的类型划分为不同类型的存储区域,所述对应关系为数据类型与所述存储页的类型的对应关系。

6.根据权利要求5所述的存储设备,其特征在于,所述SSD包括SLC区域、MLC区域、TLC区域和QLC区域中的至少两项,且所述SLC区域、所述MLC区域、所述TLC区域和所述QLC区域的性能依次降低,若所述写入所述待写入数据的SSD中的存储区域的类型对应的块存储区域中的存储块都不包括空闲存储页,所述处理模块还用于将性能低于所述写入所述待写入数据的SSD中的存储区域的类型的存储区域的至少一个包括空闲存储页的块的类型转换为与所述写入所述待写入数据的SSD中的存储区域的类型的存储区域的类型相同。

7.根据权利要求5所述的存储设备,其特征在于,不同类型的存储页分别对应一个存储列表,每个存储列表中记录有一种类型的存储页;

所述处理模块具体用于:

根据存储页的类型在所述存储页类型对应的存储列表中找可用的存储页作为所述目标存储区域;

如果所述存储列表中有可用的存储页,则将所述可用的存储页作为所述目标存储区域;

如果所述存储列表中没有可用的存储页,则在所述SSD中获取一个空闲存储块,将所述空闲存储块的第一个存储页作为所述目标存储区域。

8.根据权利要求7所述的存储设备,其特征在于,所述存储块包括LSB页、CSB页和MSB页中的至少两项,且所述LSB页、所述CSB页和所述MSB页的性能依次降低,所述处理模块具体用于:若所述写入所述待写入数据的SSD中的存储区域的类型的存储区域为所述MSB页或所述CSB页,且所述写入所述待写入数据的SSD中的存储区域的类型的存储区域不存在可用的存储页,将性能高于所述写入所述待写入数据的SSD中的存储区域的类型对应的至少一个可用的存储页确定为所述目标存储区域。

说明书 :

数据写入方法和存储设备

技术领域

[0001] 本申请涉及计算机领域,更具体地,涉及数据写入方法和存储设备。

背景技术

[0002] 随着存储技术的不断发展,以快闪记忆体(NAND Flash)为存储介质的固态硬盘(solid state drive,SSD)逐渐成为主流存储形态。NAND Flash是一种非易失性随机访问存储介质,该存储介质的特点是断电后数据不消失。
[0003] 目前,NAND Flash将数据按照接收顺序存储到多个块(Block)中以提高并发度。其中,在Block内部的各个页(Page)中随机存储数据。但是,由于不同Page存储数据的性能不同,例如,Page可以分为三种类型,最低有效位LSB Page、中央有效位CSB Page、最高有效位MSB Page,且LSB Page、CSB Page、MSB Page的性能依次降低。
[0004] 因此,目前的存储方式,使得存储设备在存储具有不同处理需求的应用的数据时,处理效率较低。

发明内容

[0005] 本申请提供一种数据写入方法和存储设备,能够提高数据处理的效率。
[0006] 第一方面,提供了一种数据写入方法,该方法包括:接收写命令,该写命令携带待写入数据的类型;根据该待写入数据的类型,确定写入该待写入数据的SSD中的存储区域的类型,该SSD包括多种类型的存储区域;根据该存储区域的类型,确定写入该待写入数据的目标存储区域;将该待写入数据写入该目标存储区域。
[0007] 存储设备接收携带待写入数据的类型的写命令,并根据该待写入数据的类型确定写入该待写入数据的存储区域的类型,再根据该存储区域的类型,确定写入该待写入数据的目标存储区域,这样存储设备能够将数据存储到合适的存储区域,即存储设备能够满足应用的不同需求,提高了数据处理效率,以及系统性能。
[0008] 在一些可能的实现方式中,该SSD中存储有数据类型与存储区域类型的对应关系,该根据该待写入数据的类型,确定写入该待写入数据的SSD中的存储区域的类型包括:根据该待写入数据的类型及该对应关系,确定该写入该待写入数据的目标存储区域的类型。
[0009] 存储设备能够根据数据类型与存储区域类型的对应关系,以及该待写入数据的类型确定出确定该写入该待写入数据的目标存储区域的类型,从而更进一步实现提高数据写入存储设备的效率。
[0010] 在一些可能的实现方式中,该SSD包括多个存储块,该SSD按照存储块的类型分为不同类型的存储区域,该对应关系为数据类型与存储块的类型的对应关系。
[0011] 存储设备能够根据数据类型与存储块的类型的对应关系,以及该待写入数据的类型确定出该写入该待写入数据的目标存储块的类型,从而能够实现提高数据写入存储设备的效率,以及数据写入的可靠性。
[0012] 在一些可能的实现方式中,该SSD包括多个存储块,每个存储块包括至少一种类型的存储页,该SSD按照存储页的类型划分为不同类型的存储区域,该对应关系为数据类型与该存储页的类型的对应关系。
[0013] 存储设备能够根据数据类型与存储页的类型的对应关系,以及该待写入数据的类型确定出该写入该待写入数据的目标存储页的类型,从而能够实现读时延、写时延和读写可靠性中的至少一项的提高。
[0014] 在一些可能的实现方式中,不同类型的存储页分别对应一个存储列表,每个存储列表中记录有一种类型的存储页;该根据该存储区域的类型,确定写入该待写入数据的目标存储区域包括:根据存储页的类型在该存储页类型对应的存储列表中找可用的存储页作为该目标存储区域;如果该存储列表中有可用的存储页,则将该可用的存储页作为该目标存储区域;如果该存储列表中没有可用的存储页,则在该SSD中获取一个空闲存储块,将该空闲存储块的第一个存储页作为该目标存储区域。
[0015] 存储设备可以兼容传统方案中Block按照Page的顺序进行写入数据的写入方式,从而在兼容传统方案的情况下,提高数据写入存储设备的可靠性。
[0016] 在一些可能的实现方式中,该SSD包括SLC区域、MLC区域、TLC区域和QLC区域中的至少两项,且该SLC区域、该MLC区域、该TLC区域和该QLC区域的性能依次降低,在根据该存储区域的类型确定写入该待写入数据的目标存储区域之前,该方法还包括:若该写入该待写入数据的SSD中的存储区域的类型对应的存储区域中的存储块都不包括空闲存储页,将性能低于该写入该待写入数据的SSD中的存储区域的类型的存储区域的至少一个包括空闲存储页的块的类型转换为与该写入所述待写入数据的SSD中的存储区域的类型的存储区域的类型相同。
[0017] 若存储设备为数据写入所述待写入数据的SSD中的存储区域的类型的存储区域不存在包括可以使用的空闲Page的Block,存储设备可以将MLC区域、TLC区域或QLC区域中的Block切换为SLC区域的Block,即存储设备可以将低性能的存储区域中的Block切换到更高性能的存储区域中的Block,避免高性能优先级存储区域的空闲资源浪费,提高了存储设备的资源利用率。
[0018] 在一些可能的实现方式中,该存储块包括LSB页、CSB页和该MSB页中的至少两项,且该LSB页、该CSB页和该MSB页的性能依次降低,该根据该存储区域的类型,确定写入该待写入数据的目标存储区域包括:若该写入所述待写入数据的SSD中的存储区域的类型的存储区域为该MSB页或该CSB页,且该写入所述待写入数据的SSD中的存储区域的类型的存储区域不存在可用的存储页,将该性能高于该写入该待写入数据的SSD中的存储区域的类型对应的至少一个可用的存储页确定为该目标存储区域。
[0019] 存储设备在低性能的Page类型对应的Page中没有空闲的可用Page的情况下,可以将更高性能的空闲的可用Page确定为目标存储区域,避免高性能的可用Page的空闲资源浪费,提高了存储设备的资源利用率。
[0020] 第二方面,提供了一种存储设备,该存储设备包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的模块。
[0021] 第三方面,提供了一种存储设备,该存储设备包括:处理器、存储器和通信接口。处理器与存储器和通信接口连接。存储器用于存储指令,处理器用于执行该指令,通信接口用于在处理器的控制下与其他网元进行通信。该处理器执行该存储器存储的指令时,该执行使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。
[0022] 第四方面,提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码用于指示执行上述第一方面或第一方面的任一种可能的实现方式中的方法的指令。
[0023] 第五方面,提供了一种系统芯片,该系统芯片包括输入输出接口、至少一个处理器、至少一个存储器和总线,该至少一个存储器用于存储指令,该至少一个处理器用于调用该至少一个存储器的指令,以进行上述各个方面的方法的操作。
[0024] 基于上述方案,存储设备接收携带待写入数据的类型的写命令,并根据该待写入数据的类型确定写入该待写入数据的存储区域的类型,再根据该存储区域的类型,确定写入该待写入数据的目标存储区域,这样存储设备能够将数据存储到合适的存储区域,即存储设备能够满足应用的不同需求,提高了数据处理效率,以及系统性能。

附图说明

[0025] 图1是浮栅晶体管的结构示意图;
[0026] 图2是LUN的结构示意图;
[0027] 图3是NAND Flash中不同存储单元的特性示意图;
[0028] 图4是Block中不同存储单元的电平分布示意图;
[0029] 图5是某个Block中Page的共享关系的示意图;
[0030] 图6是目前NAND Flash的数据存储的示意图;
[0031] 图7是本申请一个实施例的数据写入方法的示意性流程图;
[0032] 图8是本申请实施例的比特位取值与时延的映射关系表;
[0033] 图9是本申请一个实施例的数据存储的示意图;
[0034] 图10是本申请另一个实施例的读取数据的的示意图;
[0035] 图11是本申请另一个实施例的数据写入方法的示意流程图;
[0036] 图12是本申请另一个实施例的数据写入方法的示意图;
[0037] 图13是本申请另一个实施例的数据写入方法的示意图;
[0038] 图14是本申请实施例的存储设备的示意性框图;
[0039] 图15是本申请实施例的存储设备的示意性结构图。

具体实施方式

[0040] 下面将结合附图,对本申请中的技术方案进行描述。
[0041] 随着存储技术的不断发展,以NAND Flash为存储介质的固态硬盘(Solid State Disk,SSD)逐渐成为主流存储形态,NAND Flash是一种非易失性随机访问存储介质,具有断电后数据不消失、容量大、读写速度快、以及适用于大容量数据存储的特点。SSD的性能相比传统磁介质的硬盘驱动器(hard disk drive,HDD)的性能有了质的飞跃。具体地,SSD每秒可以处理的命令数达到几十万个。
[0042] 目前主流的NAND Flash是基于浮栅(Floating Gate)晶体管设计,通过浮栅来锁存电荷,电荷被存储在浮栅中,在无电源供应的情况下电荷仍然可以保持。图1是浮栅晶体管的基本结构的示意图,如图1所示,NAND Flash为双栅极晶体管设计,包括一个源极,一个漏极,一个门极,一个浮置栅极,硅衬底以及绝缘层。其中,浮置栅极位于门极和硅衬底之间,并被绝缘层隔断,绝缘层可以是由氧-氮-氧或者二氧化硅(SiO2)构成。该浮栅晶体管可以形成存储电荷的电荷势阱,浮栅通过锁存电荷来实现信息的记录。
[0043] 浮栅晶体管可以利用浮栅上是否存储有电荷或存储电荷的多少来获取晶体管的阈值电压,并通过获取到的晶体管的阈值电压来实现数据信息的表征。一个浮栅晶体管对应NAND Flash的一个单元(cell),向该单元写入数据的过程(编程过程)就是向电荷势阱注入电荷的过程,NAND Flash采取F-N隧道效应(Fowler Nordheim Tunneling)通过硅基层给浮栅充电。但在对NAND Flash编程前,必须要先擦除掉原有的数据,擦除过程就是将浮栅中的电荷通过F-N隧道效应释放掉。
[0044] 当NAND Flash被擦除后,cell中没有电荷,读取到的阈值电压为低电平,例如,可以通过数据为“1”表征;当编程后,cell中注入了电荷,读取到的阈值电压为高电平,可以通过数据为“0”表征。
[0045] 块Block是NAND flash能够执行擦除操作的最小单元,通常由多个Page组成,Page为能够执行编程和读操作的最小单元,通常大小为4KB/8KB/16KB等,如图2所示。Cell为Page中的最小操作擦写读单元,对应一个浮栅晶体管,可以存储1bit或多bit。
[0046] NAND Flash的读写数据的操作主要涉及擦除、编程(或写)和读。其中,编程和读的基本操作单位是Page,擦除的基本操作单位是block。
[0047] 本申请实施例中,NAND Flash中的存储区域根据cell存储bit数据的不同,可以分为单层式储存单元(Single Level Cell,SLC)、多层式储存单元(Multi Level Cell,MLC)、三层式储存单元(Triple Level Cell,TLC)和四层式储存单元(Quad Level Cell,QLC)等类型。不同结构的存储区域,在性能和可靠性等方面也会不相同,例如,如图3所示不同结构的存储区域在读速率、写速率、擦除速率、擦写次数、数据保持能力、成本、密度和工作电流。
[0048] 具体地,SLC只存1bit数据,即通过将浮栅门中的电荷区分为0、1对应的两个电平来表征1个信息bit,如图4所示。通常SLC的擦除次数为50K次或100K次,具有寿命长、性能快、价格高等特性。MLC可以存2bit数据,数据密度较大,可以通过浮栅门中的00、01、10、11对应的四个电平来表征2个信息bit。通常MLC的擦写次数为3K左右,具有寿命较低、性能较慢、价格较低等特性。TLC可以存3bit数据,数据密度更大,可以通过浮栅门中的000、001、010、011、100、101、110、111对应的八个电平来表征3个信息bit,通常TLC的擦写次数为几百次,具有寿命低、性能慢、价格低等特性。QLC可以存4bit数据,可以通过浮栅门中的0000、
0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111对应的十六个电平来表征4个信息bit,通常QLC的性能相比TLC的性能更弱一些。
[0049] 在16nm MLC中,一个Block内部大多数是3个Page共享一组存储空间,如图5所示,Page 48、Page 49和Page 112共享一组存储空间。共享一组存储空间的Page又可以分为三种类型。Page 48对应最低有效位LSB Page,Page 49对应中央有效位CSB Page,Page 112对应最高有效位MSB Page。其中,LSB Page的读时延为40us且数据保持能力最强,CSB Page的读时延为70us且数据保持能力次之,MSB Page的读时延为112us且数据保持能力较弱。
[0050] 目前,NAND Flash将数据按照接收顺序存储到多个Block中以提高并发度。如图6所示,NAND Flash按照接收数据的顺序即写命令(CMD)1、CMD2和CMD3依次存储数据。其中,在Block内部的各个Page中随机存储数据。但是,由于不同Page存储数据的性能不同,因此目前的存储方式,使得存储设备在存储具有不同处理需求的应用的数据时,处理效率较低。
[0051] 图7示出了本申请实施例的数据写入方法的示意性流程图。该方法包括:
[0052] 701,存储设备接收上层应用发送的写命令,该写命令携带待写入数据的类型。
[0053] 本申请实施例的存储设备是包括NAND Flash的SSD。
[0054] 该存储设备与上层应用所在主机通过非易失内存控制(Non-Volatile Memory Express,NVMe)协议通讯,在NVMe协议定义的写命令中会携带待写入数据的类型。本实施例中,该待写入数据的类型为通过对写请求的写时延要求标识。具体地,如图8所示,在NVMe的写命令中定义了写时延字段,该写时延字段定义了不同的时延要求,分别用00b,01b,10b和11b标识写命令的时延要求,其中00b表示写请求不要求时延(No latency information provided),即应用对写入数据的时间长短没有要求,01b表示写请求可以接受较长时延(Longer latency acceptable),即应用可以接受写入数据的时间较长,10b表示普通时延(Typical latency),即应用要求写入数据的时间长度为较为普遍的时间长度,11b表示最短时延(Smallest possible latency),即应用要求写入数据的时间长度比较短。在上层应用下发命令时,即可选择其中一种时延要求,以表示待写入数据的类型。
[0055] 需要说明的是,该写命令还携带待写入的数据的逻辑地址,以及待写入数据的长度。
[0056] 702,该存储设备根据该写命令中携带的待写入数据的类型,确定写入该待写入数据的存储区域的类型。
[0057] 在一个实施例中,存储设备可以根据待写入数据的类型,以及SSD中存储的数据类型与存储区域类型的对应关系,确定写入该待写入数据的目标存储区域的类型。
[0058] 具体地,存储设备根据待写入数据的类型和对应关系,可以直接确定待写入数据的目标存储区域,也可以间接确定待写入数据的目标存储区域。
[0059] 例如,若对应关系中存在该待写入数据的类型,则可以将对应关系中该待写入数据的类型对应的存储区域的类型,确定为目标存储区域的类型。若对应关系中不存在该待写入数据的类型,则可以将于该待写入数据的类型相近的其他类型对应的存储区域的类型确定为目标存储区域类型。
[0060] 可选地,不同存储区域的类型对应的存储区域中包括的块中用于存储数据的比特位不同。
[0061] 例如,存储区域可以是用于存储数据的比特位为两位的单层式储存单元SLC区域、也可以是用于存储数据的比特位为4位的多层式储存单元MLC区域、也可以是用于存储数据的比特位为8位的三层式存储单元TLC区域,或者也可以是用于存储数据的比特位为16位的四层式存储单元QLC区域。
[0062] 应理解,该存储区域还可以是用于存储数据的比特位大于16位的其他存储区域,本申请对此不进行限定。
[0063] 在另一个实施例中,该SSD包括多个存储块,该SSD按照存储块的类型分为不同类型的存储区域,该对应关系为数据类型与存储块的类型的对应关系。
[0064] 具体地,存储设备包括不同类型的存储区域,且不同类型的存储区域具有不同的存储性能。在存储设备中,可预先设置待写入数据的数据类型与存储块的类型的映射关系,例如,可以设置写时延字段中的00b对应的存储块的类型为SLC存储区域,01b对应的存储块的类型为MLC存储区域,10b对应的存储块的类型为TLC存储区域,11b对应的存储块的类型为QLC区域。这样,在存储设备接收到该写命令时,即可根据写命令中的待写入数据的类型确定写入该待写入数据的存储块的类型。
[0065] 例如,SSD可以包括SLC存储区域、MLC存储区域、TLC存储区域、QLC存储区域中的至少一项。一个Block包括的所有cell可以属于同一类型,相同类型的Block形成一种类型的存储区域,例如SLC型的多个Block即形成SLC存储区域、MLC型的多个Block即形成MLC存储区域、TLC型的Block即形成TLC存储区域。
[0066] 如图9所示,主机中的应用将待写入数据存储到SSD中的存储区域,存储区域可以划分为4个等级的区域:SLC区域、MLC区域、TLC区域和QLC区域。
[0067] 需要说明的是,SLC区域、MLC区域、TCL区域和QLC区域的性能可以是根据数据处理的效率,可靠性等进行划分的。例如,SLC区域相比其他三种类型区域的数据处理的效率最高就可以认为该区域的性能最高。
[0068] 应理解,下述实施例中可以将按照Block为单位划分的存储区域称为“Block存储区域”。
[0069] 703,根据该存储区域的类型确定写入该待写入数据的目标存储区域。
[0070] 在确定了写入该待写入数据的存储区域的类型后,即可在相应类型的存储区域选择一个该存储区域中的空闲区域写入该待写入数据。例如,将写入所述待写入数据的SSD中的存储区域的类型的块存储区域中的至少一个空闲块Block作为目标存储区域。
[0071] 可选地,若写入所述待写入数据的SSD中的存储区域的类型的存储区域中不存在空闲的Block,则存储设备可以将其他类型的存储区域中的Blcok类型转换为与写入所述待写入数据的SSD中的存储区域的类型类型的存储区域包括的Block一致的类型。
[0072] 例如,MLC区域、TLC区域或QLC区域可以将部分Block切换为SLC类型的Block,从而提升存储性能。
[0073] 可选地,存储设备可以降低MLC区域、TLC区域或QLC区域中部分Block的存储量,从而将这部分Block的存储性能提高。例如,存储设备可以将MLC区域中的部分Block的存储量降低,进而将这部分Blcok转换为SCL类型的Block。
[0074] 704,存储设备将该待写入数据写入该目标存储区域。
[0075] 可选地,存储设备在确定目标存储区域后,可以向应用返回确认信息。应用可以向存储设备发送待写入数据,存储设备接收到该待写入数据后,将该待写入数据存储到该目标存储区域。
[0076] 可选地,存储设备还可以接收读命令,该读命令用于请求读取数据,且该读命令携带请求读取的数据的类型,并根据该数据的类型确定请求读取的数据的调度类型。
[0077] 具体地,存储设备根据读命令携带的数据的类型,将该读命令放入不同的调度队列中,其中存储设备优先调度优先级等级高类型的数据,同时优先级等级高类型的数据存储到高优先级等级类型的存储区域,使得读取响应时间更短,从而更一步满足应用需求。
[0078] 例如,如图10所示,若读命令8和读命令1携带的数据的优先级等级类型为高优先级类型,读命令2和读命令3携带的数据的优先级等级类型为中等优先级类型,读命令5和读命令0携带的数据的优先级等级类型为低优先级类型,则存储设备可以优先调度读命令8和读命令1,其次是读命令2和读命令3,最后调度读命令5和读命令0。
[0079] 因此,本申请实施例的数据写入方法,存储设备接收携带待写入数据的类型的写命令,并根据该待写入数据的类型确定写入该待写入数据的存储块的类型,再根据该存储块的类型,确定写入该待写入数据的目标存储块,这样存储设备能够将数据存储到合适的存储块,即存储设备能够满足应用的不同需求,提高了数据处理效率,以及系统性能。
[0080] 图11示出本申请另一个实施例的数据写入方法的示意性流程图。
[0081] 1101,存储设备接收上层应用发送的写命令,该写命令携带待写入数据的类型。
[0082] 应理解,该步骤的实现方式可以与上述实施例中的步骤701相同,为避免重复,在此不进行赘述。
[0083] 1102,该存储设备根据该写命令中携带的待写入数据的类型,确定写入该待写入数据的存储区域的类型。
[0084] 在一个实施例中,存储设备可以根据待写入数据的类型,以及SSD中存储的数据类型与存储区域类型的对应关系,确定写入该待写入数据的目标存储区域的类型。
[0085] 可选地,不同存储区域的类型对应的存储区域中包括的块中的Page的读时延、写时延和/或读写可靠性不同。
[0086] 在另一个实施例中,由于SSD包括不同类型的存储块,例如SLC存储块、MLC存储块、TLC存储块。每种类型的存储块又可以包括不同类型的存储页,例如,SLC存储块包括SLB Page、CSB Page以及MSB Page中的至少一项。在本实施例中,存储设备的存储区域类型为该存储页的类型。
[0087] 具体地,SSD可以包括LSB Page、CSB Page,MSB Page。LSB Page的存储性能最低、CSB Page相比LSB Page的存储性能高,而最高有效位MSB Page的存储性能比CSB Page的存储性能更高。在存储设备中,可预先设置待写入数据的数据类型与存储页类型的映射关系,例如,可以设置写时延字段中的00b和01b对应的Page类型为LSB Page,10b对应的Page类型为CSB Page,11b对应的Page类型为MSB Page。这样,在存储设备接收到该写命令时,即可根据写命令中的待写入数据的类型确定写入该待写入数据的Page类型。也就是说,存储设备能够将待写入数据写入合适的Page中,从而提高了数据存储性能。
[0088] 可选地,Page可以是最低有效位LSB Page、中央有效位CSB Page、最高有效位MSB Page,或者还可以是其他的Page等。
[0089] 具体地,存储设备按照性能和可靠性表现可以将存储区域以Page为单位划分为至少两个性能等级。其中,最低有效位LSB Page的性能最低、中央有效位CSB Page相比LSB Page的性能高,而最高有效位MSB Page的性能比CSB Page的性能更高。这样存储设备可以根据待写入数据的类型与Page类型的对应关系,选择相应的Page类型,从而使得存储设备能够很好的服务至少两个不同需求的应用,提高了系统性能。
[0090] 例如,如图9所示,存储区域中的4个存储区域SLC区域、MLC区域、TLC区域和QLC区域可以换为3种类型的区域:LSB Page、CSB Page和MSB Page。
[0091] 应理解,每个block可以包括不同类型的Page。
[0092] 1103,该存储设备根据该存储区域的类型确定写入该待写入数据的目标存储区域。
[0093] 在确定了写入该待写入数据的存储区域的类型后,即可在相应类型的存储区域选择一个该存储区域中的空闲区域写入该待写入数据。例如,将写入所述待写入数据的SSD中的存储区域的类型的Page类型对应的至少一个空闲Page作为目标存储区域。
[0094] 可选地,不同类型的存储页可以分别对应一个存储列表,每个存储列表中记录有一种类型的存储页。存储设备可以根据存储页的类型在存储页类型对应的存储列表中寻找空闲的存储页作为该目标存储区域。如果该存储列表中存在可以使用的存储页,则将该可以使用的存储页作为目标存储区域,并将待写入数据写入该可以使用的存储页中。如果该存储列表中不存在可以使用的存储页,则在该SSD中获取一个空闲存储块,将该空闲存储块中的第一存储页作为目标存储区域,并将待写入数据写入该第一个存储页中。
[0095] 在存储设备在当前的存储页完成待写入数据的写入之后,将下一个存储页添加到相应的存储列表中。例如,在该存储列表中存在可以使用的存储页的情况下,完成数据写入之后,将该可以使用的存储页的下一页添加到存储列表中。在该存储列表中不存在可以使用的存储页的情况下,完成数据写入到第一个存储页之后,将第二个存储页添加到存储列表中。
[0096] 应理解,本申请实施例中存储列表可以称为“堆栈”,例如,LSB Page类型对应的存储列表称为“LSB堆栈”,CSB Page类型对应的存储列表称为“CSB堆栈”,MSB Page类型对应的存储列表称为“MSB堆栈”。
[0097] 例如,存储设备可以将Block存储区域划分为3种Page类型,如图12和图13所示。具体地,图12中,存储设备可以将多个Page分别挂到相应地类型区域,Block13 Page50、Block18 Page48、Block33 Page1,以及Block5 Page0挂到LSB堆栈下,Block98 Page49、Block22 Page43、Block76 Page35,以及Block66 Page17挂到CSB堆栈下,Block1 Page157、Block27 Page139、Block39 Page121,以及Block9 Page112挂到MSB堆栈下。存储设备可以根据待写入数据的类型将待写入数据存储到对应的堆栈下面的至少一个空闲Page中。
[0098] 可选地,存储设备在Block内将当前可以使用的Page划分到不同的存储列表中。
[0099] 具体地,Block内的Page按顺序进行编号,且存储设备按照Page顺序存储数据。也就是说,若对于某一个Block中的Page48没有使用,则不能直接使用Page49进行数据存储。
[0100] 存储设备对当前可以使用的Page记录到存储列表中。若存储设备的Block内存在某一个Page正在进行数据写入,则该Block内的其他Page为不可用Page。在存储设备完成在该Page的写入后,存储设备可以将下一个Page存储到相应的存储列表。
[0101] 例如,属于不同类型(LSB、CSB和MSB)的Page可以是交替出现的,以图5所示的Block18内的Page为例进行说明,数据存储到属于LSB区域的Block 18 Page48后,下一个数据需要存储到Block 18 Page50,而Block 18 Page49属于CSB区域,若Block 18 Page49没有进行数据存储,则不能直接存储到属于LSB区域的Block 18 Page50。这样,存储设备可以将能够用于数据存储的Block 18 Page49挂到CSB堆栈中,进而能够用于写入数据。
[0102] 需要说明的是,在本实施例中,对于不能用于存储数据的Page不会存储到存储列表中。
[0103] 应理解,不同Block内可以使用的相同类型的Page存储在同一个存储列表中。
[0104] 可选地,若写入所述待写入数据的SSD中的存储区域的类型的Page类型对应的存储列表中不存在可以使用的Page,则可以寻找一个全新的Block,并将Page0挂到相应的存储列表中,进而开始进行数据存储。
[0105] 可选地,若写入所述待写入数据的SSD中的存储区域的类型的Page类型对应的存储列表中不存在可以使用的Page,则存储设备可以将更高性能的Page确定为目标存储区域。也就是说,通过更高性能的Page处理数据,这样可以充分利用资源,避免数据等待合适的存储区域,造成数据拥塞。
[0106] 例如,若写入所述待写入数据的SSD中的存储区域的类型的Page类型为MSB Page,该MSB Page对应的存储列表中不存在空闲Page,则存储设备可以将CSB Page的至少一个可用的Page确定为目标存储区域,或者将MSB Page的至少一个可用的Page确定为目标存储区域。若写入所述待写入数据的SSD中的存储区域的类型的存储区域为CSB Page,该CSB Page不存在空闲Page,则将LSB Page的至少一个空闲Page确定为目标存储区域。
[0107] 应理解,存储设备也可以将更低性能类型的Page确定为目标存储区域,在更高性能类型的Page都不存在空闲存储区域的情况下,也能够提高数据处理效率,本申请对此不进行限定。
[0108] 可选地,存储设备根据待写入数据的类型可以确定出既满足该待写入数据需求的空闲Block,又满足该待写入数据需求的空闲Page。例如,存储设备可以将MLC区域中的某个Block中的属于LSB Page区域的至少一个Page作为目标存储区域。
[0109] 可选地,存储设备根据待写入数据的类型确定存储区域中的目标存储区域可以是根据待写入数据的类型从存储区域中选择一种更新类型的区域,并将写入所述待写入数据的SSD中的存储区域的类型的更新类型的区域中的至少一个Page作为该目标存储区域。其中,该存储区域包括至少两种更新类型的区域,且该至少两种更新类型区域中任意两种更新类型区域更新存储数据的频率不相同。
[0110] 具体地,存储设备将存储区域按照更新存储数据的频率划分为多个存储区域,得到多种更新类型的区域。由于存储设备存储数据的时间有限,存储设备根据待写入数据的类型可以选择将数据存储到合适的更新类型的区域。例如,存储设备可以预先设置待写入数据的类型与更新类型的区域的映射关系,存储设备根据该映射关系和待写入数据的类型,可以确定更新类型的区域。这样避免了选择不合适的更新类型区域导致的频繁的巡检刷新数据对系统性能造成影响,或者巡检刷新速率太低造成数据的可靠性下降。因此,本申请实施例能够在不影响系统性能的情况下,实现不同数据的可靠性。
[0111] 例如,如图9所示,存储区域中的4个存储区域SLC区域、MLC区域、TLC区域和QLC区域可以换为多种更新类型的区域。
[0112] 应理解,每种更新类型的区域可以以Page为单位,也可以是以Device、Target、LUN、Plane、和Block中的任一项为单位,本申请对此不进行限定。
[0113] 还应理解,多种更新类型的区域的容量可以相同,也可以部分更新类型的区域的容量不同,也可以都不相同。
[0114] 可选地,存储设备还可以将满足上述Block存储区域、Page、和更新类型的区域这三种类型至少两种类型的存储区域作为目标存储区域。例如,存储设备可以将MLC区域中的某个Block中的既属于LSB Page又属于某一种更新类型的区域中的至少一个Page作为目标存储区域。
[0115] 1104,存储设备将该待写入数据写入该目标存储区域。
[0116] 因此,本申请实施例的数据写入方法,存储设备接收携带待写入数据的类型的写命令,并根据该待写入数据的类型确定写入该待写入数据的存储页的类型,再根据该存储页的类型,确定写入该待写入数据的目标存储页,这样存储设备能够将数据存储到合适的存储页,即存储设备能够满足应用的不同需求,提高了数据处理效率,以及系统性能。
[0117] 图14为本申请实施例的存储设备1400的示意性框图。如图14所示,该存储设备1400包括:
[0118] 接收模块1410,用于接收写命令,该写命令携带待写入数据的类型;
[0119] 处理模块1420,用于根据该待写入数据的类型,确定写入该待写入数据的SSD中的存储区域的类型,该SSD包括多种类型的存储区域;
[0120] 该处理模块1420,还用于根据该存储区域的类型,确定写入该待写入数据的目标存储区域;
[0121] 该处理模块1420,还用于将该待写入数据写入该目标存储区域。
[0122] 可选地,该SSD中存储有数据类型与存储区域类型的对应关系,该处理模块1420具体用于:根据该待写入数据的类型及该对应关系,确定该写入该待写入数据的目标存储区域的类型。
[0123] 可选地,该SSD包括多个存储块,该SSD按照存储块的类型分为不同类型的存储区域,该对应关系为数据类型与存储块的类型的对应关系。
[0124] 可选地,该SSD包括多个存储块,每个存储块包括至少一种类型的存储页,该SSD按照存储页的类型划分为不同类型的存储区域,该对应关系为数据类型与该存储页的类型的对应关系。
[0125] 可选地,不同类型的存储页分别对应一个存储列表,每个存储列表中记录有一种类型的存储页;
[0126] 该处理模块1420具体用于:
[0127] 根据存储页的类型在该存储页类型对应的存储列表中找可用的存储页作为该目标存储区域;
[0128] 如果该存储列表中有可用的存储页,则将该可用的存储页作为该目标存储区域;
[0129] 如果该存储列表中没有可用的存储页,则在该SSD中获取一个空闲存储块,将该空闲存储块的第一个存储页作为该目标存储区域。
[0130] 可选地,该SSD包括SLC区域、MLC区域、TLC区域和QLC区域中的至少两项,且该SLC区域、该MLC区域、所述TLC区域和所述QLC区域的性能依次降低,若所述写入所述待写入数据的SSD中的存储区域的类型对应的存储区域中的存储块都不包括空闲存储页,所述处理模块1420将性能低于所述写入所述待写入数据的SSD中的存储区域的类型的存储区域的至少一个包括空闲存储页的块的类型转换为与所述写入所述待写入数据的SSD中的存储区域的类型的存储区域的类型相同。
[0131] 可选地,所述存储块包括LSB页、CSB页和所述MSB页中的至少两项,且所述LSB页、所述CSB页和所述MSB页的性能依次降低,所述处理模块1420具体用于:
[0132] 若所述写入所述待写入数据的SSD中的存储区域的类型的存储区域为该MSB页或该CSB页,且该写入所述待写入数据的SSD中的存储区域的类型的存储区域不存在可用的存储页,将该性能高于该写入该待写入数据的SSD中的存储区域的类型对应的至少一个可用的存储页确定为该目标存储区域。
[0133] 因此,本申请实施例的存储设备,存储设备接收携带待写入数据的类型的写命令,并根据该待写入数据的类型确定写入该待写入数据的存储区域的类型,再根据该存储区域的类型,确定写入该待写入数据的目标存储区域,这样存储设备能够将数据存储到合适的存储区域,即存储设备能够满足应用的不同需求,提高了数据处理效率,以及系统性能。
[0134] 应理解,根据本申请实施例的存储设备1400可对应于图7所示的实施例的数据写入方法的中的存储设备,并且存储设备1400中的各个模块的上述和其它管理操作和/或功能分别为了实现前述各个方法的相应步骤,为了简洁,在此不再赘述。
[0135] 本申请实施例中的接收模块1410可以由收发器实现,处理模块1420可以由处理器实现。如图15所示,存储设备1500可以包括收发器1510,处理器1520和存储器1530。其中,存储器1530可以用于存储指示信息,还可以用于存储处理器1520执行的代码、指令等。
[0136] 应理解,处理器1520可以是集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0137] 可以理解,本发明实施例中的存储器1530可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchronous link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
[0138] 应注意,本申请实施例的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0139] 本申请实施例还提供一种计算机存储介质,该计算机存储介质可以存储用于指示上述任一种方法的程序指令。
[0140] 可选地,该存储介质具体可以为存储器1530。
[0141] 本申请实施例还提供了一种系统芯片,该系统芯片包括输入输出接口、至少一个处理器、至少一个存储器和总线,该至少一个存储器用于存储指令,该至少一个处理器用于调用该至少一个存储器的指令,以进行上述各个实施例的方法的操作。
[0142] 本申请实施例的芯片系统包括的处理器,用于支持分布式单元、集中式单元以及存储设备以实现上述实施例中所涉及的功能,例如,例如生成或处理上述方法中所涉及的数据和/或信息。
[0143] 在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存分布式单元、集中式单元以及终端设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。应当理解的是,该芯片处理的数据和/或信息可来自应用,处理后的数据和/或信息也可发送给应用,本申请对此不进行限定。
[0144] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0145] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0146] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0147] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0148] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0149] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0150] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。