專利名稱::動態分配中斷接腳的方法
技術領域:
:本發明是有關于一種路由(Routing)方法,且特別是有關于一種動態分配中斷接腳的方法。
背景技術:
:中斷請求(InterrupRequest,IRQ)是在某個裝置要進行特定的動作時,用以通知并要求處理器暫停工作,以執行對應的計算動作。此中斷請求的發送是通過所謂的中斷線來執行,而這些中斷線的數目又會因主板采用的中斷控制器而有所不同。傳統的電腦采用可編程中斷控制器(ProgrammableInterruptController,PIC),其包括有16條中斷線。然而,這些中斷線對于功能日漸強大、輸入輸出設備推陳出新的電腦設備來說仍是太少,大部分的中斷線均會被占用,甚至必須多個硬件裝置一起共用。據此,一些新的主板則采用了先進可編程中斷控制器(AdvancedProgrammableInterruptController,APIC),此種中斷控制器就可以管理超過32個中斷請求,而能夠提供數目較多的硬件裝置使用,也比較不會有中斷線共用的情形。若使用PIC的主板,通常在實際上只有4個中斷線可供PCI總線使用;另一方面,若是使用APIC的新主板,則有8個中斷線可用。這表示即便主板上有6個PCI插槽,它們也必須勉強使用4或8個IRQ。此外,圖形加速端口(AcceleratedGraphicsPort,AGP)、通用序列總線(UniversalSerialBus,USB)、獨立冗余磁盤陣列(RedundantArrayofIndependentDisks,RAID)控制器及一些板載局域網(LocalAreaNetwork,LAN)接口、1394接口及SATA(SerialATA)接口也都要用IRQ。在這種情況下,多個PCI插槽共用一個IRQ的情況是無法避免的。圖1為現有的PIC/IOAPIC主板的硬件配置圖。請參照圖1,現有的PIC主板配置有中央處理單元110、北橋芯片120、南橋芯片130及4個PCI插槽140、150、160及170。其中,PCI插槽140、150、160及170會分別傳送4個中斷信息(Interruptmessage)INTA/INTB/INTC./INTD給北橋芯片120上的中斷路由寄存器(Interruptroutingregister)Rx—A、Rx—B、Rx—C及Rx—D(x=l,2,3,4)。而由于PIC的主板僅支持4個IRQ,因此北橋芯片120實際在傳送中斷信息給南橋芯片130時,PCI插槽140、150、160及170是共用4條中斷線來發出中斷信息。南橋芯片130則是通過4個中斷路由寄存器(Interruptrouterregister)RA、RB、RC及RD分別接收由北橋芯片120傳送而來的中斷信息。這些中斷信息接著會被送至一個可編程中斷控制器(8259PIC),而由8259PIC向中央處理單元110提出中斷請求。值得一提的是,現有的IOAPIC主板則是比PIC主板多出一個先進可編程中斷控制器(IOAPIC),而同時通過8259PIC及IOAPIC向中央處理單元IIO提出中斷請求。圖2為現有的中斷接腳的路由配置表。請參照圖2,其中每個PCI插槽的接腳A、B、C、D對映到不同的中斷信息INTA/INTB/INTC/INTD,而基本輸入輸出系統(BasicInput/OutputSystem,BIOS)在執行開機自我測試(Power-OnSelfTest,POST)時也會對應不同的中斷信息INTA/INTB/INTC/INTD,配置所使用/共用的中斷請求。舉例來說,插槽共2的接腳A、B、C、D對映到中斷信息INTD/INTA/INTB/INTC,因此在配置中斷請求時,也是按照順序,在對應的中斷路由寄存器Rx—D、Rx——A、Rx—B及Rx一C(x4,2,3,4)中存儲數字4、1、2、3。假若上述4個PCI插槽皆各插上一張PCI接口卡,而且每個PCI接口卡皆需要用從中斷接腳1、2、3、4分別觸發(trigger)4個中斷時,則每個IOAPIC中斷線上共用的硬件裝置數目均為4,而這4條中斷線上所需串接的硬件裝置驅動程序也都是4支。由此可知,在此情況下,每個IOAPIC中斷線被共用的情形均相同,己是最佳化的情形。然而,若4個PCI插槽皆各插上一張PCI接口卡,而每個PCI接口卡皆需要使用到如圖3所示的中斷接腳時,則會產生中斷接腳分配不均的情況。舉例來說,中斷接腳A共有4個PCI插槽共用,而中斷接腳卻只有1個PCI插槽使用。由此可矢口,這時IOAPIC中斷線的分配并非是最佳,而造成有些中斷接腳工作繁忙,有些中斷接腳相當空閑的情況,這類情況實際上仍有許多改善進步的空間。
發明內容有鑒于此,本發明的目的就是在提供一種動態分配中斷接腳的方法,依據各個插槽使用到的中斷接腳數目,平均分配中斷接腳,以使中斷接腳的分配達到最佳化。為達上述或其他目的,本發明提出一種動態分配中斷接腳的方法,適于分配一控制芯片的多個中斷接腳,此方法包括下列步驟首先讀取硬件路由表格,并從中找出有使用到中斷接腳的多個插槽。接著依照這些插槽所使用到的中斷接腳的數目,將這些插槽進行排序。然后則由排序在前的插槽開始,針對控制芯片中對應這些插槽的多個寄存器輪流分配中斷接腳,而每當這些中斷接腳的分配輪完一次后,再從頭輪回一次,直到所有插槽的寄存器皆有分配到中斷接腳為止。依照本發明的較佳實施例所述動態分配中斷接腳的方法,上述每一個插槽上配置有一硬件裝置,而此硬件裝置包括接口卡。依照本發明的較佳實施例所述動態分配中斷接腳的方法,還包括根據這些中斷接腳分配到各個插槽的順序,串接配置在各個插槽上的硬件裝置的驅動程序(Driver)。依照本發明的較佳實施例所述動態分配中斷接腳的方法,其中當配置在某一插槽上的硬件裝置的規格只能使用固定的中斷接腳時,則在排序插槽時,先將此插槽所使用到的中斷接腳的數目扣除固定的中斷接腳的數目后,再將這些插槽排序。依照本發明的較佳實施例所述動態分配中斷接腳的方法,其中在分配這些中斷接腳時,還包括保留固定的中斷接腳給對應的插槽的寄存器使用,以及輪流分配這些中斷接腳,并在分配到固定的中斷接腳時,跳過此中斷接腳。依照本發明的較佳實施例所述動態分配中斷接腳的方法,上述中斷接腳包括連接至一可編程中斷控制器(ProgrammableInterruptController,PIC)及一輸入輸出先進可編程中斷控制器(1/0AdvancedProgrammableInterruptController,I0APIC)其中之一。依照本發明的較佳實施例所述動態分配中斷接腳的方法,其中依照這些插槽所使用到的中斷接腳的數目,將這些插槽進行排序的方式包括由小至大排序。依照本發明的較佳實施例所述動態分配中斷接腳的方法,上述控制芯片包括北橋芯片及南橋芯片其中之一,而上述插槽則包括協議控制信息(ProtocolControlInformation,PCI)總線插槽、協議控制信息快捷(ProtocolControlInformationExpress,PCI-E)總線插槽及工業標準體系結構(IndustryStandardArchitecture,ISA)總線插槽其中之一。本發明采用將使用中斷接腳的插槽先排序后再平均分配中斷接腳的結構,因此可避免多個插槽同時使用同一個中斷接腳而造成資源分配不均的情況。此外,在分配完中斷接腳后,還包括根據中斷接腳分配到各個插槽的順序,串接配置在各個插槽上的硬件裝置的驅動程序,而能夠將中斷接腳優先提供給特定的插槽使用,解決中斷接腳被人占用而造成中斷處理延遲的問題。為讓本發明的上述和其他目的、特征和優點能更明顯易懂,下文特舉較佳實施例,并配合附圖作詳細說明如下。圖1為現有的PIC/I0APIC主板的硬件配置圖。圖2為現有的中斷接腳的路由配置表。圖3為現有的中斷接腳的路由配置表。圖4是依照本發明較佳實施例所繪示的動態分配中斷接腳的方法流程圖。圖5是依照本發明較佳實施例所繪示的PCI插槽的分配表。圖6是依照本發明較佳實施例所繪示的中斷接腳的分配表。圖7是依照本發明另一較佳實施例所繪示的PCI插槽的分配表。圖8是依照本發明另一較佳實施例所繪示的中斷接腳的分配表。具體實施例方式為了讓中斷接腳的分配能夠達到最佳化,本發明的作法是在BIOS執行開機自我測試的過程中,即依據目前系統插卡所使用的中斷接腳的情況,將控制芯片上寄存器的值做動態調整,而使得每支中斷接腳上共用的插槽數目為最少。為了使本發明的內容更為明了,以下特舉實施例作為本發明確實能夠據以實施的范例。圖4是依照本發明較佳實施例所繪示的動態分配中斷接腳的方法流程圖。請參照圖4,本實施例適于分配一個控制芯片的多個中斷接腳,此控制芯片例如是北橋芯片或是南橋芯片,而這些中斷接腳則例如是連接至可編程中斷控制器(ProgrammableInterruptController,PIC)或是輸入輸出先進可編程中斷控制器(I/OAdvancedProgrammableInterruptController,I0APIC)。本實施例首先讀取系統的硬件路由表格(Hardwareroutingtable),此表格中記錄有系統中所有硬件的配置數據。因此可通過此表格找出系統目前哪一個插槽上有插卡,以及這些插卡使用的中斷接腳的情況(步驟S410)。其中,此插卡例如是聲卡、顯示卡、輸入輸出卡(I/Ocard)等接口卡,而此插槽則例如是協議控制信息(ProtocolControlInformation,PCI)總線插槽、協議控制信息快捷(ProtocolControlInformationExpress,PCI-E)總線插槽及工業標準體系結構(IndustryStandardArchitecture,ISA)總線插槽,并不限制其范圍。在此步驟中即可獲得有哪些插槽必須使用中斷接腳,以及其實際必須使用的中斷接腳的數目。接著,即可依照這些插槽所使用到的中斷接腳數目,將這些插槽進行排序(步驟S420)。其中,排序的原則例如是由小到大,若有兩個或兩個以上的插槽使用到相同數目的中斷接腳,則在排序時是以原先編號在前的插槽優先。舉例來說,若插槽#2及插槽#3所使用到的中斷接腳數目同樣為兩支時,則將插槽#2優先排入。在取得插槽的排序后,即可由排序在前的插槽開始,針對控制芯片中對應各個插槽的寄存器逐個分配中斷接腳,而每當所有中斷接腳的分配輪完一次后,再從頭輪回一次,直到所有插槽的寄存器皆有分配到中斷接腳為止(步驟S430)。舉例來說,假設目前共有插槽#1、#2、#3、#4等4個插槽,而這些插槽所使用的中斷接腳的數目依序為1、2、3、4。因此,若依照中斷接腳的數目將這4個插槽排序,則排序結果為插槽ttl、#2、tt3、#4,而在之后分配中斷接腳時,也是從插槽ttl開始分配。圖5是依照本發明較佳實施例所繪示的PCI插槽的分配表。請參照圖5,其中的第二個欄位即為各個插槽被分配到的中斷接腳所對應的中斷信息(Interruptmessage),而從表格的第二列開始即依照排序結果列出各個插槽所對應的中斷接腳。其中,插槽ttl排第l個,而其所需的中斷接腳的數目也只有1個,因此分配到中斷接腳PinA,接著,插槽tt2則排序在第2個,而其所需的中斷接腳的數目為2個,因此也接著分配到中斷接腳PinB及PinC,以此類推,直到排序在最后的插槽糾也分配到中斷接腳后,則完成分配程序。在圖5中的第三個欄位則列出控制芯片中對應各個插槽的中斷路由寄存器Rx—A、Rx_B、Rxj:及Rx—D(Fl,2,3,4)的值,通過在BIOS執行開機自我測試的過程中,將這些值寫入控制芯片對應的中斷路由寄存器,即可將先前分配的中斷接腳指定給對應的插槽使用。值得一提的是,除了上述分配中斷接腳的步驟之外,在中斷接腳分配完成后,本發明還進一步根據這些中斷接腳分配到插槽的順序,串接配置在各個插槽上的硬件裝置的驅動程序(Driver)。同樣以圖5的范例為例,并請參照圖6,其列出每個中斷針腳被共用的次數、驅動程序的串接數目,以及驅動程序的串接順序。如圖6所示,對于中斷針腳PinA來說驅動程序的串接順序為插槽#1.A—插槽#3.B—插槽tt4.C,此即對應于圖5中的中斷信息INTA所被分配到的位置。若依照上述驅動程序的串接順序,則可進一步地計算此中斷接腳分配結果的效能。而由于在每次中斷發生時,必須依照這些驅動程序的串接順序,以逐個詢問這些驅動程序的方式來判斷這個中斷是由誰所發出,若是由串接在第1個的驅動程序發出,則只需要詢問1次就可確定,若是由串接在第2個的驅動程序發出,就需要詢問2次(包括第1個及第2個)才可確定,以此類推,而將所有串接的驅動程序可能被詢問的次數相加起來,則可代表在此中斷接腳中,判斷中斷發生對象所需花費的時間。就圖6的范例來說,中斷針腳PinA、PinB、PinC、PinD所對應串接的驅動程序數目為3、3、2、2。因此,各個中斷針腳在確定中斷發生對象所需詢問的次數則分別是1+2+3=6、1+2+3=6、1+2=3及1+2=3,而總共的詢問次數為6+6+3+3=18。此值若與現有的圖3的范例做比較,現有的分配結果需要詢問的次數為20。由此可知,采用本案的分配方法所得到的分配結果至少較現有方法快上10%。值得一提的是,上述計算方法是以在一段時間內,每支中斷接腳皆具有相同的中斷發出次數的前提下來計算分配結果的效能,當然,熟知本領域技術人員也可依據每支中斷接腳所發出的中斷次數,適當加入權重值以取得更精確的分析結果。另外,值得注意的是,對于某些接口卡來說,依其特性必須使用固定的中斷接腳。舉例來說,如果錄音卡在播放或錄制文件的同時需要一個中斷需求,但卻因為有其他接口卡占用了中斷接腳,因而造成錄音卡的中斷需求并沒有被立即處理,還需等待中斷控制器詢問判斷哪一個才是真正提出中斷需求的裝置,這樣將會導致錄音卡遺失取樣,而造成像是噪音或爆音的干擾。針對此點,本發明也有對應的作法,也就是當配置在某一插槽上的硬件裝置的規格只能使用固定的中斷接腳時,則在排序插槽時,先將插槽所使用到的中斷接腳的數目扣除固定的中斷接腳的數目后,再排序這些插槽。除此之外,在實際分配中斷接腳時,也會先保留固定的中斷接腳給對應的插槽的寄存器使用,而在輪流分配中斷接腳時,在分配到此固定的中斷接腳時,先跳過此中斷接腳。最后則根據這些中斷接腳分配到各個插槽的順序,串接配置在各個插槽上的硬件裝置的驅動程序(Driver)。通過上述作法,即能將有"即時需求"的特定硬件裝置的驅動程序串接在最前面,而每當這些中斷接腳發出中斷請求時,系統第1個詢問的驅動程序就是此特定硬件裝置,因此可以即時反應此特定硬件裝置所做出的中斷請求,避免延遲或降低此特定硬件裝置的效能。舉例來說,圖7是依照本發明另一較佳實施例所繪示的中斷接腳的分配表格。請參照圖7,本實施例與前個實施例不同的是,插槽#2必須使用第2支中斷針腳,而插槽tt3必須使用第3支中斷針腳。據此,本實施例來排序各個插槽時,即將此"特定中斷針腳"的數目自原本插槽所使用到的中斷接腳的數目中扣除后,再進行排序。由圖7可知,插槽tt2在扣除第2支中斷針腳后,所使用的中斷針腳數目為1,而插槽#32在扣除第3支中斷針腳后,所使用的中斷針腳數目為2。以此中斷針腳數目下去排序之后,各個插槽的順序仍舊是插槽#1、插槽tt2、插槽tt3、插槽tt4。此時即可開始分配中斷接腳。一開始分配第l支中斷接腳,由于尚未有人使用,因此就分配到插槽ttl。然而,當分配第2支中斷接腳時,則由于此中斷接腳已先被插槽tt2占用,因此就跳過第2支中斷接腳,繼續分配第3支中斷接腳。同樣地,由于此中斷接腳已先被插槽#3占用,因此就跳過第3支中斷接腳,而繼續分配第4支中斷接腳。由于此第4支中斷接腳尚未有人使用,因此可以分配到插槽ffi。以此類推,繼續分配中斷接腳至其余的插槽,直到所有插槽對應的中斷路由寄存器均被分配到中斷接腳為止。而在分配完中斷接腳后,下一步則同樣是根據這些中斷接腳分配到插槽的順序,串接配置在各個插槽上的硬件裝置的驅動程序。請參照圖8,對于中斷針腳PinA來說驅動程序的串接順序仍舊是插槽ttl.A—插槽M.B—插槽tt4.C;另外,對于中斷針腳PinB來說驅動程序的串接順序則也還是插槽tt2.A—插槽#3.C—插槽糾.D;然而,對于中斷針腳PinC來說驅動程序的串接順序則已改變為插槽tt3.A—插槽糾.A。此即代表插槽tt3可優先使用中斷針腳PinC,而不會有被人搶占而延遲執行的情況發生。綜上所述,本發明的動態分配中斷接腳的方法至少具有下列優點1.將中斷接腳平均分配給各個插槽使用,可避免多個插槽同時使用同一個中斷接腳而造成資源分配不均的情況。2.平均分配中斷接腳可縮短査詢硬件裝置的驅動程序的次數,能夠提高中斷處理的效率。3.依照特別需要優先使用中斷接腳的插槽的需求,將配置在此插槽的硬件裝置的驅動程序串接在最前頭,避免中斷接腳遭人占用或是査詢時間過長造成中斷處理延遲的情況。本發明采用將使用中斷接腳的插槽先排序后再平均分配中斷接腳的結構,因此可避免多個插槽同時使用同一個中斷接腳而造成資源分配不均的情況。此外,在分配完中斷接腳后,還包括根據中斷接腳分配到各個插槽的順序,串接配置在各個插槽上的硬件裝置的驅動程序,而能夠將中斷接腳優先提供給特定的插槽使用,解決中斷接腳被人占用而造成中斷處理延遲的問題。雖然本發明已以較佳實施例揭示如上,然其并非用以限定本發明,任何熟習此技藝者,在不脫離本發明的精神和范圍內,當可作些許更動與潤飾,因此本發明的保護范圍當以權利要求所界定的為準。權利要求1.一種動態分配中斷接腳的方法,適于分配一控制芯片的多個中斷接腳,該路由方法包括下列步驟讀取一硬件路由表格,并從中找出有使用到該些中斷接腳的多個插槽;依照該些插槽所使用到的該些中斷接腳的數目,將該些插槽進行排序;以及由排序在前的該插槽開始,針對該控制芯片中對應該些插槽的多個寄存器輪流分配該些中斷接腳,而每當該些中斷接腳的分配輪完一次后,再從頭輪回一次,直到所有插槽的該些寄存器皆有分配到該中斷接腳為止。2.如權利要求1所述的動態分配中斷接腳的方法,其特征在于,每一該些插槽上配置有一硬件裝置。3.如權利要求2所述的動態分配中斷接腳的方法,其特征在于,該些硬件裝置包括接口卡。4.如權利要求2所述的動態分配中斷接腳的方法,其特征在于,還包括根據該些中斷接腳分配到各該些插槽的順序,串接配置在各該些插槽上的該硬件裝置的一驅動程序。5.如權利要求2所述的動態分配中斷接腳的方法,其特征在于,當配置在某一插槽上的該硬件裝置的規格只能使用固定的該中斷接腳時,則在排序該些插槽時,先將該插槽所使用到的該些中斷接腳的數目扣除固定的該些中斷接腳的數目后,再排序該些插槽。6.如權利要求5所述的動態分配中斷接腳的方法,其特征在于,在分配該些中斷接腳時,還包括保留固定的該中斷接腳給對應的該插槽的該寄存器使用;以及輪流分配該些中斷接腳,并在分配到固定的該中斷接腳時,跳過該中斷接腳。7.如權利要求1所述的動態分配中斷接腳的方法,其特征在于,該些中斷接腳包括連接至一可編程中斷控制器及一輸入輸出先進可編程中斷控制器其中之一。8.如權利要求1所述的動態分配中斷接腳的方法,其特征在于,依照該些插槽所使用到的該些中斷接腳的數目,將該些插槽進行排序的方式包括由小至大排序。9.如權利要求1所述的動態分配中斷接腳的方法,其特征在于,該控制芯片包括北橋芯片及南橋芯片其中之一。IO.如權利要求1所述的動態分配中斷接腳的方法,其特征在于,該些插槽包括協議控制信息總線插槽、協議控制信息快捷總線插槽及工業標準體系結構總線插槽其中之一。全文摘要本發明公開了一種動態分配中斷接腳的方法,適于分配一個控制芯片的多個中斷接腳。此方法首先讀取硬件路由表格,并從中找出有使用到中斷接腳的多個插槽。接著依照這些插槽所使用到的中斷接腳的數目,將這些插槽進行排序。然后則由排序在前的插槽開始,針對控制芯片中對應這些插槽的多個寄存器輪流分配中斷接腳,而每當這些中斷接腳的分配輪完一次后,再從頭輪回一次,直到所有插槽的寄存器皆有分配到中斷接腳為止。文檔編號G06F13/20GK101206627SQ200610171198公開日2008年6月25日申請日期2006年12月21日優先權日2006年12月21日發明者盧盈志申請人:英業達股份有限公司