CN105589767B - 一种用于nand flash的系统掉电保护实现方法 - Google Patents

一种用于nand flash的系统掉电保护实现方法 Download PDF

Info

Publication number
CN105589767B
CN105589767B CN201510965336.6A CN201510965336A CN105589767B CN 105589767 B CN105589767 B CN 105589767B CN 201510965336 A CN201510965336 A CN 201510965336A CN 105589767 B CN105589767 B CN 105589767B
Authority
CN
China
Prior art keywords
level
block
backup
written
area
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
Application number
CN201510965336.6A
Other languages
English (en)
Other versions
CN105589767A (zh
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.)
Beijing Microelectronic Technology Institute
Mxtronics Corp
Original Assignee
Beijing Microelectronic Technology Institute
Mxtronics Corp
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 Beijing Microelectronic Technology Institute, Mxtronics Corp filed Critical Beijing Microelectronic Technology Institute
Priority to CN201510965336.6A priority Critical patent/CN105589767B/zh
Publication of CN105589767A publication Critical patent/CN105589767A/zh
Application granted granted Critical
Publication of CN105589767B publication Critical patent/CN105589767B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents

Abstract

一种用于NAND FLASH的系统掉电保护实现方法,包括以下步骤:一、将NAND FLASH内的所有块通过一级表、二级表和三级表进行映射管理;二、系统上电,加载一级表、二级表和三级表,恢复系统工作状态;三、依据表中数据,判断在数据更新过程中是否发生异常掉电;四、当NAND Flash存储的信息发生改变时,对一级表、二级表和三级表进行更新。本发明在新一级表、新二级表或新三级表被成功写入后,再擦除原一级表、原二级表或原三级表,且这些表在可查的地址范围内,因此系统在掉电重新上电后,系统完整保留了各表中的数据,能够根据各表中的数据,对系统状态进行恢复。

Description

一种用于NAND FLASH的系统掉电保护实现方法
技术领域
本发明涉及数据存储领域,特别是涉及一种基于NAND FLASH的数据存储系统掉电保护方法。
背景技术
NAND FLASH芯片的结构一般分为两级:块和页。块是NAND FLASH内部的基本单元,由于NAND FLASH自身结构的特点,芯片中往往存在坏块而导致物理地址不连续。为了有效使用NAND FLASH内部的存储空间,以NAND FLASH为载体的存储设备一般会采用FTL(FlashTranslation Layer)算法。FTL算法通过对逻辑地址与物理地址的映射,达到对系统中坏块的管理。FTL内部大量的地址映射信息是整个系统正常工作的基础。当系统意外掉电时,若系统内部正在进行地址映射信息的更新操作,则会破坏映射信息数据的完整性,导致系统不能工作或数据丢失。Flash为闪存。
在现有技术中系统一般采用备用电源的设计方案,系统正常工作时使用主电源,当系统检测到异常断电时自动切换为备用电源,从而保障系统完成关键数据的保存。但这种解决方案增加了系统的硬件成本和复杂度。同时由于备用电源也会产生意外失效的问题,仍然存在破坏数据完整性的可能。因此这种方案只能降低意外掉电而导致数据破坏的几率,并不能从根本上保证系统关键数据的完整性。
发明内容
本发明要解决的技术问题是:克服现有技术的不足之处,提供一种用于NANDFLASH的系统掉电保护实现方法,保证了系统掉电时系统关键数据的完整性,克服了传统技术中硬件设计成本和复杂度高的缺点。
本发明所采用的技术方案是:
一种用于NAND FLASH的系统掉电保护实现方法,包括以下步骤:
一、将NAND FLASH的所有数据块分为七个部分,分别为一级表区、一级表备份区、二级表区、二级表备份区、三级表区、三级表备份区和其他数据块区;在一级表区选取用于存储一级表的数据块作为一级表块,在一级表备份区选取用于存储一级表备份的数据块作为一级表备份块,在二级表区选取用于存储二级表的数据块作为二级表块,在二级表备份区选取用于存储二级表备份的数据块作为二级表备份块,在三级表区选取用于存储三级表的数据块作为三级表块,在三级表备份区选取用于存储三级表备份的数据块作为三级表备份块;
所述一级表用于存储一级表区的块地址和页地址、一级表备份区的块地址和页地址以及二级表区和二级表备份区的块地址;所述二级表用于存储三级表区和三级表备份区的块地址;所述三级表用于存储二级表区和二级表备份区的页地址、三级表区和三级表备份区的页地址及其他数据块区的块地址和页地址;
二、加载一级表、二级表和三级表;
三、当NAND Flash存储的信息发生改变时,对三级表、二级表或一级表进行更新,包括以下步骤:
1)更新三级表:将改变后的三级表记载到内存中的待写入三级表中,并将待写入三级表中的更新次数加一;若原三级表块中存在空闲页,则直接将待写入三级表写入空闲页中成为新三级表,转步骤3);若原三级表块中不存在空闲页,则在原二级表所指定的三级表区的块地址范围内重新分配一个除原三级表块的新的块,并将该新分配的块擦除;
若新分配的块擦除成功则将待写入三级表写入新分配的块中成为新三级表,该块作为新三级表块,将原三级表块擦除,转步骤3);若新分配的块擦除失败,则在其他数据块区中分配一个替换块替换该块,并在原二级表所指定的三级表区的块地址范围内再分配一个新的块,直到新分配的块擦除成功后,将待写入三级表写入新分配的块中成为新三级表,该块作为新三级 表块,将原三级表块擦除,并将变化后的三级表区的块地址记载到内存中的待写入二级表,同时将待写入二级表中的更新次数加一;
2)若二级表存储的信息发生变化,则更新二级表,否则转步骤4),更新二级表的方法为:
若原二级表块中存在空闲页,则直接将待写入二级表写入空闲页中成为新二级表,转步骤1);
若二级表块中不存在空闲页且二级表区有大于一个的块,则在原一级表所指定的二级表区的块地址范围内分配一个除原二级表块的新的块,并将该新分配的块擦除;若新分配的块擦除成功则将待写入二级表写入新分配的块中成为新二级表,该块作为新二级表块,将原二级表块擦除,转步骤1);若新分配的块擦除失败,则在其他数据块区中分配一个替换块替换该块,并在原一级表所指定的二级表区的块地址范围内再分配一个新的块,直到新分配的块擦除成功后,将待写入二级表写入新分配的块中成为新二级表,该块作为新二级表块,将原二级表块擦除,并将变化后的二级表区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);
若二级表块中不存在空闲页且二级表区只有一个块,则在其他数据块区分配一个新的块,并将该新分配的块擦除;若新分配的擦除成功则将待写入二级表写入新分配的块中成为新二级表,该块作为新二级表块,将原二级表块擦除,并将变化后的二级表区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);若新分配的块擦除失败,则继续在其他数据块区中分配一个新的块,直到新分配的块擦除成功后,将待写入二级表写入新分配的块中成为新二级表,该块作为新二级表块,将原二级表块擦除,并将变化后的二级表区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);
3)若一级表存储的信息发生变化时,则更新一级表,否则转步骤4), 更新一级表的方法为:
若原一级表块中存在空闲页,则直接将待写入一级表写入空闲页中成为新一级表,转步骤4);若原一级表块中不存在空闲页,则在原一级表中所指定的一级表区的块地址范围内重新分配一个除原一级表块的新的块,并将该新分配的块擦除;
若新分配的块擦除成功则将待写入一级表写入新分配的块中成为新一级表,该块作为新一级表块,将原一级表块擦除,转步骤4);若新分配的块擦除失败,则将擦除失败的块在一级表区内剔除,同时在原一级表中所指定的一级表区的块地址范围内重新分配一个新的块,直到新分配的块擦除成功后,将改变后的一级表区的块地址记载到待写入一级表中,将待写入一级表写入新分配的块中成为新一级表,将该块作为新一级表块,将原一级表块擦除,转步骤4);
4)若此前更新过二级表而没有更新过二级表备份时,则更新二级表备份,否则转步骤5),更新二级表备份的方法为:
若二级表备份块中存在空闲页,则直接将待写入二级表写入空闲页成为新二级表备份,转步骤1);若二级表备份块中不存在空闲页且二级表备份区有大于一个的块,则并在原一级表所指定的二级表备份区的块地址范围内再分配一个除原二级表备份块的新的块,并将该新分配的块擦除;若新分配的擦除成功则将待写入二级表写入新分配的块中成为新二级表备份,该块作为新二级表备份块,将原二级表备份块擦除,转步骤1);若新分配的块擦除失败,则在其他数据块区中分配一个替换块替换该块,并在原一级表所指定的二级表备份区的块地址范围内再分配一个新的块,直到新分配的块擦除成功后,将待写入二级表写入新分配的块中成为新二级备份表,该块作为新二级表备份块,将原二级表备份块擦除,并将变化后的二级表备份区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);
若二级表备份块中不存在空闲页且二级表备份区只有一个块,则在其他数据块区分配一个新的块,并将该新分配的块擦除;若新分配的擦除成功则将待写入二级表写入新分配的块中成为新二级表备份,该块作为新二级表备份块,将原二级表备份块擦除,并将变化后的二级表备份区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);若新分配的块擦除失败,则继续在其他数据块区中分配一个新的块,直到新分配的块擦除成功后,将待写入二级表写入新分配的块中成为新二级表备份,该块作为新二级表备份块,将原二级表备份块擦除,并将变化后的二级表备份区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);
5)若此前更新过一级表而没有更新过一级表备份,则更新一级表备份,否则更新结束,更新一级表备份的方法为:
若原一级表备份块中存在空闲页,则直接将待写入一级表写入空闲页,更新结束;若原一级表备份块中不存在空闲页,则在待写入一级表中所指定的一级表备份区的块地址范围内重新分配一个除原一级表备份块的新的块并将该块擦除;
若新分配的块擦除成功则将待写入一级表写入新分配的块中成为新一级表备份,该块作为新一级表备份块,将原一级表备份块擦除,更新结束;若新分配的块擦除失败,则将擦除失败的块在一级表区内剔除,同时在待写入一级表中所指定的一级表备份区的块地址范围内重新分配一个新的块,直到新分配的块擦除成功,并将改变后的一级表区的块地址范围记载到待写入一级表中,将待写入一级表的更新次数加一,将待写入一级表写入新分配的块中作为一级表备份,该块作为新一级表备份块,将原一级表备份块擦除,回到步骤3)。
所述步骤3)中转步骤4)前还有步骤3.1),步骤3.1)为若此前更新过三级表而没有更新过三级表备份时,则还进行三级表备份更新,更新三级 表备份的方法为:
若原三级表备份块中存在空闲页,则直接将待写入三级表写入空闲页中成为新三级表备份;若原三级表备份块中不存在空闲页,则在待写入二级表所指定的三级表备份区的块地址范围内重新分配一个除原三级表备份块的新的块,并将该块擦除;
若新分配的块擦除成功则将待写入三级表写入新分配的块中成为新三级表备份,该块作为新三级表备份块;若新分配的块擦除失败,则在其他数据块区中分配一个替换块替换该块,并在待写入二级表所指定的三级表备份区的块地址范围内再分配一个新的块,直到新分配的块擦除成功,并将待写入三级表写入新分配的块中成为新三级表备份,该块作为新三级表备份块,将原三级表备份块擦除,并将改变后的三级表备份区的块地址记载到待写入二级表中,并将待写入二级表中的更新次数加一,转步骤2)。
所述步骤二中加载一级表、二级表和三级表的方法为:
a.加载一级表:遍历NAND FLASH内的块,直到查找到第一个一级表或第一个一级表备份,根据查找到的第一个一级表或第一个一级表备份中存储的一级表区和一级表备份区的块地址查找在该范围内的一级表和一级表备份,比较所有一级表和一级表备份的更新次数,使用更新次数最大的一级表或一级表备份,若一级表和一级表备份的最大更新次数一致,则使用更新次数最大的一级表;更新次数的初始值为0;
b.加载二级表:根据所使用的一级表或一级表备份中存储的二级表区和二级表备份区的块地址,分别查找二级表和二级表备份,比较二级表及二级表备份中的更新次数,使用两者中更新次数最大的二级表或二级表备份,若二级表和二级表备份的最大更新次数一致,则使用更新次数最大的二级表;
c.加载三级表:根据所使用的二级表或二级表备份中存储的三级表区和三级表备份区的块地址,分别查找三级表和三级表备份,比较三级表和三级表备份的更新次数,使用两者中更新次数最大的三级表或三级表备份,若三 级表和三级表备份的最大更新次数一致,则使用更新次数最大的三级表。
所述步骤a中比较一级表和一级表备份的更新次数的方法为:根据查找到的第一个一级表或第一个一级表备份中存储的一级表区块地址查找在该范围内的一级表,加载更新次数最大的一级表;根据查找到的第一个一级表或第一个一级表备份中存储的一级表备份区的块地址查找在该范围内的一级表备份,加载更新次数最大的一级表备份;再比较两次加载的一级表和一级表备份的更新次数,使用两者中更新次数最大的一级表或一级表备份,若一级表和一级表备份的更新次数一致,则使用更新次数最大的一级表。
所述步骤c中比较三级表和三级表备份的更新次数的方法为:根据使用的二级表或二级表备份中存储的三级表区的块地址,查找在该范围内的三级表,加载更新次数最大的三级表;根据使用的二级表或二级表备份中存储的三级表备份区的块地址,查找在该范围内的三级表备份,加载更新次数最大的三级表备份;再比较两次加载的三级表和三级表备份的更新次数,使用两者中更新次数最大的三级表或三级表备份,若三级表和三级表备份的更新次数一致,则使用更新次数最大的三级表。
所述步骤a中,加载一级表时:
A.若在一级表区的块地址范围内未找到一级表,则将更新次数最大的一级表备份作为待写入一级表,回到步骤3);
B.若在一级表备份区的块地址范围内未找到一级表备份,则将更新次数最大的一级表作为待写入一级表,回到步骤5);
C.若在一级表区的块地址范围内找到两个或以上一级表块,则比较这些一级表块中的一级表更新次数,除含有更新次数最大的一级表的一级表块,将其他一级表块擦除;
D.若在一级表备份区的块地址范围内找到两个或以上一级表备份块,则比较这些一级表备份块中的一级表备份的更新次数,除含有更新次数最大的一级表备份的一级表备份块,将其他一级表备份块擦除。
所述步骤b中,加载一级表时:
E.若在二级表区的块地址范围内中未找到二级表,则将更新次数最大的二级表备份作为待写入二级表,回到步骤2);
F.若在二级表备份区的块地址范围内中未找到二级表备份,则将更新次数最大的二级表作为待写入二级表,回到步骤4);
G.若在二级表区的块地址范围内找到两个或以上二级表块,则比较这些二级表块中的二级表更新次数,除含有更新次数最大的二级表的二级表块,将其他二级表块擦除;
H.若在二级表备份区的块地址范围内找到两个或以上二级表备份块,则比较这些二级表备份块中的二级表备份的更新次数,除含有更新次数最大的二级表备份的二级表备份块,将其他二级表备份块擦除。
所述步骤c中,加载一级表时:
I.若在三级表区的块地址范围内未找到三级表,则将更新次数最大的三级表备份作为待写入三级表,回到步骤1);
J.若在三级表备份区的块地址范围内未找到三级表备份,则将更新次数最大的三级表作为待写入三级表,回到步骤3.1);
K.若在三级表区的块地址范围内找到两个或以上三级表块,则比较这些三级表块中的三级表的更新次数,除含有更新次数最大的三级表的三级表块,将其他三级表块擦除;
L.若在三级表备份区的块地址范围内找到两个或以上三级表备份块,则比较这些三级表备份块中的三级表备份的的更新次数,除含有更新次数最大的三级表备份的三级表备份块,将其他三级表备份块擦除。
本发明与现有技术相比的优点在于:
(1)本发明中,采用一级表、二级表、三级表的结构对系统地址进行映射管理;在新一级表、新二级表或新三级表被成功写入后,再擦除原一级表、原二级表或原三级表,且这些表多数情况会在可查的地址范围内,因此 系统在掉电重新上电后,系统完整保留了各表中的数据,能够根据各表中的数据,对系统状态进行恢复;
(2)本发明中一级表区中有多个块,且一级表区在指定的块地址范围空间内,掉电后上电加载过程中搜索所有的一级表更为容易,不会丢失原一级表或新一级表,从而保证系统的完整性,节省系统上电时间;
(3)本发明中二级表的存储块地址由一级表指定,使系统上电时加载二级表更为直接,节省系统上电时间;
(4)本发明中三级表区中有多个块,且三级表区在二级表指定的块地址范围内,待写入的三级表首先在该范围内进行写入,降低了三级表更新过程造成二级表中数据更新的频率,提高了系统稳定性;
(5)在掉电重新上电后,依据各级表中数据,能够判断是否在数据更新过程中发生异常掉电;
(6)在掉电重新上电后,若判断发生异常掉电,能够依据各级表中的数据对发生错误的表进行纠正;
(7)该方法采用软件算法实现,不增加硬件设计成本和复杂度,流程稳定可靠;
(8)具有适应各种以NAND FLASH为存储载体的数据存储系统,也可广泛应用于以NAND FLASH为载体的数码产品中。
附图说明
图1为本发明中一级表、二级表和三级表之间映射关系;
图2为本发明中一级表、二级表和三级表更新流程;
图3为本发明中系统上电恢复流程。
具体实施方式
一种用于NAND FLASH的系统掉电保护实现方法,能够实现实时保存系统状态信息,包括以下步骤:
一、将NAND FLASH内的所有块通过一级表、二级表和三级表进行映 射管理;
二、系统上电,加载一级表、二级表和三级表,恢复系统工作状态;
三、依据表中数据,判断在数据更新过程中是否发生异常掉电。
四、当NAND Flash存储的信息发生改变时,对一级表、二级表和三级表进行更新;
具体地,如图1所示,步骤一为:
将NAND FLASH内的所有块通过三级表进行映射管理,NAND FLASH中包括一级表区、一级表备份区、二级表区、二级表备份区、三级表区、三级表备份区和其他数据块区;在一级表区中选取用于存储一级表的数据块作为一级表块,在一级表备份区选取用于存储一级表备份的数据块作为一级表备份块,在二级表区中选取用于存储二级表的数据块作为二级表块,在二级表备份区选取用于存储二级表备份的数据块作为二级表备份块,在三级表区中选取用于存储三级表的数据块作为三级表块,在三级表备份区选取用于存储三级表备份的数据块作为三级表备份块。
一级表区、一级表备份区、三级表区和三级表备份区均包括多于一个的块,根据NAND FLASH的存储容量确定包括块的数量。本实施例中,一级表区和一级表备份区分别被分配4个块,三级表区和三级表备份区分别有32×8个块,二级表区和二级表备份区均只有一个块。
所述一级表用于存储一级表区的块地址和页地址、一级表备份区的块地址和页地址以及二级表区和二级表备份区的块地址;所述二级表用于存储三级表区和三级表备份区的块地址;所述三级表用于存储二级表区和二级表备份区的页地址、三级表区和三级表备份区的页地址及其他数据块区的块地址和页地址。
一级表备份、二级表备份、三级表备份分别为一级表、二级表、三级表的备份;
如图2所示,步骤四为:
1)当三级表存储的信息发生改变时,在内存中将改变的系统状态信息记载到待写入三级表中,并将待写入三级表中的更新次数加一;若保存原三级表的三级表块中存在空闲页,则直接将待写入三级表写入空闲页中成为新三级表,转步骤4);若保存原三级表的三级表块中不存在空闲页,则在原二级表所指定的三级表区的块地址范围内重新分配一个新的块,并将该新分配的块擦除;
2)若擦除成功则将待写入三级表写入新分配的块中成为新三级表,该块作为新三级表块,将原三级表块擦除,转步骤4);若擦除失败,则在其他数据块区中分配一个替换块替换该块,并在二级表所指定的三级表块地址范围内再分配一个新的块,用于存储新三级表,直到新分配的块擦除成功并将待写入三级表写入新分配的块中成为新三级表,该块作为新三级表块,将原三级表块擦除,此时,二级表存储的三级表区的块地址被更改,在内存中,将更改后的三级表区的块地址记载到待写入二级表,并将待写入二级表中的更新次数加一;
3)二级表中存储的信息被更改后,若保存原二级表的二级表块中存在空闲页,则直接将待写入二级表写入空闲页中成为新二级表,由于二级表区的页地址发生改变,即三级表存储信息发生改变,转步骤1);
若保存原二级表的二级表块中不存在空闲页,则在其他数据块区中分配一个新的块,并将该新分配的块擦除;若擦除成功,则将待写入二级表写入新分配的块中,该块作为新二级表块,将原二级表块擦除;若擦除失败,则在其他数据块区中重新分配一个新的块,直到新分配的块擦除成功,将待写入二级表写入新分配的块中,该块作为新二级表块,将原二级表块擦除;此时,一级表中存储的二级表区的块地址被更改,在内存中,将更改后的二级表区的块地址记载到待写入一级表中,并将待写入一级表中的更新次数加一,三级表记载的二级表的页地址也发生变化,转步骤1);
4)一级表中存储的信息被更改后,若保存原一级表的一级表块中存在 空闲页,则直接将待写入一级表写入空闲页中成为新一级表,继续进行步骤6);若保存原一级表中的块不存在空闲页,则在原一级表中所指定的一级表区的块地址范围内重新分配一个新的块,并将该新分配的块擦除;若一级表区的块地址范围内没有新的块,则更新失败,NANDFlash不能使用,更新结束。
5)若擦除成功则将待写入一级表写入新分配的块中成为新一级表,该块作为新一级表块,将原一级表块擦除,转步骤6);若新分配的块擦除失败,则将擦除失败的块在一级表区内剔除,同时在一级表中所指定的一级表区的块内重新分配一个新的块,直到新分配的块擦除成功,此时,一级表区的块地址范围被更改,将新的一级表区的块地址范围记载到待写入一级表中,将待写入一级表写入新分配的块中成为新一级表,将该块作为新一级表块,将原一级表块擦除,转步骤6);
6)若此前更新过三级表而没有更新过三级表备份时,则更新三级表备份,否则转步骤8):若保存原三级表备份的三级表备份块中存在空闲页,则直接将待写入三级表写入空闲页中成为新三级表备份,此时,新三级表备份中和新三级表中的更新次数一致,转步骤8);若保存原三级表备份的块中不存在空闲页,则在待写入二级表所指定的三级表备区的块地址范围内重新分配一个新的块并将该块擦除;
7)若擦除成功则将要待写入三级表写入新分配的块中成为新三级表备份,该块作为新三级表备份块,此时,新三级表备份和新三级表的更新次数一致,将原三级表备份块擦除,转步骤8);若新分配的块擦除失败需在其他数据块区中分配一个替换块替换该块,并在待写入二级表所指定的三级表备份区的块地址范围内再分配一个新的块,直到新分配的块擦除成功,并将待写入三级表写入新分配的块中成为新三级表备份,该块作为新三级表备份块,将原三级表备份块擦除,此时,二级表存储的三级表备份区的块地址被更改,将更改后的三级表备份区的块地址记载到待写入二级表中,并将待写 入二级表中的更新次数加一,回到步骤3);
8)若此前更新过二级表而没有更新过二级表备份时,则更新二级表备份,否则转步骤9):若二级表备份块中存在空闲页,则直接将待写入二级表写入空闲页成为新二级表备份,此时,二级表备份中的更新次数与二级表中的更新次数一致,三级表中记载的二级表备份区的页地址发生改变,即三级表中存储的信息发生改变,转步骤1);若二级表备份块中不存在空闲页,则在其他数据块区中分配一个新的块作为新二级表备份块,用于存储二级表备份,将待写入二级表存储至新分配的块中成为新二级表备份,将原二级表备份块擦除,此时,一级表存储的二级表备份区的块地址被更改,将更改后的二级表备份区的块地址记载到待写入一级表中,并将待写入一级表的更新次数加一,转步骤1);
9)若此前更新过一级表而没有更新过一级表备份时,则更新一级表备份,否则更新结束:若保存原一级表备份的块中存在空闲页,则直接将待写入一级表写入空闲页,更新结束,此时,一级表备份中的更新次数与一级表中的更新次数一致;若保存一级表备份的块不存在空闲页,需在待写入一级表中所指定的一级表备份区的块地址范围内重新分配一个新的块并将该块擦除;若一级表备份区的块地址范围内没有新的块,则更新失败,NandFlash不能使用,更新结束。
10)若擦除成功则将待写入一级表写入新分配的块中成为新一级表备份,此时,一级表备份中的更新次数与一级表中的更新次数一致,该块作为新一级表备份块,将原一级表备份块擦除,更新结束;若新分配的块擦除失败,将擦除失败的块在一级表区内剔除,同时在待写入一级表中所指定的一级表备份区的块地址范围内重新分配一个新的块,直到新分配的块擦除成功,此时,一级表区的块地址范围被更改,将新的一级表区的块地址范围记载到待写入一级表中,将待写入一级表的更新次数加一,将待写入一级表写入新分配的块中作为一级表备份,该块作为新一级表备份块,将原一级表备 份块擦除,回到步骤4)。
以上步骤中,若其他数据块区没有新的块,则更新失败,Nand Flash不能使用,更新结束。
如图3所示,步骤三包括:
a.加载一级表:
当系统再上电时,系统首先遍历NAND FLASH内的块,直到查找到第一个一级表或第一个一级表备份,根据查找到的第一个一级表或第一个一级表备份中存储的一级表区块地址查找在该范围内的其他一级表,如果在该地址范围内存在多个一级表,则比较各一级表中记载的更新次数,加载更新次数最大的一级表;根据查找到的第一个一级表或第一个一级表备份中存储的一级表备份区的块地址查找在该范围内的其他一级表备份,如果在该地址范围内存在多个一级表备份,则比较各一级表备份中记载的更新次数,加载一级表备份中更新次数最大的一级表备份;再比较两次加载的一级表和一级表备份的更新次数,使用两者中更新次数最大的一级表或一级表备份,若一级表和一级表备份的更新次数一致,则使用一级表;
b.加载二级表:根据加载的一级表或一级表备份中存储的二级表区和二级表备份区的块地址,加载更新次数最大的二级表及更新次数最大的二级表备份;比较二级表及二级表备份中的更新次数,使用两者中更新次数最大的二级表或二级表备份;
c.加载三级表:根据加载的二级表或二级表备份中存储的三级表区的块地址,查找该范围内三级表,如果在该地址范围内存在多个三级表,则通过比较三级表中记载的更新次数,加载更新次数最大的三级表;根据加载的二级表或二级表备份中存储的三级表备份区的块地址,查找该范围内三级表备份,加载更新次数最大的三级表备份;比较已加载的三级表和已加载的三级表备份的更新次数,使用两者中更新次数最大的一个三级表或三级表备份;
A.所述步骤a中,若在一级表区的块地址范围内未找到一级表,说明系 统因掉电发生错误,则使用更新次数最大的一级表备份,并将该一级表备份作为待写入一级表,回到步骤4),更新一级表;
B.所述步骤a中,若在一级表备份区的块地址范围内未找到一级表备份,说明系统因掉电发生错误,使用更新次数最大的一级表,并将该一级表作为待写入一级表,回到步骤9),更新一级表备份;
C.所述步骤a中,若在一级表区的块地址范围内找到多个一级表块,说明系统因掉电发生错误,将多个一级表块中的一级表使用至内存,比较多个一级表的更新次数,使用更新次数最大的一级表,并将其他一级表块擦除;
D.所述步骤a中,若在一级表备份区内找到多个一级表备份块,说明系统因掉电发生错误,将多个一级表备份块中的一级表备份使用至内存,比较多个一级表备份的更新次数,使用更新次数最大的一级表备份,并将其他一级表备份块擦除;
F.所述步骤b中,若在二级表区的块地址上未找到二级表,说明系统因掉电发生错误,则使用更新次数最大的二级表备份,并将该二级表备份作为待写入二级表,回到步骤3);
G.所述步骤b中,若在二级表备份区的块地址上未找到二级表备份,说明系统因掉电发生错误,则使用更新次数最大的二级表,并将该二级表作为待写入二级表,回到步骤8);
H.所述步骤c中,若在三级表区的块地址范围内未找到三级表,说明系统因掉电发生错误,则使用更新次数最大的三级表备份,并将该三级表备份作为待写入三级表,回到步骤1);
I.所述步骤c中,若在三级表备份区的块地址范围内未找到三级表备份,说明系统因掉电发生错误,则使用更新次数最大的三级表,并将该三级表作为待写入三级表,回到步骤6);
J.所述步骤c中,若在三级表区的块地址范围内找到多个三级表块,说明系统因掉电发生错误,将多个三级表块中的三级表加载至内存,比较多个 三级表的更新次数,使用更新次数最大的三级表,并其他三级表块擦除;
K.所述步骤c中,若在二级表所指定的三级表备份存储范围内找到多个三级表备份块,说明系统因掉电发生错误,将多个块中的三级表备份加载至内存,比较多个表的更新次数,使用更新次数最大的三级表备份,并将更新次数较小的三级表备份块擦除;
所述步骤a中,若在一级表区的块地址范围内未找到一级表,在一级表备份区的块地址范围内也未找到一级表备份,说明系统因掉电发生错误,系统信息丢失,无法恢复;所述步骤b中,若在二级表区块内未找到二级表,在二级表备份块内也未找到二级表备份,说明系统因掉电发生错误,系统信息丢失,无法恢复;所述步骤c中,若在三级表区的块地址范围内未找到三级表,在三级表备份区的块地址范围内也未找到三级表备份,说明系统因掉电发生错误,系统信息丢失,无法恢复;
步骤三为:
检测二级表区的页地址并将检测结果与三级表中记载的二级表区的页地址进行对比;若一致,则证明二级表更新过程中不存在异常掉电情况;若不一致,则证明二级表更新过程中存在异常掉电情况,则将实际检测到的二级表的页地址更新到待写入三级表中,转步骤1)。本发明未详细说明部分属于本领域技术人员公知技术。
本发明未详细说明部分属于本领域技术人员公知技术。

Claims (8)

1.一种用于NAND FLASH的系统掉电保护实现方法,其特征在于,包括以下步骤:
一、将NAND FLASH的所有数据块分为七个部分,分别为一级表区、一级表备份区、二级表区、二级表备份区、三级表区、三级表备份区和其他数据块区;在一级表区选取用于存储一级表的数据块作为一级表块,在一级表备份区选取用于存储一级表备份的数据块作为一级表备份块,在二级表区选取用于存储二级表的数据块作为二级表块,在二级表备份区选取用于存储二级表备份的数据块作为二级表备份块,在三级表区选取用于存储三级表的数据块作为三级表块,在三级表备份区选取用于存储三级表备份的数据块作为三级表备份块;
所述一级表用于存储一级表区的块地址和页地址、一级表备份区的块地址和页地址以及二级表区和二级表备份区的块地址;所述二级表用于存储三级表区和三级表备份区的块地址;所述三级表用于存储二级表区和二级表备份区的页地址、三级表区和三级表备份区的页地址及其他数据块区的块地址和页地址;
二、加载一级表、二级表和三级表;
三、当NAND Flash存储的信息发生改变时,对三级表、二级表或一级表进行更新,包括以下步骤:
1)更新三级表:将改变后的三级表记载到内存中的待写入三级表中,并将待写入三级表中的更新次数加一;若原三级表块中存在空闲页,则直接将待写入三级表写入空闲页中成为新三级表,转步骤3);若原三级表块中不存在空闲页,则在原二级表所指定的三级表区的块地址范围内重新分配一个除原三级表块的新的块,并将该新分配的块擦除;
若新分配的块擦除成功则将待写入三级表写入新分配的块中成为新三级表,该块作为新三级表块,将原三级表块擦除,转步骤3);若新分配的块擦除失败,则在其他数据块区中分配一个替换块替换该块,并在原二级表所指定的三级表区的块地址范围内再分配一个新的块,直到新分配的块擦除成功后,将待写入三级表写入新分配的块中成为新三级表,该块作为新三级表块,将原三级表块擦除,并将变化后的三级表区的块地址记载到内存中的待写入二级表,同时将待写入二级表中的更新次数加一;
2)若二级表存储的信息发生变化,则更新二级表,否则转步骤4),更新二级表的方法为:
若原二级表块中存在空闲页,则直接将待写入二级表写入空闲页中成为新二级表,转步骤1);
若二级表块中不存在空闲页且二级表区有大于一个的块,则在原一级表所指定的二级表区的块地址范围内分配一个除原二级表块的新的块,并将该新分配的块擦除;若新分配的块擦除成功则将待写入二级表写入新分配的块中成为新二级表,该块作为新二级表块,将原二级表块擦除,转步骤1);若新分配的块擦除失败,则在其他数据块区中分配一个替换块替换该块,并在原一级表所指定的二级表区的块地址范围内再分配一个新的块,直到新分配的块擦除成功后,将待写入二级表写入新分配的块中成为新二级表,该块作为新二级表块,将原二级表块擦除,并将变化后的二级表区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);
若二级表块中不存在空闲页且二级表区只有一个块,则在其他数据块区分配一个新的块,并将该新分配的块擦除;若新分配的擦除成功则将待写入二级表写入新分配的块中成为新二级表,该块作为新二级表块,将原二级表块擦除,并将变化后的二级表区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);若新分配的块擦除失败,则继续在其他数据块区中分配一个新的块,直到新分配的块擦除成功后,将待写入二级表写入新分配的块中成为新二级表,该块作为新二级表块,将原二级表块擦除,并将变化后的二级表区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);
3)若一级表存储的信息发生变化时,则更新一级表,否则转步骤4),更新一级表的方法为:
若原一级表块中存在空闲页,则直接将待写入一级表写入空闲页中成为新一级表,转步骤4);若原一级表块中不存在空闲页,则在原一级表中所指定的一级表区的块地址范围内重新分配一个除原一级表块的新的块,并将该新分配的块擦除;
若新分配的块擦除成功则将待写入一级表写入新分配的块中成为新一级表,该块作为新一级表块,将原一级表块擦除,转步骤4);若新分配的块擦除失败,则将擦除失败的块在一级表区内剔除,同时在原一级表中所指定的一级表区的块地址范围内重新分配一个新的块,直到新分配的块擦除成功后,将改变后的一级表区的块地址记载到待写入一级表中,将待写入一级表写入新分配的块中成为新一级表,将该块作为新一级表块,将原一级表块擦除,转步骤4);
4)若此前更新过二级表而没有更新过二级表备份时,则更新二级表备份,否则转步骤5),更新二级表备份的方法为:
若二级表备份块中存在空闲页,则直接将待写入二级表写入空闲页成为新二级表备份,转步骤1);若二级表备份块中不存在空闲页且二级表备份区有大于一个的块,则并在原一级表所指定的二级表备份区的块地址范围内再分配一个除原二级表备份块的新的块,并将该新分配的块擦除;若新分配的擦除成功则将待写入二级表写入新分配的块中成为新二级表备份,该块作为新二级表备份块,将原二级表备份块擦除,转步骤1);若新分配的块擦除失败,则在其他数据块区中分配一个替换块替换该块,并在原一级表所指定的二级表备份区的块地址范围内再分配一个新的块,直到新分配的块擦除成功后,将待写入二级表写入新分配的块中成为新二级备份表,该块作为新二级表备份块,将原二级表备份块擦除,并将变化后的二级表备份区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);
若二级表备份块中不存在空闲页且二级表备份区只有一个块,则在其他数据块区分配一个新的块,并将该新分配的块擦除;若新分配的擦除成功则将待写入二级表写入新分配的块中成为新二级表备份,该块作为新二级表备份块,将原二级表备份块擦除,并将变化后的二级表备份区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);若新分配的块擦除失败,则继续在其他数据块区中分配一个新的块,直到新分配的块擦除成功后,将待写入二级表写入新分配的块中成为新二级表备份,该块作为新二级表备份块,将原二级表备份块擦除,并将变化后的二级表备份区的块地址记载到内存中的待写入一级表,同时将待写入一级表中的更新次数加一,转步骤1);
5)若此前更新过一级表而没有更新过一级表备份,则更新一级表备份,否则更新结束,更新一级表备份的方法为:
若原一级表备份块中存在空闲页,则直接将待写入一级表写入空闲页,更新结束;若原一级表备份块中不存在空闲页,则在待写入一级表中所指定的一级表备份区的块地址范围内重新分配一个除原一级表备份块的新的块并将该块擦除;
若新分配的块擦除成功则将待写入一级表写入新分配的块中成为新一级表备份,该块作为新一级表备份块,将原一级表备份块擦除,更新结束;若新分配的块擦除失败,则将擦除失败的块在一级表区内剔除,同时在待写入一级表中所指定的一级表备份区的块地址范围内重新分配一个新的块,直到新分配的块擦除成功,并将改变后的一级表区的块地址范围记载到待写入一级表中,将待写入一级表的更新次数加一,将待写入一级表写入新分配的块中作为一级表备份,该块作为新一级表备份块,将原一级表备份块擦除,回到步骤3)。
2.一种如权利要求1所述的用于NAND FLASH的系统掉电保护实现方法,其特征在于,所述步骤3)中转步骤4)前还有步骤3.1),步骤3.1)为若此前更新过三级表而没有更新过三级表备份时,则还进行三级表备份更新,更新三级表备份的方法为:
若原三级表备份块中存在空闲页,则直接将待写入三级表写入空闲页中成为新三级表备份;若原三级表备份块中不存在空闲页,则在待写入二级表所指定的三级表备份区的块地址范围内重新分配一个除原三级表备份块的新的块,并将该块擦除;
若新分配的块擦除成功则将待写入三级表写入新分配的块中成为新三级表备份,该块作为新三级表备份块;若新分配的块擦除失败,则在其他数据块区中分配一个替换块替换该块,并在待写入二级表所指定的三级表备份区的块地址范围内再分配一个新的块,直到新分配的块擦除成功,并将待写入三级表写入新分配的块中成为新三级表备份,该块作为新三级表备份块,将原三级表备份块擦除,并将改变后的三级表备份区的块地址记载到待写入二级表中,并将待写入二级表中的更新次数加一,转步骤2)。
3.一种如权利要求2所述的用于NAND FLASH的系统掉电保护实现方法,其特征在于,所述步骤二中加载一级表、二级表和三级表的方法为:
a.加载一级表:遍历NAND FLASH内的块,直到查找到第一个一级表或第一个一级表备份,根据查找到的第一个一级表或第一个一级表备份中存储的一级表区和一级表备份区的块地址查找在该范围内的一级表和一级表备份,比较所有一级表和一级表备份的更新次数,使用更新次数最大的一级表或一级表备份,若一级表和一级表备份的最大更新次数一致,则使用更新次数最大的一级表;更新次数的初始值为0;
b.加载二级表:根据所使用的一级表或一级表备份中存储的二级表区和二级表备份区的块地址,分别查找二级表和二级表备份,比较二级表及二级表备份中的更新次数,使用两者中更新次数最大的二级表或二级表备份,若二级表和二级表备份的最大更新次数一致,则使用更新次数最大的二级表;
c.加载三级表:根据所使用的二级表或二级表备份中存储的三级表区和三级表备份区的块地址,分别查找三级表和三级表备份,比较三级表和三级表备份的更新次数,使用两者中更新次数最大的三级表或三级表备份,若三级表和三级表备份的最大更新次数一致,则使用更新次数最大的三级表。
4.一种如权利要求3所述的用于NAND FLASH的系统掉电保护实现方法,其特征在于,所述步骤a中比较一级表和一级表备份的更新次数的方法为:根据查找到的第一个一级表或第一个一级表备份中存储的一级表区块地址查找在该范围内的一级表,加载更新次数最大的一级表;根据查找到的第一个一级表或第一个一级表备份中存储的一级表备份区的块地址查找在该范围内的一级表备份,加载更新次数最大的一级表备份;再比较两次加载的一级表和一级表备份的更新次数,使用两者中更新次数最大的一级表或一级表备份,若一级表和一级表备份的更新次数一致,则使用更新次数最大的一级表。
5.一种如权利要求3所述的用于NAND FLASH的系统掉电保护实现方法,其特征在于,所述步骤c中比较三级表和三级表备份的更新次数的方法为:根据使用的二级表或二级表备份中存储的三级表区的块地址,查找在该范围内的三级表,加载更新次数最大的三级表;根据使用的二级表或二级表备份中存储的三级表备份区的块地址,查找在该范围内的三级表备份,加载更新次数最大的三级表备份;再比较两次加载的三级表和三级表备份的更新次数,使用两者中更新次数最大的三级表或三级表备份,若三级表和三级表备份的更新次数一致,则使用更新次数最大的三级表。
6.一种如权利要求3所述的用于NAND FLASH的系统掉电保护实现方法,其特征在于,所述步骤a中,加载一级表时:
A.若在一级表区的块地址范围内未找到一级表,则将更新次数最大的一级表备份作为待写入一级表,回到步骤3);
B.若在一级表备份区的块地址范围内未找到一级表备份,则将更新次数最大的一级表作为待写入一级表,回到步骤5);
C.若在一级表区的块地址范围内找到两个或以上一级表块,则比较这些一级表块中的一级表更新次数,除含有更新次数最大的一级表的一级表块,将其他一级表块擦除;
D.若在一级表备份区的块地址范围内找到两个或以上一级表备份块,则比较这些一级表备份块中的一级表备份的更新次数,除含有更新次数最大的一级表备份的一级表备份块,将其他一级表备份块擦除。
7.一种如权利要求3所述的用于NAND FLASH的系统掉电保护实现方法,其特征在于,所述步骤b中,加载二级表时:
E.若在二级表区的块地址范围内中未找到二级表,则将更新次数最大的二级表备份作为待写入二级表,回到步骤2);
F.若在二级表备份区的块地址范围内中未找到二级表备份,则将更新次数最大的二级表作为待写入二级表,回到步骤4);
G.若在二级表区的块地址范围内找到两个或以上二级表块,则比较这些二级表块中的二级表更新次数,除含有更新次数最大的二级表的二级表块,将其他二级表块擦除;
H.若在二级表备份区的块地址范围内找到两个或以上二级表备份块,则比较这些二级表备份块中的二级表备份的更新次数,除含有更新次数最大的二级表备份的二级表备份块,将其他二级表备份块擦除。
8.一种如权利要求3所述的用于NAND FLASH的系统掉电保护实现方法,其特征在于,所述步骤c中,加载三级表时:
I.若在三级表区的块地址范围内未找到三级表,则将更新次数最大的三级表备份作为待写入三级表,回到步骤1);
J.若在三级表备份区的块地址范围内未找到三级表备份,则将更新次数最大的三级表作为待写入三级表,回到步骤3.1);
K.若在三级表区的块地址范围内找到两个或以上三级表块,则比较这些三级表块中的三级表的更新次数,除含有更新次数最大的三级表的三级表块,将其他三级表块擦除;
L.若在三级表备份区的块地址范围内找到两个或以上三级表备份块,则比较这些三级表备份块中的三级表备份的的更新次数,除含有更新次数最大的三级表备份的三级表备份块,将其他三级表备份块擦除。
CN201510965336.6A 2015-12-21 2015-12-21 一种用于nand flash的系统掉电保护实现方法 Active CN105589767B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510965336.6A CN105589767B (zh) 2015-12-21 2015-12-21 一种用于nand flash的系统掉电保护实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510965336.6A CN105589767B (zh) 2015-12-21 2015-12-21 一种用于nand flash的系统掉电保护实现方法

Publications (2)

Publication Number Publication Date
CN105589767A CN105589767A (zh) 2016-05-18
CN105589767B true CN105589767B (zh) 2018-07-31

Family

ID=55929366

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510965336.6A Active CN105589767B (zh) 2015-12-21 2015-12-21 一种用于nand flash的系统掉电保护实现方法

Country Status (1)

Country Link
CN (1) CN105589767B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445737B (zh) * 2016-09-12 2023-03-10 恒为科技(上海)股份有限公司 一种多备份启动方法
CN106406962A (zh) * 2016-09-29 2017-02-15 四川东方电气自动控制工程有限公司 基于arm的风力发电控制器远程升级失败可恢复的方法
CN107329912B (zh) * 2017-07-04 2020-05-26 浪潮集团有限公司 一种nand flash阵列的掉电处理方法
CN109271100A (zh) * 2018-08-28 2019-01-25 深圳智芯数据服务有限公司 一种Flash存储器数据存储方法和读取方法
CN109542345B (zh) * 2018-11-16 2022-02-08 广州锦红源电子科技有限公司 Flash存储器的数据写入和读取方法、装置
CN110245036A (zh) * 2019-06-17 2019-09-17 上海市共进通信技术有限公司 嵌入式系统中实现nand闪存存储器数据备份处理的系统及其方法
CN110543434B (zh) * 2019-09-05 2022-07-01 北京兆易创新科技股份有限公司 Nand快闪器件、存储表管理方法、设备和存储介质

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1811725A (zh) * 2006-02-21 2006-08-02 杭州华为三康技术有限公司 一种快速存储装置及快速更新数据的方法
CN101025715A (zh) * 2007-03-07 2007-08-29 北京飞天诚信科技有限公司 基于非易失性存储器中两个连续逻辑块的掉电保护方法
CN101169751A (zh) * 2006-10-25 2008-04-30 三星电子株式会社 具有闪存设备的系统及其数据恢复方法
CN101539891A (zh) * 2008-03-17 2009-09-23 凤凰微电子(中国)有限公司 一种嵌入式快闪存储器、存储系统及其数据掉电保护方法
CN101876927A (zh) * 2009-11-30 2010-11-03 北京握奇数据系统有限公司 实现fat32文件系统的断电保护方法和装置
CN102081577A (zh) * 2011-01-12 2011-06-01 厦门雅迅网络股份有限公司 Flash存储器的数据存储结构及其数据操作方式
CN102087623A (zh) * 2010-12-02 2011-06-08 东方口岸科技有限公司 专用usb存储设备数据更新时掉电的数据保护方法
CN102411523A (zh) * 2011-11-30 2012-04-11 广东威创视讯科技股份有限公司 文件备份存储方法、装置及其文件系统备份方法
CN102541676A (zh) * 2011-12-22 2012-07-04 福建新大陆通信科技股份有限公司 一种nand flash的状态检测及映射方法
CN103092766A (zh) * 2012-12-28 2013-05-08 北京时代民芯科技有限公司 一种用于nand flash的均衡损耗实现方法
CN103500131A (zh) * 2013-09-18 2014-01-08 华为技术有限公司 一种存储系统掉电数据备份方法及存储系统控制器
CN103514063A (zh) * 2012-06-21 2014-01-15 浙江大华技术股份有限公司 一种flash数据处理方法以及装置
CN103577121A (zh) * 2013-11-05 2014-02-12 中船重工(武汉)凌久电子有限责任公司 一种基于nand flash的高可靠线性文件存取方法
CN104461964A (zh) * 2014-12-12 2015-03-25 杭州华澜微科技有限公司 一种存储装置

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1811725A (zh) * 2006-02-21 2006-08-02 杭州华为三康技术有限公司 一种快速存储装置及快速更新数据的方法
CN101169751A (zh) * 2006-10-25 2008-04-30 三星电子株式会社 具有闪存设备的系统及其数据恢复方法
CN101025715A (zh) * 2007-03-07 2007-08-29 北京飞天诚信科技有限公司 基于非易失性存储器中两个连续逻辑块的掉电保护方法
CN101539891A (zh) * 2008-03-17 2009-09-23 凤凰微电子(中国)有限公司 一种嵌入式快闪存储器、存储系统及其数据掉电保护方法
CN101876927A (zh) * 2009-11-30 2010-11-03 北京握奇数据系统有限公司 实现fat32文件系统的断电保护方法和装置
CN102087623A (zh) * 2010-12-02 2011-06-08 东方口岸科技有限公司 专用usb存储设备数据更新时掉电的数据保护方法
CN102081577A (zh) * 2011-01-12 2011-06-01 厦门雅迅网络股份有限公司 Flash存储器的数据存储结构及其数据操作方式
CN102411523A (zh) * 2011-11-30 2012-04-11 广东威创视讯科技股份有限公司 文件备份存储方法、装置及其文件系统备份方法
CN102541676A (zh) * 2011-12-22 2012-07-04 福建新大陆通信科技股份有限公司 一种nand flash的状态检测及映射方法
CN103514063A (zh) * 2012-06-21 2014-01-15 浙江大华技术股份有限公司 一种flash数据处理方法以及装置
CN103092766A (zh) * 2012-12-28 2013-05-08 北京时代民芯科技有限公司 一种用于nand flash的均衡损耗实现方法
CN103500131A (zh) * 2013-09-18 2014-01-08 华为技术有限公司 一种存储系统掉电数据备份方法及存储系统控制器
CN103577121A (zh) * 2013-11-05 2014-02-12 中船重工(武汉)凌久电子有限责任公司 一种基于nand flash的高可靠线性文件存取方法
CN104461964A (zh) * 2014-12-12 2015-03-25 杭州华澜微科技有限公司 一种存储装置

Also Published As

Publication number Publication date
CN105589767A (zh) 2016-05-18

Similar Documents

Publication Publication Date Title
CN105589767B (zh) 一种用于nand flash的系统掉电保护实现方法
US11947400B2 (en) Memory system and controller
US9558839B2 (en) Power fail saving modes in solid state drive with MLC memory
US8448023B2 (en) Approach for data integrity in an embedded device environment
US8972651B2 (en) Storage system and storage method
CN103473150B (zh) 一种用于数据去重系统中的碎片重写方法
CN109582217A (zh) 数据储存装置与将数据写入存储器装置的方法
CN107357680A (zh) 数据处理设备和数据处理的方法
US8904229B1 (en) Online recovery of a file system experiencing failure of redundant logical storage storing a single point of failure
US20140281315A1 (en) Mass storage device and method of operating the same to back up data stored in volatile memory
CN106227731B (zh) 一种数据处理方法、装置及分布式文件系统
CN104021093A (zh) 一种基于nvdimm的存储设备的掉电保护方法
US10162561B2 (en) Managing backup of logical-to-physical translation information to control boot-time and write amplification
DE102019128491A1 (de) Betriebsverfahren für Open-Channel-Speichervorrichtung
CN107273046B (zh) 一种基于固态盘阵列的数据处理方法及系统
CN108646982A (zh) 一种基于ubifs的数据自动修复方法及装置
CN105608016B (zh) Dram与mram结合的固态硬盘及使用mram的存储卡
CN106569751A (zh) 一种多控制器缓存镜像方法及系统
CN110196818A (zh) 缓存数据的方法、缓存设备和存储系统
CN108255740A (zh) 一种flash均衡擦写方法及系统
CN108920094B (zh) 擦除单元raid方法、装置、计算机设备及存储介质
CN112596673A (zh) 具有双重raid数据保护的多活多控存储系统
CN103744751B (zh) 存储设备配置信息连续优化备份系统及其使用方法
CN107943615B (zh) 基于分布式集群的数据处理方法与系统
US20210318739A1 (en) Systems and methods for managing reduced power failure energy requirements on a solid state drive

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant