CN102521146B - 一种flash存储器块细分的数据寻址存储方法 - Google Patents
一种flash存储器块细分的数据寻址存储方法 Download PDFInfo
- Publication number
- CN102521146B CN102521146B CN201110350916.6A CN201110350916A CN102521146B CN 102521146 B CN102521146 B CN 102521146B CN 201110350916 A CN201110350916 A CN 201110350916A CN 102521146 B CN102521146 B CN 102521146B
- Authority
- CN
- China
- Prior art keywords
- page
- data
- space
- bytes
- virtual address
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Read Only Memory (AREA)
Abstract
本发明提供一种flash存储器块细分的数据寻址存储方法,该方法中将flash存储器的存储区定义为复数个页空间,页空间的前4个字节进行保留,其中前4个字节的头2个字节作为该页空间状态标志;状态标志包括页清空、页接收以及页有效的状态;且页空间以每4个字节作为一存储单元来存储一数据;并将要写入的数据定义为存储的数据加上虚拟地址的结构;应用程序通过判断页空间的状态,存储要写入的数据;当一页空间写入数据满后,则将有效数据复制到另一个处于页清空状态的页空间;复制完毕后,页空间进行擦除操作并继续写数据。当有大量重要的数据并且改变很频繁的情况下,利用本发明的方法能及时保存及中断恢复数据;能保证数据存取灵活性。
Description
【技术领域】
本发明涉及嵌入式软件技术领域,尤其涉及一种flash存储器块细分的数据寻址存储方法。
【背景技术】
设备在运行时、往往有些数据是比较重要的,但是当有大量这种重要数据并且改变很频繁的情况下,这种数据的及时保存及中断恢复就成为了问题;且这些重要数据需要占用较大的空间,或者其存取的灵活性无法保证。
目前设备中并行接口的非易失存储器很多,如:EEPROM、FLASH、FRAM、SRAM+备用电池方式等占据了市场主流,几种产品性能方面各有优缺。使用广泛的是EEPROM及FLASH存储器,其它方式目前还存在标准问题及成本过高的问题。其中EEPROM的市场应用范围最为广泛,其缺点也很明显,写入速度慢,至少10ms的写等待时间,而且写操作次数有限制,并且总体存储容量有限。FLASH存储器存储容量大,但其存储特性又使得其在使用过程中存在存取不灵活的特点,具体表现为:传统flash特性为块(block)擦除、最小操作单元到位(bit)可编写;位操作特性为将1改写0,并且不可逆,逆操作需要通过flash块擦操作实现。
现有技术中提供了一种数据存储方法及装置,如公开日为2009年10月14日,公开号为CN101556556的中国专利,其特征点是:获得当前待写入数据块的前一数据块的起始存储地址;将所述起始存储地址减去所述当前待写入数据块的大小,得到中间结果;若所述中间结果小于0,则将所述中间结果映射到所述存储器的有效地址内,以该映射的结果作为所述当前待写入数据块的起始存储地址;若所述中间结果大于或等于0,则直接以该中间结果作为所述当前待写入数据块的起始存储地址;从所述当前待写入数据块的起始存储地址对应的存储单元开始写入所述当前待写入数据块。利用该发明实施例提供的方法,可以减少对存储器的读写次数,从而降低向存储器中写数据时的功耗;但其数据存储方法比较复杂,其还要判断起始存储地址与当前待写入数据块的大小关系。
【发明内容】
本发明要解决的技术问题,在于提供一种在大量存储易变数据的情况下,保证其易变数据存取的灵活性的数据寻址存储方法。
本发明是这样实现的:一种flash存储器块细分的数据寻址存储方法,包括如下步骤:
步骤10、将所述flash存储器的存储区定义为复数个页空间,所述页空间即根据flash存储器的大小划分出的flash存储器的块空间,将页空间的前4个字节进行保留,其中所述保留的前4个字节的头2个字节作为该页空间状态标志;所述状态标志包括页清空、页接收以及页有效的状态;所述页清空表示页空间处于flash存储器初始化、擦除状态;所述页接收表示页空间正处于页空间存储满或者页空间的数据要转移的状态;所述页有效表示页空间处于数据接收更新的状态;且页空间以每4个字节作为一存储单元来存储一数据,该4个字节的存储单元头2个字节用于保存要存储的数据的虚拟地址,后2个字节用于保存要存储的数据;
步骤20、当应用程序进行写入数据时,将要写入的数据定义为存储的数据加上虚拟地址的结构;判断页空间的状态标志是否为页清空,是则从当前清空的第一个页空间的页首地址开始查询页空间中各虚拟地址位置是否为0XFFFF,是,则该虚拟地址位置可保存数据,记录要保存的数据的虚拟地址到该页空间中该虚拟地址位置,并将该要保存的数据的存储的数据保存于所述虚拟地址位置的后2个字节空间中;此时将所述第一个页空间所述保留的前4个字节的头2个字节标记为页有效的状态,并继续写入下一个数据;否,则继续查询所述页空间中下一个的虚拟地址位置;如果当前的第一个页空间所有的所述虚拟地址位置无0XFFFF时,则当前的第一个页空间存储的数据已满,将该第一个页空间所述保留的前4个字节的头2个字节标记为页接收的状态;进入步骤30;不为页清空,则判断若为页接收,进入步骤30;判断若为页接收,则该页空间继续写入数据,继续步骤20;
步骤30、将所述第一个页空间里的有效数据复制到处于页清空状态的第二个页空间里;所述的有效数据为:应用程序不断写入数据,当写入的数据中存在同一虚拟地址的数据时,最后一次写入的数据为有效数据,当写入的数据中不存在同一虚拟地址的数据时,写入的数据都为有效数据;当第一个页空间所有有效数据复制完毕,进行页空间擦除操作,且将所述第一个页空间所述保留的前4个字节的头2个字节标记为页清空的状态;当第二个页空间在接收复制数据时,先将第二个页空间所述保留的前4个字节的头2个字节标记为页有效的状态;当接收完毕将第二个页空间所述保留的前4个字节的头2个字节标记为页接收的状态;第一个页空间继续写入数据。
本发明具有如下优点:本发明将flash存储器的存储区定义为复数个页空间,页空间的前4个字节进行保留,其中前4个字节的头2个字节作为该页空间状态标志;状态标志包括页清空、页接收以及页有效的状态;且页空间以每4个字节作为一存储单元来存储一数据;并将要写入的数据定义为存储的数据加上虚拟地址的结构;应用程序通过判断页空间的状态,存储要写入的数据;当一页空间写入数据满后,则将有效数据复制到另一个处于页清空状态的页空间;复制完毕后,页空间进行擦除操作并继续写数据。这样读取数据时,只要通过数据的虚拟地址进行查找,且当所述应用程序在写入或者读取数据时,设备意外中断,则重新启动设备,设备的flash存储器中的应用程序将查找处于页有效状态的页空间,并继续进行写入或者读取数据;且在有效数据复制过程中遇到设备中断,重新恢复后,也是可以根据查找处于也有效状态的页空间,进行继续复制。本发明实现了当有大量重要的数据并且改变很频繁的情况下,利用本发明的方法能及时保存及中断恢复数据;能保证数据存取灵活性。
【附图说明】
图1为本发明方法流程示意图。
图2为本发明页空间的结构示意图。
图3为本发明定义的数据结构示意图。
【具体实施方式】
请参阅图1至图3所示,本发明的一种flash存储器块细分的数据寻址存储方法,包括如下步骤:
步骤10、将所述flash存储器的存储区定义为复数个页空间,所述页空间即根据flash存储器的大小划分出的flash存储器的块空间,页空间的存储大小根据flash的块大小决定,不同型号及不同容量的flash的块(block)大小不同;如图2所示,将页空间的前4个字节进行保留,其中所述保留的前4个字节的头2个字节作为该页空间状态标志(后2个字节可以用于后期的二次开发);所述状态标志包括页清空、页接收以及页有效的状态;所述页清空表示页空间处于flash存储器初始化、擦除的状态;所述页接收表示页空间正处于页空间存储满或者页空间的数据要转移的状态;所述页有效表示页空间处于数据接收更新的状态;且页空间以每4个字节作为一存储单元来存储一数据,该4个字节的存储单元头2个字节用于保存要存储的数据的虚拟地址,后2个字节用于保存要存储的数据;
步骤20、当应用程序进行写入数据时,将要写入的数据定义为存储的数据加上虚拟地址的结构(如图3所示);判断页空间的状态标志是否为页清空,是则从当前清空的第一个页空间的页首地址开始查询页空间中各虚拟地址位置是否为0XFFFF,是,则该虚拟地址位置可保存数据,记录要保存的数据的虚拟地址到该页空间中该虚拟地址位置,并将该要保存的数据的存储的数据保存于所述虚拟地址位置的后2个字节空间中;此时将所述第一个页空间所述保留的前4个字节的头2个字节标记为页有效的状态,并继续写入下一个数据;否,则继续查询所述页空间中下一个的虚拟地址位置;如果当前的第一个页空间所有的所述虚拟地址位置无0XFFFF时,则当前的第一个页空间存储的数据已满,将该第一个页空间所述保留的前4个字节的头2个字节标记为页接收的状态;进入步骤30;
步骤30、将所述第一个页空间里的有效数据复制到处于页清空状态的第二个页空间里;所述的有效数据为:应用程序不断写入数据,当写入的数据中存在同一虚拟地址的数据时,最后一次写入的数据为有效数据(即写入的数据为存储的数据加上虚拟地址的结构,则存在存储的数据不一样,但是虚拟地址一样的情况;这样写入数据中出现同一虚拟地址的数据时,最后一次写入的数据为有效数据),当写入的数据中不存在同一虚拟地址的数据时,写入的数据都为有效数据;当第一个页空间所有有效数据复制完毕,进行页空间擦除操作,且将所述第一个页空间所述保留的前4个字节的头2个字节标记为页清空的状态;当第二个页空间在接收复制数据时,先将第二个页空间所述保留的前4个字节的头2个字节标记为页有效的状态;当接收完毕将第二个页空间所述保留的前4个字节的头2个字节标记为页接收的状态;第一个页空间继续写入数据。
在本发明设备意外中断的数据保存方法中,当应用程序进行读数据时,判断页空间的状态标志是否为有效,是则从当前有效的页空间的末尾的虚拟地址开始检测是否是有效数据;所述检测是否是有效数据是应用程序通过此时要读取数据的虚拟地址与存储在页空间中虚拟地址进行匹配判断是否一样,第一次匹配一样的数据即为有效数(即匹配的时候根据数据的虚拟地址进行匹配,匹配可能存在有2个或多个虚拟地址一样的数据,则第一匹配一样的数据即为有效数);是,则将读取该有效数据;否,则继续检测所述页空间的下一个虚拟地址。
如果想增加页空间的使用寿命可以增加多个页空间循环保存数据,当应用程序进行写入数据时,还能使用多个页空间进行写入数据的,其当有效的第一个页空间写满数据时,将第一个页空间里的有效数据复制到处于页清空状态的第二个页空间里;当第一个页空间再次写满数据时,将第一个页空间里的有效数据复制到处于页清空状态的第三个页空间里;当第一个页空间再次写满数据时,将第一个页空间里的有效数据复制到处于页清空状态的第四个页空间里;以此循环进行。其页空间保存数据的多少跟FLASH存储器的大小有关,如果页空间大小是1K那么只能保存1024/4-1=256-1个16位数据,如果保存8位数,可以用2个8位数据组合后保存或者直接保存,如果保存32位数据那就拆成2个16位保存。
值得一提的是:存储单元个数取决于存储单元大小和页空间大小。存储单元个数(Num)=页空间大小(Page size)/存储单元大小(32bit);例如:当页空间大小(Page size)为128KB时,存储单元个数(Num)为32K(32768)个。
其中页空间状态标志标记转换是使用flash的位操作特性:flash存储器中的数据由“1”改写为“0”时可以进行位操作,而由“0”改写为“1”则需要flash存储器中的整个块进行擦除操作才能实现,根据flash存储器这种特性可以对所在页空间标识多种状态。即数据在0xFFFF到0x0000之间,进行一个“1”改写为“0”的位操作,就可以表示一种状态,这种方法最后的状态一定是由0x0000到0xFFFF,从而形成完整一个状态循环。在本发明中只是利用了其中3中状态,即页清空(用0XFFFF表示)、页接收(用0XEEEE表示)以及页有效(用0X0000表示)的状态。
当所述应用程序在写入或者读取数据时,设备意外中断,则重新启动设备,设备的flash存储器中的应用程序将查找处于页有效状态的页空间,并继续进行写入或者读取数据;且在有效数据复制过程中遇到设备中断,重新恢复后,也是可以根据查找处于也有效状态的页空间,进行继续复制。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (4)
1.一种flash存储器块细分的数据寻址存储方法,其特征在于:包括如下步骤:
步骤10、将所述flash存储器的存储区定义为复数个页空间,所述页空间即根据flash存储器的大小划分出的flash存储器的块空间,将页空间的前4个字节进行保留,其中所述保留的前4个字节的头2个字节作为该页空间状态标志;所述状态标志包括页清空、页接收以及页有效的状态;所述页清空表示页空间处于flash存储器初始化、擦除状态;所述页接收表示页空间正处于页空间存储满或者页空间的数据要转移的状态;所述页有效表示页空间处于数据接收更新的状态;且页空间以每4个字节作为一存储单元来存储一数据,该4个字节的存储单元头2个字节用于保存要存储的数据的虚拟地址,后2个字节用于保存要存储的数据;
步骤20、当应用程序进行写入数据时,将要写入的数据定义为存储的数据加上虚拟地址的结构;判断页空间的状态标志是否为页清空,是则从当前清空的第一个页空间的页首地址开始查询页空间中各虚拟地址位置是否为0XFFFF,是,则该虚拟地址位置可保存数据,记录要保存的数据的虚拟地址到该页空间中该虚拟地址位置,并将该要保存的数据的存储的数据保存于所述虚拟地址位置的后2个字节空间中;此时将所述第一个页空间所述保留的前4个字节的头2个字节标记为页有效的状态,并继续写入下一个数据;否,则继续查询所述页空间中下一个的虚拟地址位置;如果当前的第一个页空间所有的所述虚拟地址位置无0XFFFF时,则当前的第一个页空间存储的数据已满,将该第一个页空间所述保留的前4个字节的头2个字节标记为页接收的状态;进入步骤30;不为页清空,则判断若为页接收,进入步骤30;判断若为页有效,则该页空间继续写入数据,继续步骤20;
步骤30、将所述第一个页空间里的有效数据复制到处于页清空状态的第二个页空间里;所述的有效数据为:应用程序不断写入数据,当写入的数据中存在同一虚拟地址的数据时,最后一次写入的数据为有效数据,当写入的数据中不存在同一虚拟地址的数据时,写入的数据都为有效数据;当第一个页空间所有有效数据复制完毕,进行页空间擦除操作,且将所述第一个页空间所述保留的前4个字节的头2个字节标记为页清空的状态;当第二个页空间在接收复制数据时,先将第二个页空间所述保留的前4个字节的头2个字节标记为页有效的状态;当接收完毕将第二个页空间所述保留的前4个字节的头2个字节标记为页接收的状态;第一个页空间继续写入数据。
2.根据权利要求1所述的一种flash存储器块细分的数据寻址存储方法,其特征在于:当应用程序进行读数据时,判断页空间的状态标志是否为有效,是则从当前有效的页空间的末尾的虚拟地址开始检测是否是有效数据;所述检测是否是有效数据是应用程序通过此时要读取数据的虚拟地址与存储在页空间中虚拟地址进行匹配判断是否一样,第一次匹配一样的数据即为有效数;是,则将读取该有效数据;否,则继续检测所述页空间的下一个虚拟地址;不是有效,则继续判断下一页空间。
3.根据权利要求1所述的一种flash存储器块细分的数据寻址存储方法,其特征在于:所述步骤20中当应用程序进行写入数据时,能用多个页空间进行写入数据的,当有效的第一个页空间写满数据时,将第一个页空间里的有效数据复制到处于页清空状态的第二个页空间里;当第一个页空间再次写满数据时,将第一个页空间里的有效数据复制到处于页清空状态的第三个页空间里;当第一个页空间再次写满数据时,将第一个页空间里的有效数据复制到处于页清空状态的第四个页空间里;以此循环进行。
4.根据权利要求1所述的一种flash存储器块细分的数据寻址存储方法,其特征在于:当所述应用程序在写入或者读取数据时,设备意外中断,则重新启动设备,设备的flash存储器中的应用程序将查找处于页有效状态的页空间,并继续进行写入或者读取数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110350916.6A CN102521146B (zh) | 2011-11-08 | 2011-11-08 | 一种flash存储器块细分的数据寻址存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110350916.6A CN102521146B (zh) | 2011-11-08 | 2011-11-08 | 一种flash存储器块细分的数据寻址存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102521146A CN102521146A (zh) | 2012-06-27 |
CN102521146B true CN102521146B (zh) | 2014-10-22 |
Family
ID=46292076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110350916.6A Expired - Fee Related CN102521146B (zh) | 2011-11-08 | 2011-11-08 | 一种flash存储器块细分的数据寻址存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102521146B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605478B (zh) * | 2013-05-17 | 2016-12-28 | 华为技术有限公司 | 存储地址标示、配置方法和数据存取方法及系统 |
TWI556103B (zh) * | 2016-02-05 | 2016-11-01 | 新唐科技股份有限公司 | 記憶體裝置及其資料存取方法 |
CN109841259B (zh) * | 2017-11-29 | 2020-12-29 | 北京兆易创新科技股份有限公司 | 提高nor型存储阵列读取速度的方法及装置 |
CN111708487A (zh) * | 2020-05-26 | 2020-09-25 | 杭州涂鸦信息技术有限公司 | 一种数据存储的方法、装置及计算机存储介质 |
CN112466371B (zh) * | 2020-12-17 | 2022-09-09 | 宁波拓普集团股份有限公司 | 一种循环利用闪存模拟字节擦除功能的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1272716C (zh) * | 2002-12-04 | 2006-08-30 | 联发科技股份有限公司 | 存储器数据管理方法及其配置方式 |
CN101546294A (zh) * | 2009-04-30 | 2009-09-30 | 青岛海信宽带多媒体技术有限公司 | 一种Flash存储器的数据存储方法 |
CN101556556A (zh) * | 2009-05-22 | 2009-10-14 | 炬力集成电路设计有限公司 | 一种数据存储方法及装置 |
CN101963942A (zh) * | 2010-09-13 | 2011-02-02 | 福建新大陆通信科技股份有限公司 | 一种机顶盒nor型flash快速存储的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7743303B2 (en) * | 2007-01-22 | 2010-06-22 | Micron Technology, Inc. | Defective memory block remapping method and system, and memory device and processor-based system using same |
-
2011
- 2011-11-08 CN CN201110350916.6A patent/CN102521146B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1272716C (zh) * | 2002-12-04 | 2006-08-30 | 联发科技股份有限公司 | 存储器数据管理方法及其配置方式 |
CN101546294A (zh) * | 2009-04-30 | 2009-09-30 | 青岛海信宽带多媒体技术有限公司 | 一种Flash存储器的数据存储方法 |
CN101556556A (zh) * | 2009-05-22 | 2009-10-14 | 炬力集成电路设计有限公司 | 一种数据存储方法及装置 |
CN101963942A (zh) * | 2010-09-13 | 2011-02-02 | 福建新大陆通信科技股份有限公司 | 一种机顶盒nor型flash快速存储的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102521146A (zh) | 2012-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI398770B (zh) | 用於快閃記憶體的資料存取方法、儲存系統與控制器 | |
US8041884B2 (en) | Controller for non-volatile memories and methods of operating the memory controller | |
EP2605142B1 (en) | Lba bitmap usage | |
US8312554B2 (en) | Method of hiding file at data protecting mode for non-volatile memory module, memory controller and portable memory storage apparatus | |
US8046645B2 (en) | Bad block identifying method for flash memory, storage system, and controller thereof | |
US8214578B2 (en) | Method of storing data into flash memory according to usage patterns of addresses and data storage system using the same | |
CN103729303B (zh) | 一种Flash的数据写入和读取方法 | |
CN102521146B (zh) | 一种flash存储器块细分的数据寻址存储方法 | |
US20110231597A1 (en) | Data access method, memory controller and memory storage system | |
CN107168647A (zh) | Flash数据读写方法及系统 | |
CN107818269B (zh) | 一种基于Flash的文件保存方法及系统 | |
CN105242871A (zh) | 一种数据写入方法及装置 | |
US20090037646A1 (en) | Method of using a flash memory for a circular buffer | |
US20130060991A1 (en) | Solid state drive and garbage collection control method thereof | |
CN109669889B (zh) | 一种轻量型Nor Flash闪存控制方法和装置 | |
CN102135942A (zh) | 一种存储设备中实现损耗均衡的方法及存储设备 | |
EP3752905A1 (en) | Append only streams for storing data on a solid state device | |
CN103365786A (zh) | 数据存储方法、装置和系统 | |
US20100241788A1 (en) | Flash memory writing mtheod and stroage system and controller using the same | |
US20100115187A1 (en) | Non-volatile data storage system and method thereof | |
CN108874574B (zh) | 一种垃圾回收处理方法及相关装置 | |
CN102981975A (zh) | 闪存数据的管理方法和系统 | |
CN100456263C (zh) | 在税控收款机中使用闪存时处理坏块的方法 | |
CN112347001B (zh) | 闪存垃圾回收的校验方法、装置及电子设备 | |
US20120079231A1 (en) | Data writing method, memory controller, and memory storage apparatus |
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: 20141022 Termination date: 20211108 |