CN101324899B - 一种快速写nand型flash的方法 - Google Patents
一种快速写nand型flash的方法 Download PDFInfo
- Publication number
- CN101324899B CN101324899B CN2008101178275A CN200810117827A CN101324899B CN 101324899 B CN101324899 B CN 101324899B CN 2008101178275 A CN2008101178275 A CN 2008101178275A CN 200810117827 A CN200810117827 A CN 200810117827A CN 101324899 B CN101324899 B CN 101324899B
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- flash
- write
- block
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明披露了一种写NAND型FLASH的方法,系统在内存中分别开辟空间存储逻辑扇区转换为物理扇区的索引表、FAT表备份、空FAT表写记录和以数据块为单位的FLASH数据,所述方法包括下列步骤:将拟写入FLASH数据块的数据,按扇区写入数据缓冲区的数据块中;当需要将数据缓冲区某个数据块的数据写入FLASH数据块时,判断所述数据缓冲区数据块对应的FAT表备份中的数据是否为空;若判断结果为空,且空FAT表记录指示相应数据未被写过及相应FAT表未被更新过时,直接将数据缓冲区的所述数据块写入到FLASH数据块。本发明采用空间换时间的方式,提高了对NAND型FLASH写操作的速度。
Description
技术领域
本发明涉及一种提高计算机系统中写文件速度的方法,具体是涉及提高写大容量NAND型FLASH中文件速度的方法。
背景技术
随着多媒体技术的迅猛发展,越来越多的数码产品不断涌现,如MP3、PMP、数码相机、数码相框、GPS等等。这些数码产品往往需要内置可擦写非易失的存储设备,而在已有的存储介质中大容量NAND型FLASH往往是这些应用的首选。
NAND型FLASH有其自身读写的特点,其最小的读取单元为页(Page),一般每个页的大小在512字节到4196个字节之间。而NAND型FLASH写入时必须先进行擦除,擦除的最小单位为数据块(BLOCK),一般情况下,数据块BLOCK由16-64个连续的页组成。当擦除区块时,区块内所有页的数据均被擦除。
由于可能存在坏块,NAND型FLASH读写的逻辑地址还需最终转换为物理介质上的物理地址进行操作。转换表冗余分布存储在NAND型FLASH的每页上,记载着其所在的数据块信息,为物理地址到逻辑地址的转换。
在NAND型FLASH上,一般使用FAT16或FAT32文件系统存储文件。FAT系统的一个特点就是利用存储在逻辑地址前端的FAT表作为指针标记文件或目录。FAT表有两个,分别为FAT1和FAT2,FAT2为进行备份之用。在较大的NAND型FLASH上,典型FAT表所占用的空间不足整个物理空间的千分之一。
FAT系统最初设计使用在软盘或是硬盘上面,而对于大文件读取的介质往往是硬盘。为了提高读写速度,硬盘往往自带缓冲。这样,文件系统就可以以简单的策略进行操作。但是,NAND型FLASH在物理上缺乏这样一组缓存。
由于上面介绍的特点,不同的读写操作策略可能在速度上会相差很大,尤其NAND型FLASH是以数据块BLOCK为单位写入,该特点使得在执行写FLASH操作时经常会花费大量时间读回写入扇区所在BLOCK中未更新扇区中的数据,若该数据对系统无意义,则会浪费大量时间,严重影响了读写速度。
发明内容
本发明的目的是针对现有技术中存在的上述问题,提出了一种行之有效的解决方法,切实加快对NAND型FLASH写操作的速度。
为达到上述目的,本发明提出了一种快速写NAND型FLASH的方法,其中系统执行写操作之前,在内存中分别开辟存储将逻辑扇区转换为物理扇区的索引表区、FAT表备份区、空FAT表写记录区和以数据块为单位的数据缓冲区,所述数据块包括多个扇区,用FAT表备份区备份系统FAT表区,用空FAT写记录区记载每个FLASH数据块的数据写入情况;所述方法包括下列步骤:
将拟写入FLASH数据块的数据,按扇区写入数据缓冲区的数据块中;
当需要将数据缓冲区某个数据块的数据写入FLASH数据块时,判断所述数据缓冲区数据块对应的FAT表备份中的数据是否为空;
若判断结果为空,且所述空FAT表记录指示相应数据未被写过,以及相应FAT表未被更新过时,直接将数据缓冲区的所述数据块依据逻辑扇区到物理扇区的索引表写入到FLASH数据块。
可选的是,需要将数据缓冲区数据块的数据写入FLASH数据块是指数据缓冲区无法容纳新的数据块。
优选的是,包括在判断数据缓冲区数据块的全部扇区都被写入的情况下,直接将数据缓冲区该数据块的数据按块写入到FLASH数据块的步骤。
优选的是,在完成所述将拟写入FLASH数据块的数据写入数据缓冲区的步骤后,首先判断是否所写逻辑扇区不在数据缓冲区的数据块中且数据缓冲区未满,若判断结果为是,则将数据写入空的数据缓冲区中。
优选的是,包括当所述需写入FLASH的数据缓冲区数据块所对应的FAT表备份中的数据不为空时,或其虽为空,但所述空FAT表记录指示相应数据块数据被写过或相应FAT表被更新过时,读取FLASH上此数据块未更新扇区中的数据到所述数据缓冲区数据块;然后,将此数据缓冲区的数据块的数据按块写入到FLASH。
优选的是,在完成所述将拟写入FLASH数据块的数据写入数据缓冲区的步骤后,首先判断所写逻辑扇区是否属于FAT表,若判断结果为是,则更新所述FAT表备份中的数据,并在所述空FAT表写记录区中记载当前更新FAT表操作。
优选的是,还包括下步骤:在完成所述将拟写入FLASH数据块的数据写入数据缓冲区的步骤后,首先判断数据所属扇区是否在所述数据缓冲区的数据块内,在判断结果为是的情况下将数据写入数据缓冲区的数据块内。
本发明由于利用NAND型FLASH和FAT系统的特点,以空间换时间的方式,在系统内部开辟一定大小的存储区域,作为逻辑扇区转换为物理扇区的索引表、FAT表备份、空FAT表写记录、以及BLOCK的缓冲区,并在逻辑扇区读写层下添加一系列对上层透明的控制操作,达到了加快写入速度的效果。
附图说明
下文将参照附图对本发明的具体实施方案进行更详细的举例说明,其中:图1是本发明的内存空间分配结构图;
图2是本发明的系统初始化过程流程图;
图3是本发明的系统写入扇区的流程图;
图4是本发明的系统结束操作的流程图。
具体实施方式
图1是本发明的内存空间分配结构图。如图所示,本方法需要在系统内存空间中开辟四片空间,分别用于存储逻辑扇区转换为物理扇区的索引表、FAT表备份、空FAT表写记录、以及FLASH的数据块BLOCK的缓冲区,其中,逻辑扇区到物理扇区的索引表可以以每一个逻辑块影射为单位建立一条索引,这样如果逻辑块到物理块的影射关系为F,即物理块=F(对应逻辑块),那么,逻辑扇区A所对应的物理扇区B就为B=D*F(A/D)+A%D,其中D为系统每个块所包含的扇区数,A%D代表A除以D的余数。FAT表备份为系统FAT表区在内存中的备份,空FAT表写记录记载每个数据块BLOCK的写入情况。数据块BLOCK缓冲用于以BLOCK为单位缓冲物理介质FLASH上的数据,其大小可根据系统空间的大小进行调整,最少1个BLOCK容量,优选的是为BLOCK容量的整数倍。
图2是本发明的系统初始化过程流程图。如图所示,系统在开始运行时,首先初始化上述空间,操作如下:
1、读取NAND型FLASH上存储的物理扇区转化为逻辑扇区的信息;
2、根据1所得到的信息建立逻辑扇区转换为物理扇区的索引表;
3、读取NAND型FLASH存储的FAT表到FAT表备份;
4、将空FAT表写记录的每一位置0;
5、清空数据块BLOCK的缓冲区。
图3是本发明的系统写入扇区的流程图。如图所示,系统在写入扇区时,需要进行如下操作:
1、判断所写逻辑扇区是否属于FAT表,如果不是,转到步骤6;
2、更新FAT表备份中的数据;
3、判断FAT表更新部分原来是否为空,如果不是,结束;
4、判断FAT表更新部分所对应的空FAT表写记录的相应位置是否为2,如果是,结束;
5、将FAT表更新部分所对应的空FAT表写记录的相应位置置为1,结束;
6、判断所写逻辑扇区是否在BLOCK缓冲内,如果不是,转到步骤8;
7、将数据写入BLOCK缓冲中,并标记此扇区已经被更新;
8、判断数据缓冲是否已满,即数据缓冲区能容纳新的数据块,如果没满还能够继续容纳,则转到步骤17;
9、确定要写回的区块,原则上优先选择扇区被更新最多的区块;
10、判断此被写回的区块的全部扇区是否都被更新,如果是,转到步骤15;
11、判断此区块所对应的FAT表备份中的数据是否为空,如果是,转到步骤13;
12、判断此区块所对应的空FAT表写记录是否为1,如果是,转到步骤14,如果不是,转到步骤15;
13、判断此区块所对应的空FAT表写记录是否为2,如过不是,转到步骤15;
14、读取物理介质上此区块未更新页中的数据到此区块缓冲;
15、将此区块的数据写入到物理介质,并将此缓冲设为空;
16、将此区块对应的空FAT表写记录的相应位置置为2;
17、将拟写入扇区数据写入空的BLOCK缓冲内。
图4是本发明的系统结束操作的流程图。如图所示,在系统完成读写文件后,还需进行如下收尾工作
1、读取物理介质上全部BLOCK缓冲未更新扇区中的数据到BLOCK缓冲中;
2、将全部BLOCK缓冲中的数据写入到物理介质
3、将FAT表缓冲中的数据写入物理介质
应当说明的是,以上描述旨在说明本发明的具体实施方案,不能理解为对本发明的限制,本发明所要求保护的范围仅由权利要求书进行限制。
Claims (7)
1.一种写NAND型FLASH的方法,其中系统执行写操作之前,在内存中分别开辟存储将逻辑扇区转换为物理扇区的索引表区、FAT表备份区、空FAT表写记录区和以数据块为单位的数据缓冲区,所述数据块包括多个扇区,用FAT表备份区备份系统FAT表区,用空FAT写记录区记载每个FLASH数据块的数据写入情况;
所述方法包括下列步骤:
将拟写入FLASH数据块的数据,按扇区写入数据缓冲区的数据块中;
当需要将数据缓冲区某个数据块的数据写入FLASH数据块时,判断所述数据缓冲区数据块对应的FAT表备份中的数据是否为空;
若判断结果为空,且所述空FAT表记录指示相应数据未被写过,以及相应FAT表未被更新过时,直接将数据缓冲区的所述数据块依据逻辑扇区到物理扇区的索引表写入到FLASH数据块。
2.根据权利要求1所述的写NAND型FLASH方法,其特征在于,需要将数据缓冲区数据块的数据写入FLASH数据块是指数据缓冲区无法容纳新的数据块。
3.根据权利要求2所述的写NAND型FLASH方法,其特征在于,包括在判断数据缓冲区数据块的全部扇区都被写入的情况下,直接将数据缓冲区该数据块的数据按块写入到FLASH数据块的步骤。
4.根据权利要求1所述的写NAND型FLASH方法,其特征在于,还包括如下步骤:在所述的将拟写入FLASH数据块的数据,按扇区写入数据缓冲区的数据块中步骤后,首先判断是否所写逻辑扇区不在数据缓冲区的数据块中且数据缓冲区未满,若判断结果为是,则将数据写入空的数据缓冲区中。
5.根据权利要求1所述的写NAND型FLASH方法,其特征在于,包括当所述需写入FLASH的数据缓冲区数据块所对应的FAT表备份中的数据不为空时,或其虽为空,但所述空FAT表记录指示相应数据块数据被写过或相应FAT表被更新过时,读取FLASH上此数据块未更新扇区中的数据到所述数据缓冲区数据块;然后,将此数据缓冲区的数据块的数据按块写入到FLASH。
6.根据权利要求1所述的写NAND型FLASH方法,其特征在于,还包括如下步骤:在所述将拟写入FLASH数据块的数据,按扇区写入数据缓冲区的数据块中的步骤后,首先判断所写逻辑扇区是否属于FAT表,若判断结果为是,则更新所述FAT表备份中的数据,并在所述空FAT表写记录区中记载当前更新FAT表操作。
7.根据权利要求1所述的写NAND型FLASH方法,其特征在于,还包括如下步骤:在所述将拟写入FLASH数据块的数据,按扇区写入数据缓冲区的数据块中的步骤后,首先判断数据所属扇区是否在所述数据缓冲区的数据块内,在判断结果为是的情况下将数据写入数据缓冲区的数据块内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101178275A CN101324899B (zh) | 2008-08-05 | 2008-08-05 | 一种快速写nand型flash的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101178275A CN101324899B (zh) | 2008-08-05 | 2008-08-05 | 一种快速写nand型flash的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101324899A CN101324899A (zh) | 2008-12-17 |
CN101324899B true CN101324899B (zh) | 2010-06-02 |
Family
ID=40188438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101178275A Expired - Fee Related CN101324899B (zh) | 2008-08-05 | 2008-08-05 | 一种快速写nand型flash的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101324899B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807212B (zh) * | 2010-04-30 | 2013-05-08 | 迈普通信技术股份有限公司 | 嵌入式文件系统的缓存方法及嵌入式文件系统的缓存装置 |
CN101908023A (zh) * | 2010-08-06 | 2010-12-08 | 四川长虹电器股份有限公司 | NandFlash存储器中数据存储方法 |
CN102789425B (zh) * | 2012-07-17 | 2016-01-20 | 上海金智晟东电力科技有限公司 | 基于flash存储介质的文件读写方法 |
CN103970480A (zh) * | 2013-01-30 | 2014-08-06 | 北京金奔腾汽车科技有限公司 | 汽车电脑诊断仪sd卡flash刷屏 |
CN111221750B (zh) * | 2018-11-27 | 2023-08-22 | 建兴储存科技(广州)有限公司 | 固态储存装置的数据处理方法 |
CN112181898B (zh) * | 2020-09-23 | 2023-12-29 | 北京百汇安科技有限公司 | 嵌入式安全文件管理系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046803A (zh) * | 2006-03-28 | 2007-10-03 | 大唐移动通信设备有限公司 | 文件系统的安全管理方法及装置 |
CN101206617A (zh) * | 2006-12-20 | 2008-06-25 | 深圳市朗科科技有限公司 | 闪存的数据存储方法 |
-
2008
- 2008-08-05 CN CN2008101178275A patent/CN101324899B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046803A (zh) * | 2006-03-28 | 2007-10-03 | 大唐移动通信设备有限公司 | 文件系统的安全管理方法及装置 |
CN101206617A (zh) * | 2006-12-20 | 2008-06-25 | 深圳市朗科科技有限公司 | 闪存的数据存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101324899A (zh) | 2008-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240013832A1 (en) | Lifetime mixed level non-volatile memory system | |
US11232041B2 (en) | Memory addressing | |
CN102576293B (zh) | 固态存储设备和分层存储系统中的数据管理 | |
CN103049397B (zh) | 一种基于相变存储器的固态硬盘内部缓存管理方法及系统 | |
US8626987B2 (en) | Flash memory system and defragmentation method | |
US9146851B2 (en) | Single-level cell and multi-level cell hybrid solid state drive | |
EP2382547B1 (en) | Logical address offset | |
TWI506430B (zh) | 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置 | |
US9582416B2 (en) | Data erasing method, memory control circuit unit and memory storage apparatus | |
TWI399644B (zh) | 非揮發記憶體區塊管理方法 | |
US8296504B2 (en) | Data management method and flash memory storage system and controller using the same | |
CN103400598A (zh) | 固态存储器、包含其的计算机系统和操作其的方法 | |
CN100449549C (zh) | 嵌入式系统中NAND Flash存储器上建立文件系统的方法 | |
CN101556555B (zh) | 用于闪存的区块管理方法、其控制器与储存系统 | |
CN101634967B (zh) | 用于闪存的区块管理方法、储存系统与控制器 | |
CN101571832B (zh) | 数据写入方法及使用该方法的快闪存储系统与其控制器 | |
CN101324899B (zh) | 一种快速写nand型flash的方法 | |
US20100169556A1 (en) | Nonvolatile storage device, information recording system, and information recording method | |
CN101727395A (zh) | 闪存设备的管理系统、方法及闪存设备 | |
US20120166709A1 (en) | File system of flash memory | |
TW201917581A (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器 | |
CN102779096A (zh) | 一种基于页块面三维的闪存地址映射方法 | |
CN102662856A (zh) | 一种固态硬盘及其存取方法 | |
CN102306124A (zh) | Nand Flash芯片硬件驱动层的实现方法 | |
CN102981975A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100602 Termination date: 20170805 |