两级中断服务例程的制作方法

文档序号:6453881阅读:201来源:国知局
专利名称:两级中断服务例程的制作方法
技术领域
本揭示内容通常涉及中断处理例程,且更特定而言涉及处理器中的两级中断处理 例程。
背景技术
计算系统(例如,服务器、台式计算机和例如便携式计算机、移动电话、个人数 字助理和类似装置的移动装置)通常包含 一个或一个以上处理器、易失性和非易失 性存储器、控制器、和外围装置,例如键盘、小键盘、鼠标、显示器、耳机等。计算 系统的各种组件经由一个或一个以上系统和/或外围总线互连,通过所述一个或一个以 上系统和/或外围总线,在外围装置与包含在所述系统中的处理器之间传送数据、地址 和/或控制信息。
当外围装置需要服务时,所述装置可启动中断信号。中断致使系统处理器暂时停 止正常程序流以服务中断请求。通常,中断控制器按优先序排列并处理外围装置产生 的各种中断信号。因此,中断控制器用作外围装置与系统处理器之间的接口。因此, 系统处理器不负担与管理、按优先序排列和调度各种外围装置产生的中断请求相关联 的低级任务。因为系统处理器最初未直接与外围装置介接,因此当服务中断请求时, 必须向处理器提供地址或其它信息以用于识别对应于请求服务的外围装置的中断服务
例程(ISR) 。 ISR服务由特定外围装置产生的中断。通常,在存储器中维持多个ISR, 每一者均与不同的外围装置相关联。
在一个常规方法中,经由系统总线将与ISR相关联的地址传递到系统处理器。特 定而言,中断控制器向系统处理器发出中断请求。在适当的时间,系统处理器确认所 述请求。此初始中断请求和确认信号通常通过直接在中断控制器与系统处理器之间延 伸的信号线发生。在确认中断请求之后,系统处理器执行共用中断处理程序例程(通 常称为第一级中断处理程序(FLIH)例程)来处理所有中断共有的任务。例如,FLIH 例程可保存被中断的指令或例程的状态、确定处理特定中断和调度具体装置ISR (通 常称为第二级中断处理程序(SLIH)例程)的执行所需的动作。SLIH例程处理与特 定外围装置相关联的中断。系统处理器通过访问与从中断控制器接收的地址信息相关 联的存储器位置来起始SLIH例程。
中断控制器经由系统总线向系统处理器提供ISR地址信息。经由系统总线传送 ISR地址信息延迟系统处理器起始特定SLIH例程。取决于计算系统内发生的特定活
动,与经由系统总线获得ISR地址信息相关联的延迟可能非常长。例如,如果系统处 理器正在从存储器读取或向存储器写入大量数据或正在服务其它外围装置,可显著地 延迟为获得地址信息目的的对系统总线的访问。
第二常规方法消除与经由系统总线向系统处理器传送ISR地址信息相关联的延 迟。特定而言,经由专门总线将地址信息从中断控制器直接传递到系统处理器。例如, ARM控股有限公司(ARM Holdings plc)提供具有用于将ISR地址信息从中断控制器 直接传递到系统处理器的专门总线的矢量中断控制器(Vectored Interrupt Controller)
(零件号PL192,文件参考编号ARMDDI0273A)。因此,系统处理器可更快地起始 对应的SUN例程。
然而,系统处理器通常并不将ISR地址信息局部地存储在处理器内以供随后使用。 相反,当常规处理器通过专门总线从中断控制器接收ISR地址信息时,其在不先执行 共用FLIH例程的条件下立即起始对应的SLIH例程。g卩处理器在不执行共用FLIH 代码的条件下立即跳到与特定SLIH例程相关联的存储器位置。因此,每一SLIH例程 必须含有共用第一级中断处理代码,其是复制的、无效的,增加错误的相似性且减少 代码的可移植性。

