欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的裝置及方法

文檔序號(hào):6573257閱讀:482來源:國知局
專利名稱:一種基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的裝置及方法
技術(shù)領(lǐng)域
本發(fā)明涉及微處理器設(shè)計(jì)領(lǐng)域,特別涉及一種檢驗(yàn)微處理器流水線瞬態(tài)故障的裝置及方法。
背景技術(shù)
現(xiàn)有技術(shù)中,比如專利號(hào)01141495.2,專利名稱為“一種基于操作隊(duì)列復(fù)用的指令流水線系統(tǒng)和方法”的中國專利中公開了一種微處理器流水線,該流水線結(jié)構(gòu)包括取指部件、譯碼部件、操作隊(duì)列、定點(diǎn)及浮點(diǎn)寄存器堆及多個(gè)功能部件。指令流水過程是取指部件訪問指令存儲(chǔ)器取出指令送入指令寄存器,譯碼部件將指令譯碼并送入操作隊(duì)列,操作隊(duì)列按次序根據(jù)指令的類型將指令發(fā)射到相應(yīng)的功能部件保留站中,指令由功能部件運(yùn)算后通過結(jié)果總線寫回到操作隊(duì)列,最后是指令有序結(jié)束,釋放占用的操作隊(duì)列項(xiàng)。
現(xiàn)有技術(shù)的不足在于缺乏容錯(cuò)能力,比如對于系統(tǒng)中出現(xiàn)的瞬態(tài)故障就容易導(dǎo)致系統(tǒng)失效。瞬態(tài)故障是一種在高能粒子輻射、信號(hào)串?dāng)_或工作電壓波動(dòng)等條件下芯片出現(xiàn)的間歇性故障。它不同于硬故障,具有不可再現(xiàn)性和非永久性,因此又稱為軟錯(cuò)誤。隨著晶體管尺寸的不斷縮小和芯片工作電壓的持續(xù)下降,瞬態(tài)故障已成為系統(tǒng)失效的主要原因。
一些商用微處理器通過復(fù)制硬件來檢測流水線中的瞬態(tài)故障。例如在390 G5微處理器中,I單元和E單元都有重復(fù)的I鏡像單元和E鏡像單元。在每個(gè)時(shí)鐘周期,R單元和一級Cache單元通過比較I單元與I鏡像單元的輸出以及E單元與E鏡像單元的輸出來檢測流水線瞬態(tài)故障。雖然該技術(shù)能夠有效地檢測出瞬態(tài)故障,但是它大大增加了芯片面積,提高了生產(chǎn)成本,參見文獻(xiàn)“T.J.Slegel,R.M.Averill III,et al..,IBM’s S/390G5 Microprocessor Design,Micro,IEEE,1999,19(2)12-23.”公開的內(nèi)容。
鑒于現(xiàn)有技術(shù)的不足,人們就希望有一種檢驗(yàn)流水線瞬態(tài)故障的裝置及方法,用于指令流水線從而使其具備容錯(cuò)能力。

發(fā)明內(nèi)容
本發(fā)明的目的是解決現(xiàn)有技術(shù)中指令流水線缺乏容錯(cuò)能力的技術(shù)問題,提供一種基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的裝置及方法,從而提供高可靠流水線裝置。
為了實(shí)現(xiàn)上述目的,本發(fā)明采取如下技術(shù)方案一種基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的裝置,包括操作隊(duì)列,與該操作隊(duì)列連接的寄存器堆,與所述操作隊(duì)列和所述寄存器堆連接的保留站;所述操作隊(duì)列中有用于標(biāo)示主指令和冗余指令的狀態(tài)位。
在上述技術(shù)方案中,進(jìn)一步地,還包括用于將操作隊(duì)列中的操作經(jīng)寄存器重命名及讀取操作數(shù)后發(fā)射到相應(yīng)的保留站的發(fā)射總線,該發(fā)射總線中有用于表示發(fā)射指令類別的狀態(tài)位。
在上述技術(shù)方案中,進(jìn)一步地,所述寄存器堆為通用寄存器和浮點(diǎn)寄存器。
在上述技術(shù)方案中,進(jìn)一步地,所述寄存器堆中的每個(gè)寄存器包括用于標(biāo)示當(dāng)前寄存器的值對主指令有效或者該寄存器正成為某條主指令的結(jié)果寄存器而沒有寫回的主指令有效位;用于記錄最近一個(gè)把當(dāng)前寄存器作為結(jié)果寄存器的主指令在操作隊(duì)列中的位置的主指令位置域;用于表示當(dāng)前寄存器的值對冗余指令有效或者該寄存器正成為某條冗余指令的結(jié)果寄存器而沒有寫回的冗余指令有效位;用于記錄最近一個(gè)把當(dāng)前寄存器作為結(jié)果寄存器的冗余指令在操作隊(duì)列中的位置的冗余指令位置域。
在上述技術(shù)方案中,進(jìn)一步地,還包括用于當(dāng)操作隊(duì)列中的操作被結(jié)束時(shí)比較主指令和冗余指令的運(yùn)算結(jié)果是否一致的比較邏輯。
在上述技術(shù)方案中,進(jìn)一步地,還包括用于當(dāng)操作隊(duì)列中的操作被結(jié)束時(shí)把運(yùn)算結(jié)果送到寄存器堆的結(jié)束總線,該結(jié)束總線有主指令在操作隊(duì)列中的位置和冗余指令在操作隊(duì)列中的位置。
一種基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的方法,包括如下步驟步驟一,將主指令及其冗余指令送入操作隊(duì)列;步驟二,操作隊(duì)列中的操作經(jīng)寄存器重命名;步驟三,保留站偵聽結(jié)果總線;步驟四,當(dāng)保留站中某條指令的所有操作數(shù)都準(zhǔn)備好時(shí)該指令開始運(yùn)算并把結(jié)果通過結(jié)果總線寫回操作隊(duì)列;步驟五,檢查主指令和冗余指令的運(yùn)算結(jié)果是否一致;如果是一致,則修改處理器狀態(tài);如果不一致,則輸出異常狀態(tài)。
在上述技術(shù)方案中,進(jìn)一步地,在步驟一中,通過重復(fù)取指或復(fù)制指令的方法實(shí)現(xiàn)主指令和冗余指令。
在上述技術(shù)方案中,進(jìn)一步地,步驟二具體包括如下步驟(1)一個(gè)操作發(fā)射時(shí),若該操作是主指令,則相應(yīng)的目標(biāo)寄存器的主指令位置域記錄該操作在操作隊(duì)列中的位置,并置主指令有效位為標(biāo)示該寄存器正成為一主指令的結(jié)果寄存器沒有寫回的狀態(tài);若該操作是冗余指令,則相應(yīng)的目標(biāo)寄存器的冗余指令位置域記錄該操作在操作隊(duì)列中的位置,并置冗余指令有效位為標(biāo)示寄存器正成為一冗余指令的結(jié)果寄存器沒有寫回的狀態(tài);(2)后面的操作發(fā)射時(shí),若該操作是主指令且用到步驟(1)中所述目標(biāo)寄存器,訪問該寄存器時(shí)發(fā)現(xiàn)該寄存器正成為一條主指令的結(jié)果寄存器沒有寫回,則讀出該寄存器中主指令位置域的內(nèi)容并根據(jù)該內(nèi)容訪問操作隊(duì)列;如果主指令位置域表示的操作隊(duì)列位置的值已經(jīng)寫回到操作隊(duì)列則直接從操作隊(duì)列中讀出該值作為該操作的一個(gè)操作數(shù),否則把主指令位置域的值送到保留站并在保留站中記錄該寄存器未準(zhǔn)備好;若該操作是冗余指令且用到步驟(1)中所述目標(biāo)寄存器,訪問該寄存器時(shí)發(fā)現(xiàn)該寄存器正成為一條冗余指令的結(jié)果寄存器沒有寫回,則讀出寄存器中冗余指令位置域的內(nèi)容并根據(jù)該內(nèi)容訪問操作隊(duì)列,如果冗余指令位置域表示的操作隊(duì)列位置的值已經(jīng)寫回到操作隊(duì)列則直接從操作隊(duì)列中讀出該值作為該操作的一個(gè)操作數(shù),否則把冗余指令位置域的值送到保留站并在保留站中記錄該寄存器未準(zhǔn)備好。
在上述技術(shù)方案中,進(jìn)一步地,步驟五中,所述修改處理器狀態(tài),具體包括若當(dāng)前寄存器的主指令位置域等于主指令在操作隊(duì)列中的位置號(hào),則將主指令有效位置為表示該寄存器的值對主指令有效的狀態(tài);若當(dāng)前寄存器的冗余指令位置域等于冗余指令在操作隊(duì)列中的位置號(hào),則將冗余指令有效位置為表示該寄存器的值對冗余指令有效的狀態(tài)。
在上述技術(shù)方案中,進(jìn)一步地,步驟五中,所述輸出異常狀態(tài)是指置起一種特殊例外,該特殊例外具體包括將寄存器堆中所有寄存器的主指令有效位置為表示該寄存器對主指令有效的狀態(tài),冗余指令有效位置為表示該寄存器對冗余指令有效的狀態(tài);清除流水線中的所有指令,從失效的指令處重新取指執(zhí)行。
一種能夠檢驗(yàn)瞬態(tài)故障的流水線系統(tǒng),包括用于取出指令的取指部件;
用于對取出的指令進(jìn)行譯碼,并按指令在程序中出現(xiàn)的先后次序把譯碼后的指令送到操作隊(duì)列的譯碼部件;操作隊(duì)列,用于按指令在程序中出現(xiàn)的先后次序根據(jù)操作的類型把操作發(fā)射到相應(yīng)的保留站,并按次序結(jié)束運(yùn)算結(jié)果已經(jīng)寫回的指令;用于對發(fā)射來的操作進(jìn)行運(yùn)算,把運(yùn)算結(jié)果送回到結(jié)果總線并寫回到操作隊(duì)列的保留站;寄存器堆,用于在結(jié)束指令時(shí),接收由操作隊(duì)列依照指令進(jìn)出操作隊(duì)列的次序?qū)懟丶拇嫫鞯倪\(yùn)算結(jié)果;用于當(dāng)操作隊(duì)列中的操作被結(jié)束時(shí)把運(yùn)算結(jié)果送到寄存器堆的結(jié)束總線;其中,所述操作隊(duì)列中有用于標(biāo)示主指令和冗余指令的狀態(tài)位;所述寄存器堆中的每個(gè)寄存器包括用于標(biāo)示當(dāng)前寄存器的值對主指令有效或者該寄存器正成為某條主指令的結(jié)果寄存器沒有寫回的主指令有效位;用于記錄最近一個(gè)把當(dāng)前寄存器作為結(jié)果寄存器的主指令在操作隊(duì)列中的位置的主指令位置域;用于表示當(dāng)前寄存器的值對冗余指令有效或者該寄存器正成為某條冗余指令的結(jié)果寄存器沒有寫回的冗余指令有效位;用于記錄最近一個(gè)把當(dāng)前寄存器作為結(jié)果寄存器的冗余指令在操作隊(duì)列中的位置的冗余指令位置域;所述結(jié)束總線有主指令的操作隊(duì)列中的位置和冗余指令的操作隊(duì)列中的位置。
與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果本發(fā)明通過擴(kuò)展基于操作隊(duì)列復(fù)用的流水結(jié)構(gòu),能夠檢測操作隊(duì)列、保留站及功能部件上發(fā)生的瞬態(tài)故障,并利用例外機(jī)制恢復(fù)故障;由于時(shí)間冗余技術(shù)的硬件開銷比較小,因此使得本發(fā)明不僅能夠使流水線結(jié)構(gòu)具有容錯(cuò)能力,提高微處理器可靠性,而且硬件開銷小。


圖1是本發(fā)明一實(shí)施例的裝置結(jié)構(gòu)圖;圖2是用本發(fā)明的實(shí)施例進(jìn)行檢錯(cuò)過程的實(shí)例示意圖,圖中表示了在各拍中保留站、寄存器堆和操作隊(duì)列各項(xiàng)的取值。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施方式
對本發(fā)明作進(jìn)一步詳細(xì)描述
本發(fā)明在微處理器指令流水線中采用時(shí)間冗余技術(shù),在相同的硬件中通過重復(fù)執(zhí)行指令來克服瞬態(tài)故障,保證運(yùn)算的正確性。如果發(fā)現(xiàn)指令的執(zhí)行結(jié)果不一致,就重新執(zhí)行該指令直到結(jié)果一致。
如圖1所示,基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的裝置,包括操作隊(duì)列,與該操作隊(duì)列連接的寄存器堆,與所述操作隊(duì)列和所述寄存器堆連接的保留站;所述操作隊(duì)列中有用于標(biāo)示主指令和冗余指令的狀態(tài)位;與保留站連接的還有一些功能部件,如地址運(yùn)算及訪存接口、算術(shù)與邏輯部件、浮點(diǎn)部件等,這些功能部件分別連接到結(jié)果總線仲裁邏輯單元,進(jìn)而通過結(jié)果總線連接到操作隊(duì)列和保留站。
該裝置還包括用于將操作隊(duì)列中的操作經(jīng)寄存器堆重命名及讀取操作數(shù)后發(fā)射到相應(yīng)的保留站的發(fā)射總線,該發(fā)射總線中有用于表示發(fā)射指令類別的狀態(tài)位。
該裝置還包括用于當(dāng)操作隊(duì)列中的操作被結(jié)束時(shí)把運(yùn)算結(jié)果送到寄存器堆的結(jié)束總線,該結(jié)束總線有主指令的操作隊(duì)列中的位置和冗余指令的操作隊(duì)列中的位置。
寄存器堆包括通用寄存器和浮點(diǎn)寄存器。寄存器堆中的每個(gè)寄存器包括主指令有效位,用于標(biāo)示當(dāng)前寄存器的值對主指令有效,或者標(biāo)示該寄存器正成為某條主指令的結(jié)果寄存器,但是結(jié)果還沒有寫入該寄存器;主指令位置域,用于記錄最近一個(gè)把當(dāng)前寄存器作為結(jié)果寄存器的主指令在操作隊(duì)列中的位置;冗余指令有效位,用于表示當(dāng)前寄存器的值對冗余指令有效,或者標(biāo)示該寄存器正成為某條冗余指令的結(jié)果寄存器,但是結(jié)果沒有寫入該寄存器;冗余指令位置域,用于記錄最近一個(gè)把當(dāng)前寄存器作為結(jié)果寄存器的冗余指令在操作隊(duì)列中的位置。
該檢驗(yàn)流水線瞬態(tài)故障的裝置還包括用于當(dāng)操作隊(duì)列中的操作被結(jié)束時(shí)比較主指令和冗余指令的運(yùn)算結(jié)果是否一致的比較邏輯。
下面對各部件進(jìn)一步說明本發(fā)明對一個(gè)基于操作隊(duì)列復(fù)用的指令流水線結(jié)構(gòu)進(jìn)行擴(kuò)展,擴(kuò)展內(nèi)容包括操作隊(duì)列、發(fā)射總線、寄存器堆及結(jié)束總線。
在操作隊(duì)列中增加狀態(tài)位PS,“1”表示主指令,“0”表示冗余指令;這樣,操作隊(duì)列中每一項(xiàng)就包括如下內(nèi)容·State操作隊(duì)列狀態(tài),2位,“0”表示空,“1”表示相應(yīng)的操作隊(duì)列項(xiàng)中有操作但未送到保留站,“2”表示相應(yīng)的操作已經(jīng)送到保留站,“3”表示相應(yīng)的操作已經(jīng)執(zhí)行完但未結(jié)束。
·OP操作類型,如加、減、移位、取數(shù)等。
·Src1源寄存器號(hào)1。
·Src2源寄存器號(hào)2。
·Dest目標(biāo)寄存器號(hào)。
·Imm指令中的立即數(shù),同時(shí)在操作已寫回操作隊(duì)列但未結(jié)束時(shí)用于臨時(shí)保存結(jié)果,如果發(fā)生訪存例外也可用于保存虛地址。
·PS“1”表示主指令,“0”表示冗余指令。
·其它。
從操作隊(duì)列到寄存器堆的發(fā)射總線包括如下內(nèi)容·Valid有效位,“1”表示有效,“0”表示無效。
·Qid正在發(fā)射的操作在操作隊(duì)列中的位置。
·OP操作類型。
·Src1源寄存器號(hào)1。
·Src2源寄存器號(hào)2。
·Dest目標(biāo)寄存器號(hào)。
·Imm被發(fā)射指令的立即數(shù),或移位指令的移位數(shù),或浮點(diǎn)指令的格式域(fmt)。
·Res1與Src1對應(yīng)的操作數(shù)低32位。
·WB1Res1的寫回位。
·Res2與Src2對應(yīng)的操作數(shù)低32位。
·WB2Res2的寫回位。
·PS“1”表示主指令,“0”表示冗余指令。
從寄存器堆到保留站的發(fā)射總線包括如下內(nèi)容·Valid有效位,“1”表示有效,來自操作隊(duì)列到寄存器堆的發(fā)射總線的Valid部分。
·OP操作類型,來自操作隊(duì)列到寄存器堆的發(fā)射總線的OP部分。
·Qid正在發(fā)射的操作在操作隊(duì)列中的位置,來自操作隊(duì)列到寄存器堆的發(fā)射總線的Qid部分。
·Src1目前沒用。
·Src2訪存保留站用Src2的前兩位確定所存的數(shù)是來自通用寄存器還是浮點(diǎn)寄存器。
·Imm在定點(diǎn)和訪存指令中表示立即數(shù)。來自操作隊(duì)列。
·Qj源寄存器1的重命名寄存器號(hào)。來自通用寄存器。
·Vj源寄存器1操作數(shù)的值。來自通用寄存器。
·Qk源寄存器2的重命名寄存器號(hào)。來自通用寄存器。
·Vk源寄存器2操作數(shù)的值。來自通用寄存器。
·FQj浮點(diǎn)操作的源寄存器1的重命名寄存器號(hào)。來自浮點(diǎn)寄存器。
·FVj浮點(diǎn)操作的源寄存器1操作數(shù)的值。來自浮點(diǎn)寄存器。
·FQk浮點(diǎn)操作的源寄存器2的重命名寄存器號(hào)。來自浮點(diǎn)寄存器。
·FVk浮點(diǎn)操作的源寄存器2操作數(shù)的值。來自浮點(diǎn)寄存器。寄存器堆中的每一個(gè)寄存器包括如下內(nèi)容·Value寄存器的值。
·Valid_P有效位,“1”表示該寄存器的值對主指令有效,“0”表示該寄存器正成為某條主指令的結(jié)果寄存器而沒有將結(jié)果寫回該寄存器。
·Qid_P當(dāng)Valid_P位為“1”時(shí)該域不用,當(dāng)Valid_P位為“0”時(shí)該域記錄最近一個(gè)把該寄存器作為結(jié)果寄存器的主指令在操作隊(duì)列中的位置。
·Valid_S有效位,“1”表示該寄存器的值對冗余指令有效,“0”表示該寄存器正成為某條冗余指令的結(jié)果寄存器而沒有將結(jié)果寫回該寄存器。
·Qid_S當(dāng)Valid_S位為“1”時(shí)該域不用,當(dāng)Valid_S位為“0”時(shí)該域記錄最近一個(gè)把該寄存器作為結(jié)果寄存器的冗余指令在操作隊(duì)列中的位置。
操作隊(duì)列通過結(jié)束總線向通用寄存器及浮點(diǎn)寄存器寫回結(jié)果,結(jié)束總線包括如下內(nèi)容·Valid有效位。
·OP操作碼。
·Dest目標(biāo)寄存器號(hào)。
·Qid1主指令的操作隊(duì)列中的位置。
·Qid2冗余指令的操作隊(duì)列中的位置。
·Value寫回寄存器的結(jié)果。
保留站中的每一項(xiàng)包括如下內(nèi)容
·B忙位,“0”表示相應(yīng)的保留站項(xiàng)中無操作,″1”表示有操作。
·OP操作類型。
·Qj源寄存器1的寄存器號(hào),比如設(shè)置3位或4位,當(dāng)最高位為“1”時(shí)表示數(shù)據(jù)已經(jīng)準(zhǔn)備好在Vj域中,其余位不用;當(dāng)最高位為“0”時(shí),其余位表示計(jì)算所需數(shù)據(jù)的操作在操作隊(duì)列中的位置,用于偵聽結(jié)果總線,等待計(jì)算結(jié)果。后面的檢測舉例中,Qj是設(shè)置為3位。
·Vj源寄存器1操作數(shù)的值,Qj的最高位為“1”時(shí)有效。
·Qk源寄存器2的寄存器號(hào),比如設(shè)置3位或4位,當(dāng)最高位為“1”時(shí)表示數(shù)據(jù)已經(jīng)準(zhǔn)備好在Vk域中,其余位不用;當(dāng)最高位為“0”時(shí),其余位表示計(jì)算所需數(shù)據(jù)的操作在操作隊(duì)列中的位置,用于偵聽結(jié)果總線,等待計(jì)算結(jié)果。后面的檢測舉例中,Qk是設(shè)置為3位。
·Vk源寄存器2的操作數(shù)的值,Qk的最高位為“1”時(shí)有效。
·Qid相應(yīng)操作在操作隊(duì)列中的位置,用于運(yùn)算結(jié)束時(shí)把結(jié)果寫回操作隊(duì)列以及偵聽總線的保留站接收運(yùn)算結(jié)果,發(fā)生例外時(shí)用于給操作隊(duì)列的例外原因等域賦值。
具體實(shí)施方式
的檢驗(yàn)流水線瞬態(tài)故障的方法的步驟如下(1).通過重復(fù)取指或在譯碼階段復(fù)制指令的方法,將主指令及其冗余指令送入操作隊(duì)列。
(2).一個(gè)操作發(fā)射時(shí),若該操作是主指令,則相應(yīng)的目標(biāo)寄存器Ri(此處Ri是通用寄存器堆中的某一個(gè)寄存器,i=0、1、2、或3……)的Qid_P項(xiàng)記錄該操作在操作隊(duì)列中的位置,并置Valid_P為0;若該操作是冗余指令,則相應(yīng)的目標(biāo)寄存器(如Ri)的Qid_S項(xiàng)記錄該操作在操作隊(duì)列中的位置,并置Valid_S為0。
(3).后面的操作發(fā)射時(shí),若該操作是主指令且用到前一個(gè)操作的目標(biāo)寄存器Ri,訪問Ri寄存器時(shí)發(fā)現(xiàn)Valid_P等于0,則讀出Ri中Qid_P內(nèi)容并根據(jù)該內(nèi)容訪問操作隊(duì)列,如果第Qid_P項(xiàng)的值已經(jīng)寫回到操作隊(duì)列則直接從操作隊(duì)列中讀出該值作為該操作的一個(gè)操作數(shù),如果沒有寫回則把Qid_P送到保留站并在保留站中記錄該寄存器未準(zhǔn)備好;若該操作是冗余指令且用到Ri寄存器,訪問Ri寄存器時(shí)發(fā)現(xiàn)Valid_S等于0,則讀出Ri中Qid_S內(nèi)容并根據(jù)該內(nèi)容訪問操作隊(duì)列,如果第Qid_S項(xiàng)的值已經(jīng)寫回到操作隊(duì)列則直接從操作隊(duì)列中讀出該值作為該操作的一個(gè)操作數(shù),如果沒有寫回則把Qid_S送到保留站并在保留站中記錄該寄存器未準(zhǔn)備好。
(4).保留站偵聽結(jié)果總線,當(dāng)Qid_P或Qid_S項(xiàng)所指示的操作運(yùn)算結(jié)束并把結(jié)果送到結(jié)果總線時(shí),直接接收結(jié)果總線的值作為一個(gè)操作數(shù)。
(5).當(dāng)保留站中所有操作數(shù)都準(zhǔn)備好后開始運(yùn)算并把結(jié)果送到結(jié)果總線,通過結(jié)果總線將運(yùn)算結(jié)果寫回操作隊(duì)列。
(6).當(dāng)操作隊(duì)列中的主指令及其冗余指令都已寫回并準(zhǔn)備結(jié)束時(shí),由比較邏輯檢查主指令的運(yùn)算結(jié)果和冗余指令的運(yùn)算結(jié)果是否一致。如果不一致,則置起一種特殊例外,將寄存器堆中所有寄存器的Valid_P位置為1,將Valid_S位置為1,從失效的指令處重新發(fā)射執(zhí)行;如果結(jié)果一致,則修改目標(biāo)寄存器的值,若該寄存器的Qid_P等于主指令在操作隊(duì)列中的位置號(hào),則將Valid_P位置為1,若該寄存器的Qid_S等于冗余指令在操作隊(duì)列中的位置號(hào),則將Valid_S位置為1。
下面通過一個(gè)例子描述操作隊(duì)列、寄存器以及保留站在一個(gè)檢錯(cuò)過程中的功能。圖2給出了兩對指令執(zhí)行時(shí)操作隊(duì)列、寄存器、保留站的變化。功能部件的流水線延遲為1拍,即數(shù)據(jù)在保留站中準(zhǔn)備好開始運(yùn)算后的同一拍結(jié)果就出現(xiàn)在結(jié)果總線上。這四條指令需要6拍才能執(zhí)行完成。
1.第一拍,操作隊(duì)列向保留站發(fā)出ADC主指令。置目標(biāo)寄存器R1的Valid_P域?yàn)?,Qid_P域?yàn)?,表示R1寄存器的值對于后續(xù)的主指令無效,最新值在操作隊(duì)列的第0項(xiàng)。因?yàn)樵摬僮鲀蓚€(gè)源操作數(shù)都已準(zhǔn)備好,置保留站中的Qj、Qk域?yàn)?(即該域最高位為1,表示操作數(shù)已經(jīng)準(zhǔn)備好),Vj、Vk域可用,Qid域?yàn)?,表示運(yùn)算結(jié)束后把結(jié)果寫回操作隊(duì)列的第0項(xiàng)。修改操作隊(duì)列中的第0項(xiàng)狀態(tài)為操作已經(jīng)發(fā)出但結(jié)果未寫回。
2.第二拍,執(zhí)行ADC主指令,并把執(zhí)行結(jié)果通過結(jié)果總線寫回操作隊(duì)列。操作隊(duì)列的第0項(xiàng)接收操作結(jié)果并保存在Imm域,置該操作的狀態(tài)為等待結(jié)束。同時(shí),操作隊(duì)列向保留站發(fā)送ADC冗余指令,置目標(biāo)寄存器R1的Valid_S域?yàn)?,Qid_S域?yàn)?,表示R1寄存器的值對于后續(xù)的冗余指令無效,最新值在操作隊(duì)列的第1項(xiàng)。與第一拍類似,修改保留站和操作隊(duì)列的相應(yīng)狀態(tài)。
3.第三拍,執(zhí)行ADC冗余指令,并把執(zhí)行結(jié)果通過結(jié)果總線寫回操作隊(duì)列。操作隊(duì)列的第1項(xiàng)接收操作結(jié)果并保存在Imm域,置該操作的狀態(tài)為等待結(jié)束。同時(shí),操作隊(duì)列向保留站發(fā)送SUB主指令,通過寄存器R1中的Qid_P域從操作隊(duì)列的第0項(xiàng)中得到一個(gè)源操作數(shù),置目標(biāo)寄存器R1的Valid_P域?yàn)?,Qid_P域?yàn)?,表示R1寄存器的值對于后續(xù)的主指令無效,最新值在操作隊(duì)列的第2項(xiàng)。與第一拍類似,修改保留站和操作隊(duì)列的相應(yīng)狀態(tài)。
4.第四拍,執(zhí)行SUB主指令,并把執(zhí)行結(jié)果通過結(jié)果總線寫回操作隊(duì)列。操作隊(duì)列的第2項(xiàng)接收操作結(jié)果并保存在Imm域,置該操作的狀態(tài)為等待結(jié)束。同時(shí),操作隊(duì)列向保留站發(fā)送SUB冗余指令,通過寄存器R1的Qid_S域從操作隊(duì)列的第1項(xiàng)中得到一個(gè)源操作數(shù),置目標(biāo)寄存器R1的Valid_S域?yàn)?,Qid_S域?yàn)?,表示R1寄存器的值對于后續(xù)的冗余指令無效,最新值在操作隊(duì)列的第3項(xiàng)。與第一拍類似,修改保留站和操作隊(duì)列的相應(yīng)狀態(tài)。同時(shí),ADC主指令及其冗余指令結(jié)束,比較操作隊(duì)列第0項(xiàng)和第1項(xiàng)中的Dest域和Imm域的內(nèi)容,結(jié)果一致,將Imm域的值寫回到由Dest域指定的寄存器(即R1)中,釋放操作隊(duì)列的第0項(xiàng)和第1項(xiàng)。
5.第五拍,執(zhí)行SUB冗余指令,并把執(zhí)行結(jié)果通過結(jié)果總線寫回操作隊(duì)列。操作隊(duì)列的第3項(xiàng)接收操作結(jié)果并保存在Imm域,置該操作的狀態(tài)為等待結(jié)束。
6.第六拍,SUB主指令及其冗余指令結(jié)束,比較操作隊(duì)列第2項(xiàng)和第3項(xiàng)中的Dest域和Imm域的內(nèi)容,結(jié)果一致,將Imm域的值寫回到由Dest域指定的寄存器(即R1)中,置R1寄存器的Valid_P域?yàn)?,Valid_S域?yàn)?,表示R1寄存器的值對于以后的主指令和冗余指令都有效。
本發(fā)明通過擴(kuò)展基于操作隊(duì)列復(fù)用的流水結(jié)構(gòu),能夠檢測操作隊(duì)列、保留站及功能部件上發(fā)生的瞬態(tài)故障,并利用例外機(jī)制恢復(fù)故障;由于時(shí)間冗余技術(shù)的硬件開銷比較小,因此使得本發(fā)明不僅能夠使流水線結(jié)構(gòu)具有容錯(cuò)能力,提高微處理器可靠性,而且硬件開銷小。
最后所應(yīng)說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制。盡管參照實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,對本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,都不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的裝置,包括操作隊(duì)列,用于按照指令在程序中出現(xiàn)的先后次序把操作發(fā)射到相應(yīng)的保留站并按照次序結(jié)束運(yùn)算結(jié)果已經(jīng)寫回的指令,與該操作隊(duì)列連接的寄存器堆,與所述操作隊(duì)列和所述寄存器堆連接的保留站;所述操作隊(duì)列中有用于標(biāo)示主指令和冗余指令的狀態(tài)位。
2.根據(jù)權(quán)利要求1所述基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的裝置,其特征是,還包括用于將操作隊(duì)列中的操作經(jīng)寄存器重命名及讀取操作數(shù)后發(fā)射到相應(yīng)的保留站的發(fā)射總線,該發(fā)射總線中有用于表示發(fā)射指令類別的狀態(tài)位。
3.根據(jù)權(quán)利要求1所述基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的裝置,其特征是,所述寄存器堆包括通用寄存器和浮點(diǎn)寄存器。
4.根據(jù)權(quán)利要求1所述基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的裝置,其特征是,所述寄存器堆中的每個(gè)寄存器包括用于標(biāo)示當(dāng)前寄存器的值對主指令有效或者該寄存器正成為某條主指令的結(jié)果寄存器而沒有寫回的主指令有效位;用于記錄最近一個(gè)把當(dāng)前寄存器作為結(jié)果寄存器的主指令在操作隊(duì)列中的位置的主指令位置域;用于表示當(dāng)前寄存器的值對冗余指令有效或者該寄存器正成為某條冗余指令的結(jié)果寄存器而沒有寫回的冗余指令有效位;用于記錄最近一個(gè)把當(dāng)前寄存器作為結(jié)果寄存器的冗余指令在操作隊(duì)列中的位置的冗余指令位置域。
5.根據(jù)權(quán)利要求1所述基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的裝置,其特征是,還包括用于當(dāng)操作隊(duì)列中的操作被結(jié)束時(shí)比較主指令和冗余指令的運(yùn)算結(jié)果是否一致的比較邏輯。
6.根據(jù)權(quán)利要求1所述基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的裝置,其特征是,還包括用于當(dāng)操作隊(duì)列中的操作被結(jié)束時(shí)把運(yùn)算結(jié)果送到寄存器堆的結(jié)束總線,該結(jié)束總線有主指令在操作隊(duì)列中的位置和冗余指令在操作隊(duì)列中的位置。
7.一種基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的方法,包括如下步驟步驟一,將主指令及其冗余指令送入操作隊(duì)列;步驟二,操作隊(duì)列中的操作經(jīng)寄存器重命名;步驟三,保留站偵聽結(jié)果總線;步驟四,當(dāng)保留站中某條指令的所有操作數(shù)都準(zhǔn)備好時(shí)該指令開始運(yùn)算并把結(jié)果通過結(jié)果總線寫回操作隊(duì)列;步驟五,檢查主指令和冗余指令的運(yùn)算結(jié)果是否一致;如果是一致,則修改處理器狀態(tài);如果不一致,則輸出異常狀態(tài)。
8.根據(jù)權(quán)利要求7所述基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的方法,其特征是,在步驟一中,通過重復(fù)取指或復(fù)制指令的方法實(shí)現(xiàn)主指令和冗余指令。
9.根據(jù)權(quán)利要求7所述基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的方法,其特征是,步驟二具體包括如下步驟(1)一個(gè)操作發(fā)射時(shí),若該操作是主指令,則相應(yīng)的目標(biāo)寄存器的主指令位置域記錄該操作在操作隊(duì)列中的位置,并置主指令有效位為標(biāo)示該寄存器正成為一主指令的結(jié)果寄存器沒有寫回的狀態(tài);若該操作是冗余指令,則相應(yīng)的目標(biāo)寄存器的冗余指令位置域記錄該操作在操作隊(duì)列中的位置,并置冗余指令有效位為標(biāo)示寄存器正成為一冗余指令的結(jié)果寄存器沒有寫回的狀態(tài);(2)后面的操作發(fā)射時(shí),若該操作是主指令且用到上一步驟(1)中所述目標(biāo)寄存器,訪問該寄存器時(shí)發(fā)現(xiàn)該寄存器正成為一條主指令的結(jié)果寄存器沒有寫回,則讀出該寄存器中主指令位置域的內(nèi)容并根據(jù)該內(nèi)容訪問操作隊(duì)列;如果主指令位置域表示的操作隊(duì)列位置的值已經(jīng)寫回到操作隊(duì)列則直接從操作隊(duì)列中讀出該值作為該操作的一個(gè)操作數(shù),否則把主指令位置域的值送到保留站并在保留站中記錄該寄存器未準(zhǔn)備好;若該操作是冗余指令且用到步驟(1)中所述目標(biāo)寄存器,訪問該寄存器時(shí)發(fā)現(xiàn)該寄存器正成為一條冗余指令的結(jié)果寄存器沒有寫回,則讀出寄存器中冗余指令位置域的內(nèi)容并根據(jù)該內(nèi)容訪問操作隊(duì)列,如果冗余指令位置域表示的操作隊(duì)列位置的值已經(jīng)寫回到操作隊(duì)列則直接從操作隊(duì)列中讀出該值作為該操作的一個(gè)操作數(shù),否則把冗余指令位置域的值送到保留站并在保留站中記錄該寄存器未準(zhǔn)備好。
10.根據(jù)權(quán)利要求7所述基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的方法,其特征是,步驟五中,所述修改處理器狀態(tài),具體包括若當(dāng)前寄存器的主指令位置域等于主指令在操作隊(duì)列中的位置號(hào),則將主指令有效位置為表示該寄存器的值對主指令有效的狀態(tài);若當(dāng)前寄存器的冗余指令位置域等于冗余指令在操作隊(duì)列中的位置號(hào),則將冗余指令有效位置為表示該寄存器的值對冗余指令有效的狀態(tài)。
11.根據(jù)權(quán)利要求7所述基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的方法,其特征是,步驟五中,所述輸出異常狀態(tài)是指置起一種特殊例外,該特殊例外具體包括將寄存器堆中所有寄存器的主指令有效位置為表示該寄存器對主指令有效的狀態(tài),冗余指令有效位置為表示該寄存器對冗余指令有效的狀態(tài);清除流水線中的所有指令,從失效的指令處重新取指執(zhí)行。
12.一種能夠檢驗(yàn)瞬態(tài)故障的流水線系統(tǒng),包括用于取出指令的取指部件;用于對取出的指令進(jìn)行譯碼,并按指令在程序中出現(xiàn)的先后次序把譯碼后的指令送到操作隊(duì)列的譯碼部件;操作隊(duì)列,用于按指令在程序中出現(xiàn)的先后次序根據(jù)操作的類型把操作發(fā)射到相應(yīng)的保留站,并按次序結(jié)束運(yùn)算結(jié)果已經(jīng)寫回的指令;用于對發(fā)射來的操作進(jìn)行運(yùn)算,把運(yùn)算結(jié)果送回到結(jié)果總線并寫回到操作隊(duì)列的保留站;寄存器堆,用于在結(jié)束指令時(shí),接收由操作隊(duì)列依照指令進(jìn)出操作隊(duì)列的次序?qū)懟丶拇嫫鞯倪\(yùn)算結(jié)果;用于當(dāng)操作隊(duì)列中的操作被結(jié)束時(shí)把運(yùn)算結(jié)果送到寄存器堆的結(jié)束總線;所述操作隊(duì)列中有用于標(biāo)示主指令和冗余指令的狀態(tài)位。
13.根據(jù)權(quán)利要求12所述能夠檢驗(yàn)瞬態(tài)故障的流水線系統(tǒng),其中,所述寄存器堆中的每個(gè)寄存器包括用于標(biāo)示當(dāng)前寄存器的值對主指令有效或者該寄存器正成為某條主指令的結(jié)果寄存器沒有寫回的主指令有效位;用于記錄最近一個(gè)把當(dāng)前寄存器作為結(jié)果寄存器的主指令在操作隊(duì)列中的位置的主指令位置域;用于表示當(dāng)前寄存器的值對冗余指令有效或者該寄存器正成為某條冗余指令的結(jié)果寄存器沒有寫回的冗余指令有效位;用于記錄最近一個(gè)把當(dāng)前寄存器作為結(jié)果寄存器的冗余指令在操作隊(duì)列中的位置的冗余指令位置域;
14.根據(jù)權(quán)利要求12或13所述能夠檢驗(yàn)瞬態(tài)故障的流水線系統(tǒng),其中,所述結(jié)束總線有主指令在操作隊(duì)列中的位置和冗余指令在操作隊(duì)列中的位置。
全文摘要
本發(fā)明公開了一種基于時(shí)間冗余的檢驗(yàn)流水線瞬態(tài)故障的裝置及方法,和包括所述裝置的流水線系統(tǒng)。該裝置包括操作隊(duì)列,與該操作隊(duì)列連接的寄存器堆,與所述操作隊(duì)列和所述寄存器堆連接的保留站;其特征是,所述操作隊(duì)列中有用于標(biāo)示主指令和冗余指令的狀態(tài)位。該方法包括步驟一,將主指令及其冗余指令送入操作隊(duì)列;步驟二,操作隊(duì)列中的操作經(jīng)寄存器重命名;步驟三,保留站偵聽結(jié)果總線;步驟四,當(dāng)保留站中某條指令的所有操作數(shù)都準(zhǔn)備好時(shí)該指令開始運(yùn)算并把結(jié)果通過結(jié)果總線寫回操作隊(duì)列;步驟五,檢查主指令和冗余指令的運(yùn)算結(jié)果是否一致;如果是一致,則修改處理器狀態(tài);如果不一致,則輸出異常狀態(tài)。本發(fā)明不僅使流水線結(jié)構(gòu)具有容錯(cuò)能力,提高微處理器可靠性,而且硬件開銷小。
文檔編號(hào)G06F9/38GK101013389SQ20071006318
公開日2007年8月8日 申請日期2007年1月30日 優(yōu)先權(quán)日2007年1月30日
發(fā)明者張仕健, 胡偉武 申請人:中國科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
顺平县| 尚义县| 苍梧县| 黄大仙区| 乌拉特后旗| 三台县| 泌阳县| 永吉县| 调兵山市| 乌兰县| 永定县| 武陟县| 南漳县| 内江市| 天门市| 扎赉特旗| 蒲城县| 应城市| 黔西| 丰顺县| 龙川县| 区。| 遵化市| 东丽区| 宜良县| 全椒县| 屏东县| 盱眙县| 陇西县| 涞水县| 泽普县| 峨眉山市| 芷江| 清水县| 锦州市| 新沂市| 旬邑县| 日照市| 涞水县| 洮南市| 灌南县|