專利名稱:糾錯(cuò)方法以及運(yùn)算器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及運(yùn)算器以及它們的糾錯(cuò)方法。
背景技術(shù):
伴隨于CPU(Central Processing Unit,中央處理單元)上所搭載的晶 體管數(shù)量的增加,產(chǎn)生在CPU上所搭載的寄存器文件中錯(cuò)誤頻繁地發(fā) 生這種問題。
以往關(guān)于錯(cuò)誤檢測(cè)一般是對(duì)每數(shù)位設(shè)置奇數(shù)或者偶數(shù)奇偶校驗(yàn)來 進(jìn)行錯(cuò)誤檢測(cè)這種方法。但是,在基于奇偶校驗(yàn)的方法中,即便能夠檢 測(cè)出錯(cuò)誤也無法進(jìn)行錯(cuò)誤糾正,因此,當(dāng)在寄存器文件等的訪問中檢測(cè) 出錯(cuò)誤的情況下,需要再執(zhí)行存儲(chǔ)器訪問,對(duì)性能帶來大的影響。
因此,就要求不僅檢測(cè)寄存器文件的數(shù)據(jù)中的錯(cuò)誤而且進(jìn)行糾正, 并希望使用ECC(Eiror-Correcting Code,錯(cuò)誤校正碼)來進(jìn)行糾正。
但是,僅僅將寄存器文件的數(shù)據(jù)上以往所附加的奇偶校驗(yàn)數(shù)據(jù)替換 成ECC數(shù)據(jù),就有CPU的處理速度大幅降低這樣的問題。
另外關(guān)于糾錯(cuò)方法有以下的專利文獻(xiàn)。
專利文獻(xiàn)1 :日本特開平5-20215號(hào)/〉凈艮
發(fā)明內(nèi)容
本申請(qǐng)發(fā)明所涉及的糾錯(cuò)方法的目的就是進(jìn)行寄存器文件的糾錯(cuò),而 不*4吏信息處理裝置中的CPU的處理速度下降。
本實(shí)施例所涉及的糾錯(cuò)方法是一種運(yùn)算器中所設(shè)置的寄存器保持?jǐn)?shù)據(jù) 以及校驗(yàn)數(shù)據(jù),對(duì)該數(shù)據(jù)中產(chǎn)生的im進(jìn)行糾正的糾錯(cuò)方法,其特征在于, 具有該運(yùn)算器使用該校驗(yàn)數(shù)據(jù)來檢測(cè)該數(shù)據(jù)的錯(cuò)誤的檢測(cè)步驟;以及該 運(yùn)算器使用不同于該校驗(yàn)數(shù)據(jù)的糾正數(shù)據(jù),對(duì)在該數(shù)據(jù)中檢測(cè)出的im進(jìn)行糾正的糾正步驟。
另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,該糾正步驟在該運(yùn)算器 檢測(cè)出錯(cuò)誤的情況下,中斷運(yùn)算處理并使用該糾正數(shù)據(jù)對(duì)該數(shù)據(jù)進(jìn)行糾 錯(cuò)。
另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,該校驗(yàn)數(shù)據(jù)和該糾正數(shù) 據(jù)與該數(shù)據(jù)對(duì)應(yīng)而被保存在該寄存器中。
另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,當(dāng)在該檢測(cè)步驟中檢測(cè)
出4m時(shí),自該寄存器讀出該糾正步驟中的該糾正數(shù)據(jù),并且自該寄存器 再次讀出被檢測(cè)出M的數(shù)據(jù)。
另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,該檢測(cè)步驟通過運(yùn)算該 數(shù)據(jù)和該校驗(yàn)數(shù)據(jù)的異或**測(cè)發(fā)溪。
另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,該校驗(yàn)數(shù)據(jù)是奇偶校驗(yàn) 數(shù)據(jù)。
另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,該糾正步驟使用該糾正 數(shù)據(jù)來生成用于求解位的發(fā)溪位置的校驗(yàn)子(syndrome ),并使用該校驗(yàn) 子來糾正該餘溪。
另夕卜,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,該糾正數(shù)據(jù)是ECC數(shù)據(jù)。
另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,該寄存器具有保持要處 理的全體數(shù)據(jù)的主寄存器文件和保持從該主寄存器文件轉(zhuǎn)送的一部分的 數(shù)據(jù)的當(dāng)前寄存器文件。
另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,對(duì)于該糾正步驟中的糾 正數(shù)據(jù),使用轉(zhuǎn)送該校驗(yàn)數(shù)據(jù)的信號(hào)線來轉(zhuǎn)送糾正數(shù)據(jù)。
另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,在該檢測(cè)步驟中的^m
檢測(cè)中,按照來自對(duì)運(yùn)算處理進(jìn)行控制的運(yùn)算控制部的指示。
另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,還具有重新生成與經(jīng) 過糾錯(cuò)的數(shù)據(jù)相對(duì)應(yīng)的糾正數(shù)據(jù)的生成步驟。
5另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,使用錯(cuò)誤標(biāo)記來判別在
該糾正步驟中有無檢測(cè)出4t^。
另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,該檢測(cè)步驟中的g檢 測(cè)是在該數(shù)據(jù)轉(zhuǎn)送時(shí)產(chǎn)生的轉(zhuǎn)送數(shù)據(jù)的#^檢測(cè)。
另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,該檢測(cè)步驟中的4m檢 測(cè)是該數(shù)據(jù)的運(yùn)算處理時(shí)產(chǎn)生的運(yùn)算數(shù)據(jù)的M檢測(cè)。
另外,本實(shí)施例所涉及的糾錯(cuò)方法的特征是,還具有將經(jīng)過糾正的 數(shù)據(jù)寫回到該寄存器的步驟。
進(jìn)而,本實(shí)施例所涉及的運(yùn)算器是一種對(duì)數(shù)據(jù)中產(chǎn)生的4m進(jìn)行糾正 的運(yùn)算器,其特征在于,具有保持?jǐn)?shù)據(jù)、對(duì)應(yīng)于該數(shù)據(jù)的校驗(yàn)數(shù)據(jù)以及 對(duì)應(yīng)于該數(shù)據(jù)的糾正數(shù)據(jù)的寄存器;使用該校驗(yàn)數(shù)據(jù)來檢測(cè)該數(shù)據(jù)的^ 的檢測(cè)單元;以及在檢測(cè)出該鐐溪的情況下使用該糾正數(shù)據(jù)進(jìn)行糾正的糾 正單元。
根據(jù)本申請(qǐng)發(fā)明中的糾錯(cuò)方法,通過在未檢測(cè)出錯(cuò)誤時(shí)跳過伴隨于 ECC運(yùn)算的處理,就能夠糾正寄存器文件的位發(fā)溪,而不會(huì)使信息處理裝 置的CPU的處理速度降4氐。
圖l是本發(fā)明一實(shí)施例中的寄存器文件內(nèi)的數(shù)據(jù)格式。 圖2是本發(fā)明一實(shí)施例中的寄存器文件200。
圖3是本發(fā)明一實(shí)施例中的對(duì)寄存器文件401上的錯(cuò)誤進(jìn)行糾正的 糾正流程圖。
圖4是本發(fā)明一實(shí)施例中的運(yùn)算電路400的框圖。
圖5是本發(fā)明一實(shí)施例中的對(duì)當(dāng)前寄存器文件602上的錯(cuò)誤進(jìn)行糾 正的糾正流程圖。
圖6是本發(fā)明一實(shí)施例中的運(yùn)算電路600的框圖。圖7是本發(fā)明一實(shí)施例中的CPU700的框圖。 圖8是本發(fā)明一實(shí)施例中的CPU700的時(shí)序圖。 圖9是本發(fā)明一實(shí)施例中的CPU700的時(shí)序圖。 圖IO是本發(fā)明一實(shí)施例中的CPU700的時(shí)序圖。 圖ll是以往的CPU的時(shí)序圖。 附圖標(biāo)記說明
IOO...數(shù)據(jù)格式
.數(shù)據(jù)
102.. 奇偶校驗(yàn)數(shù)據(jù)
103.. ECC數(shù)據(jù)
200 ..寄存器文件
400...運(yùn)算電路
401...寄存器文件
402-運(yùn)算器
403-奇偶校驗(yàn)器
404 ECC生成電路
405..ECC糾正電路
600..運(yùn)算電路
601..主寄存器文件
602,.當(dāng)前寄存器文件
603-奇偶校驗(yàn)器604".奇偶校驗(yàn)器
605...運(yùn)算器
606...ECC糾正電路
607".ECC生成電路
700.. CPU
701-.存儲(chǔ)器
702".高速緩存控制單元
703" 高速緩存
704".指令控制單元
705".運(yùn)算單元
706".運(yùn)算控制部
707...運(yùn)算部
708...寄存器部
709 .糾錯(cuò)部
具體實(shí)施方式
本發(fā)明一實(shí)施例中的糾錯(cuò)方法的目的是不會(huì)降低信息處理裝置的
CPU的處理速度地進(jìn)行糾錯(cuò),并提高信息處理裝置的CPU中的可靠性。 具體而言,本實(shí)施例中的糾錯(cuò)方法在搭載于信息處理裝置的CPU內(nèi)部
得以實(shí)現(xiàn)。
當(dāng)然本實(shí)施例中的糾錯(cuò)方法是除CPU以外,還可在具有寄存器文
件并通過程序而進(jìn)行各種各樣的數(shù)值計(jì)算、信息處理、圖像處理或者設(shè)
備控制的DSP(Digital Signal Processor) 、GPU(Graphics Processing Unit) 或者控制器LSI等的運(yùn)算電路中實(shí)現(xiàn)的方法。而且,在安裝了實(shí)現(xiàn)本實(shí)施例中的糾錯(cuò)方法的電路的CPU中,在 寄存器內(nèi)將奇偶校驗(yàn)數(shù)據(jù)和ECC數(shù)據(jù)與數(shù)據(jù)一起進(jìn)行保持。奇偶校驗(yàn) 數(shù)據(jù)是用于檢測(cè)數(shù)據(jù)的位錯(cuò)誤的數(shù)據(jù)。另外,ECC數(shù)據(jù)是用于糾正所 檢測(cè)出的錯(cuò)誤的數(shù)據(jù)。在本實(shí)施例中,奇偶校驗(yàn)數(shù)據(jù)、ECC數(shù)據(jù)共同 為8位數(shù)據(jù)。雖然CPU等可以利用ECC數(shù)據(jù)來進(jìn)行檢錯(cuò),但本實(shí)施例 中的糾錯(cuò)方法,是利用奇偶校驗(yàn)數(shù)據(jù)來進(jìn)行檢錯(cuò),利用ECC數(shù)據(jù)來糾 正所檢測(cè)出的錯(cuò)誤。
首先,CPU進(jìn)行從寄存器讀出數(shù)據(jù)和對(duì)應(yīng)于該數(shù)據(jù)的奇偶校驗(yàn)數(shù)據(jù) 的處理,并判別有無檢測(cè)出所讀出的數(shù)據(jù)的錯(cuò)誤。CPU進(jìn)行分別從寄 存器讀出的數(shù)據(jù)和奇偶校驗(yàn)數(shù)據(jù)的EOR(Exclusive-OR:異或)運(yùn)算,以判 別有無奇偶錯(cuò)誤。另外,在利用了奇偶校驗(yàn)數(shù)據(jù)的檢錯(cuò)中檢測(cè)有無l位 錯(cuò)誤。
CPU通過進(jìn)行奇偶校驗(yàn)以保證從寄存器讀出的數(shù)據(jù)的正確性,據(jù) 此,CPU進(jìn)行數(shù)據(jù)轉(zhuǎn)送中的錯(cuò)誤檢測(cè)。在CPU檢測(cè)出1位錯(cuò)誤時(shí),CPU 暫時(shí)中斷正在執(zhí)行的運(yùn)算處理。而且,CPU從寄存器再次讀出已被檢 測(cè)出錯(cuò)誤的數(shù)據(jù)并且讀出與該數(shù)據(jù)相對(duì)應(yīng)的ECC數(shù)據(jù)。CPU基于ECC 數(shù)據(jù)對(duì)檢測(cè)出的l位錯(cuò)誤進(jìn)行糾正,并將錯(cuò)誤已被糾正的數(shù)據(jù)寫入寄存 器進(jìn)行修正。
由此,就能夠抑制CPU的處理速度降低的同時(shí)糾正1位錯(cuò)誤,能 夠?qū)崿F(xiàn)處理速度既快、且可靠性又高的CPU。
(實(shí)施例1)
圖I是本實(shí)施例中的寄存器文件內(nèi)的數(shù)據(jù)格式IOO。本實(shí)施例中的 數(shù)據(jù)格式100是作為寄存器文件的1個(gè)項(xiàng)(entry)所設(shè)定的數(shù)據(jù)單位。
數(shù)據(jù)格式100由數(shù)據(jù)101、奇偶校驗(yàn)數(shù)據(jù)102、 ECC數(shù)據(jù)103所構(gòu) 成。在本實(shí)施例中,數(shù)據(jù)101為64位(8字節(jié)),奇偶校驗(yàn)數(shù)據(jù)102為8 位、ECC數(shù)據(jù)103為8位。
奇偶校驗(yàn)數(shù)據(jù)102是為了檢測(cè)出在數(shù)據(jù)101中是否有1位錯(cuò)誤而使 用的數(shù)據(jù)。ECC數(shù)據(jù)103是為了糾正存在于數(shù)據(jù)101中的1位錯(cuò)誤而 使用的數(shù)據(jù)。
9另外,本實(shí)施例中的CPU使用物理上相同的信號(hào)線讀出奇偶校驗(yàn) 數(shù)據(jù)102和ECC數(shù)據(jù)103。據(jù)此CPU就能夠進(jìn)行ECC運(yùn)算并能夠進(jìn) 行糾錯(cuò)而不用增加新的信號(hào)線。這里,進(jìn)行運(yùn)算處理的運(yùn)算器還可以是 除CPU以外的DSP、 GPU或者控制器LSI等具有的可以進(jìn)行運(yùn)算處理 的單元。
CPU對(duì)寄存器文件的數(shù)據(jù)以數(shù)據(jù)101和奇偶校驗(yàn)數(shù)據(jù)102的組、或 者數(shù)據(jù)101和ECC數(shù)據(jù)103的組為單位來進(jìn)行讀出處理、或者寫入處 理。當(dāng)然,數(shù)據(jù)格式100的大小還可以是64位(數(shù)據(jù)101)+8位(奇偶校 驗(yàn)數(shù)據(jù)102)+8位(ECC數(shù)據(jù))以外的大小,數(shù)據(jù)大小并不限定于該大小。
圖2是本實(shí)施例中的寄存器文件200。在本實(shí)施例中,寄存器文件 200是2Write-2Read (2寫-2讀)、8字節(jié)、160項(xiàng)的寄存器文件。 2Write-2Read是指CPU執(zhí)行的處理方式,即以2項(xiàng)為單位進(jìn)行的讀出 處理、或者寫入處理。寄存器文件200由部分?jǐn)?shù)據(jù)201 206所構(gòu)成。寄 存器文件200由160個(gè)項(xiàng)所構(gòu)成,在圖2中作為代表而圖示了部分?jǐn)?shù)據(jù) 201~206。部分?jǐn)?shù)據(jù)201 206采用數(shù)據(jù)格式100的構(gòu)成,由"數(shù)據(jù)21"、 "奇偶校驗(yàn)數(shù)據(jù)22"、 "ECC數(shù)據(jù)23"所構(gòu)成。l個(gè)項(xiàng)以將"數(shù)據(jù)21"、 "奇偶校驗(yàn)數(shù)據(jù)22"、 "ECC數(shù)據(jù)23"組合起來的塊為單位而構(gòu)成。地 址207表示包含部分?jǐn)?shù)據(jù)201-206的160個(gè)部分?jǐn)?shù)據(jù)的寄存器文件中的 地址。CPU參照地址207進(jìn)行所希望的部分?jǐn)?shù)據(jù)的讀出處理、寫入處理。
CPU對(duì)寄存器文件200中所保持的部分?jǐn)?shù)據(jù)201-206以2項(xiàng)為單位 進(jìn)行寫入處理、或者讀出處理。而且,搭載本實(shí)施例中的糾錯(cuò)機(jī)制的 CPU按照以下所示的糾正流程來進(jìn)行錯(cuò)誤的檢測(cè)以及錯(cuò)誤的糾正處理。
圖3是本實(shí)施例中的對(duì)寄存器文件401中的錯(cuò)誤進(jìn)行糾正的糾正流 程圖。而且圖4是表示本實(shí)施例中的糾錯(cuò)機(jī)制的運(yùn)算電路400的框圖。 運(yùn)算電路400相當(dāng)于后述的圖7中所記載的運(yùn)算部707、寄存器部708、 糾錯(cuò)部709。另外圖3所示的糾正流程圖是運(yùn)算電路400實(shí)現(xiàn)的處理的 流程圖,即與CPU700中的糾錯(cuò)有關(guān)的流程圖。
圖4中所記載的運(yùn)算電路400由寄存器文件401、運(yùn)算器402、奇 偶校驗(yàn)器403、 ECC生成電路404、 ECC糾正電路405所構(gòu)成。寄存器文件401具有與圖2所示的寄存器文件200同等的功能、構(gòu) 成,由多個(gè)部分?jǐn)?shù)據(jù)所構(gòu)成。另外部分?jǐn)?shù)據(jù)由數(shù)據(jù)、奇偶校驗(yàn)數(shù)據(jù)、ECC 數(shù)據(jù)所構(gòu)成。
運(yùn)算器402是對(duì)從寄存器文件401讀出的數(shù)據(jù)進(jìn)行運(yùn)算、即進(jìn)行四 則運(yùn)算、邏輯運(yùn)算等處理的裝置。具體而言,運(yùn)算器402例如是 ALU(Arithmetic Logic Unit,算術(shù)邏輯單元),進(jìn)行整數(shù)運(yùn)算操作(加法、 減法、乘法)、邏輯運(yùn)算(AND、 NOT、 OR、 XOR)、將字按所指定的位 數(shù)相應(yīng)地向右(或者左)進(jìn)行移動(dòng)的移位操作的動(dòng)作等。
奇偶校驗(yàn)器403進(jìn)行從寄存器文件401讀出的數(shù)據(jù)和對(duì)應(yīng)于該數(shù)據(jù) 的奇偶校驗(yàn)數(shù)據(jù)的奇偶校驗(yàn)。奇偶校驗(yàn)是對(duì)數(shù)據(jù)和奇偶校驗(yàn)數(shù)據(jù)進(jìn)行 EOR (異或)運(yùn)算來進(jìn)行錯(cuò)誤校驗(yàn)。另外,在奇偶校驗(yàn)器403中檢測(cè)出 的錯(cuò)誤是1位錯(cuò)誤。
ECC生成電路404使用在運(yùn)算器402中進(jìn)行運(yùn)算處理而得到的運(yùn)算 結(jié)果的數(shù)據(jù)來生成ECC數(shù)據(jù)。ECC生成電路404所生成的ECC數(shù)據(jù) 對(duì)應(yīng)于運(yùn)算結(jié)果的數(shù)據(jù)。
ECC糾正電路405對(duì)奇偶校驗(yàn)器403所檢測(cè)出的從寄存器文件401 讀出的數(shù)據(jù)的錯(cuò)誤進(jìn)行糾正。當(dāng)在奇偶校驗(yàn)器403中檢測(cè)出錯(cuò)誤的情況 下,運(yùn)算器402暫時(shí)中止運(yùn)算處理,糾錯(cuò)電路405從寄存器文件401讀 出已檢測(cè)出錯(cuò)誤的地址的數(shù)據(jù)和對(duì)應(yīng)于該數(shù)據(jù)的ECC數(shù)據(jù)。然后,糾 錯(cuò)電路405基于ECC數(shù)據(jù)來糾正所檢測(cè)出的錯(cuò)誤。
結(jié)果選蜂電路406基于來自ECC運(yùn)算控制部706的控制,將由ECC 生成電路404生成的ECC數(shù)據(jù)和運(yùn)算結(jié)果的數(shù)據(jù)建立對(duì)應(yīng)關(guān)系,并將 該ECC數(shù)據(jù)、運(yùn)算結(jié)果數(shù)據(jù)以及相對(duì)應(yīng)的奇偶校驗(yàn)數(shù)據(jù)寫回到寄存器 文件401。
接著對(duì)圖3中的糾正流程圖進(jìn)行說明。
首先,運(yùn)算電路400的奇偶校驗(yàn)器403從寄存器文件401讀出數(shù)據(jù) 和對(duì)應(yīng)于該數(shù)據(jù)的奇偶校驗(yàn)數(shù)據(jù)(S301)。然后,奇偶校驗(yàn)器403進(jìn)行所 讀出的數(shù)據(jù)和奇偶校驗(yàn)數(shù)據(jù)的奇偶校驗(yàn),并判別所讀出的數(shù)據(jù)中有無錯(cuò) 誤(S302)。此時(shí),運(yùn)算器402進(jìn)行從寄存器文件401所讀出的數(shù)據(jù)的運(yùn)
ii算處理。
奇偶校驗(yàn)器403在判別為從寄存器讀出的數(shù)據(jù)中沒有奇偶錯(cuò)誤的情 況下(S302否),運(yùn)算器402繼續(xù)進(jìn)行運(yùn)算處理(S303)。
在奇偶校驗(yàn)器403判別為從寄存器讀出的數(shù)據(jù)中有奇偶錯(cuò)誤的情況 下(S303是),運(yùn)算器402暫時(shí)中止運(yùn)算處理(S304)。 ECC糾正電路405, 在由奇偶校驗(yàn)器403檢測(cè)出數(shù)據(jù)的讀出錯(cuò)誤以后,從寄存器文件讀出已 檢測(cè)出錯(cuò)誤的數(shù)據(jù)和對(duì)應(yīng)于該數(shù)據(jù)的ECC數(shù)據(jù)。然后,ECC糾正電路 405對(duì)從寄存器文件401讀出的數(shù)據(jù)的錯(cuò)誤進(jìn)行糾正(S305)。然后,ECC 糾正電路405完成糾錯(cuò)(S306)。而且,在ECC糾正電路405將數(shù)據(jù)錯(cuò) 誤進(jìn)行了糾正以后,結(jié)果選擇電路406將已糾正的數(shù)據(jù)、對(duì)應(yīng)于該數(shù)據(jù) 的ECC數(shù)據(jù)以及奇偶校驗(yàn)數(shù)據(jù)寫回到寄存器文件401。運(yùn)算器402從 檢測(cè)出錯(cuò)誤的指令開始再執(zhí)行。另外,在奇偶校驗(yàn)器403未檢測(cè)出從寄 存器文件401讀出的數(shù)據(jù)的錯(cuò)誤的情況下,運(yùn)算器402進(jìn)行運(yùn)算處理。 而且,ECC生成電路404生成與運(yùn)算結(jié)果的數(shù)據(jù)相對(duì)應(yīng)的ECC數(shù)據(jù)和 奇偶校驗(yàn)數(shù)據(jù)。而且,結(jié)果選擇電路406將運(yùn)算結(jié)果的數(shù)據(jù)、ECC生 成電路404所生成的ECC數(shù)據(jù)和奇偶校驗(yàn)數(shù)據(jù)寫回到寄存器文件401。
通過按照以上的過程進(jìn)行糾錯(cuò),并僅僅在已發(fā)生奇偶錯(cuò)誤的情況下 對(duì)寄存器文件401的位錯(cuò)誤進(jìn)行糾正,就能夠糾正寄存器文件401中的 位錯(cuò)誤而不會(huì)對(duì)信息處理裝置的CPU的處理速度帶來影響。
在本實(shí)施例中,奇偶校驗(yàn)器403進(jìn)行奇偶校驗(yàn)來進(jìn)行檢錯(cuò),所以能 夠檢測(cè)的錯(cuò)誤為l位錯(cuò)誤。當(dāng)然考慮與運(yùn)算的處理速度之間的關(guān)系來進(jìn) 行檢測(cè)的錯(cuò)誤也可以是1位錯(cuò)誤以外,也可以釆用檢測(cè)這些錯(cuò)誤的檢錯(cuò) 方法。在本實(shí)施例中的糾錯(cuò)方法中,錯(cuò)誤的檢測(cè)方法與糾正方法不同, 錯(cuò)誤的檢測(cè)方法一方比糾錯(cuò)方法處理速度快。
圖5是本實(shí)施例中的寄存器文件的錯(cuò)誤檢測(cè)以及糾正的流程圖。圖 5中所記載的糾正流程圖是圖6所示的運(yùn)算電路600實(shí)現(xiàn)的處理。圖5 所示的糾錯(cuò)方法是對(duì)從主寄存器文件601向當(dāng)前寄存器文件602的數(shù)據(jù) 轉(zhuǎn)送的錯(cuò)誤等進(jìn)行檢測(cè)、糾正的一種方法。
首先,ECC運(yùn)算控制部705利用來自指令控制單元704的信號(hào)判別
12是否將數(shù)據(jù)以及奇偶校驗(yàn)數(shù)據(jù)從主寄存器文件601轉(zhuǎn)送到當(dāng)前寄存器文 件602(S501)。主寄存器文件601是保持運(yùn)算電路600處理的全體數(shù)據(jù) 的寄存器文件,當(dāng)前寄存器文件602是保持主寄存器文件601處理的一 部分?jǐn)?shù)據(jù)的寄存器文件。運(yùn)算器605進(jìn)行當(dāng)前寄存器文件602保持的數(shù) 據(jù)的運(yùn)算處理。
在ECC運(yùn)算控制部705判別為不進(jìn)行從主寄存器文件601轉(zhuǎn)送數(shù) 據(jù)的情況下(S501否),奇偶校驗(yàn)器604使用奇偶校驗(yàn)數(shù)據(jù)來判別從當(dāng)前 寄存器文件602轉(zhuǎn)送至運(yùn)算器605的數(shù)據(jù)有無奇偶錯(cuò)誤(S503)。在本實(shí) 施例中,運(yùn)算器605進(jìn)行運(yùn)算處理的數(shù)據(jù)是保持在當(dāng)前寄存器文件602 中的數(shù)據(jù)。這是為了提高運(yùn)算電路600的處理速度。通過使運(yùn)算器605 訪問所保持的量比主寄存器文件601要少的當(dāng)前寄存器文件602來進(jìn)行 運(yùn)算處理,能夠提高運(yùn)算電路600的處理速度。
當(dāng)奇偶校驗(yàn)器603在轉(zhuǎn)送給運(yùn)算器的數(shù)據(jù)內(nèi)未檢測(cè)出奇偶錯(cuò)誤的情 況下(S503否),運(yùn)算器605繼續(xù)進(jìn)行運(yùn)算處理(S504)。當(dāng)奇偶校驗(yàn)器603 在轉(zhuǎn)送給運(yùn)算器的數(shù)據(jù)中檢測(cè)出奇偶錯(cuò)誤的情況下(S503是),指令控制 單元704判別錯(cuò)誤標(biāo)記是否為ON(S508)。這里,錯(cuò)誤標(biāo)記是指表示在 被從主寄存器文件601轉(zhuǎn)送到當(dāng)前寄存器文件602的數(shù)據(jù)中是否存在奇 偶校驗(yàn)錯(cuò)誤的標(biāo)記。運(yùn)算控制部706保持錯(cuò)誤標(biāo)記。而且,指令控制單 元判別運(yùn)算控制部706保持的錯(cuò)誤標(biāo)記的ON/OFF。在ECC運(yùn)算控制 部705判別為進(jìn)行從主寄存器文件轉(zhuǎn)送數(shù)據(jù)的情況下(S501是),奇偶校 驗(yàn)器603判別在從主寄存器文件601所轉(zhuǎn)送的數(shù)據(jù)中是否有奇偶錯(cuò)誤 (S505)。
當(dāng)奇偶校驗(yàn)器603在從主寄存器文件601轉(zhuǎn)送的數(shù)據(jù)中檢測(cè)出奇偶 錯(cuò)誤的情況下(S505是),奇偶校驗(yàn)器603將錯(cuò)誤標(biāo)記設(shè)為ON(S507)。 另外,當(dāng)奇偶校驗(yàn)器603在從主寄存器文件601轉(zhuǎn)送的數(shù)據(jù)中未檢測(cè)出 奇偶錯(cuò)誤的情況下(S505否),奇偶校驗(yàn)器603將錯(cuò)誤標(biāo)記設(shè)為 OFF(S506),并從當(dāng)會(huì)寄存器文件602中讀出數(shù)據(jù)(S502)。這里,當(dāng)前 寄存器文件602保持的數(shù)據(jù)是從主寄存器文件601轉(zhuǎn)送的數(shù)據(jù)。主寄存 器文件601、當(dāng)前寄存器文件602中所保存的數(shù)據(jù)的錯(cuò)誤標(biāo)記在初始狀 態(tài)下為OFF。因此,直到奇偶校驗(yàn)器603檢測(cè)出錯(cuò)誤為止錯(cuò)誤標(biāo)記保持 OFF不變。而且,當(dāng)在步驟S508中指令控制單元704判別為錯(cuò)誤標(biāo)記為ON 的情況下(S508是),糾錯(cuò)電路606進(jìn)行奇偶校驗(yàn)器603檢測(cè)出錯(cuò)誤的數(shù) 據(jù)的糾錯(cuò)處理(S509)。這里,指令控制單元704是判別自身保持的錯(cuò)誤 標(biāo)記的ON、 OFF狀態(tài)并進(jìn)行與該錯(cuò)誤標(biāo)記相對(duì)應(yīng)的數(shù)據(jù)和ECC數(shù)據(jù) 的轉(zhuǎn)送控制的單元。而且,結(jié)果選擇電路608執(zhí)行向主寄存器文件601 以及當(dāng)前寄存器文件602的寫回處理(S511)。寫回處理是指結(jié)果選擇電 路608進(jìn)行的處理、即將數(shù)據(jù)、對(duì)應(yīng)于該數(shù)據(jù)的ECC數(shù)據(jù)以及對(duì)應(yīng)于 該數(shù)據(jù)的奇偶校驗(yàn)數(shù)據(jù)向主寄存器文件601以及當(dāng)前寄存器文件602追 加寫入或者覆蓋寫入的處理。
另外,當(dāng)在步驟S508中指令控制單元704判別為錯(cuò)誤標(biāo)記為OFF 的情況下(S508否),運(yùn)算器605通過指令的重新執(zhí)行來再執(zhí)行運(yùn)算處理 (S510)。
另外,本實(shí)施例所涉及的CPU具有被稱之為提交堆棧項(xiàng)(CSE: Commit Stack Entry)的緩沖。CSE對(duì)每個(gè)指令分配1個(gè)項(xiàng),用于監(jiān)視 執(zhí)行中的指令的進(jìn)展?fàn)顩r。CSE的項(xiàng)按照程序指令的順序在按順序完成 指令的指令提交時(shí)被無效化。
由于按順序進(jìn)行伴隨于指令提交(commit)的CSE的更新指示, 所以何時(shí)中斷指令執(zhí)行,都能夠在該時(shí)間點(diǎn)的程序計(jì)時(shí)器所指的位置保 證可編程資源的一致性。另外,CSE在每次提交時(shí)形成程序的檢驗(yàn)點(diǎn), 以實(shí)現(xiàn)流水線控制的寫入循環(huán)的功能。據(jù)此,即便在中斷了指令執(zhí)行的 情況下,也可以全部廢棄作業(yè)寄存器及運(yùn)算器605的輸入輸出等中殘留 的數(shù)據(jù)。
本實(shí)施例所涉及的檢錯(cuò)、糾錯(cuò)的機(jī)制,即便在分支的預(yù)測(cè)失誤偏差 的恢復(fù)、及中斷產(chǎn)生時(shí),也可保持可編程資源的一致性,并使指令重新 執(zhí)行(指令再執(zhí)行)成為可能。也就是說,當(dāng)在指令讀取、指令執(zhí)行等時(shí) 奇偶校驗(yàn)器603在從主寄存器文件601向當(dāng)前寄存器文件轉(zhuǎn)送的數(shù)據(jù)中 檢測(cè)出錯(cuò)誤的情況下,指令控制單元704起動(dòng)CPU的進(jìn)程切換以中斷 指令執(zhí)行。處理在CSE所形成的檢驗(yàn)點(diǎn)停止。而且,CSE保持與指令 讀出及執(zhí)行有關(guān)的資源,只要重新從程序計(jì)時(shí)器的位置開始,就能夠進(jìn) 行指令重新執(zhí)行而無損數(shù)據(jù)完整性(數(shù)據(jù)的匹配性)。
14圖6是本實(shí)施例中的具有寄存器文件以及糾正電路的運(yùn)算電路600 的框圖。
運(yùn)算電路600由主寄存器文件601、當(dāng)前寄存器文件602、奇偶校 驗(yàn)器603、奇偶校驗(yàn)器604、運(yùn)算器605、 ECC糾正電路606、 ECC生 成電路607所構(gòu)成。
主寄存器文件601、當(dāng)前寄存器文件602由多個(gè)部分?jǐn)?shù)據(jù)所構(gòu)成。 當(dāng)前寄存器文件602是從主寄存器文件601中讀出了規(guī)定數(shù)量的部分?jǐn)?shù) 據(jù)后的寄存器文件。主寄存器文件601是保持運(yùn)算電路600要處理的全 體項(xiàng)的部分?jǐn)?shù)據(jù)的寄存器文件。另外,當(dāng)前寄存器文件602以規(guī)定的定 時(shí)從主寄存器文件601讀出數(shù)據(jù)并進(jìn)行數(shù)據(jù)處理。因此,構(gòu)成主寄存器 文件601的部分?jǐn)?shù)據(jù)的項(xiàng)數(shù)多于構(gòu)成當(dāng)前寄存器文件602的部分?jǐn)?shù)據(jù)的 項(xiàng)數(shù)。通過在當(dāng)前寄存器601保持?jǐn)?shù)據(jù)處理所需要的最小限度的數(shù)據(jù), 就能夠提高運(yùn)算電路600的數(shù)據(jù)處理速度。
另外,主寄存器文件602使用在物理上不同的信號(hào)線來發(fā)送數(shù)據(jù)和 奇偶校驗(yàn)數(shù)據(jù)(或者ECC數(shù)據(jù))。在本實(shí)施例中,主寄存器文件601使用 傳輸總線609將奇偶校驗(yàn)數(shù)據(jù)或者ECC數(shù)據(jù)發(fā)送給當(dāng)前寄存器文件 602,并使用傳輸總線610將數(shù)據(jù)發(fā)送給當(dāng)前寄存器文件602。當(dāng)前寄存 器602使用傳輸總線611、612將數(shù)據(jù)和奇偶校驗(yàn)數(shù)據(jù)發(fā)送給運(yùn)算器605、 奇偶校驗(yàn)器604。當(dāng)前寄存器文件602使用傳輸總線611對(duì)糾錯(cuò)電路606 發(fā)送數(shù)據(jù)和ECC數(shù)據(jù),并使用傳輸總線612將數(shù)據(jù)和奇偶校驗(yàn)數(shù)據(jù)發(fā) 送給運(yùn)算器605、奇偶校驗(yàn)器604。進(jìn)而,當(dāng)前寄存器文件602使用傳 輸總線612將數(shù)據(jù)和ECC數(shù)據(jù)發(fā)送給糾錯(cuò)電路606。
奇偶校驗(yàn)器603對(duì)從主寄存器文件601讀出到當(dāng)前寄存器文件602 的部分?jǐn)?shù)據(jù)進(jìn)行奇偶校驗(yàn)。在奇偶校驗(yàn)器603檢測(cè)出奇偶錯(cuò)誤的情況下, 奇偶校驗(yàn)器603將錯(cuò)誤標(biāo)記設(shè)為ON。而且,奇偶校驗(yàn)器603在當(dāng)前寄 存器文件602中存儲(chǔ)從主寄存器文件601讀出的數(shù)據(jù)的讀出地址。
奇偶校驗(yàn)器604是對(duì)運(yùn)算器605中的運(yùn)算對(duì)象(運(yùn)算處理前)的數(shù)據(jù) 上的奇偶錯(cuò)誤進(jìn)行校驗(yàn)的校驗(yàn)器。
運(yùn)算器605是對(duì)從當(dāng)前寄存器文件602讀出的數(shù)據(jù)進(jìn)行運(yùn)算、即進(jìn)行四則運(yùn)算、邏輯運(yùn)算等處理的裝置。具體而言,運(yùn)算器605例如是 ALU(Arithmetic Logical Unit,算術(shù)邏輯單元),進(jìn)行整數(shù)運(yùn)算操作(加法、 減法、乘法)、邏輯運(yùn)算(AND、 NOT、 OR、 XOR)、將字按所指定的位 數(shù)相應(yīng)地向右(或者左)進(jìn)行移動(dòng)的移位操作的動(dòng)作等。
ECC糾正電路606是使用ECC數(shù)據(jù)來糾正從當(dāng)前寄存器文件602 讀出的數(shù)據(jù)的錯(cuò)誤的電路。這里,ECC糾正電路606從當(dāng)前寄存器文 件602讀出糾錯(cuò)中使用的ECC數(shù)據(jù)。當(dāng)奇偶校驗(yàn)器603在從主寄存器 文件603讀出的數(shù)據(jù)中檢測(cè)出錯(cuò)誤的情況下,指令控制單元704暫時(shí)中 止將數(shù)據(jù)從主寄存器文件601轉(zhuǎn)送到當(dāng)前寄存器文件602的處理。
而且,主寄存器文件601將檢測(cè)出錯(cuò)誤的數(shù)據(jù)轉(zhuǎn)送到當(dāng)前寄存器文 件602。 ECC糾正電路606從當(dāng)前寄存器文件602讀出檢測(cè)出錯(cuò)誤的數(shù) 據(jù)。而且,ECC糾正電路606從當(dāng)前寄存器文件602中讀出與被檢測(cè) 出錯(cuò)誤的數(shù)據(jù)相對(duì)應(yīng)的ECC數(shù)據(jù),并使用所讀出的ECC數(shù)據(jù)來糾正已 被檢測(cè)出錯(cuò)誤的數(shù)據(jù)。此時(shí),ECC糾正電路606使用讀出奇偶校驗(yàn)數(shù) 據(jù)的信號(hào)線,從當(dāng)前寄存器文件602讀出ECC數(shù)據(jù)。另外,ECC糾正 電路606對(duì)數(shù)據(jù)進(jìn)行糾正并且重新生成與已糾正的數(shù)據(jù)相對(duì)應(yīng)的奇偶校 驗(yàn)數(shù)據(jù)。然后,結(jié)果選擇電路608將已糾正的數(shù)據(jù)、所生成的奇偶校驗(yàn) 數(shù)據(jù)、ECC數(shù)據(jù)寫回到主寄存器文件601。
另外,ECC生成電路607使用運(yùn)算結(jié)果的數(shù)據(jù)來生成ECC數(shù)據(jù), 且該運(yùn)算結(jié)果的數(shù)據(jù)是使用了在奇偶校驗(yàn)器603中未檢測(cè)出錯(cuò)誤的數(shù)據(jù) 而得到的。ECC生成電路607生成的ECC數(shù)據(jù)是與運(yùn)算結(jié)果的數(shù)據(jù)相 對(duì)應(yīng)的ECC數(shù)據(jù)。而且,ECC生成電路607基于來自ECC運(yùn)算控制 部706的控制,將由ECC生成電路607所生成的ECC數(shù)據(jù)和與其相對(duì) 應(yīng)的運(yùn)算結(jié)果的數(shù)據(jù)寫回到主寄存器文件601。在糾錯(cuò)電路606對(duì)已檢 測(cè)出錯(cuò)誤的數(shù)據(jù)的錯(cuò)誤進(jìn)行了糾正以后,CPU700從已檢測(cè)出錯(cuò)誤的數(shù) 據(jù)的運(yùn)算處理開始再執(zhí)行。
在圖6中僅僅圖示了傳輸總線609、 610作為主寄存器文件601向 當(dāng)前寄存器文件602轉(zhuǎn)送數(shù)據(jù)的傳輸總線。雖然運(yùn)算電路600具有多個(gè) 傳輸總線609、 610的組作為將主寄存器文件601和當(dāng)前寄存器文件602 接連的傳輸總線,但是,在圖6中省略。此外,傳輸總線609是轉(zhuǎn)送奇 偶校驗(yàn)數(shù)據(jù)或者ECC數(shù)據(jù)的傳輸總線,傳輸總線610是轉(zhuǎn)送數(shù)據(jù)的傳
16輸總線。而且,主寄存器文件601將奇偶校驗(yàn)數(shù)據(jù)、ECC數(shù)據(jù)以及數(shù) 據(jù)分成多次分別向當(dāng)前寄存器文件602轉(zhuǎn)送。例如,在運(yùn)算電路600具 有8組傳輸總線的組,并從主寄存器文件601向當(dāng)前寄存器文件602以 32個(gè)寄存器的量進(jìn)行轉(zhuǎn)送的情況下,轉(zhuǎn)送4次8個(gè)寄存器的量。
圖7是本實(shí)施例中的CPU700的框圖。
CPU700由存儲(chǔ)器701、高速緩存控制單元702、指令控制單元704、 運(yùn)算單元705構(gòu)成。高速緩存控制單元702是包含高速緩存703的構(gòu)成。 另外,運(yùn)算單元705由運(yùn)算控制部706、運(yùn)算部707、寄存器部708、糾 錯(cuò)部709構(gòu)成。
存儲(chǔ)器701是進(jìn)行數(shù)據(jù)保持的存儲(chǔ)部、即保持CPU處理的全體數(shù) 據(jù)的存儲(chǔ)部。高速緩存控制單元702控制存儲(chǔ)器701和高速緩存703之 間的數(shù)據(jù)交換。高速緩存控制單元702指定存儲(chǔ)器701的規(guī)定地址并讀 出所希望的數(shù)據(jù),將所讀出的數(shù)據(jù)保存在高速緩存703中的規(guī)定地址。 同樣地,高速緩存控制單元702指定高速緩存703中的規(guī)定地址并讀出 所希望的數(shù)據(jù),將所讀出的數(shù)據(jù)保存于存儲(chǔ)器701中的規(guī)定地址。
而且,高速緩存控制單元702還控制高速緩存703和寄存器部708 之間的數(shù)據(jù)交換。高速緩存控制單元702指定高速緩存703的規(guī)定地址 并讀出所希望的數(shù)據(jù),將所讀出的數(shù)據(jù)保存于寄存器部708中的規(guī)定地 址。同樣地,高速緩存控制單元702指定寄存器部708中的規(guī)定地址并 讀出所希望的數(shù)據(jù),將所讀出的數(shù)據(jù)保存于高速緩存703中的規(guī)定地址。 在本實(shí)施例中,由一個(gè)高速緩存703來實(shí)現(xiàn)高速緩存功能,但是,為了 實(shí)現(xiàn)處理的更加高速化,還可以是通過l級(jí)高速緩存、2級(jí)高速緩存和 多個(gè)高速緩存來構(gòu)成高速緩存功能。寄存器部708實(shí)現(xiàn)圖4中的寄存器 文件401及圖6中的601等具有的功能。
運(yùn)算控制部706通過控制運(yùn)算部707、寄存器部708,來統(tǒng)一控制 運(yùn)算單元705的處理。運(yùn)算部707基于來自運(yùn)算控制部706的指示,進(jìn) 行從寄存器部708讀出數(shù)據(jù)的處理、向寄存器部708寫入數(shù)據(jù)的處理。 另外,糾錯(cuò)部709,在寄存器部708中所保存的數(shù)據(jù)中存在錯(cuò)誤的情況 下,進(jìn)行該數(shù)據(jù)的錯(cuò)誤糾正處理。由寄存器部708進(jìn)行糾錯(cuò)部709糾正 的錯(cuò)誤的檢測(cè)。運(yùn)算部707自寄存器部708讀出數(shù)據(jù)和對(duì)應(yīng)于該數(shù)據(jù)的奇偶校驗(yàn)數(shù)據(jù)。寄存器部708基于數(shù)據(jù)和奇偶校驗(yàn)數(shù)據(jù)來嘗試數(shù)據(jù)的讀 出處理、寫入處理等中的數(shù)據(jù)的錯(cuò)誤檢測(cè)。奇偶校驗(yàn)是數(shù)據(jù)通信中檢測(cè) 數(shù)據(jù)錯(cuò)誤的方法之一。將構(gòu)成數(shù)據(jù)的位的1或者0的個(gè)數(shù)之奇偶和奇偶 校驗(yàn)數(shù)據(jù)進(jìn)行比較。若比較結(jié)果不吻合就判斷為在數(shù)據(jù)中有錯(cuò)誤。
若檢測(cè)出了數(shù)據(jù)錯(cuò)誤,糾錯(cuò)部709則從寄存器部708讀出已檢測(cè)出 錯(cuò)誤的數(shù)據(jù)和對(duì)應(yīng)于該數(shù)據(jù)的ECC數(shù)據(jù)。
本實(shí)施例中的CPU700根據(jù)64位的輸入數(shù)據(jù)和8位的奇偶校驗(yàn)數(shù) 據(jù),通過EOR運(yùn)算電路來生成用于求解位的錯(cuò)誤位置的8位校驗(yàn)子 (syndrome)。
另外,通過使CPU進(jìn)行的處理流水線化,就能夠提高CPU700的 處理速度。
為了糾正奇偶校驗(yàn)器603、 604基于奇偶校驗(yàn)數(shù)據(jù)檢測(cè)出的1位錯(cuò) 誤,糾錯(cuò)部709生成64位的糾正掩碼。糾錯(cuò)部709基于校驗(yàn)子的結(jié)果 來生成糾正掩碼的各位。若奇偶校驗(yàn)器603、 604檢測(cè)出l位錯(cuò)誤,糾 錯(cuò)部709則使用糾正掩碼將錯(cuò)誤位以外的位屏蔽,并對(duì)錯(cuò)誤進(jìn)行糾正。
圖8、圖9、圖IO是本實(shí)施例中的CPU的處理的時(shí)序圖。
對(duì)于CPU700進(jìn)行的數(shù)據(jù)糾錯(cuò),優(yōu)選,可以在從寄存器部708讀出 數(shù)據(jù)的處理的時(shí)間內(nèi)使用ECC數(shù)據(jù)進(jìn)行奇偶校驗(yàn)和通過奇偶校驗(yàn)檢測(cè) 出的錯(cuò)誤的糾正處理。但是,在諸如數(shù)據(jù)讀出處理這樣的延遲頻繁地發(fā) 生的時(shí)候,CPU700難以在規(guī)定的時(shí)間內(nèi)進(jìn)行ECC糾錯(cuò)處理。
另外,從數(shù)據(jù)讀出處理開始,由于確保使用ECC數(shù)據(jù)進(jìn)行部分?jǐn)?shù) 據(jù)的檢錯(cuò)、糾錯(cuò)的時(shí)間而使CPU處理速度下降。
因此,與本實(shí)施例相關(guān)的CPU700使用奇偶校驗(yàn)數(shù)據(jù)來校驗(yàn)寄存器 部708中保持的數(shù)據(jù)有無奇偶錯(cuò)誤。而且,設(shè)CPU700構(gòu)成為,使用 ECC數(shù)據(jù)來糾正通過奇偶校驗(yàn)所檢測(cè)出的錯(cuò)誤。據(jù)此,即使設(shè)CPU糾 正錯(cuò)誤的糾錯(cuò)處理花費(fèi)了數(shù)百t ,如果從整體的處理時(shí)間來看也極少, 能夠?qū)崿F(xiàn)糾錯(cuò)而幾乎不會(huì)使CPU700的處理性能下降。
在圖8、圖9、圖10的時(shí)序圖中,CPU進(jìn)行通常處理,并^f吏用數(shù)據(jù)
18和對(duì)應(yīng)于數(shù)據(jù)的奇偶校驗(yàn)數(shù)據(jù)來進(jìn)行數(shù)據(jù)的奇偶校驗(yàn)。圖8、圖9、圖 IO中所記載的"PARITY(1 8)"、 "DATA(1 8)"分別是以8字節(jié)的數(shù)據(jù) 和對(duì)應(yīng)于該數(shù)據(jù)的8位的奇偶校驗(yàn)數(shù)據(jù)的塊為單位的數(shù)據(jù)、奇偶校驗(yàn)數(shù) 據(jù)的總稱。另外"DATA(1)"、 "PARITY(1)"分別表示8字節(jié)的數(shù)據(jù)、8 位的奇偶校驗(yàn)數(shù)據(jù),同樣,附加了其他編號(hào)的"DATA(n)"、 "PARITY(n)" 也是8字節(jié)的數(shù)據(jù)、8位的奇偶校驗(yàn)數(shù)據(jù)。這里,本實(shí)施例中的"n" 是1 8的自然數(shù)。當(dāng)然"n,,也可以是大于8的自然數(shù),還可以是CPU 一次轉(zhuǎn)送更多的數(shù)據(jù)、奇偶校驗(yàn)數(shù)據(jù)的構(gòu)成。
圖8是奇偶校驗(yàn)器603未檢測(cè)出錯(cuò)誤時(shí)(以下將這一情況稱為通常時(shí)) 的時(shí)序圖。在通常時(shí),主寄存器文件601經(jīng)由傳輸總線609將奇偶校驗(yàn) 數(shù)據(jù)(在圖8中記載為PARITY(1))統(tǒng)一為8位,并轉(zhuǎn)送至當(dāng)前寄存器文 件602。這里,在主寄存器文件601和當(dāng)前寄存器文件602之間,傳輸 總線609和傳輸總線610的組有8組。在圖6中省略8組的傳輸總線的 圖示。也就是說,按每個(gè)傳輸總線的組(傳輸總線609和傳輸總線610) 將l位的奇偶校驗(yàn)數(shù)據(jù)和l字節(jié)的數(shù)據(jù)進(jìn)行轉(zhuǎn)送。另外,主寄存器文件 601經(jīng)由傳輸總線610將數(shù)據(jù)(在圖8中記載為DATA(1))統(tǒng)一為8字節(jié) 轉(zhuǎn)送至當(dāng)前寄存器文件602。當(dāng)前寄存器602經(jīng)由傳輸總線611向運(yùn)算 器605轉(zhuǎn)送8字節(jié)的數(shù)據(jù)和對(duì)應(yīng)的8位奇偶校驗(yàn)數(shù)據(jù)(在圖8中記載為 DATA(1)+PARITY(1)等)。同樣地,當(dāng)前寄存器602經(jīng)由傳輸總線612 向運(yùn)算器605轉(zhuǎn)送8字節(jié)的數(shù)據(jù)和對(duì)應(yīng)的8位的奇偶校驗(yàn)數(shù)據(jù)(在圖8 中記載為DATA(2)+PARITY(2)等)。運(yùn)算器605經(jīng)由傳輸總線616將運(yùn) 算處理的運(yùn)算結(jié)果(在圖8中記栽為運(yùn)算結(jié)果(DATA+P+ECC))寫回至主 寄存器文件616。
圖9是奇偶校驗(yàn)器603檢測(cè)出錯(cuò)誤時(shí)的時(shí)序圖。主寄存器文件601 經(jīng)由傳輸總線609將奇偶校驗(yàn)數(shù)據(jù)(在圖9中記栽為PARITY(1 8))統(tǒng)一 為8位,轉(zhuǎn)送至當(dāng)前寄存器文件602。另外,主寄存器文件601經(jīng)由傳 輸總線610將數(shù)據(jù)(在圖9中記載為DATA(1 8))統(tǒng)一為8字節(jié)轉(zhuǎn)送至當(dāng) 前寄存器文件602。
而且,設(shè)在周期801中產(chǎn)生了 DATA(1)的轉(zhuǎn)送錯(cuò)誤。若產(chǎn)生了轉(zhuǎn)送 錯(cuò)誤,奇偶校驗(yàn)器603則經(jīng)由傳輸總線613對(duì)主寄存器文件601通知轉(zhuǎn) 送錯(cuò)誤的產(chǎn)生。另外,設(shè)在周期802中產(chǎn)生了運(yùn)算寄存器錯(cuò)誤。若產(chǎn)生了運(yùn)算寄存器錯(cuò)誤,奇偶校驗(yàn)器604則經(jīng)由傳輸總線614向運(yùn)算控制部 706通知運(yùn)算寄存器錯(cuò)誤的產(chǎn)生。
在周期803中,運(yùn)算電路600開始糾正處理。主寄存器文件601經(jīng) 由傳輸總線609將ECC數(shù)據(jù)(在圖9中記載為ECC(1)等)通知給當(dāng)前 寄存器文件602。另外,主寄存器文件601經(jīng)由傳輸總線610將數(shù)據(jù)(在 圖9中記載為DATA(1)等)轉(zhuǎn)送給當(dāng)前寄存器文件602。當(dāng)前寄存器文件 602經(jīng)由傳輸總線611向糾錯(cuò)電路606轉(zhuǎn)送數(shù)據(jù)和ECC數(shù)據(jù)。糾錯(cuò)電路 606使用ECC數(shù)據(jù)來糾正數(shù)據(jù)中產(chǎn)生的錯(cuò)誤,并生成與正確的數(shù)據(jù)相 對(duì)應(yīng)的奇偶校驗(yàn)數(shù)據(jù)。而且,糾錯(cuò)電路606經(jīng)由傳輸總線615、 616將 數(shù)據(jù)、奇偶校驗(yàn)數(shù)據(jù)和ECC數(shù)據(jù)寫回至主寄存器文件601。
圖10是糾錯(cuò)電路606結(jié)束糾錯(cuò)時(shí)的時(shí)序圖。糾錯(cuò)電路606使用從 當(dāng)前寄存器602所轉(zhuǎn)送的ECC數(shù)據(jù)來糾正對(duì)應(yīng)的數(shù)據(jù)。糾錯(cuò)電路606 經(jīng)由傳輸總線615、 616將經(jīng)過糾正的數(shù)據(jù)寫回至主寄存器文件601,并 在周期805結(jié)束當(dāng)前寄存器文件602中的所有寄存器的糾正處理。然后, 在周期806,主寄存器文件601經(jīng)由傳輸總線608將奇偶校驗(yàn)數(shù)據(jù)再次 發(fā)送至當(dāng)前寄存器文件602,并經(jīng)由傳輸總線609將數(shù)據(jù)再次發(fā)送至當(dāng) 前寄存器文件602。奇偶校驗(yàn)器603對(duì)在從主寄存器文件601向當(dāng)前寄 存器文件602的數(shù)據(jù)轉(zhuǎn)送中未產(chǎn)生錯(cuò)誤進(jìn)行校驗(yàn)。然后,在周期807, 通過執(zhí)行來自運(yùn)算控制部706的指令,當(dāng)前寄存器文件602經(jīng)由傳輸總 線611、 612將與錯(cuò)誤有關(guān)的數(shù)據(jù)和奇偶校驗(yàn)數(shù)據(jù)轉(zhuǎn)送至運(yùn)算器605。運(yùn) 算器605經(jīng)由傳輸總線616將運(yùn)算結(jié)果(在圖10中為D+P+E)寫回至主 寄存器文件601。
圖ll是將糾錯(cuò)處理納入了 l個(gè)周期時(shí)的時(shí)序圖。在沒有糾錯(cuò)處理的 情況下,運(yùn)算流水線的各周期由指令取出(IF)、指令解碼(D)、寄存器讀 出(R)、運(yùn)算執(zhí)行(EX)、寫回(WB)、提交(CT)的各階段所構(gòu)成。若在此 運(yùn)算流水線上加入1個(gè)周期的糾錯(cuò)處理(C),則伴隨于此,相對(duì)于全部 的運(yùn)算處理將產(chǎn)生1個(gè)周期的延遲時(shí)間而4吏CPU的處理性能顯著降低。
本實(shí)施例中的糾錯(cuò)方法是對(duì)執(zhí)行依次提供的指令的處理時(shí)產(chǎn)生的 錯(cuò)誤進(jìn)行糾正的一種方法,即,使用檢錯(cuò)用的數(shù)據(jù)(例如奇偶校驗(yàn)數(shù)據(jù)) 來進(jìn)行數(shù)據(jù)錯(cuò)誤的檢測(cè),并使用不同于檢錯(cuò)用的數(shù)據(jù)的糾錯(cuò)用的數(shù)據(jù) (例如ECC數(shù)據(jù))對(duì)所檢測(cè)出的錯(cuò)誤進(jìn)行糾錯(cuò)的一種方法。據(jù)此在本實(shí)施
20例中的糾錯(cuò)方法中,就只產(chǎn)生僅僅在對(duì)錯(cuò)誤進(jìn)行糾正時(shí)所花費(fèi)的最小限度的延遲時(shí)間。
根據(jù)本申請(qǐng)發(fā)明的糾錯(cuò)方法,通過在未檢測(cè)出錯(cuò)誤時(shí)跳過伴隨于
ECC運(yùn)算的處理,就能夠糾正寄存器中的位錯(cuò)誤,而不會(huì)使信息處理裝置中的CPU的處理速度下降。
產(chǎn)業(yè)上的可利用性
基于本發(fā)明的糾錯(cuò)方法,對(duì)在CPU的處理中產(chǎn)生的數(shù)據(jù)錯(cuò)誤進(jìn)行糾正。從而,基于本發(fā)明的糾錯(cuò)方法,在實(shí)現(xiàn)可靠性高、且要求處理速度的CPU這一方面極其有效。
權(quán)利要求
1.一種糾錯(cuò)方法,運(yùn)算器中所設(shè)置的寄存器保持?jǐn)?shù)據(jù)以及校驗(yàn)數(shù)據(jù),對(duì)該數(shù)據(jù)中產(chǎn)生的錯(cuò)誤進(jìn)行糾正,其特征在于,具有該運(yùn)算器使用該校驗(yàn)數(shù)據(jù)來檢測(cè)該數(shù)據(jù)的錯(cuò)誤的檢測(cè)步驟;以及該運(yùn)算器使用不同于該校驗(yàn)數(shù)據(jù)的糾正數(shù)據(jù),對(duì)在該數(shù)據(jù)中檢測(cè)出的錯(cuò)誤進(jìn)行糾正的糾正步驟。
2. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于該糾正步驟在該運(yùn)算器檢測(cè)出錯(cuò)誤的情況下,中斷運(yùn)算處理并使用 該糾正數(shù)據(jù)對(duì)該數(shù)據(jù)進(jìn)行糾錯(cuò)。
3. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于 該校驗(yàn)數(shù)據(jù)和該糾正數(shù)據(jù)與該數(shù)據(jù)對(duì)應(yīng)而被保存在該寄存器中。
4. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于當(dāng)在該檢測(cè)步驟中檢測(cè)出錯(cuò)誤時(shí),自該寄存器讀出該糾正步驟中的 該糾正數(shù)據(jù),并且自該寄存器再次讀出被檢測(cè)出錯(cuò)誤的數(shù)據(jù)。
5. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于 該檢測(cè)步驟通過運(yùn)算該數(shù)據(jù)和該校驗(yàn)數(shù)據(jù)的異或來檢測(cè)錯(cuò)誤。
6. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于 該校驗(yàn)數(shù)據(jù)是奇偶校驗(yàn)數(shù)據(jù)。
7. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于在該糾正步驟中,使用該糾正數(shù)據(jù)來生成用于求解位的錯(cuò)誤位置的 校驗(yàn)子,并使用該校驗(yàn)子來糾正該錯(cuò)誤。
8. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于 該糾正數(shù)據(jù)是ECC數(shù)據(jù)。
9. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于該寄存器具有保持要處理的全體數(shù)據(jù)的主寄存器文件和保持從該 主寄存器文件轉(zhuǎn)送的一部分的數(shù)據(jù)的當(dāng)前寄存器文件。
10. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于 對(duì)于該糾正步驟中的糾正數(shù)據(jù),使用轉(zhuǎn)送該校驗(yàn)數(shù)據(jù)的信號(hào)線來轉(zhuǎn)送糾正數(shù)據(jù)。
11. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于按照來自對(duì)運(yùn)算處理進(jìn)行控制的運(yùn)算控制部的指示來執(zhí)行該檢測(cè) 步驟中的錯(cuò)誤檢測(cè)。
12. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于,還具有 重新生成與經(jīng)過糾錯(cuò)的數(shù)據(jù)相對(duì)應(yīng)的糾正數(shù)據(jù)的生成步驟。
13. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于 使用錯(cuò)誤標(biāo)記來判別在該糾正步驟中有無檢測(cè)出錯(cuò)誤。
14. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于該檢測(cè)步驟中的錯(cuò)誤檢測(cè)是在該數(shù)據(jù)轉(zhuǎn)送時(shí)產(chǎn)生的轉(zhuǎn)送數(shù)據(jù)的錯(cuò) 誤檢測(cè)。
15. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于該檢測(cè)步驟中的錯(cuò)誤檢測(cè)是該數(shù)據(jù)的運(yùn)算處理時(shí)產(chǎn)生的運(yùn)算數(shù)據(jù) 的錯(cuò)誤檢測(cè)。
16. 按照權(quán)利要求l所記載的糾錯(cuò)方法,其特征在于,還具有 將經(jīng)過糾正的數(shù)據(jù)寫回到該寄存器的步驟。
17. —種運(yùn)算器,對(duì)數(shù)據(jù)中產(chǎn)生的錯(cuò)誤進(jìn)行糾正,其特征在于,具有保持?jǐn)?shù)據(jù)、對(duì)應(yīng)于該數(shù)據(jù)的校驗(yàn)數(shù)據(jù)以及對(duì)應(yīng)于該數(shù)據(jù)的糾正數(shù)據(jù) 的寄存器;使用該校驗(yàn)數(shù)據(jù)來檢測(cè)該數(shù)據(jù)的錯(cuò)誤的檢測(cè)單元;以及 在檢測(cè)出該錯(cuò)誤的情況下使用該糾正數(shù)據(jù)進(jìn)行糾正的糾正單元。
全文摘要
本實(shí)施例所涉及的糾錯(cuò)方法的目的是進(jìn)行寄存器文件的糾錯(cuò),而不會(huì)使計(jì)算器的處理速度下降。本實(shí)施例所涉及的糾錯(cuò)方法是一種運(yùn)算器中所設(shè)置的寄存器保持?jǐn)?shù)據(jù)以及校驗(yàn)數(shù)據(jù),對(duì)該數(shù)據(jù)中產(chǎn)生的錯(cuò)誤進(jìn)行糾正的糾錯(cuò)方法,其特征是具有該運(yùn)算器使用該校驗(yàn)數(shù)據(jù)來檢測(cè)該數(shù)據(jù)的錯(cuò)誤的檢測(cè)步驟;以及該運(yùn)算器使用不同于該校驗(yàn)數(shù)據(jù)的糾正數(shù)據(jù)來在對(duì)該數(shù)據(jù)中檢測(cè)出的錯(cuò)誤進(jìn)行糾正的糾正步驟。
文檔編號(hào)G06F12/16GK101681309SQ20078005330
公開日2010年3月24日 申請(qǐng)日期2007年6月15日 優(yōu)先權(quán)日2007年6月15日
發(fā)明者大貫祥照, 山下英男 申請(qǐng)人:富士通株式會(huì)社