CN108762975B - 一种ecc数据存储方法、系统及存储介质 - Google Patents

一种ecc数据存储方法、系统及存储介质 Download PDF

Info

Publication number
CN108762975B
CN108762975B CN201810507105.4A CN201810507105A CN108762975B CN 108762975 B CN108762975 B CN 108762975B CN 201810507105 A CN201810507105 A CN 201810507105A CN 108762975 B CN108762975 B CN 108762975B
Authority
CN
China
Prior art keywords
ecc
user data
data
writing
unit
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
Application number
CN201810507105.4A
Other languages
English (en)
Other versions
CN108762975A (zh
Inventor
罗胜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Demingli Electronics Co Ltd
Original Assignee
Shenzhen Demingli Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Demingli Electronics Co Ltd filed Critical Shenzhen Demingli Electronics Co Ltd
Priority to CN201810507105.4A priority Critical patent/CN108762975B/zh
Publication of CN108762975A publication Critical patent/CN108762975A/zh
Application granted granted Critical
Publication of CN108762975B publication Critical patent/CN108762975B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems

Abstract

本发明提供了一种ECC数据存储方法、系统及存储介质。本发明的有益效果是:1.将用户数据与ECC纠错码分开存放,通过内在地址关联,简单的计算就可以计算出用户数据所对应的ECC纠错码。同时用户空间损失较少,无效空间占比由50%降为(2/128=)1.56%,极大提高用户可见空间;2.采用数据页存放ECC partiy数据,比flash的冗余空间大,可以对Flash采用更大的ECC模式,保证数据的稳定性,同时具有高扩展性。

Description

一种ECC数据存储方法、系统及存储介质
技术领域
本发明涉及存储器技术领域,尤其涉及一种ECC数据存储方法、系统及存储介质。
背景技术
随着NorFlash工艺发展,稳定性逐渐降低,为了保证NorFlash的准确性,需要采用ECC来进行纠错以及判断数据是否正确,一旦出错可以通过ECC进行纠正,即使纠正不过来,也可以提前知道数据出错,进行相关出错处理,避免后期出现更严重的问题。
但是Nor Flash内部也没有像Nand Flash一样有冗余空间用于存放ECC纠错码,所以需要将Flash页内有效数据空间作为冗余空间,存放ECC纠错码。
如图1-2所示,NorFlash一旦使用有效空间模拟冗余空间,就会导致数据出现512B不对齐情况,为了方便驱动以及文件系统的处理,通常将1024的页只保存512B有效数据,剩余512B只保留大约不超过20B的ECC纠错码,导致一个页内其他492B空间浪费,对客户只能提供一半容量。
发明内容
本发明提供了一种ECC数据存储方法,包括依次执行如下步骤:
计算步骤:控制器内部的ECC硬件模块根据用户数据计算并生成ECC parity,所述ECC parity用于后续进行检测和修正校验码;
发送步骤:申请一个空闲的数据页地址,发送整页编程命令,将用户数据写入Flash;
第一判断步骤:判断编程是否正常,如果是那么执行写入步骤,否则执行用户数据写入步骤;
写入步骤:根据空闲的数据页地址找到对应的ecc保存地址,发送单字节编程命令,将ECC parity数据写入Flash;
第二判断步骤:判断编程是否正常,如果是那么退出,否则执行用户数据写入步骤;
用户数据写入步骤:换一个物理块发送整页编程命令,将用户数据写入Flash,然后执行第三判断步骤;
第三判断步骤:判断编程是否正常,如果是执行写入步骤,否则退出。
作为本发明的进一步改进,在所述计算步骤之前还执行如下步骤:
用户数据发送步骤:主机发送用户数据;
用户数据接收步骤:从主机接收用户数据。
作为本发明的进一步改进,ECC数据存储方法中每个物理块最后两个物理页作为物理块的冗余区域,用于存放物理块内其他物理页的纠错码,通过页号计算纠错码在页内的偏移。
作为本发明的进一步改进,ECC数据存储方法中物理页N的纠错码存放于N*14开始地址,一旦超过1024Byte,则存放下一个物理页;读写数据时,纠错码的地址不需要额外保存,只需要通过N*14+物理页126对应地址即可计算。
本发明还提供了一种ECC数据存储系统,包括:
计算单元:用于控制器内部的ECC硬件模块根据用户数据计算并生成ECC parity,所述ECC parity用于后续进行检测和修正校验码;
发送单元:申请一个空闲的数据页地址,用于发送整页编程命令,将用户数据写入Flash;
第一判断单元:用于判断编程是否正常,如果是那么执行写入单元,否则执行用户数据写入单元;
写入单元:根据空闲的数据页地址找到对应的ecc保存地址,用于发送单字节编程命令,将ECC parity数据写入Flash;
第二判断单元:用于判断编程是否正常,如果是那么退出,否则执行用户数据写入单元;
用户数据写入单元:用于换一个物理块发送整页编程命令,将用户数据写入Flash,然后执行第三判断单元;
第三判断单元:用于判断编程是否正常,如果是执行写入单元,否则退出。
作为本发明的进一步改进,在所述计算单元之前还执行如下单元:
用户数据发送单元:用于主机发送用户数据;
用户数据接收单元:用于从主机接收用户数据。
作为本发明的进一步改进,ECC数据存储系统的每个物理块最后两个物理页作为物理块的冗余区域,用于存放物理块内其他物理页的纠错码,通过页号计算纠错码在页内的偏移。
作为本发明的进一步改进,ECC数据存储系统的物理页N的纠错码存放于N*14开始地址,一旦超过1024Byte,则存放下一个物理页;读写数据时,纠错码的地址不需要额外保存,只需要通过N*14+物理页126对应地址即可计算。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现所述的方法的步骤。
本发明的有益效果是:1.将用户数据与ECC纠错码分开存放,通过内在地址关联,简单的计算就可以计算出用户数据所对应的ECC纠错码。同时用户空间损失较少,无效空间占比由50%降为(2/128=)1.56%,极大提高用户可见空间;2.采用数据页存放ECC partiy数据,比flash的冗余空间大,可以对Flash采用更大的ECC模式,保证数据的稳定性,同时具有高扩展性。
附图说明
图1是用户数据带ECC数据图。
图2是全部存放用户数据图。
图3是本发明的方法流程图。
图4是本发明闪存数据存储图。
图5是本发明的Flash内部数据存储图。
具体实施方式
如图3所示,本发明公开了一种ECC数据存储方法,包括依次执行如下步骤:
计算步骤:控制器内部的ECC硬件模块根据用户数据计算并生成ECC parity,所述ECC parity用于后续进行检测和修正校验码;
发送步骤:申请一个空闲的数据页地址,发送整页编程命令,将用户数据写入Flash;
第一判断步骤:判断编程是否正常,如果是那么执行写入步骤,否则执行用户数据写入步骤;
写入步骤:根据空闲的数据页地址找到对应的ecc保存地址,发送单字节编程命令,将ECC parity数据写入Flash;
第二判断步骤:判断编程是否正常,如果是那么退出,否则执行用户数据写入步骤;
用户数据写入步骤:换一个物理块(block)发送整页编程命令,将用户数据写入Flash,然后执行第三判断步骤;
第三判断步骤:判断编程是否正常,如果是执行写入步骤,否则退出。
在所述计算步骤之前还执行如下步骤:
用户数据发送步骤:主机发送用户数据;
用户数据接收步骤:从主机接收用户数据。
ECC数据存储方法的每个物理块最后两个物理页(page)作为物理块的冗余区域,用于存放物理块内其他物理页的纠错码,通过页号计算纠错码在页内的偏移。
ECC数据存储方法的物理页N的纠错码存放于N*14开始地址,一旦超过1024Byte,则存放下一个物理页;读写数据时,纠错码的地址不需要额外保存,只需要通过N*14+物理页126对应地址即可计算。
如图4所示,假设闪存有512个block,每个block内有128个page,每个page内可以存放1024个Byte。由于不同的ECC对应的纠错码长度是不一样的,假如采用8bit/1024,对应的纠错码长度为14Byte。
每个block最后两个page作为block的冗余区域,专门用于存放block内其他物理页的纠错码,通过页号计算纠错码在页内的偏移,例如:page 0写入1024BYTE用户数据,对应的ECC纠错码存放于126page的offset 0开始,长度14Byte。Page N的纠错码存放于N*14开始地址,一旦超过1024Byte,则存放下一个页,ECC纠错能力越强,对应的纠错码越多,但是对应算法只需要每个block保留多一个页,即可完美支持。
ECC的全称是Erro Checking and Correction or Error correction Coding,是一种用差错检测和修正的算法。
用户数据经过ECC硬件模会产生一定长度的ECC parity数据,数据长度由ECC纠错bit数据决定。
读写数据时,纠错码的地址不需要额外保存,只需要通过N*14+page126对应地址即可计算,减少嵌入式的RAM开销,提高系统响应速度。
本发明还公开了一种ECC数据存储系统,包括:
计算单元:用于控制器内部的ECC硬件模块根据用户数据计算并生成ECC parity,所述ECC parity用于后续进行检测和修正校验码;
发送单元:申请一个空闲的数据页地址,用于发送整页编程命令,将用户数据写入Flash;
第一判断单元:用于判断编程是否正常,如果是那么执行写入单元,否则执行用户数据写入单元;
写入单元:根据空闲的数据页地址找到对应的ecc保存地址,用于发送单字节编程命令,将ECC parity数据写入Flash;
第二判断单元:用于判断编程是否正常,如果是那么退出,否则执行用户数据写入单元;
用户数据写入单元:用于换一个物理块发送整页编程命令,将用户数据写入Flash,然后执行第三判断单元;
第三判断单元:用于判断编程是否正常,如果是执行写入单元,否则退出。
在所述计算单元之前还执行如下单元:
用户数据发送单元:用于主机发送用户数据;
用户数据接收单元:用于从主机接收用户数据。
ECC数据存储系统的每个物理块最后两个物理页作为物理块的冗余区域,用于存放物理块内其他物理页的纠错码,通过页号计算纠错码在页内的偏移。
ECC数据存储系统的物理页N的纠错码存放于N*14开始地址,一旦超过1024Byte,则存放下一个物理页;读写数据时,纠错码的地址不需要额外保存,只需要通过N*14+物理页126对应地址即可计算。
本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现所述的方法的步骤。
本发明的有益效果是:1.将用户数据与ECC纠错码分开存放,通过内在地址关联,简单的计算就可以计算出用户数据所对应的ECC纠错码。如图5所示,同时用户空间损失较少,无效空间占比由50%降为(2/128=)1.56%,极大提高用户可见空间;2.采用数据页存放ECC partiy数据,比flash的冗余空间大,可以对Flash采用更大的ECC模式,保证数据的稳定性,同时具有高扩展性。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (9)

1.一种ECC数据存储方法,其特征在于,包括依次执行如下步骤:
计算步骤:控制器内部的ECC硬件模块根据用户数据计算并生成ECC parity,所述ECCparity用于后续进行检测和修正校验码;
发送步骤:申请一个空闲的数据页地址,发送整页编程命令,将用户数据写入Flash;
第一判断步骤:判断编程是否正常,如果是那么执行写入步骤,否则执行用户数据写入步骤;
写入步骤:根据空闲的数据页地址找到对应的ECC保存地址,发送单字节编程命令,将ECC parity数据写入Flash;
第二判断步骤:判断编程是否正常,如果是那么退出,否则执行用户数据写入步骤;
用户数据写入步骤:换一个物理块发送整页编程命令,将用户数据写入Flash,然后执行第三判断步骤;
第三判断步骤:判断编程是否正常,如果是执行写入步骤,否则退出。
2.根据权利要求1所述的ECC数据存储方法,其特征在于,在所述计算步骤之前还执行如下步骤:
用户数据发送步骤:主机发送用户数据;
用户数据接收步骤:从主机接收用户数据。
3.根据权利要求1所述的ECC数据存储方法,其特征在于:每个物理块最后两个物理页作为物理块的冗余区域,用于存放物理块内其他物理页的纠错码,通过页号计算纠错码在页内的偏移。
4.根据权利要求1所述的ECC数据存储方法,其特征在于:物理页N的纠错码存放于N*14开始地址,一旦超过1024Byte,则存放下一个物理页;读写数据时,纠错码的地址不需要额外保存,只需要通过N*14+物理页126的对应地址即可计算。
5.一种ECC数据存储系统,其特征在于,包括:
计算单元:用于控制器内部的ECC硬件模块根据用户数据计算并生成ECC parity,所述ECC parity用于后续进行检测和修正校验码;
发送单元:申请一个空闲的数据页地址,用于发送整页编程命令,将用户数据写入Flash;
第一判断单元:用于判断编程是否正常,如果是那么执行写入单元,否则执行用户数据写入单元;
写入单元:根据空闲的数据页地址找到对应的ECC保存地址,用于发送单字节编程命令,将ECC parity数据写入Flash;
第二判断单元:用于判断编程是否正常,如果是那么退出,否则执行用户数据写入单元;
用户数据写入单元:用于换一个物理块发送整页编程命令,将用户数据写入Flash,然后执行第三判断单元;
第三判断单元:用于判断编程是否正常,如果是执行写入单元,否则退出。
6.根据权利要求5所述的ECC数据存储系统,其特征在于,在所述计算单元之前还执行如下单元:
用户数据发送单元:用于主机发送用户数据;
用户数据接收单元:用于从主机接收用户数据。
7.根据权利要求5所述的ECC数据存储系统,其特征在于:每个物理块最后两个物理页作为物理块的冗余区域,用于存放物理块内其他物理页的纠错码,通过页号计算纠错码在页内的偏移。
8.根据权利要求5所述的ECC数据存储系统,其特征在于:物理页N的纠错码存放于N*14开始地址,一旦超过1024Byte,则存放下一个物理页;读写数据时,纠错码的地址不需要额外保存,只需要通过N*14+物理页126的对应地址即可计算。
9.一种计算机可读存储介质,其特征在于:所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现权利要求1-4中任一项所述的方法的步骤。
CN201810507105.4A 2018-05-24 2018-05-24 一种ecc数据存储方法、系统及存储介质 Active CN108762975B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810507105.4A CN108762975B (zh) 2018-05-24 2018-05-24 一种ecc数据存储方法、系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810507105.4A CN108762975B (zh) 2018-05-24 2018-05-24 一种ecc数据存储方法、系统及存储介质

Publications (2)

Publication Number Publication Date
CN108762975A CN108762975A (zh) 2018-11-06
CN108762975B true CN108762975B (zh) 2021-06-08

Family

ID=64005754

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810507105.4A Active CN108762975B (zh) 2018-05-24 2018-05-24 一种ecc数据存储方法、系统及存储介质

Country Status (1)

Country Link
CN (1) CN108762975B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112068985B (zh) * 2020-09-02 2023-10-20 中国航空工业集团公司西安飞行自动控制研究所 带编程指令识别的norflash存储器ecc检纠错方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103198020A (zh) * 2013-03-18 2013-07-10 山东华芯半导体有限公司 一种提高闪存使用寿命的方法
CN103902403A (zh) * 2012-12-27 2014-07-02 Lsi公司 经由冗余阵列的非易失性存储器编程故障恢复
CN104182292A (zh) * 2013-05-21 2014-12-03 华为技术有限公司 一种数据存储方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4439578B1 (ja) * 2008-12-24 2010-03-24 株式会社東芝 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のデータ管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902403A (zh) * 2012-12-27 2014-07-02 Lsi公司 经由冗余阵列的非易失性存储器编程故障恢复
CN103198020A (zh) * 2013-03-18 2013-07-10 山东华芯半导体有限公司 一种提高闪存使用寿命的方法
CN104182292A (zh) * 2013-05-21 2014-12-03 华为技术有限公司 一种数据存储方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
说说NAND FLASH以及相关ECC校验⽅法;osc_e4gzv47r;《https://my.oschina.net/u/4311243/blog/4232728》;20180209;第1-8页 *

Also Published As

Publication number Publication date
CN108762975A (zh) 2018-11-06

Similar Documents

Publication Publication Date Title
US8438457B2 (en) Nonvolatile memory apparatus, memory controller, and memory system
TWI514139B (zh) 實體頁、邏輯頁及碼字對應
US9377960B2 (en) System and method of using stripes for recovering data in a flash storage system
US20070268905A1 (en) Non-volatile memory error correction system and method
US20100251074A1 (en) Decoding/encoding method for booting from a nand flash and system thereof
US20110041037A1 (en) FLASH-based Memory System with Static or Variable Length Page Stripes including Data Protection Information and Auxiliary Protection Stripes
CN102099793A (zh) 根据固态存储器的擦除计数进行误差校正的方法和装置
CN108399108B (zh) 读取操作和软解码时序
US20100241932A1 (en) Error detector/corrector, memory controller, and semiconductor memory device
US20120215962A1 (en) Partitioning pages of an electronic memory
CN103531246A (zh) 快速以读代写的存储器纠错方法
CN108665939B (zh) 为存储器提供ecc的方法与装置
CN110310693B (zh) 具有缓存的In-Line ECC模块
CN108345514B (zh) 存储器件、存储系统及其操作方法
CN108762975B (zh) 一种ecc数据存储方法、系统及存储介质
US11231990B2 (en) Device and method for generating error correction information
CN112214346A (zh) 用于存储器子系统中的数据修改期间的错误检测的方法及装置
KR101999288B1 (ko) 메모리 데이터의 에러 보정 장치 및 방법
CN115729746A (zh) 一种基于crc和ecc存储数据保护方法
CN110764693B (zh) 一种提高Nand flash数据稳定性的方法以及装置
JP5217570B2 (ja) メモリ装置及びメモリ制御方法
US11789643B2 (en) Memory system and control method
CN114116530B (zh) 存储控制方法及装置、数据处理方法及装置以及存储介质
US11360853B2 (en) Access method
WO2010035316A1 (ja) メモリ制御装置およびメモリ制御方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 518000 Intelligence Valley Innovation Park 701, 707, No. 1010 Bulong Road, Xinniu Community, Minzhi Street, Longhua District, Shenzhen City, Guangdong Province

Applicant after: Shenzhen deminli Technology Co.,Ltd.

Address before: 518000, 701, building 7, wisdom Valley Innovation Park, people's street, Longhua District, Shenzhen, Guangdong

Applicant before: SHENZHEN DEMINGLI ELECTRONICS Co.,Ltd.

GR01 Patent grant
GR01 Patent grant
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 2501, 2401, block a, building 1, Shenzhen new generation industrial park, 136 Zhongkang Road, Meidu community, Meilin street, Futian District, Shenzhen, Guangdong 518000

Patentee after: Shenzhen deminli Technology Co.,Ltd.

Address before: 701, 707, wisdom Valley Innovation Park, 1010 Bulong Road, Xinniu community, Minzhi street, Longhua District, Shenzhen, Guangdong 518000

Patentee before: Shenzhen deminli Technology Co.,Ltd.