掌桥专利:专业的专利平台
掌桥专利
首页

一种固态硬盘性能优化方法、装置以及介质

文献发布时间:2023-06-23 06:30:03


一种固态硬盘性能优化方法、装置以及介质

技术领域

本申请涉及固态硬盘领域,特别是涉及一种固态硬盘性能优化方法、装置以及介质。

背景技术

在大数据时代,海量数据的存储位于越来重要的地位,在CPU等计算部件速率越来越高的同时,数据的存储与读取速率一直为系统瓶颈。目前随着NAND价格逐渐下降,固态硬盘的使用数量也逐年上升。

不同于传统硬盘,固态硬盘的存储单元为NAND。NAND基本的操作为读写擦,由于NAND的基本特性导致其在擦写一定次数之后,会变的不稳定。为正常读出其中的数据,需要设定的一定的偏转电压。偏转电压根据擦写次数的不同而不同,一般以1000次擦写为一组。由于固态硬盘固件的原因导致所有的Block并不能做到擦写次数完全一致,一般允许有最大200的偏差。

为获取Block的真实的擦写次数,在读操作之前需要读取DDR,获取Block Info,从而获取此物理Block的真实的擦写次数。由于DDR对比于CPU而言属于慢速设备,频繁的访问DDR会造成性能的下降。

同时在此1000*N的擦写边界上会造成不同的Block使用不同的偏转电压,从而造成处于1000*N的Block使用偏转电压A,处于1000*(N+1)的Block使用偏转电压B,如果两个偏转电压的轮流使用会造成每次读操作都需要重新设置偏转电压,进一步的影响读操作的性能。

由此可见,如何在设置偏转电压时,避免频繁访问DDR而造成性能的下降是本领域技术人员亟待解决的问题。

发明内容

本申请的目的是提供一种固态硬盘性能优化方法、装置以及介质,以在设置偏转电压时,避免频繁访问DDR而造成性能的下降。

为解决上述技术问题,本申请提供一种固态硬盘性能优化方法,包括:

获取所有可用块的平均擦写次数;

调用偏转电压表,根据所述平均擦写次数确认对应的偏转电压索引值;

根据所述偏转电压索引值设置偏转电压。

优选的,还包括:

限制所有块的擦写次数最大差值不超过设定值。

优选的,还包括:

在检测到存在块的擦写次数最大差值超出设定值的情况下,发送提示信息。

优选的,所述限制所有块的擦写次数最大差值不超过设定值为:

设置磨损均衡单元以限制所有可用块的擦写次数最大差值不超过设定值。

优选的,还包括:

若连续设置的预设个数的所述偏转电压均不相同,则发送告警信息。

优选的,所述获取所有可用块的平均擦写次数为:

获取随机访问存储器中记录的块的平均擦写次数。

优选的,还包括:

在所述平均擦写次数超出阈值的情况下,发送告警信息。

为解决上述技术问题,本申请还提供一种固态硬盘性能优化装置,包括:

获取模块,用于获取所有可用块的平均擦写次数;

确认模块,用于调用偏转电压表,根据所述平均擦写次数确认对应的偏转电压索引值;

设置模块,用于根据所述偏转电压索引值设置偏转电压。

为解决上述技术问题,本申请还提供另一种固态硬盘性能优化装置,包括存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述的固态硬盘性能优化方法的步骤。

为解决上述技术问题,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的固态硬盘性能优化方法的步骤。

本申请所提供的固态硬盘性能优化方法,通过获取所有可用块的平均擦写次数;调用偏转电压表,根据平均擦写次数确认对应的偏转电压索引值;根据偏转电压索引值设置偏转电压。相对于当前技术中,为获取块的真实的擦写次数而频繁的访问DDR会造成性能的下降,采用本技术方案,使用随机访问存储器中记录的块的平均擦写次数替代真实的擦写次数,根据平均擦写次数设置相应的偏转电压,从而不用再访问DDR,以减少DDR访问对读操作的影响。并且,当前技术中在各块的擦写次数趋于对应的偏转电压时需要反复设置偏转电压,采用本技术方案,由于平均擦写次数为固定值,在擦写次数趋于边界值时也无需反复设置偏转电压,提高随机读的性能。

