CN109753369A - 一种寄存器及内存中顺序数组的数据编码及校验方法 - Google Patents

一种寄存器及内存中顺序数组的数据编码及校验方法 Download PDF

Info

Publication number
CN109753369A
CN109753369A CN201811624517.2A CN201811624517A CN109753369A CN 109753369 A CN109753369 A CN 109753369A CN 201811624517 A CN201811624517 A CN 201811624517A CN 109753369 A CN109753369 A CN 109753369A
Authority
CN
China
Prior art keywords
data
group
alphabetic
memory
bit
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.)
Granted
Application number
CN201811624517.2A
Other languages
English (en)
Other versions
CN109753369B (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.)
Shanghai Micro Well Electronic Technology Co Ltd
Original Assignee
Shanghai Micro Well Electronic Technology 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 Shanghai Micro Well Electronic Technology Co Ltd filed Critical Shanghai Micro Well Electronic Technology Co Ltd
Priority to CN201811624517.2A priority Critical patent/CN109753369B/zh
Publication of CN109753369A publication Critical patent/CN109753369A/zh
Application granted granted Critical
Publication of CN109753369B publication Critical patent/CN109753369B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

一种寄存器或内存中顺序数组的数据校验方法,其包括接收多组数据并按基于栈的后进先出或基于队列的先进先出的顺序存入寄存器或内存中;其中,多组数据来源于一个数据输入通道或多个数据输入通道;从寄存器或内存中按顺序提取N组数据拼接形成一个第一顺序数据组,并采用编/解码协议对第一顺序数据组的数据信息进行编码,形成第二顺序数据组;采用汉明码进行对第二顺序数据组中所有比特位进行校验,判断第二顺序数据组是否出错比特位,从而判断第一顺序数据组或校验位是否有错误;根据判断结果,按照编/解码的校验协议对第一顺序数据组的数据信息进行错误比特位定位和纠错。本发明确保顺序数据在寄存器或内存间传输时的一致性且实现高可靠性纠错。

Description

一种寄存器及内存中顺序数组的数据编码及校验方法
技术领域
本发明涉及一种信息安全领域,尤其涉及使用汉明码编码对顺序相邻数据的校验方式,包括编码方式与校验方式。
背景技术
在通信技术中,大规模集成电路在电磁环境比较恶劣的情况下,常常会受到干扰,甚至导致不能正常工作。特别是像RAM这种利用双稳态进行存储的器件,往往会在强干扰下发生翻转,使原来存储的“0”变为“1”,或者“1”变为“0”,造成的后果往往是很严重的。例如,导致一些控制程序跑飞,存储的关键数据出错等等。随着芯片集成度的增加,发生错误的可能性也在增大。在一些特定的应用中,这已经成为一个不能忽视的问题。
目前可以采用的一种方式是奇偶校验的方式进行校验。如果传输过程中有奇数位发生变化,则消息将改变奇偶性,此时可以检测到错误;然而,改变的位可能是奇偶校验位本身,错误将不会被检测到;且奇偶校验即使可以检测到错误,也不能指出错误包含在哪个位上。
另一种编码方式是五分之二的代码,它使用恰好由3个0和2个1组成的5位。该方案可以检测所有单个位错误、所有奇数位错误和一些偶数位错误(例如两个1位的翻转)。然而,它仍然不能纠正这些错误。且如果消息中包含更多的纠错位,并且这些位可以被安排成不同的错误位产生不同的错误结果,那么就可以识别出错误位。
在这种情况下,我们可以采用错误检测与纠正EDAC(Error Detection AndCorrection)电路来有效地减少或避免这种情况的出现。根据检错、纠错的原理,主要思想是在数据写入时,根据写入的数据生成一定位数的校验码,与相应的数据一起保存起来;当读出的同时,也将校验码读出,进行判决。
如果出现一位错误则自动纠正,将正确的数据送出,并同时将改正以后的数据回写覆盖原来错误的数据;如果出现两位错误则产生中断报告,通知CPU进行异常处理。所有这一切动作都是靠硬件设计自动完成的,具有实时性和自动完成的特点。通过这样的EDAC电路,能大大提高系统的抗干扰能力,从而提高系统的可靠性。然而,EDAC电路需要大面积的版图设计,大大提高了成本。例如,冗余设计中的三模冗余可以纠错,但设计硬件代价需要很大TMR。
汉明码(Hamming Code)是在电信领域的一种线性调试码,以发明者理查德.卫斯里.汉明的名字命名。汉明码在传输的消息流中插入验证码,当计算机存储或移动数据时,可能会产生数据位错误,以侦测并更正单一比特错误。由于汉明编码简单,它们被广泛应用于内存(RAM)。与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。
然而,从上述可以知道,汉明码很好地避免了一些简单的错误检测码方法的问题,但编码校验汉明码设计比较复杂,且传输效率低。
请参阅图1,图1所示为现有技术中采用一路数据通道的情况下其传输效率结果示意图;一路数据通道采用汉明码对有效数据msg为8位和对应校验为3位情况下,整个校验和纠错过程中的传输效率为72.72%=8/(8+3)。
发明内容
为了克服上述现有技术的缺点,本发明给出了一种寄存器或内存中顺序数组的数据校验方法,不仅可以验证数据是否有效,还能在数据出错的情况纠错,且传输效率高。具体地,本发明的技术方案如下:
一种寄存器或内存中顺序数组的数据校验方法,其包括如下步骤:
步骤S1:接收多组数据,并按基于栈的后进先出或基于队列的先进先出的顺序存入寄存器或内存中;其中,所述多组数据来源于一个数据输入通道或多个数据输入通道;
步骤S2:从所述寄存器或内存中按顺序提取N组数据拼接形成一个第一顺序数据组,并对所述第一顺序数据组的数据信息采用编/解码协议进行编码,形成第二顺序数据组;其中,所述第二顺序数据组包括所述第一顺序数据组数据信息的比特位加上K比特位校验码信息;
步骤S3:采用所述编/解码协议对所述第二顺序数据组中所有比特位进行校验,判断所述第二顺序数据组是否出错比特位,从而判断第一顺序数据组或校验位是否有错误;
步骤S4:根据判断结果,按照所述编/解码校验协议对所述第一顺序数据组的数据信息进行错误比特位定位和纠错。
进一步地,所述的编/解码为汉明码。
进一步地,所述多组数据的每一组数据包括M比特位数据信息,所述第一顺序数据组的数据信息具有N*M比特位。
进一步地,所述多组数据的长短决定于一个预设的时间段。
进一步地,所述N为数据输入通道的整数倍。
进一步地,所述N大于等于4。
进一步地,所述多组数据中的数据信息选择自大于等于8比特位数据中的一种或多种。
从上述技术方案可以看出,本发明使用汉明码编码,利用相邻数据段传输的时序特征对校验码进行复用,即基于栈(后进先出)和队列(先进先出)等数组数据的顺序进出特点,在对数据进行校验纠错时分别可以复用其高位(栈)和低位(队列)数据,即对于有严格顺序的堆栈或队列数据,可以把相邻数据拼接成更长的消息长度,不仅总传输效率将会提高,并且能有更高的校验强度。
与现有技术相比较,实施本发明的纠错方式,可以减少校验码计算时间,并确保顺序数组传输时的一致性。
附图说明
通过参照附图详细描述其示例实施方式,本发明的上述和其它特征及优点将变得更加明显。
图1所示为现有技术中采用一路数据通道的情况下其传输效率结果示意图;一路数据通道采用汉明码对有效数据msg为8位和对应校验为3位情况下,整个校验和纠错过程中的传输效率为72.72%=8/(8+3)
图2所示为本发明寄存器及内存中顺序数组的数据编码及校验方法一较佳实施例的流程示意图
图3所示为所示为本发明使用两路数据通道的情况下其传输效率结果示意图;使用两路并行处理后,有效数据msg为16位,对应校验为5位,传输效率为76.19%=16/(16+5)
图4所示为所示为本发明使用四路数据通道的情况下其传输效率结果示意图;使用四路并行处理后,有效数据msg为32位,对应校验为7位,传输效率为82.05%=32/(32+7)
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
需要说明的是,本发明的原理如下:本发明涉及的一种顺序数组的纠错方式;该方式针对顺序数组设计,编码采用汉明码。对于严格以特定顺序进出的数组如栈和队列,由于相邻数据段传输的时序特征,同一数据校验码可进行复用,从而减少了纠错时间。也就是说,对于有严格顺序的堆栈或队列数据,可以把相邻数据拼接成更长的消息长度,这样总的传输效率将会提高,或是能有更高的校验强度。
具体地,汉明码的校验位数量与数据位的数量之间的例如下:
如果数据位是4位,加上3位汉明码是7位,而2的3次幂是8。这其中就存在一个规律,即2^P≥P+D+1,其中P代表汉明码的个数,D代表数据位的个数,比如4位数据,加上1就是5,而能大于5的2的幂数就是3(2^3=8,2^2=4)。这样,我们就能算出任何数据位时所需要的汉明码位数,即7位数据时需要4位汉明码(16>4+7+1),64位数据时就需要7位汉明码(128>64+7+1),可以依此推算。
因此,从上面可以看出,在验位数K随消息长度M近似呈log2对数增加。而传输效率e=M/(M+K)。所以增加消息长度M,可以在满足同样校验强度的前提下,减少校验位数K,从而提高了传输效率。本发明就是使用汉明码编码校验,校验位数随消息长度(Length)近似以对数Log(Length)增加,所以增加消息长度,校验码的附加代价就更小,应当充分利用。
为使本发明的目的、技术方案和优点更加清楚,下面进一步结合图2至图4对本发明作详细描述。
请参阅图2,图2所示为本发明寄存器及内存中顺序数组的数据编码及校验方法一较佳实施例的流程示意图。如图所示,本发明的一种寄存器或内存中顺序数组的数据校验方法,其包括如下步骤:
步骤S1:接收多组数据,并按基于栈的后进先出或基于队列的先进先出的顺序存入寄存器或内存中;其中,多组数据来源于一个数据输入通道或多个数据输入通道。
具体地,多组数据可以同时或不同时从多个数据输入通道输出,需要制定一些拼接规则,从而使接收的数据从编码前到编码后的数据信息是完全相同的。拼接规则通常可以采用后进先出或先进先出的顺序存入寄存器或内存中,并后续从寄存器或内存中输出也是按照该拼接规则还原数据的。
在本发明的实施例中,可以接收多个数据输入通道的数据拼接成一个包含较多比特位的第一顺序数据组数据信息。从理论上说,如果处理速度没有限制,那么第一顺序数据组所包含的比特位越多,那么所使用的比特位校验码仅成对数Log(Length)增加,校验码的附加代价就更小,从而系统的传输效率就相对较高。
在本发明的实施例中,多组数据的每一组数据可以是包含不同的数据信息比特位数,在该情况下,通常该多组数据的长短决定于一个预设的时间段,例如,可以是在几秒中从多个数据输入通道按时间先后发了的数据。此时,输入到寄存器或内存中第一顺序数据组中所包含的数据信息比特位数是不同的,处理每一第一顺序数据组编码时,首先要根据第一顺序数据组的数据比特位计算校验码的比特位数量和所处的位置,后面的处理是一样的,在此不再赘述。
在本发明的实施例中,多组数据的每一组数据可以是包含相同的数据信息比特位数,从寄存器或内存中按顺序提取N组数据通常为数据输入通道的整数倍;例如,有四个数据输入通道,第一顺序数据组的数据信息可以依次从提取四个数据输入通道依次提取一次,也可以从四个数据输入通道依次从提取四个数据输入通道依次提取二次等。
并且,第一顺序数据组的数据信息还决定于每个数据通道每一次输出的数据信息比特位数;通常,该多组数据中的数据信息选择自8比特、16比特、32比特、64比特、128比特或256比特中的一种或多种。当然,本发明不一定限于这几种位数,U盘中的Flash可能是512->528,原则上只要大于8比特就可以,而且位数越大越有效。也不一定是2的整幂次,比如13->17,52->58后者效率更高。
下面以第一顺序数据组的数据信息可以依次从提取四个数据输入通道依次提取一次为例的,那么,第一顺序数据组的数据信息具有N*M比特位。
步骤S2:从所述寄存器或内存中按顺序提取N组数据拼接形成一个第一顺序数据组,并对所述第一顺序数据组的数据信息采用汉明码进行编码,形成第二顺序数据组;其中,所述第二顺序数据组包括所述第一顺序数据组数据信息的比特位加上K比特位校验码信息。
汉明码是一种二元线性码。对于所有整数r≥2,存在一个分组长度n=2r-1、k=2r-r-1编码。因此汉明码的码率为R=k/n=1-r/(2r-1),对于最小距离为3、分组长度为2r-1的码来说是最高的。汉明码的奇偶检验矩阵的是通过列出所有长度为r的非零列向量构成的。
从1开始给数据位从左向右标上序号,并将这些的位置序号转换为二进制:1,10,11,100,101等。数据位的位置序号中所有为二的幂次方的位(编号1,2,4,8等,即数据位位置序号的二进制表示中只有一个1)是校验位,所有其它位置的数据位(数据位位置序号的二进制表示中至少2个是1)是数据位。每一位的数据包含在特定的两个或两个以上的校验位中,这些校验位取决于这些数据位的位置数值的二进制表示。
以队列数据为例,假设传输序列为:1001 1100 1000 1001 1111,传输方向由高位到低位,从第4位开始用3位汉明码编码,则每次校验的数据段和校验码为:
需要注意的是,本发明对于数据的传输要求严格保证顺序,而且数据量也要前后一致,不能收到4个Byte数据,编为1组第一顺序数据组32位以后,进行校验得到7位第二顺序数据组,最后只发送3个Byte数据。
步骤S3:采用汉明码进行对所述第二顺序数据组中所有比特位进行校验,判断所述第二顺序数据组是否出错比特位,从而判断第一顺序数据组或校验位是否有错误。
在本发明的实施例中,校验时将校验位与有效信息位一起形成的汉明校验码进行保存和传送,当接收到校验码后,对其进行校验即可判断是否出错。即把N+K位校验码重新再分为K个组,若用奇校验,则每一组中1的个数应该为奇数,否则数据出错,若用偶校验,则每一组中1的个数应该为偶数,否则数据出错。如果校验结果为有错误,该判断可以确定是第一顺序数据组中的数据信息发生了错误,还是校验位发生错误了。
步骤S4:根据上述判断结果,按照汉明码校验协议对所述第一顺序数据组的数据信息进行错误比特位定位和纠错。
该方法可以特别针对偶发性失误的特点设计,由于单粒子故障的特点不同于总剂量引起的位移损伤,前者的影响是非常局域化的,一般只会影响DFF/memory的每个Cell,不会整片出错,因此,针对这样的离散随机错误,使用Hamming编解码不仅可以验证数据是否有效,能在数据出错的情况下指明错误位置,且还可以提高传输效率。
下面可以结合图1参阅图3和图4。请参阅图3,图3所示为本发明使用四路数据通道的情况下其传输效率结果示意图;如图所示,本发明使用两路并行处理后,有效数据msg为16位,对应校验为5位,传输效率为76.19%=16/(16+5)。请参阅图4,图4所示为本发明使用四路数据通道的情况下其传输效率结果示意图;如图所示,发明使用四路并行处理后,有效数据msg为32位,对应校验为7位,传输效率为82.05%=32/(32+7)。
综上所述,本发明针对顺序数组设计,编码采用汉明码,其校验位数随消息长度Length近似以对数Log(Length)增加,即其利用了汉明码在增加消息长度越长,校验码的附加代价就更小的特点,将相邻数据段传输的时序特征,同一数据校验码进行复用,从而减少了纠错时间,提高了传输效率。
虽然本发明已以较佳实施例揭示如上,然所述实施例仅为了便于说明而举例而已,并非用以限定本发明,本领域的技术人员在不脱离本发明精神和范围的前提下可作若干的更动与润饰,本发明所主张的保护范围应以权利要求书所述为准。

Claims (7)

1.一种寄存器或内存中顺序数组的数据校验方法,其特征在于,包括如下步骤:
步骤S1:接收多组数据,并按基于栈的后进先出或基于队列的先进先出的顺序存入寄存器或内存中;其中,所述多组数据来源于一个数据输入通道或多个数据输入通道;
步骤S2:从所述寄存器或内存中按顺序提取N组数据拼接形成一个第一顺序数据组,并采用编/解码协议对所述第一顺序数据组的数据信息进行编码,形成第二顺序数据组;其中,所述第二顺序数据组包括所述第一顺序数据组数据信息的比特位加上K比特位校验码信息;
步骤S3:采用所述编/解码协议对所述第二顺序数据组中所有比特位进行校验,判断所述第二顺序数据组是否出错比特位,从而判断第一顺序数据组或校验位是否有错误;
步骤S4:根据判断结果,按照所述编/解码的校验协议对所述第一顺序数据组的数据信息进行错误比特位定位和纠错。
2.根据权利要求1所述的寄存器及内存中顺序数组的数据校验方法,其特征在于,所述的编/解码为汉明码。
3.根据权利要求1或2所述的寄存器及内存中顺序数组的数据校验方法,其特征在于,所述多组数据的每一组数据包括M比特位数据信息,所述第一顺序数据组的数据信息具有N*M比特位。
4.根据权利要求1或2所述的寄存器及内存中顺序数组的数据校验方法,其特征在于,所述多组数据的长短决定于一个预设的时间段。
5.根据权利要求1或2所述的寄存器及内存中顺序数组的数据校验方法,其特征在于,所述N为数据输入通道的整数倍。
6.根据权利要求5所述的寄存器及内存中顺序数组的数据校验方法,其特征在于,所述N为大于等于4。
7.根据权利要求1所述的寄存器及内存中顺序数组的数据校验方法,其特征在于,所述多组数据中的数据信息选择自大于等于8比特位数据中的一种或多种。
CN201811624517.2A 2018-12-28 2018-12-28 一种寄存器及内存中顺序数组的数据编码及校验方法 Active CN109753369B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811624517.2A CN109753369B (zh) 2018-12-28 2018-12-28 一种寄存器及内存中顺序数组的数据编码及校验方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811624517.2A CN109753369B (zh) 2018-12-28 2018-12-28 一种寄存器及内存中顺序数组的数据编码及校验方法

Publications (2)

Publication Number Publication Date
CN109753369A true CN109753369A (zh) 2019-05-14
CN109753369B CN109753369B (zh) 2023-10-24

Family

ID=66404264

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811624517.2A Active CN109753369B (zh) 2018-12-28 2018-12-28 一种寄存器及内存中顺序数组的数据编码及校验方法

Country Status (1)

Country Link
CN (1) CN109753369B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112822265A (zh) * 2021-01-05 2021-05-18 树根互联技术有限公司 数据编码方法、装置、设备端及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4005405A (en) * 1975-05-07 1977-01-25 Data General Corporation Error detection and correction in data processing systems
WO2006046925A1 (en) * 2004-10-26 2006-05-04 Agency For Science, Technology And Research Method and system for encoding and decoding information with modulation constraints and error control
CN101174839A (zh) * 2006-10-30 2008-05-07 富士通株式会社 编码装置、解码装置、编码/解码装置及记录/再现装置
CN105340022A (zh) * 2013-06-24 2016-02-17 美光科技公司 用于校正数据错误的电路、设备及方法
CN108108263A (zh) * 2017-12-14 2018-06-01 联想(北京)有限公司 一种固态硬盘的数据处理方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4005405A (en) * 1975-05-07 1977-01-25 Data General Corporation Error detection and correction in data processing systems
WO2006046925A1 (en) * 2004-10-26 2006-05-04 Agency For Science, Technology And Research Method and system for encoding and decoding information with modulation constraints and error control
CN101174839A (zh) * 2006-10-30 2008-05-07 富士通株式会社 编码装置、解码装置、编码/解码装置及记录/再现装置
CN105340022A (zh) * 2013-06-24 2016-02-17 美光科技公司 用于校正数据错误的电路、设备及方法
CN108108263A (zh) * 2017-12-14 2018-06-01 联想(北京)有限公司 一种固态硬盘的数据处理方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
蒋婷等: "汉明码的改进及在存储器中的实现", 《电子与封装》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112822265A (zh) * 2021-01-05 2021-05-18 树根互联技术有限公司 数据编码方法、装置、设备端及存储介质

