CN106708655B - 基于二维纠错码的内存加固方法及电路 - Google Patents

基于二维纠错码的内存加固方法及电路 Download PDF

Info

Publication number
CN106708655B
CN106708655B CN201710087707.4A CN201710087707A CN106708655B CN 106708655 B CN106708655 B CN 106708655B CN 201710087707 A CN201710087707 A CN 201710087707A CN 106708655 B CN106708655 B CN 106708655B
Authority
CN
China
Prior art keywords
data
memory
error correction
error correcting
code
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
CN201710087707.4A
Other languages
English (en)
Other versions
CN106708655A (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.)
ZHONGYUN XIN'AN (SHENZHEN) TECHNOLOGY Co.,Ltd.
Original Assignee
Zhongyun Xin'an Shenzhen 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 Zhongyun Xin'an Shenzhen Technology Co ltd filed Critical Zhongyun Xin'an Shenzhen Technology Co ltd
Priority to CN201710087707.4A priority Critical patent/CN106708655B/zh
Publication of CN106708655A publication Critical patent/CN106708655A/zh
Application granted granted Critical
Publication of CN106708655B publication Critical patent/CN106708655B/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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity

Abstract

本发明公开了一种基于二维纠错码的内存加固方法及电路,该方法将存储器分为程序存储区和数据存储区,对它们进行了分区加固,并根据存储区的各自特点通过存储器自诊断技术(Memory Self‑diagnose Method,MSDM)实现对存储内容的诊断和对错误的纠正,进行纠错报警。在纠错过程中,MSDM既可以纠正任意给定宽度内的连续故障和非连续故障;又可以判断存储器是否产生了超过纠错码纠错能力的故障。当存储器产生纠错码不能纠正的错误时,MSDM产生报警信号。

Description