本申请所提供的固态硬盘性能优化装置以及介质,通过获取所有可用块的平均擦写次数;调用偏转电压表,根据平均擦写次数确认对应的偏转电压索引值;根据偏转电压索引值设置偏转电压。相对于当前技术中,为获取块的真实的擦写次数而频繁的访问DDR会造成性能的下降,采用本技术方案,使用随机访问存储器中记录的块的平均擦写次数替代真实的擦写次数,根据平均擦写次数设置相应的偏转电压,从而不用再访问DDR,以减少DDR访问对读操作的影响。并且,当前技术中在各块的擦写次数趋于对应的偏转电压时需要反复设置偏转电压,采用本技术方案,由于平均擦写次数为固定值,在擦写次数趋于边界值时也无需反复设置偏转电压,提高随机读的性能。

附图说明

为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种固态硬盘性能优化方法的流程图;

图2为本申请实施例提供的一种固态硬盘性能优化装置的结构图;

图3为本申请实施例提供的另一种固态硬盘性能优化装置的结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。

在大数据时代,海量数据的存储位于越来重要的地位,在CPU等计算部件速率越来越高的同时,数据的存储与读取速率一直为系统瓶颈。目前随着NAND价格逐渐下降,固态硬盘的使用数量也逐年上升。

不同于传统硬盘,固态硬盘的存储单元为NAND。NAND基本的操作为读写擦,由于NAND的基本特性导致其在擦写一定次数之后,会变的不稳定。为正常读出其中的数据,需要设定的一定的偏转电压。偏转电压根据擦写次数的不同而不同,一般以1000次擦写为一组。由于固态硬盘固件的原因导致所有的Block并不能做到擦写次数完全一致,一般允许有最大200的偏差。

为获取Block的真实的擦写次数,在读操作之前需要读取DDR,获取Block Info,从而获取此物理Block的真实的擦写次数。由于DDR对比于CPU而言属于慢速设备,频繁的访问DDR会造成性能的下降。

同时在此1000*N的擦写边界上会造成不同的Block使用不同的偏转电压,从而造成处于1000*N的Block使用偏转电压A,处于1000*(N+1)的Block使用偏转电压B,如果两个偏转电压的轮流使用会造成每次读操作都需要重新设置偏转电压,进一步的影响读操作的性能。

由此可见,如何在设置偏转电压时,避免频繁访问DDR而造成性能的下降是本领域技术人员亟待解决的问题。

本申请的核心是提供一种固态硬盘性能优化方法、装置以及介质,以在设置偏转电压时,避免频繁访问DDR而造成性能的下降。

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。

图1为本申请实施例提供的一种固态硬盘性能优化方法的流程图,如图1所示,该方法包括:

S10:获取所有可用块的平均擦写次数;

S11:调用偏转电压表,根据平均擦写次数确认对应的偏转电压索引值;

S12:根据偏转电压索引值设置偏转电压。

NAND闪存是一种比硬盘驱动器更好的存储设备,在不超过4GB的低容量应用中表现得尤为明显。随着人们持续追求功耗更低、重量更轻和性能更佳的产品,NAND被证明极具吸引力。NAND闪存是一种非易失性存储技术,即断电后仍能保存数据。它的发展目标就是降低每比特存储成本、提高存储容量。

闪存在写之前必须先擦除,不能覆盖写,于是固态硬盘才需要垃圾回收。闪存每个块(Block)擦写次数达到一定值后,这个块要么变成坏块,要么存储在上面的数据不可靠;其次闪存出厂时存在坏块。因此需要ECC纠错保护。

固态硬盘固件必须做磨损平衡,让数据平均写在所有块上,而不是盯着几个块拼命写,不然很快固态硬盘就报废了。

DDR是一个内存名称,意思即双倍速率同步动态随机存储器,是内存的其中一种。内存又可以叫做主存。是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是访问数据的速率快。内存是电脑中的主要部件,它是相对于外存而言的。我们平常使用的程序,如Windows操作系统、打字软件、游戏软件等,一般都是安装在硬盘等外存上的,但仅此是不能使用其功能的,必须把它们调入内存中运行,才能真正使用其功能,我们平时输入一段文字,或玩一个游戏,其实都是在内存中进行的。就好比在一个书房里,存放书籍的书架和书柜相当于电脑的外存,而我们工作的办公桌就是内存。通常我们把要永久保存的、大量的数据存储在外存上,而把一些临时的或少量的数据和程序放在内存上,当然内存的质量会直接影响电脑的运行速度。SDRAM在一个时钟周期内只传输一次数据,它是在时钟的上升期进行数据传输;而DDR内存则是一个时钟周期内传输两次数据,它能够在时钟的上升期和下降期各传输一次数据,因此称为双倍速率同步动态随机存储器。DDR内存可以在与SDRAM相同的总线频率下达到更高的数据传输率。

FTL是Flash Translation Layer的缩写,完成主机(或者用户,Host)逻辑地址空间到闪存(Flash)物理地址空间的翻译(Translation),或者说是映射(Mapping)。SSD每把一笔用户逻辑数据写入到闪存地址空间,便记录下该逻辑地址到物理地址的映射关系,下次主机想读取该数据,SSD根据这个映射,便能从闪存上把这笔数据读上来然后返回给用户。FTL算法的好坏,直接决定了SSD在性能(Performance)、可靠性(Reliability)、耐用性(Endurance)等方面的好坏,FTL可以说是SSD固件的核心组成。

完成逻辑地址空间到物理地址空间的映射,这是FTL最原始也是最基本的功能。事实上,现在SSD中的FTL,要做的事情还有很多。SSD使用的存储介质一般是NAND Flash。

SSD的存储介质除了Flash,还有RAM,还有3D XPoint等新型存储介质。如无特别说明,后面说的SSD存储介质都是指NAND Flash,翻译为“闪存”。

闪存有一些特性,比如:闪存块(block)需先擦除才能写入,不能覆盖写(Updatein place);由于不能覆盖写,当写入一笔新的数据,不能直接在老地方直接更改(闪存不允许在一个闪存页(page)上重复写入,一次擦除只能写入一次),必须写到一个新的位置,因此,FW(Firmware,固件)需要维护一张逻辑地址到物理地址的映射表;另外,往一个新的位置写入数据,会导致老位置上的数据变成无效,这些数据就是垃圾数据。垃圾数据会占用闪存空间,当闪存可用空间不够时,FTL需要做垃圾回收,即把若干个闪存块上的有效数据搬出写到某个新的闪存块,然后把这些闪存块擦除,得到可用的闪存块。这就是GC(GarbageCollection,垃圾回收),是FTL需要做的一件重要事情。闪存块都是有一定寿命的;每擦除一次闪存块,都会对闪存块有磨损,因此闪存块都是有寿命的,用PE(Program/EraseCount)数衡量。我们不能集中往某几个闪存块上写数据,不然这几个块很快就会因PE耗尽而死亡,我们期望所有闪存块都来均摊数据的写入。FTL需要做Wear Leveling,让数据写入均摊到每个闪存块上,即让每个块磨损都差不多,从而保证SSD具有最大的数据写入量。每个闪存块读的次数也是有限的,读的太多了,上面的数据也是会出错,也就是读干扰(ReadDisturb)的问题;FTL需要处理读干扰问题,当某个闪存块读的次数快达到一定阈值时,FTL需要把这些数据从该闪存块上搬走,从而避免数据出错。

还有就是闪存的数据保持(Data Retention)问题,由于电荷的流失,存储在闪存上的数据会丢失。这个时间长则十多年,短则几年甚至几月,甚至更短。(这是在常温下,如果高温的话,电荷流失速度会加快,数据保存的时间就更短了。)如果SSD不上电,FTL对此也是毫无办法。但一旦上电,FTL就需要对此做点什么,比如扫描闪存,发现是否存在数据保持问题,如果存在,则需要搬动数据,防患于未然。闪存天生就有坏块,另外,随着SSD的使用,也会产生新的坏块;坏块的症状是擦写失败,或者读失败(ECC不能纠正数据错误)。坏块管理也是FTL的一大任务。

