手机网站滑动效果,wordpress图书主题,被收录的网站怎么没了,标准件做网站推广效果怎么样machine mode: 运行最可信的代码;supervisor mode:为 Linux#xff0c;FreeBSD 和 Windows 等操作系统提供支持;user mode:权限最低#xff0c;应用程序的代码在此模式下运行#xff1b;
这两种新模式都比user mode有着更高的权限#xff0c;有更多权限的模式通常可以使用…machine mode: 运行最可信的代码;supervisor mode:为 LinuxFreeBSD 和 Windows 等操作系统提供支持;user mode:权限最低应用程序的代码在此模式下运行
这两种新模式都比user mode有着更高的权限有更多权限的模式通常可以使用权限较低的模式的所用功能并且它们还有一些低权限模式下不可用的额外功能例如处理中断和执行 I/O 的功能。
处理器通常大部分时间都运行在权限最低的模式下处理中断和异常时会将控制权移交到更高权限的模式。
machine mode
RISC-V 中 harthardware thread硬件线 程可以执行的最高权限模式;在 M 模式下运行的 hart 对内存I/O 和一些对于启动和配 置系统来说必要的底层功能有着完全的使用权;它是唯一所有标准 RISC-V 处理器都 必须实现的权限模式。简单的 RISC-V 微控制器仅支持 M 模式;机器模式最重要的特性是拦截和处理异常不寻常的运行时事件的能力。包括exception和interrupt;M mode下可能发生的exception有 access fault exception,当物理内存的地址不支持访问类型时发生例如尝试写入 ROM。Breadkpoint exception, 在执行 ebreak 指令或者地址或数据matches debug trigger;Environment call exception, 在执行 ecall 指令时发生。Illegal instruction exception, 在译码阶段发现无效操作码时发生。Misaligned addr exception,在有效地址不能被访问大小整除时发生例如地址为 0x12 的 amoadd.w 三种标准的中断源软件、时钟和外部来源。
软件中断通过向内存映射寄存器中存数来触发并通常用于由一个 hart 中断另一个 hart在其他架构中称为处理器间中断机 制当 hart 的时间比较器一个名为 mtimecmp 的内存映射寄存器大于实时计数器 mtime 时会触发时钟中断。外部中断由平台级中断控制器大多数外部设备连接到这个 中断控制器引发。
机器模式下的异常处理 八个控制状态寄存器CSR是机器模式下异常处理的必要部分。
mtvecMachine Trap Vector它保存发生异常时处理器需要跳转到的地址。mepcMachine Exception PC它指向发生异常的指令。mcauseMachine Exception Cause它指示发生异常的种类。mieMachine Interrupt Enable它指出处理器目前能处理和必须忽略的中断。mipMachine Interrupt Pending它列出目前正准备处理的中断。mtvalMachine Trap Value它保存了陷入trap的附加信息addr exception中出错的地址、发生非法指令例外的指令本身对于其他异常它的值为 0。mscratchMachine Scratch它暂时存放一个字大小的数据。mstatusMachine Status它保存全局中断使能以及许多其他的状态如图 10.4 所示。 处理器在 M 模式下运行时只有在全局中断使能位 mstatus.MIE 置 1 时才会产生中 断.此外每个中断在控制状态寄存器 mie 中都有自己的使能位;这些位在 mie 中的位置对应于图 10.3 中的中断代码。例如mie[7]对应于 M 模式中的时钟中断。 控制状态寄存器 mip具有相同的布局并且它指示当前待处理的中断。将所有三个控制状态寄存器合在一起考 虑如果 mstatus.MIE 1mie[7] 1且 mip[7] 1则可以处理机器的时钟中断。
当一个 hart 发生异常时硬件自动经历如下的状态转换
异常指令的 PC 被保存在 mepc 中PC 被设置为 mtvec。对于同步异常mepc 指向导致异常的指令对于中断它指向中断处理后应该恢复执行的位置根据异常来源设置 mcause如图 10.3 所示并将 mtval 设置为出错的地址或 者其它适用于特定异常的信息字。把控制状态寄存器 mstatus 中的 MIE 位置零以禁用中断并把先前的 MIE 值保 留到 MPIE 中发生异常之前的权限模式保留在 mstatus 的 MPP 域中再把权限模式更改为 M。图 10.5 显示了 MPP 域的编码如果处理器仅实现 M 模式则有效地跳过这 个步骤。 为避免覆盖整数寄存器中的内容中断处理程序先在最开始用 mscratch 和整数 寄存器例如 a0中的值交换。通常软件会让 mscratch 包含指向附加临时内存空 间的指针处理程序用该指针来保存其主体中将会用到的整数寄存器。在主体执行之 后中断程序会恢复它保存到内存中的寄存器然后再次使用 mscratch 和 a0 交换 将两个寄存器恢复到它们在发生异常之前的值。最后处理程序用 mret 指令M 模 式特有的指令返回。mret 将 PC 设置为 mepc通过将 mstatus 的 MPIE 域复制到 MIE 来恢复之前的中断使能设置并将权限模式设置为 mstatus 的 MPP 域中的值。 这基本是前一段中描述的逆操作。 有时需要在处理异常的过程中转到处理更高优先级的中断。唉mepc mcausemtval 和 mstatus 这些控制寄存器只有一个副本处理第二个中断的时候 如果软件不进行一些帮助的话这些寄存器中的旧值会被破坏导致数据丢失。可抢 占的中断处理程序可以在启用中断之前把这些寄存器保存到内存中的栈然后在退出 之前禁用中断并从栈中恢复寄存器。 除了上面介绍的 mret 指令之外M 模式还提供了另外一条指令wfiWait For Interrupt。wfi 通知处理器目前没有任何有用的工作所有它应该进入低功耗模式 直到任何使能有效的中断等待处理即miemip ≠ 0。RISC-V 处理器以多种方式实现 该指令包括到中断待处理之前都停止时钟。有的时候只把这条指令当作 nop 来执 行。因此wfi 通常在循环内使用。