reset什么意思(reset是什么意思翻译成中文)

【reset什么意思(reset是什么意思翻译成中文)】
本期内容如下:
机器模式特权指令reset非屏蔽中断读这篇文章的时候需要注意的是,理解的时候应该把它当成一个设计需求来读,因为直接翻译的相关文档是按照如何实现一个特定的RISC-V处理器的标准来描述的 。
第一,机器模式特权指令
1.1环境调用和断点ECALL/EBREAK
图1 ecall和ebreak指令的格式
ECLL用于向当前执行环境发出调用请求 。当在U-模式、S-模式或m-模式下执行时,它分别生成环境从U-模式调用异常、管理员从S-模式调用异常或机器模式异常 。
调试器使用EBREAK指令将控制转移回调试环境 。它生成一个断点异常,不做任何其他事情 。
ECALL和EBREAK将导致特权程序计数器(epc)被设置为ECALL和EBREAK指令本身所在的地址 。由于ECALL和EBREAK会引起同步异常,所以不会被认为是重复执行,所以吟游诗人值不会增加 。
1.2陷阱返回指令MRET/SRET
图2 mret、sret指令格式
为了从陷阱函数返回,每个特权模式都有自己的陷阱返回指令,即MRET和SRET 。
始终支持MRET,只有当处理器支持管理模式时,才支持SRET 。否则将导致指令异常 。当mstatus中的TSR=1时,SRET也应该抛出一个非法指令异常 。xRET指令可以在特权模式x或更高模式下执行,其中当执行具有低特权的xRET指令时,将弹出相关的低特权中断使能和特权模式堆栈 。此外,除了与特权模式堆栈相关的操作之外,程序计数器(pc)的值也将被设置为xepc的值 。
如果支持A扩展,则允许xRET指令清除任何未完成的LR保留地址,但这不是必需的 。如果有必要,陷阱处理程序应该在执行xRET之前显式清除保留的地址(例如,通过使用虚拟SC) 。
1.3中断等待(WFI)
等待中断指令(WFI)为实施提供了一个提示,即当前hart可以暂停,直到需要中断服务 。WFI指令的执行也可用于通知硬件平台,要实现该功能,应首先将适当的中断发送到该hart 。WFI可用于所有特权模式以及U模式 。当mstatus中TW=1时,此指令可能会抛出非法指令异常 。
Hart表示硬件线程在RISC-V中 。
图3 WFI指令格式
如果一个使能的中断发生或在hart停止后发生,中断异常将按照下面的指令执行,即在陷阱处理程序中继续执行,mepc = pc 4 。
WFI指令的目的是为实施提供提示,所以法律实施只把WFI作为NOP 。
当中断被禁用时,WFI也应该是可执行的,并且WFI操作不得受到全局中断位(MIE和SIE)和mstatu中的管理寄存器的影响 。WFI还可以用来唤醒任何本地中断已被启用和暂停的进程 。
第二,重置
RISC-V处理器复位后应满足以下条件 。
1.当处理器复位时,hart的特权模式被设置为机器模式(m模式) 。
2.mstatus字段MIE和MPRV应该被设置为0 。
3.如果支持小端内存访问,mstatus/mstatush字段MBE应该重置为0 。复位萨米寄存器应启用支持的最大扩展集和最大MXLEN位宽 。
4.pc应该被设置为由实现定义的复位向量 。
5.M原因寄存器应设置为指示复位原因的值 。可写PMP寄存器“A”和“L”字段被设置为0,除非平台要求某些PMP寄存器“A”和“L”字段被设置为不同的复位值 。
6.所有其他硬件状态都不会显示 。
重置后的mcause值有特定于实现的解释,但在不区分不同重置条件的实现中,它应该返回值0 。区分不同复位条件的实现应该仅使用0来表示最完全的复位(例如,硬复位) 。
一些设计可能有多种原因导致复位(例如,上电复位、外部硬复位、检测到电源故障、看门狗定时器超时、在睡眠模式中唤醒),这可能是机器模式软件和调试器想要区分的 。
macause重置值的名称可能与同步异常中的macause值的名称不同 。这种重叠应该没有区别,因为在复位期间,pc设置不同于其他陷阱中的设置 。
第三,非屏蔽中断
不匹配中断(NMIs)仅在硬件错误的情况下使用 。无论hart中断使能位的状态如何,NMI异常将立即跳转到由实施定义的NMI向量地址,并将处理器模式切换到机器模式(M模式) 。NMI执行时要执行的下一条指令的地址将被写入mepc寄存器,并且mcause被设置为指示NMI源的值 。因此,NMI可以覆盖当前机器模式中断处理程序中的状态 。
在NMI上写入mcause的值由实现来定义 。mcause的高中断位应置位,以表示这是一个中断 。异常代码0是保留的,意思是“未知原因”,执行NMIs时不区分来源 。在异常代码中,mcause寄存器应该设置为0 。
与复位不同,NMIs不复位处理器状态,而是启动诊断和报告 。NMI可能包含硬件错误 。


推荐阅读