專利名稱:用于從在寄存器文件中的軟錯誤中恢復(fù)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本公開屬于數(shù)據(jù)處理裝置領(lǐng)域,并且更具體地屬于數(shù)據(jù)處理裝置中的錯誤檢測和糾正領(lǐng)域。
背景技術(shù):
因?yàn)榧呻娐分圃旒夹g(shù)的進(jìn)步繼續(xù)在微處理器和其它數(shù)據(jù)處理裝置中提供更小的尺寸和更低的工作電壓,所以這些設(shè)備的制造者和用戶正變得越來越關(guān)心軟錯誤現(xiàn)象。與來自設(shè)計和制造缺陷的硬錯誤相對,軟錯誤在阿爾法粒子和高能中子撞擊集成電路并改變存儲在電路節(jié)點(diǎn)上的電荷時產(chǎn)生。如果所述電荷改變足夠大,則節(jié)點(diǎn)上的電壓就可以從代表一個邏輯狀態(tài)的電平被改變?yōu)榇硪粋€不同邏輯狀態(tài)的電平,這樣存儲在該節(jié)點(diǎn)上的信息就被破壞。通常,軟錯誤率隨著電路尺寸的減小而增加,因?yàn)樽矒舻牧W訉⒚须妷汗?jié)點(diǎn)的可能性在電路密度增加時增加。同樣,因?yàn)楣ぷ麟妷簻p小,所以代表不同邏輯狀態(tài)的電壓電平之間的差別也減小,因此,改變在電路節(jié)點(diǎn)上的邏輯狀態(tài)所需的能量更少,并且產(chǎn)生更多的軟錯誤。
阻擋引起軟錯誤的粒子極其困難,因此,數(shù)據(jù)處理裝置通常包括用于檢測軟錯誤以及有時用于糾正軟錯誤的機(jī)構(gòu)。典型地,這些機(jī)構(gòu)集中于通過使用硬件產(chǎn)生并校驗(yàn)(check)相應(yīng)于在存儲元件中存儲的數(shù)據(jù)的奇偶校驗(yàn)位和糾錯碼(ECC)值來保護(hù)存儲元件,例如系統(tǒng)存儲器和高速緩沖存儲器。例如,自動的內(nèi)嵌的(in-line)錯誤糾正可以通過在存儲元件和數(shù)據(jù)處理器的執(zhí)行單元之間插入硬件來完成,以產(chǎn)生指示任何單個數(shù)據(jù)位是否已被破壞的“校正子(syndrome)”,以及反轉(zhuǎn)(invert)任何上述所破壞的位的值??蛇x地,通過檢查錯誤并將正確的數(shù)據(jù)重寫入任何已被破壞的存儲器位置,存儲元件可以自動地或周期性地被“刷洗(scrub)”。
較不普遍地,由于附加電路所需要的相對較高的成本,可以使用冗余硬件方案來保護(hù)數(shù)據(jù)處理裝置的執(zhí)行核心以免軟錯誤。一種較不昂貴但較不完全的方法是在執(zhí)行核心的寄存器文件中增加奇偶校驗(yàn)位來提供對寄存器文件中的軟錯誤的檢測。然而,上面討論的內(nèi)嵌的錯誤糾正和刷洗技術(shù)通常并不被用于寄存器文件,因?yàn)樗鼈儗⒔档托阅芑蛘咴黾舆壿嫷膹?fù)雜性,內(nèi)嵌的錯誤糾正是通過將一個或多個階段添加至在寄存器讀取和執(zhí)行階段之間的執(zhí)行流水線,以及刷洗是通過將重放循環(huán)引入執(zhí)行流水線的關(guān)鍵路徑或者通過使用其它有用的時鐘周期來執(zhí)行刷洗。因此,數(shù)據(jù)處理裝置通常不能自動地從寄存器文件中的軟錯誤中恢復(fù),所以寄存器文件的尺寸增加導(dǎo)致更多的停機(jī)時間和服務(wù)調(diào)用,從而減少了可用性并增加了使用設(shè)備的成本。
本發(fā)明通過例子來說明并且不局限于附圖。
圖1說明實(shí)現(xiàn)用于從寄存器文件中的軟錯誤中恢復(fù)的技術(shù)的處理器。
圖2說明根據(jù)本發(fā)明的一個實(shí)施例的ECC方案。
圖3說明根據(jù)本發(fā)明的一個實(shí)施例的寄存器文件。
圖4說明實(shí)現(xiàn)用于從寄存器文件中的軟錯誤中恢復(fù)的技術(shù)的系統(tǒng)。
圖5說明在實(shí)現(xiàn)用于從寄存器文件中的軟錯誤中恢復(fù)的技術(shù)的處理器中執(zhí)行流水線的實(shí)施例。
圖6說明用于從寄存器文件中的軟錯誤中恢復(fù)的方法的實(shí)施例。
具體實(shí)施例方式
下面的描述說明了用于從寄存器文件中的軟錯誤中恢復(fù)的技術(shù)的實(shí)施例。在下面的描述中,大量的特定細(xì)節(jié)(例如處理器和系統(tǒng)配置、寄存器安排和ECC方案)被闡明以便提供對本發(fā)明更徹底的理解。然而,可以理解,本領(lǐng)域的普通技術(shù)人員在沒有這樣的特定細(xì)節(jié)的情況下也可以實(shí)施本發(fā)明。另外,一些公知的結(jié)構(gòu)、電路等沒有詳細(xì)示出,以免不必要地模糊本發(fā)明。
圖1說明實(shí)現(xiàn)用于從寄存器文件中的軟錯誤中恢復(fù)的技術(shù)的處理器100。所述處理器可以是包含寄存器文件的各種不同類型的處理器中的任何一種。例如,所述處理器可以是通用處理器,例如在Pentium處理器家族、Itanium處理器家族或來自英特爾公司的其它處理器家族中的處理器,或者來自另一公司的另一處理器。
在圖1的實(shí)施例中,處理器100包括數(shù)據(jù)通路110,其具有寄存器文件120、執(zhí)行單元130、ECC校驗(yàn)單元131、異常寄存器132、異常單元140和ECC產(chǎn)生單元141。寄存器文件120包括多個物理寄存器。單個物理寄存器可以相應(yīng)于或者有效地用作在不使用寄存器重命名技術(shù)的實(shí)施例中的體系結(jié)構(gòu)寄存器。在使用寄存器重命名技術(shù)的實(shí)施例中,不同的物理寄存器可以在不同的時間點(diǎn)保存體系結(jié)構(gòu)寄存器的值。
執(zhí)行單元130響應(yīng)于控制信號151對來自源總線121和122的數(shù)據(jù)進(jìn)行操作。例如,執(zhí)行單元130可以是移位器、算術(shù)邏輯單元、浮點(diǎn)單元、多媒體單元或任何能夠?qū)?shù)據(jù)執(zhí)行任何操作的單元或單元的組合,其中數(shù)據(jù)可以是任何類型的信息,包括由二進(jìn)制數(shù)字或以任何其它形式表示的指令。處理器100可以包括任何數(shù)量的執(zhí)行單元,每個執(zhí)行單元能夠?qū)?shù)據(jù)執(zhí)行任何一個或多個操作。控制信號151由控制邏輯150產(chǎn)生,以發(fā)出(issue)存儲在指令隊列160中的一個指令??刂七壿?50可以使用任何公知的技術(shù)來實(shí)現(xiàn),例如微編碼。指令隊列160可以用來自指令高速緩沖存儲器170的指令來裝載。
異常單元140檢查由執(zhí)行單元130執(zhí)行的操作結(jié)果的錯誤,例如算術(shù)溢出。如果檢測到錯誤,則在提交結(jié)果給體系結(jié)構(gòu)寄存器之前修改指令執(zhí)行的正常流程。
根據(jù)任何公知的技術(shù),由ECC產(chǎn)生單元141產(chǎn)生對應(yīng)于執(zhí)行單元130所執(zhí)行的操作的結(jié)果的一個ECC值。例如,其中操作結(jié)果是由1和0表示的64位數(shù)據(jù)值,一個8位的ECC值根據(jù)圖2中所說明的方案被產(chǎn)生。在圖2的方案中,ECC位210(0)至210(7)中每個的值通過對數(shù)據(jù)位220(0)至220(63)的唯一的一半計算奇偶而產(chǎn)生。例如,如果在數(shù)據(jù)位220(32)至220(63)中1的數(shù)目為奇數(shù),則ECC位210(7)的值被設(shè)置為1。
ECC產(chǎn)生單元141可被執(zhí)行來產(chǎn)生ECC值,該值可以用于檢測在相應(yīng)數(shù)值中的一個或多個位中的錯誤,以及用于糾正那些錯誤的任何子集。在圖2的實(shí)施例中,ECC位210(0)和210(1)提供足夠的信息來檢測所有單位(singlebit)錯誤和鄰近的雙位錯誤,以及全8位ECC值提供足夠的信息來識別任何單位錯誤的位置并因此進(jìn)行糾正,以及檢測額外的雙位錯誤。例如,如果64位數(shù)據(jù)值是“0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00000000 0000 0001”,一個ECC值“0100 0001”將被產(chǎn)生并被存儲。假設(shè)單位錯誤使最低數(shù)據(jù)位從1變?yōu)?。用于破壞的數(shù)據(jù)的ECC值是“0000 0000”,其指示最低數(shù)據(jù)位的值已經(jīng)發(fā)生變化。
在ECC值被產(chǎn)生之后,它和相應(yīng)的數(shù)據(jù)一起被存儲在寄存器文件120中。圖3是根據(jù)操作結(jié)果是64位寬的實(shí)施例對寄存器文件120更詳細(xì)的說明。寄存器文件120包括N個寄存器300(0)至300(N),其中N可為任何整數(shù)。每個寄存器300具有存儲64位數(shù)據(jù)值的數(shù)據(jù)位310以及存儲相應(yīng)的8位ECC值的ECC位320。
從寄存器文件120中讀出的數(shù)據(jù)由ECC校驗(yàn)單元131校驗(yàn)奇偶錯誤。例如,根據(jù)圖2的ECC方案,32個數(shù)據(jù)位的每個或任何子集以及其相應(yīng)的ECC位一起被校驗(yàn)以確定1的數(shù)目是否為偶數(shù)。可選地,一個完整的ECC值可以從讀自寄存器的數(shù)據(jù)產(chǎn)生,并且與讀自寄存器的ECC值進(jìn)行比較。如果檢測到錯誤,則ECC校驗(yàn)單元131指示已經(jīng)檢測到錯誤,例如通過在使用公知的機(jī)器校驗(yàn)體系結(jié)構(gòu)(“MCA”)技術(shù)的實(shí)施例中引發(fā)一個機(jī)器校驗(yàn)異常(“MC”)。此外,ECC校驗(yàn)單元131可以在異常寄存器132(例如機(jī)器專用寄存器(“MSR”))中存儲處理器狀態(tài)信息,例如標(biāo)識數(shù)據(jù)從哪個寄存器被讀出的索引。
如上所述,在本發(fā)明的一個實(shí)施例中,在硬件中提供在寄存器文件中檢測錯誤的能力,并且在處理器專用固件中提供糾正錯誤的能力。把錯誤糾正卸載到固件簡化了硬件支持的要求。例如,圖4說明一個實(shí)現(xiàn)用于從寄存器文件中的軟錯誤中恢復(fù)的技術(shù)的系統(tǒng)400。在圖4的實(shí)施例中,處理器100通過系統(tǒng)邏輯410被連接到非易失存儲器420(例如只讀或閃速存儲器)和動態(tài)存儲器430(例如動態(tài)隨機(jī)存取存儲器)。一個錯誤恢復(fù)例程421被存儲在非易失存儲器420中,并可在動態(tài)存儲器430中形成影像(shadow)。當(dāng)MC被ECC校驗(yàn)單元131觸發(fā)時,指令執(zhí)行的流程被修改,以使錯誤恢復(fù)例程421被執(zhí)行。錯誤恢復(fù)例程421可以包括自動糾正錯誤并使處理器100恢復(fù)執(zhí)行原始指令序列的指令。如果出現(xiàn)不可糾正的錯誤,例如在使用ECC方案的實(shí)施例中的雙位錯誤的情況,其中該ECC方案提供足夠的檢測信息但不糾正雙位錯誤,則錯誤可被標(biāo)記并且可以請求用戶干預(yù)。
圖1、2、3和4一起用于說明本發(fā)明的一個實(shí)施例,該實(shí)施例使用MCA技術(shù)來從寄存器文件中的單位軟錯誤中自動地恢復(fù)。例如,假設(shè)來自執(zhí)行單元130的操作的64位結(jié)果已被存儲在寄存器300(0)中,一同被存儲的還有由ECC產(chǎn)生單元140產(chǎn)生的相應(yīng)ECC值,這時阿爾法粒子撞擊寄存器300(0)的一個節(jié)點(diǎn)并引起在寄存器300(0)中存儲的數(shù)據(jù)中一個單位錯誤。隨后,發(fā)出使用來自寄存器300(0)的數(shù)據(jù)的一個指令。來自寄存器300(0)的數(shù)據(jù)被讀取,并且當(dāng)ECC校驗(yàn)單元131檢測到錯誤時,一個識別源寄存器(該例中是寄存器300(0))的索引被存儲在MSR中,并且MC被觸發(fā)。通過把指令流傳送到錯誤恢復(fù)例程421來處理MC。錯誤恢復(fù)例程421可以包括用于從MSR讀取寄存器索引以及然后從由寄存器索引標(biāo)識的寄存器中重新讀取數(shù)據(jù)和ECC值的指令。在處理原始指令期間從破壞的數(shù)據(jù)中產(chǎn)生的ECC值也可以被存儲在MSR中并從MSR中讀取,或者可以從在錯誤恢復(fù)例程421的控制下從寄存器中重新讀取的破壞的數(shù)據(jù)中被產(chǎn)生。錯誤恢復(fù)例程421可以包括指令,用于比較從破壞的數(shù)據(jù)中產(chǎn)生的ECC值和原始ECC值以識別哪個數(shù)據(jù)位已被破壞??蛇x地,破壞的位可以通過下述來識別,即在原始指令的初始處理期間或者由錯誤恢復(fù)例程421對8個子集的32個數(shù)據(jù)位的每一個加上一個奇偶校驗(yàn)位計算奇偶,并且使用奇偶校驗(yàn)失敗的子集的組合來確定哪個位發(fā)生了變化。錯誤恢復(fù)例程421可以包括指令,用于反轉(zhuǎn)所述位,把正確的數(shù)據(jù)寫回寄存器300(0),把嘗試使用破壞的數(shù)據(jù)的指令重新裝載到指令隊列160中,以及使處理器100恢復(fù)執(zhí)行原始指令序列。
本發(fā)明的實(shí)施例可以包括用于在固件糾錯過程期間避免嵌套錯誤檢測的技術(shù)。例如,ECC校驗(yàn)單元131在錯誤恢復(fù)例程421正被執(zhí)行時可以被禁用??蛇x地,破壞的寄存器的狀態(tài)可以被保存在MSR中,使得錯誤恢復(fù)例程421將不必包括用于重新讀取破壞的數(shù)據(jù)的指令,并且錯誤校驗(yàn)可繼續(xù)在固件糾錯過程期間被執(zhí)行。
雖然本發(fā)明沒有要求,但是公知的流水線技術(shù)可以被實(shí)施在處理器100中來重疊執(zhí)行多個指令。例如,圖5說明處理器100的執(zhí)行流水線500的實(shí)施例。在指令取出階段510,指令隊列160用來自指令高速緩沖存儲器170的指令來裝載。在指令發(fā)出階段520,控制信號151由控制邏輯150產(chǎn)生來發(fā)出存儲在指令隊列160中的一個指令。在寄存器讀取階段530,來自寄存器文件120的數(shù)據(jù)被鎖存到源總線121和122以提供用于將被執(zhí)行的指令的操作數(shù)。在執(zhí)行階段540,執(zhí)行單元130響應(yīng)于控制信號151對來自源總線121和122的數(shù)據(jù)進(jìn)行操作。在檢測階段550,異常單元140檢查來自執(zhí)行單元130的結(jié)果的錯誤。在退出(retire)階段560,操作結(jié)果被寫入寄存器文件120。每個階段可以表示單時鐘周期或者任何部分或多個單時鐘周期,并且任何數(shù)目的每個已描述的階段或者任何其它階段可以在本發(fā)明的范圍內(nèi)被使用。
ECC值校驗(yàn)和產(chǎn)生可以不改變圖5的流水線而被執(zhí)行。ECC校驗(yàn)單元131可以被連接到源總線121和122,以便對來自源總線121和122的數(shù)據(jù)執(zhí)行奇偶校驗(yàn),同時執(zhí)行單元130對數(shù)據(jù)進(jìn)行操作,例如在執(zhí)行階段540,或者可選地在從寄存器文件120讀取數(shù)據(jù)之后與操作結(jié)果被提交給體系結(jié)構(gòu)寄存器之前的任何其它時間。ECC產(chǎn)生單元141可以被連接到執(zhí)行單元130和寄存器文件120,以便對一個操作結(jié)果執(zhí)行ECC值的產(chǎn)生,同時異常單元140檢查結(jié)果的錯誤,例如在檢測階段550,或者可選地在由執(zhí)行單元130產(chǎn)生結(jié)果之后與它被提交給體系結(jié)構(gòu)寄存器之前的任何時間。
圖6是說明用于從寄存器文件中的單位錯誤中自動地恢復(fù)的方法的實(shí)施例的流程圖。在塊610中產(chǎn)生對應(yīng)于第一數(shù)據(jù)值的ECC值。在塊620和630中(它們可以被并行地執(zhí)行),第一數(shù)據(jù)值和ECC值分別被存儲在寄存器文件中。在塊640和650中(它們可以被并行地執(zhí)行),第一數(shù)據(jù)值和ECC值分別從寄存器文件中被讀取。在塊660中,使用第一數(shù)據(jù)值執(zhí)行操作以產(chǎn)生一個第二數(shù)據(jù)值。在塊670中,ECC值用于在第一數(shù)據(jù)值中檢查錯誤。塊660和670可以被并行地執(zhí)行。如果在塊670中沒有檢測到錯誤,那么在塊680中,第二數(shù)據(jù)值被存儲在寄存器文件中。然而,如果在塊670中檢測到錯誤,則在塊671中存儲標(biāo)識從中讀取第一數(shù)據(jù)值的寄存器的索引,并且調(diào)用錯誤恢復(fù)例程。在塊672中,錯誤恢復(fù)例程使用ECC值來識別錯誤。在塊673中,錯誤恢復(fù)例程糾正錯誤,并把糾正的數(shù)據(jù)存儲在從中讀取第一數(shù)據(jù)值的寄存器中,并且該方法返回到塊640。
處理器100或根據(jù)本發(fā)明實(shí)施例設(shè)計的任何其它處理器可以被設(shè)計在從創(chuàng)建到仿真到制造的不同階段中。表示設(shè)計的數(shù)據(jù)可以用多種方式來表示所述設(shè)計。首先,正如在仿真中有用的,硬件可以使用硬件描述語言或者另一功能描述語言來表示。另外地或可選地,具有邏輯和/或晶體管門的電路級模型可以在設(shè)計過程的一些階段被制造。此外,在某個階段的大多數(shù)設(shè)計達(dá)到一個級別(level),在這個級別上它們可以利用表示各種設(shè)備的物理布局的數(shù)據(jù)來建模。在使用傳統(tǒng)的半導(dǎo)體制造技術(shù)的情況下,表示設(shè)備布局模型的數(shù)據(jù)可以是規(guī)定用于制造集成電路的掩模的不同掩模層上存在或不存在各種特征的數(shù)據(jù)。
在設(shè)計的任何表示中,數(shù)據(jù)可以被存儲在任何形式的機(jī)器可讀介質(zhì)中。被調(diào)制或者否則被產(chǎn)生以傳輸這種信息的光或電波、存儲器、或者磁或光的存儲介質(zhì)(例如盤)可以是機(jī)器可讀介質(zhì)。這些介質(zhì)中的任何一種可以“攜帶”或“指示”該設(shè)計或者其它在本發(fā)明實(shí)施例中使用的信息,例如錯誤恢復(fù)例程中的指令。當(dāng)指示或攜帶信息的電載波被傳輸至拷貝、緩沖或重新傳輸電信號被執(zhí)行的程度時,一個新的拷貝被生成。因此,通信提供者或網(wǎng)絡(luò)提供者的動作可產(chǎn)生物品(article)的拷貝,例如載波,從而實(shí)現(xiàn)本發(fā)明的技術(shù)。
因此,公開了用于從寄存器文件中的軟錯誤中恢復(fù)的技術(shù)。盡管特定的實(shí)施例已被描述并且在附圖中示出,但是應(yīng)該理解,這樣的實(shí)施例僅僅說明而非限制本發(fā)明的主要方面,并且由于本領(lǐng)域普通技術(shù)人員在學(xué)習(xí)了此公開后可以想到各種其它修改,所以本發(fā)明不限于所示出和描述的特定的結(jié)構(gòu)和安排。在諸如此的技術(shù)領(lǐng)域中,其中發(fā)展很快并且不容易預(yù)見進(jìn)一步的發(fā)展,所公開的實(shí)施例在安排和細(xì)節(jié)上可以容易地進(jìn)行修改以便于實(shí)現(xiàn)技術(shù)進(jìn)步,而不脫離本公開的原理或所附權(quán)利要求書的范圍。
權(quán)利要求
1.一種裝置,包括多個寄存器,每個寄存器具有存儲數(shù)據(jù)的第一數(shù)目的位和對第一數(shù)目的位存儲多個糾錯碼值之一的第二數(shù)目的位;以及產(chǎn)生邏輯,用于產(chǎn)生多個糾錯碼值。
2.權(quán)利要求1所述的裝置,其中糾錯碼是單位糾錯碼。
3.權(quán)利要求2所述的裝置,其中第二數(shù)目的位還用于對第一數(shù)目的位存儲多個雙位檢錯碼值之一;以及產(chǎn)生邏輯還用于產(chǎn)生多個雙位檢錯碼值。
4.權(quán)利要求1所述的裝置,進(jìn)一步包括校驗(yàn)邏輯,用于校驗(yàn)第一數(shù)目的位和第二數(shù)目的位的錯誤。
5.權(quán)利要求1所述的裝置,進(jìn)一步包括執(zhí)行單元,用于對數(shù)據(jù)進(jìn)行操作,并產(chǎn)生結(jié)果數(shù)據(jù)以存儲在所述多個寄存器之一中。
6.權(quán)利要求5所述的裝置,進(jìn)一步包括校驗(yàn)邏輯,用于在結(jié)果數(shù)據(jù)被存儲在所述多個寄存器之一中之前校驗(yàn)第一數(shù)目的位和第二數(shù)目的位的錯誤。
7.權(quán)利要求1所述的裝置,其中產(chǎn)生邏輯用于在數(shù)據(jù)被存儲在所述多個寄存器之一中之前對數(shù)據(jù)產(chǎn)生多個糾錯碼值之一。
8.權(quán)利要求4所述的裝置,其中校驗(yàn)邏輯還用于通過引發(fā)一個異常來響應(yīng)錯誤檢測。
9.權(quán)利要求4所述的裝置,其中校驗(yàn)邏輯還用于通過引發(fā)一個異常來響應(yīng)錯誤檢測以將裝置的控制傳遞到固件來糾正錯誤。
10.一種裝置,包括一個處理器,具有多個寄存器,每個寄存器具有存儲數(shù)據(jù)的第一數(shù)目的位和對第一數(shù)目的位存儲多個糾錯碼值之一的第二數(shù)目的位;產(chǎn)生邏輯,用于在第一數(shù)目的位和第二數(shù)目的位被存儲在所述多個寄存器之一中之前產(chǎn)生多個糾錯碼值;以及校驗(yàn)邏輯,用于在第一數(shù)目的位和第二數(shù)目的位從所述多個寄存器之一中被讀取之后校驗(yàn)第一數(shù)目的位和第二數(shù)目的位的錯誤,以及用于通過引發(fā)一個異常來響應(yīng)錯誤檢測;耦合到該處理器的一個非易失存儲器,用于存儲指令,所述指令在響應(yīng)于所引發(fā)的異常而被處理器執(zhí)行時,使裝置糾正錯誤并把糾正的數(shù)據(jù)存儲在所述多個寄存器之一中;以及耦合到該處理器的一個動態(tài)隨機(jī)存取存儲器。
11.權(quán)利要求10所述的裝置,進(jìn)一步包括一個異常寄存器,用于存儲所述多個寄存器之一的標(biāo)識符。
12.權(quán)利要求11所述的裝置,其中非易失存儲器還用于存儲指令,所述指令在響應(yīng)于所引發(fā)的異常而被處理器執(zhí)行時,使處理器從所述多個寄存器之一中重新讀取第一數(shù)目的位。
13.權(quán)利要求12所述的裝置,其中非易失存儲器還用于存儲指令,所述指令在響應(yīng)于所引發(fā)的異常而被處理器執(zhí)行時,在處理器從所述多個寄存器之一重新讀取第一數(shù)目的位之前禁用校驗(yàn)邏輯。
14.權(quán)利要求10所述的裝置,進(jìn)一步包括一個異常寄存器,用于存儲從所述多個寄存器之一讀取的第一數(shù)目的位。
15.一種方法,包括執(zhí)行第一操作以產(chǎn)生第一數(shù)據(jù)值;在存儲第一數(shù)據(jù)值之前,產(chǎn)生一個相應(yīng)于第一數(shù)據(jù)值的糾錯碼值;以及把第一數(shù)據(jù)值和糾錯碼值存儲在寄存器中。
16.權(quán)利要求15所述的方法,進(jìn)一步包括從寄存器中讀取第一數(shù)據(jù)值和糾錯碼值;使用第一數(shù)據(jù)值來執(zhí)行第二操作以產(chǎn)生第二數(shù)據(jù)值;使用糾錯碼值來校驗(yàn)第一數(shù)據(jù)值;以及在存儲第二數(shù)據(jù)值之前,引發(fā)一個異常來指示在第一結(jié)果中存在的錯誤。
17.權(quán)利要求16所述的方法,進(jìn)一步包括調(diào)用錯誤恢復(fù)例程來使用糾錯碼值以產(chǎn)生糾正的第一數(shù)據(jù)值;以及把糾正的第一數(shù)據(jù)值存儲在寄存器中。
全文摘要
公開了一種用于從寄存器文件中的軟錯誤中恢復(fù)的裝置和方法。在一個實(shí)施例中,一個裝置包括一個寄存器文件和糾錯碼產(chǎn)生邏輯。在寄存器文件中的每個寄存器具有存儲數(shù)據(jù)的位和對數(shù)據(jù)存儲糾錯碼值的位。
文檔編號G06F11/10GK1808392SQ20051011918
公開日2006年7月26日 申請日期2005年12月29日 優(yōu)先權(quán)日2004年12月29日
發(fā)明者S·科塔帕利, S·納德卡米, 王爾瑞 申請人:英特爾公司