技術(shù)領(lǐng)域
本發(fā)明涉及一種中斷導(dǎo)引機(jī)制(interrupt routing scheme),特別涉及一種中斷控制器、包含有中斷控制器與處理器的裝置以及用來(lái)處理系統(tǒng)中的中斷請(qǐng)求事件的相對(duì)應(yīng)方法。
背景技術(shù):
針對(duì)具有多個(gè)處理器(也稱作微處理器(microprocessor))的系統(tǒng),為了執(zhí)行一服務(wù)例程(service routine),通常需要對(duì)所述多個(gè)處理器其中之一發(fā)出一中斷請(qǐng)求事件(interrupt request event)。當(dāng)處理器正在執(zhí)行主程序時(shí)接收到一中斷請(qǐng)求事件,則處理器會(huì)暫時(shí)中斷執(zhí)行中的主程序,并且接著執(zhí)行對(duì)應(yīng)中斷輸入的中斷請(qǐng)求事件所指定的中斷服務(wù)例程(Interrupt Service Routine,ISR)。在系統(tǒng)中,多個(gè)中斷輸入可能會(huì)由多種來(lái)源所產(chǎn)生,由于一個(gè)處理器無(wú)法同時(shí)執(zhí)行對(duì)應(yīng)所述多個(gè)中斷輸入的多個(gè)中斷服務(wù)例程,因此需要提供一中斷控制器以接收各種中斷輸入,并且將所述多個(gè)中斷輸入導(dǎo)引至所述多個(gè)處理器的其中之一或多個(gè)處理器,然而,當(dāng)前所發(fā)展的中斷導(dǎo)引機(jī)制無(wú)法在所述多個(gè)處理器在特定時(shí)段中變忙碌或無(wú)法使用的嚴(yán)峻情形下達(dá)到穩(wěn)定且更好的效能。
技術(shù)實(shí)現(xiàn)要素:
因此本發(fā)明的目的之一在于公開一種中斷控制器、包含所述中斷控制器與至少一處理器的裝置以及相對(duì)應(yīng)的方法,來(lái)解決上述問題并且改善整體系統(tǒng)的效能與穩(wěn)定度。
依據(jù)本發(fā)明的實(shí)施例,公開一種耦接到多個(gè)處理器并用以將至少一中斷請(qǐng)求事件導(dǎo)引至所述多個(gè)處理器的其中至少一個(gè)的中斷控制器。中斷控制器包含接收電路與控制電路。接收電路是用于接收至少一中斷輸入,而耦接到接收電路的控制電路是用以基于所接收的中斷輸入來(lái)產(chǎn)生至少一中斷請(qǐng)求事件并且將所產(chǎn)生的中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè)。此外,所述多個(gè)處理器包含至少一第一處理器與一第二處理器,而至少所述第一與第二處理器是用以處理中斷請(qǐng)求事件。控制電路可被用來(lái)撤回或取消已經(jīng)被送至第一處理器的中斷請(qǐng)求事件的設(shè)立。
依據(jù)本發(fā)明的實(shí)施例,公開一種耦接于多個(gè)處理器并用以將至少一中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè)的中斷控制器。中斷控制器包含接收電路與控制電路。接收電路是用于接收至少一中斷輸入,而耦接到接收電路的控制電路是用以基于所接收的中斷輸入來(lái)產(chǎn)生至少一中斷請(qǐng)求事件并且將所產(chǎn)生的中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè)。此外,所述多個(gè)處理器包含至少一第一處理器與一第二處理器,而至少所述第一處理器與第二處理器是用來(lái)處理中斷請(qǐng)求事件??刂齐娐肥怯脕?lái)依據(jù)分別對(duì)應(yīng)于所述多個(gè)處理器的加權(quán)值來(lái)傳送中斷請(qǐng)求事件至所述多個(gè)處理器。
依據(jù)本發(fā)明的實(shí)施例,公開一種耦接于多個(gè)處理器并用以將至少一中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè)的中斷控制器。中斷控制器包含接收電路與控制電路。接收電路是用于接收至少一中斷輸入,而耦接到接收電路的控制電路是用以基于所接收的中斷輸入來(lái)產(chǎn)生至少一中斷請(qǐng)求事件并且將所產(chǎn)生的中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè)。此外,所述多個(gè)處理器包含至少一第一處理器與一第二處理器,而至少所述第一處理器與第二處理器是用來(lái)處理中斷請(qǐng)求事件。在傳送中斷請(qǐng)求事件之前,控制電路是用以通過(guò)設(shè)立中斷預(yù)先請(qǐng)求信號(hào)連同相同的中斷矢量編號(hào)來(lái)傳送預(yù)先請(qǐng)求事件至所述多個(gè)處理器以查詢是否所述多個(gè)處理器個(gè)別可以接受中斷請(qǐng)求事件。
依據(jù)本發(fā)明的實(shí)施例,公開一種耦接于多個(gè)處理器并用以將至少一中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè)的中斷控制器。中斷控制器包含接收電路與控制電路。接收電路是用于接收至少一中斷輸入,而耦接到接收電路的控制電路是用以基于所接收的中斷輸入來(lái)產(chǎn)生至少一中斷請(qǐng)求事件并且將所產(chǎn)生的中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè)。此外,所述多個(gè)處理器包含至少一第一處理器與一第二處理器,而至少所述第一處理器與第二處理器是用來(lái)處理中斷請(qǐng)求事件。所述控制電路是結(jié)合一串速率控制邏輯來(lái)實(shí)現(xiàn),用以產(chǎn)生速率指標(biāo)值給所述接收電路以動(dòng)態(tài)調(diào)整相關(guān)中斷輸入的緊急等級(jí)。
依據(jù)本發(fā)明的實(shí)施例,公開一種耦接于多個(gè)處理器并用以將至少一中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè)的中斷控制器。中斷控制器包含接收電路與控制電路。接收電路是用于接收至少一中斷輸入,而耦接到接收電路的控制電路是用以基于所接收的中斷輸入來(lái)產(chǎn)生至少一中斷請(qǐng)求事件并且將所產(chǎn)生的中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè)。此外,所述多個(gè)處理器包含至少一第一處理器與一第二處理器,而至少所述第一處理器與第二處理器是用以處理中斷請(qǐng)求事件。控制電路是用以在一時(shí)間點(diǎn)的仲裁時(shí)段中,使用分時(shí)方法來(lái)產(chǎn)生并引導(dǎo)一中斷請(qǐng)求事件至包含于所述多個(gè)處理器中的一處理器,并且在另一時(shí)間點(diǎn)的另一仲裁時(shí)段中,產(chǎn)生以及引導(dǎo)另一中斷請(qǐng)求事件至包含于所述多個(gè)處理器中的另一處理器中。
依據(jù)本發(fā)明的實(shí)施例,公開了一種處理具有多個(gè)處理器的系統(tǒng)中的中斷請(qǐng)求事件的方法。所述方法包含:接收至少一中斷輸入;基于所接收的中斷輸入來(lái)產(chǎn)生至少一中斷請(qǐng)求事件;將所產(chǎn)生的中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè);以及撤回或取消已被傳送至第一處理器的中斷請(qǐng)求的設(shè)立;其中所述多個(gè)處理器包含至少所述第一處理器與第二處理器,而至少所述第一處理器與第二處理器是被用于處理中斷請(qǐng)求事件。
依據(jù)本發(fā)明的實(shí)施例,公開了一種處理具有多個(gè)處理器的系統(tǒng)中的中斷請(qǐng)求事件的方法。所述方法包含:接收至少一中斷輸入;基于所接收的中斷輸入來(lái)產(chǎn)生至少一中斷請(qǐng)求事件;將所產(chǎn)生的中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè);以及依據(jù)分別對(duì)應(yīng)所述多個(gè)處理器的加權(quán)值來(lái)傳送中斷請(qǐng)求事件至所述多個(gè)處理器;其中所述多個(gè)處理器包含至少所述第一處理器與第二處理器,而至少所述第一處理器與第二處理器是被用于處理中斷請(qǐng)求事件。
依據(jù)本發(fā)明的實(shí)施例,公開了一種處理具有多個(gè)處理器的系統(tǒng)中的中斷請(qǐng)求事件的方法。所述方法包含:接收至少一中斷輸入;基于所接收的中斷輸入來(lái)產(chǎn)生至少一中斷請(qǐng)求事件;將所產(chǎn)生的中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè);以及在傳送中斷請(qǐng)求事件之前,通過(guò)設(shè)立用以查詢是否所述多個(gè)處理器個(gè)別都能接受中斷請(qǐng)求事件的中斷預(yù)先請(qǐng)求信號(hào)連同相同的中斷矢量編號(hào)來(lái)傳送預(yù)先請(qǐng)求事件至所述多個(gè)處理器;其中所述多個(gè)處理器包含至少所述第一處理器與第二處理器,而至少所述第一處理器與第二處理器是被用于處理中斷請(qǐng)求事件。
依據(jù)本發(fā)明的實(shí)施例,公開了一種處理具有多個(gè)處理器的系統(tǒng)中的中斷請(qǐng)求事件的方法。所述方法包含:接收至少一中斷輸入;基于所接收的中斷輸入來(lái)產(chǎn)生至少一中斷請(qǐng)求事件;將所產(chǎn)生的中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè);以及動(dòng)態(tài)調(diào)整中斷請(qǐng)求事件的緊急等級(jí);其中所述多個(gè)處理器包含至少所述第一處理器與第二處理器,而至少所述第一處理器與第二處理器是被用于處理中斷請(qǐng)求事件。速率指標(biāo)值是被產(chǎn)生來(lái)動(dòng)態(tài)調(diào)整相關(guān)中斷輸入的緊急等級(jí)。
依據(jù)本發(fā)明的實(shí)施例,公開了一種處理具有多個(gè)處理器的系統(tǒng)中的中斷請(qǐng)求事件的方法。所述方法包含:接收至少一中斷輸入;基于所接收的中斷輸入來(lái)產(chǎn)生至少一中斷請(qǐng)求事件;將所產(chǎn)生的中斷請(qǐng)求事件引導(dǎo)至所述多個(gè)處理器的其中至少一個(gè);在一時(shí)間點(diǎn)上的仲裁時(shí)段內(nèi),使用分時(shí)方法來(lái)產(chǎn)生并導(dǎo)引一中斷請(qǐng)求事件至包含于所述多個(gè)處理器內(nèi)的一處理器;以及在另一時(shí)間點(diǎn)上的另一仲裁時(shí)段內(nèi),使用分時(shí)方法來(lái)產(chǎn)生并導(dǎo)引另一中斷請(qǐng)求事件至包含于所述多個(gè)處理器內(nèi)的另一處理器;其中所述多個(gè)處理器包含至少所述第一處理器與第二處理器,而至少所述第一處理器與第二處理器是被用于處理中斷請(qǐng)求事件。
另外,依據(jù)本發(fā)明的實(shí)施例,公開了一種包含上述的所述多個(gè)中斷控制器的其中之一,并且被用于處理具有多個(gè)處理器的系統(tǒng)中的至少一中斷輸入的裝置。所述裝置也可包含多個(gè)處理器。
本發(fā)明所提出的方法與裝置能在處理器于特定時(shí)段中變忙碌或無(wú)法使用的嚴(yán)峻情形下達(dá)到穩(wěn)定且更好的效能,并且有效地改善整體系統(tǒng)的效能與穩(wěn)定度。
附圖說(shuō)明
圖1繪示依據(jù)本發(fā)明的實(shí)施例的用以處理具有多個(gè)處理器的系統(tǒng)中的至少一組中斷輸入INT(包含多個(gè)中斷輸入int_0、int_1、int_2、…以及int_N的至少其一)的裝置的方塊圖。
圖2繪示包含于圖1所示的中斷控制器與處理器之間的信號(hào)接口中不同信號(hào)的功能的表格。
圖3A繪示依據(jù)本發(fā)明的第一實(shí)施例的處理器接受圖1所示的中斷控制器所傳送的中斷請(qǐng)求事件的操作的時(shí)序圖。
圖3B繪示依據(jù)本發(fā)明的第一實(shí)施例的在信號(hào)INT_BUSY被重置后,處理器接受圖1所示的中斷控制器所傳送的中斷請(qǐng)求事件的操作的時(shí)序圖。
圖3C與圖3D分別繪示依據(jù)本發(fā)明的第一實(shí)施例的圖1中所示的中斷控制器撤回或取消傳送至處理器的中斷請(qǐng)求事件的操作。
圖3E繪示依據(jù)本發(fā)明的第一實(shí)施例的處理器拒絕圖1中所示的中斷控制器所傳送的中斷請(qǐng)求事件的撤回或取消的操作。
圖4繪示圖1所示的中斷控制器傳送中斷預(yù)先請(qǐng)求事件連同相同中斷矢量編號(hào)VN至所述多個(gè)處理器,以詢問是否所述多個(gè)處理器個(gè)別可接受所述中斷請(qǐng)求事件的操作的時(shí)序圖。
圖5繪示依據(jù)本發(fā)明的另一實(shí)施例的外部耦接到控制電路并包含于中斷控制器中的一連串速率控制邏輯的方塊圖。
其中,附圖標(biāo)記說(shuō)明如下:
105、505 中斷控制器
110A、110B 處理器
115 接收電路
120 控制電路
525 速率控制邏輯
具體實(shí)施方式
在說(shuō)明書及之前的權(quán)利要求書當(dāng)中使用了某些詞匯來(lái)指稱特定的元件。本領(lǐng)域的技術(shù)人員應(yīng)可理解,制造商可能會(huì)用不同的名詞來(lái)稱呼同一個(gè)元件。本說(shuō)明書及之前的權(quán)利要求書并不以名稱的差異來(lái)作為區(qū)分元件的方式,而是以元件在功能上的差異來(lái)作為區(qū)分的基準(zhǔn)。在通篇說(shuō)明書及之前的權(quán)利要求書當(dāng)中所提及的「包含」為一開放式的用語(yǔ),故應(yīng)解釋成「包含但不限定于」。此外,「耦接」一詞在此包含任何直接或間接的電連接手段。因此,若文中描述一第一裝置耦接于一第二裝置,則代表所述第一裝置可依直接電連接方式(direct electrical connection)接于所述第二裝置,或通過(guò)其它裝置或連接手段依間接電連接方式(indirect electrical connection)接至所述第二裝置。
請(qǐng)參照?qǐng)D1,圖1繪示依據(jù)本發(fā)明的實(shí)施例的用以處理具有多個(gè)處理器的系統(tǒng)中的至少一組中斷輸入INT(至少包含中斷輸入int_0、int_1、int_2、…以及int_N的其一)的裝置100的方塊圖。中斷輸入int_0、int_1、int_2、…以及int_N是不同電子電路組件或裝置所產(chǎn)生的不同的中斷來(lái)源。在此假設(shè)所述多個(gè)中斷來(lái)源可由多個(gè)中斷矢量(interrupt vector)來(lái)表示;當(dāng)一中斷輸入(interrupt input)被選擇而作為送至處理器的中斷請(qǐng)求事件(interrupt request event)時(shí),所述中斷輸入的相對(duì)應(yīng)的矢量編號(hào)(vector number)會(huì)通過(guò)信號(hào)接口被送至處理器,然而,這不是用來(lái)對(duì)本發(fā)明設(shè)限。裝置100包含中斷控制器105與多個(gè)處理器(像是110A與110B),并用以執(zhí)行可擴(kuò)展多核中斷導(dǎo)引機(jī)制(scalable multi-core interrupt routing scheme),這代表裝置100可以為多個(gè)處理器引導(dǎo)中斷輸入,其中處理器的數(shù)目是可擴(kuò)展的。處理器110A與處理器110B可以是微處理器(或可被當(dāng)作數(shù)據(jù)處理引擎(data processing engines))并且可以被設(shè)定來(lái)處理或服務(wù)對(duì)應(yīng)中斷控制器105所傳送的中斷請(qǐng)求事件的中斷輸入。圖1繪示了處理器110A與處理器110B,然而,所繪示的處理器的數(shù)目并非對(duì)本發(fā)明設(shè)限。在另一實(shí)作范例中,裝置100可以只包含一個(gè)處理器或包含兩個(gè)以上的處理器。
中斷控制器105包含接收電路115與控制電路120。接收電路115是用于接收中斷輸入INT,而耦接于接收電路115的控制電路120則是用以基于所接收的中斷輸入INT來(lái)產(chǎn)生至少一中斷請(qǐng)求事件,并且接著將所產(chǎn)生的中斷請(qǐng)求事件導(dǎo)引至一個(gè)或多個(gè)處理器。所述多個(gè)處理器的其中之一處理器可判斷要接受或拒絕中斷控制器105所傳送的中斷請(qǐng)求事件,處理器也可選擇忽略所傳送的中斷請(qǐng)求事件。一旦處理器接受所傳送的中斷請(qǐng)求事件,處理器會(huì)執(zhí)行中斷處理程序(interrupt handler)來(lái)服務(wù)對(duì)應(yīng)中斷請(qǐng)求事件的中斷輸入。處理器會(huì)適當(dāng)且正確地服務(wù)對(duì)應(yīng)于中斷請(qǐng)求事件的中斷輸入INT。中斷控制器105也可提供具有供系統(tǒng)軟件(system software)來(lái)選擇中斷采樣(sampling)、排程(scheduling)、仲裁(arbitration)以及導(dǎo)引(routing)等的適當(dāng)機(jī)制的不同程序寄存器(programming register)的程序接口(programming interface)。此外,中斷控制器105是用來(lái)與一個(gè)或多個(gè)處理器(像是處理器110A與處理器110B)互連,使得處理器能盡快地服務(wù)中斷輸入。
在所提供的實(shí)施例中,中斷控制器105與所述多個(gè)處理器個(gè)別之間的信號(hào)接口包含一組信號(hào):INT_INPUT、INT_REQ、INT_BACKOFF、INT_PREREQ、INT_URGENCY、INT_BUSY、INT_ACK以及PROC_URGENCY。當(dāng)信號(hào)的設(shè)立(assertion)發(fā)生時(shí),這代表中斷控制器105與一處理器兩者中的一個(gè)正在使用對(duì)應(yīng)所述信號(hào)的一信號(hào)端口來(lái)將信息告知或傳送至兩者中的另一個(gè)。當(dāng)信號(hào)的重置(de-assertion)發(fā)生時(shí),這代表中斷控制器105與一處理器兩者中的一個(gè)將信息告知或傳送至兩者中的另一個(gè)的操作已結(jié)束。中斷控制器105與每一處理器會(huì)通過(guò)所述組信號(hào)來(lái)相互通信。包含于信號(hào)接口內(nèi)的不同信號(hào)具有不同的功能;這些會(huì)在稍后說(shuō)明。此外,需要注意的是,在其它例子中,上述的所述組信號(hào)可以被不同的名字或記號(hào)來(lái)稱呼,而這些例子仍屬于本發(fā)明的范疇。
請(qǐng)參照?qǐng)D2,圖2繪示包含于中斷控制器105與處理器之間的信號(hào)接口中不同信號(hào)的功能的表格。信號(hào)INT_INPUT、INT_REQ、INT_BACKOFF、INT_PREREQ、INT_URGENCY會(huì)被中斷控制器105用來(lái)產(chǎn)生并傳送信息至一相對(duì)應(yīng)的處理器,以便傳送信息至所述處理器或通知所述處理器。此外,信號(hào)INT_BUSY、INT_ACK、以及PROC_URGENCY是被處理器而非中斷控制器105所使用,來(lái)產(chǎn)生并傳送信息至中斷控制器105,以便傳送信息至中斷控制器105或是通知或回應(yīng)中斷控制器105。通過(guò)這種信息交換協(xié)商過(guò)程(information handshaking negotiation process),中斷控制器105可以有效地與每一處理器進(jìn)行通信以交換彼此的信息。實(shí)際上,若上述處理器與中斷控制器兩者均能依據(jù)一些同步時(shí)鐘信號(hào)(synchronous clock signal)或一些異步時(shí)鐘信號(hào)(asynchronous clock signal)來(lái)操作時(shí),這樣的信息交換協(xié)商過(guò)程(也可被稱為互鎖交換協(xié)商過(guò)程(inter-lockable handshaking process))可良好地運(yùn)行于具有上述處理器與中斷控制器的系統(tǒng)的不同實(shí)作范例中。此外,所述多個(gè)信號(hào)會(huì)被使用于本發(fā)明的實(shí)施例中,以指示出不管處理器與中斷控制器之間的時(shí)鐘關(guān)系(clock relationship)為何,此過(guò)程都能良好地運(yùn)作。
信號(hào)INT_INPUT的功能代表中斷請(qǐng)求事件是基于中斷輸入INT而產(chǎn)生,同時(shí)信號(hào)INT_INPUT是對(duì)應(yīng)于一個(gè)或多個(gè)中斷輸入來(lái)源int_0、int_1、int_2、…,以及int_N。此外,信號(hào)INT_INPUT也可代表映射(map)至所述多個(gè)中斷輸入來(lái)源int_0、int_1、int_2、…,以及int_N的其中之一所產(chǎn)生的中斷請(qǐng)求事件的矢量編號(hào)。當(dāng)信號(hào)INT_REQ被設(shè)立(asserted)時(shí),代表中斷控制器105正使用信號(hào)INT_REQ的功能來(lái)告知處理器(像是處理器110A)中斷請(qǐng)求事件的發(fā)生。中斷控制器105會(huì)使用信號(hào)INT_BACKOFF的功能來(lái)告知處理器先前被送至處理器的中斷請(qǐng)求事件的撤回或取消。當(dāng)信號(hào)INT_PREREQ被設(shè)立時(shí),代表中斷控制器105正使用信號(hào)INT_PREREQ的功能并連同信號(hào)INT_INPUT來(lái)詢問處理器是否可以服務(wù)對(duì)應(yīng)中斷請(qǐng)求事件的中斷輸入。中斷控制器105會(huì)使用信號(hào)INT_URGENCY的功能來(lái)通知處理器中斷請(qǐng)求事件的緊急等級(jí)(urgency level)。此外,當(dāng)信號(hào)INT_BUSY被設(shè)立時(shí),代表處理器正使用信號(hào)INT_BUSY的功能來(lái)通知中斷控制器105處理器暫時(shí)忙碌中而無(wú)法服務(wù)對(duì)應(yīng)新的中斷請(qǐng)求事件的中斷輸入。另外,處理器也可使用信號(hào)INT_BUSY來(lái)拒絕中斷控制器105所傳送的中斷請(qǐng)求事件;這會(huì)在稍后說(shuō)明。處理器會(huì)使用信號(hào)INT_ACK的功能來(lái)通知中斷控制器105,由中斷控制器105所傳送的目前中斷請(qǐng)求事件已被處理器本身所接受,而處理器接著會(huì)執(zhí)行一中斷處理程序以服務(wù)對(duì)應(yīng)中斷請(qǐng)求事件的中斷輸入。這代表對(duì)應(yīng)此一中斷請(qǐng)求事件的一中斷輸入已被適當(dāng)?shù)貙?dǎo)引至可用的處理器,并且所述中斷輸入可以被服務(wù)。處理器會(huì)使用信號(hào)PROC_URGENCY的功能來(lái)通知中斷控制器105處理器本身目前正在處理或服務(wù)的中斷輸入的緊急等級(jí)。
需要注意的是,于本發(fā)明的實(shí)施例中,中斷控制器105與每一處理器之間的通信接口(或信號(hào)接口)是用來(lái)傳送具有在信號(hào)INT_INPUT上的相對(duì)應(yīng)矢量編號(hào)的中斷請(qǐng)求事件。然而,這不是用來(lái)對(duì)本發(fā)明設(shè)限。在另一實(shí)施例中,通信接口也可被用在傳送以信號(hào)INT_INPUT的個(gè)別腳位來(lái)代表一個(gè)或多個(gè)中斷輸入的中斷請(qǐng)求事件。在上述任一種通信接口的使用方式中,裝置100與中斷控制器105都可被用在解析并處理中斷輸入。
在本發(fā)明的下列實(shí)施例中,會(huì)詳述中斷控制器105與一個(gè)或多個(gè)處理器之間的通信。在本發(fā)明的第一實(shí)施例中,控制電路120可以判斷是否撤回或取消已被傳送至處理器(像是處理器110A)的中斷請(qǐng)求事件,并且在控制電路120決定要撤回或取消中斷請(qǐng)求事件時(shí),設(shè)立信號(hào)INT_BACKOFF。處理器110A可以在觀察到所傳送的中斷請(qǐng)求事件的取消后,認(rèn)可(confirm)是否允許撤回或取消所傳送的中斷請(qǐng)求事件,并且以一個(gè)已認(rèn)可結(jié)果(confirmed result)告知中斷控制器105。
請(qǐng)一同參照?qǐng)D3A與圖3B。圖3A繪示依據(jù)本發(fā)明的第一實(shí)施例的處理器接受中斷控制器105所傳送的中斷請(qǐng)求事件的操作的時(shí)序圖。圖3B繪示依據(jù)本發(fā)明的第一實(shí)施例的在信號(hào)INT_BUSY被重置后,處理器接受中斷控制器105所傳送的中斷請(qǐng)求事件的操作的時(shí)序圖。如圖3A所示,在時(shí)鐘周期(clock cycle)t1時(shí),中斷控制器105會(huì)設(shè)立信號(hào)INT_REQ來(lái)告知處理器(像是處理器110A)即將送達(dá)的中斷請(qǐng)求事件。在時(shí)鐘周期t1時(shí),中斷控制器105也會(huì)使用信號(hào)INT_INPUT來(lái)告知處理器110A所傳送的中斷請(qǐng)求事件的相對(duì)應(yīng)矢量編號(hào)VN。處理器110A會(huì)接受中斷請(qǐng)求事件,并在觀察到信號(hào)INT_REQ的設(shè)立之后,執(zhí)行相對(duì)應(yīng)的中斷處理程序來(lái)服務(wù)對(duì)應(yīng)于中斷請(qǐng)求事件的中斷輸入。因此,處理器110A會(huì)在時(shí)鐘周期t2設(shè)立信號(hào)INT_ACK來(lái)告知中斷控制器105處理器110A已接受中斷請(qǐng)求事件。處理器110A是用以通過(guò)信號(hào)INT_ACK來(lái)傳送一確認(rèn)指示(acknowledge indication)給中斷控制器105,以指出處理器110A已接受所傳送的中斷請(qǐng)求事件。在觀察到信號(hào)INT_ACK的設(shè)立后,中斷控制器105會(huì)在時(shí)鐘周期t3重置(de-assert)信號(hào)INT_REQ。處理器110A接著會(huì)在觀察到信號(hào)INT_REQ的重置后,在時(shí)鐘周期t4重置信號(hào)INT_ACK。在圖3A所示的例子中,處理器110A是可用的,因而在時(shí)鐘周期t1接受了新的中斷請(qǐng)求事件,而在信號(hào)INT_ACK于時(shí)鐘周期t2被設(shè)立之前,信號(hào)INT_BUSY并沒有被設(shè)立。此外,中斷控制器105沒有要撤回或取消被傳送至處理器110A的中斷請(qǐng)求事件,因此在觀察到信號(hào)INT_ACK在時(shí)鐘周期t2的設(shè)立之前,信號(hào)INT_BACKOFF并沒有被設(shè)立。
在另一例子中,如圖3B所示,在時(shí)鐘周期t1時(shí),中斷控制器105會(huì)設(shè)立信號(hào)INT_REQ來(lái)告知處理器(像是處理器110A)正被送入的一中斷請(qǐng)求事件。另外,在時(shí)鐘周期t1時(shí),中斷控制器105也會(huì)使用信號(hào)INT_INPUT來(lái)告知處理器110A對(duì)應(yīng)于所傳送的中斷請(qǐng)求事件的矢量編號(hào)VN。處理器110A接著非預(yù)期地(unexpectedly)進(jìn)入忙碌狀態(tài)而暫時(shí)無(wú)法服務(wù)中斷輸入,因此處理器110A會(huì)在時(shí)鐘周期t2時(shí)設(shè)立信號(hào)INT_BUSY。處理器110A是用以通過(guò)信號(hào)INT_BUSY傳送一忙指示(busy indication)給中斷控制器105,來(lái)指出處理器110A在信號(hào)INT_BUSY的設(shè)立期間無(wú)法接受所傳送的中斷請(qǐng)求事件。在觀察到信號(hào)INT_BUSY的設(shè)立后,中斷控制器105決定要等待直到處理器110A終究可以接受所述中斷請(qǐng)求事件,而非撤回或取消所述中斷請(qǐng)求,因此中斷控制器105在時(shí)鐘周期t2與時(shí)鐘周期t4之間的信號(hào)INT_BUSY設(shè)立期間并不會(huì)設(shè)立信號(hào)INT_BACKOFF。
在一個(gè)或多個(gè)時(shí)鐘周期之后,處理器110A會(huì)變?yōu)榭捎玫牟⑶夷芰⒓捶?wù)中斷輸入,因此處理器110A會(huì)在時(shí)鐘周期t4時(shí)重置信號(hào)INT_BUSY以準(zhǔn)備接受中斷請(qǐng)求事件,接著在時(shí)鐘周期t5設(shè)立信號(hào)INT_ACK來(lái)告知中斷控制器105處理器110A已接受此一中斷請(qǐng)求事件。在觀察到信號(hào)INT_ACK的設(shè)立之后,中斷控制器105會(huì)在時(shí)鐘周期t6重置信號(hào)INT_REQ。處理器110A接著會(huì)在觀察到信號(hào)INT_REQ的重置后,在時(shí)鐘周期t7重置信號(hào)INT_ACK。在圖3B中所示的例子中,中斷控制器105在處理器110A忙碌時(shí)決定等待處理器110A而不是撤回或取消被傳送至處理器110A的中斷請(qǐng)求事件,因此信號(hào)INT_BACKOFF不會(huì)在時(shí)鐘周期t2與時(shí)鐘周期t4之間的信號(hào)INT_BUSY設(shè)立期間被設(shè)立。
請(qǐng)一同參照?qǐng)D3C與圖3D。圖3C與圖3D分別繪示依據(jù)本發(fā)明的第一實(shí)施例的中斷控制器105撤回或取消傳送至處理器的中斷請(qǐng)求事件的操作。如圖3C所示,在時(shí)鐘周期t1時(shí),中斷控制器105會(huì)設(shè)立信號(hào)INT_REQ來(lái)告知處理器(像是處理器110A)正被送入的一中斷請(qǐng)求事件。另外,在時(shí)鐘周期t1時(shí),中斷控制器105也會(huì)使用信號(hào)INT_INPUT來(lái)告知處理器110A所傳送的中斷請(qǐng)求事件的相對(duì)應(yīng)矢量編號(hào)VN。處理器110A接著非預(yù)期地進(jìn)入忙碌狀態(tài)而暫時(shí)無(wú)法服務(wù)中斷輸入,因此處理器110A會(huì)在時(shí)鐘周期t2時(shí)設(shè)立信號(hào)INT_BUSY。處理器110A是用以通過(guò)信號(hào)INT_BUSY傳送一忙指示給中斷控制器105來(lái)指出處理器110A在信號(hào)INT_BUSY的設(shè)立期間無(wú)法接受所傳送的中斷請(qǐng)求事件。在觀察到信號(hào)INT_BUSY的設(shè)立后,中斷控制器105決定要取消被傳送至處理器110A的中斷請(qǐng)求事件,并且因此在時(shí)鐘周期t3設(shè)立信號(hào)INT_BACKOFF以取消所述中斷請(qǐng)求事件。由于信號(hào)INT_BACKOFF與信號(hào)INT_BUSY在時(shí)鐘周期t3同時(shí)被設(shè)立,中斷控制器105會(huì)判定處理器110A現(xiàn)在是不可用的,并且無(wú)法立即服務(wù)對(duì)應(yīng)中斷請(qǐng)求事件的中斷輸入。因此,中斷控制器105接著會(huì)在時(shí)鐘周期t4重置信號(hào)INT_REQ。處理器110A接著會(huì)通過(guò)在時(shí)鐘周期t5重置信號(hào)INT_BUSY來(lái)認(rèn)可中斷請(qǐng)求事件的撤回或取消。接下來(lái),中斷控制器105便會(huì)在時(shí)鐘周期t6重置信號(hào)INT_BACKOFF以完成撤回或取消操作。
在另一例子中,如圖3D所示,在時(shí)鐘周期t1時(shí),中斷控制器105會(huì)設(shè)立信號(hào)INT_REQ來(lái)告知處理器(像是處理器110A)正被送入的一中斷請(qǐng)求事件。另外,在時(shí)鐘周期t1時(shí),中斷控制器105也會(huì)使用信號(hào)INT_INPUT來(lái)告知處理器110A所傳送的中斷請(qǐng)求事件的相對(duì)應(yīng)矢量編號(hào)VN。在此例子中,處理器110A可以在不告知中斷控制器105的情形下就進(jìn)入忙碌狀態(tài)。雖然處理器110A沒有通過(guò)設(shè)立信號(hào)INT_BUSY來(lái)指出這樣的情形,處理器110A仍會(huì)處于忙碌狀態(tài)并且暫時(shí)無(wú)法服務(wù)中斷請(qǐng)求。中斷控制器105接著決定通過(guò)在時(shí)鐘周期t3設(shè)立信號(hào)INT_BACKOFF,來(lái)主動(dòng)撤回或取消被傳送至處理器110A且經(jīng)一段時(shí)間未被服務(wù)的中斷請(qǐng)求事件。
在觀察到信號(hào)INT_BACKOFF的設(shè)立后,處理器110A仍可決定是否要接受、忽略或拒絕所述中斷請(qǐng)求事件的撤回或取消。在此例子中,處理器110A決定要接受所述中斷請(qǐng)求事件的撤回或取消,因而在時(shí)鐘周期t4時(shí)設(shè)立信號(hào)INT_BUSY以告知中斷控制器105處理器110A拒絕或不接受所述中斷請(qǐng)求事件;也就是說(shuō),接受了所述中斷請(qǐng)求事件的撤回或取消。在觀察到信號(hào)INT_BUSY的設(shè)立之后,中斷控制器105會(huì)得知處理器110A接受了中斷請(qǐng)求事件的撤回或取消,并接著在時(shí)鐘周期t5重置信號(hào)INT_REQ。由于在此例子中,處理器110A使用信號(hào)INT_BUSY來(lái)告知中斷控制器105中斷請(qǐng)求事件的接受或撤回,處理器110A是用以在觀察到信號(hào)INT_REQ的重置后,于時(shí)鐘周期t6重置信號(hào)INT_BUSY。中斷控制器105接著會(huì)在時(shí)鐘周期t7重置信號(hào)INT_BACKOFF。
請(qǐng)參照?qǐng)D3E,圖3E繪示依據(jù)本發(fā)明的第一實(shí)施例的處理器拒絕中斷控制器105所傳送的中斷請(qǐng)求事件的撤回或取消的操作。如圖3E所示,在時(shí)鐘周期t1時(shí),中斷控制器105會(huì)設(shè)立信號(hào)INT_REQ來(lái)告知處理器(像是處理器110A)正被送入的一中斷請(qǐng)求事件。另外,在時(shí)鐘周期t1時(shí),中斷控制器105會(huì)使用信號(hào)INT_INPUT來(lái)告知處理器110A所傳送的中斷請(qǐng)求事件的相對(duì)應(yīng)矢量編號(hào)VN。在此例子中,在傳送中斷請(qǐng)求事件至處理器110A之后,由于中斷控制器105認(rèn)為處理器110B比處理器110A更適合去解析并處理所述中斷請(qǐng)求事件,中斷控制器105會(huì)決定改傳送所述中斷請(qǐng)求事件至另一處理器110B而不要給處理器110A。因此,中斷控制器105會(huì)通過(guò)在時(shí)鐘周期t2設(shè)立信號(hào)INT_BACKOFF來(lái)撤回或取消已被傳送至處理器110A的中斷請(qǐng)求事件。
處理器110A會(huì)在觀察到信號(hào)INT_BACKOFF的設(shè)立后,判斷是否要接受中斷控制器105所要求的撤回或取消。在此例子中,處理器110A決定要拒絕中斷控制器105所要求的撤回或取消。換句話說(shuō),處理器110A會(huì)接受中斷控制器105先前所傳送的中斷請(qǐng)求事件。處理器110A因此在時(shí)鐘周期t3會(huì)設(shè)立信號(hào)INT_ACK來(lái)告知中斷控制器105接受了所述中斷請(qǐng)求事件。在觀察到信號(hào)INT_ACK的設(shè)立后,中斷控制器105會(huì)得知中斷控制器105所要求的撤回或取消失敗了,并且會(huì)接著在時(shí)鐘周期t4重置信號(hào)INT_BACKOFF。
在重置信號(hào)INT_BACKOFF之后,中斷控制器105會(huì)通過(guò)在時(shí)鐘周期t5重置信號(hào)INT_REQ來(lái)完成中斷請(qǐng)求事件。在觀察到信號(hào)INT_REQ的重置后,處理器110A會(huì)知道中斷請(qǐng)求事件的交換協(xié)商處理已完成,并且接著在時(shí)鐘周期t6重置信號(hào)INT_ACK。在圖3E所示的例子中,處理器110A會(huì)在觀察到信號(hào)INT_BACKOFF的設(shè)立后,決定接受中斷控制器105先前所傳送的中斷請(qǐng)求事件。在另一例子中,處理器110A會(huì)在沒有觀察到信號(hào)INT_BACKOFF的設(shè)立的情形下,決定接受中斷控制器105先前所傳送的中斷請(qǐng)求事件。這樣的操作也符合本發(fā)明的精神。
中斷控制器105會(huì)針對(duì)下列原因來(lái)設(shè)立信號(hào)INT_BACKOFF以撤回或取消信號(hào)INT_REQ的設(shè)立:在傳送中斷請(qǐng)求事件至處理器110A之后,中斷控制器105偵測(cè)到具有比所傳送的中斷請(qǐng)求事件的優(yōu)先順序高的另一中斷輸入。在此情形中,中斷控制器105會(huì)認(rèn)為具有較高優(yōu)先順序的中斷輸入應(yīng)該立即被處理器110A所服務(wù),因此中斷控制器105會(huì)撤回或取消先前被傳送至處理器110A的中斷請(qǐng)求事件;在另一例子中,中斷控制器105可能會(huì)認(rèn)為或判斷假如先前被傳送至處理器110A的中斷請(qǐng)求事件被取消并且接著被導(dǎo)引至另一處理器(像是處理器110B),則整體效能可被提升。因此,中斷控制器105會(huì)撤回或取消先前被傳送至處理器110A的中斷請(qǐng)求事件。上述例子都是屬于本發(fā)明的范疇。
依據(jù)本發(fā)明的第二實(shí)施例,耦接到多個(gè)處理器(像是處理器110A與處理器110B)的中斷控制器105是用以將至少一中斷請(qǐng)求事件導(dǎo)引至處理器110A與處理器110B的其中至少一個(gè)。接收電路115是用以接收至少一中斷輸入INT,而耦接到接收電路115的控制電路120則是用以基于所接收的中斷輸入INT來(lái)產(chǎn)生中斷請(qǐng)求事件并且將所產(chǎn)生的中斷請(qǐng)求事件導(dǎo)引至處理器110A與處理器110B的其中至少一個(gè)。處理器110A與處理器110B是被用來(lái)處理中斷請(qǐng)求事件。中斷控制器105包含可編程中斷導(dǎo)引(programmable interrupt routing)的功能,并且能將一中斷請(qǐng)求事件導(dǎo)引至一組處理器或?qū)б恢袛嗾?qǐng)求事件至一特定處理器。在第二實(shí)施例的例子中,中斷控制器105的接收電路115所接收的每一中斷輸入INT可由控制電路120所程序化(programmed),而導(dǎo)引到耦接到或附加于中斷控制器105的一組處理器(其可包含處理器110A與處理器110B)。此外,接收電路115所接收的一中斷輸入INT也可被控制電路120所程序化,而僅導(dǎo)引至單一處理器。然而,上述并不是本發(fā)明的限制。
應(yīng)該要注意的是,中斷控制器105包含三種可程序中斷導(dǎo)引機(jī)制,其包含一首選(preferred)導(dǎo)引機(jī)制、一平衡(balanced)導(dǎo)引機(jī)制以及一預(yù)先請(qǐng)求(pre-request)導(dǎo)引機(jī)制。對(duì)于首選導(dǎo)引機(jī)制來(lái)說(shuō),中斷控制器105的控制電路120會(huì)決定每一個(gè)要被導(dǎo)引的中斷輸入被指定至用來(lái)提供服務(wù)的一預(yù)定的相對(duì)應(yīng)處理器。因此,當(dāng)接收電路115接收中斷輸入INT時(shí),控制電路120總是會(huì)將由所述中斷輸入衍生出來(lái)的中斷請(qǐng)求事件導(dǎo)引至某一特定處理器(像是處理器110A,前提是當(dāng)處理器110A是可用的)。
對(duì)于平衡導(dǎo)引機(jī)制來(lái)說(shuō),控制電路120會(huì)針對(duì)處理器來(lái)維持(maintain)其對(duì)應(yīng)的加權(quán)數(shù)值(weighting value)。對(duì)于那些經(jīng)由程序化而要在平衡導(dǎo)引機(jī)制之下被導(dǎo)引的中斷輸入來(lái)說(shuō),每一加權(quán)數(shù)值被關(guān)聯(lián)到一處理器以代表可被所述處理器所耗用來(lái)服務(wù)一中斷的一參考時(shí)間,或者可被所述處理器于一時(shí)段中所服務(wù)的中斷的個(gè)數(shù)??刂齐娐?20會(huì)通過(guò)參照所述組處理器的分別的平均加載來(lái)產(chǎn)生所述多個(gè)加權(quán)數(shù)值。對(duì)于那些經(jīng)由程序化而要在平衡導(dǎo)引機(jī)制的下被導(dǎo)引的中斷輸入來(lái)說(shuō),控制電路120會(huì)依據(jù)處理器花費(fèi)于服務(wù)一中斷的實(shí)際時(shí)間或所述處理器于一時(shí)段內(nèi)所服務(wù)的中斷的實(shí)際數(shù)量的比例,來(lái)計(jì)算參與所述平衡導(dǎo)引機(jī)制的每一處理器的平均加載值(average loading value)。假如處理器的平均加載數(shù)值很大,這可指出所述處理器會(huì)立即服務(wù)發(fā)送給所述處理器的中斷輸入的機(jī)會(huì)很小,即使所述處理器并非正在忙碌并且能接受某一些中斷請(qǐng)求事件;相反地,假如處理器的平均加載數(shù)值很小,這樣可以指出所述處理器可以有效率地服務(wù)發(fā)送給所述處理器的中斷輸入的機(jī)會(huì)很大。在一些其它實(shí)施例中,控制電路120可以更進(jìn)一步在平衡導(dǎo)引機(jī)制中動(dòng)態(tài)調(diào)整所述多個(gè)處理器的加權(quán)數(shù)值,這樣可以根據(jù)所述多個(gè)處理器有多快接受中斷請(qǐng)求事件而定。舉例來(lái)說(shuō),假如處理器是忙碌的且長(zhǎng)時(shí)間無(wú)法接受由控制電路120所導(dǎo)引至處理器的中斷請(qǐng)求事件,則控制電路120會(huì)降低所述處理器所對(duì)應(yīng)的加權(quán)數(shù)值;另一方面,假如處理器是可用的且很快接受由控制電路120所導(dǎo)引至處理器的中斷請(qǐng)求事件,那么控制電路120會(huì)提升所述處理器所對(duì)應(yīng)的加權(quán)數(shù)值。因此,具有較大加權(quán)數(shù)值的處理器代表所述處理器在一段時(shí)間內(nèi)可服務(wù)更多量的中斷輸入,而具有較小加權(quán)數(shù)值的處理器則代表所述處理器在一段時(shí)間內(nèi)可服務(wù)較少量的中斷輸入。不同加權(quán)數(shù)值也指出相對(duì)應(yīng)的處理器可接受中斷請(qǐng)求事件并且很快服務(wù)對(duì)應(yīng)的中斷輸入的不同機(jī)率。
對(duì)于預(yù)先請(qǐng)求導(dǎo)引機(jī)制,控制電路120是用以通過(guò)設(shè)立中斷預(yù)先請(qǐng)求(interrupt pre-request)信號(hào)INT_PREREQ并連同信號(hào)INT_INPUT上的相同的中斷矢量編號(hào)VN,來(lái)傳送預(yù)先請(qǐng)求事件至所述多個(gè)處理器(像是處理器110A與處理器110B),以詢問是否所述多個(gè)處理器110A與處理器110B中的每一處理器可接受所述中斷請(qǐng)求事件。請(qǐng)參照?qǐng)D4,圖4繪示中斷控制器105傳送中斷預(yù)先請(qǐng)求事件連同相同的中斷矢量編號(hào)VN至處理器110A與處理器110B,以詢問是否處理器110A與處理器110B中每一處理器是否可接受所述中斷請(qǐng)求事件的操作的時(shí)序圖。如圖4所示,控制電路120會(huì)先傳送中斷預(yù)先請(qǐng)求事件至處理器110A與處理器110B以詢問處理器110A與處理器110B中哪個(gè)能接受所述中斷請(qǐng)求事件。因此,控制電路120是用以在時(shí)鐘周期t1時(shí),通過(guò)分別設(shè)立信號(hào)INT_PREREQ(也就是INT_PREREQ_A與INT_PREREQ_B)連同在相對(duì)應(yīng)通信接口中的相對(duì)應(yīng)信號(hào)INT_INPUT上的相應(yīng)的矢量編號(hào)VN,來(lái)分別傳送中斷預(yù)先請(qǐng)求事件至處理器110A與處理器110B。
在一操作情境中,處理器110A與處理器110B兩者均想要告知中斷控制器105各自是在一可用的狀態(tài)(也就是非忙碌),因此處理器110A與處理器110B會(huì)通過(guò)設(shè)立中斷確認(rèn)信號(hào)來(lái)指出所述多個(gè)處理器可以接受并服務(wù)所述中斷請(qǐng)求事件,來(lái)回應(yīng)一確認(rèn)指示給中斷控制器105。處理器110A與處理器110B會(huì)在時(shí)鐘周期t2中分別設(shè)立信號(hào)INT_ACK_A與INT_ACK_B(也就是信號(hào)INT_ACK)。應(yīng)該要注意的是,假如僅有單一處理器在那時(shí)間點(diǎn)是可用的,則僅有一個(gè)處理器回應(yīng)一確認(rèn)指示予中斷控制器105也符合本發(fā)明的精神。上述的例子只是多種操作情境之一。在另一例子中,在處理器110A可用以接受所述預(yù)先請(qǐng)求事件的同一時(shí)間點(diǎn),處理器110B可能是不可用來(lái)接受所述預(yù)先請(qǐng)求事件的。在此情形中,中斷控制器105會(huì)通過(guò)完成必要的交換協(xié)商程序來(lái)認(rèn)可處理器110A的中斷請(qǐng)求事件,并且會(huì)通過(guò)重置信號(hào)INT_PREREQ_B且不設(shè)立信號(hào)INT_REQ_B,來(lái)舍棄送至處理器110B的預(yù)先請(qǐng)求事件。此一修改也屬于本發(fā)明的范疇。
在觀察到信號(hào)INT_ACK_A與信號(hào)INT_ACK_B的同時(shí)設(shè)立后,控制電路120會(huì)知道處理器110A與處理器110B都是可用的且能立即接受并服務(wù)中斷請(qǐng)求事件。中斷控制器105的控制電路120會(huì)選擇處理器110A與處理器110B的其一,并且認(rèn)可將中斷請(qǐng)求事件給所選擇的處理器。在此實(shí)施例中,控制電路120會(huì)選擇處理器110A并決定只認(rèn)可中斷請(qǐng)求事件要給處理器110A。因此,在時(shí)鐘周期t3時(shí),控制電路120會(huì)設(shè)立包含于對(duì)應(yīng)至處理器110A的通信接口內(nèi)的信號(hào)INT_REQ_A,并且重置包含于對(duì)應(yīng)至處理器110B的信號(hào)接口內(nèi)的信號(hào)INT_PREREQ_B。
在觀察到信號(hào)INT_PREREQ_B的重置之后,處理器110B會(huì)知道中斷請(qǐng)求事件并沒有被傳送到處理器110B。因此,處理器110B在時(shí)鐘周期t4會(huì)重置包含于對(duì)應(yīng)至處理器110B的信號(hào)接口內(nèi)的信號(hào)INT_ACK_B,而中斷控制器105詢問處理器110B的操作便完成了。此外,對(duì)于處理器110A而言,在觀察到信號(hào)INT_REQ_A的設(shè)立之后,處理器110A會(huì)知道中斷請(qǐng)求事件要被傳送至處理器110A。在此例子中,在時(shí)鐘周期t4時(shí),處理器110A會(huì)接著重置信號(hào)INT_ACK_A,而中斷控制器105會(huì)重置信號(hào)INT_PREREQ_A。然而,這只是用于范例說(shuō)明。信號(hào)INT_ACK_A與信號(hào)INT_PREREQ_A并不一定要在同一時(shí)鐘周期內(nèi)被重置。只要在信號(hào)INT_ACK_A與信號(hào)INT_PREREQ_A兩者都已被重置之前,信號(hào)INT_REQ_A都不被重置,則所述預(yù)先請(qǐng)求導(dǎo)引機(jī)制就仍可運(yùn)作良好。另外,在重置信號(hào)INT_PREREQ_A以及觀察到信號(hào)INT_ACK_A的重置之后,中斷控制器105會(huì)在時(shí)鐘周期t5重置信號(hào)INT_ACK_A,而中斷控制器105詢問處理器110A的操作便完成了。
應(yīng)該要注意的是,在另一實(shí)施例中,中斷控制器105的控制電路120可于時(shí)鐘周期t1傳送多個(gè)中斷預(yù)先請(qǐng)求事件至兩個(gè)以上的處理器,控制電路120會(huì)通過(guò)重置對(duì)應(yīng)多個(gè)處理器(除了處理器110A之外)的中斷預(yù)先請(qǐng)求信號(hào),來(lái)撤回或取消被送至所述多個(gè)處理器(除了處理器110A之外)的預(yù)先請(qǐng)求事件。中斷控制器105并不被限制只能撤回或取消被送至某一處理器的唯一的預(yù)先請(qǐng)求事件。這也符合本發(fā)明的精神。
依據(jù)本發(fā)明的第三實(shí)施例,控制電路120是用以動(dòng)態(tài)地調(diào)整中斷請(qǐng)求事件的緊急等級(jí)??刂齐娐?20還包含一連串的速率控制邏輯(rate control logic),而接收電路115所接收的每一中斷輸入是通過(guò)軟件程序化而被關(guān)聯(lián)于一速率控制邏輯,以關(guān)聯(lián)于同一速率控制邏輯的一個(gè)或多個(gè)中斷輸入來(lái)維持一預(yù)期的服務(wù)速率(expected service rate)。包含在控制電路120的每一速率控制邏輯是基于對(duì)應(yīng)于相關(guān)的中斷輸入的被服務(wù)的中斷請(qǐng)求事件的預(yù)先程序化(pre-programmed)的預(yù)期速率值以及頻率,來(lái)產(chǎn)生一速率指標(biāo)值(rate index)。接收電路115會(huì)使用所產(chǎn)生的速率指標(biāo)值來(lái)調(diào)整每一相關(guān)的中斷輸入的緊急等級(jí)。一開始,每一速率指標(biāo)值會(huì)等于同一數(shù)值(通常是0),所以每一中斷輸入的緊急等級(jí)僅會(huì)依據(jù)其本身預(yù)先程序化的優(yōu)先值(priority value)來(lái)決定其初始設(shè)定。然而,這只用于范例說(shuō)明,而非對(duì)本發(fā)明設(shè)限。對(duì)應(yīng)第一中斷輸入的第一中斷請(qǐng)求事件的第一緊急等級(jí)會(huì)依據(jù)第一中斷輸入的優(yōu)先值與其相關(guān)的速率指標(biāo)值來(lái)決定,而對(duì)應(yīng)第二中斷輸入的第二中斷請(qǐng)求事件的第二緊急等級(jí)會(huì)依據(jù)第二中斷輸入的優(yōu)先值與其相關(guān)的速率指標(biāo)值來(lái)決定。因此,假如相關(guān)的速率指標(biāo)值彼此不同,就算第一中斷輸入與第二中斷輸入的優(yōu)先順序相同,第一緊急等級(jí)與第二緊急等級(jí)仍會(huì)被決定為不同的等級(jí)。另一方面,中斷輸入的不同優(yōu)先順序可能會(huì)對(duì)應(yīng)不同的緊急等級(jí)或相同緊急等級(jí)。
假設(shè)具有相同優(yōu)先值的兩個(gè)中斷輸入(例如第一中斷輸入與第二中斷輸入)被關(guān)聯(lián)于具有相同預(yù)期速率值的速率控制邏輯。如果控制電路120僅依據(jù)相關(guān)的優(yōu)先值來(lái)仲裁中斷輸入,上述具有相同優(yōu)先值與相同預(yù)期速率值的中斷輸入理想上會(huì)依相同或相似頻率來(lái)被處理器服務(wù)。實(shí)際上,由于中斷輸入之間的沖突與仲裁誤差(arbitration error),一開始具有相同優(yōu)先值的多個(gè)中斷輸入并不會(huì)被處理器依相同或相似頻率來(lái)服務(wù)。在此實(shí)施例中,控制電路120是用來(lái)依據(jù)其相關(guān)的緊急等級(jí)來(lái)仲裁中斷輸入,而假如控制電路120認(rèn)為中斷輸入并未被服務(wù)于所預(yù)期的速率,則控制電路120會(huì)被用來(lái)調(diào)整中斷輸入的緊急等級(jí)。在實(shí)作上,控制電路120會(huì)計(jì)算速率控制邏輯的服務(wù)速率指標(biāo)值,所述服務(wù)速率指標(biāo)值是被關(guān)聯(lián)于一或多個(gè)中斷輸入,并接著參照所計(jì)算的速率指標(biāo)值來(lái)判斷是否要?jiǎng)討B(tài)調(diào)整相關(guān)的中斷輸入所對(duì)應(yīng)的中斷請(qǐng)求事件的緊急等級(jí)。當(dāng)計(jì)算得到的速率指標(biāo)值指出被關(guān)聯(lián)于所述速率控制邏輯的中斷輸入的所被服務(wù)的頻率低于預(yù)期時(shí),控制電路120會(huì)決定提升相關(guān)的中斷輸入所對(duì)應(yīng)的中斷請(qǐng)求事件的緊急等級(jí)。當(dāng)計(jì)算得到的速率指標(biāo)值指出被關(guān)聯(lián)于所述速率控制邏輯的中斷輸入的所被服務(wù)的頻率高于預(yù)期時(shí),控制電路120則會(huì)決定降低相關(guān)的中斷輸入所對(duì)應(yīng)的中斷請(qǐng)求事件的緊急等級(jí)。緊急等級(jí)可被關(guān)聯(lián)于當(dāng)下正要被處理器(像是處理器110A與處理器110B)所服務(wù)的中斷請(qǐng)求事件。這樣,處理器會(huì)依據(jù)其相關(guān)的緊急等級(jí)來(lái)決定何時(shí)要接受中斷請(qǐng)求事件。
此外,控制電路120是用以使用信號(hào)INT_URGENCY來(lái)通知處理器(像是處理器110A)中斷輸入的緊急等級(jí)。處理器110A是用以使用信號(hào)PROC_URGENCY來(lái)通知中斷控制器105當(dāng)下正被處理器110A處理或服務(wù)的中斷輸入的緊急等級(jí)。因此,由于緊急等級(jí)表示一中斷輸入依據(jù)其相關(guān)的預(yù)期速率是如何被服務(wù)的,假如信號(hào)INT_URGENCY所表示的緊急等級(jí)高于信號(hào)PROC_URGENCY所表示的緊急等級(jí),則處理器110A會(huì)被用以盡快接受所述緊急的中斷請(qǐng)求事件,縱使是處理器110A當(dāng)下正在服務(wù)另一中斷輸入,或縱使處理器110A暫時(shí)遮蔽(mask)其中斷接口(interrupt interface)。
另一方面,為了縮短整體中斷服務(wù)的延遲(latency),控制電路120會(huì)被偏好將仲裁給予具有高于被關(guān)聯(lián)于當(dāng)下正在被處理器所服務(wù)的中斷請(qǐng)求事件的緊急等級(jí)(由信號(hào)ROC_URGENCY所表示)的相關(guān)緊急等級(jí)的中斷輸入,即使此中斷輸入和先前被處理器所服務(wù)的中斷輸入是相同的。
此外,在另一實(shí)施例中,上述的一連串的速率控制邏輯可實(shí)作為由外接至控制電路120并包含于中斷控制器內(nèi)的一組電路。請(qǐng)參照?qǐng)D5,圖5繪示依據(jù)本發(fā)明的另一實(shí)施例的外接于控制電路120的一連串的速率控制邏輯525的方塊圖。中斷控制器505的操作與功能是類似于圖1所示的中斷控制器105,更進(jìn)一步的說(shuō)明便在此省略以求簡(jiǎn)潔。一連串的速率控制邏輯525是用來(lái)分別監(jiān)控所服務(wù)的中斷請(qǐng)求事件,并且接著輸出所計(jì)算的速率指標(biāo)值至中斷控制器505的接收電路115以產(chǎn)生相關(guān)于每一中斷輸入的緊急等級(jí)。
依據(jù)本發(fā)明的第四實(shí)施例,圖1中所示的中斷控制器105的控制電路120使用分時(shí)(time-division)方法,而在一時(shí)間點(diǎn)的仲裁中產(chǎn)生并導(dǎo)引一中斷請(qǐng)求事件至處理器(像是處理器110A),并且在另一時(shí)間點(diǎn)的另一仲裁中產(chǎn)生并導(dǎo)引另一中斷請(qǐng)求事件至另一處理器(像是處理器110B)??刂齐娐?20在一仲裁時(shí)可以評(píng)量(evaluate)針對(duì)一特定處理器的中斷輸入以產(chǎn)生中斷請(qǐng)求事件給所述特定處理器。在此實(shí)施例中,中斷輸入的仲裁會(huì)在一時(shí)鐘周期期間完成,然而,這不是用來(lái)對(duì)本發(fā)明設(shè)限。在另一實(shí)施例中,中斷輸入的仲裁可在半個(gè)時(shí)鐘周期或多個(gè)時(shí)鐘周期內(nèi)被執(zhí)行并且完成,這些修改均屬于本發(fā)明的范疇。
以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明權(quán)利要求所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。