CN1851672A - 一种闪存的安全读写方法 - Google Patents
一种闪存的安全读写方法 Download PDFInfo
- Publication number
- CN1851672A CN1851672A CN 200610072916 CN200610072916A CN1851672A CN 1851672 A CN1851672 A CN 1851672A CN 200610072916 CN200610072916 CN 200610072916 CN 200610072916 A CN200610072916 A CN 200610072916A CN 1851672 A CN1851672 A CN 1851672A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- flash memory
- write
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 230000015654 memory Effects 0.000 claims abstract description 74
- 230000008569 process Effects 0.000 claims abstract description 14
- 230000008520 organization Effects 0.000 claims description 3
- 238000005299 abrasion Methods 0.000 abstract description 6
- 230000004048 modification Effects 0.000 abstract description 3
- 238000012986 modification Methods 0.000 abstract description 3
- 238000011067 equilibration Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003446 memory effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种闪存的安全读写方法,该方法闪存以擦写块为单位进行擦除操作,文件以采用日志结构记录的文件头加数据体的形式存储在擦写块上面,根据文件头对文件进行读、写操作。对闪存中的数据进行修改的时候不在原来的物理地址上面,而是写在新的物理地址。本发明即使在写数据的过程中发生掉电的情况,***通过重新扫描闪存介质,检查每个文件头日志信息的合法性,也能很容易的恢复***的数据。而且闪存错位写的方法也能有效的保证闪存磨损平衡,不会因为频繁擦写某一个物理块而导致其提前成为坏块。因为不需要经常地擦写整个擦写块,能有效地节省***内存,提高***性能。
Description
技术领域
本发明涉及一种闪存的安全读写方法,尤其涉及一种用于嵌入式***的安全读写方法。
背景技术
随着嵌入式***的迅速发展和广泛应用,大量需要一种能多次编程,容量大,读写、擦除快捷、方便、简单,***器件少,价格低廉的非易挥发存储器件。闪存(Flash Memory)存储介质就是在这种背景需求下应运而生的。它是一种基于半导体的存储器,具有***掉电后仍可保留内部信息,及在线擦写等功能特点,是一种替代EEPROM存储介质的新型存储器。而且它的读写速度比EEPROM更快,在相同容量的情况下成本更低。正因为它具有低操作电压、低功耗、大容量、擦写速度快等特点,因此闪存(Flash Memory)正成为嵌入式***中的一个重要组成单元。
然而闪存(Flash Memory)的一些特性造成了其在应用上的不足,特别是其读写操作做防掉电保护处理这个难题一直没有很好的解决。
闪存(Flash Memory)区别于其它存储介质的特性主要有以下几个:
1)闪存的最小寻址单位是字节(byte),而不是磁盘上的扇区(sector)。这意味着可以从一块闪存的任意偏移(offset)读数据,但并不表明对闪存擦写操作也是以字节为单位进行的。
2)当一块闪存处在干净的状态时(被擦除过,但是还没有写操作发生),在这块flash上的每一位(bit)都是逻辑1。
3)闪存上的每一位(bit)可以被写操作置成逻辑0。可是把逻辑0置成逻辑1却不能按位(bit)来操作,而只能按擦写块(eraseblock)为单位进行擦写操作。在一个擦写块中进行存储时,一旦对某一擦写块中的某一位写0,再要改变成1,则必须先对整个block进行擦除,然后才能修改。从上层来看,擦写所完成的功能就是把擦写块内的每一位都重设置(reset)成逻辑1。
4)闪存的使用寿命是有限的。具体来说,闪存的使用寿命是由擦写块的最大可擦写次数来决定的。超过了最大可擦写次数,这个擦写块就成为坏块(bad block)了。因此为了避免某个擦写块被过度擦写,以至于它先于其他的擦写块达到最大可擦写次数,我们应该在尽量小的影响性能的前提下,使擦写操作均匀的分布在每个擦写块上。这个过程叫做磨损平衡(wear leveling)。
由于闪存介质的这些特性,目前运行在闪存上文件***要改写一个块设备的扇区时,通常是将这个扇区所在擦写块地数据读到内存中,放在缓存(buffer)中,然后将缓存中与这个扇区对应的内容用新的内容替换掉,再对该擦写块执行擦写操作,最后将缓冲中的数据写回该擦写块。
这种实现方式的缺点是很明显的:效率低,对一个扇区的更新要重写整个擦写块上的数据,也造成内存空间很大的浪费;没有提供磨损平衡,那些被频繁更新的数据所在擦写块将首先变成坏块;非常不安全,很容易引起数据的丢失。如果在上面的操作最后两步之间发生了突然掉电(power loss),那么整个擦写块中的数据就全部丢失了。这在突然掉电经常发生的嵌入式***中是不能接受的。
发明内容
本发明要解决的问题是要克服上述闪存读写操作当中的磨损不平衡、不安全和内存占用过多的缺点,提供了一种安全、磨损平衡而且节省内存的针对闪存的安全读写的方法。
本发明解决技术问题所采取的技术方案是:一种闪存的安全读写方法,基于错位读写,错位读写是相对于通常所采用的本位读写来说的。所谓本位的写存储器的方法是在经过擦除的存储原数据的存储块上重新写上需要修改的内容,具体操作过程在背景技术已经详细描述。错位读写方法最关键的就是在对闪存中的数据进行修改的时候不在原来的物理地址上面,而是写在新的物理地址。闪存以擦写块为单位进行擦除操作,文件以文件头加数据体的形式存储在擦写块上面,对闪存的改写步骤为:
1)根据文件头信息读取相应的文件信息;
2)在内存当中将数据体中需要修改的数据改为需要的数据内容,修改文件头信息;
3)重新找一块没有使用过或者擦除后没有使用的存储区,将内存中的修改后的内容按文件组织格式写入这个新的存储区中相应的位置;
所述文件头采用日志结构记录,其包括文件名、地址偏移、数据体长度、文件总长度、文件头检验码、访问时间、版本号。
同一个文件以版本号新的为有效数据,读取文件信息时,检索版本号新的文件进行读取。
在写数据的过程中发生掉电,通过重新扫描闪存,根据文件头检验码检查每个文件日志信息的合法性,恢复成上一版本有效数据。
闪存的擦写块剩下不多时,***会触发垃圾回收功能。通过扫描文件头信息,***可以知道每个擦写块上面的数据的有效性,当一个擦写块上面存储的数据都为无效的时候,***就可以重新擦写此擦写块以回收利用它。如果相邻擦写块彼此的有效数据能合并为一个擦写块时,***会自动合并它们。
本发明具有以下优越效果:
1.能安全而有效的达到闪存写的目的,即使在写数据的过程中发生掉电的情况,***通过重新扫描闪存介质,检查每个文件日志信息的合法性,也能很容易的恢复***的数据。
2.不会为了改写某一个数据而需要将存储这个数据的擦写块全部擦除然后重新写一遍,能有效的避免频繁的擦写某一个擦写块,以至于它先于其他的擦写块达到最大可擦写次数,从而起到磨损平衡,提高闪存使用寿命的作用。
3.不需要每次重新读写整个擦写块,能有效的节省***内存的使用量,从而提高***性能。
具体实施方式
下面结合具体实施例对本发明作进一步详细描述:
本发明是采用的基于错位读写的思想,错位是相对于以前通常所采用的本位来说的。所谓本位的写存储器的方法是在经过擦除的存储原数据的存储块上重新写上需要修改的内容,具体操作过程在上面已经详细描述。
错位读写的关键就是在对闪存的中的数据进行修改的时候不在原来的物理地址上面,而是写在新的物理地址。这种方法最大的好处就是不会为了修改某一个地方而擦除整个擦写块,然后重新读写数据,这样不需要频繁的擦写某个固定的擦写块,同时也不需要占用过多的内存容量,而且在一定机制下可以有效地达到防掉电的目的。为此对存储在闪存的文件采用了一个日志结构的方法,基于这样一种日志管理的方法,很容易实现针对闪存的错位安全写。下面具体阐述整个过程的实现原理。
将***数据以文件头加数据体的形式存储在闪存上面。文件头日志包括:文件名、地址偏移、数据体长度、文件总长度、文件头检验码、访问时间、版本号(还可以根据具体的应用来进行扩充)。如下表1:
表1
版本号 | |
文件名 | |
文件总长度 | 数据体长度 |
地址偏移 | 访问时间 |
文件头检验码 | |
数据体 |
现分别解释如下:
文件名:文件的ID;
地址偏移:写操作的起始地址;
数据体长度:文件数据体长度;
文件总长度:文件总长度,包括文件头和数据体的长度;
访问时间:***访问此次日志文件的时间;
文件头检验码:包含文件头部的校验码,保证文件的可靠性;
版本号:维护属于上述文件头所有元素的一个全序关系。
这个全序关系在整个操作过程中至关重要,下面详细介绍一下这个全序关系。
版本号:1偏移:0长度:200数据:AAAAA… | 从偏移0开始写200个字节的‘A’ | |
版本号:2偏移:200长度:200数据:BBBBBB… | 从偏移200开始写200个字节的‘B’ | |
版本号:3偏移:175长度:50数据:CCCCCC… | 从偏移175开始写50个字节的‘C’ |
如上表所示,假设某个文件有三个版本号,分别是版本号1、2、3,他们对应的地址偏移分别为0、200、175,数据长度为200、200、50,写入数据分别为A、B、C,则当***从闪存上读取文件头信息后,会生成下面的映射信息:
0-200:V1 |
版本号:1
偏移:0
长度:200
0-200:V1 |
200-400:V2 |
版本号:2
偏移:200
长度:200
0-175:V1 |
175-225:V3 |
225-400:V2 |
版本号:3
偏移:175
长度:50
版本1的操作为从偏移0开始写200个字节的‘A’,版本2的操作为从偏移200开始写200个字节的‘B’,版本3的操作为从偏移175开始写50个字节的‘C’,需要说明的是这里的偏移地址均是对逻辑地址而言,而实际上三个版本的文件写在不同的物理地址上面,他们本身在物理地址上面并不存在重叠。根据这个映射信息表,***就知道到相应的存储区去读取相应的文件内容。同一个文件以版本号高的为有效数据,因此,最后此文件的有效数据为版本3的从逻辑偏移175到225的50个字节‘C’。
当需要改写某个文件的时候,不去管以前的文件的存储物理地址,重新分配一块存储区,还是按文件头加数据体的形式写到闪存上面,只不过文件头日志信息作出相应改变,这样***根据扫描日志信息就能读取到修改后的文件内容。具体操作过程如下:
1)***在内存当中将数据体中需要修改的数据改为需要的数据内容;
2)重新找一块干净的存储区(没有使用过或者擦除后没有使用),将内存中的修改后的内容按文件组织格式写入这个新的存储区中相应的地方;
3)写入部分日志信息,比方说地址偏移、数据体长度、文件总长度、访问时间、文件头检验码等;
4)设置新版本号为原版本号加1。
以上技术方案可以清楚看出,本发明采用的闪存的错位写的方法能安全而有效的达到闪存读写的目的,即使在写数据的过程中发生掉电的情况,***通过重新扫描闪存介质,检查每个文件日志信息的合法性,也能很容易的恢复***的数据。另外如果闪存的擦写块剩下不多时,***会触发垃圾回收功能。通过扫描文件头信息,***可以知道每个擦写块上面的数据的有效性,当一个擦写块上面存储的数据都为无效的时候,***就可以重新擦写此擦写块以回收利用它。并且如果相邻擦写块彼此的有效数据较少时,***还会自动合并它们。
通过以上操作,可以发现文件内容已经安全地改写为预定的值,只是写在其他物理地址上面,在这个过程当中任何时候发生掉电都不会引起数据的丢失,从而达到了安全写的目的,而且错位写的方法也能有效的保证磨损平衡,不会因为频繁擦写某一个擦写块而导致其提前成为坏块。同时因为不需要经常地读写整个擦写块,能有效地节省***内存,提高***性能。
Claims (8)
1、一种闪存的安全读写方法,闪存以擦写块为单位进行擦除操作,文件以采用日志结构记录的文件头加数据体的形式存储在擦写块上面,对闪存的改写步骤为:
1)根据文件头信息读取相应的文件信息;
2)在内存中将数据体中需要修改的数据改为需要的数据内容,修改文件头信息;
3)重新找一块没有使用过或者擦除后没有使用的存储区,将内存中的修改后的内容按文件组织格式写入这个新的存储区中相应的区域。
2.如权利要求1所述的闪存的安全读写方法,其特征在于:所述文件头包括文件名、地址偏移、数据体长度、文件总长度、文件头检验码、访问时间、版本号。
3.如权利要求2所述的闪存的安全读写方法,其特征在于:同一个文件以版本号新的为有效数据。
4.如权利要求2或3所述的闪存的安全读写方法,其特征在于:在写数据的过程中发生掉电,通过重新扫描闪存,根据文件头检验码检查每个文件日志信息的合法性,恢复数据。
5.如权利要求3所述的闪存的安全读写方法,其特征在于:读取文件信息时,检索版本号新的文件进行读取。
6.如权利要求3所述的闪存的安全读写方法,其特征在于:改写文件头信息包括设置版本号为原版本号加1。
7.如权利要求5所述的闪存的安全读写方法,其特征在于:通过扫描文件头信息,检查每个擦写块上面的数据的有效性,当一个擦写块上面存储的数据都为无效的存储的数据,就重新擦除此擦写块以回收利用它。
8.如权利要求5所述的闪存的安全读写方法,其特征在于:当相邻擦写块彼此的有效数据能合并为一个擦写块就合并在一起。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100729163A CN100533408C (zh) | 2006-04-05 | 2006-04-05 | 一种闪存的安全读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100729163A CN100533408C (zh) | 2006-04-05 | 2006-04-05 | 一种闪存的安全读写方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1851672A true CN1851672A (zh) | 2006-10-25 |
CN100533408C CN100533408C (zh) | 2009-08-26 |
Family
ID=37133151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100729163A Expired - Fee Related CN100533408C (zh) | 2006-04-05 | 2006-04-05 | 一种闪存的安全读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100533408C (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009103181A1 (zh) * | 2008-02-18 | 2009-08-27 | 中兴通讯股份有限公司 | 在移动终端的非线性闪存上实现文件***的装置 |
CN101526927B (zh) * | 2008-03-07 | 2011-02-02 | 北京华虹集成电路设计有限责任公司 | Flash文件***的数据处理方法及数据处理装置 |
CN102012849A (zh) * | 2010-11-19 | 2011-04-13 | 中国人民大学 | 一种基于闪存的数据库恢复方法 |
CN101458658B (zh) * | 2007-12-13 | 2011-07-06 | 中芯国际集成电路制造(上海)有限公司 | 用于闪存的数据存储方法及装置 |
CN102487395A (zh) * | 2010-12-01 | 2012-06-06 | 深圳市闪联信息技术有限公司 | 一种实现数据访问的方法、装置和*** |
CN101707633B (zh) * | 2009-11-27 | 2012-08-22 | 山东中创软件商用中间件股份有限公司 | 一种基于文件***的消息中间件持久消息的存储方法 |
CN101710237B (zh) * | 2008-12-30 | 2012-10-24 | 深圳市江波龙电子有限公司 | 以闪存为存储介质的设备生产流程 |
CN102789404A (zh) * | 2011-05-20 | 2012-11-21 | 北京同方微电子有限公司 | 一种用于ic卡更新数据时防掉电数据存储的方法 |
CN101526921B (zh) * | 2008-12-31 | 2014-07-30 | 飞天诚信科技股份有限公司 | 写入数据的方法及装置 |
CN106802923A (zh) * | 2016-12-19 | 2017-06-06 | 华中科技大学 | 一种基于固态盘的文件更新方法及*** |
CN109857718A (zh) * | 2019-02-01 | 2019-06-07 | 广州亚美信息科技有限公司 | 一种应用于嵌入式***的日志式文件*** |
CN112148697A (zh) * | 2019-06-28 | 2020-12-29 | 西部数据技术公司 | 用于非易失性存储器中不同数据类型的基于日志的存储 |
-
2006
- 2006-04-05 CN CNB2006100729163A patent/CN100533408C/zh not_active Expired - Fee Related
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458658B (zh) * | 2007-12-13 | 2011-07-06 | 中芯国际集成电路制造(上海)有限公司 | 用于闪存的数据存储方法及装置 |
WO2009103181A1 (zh) * | 2008-02-18 | 2009-08-27 | 中兴通讯股份有限公司 | 在移动终端的非线性闪存上实现文件***的装置 |
CN101526927B (zh) * | 2008-03-07 | 2011-02-02 | 北京华虹集成电路设计有限责任公司 | Flash文件***的数据处理方法及数据处理装置 |
CN101710237B (zh) * | 2008-12-30 | 2012-10-24 | 深圳市江波龙电子有限公司 | 以闪存为存储介质的设备生产流程 |
CN101526921B (zh) * | 2008-12-31 | 2014-07-30 | 飞天诚信科技股份有限公司 | 写入数据的方法及装置 |
CN101707633B (zh) * | 2009-11-27 | 2012-08-22 | 山东中创软件商用中间件股份有限公司 | 一种基于文件***的消息中间件持久消息的存储方法 |
CN102012849B (zh) * | 2010-11-19 | 2012-10-24 | 中国人民大学 | 一种基于闪存的数据库恢复方法 |
CN102012849A (zh) * | 2010-11-19 | 2011-04-13 | 中国人民大学 | 一种基于闪存的数据库恢复方法 |
CN102487395A (zh) * | 2010-12-01 | 2012-06-06 | 深圳市闪联信息技术有限公司 | 一种实现数据访问的方法、装置和*** |
CN102487395B (zh) * | 2010-12-01 | 2014-11-05 | 北京闪联云视信息技术有限公司 | 一种实现数据访问的方法、装置和*** |
CN102789404A (zh) * | 2011-05-20 | 2012-11-21 | 北京同方微电子有限公司 | 一种用于ic卡更新数据时防掉电数据存储的方法 |
CN106802923A (zh) * | 2016-12-19 | 2017-06-06 | 华中科技大学 | 一种基于固态盘的文件更新方法及*** |
CN109857718A (zh) * | 2019-02-01 | 2019-06-07 | 广州亚美信息科技有限公司 | 一种应用于嵌入式***的日志式文件*** |
CN112148697A (zh) * | 2019-06-28 | 2020-12-29 | 西部数据技术公司 | 用于非易失性存储器中不同数据类型的基于日志的存储 |
CN112148697B (zh) * | 2019-06-28 | 2024-05-24 | 西部数据技术公司 | 用于非易失性存储器中不同数据类型的基于日志的存储 |
Also Published As
Publication number | Publication date |
---|---|
CN100533408C (zh) | 2009-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1851672A (zh) | 一种闪存的安全读写方法 | |
US9134918B2 (en) | Physical compression of data with flat or systematic pattern | |
US8219776B2 (en) | Logical-to-physical address translation for solid state disks | |
US20150309927A1 (en) | Hybrid Non-Volatile Memory System | |
KR100914263B1 (ko) | 스크래치 패드 블록 | |
JP4898457B2 (ja) | 不揮発性メモリおよび制御データ管理を伴う方法 | |
US9466383B2 (en) | Non-volatile memory and method with adaptive logical groups | |
CN101681314B (zh) | 存储器*** | |
CN101689140B (zh) | 存储器*** | |
US20110161560A1 (en) | Erase command caching to improve erase performance on flash memory | |
CN100356347C (zh) | 闪存的安全写入方法 | |
CN1198226A (zh) | 存储*** | |
CN1822230A (zh) | 基于NAND Flash存储器文件***的实现方法 | |
KR100845552B1 (ko) | Ftl의 어드레스 매핑 방법 | |
EP2264602A1 (en) | Memory device for managing the recovery of a non volatile memory | |
Subramani et al. | Garbage collection algorithms for nand flash memory devices--an overview | |
JP4703673B2 (ja) | メモリシステム | |
Lu et al. | A fast mounting method for NAND Flash File System |
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 | ||
C56 | Change in the name or address of the patentee |
Owner name: FEITIAN CHENGXIN TECHNOLOGY CO., LTD. Free format text: FORMER NAME: |
|
CP03 | Change of name, title or address |
Address after: 100085 Beijing city Haidian District Xueqing Road No. 9 Ebizal building B block 17 layer Patentee after: Feitian Technologies Co.,Ltd. Address before: 100083, Haidian District, Xueyuan Road, Beijing No. 40 research, 7A building, 5 floor Patentee before: FEITIAN TECHNOLOGIES Co.,Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090826 |
|
CF01 | Termination of patent right due to non-payment of annual fee |