专利名称::动态分配中断接脚的方法
技术领域:
:本发明是有关于一种路由(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日发明者卢盈志申请人:英业达股份有限公司