一种中断处理方法、系统及计算机可读存储介质

文档序号:1391164 发布日期:2020-02-28 浏览:30次 >En<

阅读说明:本技术 一种中断处理方法、系统及计算机可读存储介质 (Interrupt processing method, system and computer readable storage medium ) 是由 郭晖 张楠赓 于 2018-08-21 设计创作,主要内容包括:本发明的实施方式提供了一种中断处理方法、系统及计算机可读存储介质,适用于基于RISC-V指令集架构的系统,所述方法包括:将正在执行的第一中断的优先级设为中断优先级阈值;打开处理器核心的全局中断使能;接收第二中断,判断所述第二中断的优先级是否超过所述中断优先级阈值;若所述第二中断的优先级超过所述中断优先级阈值,暂停执行所述第一中断,并开始执行所述第二中断;若所述第二中断的优先级未超过所述中断优先级阈值,则继续执行所述第一中断。使得基于RISC-Ⅴ架构的芯片能够实现中断嵌套功能,提高了系统的实时性。(The embodiment of the invention provides an interrupt processing method, a system and a computer readable storage medium, which are suitable for a system based on a RISC-V instruction set architecture, wherein the method comprises the following steps: setting a priority of a first interrupt being executed to an interrupt priority threshold; opening a global interrupt enable of a processor core; receiving a second interrupt, and judging whether the priority of the second interrupt exceeds the interrupt priority threshold; if the priority of the second interrupt exceeds the interrupt priority threshold, suspending the execution of the first interrupt and starting to execute the second interrupt; and if the priority of the second interrupt does not exceed the interrupt priority threshold, continuing to execute the first interrupt. The chip based on the RISC-V architecture can realize the interrupt nesting function, and the real-time performance of the system is improved.)

一种中断处理方法、系统及计算机可读存储介质

技术领域

本发明涉及计算机领域,具体涉及一种中断处理方法、系统及计算机可读存储介质。

背景技术

本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

RISC-V是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),由于其具有完全开源、设计简单、易于移植与拓展、模块化设计等多个优点,近年来受到大量芯片厂商的青睐,并产生了大量性能良好的基于RISC-V架构的开源处理器与开源SoC(Systemon Chip,片上系统),例如:标量处理器Rocket,也有超标量处理器BOOM,还有面向嵌入式领域的Z-scale、PicoRV32等。

中断机制是处理器指令集架构中最为复杂而关键的部分,而中断嵌套是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行。具体地,在RISC-V线程中,包含内部中断源和外部中断源,其中,内部中断源不在本发明讨论之列,只有外部中断源可以被中断控制器响应,通常为外部设备(I/O设备)发出的中断指令。

现有技术中,存在一些处理器架构从硬件层面支持中断嵌套功能。例如应用到ARM中的嵌套向量中断控制器NVIC,发生中断时,硬件会把所有必要的信息全部保存,中断服务结束时,硬件也会自动恢复这些寄存器。

然而RISC-V架构定义了一套相对简单基本的中断机制,尽管其允许用户对其进行定制和扩展。但是,由于现有的RISC-Ⅴ处理器架构的中断分派机制从硬件层面不支持中断嵌套功能,因此无法满足嵌入式软件的实时性要求。具体来说,如图1所示,中断控制器PLIC架构的中断管理机制如下所述:

(1)外部设备(中断源)发送中断信号(interrupt signal)到PLIC的中断源接口(gateway)。

(2)PLIC的中断源接口(gateway)发起中断请求(interrupt request)到PLIC的内核(PLIC core),并由PLIC的内核(PLIC core)选出具有最高优先级的中断请求,并存储在内部的外部中断挂起位(EIP)中。

(3)若该处理器内核中的机器状态寄存器(mstatus)中的机器中断使能位(mie)打开,并且该中断请求的优先级值超过了中断优先级阈值寄存器(Interrupt Prioritythreshold)的中断优先级阈值,PLIC将中断请求发送给一个或多个处理器内核,。

(4)当处理器内核接受了该外部中断请求,会发送一个响应信号(interruptclaim)给PLIC内核,表示请求接收该中断。

(5)PLIC内核通过中断响应(claim response)信号向处理器内核发送该处理器内核对应的具有最高优先级的挂起中断(pending interrupt),同时将处理器内核内的机器状态寄存器(mstatus)中的机器中断使能位(mie)关闭,此时,处理器内核无法接收到新的中断请求,专注执行当前的中断请求。

(5)当处理器内核完成了当前中断服务,需发送一个中断完成信号(interruptcompletion message)给对应的PLIC的中断源接口(gateway)表示中断完成,同时将mie打开。接下来PLIC可以发送下一个中断请求到该处理器内核。

从上述过程可见,在RISC-Ⅴ的中断控制器PLIC架构中不能支持其他中断***,即无法实现中断嵌套,那么在当前处理中断的优先级较低时,高优先级中断无法得到及时响应,从而降低了系统的实时性。

发明内容

针对现有技术中的在RISC-Ⅴ的中断控制器架构中不能支持中断嵌套功能的问题,本发明提供了一种中断处理方法、系统和计算机介质,从而可以实现RISC-Ⅴ的中断嵌套功能。

在本发明实施方式的第一方面,提出一种中断处理方法,其特征在于,所述方法适用于基于RISC-V指令集架构的系统,所述方法包括:

将正在执行的第一中断的优先级设为中断优先级阈值;

打开处理器核心中的全局中断;

接收第二中断,判断所述第二中断的优先级是否超过所述中断优先级阈值;

若所述第二中断的优先级超过所述中断优先级阈值,暂停执行所述第一中断,并开始执行所述第二中断;

若所述第二中断的优先级未超过所述中断优先级阈值,则继续执行所述第一中断。

在一种实施方式中,其中,所述若所述第二中断的优先级超过所述中断优先级阈值,则暂停执行所述第一中断,并开始执行所述第二中断之后,所述方法还包括:

在所述第二中断执行完毕后,恢复执行所述第一中断。

在一种实施方式中,其中,所述若所述第二中断的优先级超过所述中断优先级阈值,则暂停执行所述第一中断,并开始执行所述第二中断进一步包括:

所述第二中断开始执行时,将所述中断优先级阈值更新为第二中断的优先级;以及

所述第二中断执行完毕后,将所述中断优先级阈值恢复为第一中断的优先级。

在一种实施方式中,其中,所述将所述中断优先级阈值恢复为第一中断的优先级具体包括:

在所述第一中断或所述第二中断开始执行时,对当前的中断优先级阈值寄存器进行备份;以及

当所述第一中断或所述第二中断执行完毕时,将所述备份恢复。

在一种实施方式中,其中,所述中断优先级阈值的初始值为0。

在一种实施方式中,其中,所述打开所述处理器核心中的全局中断使能具体包括:

打开所述处理器核心的机器状态寄存器(mstatus)中的机器中断使能位(mie)。

在一种实施方式中,其中,在所述至少一个处理器内核接收并执行第一中断之前,所述方法还包括:

在初始化时,为每一个中断源进行优先级赋值并存储在中断控制器内相应的优先级寄存器中,其中,所述中断源包括所述第一中断与第二中断。

在一种实施方式中,其中,所述中断处理方法具体应用于RISC-V机器模式下。

在本发明实施方式的第二方面,提出一种中断处理系统,其特征在于,所述方法适用于基于RISC-V指令集架构的系统,所述系统包括:

阈值设置模块,用于将正在执行的第一中断的优先级设为中断优先级阈值;

全局中断使能模块,用于打开处理器核心中的全局中断;

中断判断模块,用于接收第二中断,判断所述第二中断的优先级是否超过所述中断优先级阈值;

中断执行模块,用于:

若所述第二中断的优先级超过所述中断优先级阈值,暂停执行所述第一中断,并开始执行所述第二中断;

若所述第二中断的优先级未超过所述中断优先级阈值,则继续执行所述第一中断。

在一种实施方式中,其中,所述若所述第二中断的优先级超过所述中断优先级阈值,则暂停执行所述第一中断,并开始执行所述第二中断之后,所述中断执行模块还用于:

在所述第二中断执行完毕后,恢复执行所述第一中断。

在一种实施方式中,其中,若所述第二中断的优先级超过所述中断优先级阈值,所述阈值设置模块进一步用于:

所述第二中断开始执行时,将所述中断优先级阈值更新为第二中断的优先级;以及

所述第二中断执行完毕后,将所述中断优先级阈值恢复为第一中断的优先级。

在一种实施方式中,其中,所述阈值设置模块进一步包括:

备份模块,用于在所述第一中断或所述第二中断开始执行时,对当前的中断优先级阈值寄存器进行备份;以及

