本發(fā)明屬于通信技術領域,具體地說,是涉及一種異步中斷處理方法及中斷控制器。
背景技術:
在微處理器中,中斷是一種重要的通信、控制方法之一。對處理器核而言,其本身不產生中斷,所有中斷都來自于處理器核外,外設通過中斷的形式請求處理器核執(zhí)行對應的程序,處理器核將暫時停止當前處理的程序,轉而去響應中斷請求,在完成中斷服務程序之后,返回繼續(xù)執(zhí)行被中斷的程序。
因為中斷來自核外甚至是處理器外部,所以一般情況下將中斷控制器放置于核外。而且因為中斷控制器并不需要較高的運行速度,在SoC上,中斷控制器往往掛在低速外設總線上,內核與中斷控制器之間相隔多個時鐘域。在這種情況下,即使內核時鐘與中斷控制器所用時鐘是同源時鐘,但也不便于按照同步時鐘設計,所以中斷控制器與內核之間的部分通信按照異步時鐘處理。
在某些中斷驅動的應用中,要求內核具有較快的中斷響應速度。在現(xiàn)有的中斷響應機制下,通常按照以下流程進行:中斷控制器采樣中斷源給出的中斷申請信號;向處理器核請求中斷;處理器核響應中斷申請,并獲取中斷向量,然后開始執(zhí)行中斷服務程序。其中獲取中斷向量的方式在不同的設計中具有不同的表現(xiàn)方式,在某些設計中,內核會通過SoC總線結構獲取中斷控制器中的寄存器信息獲取中斷向量;某些設計中,內核繼續(xù)通過與中斷控制器之間的直接通信,獲取中斷向量。
在現(xiàn)有的技術中,異步設計時中斷響應速度較慢。其主要原因在于響應一次中斷需要內核與中斷控制器之間進行多次異步通信,而異步信號至少需要使用雙周期采樣同步電路,同步電路可保證異步信號的穩(wěn)定性,但也大大降低了通信效率。
技術實現(xiàn)要素:
本發(fā)明為了解決現(xiàn)有異步中斷響應時間長,通信效率低的技術問題,提出了一種異步中斷處理方法,可以解決上述問題。
為了解決上述技術問題,本發(fā)明采用以下技術方案予以實現(xiàn):
一種異步中斷處理方法,包括以下步驟:
(11)、內核判斷當前狀態(tài)是否允許中斷,若允許,則發(fā)出中斷向量請求信號iv_req;
(12)、中斷控制器接收到所述中斷向量請求信號iv_req,根據當前中斷控制器中的狀態(tài),作出回應;
(13)、若所述內核檢測到所述中斷控制器發(fā)出的中斷向量請求反饋信號,則采樣中斷向量iv,并將中斷向量請求信號iv_req置為無效,并根據內核的當前狀態(tài)確定執(zhí)行或者不執(zhí)行該中斷;
(14)、若步驟(13)中所述內核執(zhí)行中斷,當中斷返回指令執(zhí)行完畢后,內核向中斷控制器發(fā)出中斷返回握手信號rti_req,中斷控制器接收到該信號之后,返回握手信號rti_ack。
進一步的,步驟(12)中所述中斷控制器根據當前中斷控制器的狀態(tài),作出的回應包括:
(121)、若所述中斷控制器中存在有效中斷請求,則所述中斷控制器記錄下中斷號int_no,并向內核發(fā)出中斷向量請求反饋信號iv_ack及其中斷向量iv;
(122)、若所述中斷控制器中不存在有效中斷請求,保持中斷向量請求反饋信號iv_ack為無效。
進一步的,步驟(13)中根據內核的當前狀態(tài)確定執(zhí)行或者不執(zhí)行該中斷的判斷方法為:
(131)、內核檢測當前狀態(tài),如果仍然允許響應中斷,則從所述中斷向量所指地址中對中斷服務程序獲取指令并執(zhí)行;
(132)、如果內核不允許響應中斷,則不對所述中斷向量處理。
進一步的,步驟(13)中,中斷控制器在所述內核將中斷向量請求信號iv_req置為無效后,將中斷向量請求反饋信號iv_ack置為無效,內核檢測到無效的中斷向量請求反饋信號iv_ack之后,返回步驟(11),在再次允許中斷或者是允許中斷嵌套的情況下,請求下一個中斷。
進一步的,內核對中斷的首條指令執(zhí)行完畢的同時,向中斷控制器發(fā)出中斷執(zhí)行握手信號isr_serving_req,中斷控制器接收到該中斷執(zhí)行握手信號isr_serving_req之后,返回握手信號isr_serving_ack,同時根據步驟(22)中所記錄的中斷號int_no進行標記;
步驟(14)中返回握手信號rti_ack之后,同時將所述標記清除。
進一步的,中斷控制器返回握手信號isr_serving_ack之后,根據步驟(121)中所記錄的中斷號int_no將其所記錄的中斷申請清除。
基于前面任一項所述的異步中斷處理方法,本發(fā)明同時提出了一種中斷控制器,包括寄存器組、控制狀態(tài)機、中斷采樣接口、內核接口、外設總線接口;
所述寄存器組包括中斷采樣寄存器、中斷服務寄存器和中斷向量寄存器文件;
所述中斷采樣寄存器用于記錄中斷源的有效中斷請求;
所述中斷服務寄存器用于記錄內核正在處理的中斷;
所述中斷向量寄存器文件用于記錄中斷向量;
所述內核接口包含一對中斷向量請求信號接口、中斷向量接口、一對中斷執(zhí)行握手信號接口,一對中斷返回握手信號接口;
所述外設總線接口一端與外設總線連接,一端與所述寄存器組連接,用于讀寫所述寄存器組;
所述中斷采樣接口一端與中斷源連接,一另外端與所述中斷采樣寄存器連接,用于采樣所述中斷源的有效中斷請求,并保存于所述中斷采樣寄存器中;
所述控制狀態(tài)機通過內核接口與內核進行握手,以及控制內核在中斷響應過程中對中斷服務寄存器進行改寫。
進一步的,所述中斷控制器還包括中斷屏蔽寄存器,用于屏蔽中斷,內核或其他連接在所述外設總線上的主設備通過設置該中斷屏蔽寄存器用于屏蔽對應中斷的申請。
進一步的,所述中斷控制器還包括最高優(yōu)先級有效中斷判斷單元,用于使用所述中斷采樣寄存器、中斷屏蔽寄存器、中斷服務寄存器中的數據給出當前最高優(yōu)先級的有效中斷,未被中斷屏蔽寄存器屏蔽的中斷中,若中斷采樣寄存器中存在比當前中斷服務寄存器中標記正在處理的中斷優(yōu)先級更高的中斷,則給出其中優(yōu)先級最高的中斷,若不存在正在處理的中斷,則直接給出中斷采樣寄存器中有效的最高優(yōu)先級中斷,否則給出無有效中斷信號。
與現(xiàn)有技術相比,本發(fā)明的優(yōu)點和積極效果是:本發(fā)明的異步中斷處理方法,不再采用中斷控制器請求內核的通信方式,而是采用由內核請求中斷控制器的通信方式,并且直接請求中斷向量的方式,這種中斷響應方法省去了現(xiàn)有技術中冗長的互相握手操作,當中斷出現(xiàn)時,直接向內核給出中斷向量,內核在獲得向量之后,無需其他操作,即可對中斷服務程序進行取指執(zhí)行。采用本發(fā)明的中斷處理方法,極大地加快了異步中斷控制器中斷的響應速度,同時,本發(fā)明還給出了一種使用本發(fā)明中斷處理方法的中斷控制器,該中斷控制器完全契合本發(fā)明給出的中斷處理方法,且具有簡潔、靈活等特點。
結合附圖閱讀本發(fā)明實施方式的詳細描述后,本發(fā)明的其他特點和優(yōu)點將變得更加清楚。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本發(fā)明所提出的異步中斷處理方法的一種實施例流程圖;
圖2是本發(fā)明所提出的中斷控制器的一種實施例原理方框圖。
具體實施方式
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
兩個異步的模塊之間進行通信,使用握手是最簡單的通信方式。為了防止出現(xiàn)亞穩(wěn)態(tài),在握手信號的末端,都需要加入同步器。一個信號從源端傳遞至目的端,至少需要經過目的端的兩個時鐘周期,才可被目的端檢測到。在目的端檢測到之后,還需要返回有效的反饋信息,同樣需要經過源端的兩個時鐘周期之后才可被源端檢測到,至此,握手操作才進行一半。所以如果一次通信事件需要在兩個異步模塊之間進行多次握手通信,通信開銷較大。
在現(xiàn)有技術中,通常由中斷控制器向內核發(fā)起中斷請求,在內核確認后,會向中斷控制器發(fā)出響應,并請求更具體的信息以確定中斷服務程序的入口地址。在這種操作異步中斷控制器中,至少需要經過兩次握手才可完成。而這兩次握手中的通信開銷,對于需求高速中斷響應的處理器中是較為昂貴的。
針對上述問題,本發(fā)明提出一種快速的中斷處理方法,改中斷控制器主動發(fā)起請求的傳統(tǒng)做法,下面以具體的實施例進行詳細說明。
實施例一
本實施例提出了一種異步中斷處理方法,如圖1所示,包括以下步驟:
S11、內核判斷當前狀態(tài)是否允許中斷,若允許,則發(fā)出中斷向量請求信號iv_req;本步驟中,首先內核主動發(fā)起請求,而且內核直接請求中斷向量,這樣不僅可以免去多次異步握手,極大地加快了異步中斷控制器中斷的響應速度。
S12、中斷控制器接收到所述中斷向量請求信號iv_req,根據當前中斷控制器中的狀態(tài),作出回應;當中斷控制器接收到有效中斷后,給出對應中斷向量,內核接收到中斷之后,無需返回任何信息,直接對中斷服務程序進行取指,大大加快了中斷的響應速度。
S13、若所述內核檢測到所述中斷控制器發(fā)出的中斷向量請求反饋信號,則采樣中斷向量iv,并將中斷向量請求信號iv_req置為無效,并根據內核的當前狀態(tài)確定執(zhí)行或者不執(zhí)行該中斷;
S14、若步驟S13中所述內核執(zhí)行中斷,當中斷返回指令執(zhí)行完畢后,內核向中斷控制器發(fā)出中斷返回握手信號rti_req,中斷控制器接收到該信號之后,返回握手信號rti_ack。
步驟S14是在內核執(zhí)行所請求中斷的情況下做出的,當中斷執(zhí)行完畢后,內核與中斷控制器之間進行一次握手通信,確保本次中斷執(zhí)行的正確性。
只要內核允許中斷,就會如步驟S11所記載,向中斷控制器給出中斷向量請求信號,然后在步驟S12中等待中斷。所以一旦中斷源所在設備向中斷控制器發(fā)出中斷,中斷控制器采樣后直接給出中斷向量,內核得到中斷向量之后立即對中斷服務程序進行取指,整個響應過程沒有任何遲滯或冗余的通信,極大地提高了中斷響應速度。
本方法由中斷控制器完全控制中斷的相關操作,內核只負責執(zhí)行中斷服務程序,并通知中斷控制器中斷服務程序的執(zhí)行情況(開始執(zhí)行、執(zhí)行完畢)。這也就要求內核與中斷控制器之間的信息是同步的,即內核響應的中斷與中斷控制器認為內核正在響應的中斷是同一個。所以在步驟S11中,要求一旦中斷控制器給出中斷向量請求之后,就無法撤銷,這也是也是握手的基本要求:握手信號一旦發(fā)出,在接收端確認收到該信號之前,不可改變已經發(fā)出的握手信號。
在步驟S12中,中斷控制器根據當前中斷控制器的狀態(tài),作出的回應包括:
S121、若所述中斷控制器中存在有效中斷請求,則所述中斷控制器記錄下中斷號int_no,并向內核發(fā)出中斷向量請求反饋信號iv_ack及其中斷向量iv;
S122、若所述中斷控制器中不存在有效中斷請求,保持中斷向量請求反饋信號iv_ack為無效。
也就是說,內核在步驟S11中向中斷控制器給出中斷向量請求信號之后,即進行等待,中斷控制器在步驟S12中檢查當前是否具有來自于中斷源的中斷請求,若有,則采樣后直接向內核發(fā)送中斷向量,若沒有,則不發(fā)送中斷向量,由于步驟S11中內核發(fā)出的中斷向量請求信號iv_req一旦發(fā)出就不能撤,因此, 中斷控制器在步驟S12中若當前不存在有效中斷請求,則會周期性的檢查,直至出現(xiàn)來自于中斷源的中斷請求,則按照步驟S121中所記載的,直接向內核發(fā)出中斷向量請求反饋信號iv_ack及其中斷向量iv。
在使用異步中斷控制器的系統(tǒng)中,由于內核與中斷控制器的狀態(tài)隨時在變化,這就使得握手操作出現(xiàn)了一定的不確定性。在內核中,隨時可能因為配置寄存器的改寫、出現(xiàn)異常例外等操作而屏蔽所有外部中斷,而在中斷控制器側,隨時有可能出現(xiàn)更高優(yōu)先級的中斷、或者電平觸發(fā)中斷撤銷請求。
而內核運行速度將遠高于中斷控制器,若允許內核握手隨意發(fā)出握手信號,很有可能出現(xiàn)內核第二次握手信號與中斷控制器第一次握手信號進行了握手,但是中斷控制器卻記錄了第二次握手給出的中斷,這就容易導致兩側信息不同步,最終造成錯誤。
為了防止上述錯誤的發(fā)生,內核在步驟S13中根據當前狀態(tài)確定是否執(zhí)行該中斷。
作為一個優(yōu)選的實施例,步驟S13中根據內核的當前狀態(tài)確定執(zhí)行或者不執(zhí)行該中斷的判斷方法為:
S131、內核檢測當前狀態(tài),如果仍然允許響應中斷,則從所述中斷向量所指地址中對中斷服務程序獲取指令并執(zhí)行;
S132、如果內核不允許響應中斷,則不對所述中斷向量處理。該操作視為撤銷中斷向量申請,目的是確保后續(xù)的中斷請求與響應的步驟正確有序進行,本步驟是放在步驟S12之后,也就是說,必須在中斷控制器響應中斷之后才可執(zhí)行撤銷。
在步驟S13中,無論內核是否準備對中斷服務程序進行取指,都需要完成握手并回到S11開始下一次中斷響應。這既為中斷嵌套提供了條件,也加快了中斷嵌套的響應速度。
步驟S13中,中斷控制器在所述內核將中斷向量請求信號iv_req置為無效后,將中斷向量請求反饋信號iv_ack置為無效,內核檢測到無效的中斷向量請求反饋信號iv_ack之后,返回步驟S11,在再次允許中斷或者是允許中斷嵌套的情況下,請求下一個中斷。
在步驟S14中,內核對中斷的首條指令執(zhí)行完畢的同時,向中斷控制器發(fā)出中斷執(zhí)行握手信號isr_serving_req,中斷控制器接收到該中斷執(zhí)行握手信號isr_serving_req之后,返回握手信號isr_serving_ack,同時根據步驟S22中所記錄的中斷號int_no進行標記;該標記用于防止中斷重復申請與中斷嵌套的優(yōu)先級判斷。
步驟S14中返回握手信號rti_ack之后,同時將所述標記清除。
為了防止中斷重復申請,中斷控制器返回握手信號isr_serving_ack之后,根據步驟S121中所記錄的中斷號int_no將其所記錄的中斷申請清除。中斷控制器返回握手信號isr_serving_ack之后說明該中斷已經執(zhí)行完畢,因此,及時將其從中斷控制器中清除,防止再次執(zhí)行。
實施例二
基于實施例一中所記載的異步中斷處理方法,本實施例提出了一種中斷控制器,本中斷控制器用于響應實施例一中所記載的步驟,因此,上述步驟在實施例一中已經詳細說明,在本實施例中不再贅述,本實施例對該中斷控制器的組成及功能部分詳細說明。如圖2所示,該中斷控制器包括寄存器組、控制狀態(tài)機、中斷采樣接口、內核接口、外設總線接口;
寄存器組包括中斷采樣寄存器、中斷服務寄存器和中斷向量寄存器文件;
所述中斷采樣寄存器用于記錄中斷源的有效中斷請求;
所述中斷服務寄存器用于記錄內核正在處理的中斷;
所述中斷向量寄存器文件用于記錄中斷向量;
首先中斷控制器中的主要信息由寄存器組給出,在某個中斷使用前,內核需要通過總線對中斷控制器進行設置,需要設置的信息包括對應中斷是否使能(通過中斷屏蔽寄存器設置)以及該中斷的中斷向量(通過中斷向量寄存器文件設置)。中斷控制器作為外設中斷的從設備,可以被總線上任何主設備讀寫,所以處理器外部的設備,比如主機,可以通過響應的接口對該中斷控制器進行配置,這種方式是一種常用的處理器Boot方式。
所述內核接口包含一對中斷向量請求信號接口、中斷向量接口、一對中斷執(zhí)行握手信號接口,一對中斷返回握手信號接口;其中,中斷向量請求握手信號接口應用于步驟S11-S14中,用于傳輸中斷向量請求信號iv_req和中斷向量請求反饋信號iv_ack,中斷向量接口應用于步驟S12中,用于傳輸中斷向量,中斷執(zhí)行握手信號接口應用于步驟S131中的中斷執(zhí)行握手信號isr_serving_req和返回握手信號isr_serving_ack,中斷返回握手信號用于S6中,用于傳輸步驟S14中的中斷返回握手信號rti_req和返回握手信號rti_ack。
外設總線接口一端與外設總線連接,一端與所述寄存器組連接,用于讀寫所述寄存器組;步驟S11中,內核或總線上的其他設備通過所述外設總線接口配置中斷控制器,配置對象主要是需要使用中斷的中斷屏蔽寄存器及其中斷向量。
所述中斷采樣接口一端與中斷源連接,一另外端與所述中斷采樣寄存器連接,用于采樣所述中斷源的有效中斷請求,并保存于所述中斷采樣寄存器中;
所述控制狀態(tài)機通過內核接口與內核進行握手,以及控制內核在中斷響應過程中對中斷服務寄存器進行改寫。在步驟S12中,控制狀態(tài)機在內核給出的有效中斷向量請求信號下轉換狀態(tài),根據所述最高優(yōu)先級有效中斷判斷單元的判斷結果,給出響應信號,記錄中斷號,同時從所述中斷向量寄存器文件中給出中斷向量,并根據握手信號完成本次握手。在S131中,控制狀態(tài)機在內核給出有效中斷執(zhí)行握手信號的情況下轉換狀態(tài),根據記錄的中斷號,清除所述中斷采樣寄存器中的對應申請,在中斷服務寄存器中對對應中斷進行標記,根據握手信號完成本次握手。在S14中,控制狀態(tài)機在內核給出中斷返回握手信號的情況下轉換狀態(tài),清除中斷服務寄存器中的對應位,并根據握手信號完成握手。
中斷控制器還包括中斷屏蔽寄存器和最高優(yōu)先級有效中斷判斷單元,中斷屏蔽寄存器用于屏蔽中斷,內核或其他連接在所述外設總線上的主設備通過設置該中斷屏蔽寄存器用于屏蔽對應中斷的申請。
最高優(yōu)先級有效中斷判斷單元用于使用所述中斷采樣寄存器、中斷屏蔽寄存器、中斷服務寄存器中的數據給出當前最高優(yōu)先級的有效中斷,未被中斷屏蔽寄存器屏蔽的中斷中,若中斷采樣寄存器中存在比當前中斷服務寄存器中標記正在處理的中斷優(yōu)先級更高的中斷,則給出其中優(yōu)先級最高的中斷,若不存在正在處理的中斷,則直接給出中斷采樣寄存器中有效的最高優(yōu)先級中斷,否則給出無有效中斷信號。
本實施例的中斷控制器基于實施例一中的異步中斷處理方法,不再采用中斷控制器請求內核的通信方式,而是采用由內核請求中斷控制器的通信方式,并且直接請求中斷向量的方式,這種中斷響應方法省去了現(xiàn)有技術中冗長的互相握手操作,當中斷出現(xiàn)時,直接向內核給出中斷向量,內核在獲得向量之后,無需其他操作,即可對中斷服務程序進行取指執(zhí)行。本實施例的中斷控制器,該中斷控制器完全契合實施例一中的中斷處理方法,且具有簡潔、靈活等特點。
當然,上述說明并非是對本發(fā)明的限制,本發(fā)明也并不僅限于上述舉例,本技術領域的普通技術人員在本發(fā)明的實質范圍內所做出的變化、改型、添加或替換,也應屬于本發(fā)明的保護范圍。