專利名稱:微處理器的整數(shù)單元中五級容錯流水結(jié)構(gòu)的實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機(jī)技術(shù)領(lǐng)域,涉及一種SPARC V8兼容型空間計算機(jī)微處理器LSFT32的設(shè)計和制造,特別涉及LSFT32微處理器的整數(shù)單元(IU)中所采用的五級容錯流水結(jié)構(gòu)的實現(xiàn)方法。
背景技術(shù):
自1975年IBM公司率先提出精簡指令系統(tǒng)的思想以來,伴隨著微電子和計算機(jī)技術(shù)的不斷發(fā)展,精簡指令系統(tǒng)計算機(jī)(reduced instruction setcomputer,簡稱RISC)已成為當(dāng)前計算機(jī)領(lǐng)域的主流產(chǎn)品。RISC最主要的特點就是微處理器執(zhí)行的所有操作都是面向寄存器的,其主要優(yōu)點在于(1)從寄存器到寄存器的操作指令充分利用了VLSI工藝所帶來的高速片上頻寬來進(jìn)行數(shù)據(jù)傳送,大大提升了指令的執(zhí)行速度。
(2)由于簡化了指令控制邏輯,從而進(jìn)一步縮小了硬布線邏輯構(gòu)成的控制部件的芯片面積,使得芯片上可以實現(xiàn)更多的寄存器。
SPARC(Scalable Processor ARChitecture)是一種性能隨著工藝技術(shù)的改進(jìn)可成比提高的處理器體系結(jié)構(gòu)。它完全遵循了RISC面向寄存器操作的設(shè)計思想,在系統(tǒng)中定義了一個大容量的寄存器堆,包括只能由系統(tǒng)訪問的系統(tǒng)寄存器,以及用于通常操作的工作寄存器。SPARC采用“寄存器窗口”的方式對寄存器組進(jìn)行管理。系統(tǒng)將工作寄存器組成若干個窗口,建立起環(huán)形結(jié)構(gòu),利用重疊寄存器窗口技術(shù)來加快程序的運轉(zhuǎn)。
RISC系統(tǒng)中采用流水線的控制方式使得大多數(shù)指令都可在單周期內(nèi)完成。在LSFT32微處理器中支持五級流水線結(jié)構(gòu),包括取指階段、譯碼階段、執(zhí)行階段、存儲階段和回寫段。如果可以保證寄存器中數(shù)據(jù)的正確性,在不出現(xiàn)相關(guān)問題和條件轉(zhuǎn)移指令的情況下,每個節(jié)拍都會有一條指令執(zhí)行完成流出流水線(除去LODE/STORE等多周期指令)。
針對寄存器堆的容錯問題,目前的處理方式主要包括以下兩種①在譯碼段增加EDAC處理,然后再將數(shù)據(jù)送入執(zhí)行段。該方式的優(yōu)點在于控制簡單、易實現(xiàn),但由于EDAC增加了譯碼段的時間開銷,限制了處理器的頻率,大大降低了RISC處理器性能。
②采用兩條流水線并行運行,當(dāng)結(jié)果比較一致時,正常進(jìn)入回寫段,否則從出錯指令處重啟流水線,例如IBM的S/390 G5微處理器。該方式可以檢測到寄存器中出現(xiàn)的所有類型的硬件和軟件錯誤,但卻極大的增加了芯片面積的開銷。因而,該方式僅適用于對性能要求不高的微處理器中。
發(fā)明內(nèi)容
針對上述現(xiàn)有技術(shù)存在的缺陷與不足,本發(fā)明的目的在于提供一種廣泛適用于SPARC結(jié)構(gòu)微處理器的、執(zhí)行效率高、結(jié)構(gòu)完整的五級容錯流水結(jié)構(gòu)。
實現(xiàn)上述發(fā)明目的的技術(shù)方案是這樣的一種微處理器的整數(shù)單元中五級容錯流水結(jié)構(gòu)的實現(xiàn)方法,其特征在于,該流水結(jié)構(gòu)由取指部件、譯碼部件、執(zhí)行部件、存儲訪問部件和寄存器寫部件組成,上述流水結(jié)構(gòu)的所有部件依次相連,并與一流水線控制及背板寄存器相連通;其中譯碼部件的輸出和存儲訪問部件之間還連接有一糾檢錯處理部件,用于完成源操作數(shù)的錯誤檢測與糾正,并建立相應(yīng)的控制信息,每條指令在流水線控制及背板寄存器的控制下,經(jīng)過五級處理完成;具體處理過程包括下列步驟1)在取指部件取得當(dāng)前PC所指的指令送往譯碼部件進(jìn)行譯碼;2)譯碼部件根據(jù)指令的編碼格式和內(nèi)容獲得源操作數(shù)和目的操作數(shù)的地址,將背板寄存器文件中的源操作數(shù)送往執(zhí)行部件,并預(yù)置部分陷阱標(biāo)記;3)執(zhí)行部件進(jìn)行相應(yīng)的加/減/乘/除算術(shù)運算和與/或/非邏輯運算,若運算為多周期時,流水線進(jìn)入保持等待狀態(tài);在存儲訪問部件從乘法器、除法器運算單元中取得目的操作數(shù),并預(yù)置部分陷阱標(biāo)記;4)在寄存器寫部件完成相應(yīng)的陷阱處理,并將數(shù)據(jù)寫入背板寄存器文件中;5)在譯碼部件將背板寄存器文件中的源操作數(shù)送往執(zhí)行部件的同時,該數(shù)據(jù)同時被送往糾檢錯模塊進(jìn)行處理;當(dāng)糾檢錯模塊發(fā)現(xiàn)單位錯時,則進(jìn)行糾正,并傳送至寄存器寫部件,由寄存器寫部件將糾正后的數(shù)據(jù)回寫到背板寄存器中;之后,流水線從PC所指的當(dāng)前出錯指令處和nPC所指的下一條指令處開始重新執(zhí)行;若糾檢錯模塊發(fā)現(xiàn)是多位錯,則直接產(chǎn)生陷阱,流水線停止,進(jìn)入陷阱處理程序。
本發(fā)明的五級容錯流水結(jié)構(gòu)增加了并行的容錯處理,即在EX段增加并行的糾檢錯處理部件,在將DE段的源操作數(shù)送往EX段運算的同時,也將該數(shù)據(jù)送往糾檢錯處理部件進(jìn)行處理。當(dāng)糾檢錯處理部件發(fā)現(xiàn)單位錯時,則進(jìn)行糾正,并廢除當(dāng)前執(zhí)行指令的后續(xù)指令,后在WR段將糾正后的數(shù)據(jù)回寫到存儲器中。之后,流水線從PC所指的當(dāng)前出錯指令處和nPC所指的下一條指令處開始重新執(zhí)行,若糾檢錯模塊發(fā)現(xiàn)是多位錯,則直接產(chǎn)生陷阱,流水線停止,進(jìn)入陷阱處理程序。
本發(fā)明的五級容錯流水結(jié)構(gòu),具有以下優(yōu)點(1)該發(fā)明采用并行處理的思想設(shè)計容錯結(jié)構(gòu),減少了EDAC所帶來的時間開銷,大大提高了流水線的執(zhí)行效率;(2)該發(fā)明所采用的EDAC方法支持自動糾正單位錯誤,并可檢測2到8位錯誤,提高了對寄存器文件中數(shù)據(jù)的糾錯效率;(3)該發(fā)明中為實現(xiàn)容錯所增加的糾檢錯處理(EDAC)部件以及相應(yīng)的控制電路規(guī)模相對較小,節(jié)省了芯片面積的開銷,易于設(shè)計實現(xiàn);(4)該發(fā)明所涉及的流水線并行容錯處理的方式廣泛適用于SPARC結(jié)構(gòu)的微處理器,并可推廣到其它RISC結(jié)構(gòu)的微處理器中進(jìn)行應(yīng)用,對于提高流水線的容錯能力是很有效的;(5)利用該發(fā)明所實現(xiàn)的SPARC V8兼容型空間計算機(jī)微處理器LSFT32具有很好的容錯能力,可實現(xiàn)對于寄存器文件錯誤的正確處理。
圖1是五級容錯流水線控制結(jié)構(gòu);圖2是五級容錯流水線執(zhí)行時空圖;圖3是指令正常執(zhí)行時的流水線狀態(tài);圖4是產(chǎn)生正常陷阱時的流水線狀態(tài);圖5是檢測/糾正寄存器文件單位錯誤時的流水線狀態(tài);圖6是背板寄存器文件出現(xiàn)不可糾正錯誤產(chǎn)生陷阱時的流水線狀態(tài)。
為了更清楚的理解本發(fā)明,以下結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì)描述。
具體實施例方式
在SPARC V8兼容型微處理器LSFT32中采用五級容錯流水結(jié)構(gòu)實現(xiàn)指令的處理,其控制邏輯的硬件電路結(jié)構(gòu)如圖1所示,該流水結(jié)構(gòu)由取指部件、譯碼部件、執(zhí)行部件、存儲訪問部件和寄存器寫部件組成,上述流水結(jié)構(gòu)的所有部件依次相連,并與一流水線控制及背板寄存器相連通;其中譯碼部件的輸出和存儲訪問部件之間還連接有一糾檢錯處理部件,用于完成源操作數(shù)的錯誤檢測與糾正,并建立相應(yīng)的控制信息,每條指令在流水線控制及背板寄存器的控制下,經(jīng)過五級處理完成;在寄存器中數(shù)據(jù)正確的情況下,每個節(jié)拍完成一條單周期指令的執(zhí)行,其時空關(guān)系如圖2所示;在出現(xiàn)可糾正錯誤的情況下,三到四個節(jié)拍即完成流水線的重啟。
其五級容錯流水結(jié)構(gòu)的工作原理是在正常情況下,五級流水結(jié)構(gòu)在FE段取得當(dāng)前PC所指的指令送往DE段進(jìn)行譯碼;在DE段根據(jù)指令的編碼格式和內(nèi)容獲得源操作數(shù)和目的操作數(shù)的地址,將寄存器文件中的源操作數(shù)送往EX,并預(yù)置部分陷阱標(biāo)記,若為LODE指令則需多等一個節(jié)拍,才能從存儲器中取得數(shù)據(jù);在EX段進(jìn)行相應(yīng)的加/減/乘/除等算術(shù)運算和與/或/非等邏輯運算,若運算為多周期時,流水線進(jìn)入保持等待狀態(tài);在ME段從乘法器、除法器等運算單元中取得目的操作數(shù),并預(yù)置部分陷阱標(biāo)記;在WR段完成相應(yīng)的陷阱處理,并將數(shù)據(jù)寫入寄存器文件中,若為STORE指令需要兩個節(jié)拍才能將數(shù)據(jù)寫入存儲器單元中。
參見圖3,圖3是指令在流水線中正常執(zhí)行時的狀態(tài),每個節(jié)拍可有一條指令(除去LOAD/STORE等多周期指令)完成操作,流出流水線。在流水線啟動后,經(jīng)過5個節(jié)拍INST1執(zhí)行完成,緊接著第6個、第7個、第8個節(jié)拍分別完成INST2、INST3、INST4。若為LOAD/STORE指令,則需要兩個節(jié)拍才能完成,一個節(jié)拍用于計算地址,另一個節(jié)拍用于讀出/寫入數(shù)據(jù),此時流水線保持(HOLD)等待。
參見圖4,圖4是指令I(lǐng)NST2在流水線中執(zhí)行時產(chǎn)生陷阱的狀態(tài),在第4個節(jié)拍INST2在EX段中執(zhí)行引起陷阱。在第5個節(jié)拍,INST1完成ME段操作流出流水線,而INST2則在ME段進(jìn)行陷阱預(yù)置。在第6個節(jié)拍,在WR段中處理INST2所引起的陷阱,同時將流水線中的后續(xù)指令I(lǐng)NST3、INST4、INST5清空(FLUSH)。在第7個節(jié)拍,流水線停止,進(jìn)入陷阱處理程序。
參見圖5,圖5是指令I(lǐng)NST2在EX段發(fā)現(xiàn)操作數(shù)單位錯進(jìn)行糾正的流水線狀態(tài)。第4個節(jié)拍,在EX段中INST2執(zhí)行的同時進(jìn)行源操作數(shù)的錯誤檢查(CHECK),糾正單位錯;第5個節(jié)拍,在ME段中將一個經(jīng)過修正的源操作數(shù)寫入目的操作數(shù)地址所指定的寄存器中,完成數(shù)據(jù)的修正,并將后續(xù)指令I(lǐng)NST3清除;第6個節(jié)拍,在WR段中把目的操作數(shù)寄存器中保存的數(shù)據(jù)回寫到寄存器文件中,將出錯的源操作數(shù)更新為正確的值,同時將PC所指的當(dāng)前出錯的指令和nPC所指的下一條指令送入流水線中,重新開始執(zhí)行。若當(dāng)前指令之前執(zhí)行的是一條跳轉(zhuǎn)指令,則跳轉(zhuǎn)所產(chǎn)生的轉(zhuǎn)移地址是PC所指的當(dāng)前指令的下一條指令,故必須將當(dāng)前指令和其下一條指令都重新送入流水線,才能保證流水線正常推進(jìn)。第7個節(jié)拍,INST2的后續(xù)指令I(lǐng)NST3進(jìn)入流水線。
參見圖6,圖6是指令I(lǐng)NST2在EX段發(fā)現(xiàn)不可修正的錯誤而引起陷阱時的流水線狀態(tài)。第4個節(jié)拍,在EX段中INST2執(zhí)行的同時進(jìn)行源操作數(shù)的錯誤檢查,發(fā)現(xiàn)有不可修正的錯誤;第5個節(jié)拍,在ME段中將EX段生成的目的操作數(shù)標(biāo)記為錯誤數(shù)據(jù),并預(yù)置陷阱標(biāo)記,同時將后續(xù)指令I(lǐng)NST3清除;第6個節(jié)拍,在WR段中處理INST2所引起的陷阱,同時將流水線中的后續(xù)指令I(lǐng)NST3、INST4、INST5清空(FLUSH)。在第7個節(jié)拍,流水線停止,進(jìn)入陷阱處理程序。
權(quán)利要求
1.一種微處理器的整數(shù)單元中五級容錯流水結(jié)構(gòu)的實現(xiàn)方法,其特征在于,該流水結(jié)構(gòu)由取指部件、譯碼部件、執(zhí)行部件、存儲訪問部件和寄存器寫部件組成,上述流水結(jié)構(gòu)的所有部件依次相連,并與一流水線控制及背板寄存器相連通;其中譯碼部件的輸出和存儲訪問部件之間還連接有一糾檢錯處理部件,用于完成源操作數(shù)的錯誤檢測與糾正,并建立相應(yīng)的控制信息,每條指令在流水線控制及背板寄存器的控制下,經(jīng)過五級處理完成;具體處理過程包括下列步驟1)在取指部件取得當(dāng)前PC所指的指令送往譯碼部件進(jìn)行譯碼;2)譯碼部件根據(jù)指令的編碼格式和內(nèi)容獲得源操作數(shù)和目的操作數(shù)的地址,將背板寄存器文件中的源操作數(shù)送往執(zhí)行部件,并預(yù)置部分陷阱標(biāo)記;3)執(zhí)行部件進(jìn)行相應(yīng)的加/減/乘/除算術(shù)運算和與/或/非邏輯運算,若運算為多周期時,流水線進(jìn)入保持等待狀態(tài);在存儲訪問部件從乘法器、除法器運算單元中取得目的操作數(shù),并預(yù)置部分陷阱標(biāo)記;4)在寄存器寫部件完成相應(yīng)的陷阱處理,并將數(shù)據(jù)寫入背板寄存器文件中;5)在譯碼部件將背板寄存器文件中的源操作數(shù)送往執(zhí)行部件的同時,該數(shù)據(jù)同時被送往糾檢錯模塊進(jìn)行處理;當(dāng)糾檢錯模塊發(fā)現(xiàn)單位錯時,則進(jìn)行糾正,并傳送至寄存器寫部件,由寄存器寫部件將糾正后的數(shù)據(jù)回寫到背板寄存器中;之后,流水線從PC所指的當(dāng)前出錯指令處和nPC所指的下一條指令處開始重新執(zhí)行;若糾檢錯模塊發(fā)現(xiàn)是多位錯,則直接產(chǎn)生陷阱,流水線停止,進(jìn)入陷阱處理程序。
全文摘要
本發(fā)明公開了微處理器的整數(shù)單元中五級容錯流水結(jié)構(gòu)的實現(xiàn)方法,流水結(jié)構(gòu)由取指部件、譯碼部件、執(zhí)行部件、存儲訪問部件和寄存器寫部件組成,并和一流水線控制及背板寄存器相連通,其中譯碼部件的輸出和存儲訪問部件之間還連接有一糾檢錯處理部件;用于完成源操作數(shù)的錯誤檢測與糾正,并建立相應(yīng)的控制信息,每條指令在流水線控制及背板寄存器的控制下,經(jīng)過五級處理完成;當(dāng)糾檢錯處理部件發(fā)現(xiàn)單位錯時,則進(jìn)行糾正,并送入寄存器寫部件,由寄存器寫部件將糾正后的數(shù)據(jù)回寫到背板寄存器中;之后,流水線從PC所指的當(dāng)前出錯指令處和nPC所指的下一條指令處開始重新執(zhí)行;若糾檢錯模塊發(fā)現(xiàn)是多位錯,則直接產(chǎn)生陷阱,流水線停止,進(jìn)入陷阱處理程序。
文檔編號G06F9/38GK1731346SQ20051004310
公開日2006年2月8日 申請日期2005年8月15日 優(yōu)先權(quán)日2005年8月15日
發(fā)明者辛明瑞, 時晨, 張偉功, 靳加農(nóng) 申請人:中國航天時代電子公司第七七一研究所