CN111782269B - 一种中断处理方法及中断处理设备 - Google Patents
一种中断处理方法及中断处理设备 Download PDFInfo
- Publication number
- CN111782269B CN111782269B CN202010497623.XA CN202010497623A CN111782269B CN 111782269 B CN111782269 B CN 111782269B CN 202010497623 A CN202010497623 A CN 202010497623A CN 111782269 B CN111782269 B CN 111782269B
- Authority
- CN
- China
- Prior art keywords
- floating point
- instruction
- point register
- interrupt processing
- processing unit
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 139
- 238000003672 processing method Methods 0.000 title claims abstract description 27
- 238000007667 floating Methods 0.000 claims abstract description 228
- 238000013500 data storage Methods 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims description 22
- 238000012544 monitoring process Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 abstract description 22
- 238000004891 communication Methods 0.000 abstract description 2
- 238000003860 storage Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 238000003825 pressing Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明涉及通信领域,公开一种中断处理方法及中断处理设备,包括:中断处理单元监测译码器译码后的指令是否涉及浮点寄存器;当中断处理单元确定指令涉及浮点寄存器时,对指令涉及的浮点寄存器进行保护。中断处理单元监测译码器每次译码是否有浮点寄存器的被当前译码的指令所操作,这里的操作是指:该指令涉及到浮点寄存器与数据存储单元存在数据读写,或者浮点寄存器之间是否存在数据交换;一旦中断处理单元确定译码器译码后的指令涉及某个浮点寄存器,中断处理单元对该浮点寄存器进行保护。因此,通过中断处理单元仅对使用到的浮点寄存器进行现场保护,而对于某些中断处理函数不涉及到浮点寄存器操作时,无需保存浮点寄存器,从而提高实时性。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种中断处理方法及中断处理设备。
背景技术
RISC-V CPU(risk-five中央处理器)技术作为一种开源新型指令集架构技术目前在业界较为流行;对于常见的32bit RISC-V CPU拥有32个通用寄存器(GPR)以及32个浮点寄存器(FGPR);而对于64bit则拥有64个通用寄存器(GPR)以及64个浮点寄存器(FGPR);较多的寄存器使得RISC-V CPU不能在处理实时性要求较高的场景有很好的表现。原因在于,当外设中断来临时,必须通过软件实现对RISC-V CPU所有通用寄存器以及浮点寄存器(32个通用寄存器,32个浮点寄存器或者64个通用寄存器,64个浮点寄存器)中断现场保护以及恢复。因此,通用寄存器和浮点寄存器越多,RISC-V CPU花在现场保护以及恢复的时间就越长、导致实时性变差。
发明内容
本发明公开了一种中断处理方法及中断处理设备,用于确保中断处理设备满足实时性要求较高场景,扩大了中断处理设备的应用范围。
为达到上述目的,本发明提供以下技术方案:
第一方面,本发明实施例提供一种中断处理方法,包括:
中断处理单元监测译码器译码后的指令是否涉及浮点寄存器;
当所述中断处理单元确定所述指令涉及浮点寄存器时,对所述指令涉及的浮点寄存器进行保护。
上述中断处理方法中,在中断模式下,中断处理单元监测译码器每次译码是否有浮点寄存器的被当前译码的指令所操作,一旦中断处理单元确定译码器译码后的指令涉及某个浮点寄存器,中断处理单元对该指令涉及的浮点寄存器进行保护。
因此,上述中断处理方法中通过中断处理单元仅对使用到的浮点寄存器进行现场保护,而相比于系统软件不筛选寄存器而是将所有通用寄存器和浮点寄存器无差别进行现场保护,上述中断处理方法减少了浮点寄存器的保存数量,从而提高了系统的实时性。
在一种可能的实现方式中,所述中断处理单元监测译码器译码后的指令是否涉及浮点寄存器,具体包括:
所述中断处理单元判断所述译码器译码后的指令中的操作数是否是浮点寄存器对应的操作数;
如果是,则判定所述指令涉及浮点寄存器;否则,判定所述指令未涉及浮点寄存器。
在一种可能的实现方式中,所述中断处理单元对所述指令涉及到的浮点寄存器进行保护,具体包括:
所述中断处理单元将所述指令涉及的浮点寄存器的数据以及用于索引所述数据的所述浮点寄存器的标识,存放在寄存器专属数据存放单元内。
在一种可能的实现方式中,所述中断处理单元对所述指令涉及到的浮点寄存器进行保护之后,还包括:
当所述中断处理单元监测到所述译码器译码后的指令为退出中断指令时,依据用于索引所述数据的所述浮点寄存器的标识,将所述寄存器专属数据存放单元中的数据重新存入对应的所述浮点寄存器中。
在一种可能的实现方式中,所述译码器译码后的指令为中断指令;
当所述中断处理单元确定所述指令涉及浮点寄存器时,对所述指令涉及的浮点寄存器进行保护之前,还包括:
确定所述寄存器专属数据存放单元中,未存储针对所述中断指令涉及的浮点寄存器的数据。
在一种可能的实现方式中,所述中断处理单元监测译码器译码后的指令是否涉及浮点寄存器之后,还包括:
若所述寄存器专属数据存放单元中已存储针对所述中断指令涉及的浮点寄存器的数据,则放弃对所述指令涉及的浮点寄存器进行保护。
在一种可能的实现方式中,所述中断处理单元包括自动压/出栈单元和异常处理单元;
所述中断处理单元监测译码器译码后的指令是否涉及浮点寄存器,包括:
所述自动压/出栈单元监测译码器译码后的指令是否涉及浮点寄存器;
当所述中断处理单元确定所述指令涉及浮点寄存器时,对所述指令涉及的浮点寄存器进行保护,具体包括:
当所述自动压/出栈单元确定所述指令涉及浮点寄存器时,向所述异常处理单元发出请求,并在接收所述异常处理单元的反馈后,对所述指令涉及的浮点寄存器进行保护。
第二方面,本发明实施例提供一种中断处理设备,包括:中断处理单元、译码器和浮点寄存器;
所述译码器用于对接收到的指令进行译码;
所述浮点寄存器用于存储数据;
所述中断处理单元用于监测所述译码器译码后的指令是否涉及浮点寄存器;当确定所述指令涉及浮点寄存器时,对所述指令涉及的浮点寄存器进行保护。
本发明实施例提供的一种中断处理设备用于上述中断处理方法的实现,能够达到上述中断处理方法所能够达到的有益效果,此处不再重复说明。
在一种可能的实现方式中,所述中断处理单元具体用于:
判断所述译码器译码后的指令中的操作数是否是浮点寄存器对应的操作数;
如果是,则判定所述指令涉及浮点寄存器;否则,判定所述指令未涉及浮点寄存器。
在一种可能的实现方式中,所述中断处理设备还包括寄存器专属数据存放单元;
所述中断处理单元具体用于:
将所述指令涉及的浮点寄存器的数据以及用于索引所述数据的所述浮点寄存器的标识,存放在所述寄存器专属数据存放单元内。
在一种可能的实现方式中,所述中断处理单元还用于:
当所述中断处理单元监测到所述译码器译码后的指令为退出中断指令时,依据用于索引所述数据的所述浮点寄存器的标识,将所述寄存器专属数据存放单元中的数据重新存入对应的所述浮点寄存器中。
在一种可能的实现方式中,所述译码器译码后的指令为中断指令;
所述中断处理单元还用于:
当所述中断处理单元确定所述指令涉及浮点寄存器时,若确定所述寄存器专属数据存放单元中,未存储针对所述中断指令涉及的浮点寄存器的数据,则对所述指令涉及的浮点寄存器进行保护。
在一种可能的实现方式中,所述中断处理单元还用于:
在所述中断处理单元监测译码器译码后的指令是否涉及浮点寄存器之后,若所述寄存器专属数据存放单元中已存储针对所述中断指令涉及的浮点寄存器的数据,则放弃对所述指令涉及的浮点寄存器进行保护。
在一种可能的实现方式中,所述中断处理单元包括自动压/出栈单元和异常处理单元;
所述自动压/出栈单元用于:
监测译码器译码后的指令是否涉及浮点寄存器,当确定所述指令涉及浮点寄存器时,向所述异常处理单元发出请求,并在接收所述异常处理单元的反馈后,对所述指令涉及的浮点寄存器进行保护;
所述异常处理单元用于:
接收所述自动压/出栈单元发出的请求,根据所述请求终止执行当前指令,并向所述自动压/出栈单元进行反馈。
附图说明
图1为本发明实施例提供的一种中断处理方法的流程示意图;
图2为图1中S101的流程示意图;
图3为图1中S102的流程示意图;
图4为本发明实施例提供的另一种中断处理方法的流程示意图;
图5为本发明实施例提供的一种中断处理设备的结构框图;
图6为本发明实施例提供的另一种中断处理设备的结构框图;
图7为本发明实施例提供的另一种中断处理设备的结构框图;
图8为本发明实施例提供的另一种中断处理设备中自动压/出栈单元的一种功能示意图;
图9为本发明实施例提供的另一种中断处理设备中自动压/出栈单元的另一种功能示意图。
具体实施方式
为了使本领域普通人员更好地理解本发明的技术方案,下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。
需要说明的是,以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
RISC-V CPU取指器从指令存放单元中获取指令(指令存放单元可以是非易失性存储介质,如Embedded Flash(嵌入式闪存),也可以是易失性存储介质如SRAM(StaticRandom-Access Memory,静态随机存取存储器)、SDRAM(synchronous dynamic random-access memory,同步动态随机存取内存),或者DDR(Double Data Rate,双倍速率同步动态随机存储器));取指完成后,RISC-V CPU译码器负责完成该所取指令的译码,译码完成后交于执行器执行该指令。同时,根据执行指令的结果,完成通用寄存器或者浮点寄存器与数据存放单元的内容交换。这里的数据存放单元是指易失性存储介质如SRAM、SDRAM或者DDR。RISC-V CPU的CPU模式包括正常模式和中断模式,当外设中断来临时RISC-V CPU处于中断模式下,需要对该中断进行处理。但是,较多的寄存器使得RISC-V CPU不能在处理实时性要求较高的场景有很好的表现。原因在于,当外设中断来临时,必须通过软件实现对RISC-VCPU所有通用寄存器以及浮点寄存器(32个通用寄存器,32个浮点寄存器或者64个通用寄存器,64个浮点寄存器)中断现场保护以及恢复。因此,GPR和FGPR越多,RISC-V CPU进行现场保护以及恢复的时间就越长、导致实时性变差。
基于上述问题,本发明实施例提供了一种中断处理方法,如图1所示,该方法包括如下步骤:
S101、中断处理单元监测译码器译码后的指令是否涉及浮点寄存器;
S102、当中断处理单元确定指令涉及浮点寄存器时,对指令涉及的浮点寄存器进行保护;
S103、当中断处理单元监测到译码器译码后的指令为退出中断指令时,对指令涉及的浮点寄存器进行恢复。
上述S101中,当RISC-V CPU处于中断模式时,中断处理单元监测译码器每次译码是否有浮点寄存器的被当前译码的指令所操作,这里的操作是指:该指令涉及到浮点寄存器与数据存储单元存在数据读写,或者浮点寄存器之间是否存在数据交换。
上述S102中,一旦中断处理单元确定译码器译码后的指令涉及某个浮点寄存器,中断处理单元对该指令涉及的浮点寄存器进行保护。
上述S103中,中断处理单元对指令涉及到的浮点寄存器进行保护之后,当中断处理单元监测到译码器译码后的指令为退出中断指令时,对该指令涉及的浮点寄存器进行恢复。
因此,上述中断处理方法中通过中断处理单元仅对使用到的浮点寄存器进行现场保护及恢复,而对于某些中断处理函数不涉及到浮点寄存器操作时,无需保存浮点寄存器,从而提高实时性。
进一步地,断处理单元包括自动压/出栈单元(Auto-Un/Stacking Unit,AUSU)和异常处理单元;
上述S101中,自动压/出栈单元监测译码器译码后的指令是否涉及浮点寄存器;
上述S102中,当自动压/出栈单元确定指令涉及浮点寄存器时,向异常处理单元发出请求,并在接收异常处理单元的反馈后,对指令涉及的浮点寄存器进行保护。
上述S103中,当自动压/出栈单元监测到译码器译码后的指令为退出中断指令时,对该指令涉及的浮点寄存器进行恢复。
这里需要说明的是,自动压/出栈单元的功能介入只发生在RISC-V CPU处于中断模式时,在中断模式下,自动压/出栈单元监测译码器译码后的指令是否涉及浮点寄存器,当自动压/出栈单元确定上述指令涉及浮点寄存器时,向异常处理单元发出请求,并在接收异常处理单元的反馈后,对上述指令涉及的浮点寄存器进行保护及恢复。
具体地,下面针对上述中断处理方法中S101进行说明:
如图2所示,中断处理单元监测译码器译码后的指令是否涉及浮点寄存器,具体包括如下步骤:
S201、中断处理单元判断译码器译码后的指令中的操作数是否是浮点寄存器对应的操作数;
如果是,则执行S202;否则,执行S203;
S202、判定指令涉及浮点寄存器;
S203、判定指令未涉及浮点寄存器。
这里需要说明的是,指令通常是由16位或者32位0或者1组成。CPU会解析一些0和1得到操作码和操作数,操作数对应数据和地址。自动压/出栈单元在中断模式下监测译码器每次译码是否有浮点寄存器被当前译码的指令所操作,这里的指令是由操作码和操作数共同确定的,每个浮点寄存器与其对应的操作数是一一对应的;这里的操作是指:该指令涉及到浮点寄存器与数据存储单元存在数据读写,或者浮点寄存器之间是否存在数据交换等。
在本发明的一个具体实施例中,中断处理单元通过如下方式监测译码器译码后的指令是否涉及浮点寄存器:
若中断处理单元判断译码器译码后的指令中的操作数是浮点寄存器对应的操作数,则判定上述指令涉及浮点寄存器,中断处理单元对该浮点寄存器进行现场保护;若中断处理单元判断译码器译码后的指令中的操作数不是浮点寄存器对应的操作数,则判定上述指令未涉及浮点寄存器,中断处理单元不会对该浮点寄存器进行现场保护,从而提高实时性。
这里需要说明的是,译码器译码后的指令为中断指令,即该指令为中断过程中的指令。
具体地,下面针对上述中断处理方法中S102进行说明:
如图3所示,中断处理单元对指令涉及到的浮点寄存器进行保护,具体包括如下步骤:
S301、确定寄存器专属数据存放单元中,未存储针对指令涉及的浮点寄存器的数据;
S302、中断处理单元将指令涉及的浮点寄存器的数据以及用于索引数据的浮点寄存器的标识,存放在寄存器专属数据存放单元内;
S303、若寄存器专属数据存放单元中已存储针对指令涉及的浮点寄存器的数据,则放弃对指令涉及的浮点寄存器进行保护。
上述S302中,中断处理单元通过如下方式对指令涉及到的浮点寄存器进行保护:
中断处理单元将译码器中指令所涉及到的浮点寄存器的数据以及用于索引上述数据的浮点寄存器标识存放在寄存器专属数据存放单元中(该存放单元为易失性存储介质)。每一个用于索引上述数据的浮点寄存器标识对应一个浮点寄存器名称(如:FGPR0,FGPR1,FGPRx)以及该浮点寄存器(如:FGPRx)在寄存器专属数据存放单元的地址值(如:地址x);此过程,称之为浮点寄存器的现场保护。
上述S301和S303确保,当一个中断发生时中断处理单元不会对同一中断过程中译码器译码后的不同指令得出的相同浮点寄存器重复进行现场保护,以提高实时性。具体采用以下方式确认:
同一中断过程中,中断处理单元对指令涉及的浮点寄存器进行保护之前需要确定寄存器专属数据存放单元中未存储针对该中断指令涉及的浮点寄存器的数据,并在中断处理单元确定寄存器专属数据存放单元中已存储针对上述浮点寄存器的数据后,放弃对另一指令涉及的相同浮点寄存器进行保护。
具体地,RISC-V CPU的软件中断处理函数通常涉及到多个函数的调用,如,函数A调用子函数B,函数B又调用子函数C等。函数A,使用了某一个浮点寄存器(举例如FGPR3),同时,子函数B,C完全有可能同样使用FGPR3。但是,函数A、B、C的调用过程完成处于同一个外设IP中断中,即,RISC-V CPU在执行A时,执行B、C时,中断没有退出时,中断处理单元就不会对FGPR3进行重复保存。
具体地,下面针对上述中断处理方法中S103进行说明:
当中断处理单元监测到译码器译码后的指令为退出中断指令时,对指令涉及的浮点寄存器进行恢复,具体包括如下步骤:
中断处理单元将存放在寄存器专属数据存放单元中的浮点寄存器的数据依据用于索引数据的浮点寄存器的标识,将寄存器专属数据存放单元中的数据重新存入对应的浮点寄存器中。
上述步骤中,中断处理单元对指令涉及到的浮点寄存器进行保护之后,当中断处理单元监测到译码器译码后的指令为退出中断指令时,中断处理单元将存放在寄存器专属数据存放单元中的浮点寄存器的数据依据用于索引上述数据的浮点寄存器标识存放在对应的浮点寄存器中。这种索引标识的方式方便中断结束能将寄存器专属数据存放单元中存放的数据快速恢复至对应的浮点寄存器中。
图4为本发明实施例提供的一种中断处理方法的流程示意图,如图4所示,包括如下步骤:
S401、自动压/出栈单元采用预设周期,检测中央处理器模式;
S402、判断当前中央处理器模式是否为正常模式,如果是,则执行S403;否则,执行S404;
S403、记录当前中央处理器模式;
S404、判断当前中央处理器模式是否为中断模式,如果是,则执行S403和S405;否则,执行S401;
S405、自动压/出栈单元判断译码器译码后的指令是否涉及浮点寄存器;如果是,则执行S406;否则,继续执行S405;
S406、自动压/出栈单元向异常处理单元发出请求,并接收异常处理单元的反馈;
S407、根据异常处理单元的反馈判断寄存器专属数据存放单元中,是否存储针对指令涉及的浮点寄存器的数据;如果是,则执行S408;否则,执行S409;
S408、放弃对指令涉及的浮点寄存器进行保护,并继续执行S407;
S409、自动压/出栈单元将指令涉及的浮点寄存器的数据以及用于索引数据的浮点寄存器的标识,存放在寄存器专属数据存放单元内;
S410、自动压/出栈单元判断译码器译码后的指令是否为退出中断指令,如果是,则执行S411;否则,继续执行S410;
S411、自动压/出栈单元将存放在寄存器专属数据存放单元中的浮点寄存器的数据依据用于索引数据的浮点寄存器的标识,将寄存器专属数据存放单元中的数据重新存入对应的浮点寄存器中;
S412、在执行S405的同时,自动压/出栈单元采用预设周期,检测并记录中央处理器的中断编号;
S413、判断当前周期中断编号的优先级是否高于前一周期中断编号的优先级;如果是,则先执行S411,后执行S405;否则继续执行S413;
S414、在S411之后,自动压/出栈单元向异常处理单元发出返回请求,并将控制权交还给异常处理单元。
具体地,上述S406中,在满足RISC-V CPU标准架构规范的情况下,在异常处理单元内增设RISC-V CPU异常编号如,18(编号只要大于16即可);负责处理该异常发生时对异常现场的浮点寄存器进行保护及恢复;例如:18号异常是一个异常编号;自动压/出栈单元触发RISC-V CPU异常处理单元中的18号异常。此时,异常处理单元会停止执行指令,同时,将控制权交给自动压/出栈单元,由自动压/出栈单元进行浮点寄存器的现场保护工作。即18异常无需系统软件介入,所有异常处理均由自动压/出栈单元完成,且只涉及到对RISC-VCPU浮点寄存器的保护及恢复,不涉及到通用寄存器的操作。这样目的是,提高系统响应的实时性。
由此可以看出,如果RISC-V CPU的中断服务程序中没有指令设计到对浮点寄存器的操作,那么,自动压/出栈单元不会触发编号18异常,也即是说不需要进行现场保护及恢复;同时,自动压/出栈单元也只会对中断服务程序所用到的部分浮点寄存器进行保存,省去了软件保存所有32个或者64个浮点寄存器的时间;提升了RISC-V CPU系统实时性。
具体地,上述S407~S409中,在同一个中断发生时自动压/出栈单元不会对RISC-VCPU译码器得出的相同浮点寄存器重复进行现场保护。
具体地,上述S410和411中,当RISC-V CPU在中断现场中对退出中断指令(mret指令)进行译码时,自动压/出栈单元会触发编号18异常返回即触发S414。编号18异常返回发生在执行器执行mret指令之前,且该编号18异常返回会将寄存器专属数据存放单元中的浮点寄存器的内容进行恢复。这也称为浮点寄存器的现场恢复;该现场恢复对系统软件不可见,属于自动压/出栈单元的数字逻辑行为。
具体地,上述S412~S413中,这里的中断编号是由基于RISC-V CPU开发的芯片中的外设IP中断号(外设可以理解为串口、USB、I2C等设备)。取值范围一般为:1~1024之间。每一个外设对应于一个中断编号。RISC-V CPU在执行软件代码时,中断的产生是随机的。RISC-V CPU的软件中断处理函数通常涉及到多个函数的调用,如,函数A调用子函数B,函数B又调用子函数C等。函数A,使用了某一个浮点寄存器(举例如,FGPR3),同时,子函数B,C完全有可能同样使用FGPR3。但是,函数A、B、C的调用过程完成处于同一个外设IP中断中,即,RISC-V CPU在执行A时,中断编号为5,执行B、C时,中断没有退出,中断编号仍然为5。自动压/出栈单元检测的中断编号,可以从RISC-V CPU异常处理单元中获取。因此只要自动压/出栈单元检测到中断编号没有发生改变,如中断编号5没有改变,那么,自动压/出栈单元就不会对FGPR3进行重复保存;另外,假定,RISC-V CPU在执行子函数C时,RISC-V的中断编号为5。如果此时,外设IP触发了一个比中断编号5优先级更高的中断,如中断编号4。此时,中断编号4抢占了中断编号5的执行。RISC-V CPU转而执行中断编号4的中断处理函数。中断编号4的中断处理函数中,涉及到函数D、E、F函数的调用,同时,D、E、F完全有可能使用了FGPR3。由于自动压/出栈单元检测到中断编号由5变成了4。那么,D、E、F中使用到的FGPR3将会重新再保存一次。
具体地,上述S414中,在执行器执行mret指令之前,自动压/出栈单元向异常处理单元触发编号18异常返回,即当浮点寄存器现场保护及恢复工作完成后,RISC-V CPU恢复指令执行的控制权。
上述方法中无需系统软件介入,所有异常处理均由自动压/出栈单元完成,且只涉及到对RISC-V CPU浮点寄存器的保护及恢复,不涉及到通用寄存器的操作。同时,自动压/出栈单元也只会对中断服务程序所用到的部分浮点寄存器进行保存,省去了软件保存所有32个或者64个浮点寄存器的时间;这样目的是提高系统响应的实时性。
第二方面,如图5和图6所示,本发明实施例提供一种中断处理设备,包括:中断处理单元100、译码器200和浮点寄存器300;
译码器200用于对接收到的指令进行译码;
浮点寄存器300用于存储数据;
中断处理单元100用于监测译码器200译码后的指令是否涉及浮点寄存器300;当确定指令涉及浮点寄存器300时,对指令涉及的浮点寄存器300进行保护。
本发明实施例提供的一种中断处理设备用于上述中断处理方法的实现,能够达到上述中断处理方法所能够达到的有益效果,此处不再重复说明。
如图6所示,取指器400从指令存放单元500中获取指令(指令存放单元500可以是非易失性存储介质,如Embedded Flash,也可以是易失性存储介质如SRAM、SDRAM,或者DDR);取指完成后,译码器200负责完成该所取指令的译码,译码完成后交于执行器600执行该指令。同时,根据执行指令的结果,完成通用寄存器或者浮点寄存器与数据存放单元700的内容交换。
在一种可能的实现方式中,中断处理单元100具体用于:
判断译码器200译码后的指令中的操作数是否是浮点寄存器300对应的操作数;
如果是,则判定指令涉及浮点寄存器300;否则,判定指令未涉及浮点寄存器300。
在一种可能的实现方式中,中断处理设备还包括寄存器专属数据存放单元;
中断处理单元100具体用于:
将指令涉及的浮点寄存器300的数据以及用于索引数据的浮点寄存器300的标识,存放在寄存器专属数据存放单元内。
在一种可能的实现方式中,中断处理单元100还用于:
当中断处理单元100监测到译码器200译码后的指令为退出中断指令时,依据用于索引数据的浮点寄存器300的标识,将寄存器专属数据存放单元中的数据重新存入对应的浮点寄存器300中。
在一种可能的实现方式中,译码器200译码后的指令为中断指令;
中断处理单元100还用于:
当中断处理单元100确定指令涉及浮点寄存器300时,若确定寄存器专属数据存放单元中,未存储针对中断指令涉及的浮点寄存器300的数据,则对指令涉及的浮点寄存器300进行保护。
在一种可能的实现方式中,中断处理单元100还用于:
在中断处理单元100监测译码器200译码后的指令是否涉及浮点寄存器300之后,若寄存器专属数据存放单元中已存储针对中断指令涉及的浮点寄存器300的数据,则放弃对指令涉及的浮点寄存器300进行保护。
在一种可能的实现方式中,中断处理单元100包括自动压/出栈单元120和异常处理单元110;
自动压/出栈单元120用于:
监测译码器200译码后的指令是否涉及浮点寄存器300,当确定指令涉及浮点寄存器300时,向异常处理单元110发出请求,并在接收异常处理单元110的反馈后,对指令涉及的浮点寄存器300进行保护;
异常处理单元110用于:
接收自动压/出栈单元120发出的请求,根据请求终止执行当前指令,并向自动压/出栈单元120进行反馈。
如图7-图9所示,RISC-V CPU取指器400从指令存放单元500中获取指令(指令存放单元500可以是非易失性存储介质,如Embedded Flash,也可以是易失性存储介质如SRAM、SDRAM,或者DDR);取指完成后,RISC-V CPU译码器200负责完成该所取指令的译码,译码完成后交于执行器600执行该指令。同时,根据执行指令的结果,完成通用寄存器或者浮点寄存器与数据存放单元700的内容交换。这里的数据存放单元700是指易失性存储介质如SRAM、SDRAM或者DDR。RISC-V CPU的CPU模式包括正常模式和中断模式,自动压/出栈单元RV模式模块用以记录当前RISC-V CPU的CPU模式,自动压/出栈单元的功能介入只发生在RISC-V CPU处于中断模式时。
本发明实施例提供一种计算机可存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述中断处理方法的步骤。其中,可存储介质可以为非易失可存储介质。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种中断处理方法,其特征在于,包括:
中断处理单元监测译码器译码后的指令是否涉及浮点寄存器;
当所述中断处理单元确定所述指令涉及浮点寄存器时,对所述指令涉及的浮点寄存器进行保护;
当所述中断处理单元确定所述指令未涉及浮点寄存器时,不会对浮点寄存器进行现场保护。
2.根据权利要求1所述的中断处理方法,其特征在于,所述中断处理单元监测译码器译码后的指令是否涉及浮点寄存器,具体包括:
所述中断处理单元判断所述译码器译码后的指令中的操作数是否是浮点寄存器对应的操作数;
如果是,则判定所述指令涉及浮点寄存器;否则,判定所述指令未涉及浮点寄存器。
3.根据权利要求1所述的中断处理方法,其特征在于,所述中断处理单元对所述指令涉及到的浮点寄存器进行保护,具体包括:
所述中断处理单元将所述指令涉及的浮点寄存器的数据以及用于索引所述数据的所述浮点寄存器的标识,存放在寄存器专属数据存放单元内。
4.根据权利要求3所述的中断处理方法,其特征在于,所述中断处理单元对所述指令涉及到的浮点寄存器进行保护之后,还包括:
当所述中断处理单元监测到所述译码器译码后的指令为退出中断指令时,依据用于索引所述数据的所述浮点寄存器的标识,将所述寄存器专属数据存放单元中的数据重新存入对应的所述浮点寄存器中。
5.根据权利要求3所述的中断处理方法,其特征在于,所述译码器译码后的指令为中断指令;
当所述中断处理单元确定所述指令涉及浮点寄存器时,对所述指令涉及的浮点寄存器进行保护之前,还包括:
确定所述寄存器专属数据存放单元中,未存储针对所述中断指令涉及的浮点寄存器的数据。
6.根据权利要求5所述的中断处理方法,其特征在于,所述中断处理单元监测译码器译码后的指令是否涉及浮点寄存器之后,还包括:
若所述寄存器专属数据存放单元中已存储针对所述中断指令涉及的浮点寄存器的数据,则放弃对所述指令涉及的浮点寄存器进行保护。
7.根据权利要求1~6任一所述的中断处理方法,其特征在于,所述中断处理单元包括自动压/出栈单元和异常处理单元;
所述中断处理单元监测译码器译码后的指令是否涉及浮点寄存器,包括:
所述自动压/出栈单元监测译码器译码后的指令是否涉及浮点寄存器;
当所述中断处理单元确定所述指令涉及浮点寄存器时,对所述指令涉及的浮点寄存器进行保护,具体包括:
当所述自动压/出栈单元确定所述指令涉及浮点寄存器时,向所述异常处理单元发出请求,并在接收所述异常处理单元的反馈后,对所述指令涉及的浮点寄存器进行保护。
8.一种中断处理设备,其特征在于,包括:中断处理单元、译码器和浮点寄存器;
所述译码器用于对接收到的指令进行译码;
所述浮点寄存器用于存储数据;
所述中断处理单元用于监测所述译码器译码后的指令是否涉及浮点寄存器;当确定所述指令涉及浮点寄存器时,对所述指令涉及的浮点寄存器进行保护。
9.根据权利要求8所述的中断处理设备,其特征在于,所述中断处理单元具体用于:
判断所述译码器译码后的指令中的操作数是否是浮点寄存器对应的操作数;
如果是,则判定所述指令涉及浮点寄存器;否则,判定所述指令未涉及浮点寄存器。
10.根据权利要求8所述的中断处理设备,其特征在于,所述中断处理设备还包括寄存器专属数据存放单元;
所述中断处理单元具体用于:
将所述指令涉及的浮点寄存器的数据以及用于索引所述数据的所述浮点寄存器的标识,存放在所述寄存器专属数据存放单元内。
11.根据权利要求10所述的中断处理设备,其特征在于,所述中断处理单元还用于:
当所述中断处理单元监测到所述译码器译码后的指令为退出中断指令时,依据用于索引所述数据的所述浮点寄存器的标识,将所述寄存器专属数据存放单元中的数据重新存入对应的所述浮点寄存器中。
12.根据权利要求10所述的中断处理设备,其特征在于,所述译码器译码后的指令为中断指令;
所述中断处理单元还用于:
当所述中断处理单元确定所述指令涉及浮点寄存器时,若确定所述寄存器专属数据存放单元中,未存储针对所述中断指令涉及的浮点寄存器的数据,则对所述指令涉及的浮点寄存器进行保护。
13.根据权利要求12所述的中断处理设备,其特征在于,所述中断处理单元还用于:
在所述中断处理单元监测译码器译码后的指令是否涉及浮点寄存器之后,若所述寄存器专属数据存放单元中已存储针对所述中断指令涉及的浮点寄存器的数据,则放弃对所述指令涉及的浮点寄存器进行保护。
14.根据权利要求8~13任一所述的中断处理设备,其特征在于,所述中断处理单元包括自动压/出栈单元和异常处理单元;
所述自动压/出栈单元用于:
监测译码器译码后的指令是否涉及浮点寄存器,当确定所述指令涉及浮点寄存器时,向所述异常处理单元发出请求,并在接收所述异常处理单元的反馈后,对所述指令涉及的浮点寄存器进行保护;
所述异常处理单元用于:
接收所述自动压/出栈单元发出的请求,根据所述请求终止执行当前指令,并向所述自动压/出栈单元进行反馈。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010497623.XA CN111782269B (zh) | 2020-06-04 | 2020-06-04 | 一种中断处理方法及中断处理设备 |
PCT/CN2020/140013 WO2021244014A1 (zh) | 2020-06-04 | 2020-12-28 | 一种中断处理方法及中断处理设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010497623.XA CN111782269B (zh) | 2020-06-04 | 2020-06-04 | 一种中断处理方法及中断处理设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111782269A CN111782269A (zh) | 2020-10-16 |
CN111782269B true CN111782269B (zh) | 2023-12-12 |
Family
ID=72753352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010497623.XA Active CN111782269B (zh) | 2020-06-04 | 2020-06-04 | 一种中断处理方法及中断处理设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111782269B (zh) |
WO (1) | WO2021244014A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782269B (zh) * | 2020-06-04 | 2023-12-12 | 珠海格力电器股份有限公司 | 一种中断处理方法及中断处理设备 |
CN115080122A (zh) * | 2022-07-22 | 2022-09-20 | 飞腾信息技术有限公司 | 处理器、用于保存和恢复上下文数据的装置、方法及芯片 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5852726A (en) * | 1995-12-19 | 1998-12-22 | Intel Corporation | Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner |
CN101221492A (zh) * | 2008-01-22 | 2008-07-16 | 西北工业大学 | 浮点异常处理装置以及用该装置进行异常处理的方法 |
CN101256504A (zh) * | 2008-03-17 | 2008-09-03 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
CN102460377A (zh) * | 2009-06-19 | 2012-05-16 | Arm有限公司 | 数据处理设备及方法 |
CN102521042A (zh) * | 2011-12-16 | 2012-06-27 | 中船重工(武汉)凌久电子有限责任公司 | 基于哈佛结构dsp的快速正文切换方法 |
CN109710312A (zh) * | 2018-12-13 | 2019-05-03 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于risc-v指令集的实时中断处理方法、装置及工控处理器 |
CN110007964A (zh) * | 2019-03-15 | 2019-07-12 | 芯来科技(武汉)有限公司 | 用于risc-v架构的中断系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004157636A (ja) * | 2002-11-05 | 2004-06-03 | Renesas Technology Corp | データ処理装置 |
CN101739368B (zh) * | 2008-11-07 | 2012-06-06 | 中兴通讯股份有限公司 | 一种中断加速装置和中断处理系统 |
US8336017B2 (en) * | 2011-01-19 | 2012-12-18 | Algotochip Corporation | Architecture optimizer |
CN110221861B (zh) * | 2019-05-31 | 2023-08-29 | 常州市常河电子技术开发有限公司 | 一种cpu寄存器体系结构及其中断处理方法 |
CN111782269B (zh) * | 2020-06-04 | 2023-12-12 | 珠海格力电器股份有限公司 | 一种中断处理方法及中断处理设备 |
-
2020
- 2020-06-04 CN CN202010497623.XA patent/CN111782269B/zh active Active
- 2020-12-28 WO PCT/CN2020/140013 patent/WO2021244014A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5852726A (en) * | 1995-12-19 | 1998-12-22 | Intel Corporation | Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner |
CN101221492A (zh) * | 2008-01-22 | 2008-07-16 | 西北工业大学 | 浮点异常处理装置以及用该装置进行异常处理的方法 |
CN101256504A (zh) * | 2008-03-17 | 2008-09-03 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
CN102460377A (zh) * | 2009-06-19 | 2012-05-16 | Arm有限公司 | 数据处理设备及方法 |
CN102521042A (zh) * | 2011-12-16 | 2012-06-27 | 中船重工(武汉)凌久电子有限责任公司 | 基于哈佛结构dsp的快速正文切换方法 |
CN109710312A (zh) * | 2018-12-13 | 2019-05-03 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于risc-v指令集的实时中断处理方法、装置及工控处理器 |
CN110007964A (zh) * | 2019-03-15 | 2019-07-12 | 芯来科技(武汉)有限公司 | 用于risc-v架构的中断系统 |
Non-Patent Citations (1)
Title |
---|
二进制翻译中的X86浮点栈处理;谢海斌;武成岗;崔慧敏;李晶;;计算机研究与发展(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
WO2021244014A1 (zh) | 2021-12-09 |
CN111782269A (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3352083B1 (en) | Debugging method, multi-core processor, and debugging equipment | |
US10353587B2 (en) | Data storage device and method of processing data thereof | |
JP4960364B2 (ja) | ハードウェア支援されたデバイス設定検出 | |
US7631196B2 (en) | Method and apparatus for loading a trustable operating system | |
KR101740224B1 (ko) | 불법 모드 변경처리 | |
CN111782269B (zh) | 一种中断处理方法及中断处理设备 | |
US7367062B2 (en) | Method for BIOS security of computer system | |
US10778815B2 (en) | Methods and systems for parsing and executing instructions to retrieve data using autonomous memory | |
CN109491958B (zh) | 错误处理系统和错误处理方法 | |
US9542113B2 (en) | Apparatuses for securing program code stored in a non-volatile memory | |
EP3798826A1 (en) | Methods of hardware and software coordinated opt-in to advanced features on hetero isa platforms | |
CN107436752B (zh) | 异常现场恢复方法、装置及计算机可读存储介质 | |
US6968410B2 (en) | Multi-threaded processing of system management interrupts | |
EP3534262B1 (en) | Processing system, related integrated circuit and method | |
CN111625328B (zh) | 适用于risc-v架构的中断装置、系统及方法 | |
CN110516445B (zh) | 反检测恶意代码的识别方法、装置及存储介质 | |
US20070050619A1 (en) | Processor having program protection function | |
US8478923B2 (en) | Interrupt suppression by processing just first interrupt of a same type | |
CN110008071B (zh) | 一种远程调试装置及方法 | |
CN116028404A (zh) | 一种dma配置方法和配置电路 | |
CN108701031B (zh) | 寄存器访问控制 | |
US7103804B2 (en) | Method of generating an interrupt signal when application is performed outside of designated region | |
CN109992510B (zh) | 一种远程调试装置及方法 | |
KR20080044652A (ko) | Cpu에서의 스택을 이용한 디버깅 방법 | |
CN115794693A (zh) | 一种gpio接口控制方法、系统、存储介质以及设备 |
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 |