CN101441596B - 提高闪存介质读写速度的方法 - Google Patents
提高闪存介质读写速度的方法 Download PDFInfo
- Publication number
- CN101441596B CN101441596B CN 200710187526 CN200710187526A CN101441596B CN 101441596 B CN101441596 B CN 101441596B CN 200710187526 CN200710187526 CN 200710187526 CN 200710187526 A CN200710187526 A CN 200710187526A CN 101441596 B CN101441596 B CN 101441596B
- Authority
- CN
- China
- Prior art keywords
- memory medium
- flash memory
- data
- logical address
- play amount
- 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
Links
Images
Abstract
本发明提出一种提高闪存介质读写速度的方法,包括步骤:计算偏移量;根据偏移量对数据操作进行偏移处理;执行数据操作。本发明提供的提高闪存介质读写速度的方法能根据文件系统(例如fat16,fat32,ntfs等)把闪存介质的最小写入单位页与文件系统的最小写入单位簇对齐,让每个簇由多个页组成,实现对闪存介质读写数据时,明显提高读写速度,特别是写的速度,并且避免大量碎片的产生,而无需改变闪存介质硬件结构,也无需改变文件系统,易于实现。
Description
技术领域
本发明涉及静态存储器领域,特别涉及一种提高闪存介质读写速度的方法。
背景技术
随着闪存介质(flash)技术和应用的飞速发展,闪存介质的读写速度成为衡量闪存介质性能的重要指标,提高闪存介质的读写速度将大大提高数据处理效率,有利于扩展闪存介质的应用。现有的文件管理系统如fat文件系统对闪存介质写数据的过程是先写目录区、fat区等隐藏区,再写数据区。而闪存介质是以页为最小单位进行管理的,要写入的数据往往不是从闪存介质的页开头开始,而是从某页的中部开始写,又在某页的中间结束。由于闪存介质的特性,对某页写数据如果不是从该页的开头开始写,就要把该页保存的原有数据搬迁到ram里,把要写的新数据写到ram,然后把原有数据和新数据一起写进该页,过程耗时而且不便于管理,还在页中产生大量碎片,需要浪费很多时间回收这些碎片。
发明内容
本发明目的在于提供一种提高闪存介质读写速度的方法。
本发明提出一种提高闪存介质读写速度的方法,包括步骤:计算偏移量;根据偏移量对数据操作进行偏移处理;执行数据操作。
优选地,上述计算偏移量的步骤包括:获取数据区逻辑起始地址;取得闪存介质的页的扇区数;根据数据区逻辑起始地址和扇区数计算偏移量。
优选地,上述根据数据区逻辑起始地址和扇区数计算偏移量是将数据区逻辑起始地址与扇区数取余数,将取得的余数作为偏移量。
优选地,上述计算偏移量的步骤在每次格式化闪存介质后进行。
优选地,上述计算格式化存储介质包括向隐藏区写数据的步骤,计算偏移量的步骤在向隐藏区写数据的步骤之后进行。
上述数据操作包括向闪存介质指定逻辑地址写数据或从闪存介质指定逻辑地址读数据。
优选地,上述根据偏移量对数据操作进行偏移处理是将数据操作的指定逻辑地址与偏移量相加得到的和值作为实际逻辑地址。
优选地,上述提高闪存介质读写速度的方法,还包括步骤:判断数据操作指定逻辑地址是否大于等于数据区逻辑起始地址,若指定逻辑地址大于等于数据区逻辑起始地址则对数据操作进行偏移处理,取得实际逻辑地址。
上述执行数据操作是从实际逻辑地址或从指定逻辑地址开始执行数据操作。
上述偏移量保存在闪存介质的特定存储空间中。
本发明提供的提高闪存介质读写速度的方法能根据文件系统(例如fat16,fat32,ntfs等)把闪存介质的最小写入单位页与文件系统的最小写入单位簇对齐,让每个簇由多个页组成,实现对闪存介质读写数据时,明显提高读写速度,特别是写的速度,并且避免大量碎片的产生,而无需改变闪存介质硬件结构,也无需改变文件系统,易于实现。
附图说明
图1是本发明第一实施例的文件系统的数据组织形式示意图;
图2是本发明第一实施例的处理流程示意图;
图3是本发明第一实施例计算偏移量的流程示意图;
图4是本发明第一实施例执行数据操作的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
本发明提出第一实施例,基于Fat文件系统实现提高闪存介质读写速度。参照图1,示出Fat文件系统的数据组织形式。Fat文件系统是被windows,linux和大多数移动设备、手持设备操作系统广泛使用的一种文件系统。以fat 16文件系统为例,Fat文件系统将闪存介质分为数据区和隐藏区两部分。
数据区用来存放子目录和数据,占闪存介质存储空间的90%以上甚至更多。Fat文件系统将数据区分簇管理,文件是由多个簇组成的,一个簇为多个扇区,每个簇分别标号,通过簇号就可直接找到数据存放地址。
隐藏区用来存放管理闪存介质所需的参数和索引,包括Fat表、引导区域、参数区域和根目录区域等。隐藏区包括多个小区,其中MBR为主引导区,负责引导启动功能等,存放在磁盘的0地址;DBR为引导记录及结构区,说明磁盘结构的信息和各种参数等,紧跟着MBR后面存放;FAT1为文件分配表区,紧跟着DBR后面存放;FAT2为分配表的备份区,紧跟着FAT1后面存放;FDT 为根目录区,紧跟着FAT2后面存放。Fat表记录簇的占用情况分布和链接关系,根据Fat表可知簇被使用的情况。目录区域是存放文件目录和文件名地址登记的表,通过该表可以得到文件的第一个簇的簇号,进而得知该文件包含的所有簇号,从而访问该文件。隐藏区占整个闪存介质存储空间的不到10%,甚至更少。根据闪存介质容量的不同,上述各区所占用的存储空间有可能不一样,其中保存的表格大小也有可能不一样,但每个区都有固定的结构,其中保存的表格都遵循fat16文件系统规则。
本实施例把闪存介质中的隐藏区和数据区分开管理,对数据区进行数据操作时,根据数据操作取得要进行数据操作的指定逻辑地址,对指定逻辑地址进行偏移处理,使其对应到闪存介质中页的开头,即从页的开头开始进行数据操作,使数据中的簇由多个完整的页组成。本实施例的处理流程如图2所示,包括:
步骤S11,计算偏移量并保存起来;
步骤S12,在接收到数据操作指令后,分析数据操作指令中的指定逻辑地址,根据偏移量对数据操作进行偏移处理;
步骤S13,对闪存介质执行数据操作。
根据文件系统和闪存介质的特性,物理上闪存介质是以页为单位管理的,而逻辑上是以扇区为单位管理的,一个页内包含4个扇区,即数据以4个扇区为一组,分组存放在闪存介质中。本实施例定义偏移量以记录数据区逻辑起始地址在页中的位置。例如闪存介质的隐藏区的扇区分配情况为:MBR占用0-98扇区,DBR占用98-100扇区,FAT1占用100-181扇区,FAT1占用181-362扇区,数据区占用362-600000扇区,数据区逻辑起始地址就是362扇区。设指定页包括4个扇区,偏移量为2,说明数据区逻辑起始地址对应闪存介质的第90个页的第2个扇区。
本实施例提出计算偏移量的流程,包括:
步骤S111,获取数据区逻辑起始地址;
步骤S112,取得闪存介质的页的扇区数;
步骤S113,根据数据区逻辑起始地址和扇区数计算偏移量。
本实施例定义实际逻辑地址为要对数据区进行实际数据操作的地址,是指定逻辑地址和偏移量结合计算的结果。本实施例对数据操作进行偏移处理是指将数据操作的指定逻辑地址与偏移量结合运算得到实际逻辑地址。
基于上述第一实施例,本发明提出第二实施例。本实施例的流程与第一实施例类似,故不赘述。
本实施例中的数据操作包括向闪存介质指定逻辑地址写数据或从闪存介质指定逻辑地址读数据。对于这两类数据操作,本实施例的执行过程是相同的,都根据偏移量对数据操作进行偏移处理后执行数据操作。
根据文件系统的规范,写数据操作需要分别对隐藏区和数据区进行写操作。因为隐藏区的MBR、DBR、FAT1等区域是分配固定的并且数据量较小,不存在从页中间写造成的写操作缓慢问题,故本发明只需要对数据区的写操作进行偏移处理,不需要对隐藏区的写操作进行偏移处理,而是采用现有的写入技术执行写操作。当数据按照上述方式写入闪存介质后,隐藏区中的数据未经偏移处理,而数据区中的数据是经过偏移处理的,故读取隐藏区的数据操作不需要做偏移处理,而读取数据区的数据操作则需要进行偏移处理。因此本实施例提出,根据数据操作区域选择是否进行偏移处理。
本实施例提出,上述步骤S113,根据数据区逻辑起始地址和扇区数计算偏移量是将数据区逻辑起始地址与扇区数取余数,将取得的余数作为偏移量。以上述闪存介质为例,数据区逻辑起始地址是362扇区,指定页包括4个扇区,偏移量为362与4取余,得到余数2作为偏移量。
上述计算偏移量步骤是在每次格式化闪存介质后进行。闪存介质在生产过程中需要被格式化,在使用过程中也可能应用户要求而格式化。本实施例提出具体的计算偏移量的流程如图3所示,包括:
步骤S21,闪存介质上电,初始化;
步骤S22,判断是否要格式化闪存介质,如果不格式化则流程结束;如果要格式化则进行步骤S23;
步骤S23,格式化闪存介质;
步骤S24,将格式化产生的数据写入隐藏区;
步骤S25,判断是否已将所有数据都写入隐藏区;如果已全部写完则进行步骤S26,否则返回步骤S24;
步骤S26,分析隐藏区信息取得数据区逻辑起始地址;
步骤S27,计算偏移量;
步骤S28,将偏移量存储在闪存介质划出的特定存储空间中,流程结束。
上述步骤S24,将格式化产生的数据写入隐藏区,根据上述分析,将数据写入隐藏区是不需要进行偏移处理的,故本实施例在格式化后,先进行步骤S24和步骤S25,确定格式化产生的数据都已写入隐藏区之后再进行计算偏移量的步骤。上述步骤S28,将偏移量存储在闪存介质划出的特定存储空间中,所述特定存储空间具体是指那些不被数据操作所使用的存储区域。
本发明数据操作的具体过程如图4所示,包括:
步骤S31,闪存介质上电初始化,取得数据区逻辑起始地址,读取存储在特定存储空间中的偏移量;
步骤S32,接收对指定逻辑地址进行数据操作的命令;
步骤S33,从数据操作命令中获取指定逻辑地址;
步骤S34,比较指定逻辑地址和数据区逻辑起始地址,如果指定逻辑地址大于等于数据区逻辑起始地址则进行步骤S35,否则进行步骤S37;
步骤S35,指定逻辑地址结合偏移量得到实际逻辑地址;
步骤S36,从实际逻辑地址开始执行数据操作;
步骤S37,从数据操作的指定逻辑地址开始执行数据操作。
上述流程中,步骤S34,比较指定逻辑地址和数据区逻辑起始地址是实现根据数据操作区域选择是否进行偏移处理,具体来说如果指定逻辑地址大于等于数据区逻辑起始地址,说明指定逻辑地址位于数据区中,即数据操作是对数据区进行的,应当进行偏移处理;如果指定逻辑地址小于数据区逻辑起始地址,说明指定逻辑地址位于隐藏区中,不应进行偏移处理。仍以上述闪存介质为例,数据区逻辑起始地址为362,如果指定逻辑地址为365,比较发现指定逻辑地址大于数据区逻辑地址,说明指定逻辑地址指向数据区,应对指定逻辑地址进行偏移处理;如果指定逻辑地址为350,比较发现小于数据区逻辑地址,说明指定逻辑地址指向隐藏区,则不需做偏移处理,应直接按照指定逻辑地址执行数据操作。
上述步骤S35,指定逻辑地址结合偏移量得到实际逻辑地址,本实施例提出将数据操作的指定逻辑地址与偏移量相加得到的和值作为实际逻辑地址。仍以上述闪存介质为例,指定逻辑地址为366,对应指定页第91页中的第2个扇区,则对指定逻辑地址进行偏移处理,将指定逻辑地址加偏移量2得到368作为实际逻辑起始地址,对应指定页的下一页的起始。
步骤S16,从实际逻辑起始地址开始写入数据,即将数据从第121页的第一扇区开始写入,这样会浪费第91页的两个扇区,但实现了将数据操作都是整页进行的。
本实施例对于数据区读写操作的偏移处理使得对闪存介质的物理空间的使用有不连续的现象出现,但这一现象不会反应到文件系统,对于文件系统而言,存储空间在逻辑上依然是连续的,无须做改变。
本发明提出第三实施例,在上述两实施例基础上进一步改进。本实施例基于Fat等部分文件系统,不能保证其适用于其他文件系统,如果不对文件系统作识别就统一应用本发明的方法,则可能造成数据操作失败或出错。为避免这类问题发生,本实施例提出判断闪存介质是否适用本实施例。闪存介质在没有写入数据时是没有文件系统的,生产闪存介质时按常用的文件系统来分析闪存介质。本实施例选用按照fat文件系统进行分析,如果闪存介质中的文件系统与fat文件系统的格式不相符,则认为是闪存介质中没有文件系统,可对闪存介质进行格式化,或不采用本实施例的提高闪存介质读写速度的方法。
具体来说,本实施例通过读取隐藏区的MBR、DBR中存储的数据来分析,判断闪存介质是否遵循标准的文件系统结构,从而得知闪存介质是否已经格式化过,具备本实施例要求的文件系统。如果已经格式化过,则对MBR、DBR存储的数据进一步分析,得到隐藏区的各个小区所在地址和数据区逻辑起始地址。
本发明的上述实施例不仅限于fat 16文件系统,还可以应用于fat16,fat32,ntfs等等其他Fat文件系统以及其他多种文件系统,原理与本发明类似,故不赘述。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种提高闪存介质读写速度的方法,包括步骤:
根据数据操作取得要进行所述数据操作的指定逻辑地址;
计算偏移量;
判断所述数据操作的指定逻辑地址是否大于等于数据区逻辑起始地址,若所述指定逻辑地址大于等于所述数据区逻辑起始地址则对所述数据操作进行偏移处理,即,将所述数据操作的指定逻辑地址与偏移量相加得到的和值作为实际逻辑地址,使所述指定逻辑地址对应到所述闪存介质中的页的开头,从而从页的开头开始进行所述数据操作,进而使数据中的簇由多个完整的页组成,并实现所述数据操作是按照整页进行的;以及
从所述实际逻辑地址开始执行所述数据操作;
所述方法还包括:
如果所述指定逻辑地址小于所述数据区逻辑起始地址,说明所述指定逻辑地址位于隐藏区中,则不进行所述偏移处理;以及
从所述指定逻辑地址开始执行所述数据操作。
2.根据权利要求1所述的提高闪存介质读写速度的方法,其特征在于,所述计算偏移量的步骤包括:
获取所述数据区逻辑起始地址;
取得所述闪存介质的页的扇区数;
根据所述数据区逻辑起始地址和所述扇区数计算所述偏移量。
3.根据权利要求2所述的提高闪存介质读写速度的方法,其特征在于,所述根据所述数据区逻辑起始地址和所述扇区数计算所述偏移量是将所述数据区逻辑起始地址与所述扇区数取余数,将取得的余数作为所述偏移量。
4.根据权利要求1所述的提高闪存介质读写速度的方法,其特征在于,所述计算偏移量的步骤在每次格式化闪存介质后进行。
5.根据权利要求4所述的提高闪存介质读写速度的方法,其特征在于,在格式化闪存介质的步骤后,所述方法进一步包括将格式化产生的数据写入隐藏区的步骤,所述计算偏移量的步骤在所述将格式化产生的数据写入隐藏区的步骤之后进行。
6.根据权利要求1至5任意一项所述的提高闪存介质读写速度的方法,其特征在于,所述数据操作包括向闪存介质的所述指定逻辑地址写数据或从闪存介质的所述指定逻辑地址读数据。
7.根据权利要求1至5任意一项所述的提高闪存介质读写速度的方法,其特征在于,所述偏移量保存在所述闪存介质的、不被所述数据操作所使用的存储区域中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710187526 CN101441596B (zh) | 2007-11-21 | 2007-11-21 | 提高闪存介质读写速度的方法 |
HK09111048.0A HK1133308A1 (en) | 2007-11-21 | 2009-11-26 | Method for increasing speed of read/write of a flash memory medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710187526 CN101441596B (zh) | 2007-11-21 | 2007-11-21 | 提高闪存介质读写速度的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101441596A CN101441596A (zh) | 2009-05-27 |
CN101441596B true CN101441596B (zh) | 2013-05-01 |
Family
ID=40726041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200710187526 Active CN101441596B (zh) | 2007-11-21 | 2007-11-21 | 提高闪存介质读写速度的方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN101441596B (zh) |
HK (1) | HK1133308A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692211B (zh) * | 2009-09-15 | 2011-08-10 | 苏州超锐微电子有限公司 | 一种Flash数据管理方法 |
CN102243611B (zh) * | 2010-05-11 | 2015-06-17 | 深圳市朗科科技股份有限公司 | 数据存储方法和系统 |
CN102207912B (zh) * | 2010-07-07 | 2015-10-07 | 无锡中科龙泽信息科技有限公司 | 在设备端实现分区功能的闪存设备及其访问方法 |
CN102722456B (zh) * | 2012-05-30 | 2015-02-04 | 深圳市江波龙电子有限公司 | 闪存存储设备的数据写入方法和闪存存储设备 |
CN102831072B (zh) * | 2012-08-10 | 2016-03-02 | 深圳市江波龙电子有限公司 | 闪存设备及其管理方法、数据读写方法及读写装置 |
CN103559140B (zh) * | 2013-10-29 | 2016-07-20 | 深圳创维数字技术有限公司 | 一种用于flash存储数据的方法及装置 |
CN108845959B (zh) * | 2018-06-25 | 2023-06-23 | 联想(北京)有限公司 | 一种内存数据处理方法、装置和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1248334A (zh) * | 1997-12-16 | 2000-03-22 | Tdk株式会社 | 闪速存储器系统 |
CN1248335A (zh) * | 1997-12-22 | 2000-03-22 | Tdk株式会社 | 闪速存储器系统 |
CN1598785A (zh) * | 2003-09-17 | 2005-03-23 | 笙泉科技股份有限公司 | 有效率地控制闪速存储器读写的方法 |
-
2007
- 2007-11-21 CN CN 200710187526 patent/CN101441596B/zh active Active
-
2009
- 2009-11-26 HK HK09111048.0A patent/HK1133308A1/xx unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1248334A (zh) * | 1997-12-16 | 2000-03-22 | Tdk株式会社 | 闪速存储器系统 |
CN1248335A (zh) * | 1997-12-22 | 2000-03-22 | Tdk株式会社 | 闪速存储器系统 |
CN1598785A (zh) * | 2003-09-17 | 2005-03-23 | 笙泉科技股份有限公司 | 有效率地控制闪速存储器读写的方法 |
Non-Patent Citations (1)
Title |
---|
JP特表2001-521220A 2001.11.06 |
Also Published As
Publication number | Publication date |
---|---|
CN101441596A (zh) | 2009-05-27 |
HK1133308A1 (en) | 2010-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101441596B (zh) | 提高闪存介质读写速度的方法 | |
CN101980177B (zh) | 一种操作Flash的方法和装置 | |
US7689574B2 (en) | Index and method for extending and querying index | |
CN101263462B (zh) | 具有区块管理的非易失性存储器 | |
CN101777017B (zh) | 一种连续数据保护系统的快速恢复方法 | |
CN103019887B (zh) | 数据备份方法及装置 | |
US9996557B2 (en) | Database storage system based on optical disk and method using the system | |
CN101364166B (zh) | 将2048字节页的Nand Flash模拟成硬盘的方法和装置 | |
CN102999429A (zh) | 对具有非易失性存储器的系统的较快树扁平化 | |
US20080288710A1 (en) | Semiconductor Memory Device and Its Control Method | |
CN101488153A (zh) | 嵌入式Linux下大容量闪存文件系统的实现方法 | |
CN102253985B (zh) | 一种文件系统数据的管理方法及系统 | |
CN106502587A (zh) | 磁盘数据管理方法和磁盘控制装置 | |
CN108763531B (zh) | 一种mdvr文件存储系统及其运行方法 | |
CN104281717A (zh) | 一种建立海量id映射关系的方法 | |
CN101582084A (zh) | 一种数据存储的方法及装置 | |
CN101303667B (zh) | 建立磁盘空簇表及查找磁盘空簇的方法和装置 | |
CN100543748C (zh) | 一种利用文件分配表进行文件寻道的方法及系统 | |
CN101963993A (zh) | 一种数据库单表记录快速查找的方法 | |
CN102981975A (zh) | 闪存数据的管理方法和系统 | |
CN101241469A (zh) | 一种在嵌入式系统中存储、读取数据的方法及装置 | |
CN107133334A (zh) | 基于高带宽存储系统的数据同步方法 | |
CN101593193A (zh) | 一种智能卡文件系统管理方法 | |
CN101751390B (zh) | 物件导向储存装置的磁盘配置方法 | |
CN101295310A (zh) | 在磁盘上存储数据和元数据的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1133308 Country of ref document: HK |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1133308 Country of ref document: HK |