面向sparc v8處理器的自修復雙冗余流水線的制作方法
【技術領域】
[0001] 本實用新型設及一種微處理器流水線錯誤的檢測與恢復裝置,尤其設及一種 SPARC V8處理器中流水線錯誤的檢測與恢復裝置。
【背景技術】
[0002] 單粒子翻轉(zhuǎn)(Single Event化set,SEU)是在空間應用環(huán)境下,由于單粒子入射導 致集成電路中存儲單元發(fā)生數(shù)據(jù)翻轉(zhuǎn)錯誤的事件,是空間環(huán)境下電子系統(tǒng)發(fā)生故障和工作 異常的重要誘因之一。隨著半導體工藝技術的快速發(fā)展,忍片的尺寸在不斷減小,處理器工 作頻率不斷提高,節(jié)點工作電壓的降低使得單粒子翻轉(zhuǎn)現(xiàn)象越來越嚴重。研究指出,在納米 級忍片中,單粒子翻轉(zhuǎn)導致的多位數(shù)據(jù)翻轉(zhuǎn)(MBU)概率也在迅速提高,會導致最多8位隨機 數(shù)據(jù)翻轉(zhuǎn)錯誤,對空間應用的電子系統(tǒng)產(chǎn)生更大的危害。在微處理器及電子系統(tǒng)中采取加 固措施對SKJ故障進行容錯設計已成為重要的技術手段。
[0003] 作為現(xiàn)代微處理器的重要組成部分,流水線主要完成程序代碼的指令流執(zhí)行,并 將執(zhí)行結(jié)果寫入數(shù)據(jù)存儲和寄存器堆。如果單粒子轟擊流水線導致級間寄存器發(fā)生翻轉(zhuǎn)或 單粒子瞬變(SET)引發(fā)的錯誤數(shù)據(jù)被鎖存,就會導致流水線執(zhí)行結(jié)果不正確,在沒有對流水 線單元進行容錯加固的情況下,錯誤的執(zhí)行結(jié)果將會擴散到數(shù)據(jù)存儲和寄存器堆或者執(zhí)行 錯誤的指令流,進而導致更多不可控的錯誤產(chǎn)生。因此,對于空間應用的高可靠微處理器而 言,進行流水線單元的容錯設計具有重要的意義。
[0004] 現(xiàn)有對空間微處理器的加固技術有W下=種方案:采用基于時間的容錯方法,能 有效解決MBU問題,但是處理器性能大大降低;采用基于編碼的容錯方法,只能有效的驗證 計算部分的正確性,并且不同的編碼方式針對不同的單粒子故障不能全部處理,容錯能力 有限;采用基于硬件冗余的方案,采用如圖1所示的寄存器級S模冗余時,無法應對MBU故 障;采用如圖2所示的流水線級=模冗余時,雖然可W定位出故障流水線,但是硬件資源功 耗等開銷較大;流水線級雙模冗余可W應對MBU故障,但是無法定位,起不到屏蔽故障的作 用,每次都進行流水線回退會顯著增加流水線性能開銷,尤其是在單粒子故障日益常見的 情況下會導致整體處理速度明顯降低??傊F(xiàn)有技術無法實現(xiàn)一個W低面積開銷并能夠 故障檢測、定位、屏蔽故障并有效應對MBU故障的CPU加固方案。
【發(fā)明內(nèi)容】
[0005] 本實用新型的目的在于設計一種面向SPARC V8的處理器的自修復雙冗余流水,能 夠從系統(tǒng)結(jié)構上有效的屏蔽單粒子翻轉(zhuǎn)(S抓)、單粒子瞬態(tài)(SET)導致的多位數(shù)據(jù)翻轉(zhuǎn)故 障。
[0006] 為實現(xiàn)上述目的,本實用新型所采用的技術方案為:
[0007] -種面向SPARC V8處理器的自修復雙冗余流水線,其特征在于:所述自修復雙冗 余流水線包括流水線A、流水線B、指令緩存(301)、自校驗模塊、比較邏輯巧01)、流水線恢復 模塊(601)、數(shù)據(jù)緩存(701)、寄存器堆(801);所述流水線A包括取指(101)、譯碼(102)、執(zhí)行 (103)、訪存(104)、寫回(105)五個流水段,所述流水線B包括取指(201)、譯碼(202)、執(zhí)行 (203)、訪存(204)、寫回(205)五個流水段,在流水線A和流水線B的各個流水段之間分別設 置級間寄存器,數(shù)據(jù)緩存(701)和寄存器堆(801)由流水線A和流水線B共享,用于在執(zhí)行指 令流時默認寫入流水線A的執(zhí)行結(jié)果,在流水線A執(zhí)行錯誤時,寫入流水線B的執(zhí)行結(jié)果;所 述指令緩存(301)用于存儲流水線執(zhí)行指令的代碼,送給流水線A和流水線B的取指部件;所 述自校驗模塊包括自校驗(401)、自校驗(402)、自校驗(403)、自校驗(404)和自校驗(405), 用于流水線A和流水線B中的級間寄存器進行自校驗,產(chǎn)生校驗錯誤信息,送入比較邏輯 (501)用于定位發(fā)生單粒子故障的流水線;所述比較邏輯巧01)設置在流水線A與流水線B之 間,用于對兩個流水線單元的輸出信息進行比較,檢測流水線的錯誤;所述流水線恢復模塊 (601)用于在比較邏輯(501)和自校驗模塊檢測出現(xiàn)流水線錯誤后,根據(jù)錯誤定位結(jié)果,通 過快速恢復或整體恢復方式對錯誤的流水線或兩條流水線的狀態(tài)進行恢復;所述數(shù)據(jù)緩存 (701)用于存儲流水線輸出的數(shù)據(jù),并向流水線提供運算操作數(shù);所述寄存器堆(801)用于 存儲流水線輸出的數(shù)據(jù),并向流水線提供運算操作數(shù)。
[0008] 本實用新型實現(xiàn)的面向SPARC V8處理器的自修復雙冗余流水線,采用硬件冗余的 思想,對傳統(tǒng)的流水線級雙模冗余結(jié)構進行改進,在關鍵節(jié)點設置比較器,防止錯誤數(shù)據(jù)流 出結(jié)構之外(高速緩存、寄存器文件),同時對流水線級間寄存器增加自校驗模塊,根據(jù)校驗 結(jié)果能夠快速定位故障流水線,啟動故障屏蔽模式,為解決由單粒子引發(fā)的SET、SKJW及日 益嚴重的M腳提供了技術保障。
【附圖說明】
[0009] 圖1是寄存器級=模冗余結(jié)構圖;
[0010] 圖2是流水線級S模冗余結(jié)構圖;
[0011] 圖3是LE0N2處理器流水線單元結(jié)構圖;
[0012] 圖4是根據(jù)本實用新型的自修復雙冗余流水線的結(jié)構圖。
【具體實施方式】
[0013] 自修復雙冗余里流水線(Self-Recove巧 Dual Pipeline,SRDP),是一種WLE0N2 處理器為平臺,面向RISC架構的流水線單元進行加固的裝置和方法。LE0N2是基于SPARC V8 體系結(jié)構的嵌入式處理器,采用32位的RISC架構,其流水線單元為經(jīng)典的五級流水線。
[0014] LE0N2處理器中的流水線單元包括取指(IF)、譯碼(ID)、執(zhí)行化X)、訪存(ME)、寫回 (WR)五個組合邏輯單元,W及各流水段之間設置的級間寄存器IF、IF/ID、ID/EX、EX/ME、ME/ WR,如圖3所示。單粒子轟擊流水線的組合邏輯部分,產(chǎn)生毛刺可能會被級間寄存器鎖存出 現(xiàn)SET故障,轟擊級間寄存器時會直接導致寄存器出現(xiàn)S抓或M腳故障,級間寄存器將組合邏 輯產(chǎn)生的關鍵信息寄存并在級間傳遞,寄存著錯誤信息的級間寄存器會導致錯誤的執(zhí)行結(jié) 果,而錯誤結(jié)果會在ME或WR段被寫入數(shù)據(jù)存儲器或寄存器堆。
[0015] 為了有效的應對福射造成的單粒子軟錯誤,尤其是MBU問題。綜合考慮各個方案時 間和空間開銷,基于硬件冗余的思想,采用資源開銷較少的流水線級雙模冗余結(jié)構,并行執(zhí) 行相同的指令流,在關鍵節(jié)點設置比較器比較兩條流水線的信息,一旦流水線受到單粒子 轟擊而出現(xiàn)故障,比較器將會檢測錯誤(兩條流水線在執(zhí)行指令過程中出現(xiàn)完全相同的故 障概率非常小,在運里忽略不計),阻止錯誤結(jié)果流出;同時,為了實現(xiàn)故障定位功能,對流 水線級間寄存器增加自校驗模塊,檢測級間寄存數(shù)據(jù)的正確性,當粒子轟擊流水線導致寄 存器翻轉(zhuǎn),則置位此條流水線錯誤信號位;最后對比結(jié)果不同,判斷出問題流水線,則利用 正確流水線的當前狀態(tài)替換錯誤流水線,消耗一個時鐘周期,實現(xiàn)快速恢復,在出現(xiàn)SET錯 誤被鎖存的情況下,級間寄存器自校驗模塊無法判斷出錯誤,則采用兩條流水線回退恢復 的方式,保證流水線的正常運行。此種機制能夠有效的降低流水線恢復導致的性能開銷,自 修復雙冗余流水線的具體恢復方案如表1所示。SRDP結(jié)構驗證了流水線中所有功能元件的 正確性,保證流水線正常運行,比較器信號對比相同,則將流水線數(shù)據(jù)傳出到外部設備(寄 存器堆,存儲器等)。
[0016]表1流水線恢復方案
[0018] 基于上述基本原理與設置,本實用新型的面向SPARC V8體系結(jié)構的嵌入式微處理 器流水線單元加固的一種【具體實施方式】如下:
[0019] 在SPARC V8的嵌入式處理器中,將流水線單元設置成如圖4所示,主要包括流水線 A、流水線B、指令緩存器(301)、自校驗模塊、比較邏輯(501)、流水線恢復模塊(601)、數(shù)據(jù)緩 存(701)、寄存器堆(801)。
[0020] 流水線A和流水線B包括取指(IF)、譯碼(ID)、執(zhí)行化X)、訪存(ME)、寫回(WR)組合 邏輯單元,W及各流水級之間設置的級間寄存器(巧、^/10、10/^(、6乂/^6、16/胖1〇,兩條流 水線各自擁有一套數(shù)據(jù)通路,同時共享數(shù)據(jù)存儲、指令存儲和寄存器堆,在并行執(zhí)行相同指 令流時默認用流水線A的執(zhí)行結(jié)果與外部的存儲單元和寄存器堆進行數(shù)據(jù)交互,流水線B 為備份單元。
[0021] 指令緩存(301)用于存儲流水線執(zhí)行的代碼,與流水線A中IF段進行數(shù)據(jù)交互,流 水線A取出指令后分發(fā)給兩條流水線執(zhí)行。