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

读写时延确定方法、装置、固态硬盘和存储介质

文献发布时间:2024-04-18 19:44:28


读写时延确定方法、装置、固态硬盘和存储介质

技术领域

本发明涉及数据存储领域,具体而言,涉及一种读写时延确定方法、装置、固态硬盘和存储介质。

背景技术

随着数据时代的到来,存储技术随之飞速发展,传统机械硬盘的固有劣势已逐渐显现出来,于是固态硬盘逐渐走进个人消费领域,逐渐取代机械硬盘,数据读写速度发生了质的变化。但是面对虚拟现实、人工智能和高性能网游等对时延要求较高的特殊场景,存在数据读写时延抖动的问题,亟需解决。

发明内容

有鉴于此,本发明的目的在于提供一种读写时延确定方法、装置、固态硬盘和存储介质,通过各个块读写时延差异和擦写次数产生的时延影响校正实际读写时延,使得每个块校正后的读写时延相对稳定,有效避免数据读写时延抖动,提升用户体验。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明提供一种读写时延确定方法,应用于固态硬盘,所述方法包括:

响应数据读写请求,读写所述固态硬盘中的目标块,得到所述目标块对应的实际读写时延;

获取所述目标块对应的目标纠正量和所述目标块当前擦写次数所属擦写次数区间对应的目标补偿量;

根据所述目标块的实际读写时延、所述目标纠正量和所述目标补偿量,得到所述目标块的期望时延。

在可选的实施方式中,所述根据所述目标块的实际读写时延、所述目标纠正量和所述目标补偿量,得到所述目标块的期望时延,包括:

当所述固态硬盘的已写数据量低于预设阈值时,计算所述目标块的实际读写时延、所述目标纠正量和所述目标补偿量的和,得到所述目标块的期望时延。

在可选的实施方式中,所述目标块构建多个目标块组;所述根据所述目标块的实际读写时延、所述目标纠正量和所述目标补偿量,得到所述目标块的期望时延,包括:

当所述固态硬盘的已写数据量不低于预设阈值时,根据预设坏块阈值、预设成员数量和各目标块组中的坏块数量从多个所述目标块组中确定关联组;

对所述关联组中的各目标块组的目标块进行交换,以使所述关联组中的各目标块组中的坏块数量不超过所述预设坏块阈值;

计算每个所述目标块的实际读写时延、所述目标纠正量和所述目标补偿量的和,得到每个所述目标块的期望时延。

在可选的实施方式中,所述方法还包括:

获取所述固态硬盘中的每个块的第一训练读写时延;

根据所有块中最大第一训练读写时延和每个块的所述第一训练读写时延,得到每个块的所述纠正量。

在可选的实施方式中,所述获取所述固态硬盘中的每个块的第一训练读写时延,包括:

对所述固态硬盘中的每个块进行多次读写,得到每个块的多个读写时延;

计算多个读写时延的平均值,得到所述每个块的第一训练读写时延。

在可选的实施方式中,所述方法还包括:

获取测试固态硬盘的最大擦写次数和区间数量;

根据所述最大擦写次数和区间数量,得到多个擦写次数区间;

获取每个所述擦写次数区间的第二训练读写时延;

根据最大擦写次数区间的所述第二训练读写时延和每个所述擦写次数区间的所述第二训练读写时延,得到每个块的每个所述擦写次数区间的所述补偿量;所述最大擦写次数区间指的是最大擦写次数对应的擦写次数区间。

在可选的实施方式中,所述获取每个所述擦写次数区间的第二训练读写时延,包括:

对测试固态硬盘中的每个块进行多次读写,得到不同擦写次数对应的读写时延;

根据不同擦写次数对应的读写时延,计算同一擦写次数区间的多个读写时延的平均值,得到所述擦写次数区间的第二训练读写时延。

第二方面,本发明提供一种读写时延确定装置,应用于固态硬盘,所述装置包括:

预处理模块,用于响应数据读写请求,读写所述固态硬盘中的目标块,得到所述目标块对应的实际读写时延;获取所述目标块对应的目标纠正量和所述目标块当前擦写次数所属擦写次数区间对应的目标补偿量;

校正模块,用于根据所述目标块的实际读写时延、所述目标纠正量和所述目标补偿量,得到所述目标块的期望时延。

第三方面,本发明提供一种固态硬盘,所述固态硬盘包括闪存芯片和控制芯片,所述存储器用于存储计算机程序,所述控制芯片用于在调用所述计算机程序时执行如前述实施方式任一项所述的读写时延确定方法。

第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被控制芯片执行时实现如前述实施方式任一项所述的读写时延确定方法。

相比于现有技术,本发明实施例提供的读写时延确定方法、装置、固态硬盘和存储介质,固态硬盘响应数据读写请求,读写固态硬盘中的目标块,得到目标块对应的实际读写时延;获取目标块对应的目标纠正量和目标块当前擦写次数所属擦写次数区间对应的目标补偿量;根据目标块的实际读写时延、目标纠正量和目标补偿量,得到目标块的期望时延。本方案通过各个块读写时延差异和擦写次数产生的时延影响校正实际读写时延,使得每个块校正后的读写时延相对稳定,有效避免数据读写时延抖动,提升用户体验。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例提供的读写时延确定方法的一种流程示意图。

图2示出了图1中步骤S103的一种子步骤流程示意图。

图3示出了固态硬盘块组及坏块分布的一种示意图。

图4示出了本发明实施例提供的读写时延确定装置的方框示意图。

图5示出了本发明实施例提供的固态硬盘的一种方框示意图。

图标:100-固态硬盘;110-闪存芯片;120-控制芯片;200-读写时延确定装置;201-预处理模块;202-校正模块。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

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

固态硬盘包括闪存芯片和控制芯片。控制芯片为固态硬盘的中枢单元,主要负责闪存芯片与外部数据接口的连接,用于处理数据读写请求、实现数据存储、数据纠错和坏块处理等功能。闪存芯片由许多块组成,作为固态硬盘存储数据的载体。闪存芯片是一种非易失性存储器,在断电的情况下依然可以确保已经写入的数据不丢失。

在实现本发明实施例的技术方案的过程中,经发明人研究发现:固态硬盘的各个块的读写时延存在差异,并且随着使用时间推移和擦写次数增加,块的读写时延会随之发生变化。这样将造成读写这些块的时候读写时延不稳定,存在时延抖动的现象。针对虚拟现实、人工智能以及高性能网游等场景会因时延抖动导致画面卡顿等现象,严重影响用户使用体验。

基于此,本发明实施例提供了一种读写时延确定方法、装置、固态硬盘和存储介质,根据各个块的读写时延差异和擦写次数产生的时延影响对实际读写时延进行校正,从而得到相对稳定的数据读写期望时延,有效避免数据读写时延抖动,提升用户体验。

下面结合附图对本发明的各实施例进行详细说明。

本发明实施例提供的读写时延确定方法及装置应用于固态硬盘,由固态硬盘执行本发明实施例提供的读写时延确定方法。固态硬盘包括多个块,固态硬盘上电初始化时,固态硬盘中预置有每个块对应的纠正量、不同擦写次数区间对应的补偿量、区间数量和最大擦写次数,纠正量和不同擦写次数区间对应的补偿量可以在固态硬盘生产阶段,通过多次读写训练得到。

请参照图1,图1示出了本发明实施例提供的读写时延确定方法的一种示意图,该方法包括以下步骤:

步骤S101,响应数据读写请求,读写固态硬盘中的目标块,得到目标块对应的实际读写时延。

在本发明实施例中,数据读写请求可以由用户的读写操作产生,也可以由固态硬盘内部处理流程产生,如回收垃圾数据产生的读写擦除请求、后台数据巡检产生的读请求等。响应数据读写请求,根据数据读写请求中的块标识确定目标块,读写固态硬盘中的目标块,记录得到读写目标块的实际读写时延。块标识可以是全局统一编址的块序号,也可以是块名称,对此本发明不予限定,本发明实施例以块序号为例进行阐述。

步骤S102,获取目标块对应的目标纠正量和目标块当前擦写次数所属擦写次数区间对应的目标补偿量。

在本发明实施例中,固态硬盘根据数据读写请求中的目标块序号确定目标块,获取目标块的当前擦写次数,并根据当前擦写次数确定所属目标擦写次数区间,获取目标块对应的目标纠正量和目标擦写次数区间对应的目标补偿量。

步骤S103,根据目标块的实际读写时延、目标纠正量和目标补偿量,得到目标块的期望时延。

在本发明实施例中,根据目标纠正量和目标补偿量校正目标块的实际读写时延,得到目标块的期望时延。通过纠正量校正实际读写时延,从而减少不同块之间的读写时延差异,同时通过补偿量校正不同擦写次数造成的读写时延损耗,以此保证每个块的读写时延更加稳定。

综上所述,本发明实施例提供的读写时延确定方法,该方法应用于固态硬盘,固态硬盘响应数据读写请求,读写固态硬盘中的目标块,得到目标块对应的实际读写时延;获取目标块对应的目标纠正量和目标块当前擦写次数所属擦写次数区间对应的目标补偿量;根据目标块的实际读写时延、目标纠正量和目标补偿量,得到目标块的期望时延。本方案通过各个块读写时延差异和擦写次数产生的时延影响校正实际读写时延,使得每个块校正后的读写时延相对稳定,有效避免数据读写时延抖动,提升用户体验。

可选地,在实际应用中,固态硬盘中记录有数据最大写入量和已写数据量,其中,数据最大写入量在固态硬盘出厂时已设置,已写数据量是根据已写入固态硬盘中的数据统计得到的。当固态硬盘的已写数据量低于预设阈值时,在图1基础上,请参照图2,步骤S103的子步骤可以包括:

步骤S1031,当固态硬盘的已写数据量低于预设阈值时,计算目标块的实际读写时延、目标纠正量和目标补偿量的和,得到目标块的期望时延。

在本发明实施例中,预设阈值可以为固态硬盘中记录的数据最大写入量,当固态硬盘的已写数据量低于预设阈值时,固态硬盘处于正常生命周期,此时固态硬盘中坏块数量比较少,一般不会影响固态硬盘整体的使用性能。

固态硬盘根据目标块的实际读写时延、目标纠正量和目标补偿量求和,得到目标块的期望时延,经过时延校正后,使得目标块的读写时延更加稳定,从而有效避免数据读写请求的时延抖动。

可选地,在实际应用中,在使用过程中随着不断擦写或磨损等影响,当一个块出现物理损坏,无法进行读写,固态硬盘将这个块标记为坏块,坏块数量是通过标记坏块的方式统计得到的。随着坏块数量的增加,固态硬盘的使用寿命会受到影响。假设数据读写请求读写多个目标块,由目标块构建多个目标块组,逐渐增多的坏块会影响目标块组的读写时延稳定性。当固态硬盘的已写数据量不低于预设阈值时,请参照图2,步骤S103的子步骤可以包括:

步骤S1032,当固态硬盘的已写数据量不低于预设阈值时,根据预设坏块阈值、预设成员数量和各目标块组中的坏块数量从多个目标块组中确定关联组。

在本发明实施例中,预设阈值可以为固态硬盘中记录的数据最大写入量,当固态硬盘的已写数据量不低于预设阈值时,固态硬盘处于生命周期末期,此时固态硬盘中坏块数量逐渐增加,坏块的出现会影响数据读写时延的稳定性。

固态硬盘在出厂之前已将块配置成块组,块组可以为行组,也可以为列组。以图3为例,假设固态硬盘包括16个块,块序号为1-16,由16个块构成4个列组,也可以构成4个行组。列组如表1所示,行组如表2所示。

表1

表2

由于块序号为2、3、7和13的块是坏块,无论是列组还是行组,块组中坏块数量不同。当块组内部存在坏块时,读写这些块组时会出现读写速度下降的情况,读写速度下降的程度与块组内存在的坏块数量有关。这样的情况下,若按照块组顺序读写数据,那么4个块组的读写时延存在差异,将会引起性能波动。

在本发明实施例中,预设坏块阈值和预设成员数量可以由管理员通过交互界面或第三方服务器进行预置,也可以在固态硬盘初始化时设置。对此,本发明实施例不予限定。

在本发明实施例中,当目标块组的坏块数量大于预设坏块阈值时,将该目标块组作为待关联块组,将除待关联块组以外的其他未创建关联组的目标块组作为候选块组。根据预设坏块阈值、预设成员数量和待关联块组中坏块数量,在候选块组中选择满足关联策略的目标块组,与待关联块组构成关联组。其中,预设成员数量用来表征关联组中的目标块组的数量,关联策略为关联组中全部目标块组的坏块数量之和小于等于预设坏块阈值与预设成员数量的乘积。

值得一提的是,可以优先选择坏块数量之和等于预设坏块阈值与预设成员数量的乘积的多个目标块组构成关联组,关联组中的目标块组数量为预设成员数量,从而提高其他目标块组配对成功概率。例如,预设坏块阈值为2,预设成员数量为2,块组1有3个坏块,块组2没有坏块,块组3有一个坏块,优先选择块组1和块组3构成关联组,此时关联组中坏块总数为4,预设坏块阈值和预设成员数量乘积为4,刚好满足关联策略。

作为一种实施方式,固态硬盘通过关联组表管理关联组信息,关联组表中记录着关联组、目标块组、目标块和坏块标识的对应关系。假设预设坏块阈值为1,预设成员数量为2,如图3以及表2所示,块组R1中存在两个坏块,那么针对块组R1构建关联组,按照先后顺序查询满足关联策略的块组,根据关联策略(关联组中全部目标块组的坏块数量之和等于预设坏块阈值与预设成员数量的乘积)应该选择一个没有坏块的块组与块组R1构成关联组,可以从块组R2开始顺序查找,最终确定块组R3与块组R1构成关联组。将块组R1和块组R3构成的关联组更新到关联组表中。

步骤S1033,对关联组中的各目标块组的目标块进行交换,以使关联组中的各目标块组中的坏块数量不超过预设坏块阈值。

在本发明实施例中,固态硬盘遍历关联组表读取每个关联组,交换关联组中的各目标块组的目标块,使关联组中每个目标块组中的坏块数量不超过预设坏块阈值。继续以图3以及表2为例,假设预设坏块阈值为1,预设成员数量为2,块组R1和块组R3已构成关联组。块组R1当前坏块数量是2,大于预设坏块阈值。将块组R1中的其中一个坏块与块组R3内同一偏移位置的目标块交换,比如将目标块2和目标块10交换,块组R1所包括的目标块从1-2-3-4变成1-10-3-4,块组R3所包括的目标从9-10-11-12变成9-2-11-12。或者将目标块3和目标块11交换,块组R1所包括的目标块从1-2-3-4变成1-2-11-4,块组R3所包括的目标从9-10-11-12变成9-10-3-12。通过交换坏块的方式,均衡分摊块组中的坏块数量,减少块组读写性能波动,以确保读写时延稳定。

步骤S1034,计算每个目标块的实际读写时延、目标纠正量和目标补偿量的和,得到每个目标块的期望时延。

在本发明实施例中,固态硬盘遍历关联组表读取每个关联组,对关联组中每个目标块的实际读写时延进行校正,如果存在不在关联组表中的目标块组,还需对不在关联组表中的目标块组中的每个目标块的实际读写时延进行校正,通过计算目标块的实际读写时延、目标纠正量和目标补偿量的和,得到该目标块的期望时延。

为了得到固态硬盘中每个块的读写时延差异,本发明在固态硬盘生产阶段对每个块进行训练测试,通过训练数据得到固态硬盘中每个块的纠正量。

可选地,在固态硬盘生产阶段,获取固态硬盘中的每个块的第一训练读写时延,根据所有块中最大第一训练读写时延和每个块的第一训练读写时延,得到每个块的纠正量。

作为一种实施方式,通过对固态硬盘的读写训练,得到每个块的第一训练读写时延,将固态硬盘的所有块中时延最大的第一训练读写时延作为最大第一训练读写时延,将最大第一训练读写时延与每个块的第一训练读写时延的差值,作为对应块的纠正量。

在本发明实施例中,固态硬盘可以通过纠正量表记录块序号和纠正量的对应关系,纠正量表中记录着固态硬盘中所有块序号和与之对应的纠正量,如表3所示。

表3

可选地,在实际应用中,为了得到更精准的第一训练读写时延,在固态硬盘生产阶段,对固态硬盘中的每个块进行多次读写,得到每个块的多个读写时延;计算多个读写时延的平均值,得到每个块的第一训练读写时延。

在本发明实施例中,固态硬盘包括多个块,在固态硬盘出厂之前,对固态硬盘中的每个块进行多次读写,记录该块的多个读写时延,便于识别读写速度快的块、读写速度慢的块或者坏块,从而保证固态硬盘整体读写性能。

作为一种实施方式,假设对固态硬盘的每个块读写16次,根据同一个块的16个读写时延计算平均值,得到该块的第一训练读写时延;比较固态硬盘中所有块的第一训练读写时延,将时延最大的第一训练读写时延作为最大第一训练读写时延,将最大第一训练读写时延分别与每个块的第一训练读写时延的差值作为对应块的纠正量。

可见,训练读写时延越小的块对应的纠正量越大,相反训练读写时延越大的块对应的纠正量越小。训练读写时延最大的块对应的纠正量最小,这意味着读写时延最小的块可以不再额外补偿纠正量。根据纠正量校正对应块的实际读写时延,各个块校正后的读写时延基本一致。

可选地,对于固态硬盘来说,读取数据并不会影响固态硬盘的使用寿命,写入数据则会影响固态硬盘的使用寿命,因为写入数据意味着要对块进行擦写。为了测试擦写对固态硬盘读写性能的影响,在固态硬盘生产阶段,使用部分固态硬盘作为测试固态硬盘,获取测试固态硬盘第二训练读写时延的步骤可以包括:

获取测试固态硬盘的最大擦写次数和区间数量;根据最大擦写次数和区间数量,得到多个擦写次数区间;获取每个擦写次数区间的第二训练读写时延;根据最大擦写次数区间的第二训练读写时延和每个擦写次数区间的第二训练读写时延,得到每个块的每个擦写次数区间的补偿量;最大擦写次数区间指的是最大擦写次数对应的擦写次数区间。

作为一种实施方式,在固态硬盘的生产阶段,区间数量可根据实际应用情况进行设置。读写测试固态硬盘中记录的最大擦写次数和区间数量,假设测试固态硬盘的最大擦写次数为3000次,区间数量为3,那么测试固态硬盘存在3个擦写次数区间,擦写次数区间可以通过均分方式进行划分,如表4所示。

表4

继续参照表2,当区间数量为3时,测试固态硬盘中的所有块都设置有三个擦写次数区间,擦写次数区间划分规则相同。将最大擦写次数对应的擦写次数区间作为最大擦写次数区间,擦写次数区间编号为3的擦写次数区间即为最大擦写次数区间,将每个擦写次数区间的第二训练读写时延与最大擦写次数区间的第二训练读写时延的差值作为该擦写次数区间的补偿量。将测试固态硬盘得到的每个擦写次数区间的补偿量作为处于生产阶段的固态硬盘的每个块的每个擦写次数区间的补偿量。固态硬盘使用补偿量表记录块序号、擦写次数区间和补偿量的对应关系,如表5所示。

表5

在本发明实施例中,经过对测试固态硬盘第二训练读写时延的统计分析,固态硬盘中所有块可以使用相同擦写次数区间对应的同一个补偿量。因此可以将表5简化为表6。

表6

需要说明的是,擦写次数区间除了采用均分方式划分擦写次数区间,还可以根据不同擦写次数对应的读写时延分析擦写次数对读写时延的影响,再结合擦写次数对读写时延的影响划分擦写次数区间。对于擦写次数区间的划分方式,本发明不予限定。

可选地,在实际应用中,为了得到更精准的第二训练读写时延,获取每个擦写次数区间的第二训练读写时延的步骤可以包括:

对测试固态硬盘中的每个块进行多次读写,得到不同擦写次数对应的读写时延;根据不同擦写次数对应的读写时延,计算同一擦写次数区间的多个读写时延的平均值,得到擦写次数区间的第二训练读写时延。

在本发明实施例中,在固态硬盘生产阶段,对参与测试训练的测试固态硬盘中每个块进行反复多次读写测试,记录不同擦写次数对应的读写时延和最大擦写次数。根据区间数量和最大擦写次数划分出多个擦写次数区间。针对每一个擦写次数区间,在该擦写次数区间内计算多个擦写次数对应的读写时延的平均值,将平均值作为该擦写次数区间的第二训练读写时延。

可见,擦写次数越大的擦写次数区间的补偿量越小,相反擦写次数越小的擦写次数区间的补偿量越大。最大擦写次数对应的擦写次数区间对应的补偿量最小,这意味着固态硬盘当前擦写次数处于最大擦写次数区间时,实际读写时延基本不需要使用补偿量进行校正。根据不同擦写的补偿量校正对应块的实际读写时延,可以保证每个块在不同擦写次数时校正后读写时延基本一致。

在本发明实施例中,固态硬盘中设置有系统数据区,用来保存管理数据,纠正量表和补偿量表都存储在系统数据区。固态硬盘上电加载时,读写系统数据区中的纠正量表和补偿量表,并保存在内存中。

可见,本发明实施例在固态硬盘出厂前,采用训练测试的方式采集每个块的读写时延,通过各个块读写时延对比生成对应的纠正量,并通过反复多次擦写测试固态硬盘得到不同擦写次数区间的补偿量。将纠正量和补偿量记录在固态硬盘中,正常读写固态硬盘中的数据时,根据每个块对应的纠正量和不同擦写次数区间的补偿量校正该块的实际读写时延,使得校正后每个块的读写时延更稳定,有效避免时延抖动。

进一步地,当固态硬盘进入到生命周期末期(即固态硬盘的已写数据量不低于预设阈值)时,通过创建关联组的方式分摊坏块,将关联组中块组的坏块与关联组中其他块组对应位置的好块进行交换,使得交换后关联组中每个块组的坏块数量不超过预设坏块阈值,从而保证每个块组读写时延的稳定性,确保不会出现读写速度失速到最低速以下的情况。

基于同一发明构思,本发明实施例还提供了一种读写时延确定装置。其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。

请参照图4,图4示出了本发明实施例提供的读写时延确定装置200的方框示意图。读写时延确定装置200应用于固态硬盘,读写时延确定装置200包括预处理模块201和校正模块202。

预处理模块201,用于响应数据读写请求,读写固态硬盘中的目标块,得到目标块对应的实际读写时延;获取目标块对应的目标纠正量和目标块当前擦写次数所属擦写次数区间对应的目标补偿量。

校正模块202,用于根据目标块的实际读写时延、目标纠正量和目标补偿量,得到目标块的期望时延。

综上所述,本发明实施例提供的读写时延确定装置,应用于固态硬盘,固态硬盘响应数据读写请求,读写固态硬盘中的目标块,得到目标块对应的实际读写时延;获取目标块对应的目标纠正量和目标块当前擦写次数所属擦写次数区间对应的目标补偿量;根据目标块的实际读写时延、目标纠正量和目标补偿量,得到目标块的期望时延。本方案通过各个块读写时延差异和擦写次数产生的时延影响校正实际读写时延,使得每个块校正后的读写时延相对稳定,有效避免数据读写时延抖动,提升用户体验。

可选地,校正模块202,用于当固态硬盘的已写数据量低于预设阈值时,计算目标块的实际读写时延、目标纠正量和目标补偿量的和,得到目标块的期望时延。

可选地,目标块构成多个目标块组。校正模块202,用于当固态硬盘的已写数据量不低于预设阈值时,根据预设坏块阈值、预设成员数量和各目标块组中的坏块数量从多个目标块组中确定关联组;对关联组中的各目标块组的目标块进行交换,以使关联组中的各目标块组中的坏块数量不超过预设坏块阈值;计算每个目标块的实际读写时延、目标纠正量和目标补偿量的和,得到每个目标块的期望时延。

可选地,预处理模块201,用于获取固态硬盘中的每个块的第一训练读写时延;根据所有块中最大第一训练读写时延和每个块的第一训练读写时延,得到每个块的纠正量。

可选地,预处理模块201,用于对固态硬盘中的每个块进行多次读写,得到每个块的多个读写时延;计算多个读写时延的平均值,得到每个块的第一训练读写时延。

可选地,预处理模块201,用于获取测试固态硬盘的最大擦写次数和区间数量;根据最大擦写次数和区间数量,得到多个擦写次数区间;获取每个擦写次数区间的第二训练读写时延;根据最大擦写次数区间的第二训练读写时延和每个擦写次数区间的第二训练读写时延,得到每个块的每个擦写次数区间的补偿量;最大擦写次数区间指的是最大擦写次数对应的擦写次数区间。

可选地,预处理模块201,用于对测试固态硬盘中的每个块进行多次读写,得到不同擦写次数对应的读写时延;根据不同擦写次数对应的读写时延,计算同一擦写次数区间的多个读写时延的平均值,得到擦写次数区间的第二训练读写时延。

请参照图5,为本发明实施例提供的固态硬盘100的一种方框示意图。固态硬盘100包括闪存芯片110和控制芯片120。闪存芯片110和控制芯片120之间直接或间接地电性连接。

其中,闪存芯片110包括本发明实施例中多个块,用于存储程序或者数据。固态硬盘一般采用的是NAND闪存芯片,由于电子单元密度的差异,NAND闪存可以分为单层次存储单元、双层存储单元、三层存储单元以及四层存储单元。

控制芯片120是固态硬盘的大脑,用于合理调配数据在各个闪存芯片110上的负荷,同时承担对外数据中转,用来处理闪存芯片110数据读写请求,以及垃圾回收、数据巡检等数据处理工作。在实现过程中,上述方法的各步骤可以通过控制芯片120中的硬件的集成逻辑电路或者软件形式的指令完成。上述的控制芯片120可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

应当理解的是,图5所示的结构仅为固态硬盘100的结构示意图,固态硬盘100还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。图5中所示的各组件可以采用硬件、软件或其组合实现。

本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被控制芯片120执行时实现上述各实施例所揭示的读写时延确定方法。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,也可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

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

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术分类

06120116305479