CN111625328B - 适用于risc-v架构的中断装置、系统及方法 - Google Patents

适用于risc-v架构的中断装置、系统及方法 Download PDF

Info

Publication number
CN111625328B
CN111625328B CN202010414067.5A CN202010414067A CN111625328B CN 111625328 B CN111625328 B CN 111625328B CN 202010414067 A CN202010414067 A CN 202010414067A CN 111625328 B CN111625328 B CN 111625328B
Authority
CN
China
Prior art keywords
mode
register
interrupt
sub
instruction
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
Application number
CN202010414067.5A
Other languages
English (en)
Other versions
CN111625328A (zh
Inventor
胡振波
梁智兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd
Original Assignee
Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd filed Critical Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd
Priority to CN202010414067.5A priority Critical patent/CN111625328B/zh
Publication of CN111625328A publication Critical patent/CN111625328A/zh
Application granted granted Critical
Publication of CN111625328B publication Critical patent/CN111625328B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开适用于RISC‑V架构的中断装置,包括机器模式子模式状态寄存器,用于识别处理器的当前机器模式子模式。本发明直接获取当前机器模式子模式的状态信息,使用方便,提高了效率。一种适用于RISC‑V架构的中断系统及方法,还包括机器模式子模式压栈寄存器,和/或机器模式子模式压栈指令,用于提高寄存器中的值保存的速度,缩短跳转到相应中断子程序入口的时间,提高了效率。

Description

适用于RISC-V架构的中断装置、系统及方法
技术领域
本发明涉及低功耗内核中断处理技术领域,尤其涉及适用于RISC-V架构的中断装置、系统及方法。
背景技术
为了在RISC-V系统中加入低延时、支持向量模式和支持嵌套的中断机制,RISC-V官方已经将CLIC中断机制(Core-Local Interrupt Controller)加入了RISC-V的标准当中。CLIC可以兼容和替换之前存在的CLINT中断机制(Core-Local Interrupt)。
中断机制(Interrupt),即处理器核在顺序执行程序指令流的过程中突然被别的请求打断而中止执行当前的程序,转而去处理别的事情,待其处理完了别的事情,然后重新回到之前程序中断的点继续执行之前的程序指令流。其中,打断处理器执行程序指令流的“别的请求”便称之为中断请求(Interrupt Request),而中断请求的来源则称之为中断源(Interrupt Source),通常情况下,中断源主要来自外围硬件设备。而处理器转去处理“别的事情”便称之为中断服务程序(Interrupt Service Routine,ISR)。
中断处理是一种正常的机制,而非一种错误。处理器收到中断请求之后,需要保护当前程序现场,简称为保护现场。等到处理完中断服务程序之后,处理器需要恢复之前的现场,从而继续执行之前被打断的程序,简称为恢复现场。
通常我们的做法是将某些寄存器状态读出来存到一个通用寄存器中,然后将该通用寄存器存到堆栈中,但是这种做法要消耗两条指令的时间,所以中断处理中保存现场的效率大大降低。
另外,在RISC-V的系统中,处理器内核在机器模式下,可能处于不同的机器模式子模式,包含正常机器模式、异常处理模式、不可屏蔽中断(NMI)处理模式和中断处理模式。然而,程序没法通过某种机制来直接获取当前机器模式子模式的状态信息,软件使用不方便。
发明内容
为了达到上述目的,本发明的技术方案如下:通过发明一种机器模式子模式状态寄存器(以下简称msubm寄存器),用来标识当前处理器所处的机器模式子模式,并在此基础上,通过增加寄存器或改变和/或新定义部分指令,减少指令运行条数,以达到提高msubm寄存器中的值保存的速度,缩短保护现场后跳转到相应中断子程序入口的时间,提高效率的目的。
本发明适用于RISC-V架构的中断装置,包括:机器模式子模式状态寄存器,所述机器模式子模式状态寄存器,用于识别处理器的当前机器模式子模式。
优选地,所述机器模式子模式状态寄存器,包括SUBM字段和PSUBM字段,其中:
所述SUBM字段,用于表示处理器所处的机器模式子模式;
所述PSUBM字段,用于存储处理器进入异常处理模式或不可屏蔽中断处理模式或中断处理模式之前所述SUBM字段的状态。
优选地,所述SUBM字段为所述机器模式子模式状态寄存器上第n比特至字段第n+1比特字段;所述PSUBM字段为所述机器模式子模式状态寄存器上第m比特至字段第m+1比特;
其中,n、n+1、m和m+1均为不大于寄存器位宽的正整数,且n不等于m且不等于m+1,且m不等于n+1。
优选地,所述机器模式子模式,包括:正常机器模式编码为a、中断处理模式编码为b、异常处理模式编码为c和不可屏蔽中断处理模式编码为d,其中a、b、c、d为0至3中任何一个数字,且a≠b≠c≠d。
一种应用上述的适用于RISC-V架构的中断装置的中断系统,还包括机器模式子模式压栈寄存器,和/或机器模式子模式压栈指令,其中:
所述机器模式子模式压栈寄存器,用于通过指令将所述机器模式子模式状态寄存器中的值存入堆栈中;
所述机器模式子模式压栈指令,用于将所述机器模式子模式状态寄存器中的值存入堆栈中。
优选地,所述机器模式子模式压栈寄存器,用于将所述机器模式子模式状态寄存器中的值存入堆栈中,对应的指令为:“csrrwi x0,stackmsubm,offset”,所述指令包含操作符csrrwi,目的操作数x0,csr寄存器stackmsubm,立即数offset。
优选地,所述机器模式子模式压栈指令,用于将所述机器模式子模式状态寄存器中的值存入堆栈中,对应的指令为:“spmsubm offset(sp)”,所述指令包含操作符spmsubm,源操作数sp,立即数offset。
一种适用于RISC-V架构的中断方法,包括如下步骤:
接收中断请求,暂停当前执行的程序指令流;
触发指令,所述指令直接将所述机器模式子模式状态寄存器的值写入堆栈中。
优选地,还包括如下步骤:
跳转到对应中断子程序入口执行;
执行完中断子程序后,将所述机器模式子模式状态寄存器的值从堆栈中恢复;回到被中断的程序流继续执行。
优选地,所述机器模式子模式状态寄存器,用于识别处理器的当前机器模式子模式。
一种电子装置,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的服务器执行时,使得所述服务器执行时实现如上述方法的步骤。
基于上述技术方案,本发明的有益效果是:
(1)、本发明通过增加msubm寄存器,用来指示当前处理器所处的机器模式子模式;
(2)、本发明通过增加了stackmsubm寄存器及新定义csrrwi指令流程,用于在中断响应过程中加速msubm寄存器的保存,将msubm寄存器的保存时间由2个时钟周期缩短为1个时钟周期,从而缩短跳转到相应中断子程序入口的时间;
(3)、本发明通过增加了spmsubm指令,用于在中断响应过程中加速msubm寄存器的保存,将msubm寄存器的保存时间由2个时钟周期缩短为1个时钟周期,从而缩短跳转到相应中断子程序入口的时间。
附图说明
图1为本发明msubm寄存器存信息储格式图;
图2为本发明实施例一公开的指令“csrrwi rd,stackmsubm,offset”运行流程图;
图3为本发明实施例一公开的指令“csrrwi rd,stackmsubm,offset”硬件实现流程图;
图4为本发明实施例二公开的指令“spmsubm offset(rs1)”运行流程图;
图5为本发明一种适用于RISC-V架构的中断方法的方法流程图。
具体实施方式
下面结合具体实施方式对本发明作进一步详细的说明。
本发明提供了一种适用于RISC-V架构的中断装置、系统及方法,其工作原理是通过发明一种机器模式子模式状态寄存器(msubm寄存器),用来指示当前处理器所处的机器模式子模式,并在此基础上,通过增加寄存器或改变部分指令,减少指令运行条数,以达到提高msubm寄存器中的值保存的速度,缩短跳转到相应中断子程序入口的时间,提高效率的目的。本发明通过增加msubm寄存器,用来指示当前处理器所处的机器模式子模式,并在此基础上提出了两种方法加速了msubm寄存器保存的速度。
第一种方法是新增加一个CSR寄存器命名为stackmsubm寄存器,利用该寄存器实现了只用一条CSR指令便可以快速保存msubm寄存器,大大提高了中断响应的速度,具体内容如下:
本方案发明一种适用于RISC-V架构的中断系统,通过重新定义csrrwi指令流程与创新性定义的机器模式子模式状态寄存器,和/或机器模式子模式压栈寄存器,和/或机器模式子模式压栈指令的嵌套使用,实现加速保存中断前寄存器状态/数值的效果。
该发明包括机器模式子模式状态寄存器(以下简称msubm寄存器),和/或机器模式子模式压栈寄存器(以下称stackmsubm寄存器),所述msubm寄存器为CSR寄存器,用于查询处理器当前状态。当发生中断时处理器需要保存该msubm寄存器的值,在中断退出时恢复此msubm寄存器的值。由于处理器内核在机器模式下会处于4种不同的机器模式子模式(包含正常机器模式、异常处理模式、不可屏蔽中断(NMI)处理模式和中断处理模式),4种模式需要用不同字符进行标识,占用msubm寄存器的两个比特,为第n比特至字段第n+1比特。所述msubm寄存器的字段第n比特至字段第n+1比特为当前机器模式子模式字段(以下简称SUBM字段),所述msubm寄存器的字段第m比特至字段第m+1比特为进入异常/NMI/中断之前机器模式子模式字段(以下简称PSUBM字段)。其中n、n+1、m和m+1均为不大于寄存器位宽(常用的有32位或64位)的正整数,且n不等于m且不等于m+1,且m不等于n+1。所述SUBM字段用于表示当前处理器所处的机器模式子模式;所述PSUBM字段用于存储进入异常/NMI/中断之前所述SUBM字段的状态。所述机器模式子模式(SUBM字段)为正常机器模式编码为a、中断处理模式编码为b、异常处理模式编码为c和不可屏蔽中断处理模式编码为d,其中a、b、c、d为0-3中任何一个数字,且a≠b≠c≠d。
所述stackmsubm寄存器,用于通过指令将msubm寄存器中的值存入堆栈中,对应的指令为:“csrrwi x0,stackmsubm,offset”,所述指令包含操作符csrrwi,目的操作数x0,csr寄存器stackmsubm,立即数offset。我们对csrrwi执行流程进行新的定义:当执行“csrrwi x0,stackmsubm,offset”时,当处理器内核发现csrrwi读取的寄存器是stackmsubm寄存器时,处理器内核不会真正的执行RISC-V官方架构定义的csrrwi的操作,而是取出CSR寄存器msubm的值,并将该值直接写入堆栈中,堆栈的地址为:sp寄存器中指定的地址+offset<<2,其中sp是处理器内核的堆栈指针寄存器。
而相比之下,现有技术需要先通过一条指令将CSR寄存器msubm的值读到通用寄存器中,然后再通过一条指令将该通用寄存器的值写入堆栈,也就是说,现有技术需要执行2条指令才能实现将CSR寄存器msubm的值写入堆栈。可以看出,相比现有技术,通过指令“csrrwi x0,stackmsubm,offset”可以将保存CSR寄存器msubm至堆栈的时间由两个时钟周期缩短为一个时钟周期。
第二种方法是新增加一条扩展指令,该指令命名为spmsubm指令,同样是使用一个指令周期的时间便可以快速保存msubm寄存器,具体内容如下:
本发明定义一种扩展指令“保存上文指令”,命名为spmsubm指令,用于通过指令将所述msubm寄存器中的值存入堆栈中。用于将msubm中的值存入堆栈中的指令为:“spmsubmoffset(sp)”,所述指令包含操作符spmsubm,源操作数sp,立即数offset。当执行“spmsubmoffset(sp)”时,处理器内核会取出CSR寄存器msubm的值,并将该值直接写入堆栈中,堆栈的地址为:sp寄存器中指定的地址+offset<<2,其中sp是处理器内核的堆栈指针寄存器。而相比之下,现有技术需要先通过一条指令将CSR寄存器msubm的值读到通用寄存器中,然后再通过一条指令将该通用寄存器的值写入堆栈,也就是说,现有技术需要执行2条指令才能实现将CSR寄存器msubm的值写入堆栈。可以看出,相比现有技术,通过指令“spmsubmoffset(sp)”,可以将保存CSR寄存器msubm至堆栈的时间由两个时钟周期缩短为一个时钟周期。
如图1所示,msubm寄存器不是官方标准指令架构中的寄存器,该寄存器主要是用来指示当前处理器所处的机器模式子模式,方便用户调试,当发生中断时处理器需要保存该msubm寄存器的值,在中断退出时恢复此msubm寄存器的值。msubm寄存器是用来查询机器模式下处理器的状态寄存器,当发生中断之后我们需要保存该寄存器以记录当前处理器的状态,当退出中断之后再将该寄存器恢复。
实施例一
csrrwi指令是RISC-V官方架构中定义的一种CSR指令,用于操作内核的CSR寄存器(控制和状态寄存器)。csrrwi指令的格式为“csrrwi rd,csr,imm”,其中csrrwi是该指令的名称,rd是该指令的目的操作数寄存器,csr是内核中某一个控制状态寄存器,imm是一个长度为K(图中示例为5)比特的立即数。csrrwi完成两项操作:1)将csr索引的CSR寄存器的值读出,写回目的操作数寄存器中,2)将5比特立即数(高位补0扩展)的值写入csr索引的CSR寄存器中。
适用于RISC-V架构的中断系统,通过csrrwi指令与创新性定义的机器模式子模式状态寄存器,和/或机器模式子模式压栈寄存器,和/或机器模式子模式压栈指令的嵌套使用,实现加速保存中断前寄存器状态/数值的效果。
进一步,所述机器模式子模式状态寄存器为msubm寄存器,所述msubm寄存器,用于查询处理器当前状态;所述机器模式子模式压栈寄存器为stackmsubm寄存器,所述stackmsubm寄存器用于通过指令将msubm寄存器中的值存入堆栈中;所述机器模式子模式压栈指令可以为“csrrwix0,stackmsubm,offset”。
进一步,所述msubm寄存器的字段第6比特至字段第7比特为SUBM字段,所述msubm寄存器的字段第8比特至字段第9比特为PSUBM字段。所述PSUBM字段用于存储进入异常/NMI/中断之前SUBM字段的状态。当发生中断时处理器需要保存该msubm寄存器的值,在中断退出时恢复此msubm寄存器的值。
进一步,所述SUBM字段用于表示处理器内核中的Machine Mode可能处于四种不同的状态,将这四种不同的状态称为机器模式子模式,这四种子模式分别为:正常机器模式编码为0、异常处理模式编码为2、不可屏蔽中断(NMI)处理模式编码为3、中断处理模式编码为1,SUBM字段就是用来存储编码,指示当前处理器处于哪一种子模式状态。其中:
所述正常机器模式,处理器内核被复位之后便处于此子模式下,在处理器内核复位之后如果不产生异常、不可屏蔽中断(NMI)、中断则一直正常运行在此模式之下;
所述异常处理模式,表示当处理器响应异常后处理器内核处于此状态;
所述不可屏蔽中断(NMI)处理模式,表示当处理器响应不可屏蔽中断(NMI)后处理器内核处于此状态;
所述中断处理模式,表示当处理器响应中断后处理器内核处于此状态。
进一步,所述stackmsubm寄存器中,用于将msubm寄存器中的值存入堆栈中的指令为:“csrrwi x0,stackmsubm,offset”。指令“csrrwi x0,stackmsubm,offset”的运行流程如图2所示:处理器内核硬件译码出当前指令为CSR指令csrrwi,且硬件检测对应的CSR寄存器为stackmsubm寄存器;处理器内核不会真正的执行RISC-V官方架构定义的csrrwi的操作,而是取出CSR寄存器msubm的值,并通过硬件控制将该值直接写入堆栈,堆栈的地址为:sp寄存器中指定的地址+offset<<2,其中offset是csrrwi指令编码中的5bit立即数;硬件在将msubm寄存器的值写入堆栈的同时,会自动将msubm寄存器的值更新至rd寄存器中(如果rd为x0,则不会更新)。而相比之下,现有技术需要先通过一条指令将CSR寄存器msubm的值读到通用寄存器中,然后再通过一条指令将该通用寄存器的值写入堆栈,也就是说,现有技术需要执行2条指令才能实现将CSR寄存器msubm的值写入堆栈。可以看出,相比现有技术,通过指令“csrrwi x0,stackmsubm,offset”可以将保存CSR寄存器msubm至堆栈的时间由两个时钟周期缩短为一个时钟周期。
如图3所示,当执行“csrrwi x0,stackmsubm,offset”指令时,首先硬件会经过译码模块(decode),经过译码模块进行译码之后,得到一个信号名为csr_stackmsubm信号,表示当前是在进行一个stackmsubm的操作,这个信号将分为两路:一路进入写数据选择通路,另一路进入地址选择通路。
对于写数据通路,当csr_stackmsub为1那么将选择csr_msubm为写数据,这里csr_msubm就是msubm寄存器的值,如果csr_stackmsubm为0那么将正常选择agu的操作数,最后将选出来的数据送给algnst_wdata最后送给agu模块写到存储器中。
对于写数据地址,当csr_stackmsubm为1那么将选择x2(sp)寄存器的值为写数据地址,如果csr_stackmsubm为0那么将正常选择译码出来的rv32_rs1操作数的值为写数据地址,最后送给agu进行处理。
实施例二
适用于RISC-V架构的中断系统,增加msubm寄存器,所述msubm寄存器,用于查询处理器当前状态,和/或增加spmsubm指令,所述spmsubm指令用于通过指令将msubm寄存器中的值存入堆栈中。
进一步,所述msubm寄存器的字段第6比特至字段第7比特为SUBM字段,所述msubm寄存器的字段第8比特至字段第9比特为PSUBM字段。当发生中断时处理器需要保存该msubm寄存器的值,在中断退出时恢复此msubm寄存器的值。
进一步,所述SUBM字段用于表示处理器内核中的Machine Mode可能处于四种不同的状态,将这四种不同的状态称为机器模式子模式,这四种子模式分别为:正常机器模式编码为0、异常处理模式编码为2、不可屏蔽中断(NMI)处理模式编码为3、中断处理模式编码为1,SUBM字段就是用来存储编码,指示当前处理器处于哪一种子模式状态。其中:
所述正常机器模式,处理器内核被复位之后便处于此子模式下,在处理器内核复位之后如果不产生异常、不可屏蔽中断(NMI)、中断则一直正常运行在此模式之下;
所述异常处理模式,表示当处理器响应异常后处理器内核处于此状态;
所述不可屏蔽中断(NMI)处理模式,表示当处理器响应不可屏蔽中断(NMI)后处理器内核处于此状态;
所述中断处理模式,表示当处理器响应中断后处理器内核处于此状态。进一步,所述PSUBM字段,存储进入异常/NMI/中断之前SUBM字段的状态。
进一步,用于将msubm寄存器中的值存入堆栈中的指令为:“spmsubmoffset(sp)”。指令“spmsubm offset(sp)”的运行流程如图4所示:处理器内核硬件译码出当前指令为spmsubm;处理器内核硬件取出CSR寄存器msubm的值,并通过硬件控制将该值直接写入堆栈,堆栈的地址为:rs1寄存器中指定的地址+offset<<2,其中offset是spmsubm指令编码中立即数。而相比之下,现有技术需要先通过一条指令将CSR寄存器msubm的值读到通用寄存器中,然后再通过一条指令将该通用寄存器的值写入堆栈,也就是说,现有技术需要执行2条指令才能实现将CSR寄存器msubm的值写入堆栈。可以看出,相比现有技术,通过指令“spmsubm offset(sp)”可以将保存CSR寄存器msubm至堆栈的时间由两个时钟周期缩短为一个时钟周期。
其中,实际使用时,rs1寄存器一般为sp寄存器。
实施例三
如图5所示,一种适用于RISC-V架构的中断方法,包括如下步骤:
接收中断请求,暂停当前执行的程序指令流;
触发指令,所述指令直接将msubm寄存器的值写入堆栈中;
跳转到对应中断子程序入口执行;
执行完中断子程序后,将msubm寄存器的值从堆栈中恢复;回到被中断的程序流继续执行。
进一步的,msubm寄存器,用来标识当前处理器所处的机器模式子模式。
进一步的,用于将msubm寄存器中的值存入堆栈中的指令为:“spmsubmoffset(sp)”。指令“spmsubm offset(sp)”的运行流程如图4所示:处理器内核硬件译码出当前指令为spmsubm;处理器内核硬件取出CSR寄存器msubm的值,并通过硬件控制将该值直接写入堆栈,堆栈的地址为:rs1寄存器中指定的地址+offset<<2,其中offset是spmsubm指令编码中立即数。而相比之下,现有技术需要先通过一条指令将CSR寄存器msubm的值读到通用寄存器中,然后再通过一条指令将该通用寄存器的值写入堆栈,也就是说,现有技术需要执行2条指令才能实现将CSR寄存器msubm的值写入堆栈。可以看出,相比现有技术,通过指令“spmsubm offset(sp)”可以将保存CSR寄存器msubm至堆栈的时间由两个时钟周期缩短为一个时钟周期。
其中,实际使用时,rs1寄存器一般为sp寄存器。
进一步的,通过添加stackmsubm寄存器,对于stackmsubm寄存器,用于将msubm寄存器中的值存入堆栈中的指令为:“csrrwi x0,stackmsubm,offset”。如图3所示,执行“csrrwi x0,stackmsubm,offset”指令时,首先硬件会经过译码模块(decode),经过译码模块进行译码之后,得到一个信号名为csr_stackmsubm信号,表示当前是在进行一个stackmsubm的操作,这个信号将分为两路:一路进入写数据选择通路,另一路进入地址选择通路,其中:
对于写数据通路,当csr_stackmsub为1那么将选择csr_msubm为写数据,这里csr_msubm就是msubm寄存器的值,如果csr_stackmsubm为0那么将正常选择agu的操作数,最后将选出来的数据送给algnst_wdata最后送给agu模块写到存储器中。
对于写数据地址,当csr_stackmsubm为1那么将选择x2(sp)寄存器的值为写数据地址,如果csr_stackmsubm为0那么将正常选择译码出来的rv32_rs1操作数的值为写数据地址,最后送给agu进行处理。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (8)