基于二维纠错码的内存加固方法及电路
技术领域
本发明属于集成电路技术领域,特别涉及通过二维纠错码进行内存安全防护的方法及电路。
背景技术
集成电路已经应用于人民生活的各个领域,为了保证人身和财产安全,要求集成电路设备有很高的可靠性。存储器的可靠性对集成电路的可靠性有直接影响。经研究系统中绝大部分的失效是由存储器引起的。所以,提高存储器的可靠性对保证集成电路系统有较高可靠性和无故障运行非常重要。有以下几点原因。
首先,集成电路工艺尺寸和供电电压持续降低,存储器的抗干扰能力也随之减弱。存储器由于空间辐射环境和地面噪声环境而产生的软错误比以往更多、更容易。
其次,在集成电路中,相对与逻辑电路而言,存储器更容易受到环境影响而产生故障。在受到相同强度的干扰时,存储器比逻辑电路更容易产生故障。
再次,存储器在芯片中占有的面积较大,有些甚至占到了集成电路系统级芯片(SoC)60%以上的芯片面积。因此,存储器更容易受到干扰的影响。
最后,在存储器中,尤其是RAM中存储了CPU执行的程序和程序需要用到的数据。当程序和数据遭到破坏后,会严重影响CPU的执行,可能引起集成电路数据错误、指令错误、逻辑错误,甚至会导致软件程序执行故障或者系统崩渍。
针对存储器的防护设计既可以增加集成电路的使用寿命,也可以提高集成电路的可靠性,尤为重要。
目前,存储器的故障逐渐由单比特故障转变为多比特故障(Multiple BitUpsets,MBU)。这种情况下,针对多比特故障的内存加固技术受到广泛的重视。集成电路在正常工作时存储器的多比特故障遵循一定的故障率,即在一般情况下,固定时间内引起故障比特数小于一个固定的值。在一些特殊情况下,如攻击情况下,存储器的产生故障的比特数会大于故障率。
目前针对存储器多比特故障的防护研究已经开展的较为深入。其中,三模冗余(Triple Module Redundancy,TMR)是应用最广泛的硬件冗余防护方法,优点是速度快,且可以迅速提高系统的可靠性,缺点是面积和功耗都很大;刷洗(Scrubbing)是FPGA定期对RAM重新写一遍原来是数据的方法,可以保证RAM内容的可靠性且实现简单,但是会对系统性能产生一定影响;纠错码是一种检测、纠正数据在存储、传输过程中发生改变的强大技术,在应用中,汉明码是常用的纠错码,能修正一位、探测两位错误,但是无法修正多位翻转。
目前纠错方法都是针对特定的故障模型而设计的,它们的纠错能力都有限。所以它们都有一个致命缺点,就是无法判断存储器中的错误是否超过了自身的纠错能力。当存储器的错误已经超过了纠错方法的纠错能力时,现有的纠错方法都无法判断,而是将错误的数据按照纠错方法进行纠错。因为错误超过了纠错能力,所以,纠错的结果也是错误的。由于无法判断该结果是错误的,所以,这个错误的结果往往会被系统当作是正确的指令或数据,参与执行。从而导致系统失效等问题。
目前的纠错方法已经难以满足存储器的应用需求。急需一种在存储器产生严重错误,且错误超过了自身的纠错能力时,能评估故障类型和纠错能力,并发出报警信号通知系统的纠错方法。
发明内容
针对上述问题,本发明提供了一种基于二维纠错码的内存加固方法及电路,该方法及电路既可以对抗SEU引起的故障率范围内的影响,又可以评估信息存储器的故障类型和纠错手段纠错能力,可以保证存储器在正常工作时,绝大部分故障都可以被纠正,进而保证系统有较高的工作效率,又可以在存储器产生了严重故障,不能由加固技术的容错方法纠正时,向CPU发出报警信号。
本发明的另一个目的在于提出一种基于二维纠错码的内存加固方法及电路,该方法及电路实现简便,安全可靠,低功耗、高效率,且不影响运算效率,适应高速存储器的应用。
为实现上述目的,本发明的技术方案为:
一种基于二维纠错码的内存加固方法,该方法将存储器分为程序存储区和数据存储区,对它们进行了分区加固,并根据存储区的各自特点通过存储器自诊断技术(MemorySelf-diagnose Method,MSDM)实现对存储内容的诊断和对错误的纠正,进行纠错报警。在纠错过程中,MSDM既可以纠正任意给定宽度内的连续故障和非连续故障;又可以判断存储器是否产生了超过纠错码纠错能力的故障。当存储器产生纠错码不能纠正的错误时,MSDM产生报警信号。
MSDM(Memory Self-diagnose Method,MSDM)利用程序和数据的不同特点,将存储器划分成不同的区,并将程序和数据存储在不同的区块中,一个被称为程序存储区,另一个是数据存储区。
MSDM方法在写数据和读数据时实现不同的功能,并对两个存储区,采用相异的处理报警流程。MSDM的过程可以分为:MSDM写流程、程序存储区MSDM读流程和数据存储区MSDM读流程。
对于程序存储区和数据存储区,MSDM在写数据时先计算数据的纠错码,再将数据和纠错码存入存储区的相应区域。MSDM在读数据时计算读出数据的纠错码,并和写数据时存储的纠错码一起评估当前数据的故障类型和纠错能力,再判断数据的故障类型是否超过了纠错能力。如果没有超过,则表示故障可以被纠正,纠正数据,并将纠正后的数据从存储区中读出。否则,表示故障类型超过了纠错码的纠错能力,故障不能被纠正,发出报警信号。
对程序存储区和数据存储区,MSDM采用了相异的方法来响应和处理报警信号。
由于程序存储区的故障对FPGA的重构过程有严重影响,所以,MSDM在发出报警信号后,关闭程序存储区的读写权限,并将程序存储区清零,等待程序重新加载。程序存储区MSDM读流程如下:
101、读出数据;
102、计算二维纠错码;
103、评估故障类型和纠错能力;
104、判断是否超过纠错能力,如果没超过,则进行纠错,纠正数据,进行正确数据的读出;如果超过纠错能力,则进行下一步;
105、发出报警信号,关闭程序存储区读写权限;
106、程序存储区清零,判断是否需要重新加载;
107、重新加载程序。
与程序故障会引起CPU产生难以预料的操作不同,数据故障会在控制流上传播,导致结果错误、路径错误等错误,这些错误可以被追踪、回溯并纠正,不需要产生报警信号时立刻终止重构过程。而且,数据在重构过程中不停变化,如果对数据存储区采用和程序存储区一样的方法来响应报警信号,会影响系统的效率。所以,对于数据存储区,MSDM在发出报警信号的同时读出有故障的数据。CPU接到报警后可以继续执行,也可以跳转到前面一个能够正确执行的检查点重新执行。为了判断数据存储区的故障是否影响多个存储单元的严重错误,MSDM自动检测相邻存储单元中的数据是否有故障,如果其他数据没有故障,则说明故障的影响较小,系统将继续执行,如果检测到若干个存储单元的故障都不可纠正,则可以判断该故障为严重故障。MSDM给CPU发出报警信号,同时对存储器中的数据清零,结束对FPGA的重构,并等待重新加载数据。数据存储区MSDM读流程具体如下:
201、读出数据;
202、计算二维纠错码;
203、评估故障类型和纠错能力;
204、判断是否超过纠错能力,如果没超过,则进行纠错,纠正数据,进行正确数据的读出;如果超过纠错能力,则进行下一步;
205、发出报警信号,读出数据;
206、检测相邻的多个存储单元;
207、判断有无多个报警,无则结束,有则继续下一步;
208、数据存储区清零,进行攻击报警;
209、判断是否需要重新加载数据;
210、重新加载数据。
MSDM是利用二维纠错码纠正多位错误,同时评估故障模型和纠错能力,并产生报警信号,且MSDM采用的二维纠错码以数据位宽为单位计算纠错码。与传统二维纠错码相比,以数据位宽为单位的优点是可以一次计算出二维纠错码所需要的所有校验码,而不需要为了计算列纠错码在写数据之前先读出存储单元原有的数据。
进一步,所述二维纠错码的生成过程包括数据分组、矩阵表示、行列确定和纠错码生成四个步骤:
1、数据分组;将数据以数据位宽为单位进行分组,把在物理上相邻的存储单元分到不同的逻辑组中。分组可以将多比特故障分散到不同组中,使系统在正常工作时每组数据一般只有一个比特故障,从而实现纠正多位故障。
由于分组后故障点分散到不同的组中,使每一组数据中都最多有一个比特有故障。如果有一组数据出现了其它故障类型,则说明该故障不在正常工作时的故障模型之内,也超出了二维纠错码的纠错能力。
2、矩阵表示,采用矩阵的方式表示数据分组;矩阵表示数据分组后,在逻辑上将每一组的数据看作是一个(m,n)的矩阵,其中m代表行数,n代表列数;数据表示成矩阵形式后可以利用行号和列号对所有比特进行定位。
3、行列确定;根据每一组数据的多少合理的确定矩阵的m和n的大小。m和n的选择以最小化硬件代价为目标。在设计二维纠错码时可以对m和n的值进行遍历,选取总校验位最少的一组m和n的值作为矩阵的m和n。
4、纠错码生成;二维纠错码生成对每一个矩阵的每一行和每一列都生成一个奇偶校验码。
用pm0、pm1、pm2等表示行校验码。它们由矩阵中一行的比特计算,其生成公式为:
Figure BDA0001226836430000061
用pn0、pn1、pn2等表示列校验码。它们由矩阵中一列的比特计算,其生成公式为:
Figure BDA0001226836430000062
当矩阵内有且只有一个比特故障时,行校验码可以显示故障比特所在的行,列校验码可以显示故障比特所在的列。由行校验码和列校验码可以定位并纠正故障比特。由于分组的作用,该二维纠错码可以纠正数据中l个比特范围内的所有连续和不连续故障,从而保证存储器的正常工作。当矩阵内有多余一个比特故障时,可以由行校验码和列校验码对故障类型进行识别,并发出警报。不会将错误的纠正数据当作正确的纠正数据执行,从而避免因此导致系统失效。
当矩阵内有且只有1位故障时,在矩阵内最多有一个行校验位和一个列校验位显示数据有故障,且它们所代表的直线相交于一点,这个交叉点就是有故障的比特,通过对该比特取反可以得到正确的数据值。
二维纠错码可以纠正的单比特错误在校验码上的表现形式只有一种,即当行、列校验码都有且只有一位显示数据有故障时,故障可以被定位和纠正。由于按照故障率分组,所以MSDM加固方法可以纠正集成电路在正常工作时的故障。
一种于二维纠错码的内存加固电路,该电路为存储器多位错误纠正和判断电路,所述存储器多位错误纠正和判断电路包括有数据行模块,纠错码模块,译码器,计算纠错码模块,计算检验、纠正因子模块,纠正数据模块和列I/O,所述译码器连接于数据行模块,并通过列I/O进行输出,纠错码模块也通过I/O进行输出,计算纠错码模块,计算检验、纠正因子模块分别连接于列I/O,且计算纠错码模块也连接于计算检验、纠正因子模块,纠正数据模块连接于计算纠错码模块,计算检验、纠正因子模块;计算检验、纠正因子模块将报警信号传输给报警信号模块,进行报警;其中,纠错码可以存储在存储器中,也可以和数据内容分开存储。
进一步,所述计算纠错码模块包含8个4输入异或门。
进一步,所述计算检验、纠正因子模块,包含8个2输入异或门、10个4输入与门、16个2输入与门。
进一步,所述纠正数据模块包含16个2输入异或门。
进一步,所述报警信号模块包含2个2输入与门、2个4输入或门、1个2输入或非门。
本发明所实现的方法及电路,既可以对抗SEU引起的故障率范围内的影响,又可以评估信息存储器的故障类型和纠错手段纠错能力,可以保证存储器在正常工作时,绝大部分故障都可以被纠正,进而保证系统有较高的工作效率,又可以在存储器产生了严重故障,不能由加固技术的容错方法纠正时,向CPU发出报警信号。
同时,该方法及电路实现简便,安全可靠,低功耗、高效率,且不影响运算效率,适应高速存储器的应用。
附图说明
图1为本发明所实施的MSDM写流程图。
图2为本发明所实施的MSDM程序存储区读流程图。
图3为本发明所实施的MSDM数据存储区读流程图。
图4为本发明所实施的数据分组后的矩阵表示图。
图5为本发明所实施的第一组数据的矩阵表示图。
图6为本发明所实施的第一组数据校验码图。
图7为本发明所实施的矩阵内有1位错误的图。
图8为本发明所实施与图3校验结果相同的故障图。
图9为本发明所实施的存储器多位错误纠正和判断电路图。
图10为本发明所实施的计算纠错码模块电路图。
图11为本发明所实施的计算检验、纠正因子模块电路图。
图12为本发明所实施的纠正数据模块电路图。
图13为本发明所实施的报警信号模块电路图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明所实现的基于二维纠错码的内存加固方法,是将存储器分为程序存储区和数据存储区,对它们进行了分区加固,并根据存储区的各自特点通过存储器自诊断技术(Memory Self-diagnose Method,MSDM)实现对存储内容的诊断和对错误的纠正,进行纠错报警。在纠错过程中,MSDM既可以纠正任意给定宽度内的连续故障和非连续故障;又可以判断存储器是否产生了超过纠错码纠错能力的故障。当存储器产生纠错码不能纠正的错误时,MSDM产生报警信号。
在系统中,程序是CPU要执行的指令集合,是固定不变的。如果程序有意外的变化,CPU会执行错误的指令,后果难以预料,甚至导致系统失效。所以,程序是无论如何不能有变化的。在系统中,数据在程序的执行过程中会经常读出、修改或写入等。所以,数据经常变化。如果数据流有故障,也会使系统产生错误的结果,甚至系统执行错误。数据是无论如何不能有故障的。
MSDM(Memory Self-diagnose Method,MSDM)利用程序和数据的不同特点,将存储器划分成不同的区,并将程序和数据存储在不同的区块中,一个被称为程序存储区,另一个是数据存储区。
MSDM方法在写数据和读数据时实现不同的功能,并对两个存储区,采用相异的处理报警流程。MSDM的过程可以分为:MSDM写流程、程序存储区MSDM读流程和数据存储区MSDM读流程。
对于程序存储区和数据存储区,MSDM在写数据时先计算数据的纠错码,再将数据和纠错码存入存储区的相应区域。其写流程如图1所示。
MSDM在读数据时计算读出数据的纠错码,并和写数据时存储的纠错码一起评估当前数据的故障类型和纠错能力,再判断数据的故障类型是否超过了纠错能力。如果没有超过,则表示故障可以被纠正,纠正数据,并将纠正后的数据从存储区中读出。否则,表示故障类型超过了纠错码的纠错能力,故障不能被纠正,发出报警信号。
对程序存储区和数据存储区,MSDM采用了相异的方法来响应和处理报警信号。
由于程序存储区的故障对FPGA的重构过程有严重影响,所以,MSDM在发出报警信号后,关闭程序存储区的读写权限,并将程序存储区清零,等待程序重新加载。程序存储区MSDM读流程如图2所示,其具体的步骤为:
101、读出数据;
102、计算二维纠错码;
103、评估故障类型和纠错能力;
104、判断是否超过纠错能力,如果没超过,则进行纠错,纠正数据,进行正确数据的读出;如果超过纠错能力,则进行下一步;
105、发出报警信号,关闭程序存储区读写权限;
106、程序存储区清零,判断是否需要重新加载;
107、重新加载程序。
与程序故障会引起CPU产生难以预料的操作不同,数据故障会在控制流上传播,导致结果错误、路径错误等错误。这些错误可以被追踪、回溯并纠正,不需要产生报警信号时立刻终止重构过程。而且,数据在重构过程中不停变化,如果对数据存储区采用和程序存储区一样的方法来响应报警信号,会影响系统的效率。所以,对于数据存储区,MSDM在发出报警信号的同时读出有故障的数据。CPU接到报警后可以继续执行,也可以跳转到前面一个能够正确执行的检查点重新执行。为了判断数据存储区的故障是否影响多个存储单元的严重错误,MSDM自动检测相邻存储单元中的数据是否有故障,如果其他数据没有故障,则说明故障的影响较小,系统将继续执行,如果检测到若干个存储单元的故障都不可纠正,则可以判断该故障为严重故障。MSDM给CPU发出报警信号,同时对存储器中的数据清零,结束对FPGA的重构,并等待重新加载数据。数据存储区MSDM读流程如图3所示,具体流程为:
201、读出数据;
202、计算二维纠错码;
203、评估故障类型和纠错能力;
204、判断是否超过纠错能力,如果没超过,则进行纠错,纠正数据,进行正确数据的读出;如果超过纠错能力,则进行下一步;
205、发出报警信号,读出数据;
206、检测相邻的多个存储单元;
207、判断有无多个报警,无则结束,有则继续下一步;
208、数据存储区清零,进行攻击报警;
209、判断是否需要重新加载数据;
210、重新加载数据。
MSDM是利用二维纠错码纠正多位错误,同时评估故障模型和纠错能力,并产生报警信号。所以二维纠错码的选择在MSDM加固技术中有着非常重要的地位。
随着存储器的多比特故障越来越多,要求纠错码可以检测多位错误。对故障类型和纠错能力的评估,要求纠错码可以对错误进行准确定位。基于以上要求,选择二维纠错码作为信息存储器的纠错码。
MSDM采用的二维纠错码以数据位宽为单位计算纠错码。与传统二维纠错码相比,以数据位宽为单位的优点是可以一次计算出二维纠错码所需要的所有校验码,而不需要为了计算列纠错码在写数据之前先读出存储单元原有的数据。可以看出,MSDM对效率没有损害,适应高速存储器的应用。
MSDM利用二维纠错码纠正多位故障,并评估故障类型和纠错能力。为了实现上述功能,二维纠错码的生成过程包括数据分组、矩阵表示、行列确定和纠错码生成四个步骤。
1、数据分组为了采用简单、易于实现的纠错码纠正多比特故障,将数据以数据位宽为单位进行分组,把在物理上相邻的存储单元分到不同的逻辑组中。分组可以将多比特故障分散到不同组中,使系统在正常工作时每组数据一般只有一个比特故障,从而实现纠正多位故障。分组的依据是存储器在正常工作环境下的故障率。设L是故障率,即一次辐射事件引起的多比特故障的最大错误数;l是分组数,根据L将数据分成l组。由于二维纠错码一次可以纠正一组中的单比特故障,所以,在保证L≤l时,可以保证二维纠错码可以纠正正常工作环境下的大多数故障,满足系统正常工作时的容错需要。
由于分组后故障点分散到不同的组中,使每一组数据中都最多有一个比特有故障。如果有一组数据出现了其它故障类型,则说明该故障不在正常工作时的故障模型之内,也超出了二维纠错码的纠错能力。
设数据为{d0,d1,…,dn},其中d0,d1,…,dn表示组成数据的比特,故障率是L。根据L≤l的条件,将数据分成l组,并将物理上相邻的比特分入不同的组。则有,第一组:{d0,d1,d2l,…};第二组:{d1,dl+1,d2l+1,…};第三组:{d2,dl+2,d2l+2,…}等等。与交错(interleaving)方法不同,这种分组方法没有改变存储单元的物理位置,不会使存储器的字、列选择布线变长,增加面积、数据存取时间和功耗等。因而,该方法具有低功耗、高效率的特点。
2、矩阵表示,采用矩阵的方式表示数据分组;矩阵表示数据分组后,在逻辑上将每一组的数据看作是一个(m,n)的矩阵,其中m代表行数,n代表列数。数据表示成矩阵形式后可以利用行号和列号对所有比特进行定位。定位是评估故障类型和纠错能力的基础。同时,定位的另一个优点是可以用简单的奇偶校验码纠正每组中一位故障。奇偶校验码的实现和电路都很简单,硬件代价小,面积、功耗都少,而且还具有计算校验位的延时短、执行速度快等优点。所以,MSDM适用于绝大多数类型的存储器,包括低功耗的高速存储器。数据分组后的矩阵表示如图4所示。
3、行列确定;行m和列n的值不同会影响二维纠错码中校验位的个数,带来不同的硬件冗余代价。根据每一组数据的多少合理的确定矩阵的m和n的大小。m和n的选择以最小化硬件代价为目标。在设计二维纠错码时可以对m和n的值进行遍历,选取总校验位最少的一组m和n的值作为矩阵的m和n。
由于当系统固定之后,它的数据位宽就已经确定了,所以,对于一个系统来说l、m和n在设计电路时确定。在工作时,l、m和n的值固定,不需要动态计算,不影响系统效率,适用于高速系统。
4、二维纠错码生成对每一个矩阵的每一行和每一列都生成一个奇偶校验码。用pm0、pm1、pm2等表示行校验码。它们由矩阵中一行的比特计算,其生成公式为:
Figure BDA0001226836430000121
用pn0、pn1、pn2等表示列校验码。它们由矩阵中一列的比特计算,其生成公式为:
Figure BDA0001226836430000131
当矩阵内有且只有一个比特故障时,行校验码可以显示故障比特所在的行,列校验码可以显示故障比特所在的列。由行校验码和列校验码可以定位并纠正故障比特。由于分组的作用,该二维纠错码可以纠正数据中l个比特范围内的所有连续和不连续故障,从而保证存储器的正常工作。当矩阵内有多余一个比特故障时,可以由行校验码和列校验码对故障类型进行识别,并发出警报。不会将错误的纠正数据当作正确的纠正数据执行,从而避免因此导致系统失效。
以存储器的数据位宽为64位、故障率L将数据分成l组。因为L=4,所以将数据分成4组,即l=4,每组数据有16个比特,并将物理上相邻的比特分配到不同的组。设数据为:data={d0,d1,…,d63},其中d0,d1,…,d63表示组成数据的比特。则第一组数据表示为:data1={d0,d4,…,d60};第二组数据表示为:data2={d1,d5,…,d61};第三组数据表示为:data3={d2,d6,…,d62};第四组数据表示为:data4={d3,d7,…,d63}。
分组后将每组数据表示成矩阵形式。并用遍历的方式确定行数m和列数n,目标是校验位最少。如m=2,n=8时,行列校验码共10位;m=4,n=4时,行列校验码共8位。所以选择m=4,n=4。数据分组的第一组数据的矩阵表示如图5所示。
对每一个矩阵的每一行和每一列都生成一个奇偶校验码。以第一组数据为例,校验码如图6所示。
图6中,pm0、pm1、pm2、pm3是行校验码,由矩阵中一行的比特计算。它们的生成公式为:
Figure BDA0001226836430000132
pn0、pn1、pn2、pn3是列校验码,由矩阵中一列的比特计算。它们的生成公式为:
Figure BDA0001226836430000141
其它组的校验码生成和第一组相同。对于一个64比特的数据,有32个比特的校验码来保护。
对于矩阵数据来说,矩阵中的单比特故障,可以利用行、列校验码定位,如图7所示。
图7中,设d20比特有故障,则导致行校验码pm1和列校验码pn1都有效。可以看出,pm1和pn1所代表的行和列相交于一点,则这点就是有故障的比特。
当矩阵内有且只有1位故障时,在矩阵内最多有一个行校验位和一个列校验位显示数据有故障,且它们所代表的直线相交于一点。这个交叉点就是有故障的比特。通过对该比特取反可以得到正确的数据值。
能够导致行校验码pm1和列校验码pn1都显示有错误的情况不止图7所表示的单点故障,还有其它故障类型,如图8所示的故障类型也表现为行校验码pm1和列校验码pn1都显示数据有错误。
图8中所示错误表示干扰或攻击引起的故障最少在21个比特的范围内引起5个以上比特的错误。这种故障出现的可能性很小,不在考虑的范围之内。
可以看出,二维纠错码可以纠正的单比特错误在校验码上的表现形式只有一种,即当行、列校验码都有且只有一位显示数据有故障时,故障可以被定位和纠正。由于按照故障率分组,所以MSDM加固方法可以纠正集成电路在正常工作时的故障。
在数据写入存储器时计算pmj和pnj,并保存在内存中,其中j={0,1,2,3}。在数据读出存储器时重新计算二维纠错码,记为p′mj和p′nj。比较pmj、pnj和p′mj、p′nj,得到检验因子Cmj和Cnj
Figure BDA0001226836430000142
式中:j={0,1,2,3}。
任意检验因子Cmj和Cnj有效表示小组有故障。
用位置因子Li表示故障数据的位置,其中i={0,1,…,9}。位置因子可以用检验因子来计算。
Figure BDA0001226836430000151
当i={0,…,3}时,Li表示行校验码有且只有一位显示数据有故障。当i={4,…,7}时,Li表示列校验码有且只有一位显示数据有故障。当i=8时,Li表示行校验码没有显示数据有故障。当i=9时,Li表示列校验码没有显示数据有故障。
用纠正因子Sk表示有故障数据的位置,计算如下,其中k={0,…,63}:
Figure BDA0001226836430000152
根据纠正因子纠正错误比特。
Figure BDA0001226836430000153
此例中的二维纠错码可以纠正4比特范围内的任意比特的连续和不连续的错误。
二维纠错码不仅可以纠正一个矩阵内的一位故障,即物理上相邻的l比特范围内的任意连续和非连续故障。也可以识别任何超过这个范围的故障类型,并给出报警信号。
可以被纠正的故障是行、列校验码都有且只有一位显示有故障。除了这种故障模型外的其它形式都表示该矩阵内存在纠错码纠正不了的故障。如只有一位或多位行校验码表示数据有故障且没有列校验码表示数据有故障;只有一位或多位列校验码表示数据有故障且没有行校验码表示数据有故障;有多于一位的行校验码和列校验码表示数据有故障等。这些情况表示该矩阵内存在不止一个比特故障,则可以判断该故障类型超过了MSDM的二维纠错码的纠错能力。
基于此,存储器多位错误纠正和判断的电路设计如图9所示。图中,存储器多位错误纠正和判断电路包括有数据行模块,纠错码模块,译码器,计算纠错码模块,计算检验、纠正因子模块,纠正数据模块和列I/O,所述译码器连接于数据行模块,并通过列I/O进行输出,纠错码模块也通过I/O进行输出,计算纠错码模块,计算检验、纠正因子模块分别连接于列I/O,且计算纠错码模块也连接于计算检验、纠正因子模块,纠正数据模块连接于计算纠错码模块,计算检验、纠正因子模块;其中,纠错码可以存储在存储器中,也可以和数据内容分开存储。
在写入数据时,译码器和列I/O根据地址信号选定数据单元。数据写入选定的数据单元。同时数据经过计算纠错码模块,计算行、列校验码Pmj、pnj。并根据地址信号将校验码存入存储器的相应区域。
在读出数据时,数据通过列I/O进入计算纠错码模块,计算读出数据的行、列校验码p′mj和p′nj。它们和存储在存储器中的校验码pmj和pnj都输入给计算检验、纠正因子模块,得到检验因子Cmj和Cnj。根据检验因子计算位置因子和报警信号。在报警信号无效时,根据位置因子计算纠正因子Sk。纠正因子和数据一起输入给纠正数据模块,得到正确的输出数据。
计算纠错码模块由公式(3)和公式(4)确定,包含8个4输入异或门,是组合电路,如图10所示。
计算检验、纠正因子模块由公式(5)-公式(7)确定,包含8个2输入异或门、10个4输入与门、16个2输入与门,是组合电路,如图11所示。
纠正数据模块由公式(8)确定,包含16个2输入异或门,是组合电路,如图12所示。
报警信号模块由公式(9)确定,包含2个2输入与门、2个4输入或门、1个2输入或非门,是组合电路,如图13所示。
MSDM加固方法采用组合电路实现,且硬件实现简单,具有速度快、面积小、功耗小的优点,适用于高速系统。
总之,本本发明所实现的方法及电路,既可以对抗SEU引起的故障率范围内的影响,又可以评估信息存储器的故障类型和纠错手段纠错能力,可以保证存储器在正常工作时,绝大部分故障都可以被纠正,进而保证系统有较高的工作效率,又可以在存储器产生了严重故障,不能由加固技术的容错方法纠正时,向CPU发出报警信号。
同时,该方法及电路实现简便,安全可靠,低功耗、高效率,且不影响运算效率,适应高速存储器的应用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种基于二维纠错码的内存加固电路,其特征在于该电路为存储器多位错误纠正和判断电路,其特征在于所述存储器多位错误纠正和判断电路包括有数据行模块,纠错码模块,译码器,计算纠错码模块,计算检验、纠正因子模块,纠正数据模块和列I/O,所述译码器连接于数据行模块,并通过列I/O进行输出,纠错码模块也通过I/O进行输出,计算纠错码模块,计算检验、纠正因子模块分别连接于列I/O,且计算纠错码模块也连接于计算检验、纠正因子模块,纠正数据模块连接于计算纠错码模块,计算检验、纠正因子模块;计算检验、纠正因子模块将报警信号传输给报警信号模块,进行报警。
2.如权利要求1所述的基于二维纠错码的内存加固电路,其特征在于所述计算纠错码模块包含8个4输入异或门。
3.如权利要求1所述的基于二维纠错码的内存加固电路,其特征在于所述计算检验、纠正因子模块,包含8个2输入异或门、10个4输入与门、16个2输入与门。
4.如权利要求1所述的基于二维纠错码的内存加固电路,其特征在于所述纠正数据模块包含16个2输入异或门。
5.如权利要求1所述的基于二维纠错码的内存加固电路,其特征在于所述报警信号模块包含2个2输入与门、2个4输入或门、1个2输入或非门。
CN201710087707.4A 2017-02-16 2017-02-16 基于二维纠错码的内存加固方法及电路 Active CN106708655B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710087707.4A CN106708655B (zh) 2017-02-16 2017-02-16 基于二维纠错码的内存加固方法及电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710087707.4A CN106708655B (zh) 2017-02-16 2017-02-16 基于二维纠错码的内存加固方法及电路

