第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 控制存储器刷新的方法 装置以及控制器与流程

控制存储器刷新的方法 装置以及控制器与流程

时间:2020-07-06 21:52:06

相关推荐

控制存储器刷新的方法 装置以及控制器与流程

本申请涉及存储器领域,并且更具体地涉及控制存储器刷新的方法、装置以及控制器。

背景技术:

::快闪存储器(flash)是一种非易失性的存储器,广泛应用于记忆卡、固态硬盘以及可携式多媒体播放器(portablemultimediaplayers)等电子设备。为了保护数据的安全,通常在快闪存储器的控制器内设置有ecc(errorcheckingandcorrection)译码电路,用于数据恢复和纠错处理。ecc译码模块设置在快闪存储器的控制端,在数据写入阶段,将基于原始数据编码产生编码数据存储到快闪存储器中,在数据读取阶段,使用纠错码(ecc)纠正一定数量的错误数据比特以得到原始数据。通过ecc译码模块能够降低快闪存储器的误码率以及提高产品良率。在快闪存储器的数据读取阶段,由于快闪存储器的结构特性,同一个位置重复读了很多次之后,错误比特数量(errorbitcount)会升高,严重时会导致ecc译码电路译码失败。为此,现有技术方案中对读取次数设定一个静态的读取次数阈值(readcountthreshold),当读取次数超过这个阈值时,对快闪存储器的数据单元进行刷新(refresh)。然而这种方式没有考虑不同数据单元对于读取操作的特性差异(readdisturbancedifference),这种特性差异使得一些数据单元比另一些数据单元能够在刷新之前承受更多的读取次数,因此造成了资源上的浪费,而且过多的刷新次数也降低了快闪存储器的执行效率和使用寿命。技术实现要素:有鉴于此,本发明提供一种控制存储器刷新的方法、装置以及控制器,根据错误比特量调整读取次数阈值参量的数值,以解决上述问题。根据本发明的第一方面,提供一种控制存储器刷新的方法,所述方法包括:获取步骤:对所述存储器进行读取操作,并获取多个数据单元各自的错误比特量;分级步骤:将零和最大错误比特量之间的数值范围划分为多个连续区间,并据此将所述多个数据单元分成多个等级;设置步骤:按照所述多个等级设置读取次数阈值;刷新步骤:对于每个数据单元,当读取次数超过所属等级的读取次数阈值时,刷新所述数据单元。可选地,在执行所述刷新步骤之前,多次执行所述获取步骤、所述分级步骤和所述设置步骤。可选地,所述方法还包括:设置初始值,仅当所述存储器的读取次数大于所述初始值时,才执行所述方法的步骤。可选地,所述多个连续区间和多个设定值对应,所述设置步骤包括:将每个数据单元的读取次数阈值设置为其所属组对应的设定值。可选地,还包括:根据样本实验建立所述多个连续区间和所述多个设定值之间的对应关系。可选地,所述数据单元包括:至少一个存储块或至少一个存储页。可选地,所述错误比特量为所述数据单元的单位错误比特数量或错误比特总量。可选地,根据ecc译码电路的反馈信息计算所述错误比特量。可选地,所述存储器为闪存。第二方面,提供一种控制存储器刷新的装置,包括:数据读取模块,用于从多个数据单元读取存储数据;ecc译码模块,用于对存储数据进行译码纠错;错误量计算模块,用于计算所述多个数据单元各自的错误比特量;单元分级模块,用于将零和最大错误比特量之间的数值范围划分为多个连续区间,并据此将所述多个数据单元分成多个组;阈值设置模块,用于按照所述多个组设置所述多个数据单元各自的读取次数阈值,并据此执行;单元刷新模块,用于对于每个数据单元,当读取次数超过所述读取次数阈值时,刷新所述数据单元。可选地,还包括:初值设置模块,用于设置初始值,所述装置的各个模块仅在所述存储器的读取次数大于所述初始值时才被执行。可选地,所述多个连续区间和多个设定值对应,所述阈值设置模块包括:将每个数据单元的读取次数阈值设置为其所属组对应的设定值。根据本发明的第三方面,提供一种用于存储器的控制器,包括上述任一项所述的装置和一写入控制装置。在本发明实施例中,根据最大错误比特量分等级地调整各个数据单元的读取次数阈值,各个数据单元基于各自的读取次数阈值执行刷新操作,使得刷新操作的执行时机和存储器各个数据单元的特性相符,避免对某些数据单元过早刷新造成资源浪费,和对某些数据单元过晚刷新造成读取效率降低。附图说明通过参照以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:图1示出闪存系统的示意性框图;图2示出本发明实施例的控制存储器刷新的装置的示意性框图;图3示出本发明一实施例的控制存储器刷新的方法的流程图;图4示出本发明另一实施例的控制存储器刷新的方法的流程图。具体实施方式以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。附图中的流程图、框图图示了本发明实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。图1示出闪存系统的示意性框图。该闪存系统例如是使用固态硬盘(ssd)的计算机系统。该计算机系统包括主机110。固态硬盘包括存储器控制器120和存储器130。主机110经由存储器控制器120访问存储器130。该存储器130包括至少一个闪存芯片131。在该闪存系统中,存储数据为原始数据经过编码产生的编码数据,在读取操作中经由对存储数据的译码操作才能获得原始数据。主机110例如包括处理器、片上系统、数字信号处理器(dsp)。在使用状态时,主机110从存储器130中加载程序或读取数据,以及向存储器130中写入数据。存储器控制器120例如是单独的集成电路芯片,包括写入控制装置和读取控制装置。在写入操作期间,写入控制装置对原始数据基于ldpc(lowdensityparitycheckcode,低密度校验码)进行编码,生成存储数据,并将存储数据写入存储器130中。在读取操作期间,读取控制装置从存储器130中获取存储数据,然后进行ldpc译码以获得原始数据。闪存芯片131的存储单元可以是单层单元(slc),其存储单个比特的数据。在另一示例中,闪存芯片131的存储单元可以是多层单元(例如mlc、tlc或qlc),其存储有多个比特的数据。在本实施例中,以使用固态硬盘的计算机系统作为闪存系统的示例。然而,本发明不限于此。闪存可以是包括固态硬盘、内存条、优盘、闪存卡中的任一种,则相应的闪存系统可以是计算机系统、嵌入式系统、片上系统等多种类型中的一个,这些系统可以经由windows操作系统、linux操作系统、android操作系统等操作系统进行驱动。图2示出本发明实施例的控制存储器刷新的装置的示意性框图。如上所述,闪存系统中的存储器控制模块包括写入控制装置和读取控制装置。本发明主要是关于对读取控制装置的改进。参考图2,读取控制装置121包括:数据读取模块121和ecc译码模块122。读取控制装置120工作时,以存储页(page)为单位从存储器130读取存储数据。即读取控制装置120在每次读取周期期间,按照存储页依次读取存储器130上的比特数据。在读取周期期间,数据读取模块121向存储页面的各存储单元施加检测电压(sensingvoltage)。对于给定的存储单元,确定存储单元的电压电平与所施加的检测电压相比是更高还是更低。基于该确定,例如,如果存储单元是slc,数据读取模块121可直接确定存储单元中存储的比特是0还是1;如果存储单元是mlc,则需要施加多个检测电压以确定存储在存储单元中的比特是0还是1。也就是说,数据读取模块121通过施加检测电压以及对存储单元上的电压电平的判断,获取存储数据。ecc译码模块122则使用译码技术执行译码纠错,从而产生输出数据,该输出数据为存储数据对应的原始数据。ecc译码模块123例如可以使用低密度奇偶校验(ldpc)码对数据进行译码和纠错。ecc译码模块的译码纠错水平决定了是否能够对数据读取模块121读取到的存储数据行正确译码。然而,随着读取次数的增加,逐渐上升的错误比特数量(errorbitcount)可能超过ecc译码模块的译码纠错能力,从而导致ecc译码模块的译码纠错失败。为此,本实施例中还包括:错误量计算模块123、单元分级模块124、阈值设置模块125和单元刷新模块126,通过将多个数据单元分成多个等级,按等级设置读取次数阈值,使得各个数据单元可以根据各自的读取次数阈值执行刷新操作。错误量计算模块123根据ecc译码模块122的反馈结果计算数据单元的错误比特量。在前文中指出,读取控制装置以存储页(page)为单位从存储器读取存储数据。而本文中的数据单元可以为一个存储页(page)、多个存储页(page)、一个存储块(block)或多个存储块(块)。其中,存储块(block)由多个存储页(page)构成。对于一个数据单元来说,ecc译码模块123可以统计出该数据单元在译码纠错过程中出现的错误比特数量,并将该数值传递给错误量计算模块123,错误量计算模块123可以直接使用该数值作为错误比特量,或者将该数值除以该数据单元的全部比特总量,得到错误比特占比。对于多个数据单元,错误量计算模块123可以将各个数据单元的错误比特量传递给单元分级模块124。单元分级模块124计算各个数据单元的最大错误比特量,并将零和最大错误比特量之间的数值范围分为多个连续区间,判断每个数据单元的错误比特量在哪个连续区间内,并据此将多个数据单元划分在不同等级中。其中,连续区间可以是均匀的或者不均匀的,例如最大错误比特量为90,划分后的不均匀的连续区间为[0,50],[50,80],[80,90],则错误比特量落在[80,90]的数据单元为第一等级,错误比特量落在[50,80]为第二等级,以此类推。阈值设置模块125用于在将多个数据单元分成多个等级之后,针对每个等级设置读取次数阈值,则属于相应等级的每个数据单元均得到该等级对应的读取次数阈值。例如在上例中,第一等级的读取次数阈值设置为9500,第二等级设置为9000,则属于第一等级的每个数据单元的读取次数阈值为9500,属于第二等级的每个数据单元的读取次数阈值为9000。单元刷新模块126用于对于每个数据单元,当读取次数超过读取次数阈值时,刷新数据单元。换句话说,单元刷新模块126是否执行取决于读取次数是否达到读取次数阈值。由此,可能在一个读取操作时执行模块123-125,在另一个读取操作时执行刷新操作。本实施例将多个数据单元划分为多个等级,按照等级设置读取次数阈值,并据此进行刷新,兼顾了各个数据单元的特性差异,使得刷新操作的执行时机和各个数据单元的特性相符,从而避免过早执行刷新操作造成的资源浪费,以及过晚执行刷新操作造成读取效率降低。对闪存系统来说,一般只有在读取次数超过一定数量的条件下,错误比特量才会爆发,因此,在上述实施例中增加了一个初值设置模块作为一个优选的实施例。该初值设置模块用于设置初始值。当存储器的读取次数小于或等于该初始值时,由于各个数据单元的错误比特量都很小,因此无需考虑刷新操作,也就是无需执行上述模块,只有对存储器的读取次数大于该初始值时,才执行上述模块。本实施例中,初始值应该设置得非常小,以确保所有的数据单元在该初始值下均不会出现译码失败。需要指出的是,存储器的读取次数是将存储器读取操作的累加值,无论一次读取操作读取的是存储器的何种位置,都会增加一次存储器的读取操作。在一个实施例中,将多个等级和多个设定值对应,将每个数据单元的读取次数阈值设置为其所属等级对应的设定值。可选地,通过一定量的样本式样建立多个等级和多个设定值的对应关系。下面以假设数据进一步解释说明本实施例。首先假设,初始值设为30次。也就是说,当对存储器中的任何一个数据单元进行读取操作时,如果当前统计到的存储器的读取次数小于或者等于30,不采取任何措施。然后对于读取操作,当读取次数超过30次时,假设最大错误比特量为75%,划分后的多个区间为[0,30%]、[30%,60%]、[60%,70%]、[70%,75%],多个设定值为900、700、500和200。如果一个数据单元的错误比特量小于30%时,则将该数据单元的读取次数阈值设为900,表示在执行刷新之前总共可以读取900次;当一个数据单元的错误比特量处于[30%,60%]之间时,将该数据单元的读取次数阈值参量设置为700,表示在执行刷新之前总共可以读取700次;以此类推。而对于每个数据单元而言,当达到设定的读取次数阈值时,执行刷新操作。值得指出的是,在上述假设例中,错误比特量实际上指的是在一个数据单元中,错误比特数量和全部比特数量的比值,即错误比特占比。在本例中,靠近最大错误比特量的区间设置较为密集,远离最大错误比特量的区间设置较为疏松。这样做的目的是为了在最合适或者接近最合适的时机时执行刷新操作,保证不会太晚(例如ecc译码电路已经译码失败),也不会太早(例如数据单元还可以承受更多的读取次数)。当然本发明不以为限。在一个可选的实施例中,可以多次设置读取次数阈值。下面以表格1为例对此进行解释。表格1表示多个读取操作中对于10个数据单元的划分。序号为读取操作的序号。参见表1,随着闪存系统的使用次数增加,读取次数阈值参量会由于产品自身差异和使用者的不当使用以及其他原因导致读取结果和预期发生偏离,因此需要实时调整读取次数阈值。而上例中,可以根据多次读取操作产生的等级划分设置读取次数阈值。这样可以避免由于偶然因素使等级划分出现偏差。图3示出本发明一实施例的读取控制方法的流程图。具体包括以下步骤。在步骤s301中,对存储器进行读取操作,并获取多个数据单元各自的错误比特量。该步骤是指采用上述的数据读取模块从存储器上读取多个数据单元上的存储数据,然后采用ecc译码模块获取原始数据。在步骤s302中,将零和最大错误比特量之间的数值范围划分为多个连续区间,并据此将多个数据单元分成多个等级。该步骤是指根据译码纠错结果得到各个数据单元的错误比特量和最大错误比特量,然后将零和最大错误比特量之间的数值范围分为多个连续区间,根据每个数据单元的错误比特量所处的连续区间,将多个数据单元划分在不同等级中。在步骤s303中,按照多个等级设置读取次数阈值。该步骤是指针对每个等级设置读取次数阈值,则属于相应等级的每个数据单元均得到该等级对应的读取次数阈值。在步骤s304中,对于每个数据单元,当读取次数超过所属等级的读取次数阈值时,刷新数据单元。该步骤是指当判定数据单元的读取次数超过的读取次数阈值参量的数值,执行刷新操作。图4示出本发明另一实施例的读取控制方法的流程图。具体包括以下步骤。在步骤s401中,从存储器上读取数据。该步骤是指采用上述的数据读取模块读取存储器上多个数据单元上的存储数据,并将存储数据输入给ecc译码模块进行译码,得到原始数据。在步骤s402中,读取次数是否大于30。该步骤是判断该数据单元的读取次数是否大于30,30是一个预设的初始值,当读取次数未达到初始值,不考虑刷新操作。在步骤s403中,错误比特量是否小于60。在步骤s404中,调整读取次数阈值参量为第一设定值。在步骤s405中,错误比特量是否<80。在步骤s406中,调整读取次数阈值参量为第二设定值。在步骤s407中,错误比特量是否<140。在步骤s408中,调整读取次数阈值参量为第三设定值。在步骤s403-s408中,140表示最大错误比特量,60和80为140之下找到的两个数值,用于划分连续区间,第一至第三设定值分别和60、80和140对应。至此,数据单元根据其错误比特量能够归属于一个连续区间,进而归属于不同等级,然后数据单元获取其归属的等级对应的设定值,即第一至第三设定值中的一个。在步骤s409中,读取次数是否超过读取次数阈值参量的数值。在步骤s410中,刷新存储单元。基于步骤s409-s410,当判定一个数据单元的读取次数超过的读取次数阈值参量的数值,执行刷新操作。在上述实施例中,根据最大错误比特量进行等级划分,并根据等级设置读取次数阈值,使得处于不同等级的数据单元得到其归属的等级的读取次数阈值,以此确保根据每个数据的状态适时地执行刷新操作,从而避免过早执行刷新操作造成资源浪费,或者过晚执行刷新操作造成读取效率降低。在此所用的术语“模块”可以指代以下各项、作为以下各项的一部分或者包括以下各项:专用集成电路(asic)、电子电路、执行一个或多个软件或固件程序的处理器(共享、专用或群组)和/或存储器(共享、专用或群组)、组合逻辑电路和/或提供所描述的功能性的其他合适的组件。本领域技术人员可以理解,根据本发明的各个模块或部件可以通过硬件、固件或软件实现。软件例如包括采用java、c/c++/c#、sql等各种编程语言形成的编码程序。虽然在方法以及方法图例中给出本发明实施例的步骤以及步骤的顺序,但是所述步骤实现规定的逻辑功能的可执行指令可以重新组合,从而生成新的步骤。所述步骤的顺序也不应该仅仅局限于所述方法以及方法图例中的步骤顺序,可以根据功能的需要随时进行确定。例如将其中的某些步骤并行或按照相反顺序执行。以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 