对MLC或者TLC来说,存在Lower Page corruption的问题;即在对Upper Page/Extra Page(和Lower Page共享存储单元的闪存页)写入时,如果发生异常掉电,也会把之前Lower Page上成功写入的数据破坏掉。好的FTL,应该有机制尽可能避免这个问题;MLC或者TLC的读写速度都不如SLC,但它们都可以配成SLC模式来使用。好的FTL,会利用这个特性,去改善SSD的性能和可靠性。

上面说的这些问题是闪存的共性,对不同的闪存,还有其自身的问题。FTL除了完成基本的地址映射,还需要帮闪存擦屁股,去做垃圾回收(GC)、磨损平衡(Wear Leveling)、坏块管理、读干扰(Read Disturb)处理、数据保持(Data Retention)处理等事情。随着闪存质量变差,FTL除了完成上述的常规处理,还需要针对具体闪存特性,去做一些特殊处理以获得好的性能和高的可靠性。

经过大量实验验证,NAND擦写1000次以内可以使用相同的偏转电压。因此,在本实施例中可以优化固态硬盘固件,使所有用户可用block的擦写次数最大差值为100。进一步的验证了NAND可以在1000*N±100内使用相同偏转电压。固件内部保存block平均擦写次数,则所有的block的擦写次数范围为平均擦写次数±100。故可以使用位于RAM中的平均擦写次数作为block的真实擦写次数去选择偏转电压,从而不用再访问DDR,以减少DDR访问对读操作的影响。

最后,在1000*N擦写边界时,由于平均擦写次数为固定值,故不会出现反复设置偏转电压,而只是在1000*N到1000*(N+1)时设置一次,从而带来在随机读指标的提高以及QOS的提高。

本申请所提供的固态硬盘性能优化方法,通过获取所有可用块的平均擦写次数;调用偏转电压表,根据平均擦写次数确认对应的偏转电压索引值;根据偏转电压索引值设置偏转电压。相对于当前技术中,为获取块的真实的擦写次数而频繁的访问DDR会造成性能的下降,采用本技术方案,使用随机访问存储器中记录的块的平均擦写次数替代真实的擦写次数,根据平均擦写次数设置相应的偏转电压,从而不用再访问DDR,以减少DDR访问对读操作的影响。并且,当前技术中在各块的擦写次数趋于对应的偏转电压时需要反复设置偏转电压,采用本技术方案,由于平均擦写次数为固定值,在擦写次数趋于边界值时也无需反复设置偏转电压,提高随机读的性能。

在上述实施例的基础上,再具体实施中,为了提高固态硬盘的使用寿命,提高使用性能,固态硬盘性能优化方法还包括:限制所有块的擦写次数最大差值不超过设定值。具体的,可以设置磨损均衡单元以限制所有可用块的擦写次数最大差值不超过设定值。

由于NAND擦写1000次以内可以使用相同的偏转电压。因此,在本实施例中可以优化固态硬盘固件,使所有用户可用block的擦写次数最大差值为100。固件内部保存block平均擦写次数,则所有的block的擦写次数范围为平均擦写次数±100。故可以使用位于RAM中的平均擦写次数作为block的真实擦写次数去选择偏转电压,从而不用再访问DDR,以减少DDR访问对读操作的影响。

最后,在1000*N擦写边界时,由于平均擦写次数为固定值,故不会出现反复设置偏转电压,而只是在1000*N到1000*(N+1)时设置一次,从而带来在随机读指标的提高以及QOS的提高。

上述实施例中介绍了通过限制所有块的擦写次数最大差值不超过设定值,以保证各块平均使用,实现固态硬盘的性能优化。因此,在本实施例中,固态硬盘性能优化方法还包括:在检测到存在块的擦写次数最大差值超出设定值的情况下,发送提示信息。

而在具体实施中,若连续设置的预设个数的偏转电压均不相同,此时可能是由于RAM中记录的平均擦写次数不准确,此时则发送告警信息,以提示技术人员进行验证。

同样的,在获取随机访问存储器中记录的块的平均擦写次数时,在平均擦写次数超出阈值的情况下,发送告警信息。在本实施例中,阈值是根据固态硬盘的性能而设置的值,可以理解的是,随机访问存储器中记录的块的平均擦写次数超出阈值,则表明该盘使用过度,应当进行对应处理。

在上述实施例中,对于固态硬盘性能优化方法进行了详细描述,本申请还提供固态硬盘性能优化装置对应的实施例。需要说明的是,本申请从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。

图2为本申请实施例提供的一种固态硬盘性能优化装置的结构图,如图2所示,该装置包括:

获取模块10,用于获取所有可用块的平均擦写次数;

确认模块11,用于调用偏转电压表,根据平均擦写次数确认对应的偏转电压索引值;

设置模块12,用于根据偏转电压索引值设置偏转电压。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

本申请实施例提供的固态硬盘性能优化装置,通过获取所有可用块的平均擦写次数;调用偏转电压表,根据平均擦写次数确认对应的偏转电压索引值;根据偏转电压索引值设置偏转电压。相对于当前技术中,为获取块的真实的擦写次数而频繁的访问DDR会造成性能的下降,采用本技术方案,使用随机访问存储器中记录的块的平均擦写次数替代真实的擦写次数,根据平均擦写次数设置相应的偏转电压,从而不用再访问DDR,以减少DDR访问对读操作的影响。并且,当前技术中在各块的擦写次数趋于对应的偏转电压时需要反复设置偏转电压,采用本技术方案,由于平均擦写次数为固定值,在擦写次数趋于边界值时也无需反复设置偏转电压,提高随机读的性能。

图3为本申请实施例提供的另一种固态硬盘性能优化装置的结构图,如图3所示,该装置包括:存储器20,用于存储计算机程序;

处理器21,用于执行计算机程序时实现如上述实施例固态硬盘性能优化方法的步骤。

本实施例提供的固态硬盘性能优化装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。

其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可以包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的固态硬盘性能优化方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于偏转电压索引值等。

在一些实施例中,固态硬盘性能优化装置还可以包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。

本领域技术人员可以理解,图3中示出的结构并不构成对固态硬盘性能优化装置的限定,可以包括比图示更多或更少的组件。

本申请实施例提供的固态硬盘性能优化装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:获取所有可用块的平均擦写次数;调用偏转电压表,根据平均擦写次数确认对应的偏转电压索引值;根据偏转电压索引值设置偏转电压。

本申请实施例提供的固态硬盘性能优化装置,通过获取所有可用块的平均擦写次数;调用偏转电压表,根据平均擦写次数确认对应的偏转电压索引值;根据偏转电压索引值设置偏转电压。相对于当前技术中,为获取块的真实的擦写次数而频繁的访问DDR会造成性能的下降,采用本技术方案,使用随机访问存储器中记录的块的平均擦写次数替代真实的擦写次数,根据平均擦写次数设置相应的偏转电压,从而不用再访问DDR,以减少DDR访问对读操作的影响。并且,当前技术中在各块的擦写次数趋于对应的偏转电压时需要反复设置偏转电压,采用本技术方案,由于平均擦写次数为固定值,在擦写次数趋于边界值时也无需反复设置偏转电压,提高随机读的性能。

最后,本申请还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。

可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请实施例提供的计算机可读存储介质,通过获取所有可用块的平均擦写次数;调用偏转电压表,根据平均擦写次数确认对应的偏转电压索引值;根据偏转电压索引值设置偏转电压。相对于当前技术中,为获取块的真实的擦写次数而频繁的访问DDR会造成性能的下降,采用本技术方案,使用随机访问存储器中记录的块的平均擦写次数替代真实的擦写次数,根据平均擦写次数设置相应的偏转电压,从而不用再访问DDR,以减少DDR访问对读操作的影响。并且,当前技术中在各块的擦写次数趋于对应的偏转电压时需要反复设置偏转电压,采用本技术方案,由于平均擦写次数为固定值,在擦写次数趋于边界值时也无需反复设置偏转电压,提高随机读的性能。

以上对本申请所提供的固态硬盘性能优化方法、装置以及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

技术分类

06120116009450