專利名稱:減少硬件的軟錯誤檢測的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于處理數(shù)據(jù)的系統(tǒng),尤其涉及用于在計算環(huán)境中執(zhí)行期間檢測軟錯誤的系統(tǒng)。
背景技術(shù):
處理器設(shè)計人員越來越關(guān)注的就是軟錯誤現(xiàn)象。軟錯誤是一些間歇性錯誤,這些錯誤,在處理器執(zhí)行期間發(fā)生,并且是由于大氣中撞擊硅活性區(qū)域的阿爾法粒子或者高能量中子所導致的,并非是由于設(shè)計缺陷或制造缺陷所造成的。當使物理電路保持原樣時,軟錯誤改變存儲器單元和邏輯中所貯存的電荷,從而產(chǎn)生了不正確的行為和結(jié)果。因此,軟錯誤也被稱作瞬態(tài)故障或單事件擾動(SEU),會導致無效狀態(tài)。
軟錯誤的兩個來源就是高能量中子和阿爾法粒子。高能量中子是宇宙射線與大氣粒子之間碰撞的結(jié)果。阿爾法粒子來自于芯片材料(諸如焊接塊)和封裝材料的放射性衰變。當高能量中子或阿爾法粒子撞擊硅基板的活性區(qū)域時,軟錯誤就會發(fā)生,從而導致釋放出改變晶體管狀態(tài)的電荷(電子空穴對)。因此,當晶體管狀態(tài)被改變時,正在執(zhí)行的操作中就會發(fā)生錯誤。重要的是,此類錯誤通常在檢測不到的情況下發(fā)生,并且會導致大量的錯誤。
由于大規(guī)模集成化(諸如“VLSI”或“ULSI”等)設(shè)計趨勢以及半導體制造趨勢,人們預(yù)測軟錯誤發(fā)生的幾率(也被稱為“軟錯誤率”(SER))將會有所增大。對微處理器性能和設(shè)計起推動作用的幾種趨勢包括器件特征尺寸的規(guī)模及增加的流水線深度。這些趨勢已導致晶體管在特征尺寸上的減小、在電壓電平上的降低,以及在晶體管密度上的增加。撞擊邏輯電路或存儲器中晶體管的粒子(諸如高能量中子或阿爾法粒子等)能夠改變電路所產(chǎn)生的值或在存儲器中所存儲的值。此類粒子將確實導致軟錯誤的機會,隨著密度等級增長和電壓電平降低增大。雖然在服務(wù)器、工作站和任務(wù)關(guān)鍵性系統(tǒng)中軟錯誤檢測已經(jīng)受到相當?shù)年P(guān)注,但是人們還是預(yù)測隨著硅幾何形狀的收縮以及隨著改變晶體管狀態(tài)所需電荷的不斷減少,在處理器(包括臺式計算機)和網(wǎng)絡(luò)組件設(shè)計中,軟錯誤檢測將變得日益重要。
盡管由于極其難以阻擋那些導致軟錯誤的粒子,而使得不容易阻止導致軟錯誤的起因,但是許多處理器都已經(jīng)包括有用來檢測軟錯誤的機制。然而,這些機制典型地集中在保護諸如系統(tǒng)存儲器和高速緩存器等存儲元件。這些機制包括糾錯碼(ECC)和奇偶校驗技術(shù)。相反,在大多已知系統(tǒng)中,組合邏輯元件中的軟錯誤的檢測典型地涉及相對昂貴的冗余硬件方案。這種途徑的缺陷就是由于冗余硬件的相當大的硅成本,因而提供充分的硬件冗余來檢測組合邏輯中的軟錯誤通常性價比不高。
發(fā)明內(nèi)容
這里所公開的減少硬件的軟錯誤檢測裝置與方法的實施例解決了了關(guān)于軟錯誤的這些問題和其它問題。
通過參照下列附圖可以理解本發(fā)明,在附圖中相同的元件用相同的標記及數(shù)字來指示。提供這些附圖來舉例說明減少硬件的軟錯誤檢測裝置及其方法的所選實施例,而不是用來限制。
圖1是能執(zhí)行減少硬件的軟錯誤檢測的整數(shù)處理器件的至少一個實施例的方框圖。
圖2是現(xiàn)有技術(shù)中冗余硬件軟錯誤檢測系統(tǒng)的方框圖。
圖3A是說明減少硬件的軟錯誤檢測系統(tǒng)的至少一個實施例的數(shù)據(jù)流動的數(shù)據(jù)流圖。
圖3B是說明用于執(zhí)行減少硬件的軟錯誤檢測的方法的流程圖。
圖4是說明用于整數(shù)加法的減少硬件的軟錯誤檢測系統(tǒng)的至少一個實施例方框圖。
圖5是說明用于整數(shù)減法的減少硬件的軟錯誤檢測系統(tǒng)的至少一個實施例的方框圖。
圖6是說明用于整數(shù)運算的減法和整數(shù)加法的減少硬件的軟錯誤檢測系統(tǒng)的至少一個實施例的方框圖。
圖7是說明圖1、3A和4-6中所述驗證邏輯的至少一個實施例的方框圖。
圖8是說明用于整數(shù)加法的補償邏輯的至少一個替換實施例的方框圖。
圖9是說明用于整數(shù)加法的補償邏輯的至少一個另一個替換實施例的方框圖。
具體實施例方式
以下論述闡明了許多具體細節(jié),以提供對本發(fā)明的全面理解。然而,受益于本公開文本的本領(lǐng)域普通技術(shù)人員將會認識到,本發(fā)明可以在沒有這些具體細節(jié)的情況下加以實施。此外,為了將注意力集中在本發(fā)明的特征上,因而并未對各種眾所周知的方法、步驟、組件和電路作詳細描述。
這里所論述的減少硬件的軟錯誤檢測實施例,既可供有符號整數(shù)表示使用,也可供無符號整數(shù)表示使用。盡管為了舉例,下面的大量論述都是集中于有符號整數(shù),但本領(lǐng)域技術(shù)人員將會認識到結(jié)合這里所述的軟錯誤檢測實施例,可以使用有符號整數(shù)表示,或者也可以使用無符號整數(shù)表示。
就有符號整數(shù)而論,處理器體系結(jié)構(gòu)一般規(guī)定了用來存儲有符號整數(shù)的格式。表示有符號整數(shù)的常用格式為二進制補碼格式。二進制補碼表示法允許對有符號整數(shù)使用二進制算術(shù)運算,從而產(chǎn)生正確的二進制補碼結(jié)果。正的二進制補碼整數(shù)簡單地被表示為該整數(shù)的二進制表示。負的二進制補碼整數(shù)被表示為這樣的一個二進制數(shù),當將該二進制數(shù)加上與其大小相同的正數(shù)時等于零。
處理器中的典型ALU處理有符號及無符號整數(shù)的加法和減法運算,并且還處理某些邏輯運算。正如這里所用的,術(shù)語“算術(shù)邏輯部件”及“ALU”都是指包括能執(zhí)行整數(shù)算術(shù)運算的任何邏輯元件,這些整數(shù)算術(shù)運算包括有符號及無符號的加法和減法。本領(lǐng)域技術(shù)人員將會認識到,在不花費相當大的硅成本的情況下,用于執(zhí)行諸如OR、AND等邏輯運算的典型ALU硬件可以加倍。相反,用于執(zhí)行諸如整數(shù)加法和減法等算術(shù)運算的硬件(典型地稱作“CPA”的帶進位傳播的加法器)卻包括相當大的硅成本和執(zhí)行成本。
下面所公開的實施例提供了無要求冗余硬件的軟錯誤檢測。取而代之的是,補償和驗證邏輯根據(jù)所觀測的整數(shù)加法和減法的特性來確定是否已發(fā)生錯誤。
圖1是整數(shù)處理器件100的方框圖,所述整數(shù)處理器件100適合于實現(xiàn)如這里所述的減少硬件的軟錯誤檢測。系統(tǒng)100適合于實現(xiàn)為處理器的整數(shù)執(zhí)行部件。系統(tǒng)100包括算術(shù)邏輯部件130、補償邏輯140和驗證邏輯150。系統(tǒng)100從整數(shù)寄存器堆110中接收整數(shù)操作數(shù)。整數(shù)寄存器堆110存儲將由ALU 130和補償邏輯140處理的整數(shù)數(shù)據(jù)的操作數(shù)值。對于至少一個實施例,所述整數(shù)數(shù)據(jù)的操作數(shù)值可以表示為二進制補碼的有符號整數(shù)。對于至少一個替換實施例,所述整數(shù)數(shù)據(jù)的操作數(shù)值可以表示為無符號整數(shù)。
器件100提供一個錯誤指示,對于至少一個實施例,該錯誤可提供給可選的退出邏輯120的錯誤指示。在亂序處理器中,所述退出邏輯120從所述執(zhí)行部件接收已執(zhí)行指令的完成狀態(tài),并對結(jié)果進行處理,以便于根據(jù)程序次序來提交(或退出)適當?shù)慕Y(jié)構(gòu)狀態(tài)。本領(lǐng)域技術(shù)人員將會認識到,存在許多處理軟錯誤指示的方式,包括檢測、報告和糾正。可選的退出邏輯120代表的只是此類錯誤處理的許多可能實施例中的一種。
圖2說明了一種現(xiàn)有技術(shù)的軟錯誤檢測方案,在所述方案中,主ALU200a和冗余ALU200b對相同的輸入A與B進行處理。換言之,ALU硬件是重復(fù)的。比較硬件210對分別由主ALU220a和冗余ALU200b所生成的輸出值進行比較。如果這兩個輸出值不相同,則假定已經(jīng)發(fā)生軟錯誤并生成錯誤指示。如此一來,在圖2中所述的系統(tǒng)就是“重復(fù)”與“比較”系統(tǒng)。如上所釋,圖2中所述的冗余ALU硬件要求相對昂貴的帶進位傳播的加法器硬件的復(fù)制。此外,“重復(fù)與比較”系統(tǒng)要求比較硬件,所述硬件要比下面所進一步詳述的驗證邏輯150(圖1)在空間及執(zhí)行時間上有更多的開銷。由于與補償電路和驗證邏輯相關(guān)的相對較小的硬件區(qū)域,如下結(jié)合圖3A至圖9所描述的,所以暴露出較少的區(qū)域,并且出現(xiàn)軟錯誤的幾率要比在如圖2所示的重復(fù)與比較系統(tǒng)的相對較大硬件區(qū)域中的要小。
圖2中所公開的現(xiàn)有技術(shù)方案是基于以下假設(shè)由于兩個軟錯誤(每個冗余ALU220a、220b中一個)的隨機性,它們不會在同一邏輯門上在同一時刻發(fā)生,或者如果它們的確在同一時刻發(fā)生了,則錯誤的影響(在改變的狀態(tài)方面)不會是相同的。在不去判斷這種假設(shè)是否有根據(jù)的情況下,人們注意到,圖2中所述的現(xiàn)有技術(shù)方案遭受到冗余性的固有缺陷。那就是,在第一ALU220a中硬件設(shè)計中的任何錯誤將會重復(fù)出現(xiàn)在第二ALU220b中。實現(xiàn)如下的減少硬件的軟錯誤檢測系統(tǒng)會是有益的,所述檢測系統(tǒng)也會檢測硬件設(shè)計錯誤但不會重復(fù)這些錯誤。
圖3A舉例說明與冗余硬件系統(tǒng)(見圖2)相比,整數(shù)處理系統(tǒng)100的至少一個實施例提供了補償邏輯140和驗證邏輯150,而沒有提供如圖2中所述的冗余ALU200b和比較邏輯210。假定補償邏輯140和驗證邏輯150加起來比第二ALU和比較邏輯(諸如圖2中的200b和210)含有更少的硬件,則就實現(xiàn)了在軟錯誤檢測成本上的相當大的改善。除了節(jié)省成本之外,系統(tǒng)100的其它優(yōu)點還包括如下事實非冗余補償邏輯140和驗證邏輯150提供對ALU130中確定的硬件設(shè)計錯誤的檢測。
圖3B是說明使用如圖3A中所述的系統(tǒng)100來執(zhí)行軟錯誤檢測的方法流程圖?,F(xiàn)參照圖3A和3B,人們可以看到,在操作802中,ALU130對操作數(shù)A與B執(zhí)行所請求的整數(shù)算術(shù)運算。產(chǎn)生的整數(shù)結(jié)果作為操作802的結(jié)果。在操作804中,非冗余補償邏輯140對操作數(shù)A與B執(zhí)行補償,對于至少一個實施例,它還對操作802中由ALU130所生成結(jié)果執(zhí)行補償。由于所述補償,產(chǎn)生了補償結(jié)果。對于至少一個實施例,所述補償結(jié)果包括諸如由存儲進位加法器產(chǎn)生的和值與進位值。
在操作806中進行驗證。在驗證操作806期間,驗證邏輯150評估補償邏輯140在操作804中生成的結(jié)果是否指示存在有錯誤狀態(tài)。對于至少一個實施例,驗證邏輯150將對補償邏輯140在操作804中生成的結(jié)果補償一個預(yù)定的值-1。本領(lǐng)域技術(shù)人員將會認識到,依據(jù)所實現(xiàn)的特定補償邏輯140,在操作804中所應(yīng)用的預(yù)定值可以是除-1之外的值(例如,參看下面對圖9的論述,其中預(yù)定值為-2)。
依據(jù)驗證操作806的結(jié)果,在操作808判定是否存在有軟錯誤。如果存在,就在操作810報告所述錯誤。如果不存在,就在操作812結(jié)束處理。本領(lǐng)域技術(shù)人員將會認識到,可以在不脫離所述方法范圍的情況下實施上述方法的多種變形。例如,其中一種方法可能選擇在操作812終止之前和在操作808后報告無錯誤。比如,可能實施這種變形當常常生成錯誤指示時,用所述錯誤指示符中的確定值來代表還沒有發(fā)生任何錯誤。
圖4是說明用于整數(shù)加法的補償邏輯140a與驗證邏輯150a的實施例的方框圖。圖4中所述的補償邏輯140a和驗證邏輯150a是以關(guān)于二進制補碼整數(shù)加法的下列觀察報告為基礎(chǔ)的。(本領(lǐng)域技術(shù)人員將會認識到,補償邏輯140和驗證邏輯150還為無符號整數(shù)加法產(chǎn)生正確結(jié)果)。
為了生成整數(shù)的二進制補碼表示,第一步就是以二進制形式來表示所述整數(shù)。如果所表示的整數(shù)為正,則無需作進一步處理——正整數(shù)的二進制形式就是此整數(shù)的二進制補碼表示。對于負整數(shù),則需要作進一步處理。在這種情況下,為了得到該數(shù)的反碼表示,將二進制數(shù)的每一位取反。接著,為了得到負數(shù)的二進制補碼表示,將二進制1b“1”加上反碼表示。表1提供了簡單的三位的例子表1
**注正4不能用三位二進制補碼表示法來表示。1b的‘100’表示-4。
為了對負整數(shù)求反(從而產(chǎn)生正整數(shù)),通過將每一位取反得到反碼表示,并接著將結(jié)果加上二進制“1”。表2提供了簡單的三位的例子。
表2 **注正4不能用三位二進制補碼表示法來表示。1b的‘100’表示-4。
因此,任何二進制補碼整數(shù)(A)的求反值均為A的反碼(這里稱為~A)加1b‘1’,從而提供下列等式-A=~A+1 等式1在下列每一個情況中等式1為真1)對正整數(shù)求反來生成負整數(shù),2)對負整數(shù)求反來生成正整數(shù),以及3)在當A為零的情況下(假如忽略掉超過操作數(shù)A大小的進位位),可對等式1作進一步修改,來為~A求解等式~A=-A-1 等式2因此,等式2表明整數(shù)A的反碼是由A已求反的二進制補碼表示再減二進制“1”來表示的。如果A和B是到ALU的兩個有符號整數(shù)輸入,則加法運算的輸出就由A+B來表示。如果我們將結(jié)果A+B的每一位都取反,以得到~(A+B),則我們基本上就形成了A+B的反碼,并能利用等式2,得到~(A+B)=-(A+B)-1。我們可進一步作簡化得到~(A+B)=-A-B-1 等式3
在獲得如圖4所述的用于整數(shù)加法的補償邏輯140a的至少一個實施例中,等式3是有用的。為了提供反相的結(jié)果(即~(A+B))以作為到存儲進位加法器410的輸入,反相器440對從ALU 130輸出的結(jié)果(即A+B)進行反相。于是,反相器440將A+B之和的第一種表示轉(zhuǎn)換為所述和的第二種表示,所述第二表示為~(A+B)。
本領(lǐng)域技術(shù)人員將會認識到存儲進位加法器比帶進位傳播的加法器需要更少的硬件和更少的執(zhí)行時間,因而導致它對于軟錯誤檢測要比與ALU130相關(guān)聯(lián)的諸如CPA(未示出)的冗余帶進位傳播的加法器更是人們所希望的。存儲進位加法器410典型地取三個輸入并提供兩個輸出和值與進位值。
除了反相器440所提供的~(A+B)值,CSA加法器410被配置為接收A和B(到ALU130的輸入)作為輸入。輸入的這種配置是以下列觀測報告為基礎(chǔ)的。
如果CSA410將A和B以及反相器440所提供的~(A+B)值相加,它將要計算(A)+(B)+(-A-B-1)=x。消掉互補項得出 因此,無論A和B的值是什么,將A、B和~(A+B)相加的CSA的輸出應(yīng)該反映為表示-1的進位與和值。因此,對于至少一個實施例,補償邏輯140a被實現(xiàn)為接收A、B和~(A+B)作為輸入的的存儲進位加法器410,其中A和B是到ALU130的輸入,而~(A+B)是來自ALU130的反相輸出值。在每一情況下,期望CSA410的進位與和輸出中的結(jié)果都表示為-1。
圖5是說明用于整數(shù)減法的補償邏輯140b和驗證邏輯150b實施例的方框圖。圖5中所述的補償邏輯140和驗證邏輯150都是以下列關(guān)于二進制補碼有符號整數(shù)減法的觀測報告為基礎(chǔ)的。(本領(lǐng)域技術(shù)人員將會認識到補償邏輯140和驗證邏輯150也能為無符號整數(shù)減法作正確運算)。
如果A和B是到ALU130的兩個輸入,則ALU130基于減法運算的輸出表示為A-B。另外,我們能夠使用等式2得到A的反相值A(chǔ)=-A-1。通過對A值進行反相,可為CSA410提供A的第二種表示(也就是~A)。
圖5說明A的反相值(如反相器540所提供的)連同B和ALU130的結(jié)果(即A-B)都提供給CSA410作為輸入。將~A、B和減法運算的輸出(即A-B)相加,我們得到(-A-1)+B+(A-B)=x。消掉互補項得出 因此,對于至少一個實施例,補償邏輯140b被實現(xiàn)為接收~A、B和(A-B)作為輸入的的存儲進位加法器410,其中A和B都是到ALU130的輸入,~A是A值的反相,而(A-B)是來自ALU130的輸出值。對于所有A和B的值,都期望將CSA410的進位與和輸出中的結(jié)果表示為-1。
圖4進一步說明用于整數(shù)加法的驗證邏輯150a,而圖5進一步說明用于整數(shù)減法的驗證邏輯150b。圖4和圖5說明驗證邏輯分別包括有相對廉價的XOR和AND邏輯元件420和430(對于至少一個實施例,所述驗證邏輯對加和減法而言都是一樣的,這是由于它們都具有所期望的輸入值-1)。為了確定CSA的輸出是否表示為值-1,這些元件420和430都被配置為可以對CSA410的進位與和輸出進行運算。這些元件420和430將結(jié)合圖7在下面作更加詳細地論述。
圖6是說明被配置成用于為整數(shù)的加法和減法執(zhí)行減少硬件的軟錯誤檢測的設(shè)備方框圖。從圖4和圖5來分析,其中圖4代表用于整數(shù)加法的軟錯誤檢測,而圖5代表用于整數(shù)減法的軟錯誤檢測,可以得出下列觀測報告。對于加法而言,ALU130的輸出被反相,并且反相結(jié)果被作為輸入提供給CSA410。與之相反,對于減法而言,所述ALU輸出被提供給CSA410而不反相。然而,在把輸入到用于減法運算的ALU130的A提供給CSA410作為輸入之前,先對其進行反相。因此,需要有條件的反相運算。也就是說,當所期望的運算為減法時,則必須將輸入A進行反相,反之,當所期望的運算為加法時,則必須將ALU130的輸出(也就是A+B)進行反相。
圖6說明實現(xiàn)有條件反相的至少一個實施例。有條件反相可借助于兩個按位XOR門610a和610b來實現(xiàn)。向第一個XOR門610a提供一個控制信號,該控制信號表明加法運算已被請求來生成當前ALU輸出值。假定該加法控制信號具有表明已請求加法運算的邏輯高的值,條件反相將根據(jù)下列真值表來發(fā)生
表3
上述表3的陰影單元表明當ADD信號具有邏輯高的值時,發(fā)生原始值A(chǔ)+B的反相。
圖6進一步說明了第二個XOR門610b為減法運算執(zhí)行類似的有條件反相。向第二個XOR門610b提供一個控制信號,該控制信號表明已請求減法運算來生成當前ALU輸出值。假定該減法控制信號具有表明已請求減法運算的邏輯高的值,到ALU130的輸入A的有條件反相將根據(jù)下列真值表來發(fā)生表4
上述表4的陰影單元表明當SUB信號具有邏輯高的值時,發(fā)生原始值A(chǔ)的反相。
當然,本領(lǐng)域技術(shù)人員將會認識到能夠應(yīng)用替換邏輯來提供與上面所述的有條件反相同樣的功能。例如,在一些情況下,ADD/SUB控制信號是到ALU的單個輸入,而不是兩條獨立的控制線路。本領(lǐng)域技術(shù)人員將會認識到通過單個控制信號使用兩個XOR門610a和610b,使用單個反相器就可實現(xiàn)上述的有條件反相邏輯。而且,本領(lǐng)域技術(shù)人員還將會認識到可以用通過門(pass gate)代替XOR門610a和610b,來獲得相同的結(jié)果。
圖4、5和6中每一個都公開了如下的軟錯誤檢測實施例,如果未檢測到軟錯誤,那么它就分別產(chǎn)生值-1作為補償邏輯140a、140b和140c的結(jié)果。每個相關(guān)聯(lián)的驗證邏輯150a、150b和150c都分別檢測補償值是不是-1。每個驗證邏輯150a、150b和150c照同樣的方式檢測是否為-1,正如就要在下面描述的那樣。
在圖4、5和6所公開的實施例中,為了判定來自CSA加法器410的進位與和輸出是否等于值-1,驗證邏輯150a、150b和150c各自都不包括帶進位傳播的加法器。雖然CSA是全加器,所述全加器采取相對少的硬件來實現(xiàn),但是帶進位傳播的加法器是更為復(fù)雜的硬件元件,而所公開的實施例的目標就是避免所述帶進位傳播的加法器的重復(fù)。為了避免在驗證邏輯150a、150b和150c中使用CPA,利用下列觀測報告如果X、Y和Z均為輸入到存儲進位加法器的整數(shù),而且S和C是所述存儲進位加法器的和與進位輸出,并且如果S+C=-1,那么(S XOR C)=-1。
也就是說,當S+C=-1時,S XOR C等于-1的二進制補碼表示。本領(lǐng)域技術(shù)人員將會認識到-1的二進制補碼表示在每一位位置種包含1b‘1’的二進制值(例如,參看表1和2)。
圖7進一步詳細說明了驗證邏輯150a、150b和150c。所述驗證邏輯對CSA加法器410的和與進位輸出執(zhí)行統(tǒng)一運算,并且判定結(jié)果值(這里稱作驗證結(jié)果值)是否等于預(yù)定驗證值-1。圖7說明統(tǒng)一運算是通過將來自CSA 410的進位輸出720的每一位與來自CSA 410的和輸出710的對應(yīng)位進行XOR操作來完成的。圖7說明為了判定由XOR邏輯420產(chǎn)生的驗證結(jié)果值是否在每一位位置中都包括1b‘1’,將來自XOR門730a至730x的輸出提供給AND門430。如果來自AND門430的輸出為真,那么S XOR C=-1,并且未檢測到軟錯誤。
如果來自AND門430的輸出不為真,那么就可能已經(jīng)發(fā)生了幾種錯誤狀態(tài)中的一種。軟錯誤可能已經(jīng)在ALU130、補償邏輯140或驗證邏輯150中發(fā)生?;蛘?,可能已經(jīng)檢測到ALU硬件130中的硬件設(shè)計錯誤。為了報告和/或糾正錯誤狀態(tài)而對來自AND門430的輸出進行處理,可以用任何可行方式來實現(xiàn)。對于至少一個實施例,作為AND門430輸出而產(chǎn)生的錯誤指示被提供給退出邏輯120(圖1)。
雖然沒有特別在圖1至7中加以繪制,但在所公開實施例中可使用鎖存器來鎖存希望的值。例如,可以使用鎖存器來鎖存提供給ALU130和驗證邏輯140作為輸入的A和B值。此外,可以鎖存來自ALU130的輸出,所述輸出可以是在上面結(jié)合圖6所述的來自XOR門610a、610b的輸出。
本領(lǐng)域技術(shù)人員將會認識到在不脫離下面權(quán)利要求的實質(zhì)和范圍的情況下,可以在上述軟錯誤檢測實施例中作出多種變形。
例如,圖8說明為了減少延遲,可以在計算邏輯140d中實現(xiàn)附加的硬件元件820。也就是說,圖8說明A和B是到ALU130的輸入。ALU130的輸出是A+B,所述輸出是到第二個存儲進位加法器820的輸入。作為到第一個存儲進位加法器的輸入,~A經(jīng)由反相器840獲得,而~B經(jīng)由反相器850獲得。~A和~B都被作為輸入提供給第一CSA 810。以二進制補碼格式表示的常數(shù)值1被作為第三輸入提供給第一CSA810。
第一CSA810將~A、~B和1相加。按照上面的等式2,A的求反值為-A-1,并且按照上面的等式2,B的求反值為-B-1。在對~A、~B和1進行相加時,第一CSA810計算和與進位值-A-1-B-1+1=-A-1-B。為了避免過度延遲,在ALU130計算A+B的同時,就可以完成第一CSA810的計算。
第一CSA810所生成的和與進位值連同來自ALU130的輸出(A+B)一起被提供給第二CSA820。第二CSA820計算-A-1-B+A+B,得出-1。因此,對于所有輸入A和B,期望所述計算邏輯140d的結(jié)果將產(chǎn)生預(yù)定驗證值-1。
圖9表示用于整數(shù)加法的補償邏輯140e的又一替換實施例。在圖9所示的補償邏輯140e實施例中,A和B的反相值被提供給CSA910。從而將-A-1和-B-1提供給CSA910。此外,來自ALU的整數(shù)加法運算的結(jié)果還被提供給CSA910作為輸入。也就是說,ALU130將A+B作為輸入提供給CSA910。因此,當消掉互補項時,CSA910計算-A-1-B-1+A+B得出-2。此實施例需要驗證邏輯通過任何可靠的方法來判定補償邏輯140e是否已生成所期望的預(yù)定驗證值-2。
由此,在無冗余算術(shù)硬件(諸如ALU中的帶進位傳播的加法器等)的組合邏輯中提供了一種用來檢測軟錯誤的系統(tǒng)與方法。用于整數(shù)加法和減法的非冗余軟錯誤檢測的具體實施例已經(jīng)被提供。在每個情況下,都提供了補償邏輯和驗證邏輯,而不是提供冗余ALU和比較邏輯。在一個公開實施例中,在無冗余的帶進位傳播的加法器的情況下,執(zhí)行用于整數(shù)加法的軟錯誤檢測。在另一公開實施例中,同樣是在無冗余帶進位傳播的加法器的情況下,執(zhí)行用于整數(shù)減法的軟錯誤檢測。在又一公開實施例中,在XOR門被用來為A與ALU輸出執(zhí)行有條件反相的情況下,執(zhí)行用于整數(shù)加法和減法的軟錯誤檢測。在每個軟錯誤檢測系統(tǒng)的實施例中,ALU與補償邏輯和驗證邏輯一起被提供。對于整數(shù)加法,補償與驗證邏輯的至少一個實施例判定A、B及~(A+B)的和(其中A+B由ALU130來計算)是否等于-1。對于整數(shù)減法,補償與驗證邏輯的至少一個實施例判定A的反相值與B和(A-B)的和是否等于-1。
雖然已經(jīng)示出并描述了本發(fā)明的特定實施例,但是對本領(lǐng)域的那些技術(shù)人員而言將顯而易見的是在不脫離本發(fā)明在其廣泛方面的情況下,能夠作出改變與修改。所附權(quán)利要求在其范圍之內(nèi)涵蓋了所有這種落入本發(fā)明的真實保護范圍內(nèi)的改變與修改。
權(quán)利要求
1.一種方法,包括使用第一整數(shù)操作數(shù)和第二整數(shù)操作數(shù)來執(zhí)行算術(shù)運算,以產(chǎn)生整數(shù)結(jié)果;依據(jù)第一整數(shù)操作數(shù)、第二整數(shù)操作數(shù)及整數(shù)結(jié)果來執(zhí)行非冗余補償,以產(chǎn)生補償結(jié)果;以及驗證補償結(jié)果以判定是否存在有錯誤狀態(tài)。
2.如權(quán)利要求1所述的方法,其中驗證補償結(jié)果以判定是否存在有錯誤狀態(tài)的步驟包括判定補償結(jié)果是否等于預(yù)定驗證值。
3.如權(quán)利要求2所述的方法,其中所述預(yù)定驗證值為-1。
4.如權(quán)利要求1所述的方法,其中所述補償結(jié)果包括一和值和一進位值。
5.如權(quán)利要求1所述的方法,其中所述算術(shù)運算是加法。
6.如權(quán)利要求5所述的方法,其中執(zhí)行非冗余補償?shù)牟襟E進一步包括將整數(shù)結(jié)果進行反相以生成反相的整數(shù)結(jié)果;和對所述反相的整數(shù)結(jié)果、第一整數(shù)操作數(shù)和第二整數(shù)操作數(shù)進行求和,以生成補償結(jié)果。
7.如權(quán)利要求4所述的方法,其中驗證補償結(jié)果以判定是否存在有錯誤狀態(tài)的步驟進一步包括執(zhí)行和值與進位值的統(tǒng)一運算,以產(chǎn)生一個驗證結(jié)果值;和判定所述驗證結(jié)果值是否等于預(yù)定驗證值。
8.如權(quán)利要求7所述的方法,其中,所述預(yù)定驗證值為-1。
9.如權(quán)利要求1所述的方法,其中,所述算術(shù)運算為減法。
10.如權(quán)利要求9所述的方法,其中,執(zhí)行非冗余補償?shù)牟襟E進一步包括將第一整數(shù)操作數(shù)進行反相,以產(chǎn)生反相的操作數(shù);和對所述反相的操作數(shù)、第二整數(shù)操作數(shù)和整數(shù)結(jié)果進行求和,以生成補償值。
11.如權(quán)利要求1所述的方法,其中,執(zhí)行非冗余補償?shù)牟襟E進一步包括如果指示是減法運算,則對第一整數(shù)操作數(shù)進行有條件反相以產(chǎn)生反相的減法操作數(shù);如果指示是加法運算,則對整數(shù)結(jié)果進行有條件反相以產(chǎn)生反相的加法結(jié)果,所述整數(shù)結(jié)果是第一整數(shù)操作數(shù)與第二整數(shù)操作數(shù)之和;如果指示是加法運算,則對所述反相的加法結(jié)果、第一整數(shù)操作數(shù)和第二操作數(shù)進行求和;和如果指示是減法運算,則對所述反相的減法操作數(shù)、第二整數(shù)操作數(shù)和整數(shù)結(jié)果進行求和以生成補償結(jié)果,所述減法結(jié)果是第一整數(shù)操作數(shù)與第二整數(shù)操作數(shù)之差。
12.一種處理器,包括用于生成輸出值的算術(shù)邏輯部件;用于以所述輸出值為基礎(chǔ)生成補償結(jié)果的補償邏輯;和用于判定所述補償結(jié)果是否等于預(yù)定驗證值的驗證邏輯。
13.如權(quán)利要求12所述的處理器,其中,所述補償結(jié)果包括一和值與一進位值。
14.如權(quán)利要求13所述的處理器,其中,所述驗證邏輯進一步包括用于對所述和值與進位值執(zhí)行統(tǒng)一運算以得出驗證結(jié)果值的邏輯;和用于判定所述驗證結(jié)果是否等于預(yù)定驗證值的邏輯。
15.如權(quán)利要求14所述的處理器,其中,所述預(yù)定驗證值為-1。
16.如權(quán)利要求12所述的處理器,其中,所述補償邏輯包括用于將第一整數(shù)操作數(shù)反相以產(chǎn)生反相的操作數(shù)的邏輯;和用于對所述反相的操作數(shù)、第二整數(shù)操作數(shù)和輸出值進行求和以生成補償結(jié)果的邏輯,所述輸出值表示減法的結(jié)果。
17.如權(quán)利要求12所述的處理器,其中,所述補償邏輯包括用于將輸出值進行反相以產(chǎn)生反相的加法結(jié)果的邏輯,所述輸出值表示第一整數(shù)操作數(shù)與第二整數(shù)操作數(shù)之和;和用于對第一整數(shù)操作數(shù)、第二整數(shù)操作數(shù)和反相的加法結(jié)果進行求和以生成補償結(jié)果的邏輯。
18.如權(quán)利要求12所述的處理器,其中,所述預(yù)定驗證值為-1。
19.如權(quán)利要求12所述的處理器,其中,所述補償邏輯包括如果指示是減法運算則對第一整數(shù)操作數(shù)進行有條件反相以產(chǎn)生反相的減法操作數(shù)的邏輯;如果指示是加法運算則對輸出值進行有條件反相以產(chǎn)生反相的加法結(jié)果的邏輯,所述輸出值表示第一整數(shù)操作數(shù)與第二整數(shù)操作數(shù)之和;如果指示是加法運算則對所述反相的加法結(jié)果、第一整數(shù)操作數(shù)和第二整數(shù)操作數(shù)進行求和的邏輯;和如果指示是減法運算則對所述反相的減法操作數(shù)、第二整數(shù)操作數(shù)和輸出值進行求和以生成補償結(jié)果的邏輯,所述輸出值表示第一整數(shù)操作數(shù)與第二整數(shù)操作數(shù)之差。
20.一種設(shè)備,包括算術(shù)邏輯,所述算術(shù)邏輯部件接收第一整數(shù)操作數(shù)和第二整數(shù)操作數(shù),并生成整數(shù)結(jié)果;用于以所述整數(shù)結(jié)果為基礎(chǔ)生成補償結(jié)果的裝置;和用于判定所述補償結(jié)果是否等于預(yù)定驗證值的裝置。
21.如權(quán)利要求20所述的設(shè)備,其中,所述預(yù)定驗證值為-1。
22.如權(quán)利要求20所述的設(shè)備,其中,所述補償結(jié)果包括一和值和一進位值。
23.如權(quán)利要求22所述的設(shè)備,其中,所述驗證邏輯包括用于以所述和值與進位值為基礎(chǔ)提供驗證結(jié)果值的裝置;和用于判定所述驗證結(jié)果是否等于預(yù)定驗證值的裝置。
24.如權(quán)利要求23所述的設(shè)備,其中,所述預(yù)定驗證值為-1。
25.如權(quán)利要求20所述的設(shè)備,其中,用于生成補償結(jié)果的裝置進一步包括用于對第一整數(shù)操作數(shù)、第二操作數(shù)與整數(shù)結(jié)果的反碼進行求和以生成補償結(jié)果的裝置,所述整數(shù)結(jié)果表示第一操作數(shù)與第二操作數(shù)之和。
26.如權(quán)利要求20所述的設(shè)備,其中,用于生成補償結(jié)果的裝置進一步包括用于對整數(shù)結(jié)果、第二整數(shù)操作數(shù)和第一整數(shù)操作數(shù)的反碼進行求和以生成補償結(jié)果的裝置,所述整數(shù)結(jié)果表示第一與第二整數(shù)操作數(shù)之差。
27.如權(quán)利要求20所述的設(shè)備,其中,用于生成補償結(jié)果的裝置進一步包括用于在指示是減法運算的情況下對第一整數(shù)操作數(shù)進行有條件反相以產(chǎn)生反相的減法操作數(shù)的裝置;用于在指示是加法運算的情況下對整數(shù)結(jié)果進行有條件反相以產(chǎn)生反相的加法結(jié)果的裝置,所述整數(shù)結(jié)果是第一整數(shù)操作數(shù)與第二整數(shù)操作數(shù)之和。用于在指示是加法運算的情況下對所述反相的加法結(jié)果、第一整數(shù)操作數(shù)和第二操作數(shù)進行求和的裝置;和用于在指示是減法運算的情況下對所述反相的減法結(jié)果、第二整數(shù)操作數(shù)和整數(shù)結(jié)果進行求和以生成補償結(jié)果的裝置,所述整數(shù)結(jié)果表示第一整數(shù)操作數(shù)與第二整數(shù)操作數(shù)之差。
28.一種方法,包括對第一整數(shù)操作數(shù)和第二整數(shù)操作數(shù)執(zhí)行加法運算,以產(chǎn)生整數(shù)結(jié)果的第一種表示;將整數(shù)結(jié)果的第一種表示反相成為所述整數(shù)結(jié)果的第二種表示;以第一整數(shù)操作數(shù)、第二整數(shù)操作數(shù)和整數(shù)結(jié)果的第二種表示為基礎(chǔ)執(zhí)行非冗余補償,以產(chǎn)生補償結(jié)果;和驗證所述補償結(jié)果,以判定是否存在有錯誤狀態(tài)。
29.如權(quán)利要求1所述的方法,其中驗證補償結(jié)果以判定是否存在有錯誤狀態(tài)的步驟包括判定補償結(jié)果是否等于預(yù)定驗證值。
30.如權(quán)利要求2所述的方法,其中,所述預(yù)定驗證值為-1。
31.如權(quán)利要求1所述的方法,其中所述補償結(jié)果包括一和值和一進位值。
32.一種方法,包括對第一整數(shù)操作數(shù)和第二整數(shù)操作數(shù)的第一種表示執(zhí)行減法運算,以產(chǎn)生整數(shù)結(jié)果;將第二整數(shù)操作數(shù)的第一種表示反相成為第二整數(shù)操作數(shù)的第二種表示;以第一整數(shù)操作數(shù)、整數(shù)操作數(shù)的第二種表示和整數(shù)結(jié)果為基礎(chǔ)執(zhí)行非冗余的補償,以產(chǎn)生補償結(jié)果;和驗證補償結(jié)果,以判定是否存在有錯誤狀態(tài)。
33.如權(quán)利要求1所述的方法,其中驗證補償結(jié)果以判定是否存在有錯誤狀態(tài)的步驟包括判定補償結(jié)果是否等于預(yù)定驗證值。
34.如權(quán)利要求2所述的方法,其中,所述預(yù)定驗證值為-1。
35.如權(quán)利要求1所述的方法,其中所述補償結(jié)果包括一和值和一進位值。
全文摘要
提供一種用來在不使用冗余邏輯的情況下為整數(shù)加法和減法運算執(zhí)行軟錯誤檢測方法和系統(tǒng)。對于整數(shù)加法和減法,補償邏輯利用算術(shù)邏輯部件(ALU)結(jié)果和操作數(shù)來產(chǎn)生補償值。所述補償值由驗證邏輯相對于預(yù)定值進行驗證,以便判定是否已發(fā)生軟錯誤。在無冗余的帶進位傳播的硬件的情況下,這種補償邏輯和驗證邏輯對整數(shù)操作數(shù)和由ALU產(chǎn)生的結(jié)果進行運算。
文檔編號G06F11/14GK1609813SQ20031011960
公開日2005年4月27日 申請日期2003年10月24日 優(yōu)先權(quán)日2003年10月24日
發(fā)明者S·馬基內(nèi)尼, G·B·多施 申請人:英特爾公司