发明内容
根据本文中所教示的方法和设备,提出一种提供两级中断服务的处理器。在一个 或一个以上实施例中,所述处理器包括存储装置和中断处理程序。所述存储装置经配 置以存储对应于中断请求的中断识别符。所述中断处理程序经配置以辨别所述中断请 求、响应于辨别所述中断请求而起始共用中断服务例程且随后起始对应于所述戶万存储 的中断识别符的中断服务例程。
因此,在一个实施例中,处理器通过以下步骤来服务中断辨别中断请求,保存 对应于所述中断请求的中断识别符、响应于辨别所述中断请求而起始共用中断服务例 程和随后起始对应于所述所保存的中断识别符的中断服务例程。
对应于以上本发明实施例中的设备和方法, 一种补充计算机程序产品包含在用于 由处理器来服务中断的计算机可读媒体中,所述补充计算机程序产品包括程序指令, 其用于辨别中断请求、保存对应于所述中断请求的中断识别符、响应于辨别所述中断 请求而起始共用中断服务例程和随后起始对应于所述所保存的中断识别符的中断服务 例程。
当然,本揭示内容并非局限于以上特征。在阅读以下详细说明且观看附图之后, 所属领域的技术人员将认识到额外特征。


图1是图解说明包含中断处理程序的处理器的实施例的框图。图2是图解说明中断处理程序实施两级中断服务例程的程序逻辑实施例的逻辑流 程图。
图3是图解说明将所保存的中断识别符加载到程序计数器中的程序逻辑实施例的 逻辑流程图。
图4是图解说明将所保存的中断识别符加载到程序计数器中的另一程序逻辑实施
例的逻辑流程图。
图5是图解说明中断处理程序实施两级中断服务例程的另一程序逻辑实施例的逻 辑流程图。
具体实施例方式
图1图解说明包含中断处理程序12的处理器10的实施例。处理器10执行指示 处理器10采取某些行动(包含中断处理)的机器指令集合。特定而言,包含在处理器 10中的中断处理器程序12服务处理器10接收的中断请求。伴随确认中断请求,中断 处理程序12接收来自中断控制器14的中断识别符(IRQ.ID) , S卩地址或与请求服 务的外围装置(未显示)相关联的其它信息。中断处理程序12将中断识别符保存在处 理器10中,例如,通过将中断识别符存储在包含在处理器10中的若干处理器寄存器 16中的一者中或存储器18中。响应于中断请求,处理器10结束或暂停当前正在执行 的任何指令或其一部分。
当响应于中断请求时,中断处理程序12执行共用中断服务例程(ISR)(通常称 为第一级中断处理程序(FLIH)例程)以处理所有中断共有的任务。例如,共用FLIH 例程可包含停用较低优先级中断、启用用于服务的较高优先级中断、识别所述中断请 求的原因、将对应于处理器10的状态的信息保存到栈上和调度具体装置ISR的执行中 的一者或一者以上。在调用FLIH例程之后,中断处理程序12随后起始具体装置ISR (通常称为第二级中断处理程序(SLIH)例程)以用于处理由一个或多个特定外围装 置发出的中断请求。由于中断识别符被保存在处理器10中,因此中断处理程序12可 先开始执行共用FLIH例程且然后随后执行对应于所保存的中断识别符的SLIH例程, 因此使得与共用中断处理任务相关联的代码能够包含在共用FLIH例程中。
在一个实例中,处理器IO和中断控制器14经由直接链接处理器IO与控制器14 的专门通信通道20来通信。通信通道20包含通过其中断控制器14向处理器10发出 经按优先序排列的中断请求(IRQ一REQ)的链路。通信通道20进一步包含处理器10 用来确认中断控制器14的中断请求(IRQ—AGK)的链路。通信通道20还包含通过其 将中断识别符(IRQ一ID)从中断控制器14传输到处理器10的链路或总线。可在减少 数目的信号线上多路复用中断请求和确认信号以及中断识别符。不管处理器10如何接 收中断识别符,中断处理程序12在已调用共用FLIH例程之后使用所获得的中断识别 符来随后起始具体装置的SLIH例程。
在操作中,处理器10从外部存储器22检索指令和对应数据。处理器10执纟亍指 令并将结果存储到外部存储器22。在不受限制的实例中,处理器存储器18(例如,高 速缓冲存储器)存储经由总线接口单元24从外部存储器22检索的地址和数据信息。 处理器10进一步包含用于执行例如中断处理的程序指令的一个或一个以上执行单元 26。例如,执行单元26可包括一个或一个以上指令单元、完成单元、分支单元、浮点 单元、整数单元和加载/存储单元。
处理器IO还包含寄存器16,例如用于存储上下文数据、栈指针、旗标等的通用 和专用寄存器28、 30。栈指针响应于处理器10将上下文从当前正在执行的一个程序 切换到另一程序而指示处理器存储器18中用于保存上下文数据的区域,例如处理器存 储器18中当处理器10暂时停止程序来服务中断请求时用于保存上下文数据的区^L 处理器10进一步包含程序计数器32 (也称作指令定序器、指令指针或任务寄存器) 用于指定待执行的下一指令的地址。包含在处理器10中的中断处理程序12可包括根 据在软件(或固件)中实施的计算机程序指令来配置的一个或一个以上数字处理电路。 例如可通过执行单元26与和处理器10相关联的其它处理和控制功能共享此电路。所 属领域的技术人员将了解处理器10可包括单一微处理器、多核微处理器或嵌在同一系 统中的多个微处理器,所述多个微处理器中的一者或一者以上可为经管线化和/或超标
当外围装置(未显示)需要服务时,其向中断控制器14发出中断请求。中断控 制器14监视中断请求的外围装置且按优先序排列并处理从外围装置接收的各种中断 请求。中断控制器14向处理器10发送经按优先序排列的中断请求(IRQ_REQ)以指 示外围装置请求服务。另外,中断控制器14向处理器10提供与请求中断服务的外围 装置相关联的中断识别符(IRQJD)。包含在处理器10中的中断处理程序12服务从 中断控制器14接收的中断请求。
图2图解说明中断处理程序12服务中断请求的程序逻辑。中断处理以中断处理 程序12辨别中断请求"开始"(步骤100)。在一个实例中,中断处理程序12响应 于中断控制器14向处理器10发出中断请求(IRQ一REQ)而辨别中断请求。当处理器 IO准备服务所述请求时,中断处理程序12发出中断确认(IRQ_ACK)。响应于中断 确认,中断控制器14向处理器10传输与请求服务的外围装置相关联的中断识别符 (IRQ—ID)。
中断处理程序12将中断识别符保存在处理器10中供以后使用(步骤102)。例 如,中断识别符可存储在通用或专用寄存器28、 30中的一者中或存储在处理器存储器 18中。如果保存在所述通用或专用寄存器28、 30中的一者中,那么暂时分配一个寄 存器用于存储装置中断识别符。另一选择是,专门寄存器34可存储中断识别符。不管 哪种存储媒体,所保存的中断识别符都是可用的以供中断处理程序12以后使用来起始 适合请求服务的外围装置的SLIH例程。由于中断识别符被保存在处理器10中,因此 中断处理程序12在其开始服务中断请求时不需要立即跳到适合的SLIH例程。相反,
中断处理程序12可在起始适合的SLIH例程之前先起始共用FLIH例程的执行(步骤 104)。因此,与共用中断处理任务相关联的代码可包含在单一FLIH例程中而不是处 理器10支持的每一SLIH例程中,因此最小化错误、增加中断服务性能且改良代码可 移植性。
在已调用共用FLIH例程之后,中断处理程序12随后通过致使处理器10跳到维 持适合的SLIH例程的存储器地址来起始适合的SLIH例程(步骤106)。在一个实例中, 所保存的中断识别符包括在外部存储器22中或处理器存储器18中维持适合的SLIH 例程的地址。因此,中断处理程序12将中断识别符加载到如图3的步骤108所图解说 明的程序计数器32中,例如,通过发出用中断识别符加载程序计数器32的指令。在 某些情况下,中断识别符可需要地址转换以使得用适当形式的地址信息对程序计数器 32进行加载。无论如何,处理器10随后跳到与加载在程序计数器32中的中断识别符 相关联的存储器地址,如图3的步骤110所图解说明。
在另一实例中,所保存的中断识别符包括唯一识别请求服务的外围装置的其它信 息。因此,中断处理程序12使用所保存的中断识别符来在处理器存储器18或外部存 储器22中(例如在查表中)査找对应于所述中断识别符的存储器地址,如图4的步骤 112所图解说明。然后,中断处理程序12通过用所获得的存储器地址来对程序计数器 32进行加载来起始适合的SLIH例程,如图4的步骤114所图解说明。然后,处理器 10跳到加载在程序计数器32中的存储器地址,如图4的步骤116所图解说明。不管 中断识别符的内容如何,一旦所存储的中断识别符已用来起始对应SUN例程中断处理 程序12就可从处理器10中删除所存储的中断识别符。
图5图解说明当中断处理程序12正服务先前中断请求时,服务处理器IO接收的 随后中断请求(例如,嵌套中断请求)的程序逻辑。以在中断处理程序12正服务先前 中断请求时所述中断处理程序12辨别随后中断请求来"开始"处理(步骤200)。作 为中断请求/确认过程的一部分,处理器IO从中断控制器14接收与随后请求服务的外 围装置相关联的中断识别符。中断处理程序12将中断识别符保存在处理器10中以供 以后使用(步骤202)。在不受限制的实例中,通过用对应于随后中断请求的中断识 别符来盖写所存储的对应于先前中断请求的中断识别符来保存随后中断识别符。
中断处理程序12在起始适合新保存的中断识别符的SLIH例程之前先开始共用 FLIH例程的执行(步骤204)。在一个实施例中,例如,当随后中断请求具有比先前 中断请求高的优先级时,中断处理程序12暂停与先前中断请求相关联的SLIH例程并 起始共用FLIH例程。在另一实施例中,例如,当随后中断请求具有与先前中断请求 相同或比其低的优先级时,中断处理程序12在起始共用FLIH例程之前允许与先前中 断请求相关联的SLIH例程来完成执行。
无论如何,在已响应于随后中断请求而调用共用FLIH例程之后,中断处理程序 12接着通过致使处理器10跳到其中维持适合的SLIH例程的存储器地址来起始与新存 储的中断识别符相关联的SLIH例程(步骤208)。在一个实例中,新保存的中断识别
符包括在外部存储器22或处理器存储器18中维持适合的SLIH例程的地址。在另一 实例中,新保存的中断识别符包括唯一识别请求服务的外围装置的其它信息。无论如 何,中断处理程序12使用新保存的中断识别符来起始如先前所述的对应SLIH例程。 考虑到上述变化形式及应用的范围,应了解本发明不受上述说明的限制,也不受 附图的限制。相反,本发明仅受所附权利要求书及其合法等效物的限制。
权利要求
1、一种通过处理器来服务中断的方法,其包括辨别中断请求;保存对应于所述中断请求的中断识别符;响应于辨别所述中断请求而起始共用中断服务例程;及随后起始对应于所述所保存的中断识别符的中断服务例程。
2、 如权利要求1所述的方法,其中保存所述中断识别符包括将所述中断识别符 保存在包含在所述处理器中的寄存器中。
3、 如权利要求1所述的方法,其中起始所述共用中断服务例程包括起始以下中 的至少一者调度所述中断请求的执行、停用较低优先级中断、启用用于服务的较高 优先级中断、识别所述中断请求的原因和响应于辨别所述中断请求而保存对应于所述 处理器的状态的信息。
4、 如权利要求1所述的方法,其中随后起始对应于所述所保存的中断识别符的 所述中断服务例程包括随后跳到与所述所保存的中断识别符相关联的存储器地址。
5、 如权利要求4所述的方法,其中随后跳到与所述所保存的中断识别符相关联 的所述存储器地址包括随后将与所述所保存的中断识别符相关联的所述存储器地址加载到所述处理器 的程序计数器中;及跳到加载在所述程序计数器中的所述存储器地址。
6、 如权利要求5所述的方法,其中随后将与所述所保存的中断识别符相关联的 所述存储器地址加载到所述程序计数器中包括随后使用所述所保存的中断识别符来査找所述存储器地址;及 将所述存储器地址加载到所述程序计数器中。
7、 如权利要求5所述的方法,其中随后将与所述所保存的中断识别符相关联的所述存储器地址加载到所述程序计数器中包括将所述所保存的中断识别符加载到所述 程序计数器中。
8、 如权利要求1所述的方法,其进一步包括在已起始对应于所述所保存的中断识别符的所述中断服务例程之后删除所述所保存的中断识别符。
9、 如权利要求1所述的方法,其进一步包括 辨别随后中断请求;保存对应于所述随后中断请求的中断识别符;响应于辨别所述随后中断请求而起始所述共用中断服务例程;及 在已响应于辨别所述随后中断请求而起始所述共用中断服务例程之后起始对应 于随后所保存的中断识别符的中断服务例程。
10、 如权利要求9所述的方法,其中响应于辨别所述随后中断请求而起始所述共 用中断服务例程包括在已完成先前中断服务例程之后起始所述共用中断服务例程。
11、 如权利要求9所述的方法,其中保存所述随后中断识别符包括用对应于戶万述 随后中断请求的所述中断识别符来盖写对应于所述先前中断请求的所述所保存的中断 识别符。
12、 一种处理器,其包括存储装置,其经配置以存储对应于中断请求的中断识别符;及中断处理程序,其经配置以辨别所述中断请求、响应于辨别所述中断请求而起始 共用中断服务例程和随后起始对应于所述所存储的中断识别符的中断服务例程。
13、 如权利要求12所述的处理器,其中所述存储装置包括包含在所述处理器中 的寄存器。
14、 如权利要求12所述的处理器,其中所述中断处理程序经配置以通过起始以下中的至少一者来起始所述共用中断服务例程调度所述中断请求的执行、停用较低优先级中断、启用用于服务的较高优先级中断、识别所述中断请求的原因且响应于辨 别所述中断请求而保存对应于所述处理器的状态的信息。
15、 如权利要求12所述的处理器,其中所述中断处理程序经配置以通过随后跳 到与所述所存储的中断识别符相关联的存储器地址来随后起始对应于所述所存储的中 断识别符的所述中断服务例程。
16、 如权利要求15所述的处理器,其中所述中断处理程序经配置以通过随后将 与所述所保存的中断识别符相关联的所述存储器地址加载到所述处理器的程序计数器 中且跳到加载在所述程序计数器中的所述存储器地址来随后跳到与所述所保存的中断 识别符相关联的所述存储器地址。
17、 如权利要求16所述的处理器,其中所述中断处理程序经配置以通过随后使 用所述所保存的中断识别符查找所述存储器地址且将所述存储器地址加载到所述程序 计数器中来随后将与所述所保存的中断识别符相关联的所述存储器地址加载到所述程 序计数器中。
18、 如权利要求16所述的处理器,其中所述中断处理程序经配置以通过将所述 所保存的中断识别符加载到所述程序计数器中来随后将与所述所保存的中断识别符相 关联的所述存储器地址加载到所述程序计数器中。
19、 如权利要求12所述的处理器,其中所述中断处理程序进一步经配置以在已 起始对应于所述所保存的中断识别符的所述中断服务例程之后删除所述所保存的中断 识别符。
20、 如权利要求12所述的处理器,其中所述存储装置进一步经配置以存储对应 于随后中断请求的中断识别符且所述中断处理程序进一步经配置以辨别所述随后中断 请求、响应于辨别所述随后中断请求而起始所述共用中断服务例程且在已响应于辨别 所述随后中断请求而起始所述共用中断服务例程之后起始对应于随后所保存的中断识 别符的中断服务例程。
21、 如权利要求20所述的处理器,其中所述中断处理程序经配置以通过在已完 成所述先前中断服务例程之后起始所述共用中断服务例程来响应于辨别所述随后中断 请求而起始所述共用中断服务例程。
22、 如权利要求20所述的处理器,其中所述存储装置经配置以通过用对应于所 述随后中断请求的所述中断识别符来盖写对应于所述先前中断请求的所述所存储的中 断识别符来存储所述随后中断识别符。
23、 一种计算机程序产品,其包含在由处理器服务中断的计算机可读媒体中,所 述计算机程序产品包括用于辨别中断请求的程序指令;用于保存对应于所述中断请求的中断识别符的程序指令; 用于响应于辨别所述中断请求而起始共用中断服务例程的程序指令;及用于随后起始对应于所述所保存的中断识别符的中断服务例程的程序指令。
24、 如权利要求23所述的计算机程序产品,其中所述用于随后起始对应于0f述 所保存的中断识别符的所述中断服务例程的程序指令包括用于随后跳到与所述所保存的中断识别符相关联的存储器地址的程序指令。
25、 如权利要求24所述的计算机程序产品,其中所述用于随后跳到与所述所保 存的中断识别符相关联的所述存储器地址的程序指令包括用于随后将与所述所保存的中断识别符相关联的所述存储器地址加载到所述处 理器的程序计数器中的程序指令;及用于跳到加载在所述程序计数器中的所述存储器地址的程序指令。
26、 如权利要求25所述的计算机程序产品,其中所述用于随后将与所述所保存的中断识别符相关联的所述存储器地址加载到所述程序计数器中的程序指令包括用于随后使用所述所保存的中断识别符查找所述存储器地址的程序指令;及 用于将所述存储器地址加载到所述程序计数器中的程序指令。
27、 如权利要求25所述的计算机程序产品,其中所述用于随后将与所述所保存 的中断识别符相关联的所述存储器地址加载到所述程序计数器中的程序指令包括用于 将所述所保存的中断识别符加载到所述程序计数器中的程序指令。
28、 如权利要求23所述的计算机程序产品,其进一步包括用于在己起始对应于 所述所保存的中断识别符的所述中断服务例程之后删除所述所保存的中断识别符的程 序指令。
29、 如权利要求23所述的计算机程序产品,其进一步包括 用于辨别随后中断请求的程序指令;用于保存对应于所述随后中断请求的中断识别符的程序指令; 用于响应于辨别所述随后中断请求而起始所述共用中断服务例程的程序指令;及 用于在已响应于辨别所述随后中断请求而起始所述共用中断服务例程之后起始 对应于随后所保存的中断识别符的中断服务例程的程序指令。
全文摘要
一种处理器提供两级中断服务。在一个实施例中,所述处理器包括存储装置和中断处理程序。所述存储装置经配置以存储对应于中断请求的中断识别符。所述中断处理程序经配置以辨别所述中断请求、响应于辨别所述中断请求而起始共用中断服务例程和随后起始对应于所述所存储的中断识别符的中断服务例程。
文档编号G06F9/48GK101390057SQ200780006098
公开日2009年3月18日 申请日期2007年2月23日 优先权日2006年2月24日
发明者托马斯·安德鲁·萨托里乌斯, 斯蒂芬·G·盖斯特, 格雷戈里·李·布鲁克希尔, 理查德·艾伦·穆尔, 罗德尼·韦恩·史密斯, 詹姆斯·诺里斯·迪芬德尔费尔, 迈克尔·埃戈挪亚·比伦巴赫 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1