专利名称:用于自动硬件中断处理的系统和方法
技术领域:
本发明的实施例一般地涉及微处理器,并且特别涉及中断处理。
背景技术:
在计算机处理环境内,中断是中止正常程序执行的事件。程序通常在微处理器上以有序方式执行。典型的执行被明确地使程序流偏离的指令改变,例如,跳转指令和分支指令。中断干扰正常的指令执行。通常,基于中断的检测,已知为中断处理程序或中断服务例程的特殊程序被执行,该特殊程序内容切换所述系统。内容切换包括存储处理器的状态 (例如,内容)、服务所述中断、以及再次存储处理的内容,从而使指令的执行可以自中断之前的点重新开始。内容切换的处理要求大量处理器周期,在所述处理器周期中,处理器执行中断服务例程。这种中断服务例程通常清理处理器的流水线(pipeline)并且保存存储器中的多个状态寄存器。当程序的复杂度增大时,耗时地执行中断服务例程降低了可用于其他程序功能的处理器资源的可用性。
发明内容
本部分的目的在于概述本发明的一些方面并且简短地介绍本发明的一些实施例。 可进行简化或省略以避免模糊本部分的目的。这种简化或省略不意图限制本发明的范围。因此,需要的是以更实时和有效的方式服务中断请求的方法和系统。在本发明的一个实施例中,提供了一种处理系统,该系统包括中断引脚、多个寄存器、堆栈指针和自动中断系统。所述多个寄存器存储多个处理器状态值。当系统在中断引脚上检测到中断时,所述系统准备进入异常模式,其中自动中断系统获取中断向量、更新堆栈指针、并且在执行中断服务例程之前,自寄存器并行地读取处理器状态值并基于更新的堆栈指针将所述处理器状态值存储在存储器位置中。在本发明的另一个实施例中,提供了一种方法,该方法包括接收中断请求、获取中断向量、并行读取多个处理器状态值、并且在准备进入异常模式并且在执行中断服务例程之前,在由更新的堆栈寄存器指定的存储器位置中存储所述多个存储器状态值。在本发明的进一步的实施例中,提供了一种非临时计算机可读存储介质,其包括用于生成处理器的计算机可读程序代码,其中所述程序代码包括生成中断引脚的计算机可读代码、生成存储多个处理器状态值的多个寄存器的计算机可读代码、生成堆栈指针的计算机可读代码、以及生成自动中断系统的计算机可读代码。所述自动中断系统检测中断引脚上的中断并且获取中断向量、更新堆栈指针、并且在执行中断服务例程之前,自寄存器并行读取多个处理器状态值并且将这些值存储在由更新的堆栈指针指定的存储器位置中。以下将参考附图详细说明这些以及其他实施例和特征以及各个实施例的结构和操作。本发明不限于本文说明的具体实施例。这些实施例在本文中仅以说明性目的呈现。 基于本文包含的信息,额外的实施例对相关领域技术人员将是显然的。
现在将参考附图仅以示例的方式说明本发明的实施例,在附图中,相应的附图标记表示相应的部件。进一步地,并入本文并且构成说明书一部分的
了本发明的实施例,并且与说明书一起进一步用于解释本发明的原理并使相关领域技术人员能制造并且使用本发明。图1是根据本发明的一个实施例的处理系统的框图。图2说明了根据本发明的一个实施例的中断控制寄存器的格式。图3A-3L呈现了根据本发明的一个实施例的中断控制寄存器内的寄存器的寄存器字段说明。图4说明了根据本发明的一个实施例的状态控制寄存器的格式。图5A-5T呈现了根据本发明的一个实施例的状态控制寄存器内的寄存器的寄存器字段说明。图6说明了根据本发明的一个实施例的SRS控制寄存器的格式。图7A-7J呈现了根据本发明的一个实施例的SRS控制寄存器内的寄存器的寄存器字段说明。图8说明了根据本发明的一个实施例的Cause寄存器的格式。图9A-9N呈现了根据本发明的一个实施例的Cause寄存器内的寄存器的寄存器字段说明。图10说明了根据本发明的一个实施例的异常程序计数寄存器的格式。图11呈现了根据本发明的一个实施例的异常程序计数寄存器内的寄存器的寄存器字段说明。图12说明了根据本发明的一个实施例的配置寄存器的格式。图13A-13W呈现了根据本发明的一个实施例的配置寄存器内的寄存器的寄存器字段说明。图14说明了根据本发明的一个实施例的中断返回指令的布局和命名。图15是根据本发明的一个实施例的用于自动硬件中断处理的方法的流程图。当结合附图时,各个实施例的特征将通过以下提出的具体实施方式
变得更为显然,在全部附图中,相同附图特征表征相应的元件。在附图中,相同附图标记一般表示等同的、功能类似的和/或结构类似的元件。首次出现某个元件的附图以相应的附图标记中最左面的数字表示。
具体实施例方式本发明将通过本发明的各个“实施例”的以下说明被更好地理解。因此,具体的“实施例”是本发明的见解,但每个具体的“实施例”本身不代表整个发明。在许多情况下,来自一个特定的实施例的独立元件可以在实现类似或相应功能的另一个实施例中被替换为不同元件。期望的是获得了本文提供的教导的本领域技术人员将意识到在本发明的范围内的额外的改进、应用和实施例并且意识到本发明具有明显的实用性的额外的领域。本文说明的实施例在说明书中被称作“一个实施例”、“一实施例”、“一个示例性实施例”等。这些参考表示所说明的实施例可以包括特定的特征、结构或特性,但每个实施例不必须包括每个所说明的特征、结构或特性。进一步地,当结合一个实施例说明特定的特征、结构或特性时,将理解结合其他实施例(无论其是否被清楚地说明)改变这种特征、结构或特性在本领域技术人员的知识范围内。I.自动硬件中断处理图1是根据本发明的一个实施例的处理系统100的框图,该处理系统100包括用于自动硬件中断处理的系统。系统100包括耦接到中断控制器102的处理器110,其中中断控制器102连接到多个中断线路104。中断控制器102区分中断104的优先级并且使用中断线路106向处理器110生成中断请求。中断控制器还可以将中断向量108传递到处理器 110。在处理器110内,存在异常逻辑块112、中断向量发生器116、影子寄存器组控制寄存器120、通用寄存器组IM和多个影子寄存器组126。在一个实施例中,影子寄存器组126 被替换为可以用在一些处理器操作模式(例如,核心模式和异常模式)中或响应于向量中断或异常的普通的通用寄存器(GPR) 124。一旦影子寄存器组1 被限制在特定的模式,对与该模式专用的特定影子寄存器组一起工作的GPR 124中的可寻址寄存器进行查询。处理器110内的异常逻辑块112从中断线路106接收并且确定如果存在异常的话,哪个异常将被处理。如果例如中断等异常将被处理,则异常逻辑块112发送信号114到异常向量发生器125。异常向量发生器125使用信号114产生用于处理所述异常的指令地址118。异常向量发生器125还可以直接自中断控制器102接收向量108。指令地址118 之后被发送到程序计数器逻辑109以改变指令执行流。影子寄存器组控制寄存器120包括当前影子组(CSS)寄存器121和之前影子组 (PSS)寄存器123。异常逻辑块112发送信号1 到影子寄存器组控制寄存器120和相关联的逻辑,从而切换到被分配用于待处理的异常的适当的影子寄存器组。如前所述,需要减小对中断服务请求进行服务所要求的时间。在一个实施例中,下面的表1概述了处理器110 为了开始执行中断服务例程所必须耗费的周期数量,所述中断服务例程通过使用基于软件的中断处理进行的中断(例如,中断104和114)的检测而生成。中断控制寄存器的一个可行的格式在图2中示出并且稍后将被更为详细地讨论。 中断控制寄存器内的寄存器的示例性字段说明可以在图3A-3L中找到并且稍后将被更为详细地讨论。系统400中的COPO状态寄存器的示例性格式在图4中示出。状态寄存器内的寄存器的示例性字段说明可以在根据本发明的一个实施例的系统500的图5A-5T中找到。系统600中的COPO SRSCtl寄存器的示例性格式在图6中示出。SRSCtl寄存器内的寄存器的示例性字段说明在系统700的图7A-7J中示出。系统800中的COPO Cause寄存器的示例性格式在图8中示出。Cause寄存器内的寄存器的示例性字段说明在系统900的图9A-9N中示出。系统1000中的COPO EPC寄存器的示例性格式在图10中示出。EPC寄存器内的寄存器的示例性字段说明在系统1100的图11中示出。系统1200中的COPO配置寄存器的示例性格式在图12中示出。配置寄存器内的寄存器的示例性字段说明在系统1300的图13A-13W中示出。
表1 与中断服务例程(ISR)处理相关联的时钟周期
权利要求
1.一种处理系统,包括 处理器,包括中断引脚;多个寄存器,所述多个寄存器被构造为存储多个处理器状态值; 堆栈指针;和自动中断系统,所述自动中断系统被构造为当在所述中断引脚上检测到第一中断,并且准备进入异常模式的情况下,使得 第一中断向量被获取, 所述堆栈指针被更新,并且在执行中断服务例程之前,所述多个处理器状态值被从所述多个寄存器并行地读取, 并存储到由更新的堆栈指针指定的多个存储器位置。
2.如权利要求1所述的处理系统,其中在同一个周期中完成从所述多个寄存器的并行读取和所述堆栈指针的更新。
3.如权利要求1所述的处理系统,进一步包括 推测获取系统,其被构造为推测地获取中断向量。
4.如权利要求1所述的处理系统,其中所述处理器状态值包括EPC寄存器中的值、状态寄存器中的值和影子寄存器组控制寄存器中的值。
5.如权利要求1所述的处理系统,其中在返回到非异常模式的准备中,所述自动中断系统将存储在由更新的堆栈指针指定的存储器位置中的所述多个处理器状态值并行地恢复到所述多个寄存器中。
6.如权利要求5所述的处理系统,进一步包括中断链系统,其被构造为在恢复所述处理器状态值之前处理接收到的第二中断。
7.如权利要求6所述的处理系统,其中获取第二中断向量不包括清理流水线以返回到非异常模式或第二次清理所述流水线以进入异常模式。
8.一种处理器中断处理的方法,包括 接收第一中断请求;获取第一中断向量;并行读取多个处理器状态值;以来自影子寄存器的值更新堆栈指针;以及在准备进入异常模式时并且在执行中断服务例程之前,在由更新的堆栈寄存器指定的多个存储器位置中存储所述多个处理器状态值。
9.如权利要求8所述的方法,其中在同一个周期中完成处理器状态值的并行读取和所述堆栈指针的更新。
10.如权利要求8所述的方法,其中所述获取第一中断向量被推测地完成。
11.如权利要求8所述的方法,其中所述处理器状态值包括EPC寄存器中的值、状态寄存器中的值和影子寄存器组控制寄存器中的值。
12.如权利要求8所述的方法,进一步包括在返回到非异常模式的准备中,将存储在由更新的堆栈指针指定的存储器位置中的所述多个处理器状态值并行地恢复到所述多个寄存器中。
13.如权利要求12所述的方法,进一步包括在恢复所述处理器状态值之前处理接收到的第二中断。
14.如权利要求13所述的方法,其中获取第二中断向量不包括清理流水线以返回到非异常模式或第二次清理所述流水线以进入异常模式。
15.一种非临时计算机可读存储介质,其具有包含于其上的用于生成处理器的计算机可读程序代码,所述计算机可读程序代码包括用于生成中断引脚的计算机可读代码;用于生成构造为存储多个处理器状态值的多个寄存器的计算机可读代码;用于生成堆栈指针的计算机可读代码;以及用于生成自动中断系统的计算机可读代码,所述自动中断系统被构造为检测所述中断引脚上的第一中断,其中第一中断向量被获取,所述堆栈指针被更新,并且其中在执行中断服务例程之前,所述多个处理器状态值被从所述多个寄存器并行读取并且存储到由更新的所述堆栈指针指定的多个存储器位置。
16.如权利要求15所述的非临时计算机可读存储介质,其中在同一个周期中完成从所述多个寄存器的并行读取和所述堆栈指针的更新。
17.如权利要求15所述的非临时计算机可读存储介质,进一步包括用于生成推测获取系统的计算机可读代码,所述推测获取系统被构造为推测地获取中断向量。
18.如权利要求15所述的非临时计算机可读存储介质,其中所述处理器态值包括EPC 寄存器中的值、状态寄存器中的值和影子寄存器组控制寄存器中的值。
19.如权利要求15所述的非临时计算机可读存储介质,其中在返回到非异常模式的准备中,所述自动中断系统将存储在由更新的堆栈指针指定的存储器位置中的所述多个处理器状态值并行地恢复到所述多个寄存器中。
20.如权利要求15所述的非临时计算机可读存储介质,进一步包括用于生成中断链系统的计算机可读代码,所述中断链系统被构造为在恢复所述处理器状态值之前处理接收到的第二中断。
21.如权利要求15所述的非临时计算机可读存储介质,其中获取第二中断向量不包括清理流水线以返回到非异常模式或第二次清理所述流水线以进入异常模式。
22.—种中断处理的方法,包括确定与第一中断相关联的特权级别;以自第一固定寄存器复制的值更新第一堆栈指针寄存器;将与所述第一中断相关联的值存储在第一存储器地址中由所述第一堆栈指针寄存器识别的位置处;以及不允许自工作在第二特权级别的处理访问所述第一固定寄存器,其中所述第二特权级别低于所述第一中断的所述特权级别。
23.如权利要求22所述的方法,进一步包括确定第二中断的特权级别;以自第三堆栈指针寄存器复制的值更新第二堆栈指针寄存器,所述第三堆栈指针寄存器与工作在第三特权级别的中断处理相关联,其中所述第三特权级别等于所述第二中断的所述特权级别;修改所述第二堆栈指针寄存器中的所述值;以及将与所述第二中断相关联的值存储在第二存储器地址中由所述第二堆栈指针寄存器识别的位置处。
全文摘要
本发明公开了用于自动硬件中断处理的系统和方法。提供了一种处理系统,其包括中断引脚、多个寄存器、堆栈指针和自动中断系统。所述多个寄存器存储多个处理器状态值。当所述系统在所述中断引脚上检测到中断时,所述系统准备进入异常模式,其中自动中断系统使得中断向量被获取,堆栈指针被更新,并且在执行中断服务例程之前,处理器状态值被从寄存器并行地读取并基于更新的堆栈指针存储在存储器位置中。还提供了用于自动硬件中断处理的方法。
文档编号G06F9/48GK102346688SQ20111021468
公开日2012年2月8日 申请日期2011年7月29日 优先权日2010年7月30日
发明者D·Y-M·拉尤, E·K·诺登, J·H·罗宾森 申请人:Mips技术公司