Also Published As

Publication number Publication date
CN109753369B (zh) 2023-10-24

Similar Documents

Publication Publication Date Title
EP1160987B1 (en) Method and apparatus for verifying error correcting codes
US8522122B2 (en) Correcting memory device and memory channel failures in the presence of known memory device failures
US3755779A (en) Error correction system for single-error correction, related-double-error correction and unrelated-double-error detection
US7149947B1 (en) Method of and system for validating an error correction code and parity information associated with a data word
US8127213B2 (en) Method, system, and apparatus for adjacent-symbol error correction and detection code
CN102117662B (zh) 用于8-位存储器设备的差错校正机制
CN107436821B (zh) 为包括多个数据位和地址位的块生成错误码的装置和方法
US9787329B2 (en) Efficient coding with single-error correction and double-error detection capabilities
CN112506730B (zh) 适用于网络交换芯片ecc功能验证的验证平台及验证方法
WO2013147794A1 (en) Enhanced storage of metadata utilizing improved error detection and correction in computer memory
CN103703447B (zh) Mram场的干扰检测和恢复
CN102356383A (zh) 集成电路中的容错性
US6519736B1 (en) Generating special uncorrectable error codes for failure isolation
CN102298973B (zh) 抗辐射故障保护型存储装置及其抗辐射故障保护方法
US6463563B1 (en) Single symbol correction double symbol detection code employing a modular H-matrix
CN109753369A (zh) 一种寄存器及内存中顺序数组的数据编码及校验方法
CN105575439B (zh) 一种存储单元失效纠错的方法及存储器
US20230214295A1 (en) Error rates for memory with built in error correction and detection
US6460157B1 (en) Method system and program products for error correction code conversion
KR20150084560A (ko) 인코딩 장치, 디코딩 장치 및 그 동작 방법
WO2015016879A1 (en) Operating a memory unit
CN105138412A (zh) 嵌入式微处理器高速缓存的混合纠错装置与方法
CN109766213A (zh) 一种基于汉明码实现数据纠错的存储器电路
CN105005513A (zh) 高速缓存多位数据翻转错误的检测及容错装置与方法
Fu et al. Burst error detection hybrid ARQ with crosstalk-delay reduction for reliable on-chip interconnects

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