专利名称:中断接脚的异常状态侦测方法
技术领域:
本发明涉及一种电脑系统的异常侦测方法,且特别涉及一种中断接脚的异常侦测 方法。
背景技术:
一般而言,在操作系统下,倘若在未执行其他软件而中央处理器(Center Processing Unit, CPU)却总是在忙碌状态时(例如CPU的使用率总是在接近100% ),使 用者必须通过其经验来猜测是由什么原因造成CPU为忙碌状态。
举例来说,先将所有驱动程序移除之后,再观察CPU的使用率是否恢复正常。倘 若CPU的使用率恢复正常,则再进一步寻找出是哪个驱动程序所造成。或者,将所有的装置 禁能之后,若CPU的使用率恢复正常,则再寻找是哪个装置造成。再者,若装置无法禁能, 则利用周边元件接口组态空间(PCI configuration space,PCI = Peripheral Component Interface)中的总线控制位(BUS master bit)来抑制装置的中断信号的发出。
然而,传统方法都是从表像去猜测CPU的使用率异常是由什么原因所造成,不仅 没有效率,万一装置没有驱动程序或是无法将其禁能,便无法得知是否是由装置所引起的 问题。再者,倘若是由于硬件线接错误而造成其一直发出中断信号,通过传统方法亦无法找 到其原因。发明内容
本发明提供一种中断接脚的异常状态侦测方法,以检测出发生异常的中断接脚。
本发明提出一种中断接脚的异常状态侦测方法,适于一电脑系统。异常状态侦测EfeiJI^P (Advanced Configuration And Power Interface, ACPI)表格,以取得电脑系统的各中断接脚的中断状态位;在一固定时间内,一直检查各中 断状态位是否一直维持为一特定值;当其中一中断接脚的中断状态位在固定时间内一直维 持为上述特定值时,判定此中断接脚发生异常。
在本发明的一实施例中,上述在查询ACPI表格的步骤之前,还可先判断中央处理 器的使用率是否到达一阈值,以在中央处理器的使用率到达阈值时,查询ACPI表格以进行 后续侦测异常中断接脚的步骤。
在本发明的一实施例中,上述查询ACPI表格的步骤,可查询各中断接脚的寄存器 地址,以根据寄存器地址,取得对应的中断状态位。另外,还可根据ACPI表格来取得各中断 接脚的区域接脚号码。
在本发明的一实施例中,上述在判定中断接脚发生异常的步骤之后,可将发生异 常的中断接脚的区域接脚号码转换为一全域接脚号码。接着,根据全域接脚号码取得发生 异常的中断接脚所对应的装置名称。之后,记录异常的中断接脚的装置名称、区域接脚号码 以及对应的1/0 APIC识别码。另外,在判定中断接脚发生异常之后,还可提示一异常信息。
在本发明的一实施例中,上述对应的装置名称还可通过中断接脚对应的驱动程序来取得。
在本发明的一实施例中,上述异常状态侦测方法还包括禁能发生异常的中断接 脚。
在本发明的一实施例中,上述ACPI表格包括复合高级可编程中断控制器描 述表(Multiple APIC Description Table,MADT)、区分系统描述表(Differentiated System Description Table, DSDT)以及固定高级组态与电源接口描述表(Fixed ACPI Description Table, FACP)。
基于上述,本发明通过检测中断接脚的异样,并列出异常的中断接脚以及使用此 中断接脚的装置名称。据此,可将异常的中断接脚禁能使得中央处理器的使用率恢复正常。 并且,开发人员能够通过量测中断接脚的路径找出发生异常的问题点进而将其修复。
为让本发明的上述特征和优点能还明显易懂,下面特举实施例,并配合附图作详 细说明如下。
图1是本发明一实施例的中断接脚的异常状态侦测方法的流程图。
图2是本发明一实施例的记录异常中断接脚方法的流程图。
图3是本发明一实施例的电脑系统的示意图。
图4A与图4B是本发明一实施例的ASL码的部分示意图。
主要元件符号说明
310,320 =PCI 装置;330、340 :1/0 APIC 单元;
;350:芯片;360:系统计时器;
370 =PCI 桥接器;
S105 S120 本发明一实施例的中断接脚的异常状态侦测方法各步骤;
S205 S220 本发明一实施例的记录异常中断接脚方法各步骤。
具体实施方式
在操作系统下,若在未执行其它软件而中央处理器几乎总是处于接近100%的使 用率时,使用者必须通过其经验来猜测是由什么原因造成中央处理器为忙碌状态。为此,本 发明提出一种中断接脚的异常状态侦测方法,通过检测中断接脚是否发生异常,并列出发 生异常的中断接脚及使用此中断接脚的装置名称。为了使本发明的内容还为明了,以下特 举实施例作为本发明确实能够据以实施的范例。
为了方便说明,在以下实施例中,例如是通过安装一应用软件至电脑系统的存储 单元中,以执行中断接脚的异常状态侦测方法。此应用软件例如是利用C语言、Java语言 等程序语言所撰写的,以通过电子自动化的方式完成中断接脚的异常状态侦测方法。然在 此并不以此局限其应用范围。
图1是本发明一实施例的中断接脚的异常状态侦测方法的流程图。本实施例是 用于侦测电脑系统的中断接脚是否发生异常。在本实施例中,电脑系统的操作系统是在高 级可编程中断控制器(Advanced Programmable Interrupt Controller, APIC)模式下运 行。在此,电脑系统的中央处理器内部配置有本地APIC(Local APIC)单元,此外还具有输入输出APIC(I/0 APIC)单元,通过I/0APIC单元来处理输入输出装置所发出的中断信息, 且Local APIC与I/0APIC则分别具有各自的识别码。例如,假设电脑系统具有两个Local APIC以及两个I/O APIC,则其识别码分别为0 3。
请参照图1,首先,在步骤S105中,查询高级组态与电源接口(Advanced Configuration And Power Interface,ACPI)表格,以取得电脑系统的各中断接脚的中 断状态位。在本实施例中,ACPI表格包括复合高级可编程中断控制器描述表(Multiple APIC Description Table,MADT)、区分系统描述表(Differentiated System Description Table, DSDT)以及固定高级组态与电源接口描述表(Fixed ACPI Description Table, FADT)。
其中,MADT包括各个1/0 APIC的存储器映射式输入输出(Memory-Mapped 1/0, ΜΜΙ0)的地址以及1/0 APIC的识别码。FADT包括系统控制中断信号(System Control Interrupt, SCI)的全域接脚号码(global pin number)。DSDT包括各中断接脚所对应的装置名称。
在此,可通过查询MADT而取得电脑系统中每一个1/0 APIC的MMIO地址,再通过 MMIO而分别获得各个1/0 APIC上所有中断接脚的区域接脚号码以及中断状态位。其中,每 个中断接脚都有一个对应的寄存器地址,以存放中断状态位。例如,当中断状态位为0时, 表示此中断接脚目前为闲置状态(idle status);当中断状态位为1时,表示此中断接脚目 前为未决状态(pending status)。
需要说明的是,当未执行任何软件而中央处理器处于忙碌状态时,开始执行本实 施例的异常状态侦测方法。例如,在操作系统并未执行其他软件时,判断中央处理器的使 用率是否到达一阈值(例如,90%或接近100%,可由使用者自行设定)。若操作系统并未 执行其他软件,而中央处理器的使用率已到达上述阈值,则表示目前可能出现异常状态,因 此,开始执行本实施例的异常状态侦测方法,据以找出异常的中断接脚。
接着,在取得各中断接脚的中断状态位之后,如步骤SllO所示,在一段固定时间 内,一直检查各中断状态位是否一直维持为一特定值,据以判断对应的中断接脚是否发生 异常。也就是说,依序检查每一个中断接脚是否发生异常。
当中断状态位在固定时间内一直维持为上述特定值时,如步骤S115所示,判定此 中断状态位对应的中断接脚发生异常。反之,当中断状态位在固定时间内发生变化时(例 如,中断状态位被清空),如步骤S120所示,判定此中断状态位对应的中断接脚未发生异堂巾ο
一般而言,倘若中断接脚传送中断信号而触发中央处理器,则此中断信号对应的 驱动程序便会开始执行以服务此中断信号。在合理状态之下,在经过一段固定时间之后 (表示此中断信号已被服务完毕),中断状态位会被清空。因此,若在一段固定时间内,中断 状态位持续一直维持在一特定值(例如为1)之下,即为不合理的状态。如此状况可能是对 应的装置发出的中断信号为不合理,或者是硬件接线错误而导致中断接脚不断地发出中断 信号。
举例来说,可将上述固定时间设定为0. 5秒。当中断状态位在0. 5秒内一直为1 时,代表此中断接脚的中断信号无法被服务,因此判定此中断状态位对应的中断接脚发生异常。
以下再举一实施例来说明当判定中断接脚发生异常后的处理流程。图2是本发明 一实施例的记录异常中断接脚方法的流程图。请参照图2,如步骤S205所示,在检查出异 常的中断接脚之后,将异常的中断接脚的区域接脚号码转换为全域接脚号码(global pin number)。由于ACPI的DSDT ASL code所描述的中断向量表所使用为全域接脚号码,因此 为了方便后续处理,便将区域接脚号码转换为全域接脚号码。
举例来说,图3是本发明一实施例的电脑系统的示意图。在本实施例中,周边元件 接口(Peripheral Component Interface, PCI)装置即 PCI 装置 310 与 PCI 装置 320 分别 连接至I/0APIC单元330与I/O APIC单元;340。并且,PCI装置310与PCI装置320连接 至PCI桥接器(PCI Bridge) 370。芯片350与系统定时器360连接至I/O APIC单元330。 在此,I/O APIC单元330与I/O APIC单元340的识别码分别为2与3。识别码为2的I/ 0 APIC单元330的各中断接脚,其全域接脚号码即等于区域接脚号码;而识别码为3的I/ 0 APIC单元340的各中断接脚,其全域接脚号码即是识别码为2的I/O APIC单元的接脚数目加上各区域接脚号码,如下表所示。
权利要求
1.一种中断接脚的异常状态侦测方法,适于电脑系统,该异常状态侦测方法包括查询高级组态与电源接口表格,以取得该电脑系统的多个中断接脚各自的中断状态位;在固定时间内,一直检查各所述中断状态位是否维持为特定值;以及当所述多个中断接脚其中之一的中断状态位在该固定时间内维持为该特定值时,判定 该中断接脚发生异常。
2.根据权利要求1所述的中断接脚的异常状态侦测方法,其中在查询该高级组态与电 源接口表格的步骤之前,还包括判断中央处理器的使用率是否到达阈值,以在该中央处理器的使用率到达该阈值时, 查询该高级组态与电源接口表格。
3.根据权利要求1所述的中断接脚的异常状态侦测方法,其中查询该高级组态与电源 接口表格的步骤,包括查询所述多个中断接脚各自的寄存器地址,以根据该寄存器地址,取得对应的该中断 状态位。
4.根据权利要求1所述的中断接脚的异常状态侦测方法,其中查询该高级组态与电源 接口表格的步骤,还包括取得所述多个中断接脚各自的区域接脚号码。
5.根据权利要求4所述的中断接脚的异常状态侦测方法,其中在判定该中断接脚发生 异常的步骤之后,还包括将发生异常的该中断接脚的区域接脚号码转换为全域接脚号码;以及根据该全域接脚号码取得发生异常的该中断接脚所对应的装置名称。
6.根据权利要求5所述的中断接脚的异常状态侦测方法,其中根据该全域接脚号码取 得对应的装置名称的步骤,包括通过该中断接脚对应的驱动程序取得该装置名称。
7.根据权利要求5所述的中断接脚的异常状态侦测方法,其中在判定该中断接脚发生 异常的步骤之后,还包括记录该中断接脚的该装置名称、该区域接脚号码以及对应的高级可编程中断控制器识 别码。
8.根据权利要求1所述的中断接脚的异常状态侦测方法,其中在判定该中断接脚发生 异常的步骤之后,还包括提示异常信息。
9.根据权利要求1所述的中断接脚的异常状态侦测方法,还包括禁能发生异常的该中断接脚。
10.根据权利要求1所述的中断接脚的异常状态侦测方法,其中该高级组态与电源接 口表格包括复合高级可编程中断控制器描述表、区分系统描述表以及固定高级可编程中断 控制器描述表。
全文摘要
本发明提供一种中断接脚的异常状态侦测方法。首先,查询高级组态与电源接口表格,以取得电脑系统的各中断接脚的中断状态位。之后,在一固定时间内,一直检查各中断状态位是否一直维持为一特定值。当其中一中断接脚的中断状态位在固定时间内一直维持为上述特定值时,判定此中断接脚发生异常。
文档编号G06F11/267GK102033799SQ200910179208
公开日2011年4月27日 申请日期2009年9月29日 优先权日2009年9月29日
发明者卢盈志, 李思贤 申请人:英业达股份有限公司