CN115269256A - 闪存的数据刷新方法及相关装置 - Google Patents

闪存的数据刷新方法及相关装置 Download PDF

Info

Publication number
CN115269256A
CN115269256A CN202110476498.9A CN202110476498A CN115269256A CN 115269256 A CN115269256 A CN 115269256A CN 202110476498 A CN202110476498 A CN 202110476498A CN 115269256 A CN115269256 A CN 115269256A
Authority
CN
China
Prior art keywords
erasing
information
data
area
flash memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110476498.9A
Other languages
English (en)
Inventor
张勇
王正玑
潘爵雨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202110476498.9A priority Critical patent/CN115269256A/zh
Publication of CN115269256A publication Critical patent/CN115269256A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

本申请公开了数据存储技术领域中一种闪存的数据刷新方法及相关装置。本申请提供的技术方案中,获取第一擦写区域的纠错码ECC的纠错能力信息、第一擦写区域的最大擦写次数信息、闪存的温度信息、第一擦写区域的位翻转信息和第一擦写区域的擦写次数信息;根据温度信息、擦写次数信息、最大擦写次数信息和纠错能力信息计算位翻转门限;位翻转信息中的位翻转数量大于或等于位翻转门限的情况下,对第一擦写区域进行数据刷新。本申请提供的技术方案,提高了位翻转门限的准确度,有效避免了数据丢失。

Description

