reset什么意思,reset是什么意思翻译成中文

reset什么意思,reset是什么意思翻译成中文 本期内容如下:机器模式特权指令reset非屏蔽中断阅读本文时应当注意,理解的时候把他当做是一个设计要求来读,由于时直接翻译的相关文档叙述方式均是按照如何实现具体RI

我们一起学RISC-V——03-特权指令,Reset和NMI

本期内容如下:

  1. 机器模式特权指令
  2. reset
  3. 非屏蔽中断

阅读本文时应当注意,理解的时候把他当做是一个设计要求来读,由于时直接翻译的相关文档叙述方式均是按照如何实现具体RISC-V处理器的标准来描述的。


一、机器模式特权指令


1.1 环境调用和断点 ECALL/EBREAK

我们一起学RISC-V——03-特权指令,Reset和NMI

图1 ecall、ebreak指令格式

ECALL被用于向当前执行环境发出一个调用请求,当以u -模式、s -模式或m-模式执行时,它分别生成用户模式系统调用(environment-call-from-U-mode)异常、管理员模式系统调用(environment-call-from-S-mode)异常或机器模式系统调用(environment-call-from-M-mode)异常,并且不执行其他操作。

EBREAK指令被调试器用于将控制转移回调试环境,它生成一个断点异常,并且不执行任何其他操作。

ECALL和EBREAK将会引起特权程序计数器(epc)被设定为ECALL和EBREAK指令本身所处的地址。由于ECALL和EBREAK会导致同步异常,因此它们不会被认为是重复执行,所以minstret数值不会增加。

1.2 Trap返回指令MRET/SRET

我们一起学RISC-V——03-特权指令,Reset和NMI

图2 mret、sret指令格式

为了从trap函数中返回,每个特权模式有它自己的trap返回指令,MRET和SRET。

MRET总是被支持的,SRET只有当处理器支持supervisor模式的时候才被支持,如果不这样做会引发指令异常。当mstatus中的TSR=1时,SRET也应该抛出非法指令异常。可以在特权模式x或更高特权模式下执行xRET指令,其中执行低特权的xRET指令时,将弹出相关的低特权中断使能和特权模式堆栈。另外除了操作特权模式堆栈相关操作外,程序计数器(pc)的值也会被设置为xepc的值。

如果支持A扩展,则允许xRET指令清除任何未完成的LR保留地址,但这不是必需的。如果需要,trap处理程序应该在执行xRET之前显式地清除保留地址(例如,通过使用虚拟SC)。

1.3 中断等待(WFI)

等待中断指令(WFI)向实现提供了一个提示,即当前hart可以被暂停,直到需要服务的中断为止。WFI指令的执行还可以用来通知硬件平台,要实现这一功能,应该优先将合适的中断路由到这个hart。WFI可用于所有特权模式,也可用于u模式。当在mstatus中TW=1时,此指令可能会引发非法指令异常。

Hart指的就是硬件线程在RISC-V中

我们一起学RISC-V——03-特权指令,Reset和NMI

图3 WFI指令格式

如果在hart停止时,一个启用的中断出现或稍后出现,中断异常将根据下面的指令执行,即,在trap处理程序中继续执行,mepc = pc 4。

WFI指令的目的是为实现提供提示,因此合法的实现只是将WFI作为NOP实现。

当中断禁用时, WFI也应当是可以执行的,WFI操作必须不被mstatu中的全局中断位(MIE和SIE)和托管寄存器影响。WFI也可以用来唤醒本地中断已经被使能且挂起的任意进程。

二、Reset


RISC-V处理器在被Reset后,应当满足如下条件。

1.处理器在reset时,hart的特权模式被设置为机器模式(M模式)。

2.mstatus字段MIE和MPRV应被设置为0。

3.如果支持小端内存访问,则mstatus/mstatush字段MBE应重置为0。reset misa寄存器应启用最大的支持扩展集和最大MXLEN位宽。

4.pc应被设置为一个实现定义的reset向量。

5.mcause寄存器应被设置为指示reset原因的值。可写PMP寄存器“A”和“L”字段设置为0,除非平台要求某些PMP寄存器“A”和“L”字段设置不同的重置值。

6.所有其他硬件状态未指明。

Reset后的mcause值具有特定于实现的解释,但是在不区分不同的重置条件的实现上应该返回值0。区分不同重置条件的实现应该只使用0来表示最完整的重置(例如,硬重置)。

一些设计可能有多种原因导致复位(例如开机复位,外部硬复位,检测到断电,看门狗定时器流逝,睡眠模式唤醒),这可能是机器模式软件和调试器想要区分的。

mcause重置值的名称可能会和在同步异常mcause值的名称不同。在这个重叠应该没有分歧,因为在重置时pc设定值和其它Trap中的PC是不一样的。

三、不可屏蔽中断


不可屏蔽中断(NMIs)仅用于硬件错误的情况下,不用关心hart的中断启用位的状态,NMI异常会导致立即跳转到实现定义的NMI向量地址运行同时切换处理器模式为机器模式(M模式)。NMI执行时要执行的下一条指令的地址将被写入mepc寄存器,mcause被设置为一个指示NMI源的值。因此,NMI可以覆盖当前所处的机器模式中断处理程序中的状态。

在NMI上写入mcause的值是由实现定义的。mcause的高中断位应该被设置来表示这是一个中断。异常代码0是保留的,意思是“未知原因”,实现不区分来源的NMIs, 在异常代码中,mcause寄存器应该被设置为0。

与Reset不同,NMIs不重置处理器状态,开启诊断、报告,NMI可能包含硬件错误。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/49543.html

(0)

相关推荐