一種基于主動(dòng)鏈接備份數(shù)據(jù)的處理器容錯(cuò)結(jié)構(gòu)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于微處理器可靠性領(lǐng)域,涉及一種體系結(jié)構(gòu)級(jí)的容錯(cuò)結(jié)構(gòu)及方法,具體涉及一種基于主動(dòng)鏈接備份數(shù)據(jù)的處理器容錯(cuò)結(jié)構(gòu)及方法。
【背景技術(shù)】
[0002]寄存器文件作為高速緩存和處理器功能部件之間的數(shù)據(jù)暫存結(jié)點(diǎn),具有數(shù)據(jù)保存時(shí)間長(zhǎng)和被訪(fǎng)問(wèn)的頻率高兩個(gè)顯著特點(diǎn),上述特點(diǎn)不但增加了寄存器文件內(nèi)部數(shù)據(jù)的單粒子翻轉(zhuǎn)概率,而且加快了錯(cuò)誤數(shù)據(jù)在處理器內(nèi)的傳播,從而極易導(dǎo)致系統(tǒng)任務(wù)的失敗,因此寄存器文件是處理器內(nèi)部對(duì)單粒子效應(yīng)最敏感的存儲(chǔ)結(jié)構(gòu)之一。
[0003]為了提高寄存器文件中數(shù)據(jù)的可靠性,目前的主要方案包括:(I)基于全定制的方法設(shè)計(jì)抗輻照的寄存器文件,具體可參考文獻(xiàn)《一種10讀6寫(xiě)寄存器文件的抗輻射加固設(shè)計(jì)》和《32X32位三端口寄存器堆的加固設(shè)計(jì)》等;(2)對(duì)寄存器文件中的數(shù)據(jù)采用EDAC編碼,具體可參考文獻(xiàn)《一種針對(duì)SEU的同步糾錯(cuò)流水線(xiàn)設(shè)計(jì)》、《A radiat1n hardened bydesign register file with lightweight error detect1n and correct1n》及專(zhuān)利號(hào)為ZL200510043107.5的專(zhuān)利《微處理器的整數(shù)單元中五級(jí)容錯(cuò)流水結(jié)構(gòu)的實(shí)現(xiàn)方法》等;
[3]利用空閑資源實(shí)現(xiàn)敏感數(shù)據(jù)的備份,該方案屬于近年的研究熱點(diǎn),具體可參考文獻(xiàn)《Using register lifetime predict1ns to protect register files against softerrorsK((Increasing register file immunity to transient errors〉〉、〈〈An efficienttechnique to tolerate MBU faults in register file of embedded processors》等。
[0004]方案(I)的開(kāi)發(fā)過(guò)程需要建模提參和優(yōu)化迭代,周期較長(zhǎng),而且抗輻照結(jié)構(gòu)不可避免的引入額外的功耗和訪(fǎng)問(wèn)延時(shí);一旦寄存器文件中的錯(cuò)誤累計(jì)超過(guò)EDAC的糾檢錯(cuò)能力,基于方案(2)的保護(hù)機(jī)制則失去作用;而方案(3)致力于開(kāi)發(fā)寄存器文件內(nèi)部的空閑存儲(chǔ)資源,利用空閑資源對(duì)敏感數(shù)據(jù)進(jìn)行備份,然而開(kāi)發(fā)、利用空閑資源的代價(jià)相對(duì)較大,通常導(dǎo)致處理器性能降低、功耗增加等。
[0005]方案(1)、(2)和(3)均未考慮不同的寄存器文件單元中的數(shù)據(jù)相同時(shí)的情況,即未考慮寄存器文件中的數(shù)據(jù)存在冗余備份時(shí)的情況。
【發(fā)明內(nèi)容】
[0006]針對(duì)現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明提供一種基于主動(dòng)鏈接備份數(shù)據(jù)的處理器容錯(cuò)結(jié)構(gòu)及方法。當(dāng)處理器內(nèi)部檢測(cè)到ALU的輸入源操作數(shù)和輸出目標(biāo)操作數(shù)一致且兩者在寄存器文件中的存儲(chǔ)地址不同時(shí),則在兩者之間建立鏈接,這種鏈接使兩者互為備份,當(dāng)其中任意一份數(shù)據(jù)出現(xiàn)異?;蛘咤e(cuò)誤時(shí),使用另一份數(shù)據(jù)完成后續(xù)的處理器操作。
[0007]本發(fā)明是通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn):
[0008]—種基于主動(dòng)鏈接備份數(shù)據(jù)的處理器容錯(cuò)結(jié)構(gòu),包括五級(jí)流水結(jié)構(gòu)、流水控制模塊、校驗(yàn)碼編碼模塊、PC寄存器及增強(qiáng)型寄存器文件REF;
[0009]五級(jí)流水結(jié)構(gòu)包括取指模塊IF、譯碼模塊ID、執(zhí)行模塊EX、存儲(chǔ)訪(fǎng)問(wèn)模塊MA、自適應(yīng)回寫(xiě)模塊AWB及四組級(jí)間寄存器;五級(jí)流水結(jié)構(gòu)中的五個(gè)模塊通過(guò)級(jí)間寄存器ro、級(jí)間寄存器DE、級(jí)間寄存器EM和級(jí)間寄存器Mff依次相連,其中取指模塊IF位于五級(jí)流水結(jié)構(gòu)首位,自適應(yīng)回寫(xiě)模塊AWB在末尾;
[0010]自適應(yīng)回寫(xiě)模塊AWB的輸出副本查詢(xún)控制信號(hào)連接至譯碼模塊ID,用于實(shí)現(xiàn)異常情況下源操作數(shù)的副本查詢(xún);自適應(yīng)回寫(xiě)模塊AWB的輸出連接至PC寄存器的輸入,用于實(shí)現(xiàn)處理器異常模式下指令PC的寫(xiě)操作;PC寄存器的輸出指令PC連接至取指模塊IF; PC寄存器的輸出和副本查詢(xún)控制信號(hào)共同實(shí)現(xiàn)處理器對(duì)冗余備份數(shù)據(jù)的查詢(xún)、讀取及使用;
[0011]流水控制模塊與級(jí)間寄存器ro、DE、EM和麗的使能端相連,用于根據(jù)處理器狀態(tài)使能或禁止級(jí)間寄存器的采樣;
[0012]校驗(yàn)碼編碼模塊根據(jù)糾檢錯(cuò)編碼規(guī)則,對(duì)輸入數(shù)據(jù)進(jìn)行編碼,輸出為輸入數(shù)據(jù)及其校驗(yàn)碼;校驗(yàn)碼編碼模塊的輸入來(lái)自自適應(yīng)回寫(xiě)模塊AWB,輸出連接至增強(qiáng)型寄存器文件REF的寫(xiě)端口;
[0013]增強(qiáng)型寄存器文件ERF具有四寫(xiě)五讀共九個(gè)端口,每個(gè)端口均包含實(shí)現(xiàn)讀寫(xiě)必須的控制信號(hào);所有的讀端口均與譯碼模塊ID連接;
[0014]譯碼模塊ID首先檢測(cè)其輸入副本查詢(xún)控制信號(hào)中的信號(hào)查詢(xún)標(biāo)志位是否有效;譯碼模塊ID將五個(gè)讀端口的反饋信息,副本查詢(xún)控制信號(hào)中的信息及其它信息向級(jí)間寄存器DE傳遞;所述五個(gè)讀端口的反饋信息包括第一、第二源操作數(shù)及校驗(yàn)碼SPl、SP2,第一、第二源操作數(shù)副本信息SC1、SC2和目標(biāo)操作數(shù)副本信息DC;
[0015]級(jí)間寄存器DE在流水控制模塊控制下,將上述譯碼模塊ID的輸出寄存后,輸出至執(zhí)txt旲塊EX;
[0016]執(zhí)行模塊EX包括具有檢測(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;
[0017]級(jí)間寄存器EM在流水控制模塊控制下,將上述執(zhí)行模塊EX的輸出寄存后,輸出至存儲(chǔ)訪(fǎng)問(wèn)模塊MA;
[0018]存儲(chǔ)訪(fǎng)問(wèn)模塊MA,完成訪(fǎng)問(wèn)存存儲(chǔ)器的操作,并向級(jí)間寄存器MW進(jìn)一步傳遞該模塊的輸入;
[0019]級(jí)間寄存器MW在流水控制模塊控制下,將上述存儲(chǔ)訪(fǎng)問(wèn)模塊MA的輸出寄存后,輸出至自適應(yīng)回寫(xiě)模塊AWB;
[0020]自適應(yīng)回寫(xiě)模塊AWB完成處理器內(nèi)部的寫(xiě)操作,當(dāng)源操作數(shù)不正確時(shí),將目前指令的PC寫(xiě)入PC寄存器,同時(shí)對(duì)副本查詢(xún)控制信號(hào)進(jìn)行設(shè)置;當(dāng)無(wú)異常存在時(shí),完成增強(qiáng)型寄存器文件ERF的寫(xiě)操作。
[0021 ]優(yōu)選的,增強(qiáng)型寄存器文件ERF,包括數(shù)據(jù)寄存器文件和控制寄存器文件,兩者存儲(chǔ)單元的個(gè)數(shù)相同且一一對(duì)應(yīng),但是位寬不同;數(shù)據(jù)寄存器文件存儲(chǔ)指令的操作數(shù)及其校驗(yàn)碼,以及增強(qiáng)型寄存器文件ERF的其中三個(gè)端口由數(shù)據(jù)寄存器文件單獨(dú)使用;控制寄存器文件存儲(chǔ)備份數(shù)據(jù)的鏈接信息包括副本地址和標(biāo)志位,副本標(biāo)志位指示當(dāng)前訪(fǎng)問(wèn)的操作數(shù)是否存在備份數(shù)據(jù),副本地址指示備份數(shù)據(jù)在數(shù)據(jù)寄存器文件的存儲(chǔ)地址;增強(qiáng)型寄存器文件ERF的其余六個(gè)端口由控制寄存器文件單獨(dú)使用。
[0022]進(jìn)一步,數(shù)據(jù)寄存器文件存儲(chǔ)指令的操作數(shù)包括計(jì)算所需的源操作數(shù)和計(jì)算完成后的目標(biāo)操作數(shù)。
[0023]進(jìn)一步,增強(qiáng)型寄存器文件ERF的其中三個(gè)端口為目標(biāo)操作數(shù)數(shù)據(jù)寫(xiě)端口WD、第一源操作數(shù)數(shù)據(jù)讀端口 RSl和第二源操作數(shù)數(shù)據(jù)讀端口 RS2;增強(qiáng)型寄存器文件ERF的其余六個(gè)端口為第一源操作數(shù)控制信息讀端口RCS1、第二源操作數(shù)控制信息讀端口RCS2、目標(biāo)操作數(shù)控制信息讀端口RCD、目標(biāo)操作數(shù)控制信息寫(xiě)端口WCD、第一源操作數(shù)控制信息寫(xiě)端口WCSl及第二源操作數(shù)控制信息寫(xiě)端口 WCS2。
[0024]優(yōu)選的,執(zhí)行模塊EX,包括第一源操作數(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)行比較,直接通過(guò)CRA和CRB輸出校驗(yàn)異常,若校驗(yàn)結(jié)果正常,則比較第一、