闪存的数据刷新方法及相关装置
技术领域
本申请涉及数据存储技术领域,尤其涉及一种闪存的数据刷新方法及相关装置。
背景技术
与非型闪存(nand flash)具有容量大,改写速度快等优点,适用于大量数据的存储,在业界得到了越来越广泛的应用。
但是,与非型闪存上存储的数据不是永久存储的,原先存储于浮栅极的电子会慢慢泄漏,随着时间的流逝,电子泄漏到一定数量时就会出现位翻转现象。另外,随着芯片生产工艺的提升,晶体管与晶体管之间的间隔在不断缩小,使得电子泄漏变得更加容易,也就更容易出现位翻转现象。位翻转长期累积,超过纠错码(error correcting code,ECC)的纠错能力时,就会出现数据丢失。
目前,可以通过刷新闪存中的存储数据来防止数据丢失,以延长数据的可靠存储时间。具体方法如下:预先设置一个门限,检测闪存中每一个块(block)中的位翻转个数是否超过预先设置的门限,若该块中的位翻转个数超过门限,则对该块进行数据刷新。
这种方法存在如下问题:如果门限值设置得过大,会导致位翻转个数超过ECC的纠错能力,进而导致闪存数据丢失;如果门限值设置得过小,会导致闪存的刷新过于频繁,进而降低闪存的寿命。
因此,如何对闪存中的数据进行刷新,才可以既能避免数据丢失,又不降低闪存的寿命,成为亟待解决的技术问题。
发明内容
本申请提供了一种闪存的数据刷新方法及相关装置,提高了位翻转门限的准确度,有效避免数据丢失和提升闪存的寿命。
第一方面,本申请提供一种闪存的数据刷新方法,所述方法包括:获取第一擦写区域的纠错码ECC的纠错能力信息、所述第一擦写区域的最大擦写次数信息、所述闪存的温度信息、所述第一擦写区域的位翻转信息和所述第一擦写区域的擦写次数信息,所述纠错能力信息用于指示所述ECC能够纠正所述第一擦写区域中的最大位翻转数量,所述最大擦写次数信息用于指示所述第一擦写区域允许擦写的最大次数,所述位翻转信息用于指示所述第一擦写区域当前的位翻转数量,所述擦写次数信息用于指示所述第一擦写区域已经擦写的次数;根据所述温度信息、所述擦写次数信息、所述最大擦写次数信息和所述纠错能力信息计算位翻转门限;所述位翻转信息中的位翻转数量大于或等于所述位翻转门限的情况下,对所述第一擦写区域进行数据刷新。
本方法中,根据第一擦写区域的擦写次数、最大擦写次数、ECC的纠错能力和闪存的温度等第一擦写区域当前的实际状态信息计算位翻转门限,在第一擦写区域的位翻转数量大于或等于位翻转门限的情况下,对第一擦写区域进行数据刷新,使得第一擦写区域的位翻转门限可以根据第一擦写区域当前的状态信息及时做出调整,提高了位翻转门限的准确度;根据该位翻转门限对第一擦写区域进行数据刷新,有效避免了数据丢失,提高了闪存中数据的可靠性,提升了闪存的寿命。
在一种可能的实现方式中,所述第一擦写区域为块。
在一种可能的实现方式中,所述闪存的温度信息包括所述闪存耦合的中央处理器CPU的温度信息。
在一种可能的实现方式中,所述获取第一擦写区域的纠错码ECC的纠错能力信息、所述第一擦写区域的最大擦写次数信息、所述闪存的温度信息、所述第一擦写区域的位翻转信息和所述第一擦写区域的擦写次数信息之前,所述方法还包括:确定所述CPU处于空闲状态。
该实现方式中,在获取第一擦写区域的纠错码ECC的纠错能力信息、最大擦写次数信息、位翻转信息、擦写次数信息和闪存的温度信息之前确定闪存的CPU处于空闲状态,使得执行计算位翻转门限和数据刷新操作时CPU处于空闲状态,提高了计算位翻转门限和数据刷新的效率。
在一种可能的实现方式中,所述方法还包括:将所述第一擦写区域的位翻转信息中的位翻转数量重置为0;记录所述更新后的擦写次数信息。
该实现方式中,将第一擦写区域的位翻转信息中的位翻转数量重置为0,避免了第一擦写区域的位翻转数量超过第一擦写区域的ECC的纠错能力导致的数据丢失的情况;记录更新后的擦写次数信息,避免了第一擦写区域的擦写次数超过第一擦写区域的最大擦写次数导致无法进行擦写操作的情况。
在一种可能的实现方式中,所述对所述第一擦写区域进行数据刷新,包括:根据所述ECC对所述第一擦写区域中的数据进行纠错;
所述将所述第一擦写区域的位翻转信息中的位翻转数量重置为0,包括:对所述纠错后的数据进行备份,得到备份数据;擦除所述第一擦写区域中的数据;更新所述第一擦写区域的擦写次数信息;将所述纠错后的数据重新写入所述第一擦写区域;擦除所述备份数据。
该实现方式中,使用备份区备份ECC纠错后的数据再回写至第一擦写区域,起到了断电保护的作用。
在一种可能的实现方式中,所述记录所述更新后的擦写次数信息,包括:将所述更新后的擦写次数信息写入所述第一擦写区域的带外存储OOB区中。
该实现方式中,使用第一擦写区域中的OOB区来存储擦写次数,一方面不需要额外的存储空间,提高了空间利用率;另一方面,避免了使用额外空间存储第一擦写区域的擦写次数,额外的空间因擦写次数更新而频繁擦写导致的存储的擦写次数不可靠的情况,提高了闪存的可靠性。
第二方面,本申请提供一种闪存的数据刷新装置,所述装置可以包括用于实现第一方面中的方法的各个模块,这些模块可以通过软件和/或硬件的方式实现。
第三方面,本申请提供一种闪存的数据刷新装置,该装置可以包括与存储器耦合的处理器。其中,该存储器用于存储程序代码,该处理器用于执行该存储器中的程序代码,以实现第一方面或其中任意一种实现方式中的方法。
可选地,该装置还可以包括该存储器。
第四方面,本申请提供一种芯片,包括至少一个处理器和通信接口,所述通信接口和所述至少一个处理器通过线路互联,所述至少一个处理器用于运行计算机程序或指令,以执行如第一方面或其中任意一种可能的实现方式所述的方法。
第五方面,本申请提供一种计算机可读介质,该计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行如第一方面或其中任意一种可能的实现方式所述的方法。
第六方面,本申请提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行如第一方面或其中任意一种可能的实现方式所述的方法。
附图说明
图1为一种闪存位翻转的示意图;
图2为一种数据刷新的方法的流程示意图;
图3为本申请的实施例的一种系统架构的示意图;
图4为本申请的实施例的一种闪存的数据刷新的方法的流程示意图;
图5为本申请一个实施例的闪存的数据刷新方法的流程示意图;
图6为本申请一个实施例的闪存的数据刷新装置的示意性结构图;
图7为本申请一个实施例提供的闪存的数据刷新装置的结构示意图。
具体实施方式
下面将结合本申请的实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为一种闪存位翻转的示意图,如图1所示,闪存颗粒可以包括引导(boot)区、系统(system)区和数据(data)区等,每个区中可以包括N个块,N为大于或等于0的正整数。每个区中存储有不同类型的数据,例如,引导区和系统区中存储有系统镜像数据等。每个区中的数据存储于该区的块中。闪存中的数据经过长时间存储后会发生位翻转,例如,闪存中的数据的某一位由“0”翻转为“1”或由“1”翻转为“0”。当位翻转数目小于ECC纠错能力时,位翻转可以通过ECC纠错来解决,但是每个闪存的ECC纠错能力是有限的,通常是几比特(bit)到二十多bit每512字节(byte),当位翻转数目超过ECC纠错能力时,会导致数据丢失,若引导区和系统区中存储的系统镜像数据发生数据丢失,则会导致设备开机失败。
为了避免上述闪存中的存储数据的位翻转数目超过ECC纠错能力而导致数据丢失的情况,可以在闪存中的存储数据的位翻转数目未超过ECC纠错能力时进行数据刷新操作,以消除闪存中的存储数据已经发生位翻转的数量,将位翻转数目重置为0。
现有技术中,预先设置一个位翻转门限,该位翻转门限小于闪存中块的ECC的纠错能力。当闪存中某一个块中的数据的位翻转数目超过该位翻转门限,则对该块进行数据刷新,以消除该块中的数据已经发生的位翻转数量,数据刷新完成后,该块中的数据的位翻转数目为0。
图2为一种数据刷新的方法的流程示意图,如图2所示,当闪存中某一个块中的数据的位翻转数目超过预设的位翻转门限后,对该块中的数据进行数据刷新操作的方法至少包括S201至S203。
S201,使用ECC对发生位翻转的数据进行纠错,得到正确的数据。
在ECC的纠错能力范围内,ECC可以对块中发生的位翻转进行纠错,例如,将“1”纠正为“0”或将“0”纠正为“1”,得到正确的数据。
S202,将该块中的数据擦除并将该块中所有的数据位置“1”。
示例性的,将该块中纠错后得到的正确的数据擦除并备份至除该块外的另一个块中,并将擦除正确的数据后的块中的所有数据位置“1”,消除了该块中已经发生的位翻转数目。
S203,将正确的数据重新写入该块中。
将存储于另一个块中的该块的正确的数据重新写入该块中,此时该块中的数据已经发生的位翻转数目为0,该块的数据刷新完成。
由此可见,位翻转门限对闪存中数据的可靠性具有非常重要的影响。位翻转门限过低,可能导致数据刷新次数过多,造成资源浪费;位翻转门限过高,则可能出现因某一次位翻转个数较多而超过ECC纠错能力导致的数据丢失问题。
闪存的数据保持能力与擦写次数和工作温度等因素强相关,擦写次数越多、工作温度越高,闪存的数据保持能力越弱,存储于闪存中的数据越容易出现位翻转。但是,现有技术中的位翻转门限仅凭经验设置,并且在不同情况下使用相同的位翻转门限,没有考虑闪存的擦写次数和工作温度等因素,使得设置的位翻转门限准确度较低,无法有效避免闪存的数据丢失。
示例性的,闪存的系统区的某一个块中存储有系统镜像数据,该块中ECC能够纠正10个位翻转,设置的位翻转门限为10,长时间存储后,该块中已经有9个位翻转,由于未达到位翻转门限10,故不执行数据刷新,此时若该块擦写次数已经接近其最大擦写能力,该闪存在高温环境中工作,一次性出现了2个位翻转,超过了目前ECC的纠错能力,数据刷新也无法获得正确的数据,造成了数据丢失。当安装有该闪存的设备再一次上电开机时,由于系统区中系统镜像数据发生了数据丢失,使得校验失败,造成设备无法开机。
针对上述现有技术存在的问题,本申请提出了一种闪存的数据刷新的方法,根据闪存中ECC的纠错能力和/或闪存的温度等第一擦写区域当前的实际状态信息计算位翻转门限,在第一擦写区域的位翻转数量大于或等于位翻转门限的情况下,对第一擦写区域进行数据刷新,使得第一擦写区域的位翻转门限可以根据第一擦写区域当前的状态信息及时做出调整,提高了位翻转门限的准确度;根据该位翻转门限对第一擦写区域进行数据刷新,有效避免了数据丢失,提高了闪存中数据的可靠性,提升了闪存的寿命。
本申请提出的技术方案的一种示例性场景为需要数据长期存储不变的嵌入式场景,闪存能够自适应根据当前的实际状态信息判断是否需要执行数据刷新的操作,从而避免固定门限数据刷新机制中的缺陷,保证存储数据的可靠性。
示例性的,本申请的技术方案可以应用于采用闪存作为非易失性数据存储设备的车载电子设备。该设备的镜像数据可以包括引导区镜像数据、系统区镜像数据和数据区数据等。随着车辆的使用,该车载电子设备存储在闪存上的镜像数据慢慢出现越来越多的位翻转,假设其中一个块的数据出现最多的位翻转,已经到达其ECC最大纠错能力减1,此时系统镜像数据还能正常从闪存中读出,设备也可以正常开机;随着夏季来临,车辆环境温度升高,加上车辆发动机自身散热,导致设备环境温度非常高,在现有技术中由于预设门限非常高,且在任何情况下位翻转门限不变,故此时并不会对该块进行数据刷新处理;车辆在正常工作时,或者熄火后都可能出现该块又发生2个位翻转;这样下次车辆打火启动后,该电子设备由于闪存中该存储有系统镜像数据的块的位翻转个数超过ECC纠错能力造成的数据丢失而无法开机,从而无法正常工作。若使用本申请提供的技术方案,针对闪存当前的实际状态信息及时调整位翻转门限,对车载电子设备中的数据进行数据刷新,可以保证车载电子设备在任何情况下不会出现数据丢失,依然能正常工作。
经过分析发现,闪存中ECC的纠错能力和发生位翻转的原因与闪存的状态信息强相关。例如,闪存当前的工作温度越高越容易发生位翻转现象;闪存擦写的次数越多,闪存中ECC的纠错能力越弱,即闪存中ECC能够纠正的位翻转的数目越少。
基于上述分析,本申请提出的技术方案中,根据闪存中第一擦写区域的擦写次数、最大擦写次数、ECC的纠错能力和当前的工作温度计算第一擦写区域的位翻转门限。并且,容易得到的是,闪存已经擦写的次数越多,位翻转门限越低;闪存当前的工作温度越高,位翻转门限越低。
另外,为了提高闪存计算位翻转门限的效率,本申请提出如下的技术方案:在闪存计算第一擦写区域的位翻转门限之前,判断闪存中的中央处理器(central processingunit,CPU)是否处于空闲状态,在CPU处于空闲状态时,才进行计算第一擦写区域的位翻转门限操作。
进一步地,为了提高闪存的空间利用率,本申请提出的技术方案中,将第一擦写区域的擦写次数存储于第一擦写区域的带外存储(out of band,OOB)区域,一方面不需要占用额外的存储空间,提高了空间利用率;另一方面,避免了使用额外空间存储第一擦写区域的擦写次数,额外的空间因擦写次数更新而频繁擦写导致的存储的擦写次数不可靠,提高了闪存的可靠性。
图3为本申请的实施例的一种系统架构的示意图,如图3所示,与非型闪存300包括中央处理器301、双倍数据率同步动态随机存取存储器(double data rate synchronousdynamic random access memory,DDR SDRAM)302、闪存颗粒303、闪存控制器304、温敏电阻305和块扫描模块306。
闪存颗粒303主要用于存储非易失性数据,例如系统镜像数据和文件数据等。
闪存控制器304用于接收CPU的指令,从闪存颗粒303中读取或写入数据,并对数据进行ECC纠错,另外,闪存控制器负责对闪存颗粒303中的OOB区进行读写。
温敏电阻305用于获取当前设备的工作温度。
块扫描模块306用于读取闪存中的数据,从闪存控制器304中获取到每个块的位翻转信息、ECC能力信息、擦写次数信息以及温度信息,判断该块是否需要进行数据刷新操作以消除位翻转。
可以理解的是,图3所示的系统架构仅是本申请提供的与非型闪存的一种示例,在本申请另一些实施例中,与非型闪存300可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或软件和硬件的组合实现。
图4为本申请的实施例的一种闪存的数据刷新的方法的流程示意图,如图4所示,该方法至少包括S401至S403。
S401,获取第一擦写区域的ECC的纠错能力信息、最大擦写次数信息、位翻转信息、擦写次数信息和闪存的温度信息,纠错能力信息用于指示ECC能够纠正第一擦写区域中的最大位翻转数量,最大擦写次数信息用于指示第一擦写区域允许擦写的最大次数,位翻转信息用于指示第一擦写区域当前的位翻转数量,擦写次数信息用于指示第一擦写区域已经擦写的次数。
在一种可能的实现方式中,第一擦写区域可以为块,获取第一块的ECC的纠错能力信息、最大擦写次数信息、位翻转信息、擦写次数信息和闪存的温度信息,纠错能力信息用于指示ECC能够纠正第一块中的最大位翻转数量,最大擦写次数信息用于指示第一块允许擦写的最大次数,位翻转信息用于指示第一块当前的位翻转数量,擦写次数信息用于指示第一块已经擦写的次数。闪存的温度信息包括闪存耦合的CPU的温度信息。
示例性的,从闪存寄存器中获取闪存的ECC纠错能力为8比特/512字节,每个页(page)是2048字节,即每页的ECC纠错能力为32比特/页;闪存中每个块的最大擦写次数为6万次;从热敏电阻获取当前CPU的工作温度信息85摄氏度;从闪存控制器中获取第一块的位翻转数目为31比特,从第一块的OOB中的获取第一块的擦写次数为20000次。
在获取第一擦写区域的纠错码ECC的纠错能力信息、第一擦写区域的最大擦写次数信息、闪存的温度信息、第一擦写区域的位翻转信息和第一擦写区域的擦写次数信息之前,需要确定CPU处于空闲状态。
示例性的,当CPU占用率小于预先设置的占用率门限时,确定CPU处于空闲状态。
优选的,占用率门限为20%。
S402,根据温度信息、擦写次数信息、最大擦写次数信息和纠错能力信息计算位翻转门限。
根据CPU的温度信息、第一擦写区域的擦写次数信息、最大擦写次数信息和纠错能力信息可以计算第一擦写区域的位翻转门限。
示例性的,根据温度信息、擦写次数信息、最大擦写次数信息和纠错能力信息计算位翻转门限的方法可以如下式所示:
Threahold=Func(Tt,ec,Tpe,Tecc)
Figure BDA0003047257380000061
Figure BDA0003047257380000062
其中,Threahold表示位翻转门限,Tt表示当前CPU的温度值,Tecc表示第一擦写区域的ECC的纠错能力,即第一擦写区域的ECC能够纠正的位翻转的个数,ec表示第一擦写区域已经擦写的次数,Tpe表示第一擦写区域的最大擦写次数,Ea、α和β为经验参数,Ea表示析出故障的耗费能量,K表示玻尔茨曼常数,Tu表示常温温度,Tt和Tu的单位均为开尔文。
需要说明的是,从本申请提供的位翻转门限的计算方法可以得到,第一擦写区域当前的温度越高,位翻转门限越低;第一擦写区域已经发生擦写的次数越多,位翻转门限越低。
S403,位翻转信息中的位翻转数量大于或等于位翻转门限的情况下,对第一擦写区域进行数据刷新。
第一擦写区域的位翻转门限计算完成后,需要判断获取的第一擦写区域的位翻转信息中的位翻转数量是否大于或等于位翻转门限,若第一擦写区域的位翻转信息中的位翻转数量小于位翻转门限,则不进行数据刷新操作;若第一擦写区域的位翻转信息中的位翻转数量大于或等于位翻转门限,则对第一擦写区域进行数据刷新操作。
示例性的,对第一擦写区域进行数据刷新可以包括以下步骤:
步骤一,根据ECC对第一擦写区域中的数据进行纠错。
在ECC的纠错能力范围内,ECC可以对块中发生的位翻转进行纠错,例如,将“1”纠正为“0”或将“0”纠正为“1”。
步骤二,对纠错后的数据进行备份,得到备份数据。
在一种的可能的实现方式中,在闪存中划分一个备份区,将根据ECC纠错后的数据在备份区进行备份,得到备份数据。
可选的,将备份区可以分为两个块,第一块用于备份纠错后的数据,另一个块用于备份第一擦写区域的身份编码。
步骤三,擦除第一擦写区域中的数据。
示例性的,在第一擦写区域中的数据备份完成以后,将第一擦写区域中的数据擦除,并将第一擦写区域中的所有数据位置“1”。此时,第一擦写区域的位翻转信息中的位翻转数量将被重置为0。
步骤四,更新第一擦写区域的擦写次数信息。
示例性的,将第一擦写区域的擦写次数信息中的擦写次数加1。
步骤五,将纠错后的数据重新写入第一擦写区域并记录更新后的擦写次数信息。
将备份于备份区中的第一擦写区域的纠错后的数据重新写入第一擦写区域中,并在第一擦写区域中记录更新后的擦写次数信息。
优选的,将更新后的擦写次数信息写入第一擦写区域的OOB区中。
步骤六,擦除备份区中的备份数据。
将备份区中的第一擦写区域的纠错后的数据和第一擦写区域的身份编码擦除。
在完成上述数据刷新操作后,第一擦写区域的位翻转信息中的位翻转数目为0。
本申请提出的技术方案中,根据第一擦写区域的擦写次数信息、最大擦写次数信息、纠错能力信息和闪存的温度信息计算位翻转门限,当第一擦写区域的位翻转数目大于或等于该位翻转门限时,对第一擦写区域进行数据刷新,提高了位翻转门限的准确度,避免了数据丢失;另外,将第一擦写区域的擦写次数信息存储于第一擦写区域的OOB区中,提高了存储空间的利用率,确保了数据和擦写次数信息的存储可靠性。
图5为本申请一个实施例的闪存的数据刷新方法的流程示意图,如图5所示,该方法至少包括S501至S512。
S501,获取闪存的ECC的纠错能力信息、最大擦写次数信息和CPU的温度信息,纠错能力信息用于指示ECC能够纠正每个块中的最大位翻转数量,最大擦写次数信息用于指示每个块允许擦写的最大次数。
示例性的,从闪存寄存器中获取闪存的ECC纠错能力为8比特/512字节,每个页包括2048字节,即每页的ECC纠错能力为32比特/页,闪存中每个块的最大擦写次数为6万次;从热敏电阻获取当前CPU的工作温度信息85摄氏度。
S502,确定CPU处于空闲状态。
在对闪存中的块进行扫描之前,需要确定此时CPU处于空闲状态。
示例性的,当CPU占用率小于预先设置的占用率门限时,确定CPU处于空闲状态。
优选的,占用率门限为20%。
S503,初始化开始扫描的块对应的身份编码,根据身份编码从小到大的顺序对闪存中的块进行扫描。
示例性的,闪存中包括20个块,20个块中每一个块对应一个身份编码,身份编码依次为1至20中的整数值,从身份编码为1的块开始扫描,依次对闪存中的20个块执行如下操作。
S504,获取当前块的存储数据、位翻转信息和擦写次数信息,位翻转信息用于指示块当前的位翻转数量,擦写次数信息用于指示块已经擦写的次数。
示例性的,当前块的身份编码为10,从闪存控制器中获取身份编码为10的块的位翻转数目为31比特,从身份编码为10的块的OOB中的获取该块的擦写次数为20000次。
S505,根据当前块的擦写次数信息、最大擦写次数信息、纠错能力信息和CPU的温度信息计算当前块的位翻转门限。
示例性的,根据S501和S504中获取的身份编码为10的块的擦写次数信息、最大擦写次数信息、纠错能力信息和CPU的温度信息计算身份编码为10的块的位翻转门限。
需要说明的是,当前块的位翻转门限的计算方法可以参考S402,此处不再进行赘述。
S506,判断当前块的位翻转信息中的位翻转数量是否大于或等于当前块的位翻转门限。
若是,则执行S507;
若否,则执行S502。
S507,使用ECC对当前块中的数据进行纠错。
在当前块的ECC的纠错能力范围内,ECC可以对当前块中发生的位翻转进行纠错,例如,将“1”纠正为“0”或将“0”纠正为“1”。
S508,将当前块中的纠错后的数据和当前块对应的身份编号在备份区进行备份,得到备份数据。
示例性的,当前块的身份编码为10,将身份编码为10的块中的纠错后的数据和身份编码10存储在备份区中。
备份数据包括当前块中的纠错后的数据和当前块对应的身份编码。
S509,擦除当前块中的数据。
S510,更新当前块的擦写次数信息。
S511,将当前块的纠错后的数据和更新后的擦写次数信息重新写入当前块中。
S512,擦除备份数据。
需要说明的是,S509至S512可以参考S403中的数据刷新方法,此处不再进行赘述。
当当前块执行完上述操作后,对当前块的身份编码加1后对应的块继续执行S502至S512,直到对该闪存中的所有块扫描完毕为止。
本申请提出的技术方案中,根据当前块的擦写次数信息、最大擦写次数信息、纠错能力信息和CPU的温度信息计算当前块的位翻转门限,当当前块的位翻转数目大于或等于当前块的位翻转门限时,对当前块进行数据刷新,提高了位翻转门限的准确度,避免了数据丢失;将当前块的擦写次数信息存储于当前块的OOB区中,提高了存储空间的利用率,确保了数据和擦写次数信息的存储可靠性;另外,在确定闪存的CPU处于空闲状态时才对闪存中的块进行扫描,提高了扫描效率,有利于节省资源。
图6为本申请一个实施例的闪存的数据刷新装置的示意性结构图。如图6所示,装置600可以包括获取模块601、处理模块602和刷新模块603。
图6所示的数据刷新装置可以为图3所示的本申请的实施例的系统架构图中的块扫描模块306。
本申请实施例中的获取模块、处理模块和刷新模块中任意模块可以全部或部分通过软件和/硬件方式实现。其中,通过软件实现的部分可以在处理器上运行以实现相应的功能,通过硬件方式实现的部分可以是处理器的构成部分。
在一种实现方式中,装置600可以用于实现上述图4所示的方法。例如,获取模块601用于实现S401,处理模块602用于实现S402,刷新模块60用于实现S403。
在另一种实现方式中,装置600还可以包括判断模块和扫描模块。该实现方式中的装置600可以用于实现上述图5所示的方法。例如,获取模块601用于实现S501和S504,处理模块602用于实现S505,刷新模块603用于实现S507至S512,判断模块用于实现S502和S506,扫描模块用于实现S503。
图7为本申请一个实施例提供的闪存的数据刷新装置的结构示意图。图7所示的装置700可以用于执行前述任意一个实施例所述的方法。
图7所示的数据刷新装置可以用于实现图3所示的本申请的实施例的系统架构图中的块扫描模块306所对应的功能。
如图7所示,本实施例的装置700包括:存储器701、处理器702、通信接口703以及总线704。其中,存储器701、处理器702、通信接口703通过总线704实现彼此之间的通信连接。
存储器701可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器701可以存储程序,当存储器701中存储的程序被处理器702执行时,处理器702可以用于执行图4和图5所示的方法的各个步骤。
处理器702可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本申请方法实施例的闪存的数据刷新方法。
处理器702还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请各个实施例的方法的各个步骤可以通过处理器702中的硬件的集成逻辑电路或者软件形式的指令完成。
上述处理器702还可以是通用处理器、数字信号处理器(digital signalprocessing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器701,处理器702读取存储器701中的信息,结合其硬件完成本申请实施例中各个方法所需执行的功能,例如,可以执行图4和图5所示实施例的各个步骤/功能。
通信接口703可以使用但不限于收发器一类的收发装置,来实现装置700与其他设备或通信网络之间的通信。
总线704可以包括在装置700各个部件(例如,存储器701、处理器702、通信接口703)之间传送信息的通路。
应理解,本申请实施例所示的装置700可以是电子设备,或者,也可以是配置于电子设备中的芯片。
应理解,本申请实施例中的处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random accessmemory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (12)

1.一种闪存的数据刷新方法,其特征在于,所述方法包括:
获取第一擦写区域的纠错码ECC的纠错能力信息、所述第一擦写区域的最大擦写次数信息、所述闪存的温度信息、所述第一擦写区域的位翻转信息和所述第一擦写区域的擦写次数信息,所述纠错能力信息用于指示所述ECC能够纠正所述第一擦写区域中的最大位翻转数量,所述最大擦写次数信息用于指示所述第一擦写区域允许擦写的最大次数,所述位翻转信息用于指示所述第一擦写区域当前的位翻转数量,所述擦写次数信息用于指示所述第一擦写区域已经擦写的次数;
根据所述温度信息、所述擦写次数信息、所述最大擦写次数信息和所述纠错能力信息计算位翻转门限;
所述位翻转信息中的位翻转数量大于或等于所述位翻转门限的情况下,对所述第一擦写区域进行数据刷新。
2.根据权利要求1所述的方法,其特征在于,所述第一擦写区域为块。
3.根据权利要求1或2所述的方法,其特征在于,所述闪存的温度信息包括所述闪存耦合的中央处理器CPU的温度信息。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述获取第一擦写区域的纠错码ECC的纠错能力信息、所述第一擦写区域的最大擦写次数信息、所述闪存的温度信息、所述第一擦写区域的位翻转信息和所述第一擦写区域的擦写次数信息之前,所述方法还包括:
确定所述CPU处于空闲状态。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:
将所述第一擦写区域的位翻转信息中的位翻转数量重置为0;
记录所述更新后的擦写次数信息。
6.根据权利要求5所述的方法,其特征在于,所述对所述第一擦写区域进行数据刷新,包括:
根据所述ECC对所述第一擦写区域中的数据进行纠错;
所述将所述第一擦写区域的位翻转信息中的位翻转数量重置为0,包括:
对所述纠错后的数据进行备份,得到备份数据;
擦除所述第一擦写区域中的数据;
更新所述第一擦写区域的擦写次数信息;
将所述纠错后的数据重新写入所述第一擦写区域;
擦除所述备份数据。
7.根据权利要求5或6所述的方法,其特征在于,所述记录所述更新后的擦写次数信息,包括:
将所述更新后的擦写次数信息写入所述第一擦写区域的带外存储OOB区中。
8.一种闪存的数据刷新装置,其特征在于,包括用于实现权利要求1至7中任一项所述的方法的各个功能模块。
9.一种闪存的数据刷新装置,其特征在于,包括:存储器和处理器;
所述存储器用于存储程序指令;
所述处理器用于调用所述存储器中的程序指令执行如权利要求1至7中任一项所述的方法。
10.一种芯片,其特征在于,包括至少一个处理器和通信接口,所述通信接口和所述至少一个处理器通过线路互联,所述至少一个处理器用于运行计算机程序或指令,以执行如权利要求1至7中任一项所述的方法。
11.一种计算机可读介质,其特征在于,所述计算机可读介质存储用于计算机执行的程序代码,该程序代码包括用于执行如权利要求1至7中任一项所述的方法的指令。
12.一种计算机程序产品,其特征在于,所述计算机程序产品包括指令,当所述指令被执行时,使得计算机执行权利要求1至7中任一项所述的方法。
CN202110476498.9A 2021-04-29 2021-04-29 闪存的数据刷新方法及相关装置 Pending CN115269256A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110476498.9A CN115269256A (zh) 2021-04-29 2021-04-29 闪存的数据刷新方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110476498.9A CN115269256A (zh) 2021-04-29 2021-04-29 闪存的数据刷新方法及相关装置

Publications (1)

Publication Number Publication Date
CN115269256A true CN115269256A (zh) 2022-11-01

Family

ID=83744813

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110476498.9A Pending CN115269256A (zh) 2021-04-29 2021-04-29 闪存的数据刷新方法及相关装置

Country Status (1)

Country Link
CN (1) CN115269256A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116992504A (zh) * 2023-09-26 2023-11-03 合肥联宝信息技术有限公司 一种固态硬盘的数据保护方法、电子设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116992504A (zh) * 2023-09-26 2023-11-03 合肥联宝信息技术有限公司 一种固态硬盘的数据保护方法、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US8261136B2 (en) Method and device for selectively refreshing a region of a memory of a data storage device
US7843732B2 (en) Methods of operating multi-bit flash memory devices and related systems
US8473815B2 (en) Methods and systems of a flash memory controller and an error correction code (ECC) controller using variable-length segmented ECC data
US8732553B2 (en) Memory system and control method thereof
TWI515742B (zh) 偵測不穩定記憶胞之分佈的記憶體系統與方法
US9229851B2 (en) Memory controller, semiconductor memory device and control method thereof
US9025374B2 (en) System and method to update read voltages in a non-volatile memory in response to tracking data
US10762972B2 (en) Method and apparatus for processing data in flash memory
US20120317463A1 (en) Memory controller
TWI512742B (zh) 非揮發性快閃記憶體擦除異常存儲塊修復方法和裝置
US20120163097A1 (en) Memory device, memory control method, and program
JP2003076615A (ja) 不揮発性半導体記憶装置
CN110096385B (zh) 存储器系统及其操作方法
JP2008192267A (ja) ビットエラーの予防方法、情報処理装置
WO2018163258A1 (ja) フラッシュメモリモジュール、ストレージシステム、及びフラッシュメモリの制御方法
US10474530B2 (en) Data storage method for detecting data storage device and its data storage device
US20210303214A1 (en) Memory system and information processing system
US11138070B2 (en) Memory system and method performed thereby
US20180277227A1 (en) Semiconductor memory device and read control method thereof
JP2014229216A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
US9043675B2 (en) Storage device
TWI682275B (zh) 資料儲存裝置及其操作方法
JP2019192316A (ja) 不揮発性記憶装置、メモリ制御装置、及びメモリ制御方法
CN115269256A (zh) 闪存的数据刷新方法及相关装置
US10735030B2 (en) Re-encoding data associated with failed memory devices

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination