CN102253894B - 一种闪存存储器等概率连续空间存储文件的方法 - Google Patents
一种闪存存储器等概率连续空间存储文件的方法 Download PDFInfo
- Publication number
- CN102253894B CN102253894B CN 201110159866 CN201110159866A CN102253894B CN 102253894 B CN102253894 B CN 102253894B CN 201110159866 CN201110159866 CN 201110159866 CN 201110159866 A CN201110159866 A CN 201110159866A CN 102253894 B CN102253894 B CN 102253894B
- Authority
- CN
- China
- Prior art keywords
- file
- storage
- array
- null
- sequence
- 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)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种闪存存储器等概率连续空间存储文件的方法,通过对存储次数排序控制存储单元的存储次数,在此基础上对相同存储次数连续空间排序从而控制文件存储的连续性,实现连续存储单元数量由多至少排序。该方法包括管理序列存储区格式化、文件存储和文件删除。本方法实现了在对存储次数排序的基础上对相同存储次数的存储单元进行排序,克服了传统文件存储操作不均衡和闪存文件存储系统速度慢的缺陷,提高了文件存储空间的使用寿命和访问效率,具有良好的性能和实用性。
Description
技术领域
本发明属于数据存储技术领域,特别涉及一种闪存存储器等概率连续空间存储文件的方法。
背景技术
由于闪存存储器的寿命是有限的,不能无限次写入,存储单元的最大写入次数一般为105~106次。所以在采用NAND Flash的应用中,必须采用一定的机制,保证各个存储单元近似均衡连续使用,在避免某些单元提前损耗达到使用寿命前提下,提高访问效率。针对这一问题,许多研究者提出了一些算法:例如,Kawaguchi等提出了Cost-Benefit策略、Wells等提出了综合考虑回收效率和等概率的策略、Chiang等提出了CAT(Cost Age Times,简称CAT)策略等,这些方法主要是通过垃圾回收来实现对闪存存储器管理的优化,都需要记录大量的数据存储的时间参数,而且计算较复杂,现在为止没有一个成熟的适合用于资源有限嵌入式系统的闪存存储器存储文件的方法。
发明内容
针对现有技术存在的不足,本发明提供一种闪存存储器等概率连续空间存储文件的方法,闪存存储器等概率连续空间文件存储包括文件存储和文件删除。文件存储和文件删除的核心是管理序列存储区格式化、存储次数排序和相同存储次数连续空间排序。
一种闪存存储器等概率连续空间存储文件的方法,具体按如下步骤进行:
步骤1:管理序列存储区格式化
管理序列存储区格式化基于闪存存储器的大小和存储单元的大小设置专用的管理序列存储区。如果闪存存储器已格式化,把管理序列存储区数据读到RAM,等待文件操作命令;否则,按以下步骤执行管理序列存储区格式化:
步骤1-1:分配专用的管理序列存储区,管理序列存储区只限存储管理序列和空闲单元长度,管理序列包括存储单元序号、存储次数和状态位;
步骤1-2:设闪存存储器大小为FlashSize,存储单元的大小为UnitSize;
步骤1-3:计算空闲单元长度NullSize=|FlashSize/UnitSize|,状态位USEState=0表示存储单元空闲,USEState=1表示存储单元使用中;
步骤1-4:计算管理序列大小ArraySize=|FlashSize/UnitSize|×3;
步骤1-5:按升序初始化管理序列的存储单元序号;
步骤1-6:设置所有存储次数为0;
步骤1-7:设置状态位USEState=0;
步骤1-8:把管理序列和空闲单元长度存储到管理序列存储区。
步骤2:文件存储
文件的存储基于空闲存储单元的序列ArrayNULL存储文件。
设文件File的大小为NFile个存储单元,
步骤2-1:存储文件到ArrayNULL前NFile个元素指定的空闲存储单元;
步骤2-2:设置NFile个对应的空闲存储单元的存储次数NUSE=NUSE+1;
步骤2-3:设置NFile个对应空闲存储单元的状态位USEState=1;
步骤2-4:把NFile个对应空闲存储单元从ArrayNULL移到ArrayUSE;
步骤2-5:NullSize=NullSize-NFile;
步骤2-6:用存储次数排序算法排序ArrayNULL,存储次数排序基于存储次数将管理序列由低至高排序。存储次数排序算法具体过程如下:
设管理序列为Array、空闲单元管理序列为ArrayNULL、使用单元管理序列为ArrayUSE,则Array={ArrayNULL,ArrayUSE}。
设ArrayNULL={...,(Xi,i,0),(Xj,j,0),...},Xi、Xj分别是第i、j存储单元的存储次数。
若Xj<Xi,则ArrayNULL={...,(Xj,j,0),(Xi,i,0),...},直至序列ArrayNULL中所有存储次数满足升序排列。
步骤2-7:相同存储次数连续空间算法排序ArrayNULL,相同存储次数连续空间排序算法基于具有相同存储次数的连续存储单元数量将空闲单元管理序列由多至少排序。相同存储次数连续空间排序算法具体过程如下:
设序列B={...,(Yi,i,0),(Yj,j,0),...}∈ArrayNULL。
B中的所有元素满足Yi=Yj,即B中表示的所有存储单元具有相同的存储次数。
设Bmax∈B,Bmax是B中有最大连续存储单元数量的子集,则B={Bmax,...},直至序列B按连续存储单元数量由多至少排序。
步骤2-8:Array={ArrayNULL,ArrayUSE}。
步骤2-9:把管理序列Array和空闲单元长度NullSize存储到管理序列存储区。
步骤3:文件删除
文件的删除基于ArrayUSE删除文件。
设文件File的大小为NFile个存储单元,
步骤3-1:确定文件File使用的NFile个存储单元;
步骤3-2:设置NFile个对应使用存储单元的状态位USEState=0;
步骤3-3:把NFile个对应使用存储单元从ArrayUSE移到ArrayNULL;
步骤3-4:NullSize=NullSize+NFile;
步骤3-5:用存储次数排序算法排序ArrayNULL;
步骤3-6:相同存储次数连续空间算法排序ArrayNULL;
步骤3-7:Array={ArrayNULL,ArrayUSE};
步骤3-8:把管理序列Array和空闲单元长度NullSize存储到管理序列存储区。
本发明提出存储次数排序从而控制空间存储的存储次数,在此基础上提出相同存储次数连续空间排序从而控制文件存储的连续性,使文件存储在低存储次数连续存储空间。通过对仿真和实现进行性能评价,得出闪存存储器等概率连续空间存储文件的方法克服了传统文件存储操作不均衡和闪存文件管理系统速度慢的缺陷,提高了文件存储空间的使用寿命和访问效率,具有良好的性能和实用性。
附图说明
图1是本发明闪存存储器等概率连续空间存储文件的方法流程图;
图2是操作次数上限为100万次时两种文件存储方法运行结果的对比。
具体实施方式
下面结合附图和仿真过程对本发明做进一步说明。
(1)仿真环境
开发平台为VC++6.0,程序设计语言为C++,操作系统为WindowsXP。
(2)参数设置
常用FAT32、NTFS等文件系统的存储单元缺省设定大小为4k,不失一般性设闪存存储器的存储单元大小为4k,则
闪存容量 | 1G | 2G | 4G | 8G |
存储单元数量 | 262144 | 524288 | 1048576 | 2097152 |
设存储单元存储次数上限分别为10、50、100万次。
(3)4G闪存存储器仿真过程
1)管理序列存储区格式化
如果闪存存储器已格式化,把管理序列存储区数据读到RAM,等待文件操作命令;否则,按以下步骤执行管理序列存储区格式化:
步骤1-1:获得闪存存储器大小为FlashSize=4G;
步骤1-2:设置存储单元的大小为UnitSize=4k;
步骤1-3:计算空闲单元长度NullSize=|FlashSize/UnitSize|=1048576;
步骤1-4:计算管理序列大小ArraySize=|FlashSize/UnitSize|×3=3145728;
步骤1-5:按升序初始化管理序列的存储单元序号;
步骤1-6:设置所有存储单元的存储次数为0;
步骤1-7:设置USEState=0;
步骤1-8:把管理序列和空闲单元长度存储到管理序列存储区。
格式化后的管理序列存储区如表1所示
表1格式化后的管理序列存储区
2)文件存储
在文件管理程序的执行阶段,设计了一个随机选择系统:随机产生一个整数N:|N/2|=0时写入操作、|N/2|=1时删除操作。
文件存储:执行闪存存储器等概率连续空间文件管理方法的文件的存储算法。
具体过程如下:
设文件File的大小为NFile个存储单元,
步骤2-1:存储文件到ArrayNULL前NFile个元素指定的空闲存储单元;
步骤2-2:设置NFile个对应的空闲存储单元的存储次数NUSE=NUSE+1;
步骤2-3:设置NFile个对应空闲存储单元的状态位USEState=1;
步骤2-4:把NFile个对应空闲存储单元从ArrayNULL移到ArrayUSE;
步骤2-5:NullSize=NullSize-NFile;
步骤2-6:用存储次数排序算法排序ArrayNULL,存储次数排序基于存储次数将管理序列由低至高排序。存储次数排序算法具体过程如下:
设管理序列为Array、空闲单元管理序列为ArrayNULL、使用单元管理序列为ArrayUSE,则Array={ArrayNULL,ArrayUSE}。
设ArrayNULL={...,(Xi,i,0),(Xj,j,0),...},Xi、Xj分别是第i、j存储单元的存储次数。
若Xj<Xi,则ArrayNULL={...,(Xj,j,0),(Xi,i,0),...},直至序列ArrayNULL中所有存储次数满足升序排列。
存储次数排序前后对比,分别如表2-1,2-2所示。
表2-1存储次数排序前
Array序号 | 0 | … | i-1 | i | i+1 | … |
存储单元序号 | n | m | k | |||
存储次数 | N+1 | N+2 | N | |||
状态位 | 0 | 0 | 0 | 0 | 0 |
表2-2存储次数排序后
Array序号 | 0 | … | i-1 | i | i+1 | … |
存储单元序号 | k | n | m | |||
存储次数 | N | N+1 | N+2 | |||
状态位 | 0 | 0 | 0 | 0 | 0 |
步骤2-7:相同存储次数连续空间算法排序ArrayNULL,相同存储次数连续空间排序算法基于具有相同存储次数的连续存储单元数量将空闲单元管理序列由多至少排序。相同存储次数连续空间算法具体过程如下:
设序列B={...,(Yi,i,0),(Yj,j,0),...}∈ArrayNULL。
B中的所有元素满足Yi=Yj,即B中表示的所有存储单元具有相同的存储次数。
设Bmax∈B,Bmax是B中有最大连续存储单元数量的子集,则B={Bmax,...},直至序列B按连续存储单元数量由多至少排序。;
步骤2-8:Array={ArrayNULL,ArrayUSE}。
步骤2-9:把管理序列Array和空闲单元长度NullSize存储到管理序列存储区。
相同存储次数连续空间排序前后对比,分别如表3-1,3-2所示。
表3-1相同存储次数连续空间排序前
Array序号 | 0 | … | i | i+1 | i+2 | i+3 | i+4 | i+5 | i+6 | … |
存储单元序号 | k-2 | k | k+1 | j | j+1 | j+2 | j+4 | |||
存储次数 | N | N | N | N | N | N | N | |||
状态位 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
表3-2相同存储次数连续空间排序后
Array序号 | 0 | … | i | i+1 | i+2 | i+3 | i+4 | i+5 | i+6 | … |
存储单元序号 | k-2 | j | j+1 | j+2 | k | k+1 | j+4 | |||
存储次数 | N | N | N | N | N | N | N | |||
状态位 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
3)删除操作:执行闪存存储器等概率连续空间文件存储方法的文件删除算法:
具体过程如下:
设文件File的大小为NFile个存储单元,
步骤3-1:确定文件File使用的NFile个存储单元;
步骤3-2:设置NFile个对应使用存储单元的状态位USEState=0;
步骤3-3:把NFile个对应使用存储单元从ArrayUSE移到ArrayNULL;
步骤3-4:NullSize=NullSize+NFile;
步骤3-5:用存储次数排序算法排序ArrayNULL;
步骤3-6:相同存储次数连续空间算法排序ArrayNULL;
步骤3-7:Array={ArrayNULL,ArrayUSE};
步骤3-8:把管理序列Array和空闲单元长度NullSize存储到管理序列存储区。
(4)仿真结果
图5是操作次数上限为100万次时传统文件存储方法与本发明方法的运行结果比较,由图可以看出,本发明方法在空间利用程度方面远远超出传统文件存储方法的水平,在相同条件下空间利用较均衡,延长了闪存的使用寿命。传统文件存储方法与本发明方法的运行结果对比如表4示:
表4传统文件存储方法与本发明方法的运行结果对比
(运行次数单位:万次)
数据说明:
①以上数据是十次运行结果的平均值;
②由于常用闪存的实际存储单元大小为4k,因此大小为1G的闪存存储空间里面共有262144个存储单元,由此推知,大小为2G、4G、8G的闪存空间中所包含的存储单元数分别为524288、1048576和2097152。为了符合实际闪存的存储过程,测试块数分别为262144,524228,1048576和2097152,操作次数上限为10、50、100万次。
传统文件存储方法与本发明方法的文件断点数对比如表5所示。
表5传统文件存储方法与本发明方法的文件断点数对比
(运行次数单位:万次)
表5中数据是同一文件使用两种方法的文件断点数对比,文件的大小是随机产生的,只选取部分文件断点作以比较。
在相同的情况下,本发明方法的存储空间利用率相对于传统文件存储空间较高的,多次试验的结果证明连续空间等概率存储方法的最大操作次数在传统文件存储系统的操作次数的1.2至10倍之间,而且操作次数上限设定的越大,每一块上的文件操作次数越趋于一致。试验的结果证明本发明方法存储文件断点次数明显小于传统文件管理方法中文件的断点次数,从而文件的读取时间必然减少,因而具有良好的性能和实用性。
Claims (3)
1.一种闪存存储器等概率连续空间存储文件的方法,其特征在于该方法包括以下步骤:
步骤1:管理序列存储区格式化;
步骤2:文件存储;
步骤3:文件删除;
所述步骤1管理序列存储区格式化,基于闪存存储器的大小和存储单元的大小设置专用的管理序列存储区,如果闪存存储器已格式化,把管理序列存储区数据读到RAM,等待文件操作命令;否则,按以下步骤执行管理序列存储区格式化:
步骤1-1:分配专用的管理序列存储区,管理序列存储区只限存储管理序列和空闲单元长度,管理序列包括存储单元序号、存储次数和状态位;
步骤1-2:设置闪存存储器大小为FlashSize,存储单元的大小为UnitSize;
步骤1-3:计算空闲单元长度状态位USEState=0表示存储单元空闲,USEState=1表示存储单元使用中;
步骤1-5:按升序初始化管理序列的存储单元序号;
步骤1-6:设置所有存储单元的存储次数为0;
步骤1-7:设置状态位USEState=0;
步骤1-8:把管理序列和空闲单元长度存储到管理序列存储区;
所述步骤2文件存储,基于空闲存储单元的序列ArrayNULL存储文件,具体步骤如下:
设文件File的大小为NFile个存储单元,
步骤2-1:存储文件到ArrayNULL前NFile个元素指定的空闲存储单元;
步骤2-2:设置NFile个对应的空闲存储单元的存储次数NUSE=NUSE+1;
步骤2-3:设置NFile个对应空闲存储单元的状态位USEState=1;
步骤2-4:把NFile个对应空闲存储单元从ArrayNULL移到ArrayUSE;
步骤2-5:NullSize=NullSize-NFile;
步骤2-6:用存储次数排序算法排序ArrayNULL,存储次数排序基于存储次数将管理序列由低至高排序;
步骤2-7:用相同存储次数连续空间算法排序ArrayNULL,相同存储次数连续空间排序算法基于具有相同存储次数的连续存储单元数量将空闲单元管理序列由多至少排序;
步骤2-8:Array={ArrayNULL,ArrayUSE};
步骤2-9:把管理序列Array和空闲单元长度NullSize存储到管理序列存储区;
所述步骤3文件删除,基于ArrayUSE删除文件,具体步骤如下:
设文件File的大小为NFile个存储单元,
步骤3-1:确定文件File使用的NFile个存储单元;
步骤3-2:设置NFile个对应使用存储单元的状态位USEState=0;
步骤3-3:把NFile个对应使用存储单元从ArrayUSE移到ArrayNULL;
步骤3-4:NullSize=NullSize+NFile;
步骤3-5:用存储次数排序算法排序ArrayNULL;
步骤3-6:相同存储次数连续空间算法排序ArrayNULL;
步骤3-7:Array={ArrayNULL,ArrayUSE};
步骤3-8:把管理序列Array和空闲单元长度NullSize存储到管理序列存储区。
2.根据权利要求1所述的一种闪存存储器等概率连续空间存储文件的方法,其特征在于:步骤2-6中所述的存储次数排序算法具体过程如下:
设管理序列为Array、空闲单元管理序列为ArrayNULL、使用单元管理序列为ArrayUSE,则Array={ArrayNULL,ArrayUSE};
设ArrayNULL={…,(Xi,i,0),(Xj,j,0),…},Xi、Xj分别是第i、j存储单元的存储次数;
若Xj<Xi,则ArrayNULL={…,(Xj,j,0),(Xi,i,0),…},直至序列ArrayNULL中所有存储次数满足升序排列。
3.根据权利要求1所述的一种闪存存储器等概率连续空间存储文件的方法,其特征在于:步骤2-7中所述的相同存储次数连续空间排序算法具体过程如下:
设序列B={…,(Yi,i,0),(Yj,j,0),…}∈ArrayNULL;
B中的所有元素满足Yi=Yj,即B中表示的所有存储单元具有相同的存储次数;
设Bmax∈B,Bmax是B中有最大连续存储单元数量的子集,则B={Bmax,…},直至序列B按连续存储单元数量由多至少排序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110159866 CN102253894B (zh) | 2011-06-14 | 2011-06-14 | 一种闪存存储器等概率连续空间存储文件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110159866 CN102253894B (zh) | 2011-06-14 | 2011-06-14 | 一种闪存存储器等概率连续空间存储文件的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102253894A CN102253894A (zh) | 2011-11-23 |
CN102253894B true CN102253894B (zh) | 2013-09-04 |
Family
ID=44981169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110159866 Expired - Fee Related CN102253894B (zh) | 2011-06-14 | 2011-06-14 | 一种闪存存储器等概率连续空间存储文件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102253894B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707904B (zh) * | 2012-05-29 | 2014-10-08 | 北京大学 | 闪存磁盘混合存储结构中的数据管理方法及系统 |
US10534716B2 (en) * | 2016-07-13 | 2020-01-14 | Seagate Technology Llc | Limiting access operations in a data storage device |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1815629A (zh) * | 2005-11-25 | 2006-08-09 | 康佳集团股份有限公司 | 一种闪存装置的脏块回收方法 |
CN101488153A (zh) * | 2009-02-12 | 2009-07-22 | 浙江大学 | 嵌入式Linux下大容量闪存文件系统的实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6345001B1 (en) * | 2000-09-14 | 2002-02-05 | Sandisk Corporation | Compressed event counting technique and application to a flash memory system |
-
2011
- 2011-06-14 CN CN 201110159866 patent/CN102253894B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1815629A (zh) * | 2005-11-25 | 2006-08-09 | 康佳集团股份有限公司 | 一种闪存装置的脏块回收方法 |
CN101488153A (zh) * | 2009-02-12 | 2009-07-22 | 浙江大学 | 嵌入式Linux下大容量闪存文件系统的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102253894A (zh) | 2011-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10176113B2 (en) | Scalable indexing | |
CN103488709B (zh) | 一种索引建立方法及系统、检索方法及系统 | |
CN105242871B (zh) | 一种数据写入方法及装置 | |
CN106055277A (zh) | 一种去中心化的分布式异构存储系统数据分布方法 | |
CN103593436B (zh) | 文件合并方法和装置 | |
CN106095807B (zh) | 一种分布式文件系统纠删码缓存装置及其缓存方法 | |
CN102831222A (zh) | 一种基于重复数据删除的差量压缩方法 | |
CN111143243B (zh) | 一种基于nvm混合内存的缓存预取方法及系统 | |
CN105556485A (zh) | 基于相邻体和基于动态热阈值的热数据识别 | |
CN104424256B (zh) | 布隆过滤器生成方法和装置 | |
CN106407224A (zh) | 一种键值存储系统中文件压实的方法和装置 | |
CN104699424A (zh) | 一种基于页面热度的异构内存管理方法 | |
KR20200070116A (ko) | 대형 그래프 처리를 위한 그래프 데이터 분할 | |
CN103914483A (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN109117319A (zh) | 存储器系统及其操作方法 | |
CN110515542A (zh) | 数据存储方法、装置、计算设备、存储系统及存储介质 | |
CN102253894B (zh) | 一种闪存存储器等概率连续空间存储文件的方法 | |
CN102799750B (zh) | 几何体表面三角形剖分的公共边和非公共边快速生成方法 | |
CN102207964B (zh) | 实时海量数据索引建立方法及系统 | |
CN104636814A (zh) | 一种随机森林模型的优化方法及系统 | |
CN106844491A (zh) | 一种临时数据的写入、读取方法及写入、读取装置 | |
CN102567419A (zh) | 基于树结构的海量数据存储装置及方法 | |
CN109033159A (zh) | 一种基于顶点影响力的图数据布局方法 | |
CN117495127A (zh) | 用电负荷预测方法、装置、计算机设备及存储介质 | |
CN104123347A (zh) | 一种应用于boss系统的数据重删方法及系统 |
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 |
Granted publication date: 20130904 Termination date: 20140614 |
|
EXPY | Termination of patent right or utility model |