CN108874576B - 一种基于纠错编码的数据存储系统 - Google Patents
一种基于纠错编码的数据存储系统 Download PDFInfo
- Publication number
- CN108874576B CN108874576B CN201710325258.2A CN201710325258A CN108874576B CN 108874576 B CN108874576 B CN 108874576B CN 201710325258 A CN201710325258 A CN 201710325258A CN 108874576 B CN108874576 B CN 108874576B
- Authority
- CN
- China
- Prior art keywords
- data
- check
- error correction
- stored
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及一种存储系统,特别涉及一种基于纠错编码的数据存储系统。所述的存储系统包括纠错单元和校验单元,所述的存储系统中存储载体划分为若干大小一致的纠错单元,根据用户要求将待存储数据规划为若干校验单元,每个校验单元包含的数据存储在存储载体的若干纠错单元内;数据存储时:首先计算每个校验单元内待存储数据的校验值,对每个校验单元的待存储数据和校验值按纠错单元大小进行统一海明码编码处理,再将编码结果写入存储载体;数据读取时:按照海明码的解码方式读取目标校验单元的数据及存储校验值,并重新计算该校验单元数据的计算校验值,若两个校验值一致,则数据读取无误。本技术方案达到了提高数据存储可靠性的目的。
Description
技术领域
本发明涉及一种存储系统,特别涉及一种基于纠错编码的数据存储系统。
背景技术
数据存储技术是计算机设计的一项关键技术,存储载体在特定条件下存在局部存储区损坏、位状态翻转等故障模式,读写时也可能受到干扰产生误码。高可靠的存储系统需要通过一定的技术措施将这些故障模式发生的概率尽可能减小。
数据校验与数据备份是两种最常用的存储技术。数据备份技术的优点是在数据损坏情况下能实现数据冗余备份,但必须借助其他技术来发现错误;数据校验技术能在一定程度上发现错误,但无法对错误进行准确定位并纠正错误。在绝大多数应用场合,数据校验与数据备份相互配合能够满足应用需求。
海明码等纠错编码技术因其“能发现错误,并能一定程度准确定位错误从而进行纠正”的特性,被广泛研究,并在通信领域有一定应用,能极大地降低错误率。要实现海明码等纠错编码技术,往往要增加额外的存储容量,增加编码解码开销等;且在一定条件下,仍会失去错误定位和纠错能力。
惯性导航系统是高可靠数据存储系统的一个典型应用场合。惯性导航系统的实际应用中,惯性传感器及其关联电路的标定参数、航路点信息、实时监测信息、故障处理信息等数据往往需要用E2PROM等非易失存储器件存放,其中标定参数尤为重要,关系着惯性导航系统能否可靠工作。对惯性导航系统来说,在发生三级故障时,宁可停止导航参数的输出,也不能输出错误参数,以免对用户产生误导引发不安全后果。基于这个考虑,一般惯性导航系统的内部自检测(BIT)都设计有标定参数完整性及合理性检测,一旦发现错误就会终止工作流程报出三级严重故障,指明导航参数不可用。由此可见,提高非易失存储的可靠性对于提高惯性导航系统整体可靠性意义重大。
特别地,在航天、临近空间应用的惯性导航系统等电子设备中,还要面临单粒子效应、总剂量效应等空间辐射效应,电子设备需要采用多种手段进行加固。单粒子翻转是常见的一种单粒子效应,也是存储系统较常见的一种失效模式。在这种高可靠的应用中,存储系统的可靠性更重要,往往需要综合采用多种技术进行加固。
发明内容
本发明解决的技术问题为:提供一种数据存储可靠性高的存储系统。
本发明的技术方案:一种基于纠错编码的数据存储系统,其特征为:所述的存储系统包括纠错单元和校验单元,所述的存储系统中存储载体划分为若干大小一致的纠错单元,根据用户要求将待存储数据规划为若干校验单元,每个校验单元包含的数据存储在存储载体的若干纠错单元内;
数据存储时:首先计算每个校验单元内待存储数据的校验值,对每个校验单元的待存储数据和校验值按纠错单元大小进行统一海明码编码处理,再将编码结果写入存储载体;
数据读取时:按照海明码的解码方式读取目标校验单元的数据及存储校验值,并重新计算该校验单元数据的计算校验值,若两个校验值一致,则数据读取无误。
优选地,所述的纠错单元大小与存储载体的位宽大小一致。
优选地,所述的存储系统还包括多个数据备份区。
优选地,在数据存储时将待存储数据存入多个数据备份区内;在数据读取时,若两个校验值不一致,则对其他数据备份区执行读取过程,直至获取两校验值一致的结果,该备份区域数据即为无误数据。
优选地,按照数据存储过程,使用该数据完好的备份区校验单元数据恢复其他数据有误备份区相应校验单元数据。
本发明的有益效果:综合了海明码编码技术、校验技术、数据备份技术的优点,达到提高数据存储可靠性的目的;由于海明码的纠错率与纠错单元大小正相关,纠错单元越小,纠错率越高,根据存储载体的位宽确定纠错单元大小的方法,提高了纠错率,统一了应用时纠错编码/解码对不同数据的接口,同时也减小了纠错编码/解码算法的实现难度。
附图说明
图1为存储系统中校验单元、纠错单元、数据备份区示意。
具体实施方式
根据海明码的编码方式,在一个纠错单元内,对1bit的错误能够进行定位并纠错,对2bit的错误能够发现错误但无法纠错,对多于2bit的错误会丧失检错纠错能力,除非对传统海明码算法进行优化升级,会带来额外的实现代价。另外,对于海明码编码来说,随着其有效信息位的增大,其校验位所占得空间比会急剧减少。但是,有效信息位的增大带来的风险是同一个纠错单元内发生多个bit翻转的概率也增大,使得海明码丧失纠错检错功能的风险也更大。因此,将纠错单元的大小设置为存储载体的位宽是合理的实现方案,除了能够最大限度发挥其纠错能力外,还有助于设计统一的编码/解码软硬件接口,并降低软硬件实现开销。编码/解码可采用软件或FPGA硬件来实现。若采用FPGA硬件来实现,好处是不增加软件开销,不改变原有的软件代码;但同时也对FPGA资源提出了要求,需要用FPGA来实现存储载体的读写接口。
数据校验可以有多种选择,求和校验、CRC校验等多种数据校验方式都可以,可以根据对检测率的要求和实现的软硬件开销来确定。
数据备份区可以设计成多个存储载体进行硬件冗余,如果条件允许,甚至可以选择用不同类型的存储载体,实现非相似冗余。最简单的设计是在一个存储载体内部规划多个地址连续的存储单元来实现。
实施例一
结合图1,对实施例一进行说明。
所选的存储载体为16bit数据位宽的E2PROM。将纠错单元设计为双字节(16bit),与E2PROM数据位宽一致。图1中的最小长方格即为纠错单元。
待存储数据的一个字节(8bit)对应一个纠错单元(16bit),按照此关系结合数据备份的要求确定E2PROM的存储容量大小。待存储数据(含校验值)字节数为x Byte,若要求2倍数据备份,则E2PROM存储容量至少为2x×16bit,两个数据区即图1中示意的“数据备份区1”和“数据备份区2”。
根据用户数据功能特点对待存储数据进行分类,每一类数据规划为一个校验单元,每个校验单元含一个校验值,共N个校验单元,即图1中每个数据备份区中的“校验单元1”至“校验单元N”。“校验单元M”表示其中任一个校验单元。
校验单元M共有n个纠错单元(16bit),对应n个存储字节(8bit),即图1中的“纠错单元M-1”至“纠错单元M-n”。纠错单元M-m表示校验单元M中的任一个纠错单元。
以校验单元M为例说明数据存储过程如下:
1)计算校验单元M内待存储数据的校验值,共n个待存储字节;
2)对待存储字节先进行海明码编码处理,再将编码结果写入为其规划好的纠错单元M-m;
3)为确保字节写入正确,可在字节写入时进行回读比对检测,直到写入正确;
4)重复执行2)、3),直至在数据备份区1中完成校验单元M中n个字节的存储操作。
5)重复执行2)、3)、4),直至在数据备份区2中完成校验单元M中n个字节的存储操作,即完成全部存储操作。
步骤1)中,计算校验值时选择较简单的求和校验,对校验单元M内除校验值之外的所有数据以一个字节(8bit)为单位进行累加求和,取求和结果的低8位作为校验值。
步骤2)中,海明码编码方式如下
STEP1根据纠错单元大小确定有效信息位位数
X为添加了校验码后的海明码位数,待确定;
K为其中有效信息位的位数,取K=8,即一个字节;
r为需要添加的校验位的位数,待确定。
按照公式
X=K+r≤2r–1
可计算出r最小值为4,此时X为12。也就是说,在一个纠错单元内(16bit),可设计海明码编码占据低12位,高4位不参与解码和编码,可预置0或1。一个纠错单元(16bit)正好能容纳一个字节(8bit)的有效数据位。
STEP2确定海明码编码中的校验码位置
需要将r(取4)位校验码分开插入到K(取8)位有效数据位中间,形成X(取12)位海明码。
校验码必须置于2i(i=0,1,2,……r-1)位置,比如K=8,r=4时,形成的校验码位置
P1位置:20=1
P2位置:21=2
P3位置:22=4
P4位置:23=8
也就是说此时有效数据的位置
B1位置:3
B2位置:5
B3位置:6
B4位置:7
B5位置:9
B6位置:10
B7位置:11
B8位置:12
即编码后位顺序为
P1-P2-B1-P3-B2-B3-B4-P4-B5-B6-B7-B8
例如,对有效数据10010110(8bit)进行编码,结果为
P1-P2-1-P3-0-0-1-P4-0-1-1-0
表1海明码编码示意
位号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
校验码 | P1 | P2 | P3 | P4 | ||||||||
有效位码 | B1 | B2 | B3 | B4 | B5 | B6 | B7 | B8 | ||||
最终编码 | P1 | P2 | B1 | P3 | B2 | B3 | B4 | P4 | B5 | B6 | B7 | B8 |
i=1 | P1 | 跳 | B1 | 跳 | B2 | 跳 | B4 | 跳 | B5 | 跳 | B7 | 跳 |
i=2 | / | P2 | B1 | 跳 | 跳 | B3 | B4 | 跳 | 跳 | B6 | B7 | 跳 |
i=3 | / | / | / | P3 | B2 | B3 | B4 | 跳 | 跳 | 跳 | 跳 | B8 |
i=4 | / | / | / | / | / | / | / | P4 | B5 | B6 | B7 | B8 |
STEP3确定校验码的值
每个校验码的值代表了部分有效数据位的奇偶性,其所在位置决定了要校验的位序列。
原则:第i位校验码从当前位开始,每次连续校验2i-1,再跳过2i-1个位,依次类推。最后根据采用的是奇校验还是偶校验来得出第i位校验码的值。
对海明码编码P1-P2-B1-P3-B2-B3-B4-P4-B5-B6-B7-B8进行示例
当字节数据B1-B2-B3-B4-B5-B6-B7-B8=10010110,即
海明码编码为P1-P2-(1)-P3-(0)-(0)-(1)-P4-(0)-(1)-(1)-(0)
采用“偶”校验,编码结果为
P1参与校验的位:P1-B1-B2-B4-B5-B7,即X10101,P1=1;
P2参与校验的位:P2-B1-B3-B4-B6-B7,即X10111,P2=0;
P3参与校验的位:P3-B2-B3-B4-B8,即X0010,P3=1;
P4参与校验的位:P4-B5-B6-B7-B8,即X0110,P4=0;
最终海明码编码结果为1-0-1-1-0-0-1-0-0-1-1-0
以校验单元M为例说明数据读取过程如下
1)在数据备份区1中读取校验单元M中的纠错单元M-m;
2)按照海明码的解码方式对纠错单元M-m中的进行还原;
3)重复1)、2),将校验单元中的n个字节全部还原,并对其中的存储校验值进行标记;
4)按照“求和校验”算法,重新计算该校验单元数据的计算校验值;若两个校验值一致,则数据读取无误;若两个校验值不一致,则对数据备份区2执行相同读取过程,直至获取两校验值一致的结果,该备份区域数据即为无误数据。
5)按照数据存储过程,使用数据完好的备份区校验单元数据恢复其他数据有误备份区相应校验单元数据。
根据海明码的解码方式,解码过程如下:
定义指误字G,其含义为各个组校验所有位的和(详见数据存储过程的编码过程),则采用偶校验时,若没有出错,各组指误字均为0
G1=P1+B1+B2+B4+B5+B7=0
G2=P2+B1+B3+B4+B6+B7=0
G3=P3+B2+B3+B4+B8=0
G4=P4+B5+B6+B7+B8=0
将经过海明码编码的数据从存储单元中读出后,计算该纠错单元的指误字,若该纠错单元出现位错误(错误位限制在1个bit以内),则有以下位错误与指误字的真值对应表。当仅有1bit发生错误时,其参与的指误字为1,根据真值表可查出发生错误的位。若将该位取反则可实现数据纠错。
指误字 | G1 | G2 | G3 | G4 |
B1错时 | 1 | 1 | 0 | 0 |
B2错时 | 1 | 0 | 1 | 0 |
B3错时 | 0 | 1 | 1 | 0 |
B4错时 | 1 | 1 | 1 | 0 |
B5错时 | 0 | 0 | 0 | 1 |
B6错时 | 0 | 1 | 0 | 1 |
B7错时 | 1 | 1 | 0 | 1 |
B8错时 | 0 | 0 | 1 | 1 |
Claims (2)
1.一种基于纠错编码的数据存储系统,其特征为:所述的存储系统包括纠错单元和校验单元,所述的存储系统划分为若干大小一致的纠错单元,根据用户要求待存储数据规划为若干校验单元,每个校验单元包含的数据存储在存储载体的若干纠错单元内;
数据存储时:首先计算每个校验单元内待存储数据的校验值,对每个校验单元的待存储数据和存储校验值按纠错单元大小进行统一海明码编码处理,再将编码结果写入存储载体;
数据读取时:按照海明码的解码方式读取目标校验单元的数据及存储校验值,并重新计算该校验单元数据的计算校验值,若两个校验值一致,则数据读取无误;
所述的存储系统还包括多个数据备份区;在数据存储时将待存储数据存入多个数据备份区内;在数据读取时,若两个校验值不一致,则对其他数据备份区执行读取过程,直至获取两校验值一致的结果,该备份区域数据即为无误数据;按照数据存储过程,使用该数据完好的备份区校验单元数据恢复其他数据有误备份区相应校验单元数据。
2.根据权利要求1所述的一种基于纠错编码的数据存储系统,其特征为:所述的纠错单元大小与存储载体的位宽大小一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710325258.2A CN108874576B (zh) | 2017-05-10 | 2017-05-10 | 一种基于纠错编码的数据存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710325258.2A CN108874576B (zh) | 2017-05-10 | 2017-05-10 | 一种基于纠错编码的数据存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108874576A CN108874576A (zh) | 2018-11-23 |
CN108874576B true CN108874576B (zh) | 2022-01-07 |
Family
ID=64287163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710325258.2A Active CN108874576B (zh) | 2017-05-10 | 2017-05-10 | 一种基于纠错编码的数据存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874576B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825557B (zh) * | 2019-04-23 | 2020-12-22 | 上海安路信息科技有限公司 | 存储方法及存储系统 |
CN111209136A (zh) * | 2019-12-27 | 2020-05-29 | 宁波三星智能电气有限公司 | 一种充电桩内参数的存储备份方法 |
CN112309484A (zh) * | 2020-01-09 | 2021-02-02 | 成都华微电子科技有限公司 | 一种存储控制器的设计方法 |
CN112100698B (zh) * | 2020-09-23 | 2023-10-31 | 北京万协通信息技术有限公司 | 一种实现NorFlash安全访问的系统及方法 |
CN112416651B (zh) * | 2020-10-27 | 2024-05-31 | 北京航天时代激光导航技术有限责任公司 | 一种多平台通用的惯组诸元可靠性存储及校验方法 |
CN114143361A (zh) * | 2021-11-08 | 2022-03-04 | 江苏展高科技发展有限公司 | 智能物联网的断路器控制系统与方法 |
CN115031772A (zh) * | 2022-06-28 | 2022-09-09 | 重庆智能机器人研究院 | 一种交流伺服系统串行传输绝对式编码器值纠错方法 |
CN115983306B (zh) * | 2022-12-09 | 2023-09-15 | 江苏稻源科技集团有限公司 | 一种带纠错能力的rfid卡写入方法 |
CN116092567B (zh) * | 2023-01-09 | 2024-03-22 | 海光信息技术股份有限公司 | 数据的处理方法、处理装置以及存储系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1097471A (ja) * | 1996-09-20 | 1998-04-14 | Toshiba Corp | メモリデータのエラー訂正方法、及びエラー訂正方式 |
US6367046B1 (en) * | 1992-09-23 | 2002-04-02 | International Business Machines Corporation | Multi-bit error correction system |
CN1632757A (zh) * | 2005-01-10 | 2005-06-29 | 中国航天时代电子公司第七七一研究所 | 空间计算机抗单粒子翻转的存储器纠检错与自动回写方法 |
CN101452410A (zh) * | 2007-12-06 | 2009-06-10 | 中兴通讯股份有限公司 | 一种嵌入式数据库的数据备份系统及数据备份和恢复方法 |
CN101763903A (zh) * | 2008-12-22 | 2010-06-30 | 财团法人工业技术研究院 | 快闪存储器控制器、其纠错码控制器及其方法和系统 |
CN103365737A (zh) * | 2012-04-06 | 2013-10-23 | 国民技术股份有限公司 | 数据读写方法、读写装置及数据存储系统 |
CN103763067A (zh) * | 2014-01-28 | 2014-04-30 | 天地融科技股份有限公司 | 一种通信数据包纠错校验方法与装置 |
-
2017
- 2017-05-10 CN CN201710325258.2A patent/CN108874576B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6367046B1 (en) * | 1992-09-23 | 2002-04-02 | International Business Machines Corporation | Multi-bit error correction system |
JPH1097471A (ja) * | 1996-09-20 | 1998-04-14 | Toshiba Corp | メモリデータのエラー訂正方法、及びエラー訂正方式 |
CN1632757A (zh) * | 2005-01-10 | 2005-06-29 | 中国航天时代电子公司第七七一研究所 | 空间计算机抗单粒子翻转的存储器纠检错与自动回写方法 |
CN101452410A (zh) * | 2007-12-06 | 2009-06-10 | 中兴通讯股份有限公司 | 一种嵌入式数据库的数据备份系统及数据备份和恢复方法 |
CN101763903A (zh) * | 2008-12-22 | 2010-06-30 | 财团法人工业技术研究院 | 快闪存储器控制器、其纠错码控制器及其方法和系统 |
CN103365737A (zh) * | 2012-04-06 | 2013-10-23 | 国民技术股份有限公司 | 数据读写方法、读写装置及数据存储系统 |
CN103763067A (zh) * | 2014-01-28 | 2014-04-30 | 天地融科技股份有限公司 | 一种通信数据包纠错校验方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108874576A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874576B (zh) | 一种基于纠错编码的数据存储系统 | |
US9600365B2 (en) | Local erasure codes for data storage | |
EP2529305B1 (en) | System and method to correct data errors using a stored count of bit values | |
CN102741819B (zh) | 用于解码码字的方法和设备 | |
US9673840B2 (en) | Turbo product codes for NAND flash | |
US8635508B2 (en) | Systems and methods for performing concatenated error correction | |
CN105340022A (zh) | 用于校正数据错误的电路、设备及方法 | |
CN102915768A (zh) | 基于edac模块的三模冗余对存储器的容错装置及其方法 | |
US6393597B1 (en) | Mechanism for decoding linearly-shifted codes to facilitate correction of bit errors due to component failures | |
US7080305B2 (en) | System and method for correcting data errors | |
Saiz-Adalid et al. | Flexible unequal error control codes with selectable error detection and correction levels | |
CN105022675B (zh) | 嵌入式微处理器高速缓存4位数据翻转错误的纠正装置与方法 | |
WO2016122515A1 (en) | Erasure multi-checksum error correction code | |
US10514980B2 (en) | Encoding method and memory storage apparatus using the same | |
CN110716824B (zh) | 编码方法及使用所述编码方法的存储器存储装置 | |
CN115904798A (zh) | 存储器的纠错检错方法、系统以及控制器 | |
WO2015016879A1 (en) | Operating a memory unit | |
CN103151078A (zh) | 一种存储器检错纠错码生成方法 | |
CN105005513A (zh) | 高速缓存多位数据翻转错误的检测及容错装置与方法 | |
CN114220474A (zh) | 一种数据处理方法、设备及存储介质 | |
Lala | A single error correcting and double error detecting coding scheme for computer memory systems | |
Dugar et al. | A survey on Hamming codes for error detection | |
CN108170554B (zh) | 一种nand的数据编码方法和装置 | |
Gherman et al. | Binary linear ECCs optimized for bit inversion in memories with asymmetric error probabilities | |
CN204856465U (zh) | 高速缓存多位数据翻转错误的检测及容错装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |