息讀端口R⑶,所有的讀端口均與譯碼模塊ID連接;
[0057]增強(qiáng)型寄存器文件ERF,如圖2所示,包括數(shù)據(jù)寄存器文件和控制寄存器文件,兩者存儲(chǔ)單元的個(gè)數(shù)相同,但是位寬不同,且一一對(duì)應(yīng)。數(shù)據(jù)寄存器文件存儲(chǔ)指令的操作數(shù)及其校驗(yàn)碼,增強(qiáng)型寄存器文件ERF的其中三個(gè)端口由數(shù)據(jù)寄存器文件單獨(dú)使用;數(shù)據(jù)寄存器文件存儲(chǔ)指令的操作數(shù)包括計(jì)算所需的源操作數(shù)和計(jì)算完成后的目標(biāo)操作數(shù);該三個(gè)端口分別為目標(biāo)操作數(shù)數(shù)據(jù)寫端口 WD、第一源操作數(shù)數(shù)據(jù)讀端口 RSl和第二源操作數(shù)數(shù)據(jù)讀端口RS2;控制寄存器文件存儲(chǔ)備份數(shù)據(jù)的鏈接信息,主要包括副本地址和標(biāo)志位,副本標(biāo)志位指示當(dāng)前訪問的操作數(shù)是否存在備份數(shù)據(jù),副本地址指示備份數(shù)據(jù)在數(shù)據(jù)寄存器文件的存儲(chǔ)地址;增強(qiáng)型寄存器文件ERF的其余六個(gè)端口由控制寄存器文件單獨(dú)使用;六個(gè)端口分別為第一源操作數(shù)控制信息讀端口RCS1、第二源操作數(shù)控制信息讀端口RCS2、目標(biāo)操作數(shù)控制信息讀端口RCD、目標(biāo)操作數(shù)控制信息寫端口WCD、第一源操作數(shù)控制信息寫端口WCSl及第二源操作數(shù)控制信息寫端口 WCS2。
[0058]譯碼模塊ID首先檢測(cè)其輸入信號(hào)查詢標(biāo)志位是否有效,也就是查詢副本查詢控制信號(hào)中的其中一位標(biāo)志位是否有效,若查詢標(biāo)志位有效,則對(duì)包含在副本查詢控制信號(hào)中副本地址指定的數(shù)據(jù)寄存器文件中的單元進(jìn)行讀操作,同時(shí)將與控制寄存器文件的輸出相連接的譯碼模塊id的輸入均置為O;若查詢標(biāo)志位無(wú)效,則對(duì)級(jí)間寄存器ro輸出的指令進(jìn)行譯碼解析,并根據(jù)譯碼結(jié)果,同時(shí)向增強(qiáng)型寄存器文件ERF的五個(gè)讀端口發(fā)起讀操作,從而得到第一、第二源操作數(shù)及校驗(yàn)碼SPl、SP2;第一、第二源操作數(shù)副本信息SCl、SC2和目標(biāo)操作數(shù)副本信息DC。譯碼模塊ID將五個(gè)讀端口的反饋信息(SPl、SP2、SCl、SC2和DC)、副本查詢控制信號(hào)中的信息及其它信息向級(jí)間寄存器DE傳遞;
[0059]級(jí)間寄存器DE在流水控制模塊控制下,將上述譯碼模塊ID的輸出寄存后,輸出至執(zhí)txt旲塊EX;
[0060]執(zhí)行模塊EX,如圖3所示,包括具有檢測(cè)和比較能力的增強(qiáng)型ALU,它根據(jù)輸入的第一、第二源操作數(shù)及校驗(yàn)碼SP1、SP2對(duì)源操作數(shù)的正確性進(jìn)行校驗(yàn);同時(shí)根據(jù)第一、第二源操作數(shù)進(jìn)行算術(shù)或邏輯運(yùn)算得到運(yùn)算結(jié)果即目標(biāo)操作數(shù),最終比較第一、第二源操作數(shù)和目標(biāo)操作數(shù)是否相等,當(dāng)數(shù)據(jù)相等且存儲(chǔ)地址不同時(shí),則輸出支持備份的比較結(jié)果,否則輸出不支持備份的比較結(jié)果;執(zhí)行模塊EX將第一、第二源操作數(shù)的兩個(gè)比較結(jié)果CRA和CRB、目標(biāo)操作數(shù)及其它未經(jīng)處理的輸入進(jìn)一步輸出至級(jí)間寄存器EM;
[0061]執(zhí)行模塊EX,如圖3所示,包括第一源操作數(shù)校驗(yàn)?zāi)K、第二源操作數(shù)校驗(yàn)?zāi)K、ALU、第一比較器和第二比較器,第一源操作數(shù)校驗(yàn)?zāi)K對(duì)輸入的第一源操作數(shù)及其校驗(yàn)碼進(jìn)行校驗(yàn),并將校驗(yàn)結(jié)果連接至第一比較器;第二源操作數(shù)校驗(yàn)?zāi)K對(duì)輸入的第二源操作數(shù)及其校驗(yàn)碼進(jìn)行校驗(yàn),并將校驗(yàn)結(jié)果連接至第二比較器;ALU對(duì)輸入的第一源操作數(shù)和第二源操作數(shù)進(jìn)行算術(shù)或邏輯運(yùn)算,并將輸出目標(biāo)操作數(shù)連接至第一、二比較器和級(jí)間寄存器EM;第一、二比較器的輸入還包括第一、二源操作數(shù),兩個(gè)比較器根據(jù)校驗(yàn)結(jié)果對(duì)第一、二源操作數(shù)和目標(biāo)操作數(shù)的相等性做出判斷,若校驗(yàn)結(jié)果異常,則不進(jìn)行比較,直接通過CRA和CRB輸出校驗(yàn)異常,若校驗(yàn)結(jié)果正常,則比較第一、二源操作數(shù)和目標(biāo)操作數(shù)是否相等,比較結(jié)果同樣由CRA和CRB給出;
[0062]級(jí)間寄存器EM在流水控制模塊控制下,將上述執(zhí)行模塊EX的輸出寄存后,輸出至存儲(chǔ)訪問模塊MA;
[0063]存儲(chǔ)訪問模塊MA,對(duì)輸入不做進(jìn)一步解析處理,主要完成訪問存存儲(chǔ)器的操作,并向級(jí)間寄存器Mff進(jìn)一步傳遞該模塊的輸入;
[0064]級(jí)間寄存器MW在流水控制模塊控制下,將上述存儲(chǔ)訪問模塊MA的輸出寄存后,輸出至自適應(yīng)回寫模塊AWB;
[0065]自適應(yīng)回寫模塊AWB完成處理器內(nèi)部的寫操作,當(dāng)源操作數(shù)不正確時(shí),將目前指令的PC寫入PC寄存器,同時(shí)對(duì)副本查詢控制信號(hào),包括查詢標(biāo)志位和第一、第二源操作數(shù)的副本地址進(jìn)行合理的設(shè)置;當(dāng)無(wú)異常存在時(shí),完成增強(qiáng)型寄存器文件ERF的寫操作。圖4為處理器的容錯(cuò)判斷邏輯流程圖,該流程圖包含了自適應(yīng)回寫模塊AWB根據(jù)輸入信息,實(shí)現(xiàn)正確的寫操作的原理,具體如下,
[0066]Step 1:判斷當(dāng)前處理器使用的源操作數(shù)是否正確,若錯(cuò)誤,則轉(zhuǎn)向Step2;否則,轉(zhuǎn)向Step4;
[0067]Step2;將目前的指令PC寫入PC寄存器,并判斷當(dāng)前出錯(cuò)的源操作數(shù)是否備份數(shù)據(jù),判斷查詢標(biāo)志位是否有效,若是備份數(shù)據(jù),查詢標(biāo)志位有效,則將查詢標(biāo)志位置無(wú)效,并轉(zhuǎn)向Step3;否則查詢標(biāo)志位無(wú)效,置副本查詢控制信號(hào)中的查詢標(biāo)志位有效,并將出錯(cuò)源操作數(shù)的副本地址通過副本查詢控制信號(hào)傳遞給譯碼模塊ID;
[0068]Step3:源操作數(shù)出現(xiàn)無(wú)法恢復(fù)的錯(cuò)誤,處理器進(jìn)入異常模式;
[0069]Step4:無(wú)論此時(shí)是否有效,則將查詢標(biāo)志位置無(wú)效,對(duì)第一、二源操作數(shù)和目標(biāo)操作數(shù)的比較結(jié)果CRA和CRB進(jìn)行判斷,若CRA或CRB顯示源操作數(shù)和目標(biāo)操作數(shù)相同,則轉(zhuǎn)向Step5 ;否則轉(zhuǎn)向Step8 ;
[0070]Step5:檢測(cè)目標(biāo)操作數(shù)的副本標(biāo)志位是否有效,如果無(wú)效,轉(zhuǎn)向Step6;否則轉(zhuǎn)向Step7;
[0071 ] Step6;將目標(biāo)操作數(shù)的地址寫入到源操作數(shù)地址對(duì)應(yīng)的控制寄存器文件單元,將源操作數(shù)的地址寫入到目標(biāo)操作數(shù)地址對(duì)應(yīng)的控制寄存器副本地址域,同時(shí)置對(duì)應(yīng)單元的副本標(biāo)志位有效,轉(zhuǎn)向Step9;
[0072]Step7:將目標(biāo)操作數(shù)地址對(duì)應(yīng)的控制寄存器文件單元的副本標(biāo)志位置無(wú)效,同時(shí)將目標(biāo)操作數(shù)的地址寫入到源操作數(shù)地址對(duì)應(yīng)的控制寄存器文件單元,將源操作數(shù)的地址寫入到目標(biāo)操作數(shù)地址對(duì)應(yīng)的控制寄存器副本地址域,并置對(duì)應(yīng)單元的副本標(biāo)志位有效,轉(zhuǎn)向Step9;
[0073]StepS:檢測(cè)目標(biāo)操作數(shù)的副本標(biāo)志位是否有效,如果無(wú)效,轉(zhuǎn)向Step9;否則轉(zhuǎn)向SteplO;
[0074]Step9:計(jì)算目標(biāo)操作數(shù)的校驗(yàn)位,并將目標(biāo)操作數(shù)和校驗(yàn)位同時(shí)寫入目標(biāo)操作數(shù)地址對(duì)應(yīng)的數(shù)據(jù)寄存器文件單元,結(jié)束;
[0075]SteplO:將目標(biāo)操作數(shù)地址對(duì)應(yīng)的控制寄存器文件單元的副本標(biāo)志位置無(wú)效,轉(zhuǎn)向Step9。
[0076]本發(fā)明通過考慮了不同的寄存器文件單元中的數(shù)據(jù)相同時(shí)的情況,通過建立動(dòng)態(tài)維護(hù)相同數(shù)據(jù)的備份數(shù)據(jù)鏈接表,充分利用了處理器內(nèi)部的數(shù)據(jù)冗余,提供了一種更加完善的系統(tǒng)級(jí)加固方案,提高了處理器的可控性和可靠性。
【主權(quán)項(xiàng)】
1.一種基于主動(dòng)鏈接備份數(shù)據(jù)的處理器容錯(cuò)結(jié)構(gòu),其特征在于,包括五級(jí)流水結(jié)構(gòu)、流水控制模塊、校驗(yàn)碼編碼模塊、PC寄存器及增強(qiáng)型寄存器文件REF; 五級(jí)流水結(jié)構(gòu)包括取指模塊IF、譯碼模塊ID、執(zhí)行模塊EX、存儲(chǔ)訪問模塊MA、自適應(yīng)回寫模塊AWB及四組級(jí)間寄存器;五級(jí)流水結(jié)構(gòu)中的五個(gè)模塊通過級(jí)間寄存器FD、級(jí)間寄存器DE、級(jí)間寄存器EM和級(jí)間寄存器Mff依次相連,其中取指模塊IF位于五級(jí)流水結(jié)構(gòu)首位,自適應(yīng)回寫模塊AWB在末尾; 自適應(yīng)回寫模塊AWB的輸出副本查詢控制信號(hào)連接至譯碼模塊ID,用于實(shí)現(xiàn)異常情況下源操作數(shù)的副本查詢;自適應(yīng)回寫模塊AWB的輸出連接至PC寄存器的輸入,用于實(shí)現(xiàn)處理器異常模式下指令PC的寫操作;PC寄存器的輸出指令PC連接至取指模塊IF;PC寄存器的輸出和副本查詢控制信號(hào)共同實(shí)現(xiàn)處理器對(duì)冗余備份數(shù)據(jù)的查詢、讀取及使用; 流水控制模塊與級(jí)間寄存器ro、DE、EM和Mff的使能端相連,用于根據(jù)處理器狀態(tài)使能或禁止級(jí)間寄存器的米樣; 校驗(yàn)碼編碼模塊根據(jù)糾檢錯(cuò)編碼規(guī)則,對(duì)輸入數(shù)據(jù)進(jìn)行編碼,輸出為輸入數(shù)據(jù)及其校驗(yàn)碼;校驗(yàn)碼編碼模塊的輸入來(lái)自自適應(yīng)回寫模塊AWB,輸出連接至增強(qiáng)型寄存器文件REF的與端口 ; 增強(qiáng)型寄存器文件ERF具有四寫五讀共九個(gè)端口,每個(gè)端口均包含實(shí)現(xiàn)讀寫必須的控制信號(hào);所有的讀端口均與譯碼模塊ID連接; 譯碼模塊ID首先檢測(cè)其輸入副本查詢控制信號(hào)中的信號(hào)查詢標(biāo)志位是否有效;譯碼模塊ID將五個(gè)讀端口的反饋信息,副本查詢控制信號(hào)中的信息及其它信息向級(jí)間寄存器DE傳遞;所述五個(gè)讀端口的反