一种提高SSD读写性能的方法及其系统与流程

文档序号:18617587发布日期:2019-09-06 22:10阅读:388来源:国知局
一种提高SSD读写性能的方法及其系统与流程

本发明涉及固态硬盘使用寿命技术领域,更具体地说是指一种提高ssd读写性能的方法及其系统。



背景技术:

nandflash闪存芯片是ssd(solidstatedisk)存储数据的主要部分。目前市场主流的闪存芯片是tlc,tlc(triple-levelcell),即单个存储单元存储三比特的数据,其特点是读写速度慢,寿命短(约500-1500次擦写寿命),价格便宜;而slc(single-levelcell),即单个存储单元存储一比特的数据,其特点是读写速度快,但是价格贵;tlcssd为了解决nandflash读写慢的问题,固件会分配一定比例的slccache,之所以称之为slccache,是因为它并不是真正意义上的slcnandflash,是在既有的tlcnandflash里面划出一部分空间作为slc使用,以提升ssd的读写性能。不同的ssd厂商算法不同,一部分ssd会选择划定专属空间来充当静态slccache以提高读写性能,这样做的坏处是,这块slccache专属区域由于要面临最多数据量的读写,这块区域的p/ecycle将会更快耗尽,另外一部分ssd就选择动态划分slccache区域,slccache的大小会随着ssd的实际使用容量而变化,这样slccache的空间无法得到保证。但是,不管使用哪种分配方式,都存在弊端。

目前大部分tlcssd的使用过程中,需要从tlc中读取数据,导致读性能低,并且在ssd使用后期和大量写入导致slccache用完的情况下,读写性能下降明显;因此,无法满足需求。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供一种提高ssd读写性能的方法及其系统。

为实现上述目的,本发明采用于下技术方案:

一种提高ssd读写性能的方法,包括以下步骤:

s1,主机下发写数据命令;

s2,判断动态slccache是否已写满;若是,进入s6;若否,则进入s3;

s3,将数据写入slccache;

s4,判断除slccache以外的ssd空间是否写满;若是,进入s8;若否,则进入s5;

s5,将数据保存在slc中,并进入s9;

s6,判断静态slccache是否已写满;若是,进入s8;若否,则进入s7;

s7,将数据写入slccache;

s8,将数据搬移至tlc;

s9,完成数据写入。

其进一步技术方案为:所述s2中,动态slccache为ssd容量的9%-11%。

其进一步技术方案为:所述s5中,还包括:主机读数据从slc中读取。

其进一步技术方案为:所述s6中,静态slccache的容量为3gb。

其进一步技术方案为:所述s7之后,还包括:判断主机是否空闲或ssd空间是否写满;若是,进入s8;若否,则返回s1。

一种提高ssd读写性能的系统,包括:下发单元,第一判断单元,第一写入单元,第二判断单元,保存单元,第三判断单元,第二写入单元,搬移单元,及完成单元;

所述下发单元,用于主机下发写数据命令;

所述第一判断单元,用于判断动态slccache是否已写满;

所述第一写入单元,用于将数据写入slccache;

所述第二判断单元,用于判断除slccache以外的ssd空间是否写满;

所述保存单元,用于将数据保存在slc中;

所述第三判断单元,用于判断静态slccache是否已写满;

所述第二写入单元,用于将数据写入slccache;

所述搬移单元,用于将数据搬移至tlc;

所述完成单元,用于完成数据写入。

其进一步技术方案为:所述第一判断单元中,动态slccache为ssd容量的9%-11%。

其进一步技术方案为:所述保存单元中,主机读数据从slc中读取。

其进一步技术方案为:所述第三判断单元中,静态slccache的容量为3gb。

其进一步技术方案为:还包括第四判断单元,用于判断主机是否空闲或ssd空间是否写满。

本发明与现有技术相比的有益效果是:在主机写入数据时,按优先写入动态slccache,其次写入静态slccache,最后写入tlc的原则,固件分配一部分ssd容量空间作为动态slccache,数据在空闲时不搬入tlc,提高写入性能的同时,可以提高随机读的性能,还分配3gb空间的静态slccache,空闲时搬入tlc,以提高用户在使用过程中的读写性能,通过动态slccache和静态slccache结合的分配方式,有效提高了ssd顺序读写和随机读写的性能,能够更好地满足需求。

下面结合附图和具体实施例对本发明作进一步描述。

附图说明

图1为现有技术中使用静态slccache的处理流程示意图;

图2为本发明一种提高ssd读写性能的方法流程图;

图3为本发明一种提高ssd读写性能的系统方框图。

具体实施方式

为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。

