專利名稱:包含一個中斷強制寄存器的靈活中斷控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及中斷控制器,更具體地講是涉及一個由軟件控制的中斷強制寄存器的中斷控制器。
中斷通常在計算機系統(tǒng)中被用來提供一種強制軟件改變其當前的運行并且執(zhí)行“服務”中斷的任務的機制。例如,如果在一個串行數(shù)據(jù)接口上有要被存儲在一個緩沖區(qū)中的輸入合法數(shù)據(jù),則串行數(shù)據(jù)接口可以聲明一個中斷,當被服務時,該中斷導致數(shù)據(jù)被捕捉并且被放在緩沖區(qū)中。在許多情況下,由于許多中斷的中斷源只能有限承受中斷服務的等待時間,所以劃分中斷服務的優(yōu)先權(quán)是重要的。例如,串行數(shù)據(jù)接口上的數(shù)據(jù)可能只在有限的時間內(nèi)是有效的,因而需要在該時間段內(nèi)被捕捉。通常通過使用一般被稱作中斷服務程序或中斷處理程序的軟件程序來完成中斷服務。
一個典型的現(xiàn)有技術(shù)中斷控制器模塊從多個中斷源接收中斷請求。請求被存儲在一個中斷源寄存器中,該寄存器具有一個對應于每個中斷源的位以便可以讀出中斷源寄存器以確定正在聲明掛起中斷的中斷源。一個中斷使能寄存器存儲一個對應于每個潛在掛起中斷的位以便能夠?qū)χ袛嘣醇拇嫫鬟M行單獨的位屏蔽。對中斷源寄存器和中斷使能寄存器的內(nèi)容執(zhí)行一個邏輯與以便構(gòu)成一個中斷掛起寄存器的內(nèi)容。這樣,如果聲明一個中斷并且被屏蔽寄存器使能,則會為中斷掛起寄存器中的那個中斷產(chǎn)生一個邏輯一。在中斷掛起寄存器上執(zhí)行一個邏輯位或以便產(chǎn)生一個被傳送到中央處理單元(CPU)的中斷信號。這樣,任何被使能的掛起中斷均會強制向CPU聲明一個中斷信號。
當CPU檢測中斷信號已經(jīng)被聲明時,可以檢查中斷掛起寄存器以確定相應應當執(zhí)行哪個中斷服務程序。這里可能涉及劃分中斷優(yōu)先權(quán),其中可以根據(jù)一個具體中斷在中斷掛起寄存器中的位位置來劃分優(yōu)先權(quán)。這樣,中斷掛起寄存器中更有效的位可以比不太有效的位具有更高的優(yōu)先權(quán)。由于中斷源寄存器和中斷掛起寄存器是只讀的,這種現(xiàn)有技術(shù)的中斷控制器受到限制,即只能通過強制硬件聲明一個中斷請求來產(chǎn)生軟件中斷請求。
在授權(quán)給Connell等人(此后稱作“Connell”)的美國專利第5,459,872號中描述了另一種現(xiàn)有技術(shù)的中斷控制器。Connell描述了一種中斷控制器,其中包含一個中斷寄存器,該寄存器存儲對應于多個硬件中斷源的掛起中斷。其中還包含控制軟件,該軟件通過修改中斷寄存器可以產(chǎn)生要聲明的中斷請求。盡管Connell的指教允許通過修改中斷寄存器中存儲的硬件中斷指示來產(chǎn)生軟件中斷,但仍然沒有辦法通過參照中斷寄存器的內(nèi)容來區(qū)分硬件和軟件產(chǎn)生的中斷。另外,如Connell所講,中斷控制器可支持的不同中斷請求的數(shù)量被限制成中斷寄存器支持的硬件中斷源的數(shù)量。
因而需要一種允許區(qū)分硬件和軟件中斷并且對硬件和軟件中斷請求提供統(tǒng)一處理的中斷控制器。
通過例子圖解本發(fā)明,并且在附圖中不對本發(fā)明作出限制,在圖中用類似的編號指示類似的部件,其中
圖1圖解了一個基于本發(fā)明一個具體實施例的數(shù)據(jù)處理系統(tǒng)的模塊圖;圖2圖解了圖1的一部分基于本發(fā)明一個具體實施例的中斷電路的模塊圖;圖3圖解了基于本發(fā)明一個具體實施例的一個中斷源寄存器和一個中斷強制寄存器的模塊圖;圖4圖解了基于本發(fā)明一個具體實施例的一個跳轉(zhuǎn)表和相關(guān)指針的模塊圖;圖5圖解了基于本發(fā)明一個具體實施例的另一個中斷源寄存器和中斷強制寄存器的模塊圖;圖6圖解了基于本發(fā)明一個具體實施例的另一個跳轉(zhuǎn)表和相關(guān)指針的模塊圖。
技術(shù)人員會理解到,這里以簡單和清晰為目的對圖的部件加以圖解,并且不必按比例繪制這些部件。例如,相對于其它部件而言可以夸大圖中某些部件的尺寸以便幫助理解本發(fā)明的實施例。
通常,本發(fā)明提供一種包含一個中斷強制寄存的靈活中斷控制器。在中斷控制器包含的一個中斷源寄存器中存儲當前被其對應的硬件源聲明的硬件中斷。一個獨立的中斷強制寄存器存儲當前掛起的軟件中斷,其中可以通過由數(shù)據(jù)處理系統(tǒng)內(nèi)的中央處理單元(CPU)執(zhí)行軟件程序來聲明這些軟件中斷。在一個實施例中,中斷源寄存器中的每個位位置在中斷強制寄存器中均有一個對應的位位置,并且中斷強制寄存器中的每個位均與中斷源寄存器中的對應位進行邏輯位或。邏輯位或操作的結(jié)果被存儲在一個中斷掛起寄存器中并且中斷掛起寄存器的內(nèi)容被一起位或以便產(chǎn)生一個被提供給CPU的中斷請求信號。
參照圖1-6可以更好地理解本發(fā)明。圖1圖解了一個數(shù)據(jù)處理系統(tǒng)10,該系統(tǒng)具有中央處理單元電路12,存儲器電路14,定時器電路16,串行電路18,其它電路20和系統(tǒng)集成電路22,這些電路均通過總線24彼此雙向連接。
CPU12通過一或多個集成電路終端30可以被外部連接到數(shù)據(jù)處理系統(tǒng)10。存儲器14通過一或多個集成電路終端32可以被外部連接到數(shù)據(jù)處理系統(tǒng)10。定時器16通過一或多個集成電路終端34可以被外部連接到數(shù)據(jù)處理系統(tǒng)10。串行電路18通過一或多個集成電路終端36可以被外部連接到數(shù)據(jù)處理系統(tǒng)10。并且,其它電路20通過一或多個集成電路終端38可以被外部連接到數(shù)據(jù)處理系統(tǒng)10。系統(tǒng)集成電路22通過總線26被雙向外部連接到數(shù)據(jù)處理系統(tǒng)10。系統(tǒng)集成電路22包含中斷電路28。中斷電路通過集成電路終端40可以被外部連接到數(shù)據(jù)處理系統(tǒng)10,并且通過總線24可以被連接到CPU12。
在本發(fā)明的某些實施例中,數(shù)據(jù)處理系統(tǒng)10是一個在單個集成電路上構(gòu)成的數(shù)據(jù)處理器。在某些實施例中,數(shù)據(jù)處理系統(tǒng)10是一個單片微控制器。在可選的實施例中,使用任何類型的電氣電路均可以實現(xiàn)數(shù)據(jù)處理系統(tǒng)10。存儲器14可以是任何類型的存儲器。數(shù)據(jù)處理系統(tǒng)10的可選實施例可以包含更多,更少,或不同模塊的電路。例如,數(shù)據(jù)處理系統(tǒng)10的可選實施例可以沒有存儲器14,定時器16,串行電路18或其它電路20。本發(fā)明的某些實施例可以將中斷電路28作為CPU12的一部分,并且可以有或沒有系統(tǒng)集成電路22。
集成電路終端30,32,34,36,38和40可以是任何類型的,允許電信號被傳送到數(shù)據(jù)處理系統(tǒng)10或從其傳送出來的裝置。例如,集成電路終端30,32,34,36,38和40可以是集成電路管腳,焊接頭,線導體等等。另外,總線26通過集成電路終端可以從數(shù)據(jù)處理系統(tǒng)10傳入或傳出電信號。
圖2圖解了基于本發(fā)明一個實施例的圖1的中斷電路28部分。所示的中斷電路28包含一個中斷源寄存器110,一個中斷強制寄存器120,一個中斷使能寄存器140,一個中斷掛起寄存器160和邏輯門131-133,151-153和172。在本發(fā)明的一個實施例中,每個中斷源寄存器110,中斷強制寄存器120,中斷使能寄存器140,和中斷掛起寄存器160均可以包含N個位,其中N是一個整數(shù)。
中斷源寄存器110是一個存儲設備,該設備具有多個可以對應于數(shù)據(jù)處理系統(tǒng)10接收的硬件中斷的輸入。通過諸如集成電路終端40的物理導體可以接收這些硬件中斷,其中每個硬件中斷對應于一個具體的硬件產(chǎn)生的中斷源。中斷源寄存器110有選擇地存儲通過物理導體接收的硬件中斷并且在一個預定輸出終端上提供各個硬件產(chǎn)生中斷。
中斷源寄存器110可以包含多個透明的鎖存器,其中每個透明鎖存器存儲一個硬件中斷102的值并且允許通過讀取中斷源寄存器110來確定與硬件中斷線路102相關(guān)的值。這種透明鎖存器可用于保證以不違背定時約束的方式把硬件中斷102上的變化傳遞到中斷電路28內(nèi)的附加電路。
在其它實施例中,中斷源寄存器110包含一個單獨的,諸如用于各個硬件中斷102的觸發(fā)器的位寄存器。當一個硬件中斷源聲明一個中斷請求時,中斷源寄存器110內(nèi)對應于來自該中斷源的具體中斷請求的位被置位。中斷源寄存器110最好被實現(xiàn)成一個只讀寄存器,這樣,軟件不能把中斷源寄存器110中的一個具體的位強制成置位或清除狀態(tài)。
中斷強制寄存器120通過一或多個輸入接收多個軟件產(chǎn)生的中斷信號(軟件中斷)104。每個軟件中斷104均指示一個與硬件中斷102不同源或不同類型的中斷,使得至少一個軟件產(chǎn)生的中斷對應于未被指定成硬件中斷源的數(shù)據(jù)處理系統(tǒng)的一部分。通過由CPU12執(zhí)行存儲器14中存儲的軟件可以產(chǎn)生軟件中斷。
中斷強制寄存器120是一個存儲設備,該設備包含一個用于各個軟件中斷104的位位置。構(gòu)成中斷強制寄存器120的存儲設備可以包含鎖存器或寄存器,對于中斷源寄存器110通常包含的是寄存器。為了通過對中斷強制寄存器120執(zhí)行一個寫操作來使能聲明的軟件中斷,中斷強制寄存器120可以被配置成一個讀/寫寄存器。
使用邏輯電路混合中斷源寄存器110和中斷強制寄存器120的內(nèi)容(分別是硬件產(chǎn)生的中斷信號和軟件產(chǎn)生的中斷信號)以產(chǎn)生一個中斷請求信號174,該信號被提供給CPU12從而在數(shù)據(jù)處理系統(tǒng)10內(nèi)產(chǎn)生一個中斷。在圖2圖解的實施例中,多個或門131-133被用來對中斷源寄存器110中一個具體位置上的一個位值和中斷強制寄存器120中一個對應位置上的位值進行邏輯或操作。這樣,或門131對中斷源寄存器110中最低有效位置上的位和中斷強制寄存器120中最低有效位置上的位求或。應當理解,可以在其它的實施例中實現(xiàn)本發(fā)明,其中多個或門131-133被用來對中斷源寄存器110中一個具體位置上的位值和中斷強制寄存器120中不必是對應位的位值邏輯求或。
在數(shù)據(jù)處理系統(tǒng)中包含的中斷是不可屏蔽中斷的一個實施例中,或門131-133的輸出可以被直接提供給一個中斷掛起寄存器160。但在某些實施例中,可以屏蔽單個的中斷以便一個中斷使能寄存器140(也可以被稱作屏蔽寄存器)和其它使能電路被用來使能或禁止數(shù)據(jù)處理系統(tǒng)中的潛在中斷。因而,或門131-133的輸出被當作輸入提供給多個對應的與門151-153。針對與門151-153的其它輸入是在中斷使能寄存器140中對應位置上存儲的一個位值。接著與門151-153的輸出被提供給中斷掛起寄存器160。這樣,在中斷使能寄存器140內(nèi)被置位的位允許掛起中斷被傳送或傳遞到中斷掛起寄存器160。中斷使能寄存器140最好被實現(xiàn)成數(shù)據(jù)處理系統(tǒng)中的一個讀/寫寄存器。這允許動態(tài)屏蔽處理系統(tǒng)中的各個中斷。
可以是一個只讀寄存器的中斷掛起寄存器160存儲中斷源寄存器110,中斷強制寄存器120和中斷使能寄存器140中的值的組合。中斷使能寄存器160內(nèi)各個位位置的值被或門172一起位或以便產(chǎn)生被提供給CPU12的中斷請求信號174。因而,如果中斷掛起寄存器160中的任何一位被置位,都會聲明中斷請求信號174。
中斷掛起寄存器160中的位位置(存儲位置)可以和一個優(yōu)先權(quán)模式聯(lián)系起來,以便更高有效位置的置位位指示的中斷對應于優(yōu)先權(quán)比中斷掛起寄存器160中較低有效位位置上的置位位指示的中斷更高的中斷。例如,如果中斷掛起寄存器160包含N個位,則位位置0可以對應于具有最低優(yōu)先權(quán)的中斷,而位位置N對應于具有最高優(yōu)先權(quán)的中斷。一個查找第一置位位指令與中斷掛起寄存器160結(jié)合起來可以被用于確定一個具有最高優(yōu)先權(quán)的掛起中斷。注意,為中斷掛起寄存器中特定存儲位置分配一個中斷優(yōu)先級意味著中斷源寄存器110和中斷強制寄存器120中的位位置與這樣的優(yōu)先級直接關(guān)聯(lián)。
在一個實施例中,圖2所示的中斷電路28可以被用來仿真硬件中斷的出現(xiàn),即使在與這樣的硬件中斷相關(guān)的中斷源不活動或不在系統(tǒng)中時也是如此。使用軟件聲明軟件中斷可以實現(xiàn)這一點,其中聲明的軟件中斷在中斷強制寄存器120中具有和中斷源寄存器110中對應仿真的硬件中斷的位的位置相對應的位位置。
由于或門131-133綜合了中斷源寄存器110中存儲的值和中斷強制寄存器120中存儲的值,在中斷強制寄存器120中一個具體位位置上強制一個軟件中斷會以和接收中斷源寄存器110中對應于相同們位置的硬件中斷相同的方式在一個具體的或門131-133上產(chǎn)生一個正輸出值。這樣,可以為多個軟件產(chǎn)生的中斷信號中的一部分分配優(yōu)先級,使得這些中斷信號可以被用來表示來自某些產(chǎn)生硬件中斷并且具有對應的優(yōu)先級的中斷源的中斷。在調(diào)試操作中這樣的仿真是有價值的,因為在仿真中通過其它方式模擬硬件中斷的聲明是不現(xiàn)實的。
當CPU12接收中斷電路28產(chǎn)生的一個中斷請求174時,第一個動作過程通常是讀取中斷掛起寄存器160。接著查找第一置位位功能可以被用來確定如中斷掛起寄存器160所指示的具有最高優(yōu)先權(quán)的掛起中斷,其中位位置確定各個掛起中斷的優(yōu)先權(quán)。接著最高優(yōu)先權(quán)中斷的位位置被用來確定一個要被從一個跳轉(zhuǎn)表中取出的,對應于一個中斷服務程序的向量。被取出的向量允許CPU執(zhí)行通常被存儲在存儲器14中的適當中斷服務程序??梢酝ㄟ^這樣的方式執(zhí)行中斷服務程序,即在完成時可以改變系統(tǒng)的狀態(tài)以便觸發(fā)中斷服務程序的執(zhí)行的中斷會被撤銷聲明。
為了能夠便于維護針對CPU12的中斷服務所描述的優(yōu)先級模式,與一個當前正被服務的中斷相比具有相同或更低優(yōu)先級的中斷通常被屏蔽(使用中斷使能寄存器140),使得較低優(yōu)先級中斷的聲明不會對CPU12產(chǎn)生一個額外的中斷請求。這種對CPU12的額外中斷請求會使CPU12讀取中斷掛起寄存器160并且確定新接收的中斷的優(yōu)先級,這樣會降低高優(yōu)先級中斷服務程序的執(zhí)行速度和效率。但如果接收一個更高優(yōu)先級的中斷(不會被屏蔽),CPU可以切換服務更高級的中斷,同時延遲完成對已經(jīng)服務的中斷的服務。
圖3圖解了可以被用來輔助和理解本發(fā)明的某些觀點的一個中斷源寄存器200和一個中斷強制寄存器201的例子。所示的中斷源寄存器200包含6個位(位置0-5)。所示的中斷源寄存器200的位位置1,3和5對應于具體的硬件中斷。位位置1對應于一個并行輸入/輸出(I/O)中斷,位位置3對應于一個定時器中斷,而位位置5對應于一個通用異步接收器-發(fā)送器(UART)串行通信端口。在圖3所示的例子中斷源寄存器200中,假定UART具有針對中斷服務的最高優(yōu)先級。因而并行I/O中斷具有最低優(yōu)先級。
對UART中斷的服務會導致UART串行接口上的數(shù)據(jù)被捕獲并且被存儲在處理系統(tǒng)內(nèi)的一個緩沖區(qū)中。在某些情況下,針對該數(shù)據(jù)在緩沖區(qū)中的存儲可能需要諸如解壓縮UART數(shù)據(jù)的反向處理。為了能夠進行這樣的反向處理,軟件可以聲明一個指示需要對存儲在緩沖區(qū)中的數(shù)據(jù)進行解壓縮處理的軟件中斷。
在正常操作中,當以保證緩沖區(qū)不會被填充超過一個閾值水平的速率對通過服務UART中斷放到緩沖區(qū)中的數(shù)據(jù)進行解壓縮處理時,對應于處理緩沖UART數(shù)據(jù)請求的軟件中斷優(yōu)先級可以具有一個普通低的優(yōu)先級。針對圖3的中斷強制寄存器201圖解了這種情況,其中所示的UART緩沖區(qū)低優(yōu)先級指示對應于中斷強制寄存器201中的位位置2。當這個優(yōu)先級的軟件中斷被用來服務UART緩沖區(qū)時,這樣的服務必須以沒有更高優(yōu)先級的中斷為條件。一個這樣的高優(yōu)先級中斷是硬件定時器中斷。硬件定時器中斷具有優(yōu)先級3,這是一個高于UART緩沖區(qū)低優(yōu)先級中斷請求的級別2優(yōu)先級的優(yōu)先級。
在某些情況下,CPU可以檢測到對UART緩沖區(qū)的服務應當被提升到一個更高的優(yōu)先級。在UART硬件中斷服務向UART緩沖區(qū)轉(zhuǎn)儲大量數(shù)據(jù),和對諸如定時器提交的中斷的較高優(yōu)先級中斷的處理出現(xiàn)UART緩沖區(qū)溢出危險時,會發(fā)生這種情況。
為了避免數(shù)據(jù)損失,UART緩沖區(qū)服務的優(yōu)先級可以被提高到一個較高的優(yōu)先級,例如中斷強制寄存器201中UART緩沖區(qū)快滿優(yōu)先級指示所指示的優(yōu)先級。UART緩沖區(qū)快滿指示對應于一個優(yōu)先級4,該優(yōu)先級比中斷源寄存器200中定時器的優(yōu)先級更高。這樣,如果定時器中斷和具有更高優(yōu)先級的UART緩沖區(qū)服務中斷同時被掛起,則UART緩沖區(qū)會優(yōu)先被服務。
CPU可以根據(jù)UART緩沖區(qū)的內(nèi)容確定是否需要提高優(yōu)先級。為了能夠根據(jù)UART緩沖區(qū)很空或UART緩沖區(qū)快滿優(yōu)先級上的中斷對UART緩沖區(qū)進行服務,可以使用圖4所示的跳轉(zhuǎn)表210。跳轉(zhuǎn)表210存儲一個對應于級別2優(yōu)先級中斷的指針212。指針212指向一個使UART緩沖區(qū)被服務的中斷服務程序220。類似地,跳轉(zhuǎn)表210存儲一個對應于級別4優(yōu)先級中斷的指針214。指針214還指向使UART緩沖區(qū)被服務的中斷服務程序220。
當CPU12接收一個中斷請求174時,CPU12讀取中斷掛起寄存器160以確定當前的最高優(yōu)先級掛起中斷。如果這個當前的最高優(yōu)先級掛起中斷是級別2或級別4優(yōu)先級中斷,則會查找跳轉(zhuǎn)表210得到一個指向中斷服務程序220的指針,使得UART緩沖區(qū)被服務。注意跳轉(zhuǎn)表210還存儲對應于針對中斷源寄存器200中描述的硬件中斷的各個優(yōu)先級上的指針。
圖5圖解了一個中斷源寄存器300和一個中斷強制寄存器301,所對應的情況類似于參照圖3描述的情況。在圖5所示的例子中,所示的一個對應于一個報時時鐘的附加硬件中斷與中斷源寄存器300相關(guān)聯(lián),使得報時時鐘具有一個優(yōu)先級4。如參照中斷強制寄存器301所圖解的,通常可以根據(jù)UART緩沖區(qū)很空優(yōu)先級,即優(yōu)先級2對UART緩沖區(qū)提供服務。如果CPU確定UART緩沖區(qū)的服務不夠并且需要與之關(guān)聯(lián)一個更高的優(yōu)先級以便增加其服務級別,則可以聲明一個對應于UART緩沖區(qū)快滿優(yōu)先級的軟件中斷,而不是聲明一個普通UART緩沖區(qū)很空優(yōu)先級中斷。但應當理解UART緩沖區(qū)快滿優(yōu)先級中斷與對應于報時時鐘的硬件中斷具有相同的優(yōu)先級。這兩種中斷均為級別4優(yōu)先級中斷。
為了允許CPU執(zhí)行對應于級別4優(yōu)先級中斷的適當中斷服務程序,圖6所示的跳轉(zhuǎn)表310可以包含一個指針314,該指針指向一個中斷服務程序330,該程序包含額外的判決。中斷服務程序330包含一個判決步驟332,該步驟讀取中斷強制寄存器(IFR)301以確定中斷強制寄存器301中的級別4優(yōu)先級是否置位。如果確定在中斷強制寄存器301內(nèi)對應于級別4優(yōu)先級的位被置位,則前進到服務UART緩沖區(qū)的步驟334。
如果確定在中斷強制寄存器301內(nèi)對應于級別4優(yōu)先級的位沒有被置位,則由于中斷源寄存器300和中斷強制寄存器301的級別4優(yōu)先級位的邏輯或操作產(chǎn)生一個級別4優(yōu)先級中斷,所以一定是報時時鐘的一個中斷聲明產(chǎn)生了級別4優(yōu)先級中斷。作為確定在中斷強制寄存器301內(nèi)級別4優(yōu)先級位沒有被置位,從而表明報時時鐘已經(jīng)聲明一個中斷的結(jié)果,中斷服務程序會執(zhí)行步驟336使得報時時鐘被服務。
注意,對應于指針314的中斷服務程序330自然地使中斷強制寄存器301的對應于一個軟件中斷的級別4優(yōu)先級中斷的優(yōu)先級高于中斷源寄存器300的對應于一個來自報時時鐘的硬件中斷的級別4優(yōu)先級中斷。這是因為中斷服務程序330根據(jù)對中斷強制寄存器301的一次檢查來確定要服務的中斷。如果報時時鐘硬件中斷和一個UART緩沖區(qū)快滿優(yōu)先級軟件中斷同時被掛起,則對中斷強制寄存器301的檢查會表明UART緩沖區(qū)快滿優(yōu)先級軟件中斷被掛起,中斷服務程序330因而前進到步驟334并且為UART緩沖區(qū)提供服務。這樣,盡管報時時鐘與UART緩沖區(qū)快滿優(yōu)先級軟件中斷具有相同的優(yōu)先級,但中斷服務程序330通過執(zhí)行判決步驟332給UART緩沖區(qū)快滿優(yōu)先級軟件中斷提供更高的優(yōu)先級。
一個可選的中斷服務程序340會提供與中斷服務程序330類似的結(jié)果,除了在中斷服務程序340的判決步驟中傾向于為對應于報時時鐘的硬件中斷提供更高的優(yōu)先級之外。跳轉(zhuǎn)表310可以存儲一個指向傾向于軟件中斷的中斷服務程序330的指針314,也可以存儲一個傾向于硬件中斷的指針316。
通過讀取中斷源寄存器300并且確定中斷源寄存器300中對應于報時時鐘硬件中斷的級別4優(yōu)先級位是否被置位來開始中斷服務程序340。如果中斷源寄存器300中的級別4優(yōu)先級位沒有置位,則CPU推論必須設置中斷強制寄存器301中的級別4優(yōu)先級位,因而在步驟346服務UART緩沖區(qū)。如果確定中斷源寄存器300中的級別4優(yōu)先級位被置位,則在步驟344服務報時時鐘。
注意跳轉(zhuǎn)表310存儲一個對應于級別2優(yōu)先級中斷,指向一個中斷服務程序320的指針312。中斷服務程序320導致UART緩沖區(qū)被服務。由于只有一個可以在系統(tǒng)中發(fā)生的級別2優(yōu)先級中斷,所以在執(zhí)行中斷服務程序320時不需要進行判決。這個中斷就是UART緩沖區(qū)很空優(yōu)先級軟件中斷。所示的中斷源寄存器300缺乏一個對應于其級別2優(yōu)先級位位置的硬件中斷。
圖2所示的中斷電路28允許在數(shù)據(jù)處理系統(tǒng)中并存具有類似優(yōu)先級的硬件中斷和軟件中斷。與現(xiàn)有技術(shù)的中斷處理器相比,這里有效地倍增了一個中斷掛起寄存器支持的潛在中斷的數(shù)量。這樣,中斷掛起寄存器可以包含N個對應于N個優(yōu)先級的位位置,其中任何一個這樣的位位置上的設置值均可以對應于該優(yōu)先級的一個硬件中斷或軟件中斷。為了確定中斷掛起寄存器160中的值是對應于一個軟件產(chǎn)生的中斷還是對應于一個硬件產(chǎn)生的中斷,可以考慮一或多個中斷源寄存器110和中斷強制寄存器120。
由于中斷源寄存器110接收的硬件中斷根據(jù)的是通過與中斷源寄存器110相連的物理導體接收的信號,通過這些物理導體接收的中斷的中斷優(yōu)先級是根據(jù)一個物理導體對應的具體位位置永久分配或固定下來的。但可以根據(jù)軟件控制改變涉及被提供給中斷強制寄存器120的軟件中斷的優(yōu)先級。
如前面的例子所述,通過修改跳轉(zhuǎn)表實現(xiàn)對軟件中斷的優(yōu)先級的控制,使得在檢測到一個具有特定優(yōu)先級的軟件中斷時,跳轉(zhuǎn)表會指向?qū)谔囟ㄜ浖袛嗟?,要被?zhí)行的中斷服務程序。這樣,一個對應于服務UART緩沖區(qū)的軟件中斷最初可以具有級別2優(yōu)先級,使得跳轉(zhuǎn)表存儲一個表明級別2優(yōu)先級軟件中斷應當使UART緩沖區(qū)被服務的指示。如果CPU后來確定應當以更高的中斷優(yōu)先級為UART緩沖區(qū)提供服務,可以通過在中斷強制寄存器中設置一個具有高于優(yōu)先級2的優(yōu)先級的位來聲明以后的UART緩沖區(qū)軟件中斷。為了保證更高優(yōu)先級的軟件中斷產(chǎn)生期望的UART緩沖區(qū)服務,應當配置跳轉(zhuǎn)表使得對應于高優(yōu)先級的軟件中斷導致執(zhí)行服務UART緩沖區(qū)的中斷服務程序。
在另一個使用圖3的中斷電路28的靈活性以根據(jù)數(shù)據(jù)處理系統(tǒng)的需要調(diào)整中斷優(yōu)先級的例子應用中,可以改變接收的硬件中斷的有效優(yōu)先級。例如,如果接收一個CPU確定應當在不被后續(xù)接收的高優(yōu)先級中斷打斷的情況下提供服務的低優(yōu)先級硬件中斷,則CPU可以聲明一個高優(yōu)先級的軟件中斷。根據(jù)跳轉(zhuǎn)表的配置,高優(yōu)先級軟件中斷可以觸發(fā)執(zhí)行一個類似于低優(yōu)先級硬件中斷的服務程序的中斷服務程序。在高優(yōu)先級軟件中斷正被服務時,低優(yōu)先級中斷將被屏蔽,從而保證最初由低優(yōu)先級硬件中斷指定的中斷服務程序的執(zhí)行沒有被打斷。
類似地,可以有效地降低一個所接收的硬件中斷的中斷服務程序的執(zhí)行優(yōu)先級。在接收一個高優(yōu)先級硬件中斷時通過聲明一個低優(yōu)先級軟件中斷可以實現(xiàn)這種處理。在聲明低優(yōu)先級軟件中斷時,可以使用中斷使能寄存器140屏蔽對應于其有效優(yōu)先級被修改的高優(yōu)先級硬件中斷的優(yōu)先級。這樣,掛起的硬件中斷會被CPU忽略并且會根據(jù)其低優(yōu)先級為在最初接收高優(yōu)先級硬件中斷時產(chǎn)生的低優(yōu)先級軟件中斷提供服務。
前面直接描述的對數(shù)據(jù)處理系統(tǒng)中中斷服務的優(yōu)先級的動態(tài)調(diào)整可以允許數(shù)據(jù)處理系統(tǒng)以一種靈活的方式進行調(diào)整,從而改進其整體的性能。通過使用使能寄存器的屏蔽功能以及跳轉(zhuǎn)表和中斷強制寄存器的軟件配置能力,可以實現(xiàn)在現(xiàn)有技術(shù)的系統(tǒng)中沒有的各個優(yōu)先級修改。
在前面的說明中針對具體實施例描述了本發(fā)明。但本領(lǐng)域的技術(shù)人員會理解到,在不偏離如下面的權(quán)利要求書所述的本發(fā)明的范圍的前提下可以進行各種修改和變化。相應地,說明書和附圖被認為是說明性的而不是限制性的,并且所有這樣的修改試圖被包含在本發(fā)明的范圍內(nèi)。
前面已經(jīng)針對具體實施例描述了本發(fā)明的好處,其它優(yōu)點和問題解決方案。但是這些好處,優(yōu)點,問題解決方案和任何會導致任意好處,優(yōu)點或解決方案產(chǎn)生或更加明確的成分不會被解釋成任何或全部權(quán)利要求的關(guān)鍵,必須或必要的特性或要素。正如這里所使用的,術(shù)語“包括”或任何其它的變體被試圖用來表示非窮舉的包括,使得包括一列要素的一個過程,方法,物品或裝置不僅包含那些要素,而且也可以包含沒有明確列出或與這樣的過程,方法,物品或裝置有內(nèi)在聯(lián)系的其它要素。
權(quán)利要求
1.一個實現(xiàn)數(shù)據(jù)處理系統(tǒng)中的中斷的方法,其特征在于包括以下步驟提供一個具有多個輸入的第一存儲設備,多個輸入中的每一個輸入均通過一個相應的物理導體被連接到多個有選擇地產(chǎn)生硬件中斷并且有選擇地存儲硬件中斷的硬件產(chǎn)生中斷源中的一個中斷源上,第一存儲設備提供一或多個硬件產(chǎn)生的中斷信號;提供一個具有一或多個輸入的第二存儲設備,一或多個輸入中的每個輸入接收并存儲多個軟件產(chǎn)生的中斷信號中的一個預定信號,預定多個軟件產(chǎn)生的中斷信號中的至少某些信號指示一個來自不同的中斷源或具有與硬件中斷不同的類型的中斷,第二存儲設備提供一或多個軟件產(chǎn)生的中斷信號;把邏輯電路連接到第一存儲設備和第二存儲設備以便接收一或多個硬件產(chǎn)生的中斷信號和一或多個軟件產(chǎn)生的中斷信號,邏輯電路提供一個導致在數(shù)據(jù)處理系統(tǒng)中產(chǎn)生中斷的中斷請求信號。
2.如權(quán)利要求1所述的方法,其進一步的特征在于包括步驟為第一存儲設備和第二存儲設備的特定存儲位置分配一個中斷優(yōu)先級,多個與第一存儲設備相連的硬件產(chǎn)生的中斷源被固定分配中斷優(yōu)先級,但通過軟件控制可以改變對涉及第二存儲設備的中斷源的中斷優(yōu)先級的分配。
3.如權(quán)利要求2所述的方法,其進一步的特征在于包括步驟指定第二存儲設備中存儲的多個軟件產(chǎn)生的中斷信號中的一部分表示產(chǎn)生硬件中斷并且一個不同于與第一存儲設備相連的多個硬件產(chǎn)生的中斷源的中斷優(yōu)先級的中斷優(yōu)先級的相同中斷源。
4.如權(quán)利要求2所述的方法,其進一步的特征在于包括步驟從服務一個硬件產(chǎn)生的中斷開始改變中斷服務,并且在硬件產(chǎn)生中斷的服務完成之前轉(zhuǎn)向服務一個具有更高優(yōu)先級的軟件產(chǎn)生的中斷。
5.如權(quán)利要求2所述的方法,其進一步的特征在于包括步驟通過提供一個軟件產(chǎn)生的中斷改變一個預定的硬件產(chǎn)生的中斷的優(yōu)先級,其中所提供的軟件產(chǎn)生的中斷表示一個針對預定的硬件產(chǎn)生中斷但具有與預定硬件產(chǎn)生中斷不同的優(yōu)先級的對應硬件產(chǎn)生中斷源。
6.如權(quán)利要求1所述的方法,其進一步的特征在于包括步驟當兩個中斷具有相同優(yōu)先級時通過服務一個硬件產(chǎn)生的第一中斷或軟件產(chǎn)生的第二中斷在兩個中斷之間確定優(yōu)先級,其中第一個中斷是硬件產(chǎn)生的中斷而第二個中斷是軟件產(chǎn)生的中斷。
7.一個具有中斷控制電路的數(shù)據(jù)處理系統(tǒng),其特征在于多個硬件中斷源;一個具有多個輸入的硬件中斷存儲設備,多個輸入中的每一個輸入均通過一個電導體被連接到多個硬件中斷源中的一個中斷源上,硬件中斷存儲設備存儲硬件產(chǎn)生的中斷并且在一個預定的輸出終端上提供多個硬件產(chǎn)生中斷中的每一個中斷;一個具有多個輸入的軟件中斷存儲設備,多個輸入中的每個輸入接收多個軟件產(chǎn)生的中斷信號中的一個預定信號,軟件產(chǎn)生的中斷信號中的至少一個信號對應于數(shù)據(jù)處理系統(tǒng)中未被指定成硬件中斷源的一部分的中斷服務;邏輯電路,該電路被連接到硬件中斷存儲設備和軟件中斷存儲設備以便根據(jù)硬件產(chǎn)生的中斷信號或軟件產(chǎn)生的中斷信號的接收為一個數(shù)據(jù)處理系統(tǒng)提供中斷信號。
8.如權(quán)利要求7所述的數(shù)據(jù)處理系統(tǒng),其中硬件中斷存儲設備和軟件中斷存儲設備為特定存儲位置分配一個中斷優(yōu)先級,硬件中斷源的中斷優(yōu)先級被固定分配,而通過軟件控制可以改變對涉及軟件產(chǎn)生的中斷信號的中斷源的中斷優(yōu)先級分配。
9.如權(quán)利要求8所述的數(shù)據(jù)處理系統(tǒng),其中在一個相關(guān)的硬件中斷服務被完成之前向邏輯電路提供一個具有高于當前執(zhí)行的硬件產(chǎn)生中斷信號的優(yōu)先級的軟件產(chǎn)生中斷信號,并且數(shù)據(jù)處理系統(tǒng)掛起對硬件中斷服務的處理以便處理一個相關(guān)的軟件中斷服務。
10.如權(quán)利要求7所述的數(shù)據(jù)處理系統(tǒng),其特征在于一個屏蔽寄存器,該寄存器被連接到硬件中斷存儲設備和軟件存儲設備以便有選擇地防止硬件產(chǎn)生的中斷信號和軟件產(chǎn)生的中斷信號被傳送到邏輯電路。
全文摘要
提供了一個靈活中斷控制器(28),該控制器包含一個中斷強制寄存器(120)。當前被其相應的硬件中斷源聲明的硬件中斷(102)被存儲在中斷控制器(28)內(nèi)包含的一個中斷源寄存器(110)中。一個獨立的中斷強制寄存器(120)存儲當前掛起的軟件中斷(104),其中可以由數(shù)據(jù)處理系統(tǒng)(10)內(nèi)的中央處理單元(CPU)(12)通過執(zhí)行軟件程序來聲明該中斷。
文檔編號G06F9/46GK1309350SQ0110169
公開日2001年8月22日 申請日期2001年1月22日 優(yōu)先權(quán)日2000年1月24日
發(fā)明者威廉·C.·莫耶爾 申請人:摩托羅拉公司