亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種中斷處理方法及流水線控制器與流程

文檔序號:12718685閱讀:528來源:國知局
一種中斷處理方法及流水線控制器與流程

本發(fā)明屬于微處理器設(shè)計技術(shù)領(lǐng)域,具體地說,是涉及一種中斷處理方法及流水線控制器。



背景技術(shù):

在微處理器中,中斷(Interrupt)是一種重要的通信、控制方法之一。產(chǎn)生中斷后,處理器核將暫時停止當(dāng)前處理的程序,轉(zhuǎn)而去響應(yīng)中斷請求,在完成中斷服務(wù)程序之后,返回繼續(xù)執(zhí)行被中斷的程序。

中斷按產(chǎn)生原因可分為軟件中斷和硬件中斷。軟件中斷也稱為例外或異常(Exception),由指令的執(zhí)行狀態(tài)決定,通常在指令的不同流水級可能出現(xiàn)不同的例外,例如在指令譯碼階段發(fā)現(xiàn)指令非法、在Load/Store指令執(zhí)行階段發(fā)現(xiàn)TLB缺失、在除法指令執(zhí)行時發(fā)現(xiàn)除數(shù)是0、在計算指令執(zhí)行完畢后發(fā)現(xiàn)溢出,或者處理器提供軟件中斷/陷阱指令,提供一種類似系統(tǒng)調(diào)用的功能。不同例外可能在不同的流水級產(chǎn)生或被發(fā)現(xiàn),但是其共同點是由指令產(chǎn)生。硬件中斷是指由處理器核之外的設(shè)備在特定情況下,請求內(nèi)核處理相關(guān)事務(wù),比如在DMA完成數(shù)據(jù)搬運之后可通過中斷通知內(nèi)核DMA事務(wù)的結(jié)束、內(nèi)核配置外設(shè)錯誤導(dǎo)致出現(xiàn)錯誤請求內(nèi)核處理并重新配置,或者一些通用的中斷,可配置處理器在中斷產(chǎn)生時,運行特定的程序。

中斷具有不同的處理方式,通常有精確軟件中斷與非精確軟件中斷的區(qū)別。精確軟件中斷需要滿足以下兩個條件:第一,中斷返回地址對應(yīng)的指令之前的指令完全執(zhí)行完畢,且對處理器狀態(tài)進行了修改;第二,中斷返回地址對應(yīng)的指令及其之后的指令對處理器沒有進行修改。而不滿足上述兩個條件的處理方式稱之為非精確軟件中斷。一般情況下,大部分中斷要求精確軟件中斷,只有極少數(shù)非精確軟件中斷中斷,或者在某些處理器中沒有非精確軟件中斷。

對于例外而言,產(chǎn)生例外的指令的地址就是中斷返回地址,硬件中斷為了與軟件中斷統(tǒng)一處理,通常的處理方法是綁定一條除了某些特定指令之外的指令,當(dāng)該指令運行至中斷處理邏輯所在流水級時,與例外作相同處理。因為中斷可能在各流水級產(chǎn)生,為了精確軟件中斷的處理,通常在最晚可能產(chǎn)生例外的流水級中統(tǒng)一處理中斷,由于某些中斷在指令執(zhí)行完畢之后才可能被發(fā)現(xiàn),所以該流水級較多選在提交/寫回級(流水線最后一級)。

處理器在響應(yīng)中斷時,通常會沖刷整個流水線,然后對中斷服務(wù)程序取指。由于中斷處理所在流水級已經(jīng)處于整個流水線的末尾,此時對流水線沖刷將導(dǎo)致后續(xù)已經(jīng)進行取指、譯碼、執(zhí)行的指令被取消,當(dāng)中斷返回之后繼續(xù)執(zhí)行。這種方式對流水線的利用率很低,被沖刷的指令在中斷返回之后仍然需要重新執(zhí)行,既影響性能又增加功耗。



技術(shù)實現(xiàn)要素:

本發(fā)明為了解決現(xiàn)有中斷處理方法為響應(yīng)中斷而沖刷整個流水線,使得冗余執(zhí)行造成性能損失和功耗增加的問題,本發(fā)明將改進處理器對中斷的響應(yīng)方法,最大限度的減少性能損失和功耗。

為了解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案予以實現(xiàn):

一種中斷處理方法,包括以下步驟:

(1)、內(nèi)核接收中斷請求,并獲取中斷向量;

(2)、內(nèi)核判斷當(dāng)前狀態(tài)是否允許中斷,若允許,取指單元使用中斷向量對中斷服務(wù)程序進行取指;

(3)、內(nèi)核執(zhí)行中斷服務(wù)程序的首條指令,并使用首條指令標(biāo)識進行標(biāo)識,同時,內(nèi)核當(dāng)前流水線上的尾部指令正常執(zhí)行,所述尾部指令為內(nèi)核當(dāng)前流水線上位于所述中斷服務(wù)程序中的首條指令之前的指令;

內(nèi)核執(zhí)行指令過程中,當(dāng)執(zhí)行至該指令的最后一級時,將位于該指令之后的指令的地址進行保存,所述位于該指令之后的指令為程序若不受中斷影響,該指令執(zhí)行完成之后,下一條應(yīng)該執(zhí)行完成的指令;

若內(nèi)核執(zhí)行的指令為中斷服務(wù)程序的首條指令,當(dāng)執(zhí)行至該指令的最后一級時,將執(zhí)行中斷服務(wù)程序首條指令之前的指令時所保存的地址作為中斷返回地址記錄在中斷返回寄存器中;

(4)、中斷服務(wù)程序中的所有指令執(zhí)行完畢后,按照中斷返回寄存器中保存的返回地址進行返回。

進一步的,步驟(3)之前還包括判斷中斷源的類型的步驟,包括硬件中斷和軟件中斷,若步驟(1)中所接收的中斷為硬件中斷,則按照步驟(3)-步驟(4)執(zhí)行。

進一步的,若步驟(1)中所接收的中斷為軟件中斷,則進一步判斷軟件中斷屬于非精確軟件中斷還是精確軟件中斷,若為非精確軟件中斷,則按照步驟(3)-步驟(4)執(zhí)行,若為精確軟件中斷,則步驟(2)之前還包括沖刷掉內(nèi)核當(dāng)前流水線上發(fā)生精確軟件中斷指令之后的所有指令的步驟,發(fā)生精確軟件中斷指令執(zhí)行至最后一級時,決定如何保存地址:若該精確軟件中斷需要重新執(zhí)行該指令,則保存該指令的地址;否則,按照步驟(3)-步驟(4)執(zhí)行。

進一步的,步驟(3)中執(zhí)行所述尾部指令時,若所述尾部指令存在跳轉(zhuǎn)指令,判斷所述跳轉(zhuǎn)指令與所述中斷請求的優(yōu)先級,若所述跳轉(zhuǎn)指令的優(yōu)先級不高于所述中斷請求的優(yōu)先級,向流水線控制器發(fā)出低優(yōu)先級的沖刷流水線控制請求,計算出跳轉(zhuǎn)目標(biāo)地址并記錄,不執(zhí)行跳轉(zhuǎn)。

進一步的,步驟(3)中執(zhí)行所述尾部指令時,若所述跳轉(zhuǎn)指令的優(yōu)先級高于所述中斷請求的優(yōu)先級,向流水線控制器發(fā)出高優(yōu)先級的沖刷流水線控制請求,向取指單元給出取指請求,執(zhí)行所述跳轉(zhuǎn)指令,此時不執(zhí)行所述中斷服務(wù)程序,內(nèi)核判斷當(dāng)前狀態(tài)修改為不允許中斷,返回步驟(1)。

進一步的,流水線控制器接收到所述沖刷流水線控制請求時,根據(jù)沖刷流水線控制請求的優(yōu)先級以及中斷服務(wù)程序的首條指令標(biāo)識確定每一流水級的控制信號:

當(dāng)前流水線上存在中斷服務(wù)程序的首條指令,且需要響應(yīng)尾部指令給出的低優(yōu)先級的沖刷流水線控制時,不沖刷中斷服務(wù)程序所在流水級,中斷服務(wù)程序所在流水級由中斷服務(wù)程序指令給出的流水線控制請求控制。

基于上述的一種中斷處理方法,本發(fā)明同時提出了一種流水線控制器,包括指令標(biāo)記單元、第一處理請求單元、第二請求處理單元、控制信號選擇單元,

所述指令標(biāo)記單元用于保存中斷服務(wù)程序的首條指令標(biāo)志,將當(dāng)前流水線上每一流水級的首條指令標(biāo)志組成指令標(biāo)記信號傳遞至所述第二請求處理單元和控制信號選擇單元;

所述第一請求處理單元用于接收所有流水級產(chǎn)生的流水線控制請求,處理尾部指令給出的低優(yōu)先級沖刷流水線控制請求,產(chǎn)生第一控制信號;

所述第二請求處理單元處理由中斷服務(wù)程序指令給出的流水線控制信號,產(chǎn)生第二控制信號;

所述控制信號選擇單元根據(jù)所述流水線控制請求和指令標(biāo)記信號確定每一流水級當(dāng)前執(zhí)行的指令為尾部指令還是中斷服務(wù)程序指令,選擇由第一控制信號控制還是由第二控制信號控制。

與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點和積極效果是:本發(fā)明的中斷處理方法,響應(yīng)中斷不會沖刷流水線,已經(jīng)取指、發(fā)射、譯碼、執(zhí)行的指令可以繼續(xù)執(zhí)行,避免了這些指令的重復(fù)操作。而中斷服務(wù)程序的指令會在上述指令執(zhí)行的同時,進行取指,并隨著流水線一步步執(zhí)行,所以對中斷服務(wù)程序的執(zhí)行沒有影響。

結(jié)合附圖閱讀本發(fā)明實施方式的詳細描述后,本發(fā)明的其他特點和優(yōu)點將變得更加清楚。

附圖說明

為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本發(fā)明所提出的中斷處理方法的一種實施例流程圖;

圖2是本發(fā)明所提出的中斷控制器的一種實施原理方框圖。

具體實施方式

下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

實施例一

本實施例提出了一種中斷處理方法,如圖1所示,包括以下步驟:

S1、內(nèi)核接收中斷請求,并獲取中斷向量;其中,若中斷請求為硬件中斷,則內(nèi)核接收由硬件中斷控制器發(fā)送的中斷請求,若中斷請求為軟件中斷,則內(nèi)核接收由確定軟件中斷的單元發(fā)送的中斷請求,內(nèi)核與之通信獲得中斷向量。

S2、內(nèi)核判斷當(dāng)前狀態(tài)是否允許中斷,若允許,取指單元使用中斷向量對中斷服務(wù)程序進行取指;并不將先于中斷服務(wù)程序首條指令進入流水線但未完成的指令(稱之為尾部指令)進行沖刷。中斷服務(wù)程序(ISR)的首條指令將具有特殊的標(biāo)識,表明該指令是中斷服務(wù)程序的首條指令,中斷服務(wù)程序的首條指令以及后續(xù)進入流水線的指令屬于中斷服務(wù)程序指令。

S3、內(nèi)核執(zhí)行中斷服務(wù)程序的首條指令,并使用首條指令標(biāo)識進行標(biāo)識,同時,內(nèi)核當(dāng)前流水線上的尾部指令正常執(zhí)行,所述尾部指令為內(nèi)核當(dāng)前流水線上位于所述中斷服務(wù)程序中的首條指令之前的指令;

內(nèi)核執(zhí)行指令過程中,當(dāng)執(zhí)行至該指令的最后一級時,將位于該指令之后的指令的地址進行保存,其中,位于該指令之后的指令為程序若不受中斷影響,該指令執(zhí)行完成之后,下一條應(yīng)該執(zhí)行完成的指令;

若內(nèi)核執(zhí)行的指令為中斷服務(wù)程序的首條指令,當(dāng)執(zhí)行至該指令的最后一級時,將執(zhí)行中斷服務(wù)程序首條指令之前的指令時所保存的地址作為中斷返回地址記錄在中斷返回寄存器中;

S4、中斷服務(wù)程序中的所有指令執(zhí)行完畢后,按照中斷返回寄存器中保存的返回地址進行返回。

指令的執(zhí)行必將經(jīng)過取指、發(fā)射、譯碼、執(zhí)行等流程,而流水線存在的意義就是當(dāng)一條指令在執(zhí)行某一個流程時,其他指令可以執(zhí)行另一個流程,如此將整個指令流水化之后,從宏觀看,在每個流程的時間都可以執(zhí)行一條指令。所以在中斷來臨時,在中斷服務(wù)程序開始載入執(zhí)行的同時,若允許已經(jīng)進行取指的指令繼續(xù)執(zhí)行,并不將尾部指令進行沖刷,將大大降低響應(yīng)中斷帶來的性能損失,降低因為冗余執(zhí)行而造成的更多功耗。

本實施例的中斷處理方法,響應(yīng)中斷不會沖刷流水線,已經(jīng)取指、發(fā)射、譯碼、執(zhí)行的指令可以繼續(xù)執(zhí)行,避免了這些指令的重復(fù)操作。而中斷服務(wù)程序的指令會在上述指令執(zhí)行的同時,進行取指,并隨著流水線一步步執(zhí)行,所以對中斷服務(wù)程序的執(zhí)行沒有影響。

步驟S3之前還包括判斷中斷源的類型的步驟,包括硬件中斷和軟件中斷,若步驟S1中所接收的中斷為硬件中斷,則按照步驟S3-步驟S4執(zhí)行。

若步驟S1中所接收的中斷為軟件中斷,則進一步判斷軟件中斷屬于非精確軟件中斷還是精確軟件中斷,對于不要求精確軟件中斷的軟件中斷,其處理方法與硬件中斷完全形同,即軟件中斷一旦觸發(fā),即可認為出現(xiàn)一個較高優(yōu)先級的硬件中斷,也即若為非精確軟件中斷,則按照步驟S3-步驟S4執(zhí)行,若為精確軟件中斷,則步驟S2之前還包括沖刷掉內(nèi)核當(dāng)前流水線上發(fā)生精確軟件中斷指令之后的所有指令的步驟,發(fā)生精確軟件中斷指令執(zhí)行至最后一級時,決定如何保存地址:若該精確軟件中斷需要重新執(zhí)行該指令,則保存該指令的地址;否則,按照步驟S3-步驟S4執(zhí)行。

對于要求精確軟件中斷的軟件中斷而言,就像一條沒有預(yù)測命中跳轉(zhuǎn)指令,為了中斷的精確性,不可避免的需要沖刷后續(xù)指令。但是中斷處理還是一旦觸發(fā)立即處理,最大限度的減少可能的冗余執(zhí)行。

步驟S3中執(zhí)行所述尾部指令時,若所述尾部指令存在跳轉(zhuǎn)指令,判斷所述跳轉(zhuǎn)指令與所述中斷請求的優(yōu)先級,若所述跳轉(zhuǎn)指令的優(yōu)先級不高于所述中斷請求的優(yōu)先級,向流水線控制器發(fā)出低優(yōu)先級的沖刷流水線控制請求,計算出跳轉(zhuǎn)目標(biāo)地址并記錄,不執(zhí)行跳轉(zhuǎn)。

步驟S3中執(zhí)行所述尾部指令時,若所述跳轉(zhuǎn)指令的優(yōu)先級高于所述中斷請求的優(yōu)先級,向流水線控制器發(fā)出高優(yōu)先級的沖刷流水線控制請求,向取指單元給出取指請求,執(zhí)行所述跳轉(zhuǎn)指令,此時不執(zhí)行所述中斷服務(wù)程序,內(nèi)核判斷當(dāng)前狀態(tài)修改為不允許中斷,返回步驟S1。

流水線控制器接收到所述沖刷流水線控制請求時,根據(jù)沖刷流水線控制請求的優(yōu)先級以及中斷服務(wù)程序的首條指令標(biāo)識確定每一流水級的控制信號:

當(dāng)前流水線上存在中斷服務(wù)程序的首條指令,且需要響應(yīng)尾部指令給出的低優(yōu)先級的沖刷流水線控制時,不沖刷中斷服務(wù)程序所在流水級,中斷服務(wù)程序所在流水級由中斷服務(wù)程序指令給出的流水線控制請求控制。

要求跳轉(zhuǎn)指令的沖刷操作不影響中斷服務(wù)程序的執(zhí)行,在精確軟件中斷處理方法中,同樣可能要求不影響正在執(zhí)行的中斷服務(wù)程序,不僅僅尾部指令的操作對中斷服務(wù)程序不產(chǎn)生影響,還要求中斷服務(wù)程序內(nèi)部產(chǎn)生的流水線控制請求對中斷服務(wù)程序可以產(chǎn)生應(yīng)有的效果,相當(dāng)于將流水線分成兩個獨立的部分,兩部分指令所產(chǎn)生的流水線控制不會互相影響。

實施例二

基于實施例中的一種中斷處理方法,本實施例同時提出了一種流水線控制器,包括指令標(biāo)記單元、第一處理請求單元、第二請求處理單元、控制信號選擇單元,

其中,指令標(biāo)記單元用于保存中斷服務(wù)程序的首條指令標(biāo)志,將當(dāng)前流水線上每一流水級的首條指令標(biāo)志組成指令標(biāo)記信號傳遞至所述第二請求處理單元和控制信號選擇單元;

第一請求處理單元用于接收所有流水級產(chǎn)生的流水線控制請求,處理尾部指令給出的低優(yōu)先級沖刷流水線控制請求,產(chǎn)生第一控制信號;

第二請求處理單元處理由中斷服務(wù)程序指令給出的流水線控制信號,產(chǎn)生第二控制信號;

控制信號選擇單元根據(jù)所述流水線控制請求和指令標(biāo)記信號確定每一流水級當(dāng)前執(zhí)行的指令為尾部指令還是中斷服務(wù)程序指令,選擇由第一控制信號控制還是由第二控制信號控制。

當(dāng)然,上述說明并非是對本發(fā)明的限制,本發(fā)明也并不僅限于上述舉例,本技術(shù)領(lǐng)域的普通技術(shù)人員在本發(fā)明的實質(zhì)范圍內(nèi)所做出的變化、改型、添加或替換,也應(yīng)屬于本發(fā)明的保護范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1