1 / 10

MIPS Architecture

MIPS Architecture. Leilei Wang 2011.09.08. 异常. 外部事件 存储器地址转换异常 其它需要内核干预的非常情况 程序或硬件检测到的错误 其它需要内核干预的非常情况 程序或硬件检测到的错误 数据完整性问题 系统调用和自陷. 精确异常. 精确异常( precise exeption ) - 在一个精确异常的 CPU 上,任何异常发生时,我们都指向一条指令(异常受害指令)。在该指令之前的所有指令都执行完毕,但是受害指令及其后续指令就好像从来没有开始一样,当异常为精确的时候,处理异常的软件就可以忽略 CPU 实现的时序影响

zahir-hart
Download Presentation

MIPS Architecture

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MIPS Architecture Leilei Wang 2011.09.08

  2. 异常 • 外部事件 • 存储器地址转换异常 • 其它需要内核干预的非常情况 • 程序或硬件检测到的错误 • 其它需要内核干预的非常情况 • 程序或硬件检测到的错误 • 数据完整性问题 • 系统调用和自陷

  3. 精确异常 • 精确异常(precise exeption) - 在一个精确异常的CPU上,任何异常发生时,我们都指向一条指令(异常受害指令)。在该指令之前的所有指令都执行完毕,但是受害指令及其后续指令就好像从来没有开始一样,当异常为精确的时候,处理异常的软件就可以忽略CPU实现的时序影响 • 明确的罪证:EPC都指向一个正确的地方,异常处理之后从该处开始重新执行。 • 异常出现在指令序列中:早期发现的异常并不立即采取措施 • 后继指令无效:处于EPC中的受害指令之后的指令已经开始,但是可以保证这些指令就像异常没有发生一样,根本就不影响到以后从EPC重新开始的后继执行过程

  4. 非精确异常 • MIPS CPU中的乘法器 • 异常之前执行的最后一条指令就是受害指令的前一条。如果该异常不是中断,受害指令既是引发异常的指令 • 内插至少两条非乘法指令于mflo/mfhi和mult之间

  5. 异常向量 • 中断向量化:CISC处理器由硬件来分析异常,根据异常类型把CPU发送到不同的入口点,甚至连中断都根据哪个中断输入信号激活而在不同的入口点处理 • 所有的异常入口点都位于MIPS存储器影像中不作地址转换的区域,不要高速缓存的入口处位于kseg1,需要高速缓存的位于kseg0

  6. 异常入口点

  7. 异常处理过程 • 引导:给你自己腾出足够的空间能够做你想要的,而且不要覆盖被中断的程序的重要数据 • 处理不同的异常:查询Cause(ExcCode),允许操作系统为不同的异常定义不同的函数 • 构造异常处理环境:复杂异常处理程序使用高级语言书写,可能希望使用标准库函数。你将不得不提供一块堆栈存储区,保存任何CPU寄存器可能被中断的程序和被调用的例程允许改变的寄存器 • 处理异常 • 准备返回:保存的寄存器得到恢复,通过把SR改回到刚发生异常后的值,CPU得以返回到其安全状态(内核模式,异常关闭) • 从异常返回:

  8. 嵌套异常 • 在你的异常处理例程中进一步的异常,称为嵌套异常 • 异常帧 • 嵌套的多个异常帧通常安排在一个堆栈上 • 中断发生了可以使用软件单个屏蔽掉以满足优先级规则,用SR(IE)可以一次性屏蔽全部中断,或者通过异常级位隐式屏蔽单个中断。

  9. 中断 • MIPS CPU中的中断资源 • 实现中断优先级临界区,禁止中断,信号量

  10. 中断资源 • 任何输入信号的电平在每个周期采样一次,如果使能就会导致异常。 • 全局中断使能位SR(IE)必须设置为1 • SR(EXL)和SR(ERL)异常级,错误级位,如果置位会禁止中断 • SR还有八个中断屏蔽位SR(IM),Cause寄存器中的每个中断各一位。

More Related