(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号(43)申请公布日(21)申请号201910198363.3(22)申请日2019.03.15(71)申请人芯来科技(武汉)有限公司地址430000湖北省武汉市东湖新技术开发区关东工业园达瑞路2号众创楼120室(72)发明人胡振波 (74)专利代理机构苏州中合知识产权代理事务所(普通合伙)32266代理人赵晓芳(51)Int.Cl.G06F9/32(2006.01)G06F9/30(2006.01)(54)发明名称用于RISC-V架构的中断系统(57)摘要本发明公开了一种用于RISC-V架构的中断系统,所述系统包括:CLIC中原有的寄存器,还包括有:pushmcause寄存器、pushmepc寄存器、中断响应寄存器和mtvt2寄存器;pushmcause寄存器,用于通过指令将mcause中的值存入堆栈中;pushmepc寄存器,用于通过指令将mepc中的值存入堆栈中;中断响应寄存器,用于通过指令响应CLIC发出的非向量中断请求,获取中断子程序入口地址和修改全局中断使能;mtvt2寄存器,用于储存CLIC模式下的非向量中断的基地址,通过增加寄存器或改变部分指令,减少指令运行条数,以达到提高寄存器中的值保存的速度,缩短跳转到相应中断子程序入口的时间,提高效率的目的。权利要求书2页说明书7页附图4页CN110007964A2019.07.12CN110007964A1.一种用于RISC-V架构的中断系统,所述系统包括:mstatus寄存器、medeleg寄存器、mideleg寄存器、mie寄存器、mtvec寄存器、mtvt寄存器、mscratch寄存器、mepc寄存器、mcause寄存器、mtval寄存器、mip寄存器、mnxti寄存器、mintstatus寄存器、mscratchcsw寄存器和mscratchcsw1寄存器,其特征在于,还包括有:pushmcause寄存器、pushmepc寄存器、中断响应寄存器和mtvt2寄存器;所述pushmcause寄存器,用于通过指令将mcause中的值存入堆栈中;所述pushmepc寄存器,用于通过指令将mepc中的值存入堆栈中;所述中断响应寄存器,用于通过指令响应CLIC发出的非向量中断请求,获取中断子程序入口地址和修改全局中断使能;所述mtvt2寄存器,用于储存CLIC模式下的非向量中断的基地址。2.根据权利要求1所述的用于RISC-V架构的中断系统,其特征在于,所述pushmcause寄存器中,用于将mcause中的值存入堆栈中的指令为:“csrrwi x0,pushmcause,offset”;所述pushmepc寄存器中,用于将mepc中的值存入堆栈中的指令为:“csrrwi x0,pushmepc,offset”。3.根据权利要求2所述的用于RISC-V架构的中断系统,其特征在于,所述中断响应寄存器为mintsel_jal寄存器或jalmnxti寄存器,所述mintsel_jal寄存器中,用于实现响应CLIC发出的非向量中断请求的指令为:“csrrw ra,mintsel_jal,ra”;所述jalmnxti寄存器寄存器中,用于实现响应CLIC发出的非向量中断请求的指令为:“csrrw ra,jalmnxti,ra”。4.根据权利要求3所述的用于RISC-V架构的中断系统,其特征在于,所述“csrrw ra,mintsel_jal,ra”指令,用于保存完上下文后,控制硬件进行一系列操作,然后跳转到对应中断ID的中断子程序的入口地址;还用于非向量中断咬尾发生后,硬件进行一系列操作,然后跳转到对应中断ID的中断子程序的入口。5.根据权利要求3所述的用于RISC-V架构的中断系统,其特征在于,所述“csrrw ra,jalmnxti,ra”指令,用于保存完上下文后,控制硬件进行一系列操作,然后跳转到对应中断ID的中断子程序的入口地址;还用于非向量中断咬尾发生后,硬件进行一系列操作,然后跳转到对应中断ID的中断子程序的入口。6.一种用于RISC-V架构的中断系统,所述系统包括:mstatus寄存器、medeleg寄存器、mideleg寄存器、mie寄存器、mtvec寄存器、mtvt寄存器、mscratch寄存器、mepc寄存器、mcause寄存器、mtval寄存器、mip寄存器、mnxti寄存器、mintstatus寄存器、mscratchcsw寄存器和mscratchcsw1寄存器,其特征在于,还包括有:swmcause指令、swmepc指令、jmnxti指令和mtvt3寄存器;所述swmcause指令,用于通过指令将mcause中的值存入堆栈中;所述swmepc指令,用于通过指令将mepc中的值存入堆栈中;所述jmnxti指令,用于通过指令响应CLIC发出的非向量中断请求;所述mtvt3寄存器,用于储存CLIC模式下的非向量中断的基地址。7.根据权利要求6所述的用于RISC-V架构的中断系统,其特征在于,所述swmcause指令中,用于将mcause中的值存入堆栈中的指令为:“swmcause offset(sp)”;所述swmepc指令中,用于将mepc中的值存入堆栈中的指令为:“swmepc offset(sp)”;所述jmnxti指令指令中,用于响应CLIC发出的非向量中断请求的指令为:“jmnxti ra”。权 利 要 求 书1/2页2CN110007964A28.根据权利要求7所述的用于RISC-V架构的中断系统,其特征在于,所述“jmnxti ra”指令,用于保存完上下文后,控制硬件进行一系列操作,然后跳转到对应中断ID的中断子程序的入口地址;还用于非向量中断咬尾发生后,硬件进行一系列操作,然后跳转到对应中断ID的中断子程序的入口。权 利 要 求 书2/2页3CN110007964A3用于RISC-V架构的中断系统技术领域[0001]本发明涉及低功耗内核中断处理技术领域,具体涉及一种用于RISC-V架构的中断系统。背景技术[0002]中断机制(Interrupt),即处理器核在顺序执行程序指令流的过程中突然被别的请求打断而中止执行当前的程序,转而去处理别的事情,待其处理完了别的事情,然后重新回到之前程序中断的点继续执行之前的程序指令流。其中,打断处理器执行程序指令流的“别的请求”便称之为中断请求(Interrupt Request),而中断请求的来源则称之为中断源(Interrupt Source),通常情况下,中断源主要来自外围硬件设备。而处理器转去处理“别的事情”便称之为中断服务程序(Interrupt Service Routine,ISR)。[0003]中断处理是一种正常的机制,而非一种错误。处理器收到中断请求之后,需要保护当前程序现场,简称为保护现场。等到处理完中断服务程序之后,处理器需要恢复之前的现场,从而继续执行之前被打断的程序,简称为恢复现场。[0004]为了在RISC-V系统中加入低延时、支持向量模式和支持嵌套的中断机制,RISC-V官方已经将CLIC中断机制(Core-Local Interrupt Controller)加入了RISC-V的标准当中。CLIC可以兼容和替换之前存在的CLINT中断机制(Core-Local Interrupt)。相比CLINT中断机制,CLIC中断机制涉及的CSR寄存器如下:[0005]mstatus寄存器,用于存储中断或异常处理模式状态;[0006]medeleg寄存器,用于将异常重定向对应的特权模式下处理;[0007]mideleg寄存器,用于将中断重定向对应的特权模式下处理;[0008]mie寄存器,用于屏蔽非CLIC模式下的对应中断;[0009]mtvec寄存器,用于存储异常或者中断入口地址;[0010]mtvt寄存器,用于存储CLIC模式向量中断的基地址;[0011]mscratch寄存器,用于机器模式下的程序临时保存某些数据;[0012]mepc寄存器,用于存储异常或者中断的返回地址;[0013]mcause寄存器,用于查询中断等待状态;[0014]mtval寄存器,用于存储导致出现异常的地址或者指令;[0015]mip寄存器,用于查询中断等待状态;[0016]mnxti寄存器,用于获取中断入口地址和修改全局中断使能;[0017]mintstatus寄存器,包括了mil、sil和uil这三个域,分别用于查询机器模式、管理者模式和用户模式下的对应中断的level;[0018]mscratchcsw寄存器,用于特权模式切换时的数据交换;[0019]mscratchcsw1寄存器,用于中断level切换时的数据交换;[0020]mnxti寄存器,用于通过指令“csrrsi a0,mnxti,MIE”,将打开全局中断使能(MIE),并进行如下操作:如果当前中断的特权模式为机器模式,且当前中断的level大于说 明 书1/7页4CN110007964A4mcause中的mpil(上一个中断的中断level),且当前中断ID对应的shv位为0,则返回值为当前中断ID的中断子程序的入口地址的指针,并将mintstatus的mil域更新成当前的中断level,将mcause的exccode域更新为当前的中断的ID,否则返回0[0021]相比CLINT中断机制,CLIC中断机制中断处理性能得到了极大的提升,中断响应速度明显加快。但是CLIC的中断机制中mcause、mepc的保存速度慢,跳转到相应中断子程序入口的效率低。发明内容[0022]为解决上述技术问题,本发明提出了一种用于RISC-V架构的中断系统,以达到提高寄存器中的值保存的速度,缩短跳转到相应中断子程序入口的时间,提高效率的目的。[0023]为达到上述目的,本发明的技术方案如下:一种用于RISC-V架构的中断系统,所述系统包括:mstatus寄存器、medeleg寄存器、mideleg寄存器、mie寄存器、mtvec寄存器、mtvt寄存器、mscratch寄存器、mepc寄存器、mcause寄存器、mtval寄存器、mip寄存器、mnxti寄存器、mintstatus寄存器、mscratchcsw寄存器和mscratchcsw1寄存器,还包括有:pushmcause寄存器、pushmepc寄存器、中断响应寄存器和mtvt2寄存器;[0024]所述pushmcause寄存器,用于通过指令将mcause中的值存入堆栈中;[0025]所述pushmepc寄存器,用于通过指令将mepc中的值存入堆栈中;[0026]所述中断响应寄存器,用于通过指令响应CLIC发出的非向量中断请求,获取中断子程序入口地址和修改全局中断使能;[0027]所述mtvt2寄存器,用于储存CLIC模式下的非向量中断的基地址。[0028]进一步地,所述pushmcause寄存器中,用于将mcause中的值存入堆栈中的指令为:“csrrwi x0,pushmcause,offset”;所述pushmepc寄存器中,用于将mepc中的值存入堆栈中的指令为:“csrrwi x0,pushmepc,offset”。[0029]进一步地,所述中断响应寄存器为mintsel_jal寄存器或jalmnxti寄存器,所述mintsel_jal寄存器中,用于实现响应CLIC发出的非向量中断请求的指令为:“csrrw ra,mintsel_jal,ra”;所述jalmnxti寄存器寄存器中,用于实现响应CLIC发出的非向量中断请求的指令为:“csrrw ra,jalmnxti,ra”。[0030]进一步地,所述“csrrw ra,mintsel_jal,ra”指令,用于保存完上下文后,控制硬件进行一系列操作,然后跳转到对应中断ID的中断子程序的入口地址;还用于非向量中断咬尾发生后,硬件进行一系列操作,然后跳转到对应中断ID的中断子程序的入口。[0031]进一步地,所述“csrrw ra,jalmnxti,ra”指令,用于保存完上