技术特征:

1.一种控制存储器刷新的方法,所述方法包括:

获取步骤:对所述存储器进行读取操作,并获取多个数据单元各自的错误比特量;

分级步骤:将零和最大错误比特量之间的数值范围划分为多个连续区间,并据此将所述多个数据单元分成多个等级;

设置步骤:按照所述多个等级设置读取次数阈值;

刷新步骤:对于每个数据单元,当读取次数超过所属等级的读取次数阈值时,刷新所述数据单元。

2.根据权利要求1所述的方法,其中,在执行所述刷新步骤之前,多次执行所述获取步骤、所述分级步骤和所述设置步骤。

3.根据权利要求1或2所述的方法,其中,所述方法还包括:设置初始值,仅当所述存储器的读取次数大于所述初始值时,才执行所述方法的步骤。

4.根据权利要求1所述的方法,其中,所述多个等级和多个设定值对应,且所述设置步骤包括:

将每个数据单元的读取次数阈值设置为其所属等级对应的设定值。

5.根据权利要求4所述的方法,其中,还包括:根据样本实验建立所述多个等级和所述多个设定值之间的对应关系。

6.根据权利要求1至5任一项所述的方法,其中,所述数据单元包括:至少一个存储块或至少一个存储页。

7.根据权利要求1所述的方法,其中,所述错误比特量为所述数据单元的单位错误比特数量或错误比特总量。

8.根据权利要求7所述的方法,其中,根据ecc译码电路的反馈信息计算所述错误比特量。

9.根据权利要求1至8所述的方法,其中,所述存储器为闪存。

10.一种控制存储器刷新的装置,包括:

数据读取模块,用于从多个数据单元读取存储数据;

ecc译码模块,用于对存储数据进行译码纠错;

错误量计算模块,用于计算所述多个数据单元各自的错误比特量;

单元分级模块,用于将零和最大错误比特量之间的数值范围划分为多个连续区间,并据此将所述多个数据单元分成多个等级;

阈值设置模块,用于按照所述多个等级设置读取次数阈值;

单元刷新模块,用于对于每个数据单元,当读取次数超过所述读取次数阈值时,刷新所述数据单元。

11.根据权利要求10所述的装置,其中,还包括:

初值设置模块,用于设置初始值,所述装置的各个模块仅在所述存储器的读取次数大于所述初始值时才被执行。

12.根据权利要求11所述的装置,其中,所述多个等级和多个设定值对应,所述阈值设置模块包括:将每个数据单元的读取次数阈值设置为其所属等级对应的设定值。

13.根据权利要求12所述的装置,其中,还包括:根据样本实验建立所述多个等级和所述多个设定值之间的对应关系。

14.一种用于存储器的控制器,包括如权利要求10至13任一项所述的装置和一写入控制装置。

技术总结

本发明提供控制存储器刷新的方法、装置以及控制器。所述方法包括:对所述存储器进行读取操作,并获取多个数据单元各自的错误比特量;将零和最大错误比特量之间的数值范围划分为多个连续区间,并据此将所述多个数据单元分成多个等级;按照所述多个等级设置读取次数阈值;以及对于每个数据单元,当读取次数超过所属等级的读取次数阈值时,刷新所述数据单元。本发明实施例兼顾了各个数据单元的特性差异,使得刷新操作的执行时机和各个数据单元的特性相符,避免对某些数据单元过早刷新造成资源浪费,和对某些数据单元过晚刷新造成读取效率降低。

技术研发人员:喻小帆;骆小敏;陈正亮;王琛銮;郝聪明;王安国;范芳

受保护的技术使用者:联芸科技(杭州)有限公司

技术研发日:.07.31

技术公布日:.12.13

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。