机器模式下的异常处理-stata面板数据处理 步骤介绍 含例子 pdf

上传者: 26642481 | 上传时间: 2021-09-19 13:53:30 | 文件大小: 8.85MB | 文件类型: PDF
会有非对齐的 load 和 store 地址异常。原因有两个,首先,第六章的原子内存操作需要自 然对齐的地址;其次,一些实现者选择省略对于非对齐的常规 load 和 store 的硬件支持, 因为它是一个难以实现的不常用特性。没有这种硬件的处理器依赖于异常处理程序,用一 系列较小的对齐 load 和 store 来模拟软件中非对齐的 load 和 store。应用程序代码并没有变 得更好:虽然速度很慢,非对齐访存操作仍按预期进行,而硬件仍然很简单。或者,在更 高性能的处理器中可以硬件实现非对齐的 load 和 store。这种实现上的灵活性归功于 RISC- V 允许非对齐 load 和 store 与常规 load 和 store 共用操作码。这遵照了第一章将架构和具体 实现隔离开的准则。 有三种标准的中断源:软件、时钟和外部来源。软件中断通过向内存映射寄存器中存 数来触发,并通常用于由一个 hart 中断另一个 hart(在其他架构中称为处理器间中断机 制)。当 hart 的时间比较器(一个名为 mtimecmp 的内存映射寄存器)大于实时计数器 mtime 时,会触发时钟中断。外部中断由平台级中断控制器(大多数外部设备连接到这个 中断控制器)引发。不同的硬件平台具有不同的内存映射并且需要中断控制器的不同特 性,因此用于发出和消除这些中断的机制因平台而异。所有 RISC-V 系统的共同问题是如 何处理异常和屏蔽中断,这是下一节的主题。 10.3 机器模式下的异常处理 八个控制状态寄存器(CSR)是机器模式下异常处理的必要部分: ⚫ mtvec(Machine Trap Vector)它保存发生异常时处理器需要跳转到的地址。 ⚫ mepc(Machine Exception PC)它指向发生异常的指令。 ⚫ mcause(Machine Exception Cause)它指示发生异常的种类。 ⚫ mie(Machine Interrupt Enable)它指出处理器目前能处理和必须忽略的中断。 ⚫ mip(Machine Interrupt Pending)它列出目前正准备处理的中断。 ⚫ mtval(Machine Trap Value)它保存了陷入(trap)的附加信息:地址例外中出错 的地址、发生非法指令例外的指令本身,对于其他异常,它的值为 0。 ⚫ mscratch(Machine Scratch)它暂时存放一个字大小的数据。 ⚫ mstatus(Machine Status)它保存全局中断使能,以及许多其他的状态,如图 10.4 所示。 图 10.4:mstatus 控制状态寄存器。在仅有机器模式且没有 F 和 V 扩展的简单处理中,有效的域只有全 局中断使能、MIE 和 MPIE(它在异常发生后保存 MIE 的旧值)。RV32 的 XLEN 时 32,RV64 是 40。 (来自[Waterman and Asanovic 2017]中的表 3.6;有关其他域的说明请参见该文档的第 3.1 节。) 处理器在 M 模式下运行时,只有在全局中断使能位 mstatus.MIE 置 1 时才会产生中 断.此外,每个中断在控制状态寄存器 mie 中都有自己的使能位。这些位在 mie 中的位置

文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明