CN103309619A - 一种闪存数据存储方法 - Google Patents
一种闪存数据存储方法 Download PDFInfo
- Publication number
- CN103309619A CN103309619A CN2012100711127A CN201210071112A CN103309619A CN 103309619 A CN103309619 A CN 103309619A CN 2012100711127 A CN2012100711127 A CN 2012100711127A CN 201210071112 A CN201210071112 A CN 201210071112A CN 103309619 A CN103309619 A CN 103309619A
- Authority
- CN
- China
- Prior art keywords
- page
- leaf
- data
- former
- data storage
- 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.)
- Pending
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
本发明公开了一种闪存数据存储方法,将对闪存的写入操作和块擦除操作完全分隔开,避免了在对闪存做写入操作时,发生“块搬家”现象;从而显著提升对闪存的有效数据写入速度。对以闪存为存储介质的存储设备,进行文件写入时,其数据速率波动大的问题;采用本发明将显著提高小文件写入速度,达到与大文件写入速度同一级别;对于大文件的写入速度,也有相当程度的提升。本发明对以闪存为存储介质的存储设备,可以提高设备的稳定性,提升设备的兼容性。
Description
技术领域
本发明涉及数据存储技术领域,具体涉及NAND闪存数据存储技术领域。
背景技术
NAND FLASH(资料存储型闪存)由于具有容量高、价格低的优势,在电子产品中有着极其广泛的应用。如图1所示,在NAND FLASH的架构中,有块(Block)和页(Page)两种数据管理单元,其中块由一定数量的页组成(例如:64页、128页、256页等)。NAND FLASH的读取和编程操作,是以页(Page)为单位进行,而擦除操作,则是以块(Block)为单位进行。而且NAND FLASH必须要先擦除,才能被写入数据(编程)。这就产生了一个问题,若是改写某一个页(Page)上存储的数据,则需要对该页(Page)所位于的块(Block)进行擦除操作;而在块擦除时,不仅会将该页的原有数据清空,而且还会清除掉该块(Block)内其它页(Page)上的有效数据。
常规的NAND FLASH存储管理的技术方案,是建一个块(Block)映射表,用于映射线性逻辑块地址到真实的物理块地址;并预先保留一定数量的备用块;当然,还建专门的表结构对NAND FLASH中的坏块进行管理。当发生需要改写某页数据时,则取出一个预先擦除好的备用块,将新数据写到备用块的对应页位置;然后,将原数据块中其它含有效数据的页(Page)中的数据读出;再写入到备用块的相应的页(Page)位置;最后,再将该备用块(Block)填入块映射表中原数据块对应的位置,即取代原数据块,而原来的数据块则转为备用块;这样才完成一次数据改写的操作。这一数据转移动作俗称为“块搬家”。
正常情况下,当往NAND FLASH写入一页数据时,仅需要花费1个页(Page)的数据传输及其编程的时间;而当需要改写某页数据,即“块搬家”发生时,假设一个块(Block)包含N个页(Page),花费的时间最长可能为:N个页的写数据传输时间和编程时间,再加上(N-1)个页的读数据传输时间和页读取的等待时间;目前的主流NAND FLASH,其N值通常为128,或者256,也即,若往NAND FLASH写数据如果发生“块搬家”时,其花费的时间可能为正常写数据时间的数百倍。
对以NAND FLASH为存储介质(如U盘,SD卡等)的存储设备进行文件写入操作时,若是对大文件操作,其“块搬家”发生的次数较少,表现为写入速度还较快;而对小文件操作时,特别是对一批小文件进行操作,“块搬家”发生会非常频繁,表现为写入速度极慢。
另外,站在主机***底层驱动的角度看,只要“块搬家”发生,均会导致主机往NAND FLASH写入数据时时间超长,有可能会超过主机***的忍耐限度,从而导致某主机***对该NAND FLASH存储设备操作不稳定。
发明内容
本发明解决的技术问题是提出一种闪存数据存储方法,实现了在数据存储时将NAND FLASH基于页(Page)的写入(编程)和基于块(Block)的擦除完全分隔开。
本发明提出的闪存数据存储方法,包括以下写数据处理过程:确定待写入数据的原页地址,并判断所述原页是否为空白页;如果为空白页,则向所述原页地址写入数据,完成写数据处理;否则,确定一个为空白页的替代页,将所述替代页与所述原页的映射关系写入所述原页的冗余区,并向所述替代页地址写入数据,完成写数据处理。
进一步的,在所述确定待写入数据的原页地址处理之前还包括:建立用于记录所述闪存各页状态的页状态表。
进一步的,所述判断所述原页是否为空白页的处理为:通过查询所述页状态表判断所述原页是否为空白页。
进一步的,所述确定一个为空白页的替代页的处理为:通过查找所述页状态表,选定一个空白页,将空白页确定为替代页。
进一步的,所述建立用于记录所述闪存各页状态的页状态表为:建立由分散存储的多个子表构成的页状态表,所述每个子表记录至少一个页的状态。
进一步的,所述的页状态表中标识的页状态选择项包括:有效数据页、无效数据页、空白页和损坏页。
进一步的,所述将所述替代页与所述原页的映射关系写入所述原页的冗余区为:将所述替代页的地址写入所述原页的冗余区。
进一步的,所述向原页地址写入数据后还包括以下处理过程:在页状态表中将原页的页状态选择项设置为有效数据页。
进一步的,所述向所述替代页地址写入数据后还包括以下处理过程:在页状态表中将替代页的页状态选择项设置为有效数据页,将原页的页状态选择项设置为无效数据页。
本发明提出的闪存数据存储方法,将对闪存的写入操作和块擦除操作完全分隔开,避免了在对闪存做写入操作时,发生“块搬家”现象;从而显著提升对闪存的有效数据写入速度。对以闪存为存储介质(如U盘,SD卡等)的存储设备,进行文件写入时,其数据速率波动大的问题(比如对小文件的写入速度,远低于大文件的写入速度);采用本发明将显著提高小文件写入速度,达到与大文件写入速度同一级别;对于大文件的写入速度,也有相当程度的提升。本发明对以闪存为存储介质的存储设备,可以提高设备的稳定性,提升设备的兼容性。
附图说明
图1是NAND闪存中的数据管理机制原理图;
图2是本发明一种实施方式提出的NAND闪存数据存储方法流程图。
具体实施方式
下面结合附图,并通过实施例对本发明的实现进行详细说明。
本发明对于NAND(资料存储型)闪存,首先按照传统的方式,即使用逻辑块映射表,备用块表和坏块表等对NAND FLASH中的块(Block)进行管理。也就是将NAND FLASH中的块划分为数据块区,备用块区和坏块区;当然,还保留了若干块用于特殊用途(例如:用于存储管理等)。
本发明对数据块区中的数据块的所有页(逻辑页),预先建立页状态表,该页状态表用于确定所要查询的目标页是否为空白页,状态表中的字段包括:页逻辑地址和页状态选择项。在一种实施中页状态选择项包括:有效数据页、无效数据页、空白页和损坏页。此外页状态表的存储方式也可以进行灵活处理,可以采用一颗闪存芯片内对各页设置一个总的页状态表。也可以针对闪存芯片中的各块分别设置页状态表,即采用分散存储的多个子表构成页状态表,每个子表记录对应区块内至少一个页的状态信息。
每个数据页(Page)包括数据(Main)区和冗余(Spare)区。其中Main区用于存储该页的数据,冗余区用来存储该页的一些参数信息。本发明中由于将页逻辑地址和数据进行了分离,因此需要将两个关联页的映射关系写入原页的冗余区中,数据写入另一个选定的空白页中。在具体实施时,还可以在页的冗余区构建一个页信息数据结构,该数据结构至少需要标识出:该页与替代页之间的映射关系。最简单的映射关系记录方式可以为:将替代页的地址写入冗余区。还可以记录该数据页的状态等信息,如数据有效无效,该页是否坏页等等。
如图2所示,为本发明一种实施方式提出的NAND闪存数据存储方式。需要预先在NAND闪存中建立页状态表,并定义各页的冗余区的数据结构。可以按照上述的方式进行。然后写如数据的处理过程包括以下步骤:
步骤一:确定待写入数据的原页逻辑地址,通过查询页状态表判断所述原页的状态信息。
步骤二:判断原页是否为空白页;如果为空白页,则转入步骤四;如果不是原页,则转入步骤三。
步骤三:通过查找页状态表,选定一个空白页,将空白页确定为替代页;并将替代页的地址写入原页的冗余区。
步骤四:写入数据。即:如果原页为空白页,将数据写入原页;如果原页不是空白页,将数据写入替代页。
上述在向原页地址写入数据后还包括以下处理步骤:在页状态表中将原页的页状态选择项设置为有效数据页。
上述向替代页地址写入数据后还包括以下处理步骤:在页状态表中将替代页的页状态选择项设置为有效数据页,将原页的页状态选择项设置为无效数据页。
此外,还可以利用设备的空闲时间,对NAND FLASH页状态表中,标识出的无效数据页进行处理,例如:清除数据页中的无效数据内容等。
本发明提出的NAND FLASH存储方法,还可用于实现NAND FLASH基于页的磨损均衡。
以上所述实施例,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种闪存数据存储方法,包括以下写数据处理过程:确定待写入数据的原页地址,并判断所述原页是否为空白页;如果为空白页,则向所述原页地址写入数据,完成写数据处理;否则,确定一个为空白页的替代页,将所述替代页与所述原页的映射关系写入所述原页的冗余区,并向所述替代页地址写入数据,完成写数据处理。
2.根据权利要求1所述的闪存数据存储方法,其特征在于,在所述确定待写入数据的原页地址处理之前还包括:建立用于记录所述闪存各页状态的页状态表。
3.根据权利要求2所述的闪存数据存储方法,其特征在于,所述判断所述原页是否为空白页的处理为:通过查询所述页状态表判断所述原页是否为空白页。
4.根据权利要求2所述的闪存数据存储方法,其特征在于,所述确定一个为空白页的替代页的处理为:通过查找所述页状态表,选定一个空白页,将空白页确定为替代页。
5.根据权利要求2-4任一项所述的闪存数据存储方法,其特征在于,所述建立用于记录所述闪存各页状态的页状态表为:建立由分散存储的多个子表构成的页状态表,所述每个子表记录至少一个页的状态。
6.根据权利要求2-4任一项所述的闪存数据存储方法,其特征在于,所述的页状态表中标识的页状态选择项包括:有效数据页、无效数据页、空白页和损坏页。
7.根据权利要求1-5任一项所述的闪存数据存储方法,其特征在于,所述将所述替代页与所述原页的映射关系写入所述原页的冗余区为:将所述替代页的地址写入所述原页的冗余区。
8.根据权利要求6所述的闪存数据存储方法,其特征在于,所述向原页地址写入数据后还包括以下处理过程:在页状态表中将原页的页状态选择项设置为有效数据页。
9.根据权利要求6所述的闪存数据存储方法,其特征在于,所述向所述替代页地址写入数据后还包括以下处理过程:在页状态表中将替代页的页状态选择项设置为有效数据页,将原页的页状态选择项设置为无效数据页。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100711127A CN103309619A (zh) | 2012-03-16 | 2012-03-16 | 一种闪存数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100711127A CN103309619A (zh) | 2012-03-16 | 2012-03-16 | 一种闪存数据存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103309619A true CN103309619A (zh) | 2013-09-18 |
Family
ID=49134894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012100711127A Pending CN103309619A (zh) | 2012-03-16 | 2012-03-16 | 一种闪存数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103309619A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105006251A (zh) * | 2014-10-30 | 2015-10-28 | 华邦电子股份有限公司 | Nand型闪存及其程序化方法 |
CN107015918A (zh) * | 2017-03-31 | 2017-08-04 | 建荣半导体(深圳)有限公司 | 一种闪存管理***、方法及闪存芯片 |
CN110471628A (zh) * | 2019-08-21 | 2019-11-19 | 深圳市时创意电子有限公司 | 一种可减少数据页分散的数据存储方法 |
CN110580130A (zh) * | 2019-08-21 | 2019-12-17 | 天津大学 | 一种防止电源中断影响的将数据写入闪存模块的方法 |
CN110688084A (zh) * | 2019-10-14 | 2020-01-14 | 深圳市蓝度汽车电控技术有限公司 | 一种先入先出的flash数据存储方法、***及终端 |
CN111324287A (zh) * | 2018-12-14 | 2020-06-23 | 北京兆易创新科技股份有限公司 | 一种存储器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070260769A1 (en) * | 2006-03-28 | 2007-11-08 | Arndt Richard L | Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages |
CN101441891A (zh) * | 2007-11-19 | 2009-05-27 | 芯邦科技(深圳)有限公司 | 一种利用闪存的方法 |
CN101446922A (zh) * | 2007-11-29 | 2009-06-03 | 慧国(上海)软件科技有限公司 | 存储卡及于闪存进行资料更新的方法 |
CN101539887A (zh) * | 2009-05-06 | 2009-09-23 | 美商威睿电通公司 | 快闪存储器管理方法与计算机*** |
CN101930345A (zh) * | 2010-08-24 | 2010-12-29 | 苏州国芯科技有限公司 | 一种基于块访问的闪存读写方法 |
-
2012
- 2012-03-16 CN CN2012100711127A patent/CN103309619A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070260769A1 (en) * | 2006-03-28 | 2007-11-08 | Arndt Richard L | Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages |
CN101441891A (zh) * | 2007-11-19 | 2009-05-27 | 芯邦科技(深圳)有限公司 | 一种利用闪存的方法 |
CN101446922A (zh) * | 2007-11-29 | 2009-06-03 | 慧国(上海)软件科技有限公司 | 存储卡及于闪存进行资料更新的方法 |
CN101539887A (zh) * | 2009-05-06 | 2009-09-23 | 美商威睿电通公司 | 快闪存储器管理方法与计算机*** |
CN101930345A (zh) * | 2010-08-24 | 2010-12-29 | 苏州国芯科技有限公司 | 一种基于块访问的闪存读写方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105006251A (zh) * | 2014-10-30 | 2015-10-28 | 华邦电子股份有限公司 | Nand型闪存及其程序化方法 |
CN105006251B (zh) * | 2014-10-30 | 2016-06-29 | 华邦电子股份有限公司 | Nand型闪存及其程序化方法 |
US9514826B2 (en) | 2014-10-30 | 2016-12-06 | Winbond Electronics Corp. | Programming method for NAND-type flash memory |
CN107015918A (zh) * | 2017-03-31 | 2017-08-04 | 建荣半导体(深圳)有限公司 | 一种闪存管理***、方法及闪存芯片 |
CN107015918B (zh) * | 2017-03-31 | 2019-11-05 | 建荣半导体(深圳)有限公司 | 一种闪存管理***、方法及闪存芯片 |
CN111324287A (zh) * | 2018-12-14 | 2020-06-23 | 北京兆易创新科技股份有限公司 | 一种存储器 |
CN110471628A (zh) * | 2019-08-21 | 2019-11-19 | 深圳市时创意电子有限公司 | 一种可减少数据页分散的数据存储方法 |
CN110580130A (zh) * | 2019-08-21 | 2019-12-17 | 天津大学 | 一种防止电源中断影响的将数据写入闪存模块的方法 |
CN110471628B (zh) * | 2019-08-21 | 2022-12-02 | 深圳市时创意电子有限公司 | 一种可减少数据页分散的数据存储方法 |
CN110688084A (zh) * | 2019-10-14 | 2020-01-14 | 深圳市蓝度汽车电控技术有限公司 | 一种先入先出的flash数据存储方法、***及终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7516296B2 (en) | Flash memory storage device and read/write method | |
US8762627B2 (en) | Memory logical defragmentation during garbage collection | |
EP2519880B1 (en) | Micro-update architecture for address tables | |
CN101645043B (zh) | 写数据的方法、读数据的方法及存储设备 | |
US20180089074A1 (en) | Techniques to Manage Key-Value Storage at a Memory or Storage Device | |
CN109977034B (zh) | 数据储存装置以及非挥发式存储器操作方法 | |
CN104699413B (zh) | 数据管理方法、存储器存储装置及存储器控制电路单元 | |
EP1771862B1 (en) | Method and device to improve usb flash write performance | |
CN107301016A (zh) | 用于垃圾收集的有效性跟踪 | |
CN101604548B (zh) | 一种固态硬盘及数据存储方法 | |
CN102576332A (zh) | 电力中断管理 | |
CN101494085B (zh) | 防止非易失性存储器发生读取干扰的方法及其控制器 | |
CN103309619A (zh) | 一种闪存数据存储方法 | |
US9037814B2 (en) | Flash memory management method and flash memory controller and storage system using the same | |
TWI498899B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN104699417A (zh) | 数据储存装置以及其数据存取方法 | |
CN101320594A (zh) | 一种闪存芯片的物理操作方法 | |
CN103970669A (zh) | 用于加速在固态设备中的回收操作的物理到逻辑地址映射 | |
CN103049224A (zh) | 将数据导入物理磁带的方法、装置和*** | |
CN101425338B (zh) | 非易失性存储器的写入方法及使用此方法的控制器 | |
CN102200946B (zh) | 资料存取方法、记忆体控制器与储存*** | |
CN102981975A (zh) | 闪存数据的管理方法和*** | |
CN111737160A (zh) | 存储管理中多个副本的优化处理 | |
CN110262980B (zh) | 基于有限寿命存储介质的高速存储*** | |
CN102543184B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130918 |