許江寧
常州工程職業(yè)技術(shù)學(xué)院,江蘇常州 213164
中斷與跳轉(zhuǎn)操作對指令串的影響
許江寧
常州工程職業(yè)技術(shù)學(xué)院,江蘇常州 213164
本文介紹了中斷、跳轉(zhuǎn)操作對運行中的指令串的影響,首先介紹了CPU指令并行的概念,再說明中斷,跳轉(zhuǎn)操作對并行運行的指令的影響,介紹了解決這種影響造成的錯誤的方法,主要是說明中斷,跳轉(zhuǎn)指令的特殊性。
中斷;跳轉(zhuǎn);并行運行;取消指令
觀察CPU執(zhí)行一條指令,總是可以分成如下兩個階段,首先CPU要從內(nèi)存中取出需要的指令,即讀指階段,其次根據(jù)指令來執(zhí)行,即執(zhí)行階段,而執(zhí)行階段,可以看成兩類較小的微指令的組合,第一類是數(shù)據(jù)在CPU內(nèi)各個寄存器間的傳輸,第二類是ALU運算或I/O的輸入輸出,而執(zhí)行中的步驟也一般就是上面兩步(次序可變),或只有第一步??傮w來說,CPU執(zhí)行一個指令最多可以再細(xì)分為第一階段加第二階段的兩個步驟共三步。因此系統(tǒng)執(zhí)行指令時,可以看成是一條三部分組成的流水線。下圖,是指令串的串行執(zhí)行。
上面設(shè)計的CPU,一次只執(zhí)行一條指令,一條指令執(zhí)行三個步驟最少有三個周期。但上面說的三步中,仔細(xì)分析,大都是可以并行運行的。例如兩類微指令,第一類只是CPU內(nèi)部總線上的操作,第二類是I/O或ALU部件的操作,兩類操作在空間上是獨立的,可以同時執(zhí)行,即并行執(zhí)行。又如每條指令都要先從內(nèi)存中讀取,這是I/O部件的操作,除了與讀寫類指令的讀寫操作有矛盾,也可以與其他操作并行執(zhí)行。總體來說,三部分間還是有較大的并行空間,下圖是理想狀況下指令串并行執(zhí)行的方式圖。
并行執(zhí)行指令的結(jié)果是同時會處理數(shù)條指令,從執(zhí)行的結(jié)果看,他們是順序執(zhí)行的。如果出現(xiàn)跳轉(zhuǎn),中斷類的指令,會造成指令串的改變,本來依次執(zhí)行,這種改變沒有問題,但如果并行執(zhí)行,一條指令先需要取指,再譯碼指令,只有到了譯碼階段,CPU才能知道讀到了一條跳轉(zhuǎn)類的指令,那之后要執(zhí)行的指令全部要修改,但此時,一定已經(jīng)預(yù)先讀取了某些指令,這些指令屬于原先的指令串,必須要舍去,可以使用EMP空白指令來取代已經(jīng)讀取的指令,這個指令沒有任何功能。
下圖是取消指令的示意圖,可見需要消去指令1后譯碼階段和執(zhí)行階段兩個時期讀取的指令。
上面只介紹了改變執(zhí)行指令地址這一過程的影響,但是,中斷操作(包括軟硬中斷兩種)的要求是處理完中斷,最后還能返回原來正在執(zhí)行的程序中,這樣CS,IP兩寄存器中的內(nèi)容就要保存起來。下面討論軟件中斷指令I(lǐng)NT,與硬件中斷類似,但更簡單些。對于軟件中斷,被保存的CS,IP的值應(yīng)該指向INT指令之后的一條指令,但是類似于上段的內(nèi)容,只有在執(zhí)行INT兩個周期前的CS,IP才指向INT后的這條指令,而此時已經(jīng)無法確定CS,IP的指向。有一個理解是過了兩個周期,那CS,IP就應(yīng)該指向INT后的第三條指令,此時只要把CS,IP減二保存起來就可以了。但是有一個重要的問題是,CPU在運行時,并不是每個周期都是讀取指令的,I/O有時還可能被讀寫內(nèi)存類的指令所占用,占用時,CS,IP是不變的。以下考察讀寫對I/O的占用情況,并分析這一影響的過程,因為微指令清零后,默認(rèn)的操作就是讀取指令,那么需要把不是默認(rèn)情況的未讀取指令的周期標(biāo)示出來。
分析“讀”,“寫”指令對讀取指令操作的影響時,對號表示此時刻可以讀入指令,叉號表示I/O被占用,無法讀入指令。下圖是“讀”指令的示意圖。
可見讀指令后最多只能連續(xù)執(zhí)行兩個指令,下圖是“寫”指令的示意圖。
寫指令后可以連續(xù)執(zhí)行三個指令。按照上面分析,可能會出“讀,讀,軟中斷”的情況,并且這三者也是連續(xù)被讀取,連續(xù)執(zhí)行的,此時,軟中斷后兩個周期內(nèi),I/O都是被占用的,那CS,IP根本沒有變化。所以讀取INT指令兩個周期后,CS,IP可能會出現(xiàn)增加4,增加2,不變?nèi)N情況。所以此時要通過讀取指令情況,對CS,IP保存的數(shù)值進(jìn)行處理后再保存。
上面兩節(jié)中已經(jīng)對解決方法有所涉及,就是將后兩個周期讀取的指令取消掉,具體做法是用EMP指令覆蓋這些指令。觀察指令集表,可見EMP指令機(jī)器碼的高四位是1111,當(dāng)需要覆蓋指令時,用1111與目標(biāo)指令代碼相或,目標(biāo)代碼就轉(zhuǎn)化為EMP指令,如果不用覆蓋,就用0000與目標(biāo)代碼相或,目標(biāo)代碼不變。
對于輸出正確的地址,主要是一些條件判斷,需要對各種出現(xiàn)矛盾的情況做出處理。
[1]單睿,洪纓,侯朝煥.推斷與推測技術(shù)在現(xiàn)代高性能微處理器設(shè)計中的應(yīng)用研究[J].計算機(jī)學(xué)報,2003(11).
[2]姬忠寧,陳迅,徐金甫,等.基于指令前綴的專用VLIW壓縮技術(shù)研究與實現(xiàn)[J].電子技術(shù)應(yīng)用,2013(4).
TN2
A
1674-6708(2015)149-0110-02