本发明涉及计算机,特别涉及一种固态硬盘读方法、程序产品、设备及介质。
背景技术:
1、随着科技的不断进步,传统机械硬盘已经逐渐被固态硬盘(ssd,solid statedrives)所取代,成为现代存储解决方案的主流之一。
2、对于固态硬盘,每一个plane(片)配有一个cache register(缓存)用于缓存数据,缓存中数据的粒度为4个dataframe(一组4k大小的数据),即16k大小的数据。在执行4k顺序读业务时,当后端接收到一笔4k读请求,会从nand(闪存)中读取出16k大小的数据放到缓存中,然后将读请求中所要求的4k大小的数据(假设是16k中的第一个4k)从缓存中取出返回给闪存转换层,下一笔4k读请求发送到后端时,会命中缓存中的第二个4k,并直接从缓存中取出数据返回给闪存转换层。
3、然而,当闪存中的数据发生比特反转时(即数据出错),缓存中的第一个4k可能会发生读失败,由于同一数据块的数据通常被认为是间隔较短时间写入的,因此,缓存中的后三个4k也会发生读失败。现有处理方案是:当第一笔4k数据发生normal读(读取电压为0的读取方式)失败,则调整为使用frt纠错读(读取电压非0的读取方式),第二笔4k数据直接使用读取电压非0的读取方式纠错读,第三笔4k数据恢复读取电压为0的读取方式,若第三笔4k数据发生读取电压为0的读取方式的读失败,则重复上述步骤,可见,现有处理方案通过频繁切换读取方式实现对数据的纠错,而频繁切换读取方式会增加对闪存的磨损,并会减小闪存的使用寿命。
技术实现思路
1、有鉴于此,本发明的目的在于提供一种固态硬盘读方法、程序产品、设备及介质,能够减少对闪存的磨损,增加闪存的使用寿命,其具体方案如下:
2、第一方面,本技术公开了一种固态硬盘读方法,包括:
3、当接收到第一读取请求,则利用第一读取方式从目标闪存中读取第一数据至目标缓存;其中,所述第一读取方式的读取电压为0,并且所述第一数据中包含多个第二数据;
4、若所述第一读取方式发生读失败,则将与所述第一读取请求对应的第一数据块地址记录为当前数据块地址,并将所述目标缓存置为无效,然后利用第二读取方式从所述目标闪存中读取所述第二数据,并将所述第二数据返回给闪存转换层;其中,所述第二读取方式的读取电压为非0;
5、当接收到第二读取请求,则记录与所述第二读取请求对应的第二数据块地址,并在所述第二数据块地址未超出所述第一数据块地址时,获取标志位的数值;其中,若所述第一读取方式连续发生预设数量次读失败,则将所述标志位的数值由0置为1;
6、根据所述标志位的数值利用所述第一读取方式或所述第二读取方式从所述目标闪存中读取所述第二数据,并将所述第二数据返回给所述闪存转换层。
7、可选的,所述根据所述标志位的数值利用所述第一读取方式或所述第二读取方式从所述目标闪存中读取所述第二数据,包括:
8、若所述标志位的数值为1,则在所述第二读取请求所请求的数据为所述第一数据中的首个所述第二数据时,利用所述第二读取方式从所述目标闪存中读取首个所述第二数据。
9、可选的,所述固态硬盘读方法,还包括:
10、在利用所述第二读取方式从所述目标闪存中读取首个所述第二数据时,若所述第二读取方式发生读失败,则将所述第一读取方式连续发生读失败的次数清0,并将所述标志位的数值置为0,然后利用所述第一读取方式从所述目标闪存中读取首个所述第二数据。
11、可选的,所述固态硬盘读方法,还包括:
12、在利用所述第一读取方式从所述目标闪存中读取首个所述第二数据时,若所述第一读取方式发生读失败,则基于目标纠错流程对首个所述第二数据进行纠错;所述目标纠错流程为基于低密度奇偶校验确定的纠错流程。
13、可选的,所述固态硬盘读方法,还包括:
14、确定首个所述第二数据中的各比特数据的错误情况;
15、若首个所述第二数据中的各比特数据的错误情况满足第一预设错误判定条件,则判定所述第二读取方式发生读失败。
16、可选的,所述固态硬盘读方法,还包括:
17、若所述标志位的数值为1,则将所述目标缓存置为有效,并在所述第二读取请求所请求的数据为所述第一数据中的非首个所述第二数据时,从所述目标缓存中取出所述第二读取请求所请求的数据。
18、可选的,所述根据所述标志位的数值利用所述第一读取方式或所述第二读取方式从所述目标闪存中读取所述第二数据,包括:
19、若所述标志位的数值为0,则利用所述第一读取方式从所述目标闪存中读取所述第二数据;
20、相应的,所述固态硬盘读方法,还包括:
21、在利用所述第一读取方式从所述目标闪存中读取所述第二数据时,若所述第一读取方式发生读失败,则利用第二读取方式从所述目标闪存中读取所述第二数据,并将所述第二数据返回给闪存转换层。
22、可选的,所述固态硬盘读方法,还包括:
23、通过计数器计算所述第一读取方式连续发生读失败的次数;其中,所述第一读取方式每连续发生一次读失败,则对所述计数器进行加一运算。
24、可选的,所述记录与所述第二读取请求对应的第二数据块地址之后,还包括:
25、在所述第二数据块地址超出所述第一数据块地址时,将与所述第二读取请求对应的第二数据块地址记录为所述当前数据块地址,并将所述第一读取方式连续发生读失败的次数清0,然后将所述标志位的数值置为0。
26、可选的,所述固态硬盘读方法,还包括:
27、判断所述第二数据块地址与所述第一数据块地址是否相等;
28、若所述第二数据块地址与所述第一数据块地址相等,则判定所述第二数据块地址未超出所述第一数据块地址;
29、若所述第二数据块地址与所述第一数据块地址不相等,则判定所述第二数据块地址超出所述第一数据块地址。
30、可选的,所述利用第一读取方式从目标闪存中读取第一数据至目标缓存之后,还包括:
31、从所述目标缓存中取出首个所述第二数据;
32、相应的,所述固态硬盘读方法,还包括:
33、确定首个所述第二数据中的各比特数据的错误情况;
34、若首个所述第二数据中的各比特数据的错误情况满足第二预设错误判定条件,则判定所述第一读取方式发生读失败。
35、可选的,所述若首个所述第二数据中的各比特数据的错误情况满足第二预设错误判定条件,则判定所述第一读取方式发生读失败,包括:
36、判断首个所述第二数据中存在错误的比特数据个数是否到达预设的错误个数阈值;
37、若首个所述第二数据中存在错误的比特数据个数到达所述预设的错误个数阈值,则判定所述第一读取方式发生读失败;
38、若首个所述第二数据中存在错误的比特数据个数未到达所述预设的错误个数阈值,则判定所述第一读取方式未发生读失败。
39、第二方面,本技术公开了一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现前述公开的固态硬盘读方法的步骤。
40、第三方面,本技术公开了一种电子设备,包括:
41、存储器,用于保存计算机程序;
42、处理器,用于执行所述计算机程序,以实现前述公开的固态硬盘读方法。
43、第四方面,本技术公开了一种计算机可读存储介质,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的固态硬盘读方法。
44、可见,本技术提出一种固态硬盘读方法,包括:当接收到第一读取请求,则利用第一读取方式从目标闪存中读取第一数据至目标缓存;其中,所述第一读取方式的读取电压为0,并且所述第一数据中包含多个第二数据;若所述第一读取方式发生读失败,则将与所述第一读取请求对应的第一数据块地址记录为当前数据块地址,并将所述目标缓存置为无效,然后利用第二读取方式从所述目标闪存中读取所述第二数据,并将所述第二数据返回给闪存转换层;其中,所述第二读取方式的读取电压为非0;当接收到第二读取请求,则记录与所述第二读取请求对应的第二数据块地址,并在所述第二数据块地址未超出所述第一数据块地址时,获取标志位的数值;其中,若所述第一读取方式连续发生预设数量次读失败,则将所述标志位的数值由0置为1;根据所述标志位的数值利用所述第一读取方式或所述第二读取方式从所述目标闪存中读取所述第二数据,并将所述第二数据返回给所述闪存转换层。
45、有益效果:本技术在接收到第一读取请求后,利用读取电压为0的第一读取方式从目标缓存中读取第一数据,若本次读取发生读失败,则将目标缓存置为无效,以避免后续从目标缓存继续读取存在错误的数据,并从目标闪存中读取第二数据以完成第一读取请求。进一步的,本技术维护了一个标志位,并根据第一读取方式连续发生读失败的次数对该标志位进行置位,具体的,本技术在第一读取方式连续发生预设数量次读失败时,将该标志位由0置为1,在第一读取方式连续未发生预设数量次读失败时,将该标志位保持为0。这样一来,在接收到第二读取请求后,判断与第二读取请求对应的第二数据块地址是否未超过与第一读取请求对应的第一数据块地址,若是,则说明第二读取请求所请求的数据仍为存在错误的数据,此时,获取标志位的数值,然后根据标志位的数值选择利用第一读取方式或第二读取方式从目标闪存中读取第二数据。综上可见,针对同一数据块地址,本技术基于连续发生读失败的次数确定是否要切换读取方式,而不是每次在发生读失败后都要切换读取方式,这样一来,有效的减少了第一读取方式与第二读取方式的频繁切换次数,进而减少了对目标闪存的磨损,增加了目标闪存的使用寿命。
1.一种固态硬盘读方法,其特征在于,包括:
2.根据权利要求1所述的固态硬盘读方法,其特征在于,所述根据所述标志位的数值利用所述第一读取方式或所述第二读取方式从所述目标闪存中读取所述第二数据,包括:
3.根据权利要求2所述的固态硬盘读方法,其特征在于,还包括:
4.根据权利要求3所述的固态硬盘读方法,其特征在于,还包括:
5.根据权利要求3所述的固态硬盘读方法,其特征在于,还包括:
6.根据权利要求2所述的固态硬盘读方法,其特征在于,还包括:
7.根据权利要求1所述的固态硬盘读方法,其特征在于,所述根据所述标志位的数值利用所述第一读取方式或所述第二读取方式从所述目标闪存中读取所述第二数据,包括:
8.根据权利要求1所述的固态硬盘读方法,其特征在于,还包括:
9.根据权利要求1所述的固态硬盘读方法,其特征在于,所述记录与所述第二读取请求对应的第二数据块地址之后,还包括:
10.根据权利要求1所述的固态硬盘读方法,其特征在于,还包括:
11.根据权利要求1至10任一项所述的固态硬盘读方法,其特征在于,所述利用第一读取方式从目标闪存中读取第一数据至目标缓存之后,还包括:
12.根据权利要求11所述的固态硬盘读方法,其特征在于,所述若首个所述第二数据中的各比特数据的错误情况满足第二预设错误判定条件,则判定所述第一读取方式发生读失败,包括:
13.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如权利要求1至12中任一所述的固态硬盘读方法的步骤。
14.一种电子设备,其特征在于,包括:
15.一种计算机可读存储介质,其特征在于,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至12任一项所述的固态硬盘读方法。