如图1到图3所示的具体实施例,现有技术中,tlcssd会依据ssd本身的容量划分一定比例的空间用于实现slccache,比例有2%-12%不等,当ssd实际使用容量超过ssd本身容量减去slccache之差后,就不再承担slccache缓存义务,重新变成tlc区域,这样做的好处是slccache专属区域只有实际使用容量超过临界值时才会被解散,在绝大多数没有达到临界值时,slccache就可以全部参与为ssd读写加速,当然这样做也有坏处的,这块slccache专属区域由于要面临最多数据量的读写,这块区域的p/ecycle将会更快耗尽,而且由于静态slccache的空间固定,所以完成写入后要及时将cache中的数据搬运到tlc,因此使用静态slccache只对写性能有明显提高,对随机读性能几乎没有提高。

其中,如图1所示的现有技术,host(主机)下发写命令,首先判断除slccache外ssd是否有剩余空间,如果有则将数据写入slc,待主机空闲将数据搬入tlc,如果没有剩余空间,则将slccache用作tlc增加存储空间;这种处理策略可以有效提升写性能,但是由于读数据时(特别是随机读),因数据已经被搬入tlc,需要从tlc中读取数据,导致读性能低,并且在ssd使用后期和大量写入导致slccache用完的情况下,读写性能下降明显。

如图2所示,本发明公开了一种提高ssd读写性能的方法,包括以下步骤:

s1,主机下发写数据命令;

s2,判断动态slccache是否已写满;若是,进入s6;若否,则进入s3;

s3,将数据写入slccache;

s4,判断除slccache以外的ssd空间是否写满;若是,进入s8;若否,则进入s5;

s5,将数据保存在slc中,并进入s9;

s6,判断静态slccache是否已写满;若是,进入s8;若否,则进入s7;

s7,将数据写入slccache;

s8,将数据搬移至tlc;

s9,完成数据写入。

其中,所述s2中,动态slccache为ssd容量的9%-11%,在本实施例中,动态slccache为ssd容量的10%。

其中,所述s5中,还包括:主机读数据从slc中读取,提高了读性能。

其中,所述s6中,静态slccache的容量为3gb,其中,基于大数据的研究结论显示,tlc固态硬盘的slc缓存容量应该大于3gb,电脑用户平均每小时产生1.17gb数据写入,90%以上的用户平均工作负载容量小于3gb;因此,在本实施例中,静态slccache空间大小为3g,数据在空闲或空间不足时搬入tlc,可以有效提高用户和系统的读写性能。

进一步地,所述s7之后,还包括:判断主机是否空闲或ssd空间是否写满;若是,进入s8;若否,则返回s1。

其中,本发明在主机写入数据时,按优先写入动态slccache,其次写入静态slccache,最后写入tlc的原则,固件分配一部分ssd容量空间作为动态slccache,数据在空闲时不搬入tlc,提高写入性能的同时,可以提高随机读的性能,还分配3gb空间的静态slccache,空闲时搬入tlc,以提高用户在使用过程中的读写性能,通过动态slccache和静态slccache结合的分配方式,有效提高ssd顺序读写和随机读写的性能,能够更好地满足需求。

如图3所示,本发明公开了一种提高ssd读写性能的系统,包括:下发单元10,第一判断单元20,第一写入单元30,第二判断单元40,保存单元50,第三判断单元60,第二写入单元70,搬移单元90,及完成单元100;

所述下发单元10,用于主机下发写数据命令;

所述第一判断单元20,用于判断动态slccache是否已写满;

所述第一写入单元30,用于将数据写入slccache;

所述第二判断单元40,用于判断除slccache以外的ssd空间是否写满;

所述保存单元50,用于将数据保存在slc中;

所述第三判断单元60,用于判断静态slccache是否已写满;

所述第二写入单元70,用于将数据写入slccache;

所述搬移单元90,用于将数据搬移至tlc;

所述完成单元100,用于完成数据写入。

其中,所述第一判断单元20中,动态slccache为ssd容量的9%-11%。

其中,所述保存单元50中,主机读数据从slc中读取,提高了读性能。

进一步地,所述第三判断单元中,静态slccache的容量为3gb。

其中,还包括第四判断单元80,用于判断主机是否空闲或ssd空间是否写满。

其中,本发明按优先写入动态slccache,其次写入静态slccache,最后写入tlc的原则,有效提高了写性能,而动态slccache的数据在空闲时不搬入tlc,随机读也可以通过slc读取数据,提高了随机读性能,静态slccache空间大小为3g,静态slccache空闲时搬入tlc,以保障足够的slccache,提高用户在使用过程中的性能体验,动态调整p/ecycle低的block作为slccache,空闲时数据不搬入tlc,在空间不足时搬入tlc,可以有效提高随机读写性能。

上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。

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