CN111045730B - 一种用于risc-v架构的硬件快速中断处理系统及其方法 - Google Patents
一种用于risc-v架构的硬件快速中断处理系统及其方法 Download PDFInfo
- Publication number
- CN111045730B CN111045730B CN201911278380.4A CN201911278380A CN111045730B CN 111045730 B CN111045730 B CN 111045730B CN 201911278380 A CN201911278380 A CN 201911278380A CN 111045730 B CN111045730 B CN 111045730B
- Authority
- CN
- China
- Prior art keywords
- interrupt
- quick
- register
- self
- trapping
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/327—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种用于RISC‑V架构的硬件快速中断处理系统及其方法,先配置快速中断寄存器组,包括快速中断编号寄存器及快速中断地址寄存器;当接收到中断请求时,更新特权模式自陷原因寄存器,由自陷原因获取中断编号,并将该中断编号与快速中断寄存器组中存储的快速中断编号进行匹配,若匹配成功,处理器直接跳转至快速中断编号对应的快速中断服务程序地址,执行中断服务程序;若匹配不成功,根据特权模式自陷向量基地址寄存器中MODE域的值,间接跳转至相应的中断服务程序。本发明可以将中断响应程序跳转次数由三次或两次减少到一次,大大的缩短了从ROM取指令的过程,加快了中断处理速度,适用于对中断响应速度要求较高的场景。
Description
技术领域
本发明涉及计算机处理器技术领域,尤其涉及一种用于RISC-V架构的硬件快速中断处理系统及其方法。
背景技术
RISC-V是加州大学伯克利分校于2014年正式发布的一种开源指令集架构。RISC-V架构定义的中断类型分为4种:外部中断、定时器中断、软件中断、调试中断。进入异常时,根据RISC-V架构规定的硬件行为,程序停止当前程序流,转而从CSR寄存器MTVEC定义的PC处开始执行。根据MTVEC的值,程序在遇到异常时有两种跳转行为,其要点如下:
MTVEC的寄存器格式如图1所示,低2位是MODE域,其余位为BASE域,对于RISCV32来说,BASE域有效值为30位。
假设MODE的值为0,则所有的异常响应时处理器均跳转至BASE值指示的PC地址。
假设MODE的值为1,则狭义的中断(泛指中断)发生时,处理器跳转至BASE+4*CAUSE值指示的PC地址。CAUSE的值代表中断对应的异常编号。
如图2所示,当MODE=0时,处理器在_main程序处执行,当响应中断时,PC首先跳转至MTVEC的BASE处执行,此处地址为一条32位跳转指令,指向的PC地址为异常处理程序。在异常处理程序中,软件需要通过读取MCAUSE(以机器模式中断为例)的值进行判断是由什么原因产生的中断,进而再次跳转至相应的中断处理函数中运行。当MODE=1时,处理器响应中断后跳转至BASE+11*4(以机器模式外部中断为例)地址,之后执行跳转指令跳转至相应的中断处理函数中运行。即,在MODE=0时,处理器需要进行至少3次的程序跳转才可以真正的执行中断的服务函数。MODE=1时,处理器需要2次程序跳转才可以真正的执行中断服务函数。
对于当前一些低功耗低成本的MCU,程序往往直接在flash中运行,其缺点是运行速度慢。尽管可以在flash控制上加入缓存机制来解决flash延迟的问题,但是当遇到程序跳转,需要清空缓存,重新从flash取指令。这就意味着,在中断响应过程中,程序跳转的越多,中断响应的延迟就越大。这在一些应用领域可能会造成瓶颈,例如一些需要低中断延迟的控制领域。
综上所述,为了满足一些应用场景对于中断响应速度的要求,迫切需要在RISC-V规范的基础上开发出一种更快的,简单的中断响应机制。
发明内容
发明目的:为了解决现有技术存在的RISC-V架构中中断响应程序较多,速度不够快的问题,本发明提供一种用于RISC-V架构的硬件快速中断处理方法。
本发明另一目的是提供一种用于RISC-V架构的硬件快速中断处理系统。
技术方案:一种用于RISC-V架构的硬件快速中断处理方法,包括以下步骤:
(1)配置快速中断寄存器组,所述快速中断寄存器组包括快速中断编号寄存器及快速中断地址寄存器;快速中断编号寄存器用于存储快速中断编号,快速中断地址寄存器用于存储与快速中断编号对应的快速中断服务程序地址;
(2)当处理器接收到中断请求时,更新特权模式自陷原因寄存器,并由特权模式自陷原因判断中断源,获得中断源对应的中断编号,并将该中断编号与步骤(1)中快速中断寄存器组中存储的快速中断编号进行匹配,若匹配成功,执行步骤(4);若匹配不成功,执行步骤(3);
(3)根据特权模式自陷向量基地址寄存器中MODE域的值,间接跳转至相应的中断服务程序地址,执行中断服务程序;
(4)处理器直接跳转至快速中断编号对应的快速中断服务程序地址,执行中断服务程序。
进一步地,步骤(1)中,快速中断寄存器组有多组,每组快速中断寄存器包含一个快速中断编号和该快速中断编号对应的快速中断服务程序地址。
进一步地,步骤(1),配置快速中断寄存器组的方法为:根据不同应用场景,配置不同的中断为快速中断,快速中断寄存器组的个数与快速中断的个数相同。
进一步地,根据应用场景的需要,选择需要较低响应延迟的中断作为快速中断,将快速中断编号存储在快速中断编号寄存器中;将快速中断编号对应的中断服务程序的地址存储在快速中断地址寄存器中,完成快速中断寄存器组的配置。
进一步地,根据应用场景的需要,选择发生频率较高的中断作为快速中断,将快速中断编号存储在快速中断编号寄存器中;将快速中断编号对应的中断服务程序的地址存储在快速中断地址寄存器中,完成快速中断寄存器组的配置。
进一步地,步骤(3)具体包括:
(a)若特权模式自陷向量基地址寄存器的MODE域的值为1,则执行步骤(b);若MODE域的值为0,则执行步骤(c);
(b)处理器跳转至BASE+4*CAUSE处,获取存储在BASE+4*CAUSE处的跳转指令,BASE为自陷向量基地址,CAUSE为中断编号;跳转至与跳转指令相对应的中断服务程序地址处执行中断服务程序;
(c)处理器跳转至BASE处取得一条跳转指令,该跳转指令指示处理器跳转至自陷服务程序,所述自陷服务程序为所有自陷的统一入口;在自陷服务程序中,软件通过读取特权模式自陷原因寄存器的值,判断中断源,选择跳转至相应的中断服务程序。
一种用于RISC-V架构的硬件快速中断处理系统,包括特权模式自陷向量基地址寄存器、特权模式自陷原因寄存器及快速中断寄存器组;所述快速中断寄存器组包括快速中断编号寄存器及快速中断地址寄存器;所述特权模式自陷向量基地址寄存器用于存储特权模式下自陷的向量基地址;所述特权模式自陷原因寄存器用于存储特权模式下的自陷原因,所述特权模式下的自陷原因用于获得中断编号;快速中断编号寄存器用于存储快速中断编号;快速中断地址寄存器用于存储快速中断编号对应的中断服务程序的地址。
进一步地,所述特权模式自陷向量基地址寄存器包括MODE域和BASE域,MODE域用于存储自陷跳转模式,BASE域用于存储自陷向量基地址。
进一步地,所述特权模式自陷原因寄存器为32位,最高位用于指示该自陷是异常还是中断,其余位用于判断自陷原因。
进一步地,中断编号与特权模式下的自陷原因一一对应。
有益效果:本发明提供一种用于RISC-V架构的硬件快速中断处理系统及方法,相比较现有技术,在工作过程中,对于发生频率较高的中断,将其配置在快速中断寄存器组中,一旦中断发生,对于与预配置的快速中断相匹配的中断,可以将原有的跳转次数从三次或两次直接减少到一次,大大的缩短了从ROM取指令的过程,加快了中断处理速度,尤其适用于对中断响应速度要求较高的场景。
附图说明
图1为mtvec寄存器格式;
图2为现有技术的RISC-V架构的硬件中断响应的程序流示意图;
图3为本发明快速中断配置寄存器的示意图。
图4为用于RISC-V架构的硬件快速中断处理方法的中断响应流程图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步解释说明。
一种用于RISC-V架构的硬件快速中断处理系统,包括特权模式自陷向量基地址寄存器(mtvec)、特权模式自陷原因寄存器(mcause)及快速中断寄存器组。如图3所示,所述快速中断寄存器组包括快速中断编号寄存器及快速中断地址寄存器,快速中断编号寄存器中存储快速中断编号,快速中断地址寄存器中存储快速中断编号对应的中断服务程序的地址。所述特权模式自陷向量基地址寄存器用于存储特权模式下自陷的向量基地址,所述特权模式自陷向量基地址寄存器包括MODE域和BASE域,MODE域用于存储特权模式,BASE域用于存储自陷向量基地址。所述特权模式自陷原因寄存器用于存储特权模式下的自陷原因,所述特权模式下的自陷原因用于获得中断编号,中断编号与自陷原因一一对应。述特权模式自陷原因寄存器为32位,最高位用于指示该自陷是异常还是中断,其余位用于判断自陷原因。不同种的RISCV架构,特权模式自陷原因寄存器可能包括机器模式自陷原因寄存器或者管理员模式自陷原因寄存器。
一种用于RISC-V架构的硬件快速中断处理方法,包括以下步骤:
(1)配置快速中断寄存器组,所述快速中断寄存器组包括快速中断编号寄存器及快速中断地址寄存器;快速中断编号寄存器中存储快速中断编号,快速中断地址寄存器中存储与快速中断编号对应的快速中断服务程序地址;
快速中断寄存器组有多组,每组快速中断寄存器包含一个快速中断编号和该快速中断编号对应的快速中断服务程序地址。
该快速中断寄存器组可灵活配置以适应不同的应用场景。例如有4组快速中断配置寄存器的单片机,在应用场景A,可配置中断编号为1,2,3,4的中断为快速中断;而在应用场景B,则可配置中断编号5,6,7,8的中断为快速中断,以使具体场景下中断响应更加快速。根据应用场景的需要,可以选择需要较低响应延迟的中断作为快速中断,也可以选择发生频率较高的中断作为快速中断,都可以实现整体上加快响应速度的效果。将快速中断编号存储在快速中断编号寄存器中;将快速中断编号对应的中断服务程序的地址存储在快速中断地址寄存器中,完成快速中断寄存器组的配置。
(2)当处理器接收到中断请求时,更新特权模式自陷原因寄存器,并由特权模式自陷原因判断中断源,根据中断源获取中断编号,并将该中断编号与步骤(1)中快速中断寄存器组中存储的快速中断编号进行匹配,若匹配成功,执行步骤(4);若匹配不成功,执行步骤(3),如图4所示;
(3)根据特权模式自陷向量基地址寄存器中MODE域的值,间接跳转至相应的中断服务程序地址,具体包括:
(a)若特权模式自陷向量基地址寄存器的MODE域的值为1,则执行步骤(b);若MODE域的值为0,则执行步骤(c);
(b)处理器跳转至BASE+4*CAUSE处,获取存储在BASE+4*CAUSE处的跳转指令,BASE为自陷向量基地址,BASE从特权模式自陷向量基地址寄存器中获取,CAUSE为中断编号;跳转至与跳转指令相对应的中断服务程序地址处执行中断服务程序;
(c)处理器跳转至BASE处取得一条跳转指令,该跳转指令指示处理器跳转至自陷服务程序Trap_Handler,所述自陷服务程序为所有自陷的统一入口,所有自陷包括异常和中断;在自陷服务程序中,软件通过读取特权模式自陷原因寄存器MCAUSE的值,判断中断源,进而选择跳转至相应的中断服务程序。
(4)处理器直接跳转至快速中断编号对应的快速中断服务程序地址(Normal_Int_X_Handler or Fast_Int_X_Handler),执行中断服务程序。
如图4所示,当加入快速中断机制后,进入中断的程序跳转可减少至1次,对于追求中断响应速度的场景,大大的减小了从ROM取指令的速度,优化了中断处理速度。
Claims (9)
1.一种用于RISC-V架构的硬件快速中断处理方法,其特征在于,包括以下步骤:
(1)配置快速中断寄存器组,所述快速中断寄存器组包括快速中断编号寄存器及快速中断地址寄存器;快速中断编号寄存器用于存储快速中断编号,快速中断地址寄存器用于存储与快速中断编号对应的快速中断服务程序地址;根据不同应用场景,配置不同的中断为快速中断,快速中断寄存器组的个数与快速中断的个数相同,将快速中断编号存储在快速中断编号寄存器中;将快速中断编号对应的中断服务程序的地址存储在快速中断地址寄存器中,完成快速中断寄存器组的配置;
(2)当处理器接收到中断请求时,更新特权模式自陷原因寄存器,并由特权模式自陷原因判断中断源,获得中断源对应的中断编号,并将该中断编号与步骤(1)中快速中断寄存器组中存储的快速中断编号进行匹配,若匹配成功,执行步骤(4);若匹配不成功,执行步骤(3);
(3)根据特权模式自陷向量基地址寄存器中MODE域的值,间接跳转至相应的中断服务程序地址,执行中断服务程序;
(4)处理器直接跳转至快速中断编号对应的快速中断服务程序地址,执行中断服务程序。
2.根据权利要求1所述的用于RISC-V架构的硬件快速中断处理方法,其特征在于,步骤(1)中,快速中断寄存器组有多组,每组快速中断寄存器包含一个快速中断编号和该快速中断编号对应的快速中断服务程序地址。
3.根据权利要求1或2所述的用于RISC-V架构的硬件快速中断处理方法,其特征在于,根据应用场景的需要,选择需要较低响应延迟的中断作为快速中断。
4.根据权利要求1或2所述的用于RISC-V架构的硬件快速中断处理方法,其特征在于,根据应用场景的需要,选择发生频率较高的中断作为快速中断。
5.根据权利要求1或2所述的用于RISC-V架构的硬件快速中断处理方法,其特征在于,步骤(3)具体包括:
(a)若特权模式自陷向量基地址寄存器的MODE域的值为1,则执行步骤(b);若MODE域的值为0,则执行步骤(c);
(b)处理器跳转至BASE+4*CAUSE处,获取存储在BASE+4*CAUSE处的跳转指令,BASE为自陷向量基地址,CAUSE为中断编号;跳转至与跳转指令相对应的中断服务程序地址处执行中断服务程序;
(c)处理器跳转至BASE处取得一条跳转指令,该跳转指令指示处理器跳转至自陷服务程序,所述自陷服务程序为所有自陷的统一入口;在自陷服务程序中,软件通过读取特权模式自陷原因寄存器的值,判断中断源,选择跳转至相应的中断服务程序。
6.一种用于RISC-V架构的硬件快速中断处理系统,其特征在于,包括特权模式自陷向量基地址寄存器、特权模式自陷原因寄存器及快速中断寄存器组;所述快速中断寄存器组包括快速中断编号寄存器及快速中断地址寄存器;所述特权模式自陷向量基地址寄存器用于存储特权模式下自陷的向量基地址;所述特权模式自陷原因寄存器用于存储特权模式下的自陷原因,所述特权模式下的自陷原因用于获得中断编号;快速中断编号寄存器用于存储快速中断编号;快速中断地址寄存器用于存储快速中断编号对应的中断服务程序的地址,根据不同应用场景,配置不同的中断为快速中断,快速中断寄存器组的个数与快速中断的个数相同,配置完成的快速中断寄存器组用于在处理器接收到中断请求时与获取的中断编号进行匹配。
7.根据权利要求6所述的用于RISC-V架构的硬件快速中断处理系统,其特征在于,所述特权模式自陷向量基地址寄存器包括MODE域和BASE域,MODE域用于存储自陷跳转模式,BASE域用于存储自陷向量基地址。
8.根据权利要求6或7所述的用于RISC-V架构的硬件快速中断处理系统,其特征在于,所述特权模式自陷原因寄存器为32位,最高位用于指示该自陷是异常还是中断,其余位用于判断自陷原因。
9.根据权利要求6或7所述的用于RISC-V架构的硬件快速中断处理系统,其特征在于,中断编号与特权模式下的自陷原因一一对应。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911278380.4A CN111045730B (zh) | 2019-12-12 | 2019-12-12 | 一种用于risc-v架构的硬件快速中断处理系统及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911278380.4A CN111045730B (zh) | 2019-12-12 | 2019-12-12 | 一种用于risc-v架构的硬件快速中断处理系统及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111045730A CN111045730A (zh) | 2020-04-21 |
CN111045730B true CN111045730B (zh) | 2023-07-21 |
Family
ID=70236173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911278380.4A Active CN111045730B (zh) | 2019-12-12 | 2019-12-12 | 一种用于risc-v架构的硬件快速中断处理系统及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111045730B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112559047B (zh) * | 2021-02-22 | 2021-05-14 | 南京沁恒微电子股份有限公司 | 一种基于risc-v的中断控制系统及方法 |
CN113867802B (zh) * | 2021-12-03 | 2022-04-15 | 芯来科技(武汉)有限公司 | 一种中断分发装置、芯片和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010058509A (ko) * | 1999-12-30 | 2001-07-06 | 박종섭 | 인터럽트 응답 시간을 줄인 인터럽트 처리 장치 |
CN1845087A (zh) * | 2006-05-18 | 2006-10-11 | 北京中星微电子有限公司 | 中断处理方法及中断处理装置 |
CN107251001A (zh) * | 2015-03-06 | 2017-10-13 | 密克罗奇普技术公司 | 具有双模式中断的微控制器或微处理器 |
CN109376000A (zh) * | 2018-10-24 | 2019-02-22 | 胡振波 | 用于risc-v架构的快速中断控制系统及方法 |
-
2019
- 2019-12-12 CN CN201911278380.4A patent/CN111045730B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010058509A (ko) * | 1999-12-30 | 2001-07-06 | 박종섭 | 인터럽트 응답 시간을 줄인 인터럽트 처리 장치 |
CN1845087A (zh) * | 2006-05-18 | 2006-10-11 | 北京中星微电子有限公司 | 中断处理方法及中断处理装置 |
CN107251001A (zh) * | 2015-03-06 | 2017-10-13 | 密克罗奇普技术公司 | 具有双模式中断的微控制器或微处理器 |
CN109376000A (zh) * | 2018-10-24 | 2019-02-22 | 胡振波 | 用于risc-v架构的快速中断控制系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111045730A (zh) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20090217095A1 (en) | Means and method for debugging | |
US20240012650A1 (en) | Method and processor for executing target instructions | |
US11604643B2 (en) | System for executing new instructions and method for executing new instructions | |
CN109643346B (zh) | 控制流完整性 | |
JP2002268914A (ja) | 特権命令の実行を監視する方法 | |
CN111045730B (zh) | 一种用于risc-v架构的硬件快速中断处理系统及其方法 | |
US11625247B2 (en) | System for executing new instructions and method for executing new instructions | |
EP3756089B1 (en) | Processor achieving zero-overhead loop | |
US7987347B2 (en) | System and method for implementing a zero overhead loop | |
US8108840B2 (en) | Method for enhancing debugger performance of hardware assisted breakpoints | |
US20120297173A1 (en) | Debugger system, method and computer program product for debugging instructions | |
US20170031750A1 (en) | Zero Overhead Code Coverage Analysis | |
US9652245B2 (en) | Branch prediction for indirect jumps by hashing current and previous branch instruction addresses | |
US8601488B2 (en) | Controlling the task switch timing of a multitask system | |
US11645083B2 (en) | Processor having adaptive pipeline with latency reduction logic that selectively executes instructions to reduce latency | |
CN104866345A (zh) | 一种ARMv7m架构下可执行代码的存储方法 | |
US8762126B2 (en) | Analyzing simulated operation of a computer | |
US20210357312A1 (en) | Method and device for testing robustness and stability of smm, and storage medium | |
US6772372B2 (en) | System and method for monitoring unaligned memory accesses | |
US11099958B2 (en) | Instruction generation for validation of processor functionality | |
US9600284B2 (en) | Computer program instruction analysis | |
KR101646768B1 (ko) | 이퀄-모델 프로세서를 위한 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서 | |
US20070271084A1 (en) | Emulation method and computer system | |
US20120159134A1 (en) | Exception control method, system, and program | |
CN115617674A (zh) | 程序调试方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |