專利名稱:一種計算機cpu抗干擾的設計方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計算機CPU抗干擾的設計方法。
背景技術(shù):
計算機控制系統(tǒng)的抗干擾是其軟、硬件設計中必須考慮的重要問題,而程序計數(shù)器PC的抗干擾俗稱“程序跑飛”問題又是設計中主要解決的問題之一?,F(xiàn)有解決“程序跑飛”的常用方法是設置“Watchdog”監(jiān)視器,它雖可在程序受干擾、進入死循環(huán)或硬件出故障時使系統(tǒng)復位,但存在著不能及時發(fā)現(xiàn)CPU故障;程序復雜時,軟件中不易確定設置清除“Watchdog”指令位置;進入死循環(huán)無法起到作用;通常適于小型計算機控制系統(tǒng)等一系列缺陷;為了克服這些缺陷,我們在《一種使CPU程序計數(shù)器抗干擾的設計方法》(專利號為99115776.1)的發(fā)明專利中使用了新的抗干擾設計方法,它是采用增設監(jiān)視計數(shù)器PCMC、路標寄存器DR等硬件對程序計數(shù)器PC的干擾情況進行判定。該發(fā)明專利雖然有效地解決了上述一系列缺陷,但僅是圍繞著對程序計數(shù)器PC內(nèi)容的抗干擾,沒能解決計算機控制系統(tǒng)的其它抗干擾問題。
通過對計算機控制系統(tǒng)“程序跑飛”干擾的分析,我們發(fā)現(xiàn)“程序跑飛”并不是僅由程序計數(shù)器PC被干擾而引起的,一般分為三種情況一是程序計數(shù)器PC的內(nèi)容被干擾使其出現(xiàn)錯誤,從而取回了錯誤或不該執(zhí)行的指令,該干擾稱為程序計數(shù)器PC干擾;二是程序計數(shù)器PC的內(nèi)容是正確的,指令在傳送過程中數(shù)據(jù)被干擾而出現(xiàn)錯誤,該故障被稱為指令干擾;三是程序計數(shù)器PC的內(nèi)容是對的,指令在傳送過程中無誤,但因程序存儲器PM單元的內(nèi)容出現(xiàn)錯誤,導致取回的指令是錯誤的,該故障被稱為存儲器干擾。為了便于論述,我們將以上三種干擾統(tǒng)稱為程序干擾。對于存儲器干擾現(xiàn)有技術(shù)已有解決方法如采用上電自檢、隨機自檢,在指令后增加校驗碼等。
由上述分析可以看出《一種使CPU程序計數(shù)器抗干擾的設計方法》(專利號為99115776.1)的發(fā)明專利仍然存在如下缺點1、只解決了程序計數(shù)器PC被干擾時的情況,沒能解決指令在傳送過程中的數(shù)據(jù)干擾問題;2、由于該項發(fā)明專利增設了硬件及相應的軟件,對程序計數(shù)器PC的抗干擾較為復雜,其設計出的計算機兼容性受到限制;3、現(xiàn)有技術(shù)僅是對系統(tǒng)錯誤進行判斷,即判斷是否被干擾,沒能記錄程序指令被干擾時的具體“地點”,而無法恢復到干擾前的“斷點”,因此,僅能在發(fā)現(xiàn)干擾后實現(xiàn)系統(tǒng)復位,對于干擾處理的方法并不科學。
發(fā)明內(nèi)容
為解決現(xiàn)有技術(shù)中存在的問題,本發(fā)明的目的在于提供一種既可有效監(jiān)測程序計數(shù)器PC干擾和指令干擾,又可記載程序被干擾斷點及恢復斷點的計算機抗干擾的設計方法。該方法能夠有效抑制程序干擾中的計數(shù)器PC干擾和指令干擾,在發(fā)現(xiàn)干擾后恢復到程序被干擾的斷點,并可根據(jù)不同情況作相應的故障處理。
為實現(xiàn)上述目的本發(fā)明是以如下技術(shù)方案實現(xiàn)的包括硬件中程序存儲器PM、程序計數(shù)器PC、指令寄存器IR以及硬件中增設有程序跟蹤地址寄存器PTAR、程序跟蹤標志寄存器PTFR,同時增設三個相同程序計數(shù)器PC為三選二程序計數(shù)器CPC、三個相同的指令寄存器IR為三選二指令寄存器CIR,增加一個非屏蔽故障中斷源NSI以及程序干擾標志寄存器PIFR;程序執(zhí)行時將指令地址連續(xù)讀取三次分別寫入所述三選二程序計數(shù)器CPC中,所述三選二程序計數(shù)器CPC中的內(nèi)容經(jīng)比較,結(jié)果有兩種其一、三個程序計數(shù)器PC中的內(nèi)容均不相同,則中斷取指過程,向程序干擾標志寄存器PIFR置計數(shù)器PC干擾故障信息;其二、三個程序計數(shù)器PC中的內(nèi)容至少二個相同,則按該確定的內(nèi)容作為地址從程序存儲器PM連續(xù)讀取指令三次,分別傳送到所述三選二指令寄存器CIR中,所述三選二指令寄存器CIR中的內(nèi)容經(jīng)比較,結(jié)果也有兩種其一、三個指令寄存器IR中的內(nèi)容至少二個相同,則按該確定的指令執(zhí)行,然后將本次指令地址的首地址及下一條指令地址的偏移量或地址寫入所述程序跟蹤地址寄存器PTAR,將與所述程序跟蹤地址寄存器PTAR中偏移量或地址有關(guān)的標志寫入程序跟蹤標志寄存器PTFR,為下一條指令的執(zhí)行做好準備。其二、三個指令寄存器IR中的內(nèi)容均不相同,則中斷指令執(zhí)行過程,同時向程序干擾標志寄存器PIFR置指令干擾故障信息。故障信息出現(xiàn)時,引起非屏蔽中斷請求,CPU將無條件產(chǎn)生非屏蔽中斷響應,在非屏蔽中斷服務處理程序中,根據(jù)程序干擾標志寄存器PIFR的內(nèi)容對各種故障進行處理當為計數(shù)器PC干擾故障時,根據(jù)存入所述程序跟蹤地址寄存器PTAR和程序跟蹤標志寄存器PTFR的內(nèi)容恢復所述程序計數(shù)器CPC的值,恢復干擾前指令的地址及條件,從被中斷的指令處繼續(xù)執(zhí)行程序;當為指令干擾故障信息時,根據(jù)所述程序計數(shù)器CPC的內(nèi)容再執(zhí)行一次讀指令操作,恢復正常操作程序;當系統(tǒng)無法正確恢復時,及所述程序跟蹤地址寄存器PTAR和程序跟蹤標志寄存器PTFR的內(nèi)容不匹配,系統(tǒng)設計者可根據(jù)實際情況做出系統(tǒng)報警、復位或初始化等方法處理。
上述程序跟蹤地址寄存器PTAR設為前N位和后N位,前N位是已執(zhí)行指令的地址,后N位是下一條指令相對于已執(zhí)行指令地址的偏移量或是下一條指令地址;所述程序跟蹤標志寄存器PTFR設為M位;所述程序干擾標志寄存器PIFR設為L位。
本發(fā)明與現(xiàn)有技術(shù)相比,改變了傳統(tǒng)計算機執(zhí)行指令的方式及硬件結(jié)構(gòu),使用三選二程序計數(shù)器CPC及三選二指令寄存器CIR,對指令地址、指令的內(nèi)容進行實時監(jiān)測,即將傳統(tǒng)的順序指令執(zhí)行過程變?yōu)閹в斜容^判斷環(huán)節(jié)的指令執(zhí)行過程,既實現(xiàn)了對程序計數(shù)器PC干擾進行監(jiān)測,又實現(xiàn)了對程序指令干擾實時監(jiān)測;同時,使用非屏蔽故障中斷源NSI、程序干擾標志寄存器PIFR、程序跟蹤地址寄存器PTAR和程序跟蹤標志寄存器PTFR,為程序斷點的恢復提供了可能;并為設計者提供了系統(tǒng)無法恢復時,根據(jù)實際情況進行科學的處理的可能,而不是像傳統(tǒng)的處理方法簡單的將系統(tǒng)復位。
計算機在實際運行時,正常執(zhí)行的指令與前、后指令有著非常確定的關(guān)系,當程序設計完成后,這種關(guān)系已經(jīng)確定,計算機按照這種關(guān)系,才能實現(xiàn)其確定的功能。計算機受干擾后,這種關(guān)系被打亂,使計算機的運行出現(xiàn)故障。本發(fā)明采用前一條已執(zhí)行的指令與將要執(zhí)行指令之間的確定關(guān)系來判斷將要執(zhí)行指令的正誤,恢復程序被干擾的斷點。該設計方法改變了現(xiàn)有計算機系統(tǒng)只能實現(xiàn)系統(tǒng)復位的缺陷,用增設程序跟蹤地址寄存器PTAR和程序跟蹤標志寄存器PTFR實現(xiàn)程序被干擾斷點的恢復。由于本設計方法中還增加了非屏蔽中斷源NSI、程序干擾標志寄存器PIFR,當出現(xiàn)干擾信號CPU發(fā)出非屏蔽中斷請求后,系統(tǒng)及時提供中斷服務并根據(jù)不同干擾的情況進行不同處理。
由此可見,本方法設計出的計算機能對程序執(zhí)行的整個過程進行實時監(jiān)控對于各類干擾進行實時監(jiān)測,可恢復到系統(tǒng)干擾前的斷點并區(qū)別不同干擾情況進行不同的處理。因此本發(fā)明設計出的計算機抗干擾性更強、對干擾的判斷更準確、可靠,故障處理更有效;具有實時性、修復性、科學性的特點。
具體實施例方式
現(xiàn)以INTEL公司的8031單片機為模型,說明抗干擾計算機的設計方法及工作過程將原有程序計數(shù)器PC增設成三個相同計數(shù)器為三選二程序計數(shù)器CPC,將原指令寄存器IR增設成三個相同寄存器為三選二指令寄存器CIR,并增設程序跟蹤地址寄存器PTAR、程序跟蹤標志寄存器PTFR、非屏蔽中斷源NSI、程序干擾標志寄存器PIFR。
程序跟蹤地址寄存器PTAR設為前16位和后16位,前16位是已執(zhí)行指令的地址,后16位是根據(jù)程序跟蹤標志寄存器PTFR的內(nèi)容來確定是下一條指令相對于已執(zhí)行指令地址的偏移量或是下一條指令的地址;同時,設計程序跟蹤標志寄存器PTFR的內(nèi)容為8位位7、6、5、4、3、2、1、0。
各種狀態(tài)表示為00000000B(00H)說明程序是順序執(zhí)行。程序跟蹤地址寄存器PTAR后16位是已執(zhí)行指令的字節(jié)數(shù);00110011 B(33H)說明程序有跳轉(zhuǎn)。程序跟蹤地址寄存器PTAR后16位是相對于已執(zhí)行指令地址的偏移量,如SJMP、JC、JZ等指令;11001100 B(DDH)說明程序有跳轉(zhuǎn)。程序跟蹤地址寄存器PTAR后16位是下一條指令的地址,如LJMP、JMP@A+PATR等;11111111 B(FFH)說明程序有跳轉(zhuǎn)。程序跟蹤地址寄存器PTAR后16位是下一條指令的地址,且與中斷、調(diào)用子程序有關(guān),如LCALL、RETI;設程序干擾標志寄存器PIFR的內(nèi)容為8位位7、6、5、4、3、2、1、0。
各種狀態(tài)表示為01010101 B(55H)說明干擾是PC干擾;10101010 B(AAH)說明干擾是指令干擾。
若系統(tǒng)有如下程序段ORG0000h0000h LJMP Main ;3字節(jié)指令,跳轉(zhuǎn)指令ORG2000h2000h Main MOVSP,#53H ;3字節(jié)指令,無跳轉(zhuǎn)Loop SJMP Loop ;2字節(jié)指令,短跳轉(zhuǎn)無干擾情況時計算機復位后,程序跟蹤地址寄存器PTAR和程序跟蹤標志寄存器PTFR都被復位。(CPC)=0000H,無誤;連續(xù)三次取指、存入三選二指令寄存器CIR,經(jīng)三選二判斷無誤,執(zhí)行LJMP 2000H指令,將0000H地址、2000H分別存入程序跟蹤地址寄存器PTAR的前、后16位寄存器中,程序跟蹤標志寄存器PTFR的內(nèi)容為DDH。
送2000H到三選二程序計數(shù)器CPC,無誤;連續(xù)三次取指、存入三選二指令寄存器CIR,經(jīng)三選二判斷無誤,執(zhí)行MOV SP,#53H指令,將2000H地址、0002H分別存入程序跟蹤地址寄存器PTAR的前、后16位寄存器中,程序跟蹤標志寄存器PTFR的內(nèi)容為00H。
送2002H到三選二程序計數(shù)器CPC,無誤;連續(xù)三次取指、存入三選二指令寄存器CIR,經(jīng)判斷無誤,執(zhí)行SJMP Loop指令,將2002H地址、00FEH分別存入程序跟蹤地址寄存器PTAR的前、后16位寄存器中、程序跟蹤標志寄存器PTFR的內(nèi)容為33H。
出現(xiàn)干擾故障情況時由于三選二程序計數(shù)器CPC的比較、確認,三選二指令寄存器CIR的比較、確認一直是處于一個過程之中,也就是只要該指令沒有開始執(zhí)行,一旦出現(xiàn)計數(shù)器PC干擾和指令干擾,三選二程序計數(shù)器CPC、三選二指令寄存器CIR都會向CPU提出故障信息,產(chǎn)生中斷,阻斷指令的執(zhí)行,并進入非屏蔽中斷響應。中斷或中斷返回時,應將程序跟蹤地址寄存器PTAR和程序跟蹤標志寄存器PTFR壓棧或出棧,確保程序的連續(xù)性。
在中斷處理中,可根據(jù)不同實際情況選擇處理故障的方式1、若是三選二程序計數(shù)器CPC提出中斷,程序干擾標志寄存器PIFR的內(nèi)容為55H,說明屬程序計數(shù)器PC干擾,可使用程序跟蹤地址寄存器PTAR和程序跟蹤標志寄存器PTFR恢復程序計數(shù)器CPC的值,恢復干擾前指令的地址及條件;2、若是指令寄存器三選二CIR提出中斷,程序干擾標志寄存器PIFR的內(nèi)容為AAH說明屬指令干擾,可使用三選二程序計數(shù)器CPC的值再執(zhí)行一次讀指令操作,恢復正常操作;3、若干擾發(fā)現(xiàn)后在恢復系統(tǒng)時,程序跟蹤地址寄存器PTAR和程序跟蹤標志寄存器PTFR的內(nèi)容也出現(xiàn)錯誤,例如有中斷標志,但其所示的地址并不是中斷的地址范圍;有偏移量標志,但偏移量的值不對等??筛鶕?jù)不同情況進行處理1)程序跟蹤地址寄存器PTAR和程序跟蹤標志寄存器PTFR的內(nèi)容不匹配,系統(tǒng)報警、停止運行、使系統(tǒng)復位;2)根據(jù)程序跟蹤地址寄存器PTAR和程序跟蹤標志寄存器PTFR提供的信息,恢復干擾前指令的地址及條件,從被中斷的指令處執(zhí)行程序;3)根據(jù)程序跟蹤地址寄存器PTAR的值,從被中斷的前一條指令執(zhí)行程序;4)初始化后,從程序的某個入口開始執(zhí)行。
為了提高系統(tǒng)的可靠性,可將程序跟蹤地址寄存器PTAR、程序跟蹤標志寄存器PTFR分別增設成為三個相同的三選二寄存器,與三選二指令寄存器CIR的工作原理相同,先連續(xù)三次讀取數(shù)據(jù),三選二判斷無誤后,再執(zhí)行后續(xù)程序。
根據(jù)本發(fā)明的設計原理,也可增設五個相同程序計數(shù)器PC為五選三程序計數(shù)器CPC,增設五個相同的指令寄存器IR為五選三指令寄存器CIR,程序執(zhí)行時可通過比較五個程序計數(shù)器PC或五個指令寄存器IR的內(nèi)容和指令地址,采用五選三相同的方式?jīng)Q定所要執(zhí)行的指令,否則,中止指令的執(zhí)行,向CPU發(fā)出計數(shù)器PC干擾或指令干擾故障信息。
權(quán)利要求
1.一種計算機CPU抗干擾的設計方法,它包括硬件中程序存儲器PM、程序計數(shù)器PC、指令寄存器IR以及軟件中程序指令的設置,其特征在于所述硬件中還增設有程序跟蹤地址寄存器PTAR、程序跟蹤標志寄存器PTFR,同時增設三個相同程序計數(shù)器PC為三選二程序計數(shù)器CPC、三個相同的指令寄存器IR為三選二指令寄存器CIR,并增加非屏蔽中斷源NSI和程序干擾標志寄存器PIFR;程序執(zhí)行時將程序計數(shù)器PC的指令地址連續(xù)讀取三次分別寫入所述三選二程序計數(shù)器CPC,若所述三個相同程序計數(shù)器PC中的內(nèi)容經(jīng)比較,結(jié)果有兩種其一、三個程序計數(shù)器PC中的內(nèi)容均不相同,則中斷取指過程,向程序干擾標志寄存器PIFR置計數(shù)器PC干擾故障信息,其二、三個程序計數(shù)器PC中的內(nèi)容至少二個相同,則按該確定內(nèi)容作為地址存入所述程序存儲器PM中并從程序存儲器PM連續(xù)讀取指令三次,分別傳送到所述三選二指令寄存器CIR中,若所述三個相同三選二指令寄存器IR的內(nèi)容經(jīng)比較,結(jié)果也有兩種其一、三個指令寄存器IR中的內(nèi)容至少二個相同,則按該確定的指令執(zhí)行,然后將本次指令地址的首地址及下一條指令地址的偏移量或地址寫入所述程序跟蹤地址寄存器PTAR,將與所述程序跟蹤地址寄存器PTAR中偏移量或地址有關(guān)的標志寫入程序跟蹤標志寄存器PTFR,為下一條指令的執(zhí)行做好準備,其二、三個指令寄存器IR中的內(nèi)容均不相同,則中斷指令執(zhí)行過程,同時向程序干擾標志寄存器PIFR置指令干擾故障信息;故障信息出現(xiàn)時,引起非屏蔽中斷請求,CPU將無條件產(chǎn)生非屏蔽中斷響應,在非屏蔽中斷服務處理程序中,根據(jù)程序干擾標志寄存器PIFR的內(nèi)容對各種故障進行處理當為計數(shù)器PC干擾故障信息時,根據(jù)存入所述程序跟蹤地址寄存器PTAR和程序跟蹤標志寄存器PTFR的內(nèi)容恢復所述程序計數(shù)器CPC的值,恢復干擾前指令的地址及條件,從被中斷的指令處繼續(xù)執(zhí)行程序,當為指令干擾故障信息時,根據(jù)所述程序計數(shù)器CPC的內(nèi)容再執(zhí)行一次讀指令操作,恢復正常操作程序,當出現(xiàn)干擾故障系統(tǒng)恢復時,所述程序跟蹤地址寄存器PTAR和程序跟蹤標志寄存器PTFR的內(nèi)容不匹配,系統(tǒng)報警、復位或初始化。
2.根據(jù)權(quán)利要求1所述的一種計算機CPU抗干擾的設計方法,其特征在于所述程序跟蹤地址寄存器PTAR設為前N位和后N位,前N位是已執(zhí)行指令的地址,后N位是下一條指令相對于已執(zhí)行指令地址的偏移量或是下一條指令地址;所述程序跟蹤標志寄存器PTFR設為M位;所述程序干擾標志寄存器PIFR設為L位。
3.根據(jù)權(quán)利要求1所述的一種計算機CPU抗干擾的設計方法,其特征在于所述的三選二程序計數(shù)器CPC也可增設為五個相同程序計數(shù)器PC,三選二指令寄存器CIR可增設為五個相同的指令寄存器IR,程序執(zhí)行時可通過比較五個程序計數(shù)器PC或五個指令寄存器IR的指令地址和內(nèi)容,采用五選三相同的方式?jīng)Q定所要執(zhí)行的指令,否則,中止指令的執(zhí)行,向CPU發(fā)出計數(shù)器PC干擾或指令干擾故障信息。
4.根據(jù)權(quán)利要求1或2所述的一種計算機CPU抗干擾的設計方法,其特征在于所述程序跟蹤地址寄存器PTAR、所述程序跟蹤標志寄存器PTFR可分別增設為三個相同寄存器。
全文摘要
本發(fā)明涉及一種計算機CPU抗干擾的設計方法,它包括在硬件中增設程序跟蹤地址寄存器PTAR、程序跟蹤標志寄存器PTFR、程序干擾標志寄存器PIFR,同時,增設三選二計數(shù)器CPC、三選二指令寄存器ICR以及增設非屏蔽中斷源NSI。采用本方法設計出的計算機既可有效監(jiān)測程序計數(shù)器PC干擾和指令干擾,又可記載程序被干擾斷點及恢復斷點的計算機抗干擾的設計方法,因此本發(fā)明設計出的計算機抗干擾性更強、對干擾的判斷更準確、可靠,故障處理更有效;具有實時性、修復性、科學性的特點。
文檔編號G06F11/36GK1677363SQ200510041950
公開日2005年10月5日 申請日期2005年4月13日 優(yōu)先權(quán)日2005年4月13日
發(fā)明者柴鈺, 柴劍 申請人:柴鈺