CN108280029B - 一种基于NorFlash芯片的数据擦写方法及系统 - Google Patents
一种基于NorFlash芯片的数据擦写方法及系统 Download PDFInfo
- Publication number
- CN108280029B CN108280029B CN201810166301.XA CN201810166301A CN108280029B CN 108280029 B CN108280029 B CN 108280029B CN 201810166301 A CN201810166301 A CN 201810166301A CN 108280029 B CN108280029 B CN 108280029B
- Authority
- CN
- China
- Prior art keywords
- sector
- sub
- physical sub
- data
- erasing
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000013507 mapping Methods 0.000 claims description 16
- 238000005192 partition Methods 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 5
- 238000005299 abrasion Methods 0.000 description 4
- 201000002266 mite infestation Diseases 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000002035 prolonged effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (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
本申请公开了一种基于NorFlash芯片的数据擦写方法,所述数据擦写方法包括:当检测到需要向目标物理子扇区写入的待写入数据时,查询目标物理子扇区的第一擦写情况,并计算所有物理子扇区的第二擦写情况;基于数理统计根据第一擦写情况和第二擦写情况判断目标物理子扇区是否符合预设条件;若是,则将待写入数据写入目标物理子扇区;若否,则将所有物理子扇区中实际擦写次数最少的物理子扇区设置为最佳物理子扇区,并将待写入数据写入最佳物理子扇区。本方法能够实现NorFlash芯片中各个扇区的均衡擦写,延长NorFlash芯片的使用寿命。本申请还公开了一种基于NorFlash芯片的数据擦写系统,具有以上有益效果。
Description
技术领域
本发明涉及数据存储领域,特别涉及一种基于NorFlash芯片的数据擦写方法及系统。
背景技术
因NorFlash芯片允许片内直接运行应用程序,较高的传输效率和成本效益及掉电数据不丢失的特性,因此很多嵌入式产品将NorFlash芯片作为应用程序和重要数据的存储设备。
根据flash的编程原理都是只能将1写为0,而不能将0写为1,所以在flash编程之前都需要首先擦除对应存储单元的数据,目前flash芯片提供的擦除方式包括扇区擦除(Sector Erase)和片擦除(Chip Erase)两种,因此若向某个flash存储单元中写入数据之前,必须首先将该存储单元所在的扇区进行擦除,擦除之后再将需要写入的数据逐一写入该扇区。
现有技术中,通过记录扇区擦写时标实现各扇区均衡的方法来进行NorFlash芯片的数据擦写,但是这种方法在针对当系统发生回向校时的情况,极易造成扇区内记录的擦写时标的不准确性,发生回向校时跨度比较大的时候,使得某扇区的擦写过于频繁,违背了扇区均衡擦写的初衷,若发生回向校时更新每个扇区时标,需要擦写每个扇区,消耗时间比较长,此时一旦系统发生异常断电,极易造成flash数据丢失。
因此,如何实现NorFlash芯片中各个扇区的均衡擦写,延长NorFlash芯片的使用寿命是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种基于NorFlash芯片的数据擦写方法及系统能够实现NorFlash芯片中各个扇区的均衡擦写,延长NorFlash芯片的使用寿命。
为解决上述技术问题,本申请提供一种基于NorFlash芯片的数据擦写方法,该数据擦写方法包括:
当检测到需要向目标物理子扇区写入的待写入数据时,查询所述目标物理子扇区的第一擦写情况,并计算所有物理子扇区的第二擦写情况;其中,所述第一擦写情况包括所述目标物理子扇区的逻辑写入次数和实际写入次数,所述第二擦写情况包括所有所述物理子扇区的逻辑写入次数的平均值和实际写入次数的平均值、均方根误差、最大值和最小值;
基于数理统计根据所述第一擦写情况和所述第二擦写情况判断所述目标物理子扇区是否符合预设条件;
若是,则将所述待写入数据写入所述目标物理子扇区;
若否,则将所有所述物理子扇区中实际擦写次数最少的物理子扇区设置为最佳物理子扇区,并将所述待写入数据写入所述最佳物理子扇区。
可选的,基于数理统计根据所述第一擦写情况和所述第二擦写情况判断所述目标物理子扇区是否符合预设条件包括:
判断SquareError是否大于误差限制且所述SquareError与EraseMAX和/或EraseMIN之间的差值大于最大允许不均匀度,得到第一判断结果;其中,所述SquareError、所述EraseMAX和所述EraseMIN分别为所有所述物理子扇区的实际写入次数的均方根误差、最大值和最小值;
判断EraseTimes是否等于所述EraseMAX,得到第二判断结果;其中,所述EraseTimes为所述目标物理子扇区的实际写入次数;
判断是否所述EraseTimes大于EraseAVR且LogicTimes大于LogicAVril,得到第三判断结果;其中所述EraseAVR和LogicAVril分别为所有所述物理子扇区的实际写入次数的平均值和逻辑写入次数的平均值,LogicTimes为所述目标物理子扇区的逻辑写入次数;
根据所述第一判断结果、所述第二判断结果和所述第三判断结果判断所述目标物理子扇区是否符合预设条件;其中,所述预设条件为所述第一判断结果、所述第二判断结果和所述第三判断结果均为是。
可选的,在查询所述目标物理子扇区的第一擦写情况,并计算所有物理子扇区的第二擦写情况之前,还包括:
按照预设规则对所述NorFlash芯片进行分区操作;其中,分区后的NorFlash芯片包括用于写入数据的DATA扇区和用于管理所述DATA扇区的所述MANAGE扇区,所述DATA扇区包括逻辑子扇区与所述物理子扇区;所述MANAGE扇区包括用于统计所述DATA扇区的逻辑写入次数的LOGIC_STATIS子扇区、用于统计所述DATA扇区实际写入次数的REAL_ERASE_STATIS子扇区和用于存储所述逻辑扇区与所述物理子扇区之间的映射关系的SECTOR_MAP子扇区;
可选的,在查询所述目标物理子扇区的第一擦写情况,并计算所有物理子扇区的第二擦写情况之前,还包括:
判断所述NorFlash芯片是否为第一次使用;
若是,则对所述MANAGE扇区执行初始化操作。
可选的,对所述MANAGE扇区执行初始化操作包括:
将所述LOGIC_STATIS子扇区中记录的逻辑写入次数初始化为0;
将所述REAL_ERASE_STATIS子扇区中记录的实际擦写次数初始化为0;
更新所述SECTOR_MAP子扇区中记录的映射关系,以使所述DATA扇区的每个子扇区的逻辑编号与物理编号一一对应。
可选的,将所述待写入数据写入所述目标物理子扇区包括:
将所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的原有数据和待写入数据备份至临时文件夹;
擦除所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的所述原有数据;
将所述临时文件夹中的所述待写入数据写入所述目标物理子扇区,并更新所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的数据。
可选的,将所述DATA扇区中实际擦写次数最少的物理子扇区设置为最佳物理子扇区,并将所述待写入数据写入所述最佳物理子扇区包括:
将所述DATA扇区中实际擦写次数最少的物理子扇区设置为最佳物理子扇区;
将所述最佳物理子扇区、所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的原有数据和待写入数据备份至临时文件夹;
擦除所述最佳物理子扇区、所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的所述原有数据;
将所述最佳物理子扇区对应的逻辑扇区映射关系转移至所述目标物理子扇区对应的逻辑扇区,并将所述目标物理子扇区对应的逻辑扇区中的映射关系转移至所述最佳物理子扇区对应的逻辑扇区;
将所述临时文件夹中的所述待写入数据写入所述最佳物理子扇区,并更新所述最佳物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的数据。
可选的,更新所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的数据之后,还包括:
删除所述临时文件夹中的全部数据。
可选的,还包括:
将所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区划分为预设数量个存储单元;
将所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的数据轮流存储至所有所述存储单元中。
本申请还提供了一种基于NorFlash芯片的数据擦写系统,该系统包括:
查询模块,用于当检测到需要向目标物理子扇区写入的待写入数据时,查询所述目标物理子扇区的第一擦写情况,并计算所有物理子扇区的第二擦写情况;其中,所述第一擦写情况包括所述目标物理子扇区的逻辑写入次数和实际写入次数,所述第二擦写情况包括所有所述物理子扇区的逻辑写入次数的平均值和实际写入次数的平均值、均方根误差、最大值和最小值;
判断模块,用于基于数理统计根据所述第一擦写情况和所述第二擦写情况判断所述目标物理子扇区是否符合预设条件;
第一写入模块,用于当所述目标物理子扇区符合所述预设条件时,将所述待写入数据写入所述目标物理子扇区;
第二写入模块,用于当所述目标物理子扇区不符合所述预设条时,将所有所述物理子扇区中实际擦写次数最少的物理子扇区设置为最佳物理子扇区,并将所述待写入数据写入所述最佳物理子扇区。
本发明提供了一种基于NorFlash芯片的数据擦写方法,包括当检测到需要向目标物理子扇区写入的待写入数据时,查询所述目标物理子扇区的第一擦写情况,并计算所有物理子扇区的第二擦写情况;其中,所述第一擦写情况包括所述目标物理子扇区的逻辑写入次数和实际写入次数,所述第二擦写情况包括所有所述物理子扇区的逻辑写入次数的平均值和实际写入次数的平均值、均方根误差、最大值和最小值;基于数理统计根据所述第一擦写情况和所述第二擦写情况判断所述目标物理子扇区是否符合预设条件;若是,则将所述待写入数据写入所述目标物理子扇区;若否,则将所有所述物理子扇区中实际擦写次数最少的物理子扇区设置为最佳物理子扇区,并将所述待写入数据写入所述最佳物理子扇区。
本发明通过比对需要写入待写入数据的目标物理子扇区的第一擦写情况与所有物理子扇区的第二擦写情况,来判断目标物理子扇区是否为当前NorFlash芯片中最适合擦掉原有数据写入待写入数据的物理子扇区。如果第一擦写情况符合预设标准,则说明可以在该目标物理子扇区中进行数据擦写操作,如果第一擦写情况不符合预设标准,则说明一旦在该目标物理子扇区中进行数据擦写操作将会造成NorFlash芯片擦写不均衡的状况,需要再次寻找一个实际擦写次数最少的物理子扇区作为写入待写入数据的物理子扇区。本方案通过根据第一擦写情况与第二擦写情况进行数理统计,将待写入数据写入至能够使NorFlash芯片磨损次数均衡的物理子扇区中,能够实现NorFlash芯片中各个扇区的均衡擦写,延长NorFlash芯片的使用寿命。本申请同时还提供了一种基于NorFlash芯片的数据擦写系统具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种基于NorFlash芯片的数据擦写方法的流程图;
图2为本申请实施例所提供的另一种基于NorFlash芯片的数据擦写方法的流程图;
图3为实际应用中向61个扇区持续写入数据的擦写数据的扇区信息界面截图;
图4为本申请实施例所提供的一种基于NorFlash芯片的数据擦写系统的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面请参见图1,图1为本申请实施例所提供的一种基于NorFlash芯片的数据擦写方法的流程图。
具体步骤可以包括:
S101:当检测到需要向目标物理子扇区写入的待写入数据时,查询所述目标物理子扇区的第一擦写情况,并计算所有物理子扇区的第二擦写情况;其中,所述第一擦写情况包括所述目标物理子扇区的逻辑写入次数和实际写入次数,所述第二擦写情况包括所有所述物理子扇区的逻辑写入次数的平均值和实际写入次数的平均值、均方根误差、最大值和最小值;
其中,本实施例是应用于NorFlash芯片上的数据擦写,NorFlash芯片上存在多个物理子扇区用于存储数据,本步骤中提到的目标物理子扇区可以是所有物理子扇区中的任意一个,而目标物理子扇区的意义在于目标物理子扇区是系统默认需要存储待写入数据的物理子扇区。本步骤的目的在于获取当前的目标物理子扇区与所有物理子扇区的擦写情况。由于NorFlash芯片具有擦写次数有限、先擦后写的特点,若目标物理子扇区的擦写次数不是当前NorFlash芯片所有物理子扇区中擦写次数最小的物理子扇区,则会造成NorFlash芯片擦写不均衡,进而大大缩减了NorFlash芯片的使用寿命。因此,本步骤中通过查询第一擦写情况和计算第二擦写情况来实际了解NorFlash芯片中的所有物理子扇区的平均擦写状况,与目标物理子扇区的当前擦写状况。
本步骤是默认存在检测是否存在待写入数据的步骤,当检测到待写入数据时,由于为了保证了NorFlash芯片的擦写均衡,本步骤没有直接对目标物理子扇区执行擦写操作。因此,可以先将待写入数据存储至临时文件夹中,当确定写入待写入数据的物理子扇区之后,执行相应的数据擦写操作。可以理解的是检测到待写入数据是本步骤的触发条件,作为一种优选的实施方式,可以按照预设周期检测是否存在待写入数据,当然本步骤不对该预设周期进行具体的限定,本领域的技术人员可以根据实际应用情况进行灵活的设置。
S102:基于数理统计根据所述第一擦写情况和所述第二擦写情况判断所述目标物理子扇区是否符合预设条件;若是,则进入S103;若否,则进入S104;
本步骤是建立在S101中已经获得了第一擦写情况和第二擦写情况的基础上进行的,第一擦写情况相当于所有物理子扇区中一个特定的子扇区的擦写程度的评价,第二擦写情况相当于对NorFlash芯片中所有物理子扇区的综合性的评价。由于在物理子扇区中进行擦写操作可以包括逻辑写入和实际写入,因此不能仅仅依据物理子扇区的擦写次数决定目标物理子扇区是否适合写入待写入数据。第一擦写情况包括目标物理子扇区的逻辑写入次数和实际写入次数;第二擦写情况包括所有所述物理子扇区的逻辑写入次数的平均值和实际写入次数的平均值、均方根误差、最大值和最小值,第二擦写情况能够较全面的对NorFlash芯片的磨损程度进行评价。
可以理解的是,本步骤中提到的预设条件是由本领域人员自行设定的,但是该预设条件应该是在综合考虑第一擦写情况与第二擦写情况的前提下设定的,本文将在下一实施例中进行详细的介绍。数理统计是以概率论为基础,研究社会和自然界中大量随机现象数量变化基本规律的一种方法,本步骤中就是基于数理统计来对第一擦写情况和第二擦写情况进行分析,来判断目标物理子扇区是否符合预设条件,此处不对数理统计对目标物理子扇区的逻辑写入次数和实际写入次数、物理子扇区的逻辑写入次数的平均值和实际写入次数的平均值、均方根误差、最大值和最小值如何分析进行具体的限定。
其中,若目标物理子扇区符合预设条件,则说明将待写入数据写入至目标物理子扇区不会影响NorFlash芯片的擦写均衡;若目标物理子扇区不符合预设条件,则说明将待写入数据写入至目标物理子扇区会影响NorFlash芯片的擦写均衡需要重新选择另一个物理子扇区作为最佳物理子扇区进行数据擦写的操作。
S103:将所述待写入数据写入所述目标物理子扇区;
其中,将待写入数据写入目标物理子扇区的操作与现有技术中NorFlash芯片的写入过程基本相同。可以将目标物理子扇区及其相关扇区中的数据及本次需要写入的数据写入临时文件中备份。将目标物理子扇区及其相关扇区中的原有数据暂存至临时文件夹中,再将目标物理子扇区及其相关扇区中的原有数据擦除,将临时文件夹中的数据和待写入数据写入目标物理子扇区中。
S104:将所有所述物理子扇区中实际擦写次数最少的物理子扇区设置为最佳物理子扇区,并将所述待写入数据写入所述最佳物理子扇区。
其中,本步骤是基于S102中判断目标物理子扇区不符合预设条件的情况下,因此可以选择所有所述物理子扇区中实际擦写次数最少的物理子扇区作为最佳物理子扇区,并将待写入数据写入最佳物理子扇区中。当然将待写入数据写入最佳物理子扇区中的相关操作基本与S103中将待写入数据写入目标物理子扇区中的操作基本相同,但是值得注意的是由于更换了待写入数据写入的物理子扇区,因此需要将最佳物理子扇区的映射关系与目标物理子扇区的映射关系相互调换。
本实施例通过比对需要写入待写入数据的目标物理子扇区的第一擦写情况与所有物理子扇区的第二擦写情况,来判断目标物理子扇区是否为当前NorFlash芯片中最适合擦掉原有数据写入待写入数据的物理子扇区。如果第一擦写情况符合预设标准,则说明可以在该目标物理子扇区中进行数据擦写操作,如果第一擦写情况不符合预设标准,则说明一旦在该目标物理子扇区中进行数据擦写操作将会造成NorFlash芯片擦写不均衡的状况,需要再次寻找一个实际擦写次数最少的物理子扇区作为写入待写入数据的物理子扇区。本实施例通过根据第一擦写情况与第二擦写情况进行数理统计,将待写入数据写入至能够使NorFlash芯片磨损次数均衡的物理子扇区中,能够实现NorFlash芯片中各个扇区的均衡擦写,延长NorFlash芯片的使用寿命。
下面请参见图2,图2为本申请实施例所提供的另一种基于NorFlash芯片的数据擦写方法的流程图;在本实施例中对NorFlash芯片的扇区划分进行了具体的解释,其他步骤都基于NorFlash芯片的扇区划分进行了相应的描述,由于本实施例是相对于上一实施例更加具体的描述,因此上一实施例中记载的内容与本申请实施例中的内容可以相互参见,此处不再赘述。
具体步骤可以包括:
S201:按照预设规则对所述NorFlash芯片进行分区操作;
其中,分区后的NorFlash芯片包括用于写入数据的DATA扇区和用于管理所述DATA扇区的所述MANAGE扇区,所述DATA扇区包括逻辑子扇区与所述物理子扇区;所述MANAGE扇区包括用于统计所述DATA扇区的逻辑写入次数的LOGIC_STATIS子扇区、用于统计所述DATA扇区实际写入次数的REAL_ERASE_STATIS子扇区和用于存储所述逻辑扇区与所述物理子扇区之间的映射关系的SECTOR_MAP子扇区;
作为一种优选的实施方式,为了避免MANAGE扇区涉及到的三个子扇区擦写过于频繁,将这三个子扇区按照NorFlash存储容量及扇区个数进行存储单元划分,即:将所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区划分为预设数量个存储单元;将所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的数据轮流存储至所有所述存储单元中。例如:假设NorFlash芯片有60个物理子扇区需要进行管理,每个物理子扇区需要在MANAGE扇区的3个子扇区中各占4个字节的管理信息,则MANAGE扇区的3个子扇区分别需要240个字节的存储空间,以一个扇区64k进行计算,则MANAGE扇区的3个子扇区可以分别划分成273个存储单元,存储的时候这273个存储单元轮流进行管理信息的存储,通过此种方式可以有效减少MANGE扇区的3个子扇区中每个存储单元的擦写磨损。
S202:判断所述NorFlash芯片是否为第一次使用;若是,则进入S203;若否,则进入S204、S205和S206;
S203:对所述MANAGE扇区执行初始化操作。
其中,对所述MANAGE扇区执行初始化操作可以具体为:(1)将所述LOGIC_STATIS子扇区中记录的逻辑写入次数初始化为0;(2)将所述REAL_ERASE_STATIS子扇区中记录的实际擦写次数初始化为0;(3)更新所述SECTOR_MAP子扇区中记录的映射关系,以使所述DATA扇区的每个子扇区的逻辑编号与物理编号一一对应。上述三个子扇区的初始化操作并不存在逻辑上的先后关系,不对其操作顺序进行限定。
S204:判断SquareError是否大于误差限制且所述SquareError与EraseMAX和/或EraseMIN之间的差值大于最大允许不均匀度,得到第一判断结果并进入S207;
其中,所述SquareError为所有所述物理子扇区的实际写入次数的均方根误差,所述EraseMAX为所有所述物理子扇区的实际写入次数的最大值,所述EraseMIN分别为所有所述物理子扇区的实际写入次数的最小值。
S205:判断EraseTimes是否等于所述EraseMAX,得到第二判断结果;其中,所述EraseTimes为所述目标物理子扇区的实际写入次数并进入S207;
S206:判断是否所述EraseTimes大于EraseAVR且LogicTimes大于LogicAVril,得到第三判断结果并进入S207;
其中,所述EraseAVR为所有所述物理子扇区的实际写入次数的平均值,LogicAVril为所有所述物理子扇区的实际写入次数的逻辑写入次数的平均值,LogicTimes为所述目标物理子扇区的逻辑写入次数。
S207:根据所述第一判断结果、所述第二判断结果和所述第三判断结果判断所述目标物理子扇区是否符合预设条件;其中,所述预设条件为所述第一判断结果、所述第二判断结果和所述第三判断结果均为是。若是,则进入S208;若否,则进入S211;
其中,第一判断结果有两种:一种为是,另一种为否;第二判断结果有两种:一种为是,另一种为否;第三判断结果有两种:一种为是,另一种为否。只有第一判断结果、所述第二判断结果和所述第三判断结果均为是的情况下,才可以进入S208,否则进入S211。
S208:将所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的原有数据和待写入数据备份至临时文件夹;
S209:擦除所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的所述原有数据;
S210:将所述临时文件夹中的所述待写入数据写入所述目标物理子扇区,并更新所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的数据;结束流程。
S211:将所有所述物理子扇区中实际擦写次数最少的物理子扇区设置为最佳物理子扇区;
S212:将所述最佳物理子扇区、所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的原有数据和待写入数据备份至临时文件夹;
S213:擦除所述最佳物理子扇区、所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的所述原有数据;
S214:将所述最佳物理子扇区对应的逻辑扇区映射关系转移至所述目标物理子扇区对应的逻辑扇区,并将所述目标物理子扇区对应的逻辑扇区中的映射关系转移至所述最佳物理子扇区对应的逻辑扇区;
S215:将所述临时文件夹中的所述待写入数据写入所述最佳物理子扇区,并更新所述最佳物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的数据;结束流程。
请参见图4,图4为实际应用中向61个扇区持续写入数据的擦写数据的扇区信息界面截图,在实际应用中,例如NorFlash存储容量为4M,每个扇区为64k,去除3个管理子扇区,总共需要管理61个扇区,均方根误差限值为1.0,最大允许不平衡度按照NorFlash芯片最大允许擦写次数(10万次)的1%计算为1000,写入方式为向允许写入扇区中平均写入。若使用现有技术对一个扇区写入数据,在不进行均衡处理的情况下只能擦写10万次,而使用本实施例描述的处理之后,当所有的扇区擦写次数均达到10万次的时候,此时该扇区的擦写次数实际上已经达到600多万次,寿命较之前提高了60倍。
本实施例将数理统计学中涉及到的均方根误差和均值的概念引入flash磨损均衡问题的解决方案中,相对于复杂、晦涩的磨损均衡算法,本方法通俗易懂、易于编程、简单高效,且具有较高的执行效率。通过将NorFlash芯片划分成MANGE扇区和DATA扇区,通过MANGE扇区实现对DATA扇区的有效调度和管理,实现了逻辑子扇区与物理子扇区之间的映射,便于统筹管理。由于本方案对MANGE扇区涉及到的3个扇区按照NorFlash芯片存储容量及扇区个数进行了存储单元的划分,通过将统计数据及映射数据依次分别写入到对应扇区不同的存储单元中,实现了MANGE扇区磨损均衡的自维护,进而使得所有扇区的磨损均衡问题得到了有效解决。此外本方案中引入均方根误差限值和最大允许不均衡度的概念,可以根据系统的不同性能进行配置,实现NorFlash磨损均衡不同程度的调整,使用灵活方便。由于本实施例引入临时文件夹。将待改动的扇区原有数据首先存入临时文件夹中,有效防止了系统异常掉电引起的flash数据丢失问题。
请参见图3,图3为本申请实施例所提供的一种基于NorFlash芯片的数据擦写系统的结构示意图;
该系统可以包括:
查询模块100,用于当检测到需要向目标物理子扇区写入的待写入数据时,查询所述目标物理子扇区的第一擦写情况,并计算所有物理子扇区的第二擦写情况;其中,所述第一擦写情况包括所述目标物理子扇区的逻辑写入次数和实际写入次数,所述第二擦写情况包括所有所述物理子扇区的逻辑写入次数的平均值和实际写入次数的平均值、均方根误差、最大值和最小值;
判断模块200,用于基于数理统计根据所述第一擦写情况和所述第二擦写情况判断所述目标物理子扇区是否符合预设条件;
第一写入模块300,用于当所述目标物理子扇区符合所述预设条件时,将所述待写入数据写入所述目标物理子扇区;
第二写入模块400,用于当所述目标物理子扇区不符合所述预设条时,将所有所述物理子扇区中实际擦写次数最少的物理子扇区设置为最佳物理子扇区,并将所述待写入数据写入所述最佳物理子扇区。
由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种基于NorFlash芯片的数据擦写方法,其特征在于,包括:
当检测到需要向目标物理子扇区写入的待写入数据时,查询所述目标物理子扇区的第一擦写情况,并计算所有物理子扇区的第二擦写情况;其中,所述第一擦写情况包括所述目标物理子扇区的逻辑写入次数和实际写入次数,所述第二擦写情况包括所有所述物理子扇区的逻辑写入次数的平均值和实际写入次数的平均值、均方根误差、最大值和最小值;
基于数理统计根据所述第一擦写情况和所述第二擦写情况判断所述目标物理子扇区是否符合预设条件;
若是,则将所述待写入数据写入所述目标物理子扇区;
若否,则将所有所述物理子扇区中实际写入次数最少的物理子扇区设置为最佳物理子扇区,并将所述待写入数据写入所述最佳物理子扇区。
2.根据权利要求1所述数据擦写方法,其特征在于,基于数理统计根据所述第一擦写情况和所述第二擦写情况判断所述目标物理子扇区是否符合预设条件包括:
判断SquareError是否大于误差限制且所述SquareError与EraseMAX和/或EraseMIN之间的差值大于最大允许不均匀度,得到第一判断结果;其中,所述SquareError、所述EraseMAX和所述EraseMIN分别为所有所述物理子扇区的实际写入次数的均方根误差、最大值和最小值;
判断EraseTimes是否等于所述EraseMAX,得到第二判断结果;其中,所述EraseTimes为所述目标物理子扇区的实际写入次数;
判断是否所述EraseTimes大于EraseAVR且LogicTimes大于LogicAVril,得到第三判断结果;其中,所述EraseAVR和LogicAVril分别为所有所述物理子扇区的实际写入次数的平均值和逻辑写入次数的平均值,LogicTimes为所述目标物理子扇区的逻辑写入次数;
根据所述第一判断结果、所述第二判断结果和所述第三判断结果判断所述目标物理子扇区是否符合预设条件;其中,所述预设条件为所述第一判断结果、所述第二判断结果和所述第三判断结果均不为是。
3.根据权利要求1所述数据擦写方法,其特征在于,在查询所述目标物理子扇区的第一擦写情况,并计算所有物理子扇区的第二擦写情况之前,还包括:
按照预设规则对所述NorFlash芯片进行分区操作;其中,分区后的NorFlash芯片包括用于写入数据的DATA扇区和用于管理所述DATA扇区的MANAGE扇区,所述DATA扇区包括逻辑子扇区与所述物理子扇区;所述MANAGE扇区包括用于统计所述DATA扇区的逻辑写入次数的LOGIC_STATIS子扇区、用于统计所述DATA扇区实际写入次数的REAL_ERASE_STATIS子扇区和用于存储所述逻辑子扇区与所述物理子扇区之间的映射关系的SECTOR_MAP子扇区。
4.根据权利要求3所述数据擦写方法,其特征在于,在查询所述目标物理子扇区的第一擦写情况,并计算所有物理子扇区的第二擦写情况之前,还包括:
判断所述NorFlash芯片是否为第一次使用;
若是,则对所述MANAGE扇区执行初始化操作。
5.根据权利要求4所述数据擦写方法,其特征在于,对所述MANAGE扇区执行初始化操作包括:
将所述LOGIC_STATIS子扇区中记录的逻辑写入次数初始化为0;
将所述REAL_ERASE_STATIS子扇区中记录的实际写入次数初始化为0;
更新所述SECTOR_MAP子扇区中记录的映射关系,以使所述DATA扇区的每个子扇区的逻辑编号与物理编号一一对应。
6.根据权利要求3所述数据擦写方法,其特征在于,将所述待写入数据写入所述目标物理子扇区包括:
将所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的原有数据和待写入数据备份至临时文件夹;
擦除所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的所述原有数据;
将所述临时文件夹中的所述待写入数据写入所述目标物理子扇区,并更新所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的数据。
7.根据权利要求3所述数据擦写方法,其特征在于,将所有所述物理子扇区中实际写入次数最少的物理子扇区设置为最佳物理子扇区,并将所述待写入数据写入所述最佳物理子扇区包括:
将所有所述物理子扇区中实际写入次数最少的物理子扇区设置为最佳物理子扇区;
将所述最佳物理子扇区、所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的原有数据和待写入数据备份至临时文件夹;
擦除所述最佳物理子扇区、所述目标物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的所述原有数据;
将所述最佳物理子扇区对应的逻辑扇区映射关系转移至所述目标物理子扇区对应的逻辑扇区,并将所述目标物理子扇区对应的逻辑扇区中的映射关系转移至所述最佳物理子扇区对应的逻辑扇区;
将所述临时文件夹中的所述待写入数据写入所述最佳物理子扇区,并更新所述最佳物理子扇区、所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的数据。
8.根据权利要求6或7所述数据擦写方法,其特征在于,更新所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的数据之后,还包括:
删除所述临时文件夹中的全部数据。
9.根据权利要求3所述数据擦写方法,其特征在于,还包括:
将所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区划分为预设数量个存储单元;
将所述LOGIC_STATIS子扇区、所述REAL_ERASE_STATIS子扇区和所述SECTOR_MAP子扇区中的数据轮流存储至所有所述存储单元中。
10.一种基于NorFlash芯片的数据擦写系统,其特征在于,包括:
查询模块,用于当检测到需要向目标物理子扇区写入的待写入数据时,查询所述目标物理子扇区的第一擦写情况,并计算所有物理子扇区的第二擦写情况;其中,所述第一擦写情况包括所述目标物理子扇区的逻辑写入次数和实际写入次数,所述第二擦写情况包括所有所述物理子扇区的逻辑写入次数的平均值和实际写入次数的平均值、均方根误差、最大值和最小值;
判断模块,用于基于数理统计根据所述第一擦写情况和所述第二擦写情况判断所述目标物理子扇区是否符合预设条件;
第一写入模块,用于当所述目标物理子扇区符合所述预设条件时,将所述待写入数据写入所述目标物理子扇区;
第二写入模块,用于当所述目标物理子扇区不符合所述预设条件 时,将所有所述物理子扇区中实际写入次数最少的物理子扇区设置为最佳物理子扇区,并将所述待写入数据写入所述最佳物理子扇区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810166301.XA CN108280029B (zh) | 2018-02-28 | 2018-02-28 | 一种基于NorFlash芯片的数据擦写方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810166301.XA CN108280029B (zh) | 2018-02-28 | 2018-02-28 | 一种基于NorFlash芯片的数据擦写方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108280029A CN108280029A (zh) | 2018-07-13 |
CN108280029B true CN108280029B (zh) | 2022-03-22 |
Family
ID=62808918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810166301.XA Active CN108280029B (zh) | 2018-02-28 | 2018-02-28 | 一种基于NorFlash芯片的数据擦写方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108280029B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113127377B (zh) * | 2021-04-08 | 2022-11-25 | 武汉导航与位置服务工业技术研究院有限责任公司 | 一种非易失存储器件写擦除的磨损均衡方法 |
CN113900994B (zh) * | 2021-12-02 | 2022-03-01 | 新华三智能终端有限公司 | 一种文件写入方法及装置 |
CN114860624B (zh) * | 2022-05-23 | 2023-04-28 | 深圳市芯存科技有限公司 | 一种基于Nandflash芯片的数据擦写方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102169727A (zh) * | 2010-12-07 | 2011-08-31 | 清华大学 | 基于随机游走的固态硬盘磨损均衡方法 |
CN102576330A (zh) * | 2009-06-12 | 2012-07-11 | 提琴存储器公司 | 具有持久化无用单元收集机制的存储系统 |
CN103092766A (zh) * | 2012-12-28 | 2013-05-08 | 北京时代民芯科技有限公司 | 一种用于nand flash的均衡损耗实现方法 |
CN106610901A (zh) * | 2015-10-21 | 2017-05-03 | 深圳市江波龙电子有限公司 | 存储器的磨损次数平衡方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2517435A (en) * | 2013-08-19 | 2015-02-25 | Ibm | Fast data back-up and restore between volatile and flash memory |
IN2014MU00845A (zh) * | 2014-03-13 | 2015-09-25 | Sandisk Technologies Inc |
-
2018
- 2018-02-28 CN CN201810166301.XA patent/CN108280029B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576330A (zh) * | 2009-06-12 | 2012-07-11 | 提琴存储器公司 | 具有持久化无用单元收集机制的存储系统 |
CN102169727A (zh) * | 2010-12-07 | 2011-08-31 | 清华大学 | 基于随机游走的固态硬盘磨损均衡方法 |
CN103092766A (zh) * | 2012-12-28 | 2013-05-08 | 北京时代民芯科技有限公司 | 一种用于nand flash的均衡损耗实现方法 |
CN106610901A (zh) * | 2015-10-21 | 2017-05-03 | 深圳市江波龙电子有限公司 | 存储器的磨损次数平衡方法及装置 |
Non-Patent Citations (1)
Title |
---|
FAT文件系统在NAND FLASH上的磨损均衡研究;谢琦;《微电子学与计算机》;20110705;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108280029A (zh) | 2018-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10082962B2 (en) | Wear leveling of a memory array | |
US10170195B1 (en) | Threshold voltage shifting at a lower bit error rate by intelligently performing dummy configuration reads | |
US7962807B2 (en) | Semiconductor storage apparatus managing system, semiconductor storage apparatus, host apparatus, program and method of managing semiconductor storage apparatus | |
CN108280029B (zh) | 一种基于NorFlash芯片的数据擦写方法及系统 | |
US9846641B2 (en) | Variability aware wear leveling | |
US10289317B2 (en) | Memory apparatus and methods thereof for write amplification aware wear leveling | |
CN101763309B (zh) | 非易失性存储装置、信息记录系统及信息记录方法 | |
CN100447749C (zh) | 使用快闪存储器存储计量数据的方法 | |
US10936205B2 (en) | Techniques for retention and read-disturb aware health binning | |
US20100058119A1 (en) | System and method for managing non-volatile memory based on health | |
US10884665B2 (en) | Data reading method, storage controller and storage device for optimizing read voltages | |
US11016679B2 (en) | Balanced die set execution in a data storage system | |
Peleato et al. | BER-based wear leveling and bad block management for NAND flash | |
CN110333770A (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
US10324648B1 (en) | Wear-based access optimization | |
CN112347001B (zh) | 闪存垃圾回收的校验方法、装置及电子设备 | |
CN112068782B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
CN110837477B (zh) | 一种基于寿命预测的存储系统损耗均衡方法及装置 | |
CN114296634B (zh) | 存储器资源使用率检测及存储分配方法及装置 | |
US11016693B2 (en) | Block health estimation for wear leveling in non-volatile memories | |
CN111258789B (zh) | 非易失内存器件剩余寿命预测方法、装置、设备及介质 | |
CN111143238B (zh) | 基于eFlash存储芯片的数据擦写方法及系统 | |
CN110704332B (zh) | 一种闪存介质优化方法及非易失性存储设备 | |
CN110308876A (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
CN105224254A (zh) | 一种数据处理方法及电子设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |