專利名稱:糾正軟錯誤的固件機制的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器,尤其涉及能夠以高可靠性模式操作的微處 理器。
背景技術(shù):
當a粒子或宇宙射線透過集成電路并更改存儲在電路的電壓波節(jié) 上的電荷之時會出現(xiàn)軟錯誤。如果電荷改變足夠大,表示一種邏輯狀 態(tài)的電壓就可能會被改變?yōu)楸硎静煌壿嫚顟B(tài)的電壓。例如表示邏輯 真狀態(tài)的電壓可能會被改變?yōu)楸硎具壿嫾贍顟B(tài)的電壓,而且包含該邏 輯狀態(tài)的任何數(shù)據(jù)都將遭到損壞。
伴隨著半導(dǎo)體加工技術(shù)向著更小的尺寸和更低的操作電壓發(fā)展, 集成電路,例如微處理器("處理器,,)的軟錯誤率(SER)也增加了。 更小的工藝尺寸允許在處理器電路小片上實現(xiàn)更高的器件密度。這增 加了 a粒子或宇宙射線透過處理器電壓波節(jié)中之一的可能性。更低的 操作電壓意味著更小的電荷分裂就足以改變由節(jié)點電壓表示的邏輯狀 態(tài)。這兩種趨勢將來都指向了更高的SER。如果在任何已遭破壞的數(shù)據(jù) 被用來更新處理器的結(jié)構(gòu)狀態(tài)之前檢測到軟錯誤,它們就可以在處理 器中得到糾正。
處理器常常采用基于奇偶性的機制來檢測由軟錯誤產(chǎn)生的數(shù)據(jù)損 壞。當奇偶位被存儲時它與各個數(shù)據(jù)塊相關(guān)。這個奇偶位是根據(jù)數(shù)據(jù) 塊中有奇數(shù)或偶數(shù)個1而被設(shè)置為1或0的。當數(shù)據(jù)塊被從它的存儲 單元讀出時,將該塊中1的個數(shù)與奇偶位進行比較。這兩個值不同表 示數(shù)據(jù)塊已經(jīng)遭到了損壞。這兩個值一致則表示或者未出現(xiàn)損壞或者 已有2 (或4…)位被改變。由于后者發(fā)生的概率很低,因而奇偶性給 數(shù)據(jù)是否已遭損壞提供了可靠的指示。糾錯碼(ECC)是跟蹤每個數(shù)據(jù)
4塊附加信息的基于奇偶性的機制。附加信息允許識別并糾正損壞位。
奇偶/ECC機制已經(jīng)被廣泛應(yīng)用到了高速緩沖存儲器、存儲器和類 似的數(shù)據(jù)存儲陣列。這些結(jié)構(gòu)有相對較高的數(shù)據(jù)存儲節(jié)點密度,而且 即使在當前的器件密度上對軟錯誤也很敏感。它們的固定陣列結(jié)構(gòu)使 得實現(xiàn)奇偶/ECC機制相對容易一些。處理器上其余的電路包括數(shù)據(jù)通 路、控制邏輯電路、執(zhí)行邏輯電路和寄存器("執(zhí)行核心")。這些電 路的不同結(jié)構(gòu)和它們在處理器電路小片(processor die)上的分布使 得應(yīng)用奇偶/ECC機制更為困難。
檢測執(zhí)行核心中的軟錯誤的 一種方法是在雙倍的執(zhí)行核心上處理 指令并比較以逐指令地比較每個核心確定的結(jié)果("冗余執(zhí)行")。 例如, 一個計算機系統(tǒng)包括兩個單獨的處理器,可以引導(dǎo)它們或以對 稱多處理("SMP")模式或以功能冗余校驗("FRC")模式運行。 以SMP模式,指令執(zhí)行被分配到各個處理器之間以提供比單處理器系 統(tǒng)更高的整體性能。以FRC模式, 一個處理器正常地執(zhí)行代碼,第二 個處理器在與提供給第一個處理器相同的數(shù)據(jù)上執(zhí)行相同的指令。如 果第二個處理器檢測到在它的操作和第一個處理器的操作之間存在差 異,它就用信號通知產(chǎn)生了錯誤。只能通過重啟計算機系統(tǒng)在SMP和 FRC之間切換操作模式。
雙處理器方法成本較高(就硅而論)。另外,通過其進行結(jié)果比 較的處理器間信號傳遞太慢,以至于無法在損壞的數(shù)據(jù)更新處理器的 結(jié)構(gòu)狀態(tài)之前就檢測到它。因此,這種方法不適于糾正檢測到的軟錯 誤。
另一種計算機系統(tǒng)在單個處理器芯片上使用雙執(zhí)行核心提供執(zhí)行 冗余。兩個執(zhí)行核心以FRC模式操作,而且受ECC保護的校驗點寄存 器存儲處理器中間狀態(tài)上的信息。當在一個代碼段中檢測到錯誤時, 處理器執(zhí)行微代碼程序以利用校驗點寄存器來恢復(fù)處理器到最后未遭 破壞的處理器狀態(tài)。隨后控制返回到該代碼段,并從遇到錯誤的指令 開始。錯誤恢復(fù)微代碼程序存儲在處理器芯片上,使它難以更新或修 改。另外,足夠靈活以糾正大范圍錯誤的程序勢必相對復(fù)雜。這些程 序的微代碼實現(xiàn)方式占據(jù)了處理器電路小片上的大量面積。
本發(fā)明解決了現(xiàn)有的高可靠性計算機系統(tǒng)的這些和其它不足。
發(fā)明概述本發(fā)明提供了用于在雙執(zhí)行核心處理器中恢復(fù)軟錯誤的固件機 制,該雙執(zhí)行核心處理器能夠以冗余模式和分離模式操作執(zhí)行核心。
依據(jù)本發(fā)明的一種方法在處理器以冗余模式操作執(zhí)行核心時檢測 軟錯誤。在每個執(zhí)行核心上執(zhí)行錯誤恢復(fù)程序以保存來自與該執(zhí)行核 心相關(guān)的存儲器結(jié)構(gòu)的未損壞的數(shù)據(jù)。根據(jù)保存的數(shù)據(jù)恢復(fù)處理器狀 態(tài)數(shù)據(jù),并用處理器狀態(tài)數(shù)據(jù)初始化第一和第二執(zhí)行核心。
依據(jù)本發(fā)明的計算機系統(tǒng)包括一個雙執(zhí)行核心處理器和存儲錯誤 恢復(fù)程序的非易失性存儲器。當處理器在以冗余模式操作的同時檢測 軟錯誤時錯誤恢復(fù)程序被調(diào)用。該程序把處理器切換到分離模式,在 該模式下每個執(zhí)行核心將其相關(guān)的存儲器結(jié)構(gòu)中的未損壞數(shù)據(jù)保存到 一個指定的存儲單元。該程序依據(jù)所保存的數(shù)據(jù)恢復(fù)處理器狀態(tài)數(shù)據(jù)。
附圖概述
可以參考下列圖來理解本發(fā)明,在這些圖中同樣的元件由同樣的 數(shù)字來表示。提供這些圖是為了舉例說明本發(fā)明的所選實施方案,并 不意味著要限制本發(fā)明的范圍。
圖1是適于實現(xiàn)本發(fā)明的計算機系統(tǒng)的一種實施方案的框圖。
圖2A是圖1中雙執(zhí)行核心處理器的一種實施方案的框圖。 圖2B是圖2A中處理器的FET級的一種實施方案的框圖。 圖2C是圖2A中處理器的校驗單元的一種實施方案的框圖。 圖3是說明依照本發(fā)明用于從軟錯誤恢復(fù)的方法的一種實施方案 的流程圖。
圖4是說明由執(zhí)行核心執(zhí)行的錯誤恢復(fù)程序的一種實施方案的流 程圖。
圖5A和5B是說明為軟錯誤恢復(fù)協(xié)調(diào)所保存的數(shù)據(jù)的不同機制的 實施方案的框圖。
圖6是說明圖5A的數(shù)據(jù)協(xié)調(diào)機制的一種實施方案的流程圖。
圖7是當雙核心處理器以分離模式操作時提供集群級冗余的執(zhí)行 核心的一種實施方案的框圖。
發(fā)明詳述
下面的論述闡明了大量特定的細節(jié)以提供對本發(fā)明的徹底理解。 然而,從本公開內(nèi)容受益的本領(lǐng)域的普通技術(shù)人員將意識到可以在沒 有這些特定細節(jié)的情況下實踐本發(fā)明。另外,為了把注意力集中在本發(fā)明的特性上,對多種眾所周知的方法、程序、部件和電路沒有進行 詳細描述。
本發(fā)明提供了一種在雙核心處理器中糾正軟錯誤的靈活方法,該 雙核心處理器可以在冗余模式和分離模式之間動態(tài)切換。在冗余模式
下,處理器執(zhí)行相同的代碼段上以鎖定步驟(in lock step)操作執(zhí) 行核心并比較結(jié)果以識別錯誤。在分離模式下,執(zhí)行核心可以獨立處 理指令,例如,執(zhí)行核心在給定的時鐘周期內(nèi)可以操作在不同的指令 上。
對本發(fā)明的一種實施方案來說,冗余模式可以是高可靠性(HR) 處理器執(zhí)行模式,這種模式減少了執(zhí)行臨界代碼段時發(fā)生軟錯誤的風(fēng) 險。分離模式可以是高性能(HP)處理器執(zhí)行模式,該可以通過增加 所選代碼可用的執(zhí)行資源來更快地處理所選代碼。分離模式也可以只 用于所選擇的目的,例如錯誤恢復(fù)或加速(boostrapping)處理器。 分離模式的重要特征是它允許執(zhí)行核心"獨立"操作,即每個執(zhí)行核 心在給定的時鐘周期上可執(zhí)行不同的指令。
依照本發(fā)明,錯誤恢復(fù)程序存儲在非易失性存儲器中。當以冗余 模式實現(xiàn)一個程序線程的處理器檢測到軟錯誤時訪問恢復(fù)程序??梢?通過兩個執(zhí)行核心中結(jié)果之間的差異指示錯誤。該程序把處理器切換 到分離模式,該模式下每個執(zhí)行核心在它的相關(guān)存儲單元檢查損壞的 數(shù)據(jù)。把未損壞的數(shù)據(jù)復(fù)制到指定的存儲單元并從未損壞的數(shù)據(jù)恢復(fù) 出足夠的處理器狀態(tài)數(shù)據(jù)以繼續(xù)被中斷的程序線程。恢復(fù)程序用已恢 復(fù)的處理器狀態(tài)數(shù)據(jù)初始化執(zhí)行核心。
對本發(fā)明的一種實施方案來說,與每個執(zhí)行核心相關(guān)的不同資源 是受奇偶保護的,并且恢復(fù)程序執(zhí)行奇偶校驗以識別執(zhí)行核心中任何 遭到破壞的數(shù)據(jù)。舉例來說受奇偶保護的資源可以包括通用寄存器、 浮點寄存器、控制和狀態(tài)寄存器、低級高速緩沖存儲器等。通常,用 來存儲處理器狀態(tài)數(shù)據(jù)的任何結(jié)構(gòu)都可以受奇偶保護。保護范圍取決 于系統(tǒng)的可靠性需求。
對本發(fā)明的另 一種實施方案來說,錯誤恢復(fù)程序識別并存儲來自 一個或兩個執(zhí)行核心的未遭破壞的數(shù)據(jù)到指定的存儲單元。用從保存 的數(shù)據(jù)恢復(fù)出的處理器狀態(tài)數(shù)據(jù)初始化執(zhí)行核心。例如,可以用從沒 有經(jīng)歷軟錯誤的執(zhí)行核心保存的處理器狀態(tài)數(shù)據(jù)初始化兩個執(zhí)行核
7心?;蛘?,可以把來自各個執(zhí)行核心的未遭破壞的數(shù)據(jù)保存到不同的 存儲單元,來自一個存儲單元的數(shù)據(jù)可用來代替其它存儲單元中的已 遭破壞的數(shù)據(jù)。這種替代方法用來自每個處理器的指定存儲單元的處 理器狀態(tài)數(shù)據(jù)副本初始化各個執(zhí)行核心。通過維護處理器狀態(tài)數(shù)據(jù)的 單獨的集合,這種替代方法減少了初始化過程中產(chǎn)生的軟錯誤在檢測 中被遺漏的風(fēng)險。在識別并協(xié)調(diào)分離模式下來自執(zhí)行核心的已保存的 處理器狀態(tài)數(shù)據(jù)之后,錯誤恢復(fù)程序為返回到冗余模式而同步執(zhí)行核 心。
對本發(fā)明的另一種實施方案來說,處理器可以被配置用來在分離 模式下的各個執(zhí)行核心中保持一定級別的冗余。例如,可以為分離模 式操作而把每個執(zhí)行核心的執(zhí)行資源在邏輯上組織成冗余執(zhí)行集群。 當處理器處于分離模式時執(zhí)行集群在相同的指令上以鎖定步驟執(zhí)行, 可以比較來自冗余集群的結(jié)果以檢測單個執(zhí)行核心中的軟錯誤。
圖1是依照本發(fā)明的計算機系統(tǒng)ioo的一種實施方案的塊級圖示。
計算機系統(tǒng)100包括處理器102、非易失性存儲器1(M、動態(tài)存儲器106 和系統(tǒng)邏輯108 系統(tǒng)邏輯108在處理器102、非易失性存儲器104和 動態(tài)存儲器106之間傳遞通信。錯誤恢復(fù)程序190存儲在非易失性存 儲器104中,雖然程序190的一些部分也可以被復(fù)制(映像)到動態(tài) 存儲器106中。
處理器102公開的實施方案包括第一執(zhí)行核心110 (a)、第二執(zhí) 行核心110 (b)、對應(yīng)的核心狀態(tài)寄存器(CSR) 120 (a)和120 (b) 以及校驗單元130。每個CSR120 ( a ) 、 120 ( b )分別包括一個核心狀 態(tài)位(CSB) 124 (a) 、 124 (b)。還顯示出了向處理器102傳入和傳 出數(shù)據(jù)/指令的總線接口 140。每個執(zhí)行核心110(a) 、 110 (b)包括 取指令、譯碼、執(zhí)行并退出指令的資源。在下面的論述中,除非對特 定的執(zhí)行核心110予以說明,否則對執(zhí)行核心110 (a) 、 110(b)的 引用都不加索引。對CSR120、 CSB124的引用以及在執(zhí)行核心110中重
復(fù)的任意其它資源也同樣處理。
在冗余模式下,執(zhí)行核心110以鎖定步驟執(zhí)行來自一個代碼段的 相同指令,并由校驗單元130比較結(jié)果以檢測任一執(zhí)行核心110中的 錯誤。在分離模式下,執(zhí)行核心IIO "獨立,,操作。也就是說,每個執(zhí) 行核心可以執(zhí)行來自一個或多個代碼段的不同指令。如上所述,分離模式可以為所選擇的程序提供可編程高性能模式,因為處理器中可用 的執(zhí)行資源在分離模式下被有效地加倍。
分離模式下執(zhí)行核心110之間的獨立級別隨處理器102的不同實 施方案有所變化。對一種實施方案來說,在分離模式時處理器102可 以作為實現(xiàn)在一個單獨的處理器芯片上的SMP系統(tǒng)操作。這種情況下, 每個執(zhí)行核心110作為一個獨立的處理器操作,只共享處理器電路小 片和存儲器系統(tǒng)的特定部件。處理器102的這種實施方案對需要高性 能處理器的代碼尤其有用。處理器102的另一種實施方案可以通過提 供適當通道以共享處理器狀態(tài)信息或執(zhí)行核心資源而支持在分離模式 下的執(zhí)行核心110之間一定程度的耦合。
可以在硬件、軟件或固件控制下面實現(xiàn)在冗余和分離模式之間的 切換。對軟件和固件控制的切換來說,可以通過正在執(zhí)行的不同程序 線程、操作系統(tǒng)(0S)調(diào)度程序、中斷處理器、固件程序或類似的源 來提供模式切換指令。對硬件控制的切換來說,可以響應(yīng)檢測到的狀 態(tài),例如,特定指令類型的執(zhí)行、不同執(zhí)行核心中結(jié)果之間差異的檢 測或者該差異的分辨率,來觸發(fā)切換。
對本發(fā)明的一種實施方案來說,CSB124 (a)和124 (b)分別指示 執(zhí)行核心110 (a)和110 (b)的狀態(tài),且CSB124 (a)和124 (b) — 起指示處理器102的操作模式。處理器的執(zhí)行模式作為一個整體可以 通過一個單獨的處理器狀態(tài)位(PSB) 128來進行跟蹤,由圖1中的虛 線框表示。對于一種實施方案來說,當處理器102將以冗余模式操作 時,CSB 124被設(shè)置成第一個值,例如l,當處理器102將以分離模式 操作時,CSB 124被設(shè)置成第二個值,例如0。當模式切換指令觸發(fā)冗 余模式和分離模式之間的切換時CSB 124會被調(diào)整。處理器102中的 不同資源根據(jù)它的執(zhí)行模式更改它們的操作。對處理器102的公開實 施方案來說,指令獲取、指令退出和結(jié)果校驗是以冗余和分離模式做 不同處理的,而且對應(yīng)的資源才艮據(jù)CSB 124 (或PSB 128)的狀態(tài)調(diào)整 它們的操作。
在題為 "Microprocessor With High Reliability Operating Mode",且與本案同一日期提交的美國專利申請序列號09/470, 098 中公開了有雙執(zhí)行模式的處理器102的一種實施方案。
圖2A更詳細地說明了處理器102的一種實施方案。對該公開的實施方案來說,每個執(zhí)行核心110被描述成指令執(zhí)行流水線中的一系列 級。每一級對應(yīng)于由執(zhí)行核心110實現(xiàn)用來執(zhí)行它們的指令的一個或
多個操作.或者,可以把流水級理解為代表執(zhí)行所示操作的邏輯電路。
指令和數(shù)據(jù)從存儲器系統(tǒng)270提供給執(zhí)行核心110。存儲器系統(tǒng)270 代表動態(tài)存儲器106和任意介于中間的高速緩沖存儲器。例如,高速 緩沖存儲器280代表存儲器系統(tǒng)270的一部分,來自執(zhí)行過的指令的 結(jié)果被寫入其中。高速緩沖存儲器280可以位于和處理器102相同的 芯片上或者位于一個單獨的芯片上。
對處理器102的公開的實施方案來說,每個執(zhí)行核心110被劃分 為取出(FET)級210、譯碼(DEC)級220、寄存器(REG )級2 30、執(zhí) 行(EXE)級240、檢測(DET)級250和退出(RET)級260。在FET 級210中從存儲器系統(tǒng)270取出一個或多個指令。在DEC級220中把 取出的指令譯碼成微操作,并在REG級230中取出由微操作規(guī)定的源 操作數(shù)。在EXE級240中在取出的操作數(shù)上執(zhí)行微操作,并在DET級 250中用信號通知由微操作產(chǎn)生的任何異常。如果沒有檢測到異常就在 RET級260中退出微操作。對該公開的實施方案來說,來自已退出的微 操作的結(jié)果通過退出通道264被寫入高速緩沖存儲器280中。
在這個論述中,指令、指令束和宏指令被交替用作微操作和指令 字節(jié)。后者指由處理器的執(zhí)行單元識別出的指令。前者指提供給處理 器的形式的指令。對一些實施方案來說,在這些實體之間可以有很小 的差別或沒有。
處理器102的實施方案可以包括緩沖區(qū)以從后端級(DEC、 REG、 EXE、 DET和RET,或REG、 EXE、 DET和RET )去耦合前端級(FET或FET 和DEC)。該緩沖區(qū)臨時存儲取出(或者取出并經(jīng)譯碼)的指令。這使 得前端操作即使在后端操作被停止或延遲時也能繼續(xù)。如果前端操作 被延遲它還允許后端操作繼續(xù)進行。處理器102的一種實施方案采用 了去耦緩沖區(qū)來糾正在冗余模式下檢測到的錯誤。
本發(fā)明不需要把處理器102分成一組特定的流水級。例如,可以 把一個已公開的級再分成兩個或更多級以解決定時問題或促進更高的 處理器時鐘速度?;蛘?,可以把兩個或更多級組合成一個單一級。其 它實施方案可以采用或不采用去耦緩沖區(qū)。其它實施方案仍然可包括 用于處理指令無序的硬件。公開的流水線只提供了一個如何在處理器中劃分操作的實例以配合本發(fā)明的應(yīng)用。
還為每個執(zhí)行核心110顯示了狀態(tài)/控制(S/C)寄存器234、數(shù)據(jù) 寄存器238和數(shù)據(jù)高速緩沖存儲器244。 S/C寄存器234存儲管理執(zhí)行 核心110的操作的信息。例如,S/C寄存器234通常包括CSR120 (和 CSB124)。數(shù)據(jù)寄存器238存儲由執(zhí)行核心110中不同資源所用的操 作數(shù),數(shù)據(jù)高速緩沖存儲器244在存儲器系統(tǒng)270和執(zhí)行核心中的其 它資源之間緩存操作數(shù)。根據(jù)定時約束,數(shù)據(jù)高速緩沖存儲器244可 以向數(shù)據(jù)寄存器238、 EXE級240中的執(zhí)行資源、或者向這兩者提供操 作數(shù)。對本發(fā)明的一種實施方案來說,每個執(zhí)行核心110為S/C寄存 器234、數(shù)據(jù)寄存器238和高速緩沖存儲器244提供一定形式的奇偶保 護。
當處理器102處在冗余模式下時執(zhí)行核心110 (a)和110 (b)被 同步以鎖定步驟在相同指令上操作。在分離模式下,執(zhí)行核心110(a) 和110 (b)可以在不同的指令上獨立操作。如上所述,處理器102的 不同實施方案在分離模式可以支持執(zhí)行核心110 (a)和110 (b)之間 不同級別的協(xié)調(diào)合作,如圖2A中的虛線箭頭所示。例如,如果處理器 102作為一個單獨芯片SMP系統(tǒng)以分離模式操作,執(zhí)行核心110 (a) 和110 (b)之間的合作需要主要在模式切換期間出現(xiàn)。對處理器102 的其它實施方案來說,執(zhí)行核心110 (a)和110 (b)可以處理緊密耦 合的進程。這些實施方案支持對S/C寄存器234 (a)和234 (b)、數(shù) 據(jù)寄存器238 (a)和238 (b)、以及數(shù)據(jù)高速緩沖存儲器( a )和 244 (b)之間的數(shù)據(jù)的一些共享,以及不同流水級之間的操作的一些 合作。
圖2B顯示了適于在冗余模式和分離模式下分別向執(zhí)行核心110 (a) 、 110 (b)提供指令的FET級210 ( a )和210 ( b )的一種實施 方案。每個FET級210包括指令指針(IP)選擇復(fù)用器212和耦合到 DEC級220的指令高速緩沖存儲器214。 S/C寄存器234包括IP寄存 器236,它可以由軟件進行初始化以指示將要執(zhí)行的下一條指令。另外, FET級210(b)包括在高速緩沖存儲器214(b)的輸出上的復(fù)用器216。 復(fù)用器216由CSB 124通過與門218控制。對本發(fā)明的一種實施方案 來說,指令高速緩沖存儲器214可以由像ECC這樣基于奇偶性的機制 來保護。復(fù)用器212在它的數(shù)據(jù)輸入上從包括IP寄存器236在內(nèi)的多個來 源接收IP。響應(yīng)它的控制輸入上的信號,復(fù)用器212選擇一個IP來指 示將要從高速緩沖存儲器214取出的下一條指令。在分離模式下,CSB 124被設(shè)置為0而且復(fù)用器216傳輸由指令高速緩沖存儲器214 (b) 提供的指令。在這種模式下,IP寄存器236 (a)和236 (b)被獨立地 進行初始化和更新,高速緩沖存儲器214 ( a )和214 ( b )分別提供對 應(yīng)的指令給DEC級220 (a)和220 (b)。在冗余才莫式下,CSB 124被 設(shè)置為1,復(fù)用器216從高速緩沖存儲器214 (a)提供指令給DEC級 220 (b)。
FET級210的一種替代實施方案不使用復(fù)用器216。而是為冗余模 式而把IP寄存器236 (a) 、 236 (b)和高速緩沖存儲器214 (a)、 214 (b)初始化成相同狀態(tài),并且FET級210,包括高速緩沖存儲器 214,均以鎖定步驟操作。處理器設(shè)計領(lǐng)域的以及從本公開內(nèi)容獲益的 技術(shù)人員將認識到可以根據(jù)處理器102操作的執(zhí)行模式使用FET級210 的其它變體來為執(zhí)行核心110實現(xiàn)獨立的和鎖定步驟的指令取出。 ;
圖2C是說明依照本發(fā)明的校驗單元130的一種實施方案框圖。校 驗單元130的公開的實施方案包括"n"個比較器290 ( 1 ) -MO (n)、 或門294和與門298。為執(zhí)行核心110中的每個執(zhí)行單元提供一個比較 器290。例如,處理器102的一種實施方案可以在每個執(zhí)行核心110 的EXE級中包括整數(shù)執(zhí)行單元(IEU)、浮點執(zhí)行單元(FPU)、存儲 器執(zhí)行單元(MEU)和分支執(zhí)行單元BRU。對這個實施方案來說,校驗 單元130包括4個比較器290。比較器290 ( 1 ) 、 290 ( 2 ) 、 290 ( 3 ) 和290 ( 4 )分別監(jiān)控來自執(zhí)行核心110 (a)和110 (b)的IEU、 FPU、 MEU和BRU的輸出。
對校驗單元130公開的實施方案來說,當施加到它的輸入上的執(zhí) 行結(jié)果匹配時每個比較器290產(chǎn)生一個邏輯值0,當執(zhí)行結(jié)果不匹配時 產(chǎn)生邏輯值1。對校驗單元130的一種實施方案來說,比較器290是自 校驗比較器。當任意一個比較器290指示出的與它對應(yīng)的執(zhí)行結(jié)果不 匹配時或門294產(chǎn)生邏輯值1。當與門298被使能時或門294的輸出充 當ERROR信號。對該公開的實施方案來說,當CSB 124都被設(shè)置為1, 即處理器102在冗余模式下時這才會發(fā)生。
處理器設(shè)計領(lǐng)域的以及從本公開內(nèi)容獲益的技術(shù)人員將認識到當處理器在冗余模式下時可以激活校驗單元l30的其它變體來監(jiān)控執(zhí)行
核心110中的結(jié)果。
當在冗余模式下檢測出偏差時,本發(fā)明提供了一個可以獨立實現(xiàn) 或與基于硬件和軟件的恢復(fù)機制結(jié)合在 一起的基于固件的恢復(fù)機制, 以把處理器恢復(fù)到無錯狀態(tài)。作為本發(fā)明目標的軟錯誤通常不會在兩
個執(zhí)行核心110中同時發(fā)生。由校驗單元130檢測到的執(zhí)行結(jié)果之間 的差異通常是由執(zhí)行核心110之一的電路中的軟錯誤而產(chǎn)生的。像寄 存器文件、高速緩沖存儲器、鎖存器以及類似的這些存儲器結(jié)構(gòu)尤其 易于發(fā)生這些錯誤。這些結(jié)構(gòu)存儲代表指令流水線的不同點上的操作 數(shù)值、指令或者微操作的電壓電平。當在由執(zhí)行核心產(chǎn)生的結(jié)果之間 檢測到差異時本發(fā)明提供了一種恢復(fù)完整性到以冗余模式操作的處理 器的執(zhí)行核心的機制。
根據(jù)本發(fā)明的一種實施方案,當在冗余模式下的處理器的兩個執(zhí) 行核心產(chǎn)生的結(jié)果之間檢測到差異時會訪問基于固件的恢復(fù)程序。錯 誤恢復(fù)程序切換處理器到分離模式,在該模式下每個執(zhí)行核心檢查來
的存儲單元。^誤恢復(fù)程序用未遭破壞的數(shù)據(jù)初始化執(zhí)行核心并返回 控制到被中斷的程序線程。對本發(fā)明的一種實施方案來說,所檢查的 執(zhí)行資源是受奇偶保護的存儲器結(jié)構(gòu)。從未遭破壞的數(shù)據(jù)恢復(fù)出足夠 的處理器狀態(tài)數(shù)據(jù)來初始化兩個執(zhí)行核心以使中斷的程序線程得以繼 續(xù)處理。
使用基于固件的恢復(fù)程序使處理器能夠?qū)崿F(xiàn)更復(fù)雜的恢復(fù)機制。 這些機制比通過微代碼或基于硬件的恢復(fù)機制能夠解決更多種類的錯 誤,后兩種恢復(fù)機制均受限于它們對電路小片面積的影響??梢愿?br>
中的改進。另外,在必要時基于固件的恢復(fù)機制能夠通知諸如系統(tǒng)級 固件或操作系統(tǒng)的更高級的系統(tǒng)采取適當動作。
對本發(fā)明的一種實施方案來說,可以通過機器校驗(MC)訪問錯 誤恢復(fù)程序。當檢測到差異時MC被校驗單元130觸發(fā)。或者,處理器 可以先試圖通過硬件恢復(fù)機制解決偏差并只在硬件機制失敗時觸發(fā)錯 誤恢復(fù)程序。例如,硬件恢復(fù)機制包括重新控制(resteering)執(zhí)行 核心或執(zhí)行核心的一些部分從檢測到差異時的指令開始重新執(zhí)行指令流。
圖3是說明依照本發(fā)明用于糾正軟錯誤的方法300的流程圖。當 處理器以冗余模式操作并檢測到錯誤310時方法300被啟動。錯誤可 以由第一和第二個執(zhí)行核心產(chǎn)生的結(jié)果之間的差異來指示。當檢測到 錯誤時310,處理器跳轉(zhuǎn)到錯誤恢復(fù)程序(ERR) 320。例如,這可以通 過觸發(fā)MC并通過相關(guān)向量表控制處理器到ERR來完成。
ERR把處理器從冗余模式(RM)切換到分離模式(SM) 330。對方 法300的一種實施方案來說,每個執(zhí)行核心以分離模式操作以從受奇 偶保護的存儲器結(jié)構(gòu)把未遭破壞的數(shù)據(jù)保存到指定的存儲單元340???以通過掃描受奇偶保護的資源中的數(shù)據(jù)檢查奇偶錯誤或者通過把數(shù)據(jù) 從這些資源復(fù)制到一個存儲單元并掃描復(fù)制來的數(shù)據(jù)以檢查奇偶錯誤 來識別未受損壞的數(shù)據(jù)。當兩個執(zhí)行核心都完成了它們的數(shù)據(jù)保存時 350,對所保存的數(shù)據(jù)進行協(xié)調(diào)360以提供未遭破壞的一組處理器狀態(tài) 數(shù)據(jù)。對方法300的另一種實施方案來說,只有在它的存儲結(jié)構(gòu)中識 別出沒有遭破壞的數(shù)據(jù)的執(zhí)行核心才把它的數(shù)據(jù)保存到指定的存儲單 元340。處理器被返回到冗余模式370,用恢復(fù)出的處理器狀態(tài)數(shù)據(jù)初 始化執(zhí)行核心380,并繼續(xù)中斷的進程線程的執(zhí)行380。
對本發(fā)明的一種實施方案來說,處理器102在軟件控制下切換于 冗余和分離模式之間,例如通過模式切換指令。對本發(fā)明的另一種實 施方案來說,處理器102可通過硬件機制進行切換。
在檢測到差異前,處理器工作于冗余模式而且執(zhí)行核心以鎖定步 驟進行操作。當檢測到差異時,錯誤恢復(fù)程序可以通過給每個執(zhí)行核 心提供"切換到分離模式,,指令(SW-SM)來實現(xiàn)模式切換。在冗余模 式下,這些指令被以鎖定步驟沿著兩個執(zhí)行核心的流水線級分級,當 它們退出時切換處理器到分離模式。因而不需要在切換到分離模式時 同步執(zhí)行核心。 一旦處理器處于分離模式下,每個執(zhí)行核心可以獨立 地執(zhí)行ERR的數(shù)據(jù)恢復(fù)操作。
當執(zhí)行核心完成了它的數(shù)據(jù)恢復(fù)操作時,處理器從分離模式轉(zhuǎn)回 到冗余模式以繼續(xù)中斷的程序線程。對本發(fā)明的一種實施方案來說, 這種切換可以通過在每個執(zhí)行核心中執(zhí)行"切換到冗余模式"指令 (SW-RM)分級地實現(xiàn)。把切換分級能夠適應(yīng)執(zhí)行核心完成它們的數(shù)據(jù) 保存操作時在時間上的差別。
14對該公開的實施方案來說,SW—RM在第一級把一個執(zhí)行核心切換到 "就緒狀態(tài)",例如CSB (b) 124=1。在第二級,SW—RM指令把另一個 執(zhí)行核心切換到"就緒狀態(tài)",例如CSB(a)-l。當兩個執(zhí)行核心都 到達就緒狀態(tài),例如PSB^SB (a) &CSB (b)時,處理器返回到冗余模 式。第一和第二級可以完全重合(同時切換)、部分重合或完全不重 合(順序切換),取決于用來調(diào)度模式切換指令的算法。
就緒狀態(tài)允許在處理器從分離模式切換到冗余模式之前同步執(zhí)行 核心。對本發(fā)明的其它實施方案來說,可以通過硬件機制實現(xiàn)同步。 例如,當檢測到程序結(jié)束條件時第 一個執(zhí)行核心可以轉(zhuǎn)換到就緒狀態(tài), 且當?shù)谝粋€執(zhí)行核心完成它的轉(zhuǎn)換時第二個執(zhí)行核心可以轉(zhuǎn)換到就緒 狀態(tài)。和用軟件控制的模式切換一樣,就緒狀態(tài)允許執(zhí)行核心在處理 器被切換回冗余模式之前會合。
圖4說明了由執(zhí)行核心實現(xiàn)用來保存未損壞數(shù)據(jù)的方法400的一 種實施方案。例如,方法400可以代表在切換到分離模式之后由執(zhí)行 核心實現(xiàn)的ERR的一部分。如上所述,可以通過機器校驗來到達ERR, 機器校驗通過相關(guān)的向量表把處理器的控制傳遞到ERR。 ERR從冗余模 式切換處理器到分離模式,這允許每個執(zhí)行核心獨立地訪問并實現(xiàn)數(shù) 據(jù)校驗和由圖4所說明的恢復(fù)程序。
根據(jù)該公開的方法,非臨界存儲器結(jié)構(gòu)被刷新410。非臨界存儲器 結(jié)構(gòu)包括諸如高速緩沖存儲器、寄存器和不存儲結(jié)構(gòu)狀態(tài)數(shù)據(jù)的存儲 器結(jié)構(gòu)。這些存儲器結(jié)構(gòu)通常是不受奇偶保護的。根據(jù)處理器實施方 案,這些設(shè)備可以包括LO指令和數(shù)據(jù)高速緩沖存儲器、分支目標緩沖 區(qū)、高級裝載跟蹤表等等。
檢查數(shù)據(jù)寄存器文件的內(nèi)容以查找奇偶錯誤"0。如果沒有發(fā)現(xiàn)奇 偶錯誤430,就把數(shù)據(jù)寄存器文件的內(nèi)容復(fù)制到一個指定的存儲單元 440。如上所述,這可以是與另一個執(zhí)行核心共享的存儲單元或者為特 定的執(zhí)行核心保留的存儲單元。如果發(fā)現(xiàn)了奇偶錯誤430,就不從數(shù)據(jù) 寄存器文件復(fù)制任何數(shù)據(jù)。換句話說,只有未損壞的數(shù)據(jù)才從數(shù)據(jù)寄 存器文件中得到復(fù)制。
還校驗450C/S寄存器文件以查找奇偶錯誤。這些包括例如上述核 心狀態(tài)寄存器、存儲有關(guān)當前線程信息的不同寄存器以及任意翻譯后援緩沖區(qū)(TLB)中的翻譯寄存器。如果在C/S寄存器文件中沒有發(fā)現(xiàn) 任何奇偶錯誤460,就把C/S寄存器文件的內(nèi)容復(fù)制到指定的存儲單元 470。如果發(fā)現(xiàn)了奇偶錯誤,就不從C/S寄存器文件復(fù)制任何數(shù)據(jù)。換 句話說,只有未損壞的數(shù)據(jù)才從C/S寄存器文件中得到復(fù)制。
處理器的實施方案可以用固件為所選的高速緩沖存儲器實現(xiàn)錯誤 糾正代碼(ECC)。這消除了對處理器中ECC糾錯硬件的需要,雖然高 速緩沖存儲器仍然存儲ECC位。對這些實施方案來說,可以通過ERR 糾正1和2位的錯誤480。如果用硬件實現(xiàn)ECC就繞過塊480。 一旦糾 正了所有檢測到的錯誤,執(zhí)行核心就跳轉(zhuǎn)到等待狀態(tài)490。
一旦各個執(zhí)行核心都已經(jīng)執(zhí)行了方法400,指定的存儲單元就只包 含未損壞的數(shù)據(jù)。軟錯誤的統(tǒng)計特性的一個結(jié)論是相同的數(shù)據(jù)塊同時 在兩個執(zhí)行核心中被破壞的可能性很小。因此,數(shù)據(jù)保存過程提供了 足夠的未遭損壞的處理器狀態(tài)數(shù)據(jù)來初始化執(zhí)行核心并重新開始中斷 的程序線程。
本發(fā)明不需要以任何特定的順序刷新或校驗存儲器結(jié)構(gòu)。例如, 可以在C/S寄存器文件之后檢查數(shù)據(jù)寄存器文件并在該過程中任何方 便的時間刷新非臨界文件。上面所指出的順序只用于說明目的。
除了保存未遭破壞的數(shù)據(jù)到指定的存儲單元之外,ERR還提供了 一 種機制來協(xié)調(diào)所保存的數(shù)據(jù)并將足夠的未損壞的處理器狀態(tài)數(shù)據(jù)提併 給每個執(zhí)行核心以再繼續(xù)中斷的程序線程。
圖5A是說明用于協(xié)調(diào)由雙執(zhí)行核心處理器中的每個執(zhí)行核心保存 的數(shù)據(jù)的一種機制的框圖。執(zhí)行核心110 (b)實現(xiàn)ERR以復(fù)制(1)它 的未損壞的數(shù)據(jù)到存儲器系統(tǒng)500中一個指定的單元510 (b)。執(zhí)行 核心110 (a)實現(xiàn)ERR以復(fù)制(2)它的未損壞的數(shù)據(jù)到一個指定的存 儲單元510(a)。對所示范的機制來說,執(zhí)行核心110 (b)的存儲器 結(jié)構(gòu)中的軟錯誤給單元510 (b)留下了一個不完全的處理器狀態(tài)數(shù)據(jù) 集。沒有遇到奇偶錯誤的執(zhí)行核心110 (a)復(fù)制(2) 了一個完整的處 理器狀態(tài)數(shù)據(jù)集到單元510(a)。這里,"完整"指足以使處理器102 重新開始執(zhí)行中斷的程序線程的處理器狀態(tài)數(shù)據(jù)的子集??梢栽趫?zhí)行 核心110 (b)復(fù)制(1)它的未遭破壞的數(shù)據(jù)到存儲單元510 (b)的 同時跟蹤執(zhí)行核心110 (b)的存儲器結(jié)構(gòu)中遭到破壞的數(shù)據(jù),以維持需要被更新的數(shù)據(jù)記錄。
在數(shù)據(jù)保存操作(1) 、 (2)之后,執(zhí)行核心110 (b)實現(xiàn)ERR 以從單元510 (a)復(fù)制(3)未損壞的數(shù)據(jù)到單元510 (b)。這為重 新初始化處理器102的執(zhí)行核心提供了第二個處理器狀態(tài)數(shù)據(jù)的完整 集合。例如,當執(zhí)行核心110 (b)確定執(zhí)行核心110 (a)已經(jīng)完成了 它的復(fù)制操作時,它可以只把對于它的相關(guān)存儲器結(jié)構(gòu)中遭到破壞的 數(shù)據(jù)相對應(yīng)的數(shù)據(jù)塊把數(shù)據(jù)從單元510 (a)復(fù)制到單元510 (b)。這 個數(shù)據(jù)協(xié)調(diào)機制在存儲器500中提供了兩組處理器狀態(tài)數(shù)據(jù),隨后可 分別用它們來初始化(4)和(5)執(zhí)行核心110 (a)和110 (b)。初 始化(4)和(5)可以由各個執(zhí)行核心110在分離模式下分別獨立完 成或者在冗余模式由執(zhí)行核心并發(fā)完成。
除了 ERR中從存儲單元510 (a)復(fù)制(3)未損壞的數(shù)據(jù)到存儲單 元510 (b)的那部分之外,該公開的數(shù)據(jù)協(xié)調(diào)機制通過冗余操作繼續(xù) 進行。數(shù)據(jù)由各個執(zhí)行核心校驗、保存到存儲器并寫回到存儲器結(jié)構(gòu)。 這減少了在恢復(fù)期間一組處理器狀態(tài)數(shù)據(jù)中產(chǎn)生的軟錯誤將破壞兩個 執(zhí)行核心的可能性。
圖6是說明圖5A的數(shù)據(jù)協(xié)調(diào)機制的流程圖。例如,這對應(yīng)于圖4 的模塊490。實現(xiàn)ERR的數(shù)據(jù)協(xié)調(diào)部分的處理器確定610另一個執(zhí)行核 心是否已經(jīng)完成了它的數(shù)據(jù)保存操作。當這些操作完成時,該執(zhí)行核 心確定620它是否需要更新它的保存數(shù)據(jù)。
對方法600的一種實施方案來說,在它的存儲器結(jié)構(gòu)中檢測到損 壞數(shù)據(jù)的執(zhí)行核心用來自另 一個執(zhí)行核心的存儲單元的對應(yīng)數(shù)據(jù)更新 630它的保存數(shù)據(jù)。例如,該執(zhí)行核心可以存儲在它的保存操作期間似 乎遭到破壞的數(shù)據(jù)塊的指示。這個執(zhí)行核心然后可以用這些指示從另 一個執(zhí)行核心的指定存儲單元中的適當存儲器地址中取出該數(shù)據(jù)的未 損壞的版本。沒有檢測到任何損壞數(shù)據(jù)的執(zhí)行核心等待另 一個執(zhí)行核 心完成640它的更新630。當兩個執(zhí)行核心都到達等待狀態(tài)640時,處 理器返回650到冗余模式并用協(xié)調(diào)過的數(shù)據(jù)初始化660執(zhí)行核心。方 法600的一種替代實施方案可以分離模式初始化執(zhí)行核心然后返回到 冗余模式。
圖5B說明了數(shù)據(jù)協(xié)調(diào)的一種替代機制。對這種機制來說,兩個執(zhí) 行核心110 (a) 、 110 (b)分別把它們未損壞的數(shù)據(jù)寫入(1)和(2)到相同存儲單元520中的對應(yīng)存儲器地址中。對該機制的一種實施方 案來說,只有數(shù)據(jù)沒遭到破壞的的執(zhí)行核心才能把所有它的處理器狀 態(tài)數(shù)據(jù)寫入到存儲單元520。在自己的存儲器結(jié)構(gòu)中檢測到損壞數(shù)據(jù)的 執(zhí)行核心不把損壞的數(shù)據(jù)復(fù)制到存儲單元520。
圖5B中的機制的另一種實施方案可以從在其相關(guān)存儲器結(jié)構(gòu)中沒 有檢測到損壞數(shù)據(jù)的執(zhí)行核心寫數(shù)據(jù)并跳過另 一個執(zhí)行核心,即包含 有損壞數(shù)據(jù)的執(zhí)行核心的保存步驟。無論哪種情況,復(fù)制到單元520 的處理器狀態(tài)數(shù)據(jù)都是完整的,并且都能夠被分別寫回(3)和(4) 到執(zhí)行核心110 (a)和110 (b)以重新初始化它們從而恢復(fù)中斷的程 序線程。因為在圖5B的數(shù)據(jù)協(xié)調(diào)機制中只維護了一個處理器狀態(tài)數(shù)據(jù) 集,在數(shù)據(jù)恢復(fù)期間這個數(shù)據(jù)集中的軟錯誤不能通過筒單的結(jié)果比較 就檢測出來。
對本發(fā)明的上述實施方案來說,錯誤恢復(fù)是由處理器以分離模式 實現(xiàn)以允許各個執(zhí)行核心獨立地識別出它的相關(guān)存儲器結(jié)構(gòu)中的任何 錯誤。當冗余執(zhí)行不能用來檢測軟錯誤時,在這些錯誤恢復(fù)操作期間 也有可能發(fā)生軟錯誤。對高可靠性系統(tǒng)來說,即使軟錯誤的這個有限 的弱點也有可能過大。
對本發(fā)明的一種實施方案來說,可以配置每個執(zhí)行核心的執(zhí)行資 源以在分離模式操作期間作為兩個或更多邏輯集群并行操作。在各個 執(zhí)行核心獨立實現(xiàn)ERR的同時,每個執(zhí)行核心中邏輯定義的執(zhí)行集群 冗余地實現(xiàn)來自ERR的指令。對這個實施方案來說,來自ERR的指令 在每個執(zhí)行核心內(nèi)部重復(fù)執(zhí)行并被導(dǎo)向不同的執(zhí)行集群??梢员容^由 不同的執(zhí)行集群產(chǎn)生的結(jié)果以確定在處理ERR指令的同時是否有軟錯 誤出現(xiàn)。
圖7是包括該內(nèi)部冗余特性的執(zhí)行核心710的一種實施方案的框 圖。該執(zhí)行核心710的公開實施方案包括一個指令高速緩沖存儲器 (I-cache) 714、譯碼或分散單元720、寄存器文件730、分別包括第 一和第二執(zhí)行集群740( a )和740( b)、校驗單元760和退出單元770。 在下面的論述中,除非為了避免多義性的必要之外,對執(zhí)行集群740 (a)和740 (b)的引用均不加索引。對執(zhí)行核心710中有副本的其它 資源,例如構(gòu)成執(zhí)行集群740的執(zhí)行單元,也做相同處理。
對該公開的實施方案來說,每個執(zhí)行集群740包括分支執(zhí)行單元
18(BRU) 752,整數(shù)執(zhí)行單元(IEU) 754,存儲管理(裝載/存儲)單元 (固U) 756和浮點單元(FPU) 758 (—般也稱"執(zhí)行單元")。執(zhí)行 核心710的不同實施方案在不偏離本發(fā)明的范圍的情況下可以包括不 同類型和數(shù)量的執(zhí)行單元。例如,Intel公司的Merced處理器采用的 分支執(zhí)行單元包括三個獨立的分支執(zhí)行單元。執(zhí)行集群"0被獨立顯 示以說明在分離模式下它們的邏輯組織,并非為了反映不同執(zhí)行資源 之間的實際分離。
執(zhí)行核心710的其它實施方案可以不重復(fù)所有的執(zhí)行單元750或 者不重復(fù)指令到特定的執(zhí)行單元。例如,分支執(zhí)行單元需要大量的處 理器資源支持,而且不重復(fù)BRU 752可以節(jié)省可觀的電路小片面積。 這由圖7中BRU 752 (b)周圍的虛線框表示。這種情況下,分支指令 或者不被冗余執(zhí)行,或者可以采用替代機制來檢查它們的執(zhí)行。例如, 分支指令可重復(fù)并串行執(zhí)行。同樣,重復(fù)裝載和存儲指令可以使HR模 式下到存儲器系統(tǒng)的帶寬飽和。這種情況下,可以實現(xiàn)多個固U 7% 來滿足一個指令束中多個裝載和/或存儲操作的存在,但在HR模式下 單個的裝載/存儲操作并不被重復(fù)這些指令。在不偏離本發(fā)明的精神的 情況下也可以對其它執(zhí)行單元750和指令類型可采用類似的裝置。
I-cache714提供指令給譯碼單元720,譯碼單元720通過寄存器 文件730把指令導(dǎo)向適當?shù)膱?zhí)行單元。寄存器文件730包括數(shù)據(jù)寄存 器文件732、控制/狀態(tài)(C/S)寄存器734和寄存器重命名單元738。 數(shù)據(jù)寄存器文件提供對例如由執(zhí)行單元750操縱的整數(shù)和浮點操作數(shù) 的臨時存儲。重命名單元738把微操作中指定的虛擬寄存器標識符映 射到寄存器文件730中的物理寄存器。
C/S寄存器734存儲控制執(zhí)行核心710的操作模式和不同執(zhí)行資源 狀態(tài)的信息。對執(zhí)行核心710的一種實施方案來說,當處理器處于分 離模式時分發(fā)單元720提供相同的指令給執(zhí)行集群740(a)和740(b)。 例如,分發(fā)單元720提供來自一條指令的微操作(或來自相同指令的 微操作)給執(zhí)行集群740 (a)和740 (b)中適當?shù)膱?zhí)行單元。由校驗 單元760比較執(zhí)行集群740 ( a )和740 ( b )產(chǎn)生的結(jié)果,如果執(zhí)行結(jié) 果不同就指示發(fā)生了錯誤。在冗余模式下,可以獨立控制執(zhí)行集群740 (a)和740 (b)以處理不同的指令,并通過在另一個執(zhí)行核心上執(zhí)行 相同的指令來提供冗余。當處理器以分離模式操作時執(zhí)行核心710提供執(zhí)行集群-級冗余以保護處理器不發(fā)生軟錯誤。在題為
"Microprocessor With High Reliability Operating Mode ,,, 并 且與本案同一日期提交的美國專利申請序列號09/470, 098,中詳細論 述了包括執(zhí)行核心710的處理器的一種實施方案。
因而已經(jīng)公開了用于在雙核心處理器中糾正軟錯誤的基于固件的 機制,該處理器可以在冗余執(zhí)行模式和分離執(zhí)行模式之間進行切換。 當在以冗余模式執(zhí)行的程序線程中檢測到錯誤時,處理器切換到分離 模式。在分離模式下,執(zhí)行核心在它的存儲器結(jié)構(gòu)中識別出未遭損壞 的處理器狀態(tài)數(shù)據(jù)并把該未遭損壞數(shù)據(jù)復(fù)制到一個指定的存儲單元。 協(xié)調(diào)未遭損壞的數(shù)據(jù)以提供足夠的處理器狀態(tài)數(shù)據(jù)來恢復(fù)中斷的程序 線程的執(zhí)行。處理器返回到冗余執(zhí)行模式,用處理器狀態(tài)數(shù)據(jù)初始化 執(zhí)行核心,并恢復(fù)中斷的程序線程。可以通過模式切換指令實現(xiàn)冗余 模式和分離模式之間的切換。
已經(jīng)提供了該公開的實施方案來說明本發(fā)明的不同特性。從本公 開內(nèi)容獲益的處理器設(shè)計領(lǐng)域的技術(shù)人員將認識到公開的實施方案的 變體和改進依然屬于所附權(quán)利要求的精神和范圍之中。
權(quán)利要求
1.一種處理器,包括第一和第二執(zhí)行核心,當處理器處于分離模式時該第一和第二執(zhí)行核心獨立地處理指令,當處理器處于冗余模式時該第一和第二執(zhí)行核心以鎖定步驟處理相同的指令;校驗單元,當處理器處于冗余模式時校驗單元比較來自第一和第二執(zhí)行核心的結(jié)果,在該第一和第二執(zhí)行核心處于冗余模式時當校驗單元檢測錯誤該第一和第二執(zhí)行核心轉(zhuǎn)換到分離模式,該第一和第二執(zhí)行核心用校驗單元檢測到該錯誤后識別出的未損壞處理器狀態(tài)數(shù)據(jù)初始化。
2. 權(quán)利要求1的處理器,其中當處理器進入分離模式時,在與每 個執(zhí)行核心相關(guān)的選中的存儲器結(jié)構(gòu)中識別出該未損壞的處理器狀態(tài) 數(shù)據(jù),復(fù)制未損壞的處理器狀態(tài)數(shù)據(jù)到指定的存儲單元,并協(xié)調(diào)所復(fù) 制的處理器狀態(tài)數(shù)據(jù)。
3. 權(quán)利要求2的處理器,其中該第一和第二執(zhí)行核心在會合狀態(tài) 被同步并被恢復(fù)到冗余模式。
4. 權(quán)利要求1的處理器,其中該處理器是在包括主存儲器的計算 機系統(tǒng)中并且處理器狀態(tài)數(shù)據(jù)被保存到主存儲器的不可高速緩存的部 分。
5. —種處理器,包括第一和第二執(zhí)行核心,該第一和第二執(zhí)行核心當處于冗余模式時 以鎖定步驟工作而當處于分離模式時獨立地工作,當在處于冗余模式 檢測到錯誤時該第一和第二執(zhí)行核心轉(zhuǎn)換到分離模式,該第一和第二 執(zhí)行核心用從未損壞處理器狀態(tài)數(shù)據(jù)恢復(fù)的一組處理器狀態(tài)數(shù)據(jù)在冗 余模式被恢復(fù)。
6. 權(quán)利要求5的處理器,其中該笫一和第二執(zhí)行核心通過模式轉(zhuǎn) 換指令轉(zhuǎn)換到分離模式。
7. 權(quán)利要求6的處理器,其中在轉(zhuǎn)換到分離模式之后,每個執(zhí)行 核心獨立地執(zhí)行一部分錯誤恢復(fù)程序以識別并保存與其存儲器結(jié)構(gòu)相 關(guān)的未損壞處理器數(shù)據(jù)到指定的存儲器單元。
8. 權(quán)利要求7的處理器,其中執(zhí)行核心之一用來自另一個執(zhí)行核 心的指定存儲單元的所保存的處理器狀態(tài)數(shù)據(jù)更新其存儲器結(jié)構(gòu)中的已損壞的數(shù)據(jù)。
9. 權(quán)利要求8的處理器,其中錯誤恢復(fù)例行程序通過模式轉(zhuǎn)換指 令恢復(fù)處理器到冗余模式。
10. —種處理器,包括第一和第二執(zhí)行核心,該第一和第二執(zhí)行核心當處理器處于冗余執(zhí)行模式時以鎖定步驟工作而當處理器處于分離執(zhí)行模式時獨立地工 作;以及校驗裝置,使得當處理器在處于冗余執(zhí)行模式時開始從軟錯誤恢 復(fù)的方法,用于實現(xiàn)該方法的裝置包括用于轉(zhuǎn)換處理器到分離執(zhí)行模式的裝置;用于保存來自每個執(zhí)行核心的未損壞的處理器狀態(tài)數(shù)據(jù)到指定的 存儲單元的裝置;從所保存的未損壞的處理器狀態(tài)數(shù)據(jù)恢復(fù)處理器狀態(tài)數(shù)據(jù)的最小 集的裝置;以及用于用該處理器狀態(tài)數(shù)據(jù)的最小集初始化每個執(zhí)行核心的裝置。
11. 權(quán)利要求10的處理器,其中用于恢復(fù)處理器狀態(tài)數(shù)據(jù)的最小 集的裝置包括用從執(zhí)行核心之一中保存的未損壞的處理器狀態(tài)數(shù)據(jù)代 替來自另一個執(zhí)行核心的已損壞的處理器狀態(tài)數(shù)據(jù)的裝置。
12. 權(quán)利要求11的處理器,其中用于初始化每個執(zhí)行核心的裝置包括用于轉(zhuǎn)換處理器到冗余執(zhí)行模式的裝置;以及 用于將來自指定的存儲單元的處理器狀態(tài)數(shù)據(jù)復(fù)制到它們的相關(guān) 執(zhí)行核心的裝置。
全文摘要
本發(fā)明涉及糾正軟錯誤的固件機。本發(fā)明提供一種計算機系統(tǒng),包括有雙執(zhí)行核心的處理器和存儲錯誤恢復(fù)程序的非易失性存儲器。當處理器處于冗余執(zhí)行模式時處理器的執(zhí)行核心以鎖定步驟操作,當處理器處于分離執(zhí)行模式時它們獨立地操作。當處理器在以冗余執(zhí)行模式執(zhí)行的同時檢測到軟錯誤時錯誤恢復(fù)程序被調(diào)用。錯誤恢復(fù)程序切換處理器到分離執(zhí)行模式。在分離模式下,每個執(zhí)行核心保存未損壞的處理器狀態(tài)數(shù)據(jù)到指定的存儲單元并用來自另一個執(zhí)行核心的相應(yīng)的處理器狀態(tài)數(shù)據(jù)更新任何已損壞的數(shù)據(jù)。錯誤恢復(fù)程序返回處理器到冗余模式,用恢復(fù)的處理器狀態(tài)數(shù)據(jù)初始化每個執(zhí)行核心,并返回處理器的控制到檢測到軟錯誤時正在執(zhí)行的程序線程。
文檔編號G06F11/16GK101539875SQ20091013251
公開日2009年9月23日 申請日期2000年10月4日 優(yōu)先權(quán)日1999年12月21日
發(fā)明者N·T·夸克 申請人:英特爾公司