本章讨论处理器如何处理执行中的不连续性
程序执行的不连续性---------------------------一
体系结构的改进---------------------------------二
硬件的细节---------------------------------------三
一 :程序执行的不连续性
引入同步和异步:
同步,在规定好的时间内发生的事件,如第三章的各个微状态之间的转移。
异步,系统正在进行的,其他活动相关的,不可预料的时间发生的事情,如中断。
程序执行的不连续性:
中断,设备引起处理器注意的机制,一般指外部设备引起的不连续性。
异常,内部产生的问题,执行非法指令,要打断原有指令序列的执行然后去处理。
陷入,当前运行的程序无法处理的一种内部情况,只能调用操作系统来处理。
不连续性是一种工具:
他允许计算机系统提供输入/输出
他允许计算机系统为相互竞争的活动管理资源。
他允许计算机系统帮助程序员开发正确的程序。
检测不连续性是处理器的责任,引导处理器处理不连续性代码是操作系统的责任。
处理不连续性要做的事:
硬件隐式完成的活动
操作系统显式完成的活动。
引入处理过程,处理器处理不连续时执行的过程。
处理器在处理不连续性上,与第二章的调用过程基本一样,但是有四个要注意:
1、不连续性可以在指令执行的任意位置发生。
2、不连续性是计划外的,硬件控制权给处理过程,要保存PC的值。
3、在检测到不连续性时,硬件需要确定处理过程的地址,以便转交控制权。
4、硬件隐式保存PC值,需要知道如何如恢复。
引入异常/陷入寄存器ETR,用来保存不连续性的编号。
操作系统和处理器体系结构合作解决:
1、体系结构定义一系列异常和他们对应的编号
2、操作体统定义一系列异常(中断,陷入)以及他们对应的编号。
3、在启动操作系统,建立中断向量表IVT,给出处理异常中断陷入的处理过程地址。
4、在普通程序执行时,硬件检测异常和陷入,将矢量表填入ETR
5、在普通程序执行时,硬件检测外部中断以及对应编号。
6、硬件使用矢量值索引IVT,找到处理过程,将控制权交给处理过程。
二:体系结构的改进
修改FSM:
在原来FSM基础上多一个宏状态
FSM在指令结束时检查,有中断则到INT宏状态,没有就返回Fetch。
把当前PC保存在某个寄存器$k0,接受处理过程的地址,装入PC。
之所以在最后一个检查,因为处理器的寄存器处于干净的状态。
处理级联中断:
中断中又中断回事去原始程序的PC值。
为处理级联中断引入:
禁止中断指令
允许中断指令
处理方法:
关闭中断,原始程序的返回地址保存到$k0,
打开中断,保存寄存器堆,然后执行指令,
执行处理过程,
关闭中断,恢复寄存器$k0,返回原程序
明天继续写。。。2019-03-26
读书笔记 计算机系统--系统架构与操作系统的高度集成 第四章中断、陷入及异常
原文:https://www.cnblogs.com/powerzzjcode/p/10604234.html