恢复模块,用于当所述第一中断或所述第二中断执行完毕时,将所述备份恢复。

在一种实施方式中,其中,所述阈值设置模块还用于将所述中断优先级阈值的初始值设置为0。

在一种实施方式中,其中,所述全局中断使能模块具体用于:

打开所述处理器核心的机器状态寄存器(mstatus)中的机器中断使能位(mie)。

在一种实施方式中,其中,在所述至少一个处理器内核接收并执行第一中断之前,所述阈值设置模块进一步用于:

在初始化时,为每一个中断源进行优先级赋值并存储在中断控制器内相应的优先级寄存器中,其中,所述中断源包括所述第一中断与第二中断。

在一种实施方式中,其中,所述中断处理系统具体应用于RISC-V机器模式下。

在本发明实施方式的第三方面,提出一种中断处理系统,其特征在于,包括:

一个或者多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或者多个处理器执行时,使得所述一个或多个处理器实现:

将正在执行的第一中断的优先级设为中断优先级阈值;

打开处理器核心中的全局中断;

接收第二中断,判断所述第二中断的优先级是否超过所述中断优先级阈值;

若所述第二中断的优先级超过所述中断优先级阈值,暂停执行所述第一中断,并开始执行所述第二中断;

若所述第二中断的优先级未超过所述中断优先级阈值,则继续执行所述第一中断。

在本发明实施方式的第四方面,提出一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被处理器执行时,使得所述处理器执行如上述本发明第一方面中任一项所述的方法。

正是通过本发明实施方式所提供的提出一种中断处理方法、系统和计算机可读存储介质,通过将设置中断优先级阈值与打开处理器核心的全局中断使能,使得RISC-Ⅴ指令集架构下的处理器能够在硬件不能支持中断嵌套功能的情况下,通过软件控制实现中断嵌套功能,提高了系统的实时性。

附图说明

通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:

图1示出了根据本发明实施例的RISC-V架构下的中断处理方法示意图;

图2示出了现有技术的中断控制器PLIC的电路实现图;

图3示出了根据本发明实施例的一种中断处理方法流程图;

图4示出了根据本发明实施例的另一种中断处理方法流程图;

图5示出了根据本发明实施例的又一种中断处理方法流程图;

图6示出了根据本发明实施例的又一种中断处理方法流程图;

图7示出了根据本发明实施例的一种中断处理系统结构示意图;

图8示出了根据本发明实施例的又一种中断处理系统结构示意图;

图9示出了根据本发明实施例的一种中断处理系统的计算机可读存储介质的示意图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

示例性方法

本发明提出一种中断处理方法,具体应用于RISC-V指令集架构下的处理器系统中,该处理器系统至少包括中断控制器(PLIC)和至少一个处理器内核。

图2示出了RISC-V的PLIC中断控制器的电路实现图。

如图2所示,中断控制器PLIC内包含两个子模块:中断源接口(gateway)和中断控制器内核(PLIC core),

(1)中断源接口(gateway),每一个中断源对应到一个中断源接口(gateway),该中断源接口(gateway)用于将获取的中断信号转化为PLIC的通用格式,同时向中断控制器内核(PLIC core)发起中断请求。进一步地,对于每一个中断源接口来说,在收到中断完成的信号之前,不会再向中断控制器内核(PLIC core)发起中断请求,也就是说,对于同一个中断源而言,在上一个中断完成之前,不会被再次触发。

(2)中断控制器内核(PLIC core),负责所有中断请求的仲裁和分发。

其中,如图2所示,IP为中断挂起位(interrupt pending bit,)、IE为中断使能位(interrupt enabled bit)、ID为中断标识,EIP为外部中断挂起位(external interruptpending)。

其中,每一个中断源对应到一个IP位,当中断源接口接收到中断信号后,IP位置1,高电平触发中断。同样的,每一个中断源对应到一个IE位。以及,每一个中断源都被独立赋予一个从1开始的无符号整数作为中断标识ID,0保留为“无中断标识”。

进一步地,中断控制器内核(PLIC core)中包含多种特殊功能寄存器,包括但不限于:

A、中断优先级寄存器,用于存储每个中断源被独立赋予的优先级值(例如图2中的第一中断优先级与第二中断优先级)与ID标识;