1.适用于RISC-V架构的中断装置,其特征在于,包括:机器模式子模式状态寄存器,所述机器模式子模式状态寄存器,用于识别处理器的当前机器模式子模式,所述机器模式子模式,包括:正常机器模式编码为a、中断处理模式编码为b、异常处理模式编码为c和不可屏蔽中断处理模式编码为d,其中a、b、c、d为0至3中任何一个数字,且a≠b≠c≠d,所述机器模式子模式状态寄存器,包括SUBM字段和PSUBM字段,其中:
所述SUBM字段,用于表示处理器所处的机器模式子模式,所述SUBM字段为所述机器模式子模式状态寄存器上第n比特至字段第n+1比特字段;所述PSUBM字段为所述机器模式子模式状态寄存器上第m比特至字段第m+1比特;其中,n、n+1、m和m+1均为不大于寄存器位宽的正整数,且n不等于m且不等于m+1,且m不等于n+1;
所述PSUBM字段,用于存储处理器进入异常处理模式或不可屏蔽中断处理模式或中断处理模式之前所述SUBM字段的状态。
2.一种应用权利要求1所述的适用于RISC-V架构的中断装置的中断系统,其特征在于,还包括机器模式子模式压栈寄存器,和/或机器模式子模式压栈指令,其中:
所述机器模式子模式压栈寄存器,用于通过指令将所述机器模式子模式状态寄存器中的值存入堆栈中;
所述机器模式子模式压栈指令,用于将所述机器模式子模式压栈寄存器中的值存入堆栈中。
3.根据权利要求2所述的适用于RISC-V架构的中断系统,其特征在于,所述机器模式子模式压栈寄存器,用于将所述机器模式子模式状态寄存器中的值存入堆栈中,对应的指令为:“csrrwi x0,stackmsubm,offset”,所述指令包含操作符csrrwi,目的操作数x0,csr寄存器stackmsubm,立即数offset。
4.根据权利要求2所述的适用于RISC-V架构的中断系统,其特征在于,所述机器模式子模式压栈指令,用于将所述机器模式子模式状态寄存器中的值存入堆栈中,对应的指令为:“spmsubm offset(sp)”,所述指令包含操作符spmsubm,源操作数sp,立即数offset。
5.应用权利要求2至4任意一项所述的适用于RISC-V架构的中断系统的中断方法,其特征在于,包括如下步骤:
接收中断请求,暂停当前执行的程序指令流;
触发指令,所述指令直接将机器模式子模式状态寄存器的值写入堆栈中;
跳转到对应中断子程序入口执行;
执行完中断子程序后,将所述机器模式子模式状态寄存器的值从堆栈中恢复;回到被中断的程序流继续执行。
6.根据权利要求5所述的中断方法,其特征在于,所述机器模式子模式状态寄存器,用于识别处理器的当前机器模式子模式。
7.一种电子装置,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求5至6所述方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的服务器执行时,使得所述服务器执行时实现如权利要求5至6所述方法的步骤。
CN202010414067.5A 2020-05-15 2020-05-15 适用于risc-v架构的中断装置、系统及方法 Active CN111625328B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010414067.5A CN111625328B (zh) 2020-05-15 2020-05-15 适用于risc-v架构的中断装置、系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010414067.5A CN111625328B (zh) 2020-05-15 2020-05-15 适用于risc-v架构的中断装置、系统及方法

Publications (2)

Publication Number Publication Date
CN111625328A CN111625328A (zh) 2020-09-04
CN111625328B true CN111625328B (zh) 2023-06-02

Family

ID=72258946

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010414067.5A Active CN111625328B (zh) 2020-05-15 2020-05-15 适用于risc-v架构的中断装置、系统及方法

Country Status (1)

Country Link
CN (1) CN111625328B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112559047B (zh) * 2021-02-22 2021-05-14 南京沁恒微电子股份有限公司 一种基于risc-v的中断控制系统及方法
CN117539544B (zh) * 2024-01-04 2024-03-29 南京中科微电子有限公司 基于risc-v指令集的中断控制架构及控制方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2165382A1 (en) * 1995-12-15 1997-06-16 William Sim Video imaging capturing system
CN110007964A (zh) * 2019-03-15 2019-07-12 芯来科技(武汉)有限公司 用于risc-v架构的中断系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7478224B2 (en) * 2005-04-15 2009-01-13 Atmel Corporation Microprocessor access of operand stack as a register file using native instructions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2165382A1 (en) * 1995-12-15 1997-06-16 William Sim Video imaging capturing system
CN110007964A (zh) * 2019-03-15 2019-07-12 芯来科技(武汉)有限公司 用于risc-v架构的中断系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
孙康 ; 沈海斌 ; 王继民 ; 潘雪增 ; .基于映像寄存器构建的实时操作系统内核.清华大学学报(自然科学版).2007,(S2),全文. *

Also Published As

Publication number Publication date
CN111625328A (zh) 2020-09-04

Similar Documents

Publication Publication Date Title
EP3754492B1 (en) Interrupt system for risc-v architecture
JP5512803B2 (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
JP6807383B2 (ja) 転送プレフィックス命令
US6671827B2 (en) Journaling for parallel hardware threads in multithreaded processor
US5790844A (en) Millicode load and test access instruction that blocks interrupts in response to access exceptions
JP4703718B2 (ja) 選択的サブルーチンリターン構造
CN111625328B (zh) 适用于risc-v架构的中断装置、系统及方法
KR100983135B1 (ko) 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법
CN114461274A (zh) 指令处理装置、方法、芯片、计算机设备以及存储介质
US8489867B2 (en) Monitoring events and incrementing counters associated therewith absent taking an interrupt
US6347368B1 (en) Microcomputing device for exchanging data while executing an application
US4124892A (en) Data processing systems
US7937525B2 (en) Method and apparatus for decoding a virtual machine control structure identification
CN114902336B (zh) 具有子字段最小和最大箝位的内容可寻址存储器
US7890740B2 (en) Processor comprising a first and a second mode of operation and method of operating the same
JPS58178464A (ja) 並列演算処理装置
JPH056281A (ja) 情報処理装置
KR20080044652A (ko) Cpu에서의 스택을 이용한 디버깅 방법
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
JP2000029690A (ja) デ―タ処理の方法および装置
KR20170065845A (ko) 프로세서 및 제어 방법
JP2536615B2 (ja) 情報処理装置
JP3931646B2 (ja) 情報処理装置
JP3715505B2 (ja) 特定用途向け演算命令を有する計算機およびその計算機の計算方法
JPH04178739A (ja) マイクロプロセッサ

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