一种中断处理方法及流水线控制器技术

技术编号:15690539 阅读:79 留言:0更新日期:2017-06-24 03:00
本发明专利技术公开了一种中断处理方法及流水线控制器,所述中断处理方法包括以下步骤:(1)、内核接收中断请求,并获取中断向量;(2)、内核判断当前状态是否允许中断,若允许,取指单元使用中断向量对中断服务程序进行取指;(3)、内核执行中断服务程序的首条指令,并使用首条指令标识进行标识,同时,内核当前流水线上的尾部指令正常执行,所述尾部指令为内核当前流水线上位于所述中断服务程序中的首条指令之前的指令;(4)、按照中断返回寄存器中保存的返回地址进行返回。本发明专利技术的中断处理方法,响应中断不会冲刷流水线,已经取指、发射、译码、执行的指令可以继续执行,避免了这些指令的重复操作。

Interrupt processing method and pipeline controller

The invention discloses a method for processing an interrupt and line controller, the interrupt processing method comprises the following steps: (1) to receive an interrupt request, the kernel, and obtain the interrupt vector; (2), the kernel determines whether the current state allows the interrupt, if allowed, the fetch unit used to interrupt vector interrupt service program for finger; (3), the kernel executes the interrupt service program of the first instruction, and using the first logo, logo at the same time, the tail of the current instruction pipeline on the kernel normal execution, the tail instruction before the current flowing water line at the core of the interrupt service program of the first directive; (4), return the return address stored in the register in accordance with the interrupt return. The interrupt processing method of the invention can not flush the pipeline in response to interruption, and the instructions that have been taken out, transmitted, decoded and executed can continue to be executed, thus avoiding repeated operation of the instructions.

【技术实现步骤摘要】
一种中断处理方法及流水线控制器
本专利技术属于微处理器设计
,具体地说,是涉及一种中断处理方法及流水线控制器。
技术介绍
在微处理器中,中断(Interrupt)是一种重要的通信、控制方法之一。产生中断后,处理器核将暂时停止当前处理的程序,转而去响应中断请求,在完成中断服务程序之后,返回继续执行被中断的程序。中断按产生原因可分为软件中断和硬件中断。软件中断也称为例外或异常(Exception),由指令的执行状态决定,通常在指令的不同流水级可能出现不同的例外,例如在指令译码阶段发现指令非法、在Load/Store指令执行阶段发现TLB缺失、在除法指令执行时发现除数是0、在计算指令执行完毕后发现溢出,或者处理器提供软件中断/陷阱指令,提供一种类似系统调用的功能。不同例外可能在不同的流水级产生或被发现,但是其共同点是由指令产生。硬件中断是指由处理器核之外的设备在特定情况下,请求内核处理相关事务,比如在DMA完成数据搬运之后可通过中断通知内核DMA事务的结束、内核配置外设错误导致出现错误请求内核处理并重新配置,或者一些通用的中断,可配置处理器在中断产生时,运行特定的程序。中断具有不同的处理方式,通常有精确软件中断与非精确软件中断的区别。精确软件中断需要满足以下两个条件:第一,中断返回地址对应的指令之前的指令完全执行完毕,且对处理器状态进行了修改;第二,中断返回地址对应的指令及其之后的指令对处理器没有进行修改。而不满足上述两个条件的处理方式称之为非精确软件中断。一般情况下,大部分中断要求精确软件中断,只有极少数非精确软件中断中断,或者在某些处理器中没有非精确软件中断。对于例外而言,产生例外的指令的地址就是中断返回地址,硬件中断为了与软件中断统一处理,通常的处理方法是绑定一条除了某些特定指令之外的指令,当该指令运行至中断处理逻辑所在流水级时,与例外作相同处理。因为中断可能在各流水级产生,为了精确软件中断的处理,通常在最晚可能产生例外的流水级中统一处理中断,由于某些中断在指令执行完毕之后才可能被发现,所以该流水级较多选在提交/写回级(流水线最后一级)。处理器在响应中断时,通常会冲刷整个流水线,然后对中断服务程序取指。由于中断处理所在流水级已经处于整个流水线的末尾,此时对流水线冲刷将导致后续已经进行取指、译码、执行的指令被取消,当中断返回之后继续执行。这种方式对流水线的利用率很低,被冲刷的指令在中断返回之后仍然需要重新执行,既影响性能又增加功耗。
技术实现思路
本专利技术为了解决现有中断处理方法为响应中断而冲刷整个流水线,使得冗余执行造成性能损失和功耗增加的问题,本专利技术将改进处理器对中断的响应方法,最大限度的减少性能损失和功耗。为了解决上述技术问题,本专利技术采用以下技术方案予以实现:一种中断处理方法,包括以下步骤:(1)、内核接收中断请求,并获取中断向量;(2)、内核判断当前状态是否允许中断,若允许,取指单元使用中断向量对中断服务程序进行取指;(3)、内核执行中断服务程序的首条指令,并使用首条指令标识进行标识,同时,内核当前流水线上的尾部指令正常执行,所述尾部指令为内核当前流水线上位于所述中断服务程序中的首条指令之前的指令;内核执行指令过程中,当执行至该指令的最后一级时,将位于该指令之后的指令的地址进行保存,所述位于该指令之后的指令为程序若不受中断影响,该指令执行完成之后,下一条应该执行完成的指令;若内核执行的指令为中断服务程序的首条指令,当执行至该指令的最后一级时,将执行中断服务程序首条指令之前的指令时所保存的地址作为中断返回地址记录在中断返回寄存器中;(4)、中断服务程序中的所有指令执行完毕后,按照中断返回寄存器中保存的返回地址进行返回。进一步的,步骤(3)之前还包括判断中断源的类型的步骤,包括硬件中断和软件中断,若步骤(1)中所接收的中断为硬件中断,则按照步骤(3)-步骤(4)执行。进一步的,若步骤(1)中所接收的中断为软件中断,则进一步判断软件中断属于非精确软件中断还是精确软件中断,若为非精确软件中断,则按照步骤(3)-步骤(4)执行,若为精确软件中断,则步骤(2)之前还包括冲刷掉内核当前流水线上发生精确软件中断指令之后的所有指令的步骤,发生精确软件中断指令执行至最后一级时,决定如何保存地址:若该精确软件中断需要重新执行该指令,则保存该指令的地址;否则,按照步骤(3)-步骤(4)执行。进一步的,步骤(3)中执行所述尾部指令时,若所述尾部指令存在跳转指令,判断所述跳转指令与所述中断请求的优先级,若所述跳转指令的优先级不高于所述中断请求的优先级,向流水线控制器发出低优先级的冲刷流水线控制请求,计算出跳转目标地址并记录,不执行跳转。进一步的,步骤(3)中执行所述尾部指令时,若所述跳转指令的优先级高于所述中断请求的优先级,向流水线控制器发出高优先级的冲刷流水线控制请求,向取指单元给出取指请求,执行所述跳转指令,此时不执行所述中断服务程序,内核判断当前状态修改为不允许中断,返回步骤(1)。进一步的,流水线控制器接收到所述冲刷流水线控制请求时,根据冲刷流水线控制请求的优先级以及中断服务程序的首条指令标识确定每一流水级的控制信号:当前流水线上存在中断服务程序的首条指令,且需要响应尾部指令给出的低优先级的冲刷流水线控制时,不冲刷中断服务程序所在流水级,中断服务程序所在流水级由中断服务程序指令给出的流水线控制请求控制。基于上述的一种中断处理方法,本专利技术同时提出了一种流水线控制器,包括指令标记单元、第一处理请求单元、第二请求处理单元、控制信号选择单元,所述指令标记单元用于保存中断服务程序的首条指令标志,将当前流水线上每一流水级的首条指令标志组成指令标记信号传递至所述第二请求处理单元和控制信号选择单元;所述第一请求处理单元用于接收所有流水级产生的流水线控制请求,处理尾部指令给出的低优先级冲刷流水线控制请求,产生第一控制信号;所述第二请求处理单元处理由中断服务程序指令给出的流水线控制信号,产生第二控制信号;所述控制信号选择单元根据所述流水线控制请求和指令标记信号确定每一流水级当前执行的指令为尾部指令还是中断服务程序指令,选择由第一控制信号控制还是由第二控制信号控制。与现有技术相比,本专利技术的优点和积极效果是:本专利技术的中断处理方法,响应中断不会冲刷流水线,已经取指、发射、译码、执行的指令可以继续执行,避免了这些指令的重复操作。而中断服务程序的指令会在上述指令执行的同时,进行取指,并随着流水线一步步执行,所以对中断服务程序的执行没有影响。结合附图阅读本专利技术实施方式的详细描述后,本专利技术的其他特点和优点将变得更加清楚。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术所提出的中断处理方法的一种实施例流程图;图2是本专利技术所提出的中断控制器的一种实施原理方框图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基本文档来自技高网
...
一种中断处理方法及流水线控制器

【技术保护点】
一种中断处理方法,其特征在于,包括以下步骤:(1)、内核接收中断请求,并获取中断向量;(2)、内核判断当前状态是否允许中断,若允许,取指单元使用中断向量对中断服务程序进行取指;(3)、内核执行中断服务程序的首条指令,并使用首条指令标识进行标识,同时,内核当前流水线上的尾部指令正常执行,所述尾部指令为内核当前流水线上位于所述中断服务程序中的首条指令之前的指令;内核执行指令过程中,当执行至该指令的最后一级时,将位于该指令之后的指令的地址进行保存,所述位于该指令之后的指令为程序若不受中断影响,该指令执行完成之后,下一条应该执行完成的指令;若内核执行的指令为中断服务程序的首条指令,当执行至该指令的最后一级时,将执行中断服务程序首条指令之前的指令时所保存的地址作为中断返回地址记录在中断返回寄存器中;(4)、中断服务程序中的所有指令执行完毕后,按照中断返回寄存器中保存的返回地址进行返回。

【技术特征摘要】
1.一种中断处理方法,其特征在于,包括以下步骤:(1)、内核接收中断请求,并获取中断向量;(2)、内核判断当前状态是否允许中断,若允许,取指单元使用中断向量对中断服务程序进行取指;(3)、内核执行中断服务程序的首条指令,并使用首条指令标识进行标识,同时,内核当前流水线上的尾部指令正常执行,所述尾部指令为内核当前流水线上位于所述中断服务程序中的首条指令之前的指令;内核执行指令过程中,当执行至该指令的最后一级时,将位于该指令之后的指令的地址进行保存,所述位于该指令之后的指令为程序若不受中断影响,该指令执行完成之后,下一条应该执行完成的指令;若内核执行的指令为中断服务程序的首条指令,当执行至该指令的最后一级时,将执行中断服务程序首条指令之前的指令时所保存的地址作为中断返回地址记录在中断返回寄存器中;(4)、中断服务程序中的所有指令执行完毕后,按照中断返回寄存器中保存的返回地址进行返回。2.根据权利要求1所述的中断处理方法,其特征在于,步骤(3)之前还包括判断中断源的类型的步骤,包括硬件中断和软件中断,若步骤(1)中所接收的中断为硬件中断,则按照步骤(3)-步骤(4)执行。3.根据权利要求2所述的中断处理方法,其特征在于,若步骤(1)中所接收的中断为软件中断,则进一步判断软件中断属于非精确软件中断还是精确软件中断,若为非精确软件中断,则按照步骤(3)-步骤(4)执行,若为精确软件中断,则步骤(2)之前还包括冲刷掉内核当前流水线上发生精确软件中断指令之后的所有指令的步骤,发生精确软件中断指令执行至最后一级时,决定如何保存地址:若该精确软件中断需要重新执行该指令,则保存该指令的地址;否则,按照步骤(3)-步骤(4)执行。4.根据权利要求1-3中任一项所述的中断处理方法,其特征在于,步骤(3)中执行所述尾部指令时,若...

【专利技术属性】
技术研发人员:周沈刚李任伟
申请(专利权)人:青岛朗思信息科技有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1