Nuclei处理器内核中的NMI处理

本文详细描述了NMI(非屏蔽中断)在RISC-V体系结构中的行为,包括NMI的触发、处理流程、特权和机器子模式的更新,以及NMI服务程序的作用。强调了在Nuclei处理器中,NMI无法被屏蔽且必须在机器模式下处理。
摘要由CSDN通过智能技术生成

NMI概述

NMI(非屏蔽中断)是处理器核心的一种特殊输入信号,通常用于指示系统级紧急错误(如外部硬件故障等)。遇到NMI后,处理器应立即中止当前程序的执行,转而处理NMI错误。

NMI掩蔽

在RISC-V体系结构中,NMI不能被屏蔽,这意味着如果内核遇到NMI,它必须停止当前执行并转向处理NMI。

进入NMI处理模式

以NMI为例,Nuclei处理器内核的硬件行为如NMI的总体过程所示。请注意,以下操作在一个周期内同时进行:

•更新CSR寄存器:mepc和mstatus。

–这些行为遵循RISC-V标准特权体系结构规范。本文档不会重复其内容,请参阅RISC V标准权限或体系结构规范以获取更多详细信息。

•更新CSR寄存器:mcause。

–NMI的mcause值在Nuclei处理器核心中是唯一的。

•停止执行当前程序,并从CSR mnvec定义的PC地址开始。

–mnvec的值在Nuclei处理器核心中是唯一的。

•更新核心的特权模式和机器子模式。
在这里插入图片描述从mnvec定义的PC执行

Nuclei处理器核心在遇到NMI后跳转到CSR mnvec定义的PC。CSR mnvec

由CSR寄存器mmisc_ctl控制的两个潜在值:

•当mmisc_ctl[9]=1时,mnvec的值等于mtvec的数值,这意味着NMI和异常

共享相同的陷阱条目地址。

•当mmisc_ctl[9]=0时,mnvec的值等于重置后的PC值reset_vector的值。

reset_vector是核心的输入信号。请参阅Nuclei处理器核心的具体数据表

有关此信号的详细信息。

更新CSR mcause

Nuclei处理器核心将把NMI代码保存到CSR mcause中。EXCCODE由硬件自动执行时采取NMI。中断、异常和NMI都有自己指定的陷阱ID。NMI的陷阱ID有两个由CSR寄存器mmisc_ctl控制的潜在值:

•当mmisc_ctl[9]=1时,NMI的陷阱ID为0xfff。

•当mmisc_ctl[9]=0时,NMI的陷阱ID为0x1。

该软件可以通过查询Trap ID来识别Trap原因,并构建相应的Trap处理程序

针对不同类型的陷阱。

更新特权模式

NMI是在机器模式下移交的,因此当核心进行NMI时,特权模式将切换到机器模式。

更新机器子模式

Nuclei处理器核心的机器子模式在msubm中指示。TYP实时存档。当核心采取NMI时,Machine Sub Mode(机器子模式)将更新为NMI处理模式,因此:

•提交的msubm。TYP更新为NMI处理模式,如进入/退出NMI时CSR mstatus和msubm更新所述(第20页),以反映当前机器子模式为“NMI处理方式”。

•msubm的值。PTYP将更新为msub的值。获取NMI之前的TYP,如进入/退出NMI时CSR mstatus和msubm更新所示(第20页)。msubm的值。将使用PTYP

以恢复msubm的值。退出NMI处理程序后的PTYP。

在这里插入图片描述退出NMI处理模式

在处理完NMI后,他们再次从NMI中退出,并转而执行主程序。

由于NMI是在机器模式下处理的,软件必须执行mret才能退出NMI处理程序。

处理器在执行mret指令后的硬件行为如退出NMI的整个过程所示。请注意,以下硬件行为在一个周期内同时完成:

•停止执行当前程序,并从CSR mepc定义的PC地址开始。更新CSR mstatus。更新特权模式。

–这些行为遵循RISC-V标准特权体系结构规范。并且这些行为与“退出异常处理模式”的行为完全相同,本文在此不再赘述其内容,更多细节请参阅RISC-V标准特权架构规范。

•更新机器子模式。

在这里插入图片描述

更新机器子模式

msubm的值。TYP实时指示Nuclei处理器核心的机器子模式。执行mret指令后,硬件将根据msubm的值自动恢复core的Machine Sub Mode。PTYP:

•取NMI,msubm的值。在采取NMI之前,PTYP更新为Machine Sub Mode(机器子模式)。执行mret指令后,硬件将使用msubm值自动恢复机器子模式。PTYP,如进入/退出NMI时CSR mstatus和msubm更新中所示。通过这种机制,核心的机器子模式恢复到采取NMI之前的相同模式。

NMI服务程序

当核心获取一个NMI时,它会跳转到mnvec定义的地址执行程序,该地址通常是NMI服务例程。

注意:由于没有硬件可以在获取或退出NMI时自动保存和恢复执行上下文,因此软件需要明确使用指令(汇编语言)来保存和恢复上下文。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值