B、中断优先级阈值寄存器,用于控制中断发生的阈值,值得注意的是,上述中断优先级阈值寄存器是独立被赋予到每一个中断目标(interrupt targets)的,存储在中断目标的存储映射寄存器(memory-mapped register)中。进一步地,该中断目标具体为某一个处理器内核的某一个特权模式(priority mode),因此,不同的处理器内核甚至同一处理器内核的不同模式中的中断优先级阈值寄存器都是不同的,相应的,中断优先级阈值也是不同的。

值得注意的是,本发明不限于图2中所示出的仅存在一个中断目标的情况,也可以应用到同时存在多个中断目标的系统中,例如:下文中描述的本发明中断处理方法同样可以应用到多核处理器中。具体地,在存在多个中断目标的系统中,对每一个中断目标与其所对应的各类寄存器单独实施下文中所述的技术方案即可。

在一些实施方式中,在中断服务开始之前,在中断控制器PLIC进行初始化时,为每一个中断源进行优先级赋值并存储在中断控制器内相应的优先级寄存器中,例如图2中的第一中断优先级与第二中断优先级。具体地,区别于现有技术中通过硬件实现优先级配置的技术方案,本发明实施例通过软件程序指令直接对多个中断源进行优先级赋值,达到更为灵活配置中断源的优先级的技术效果。

下面结合图2与图3对本发明技术方案做进一步解释:

图3是根据本发明实施例的一种中断处理方法的示意性流程图,该中断处理方法适用于基于RISC-V指令集架构的系统。如图2所示,所述系统至少包括中断控制器PLIC和处理器内核(PLIC core),该方法包括但不限于如下步骤:

具体地,本实施例中第一中断从时序上先于第二中断发生,并且第一中断执行时,系统中并未执行其他中断服务。

S110:将正在执行的第一中断的优先级设为中断优先级阈值。

具体地,上述“正在执行”指的是处理器内核正在处理该第一中断服务。上述将第一中断优先级设为中断优先级阈值具体为将第一中断优先级值写入到中断优先级阈值寄存器中。

S120:打开处理器核心中的全局中断使能。

具体地,RISC-V指令集架构下,处理器核心中机器状态寄存器(mstatus)的机器中断使能位(mie)在中断执行时关闭,在中断执行完毕后打开,这导致处理器内核在处理一个中断服务中不能对新产生的高优先级中断请求进行响应,进一步导致不能实现中断嵌套功能。

本发明实施例在第一中断执行时打开处理器核心中全局中断使能,这使得当有新的中断请求产生时,处理器内核能够对新的中断请求进行响应。

在一些实施方式中,打开处理器核心中的全局中断使能具体包括:打开所述处理器核心中机器状态寄存器(mstatus)中的机器中断使能位(mie)。

S130:接收第二中断,判断所述第二中断的优先级是否超过所述中断优先级阈值;

具体地,只有在所述第二中断的优先级超过所述中断优先级阈值,所述第二中断才会被发送至处理器核心。

S140:若所述第二中断的优先级超过所述中断优先级阈值,暂停执行所述第一中断,并开始执行所述第二中断;

具体地,若第二中断的优先级超过中断优先级阈值,则此时第二中断占据EIP位,此时由于处理器核心中机器状态寄存器(mstatus)的机器中断使能位(mie)处于打开状态,处理器内核可以在处理第一中断时响应于EIP位中新产生的更高优先级的中断请求并进行处理。

S150:若所述第二中断的优先级未超过所述中断优先级阈值,则继续执行所述第一中断。

具体地,若第二中断的优先级未超过中断优先级阈值,则此时图2中的EIP位仍处于清零状态,也即并不存在发送给处理器内核的新中断请求。

如图4所示,本发明实施例公开了一种具体的中断处理方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:

在上述步骤S110之前,如图4所示,该方法具体包括:

S111:外部设备触发第一中断,中断控制器PLIC接收第一中断信号。

具体地,如图2所示,上述第一中断信号首先发送到PLIC的中断源接口(gateway)中,由中断源接口将第一中断信号转化为中断控制器内核通用的格式,并向中断源核心发起第一中断请求。

S112:获取第一中断的优先级。

具体地,如图2所示,第一中断的中断源接口接收到第一中断信号,IP位高电平触发中断,进一步获取预置的第一中断优先级。

值得注意的是,本发明不限于同一时间内仅接收到一个中断的情况,同样适用于中断控制器PLIC同一时间接收到多个中断请求的情况,此时,由中断控制器内核(PLICcore)选出其中具有最大优先级的中断请求作为第一中断并执行下列步骤即可。

S113:处理器内核执行第一中断,并将正在执行的第一中断的优先级设为中断优先级阈值。

具体地,如图2所示,由于此时PLIC中只有第一中断请求,因此图2中的EIP位为第一中断优先级,中断ID为第一中断ID。处理器内核响应并获取中断控制器PLIC中的第一中断请求,中断控制器内核(PLIC core)接收到响应信号后,将第一中断请求对应的IP位清除。

具体地,在上述S113之前,同样需要将上述第一中断优先级与中断优先级阈值寄存器中的中断优先级阈值进行比较,只有超过中断优先级阈值时,第一中断才能被发送到处理器内核执行,但是由于此时中断优先级阈值为初始值0,进一步地,此时第一中断必然会被执行,不需要进行额外设计。

在一些实施方式中,中断优先级阈值的初始值为0,进一步地,由于在执行中断中需要对上下文场景进行“备份”与“恢复”,因此在任一个中断开始执行时需要对上述中断优先级阈值进行备份,并在中断完成后将上述备份的中断优先级阈值进行恢复。因此,当系统并未处理中断服务时,上述中断优先级阈值为初始值0。

在又一实施例中,如图5所示,上述步骤S130进一步包括:

S131:外部设备触发第二中断,PLIC接收第二中断信号。

具体地,在第二中断触发执行之后,外部设备发送第二中断信号到中断控制器PLIC的中断源接口(gateway)中,由中断源接口将第二中断信号转化为中断控制器内核通用的格式,并向中断源核心发起第二中断请求。

在一个实施例中,若处理器内核执行第一中断时,中断控制器PLIC中保存有至少一个其他中断请求,那么第二中断触发后,需要先比较第二中断优先级与上述至少一个中断优先级以获取PLIC全局最大优先级以及对应的中断ID,进一步将具有最大优先级的中断请求作为第二中断进行后续执行步骤,以保证中断嵌套的准确性。

S132:获取第二中断的优先级。

具体地,如图2所示,第二中断的中断源接口接收到第二中断信号,第二中断对应的IP位高电平触发中断,进一步获取预置的第二中断优先级。

S133:中断控制器PLIC判断第二中断的优先级是否超过中断优先级阈值。

具体地,如图2所示,由于此时第一中断对应的IP位被清零,第二中断优先级为全局最大,因此第二中断优先级作为最大优先级与优先级阈值进行比较。

进一步地,只有在所述第二中断的优先级超过所述中断优先级阈值,所述第二中断才会被发送至处理器核心。

在又一实施例中,如图6所示,在上述步骤S140之后,本发明实施例还包括:

S141:开始执行第二中断时,将中断优先级阈值修改为第二中断的优先值。

S142:第二中断执行完毕后,恢复执行第一中断。

具体地,执行中断需要对上下文场景进行“备份”与“恢复”,因此,在任一个中断开始执行时需要对当前任务现场进行备份,并在中断执行结束时恢复备份的任务线程,具体为在中断退出前,切换回中断模式;将中断模式下的堆栈指针调整到该级中断发生前的位置从任务堆栈中恢复中断前的任务现场。在本方面实施例中,采用MEPC(MachineException Program Counter,机器异常程序计数器)对上下文进行备份处理,具体地,上述MEPC是一个WARL寄存器,它能够保存所有有效的物理地址和虚拟地址,从而具有能够在进入中断时进行全局备份的能力。

在一些实施方式中,本发明也可以采用其他现有的或以后可能产生的任何一个或多个具有备份能力的寄存器进行任务现场备份,并不限于上述列举的寄存器。

本发明实施例通过采用上述在第二中断执行完毕后,恢复执行所述第一中断的技术方案,可以支持系统在实现在嵌套中断执行完毕后执行恢复现场的功能。

S143:第二中断执行完毕时,将中断优先级阈值恢复为第一中断的优先值。

具体地,在上述“备份”与“恢复”流程中,中断优先级阈值寄存器中的中断优先级阈值同样在第二中断开始执行时被备份,并在第二中断执行完毕后恢复,因此,当第二中断执行完毕时,中断优先级阈值恢复为之前的第一中断优先级,作为第一中断继续执行时的优先级门限。

本发明实施例通过采用上述技术方案,可以在嵌套中断(第二中断)执行过程中阻隔其他优先级小于第二中断的中断请求,从而使得嵌套中断得以顺利执行完毕。

在又一实施例中,在上述步骤S150之后,本发明实施例还包括:

S151:第一中断执行完毕之后,开始执行第二中断。

具体地,在上文中已经论述了中断执行中的“备份”与“恢复”工作机制,由于在第一中断执行前,上述中断优先级阈值为初始值0,因此,在第一中断执行完毕后,中断优先级阈值重新恢复为0。

进一步地,由于此时第一中断对应的IP位被清零,第二中断优先级为全局最大,因此第二中断优先级必然超过此时的中断优先级阈值0。此时,处理器内核响应并执行第二中断。

本发明实施例通过采用上述在初始化时,对每一个中断源进行优先级赋值的技术方案,区别于现有技术中通过硬件实现优先级配置的技术方案,本发明实施例通过直接对多个中断源进行优先级赋值,达到更为灵活配置中断源的优先级的技术效果。在一个实施例中,上述中断处理方法具体应用于RISC-V机器模式下。

具体地,上述机器模式为RISC-V架构下处理器内核的特定特权级中的一种。在本发明实施例中,特权级模式选定为机器模式(M-mode)。

具体地,在任何时候,一个RISC-V硬件线程(Hart)是运行在某个特权级上的,这个特权级被编码到一个或者多个CSR(control and status register,控制和状态寄存器)中的一种模式。当前RISC-V定义了四种特权级,包括:机器模式(M-mode)、Hypervisor(监视器)模式(H-mode)、管理员模式(S-mode)、用户模式(U-mode)。其中,只有机器模式下的代码是固有可信的,因为它可以实现在低层次访问机器,由于本申请上述技术方案需要对多个特殊功能寄存器进行访问读写,因此本发明实施例在已知的RISC-V指令架构中选择机器模式作为本申请的应用场景。

本发明实施例通过采用将上述技术方案应用于RISC-V机器模式,能够保证能在低层次访问机器并对多个寄存器进行访问读写,保证了中断嵌套的代码安全性。

在一个实施例中,本发明实施例对所述选定的特权级模式不作具体限定,所述中断处理方法也可以在现有的或未来可能产生的其他能够执行本申请上述技术方案的特权级模式下进行,在此不作限定。

综上,本申请通过上述方案实现了RISC-V指令集架构下的处理器中断嵌套功能,克服了RISC-V硬件不支持中断嵌套的缺陷。

示例性设备

图7是根据本发明实施例的一种中断处理系统,其特征在于,所述方法适用于基于RISC-V指令集架构的处理器或SoC,所述系统700包括:

阈值设置模块710,用于将正在执行的第一中断的优先级设为中断优先级阈值。

具体地,上述“正在执行”指的是处理器内核正在处理该第一中断服务。上述将第一中断优先级设为中断优先级阈值具体为将第一中断优先级值写入到中断优先级阈值寄存器中。

全局中断使能模块720,用于打开处理器核心中的全局中断;

具体地,RISC-V指令集架构下,处理器核心中机器状态寄存器(mstatus)的机器中断使能位(mie)在中断执行时关闭,在中断执行完毕后打开,这导致处理器内核在处理一个中断服务中不能对新产生的高优先级中断请求进行响应,进一步导致不能实现中断嵌套功能。

本发明实施例在第一中断执行时打开处理器核心中全局中断使能,这使得当有新的中断请求产生时,处理器内核能够对新的中断请求进行响应。

在一些实施方式中,打开处理器核心中的全局中断使能具体包括:打开所述处理器核心中机器状态寄存器(mstatus)中的机器中断使能位(mie)。

中断判断模块730,用于接收第二中断,判断所述第二中断的优先级是否超过所述中断优先级阈值。

具体地,只有在所述第二中断的优先级超过所述中断优先级阈值,所述第二中断才会被发送至处理器核心。

中断执行模块740,用于:

若所述第二中断的优先级超过所述中断优先级阈值,暂停执行所述第一中断,并开始执行所述第二中断。

具体地,若第二中断的优先级超过中断优先级阈值,则此时第二中断占据EIP位,此时由于处理器核心中机器状态寄存器(mstatus)的机器中断使能位(mie)处于打开状态,处理器内核可以在处理第一中断时响应于EIP位中新产生的更高优先级的中断请求并进行处理。

若所述第二中断的优先级未超过所述中断优先级阈值,则继续执行所述第一中断。

具体地,若第二中断的优先级未超过中断优先级阈值,则此时图2中的EIP位仍处于清零状态,也即并不存在发送给处理器内核的新中断请求。

在一个实施例中,所述若所述第二中断的优先级超过所述中断优先级阈值,则暂停执行所述第一中断,并开始执行所述第二中断之后,所述中断执行模块740还用于:

在所述第二中断执行完毕后,恢复执行所述第一中断。

具体地,执行中断需要对上下文场景进行“备份”与“恢复”,因此,在任一个中断开始执行时需要对当前任务现场进行备份,并在中断执行结束时恢复备份的任务线程,具体为在中断退出前,切换回中断模式;将中断模式下的堆栈指针调整到该级中断发生前的位置从任务堆栈中恢复中断前的任务现场。在本方面实施例中,采用MEPC(MachineException Program Counter,机器异常程序计数器)对上下文进行备份处理,具体地,上述MEPC是一个WARL寄存器,它能够保存所有有效的物理地址和虚拟地址,从而具有能够在进入中断时进行全局备份的能力。

在一些实施方式中,本发明也可以采用其他现有的或以后可能产生的任何一个或多个具有备份能力的寄存器进行任务现场备份,并不限于上述列举的寄存器。

本发明实施例通过采用上述在第二中断执行完毕后,恢复执行所述第一中断的技术方案,可以支持系统在实现在嵌套中断执行完毕后执行恢复现场的功能。

在一个实施例中,若所述第二中断的优先级超过所述中断优先级阈值,所述阈值设置模块710进一步用于:

所述第二中断开始执行时,将所述中断优先级阈值更新为第二中断的优先级;以及

所述第二中断执行完毕后,将所述中断优先级阈值恢复为第一中断的优先级。

本发明实施例通过采用上述技术方案,可以在嵌套中断(第二中断)执行过程中阻隔其他优先级小于第二中断的中断请求,从而使得嵌套中断得以顺利执行完毕。

在一个实施例中,所述阈值设置模块710进一步包括:

备份模块711,用于在所述第一中断或所述第二中断开始执行时,对当前的中断优先级阈值寄存器进行备份;以及

恢复模块712,用于当所述第一中断或所述第二中断执行完毕时,将所述备份恢复。

具体地,在上述“备份”与“恢复”流程中,中断优先级阈值寄存器中的中断优先级阈值同样在第二中断开始执行时被备份,并在第二中断执行完毕后恢复,因此,当第二中断执行完毕时,中断优先级阈值恢复为之前的第一中断优先级,作为第一中断继续执行时的优先级门限。

本发明实施例通过采用上述在中断开始执行时对中断优先级阈值寄存器进行备份,以及在中断执行完毕时将所述备份恢复的技术方案,使得当嵌套中断执行完毕后,系统恢复执行被暂停的中断请求时,中断阈值寄存器中存储的中断阈值能够始终与系统中正在执行的中断请求保持一致,保证了系统运行正常。

在一个实施例中,所述阈值设置模块710还用于将所述中断优先级阈值的初始值设置为0。

本发明实施例通过采用上述将中断优先级阈值的初始值设置为0的技术方案,可以保证当系统中没有正在执行的中断请求时,任何一项优先级的中断请求都可以被执行。

在一个实施例中,所述全局中断使能模块720具体用于:

打开所述处理器核心的机器状态寄存器(mstatus)中的机器中断使能位(mie)。

具体地,RISC-V指令集架构下,处理器核心中机器状态寄存器(mstatus)的机器中断使能位(mie)在中断执行时关闭,在中断执行完毕后打开,这导致处理器内核在处理一个中断服务中不能对所有新产生的中断请求进行响应,进一步导致不能实现中断嵌套功能。

因此本发明实施例在处理器内核处理中断服务时打开所述处理器核心中mstatus(特殊功能寄存器)中的机器中断使能位(mie)以响应新的中断请求。

在一个实施例中,在所述至少一个处理器内核接收并执行第一中断之前,所述阈值设置模块710进一步用于:

在初始化时,为每一个中断源进行优先级赋值并存储在中断控制器内相应的优先级寄存器中,其中,所述中断源包括所述第一中断与第二中断。

具体地,在中断服务开始之前,在中断控制器PLIC进行初始化时,阈值设置模块710为每一个中断源进行优先级赋值并存储在中断控制器内相应的优先级寄存器中,例如图2中的第一中断优先级与第二中断优先级。

本发明实施例通过采用上述在初始化时,对每一个中断源进行优先级赋值的技术方案,区别于现有技术中通过硬件实现优先级配置的技术方案,本发明实施例通过直接对多个中断源进行优先级赋值,达到更为灵活配置中断源的优先级的技术效果。

在一个实施例中,所述中断处理系统700具体应用于RISC-V机器模式下。

具体地,上述机器模式为RISC-V架构下处理器内核的特定特权级中的一种。在本发明实施例中,特权级模式选定为机器模式(M-mode)。

具体地,在任何时候,一个RISC-V硬件线程(Hart)是运行在某个特权级上的,这个特权级被编码到一个或者多个CSR(control and status register,控制和状态寄存器)中的一种模式。当前RISC-V定义了四种特权级,包括:机器模式(M-mode)、Hypervisor(监视器)模式(H-mode)、管理员模式(S-mode)、用户模式(U-mode)。其中,只有机器模式下的代码是固有可信的,因为它可以实现在低层次访问机器,由于本申请上述技术方案需要对多个特殊功能寄存器进行访问读写,在已知的RISC-V指令架构中选择机器模式作为本申请的应用场景。

本发明实施例通过采用将上述技术方案应用于RISC-V机器模式,能够保证能在低层次访问机器并对多个寄存器进行访问读写,保证了中断嵌套的代码安全性。

在又一实施例中,本发明实施例对所述选定的特权级模式不作具体限定,所述中断处理系统也可以基于现有的或未来可能产生的其他能够执行本申请上述技术方案的特权级模式,在此不作限定。

综上,本申请通过上述方案实现了RISC-V指令集架构下的处理器中断嵌套功能,克服了RISC-V硬件不支持中断嵌套的缺陷。

示例性系统

在介绍了本发明示例性实施方式的方法和系统之后,接下来,介绍根据本发明的另一方面的中断处理系统。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为设备、方法或计算机可读存储介质。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“设备”。

在一些可能的实施方式中,本发明的用于对加密货币运算设备进行老化测试的设备可以至少包括一个或多个处理器、以及至少一个存储器。其中,所述存储器存储有程序,当所述程序被所述处理器执行时,使得所述处理器执行如图1所示的步骤:

S110:将正在执行的第一中断的优先级设为中断优先级阈值;

S120:打开处理器核心的全局中断使能;

S130:接收第二中断,判断所述第二中断的优先级是否超过所述中断优先级阈值;

S140:若所述第二中断的优先级超过所述中断优先级阈值,暂停执行所述第一中断,并开始执行所述第二中断;

S150:若所述第二中断的优先级未超过所述中断优先级阈值,则继续执行所述第一中断。

此外,尽管附图中未示出,但本发明的所述程序被所述处理器执行时,还使得所述处理器执行上述示例性方法中描述的其他操作或步骤。

下面参照图8来描述根据本发明的这种实施方式的用于评估包装箱推荐算法的设备1。图8显示的设备1仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图8所示,设备1可以以通用计算设备的形式表现,包括但不限于:至少一个处理器10、至少一个存储器20、连接不同设备组件的总线60。

总线60包括数据总线、地址总线和控制总线。

存储器20可以包括易失性存储器,例如随机存取存储器(RAM)21和/或高速缓存存储器22,还可以进一步包括只读存储器(ROM)23。

存储器20还可以包括程序模块24,这样的程序模块24包括但不限于:操作设备、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

设备1还可以与一个或多个外部设备2(例如键盘、指向设备、蓝牙设备等)通信,也可与一个或者多个其他设备进行通信。这种通信可以通过输入/输出(I/O)接口40进行,并在显示单元30上进行显示。并且,设备1还可以通过网络适配器50与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器50通过总线60与设备1中的其它模块通信。应当明白,尽管图中未示出,但可以结合设备1使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID设备、磁带驱动器以及数据备份存储设备等。

示例性计算机可读存储介质

在一些可能的实施方式中,本发明的各个方面还可以实现为一种计算机可读存储介质的形式,其包括程序代码,当所述程序代码在被处理器执行时,所述程序代码用于使所述处理器执行上面描述的方法。

上面描述的方法包括了上面的附图中示出和未示出的多个操作和步骤,这里将不再赘述。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的设备、设备或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

如图9所示,描述了根据本发明的实施方式的计算机可读存储介质3,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的计算机可读存储介质不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行设备、设备或者器件使用或者与其结合使用。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

24页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于LVDS的串接方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!