CN103268266A - 闪存校验存储方法 - Google Patents
闪存校验存储方法 Download PDFInfo
- Publication number
- CN103268266A CN103268266A CN2013100004135A CN201310000413A CN103268266A CN 103268266 A CN103268266 A CN 103268266A CN 2013100004135 A CN2013100004135 A CN 2013100004135A CN 201310000413 A CN201310000413 A CN 201310000413A CN 103268266 A CN103268266 A CN 103268266A
- Authority
- CN
- China
- Prior art keywords
- storage
- node
- address
- data
- chained list
- 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)
Abstract
一种闪存校验存储方法,所述方法包括:校验链表中每一节点的数据域存储的物理地址所对应的存储块;从链表中删除数据域中存储有坏块的物理地址的节点;将待存储数据以存储单元中块的大小为单位划分为N个数据块,其中N为大于或等于1的整数;将待存储数据存储到存储单元的N个存储块中,所述N个存储块由所述链表和所述当前节点地址确定;更新所述当前节点地址,使得所述当前节点地址指示数据域存储有最后存储数据的块的物理地址的节点的地址。
Description
技术领域
本发明涉及数据存储领域,特别涉及一种闪存校验存储方法。
背景技术
在服务器设备与终端设备之间或计算机设备内部装置之间进行数据传送时,特别需要用到存储设备作为缓冲设备。目前比较常见存储设备有闪存闪存和电可擦写可编程只读存储器(EEPROM),这两种存储设备分别具有以下优缺点:
首先,闪存的优点是容量大且价格低;缺点是擦写速度慢,而且必须先擦后写,每次擦除的最小单位为一个BANK,即64KB。而且单位存储空间可擦写次数少,约为10万次;
其次,EEPROM的缺点是容量小且价格高;优点是擦写速度快,可单个字节擦写,而且单位存储空间的可擦写次数多,可达到100万次。
现有的存储设备在存储数据时,一般至少有两部分数据需要存储:程序部分和用户数据部分。存储设备出厂后,程序部分一般不会再改变,除非进行软件升级,因此一般都会选择闪存作为程序部分的存储设备。而用户数据部分经常会被用户修改,对存储设备的可擦写次数和稳定性有较高的要求。
但是,如果为考虑成本而采用闪存存储用户数据,则会存在以下问题:闪存擦写速度慢,而且大部分SPI闪存必须以BANK(64KB)为最小擦除单位,一次擦除要100ms以上,擦除次数过多的话,势必会影响闪存存储设备的使用寿命,而且,对数据进行存储时,速度也较慢。
另一方面,由于意外断电等特殊原因会造成的闪存存储设备出现坏块,坏块的出现会对闪存存储设备的存储造成不可估量的损失,因此,需要一种方法避免由于坏块的出现造成的存储失败。
发明内容
为了解决上述问题,本发明的一个目的在于提供一种闪存校验存储方法,一方面通过在闪存存储器中设置校验单元,并在校验单元中存储链表和当前节点地址,使得避免在同一块或同一部分块上连续擦除,减少坏块的出现。
本发明的再一目的在于是提供闪存坏块的校验功能,通过在存储数据前校验闪存中存储单元的所有存储块,并删除链表中的所有坏块,从而避免由于坏块造成的闪存存储失败。
为了实现上述目的,本发明公开了一种闪存校验存储方法,所述闪存包括校验单元和存储单元,所述存储单元包括多个存储块,所述多个存储块用于存储待存储数据,所述校验单元用于存储一链表和当前节点地址,所述链表中的每一节点包括数据域和指针域,所述数据域存储所属节点所对应的除坏块以外的存储块的物理地址,所述指针域存储所属节点在所述链表中的下一节点的地址,所述当前节点地址指示数据域存储有最后存储数据的块的物理地址的节点的地址,所述方法包括:校验链表中每一节点的数据域存储的物理地址所对应的存储块;从链表中删除数据域中存储有坏块的物理地址的节点;将待存储数据以存储单元中块的大小为单位划分为N个数据块,其中N为大于或等于1的整数;将待存储数据存储到存储单元的N个存储块中,所述N个存储块由所述链表和所述当前节点地址确定;更新所述当前节点地址,使得所述当前节点地址指示数据域存储有最后存储数据的块的物理地址的节点的地址。
根据本发明的一个方面,其中所述N个存储块由所述链表和所述当前节点地址确定包括:确定所述当前节点地址指示的地址对应的节点的后N个节点的数据域存储的物理地址对应的存储块为所述N个存储块中的第N块。
根据本发明的另一方面,其中所述链表中的所有节点与所述存储单元中的除坏块外的所有存储块呈一一映射关系。
根据本发明的另一方面,其中所述链表是循环链表。
根据本发明的另一方面,其中当在校验单元的链表的最后一个节点的数据域中存储的物理地址对应的存储块中存储数据后,如果还有需要存储的数据,则接着通过首节点地址找到链表的第一个节点,并在第一个节点的数据域中存储的物理地址对应的存储块中存储数据。
本发明的效果在于:
一方面,能够避免在同一块或同一部分块上连续擦除,导致同一块或同一部分块的擦除次数较之其它块提前超出最大擦除次数,由此可减少坏块的提前出现。
另一方面,能够避免由于坏块造成的闪存存储失败,使得存储数据之前确保链表中指示的所有块都是有效块。
附图说明
所包括的附图用于进一步理解本发明,其作为说明书的一个组成部分并与说明书一起解释本发明的原理,在附图中:
图1示出了本发明闪存的结构框图;
图2示出了本发明一实施例的方法流程图;
图3示出了本发明另一实施例的方法流程图;
图4示出了本发明闪存存储器中校验单元中存储的循环链表的示意图。
图5示出了本发明闪存存储器中校验单元中存储的循环链表的示意图
具体实施方式
下面参照附图进一步描述本发明的优选实施例。本发明中,所述闪存包括校验单元和存储单元,所述存储单元包括多个存储块,所述多个存储块用于存储待存储数据,所述校验单元用于存储一链表和当前节点地址,所述链表中的每一节点包括数据域和指针域,所述数据域存储所属节点所对应的除坏块以外的存储块的物理地址,所述指针域存储所属节点在所述链表中的下一节点的地址,所述当前节点地址指示数据域存储有最后存储数据的块的物理地址的节点的地址,其中存储单元中的多个存储块具有相同的大小。
附图1示出闪存存储器的结构框图,如附图1所述,闪存存储器包括校验单元和存储单元,所述校验单元存储有一链表和一当前节点地址,所述存储单元包括多个存储块。虽然图1中存储块有固定数量,但是仅仅是示例性的,存储单元中的存储块可根据规格及成本的需要设定为任意数量。本领域技术人员知道,在本申请中待存储数据的大小远远小于闪存中存储单元的存储空间。
附图2示出了根据本发明一优选实施例的流程图,包括:校验链表中每一节点的数据域存储的物理地址所对应的存储块;从链表中删除数据域中存储有坏块的物理地址的节点,例如,如果链表中一节点的数据域存储的物理地址所对应的存储块为坏块,则将该节点的前一节点的指针域更新为存储该节点的下一节点的地址以删除该节点;将待存储数据以存储单元中块的大小为单位划分为N个数据块,其中N为大于或等于1的整数;将待存储数据存储到存储单元的N个存储块中,所述N个存储块由所述链表和所述当前节点地址确定;更新所述当前节点地址,使得所述当前节点地址指示数据域存储有最后存储数据的块的物理地址的节点的地址。其中所述N个存储块由所述链表和所述当前节点地址确定包括:确定所述当前节点地址指示的地址对应的节点的后N个节点的数据域存储的物理地址对应的存储块为所述N个存储块,例如当待存储数据的大小为1024KB,而每一块的大小为64KB,则将待存储数据划分为16个数据块;将待存储数据存储到存储单元的16个存储块中,所有16个存储块由所述链表确定;其中所述16个存储块由所述链表确定包括:确定所述当前节点地址指示的地址对应的节点的后16个节点的数据域存储的物理地址对应的存储块为所述16个存储块,也就是说所述当前节点地址指示的地址对应的节点的后1个节点的数据域存储的物理地址对应的存储块为第一个存储块,数据域存储所述第一个存储块的物理地址的节点的后1个节点的数据域存储的物理地址对应的存储块为第二个存储块,依次类推,确定所述16个存储块。其中所述链表中的所有节点与所述存储单元中的除坏块外的所有存储块呈一一映射关系。其中所述链表是循环链表。其中在前述的例子中,更新所述当前节点地址,使得所述当前节点地址指示数据域存储有最后存储数据的块的物理地址的节点的地址,即修改所述当前节点地址,即将所述当前节点地址修改为数据域存储有第16个存储块的物理地址的节点的地址。
附图3示出了根据本发明另一优选实施例的流程图,包括:将待存储数据以存储单元中块的大小为单位划分为N个数据块,其中N为大于或等于1的整数;校验链表中当前节点地址对应的节点的后N个节点的数据域存储的物理地址对应的存储块;从链表中删除数据域中存储有坏块的物理地址的节点,例如,如果链表中一节点的数据域存储的物理地址所对应的存储块为坏块,则将该节点的前一节点的指针域更新为存储该节点的下一节点的地址以删除该节点;将待存储数据存储到存储单元的校验后的N个存储块中,所述N个存储块由所述链表和所述当前节点地址确定;更新所述当前节点地址,使得所述当前节点地址指示数据域存储有最后存储数据的块的物理地址的节点的地址。其中所述N个存储块由所述链表和所述当前节点地址确定包括:确定所述当前节点地址指示的地址对应的节点的后N个节点的数据域存储的物理地址对应的存储块为所述N个存储块,例如当待存储数据的大小为1024KB,而每一块的大小为64KB,则将待存储数据划分为16个数据块;将待存储数据存储到存储单元的16个存储块中,所有16个存储块由所述链表确定;其中所述16个存储块由所述链表确定包括:确定所述当前节点地址指示的地址对应的节点的后16个节点的数据域存储的物理地址对应的存储块为所述16个存储块,也就是说所述当前节点地址指示的地址对应的节点的后1个节点的数据域存储的物理地址对应的存储块为第一个存储块,数据域存储所述第一个存储块的物理地址的节点的后1个节点的数据域存储的物理地址对应的存储块为第二个存储块,依次类推,确定所述16个存储块。其中所述链表中的所有节点与所述存储单元中的除坏块外的所有存储块呈一映射关系。其中所述链表是循环链表。其中在前述的例子中,更新所述当前节点地址,使得所述当前节点地址指示数据域存储有最后存储数据的块的物理地址的节点的地址,即修改所述当前节点地址,即将所述当前节点地址修改为数据域存储有第16个存储块的物理地址的节点的地址。
附图4示出了本发明闪存存储器中校验单元中存储的链表的示意图,其中所述链表包括数据域和指针域,所述数据域存储所属节点所对应的除坏块以外的存储块的物理地址,所述指针域存储所属节点在所述链表中的下一节点的地址,虽然图示中仅示出了三个节点,但是本领域技术人员知道,这种示例仅仅是实例性的,在本发明中所述链表的节点数量与所述闪存的存储单元中的除坏块外的所有存储块的数量相等。在该实例中,为了能够实现成功存储,必须实现成功寻址,因此还需要在闪存存储器中校验单元中存储首节点地址,其存储校验单元中存储的链表的第一个节点的地址。其中当在校验单元的链表的最后一个节点的数据域中存储的物理地址对应的存储块中存储数据后,如果还有需要存储的数据,则接着通过首节点地址找到链表的第一个节点,并在第一个节点的数据域中存储的物理地址对应的存储块中存储数据。
附图5示出了本发明闪存存储器中校验单元中存储的循环链表的示意图,其中所述链表包括数据域和指针域,所述数据域存储所属节点所对应的除坏块以外的存储块的物理地址,所述指针域存储所属节点在所述链表中的下一节点的地址,虽然图示中仅示出了三个节点,但是本领域技术人员知道,这种示例仅仅是实例性的,在本发明中所述链表的节点数量与所述闪存的存储单元中的除坏块外的所有存储块的数量相等。其中当在校验单元的最后一个节点的数据域中存储的物理地址对应的存储块中存储数据后,如果还有需要存储的数据,则接着通过当前节点地址找到链表的下一个节点,此时该下一个节点即链表的第一个节点,并在第一个节点的数据域中存储的物理地址对应的存储块中存储数据。
本发明能够避免在同一块或同一部分块上连续擦除,导致同一块或同一部分块的擦除次数较之其它块提前超出最大擦除次数,由此可减少坏块的提前出现。能够避免由于坏块造成的闪存存储失败,使得存储数据之前确保链表中指示的所有块都是有效块。
应该理解,上述实施例是本发明的示例性实施例,但是本发明并不局限于该实施例,在不脱离本发明精神和范围的情况下,可以对本发明做出多种的改进和变型。
Claims (4)
1.一种闪存校验存储方法,所述闪存包括校验单元和存储单元,所述存储单元包括多个存储块,所述多个存储块用于存储待存储数据,所述校验单元用于存储一链表和当前节点地址,所述链表中的每一节点包括数据域和指针域,所述数据域存储所属节点所对应的除坏块以外的存储块的物理地址,所述指针域存储所属节点在所述链表中的下一节点的地址,所述当前节点地址指示数据域存储有最后存储数据的块的物理地址的节点的地址,所述方法包括:
校验链表中每一节点的数据域存储的物理地址所对应的存储块;
从链表中删除数据域中存储有坏块的物理地址的节点;
将待存储数据以存储单元中块的大小为单位划分为N个数据块,其中N为大于或等于1的整数;
将待存储数据存储到存储单元的N个存储块中,所述N个存储块由所述链表和所述当前节点地址确定;
更新所述当前节点地址,使得所述当前节点地址指示数据域存储有最后存储数据的块的物理地址的节点的地址。
2.根据权利要求1的方法,其中所述N个存储块由所述链表和所述当前节点地址确定包括:
确定所述当前节点地址指示的地址对应的节点的后N个节点的数据域存储的物理地址对应的存储块为所述N个存储块。
3.根据权利要求1的方法,其中所述链表中的所有节点与所述存储单元中的除坏块外的所有存储块呈一一映射关系。
4.根据权利要求1的方法,其中所述链表是循环链表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013100004135A CN103268266A (zh) | 2013-01-04 | 2013-01-04 | 闪存校验存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013100004135A CN103268266A (zh) | 2013-01-04 | 2013-01-04 | 闪存校验存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103268266A true CN103268266A (zh) | 2013-08-28 |
Family
ID=49011898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013100004135A Pending CN103268266A (zh) | 2013-01-04 | 2013-01-04 | 闪存校验存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103268266A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750637A (zh) * | 2013-12-31 | 2015-07-01 | 国际商业机器公司 | 用于加速器的可扩展输入/输出数据机制 |
CN106656865A (zh) * | 2016-10-28 | 2017-05-10 | 杭州迪普科技股份有限公司 | 一种管理链表资源的方法及装置 |
WO2023050147A1 (zh) * | 2021-09-29 | 2023-04-06 | 长江存储科技有限责任公司 | 用于存储器的数据保护方法及其存储装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055532A1 (en) * | 2003-09-05 | 2005-03-10 | James Yu | Method for efficiently controlling read/write of flash memory |
US20070143532A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Method and system for accessing non-volatile storage devices |
CN101425041A (zh) * | 2007-10-30 | 2009-05-06 | 安凯(广州)软件技术有限公司 | 在nand flash存储器上建立fat文件***的优化方法 |
CN102508784A (zh) * | 2011-11-02 | 2012-06-20 | 杭州海康威视数字技术股份有限公司 | 视频监控设备中闪存卡的数据存储方法及其*** |
-
2013
- 2013-01-04 CN CN2013100004135A patent/CN103268266A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055532A1 (en) * | 2003-09-05 | 2005-03-10 | James Yu | Method for efficiently controlling read/write of flash memory |
US20070143532A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Method and system for accessing non-volatile storage devices |
CN101425041A (zh) * | 2007-10-30 | 2009-05-06 | 安凯(广州)软件技术有限公司 | 在nand flash存储器上建立fat文件***的优化方法 |
CN102508784A (zh) * | 2011-11-02 | 2012-06-20 | 杭州海康威视数字技术股份有限公司 | 视频监控设备中闪存卡的数据存储方法及其*** |
Non-Patent Citations (4)
Title |
---|
严蔚敏,吴伟民: "《数据结构(C语言版)》", 31 August 2006 * |
严蔚敏,吴伟民: "《数据结构(C语言版)》", 31 August 2006, article "线性链表" * |
胡博,任彧: "嵌入式设备的FAT文件***设计", 《杭州电子科技大学学报》 * |
邓中亮,贾凡: "基于FAT文件***的FLASH管理方案设计", 《科技咨询导报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750637A (zh) * | 2013-12-31 | 2015-07-01 | 国际商业机器公司 | 用于加速器的可扩展输入/输出数据机制 |
CN104750637B (zh) * | 2013-12-31 | 2018-04-06 | 国际商业机器公司 | 用于加速器的可扩展输入/输出数据机制 |
CN106656865A (zh) * | 2016-10-28 | 2017-05-10 | 杭州迪普科技股份有限公司 | 一种管理链表资源的方法及装置 |
CN106656865B (zh) * | 2016-10-28 | 2019-06-07 | 杭州迪普科技股份有限公司 | 一种管理链表资源的方法及装置 |
WO2023050147A1 (zh) * | 2021-09-29 | 2023-04-06 | 长江存储科技有限责任公司 | 用于存储器的数据保护方法及其存储装置 |
US12032860B2 (en) | 2021-09-29 | 2024-07-09 | Yangtze Memory Technologies Co., Ltd. | Data protection method for memory and storage device thereof |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101788332B1 (ko) | 비휘발성 메모리 시스템 내의 미사용 논리 어드레스들의 마운트 시간 맵핑 해제 | |
CN102623042B (zh) | 存储器***及其操作方法 | |
CN110678836A (zh) | 用于键值存储的持久性存储器 | |
US10120795B2 (en) | Wear-leveling nandflash memory reading/writing method | |
TWI510923B (zh) | 資料儲存裝置以及快閃記憶體控制方法 | |
CN108345433B (zh) | 用于最大化的可去重存储器的方法、存储器***和产品 | |
CN103677674B (zh) | 一种数据处理方法及装置 | |
US10678446B2 (en) | Bitmap processing for log-structured data store | |
GB2476536A (en) | Modified B+ tree to map logical addresses to physical addresses in NAND flash memory | |
CN103646063A (zh) | 一种星载高速文件管理*** | |
CN109976669B (zh) | 一种边缘存储方法、装置和存储介质 | |
CN102169460A (zh) | 变长数据管理方法及装置 | |
CN108664482B (zh) | Flash存储器及存储文件管理方法 | |
CN104750432B (zh) | 一种数据存储方法及装置 | |
US10001924B2 (en) | Efficient and dynamically sized reverse map to handle variable size data | |
GB2500292A (en) | Managing a stack of identifiers of free blocks in a storage pool using a hash based linked list | |
CN103268266A (zh) | 闪存校验存储方法 | |
CN115840731A (zh) | 文件处理方法、计算设备及计算机存储介质 | |
CN103116549B (zh) | 基于最大可擦除次数的闪存存储方法 | |
KR101676175B1 (ko) | 전원 손실 이후 데이터 손실을 방지하기 위한 메모리 저장 장치 및 방법 | |
CN102650972A (zh) | 数据存储方法、装置及*** | |
CN105279166A (zh) | 文件管理方法和*** | |
US11216383B2 (en) | Storage device providing a virtual memory region, electronic system including the same, and method of operating the same | |
US20130297859A1 (en) | Control device, storage device, and storage control method | |
CN108804571B (zh) | 一种数据存储方法、装置以及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
DD01 | Delivery of document by public notice |
Addressee: Suzhou Yiyuan Hongda Intellectual Property Agency Co., Ltd. Document name: Notification to Make Rectification |
|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
DD01 | Delivery of document by public notice |
Addressee: Suzhou Yiyuan Hongda Intellectual Property Agency Co., Ltd. Document name: Notification of Publication and of Entering the Substantive Examination Stage of the Application for Invention |
|
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130828 |