Publications (2)

Publication Number Publication Date
CN106708655A CN106708655A (zh) 2017-05-24
CN106708655B true CN106708655B (zh) 2021-07-16

Family

ID=58911771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710087707.4A Active CN106708655B (zh) 2017-02-16 2017-02-16 基于二维纠错码的内存加固方法及电路

Country Status (1)

Country Link
CN (1) CN106708655B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10599508B2 (en) * 2017-06-08 2020-03-24 International Business Machines Corporation I/O error diagnostics
CN107845404A (zh) * 2017-10-30 2018-03-27 中北大学 一种新型低冗余二维矩阵码对存储器进行加固方法
CN112612637B (zh) * 2020-12-10 2023-11-21 海光信息技术股份有限公司 内存数据存储方法、内存控制器、处理器芯片及电子设备
CN114765055B (zh) * 2021-01-14 2024-05-03 长鑫存储技术有限公司 纠错系统
CN114968654B (zh) * 2022-07-27 2022-10-25 南京芯驰半导体科技有限公司 一种纠错码电路及纠错方法
CN117234789A (zh) * 2023-09-07 2023-12-15 上海合芯数字科技有限公司 校验纠错方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7389467B2 (en) * 2003-05-20 2008-06-17 Samsung Electronics Co., Ltd. Method of error correction coding, and apparatus for and method of recording data using the coding method
CN101211286A (zh) * 2006-12-28 2008-07-02 三菱电机株式会社 电子控制装置
CN101582294A (zh) * 2009-06-19 2009-11-18 上海微小卫星工程中心 一种解决sram模块闩锁问题与增强sram模块可靠性的方法
CN102929741A (zh) * 2012-09-29 2013-02-13 邹粤林 一种提高闪存芯片纠错码使用效率的方法、系统及控制器
CN104202056A (zh) * 2014-04-02 2014-12-10 胡建国 一种二维码纠错译码的方法及二维码装置
CN105607974A (zh) * 2015-12-18 2016-05-25 西安电子科技大学 高可靠性多核处理系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1111961C (zh) * 2000-10-13 2003-06-18 太原理工大学 快速纠多位错的编码译码器
US8006166B2 (en) * 2007-06-12 2011-08-23 Micron Technology, Inc. Programming error correction code into a solid state memory device with varying bits per cell
CN105068882B (zh) * 2015-07-09 2017-11-17 西北工业大学 基于二维检错纠错编码的sram抗辐射加固方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7389467B2 (en) * 2003-05-20 2008-06-17 Samsung Electronics Co., Ltd. Method of error correction coding, and apparatus for and method of recording data using the coding method
CN101211286A (zh) * 2006-12-28 2008-07-02 三菱电机株式会社 电子控制装置
CN101582294A (zh) * 2009-06-19 2009-11-18 上海微小卫星工程中心 一种解决sram模块闩锁问题与增强sram模块可靠性的方法
CN102929741A (zh) * 2012-09-29 2013-02-13 邹粤林 一种提高闪存芯片纠错码使用效率的方法、系统及控制器
CN104202056A (zh) * 2014-04-02 2014-12-10 胡建国 一种二维码纠错译码的方法及二维码装置
CN105607974A (zh) * 2015-12-18 2016-05-25 西安电子科技大学 高可靠性多核处理系统

Also Published As

Publication number Publication date
CN106708655A (zh) 2017-05-24

Similar Documents

Publication Publication Date Title
CN106708655B (zh) 基于二维纠错码的内存加固方法及电路
US10372531B2 (en) Error-correcting code memory
US5692121A (en) Recovery unit for mirrored processors
Manoochehri et al. CPPC: Correctable parity protected cache
Rossi et al. Error correcting code analysis for cache memory high reliability and performance
CN103984630A (zh) 一种基于at697处理器的单粒子翻转故障处理方法
JP7418397B2 (ja) コモンモード障害信号に応じたメモリスキャン動作
US10108486B2 (en) Error protection
US11069421B1 (en) Circuitry for checking operation of error correction code (ECC) circuitry
Maestro et al. Fault tolerant single error correction encoders
CN105320575A (zh) 一种双模冗余流水线的自校验及恢复装置与方法
CN105260256A (zh) 一种双模冗余流水线的故障检测及回退方法
Lee et al. Evaluation of error detection coverage and fault-tolerance of digital plant protection system in nuclear power plants
Venkataraman et al. Multi-directional error correction schemes for SRAM-based FPGAs
May et al. A rapid prototyping system for error-resilient multi-processor systems-on-chip
US11321166B2 (en) Device for determining soft error occurred in a memory having stacked layers, and computer readable medium storing program thereon for determining the soft error
CN205193785U (zh) 一种双模冗余流水线的自校验及恢复装置
Sazeides et al. A real-time error detection (rtd) architecture and its use for reliability and post-silicon validation for f/f based memory arrays
Jin et al. TMR group coding method for optimized SEU and MBU tolerant memory design
Liu et al. A method to recover critical bits under a double error in SEC-DED protected memories
Sazeides et al. Implicit-storing and redundant-encoding-of-attribute information in error-correction-codes
Sunita et al. Matrix code based Multiple Error Correction Technique for N-bit memory data
Kustov et al. Efficiency Estimation of Single Error Correction, Double Error Detection and Double-Adjacent-Error Correction Codes
Kajmakovic et al. Challenges in Mitigating Errors in 1oo2D Safety Architecture with COTS Micro-controllers
Amin et al. A self-checking hardware journal for a fault-tolerant processor architecture

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

Address after: 518000 room 205, 2nd floor, new generation maker Park, Xinwei Road, Jiangwei community, Matian street, Guangming District, Shenzhen City, Guangdong Province

Applicant after: Shenzhen Shuan Zhongyi Technology Co.,Ltd.

Address before: 518000 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.)

Applicant before: SHENZHEN QIANHAI SHENGSHENG TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
TA01 Transfer of patent application right

Effective date of registration: 20210622

Address after: 518000 Room 202, 2 / F, building 1, software industry base, 81, 83 and 85 Gaoxin South 10th Road, Binhai community, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province

Applicant after: ZHONGYUN XIN'AN (SHENZHEN) TECHNOLOGY Co.,Ltd.

Address before: 518000 room 205, 2nd floor, new generation maker Park, Xinwei Road, Jiangwei community, Matian street, Guangming District, Shenzhen City, Guangdong Province

Applicant before: Shenzhen Shuan Zhongyi Technology Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant