一种数据读取方法及计算机可读存储设备与流程

文档序号:24339874发布日期:2021-03-19 12:21阅读:175来源:国知局
一种数据读取方法及计算机可读存储设备与流程

本发明属于存储器技术领域,特别是涉及一种数据读取方法及计算机可读存储设备。



背景技术:

随着所需闪存设备的容量越来越大,闪存设备也需要越来越好的纠错品质,与之搭配的各家闪存设备供应商也会提供读重试表进行读取时闪存设备电压的偏移调整,以便将数据更为准确的读取出来。随着闪存设备容量的增大,闪存设备供应商提供的读重试表的组数数量也随之提高。读重试过程中,若每次都从读重试表的第0组开始尝试,将会消耗许多读取与纠错的时间,造成整体的读性能低下,甚至随着时间的磨耗,可能连读重试也无法纠错回正确的资料,此时只能舍弃整个存储单元。



技术实现要素:

本发明的目的在于提供一种数据读取方法,解决了闪存设备在使用后期读取速度下降寿命缩短的问题,有效的提高了闪存设备的读性能,提高了闪存设备的使用寿命。

为解决上述技术问题,本发明是通过以下技术方案实现的:

本发明提供一种数据读取方法,其包括以下步骤:

提供一存储单元,所述存储单元包括多个数据存储位置;

所述存储单元上配置有读重试表;

根据所述读重试表判断是否在数据存储位置上执行数据重读,若是,则为所述数据重读过程设定对应的重读步骤,若否,则执行下一步;

请求读取所述数据存储位置上的数据;

若所读取的数据正确,则输出所读取的数据,若所读取的数据不正确,则采用重读步骤执行重读机制,直至重读成功,并输出重读所读取的数据,当所有重读成功所对应的重读步骤的读取超限参数大于预设阈值时,则执行数据存储位置舍弃机制。

在本发明的一个实施例中,所述重读机制包括:重读过程中优先使用的读重试表中的重读步骤为第一重读步骤。

在本发明的一个实施例中,所述重读机制包括:若所述读重试表中已保存有对应所述数据存储位置的第一重读步骤,则当执行重读机制时优先采用第一重读步骤进行重读。

在本发明的一个实施例中,所述重读机制包括:若所述读重试表中未保存有对应所述数据存储位置的第一重读步骤,则按照所述读重试表中重读步骤的排列顺序进行重读。

在本发明的一个实施例中,所述重读机制包括:当重读成功时,保存重读成功时所对应的重读步骤为所述读重试表中对应所述数据存储位置的新的第一重读步骤。

在本发明的一个实施例中,所述重读机制包括:若采用第一重读步骤重读失败,则继续按照所述读重试表中重读步骤的排列顺序进行重读,直至重读成功,获取所述读重试表中的新的第一重读步骤。

在本发明的一个实施例中,所述重读机制包括:若重读成功所对应的重读步骤的读取超限参数大于预设阈值,则不保存此重读步骤。

在本发明的一个实施例中,所述预设阈值为纠错系统最大容错数量的80%的比特数。

在本发明的一个实施例中,所述数据存储位置舍弃机制包括:舍弃被请求读取的所述数据存储位置,保留所述存储单元中的其他数据存储位置。

本发明还提供一种计算机可读存储设备,所述计算机可读存储设备上存储有计算机程序,所述计算机程序被处理器执行时实现本发明所述的数据读取方法。

本发明提供了一种数据读取方法及计算机可读存储设备,本发明的数据读取方法通过两种机制的混合,既减少了读重试所需的时间,解决了闪存设备在使用后期读取速度下降寿命缩短的问题,有效的提高了闪存设备的读性能,提高了闪存设备的使用寿命。随着时间的磨耗,当出现即使重读也无法纠错回正确数据的情况时,可以提前在这个存储单元完全无法使用前舍弃这一保存数据的数据存储位置,继而保留存储单元中其他数据存储位置,避免舍弃整个存储单元造成的闪存设备读性能下降及使用寿命降低的问题。

当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

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

图1为本发明数据读取方法的方法流程图;

图2为本发明数据读取方法的逻辑结构图;

图3为固态硬盘结构示意图;

图4为采用数据存储位置舍弃机制前存储单元的结构示意图;

图5为采用数据存储位置舍弃机制后存储单元的结构示意图。

具体实施方式

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

请参阅图3至图5,nand闪存产品包括mlc(multi-levelcell)闪存和tlc(triplelevelcell)闪存等,mlc(multi-levelcell)闪存是指在1个存储单元400(cell)中存放2个位(bit)的数据即包括2个数据存储位置401,而tlc闪存是指在1个存储单元400中存放3个位的数据即包括3个数据存储位置401,tlc闪存较mlc闪存速度慢,寿命短。tlc闪存在经过一段时间的损耗后,可能会出现存储单元400里一个数据存储位置401无法重读成功的情况,此时若舍弃整个存储单元400,则不仅造成整体的读性能低下,也会造成闪存寿命降低。

请参阅图1至图2,本发明提供一种数据读取方法,所述数据读取方法包括:

s1.提供一存储单元400,所述存储单元400包括多个数据存储位置401;

s2.所述存储单元400上配置有读重试表302;

s3.根据所述读重试表302判断是否在数据存储位置401上执行数据重读,若是,则为所述数据重读过程设定对应的重读步骤,若否,则执行下一步;

s4.请求读取所述数据存储位置401上的数据;

s5.若所读取的数据正确,则输出所读取的数据,若所读取的数据不正确,则采用重读步骤执行重读机制,直至重读成功,并输出重读所读取的数据,当所有重读成功所对应的重读步骤的读取超限参数大于预设阈值时,则执行数据存储位置401舍弃机制。

请参阅图1至图5,在步骤s1中,提供一存储单元400,所述存储单元400包括多个数据存储位置401。本实施例中的存储单元400例如为固态硬盘200(solidstatedrives)中的存储单元400,所述固态硬盘200是指用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元400(flash芯片、dram芯片)组成。它采用sata-iii、pciex8或者msata、m.2、zif、ide、u.2、cf、cfast等接口。固态硬盘200(ssd)的存储介质包括nand闪存芯片,其采用闪存芯片作为存储介质,主要由控制芯片,缓存芯片和闪存芯片构成。其中控制芯片主要承担数据调配、数据中转以及连接闪存芯片和外部sata接口。缓存芯片主要用于辅助控制芯片进行数据处理。而闪存芯片则是用于数据读写。基于闪存的固态硬盘200主要由控制单元300例如主控制器,存储单元400,缓存(可选),以及跟主机100接口(诸如sata,sas,pcie等)组成。固态硬盘200的主控制器将存储单元400连接到电脑,主控制器可以通过若干个通道并行操作多块闪存颗粒,大大提高底层的带宽,主要包括:错误检查和纠正(ecc)即纠错系统301、磨损平衡(wearleveling)、坏块映射(badblockmapping)、readdisturb(读取某个块的数据的时候会影响到相邻块的数据)管理及读重试表302等。nand闪存产品包括mlc闪存和tlc闪存等,mlc闪存是指在1个存储单元400中存放2个位的数据即包括2个数据存储位置401,而tlc闪存是指在1个存储单元400中存放3个位的数据即包括3个数据存储位置401,tlc闪存较mlc闪存速度慢,寿命短。mlc存储的数据例如是“00”,“01”,“10”,“11”也是基于电压阀值的判定,当充入的电荷不足3.5v时,就代表”11”,当充入的电荷在3.5v和4.0v之间,则代表“10”,当充入的电荷在4v和5.5v之间,则表示“01”,当充入的电荷在5.5v以上,则表示”00”。tlc存储的数据例如是“000”,“001”,“010”,“011”,“100”,“101”,“110”,“111”也是基于电压阀值的判定,它的电压阈值的分界点就更细致,导致的结果也就每个存储单元400的可靠性也更低,本实施例中的存储单元400即为tlc闪存中的存储单元400,tlc闪存当经过一段时间的损耗后,可能会出现存储单元400里一个数据无法重读成功的情况。

请参阅图1至图5,在步骤s2和步骤s3中,为所述存储单元400配置有读重试表302,所述读重试表302中包括了多个重读步骤,多个重读步骤按预设方式进行排序,排序方式可以为供应商提供的重读步骤排序,也可以是之前重读过程中已保存下来的最优重读步骤排序,例如在重读过程中储存的第一重读步骤,若所述读重试表302中已保存有对应所述数据存储位置401的第一重读步骤,则当执行重读机制时优先采用第一重读步骤进行重读。若所述读重试表302中未保存有对应所述数据存储位置401的第一重读步骤,则按照所述读重试表302中重读步骤的排列顺序进行重读。根据所述读重试表302判断是否在数据存储位置401上执行数据重读,若是,则为所述数据重读过程设定对应的重读步骤,若否,则继续执行下一步骤。

请参阅图1至图5,在步骤s4和步骤s5中,请求读取所述数据存储位置401上的数据,若所读取的数据正确,则输出所读取的数据,若所读取的数据不正确,则采用重读步骤执行重读机制,直至重读成功,并输出重读所读取的数据,当所有重读成功所对应的重读步骤的读取超限参数大于预设阈值时,则执行数据存储位置401舍弃机制,舍弃被请求读取的所述数据存储位置401,所述预设阈值可以为纠错系统最大容错数量的80%的比特数。在一些实施例中,所述主控制器控制固态硬盘200的各种工作,所述主控制器可以通过执行在闪存的fw区域存储的固件的处理器和各种硬件电路等来实现其功能,执行针对来自主机100的写请求、缓存刷新请求、读请求等的各种指令,本实施例中主机100发出请求读取所述数据存储位置401上的数据,并判断所读取的数据是否正确,若所读取的数据正确,则输出所读取的数据,若所读取的数据不正确,则采用重读步骤执行重读机制,直至重读成功,并输出重读所读取的数据。在读重试表302中,重读步骤按照初始顺序进行排列,初始执行重读机制时,按照重读步骤的初始顺序进行重读,当重读成功时,保存重读成功时所对应的重读步骤为所述读重试表302中对应所述数据存储位置401的第一重读步骤,此时所述读重试表302中重读步骤的排列顺序得到更新,之后闪存再接收到数据读取命令时,则首先判断读重试表302中是否已保存有对应所述数据存储位置401的第一重读步骤,若所述读重试表302中已保存有对应所述数据存储位置401的第一重读步骤,则当执行重读机制时优先采用第一重读步骤进行重读,若采用第一重读步骤重读失败,则继续按照所述读重试表302中重读步骤的排列顺序进行重读,直至重读成功,获取所述读重试表302中的新的第一重读步骤。若所述读重试表302中未保存有对应所述数据存储位置401的第一重读步骤,则按照所述读重试表302中重读步骤的排列顺序进行重读,直至重读成功,获取所述读重试表302中的第一重读步骤。例如所述存储单元400设有读重试表302t(1)到读重试表302t(49),也就表示每一读重试表302t(0)~t(49)包含不同的读取电压。主控制器预设重读步骤为会先使用读重试表302t(0)的读取电压读取所述页面的数据。如果使用重试表t(0)的读取电压例如vtha(0)~vthg(0)而仍无法有效更正所读取所述页面的数据错误时,主控制器例如继续使用读重试表302t(1)的读取电压vtha(1)~vthg(1)以重新读取所述页面的数据,以此类推,直到用了读重试表例如302t(i)的读取电压例如vtha(i)~vthg(i)可读取所述页面的数据而未发生无法更正错误为止。此时的重读步骤i可以保存为所述数据存储位置401的第一重读步骤。在本实施例中,当重读成功时,判断重读成功所对应的重读步骤的读取超限参数是否大于预设阈值,若此重读步骤的读取超限参数大于预设阈值,则证明此重读步骤即将出现再也无法重读成功的情况,此时不保存此重读步骤,并在之后的重读机制中采用其他的重读步骤对所述数据存储位置401的数据进行重读,若此重读步骤的读取超限参数不大于预设阈值,则保存此重读步骤为所述读重试表302中对应所述数据存储位置401的第一重读步骤,这样就减少了下次读重试所需的时间。当所有重读成功所对应的重读步骤的读取超限参数大于预设阈值时,若读取超限参数大于预设阈值,则证明所有的重读步骤都将失效,此时则执行数据存储位置401舍弃机制,舍弃被请求读取的所述数据存储位置401。

请参阅图1至图5,具体的,本实施例中,例如在tlc闪存中,每个存储单元400包括三个数据存储位置401,每个数据存储位置401存储一个数据,当主机100请求读取所述存储单元400中的数据之前,首先根据读重试表302判断是否执行数据重读,若判断执行数据重读,则为所述数据重读过程设定对应的重读步骤,若存在第一重读步骤则设定优先使用。若判断不执行数据重读,则正常开始数据读取过程,数据读取过程后,首先判断所读取的数据是否正确,若正确则直接输出所读取的数据,若所读取的某个数据出现错误,则针对读取出现错误的数据存储位置401进行重读,即开启重读机制,若读重试表302中存在第一重读步骤则采用第一重读步骤进行重读,这样可以节省大量重读的时间,若读重试表302中不存在第一重读步骤则依照读重试表302中的顺序进行重读,每次重读结束判断重读是否成功,若重读不成功,则依照重读步骤的排序继续重读,直至重读成功,即正确读取出此数据存储位置401的数据时,则输出数据。同时判断重读成功的重读步骤的读取超限参数是否大于预设阈值,若重读步骤的读取超限参数不大于预设阈值,则将正确读取出此数据存储位置401数据的重读步骤在读重试表302中保存更新为第一重读步骤,所谓第一重读步骤即为此数据存储位置401重读时最优选的重读步骤,当此数据存储位置401存储的数据在之后的数据读取过程中再次出现读取错误时,优先选用第一重读步骤进行此数据存储位置401存储的数据的重读,通过此重读机制可以对各数据存储位置401保存最优的第一重读步骤,进而有效的节省数据重读的时间。另当重读成功时首先对所应用的重读步骤的读取超限参数进行判断,若所应用的重读步骤的读取超限参数大于预设阈值,则不保存重读步骤作为第一重读步骤,当所有的重读成功时所应用的重读步骤的读取超限参数都大于预设阈值,则开启数据存储位置401舍弃机制。这是因为当重读成功的重读步骤的读取超限参数大于预设阈值时代表此重读步骤即将出现再也无法成功重读该数据存储位置401上数据的情况,当部分重读步骤的读取超限参数大于预设阈值,可以采用其他的重读步骤进行重读,但当所有的重读成功时所应用的重读步骤的读取超限参数都大于预设阈值,可以舍弃整个存储单元400,则不再此存储单元400内存储数据,在本实施例中,采取数据存储位置401舍弃机制,即保留整个存储单元400,仅将存储单元400中即将无法成功重读的数据存储位置401舍弃,例如在tlc闪存的一个存储单元400的三个数据存储位置401中舍弃其中一个,而保留其余两个数据存储位置401,舍弃数据存储位置401是指数据存储位置401上的所有数据皆不使用,同时在进行写操作的时候要将所舍弃的数据存储位置401写入垃圾资料,以正确完成例如tlc闪存的写入动作,从而使tlc闪存的存储单元400成为类似mlc闪存中存储单元400仅包括两个数据存储位置401的状态,这样既可以不至于影响闪存的读取性能,又可以提高闪存的使用寿命。

本发明还提供一种计算机可读存储设备,所述计算机可读存储设备上存储有计算机程序,所述计算机程序被处理器执行时实现本发明所述的数据读取方法。

本发明提供了一种数据读取方法及计算机可读存储设备,本发明的数据读取方法通过两种机制的混合,既减少了读重试所需的时间,解决了闪存设备在使用后期读取速度下降寿命缩短的问题,有效的提高了闪存设备的读性能,提高了闪存设备的使用寿命。随着时间的磨耗,当出现即使重读也无法纠错回正确数据的情况时,可以提前在这个存储单元400完全无法使用前舍弃这一保存数据的数据存储位置401,继而保留存储单元400中其他数据存储位置401,避免舍弃整个存储单元400造成的闪存设备读性能下降及使用寿命降低的问题。

以上公开的本发明选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

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