CN105138412A - 嵌入式微处理器高速缓存的混合纠错装置与方法 - Google Patents
嵌入式微处理器高速缓存的混合纠错装置与方法 Download PDFInfo
- Publication number
- CN105138412A CN105138412A CN201510507409.7A CN201510507409A CN105138412A CN 105138412 A CN105138412 A CN 105138412A CN 201510507409 A CN201510507409 A CN 201510507409A CN 105138412 A CN105138412 A CN 105138412A
- Authority
- CN
- China
- Prior art keywords
- data
- bch
- edac
- mark
- cache
- 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
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种嵌入式微处理器高速缓存的混合纠错装置,其特征在于:包括EDAC标记编码器、BCH标记编码器、标记存储器、EDAC标记译码器、BCH标记译码器、EDAC数据编码器、BCH数据编码器、数据存储器、EDAC数据译码器、BCH数据译码器、命中判决器和数据选择器,采用EDAC和二进制BCH混合编码方法对Cache标记存储器和数据存储器中的多位数据错误进行纠错,并能够对1位数据错误进行快速纠错。
Description
技术领域
本发明涉及一种微处理器高速缓存数据错误的纠错装置,尤其涉及一种嵌入式微处理器高速缓存多位数据错误的纠错装置。本发明还涉及一种嵌入式微处理器高速缓存多位数据翻转错误的纠错方法。
背景技术
单粒子翻转(SEU)是在空间应用环境下,由于单粒子入射导致集成电路中存储单元发生数据翻转错误的事件,是空间环境下电子系统发生故障和工作异常的重要诱因之一。以往SEU主要表现为单个存储单元的单位数据翻转故障,但是在集成电路采用纳米工艺后,随着半导体器件特征尺寸的减小、工作频率的上升和节点工作电压的降低,在高速缓存(Cache)等规整的存储部件中,SEU引发多位翻转(MBU)的概率大大提高,会导致最多8位随机数据翻转错误,对空间应用的电子系统产生更大的危害。
作为现代微处理器中的一个重要组成部分,Cache完成程序代码与数据的缓冲,向处理器内核(如流水线)提供指令代码与数据。如果Cache中的存储单元发生数据错误,就会直接导致微处理器执行错误的指令,或对错误的数据进行运算,进而产生错误的执行结果。因此,对于空间应用的高可靠微处理器而言,进行Cache系统的数据错误自动纠正具有重要的意义。
现行的通用微处理器(如alpha21264、Itanium、Powerpc-a10等)主要采用奇偶校验和ECC(ErrorCorrectingCodes,错误纠正码)校验码实现Cache的错误保护,它的局限性是只能纠正单比特错误和检测双比特错误。Chishti等人基于缓存行粒度提出的MS-ECC方案,面积和性能开销很大。Kim等人提出的的二维校验码可以纠正多位错误,但它对于分散的随机错误效率较低。Intel在2011年提出VS-ECC方案,针对不同的Cache块使用纠错能力不同的算法,降低了算法带来的面积和性能开销,但在容错能力方面仍有待提升。基于分组奇偶校验的数据重载策略目前被用于多种空间微处理器,用于对Cache的数据错误进行容错,但是该方法只能解决组内1位错误问题,无法应对单粒子诱发的多位随机错误。总之,现有的技术方案对于MBU引发的2-4位随机错误缺乏行之有效的容错方案。
采用Cache数据错误检测,在出错时强制Cache不命中,通过重装Cache纠正数据错误,也是一种行之有效的Cache数据翻转故障的容错方法。但是这种方法会降低Cache的命中率,在使用目前广泛应用的DRAM类存储器的系统中,Cache失效开销一般都比较大,同时,在纳米工艺下,SEU导致数据错误的概率大大提高,因此,这种基于Cache重装容错方法会降低处理器的执行效率。
针对空间等环境下高可靠应用的需要,可以采用BCH编码方式对Cache数据存储器和Cache标记存储器进行保护。BCH(Bose-Chaudhuri-Hocquenheim)编码是一种定义在有限域GF(q)上线性循环分组码,能够对数据分组中的多个错误进行纠正。二进制BCH码是一种定义在有限域GF(2)上的BCH码,能检测并纠正数据分组中的多位随机错误的差错控制码,具有纠错能力强、构造方便、编码简单等优点,在通信领域(如数字广播、3G网络、光通信等)得到了广泛的应用。
基于BCH编解码的纠错方法可以对Cache中的多位数据错误进行检测与纠正,避免Cache数据重装带来的额外开销。但是,BCH译码算法较为复杂,发生错误时,需要占用多个时钟周期,完成伴随式计算、错误位置多项式计算、错误位置求解多个步骤才能完成错误纠正。对于一位错误和多位错误,BCH译码过程完全相同,纠错时都需要等待译码过程完成后,才能向CPU内核提供数据,导致CPU内核的流水线插入多个周期的暂停。
尽管在纳米级工艺下,SEU发生概率大大提高,且会引发多位数据翻转,但是,SEU引发单个数据位的翻转错误仍然是主要的错误模式,占较大比例。对于单个数据位错误,采用基于扩展海明码的错误检测与纠正(EDAC,ErrorDetectionandCorrection,)算法具有更好的纠错效率,纠错时间更短,只有需要5-6级门延迟即可完成。这样,在单个数据位错误时,如果采用EDAC算法,可以快速地向CPU内核提供纠正后的数据,不需要在CPU内核的流水线上插入等待周期,或只有插入1个等待周期。如果能够针对不同错误类型采取不同的处理算法,降低处理器流水线在SEU故障状态下的等待延迟,就可以提高微处理器在空间环境下的执行速度。
发明内容
本发明的目的在于设计一种嵌入式微处理器抗单粒子翻转效应的高速缓存中多位数据翻转故障的快速纠正装置与方法,能够对SEU导致的多位随机数据翻转错误进行自动的纠正,并能够对一位数据错误进行快速纠错。
一种嵌入式微处理器高速缓存的混合纠错装置,其特征在于:包括EDAC标记编码器、BCH标记编码器、标记存储器、EDAC标记译码器、BCH标记译码器、EDAC数据编码器、BCH数据编码器、数据存储器、EDAC数据译码器、BCH数据译码器、命中判决器和数据选择器;所述EDAC标记编码器在进行Cache写操作时,对写入的地址标记及行有效标志进行编码,生成EDAC校验码,与地址标记一起存入标记存储器;所述BCH标记编码器在进行Cache写操作时,对写入的地址标记、行有效标志及EDAC校验码进行二进制BCH编码,生成BCH校验码,存入标记存储器;所述标记存储器用于存储标记字和它的EDAC校验码及BCH校验码,所述标记字包括地址标记和行有效标志两部分;所述EDAC标记译码器在进行Cache访问时,对标记存储器输出的标记字及EDAC校验码进行校验,对标记字中的1位数据错误进行快速纠正,并将纠错后的标记字送命中判决器进行Cache命中判决;所述BCH标记译码器在进行Cache访问时,对标记存储器输出的标记字、EDAC校验码及BCH校验码进行校验,生成错误纠错标志,对标记字中的多位随机错误进行纠正,将纠错后的标记字送命中判决器进行Cache命中判决;所述EDAC数据编码器在进行Cache写操作时,对输入数据进行编码,生成EDAC校验码,与输入数据一起存入数据存储器;所述BCH数据编码器在进行Cache写操作时,对输入数据及EDAC校验码进行二进制BCH编码,生成BCH校验码,存入数据存储器;所述数据存储器用于存储Cache数据字和它的EDAC校验码及BCH校验码;所述EDAC数据译码器在进行Cache读操作时,对数据存储器输出的数据字及EDAC校验码进行校验,对数据字中的1位随机错误进行纠正,并将纠正后的数据字送数据选择器;所述BCH数据译码器在进行Cache读操作时,对数据存储器输出的数据字、EDAC校验码及BCH校验码进行校验,生成错误纠错标志,对数据字中的多位随机错误进行纠正,并将纠正后的数据字送数据选择器;所述命中判决器将输入的存储器地址中的标记部分,根据BCH数据译码器的指示,与EDAC数据译码器或BCH数据译码器的输出进行比较,判断Cache是否命中,输出命中指示标志,控制数据选择器的数据输出;所述数据选择器根据命中判决器送来的命中选择信号和BCH数据译码器送来的错误指示信号,在Cache命中时,选择EDAC数据译码器或BCH数据译码器的数据,输出给处理器内核。
一种嵌入式微处理器高速缓存的混合纠错方法,其特征在于:所述嵌入式微处理器高速缓存的混合纠错装置包括EDAC标记编码器、BCH标记编码器、标记存储器、EDAC标记译码器、BCH标记译码器、EDAC数据编码器、BCH数据编码器、数据存储器、EDAC数据译码器、BCH数据译码器、命中判决器和数据选择器;所述嵌入式微处理器高速缓存的混合纠错装置采用如下步骤与方法对Cache中的多位数据错误进行纠正:
(1)初始复位时,将标记存储器中所有标记均写入全0,所有行有效标志置为无效,所有校验码均设置为有效的校验码;将数据存储器中所有数据字均置为全0,所有校验码均设置为有效的校验码;
(2)处理器进行存储器读或写访问时,将存储器地址划分为地址标记、Cache索引和行内地址三部分,根据Cache索引从标记存储器中,读出标记字及EDAC校验码和BCH校验码,送EDAC标记译码器和BCH标记译码器,转步骤(3);
(3)EDAC标记译码器和BCH标记译码分别按照相应的译码规则对标记字进行校验,并纠正错误,如果没有错误,EDAC标记译码器和BCH标记译码器直接输出标记字给命中判决器,BCH标记译码器输出无错标志,转步骤(4);如果存在一位错误,EDAC标记译码器对错误进行快速纠正,将纠错后的标记字输出给命中判决器,BCH标记译码器输出一位错误标志,转步骤(4);如果存在多位错误,BCH标记译码器对错误进行纠正后,输出多位错误标志,并将纠错后的标记字输出给命中判决器,转步骤(4);
(4)如果BCH标记译码器输出的无错标志或一位错误标志有效,命中判决器立即使用EDAC标记译码器输出的标记字进行命中比较,转步骤(5);如果BCH标记译码器输出的多位错误标志有效,命中判决器等待BCH标记译码器完成纠错后,使用BCH标记译码器输出的标记字进行命中比较,转步骤(5);如果BCH标记译码器输出的一位错误标志或多位错误标志有效,将纠正后的标记字送EDAC标记编码器和BCH标记编码器,生成相应的校验码,与纠正后的标记字一起重新写入标记存储器,纠正标记存储器中的错误;
(5)将纠正后的标记字中的地址标记与存储器地址中的地址标记进行比较,如果相等,且行内地址对应的行有效标志为有效状态时,表示Cache命中,命中比较器输出有效的命中选择信号给数据选择器,转步骤(6);否则,Cache不命中,命中比较器将命中指示输出信号和命中选择信号置为无效状态,转步骤(6);
(6)处理器访问类型为存储器写访问时,转步骤(7);处理器访问类型为存储器读访问时,如果Cache命中,转步骤(8),如果不命中,转步骤(10);
(7)存储器写操作开始时,EDAC数据编码器立即对处理器送来的输入数据字进行编码,生成EDAC校验码,送数据存储器和BCH数据编码器,BCH数据编码器对输入数据字和EDAC校验码进行编码,生成对应的BCH校验码;如果Cache命中,将输入数据、EDAC校验码和BCH校验码一起写入数据存储器中,写入位置由命中选择信号、Cache索引和行内地址共同确定,然后结束对Cache的操作;如果Cache不命中,直接结束对Cache的操作;
(8)存储器地址有效后,立即根据存储器地址中的Cache索引和行内地址,从数据存储器中读出数据字、EDAC校验码和BCH校验码,送EDAC数据译码器和BCH数据译码器,分别按照相应的译码规则对数据字进行校验,并纠正错误,如果没有错误,EDAC数据译码器和BCH数据译码器直接输出数据字给数据选择器,BCH数据译码器输出数据无错标志,转步骤(9);如果存在一位错误,EDAC数据记译码器对错误进行快速纠正,将纠错后的数据字输出给数据选择器,BCH数据译码器输出一位错误标志,转步骤(9);如果存在多位错误,BCH数据译码器输出多位错误标志,并启动错误纠正过程,转步骤(9);
(9)如果BCH数据译码器输出的无错标志或一位错误标志有效,数据选择器立即将EDAC数据译码器输出的数据字输出给处理器内核,命中判决器输出命中指示信号,结束Cache的操作;如果BCH数据译码器输出的多位错误标志有效,等待BCH数据译码器完成纠错过程后,数据选择器将BCH数据译码器输出的数据字输出给处理器内核,命中判决器输出命中指示信号,结束Cache的操作;如果BCH数据译码器输出的一位错误标志或多位错误标志有效,在结束Cache操作时,将纠正后的数据字送EDAC数据编码器和BCH数据编码器,生成相应的EDAC校验码和BCH校验码,与纠正后的数据字一起重新写入数据存储器,纠正数据存储器中的错误;
(10)在读不命中时,根据处理器内核送来的存储器地址,从主存储器中读取与Cache行大小相同数量的数据字,将数据字依次送EDAC数据编码器生成EDAC校验码,再将数据字和EDAC校验码送BCH数据编码器生成BCH校验码,然后将数据字、EDAC校验码和BCH校验码一起写入数据存储器中,写入位置由Cache索引确定;然后根据存储器地址产生相应的地址标记,将地址标记及行有效标志一起组成标记字,送EDAC标记编码器和BCH标记编码器生成EDAC校验码和BCH校验码,将标记字及生成的EDAC校验码与BCH校验码一起写入标记存储器中Cache索引指定的位置,完成Cache行的更新;同时,将存储器地址对应的数据字经EDAC数据译码器、数据选择器送处理器内核,使命中判决器输出命中指示信号,结束对Cache的操作。
本发明实现的嵌入式微处理器高速缓存的混合纠错装置与方法,在嵌入式微处理器中能够纠正Cache的标记存储器和数据存储器由于SEU引发的多位随机错误,并能够对其中的单位错误进行快速纠错,可以提高微处理器在空间等恶劣环境下应用的可靠性与处理性能。
附图说明
图1是采用单一纠错方法的Cache数据错误纠正装置的结构图;
图2是根据本发明的混合纠错装置结构图。
具体实施方式
本实施例结合一种SPARCV8体系结构的嵌入式微处理器对本发明的具体实施方式进行说明。该SPARCV8体系结构的嵌入式微处理器,采用32位RISC架构,指令Cache和数据Cache均采用直接映像方式,容量都为2K字节,Cache行大小是4个字,字宽32位。不考虑容错措施时,Cache的标记存储器容量为128字,字宽度25位,其中地址标记21位,行有效标记4位,分别表示行内每一个字是否有效。
处理器内核进行存储器访问时,32位存储器地址送给Cache后,划分为地址标记(位31-11,共21位)、Cache索引(位10-4,共7位)和行内地址(位3-0,共4位,低2位无用)三部分,其中地址标记用于Cache命中比较,Cache索引和行内地址作为标记存储器与数据存储器的访问地址。
一般情况下Cache主要包含三部分:Cache控制器、Cache标记存储器和Cache数据存储器,受SEU影响导致数据错误的部分主要是标记存储器和数据存储器。标记存储器中出现数据错误时,会导致Cache误命中或误失效,误失效一般情况下只有是影响Cache命中率,导致Cache访问性能降低,不会导致错误的结果;误命中则会导致Cache将错误的数据或指令提供给处理器内核,从而导致错误的执行结果。Cache数据存储器中出现错误时,就会在命中时向处理器内核提供错误的数据或指令代码,导致错误的执行结果。
针对空间等环境下高可靠应用的需要,可以采用如附图1所示的装置结构,通过EDAC编码方式或BCH编码方式对Cache数据存储器和Cache标记存储器进行保护。EDAC编码方式能够实现对保护字中单个错误的纠错,具有实现简单、速度快的特点。二进制BCH码是一种能检测并纠正多位随机错误的差错控制码,具有构造方便和纠错能力强的优点,缺点是纠错算法复杂,速度慢。本实施例采用EDAC和BCH混合编码方式对Cache的标记存储器与数据存储器进行保护,对发生较多的一位数据错误采用EDAC进行快速纠正,对其它多位错误采用BCH进行多周期纠错。由于BCH译码器需要多个周期才能完成纠错,在进行多位纠错时,将处理器内核置于等待状态。
本实施例EDAC编码采用扩展海明码方式,生成矩阵定义为GEDAC,监督矩阵为HEDAC,对32位Cache数据和25位标记字生成7位校验码,能够纠正一位错误。EDAC编码完成后的数据字(标记字)及校验码,再送BCH编码器进行二次编码。因此,BCH编码不仅对数据字(标记字)进行保护,还对EDAC校验码进行保护。
本实施例BCH编码采用二进制BCH码,能够对Cache数据存储器的39位数据(32位数据字和7位EDAC校验码)或Cache标记存储器的32位数据(25位标记字和7位EDAC校验码)中最多4位错误进行纠正。BCH编码码长n=63,选择本原多项式p(x)=x6+x+1,校验位个数n-k=24,最大信息位长度k=39,最小码距dmin=9。进而确定生成多项式如下:
g(x)=1+x+x2+x4+x5+x6+x8+x9+x10+x13+x16+x17+x19+x20+x22+x23+x24可以得到[63,39]BCH码的生成矩阵G39×63如下:
由于Cache数据存储器和Cache标记存储器的数据位宽分别是39位和32位,对Cache标记存储器进行保护时,对[63,39]BCH码进行缩短,使用缩短后的生成矩阵G32×56。设m为欲编码的39位或32位数据,码字C=m·G即为相应的BCH编码,其中校验位宽度为24位。
根据生成矩阵G不难得到Cache数据存储器和Cache标记存储器的BCH校验矩阵H24×63和H24×56,将从Cache数据存储器或Cache标记存储器读出的63位或56位包括检验码的数据记为R,计算伴随式S=R·HT,若S为全零向量,说明R没有错误,否则说明R发生了1至4位错误,由伴随式S可以求解得到错误位置多项式,根据错误位置多项式采用迭代或代数法均可以求得错误位置,通过对错误位取反即可达到错误纠正的目的。
基于上述基本原理与设置,本发明的嵌入式微处理器高速缓存的混合纠错装置的一种具体实施方式如下:
在SPARCV8体系结构的嵌入式微处理器中,将高速缓存设置为如图2所示的混合纠错装置,包括EDAC标记编码器、BCH标记编码器、标记存储器、EDAC标记译码器、BCH标记译码器、EDAC数据编码器、BCH数据编码器、数据存储器、EDAC数据译码器、BCH数据译码器、命中判决器和数据选择器。
EDAC标记编码器在进行Cache写操作时,对写入的地址标记及行有效标志按生成矩阵GEDAC进行编码,生成7位EDAC校验码,与地址标记一起存入标记存储器;
BCH标记编码器在进行Cache写操作时,使用生成矩阵G32×56,对写入的21位地址标记、4位行有效标志及7位EDAC校验码进行二进制BCH编码,生成24位BCH校验码,存入标记存储器。
由于Cache采用直接映像算法,标记存储器采用128字×56位的存储器,按地址顺序存储标记字(25位)和它的EDAC校验码(7位)、BCH校验码(24位),其中标记字包括地址标记(21位)和行有效标志(4位)两部分。
EDAC标记译码器在进行Cache访问时,使用监督矩阵HEDAC对标记存储器输出的标记字及EDAC校验码进行校验,对标记字中的1位数据错误进行快速纠正,并将纠错后的标记字送命中判决器进行Cache命中判决。
BCH标记译码器在进行Cache访问时,使用校验矩阵H24×56,对标记存储器输出的标记字、EDAC校验码及BCH校验码进行校验,生成错误纠错标志,对标记字中的多位随机错误进行纠正,将纠错后的标记字送命中判决器进行Cache命中判决。
命中判决器将输入的存储器地址中的标记部分,根据BCH数据译码器的指示,与EDAC数据译码器或BCH数据译码器的输出进行比较,如果相等,表示Cache命中,输出命中标志,控制数据选择器选择数据输出;如果不相等,则Cache不命中。
EDAC数据编码器在进行Cache写操作时,使用生成矩阵GEDAC,对32位输入数据进行编码,生成7位EDAC校验码,与输入数据一起存入数据存储器。
BCH数据编码器在进行Cache写操作时,使用生成矩阵G39×63,对32位输入数据及7位EDAC校验码进行二进制BCH编码,生成24位BCH校验码,存入数据存储器
数据存储器采用512字×63位的存储器,用于存储32位Cache数据字和它的7位EDAC校验码及24位BCH校验码。
EDAC数据译码器在进行Cache读操作时,使用监督矩阵HEDAC,对数据存储器输出的数据字及EDAC校验码进行校验,对数据字中的1位随机错误进行纠正,并将纠正后的数据字送数据选择器。
BCH数据译码器在进行Cache读操作时,使用校验矩阵H24×63,对数据存储器输出的数据字、EDAC校验码及BCH校验码进行校验,生成错误纠错标志,对数据字中的2至4位随机错误进行纠正,并将纠正后的数据字送数据选择器。
数据选择器根据命中判决器送来的命中选择信号和BCH数据译码器送来的错误指示信号,在Cache命中时,选择EDAC数据译码器或BCH数据译码器的数据,输出给处理器内核。
所述SPARCV8体系结构的嵌入式微处理器高速缓存的混合纠错装置采用如下步骤与方法对Cache中的数据错误进行检测与纠正:
(1)初始复位时,将标记存储器中所有标记均写入全0,所有行有效标志置为无效,所有校验码均设置为有效的校验码;将数据存储器中所有数据字均置为全0,所有校验码均设置为有效的校验码;
(2)处理器进行存储器读或写访问时,将32位存储器地址划分为21位地址标记、7位Cache索引和4位行内地址三部分,根据Cache索引从标记存储器中,读出25位标记字及7位EDAC校验码和24位BCH校验码,送EDAC标记译码器和BCH标记译码器,转步骤(3);
(3)EDAC标记译码器和BCH标记译码分别按照相应的译码规则对标记字进行校验,并纠正错误,如果没有错误,EDAC标记译码器和BCH标记译码器直接输出标记字给命中判决器,BCH标记译码器输出无错标志,转步骤(4);如果存在一位错误,EDAC标记译码器对错误进行快速纠正,将纠错后的标记字输出给命中判决器,BCH标记译码器输出一位错误标志,转步骤(4);如果存在2至4位错误,BCH标记译码器对错误进行纠正后,输出多位错误标志,并将纠错后的标记字输出给命中判决器,转步骤(4);
(4)如果BCH标记译码器输出的无错标志或一位错误标志有效,命中判决器立即使用EDAC标记译码器输出的标记字进行命中比较,转步骤(5);如果BCH标记译码器输出的多位错误标志有效,命中判决器等待BCH标记译码器完成纠错后,使用BCH标记译码器输出的标记字进行命中比较,转步骤(5);如果BCH标记译码器输出的一位错误标志或多位错误标志有效,将纠正后的标记字送EDAC标记编码器和BCH标记编码器,生成相应的校验码,与纠正后的标记字一起重新写入标记存储器,纠正标记存储器中的错误;
(5)将纠正后的标记字中的地址标记(21位)与存储器地址中的21位地址标记进行比较,如果相等,且行内地址对应的行有效标志为有效状态时,表示Cache命中,命中比较器输出有效的命中选择信号给数据选择器,转步骤(6);否则,Cache不命中,命中比较器将命中指示输出信号和命中选择信号置为无效状态,转步骤(6);
(6)处理器访问类型为存储器写访问时,转步骤(7);处理器访问类型为存储器读访问时,如果Cache命中,转步骤(8),如果不命中,转步骤(10);
(7)存储器写操作开始时,EDAC数据编码器立即对处理器送来的32位输入数据字进行编码,生成7位EDAC校验码,送数据存储器和BCH数据编码器,BCH数据编码器对32位输入数据字和7位EDAC校验码进行编码,生成24位BCH校验码;如果Cache命中,将输入数据、EDAC校验码和BCH校验码共63位一起写入数据存储器中,写入位置由命中选择信号、Cache索引和行内地址共同确定,然后结束对Cache的操作;如果Cache不命中,直接结束对Cache的操作;
(8)存储器地址有效后,立即根据存储器地址中的Cache索引和行内地址,从数据存储器中读出数据字、EDAC校验码和BCH校验码,送EDAC数据译码器和BCH数据译码器,分别使用监督矩阵HEDAC和校验矩阵H24×63对数据字进行校验,并纠正错误,如果没有错误,EDAC数据译码器和BCH数据译码器直接输出数据字给数据选择器,BCH数据译码器输出数据无错标志,转步骤(9);如果存在一位错误,EDAC数据记译码器对错误进行快速纠正,将纠错后的数据字输出给数据选择器,BCH数据译码器输出一位错误标志,转步骤(9);如果存在2至4位错误,BCH数据译码器输出多位错误标志,并启动错误纠正过程,转步骤(9);
(9)如果BCH数据译码器输出的无错标志或一位错误标志有效,数据选择器立即将EDAC数据译码器输出的数据字输出给处理器内核,命中判决器输出命中指示信号,结束Cache的操作;如果BCH数据译码器输出的多位错误标志有效,等待BCH数据译码器完成纠错过程后,数据选择器将BCH数据译码器输出的数据字输出给处理器内核,命中判决器输出命中指示信号,结束Cache的操作;如果BCH数据译码器输出的一位错误标志或多位错误标志有效,在结束Cache操作时,将纠正后的数据字送EDAC数据编码器和BCH数据编码器,生成相应的EDAC校验码和BCH校验码,与纠正后的数据字一起重新写入数据存储器,纠正数据存储器中的错误;
(10)在读不命中时,根据处理器内核送来的存储器地址,从主存储器中读取与Cache行大小相同数量的数据字,将数据字依次送EDAC数据编码器生成EDAC校验码,再将数据字和EDAC校验码送BCH数据编码器生成BCH校验码,然后将数据字、EDAC校验码和BCH校验码一起写入数据存储器中,写入位置由Cache索引确定;然后根据存储器地址产生相应的地址标记,将地址标记及行有效标志一起组成标记字,送EDAC标记编码器和BCH标记编码器生成EDAC校验码和BCH校验码,将标记字及生成的EDAC校验码与BCH校验码一起写入标记存储器中Cache索引指定的位置,完成Cache行的更新;同时,将存储器地址对应的数据字经EDAC数据译码器、数据选择器送处理器内核,使命中判决器输出命中指示信号,结束对Cache的操作。
本发明实现的嵌入式微处理器高速缓存的混合纠错装置与方法,可以对嵌入式微处理器高速缓存中多位随机数据错误进行检测与纠正,能够对发生较多的一位数据错误进行快速纠正,可以提高嵌入式微处理器在空间环境下工作的可靠性与处理性能。
在不脱离本发明精神的范围内,本发明可以具有多种变形,如:Cache容量变化、EDAC生成多项式、BCH生成矩阵的选择等,均可在不同的实施中改变。这些变形也包含在本发明所要求保护的范围之内。
Claims (2)
1.一种嵌入式微处理器高速缓存的混合纠错装置,其特征在于:包括EDAC标记编码器、BCH标记编码器、标记存储器、EDAC标记译码器、BCH标记译码器、EDAC数据编码器、BCH数据编码器、数据存储器、EDAC数据译码器、BCH数据译码器、命中判决器和数据选择器;所述EDAC标记编码器在进行Cache写操作时,对写入的地址标记及行有效标志进行编码,生成EDAC校验码,与地址标记一起存入标记存储器;所述BCH标记编码器在进行Cache写操作时,对写入的地址标记、行有效标志及EDAC校验码进行二进制BCH编码,生成BCH校验码,存入标记存储器;所述标记存储器用于存储标记字和它的EDAC校验码及BCH校验码,所述标记字包括地址标记和行有效标志两部分;所述EDAC标记译码器在进行Cache访问时,对标记存储器输出的标记字及EDAC校验码进行校验,对标记字中的1位数据错误进行快速纠正,并将纠错后的标记字送命中判决器进行Cache命中判决;所述BCH标记译码器在进行Cache访问时,对标记存储器输出的标记字、EDAC校验码及BCH校验码进行校验,生成错误纠错标志,对标记字中的多位随机错误进行纠正,将纠错后的标记字送命中判决器进行Cache命中判决;所述EDAC数据编码器在进行Cache写操作时,对输入数据进行编码,生成EDAC校验码,与输入数据一起存入数据存储器;所述BCH数据编码器在进行Cache写操作时,对输入数据及EDAC校验码进行二进制BCH编码,生成BCH校验码,存入数据存储器;所述数据存储器用于存储Cache数据字和它的EDAC校验码及BCH校验码;所述EDAC数据译码器在进行Cache读操作时,对数据存储器输出的数据字及EDAC校验码进行校验,对数据字中的1位随机错误进行纠正,并将纠正后的数据字送数据选择器;所述BCH数据译码器在进行Cache读操作时,对数据存储器输出的数据字、EDAC校验码及BCH校验码进行校验,生成错误纠错标志,对数据字中的多位随机错误进行纠正,并将纠正后的数据字送数据选择器;所述命中判决器将输入的存储器地址中的标记部分,根据BCH数据译码器的指示,与EDAC数据译码器或BCH数据译码器的输出进行比较,判断Cache是否命中,输出命中指示标志,控制数据选择器的数据输出;所述数据选择器根据命中判决器送来的命中选择信号和BCH数据译码器送来的错误指示信号,在Cache命中时,选择EDAC数据译码器或BCH数据译码器的数据,输出给处理器内核。
2.一种嵌入式微处理器高速缓存的混合纠错方法,其特征在于:所述嵌入式微处理器高速缓存的混合纠错装置包括EDAC标记编码器、BCH标记编码器、标记存储器、EDAC标记译码器、BCH标记译码器、EDAC数据编码器、BCH数据编码器、数据存储器、EDAC数据译码器、BCH数据译码器、命中判决器和数据选择器;所述嵌入式微处理器高速缓存的混合纠错装置采用如下步骤与方法对Cache中的多位数据错误进行纠正:
(1)初始复位时,将标记存储器中所有标记均写入全0,所有行有效标志置为无效,所有校验码均设置为有效的校验码;将数据存储器中所有数据字均置为全0,所有校验码均设置为有效的校验码;
(2)处理器进行存储器读或写访问时,将存储器地址划分为地址标记、Cache索引和行内地址三部分,根据Cache索引从标记存储器中,读出标记字及EDAC校验码和BCH校验码,送EDAC标记译码器和BCH标记译码器,转步骤(3);
(3)EDAC标记译码器和BCH标记译码分别按照相应的译码规则对标记字进行校验,并纠正错误,如果没有错误,EDAC标记译码器和BCH标记译码器直接输出标记字给命中判决器,BCH标记译码器输出无错标志,转步骤(4);如果存在一位错误,EDAC标记译码器对错误进行快速纠正,将纠错后的标记字输出给命中判决器,BCH标记译码器输出一位错误标志,转步骤(4);如果存在多位错误,BCH标记译码器对错误进行纠正后,输出多位错误标志,并将纠错后的标记字输出给命中判决器,转步骤(4);
(4)如果BCH标记译码器输出的无错标志或一位错误标志有效,命中判决器立即使用EDAC标记译码器输出的标记字进行命中比较,转步骤(5);如果BCH标记译码器输出的多位错误标志有效,命中判决器等待BCH标记译码器完成纠错后,使用BCH标记译码器输出的标记字进行命中比较,转步骤(5);如果BCH标记译码器输出的一位错误标志或多位错误标志有效,将纠正后的标记字送EDAC标记编码器和BCH标记编码器,生成相应的校验码,与纠正后的标记字一起重新写入标记存储器,纠正标记存储器中的错误;
(5)将纠正后的标记字中的地址标记与存储器地址中的地址标记进行比较,如果相等,且行内地址对应的行有效标志为有效状态时,表示Cache命中,命中比较器输出有效的命中选择信号给数据选择器,转步骤(6);否则,Cache不命中,命中比较器将命中指示输出信号和命中选择信号置为无效状态,转步骤(6);
(6)处理器访问类型为存储器写访问时,转步骤(7);处理器访问类型为存储器读访问时,如果Cache命中,转步骤(8),如果不命中,转步骤(10);
(7)存储器写操作开始时,EDAC数据编码器立即对处理器送来的输入数据字进行编码,生成EDAC校验码,送数据存储器和BCH数据编码器,BCH数据编码器对输入数据字和EDAC校验码进行编码,生成对应的BCH校验码;如果Cache命中,将输入数据、EDAC校验码和BCH校验码一起写入数据存储器中,写入位置由命中选择信号、Cache索引和行内地址共同确定,然后结束对Cache的操作;如果Cache不命中,直接结束对Cache的操作;
(8)存储器地址有效后,立即根据存储器地址中的Cache索引和行内地址,从数据存储器中读出数据字、EDAC校验码和BCH校验码,送EDAC数据译码器和BCH数据译码器,分别按照相应的译码规则对数据字进行校验,并纠正错误,如果没有错误,EDAC数据译码器和BCH数据译码器直接输出数据字给数据选择器,BCH数据译码器输出数据无错标志,转步骤(9);如果存在一位错误,EDAC数据记译码器对错误进行快速纠正,将纠错后的数据字输出给数据选择器,BCH数据译码器输出一位错误标志,转步骤(9);如果存在多位错误,BCH数据译码器输出多位错误标志,并启动错误纠正过程,转步骤(9);
(9)如果BCH数据译码器输出的无错标志或一位错误标志有效,数据选择器立即将EDAC数据译码器输出的数据字输出给处理器内核,命中判决器输出命中指示信号,结束Cache的操作;如果BCH数据译码器输出的多位错误标志有效,等待BCH数据译码器完成纠错过程后,数据选择器将BCH数据译码器输出的数据字输出给处理器内核,命中判决器输出命中指示信号,结束Cache的操作;如果BCH数据译码器输出的一位错误标志或多位错误标志有效,在结束Cache操作时,将纠正后的数据字送EDAC数据编码器和BCH数据编码器,生成相应的EDAC校验码和BCH校验码,与纠正后的数据字一起重新写入数据存储器,纠正数据存储器中的错误;
(10)在读不命中时,根据处理器内核送来的存储器地址,从主存储器中读取与Cache行大小相同数量的数据字,将数据字依次送EDAC数据编码器生成EDAC校验码,再将数据字和EDAC校验码送BCH数据编码器生成BCH校验码,然后将数据字、EDAC校验码和BCH校验码一起写入数据存储器中,写入位置由Cache索引确定;然后根据存储器地址产生相应的地址标记,将地址标记及行有效标志一起组成标记字,送EDAC标记编码器和BCH标记编码器生成EDAC校验码和BCH校验码,将标记字及生成的EDAC校验码与BCH校验码一起写入标记存储器中Cache索引指定的位置,完成Cache行的更新;同时,将存储器地址对应的数据字经EDAC数据译码器、数据选择器送处理器内核,使命中判决器输出命中指示信号,结束对Cache的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510507409.7A CN105138412B (zh) | 2015-08-19 | 2015-08-19 | 嵌入式微处理器高速缓存的混合纠错装置与方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510507409.7A CN105138412B (zh) | 2015-08-19 | 2015-08-19 | 嵌入式微处理器高速缓存的混合纠错装置与方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105138412A true CN105138412A (zh) | 2015-12-09 |
CN105138412B CN105138412B (zh) | 2018-03-20 |
Family
ID=54723768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510507409.7A Active CN105138412B (zh) | 2015-08-19 | 2015-08-19 | 嵌入式微处理器高速缓存的混合纠错装置与方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105138412B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844281A (zh) * | 2016-11-22 | 2017-06-13 | 北京控制工程研究所 | 一种适用于PowerPC处理器的高可靠指令Cache |
WO2018149304A1 (zh) * | 2017-02-15 | 2018-08-23 | 中兴通讯股份有限公司 | 数据处理方法和装置、数据处理设备及存储介质 |
CN112181712A (zh) * | 2020-09-28 | 2021-01-05 | 中国人民解放军国防科技大学 | 一种提高处理器核可靠性的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102545914A (zh) * | 2010-12-27 | 2012-07-04 | 联芯科技有限公司 | Bch编译码方法及装置 |
US20130262957A1 (en) * | 2012-03-30 | 2013-10-03 | Wei Wu | Method Of Correcting Adjacent Errors By Using BCH-Based Error Correction Coding |
CN104716965A (zh) * | 2015-03-09 | 2015-06-17 | 复旦大学 | 一种bch软解码算法及其实现电路 |
CN204833243U (zh) * | 2015-08-19 | 2015-12-02 | 首都师范大学 | 嵌入式微处理器高速缓存的混合纠错装置 |
-
2015
- 2015-08-19 CN CN201510507409.7A patent/CN105138412B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102545914A (zh) * | 2010-12-27 | 2012-07-04 | 联芯科技有限公司 | Bch编译码方法及装置 |
US20130262957A1 (en) * | 2012-03-30 | 2013-10-03 | Wei Wu | Method Of Correcting Adjacent Errors By Using BCH-Based Error Correction Coding |
CN104716965A (zh) * | 2015-03-09 | 2015-06-17 | 复旦大学 | 一种bch软解码算法及其实现电路 |
CN204833243U (zh) * | 2015-08-19 | 2015-12-02 | 首都师范大学 | 嵌入式微处理器高速缓存的混合纠错装置 |
Non-Patent Citations (1)
Title |
---|
李志国等: "BCH码迭代译码算法及软件实现方法", 《计算机技术与发展》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844281A (zh) * | 2016-11-22 | 2017-06-13 | 北京控制工程研究所 | 一种适用于PowerPC处理器的高可靠指令Cache |
WO2018149304A1 (zh) * | 2017-02-15 | 2018-08-23 | 中兴通讯股份有限公司 | 数据处理方法和装置、数据处理设备及存储介质 |
CN112181712A (zh) * | 2020-09-28 | 2021-01-05 | 中国人民解放军国防科技大学 | 一种提高处理器核可靠性的方法及装置 |
CN112181712B (zh) * | 2020-09-28 | 2022-02-22 | 中国人民解放军国防科技大学 | 一种提高处理器核可靠性的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105138412B (zh) | 2018-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8010875B2 (en) | Error correcting code with chip kill capability and power saving enhancement | |
CN108351820B (zh) | 在跨存储器链路传送纠正数据时保护ecc位置 | |
CN101281481B (zh) | 一种存储器抗单粒子翻转的纠错检错方法 | |
US9940457B2 (en) | Detecting a cryogenic attack on a memory device with embedded error correction | |
US8464137B2 (en) | Probabilistic multi-tier error correction in not-and (NAND) flash memory | |
US8051337B2 (en) | System and method for fast cache-hit detection | |
US8566682B2 (en) | Failing bus lane detection using syndrome analysis | |
CN104798047A (zh) | 错误检测和校正装置及方法 | |
CN104347122B (zh) | 一种消息式内存模组的访存方法和装置 | |
CN109716661A (zh) | 用于存储装置的阶梯码编码及解码的设备及方法 | |
US10698765B2 (en) | Techniques to recover data in a network storage system | |
CN106708655B (zh) | 基于二维纠错码的内存加固方法及电路 | |
CN102017425A (zh) | 用于执行级联纠错的方法和系统 | |
CN105022675B (zh) | 嵌入式微处理器高速缓存4位数据翻转错误的纠正装置与方法 | |
CN204833244U (zh) | 嵌入式微处理器高速缓存4位数据翻转错误的纠正装置 | |
CN105138412A (zh) | 嵌入式微处理器高速缓存的混合纠错装置与方法 | |
CN105005513B (zh) | 高速缓存多位数据翻转错误的检测及容错装置与方法 | |
WO2022125521A1 (en) | Modified parity data using a poison data unit | |
CN109753369A (zh) | 一种寄存器及内存中顺序数组的数据编码及校验方法 | |
US11416331B2 (en) | Modified checksum using a poison data pattern | |
CN101848001B (zh) | Flash控制器中BCH编译码的数据长度扩展方法 | |
CN204833243U (zh) | 嵌入式微处理器高速缓存的混合纠错装置 | |
CN204856465U (zh) | 高速缓存多位数据翻转错误的检测及容错装置 | |
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 | |
CN103631669B (zh) | 一种纠错sram的回写方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |