CN102004706B - 一种基于ftl的闪存擦写掉电保护方法 - Google Patents

一种基于ftl的闪存擦写掉电保护方法 Download PDF

Info

Publication number
CN102004706B
CN102004706B CN200910194936A CN200910194936A CN102004706B CN 102004706 B CN102004706 B CN 102004706B CN 200910194936 A CN200910194936 A CN 200910194936A CN 200910194936 A CN200910194936 A CN 200910194936A CN 102004706 B CN102004706 B CN 102004706B
Authority
CN
China
Prior art keywords
sector
mark
wiping
flash memory
wipe
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
CN200910194936A
Other languages
English (en)
Other versions
CN102004706A (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.)
Leadcore Technology Co Ltd
Original Assignee
Leadcore Technology 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 Leadcore Technology Co Ltd filed Critical Leadcore Technology Co Ltd
Priority to CN200910194936A priority Critical patent/CN102004706B/zh
Publication of CN102004706A publication Critical patent/CN102004706A/zh
Application granted granted Critical
Publication of CN102004706B publication Critical patent/CN102004706B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明提供一种基于FTL的闪存擦写掉电保护方法,涉及嵌入式系统中NORFlash。该方法包括擦除操作掉电保护部分和写操作掉电保护部分。擦除操作掉电保护部分为每个数据块增加一个擦除标记,未擦除成功的数据块挂入脏链表;开机检测,将脏链表中的数据块进行擦除操作。写操作掉电保护部分,扇区标记调整为所支持闪存的物理写单位,开机扫描每个扇区状态,将扇区标记为有效、但扇区号为无效的扇区的扇区状态修改为脏状态,将扇区标记为无效的扇区记录为脏状态,将标记为有效且扇区号不大于最大逻辑扇区号的扇区状态建立信息。本发明另提供一种运用上述方法的保护装置。本发明擦除标记不占用多余空间,保证写掉电发生后,只影响到掉电前最后操作的目标数据。

Description

一种基于FTL的闪存擦写掉电保护方法
技术领域
本发明涉及一种嵌入式系统中NOR Flash擦写过程中掉电的保护方法,尤其涉及一种基于FTL的闪存擦写掉电保护方法。
背景技术
闪存(Flash)由于快速的读写速度、低能耗、不易损失等特点,在很多场合有应用,特别是便携式消费性产品中应用极广。NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM(Erasable Programmable ROM,可擦除可编程ROM)和EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器一)统天下的局面。NOR Flash的特点是芯片内执行,这样应用程序可以直接在闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益。NOR Flash中,将空间划分为多个Block(块),擦除是以一个Block为单位进行的,即擦除至少需要擦除一个Block。
FTL(Flash Translation Layer,闪存转化层),是一种闪存与操作系统间对话的介质,由于FTL,操作系统可将闪存作为一个磁盘驱动器(Disk Driver),在闪存上建立多个虚拟的数据块或者扇区用以存储及管理数据。
嵌入式终端在开发、测试以及最终用户使用过程当中,不可避免的会出现终端设备的随机掉电(如电池电力消失,电池突然移除等),该异常掉电可能导致数据破坏甚至造成闪存的状态异常,从而破坏对闪存操作非常频繁的文件系统,最终导致设备开机失败。因此,介于操作系统和闪存之间的FTL模块,除了需要考虑软件流程的掉电保护外,对闪存擦和写过程中掉电所导致的数据损坏和闪存状态异常,也需要增加相应的保护措施。
现有的FTL认为,Nor Flash在执行物理擦或者写操作过程中掉电时,要么保持操作前状态,要么保持操作后状态,所以只提供了保持软件流程一致性的掉电保护措施。但实际试验数据表明,写操作过程中掉电发生后,原数据可能会变为一个未知状态,擦除过程掉电后擦除未成功的数据块可能会处于异常状态。对于这种极端最坏情况下,目前的FTL算法并没有做错误检测和相应处理。
另外,在对NOR Flash进行写操作时发生掉电,此时如果写操作的单位是Single Word(一般用作写标记),发生掉电后该Word内部2个字节的数据都不可靠;如果此时写操作的单位是1KB(一般用作写数据),发生掉电后该1KB数据不可靠。现有方法认为写状态信息的过程中发生掉电,状态信息或者保持原有状态或者保持目标状态,但是实验结果证明,对于某些NOR Flash,掉电后写操作的结果并不确定,因此需要对写过程掉电所产生的非预知数据进行处理,而现有的方法则无法做到这一点。
本发明则是提供一种新的方法用来解决上述问题。
发明内容
本发明要解决的技术问题在于提供一种可实现检测和恢复机制的掉电保护方法。
本发明通过这样的技术方案解决上述的技术问题:
一种基于FTL的闪存擦写掉电保护方法,该闪存具有若干数据块,数据块包括若干扇区,该方法包括擦除操作掉电保护部分以及写操作掉电保护部分,其中,擦除操作掉电保护部分,包括以下步骤:为每个数据块增加一个擦除标记,包含有效状态A和无效状态B;进行擦除操作之前将擦除标记写为A,擦除成功后写擦除标记为B,未擦除成功的数据块挂入脏链表;开机检测,将擦除标记仍然为A的数据块进行擦除操作,操作完成后将擦除标记写为B;写操作掉电保护部分,包括以下步骤:将扇区标记调整为所支持闪存的物理写单位,开机扫描每个扇区状态,将扇区标记为有效、但扇区号为无效的扇区的扇区状态修改为脏状态,将扇区标记为无效的扇区记录为脏状态,将标记为有效且扇区号不大于最大逻辑扇区号的扇区状态建立信息。
作为一种改进,擦除标记为4个字节。
作为一种改进,FTL内建有垃圾回收线程,用以查看脏链表中的数据块信息。
作为一种改进,扇区标记单字节或Single Word。
本发明另提供一种基于FTL的闪存擦写掉电保护装置,该闪存具有若干数据块,数据块包括若干扇区,该装置包括擦除操作掉电保护单元以及写操作掉电保护单元,其中,擦除操作掉电保护单元,包括:为每个数据块增加一个擦除标记的擦除标记修改模块,该擦除标记包含有效状态A和无效状态B,该模块在进行擦除操作之前将擦除标记写为A,擦除成功后写擦除标记为B,未擦除成功的数据块挂入脏链表;开机检测模块,该开机检测模块用以开机检测,将擦除标记仍然为A的数据块进行擦除操作,操作完成后将擦除标记写为B;写操作掉电保护单元,包括:将扇区标记调整为所支持闪存的物理写单位的编译模块;开机扫描每个扇区状态的扫描模块;以及扇区标记修改模块,该扇区状态修改模块将扇区标记为有效、但扇区号为无效的扇区的扇区状态修改为脏状态,将扇区标记为无效的扇区记录为脏状态,将标记为有效且扇区号不大于最大逻辑扇区号的扇区状态建立信息。
作为一种改进,擦除标记为4个字节。
作为一种改进,FTL内建有垃圾回收线程,用以查看脏链表中的数据块信息。
作为一种改进,扇区标记单字节或Single Word。
与现有技术相比较,本发明具有以下优点:
通过擦除掉电保护部分,擦除标记在本数据块内,无需占用多余空间,也不需要提供专门的标记回收机制,4字节的擦除标记可以把擦除掉电检测的失败率降低到1/232。另外,开机检测在RAM(Read-Only Memory,随机存取储存器)中建立数据块异常信息,不影响开机速度。本发明提供的写操作掉电保护错误检测和处理机制,保证写掉电发生后,只影响到掉电前最后操作的目标数据。
附图说明
图1a是本发明NOR Falsh擦写掉电保护方法中的擦除掉电保护部分的检测流程图。
图1b是本发明NOR Falsh擦写掉电保护方法中的擦除掉电保护部分的修复流程图。
图2是本发明NOR Falsh擦写掉电保护方法中的写掉电保护部分的流程图。
具体实施方式
下面结合附图详细说明本发明的具体实施方式。
本发明提供一种基于FTL的闪存擦写掉电保护方法,该方法主要包括擦除操作掉电保护部分以及写操作掉电保护部分。
1、擦除操作掉电保护部分
擦除操作掉电保护部分重点在于为每个数据块(Block)增加一个擦除标记,擦除标记包括两种状态A和B,其中A为无效状态,B为有效状态,B无需擦除可直接修改为A。在本实施方式中,所述擦除标记为4个字节。
FTL(Flash Translation Layer,闪存转化层)内部进行所有擦除操作之前将擦除标记写为A,擦除成功后擦除标记写为B。系统开机后第一次对数据块进行读操作的时候,读取擦除标记,通过擦除标记判断数据块是否发生过擦除掉电,如果是,则将其加入脏链表(Dirty List)。具体而言,如果擦除成功,应该是每个数据块的擦除标记都是B,即,擦除完成,如果某个数据块的擦除标记为A,则表明该数据块的擦除并未完成,即发生了掉电,简述如下:准备擦除(此时擦除标记全部写成A)→擦除过程中(此时因为擦除尚未完成,擦除标记仍为A)→擦除完成(此时擦除标记为B),具体流程可参图1a详细说明。
首先,开机进行FTL扫描,该扫描过程即为检测数据块的擦除标记是否为A,扫描过程是扫描每一个数据块,即图中的步骤“取第m个Block”,如果该数据块的擦除标记为B并且数据块的状态为已知的,则将该数据块根据其状态挂入对应链表;如果该数据块的擦除标记为A,则将该数据块挂入脏(Dirty)链表。如果检测到有未擦除完成的数据块,则参阅图1b,FTL则调度垃圾回收线程,查看脏链表中的数据块信息,获取其中一个数据块,将其擦除标记写为A,然后进行擦除操作,操作完成后将擦除标记写为B。
通过擦除掉电保护部分,擦除标记在本数据块内,无需占用多余空间,也不需要提供专门的标记回收机制,4字节的擦除标记可以把擦除掉电检测的失败率降低到1/232。另外,开机检测在RAM(Read-Only Memory,随机存取储存器)中建立数据块异常信息,不影响开机速度。
2、写操作掉电保护部分
写操作掉电保护部分需要将扇区标记调整为所支持闪存的物理写单位,如单字节或Single Word。如果发生掉电,不会影响到其它标记位。另外,还增加扇区号的有效值判断。于本实施方式中,为每个扇区增加扇区标记,扇区标记占一个Word,包含三个状态:Invalid、Valid、Dirty,只要发生写数据掉电,可根据其状态来区分,基本原理与上面所述的擦除保护掉电保护部分相同。
请参图2,FTL开机扫描每个扇区状态,并获取一个扇区,如果扇区状态为未知状态,则将该扇区视为无效扇区,并在RAM中将该扇区标记为Dirty;如果该扇区为已知状态,则进行处理,即为图2中的步骤“处理已知状态扇区”,若扇区标记为Valid,但扇区号为无效(即扇区号大于最大逻辑扇区号),则修改扇区状态为dirty,若发现标记为Valid且扇区号不大于最大逻辑扇区号,则根据扇区状态建立RAM信息。实际上,在该过程中,若发现扇区标记为Invalid,则跳过该扇区,也会在RAM中记录该扇区为dirty。本发明提供的写操作掉电保护错误检测和处理机制,保证写掉电发生后,只影响到掉电前最后操作的目标数据。
本发明另提供一种基于FTL的闪存擦写掉电保护装置,该保护装置应用的闪存具有若干数据块,数据块包括若干扇区。本发明的基于FTL的闪存擦写掉电保护装置包括擦除操作掉电保护单元以及写操作掉电保护单元。
擦除操作掉电保护单元包括:
为每个数据块增加一个擦除标记的擦除标记修改模块,该擦除标记包含有效状态A和无效状态B,该模块在进行擦除操作之前将擦除标记写为A,擦除成功后写擦除标记为B,未擦除成功的数据块挂入脏链表;
开机检测模块,该开机检测模块用以开机检测,将擦除标记仍然为A的数据块进行擦除操作,操作完成后将擦除标记写为B。
写操作掉电保护单元包括:
将扇区标记调整为所支持闪存的物理写单位的编译模块;
开机扫描每个扇区状态的扫描模块;
扇区标记修改模块。该扇区标记修改模块将扇区标记为有效、但扇区号为无效的扇区的扇区状态修改为脏状态,将扇区标记为无效的扇区记录为脏状态,将标记为有效且扇区号不大于最大逻辑扇区号的扇区状态建立信息。
以上所述仅为本发明的较佳实施方式,本发明的保护范围并不以上述实施方式为限,但凡本领域普通技术人员根据本发明所揭示内容所作的等效修饰或变化,皆应纳入权利要求书中记载的保护范围内。

Claims (8)

1.一种基于闪存转化层FTL的闪存擦写掉电保护方法,该闪存具有若干数据块,数据块包括若干扇区,其特征在于,该方法包括擦除操作掉电保护部分以及写操作掉电保护部分,其中,
擦除操作掉电保护部分,包括以下步骤:为每个数据块增加一个擦除标记,包含有效状态A和无效状态B;进行擦除操作之前将擦除标记写为A,擦除成功后写擦除标记为B,未擦除成功的数据块挂入脏链表;开机检测,将擦除标记仍然为A的数据块进行擦除操作,操作完成后将擦除标记写为B;
写操作掉电保护部分,包括以下步骤:将扇区标记调整为所支持闪存的物理写单位,开机扫描每个扇区状态,将扇区标记为有效、但扇区号为无效的扇区的扇区状态修改为脏状态,将扇区标记为无效的扇区记录为脏状态,将标记为有效且扇区号不大于最大逻辑扇区号的扇区状态建立随机存取储存器RAM信息。
2.根据权利要求1所述的基于FTL的闪存擦写掉电保护方法,其特征在于:擦除标记为4个字节。
3.根据权利要求1所述的基于FTL的闪存擦写掉电保护方法,其特征在于:FTL内建有垃圾回收线程,用以查看脏链表中的数据块信息。
4.根据权利要求1所述的基于FTL的闪存擦写掉电保护方法,其特征在于:扇区标记单字节或Single Word。
5.一种基于闪存转化层FTL的闪存擦写掉电保护装置,该闪存具有若干数据块,数据块包括若干扇区,其特征在于,该装置包括擦除操作掉电保护单元以及写操作掉电保护单元,其中,
擦除操作掉电保护单元,包括:为每个数据块增加一个擦除标记的擦除标记修改模块,该擦除标记包含有效状态A和无效状态B,该模块在进行擦除操作之前将擦除标记写为A,擦除成功后写擦除标记为B,未擦除成功的数据块挂入脏链表;开机检测模块,该开机检测模块用以开机检测,将擦除标记仍然为A的数据块进行擦除操作,操作完成后将擦除标记写为B;
写操作掉电保护单元,包括:将扇区标记调整为所支持闪存的物理写单位的编译模块;开机扫描每个扇区状态的扫描模块;以及扇区标记修改模块,该扇区标记修改模块将扇区标记为有效、但扇区号为无效的扇区的扇区状态修改为脏状态,将扇区标记为无效的扇区记录为脏状态,将标记为有效且扇区号不大于最大逻辑扇区号的扇区状态建立随机存取储存器RAM信息。
6.根据权利要求5所述的基于FTL的闪存擦写掉电保护装置,其特征在于:擦除标记为4个字节。
7.根据权利要求5所述的基于FTL的闪存擦写掉电保护装置,其特征在于:FTL内建有垃圾回收线程,用以查看脏链表中的数据块信息。
8.根据权利要求5所述的基于FTL的闪存擦写掉电保护装置,其特征在于:扇区标记单字节或Single Word。
CN200910194936A 2009-09-01 2009-09-01 一种基于ftl的闪存擦写掉电保护方法 Active CN102004706B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910194936A CN102004706B (zh) 2009-09-01 2009-09-01 一种基于ftl的闪存擦写掉电保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910194936A CN102004706B (zh) 2009-09-01 2009-09-01 一种基于ftl的闪存擦写掉电保护方法

Publications (2)

Publication Number Publication Date
CN102004706A CN102004706A (zh) 2011-04-06
CN102004706B true CN102004706B (zh) 2012-09-19

Family

ID=43812080

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910194936A Active CN102004706B (zh) 2009-09-01 2009-09-01 一种基于ftl的闪存擦写掉电保护方法

Country Status (1)

Country Link
CN (1) CN102004706B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI474170B (zh) * 2012-09-28 2015-02-21 Apple Inc 快閃記憶體轉譯層(ftl)資料庫日誌記錄方案

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103177283B (zh) * 2011-12-21 2017-09-01 国民技术股份有限公司 一种存储卡防掉电方法及装置
CN103488582B (zh) * 2013-09-05 2017-07-28 华为技术有限公司 写高速缓冲存储器的方法及装置
US9218891B2 (en) * 2013-11-27 2015-12-22 Silicon Motion, Inc. Data storage device and flash memory control method
TWI515737B (zh) 2013-12-09 2016-01-01 慧榮科技股份有限公司 資料儲存裝置以及其資料抹除方法
CN107092563B (zh) * 2017-04-20 2021-02-26 新华三信息技术有限公司 一种垃圾回收方法及装置
TWI628542B (zh) * 2017-04-21 2018-07-01 慧榮科技股份有限公司 快閃記憶體的垃圾回收斷電回復方法以及使用該方法的裝置
CN108762669B (zh) * 2018-05-18 2021-03-05 深圳忆联信息系统有限公司 提升掉电时数据写入速度的方法、装置及计算机设备
CN109597584B (zh) * 2018-12-04 2022-03-08 浪潮电子信息产业股份有限公司 一种固态硬盘垃圾回收管理方法、装置及设备
CN112017723B (zh) * 2020-08-31 2022-11-15 深圳佰维存储科技股份有限公司 存储器的掉电测试方法、装置、可读存储介质及电子设备
CN113409863A (zh) * 2021-06-28 2021-09-17 芯天下技术股份有限公司 一种减少擦除时间的方法、装置、电子设备及存储介质
CN115470216B (zh) * 2022-11-01 2023-02-10 安徽南瑞中天电力电子有限公司 一种基于ftl的智能物联表的存储管理方法及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1719422A (zh) * 2005-08-18 2006-01-11 北京中星微电子有限公司 一种存储器文件数据虚拟存取方法
CN1902712A (zh) * 2003-12-31 2007-01-24 桑迪士克股份有限公司 具有写入/擦除中止检测机制的快闪存储系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1902712A (zh) * 2003-12-31 2007-01-24 桑迪士克股份有限公司 具有写入/擦除中止检测机制的快闪存储系统
CN1719422A (zh) * 2005-08-18 2006-01-11 北京中星微电子有限公司 一种存储器文件数据虚拟存取方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI474170B (zh) * 2012-09-28 2015-02-21 Apple Inc 快閃記憶體轉譯層(ftl)資料庫日誌記錄方案

Also Published As

Publication number Publication date
CN102004706A (zh) 2011-04-06

Similar Documents

Publication Publication Date Title
CN102004706B (zh) 一种基于ftl的闪存擦写掉电保护方法
CN102081577B (zh) 对Flash存储器的数据存储结构进行数据操作的方法
TWI451435B (zh) 非揮發性記憶體儲存裝置、記憶體控制器與資料儲存方法
US8046528B2 (en) Data writing method for flash memory, and flash memory controller and storage device thereof
TWI524183B (zh) 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
CN100462944C (zh) 基于非易失性存储器两个以上连续逻辑块的掉电保护方法
CN101963891A (zh) 数据存储处理方法与装置、固态硬盘系统与数据处理系统
KR102515137B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
CN103136116A (zh) 存储器存储系统及其中控装置、管理方法与断电恢复方法
US20170277603A1 (en) Data saving method, device and terminal
KR20110089728A (ko) 솔리드 스테이트 드라이브의 에러 제어 방법
CN101859604A (zh) 闪存坏块的利用方法
CN104699413A (zh) 数据管理方法、存储器存储装置及存储器控制电路单元
CN102456404A (zh) 非易失性存储器存储装置、存储器控制器与数据存储方法
CN104866429A (zh) 存储器管理方法、存储器控制电路单元与存储器存储装置
TW201409230A (zh) 系統資料儲存方法、記憶體控制器與記憶體儲存裝置
TW201945927A (zh) 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
US20160054935A1 (en) Data storing method and memory controller and memory storage device using the same
CN103678162B (zh) 系统数据储存方法、存储器控制器与存储器储存装置
CN103593296A (zh) 数据储存方法、存储器控制器与存储器储存装置
CN102446137B (zh) 数据写入方法、存储器控制器与存储器储存装置
CN103136111A (zh) 数据写入方法、存储器控制器与存储器储存装置
CN103578566B (zh) 存储器存储装置及其修复方法
TWI451247B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN102122233B (zh) 区块管理与数据写入方法、闪存储存系统与控制器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20110406

Assignee: Shanghai Li Ke Semiconductor Technology Co., Ltd.

Assignor: Leadcore Technology Co., Ltd.

Contract record no.: 2018990000159

Denomination of invention: Flash erasing power-fail protection method based on FTL(Flash Translation Layer)

Granted publication date: 20120919

License type: Common License

Record date: 20180615

EE01 Entry into force of recordation of patent licensing contract