纠错方法以及运算器的制作方法

文档序号:6457243阅读:171来源:国知局
专利名称:纠错方法以及运算器的制作方法
技术领域
本发明涉及运算器以及它们的纠错方法。
背景技术
伴随于CPU(Central Processing Unit,中央处理单元)上所搭载的晶 体管数量的增加,产生在CPU上所搭载的寄存器文件中错误频繁地发 生这种问题。
以往关于错误检测一般是对每数位设置奇数或者偶数奇偶校验来 进行错误检测这种方法。但是,在基于奇偶校验的方法中,即便能够检 测出错误也无法进行错误纠正,因此,当在寄存器文件等的访问中检测 出错误的情况下,需要再执行存储器访问,对性能带来大的影响。
因此,就要求不仅检测寄存器文件的数据中的错误而且进行纠正, 并希望使用ECC(Eiror-Correcting Code,错误校正码)来进行纠正。
但是,仅仅将寄存器文件的数据上以往所附加的奇偶校验数据替换 成ECC数据,就有CPU的处理速度大幅降低这样的问题。
另外关于纠错方法有以下的专利文献。
专利文献1 :日本特开平5-20215号/〉净艮

发明内容
本申请发明所涉及的纠错方法的目的就是进行寄存器文件的纠错,而 不*4吏信息处理装置中的CPU的处理速度下降。
本实施例所涉及的纠错方法是一种运算器中所设置的寄存器保持数据 以及校验数据,对该数据中产生的im进行纠正的纠错方法,其特征在于, 具有该运算器使用该校验数据来检测该数据的错误的检测步骤;以及该 运算器使用不同于该校验数据的纠正数据,对在该数据中检测出的im进行纠正的纠正步骤。
另外,本实施例所涉及的纠错方法的特征是,该纠正步骤在该运算器 检测出错误的情况下,中断运算处理并使用该纠正数据对该数据进行纠 错。
另外,本实施例所涉及的纠错方法的特征是,该校验数据和该纠正数 据与该数据对应而被保存在该寄存器中。
另外,本实施例所涉及的纠错方法的特征是,当在该检测步骤中检测
出4m时,自该寄存器读出该纠正步骤中的该纠正数据,并且自该寄存器 再次读出被检测出M的数据。
另外,本实施例所涉及的纠错方法的特征是,该检测步骤通过运算该 数据和该校验数据的异或**测發溪。
另外,本实施例所涉及的纠错方法的特征是,该校验数据是奇偶校验 数据。
另外,本实施例所涉及的纠错方法的特征是,该纠正步骤使用该纠正 数据来生成用于求解位的發溪位置的校验子(syndrome ),并使用该校验 子来纠正该餘溪。
另夕卜,本实施例所涉及的纠错方法的特征是,该纠正数据是ECC数据。
另外,本实施例所涉及的纠错方法的特征是,该寄存器具有保持要处 理的全体数据的主寄存器文件和保持从该主寄存器文件转送的一部分的 数据的当前寄存器文件。
另外,本实施例所涉及的纠错方法的特征是,对于该纠正步骤中的纠 正数据,使用转送该校验数据的信号线来转送纠正数据。
另外,本实施例所涉及的纠错方法的特征是,在该检测步骤中的^m
检测中,按照来自对运算处理进行控制的运算控制部的指示。
另外,本实施例所涉及的纠错方法的特征是,还具有重新生成与经 过纠错的数据相对应的纠正数据的生成步骤。
5另外,本实施例所涉及的纠错方法的特征是,使用错误标记来判别在
该纠正步骤中有无检测出4t^。
另外,本实施例所涉及的纠错方法的特征是,该检测步骤中的g检 测是在该数据转送时产生的转送数据的#^检测。
另外,本实施例所涉及的纠错方法的特征是,该检测步骤中的4m检 测是该数据的运算处理时产生的运算数据的M检测。
另外,本实施例所涉及的纠错方法的特征是,还具有将经过纠正的 数据写回到该寄存器的步骤。
进而,本实施例所涉及的运算器是一种对数据中产生的4m进行纠正 的运算器,其特征在于,具有保持数据、对应于该数据的校验数据以及 对应于该数据的纠正数据的寄存器;使用该校验数据来检测该数据的^ 的检测单元;以及在检测出该镣溪的情况下使用该纠正数据进行纠正的纠 正单元。
根据本申请发明中的纠错方法,通过在未检测出错误时跳过伴随于 ECC运算的处理,就能够纠正寄存器文件的位發溪,而不会使信息处理装 置的CPU的处理速度降4氐。


图l是本发明一实施例中的寄存器文件内的数据格式。 图2是本发明一实施例中的寄存器文件200。
图3是本发明一实施例中的对寄存器文件401上的错误进行纠正的 纠正流程图。
图4是本发明一实施例中的运算电路400的框图。
图5是本发明一实施例中的对当前寄存器文件602上的错误进行纠 正的纠正流程图。
图6是本发明一实施例中的运算电路600的框图。图7是本发明一实施例中的CPU700的框图。 图8是本发明一实施例中的CPU700的时序图。 图9是本发明一实施例中的CPU700的时序图。 图IO是本发明一实施例中的CPU700的时序图。 图ll是以往的CPU的时序图。 附图标记说明
IOO...数据格式
.数据
102.. 奇偶校验数据
103.. ECC数据
200 ..寄存器文件
400...运算电路
401...寄存器文件
402-运算器
403-奇偶校验器
404 ECC生成电路
405..ECC纠正电路
600..运算电路
601..主寄存器文件
602,.当前寄存器文件
603-奇偶校验器604".奇偶校验器
605...运算器
606...ECC纠正电路
607".ECC生成电路
700.. CPU
701-.存储器
702".高速緩存控制单元
703" 高速緩存
704".指令控制单元
705".运算单元
706".运算控制部
707...运算部
708...寄存器部
709 .纠错部
具体实施方式
本发明一实施例中的纠错方法的目的是不会降低信息处理装置的
CPU的处理速度地进行纠错,并提高信息处理装置的CPU中的可靠性。 具体而言,本实施例中的纠错方法在搭载于信息处理装置的CPU内部
得以实现。
当然本实施例中的纠错方法是除CPU以外,还可在具有寄存器文
件并通过程序而进行各种各样的数值计算、信息处理、图像处理或者设
备控制的DSP(Digital Signal Processor) 、GPU(Graphics Processing Unit) 或者控制器LSI等的运算电路中实现的方法。而且,在安装了实现本实施例中的纠错方法的电路的CPU中,在 寄存器内将奇偶校验数据和ECC数据与数据一起进行保持。奇偶校验 数据是用于检测数据的位错误的数据。另外,ECC数据是用于纠正所 检测出的错误的数据。在本实施例中,奇偶校验数据、ECC数据共同 为8位数据。虽然CPU等可以利用ECC数据来进行检错,但本实施例 中的纠错方法,是利用奇偶校验数据来进行检错,利用ECC数据来纠 正所检测出的错误。
首先,CPU进行从寄存器读出数据和对应于该数据的奇偶校验数据 的处理,并判别有无检测出所读出的数据的错误。CPU进行分别从寄 存器读出的数据和奇偶校验数据的EOR(Exclusive-OR:异或)运算,以判 别有无奇偶错误。另外,在利用了奇偶校验数据的检错中检测有无l位 错误。
CPU通过进行奇偶校验以保证从寄存器读出的数据的正确性,据 此,CPU进行数据转送中的错误检测。在CPU检测出1位错误时,CPU 暂时中断正在执行的运算处理。而且,CPU从寄存器再次读出已被检 测出错误的数据并且读出与该数据相对应的ECC数据。CPU基于ECC 数据对检测出的l位错误进行纠正,并将错误已被纠正的数据写入寄存 器进行修正。
由此,就能够抑制CPU的处理速度降低的同时纠正1位错误,能 够实现处理速度既快、且可靠性又高的CPU。
(实施例1)
图I是本实施例中的寄存器文件内的数据格式IOO。本实施例中的 数据格式100是作为寄存器文件的1个项(entry)所设定的数据单位。
数据格式100由数据101、奇偶校验数据102、 ECC数据103所构 成。在本实施例中,数据101为64位(8字节),奇偶校验数据102为8 位、ECC数据103为8位。
奇偶校验数据102是为了检测出在数据101中是否有1位错误而使 用的数据。ECC数据103是为了纠正存在于数据101中的1位错误而 使用的数据。
9另外,本实施例中的CPU使用物理上相同的信号线读出奇偶校验 数据102和ECC数据103。据此CPU就能够进行ECC运算并能够进 行纠错而不用增加新的信号线。这里,进行运算处理的运算器还可以是 除CPU以外的DSP、 GPU或者控制器LSI等具有的可以进行运算处理 的单元。
CPU对寄存器文件的数据以数据101和奇偶校验数据102的组、或 者数据101和ECC数据103的组为单位来进行读出处理、或者写入处 理。当然,数据格式100的大小还可以是64位(数据101)+8位(奇偶校 验数据102)+8位(ECC数据)以外的大小,数据大小并不限定于该大小。
图2是本实施例中的寄存器文件200。在本实施例中,寄存器文件 200是2Write-2Read (2写-2读)、8字节、160项的寄存器文件。 2Write-2Read是指CPU执行的处理方式,即以2项为单位进行的读出 处理、或者写入处理。寄存器文件200由部分数据201 206所构成。寄 存器文件200由160个项所构成,在图2中作为代表而图示了部分数据 201~206。部分数据201 206采用数据格式100的构成,由"数据21"、 "奇偶校验数据22"、 "ECC数据23"所构成。l个项以将"数据21"、 "奇偶校验数据22"、 "ECC数据23"组合起来的块为单位而构成。地 址207表示包含部分数据201-206的160个部分数据的寄存器文件中的 地址。CPU参照地址207进行所希望的部分数据的读出处理、写入处理。
CPU对寄存器文件200中所保持的部分数据201-206以2项为单位 进行写入处理、或者读出处理。而且,搭载本实施例中的纠错机制的 CPU按照以下所示的纠正流程来进行错误的检测以及错误的纠正处理。
图3是本实施例中的对寄存器文件401中的错误进行纠正的纠正流 程图。而且图4是表示本实施例中的纠错机制的运算电路400的框图。 运算电路400相当于后述的图7中所记载的运算部707、寄存器部708、 纠错部709。另外图3所示的纠正流程图是运算电路400实现的处理的 流程图,即与CPU700中的纠错有关的流程图。
图4中所记载的运算电路400由寄存器文件401、运算器402、奇 偶校验器403、 ECC生成电路404、 ECC纠正电路405所构成。寄存器文件401具有与图2所示的寄存器文件200同等的功能、构 成,由多个部分数据所构成。另外部分数据由数据、奇偶校验数据、ECC 数据所构成。
运算器402是对从寄存器文件401读出的数据进行运算、即进行四 则运算、逻辑运算等处理的装置。具体而言,运算器402例如是 ALU(Arithmetic Logic Unit,算术逻辑单元),进行整数运算操作(加法、 减法、乘法)、逻辑运算(AND、 NOT、 OR、 XOR)、将字按所指定的位 数相应地向右(或者左)进行移动的移位操作的动作等。
奇偶校验器403进行从寄存器文件401读出的数据和对应于该数据 的奇偶校验数据的奇偶校验。奇偶校验是对数据和奇偶校验数据进行 EOR (异或)运算来进行错误校验。另外,在奇偶校验器403中检测出 的错误是1位错误。
ECC生成电路404使用在运算器402中进行运算处理而得到的运算 结果的数据来生成ECC数据。ECC生成电路404所生成的ECC数据 对应于运算结果的数据。
ECC纠正电路405对奇偶校验器403所检测出的从寄存器文件401 读出的数据的错误进行纠正。当在奇偶校验器403中检测出错误的情况 下,运算器402暂时中止运算处理,纠错电路405从寄存器文件401读 出已检测出错误的地址的数据和对应于该数据的ECC数据。然后,纠 错电路405基于ECC数据来纠正所检测出的错误。
结果选蜂电路406基于来自ECC运算控制部706的控制,将由ECC 生成电路404生成的ECC数据和运算结果的数据建立对应关系,并将 该ECC数据、运算结果数据以及相对应的奇偶校验数据写回到寄存器 文件401。
接着对图3中的纠正流程图进行说明。
首先,运算电路400的奇偶校验器403从寄存器文件401读出数据 和对应于该数据的奇偶校验数据(S301)。然后,奇偶校验器403进行所 读出的数据和奇偶校验数据的奇偶校验,并判别所读出的数据中有无错 误(S302)。此时,运算器402进行从寄存器文件401所读出的数据的运
ii算处理。
奇偶校验器403在判别为从寄存器读出的数据中没有奇偶错误的情 况下(S302否),运算器402继续进行运算处理(S303)。
在奇偶校验器403判别为从寄存器读出的数据中有奇偶错误的情况 下(S303是),运算器402暂时中止运算处理(S304)。 ECC纠正电路405, 在由奇偶校验器403检测出数据的读出错误以后,从寄存器文件读出已 检测出错误的数据和对应于该数据的ECC数据。然后,ECC纠正电路 405对从寄存器文件401读出的数据的错误进行纠正(S305)。然后,ECC 纠正电路405完成纠错(S306)。而且,在ECC纠正电路405将数据错 误进行了纠正以后,结果选择电路406将已纠正的数据、对应于该数据 的ECC数据以及奇偶校验数据写回到寄存器文件401。运算器402从 检测出错误的指令开始再执行。另外,在奇偶校验器403未检测出从寄 存器文件401读出的数据的错误的情况下,运算器402进行运算处理。 而且,ECC生成电路404生成与运算结果的数据相对应的ECC数据和 奇偶校验数据。而且,结果选择电路406将运算结果的数据、ECC生 成电路404所生成的ECC数据和奇偶校验数据写回到寄存器文件401。
通过按照以上的过程进行纠错,并仅仅在已发生奇偶错误的情况下 对寄存器文件401的位错误进行纠正,就能够纠正寄存器文件401中的 位错误而不会对信息处理装置的CPU的处理速度带来影响。
在本实施例中,奇偶校验器403进行奇偶校验来进行检错,所以能 够检测的错误为l位错误。当然考虑与运算的处理速度之间的关系来进 行检测的错误也可以是1位错误以外,也可以釆用检测这些错误的检错 方法。在本实施例中的纠错方法中,错误的检测方法与纠正方法不同, 错误的检测方法一方比纠错方法处理速度快。
图5是本实施例中的寄存器文件的错误检测以及纠正的流程图。图 5中所记载的纠正流程图是图6所示的运算电路600实现的处理。图5 所示的纠错方法是对从主寄存器文件601向当前寄存器文件602的数据 转送的错误等进行检测、纠正的一种方法。
首先,ECC运算控制部705利用来自指令控制单元704的信号判别
12是否将数据以及奇偶校验数据从主寄存器文件601转送到当前寄存器文 件602(S501)。主寄存器文件601是保持运算电路600处理的全体数据 的寄存器文件,当前寄存器文件602是保持主寄存器文件601处理的一 部分数据的寄存器文件。运算器605进行当前寄存器文件602保持的数 据的运算处理。
在ECC运算控制部705判别为不进行从主寄存器文件601转送数 据的情况下(S501否),奇偶校验器604使用奇偶校验数据来判别从当前 寄存器文件602转送至运算器605的数据有无奇偶错误(S503)。在本实 施例中,运算器605进行运算处理的数据是保持在当前寄存器文件602 中的数据。这是为了提高运算电路600的处理速度。通过使运算器605 访问所保持的量比主寄存器文件601要少的当前寄存器文件602来进行 运算处理,能够提高运算电路600的处理速度。
当奇偶校验器603在转送给运算器的数据内未检测出奇偶错误的情 况下(S503否),运算器605继续进行运算处理(S504)。当奇偶校验器603 在转送给运算器的数据中检测出奇偶错误的情况下(S503是),指令控制 单元704判别错误标记是否为ON(S508)。这里,错误标记是指表示在 被从主寄存器文件601转送到当前寄存器文件602的数据中是否存在奇 偶校验错误的标记。运算控制部706保持错误标记。而且,指令控制单 元判别运算控制部706保持的错误标记的ON/OFF。在ECC运算控制 部705判别为进行从主寄存器文件转送数据的情况下(S501是),奇偶校 验器603判别在从主寄存器文件601所转送的数据中是否有奇偶错误 (S505)。
当奇偶校验器603在从主寄存器文件601转送的数据中检测出奇偶 错误的情况下(S505是),奇偶校验器603将错误标记设为ON(S507)。 另外,当奇偶校验器603在从主寄存器文件601转送的数据中未检测出 奇偶错误的情况下(S505否),奇偶校验器603将错误标记设为 OFF(S506),并从当会寄存器文件602中读出数据(S502)。这里,当前 寄存器文件602保持的数据是从主寄存器文件601转送的数据。主寄存 器文件601、当前寄存器文件602中所保存的数据的错误标记在初始状 态下为OFF。因此,直到奇偶校验器603检测出错误为止错误标记保持 OFF不变。而且,当在步骤S508中指令控制单元704判别为错误标记为ON 的情况下(S508是),纠错电路606进行奇偶校验器603检测出错误的数 据的纠错处理(S509)。这里,指令控制单元704是判别自身保持的错误 标记的ON、 OFF状态并进行与该错误标记相对应的数据和ECC数据 的转送控制的单元。而且,结果选择电路608执行向主寄存器文件601 以及当前寄存器文件602的写回处理(S511)。写回处理是指结果选择电 路608进行的处理、即将数据、对应于该数据的ECC数据以及对应于 该数据的奇偶校验数据向主寄存器文件601以及当前寄存器文件602追 加写入或者覆盖写入的处理。
另外,当在步骤S508中指令控制单元704判别为错误标记为OFF 的情况下(S508否),运算器605通过指令的重新执行来再执行运算处理 (S510)。
另外,本实施例所涉及的CPU具有被称之为提交堆栈项(CSE: Commit Stack Entry)的緩冲。CSE对每个指令分配1个项,用于监视 执行中的指令的进展状况。CSE的项按照程序指令的顺序在按顺序完成 指令的指令提交时被无效化。
由于按顺序进行伴随于指令提交(commit)的CSE的更新指示, 所以何时中断指令执行,都能够在该时间点的程序计时器所指的位置保 证可编程资源的一致性。另外,CSE在每次提交时形成程序的检验点, 以实现流水线控制的写入循环的功能。据此,即便在中断了指令执行的 情况下,也可以全部废弃作业寄存器及运算器605的输入输出等中残留 的数据。
本实施例所涉及的检错、纠错的机制,即便在分支的预测失误偏差 的恢复、及中断产生时,也可保持可编程资源的一致性,并使指令重新 执行(指令再执行)成为可能。也就是说,当在指令读取、指令执行等时 奇偶校验器603在从主寄存器文件601向当前寄存器文件转送的数据中 检测出错误的情况下,指令控制单元704起动CPU的进程切换以中断 指令执行。处理在CSE所形成的检验点停止。而且,CSE保持与指令 读出及执行有关的资源,只要重新从程序计时器的位置开始,就能够进 行指令重新执行而无损数据完整性(数据的匹配性)。
14图6是本实施例中的具有寄存器文件以及纠正电路的运算电路600 的框图。
运算电路600由主寄存器文件601、当前寄存器文件602、奇偶校 验器603、奇偶校验器604、运算器605、 ECC纠正电路606、 ECC生 成电路607所构成。
主寄存器文件601、当前寄存器文件602由多个部分数据所构成。 当前寄存器文件602是从主寄存器文件601中读出了规定数量的部分数 据后的寄存器文件。主寄存器文件601是保持运算电路600要处理的全 体项的部分数据的寄存器文件。另外,当前寄存器文件602以规定的定 时从主寄存器文件601读出数据并进行数据处理。因此,构成主寄存器 文件601的部分数据的项数多于构成当前寄存器文件602的部分数据的 项数。通过在当前寄存器601保持数据处理所需要的最小限度的数据, 就能够提高运算电路600的数据处理速度。
另外,主寄存器文件602使用在物理上不同的信号线来发送数据和 奇偶校验数据(或者ECC数据)。在本实施例中,主寄存器文件601使用 传输总线609将奇偶校验数据或者ECC数据发送给当前寄存器文件 602,并使用传输总线610将数据发送给当前寄存器文件602。当前寄存 器602使用传输总线611、612将数据和奇偶校验数据发送给运算器605、 奇偶校验器604。当前寄存器文件602使用传输总线611对纠错电路606 发送数据和ECC数据,并使用传输总线612将数据和奇偶校验数据发 送给运算器605、奇偶校验器604。进而,当前寄存器文件602使用传 输总线612将数据和ECC数据发送给纠错电路606。
奇偶校验器603对从主寄存器文件601读出到当前寄存器文件602 的部分数据进行奇偶校验。在奇偶校验器603检测出奇偶错误的情况下, 奇偶校验器603将错误标记设为ON。而且,奇偶校验器603在当前寄 存器文件602中存储从主寄存器文件601读出的数据的读出地址。
奇偶校验器604是对运算器605中的运算对象(运算处理前)的数据 上的奇偶错误进行校验的校验器。
运算器605是对从当前寄存器文件602读出的数据进行运算、即进行四则运算、逻辑运算等处理的装置。具体而言,运算器605例如是 ALU(Arithmetic Logical Unit,算术逻辑单元),进行整数运算操作(加法、 减法、乘法)、逻辑运算(AND、 NOT、 OR、 XOR)、将字按所指定的位 数相应地向右(或者左)进行移动的移位操作的动作等。
ECC纠正电路606是使用ECC数据来纠正从当前寄存器文件602 读出的数据的错误的电路。这里,ECC纠正电路606从当前寄存器文 件602读出纠错中使用的ECC数据。当奇偶校验器603在从主寄存器 文件603读出的数据中检测出错误的情况下,指令控制单元704暂时中 止将数据从主寄存器文件601转送到当前寄存器文件602的处理。
而且,主寄存器文件601将检测出错误的数据转送到当前寄存器文 件602。 ECC纠正电路606从当前寄存器文件602读出检测出错误的数 据。而且,ECC纠正电路606从当前寄存器文件602中读出与被检测 出错误的数据相对应的ECC数据,并使用所读出的ECC数据来纠正已 被检测出错误的数据。此时,ECC纠正电路606使用读出奇偶校验数 据的信号线,从当前寄存器文件602读出ECC数据。另外,ECC纠正 电路606对数据进行纠正并且重新生成与已纠正的数据相对应的奇偶校 验数据。然后,结果选择电路608将已纠正的数据、所生成的奇偶校验 数据、ECC数据写回到主寄存器文件601。
另外,ECC生成电路607使用运算结果的数据来生成ECC数据, 且该运算结果的数据是使用了在奇偶校验器603中未检测出错误的数据 而得到的。ECC生成电路607生成的ECC数据是与运算结果的数据相 对应的ECC数据。而且,ECC生成电路607基于来自ECC运算控制 部706的控制,将由ECC生成电路607所生成的ECC数据和与其相对 应的运算结果的数据写回到主寄存器文件601。在纠错电路606对已检 测出错误的数据的错误进行了纠正以后,CPU700从已检测出错误的数 据的运算处理开始再执行。
在图6中仅仅图示了传输总线609、 610作为主寄存器文件601向 当前寄存器文件602转送数据的传输总线。虽然运算电路600具有多个 传输总线609、 610的组作为将主寄存器文件601和当前寄存器文件602 接连的传输总线,但是,在图6中省略。此外,传输总线609是转送奇 偶校验数据或者ECC数据的传输总线,传输总线610是转送数据的传
16输总线。而且,主寄存器文件601将奇偶校验数据、ECC数据以及数 据分成多次分别向当前寄存器文件602转送。例如,在运算电路600具 有8组传输总线的组,并从主寄存器文件601向当前寄存器文件602以 32个寄存器的量进行转送的情况下,转送4次8个寄存器的量。
图7是本实施例中的CPU700的框图。
CPU700由存储器701、高速緩存控制单元702、指令控制单元704、 运算单元705构成。高速緩存控制单元702是包含高速緩存703的构成。 另外,运算单元705由运算控制部706、运算部707、寄存器部708、纠 错部709构成。
存储器701是进行数据保持的存储部、即保持CPU处理的全体数 据的存储部。高速緩存控制单元702控制存储器701和高速緩存703之 间的数据交换。高速緩存控制单元702指定存储器701的规定地址并读 出所希望的数据,将所读出的数据保存在高速緩存703中的规定地址。 同样地,高速緩存控制单元702指定高速緩存703中的规定地址并读出 所希望的数据,将所读出的数据保存于存储器701中的规定地址。
而且,高速緩存控制单元702还控制高速緩存703和寄存器部708 之间的数据交换。高速緩存控制单元702指定高速緩存703的规定地址 并读出所希望的数据,将所读出的数据保存于寄存器部708中的规定地 址。同样地,高速緩存控制单元702指定寄存器部708中的规定地址并 读出所希望的数据,将所读出的数据保存于高速緩存703中的规定地址。 在本实施例中,由一个高速緩存703来实现高速緩存功能,但是,为了 实现处理的更加高速化,还可以是通过l级高速緩存、2级高速緩存和 多个高速緩存来构成高速緩存功能。寄存器部708实现图4中的寄存器 文件401及图6中的601等具有的功能。
运算控制部706通过控制运算部707、寄存器部708,来统一控制 运算单元705的处理。运算部707基于来自运算控制部706的指示,进 行从寄存器部708读出数据的处理、向寄存器部708写入数据的处理。 另外,纠错部709,在寄存器部708中所保存的数据中存在错误的情况 下,进行该数据的错误纠正处理。由寄存器部708进行纠错部709纠正 的错误的检测。运算部707自寄存器部708读出数据和对应于该数据的奇偶校验数据。寄存器部708基于数据和奇偶校验数据来尝试数据的读 出处理、写入处理等中的数据的错误检测。奇偶校验是数据通信中检测 数据错误的方法之一。将构成数据的位的1或者0的个数之奇偶和奇偶 校验数据进行比较。若比较结果不吻合就判断为在数据中有错误。
若检测出了数据错误,纠错部709则从寄存器部708读出已检测出 错误的数据和对应于该数据的ECC数据。
本实施例中的CPU700根据64位的输入数据和8位的奇偶校验数 据,通过EOR运算电路来生成用于求解位的错误位置的8位校验子 (syndrome)。
另外,通过使CPU进行的处理流水线化,就能够提高CPU700的 处理速度。
为了纠正奇偶校验器603、 604基于奇偶校验数据检测出的1位错 误,纠错部709生成64位的纠正掩码。纠错部709基于校验子的结果 来生成纠正掩码的各位。若奇偶校验器603、 604检测出l位错误,纠 错部709则使用纠正掩码将错误位以外的位屏蔽,并对错误进行纠正。
图8、图9、图IO是本实施例中的CPU的处理的时序图。
对于CPU700进行的数据纠错,优选,可以在从寄存器部708读出 数据的处理的时间内使用ECC数据进行奇偶校验和通过奇偶校验检测 出的错误的纠正处理。但是,在诸如数据读出处理这样的延迟频繁地发 生的时候,CPU700难以在规定的时间内进行ECC纠错处理。
另外,从数据读出处理开始,由于确保使用ECC数据进行部分数 据的检错、纠错的时间而使CPU处理速度下降。
因此,与本实施例相关的CPU700使用奇偶校验数据来校验寄存器 部708中保持的数据有无奇偶错误。而且,设CPU700构成为,使用 ECC数据来纠正通过奇偶校验所检测出的错误。据此,即使设CPU纠 正错误的纠错处理花费了数百t ,如果从整体的处理时间来看也极少, 能够实现纠错而几乎不会使CPU700的处理性能下降。
在图8、图9、图10的时序图中,CPU进行通常处理,并^f吏用数据
18和对应于数据的奇偶校验数据来进行数据的奇偶校验。图8、图9、图 IO中所记载的"PARITY(1 8)"、 "DATA(1 8)"分别是以8字节的数据 和对应于该数据的8位的奇偶校验数据的块为单位的数据、奇偶校验数 据的总称。另外"DATA(1)"、 "PARITY(1)"分别表示8字节的数据、8 位的奇偶校验数据,同样,附加了其他编号的"DATA(n)"、 "PARITY(n)" 也是8字节的数据、8位的奇偶校验数据。这里,本实施例中的"n" 是1 8的自然数。当然"n,,也可以是大于8的自然数,还可以是CPU 一次转送更多的数据、奇偶校验数据的构成。
图8是奇偶校验器603未检测出错误时(以下将这一情况称为通常时) 的时序图。在通常时,主寄存器文件601经由传输总线609将奇偶校验 数据(在图8中记载为PARITY(1))统一为8位,并转送至当前寄存器文 件602。这里,在主寄存器文件601和当前寄存器文件602之间,传输 总线609和传输总线610的组有8组。在图6中省略8组的传输总线的 图示。也就是说,按每个传输总线的组(传输总线609和传输总线610) 将l位的奇偶校验数据和l字节的数据进行转送。另外,主寄存器文件 601经由传输总线610将数据(在图8中记载为DATA(1))统一为8字节 转送至当前寄存器文件602。当前寄存器602经由传输总线611向运算 器605转送8字节的数据和对应的8位奇偶校验数据(在图8中记载为 DATA(1)+PARITY(1)等)。同样地,当前寄存器602经由传输总线612 向运算器605转送8字节的数据和对应的8位的奇偶校验数据(在图8 中记载为DATA(2)+PARITY(2)等)。运算器605经由传输总线616将运 算处理的运算结果(在图8中记栽为运算结果(DATA+P+ECC))写回至主 寄存器文件616。
图9是奇偶校验器603检测出错误时的时序图。主寄存器文件601 经由传输总线609将奇偶校验数据(在图9中记栽为PARITY(1 8))统一 为8位,转送至当前寄存器文件602。另外,主寄存器文件601经由传 输总线610将数据(在图9中记载为DATA(1 8))统一为8字节转送至当 前寄存器文件602。
而且,设在周期801中产生了 DATA(1)的转送错误。若产生了转送 错误,奇偶校验器603则经由传输总线613对主寄存器文件601通知转 送错误的产生。另外,设在周期802中产生了运算寄存器错误。若产生了运算寄存器错误,奇偶校验器604则经由传输总线614向运算控制部 706通知运算寄存器错误的产生。
在周期803中,运算电路600开始纠正处理。主寄存器文件601经 由传输总线609将ECC数据(在图9中记载为ECC(1)等)通知给当前 寄存器文件602。另外,主寄存器文件601经由传输总线610将数据(在 图9中记载为DATA(1)等)转送给当前寄存器文件602。当前寄存器文件 602经由传输总线611向纠错电路606转送数据和ECC数据。纠错电路 606使用ECC数据来纠正数据中产生的错误,并生成与正确的数据相 对应的奇偶校验数据。而且,纠错电路606经由传输总线615、 616将 数据、奇偶校验数据和ECC数据写回至主寄存器文件601。
图10是纠错电路606结束纠错时的时序图。纠错电路606使用从 当前寄存器602所转送的ECC数据来纠正对应的数据。纠错电路606 经由传输总线615、 616将经过纠正的数据写回至主寄存器文件601,并 在周期805结束当前寄存器文件602中的所有寄存器的纠正处理。然后, 在周期806,主寄存器文件601经由传输总线608将奇偶校验数据再次 发送至当前寄存器文件602,并经由传输总线609将数据再次发送至当 前寄存器文件602。奇偶校验器603对在从主寄存器文件601向当前寄 存器文件602的数据转送中未产生错误进行校验。然后,在周期807, 通过执行来自运算控制部706的指令,当前寄存器文件602经由传输总 线611、 612将与错误有关的数据和奇偶校验数据转送至运算器605。运 算器605经由传输总线616将运算结果(在图10中为D+P+E)写回至主 寄存器文件601。
图ll是将纠错处理纳入了 l个周期时的时序图。在没有纠错处理的 情况下,运算流水线的各周期由指令取出(IF)、指令解码(D)、寄存器读 出(R)、运算执行(EX)、写回(WB)、提交(CT)的各阶段所构成。若在此 运算流水线上加入1个周期的纠错处理(C),则伴随于此,相对于全部 的运算处理将产生1个周期的延迟时间而4吏CPU的处理性能显著降低。
本实施例中的纠错方法是对执行依次提供的指令的处理时产生的 错误进行纠正的一种方法,即,使用检错用的数据(例如奇偶校验数据) 来进行数据错误的检测,并使用不同于检错用的数据的纠错用的数据 (例如ECC数据)对所检测出的错误进行纠错的一种方法。据此在本实施
20例中的纠错方法中,就只产生仅仅在对错误进行纠正时所花费的最小限度的延迟时间。
根据本申请发明的纠错方法,通过在未检测出错误时跳过伴随于
ECC运算的处理,就能够纠正寄存器中的位错误,而不会使信息处理装置中的CPU的处理速度下降。
产业上的可利用性
基于本发明的纠错方法,对在CPU的处理中产生的数据错误进行纠正。从而,基于本发明的纠错方法,在实现可靠性高、且要求处理速度的CPU这一方面极其有效。
权利要求
1.一种纠错方法,运算器中所设置的寄存器保持数据以及校验数据,对该数据中产生的错误进行纠正,其特征在于,具有该运算器使用该校验数据来检测该数据的错误的检测步骤;以及该运算器使用不同于该校验数据的纠正数据,对在该数据中检测出的错误进行纠正的纠正步骤。
2. 按照权利要求l所记载的纠错方法,其特征在于该纠正步骤在该运算器检测出错误的情况下,中断运算处理并使用 该纠正数据对该数据进行纠错。
3. 按照权利要求l所记载的纠错方法,其特征在于 该校验数据和该纠正数据与该数据对应而被保存在该寄存器中。
4. 按照权利要求l所记载的纠错方法,其特征在于当在该检测步骤中检测出错误时,自该寄存器读出该纠正步骤中的 该纠正数据,并且自该寄存器再次读出被检测出错误的数据。
5. 按照权利要求l所记载的纠错方法,其特征在于 该检测步骤通过运算该数据和该校验数据的异或来检测错误。
6. 按照权利要求l所记载的纠错方法,其特征在于 该校验数据是奇偶校验数据。
7. 按照权利要求l所记载的纠错方法,其特征在于在该纠正步骤中,使用该纠正数据来生成用于求解位的错误位置的 校验子,并使用该校验子来纠正该错误。
8. 按照权利要求l所记载的纠错方法,其特征在于 该纠正数据是ECC数据。
9. 按照权利要求l所记载的纠错方法,其特征在于该寄存器具有保持要处理的全体数据的主寄存器文件和保持从该 主寄存器文件转送的一部分的数据的当前寄存器文件。
10. 按照权利要求l所记载的纠错方法,其特征在于 对于该纠正步骤中的纠正数据,使用转送该校验数据的信号线来转送纠正数据。
11. 按照权利要求l所记载的纠错方法,其特征在于按照来自对运算处理进行控制的运算控制部的指示来执行该检测 步骤中的错误检测。
12. 按照权利要求l所记载的纠错方法,其特征在于,还具有 重新生成与经过纠错的数据相对应的纠正数据的生成步骤。
13. 按照权利要求l所记载的纠错方法,其特征在于 使用错误标记来判别在该纠正步骤中有无检测出错误。
14. 按照权利要求l所记载的纠错方法,其特征在于该检测步骤中的错误检测是在该数据转送时产生的转送数据的错 误检测。
15. 按照权利要求l所记载的纠错方法,其特征在于该检测步骤中的错误检测是该数据的运算处理时产生的运算数据 的错误检测。
16. 按照权利要求l所记载的纠错方法,其特征在于,还具有 将经过纠正的数据写回到该寄存器的步骤。
17. —种运算器,对数据中产生的错误进行纠正,其特征在于,具有保持数据、对应于该数据的校验数据以及对应于该数据的纠正数据 的寄存器;使用该校验数据来检测该数据的错误的检测单元;以及 在检测出该错误的情况下使用该纠正数据进行纠正的纠正单元。
全文摘要
本实施例所涉及的纠错方法的目的是进行寄存器文件的纠错,而不会使计算器的处理速度下降。本实施例所涉及的纠错方法是一种运算器中所设置的寄存器保持数据以及校验数据,对该数据中产生的错误进行纠正的纠错方法,其特征是具有该运算器使用该校验数据来检测该数据的错误的检测步骤;以及该运算器使用不同于该校验数据的纠正数据来在对该数据中检测出的错误进行纠正的纠正步骤。
文档编号G06F12/16GK101681309SQ20078005330
公开日2010年3月24日 申请日期2007年6月15日 优先权日2007年6月15日
发明者大贯祥照, 山下英男 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1