一种将数据写入固态硬盘的方法以及固态硬盘与流程

文档序号:16550844发布日期:2019-01-08 21:06阅读:517来源:国知局
一种将数据写入固态硬盘的方法以及固态硬盘与流程

本发明实施例涉及存储技术领域,特别是一种将数据写入固态硬盘的方法以及固态硬盘。



背景技术:

闪存颗粒的寿命是通过编程/擦写次数来衡量的,并且和闪存颗粒的数据存储模式直接相关。在单层式存储中,每个单元只能处于两种状态中的一种,即每个单元存储一个比特,单层单元(single-levelcell,slc)类型的单元的擦写次数可达到10万次。而多层单元(multi-levelcell,mlc)的擦写次数可达12000次,tlc可达8000次。

通常情况下,固态硬盘采用同一种数据存储模式,例如mlc或者三层单元(triple-levelcell,tlc)存储数据,然而数据的生命周期并不相同,例如元数据的写入量大又较容易被删除,并且被覆盖写的几率也很高,而业务数据的稳定性就比元数据高。所以元数据对闪存颗粒的擦写次数的消耗比业务数据更高,从而拖累整个固态硬盘的使用寿命。



技术实现要素:

本申请第一方面提供了一种将数据写入固态硬盘的方法。所述固态硬盘包括闪存控制器和闪存芯片,所述闪存芯片包括多个擦除块。所述闪存控制器接收数据以及所述数据的生命周期。所述闪存控制器根据不同的生命周期将所述多个擦除块至少划分为第一擦除块集合和第二擦除块集合。所述闪存控制器对所述擦除块集合进行配置,使得不同的擦除块集合在存储数据时使用不同的层级单元闪存技术。所述闪存控制器根据所述接收的数据的生命周期从所述擦除块集合中选择目标擦除块,将所述接收的数据写入选择出的目标擦除块中。

按照第一方面,固态硬盘中的擦除块被划分为至少两个擦除块集合,不同的擦除块集合在存储数据使用不同层级的闪存技术,从而使得不同生命周期级别的数据可以利用不同层级的闪存技术保存,从而减少擦除块的擦写次数,可以提高固态硬盘使用寿命。

在第一方面的第一种实现中,所述多个擦除块包括多个存储单元,所述第一擦除块集合中的存储单元用于使用单层单元技术,所述第二擦除块集合中存储单元用于使用多层单元技术、三层单元技术、四层单元技术中的至少一种。

结合第一种实现,在第一方面的第二种实现中,当所述数据的生命周期低于或等于第一生命周期阈值时,所述目标擦除块来自所述第一擦除块集合。当所述数据的生命周期高于第一生命周期阈值时,所述目标擦除块来自所述第二擦除块集合。

结合第一种实现,在第一方面的第三种实现中,所述方法还包括:所述闪存控制器根据所述第二擦除块集合所包含的每个擦除块的可擦写次数,将所述第二擦除块集合所包含的擦除块至少划分为第一擦除块子集合和第二擦除块子集合。

结合第三种实现,在第一方面的第四种实现中,所述第一擦除块子集合中每个擦除块的可擦写次数均大于擦写次数阈值,所述第二擦除块子集合中每个擦除块的可擦写次数均小于所述擦写次数阈值。所述第一擦除块子集合用于存储生命周期低于或等于第二生命周期阈值的数据,述第二擦除块子集合用于存储生命周期高于所述第二生命周期阈值的数据。

在第一方面的第五种实现中,所述闪存控制器接收所述数据的生命周期包括:所述闪存控制器接收数据集管理命令,所述数据集管理命令携带所述数据的生命周期。

在第一方面的第六种实现中,所述闪存控制器接收数据以及所述数据的生命周期包括:所述闪存控制器接收写命令,所述写命令携带所述数据以及所述数据的生命周期。

本申请第二方面提供了一种将数据写入固态硬盘的装置,用于执行第一方面任意一种实现方式所描述的方法。

本申请第三方面提供了一种固态硬盘,该固态硬盘包括闪存控制器和闪存芯片,所述闪存控制器调用程序指令以执行第一方面任意一种实现方式所描述的方法。

本申请第四方面提供了一种将数据写入固态硬盘的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行第一方面任意一种实现方式所描述的方法。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。

图1是本发明实施例提供的存储系统的组成图;

图2是本发明实施例提供的系统控制器的结构示意图;

图3是本发明实施例提供的固态硬盘的结构示意图;

图4是本发明实施例提供的将数据写入固态硬盘的方法的流程示意图;

图5是本发明实施例提供的将数据写入固态硬盘装置的结构示意图。

具体实施方式

本发明实施例提出了一种将数据写入固态硬盘的方法以及固态硬盘,可以减少擦除块的擦写次数,从而提升固态硬盘的使用寿命。

图1描绘了本发明实施例提供的闪存阵列的组成图,图1所示的闪存阵列包括至少一个控制器(如图1所示的控制器11)和多个固态硬盘22。控制器11通过存储区域网络(英文:storageareanetwork,san)与主机(图中未示出)连接。控制器11可以是一种计算设备,如服务器、台式计算机等等。在控制器11上安装有操作系统以及应用程序。控制器11可以接收来自主机的输入输出(i/o)请求。控制器11还可以存储i/o请求中携带的数据(如果有的话),并且将该数据写入固态硬盘22中。固态硬盘(英文:solidstatedisk,ssd)是以闪存(英文:flashmemory)芯片为介质的存储器,又名固态驱动器(solidstatedrive,ssd)。

图1仅是示例性说明,在实际应用中存储系统可包含两个或两个以上控制器,每个控制器的物理结构和功能与控制器11类似,并且本实施例并不限定控制器之间,以及任意一个控制器与固态硬盘22之间的连接方式。只要各个控制器之间,以及各个控制器和固态硬盘22之间能够相互通信。

图2是控制器11的结构示例图,如图2所示,控制器11包括接口卡110、处理器112和接口卡113。

接口卡110用于和主机通信,控制器11可以通过接口卡110接收主机的操作指令。处理器112可能是一个中央处理器(英文:centralprocessingunit,cpu)。在本发明实施例中,处理器112可以用于接收来自主机的i/o请求、处理所述i/o请求。所述i/o请求可以是写数据请求或者读数据请求,处理器112还可以将写数据请求中的数据发送给固态硬盘22。此外,处理器112还可以用于执行系统垃圾回收操作。接口卡113,用于和固态硬盘22通信,控制器11可以通过接口卡113将写数据请求(包括数据以及所述数据的生命周期级别)发送给固态硬盘22存储。

可选地,控制器11还可以包括存储器111。存储器111用于临时存储从主机接收的数据或从固态硬盘22读取的数据。控制器11接收主机发送的多个写数据请求时,可以将所述多个写数据请求中的数据暂时保存在存储器111中。当存储器111的容量达到一定阈值时,将存储器111存储的数据以及为所述数据分配的逻辑地址发送给固态硬盘22。固态硬盘22存储所述数据。存储器111包括易失性存储器,闪存芯片或其组合。易失性存储器例如为随机访问存储器(英文:random-accessmemory,ram)。闪存芯片例如软盘、硬盘、固态硬盘(solidstatedisk,ssd)、光盘等各种可以存储程序代码的机器可读介质。存储器111具有保电功能,保电功能是指系统发生掉电又重新上电时,存储器111中存储的数据也不会丢失。

另外,在本实施例中,控制器11负责对数据的生命周期进行识别,并且把不同生命周期的数据划分为若干等级。本实施例中数据的生命周期和该数据的修改频率有关,修改频率越高的数据生命周期越短,修改频率越低的数据生命周期越长。例如日志写入量大但很快会被删除(在固态硬盘中的保存时间可能只有几分钟),这类数据被划分为第一等级的生命周期。元数据相对于日志来说,它在固态硬盘中的保存时间略长,可以被划分为第二等级的生命周期。而业务数据中的热数据可以被划分为第三等级的生命周期,业务数据中的冷数据可以被划分为第四等级的生命周期。当然,本发明实施例并不限定生命周期级别的数量,可以只包含两个等级的生命周期,也可以包含三个或三个以上等级的生命周期。

具体的,控制器11可以预先设置一个或多个生命周期阈值,将数据的生命周期与生命周期阈值进行比较从而确定该数据所属的生命周期级别。举例来说,预先设置第一生命周期阈值、第二生命周期阈值和第三生命周期阈值,其中第二生命周期阈值高于第一生命周期阈值,第三生命周期阈值高于第二生命周期阈值。当数据的生命周期等于或低于第一生命周期阈值时,它属于第一等级的生命周期,当数据的生命周期位于第一生命周期阈值与第二生命周期阈值之间时,该数据属于第二等级的生命周期,当数据的生命周期位于第二生命周期阈值和第三生命周期阈值之间时,该数据属于第三等级的生命周期,当数据的生命周期高于第三生命周期阈值时,该数据属于第四等级的生命周期。

控制器11在识别出数据的生命周期级别之后,将所述识别出的生命周期级别以参数的形式携带在nvme协议中传递给固态硬盘22,以便固态硬盘22根据生命周期的参数判断生命周期级别,并且为不同生命周期级别的数据分配不同的数据存储模式的擦除块。

需要说明的是,控制器11属于系统控制器,系统控制器是独立的设备,不同于固态硬盘中的控制芯片。本实施例将固态硬盘的控制芯片称为闪存控制器。

固态硬盘22包括闪存控制器221和多个闪存芯片222。其中,闪存控制器221用于执行控制器11发送的写数据请求或者读数据请求等操作。

闪存控制器221中包含闪存翻译层(英文:flashtranslationlayer,ftl)。闪存翻译层用于保存有数据的逻辑地址与实际地址之间的对应关系。因此,闪存翻译层用于将系统控制器发送的写数据请求或者读数据请求中的逻辑地址转化为固态硬盘中数据的实际地址。数据的逻辑地址是由系统控制器分配的,一个段的逻辑地址区间的子集。数据的逻辑地址包括起始逻辑地址和长度,起始逻辑地址指示所述数据位于的所述段的位置,长度代表所述数据的大小。数据的实际地址可以是固态硬盘中该数据的物理地址,也可以是在所述物理地址的基础上经过虚拟化,只对闪存控制器可见的地址。该经过虚拟化的实际地址对系统控制器不可见。

固态硬盘通常包括一个或多个闪存芯片。每个闪存芯片包括若干个擦除块。固态硬盘在读取或写入时是以一个页(英文:page)为基础的,但擦除操作只能以一个擦除块为基础,擦除操作是指将这个块的所有位都设置为“1”。在擦除之前,闪存控制器需要先将这个擦除块中的有效数据复制到另一个块的空白页中去。擦除块中的有效数据是指该块中保存的没有被修改过的数据,这部分数据可能会被读取。擦除块中的无效数据是指该块中保存的已经被修改过的数据,这部分数据不可能会被读取。

每个擦除块包含多个页(英文:page)。固态硬盘在执行写数据请求时,是以页为单位来写数据的。举例来说,控制器11向闪存控制器221发送一个写数据请求。所述写数据请求包括数据的逻辑地址。闪存控制器221在接收所述写数据请求之后,按照接收的时间顺序将所述数据连续写入一个或多个擦除块中。连续写入一个或多个擦除块是指,闪存控制器221查找一个空白的擦除块,将数据写入所述空白的擦除块,直至将所述空白的擦除块填满,当所述数据的大小超过擦除块的容量时,闪存控制器221再查找下一个空白的擦除块,继续写入。闪存翻译层建立并保存所述逻辑地址与写入所述数据的页的实际地址之间的对应关系。当控制器11向闪存控制器221发送读数据请求,要求读取所述数据时,所述读数据请求中包括所述逻辑地址。闪存控制器221根据所述逻辑地址、以及所述逻辑地址与实际地址之间的对应关系读取所述数据,并将该数据发送给控制器11。

存储单元(cell)是页的最小操作单元,一个存储单元对应一个浮栅晶体管,它可以存储1比特(bit)或多比特的数据,这取决于闪存的类型。一个页上的存储单元共享一根字符线。存储单元包括控制栅极和浮置栅极,浮置栅极是真正存储数据的单元。数据在存储单元中是以电荷(electricalcharge)形式存储的。存储电荷的多少取决于控制栅极所被施加的电压,其控制了向浮置栅极中冲入电荷还是使其释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值来表示。往浮置栅极中写入数据就是对控制栅极施加电压,使得浮置栅极中存储的电荷够多,超过阈值,就表示0。对闪存进行擦除操作就是对浮置栅极放电,使得浮置栅极中存储的电荷低于阈值,就表示1。

每个存储单元中存储一个比特数据的闪存类型称之为单层单元(single-levelcell,slc),单层单元的浮置栅极有一个电压阈值,因此具有0和1两种状态,可以存储一个比特的数据。单层单元闪存具有高写入速度、低功耗、更长电池耐久的优点,因此具有更快的传输速度和更长使用寿命。多层单元(multi-levelcell,mlc)是使用多个电压阈值的存储单元,从而允许相同数量的晶体管存储更多比特。在单层单元技术中,每个存储单元只能处于两种状态中的一种,而mlc在每个存储单元中存储四个可能的状态(mlc具有00、01、10、11四种状态),因此可以用每个存储单元存储两个比特。相对于slc来说,mlc的误码率更高,使用寿命更短,但成本更低。一些固态硬盘使用mlc闪存中的部分晶粒模拟为单比特的slc闪存,从而提供更高的写入速度。另外,每个单元存储三比特的闪存被称为三层单元(triple-levelcell,tlc),tlc具有8种状态。mlc的缺点在tlc上同样存在并更为突出,但tlc也受益于更高的存储密度和更低的成本。另外,闪存类型还有四层单元(quad-levelcell,qlc)以及其他多层单元,本发明实施例并不对闪存类型进行限定。

为了弥补mlc在写性能和使用寿命上面的缺陷,本实施例采用slc和mlc双模式的存储架构。mlc闪存在出厂时的默认设置是mlc存储方式,但可以通过设置特征(setfeature)命令将存储单元设置成slc模式。同理,出厂时的默认设置是tlc或者qlc的存储单元也可以通过设置特征命令设置成slc模式。以mlc闪存为例,可以预先将一部分擦除块设置为slc模式,用于存储生命周期较短的数据,然后剩下的一部分擦除块继续以默认的mlc模式存储生命周期较长的数据。本实施例将设置为slc模式的擦除块称为第一擦除块集合,将mlc模式的擦除块称为第二擦除块集合。一般来说,第一擦除块集合所包含的擦除块的数量多于第二擦除块集合所包含的擦除块。

另外,本实施例还支持包含两种或两种以上闪存类型的固态硬盘。例如,在本实施例所提供的固态硬盘中可以包含出厂时的默认设置为mlc以及tlc两种类型的存储单元,也可以包含出厂时的默认设置为mlc以及qlc两种类型的存储单元,也可以包含出厂时的默认设置为qlc以及tlc两种类型的存储单元,还可以包含出厂时的默认设置为mlc、tlc以及qlc三种类型的存储单元,或者其他组合。

下面介绍本实施例提供的将数据写入固态硬盘的方法。

如图4所示,本发明实施例提供了一种将数据写入固态硬盘的方法,应用在图1或图3所示的固态硬盘22中,所述固态硬盘22包括闪存控制器221和闪存芯片222,其中闪存芯片222包括多个擦除块。示例性的,该方法可以包括以下步骤:

401,闪存控制器221接收控制器11发送的数据以及所述数据的生命周期。

控制器11可以利用nvme协议向闪存控制器221传输数据以及该数据的生命周期级别。在标准的nvme协议中并没有专门用于指示数据的生命周期级别的字段。在本实施例中,可以扩展使用两个比特用于携带数据的生命周期级别。一种情况是,在数据集管理命令(datasetmanagementcommand)中扩展使用两个比特,在这种情况下,数据和数据的生命周期级别就是分别发送给闪存控制器221的(因为数据是通过写命令传递给闪存控制器221的)。另一种情况下,在写命令(writecommand)中扩展使用两个比特用于携带数据的生命周期级别,在这种情况下,数据和数据的生命周期级别就是一起发送给闪存控制器221的。除此之外,控制器11还可以利用其他命令把数据的生命周期级别传递给闪存控制器221,本实施例不对命令的类型进行限定。

无论是数据集管理命令还是写命令都遵从nvme协议,其扩展使用的两个比特可以用00、01、10、11表示不同的生命周期级别。示例性的,00表示第一等级的生命周期,01表示第二等级的生命周期,10表示第三等级的生命周期,11表示第四等级的生命周期。

402,闪存控制器221根据数据的生命周期将闪存芯片所包含的多个擦除块划分为第一擦除块集合和第二擦除块集合。

由前面的描述可知,闪存芯片包括多个擦除块,这些擦除块在出厂时的默认设置是mlc或者tlc或者qlc。闪存控制器221可以根据数据的生命周期将所述多个擦除块划分为至少两个集合,具体的,如果数据的生命周期有两个等级,那么将这些擦除块划分为两个集合。如果数据的生命周期级别有三个等级,那么将这些擦除块划分为三个集合,依此类推。本实施例中,以两个生命周期级别为例,将擦除块划分为第一擦除块集合和第二擦除块集合。

步骤402可以在步骤401之前执行,也可以在步骤401之后执行。控制器11需要预先将生命周期的等级通知给闪存控制器221,使得闪存控制器221可以获得生命周期的等级。

403,闪存控制器221将不同的擦除块集合配置成使用不同层级单元闪存技术。

本实施例以闪存芯片所包含的擦除块是mlc模式为例,mlc通过使用大量的电压等级,使得每个存储单元可以存储两位数据。因此mlc可以存储4个值,分别是00、01、10和11。然而,mlc模式的擦除块也提供了slc接口,使得闪存控制器221可以通过setfeature命令将mlc模式的擦除块设置成slc模式。slc有一个电压阈值,因此具有0和1两种状态,可以存储一个比特的数据。为了存储生命周期较短的数据,闪存控制器221将第一擦除块集合中的擦除块都设置为slc模式,使得所述第一擦除块集合中的擦除块在存储数据时可以利用单层单元技术存储数据。而对于生命周期较长的数据,闪存控制器221将其存储在第二擦除块集合中,这意味着生命周期较长的数据仍然利用单层单元闪存(mlc)技术存储数据。

404,闪存控制器221根据接收的数据的生命周期选择一个目标擦除块。

仍然以两个生命周期级别为例,闪存控制器221可以从接收的命令(数据集管理命令或者写命令)中提取指示生命周期级别的参数,以获得该数据的生命周期级别。例如参数00用于指示该数据属于第一等级的生命周期。当所述数据属于第一等级的生命周期时,闪存控制器221从第一擦除块集合中选择一个擦除块用于存储所述数据。为了方便描述,本实施例将所述选择出的擦除块称为目标擦除块。当所述数据属于第二等级的生命周期时(所述第二等级的生命周期所指示的生命周期比第一等级的生命周期所指示的生命周期长),闪存控制器221从第二擦除块集合中选择一个擦除块用于存储所述数据。

以第一擦除块集合为例,所述第一擦除块集合中所有的擦除块都用于存储第一等级的生命周期的数据,因此在第一擦除块集合中可能有一个擦除块已经保存有部分第一等级的生命周期的数据,但这个擦除块并没有写满。这种情况下,闪存控制器221就可以选择这个没有写满的擦除块,作为所述目标擦除块,继续写入数据。如果所述第一擦除块集合中不存在一个已经保存有部分数据但没有写满的擦除块,那么闪存控制器221可以选择任意一个空白的擦除块作为目标擦除块。同理,以上选择目标擦除块的规则也适用于从第二擦除块集合中选择擦除块。

405,闪存控制器221将接收的数据写入选择出的目标擦除块中。

可以理解的是,如果所述目标擦除块是从第一擦除块集合中选择出来的,那么在将数据写入所述目标擦除块,是利用单层单元技术写入的。如果所述目标擦除块是从第二擦除块集合中选择出来的,那么在将数据写入所述目标擦除块,是利用多层单元技术写入的。

通过图4所示的方法,固态硬盘中的擦除块被划分为至少两个擦除块集合,不同的擦除块集合在存储数据使用不同层级的闪存技术,从而使得不同生命周期级别的数据可以利用不同层级的闪存技术保存,从而减少擦除块的擦写次数,可以提高固态硬盘使用寿命。

具体而言,生命周期较短的数据是利用单层单元技术写入单层单元的,生命周期较长的数据是利用多层单元技术写入多层单元的。对于生命周期较短的数据,虽然修改次数较多,但由于被写入单层单元中,而单层单元的擦写次数大于多层单元的擦写次数,因此即使修改次数较多的数据也不会拖累整个固态硬盘所包含的擦除块的擦写次数,从而提高了固态硬盘的使用寿命。

图4所描述的是将数据写入固态硬盘的过程,对于从固态硬盘中读取数据的过程则可以和写数据的过程保持一致。具体而言,如果数据是以单层单元技术写入的,那么在读数据的时候也是以单层单元技术读出来,如果数据是以多层单元技术写入的,那么在读数据的时候也是以多层单元技术读出来。

另外,在图4所示的实施例中,还可以将第二擦除块集合进一步至少划分为第一擦除块子集合和第二擦除块子集合。不同子集合是根据所述第二擦除块集合所包含的擦除块的可擦写次数划分的。闪存控制器221可以预先设置擦写次数阈值,高于所述擦写次数阈值的擦除块属于第一擦除块子集合,低于或等于所述擦写次数阈值的擦除块属于第二擦除块子集合。也就是说,第一擦除块子集合中的每个擦除块的可擦写次数均高于第二擦除块子集合中的每个擦除块的可擦写次数。擦除块的可擦写次数等于总擦写次数减去历史擦写次数。在一个固态硬盘中,相同类型的擦除块的总擦写次数都相同,例如存储模式是slc的擦除块的总擦写次数可达到10万次,存储模式是mlc的擦除块的总擦写次数可达到12000次,存储模式是tlc的擦除块的总擦写次数可达到8000次,存储模式是qlc的擦除块的总擦写次数可达到5000次。但即使是相同类型的擦除块,其历史擦写次数可能不相同。总擦写次数减去历史擦写次数所得的剩余擦写次数是本实施例所指的可擦写次数。

本实施例中,可以将生命周期较短的数据存储在第一擦除块子集合中,将生命周期较长的数据存储在第二擦除块子集合中。这里,对于生命周期较短的数据以及生命周期较长的数据可以通过与生命周期阈值的比较来确定。可以理解的是,此时数据的生命周期至少具有三个等级,这部分内容在控制器11的功能部分时已有描述,这里不再赘述。以控制器11识别出三个等级的生命周期为例,其中第一等级的生命周期比第二等级的生命周期短,第二等级的生命周期比第三等级的生命周期短。那么,按照本实施例的存储方式,生命周期级别为第一等级的数据仍然保存在第一擦除块集合中,而生命周期级别为第二等级的数据会被保存在第一擦除块子集合中,生命周期级别为第三等级的数据会被保存在第二擦除块子集合中。

通过将第二擦除块集合划分为第一擦除块子集合和第二擦除块子集合,可以对数据的生命周期级别进行更为细致的划分,从而进一步提高固态硬盘的使用寿命。

另外,由上面的描述可知,在图4所示的实施方式中,所述固态硬盘22其实只包含一种类型的存储单元。该类型可以是mlc、tlc和qlc中的一种。只是对于这种类型的存储单元,闪存控制器221可以将其设置为slc模式。在本发明的另一个实施例中,固态硬盘22可以包含两种或两种以上类型的存储单元,例如包含mlc和tlc,或者tlc和qlc,或者mlc和qlc,或者mlc、tlc和qlc。当固态硬盘22包含两种类型的存储单元时,这两种类型的存储单元可分别用于存储两种不同生命周期级别的数据。当固态硬盘22包含三种类型的存储单元时,这三种类型的存储单元可分别用于存储三种不同生命周期级别的数据。或者,在该实施例中,可以将部分擦除块配置成slc。此时,固态硬盘22就可能具有四种类型的存储单元,可以分别用于存储四种不同生命周期级别的数据。可以理解的是,与图4所示的实施方式类似的,生命周期长的数据存储于擦写次数少的存储单元,生命周期短的数据存储于擦写次数多的存储单元。

下面介绍系统垃圾回收的过程。

固态硬盘中的块、页、存储单元以及实际地址对控制器11来说是不可见的,因此控制器不能直接访问固态硬盘中的块、页和存储单元。控制器11在进行系统垃圾回收时将固态硬盘22的存储空间按照设定大小划分为若干个段,段是系统垃圾回收的基本单位,每个段均是多个逻辑地址的集合,并且这些逻辑地址是连续的。例如,所述设定大小是1024kb。一个段对应的逻辑地址区间是0kb-1023kb;另一个段对应的逻辑地址区间是1024kb-2047kb;再一个段对应的逻辑地址区间是2048kb-3071kb,依此类推。

在将数据写入段时,可以以扇区为单位写入。例如,一个扇区包括520个字节。其中512个字节是数据,8个字节是512字节的数据的数据完整性字段(英文:dataintegrityfield,dif)。也就是说,每次写入的数据须是512个字节的整数倍。如果所述数据的大小不满足512个字节的整数倍,可以添零补足。同样的,从段中读取数据时,也是以扇区为单位读取。另外,当数据写入段之后,需要记录该数据的有效性。数据的有效性是以所述数据是否被修改来确定的。如果所述数据是第一次写入,可以将所述数据记录为有效(称为有效数据)。如果所述数据被修改,则将所述修改前的数据记录为无效(称为无效数据)。具体的,可以用位图记录数据的有效性。例如,位图的每个“位”对应大小为1kb的数据的逻辑地址,当“位”为1时,代表所述逻辑地址中存储的数据有效,当“位”为0时,代表所述逻辑地址中存储的数据无效。

系统垃圾回收是指控制器以段为单位执行垃圾回收。控制器11根据位图获取一个段中有效数据的逻辑地址,将所述有效数据的逻辑地址发送给固态硬盘22,并且所述控制器11为所述有效数据分配新的逻辑地址,发送给所述固态硬盘22。所述固态硬盘22从旧的逻辑地址中读取所述有效数据,写入所述新的逻辑地址中。然后,控制器11再给固态硬盘22发送去映射(英文:unmap)命令,所述去映射命令包括所述待回收的段的逻辑地址区间,固态硬盘22接收所述去映射命令之后,删除闪存翻译层中保存的所述逻辑地址区间的逻辑地址与实际地址之间的对应关系。固态硬盘还可以将所述实际地址对应的块标记为不包含有效数据的块。

系统垃圾回收有别于固态硬盘内部的垃圾回收。固态硬盘内部的垃圾回收是由固态硬盘自己完成的,不需要控制器配合。闪存控制器先将各个块中的有效数据复制到空白的块,再擦除原来的块。另外,系统垃圾回收的触发条件通常是存储系统中空闲的段的数量不足(例如,低于某个阈值),而固态硬盘内部的垃圾回收的触发条件是该固态硬盘的空白的块的数量不足。

本实施例中,在系统垃圾回收的过程中,同样可以根据数据的生命周期级别用不同的存储模式存储数据,以提升固态硬盘的寿命。例如,控制器11根据位图获取一个段中有效数据的逻辑地址之后,可以进一步获取该有效数据的生命周期级别(获取方式与前面介绍的类似)。然后,控制器11将所述有效数据的逻辑地址以及生命周期发送给固态硬盘22,并且所述控制器11为所述有效数据分配新的逻辑地址,发送给所述固态硬盘22。所述固态硬盘22从旧的逻辑地址中读取所述有效数据,并且根据所述有效数据的生命周期从合适的擦除块集合中选择新的擦除块。例如,如果所述有效数据属于较短生命周期(低于某一生命周期阈值),那么闪存控制器221会从第一擦除块集合中选择一个新的擦除块,利用单层单元技术将所述有效数据写入所述新的擦除块。如果所述有效数据属于较长生命周期(高于所述生命周期阈值),那么闪存控制器221会从第二擦除块集合中选择一个新的擦除块,利用多层单元技术将所述有效数据写入所述新的擦除块。接下来,闪存控制器221再保存新的逻辑地址与写入新的擦除块的实际地址之间的对应关系至闪存翻译层。然后,控制器11再给固态硬盘22发送去映射(英文:unmap)命令,所述去映射命令包括所述待回收的段的逻辑地址区间,固态硬盘22接收所述去映射命令之后,删除闪存翻译层中保存的旧的逻辑地址与实际地址之间的对应关系。

可见,在系统垃圾回收的过程中,固态硬盘22在搬移有效数据时,是根据所述有效数据的生命周期级别选择新的擦除块,并且按照对应的存储模式写入的,因此也能达到提升固态硬盘寿命的目的。

图5是本发明实施例提供的将数据存储至固态硬盘的装置的结构示意图,所述装置位于所述闪存控制器中,包括:

接收模块501,用于接收数据以及所述数据的生命周期。划分模块502,用于根据不同的生命周期将所述多个擦除块至少划分为第一擦除块集合和第二擦除块集合。配置模块503,用于对所述擦除块集合进行配置,使得不同的擦除块集合在存储数据时使用不同的层级单元闪存技术。选择模块504,用于根据所述接收的数据的生命周期从所述擦除块集合中选择目标擦除块。写入模块505,用于将所述接收的数据写入选择出的目标擦除块中。

可选的,所述多个擦除块包括多个存储单元,所述第一擦除块集合中的存储单元用于使用单层单元技术,所述第二擦除块集合中存储单元用于使用多层单元技术、三层单元技术、四层单元技术中的至少一种。

可选的,当所述数据的生命周期低于或等于第一生命周期阈值时,所述目标擦除块来自所述第一擦除块集合。当所述数据的生命周期高于第一生命周期阈值时,所述目标擦除块来自所述第二擦除块集合。

可选的,所述接收模块501具体用于接收数据集管理命令,所述数据集管理命令携带所述数据的生命周期。

可选的,所述接收模块501具体用于接收写命令,所述写命令携带所述数据以及所述数据的生命周期。

可选的,所述划分模块502还用于根据所述第二擦除块集合所包含的每个擦除块的可擦写次数,将所述第二擦除块集合所包含的擦除块至少划分为第一擦除块子集合和第二擦除块子集合。所述第一擦除块子集合中每个擦除块的可擦写次数均大于擦写次数阈值,所述第二擦除块子集合中每个擦除块的可擦写次数均小于所述擦写次数阈值。所述第一擦除块子集合用于存储生命周期低于或等于第二生命周期阈值的数据,述第二擦除块子集合用于存储生命周期高于所述第二生命周期阈值的数据。

以上各个模块的功能可参考图4所示的方法实施例中的描述。并且,每个模块的功能均可由闪存控制器221中的控制芯片调用存储器中的程序执行。

本发明实施例还提供一种将数据写入固态硬盘的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。

本领域普通技术人员可以理解,前述的存储介质包括:u盘、移动硬盘、磁碟、光盘、随机存储器(random-accessmemory,ram)、固态硬盘(solidstatedisk,ssd)或者非易失性存储器(non-volatilememory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制。

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