- 硬电路连接需要 的复杂度,虽然快但是复杂
- 可以用总线改进
- 也可以用软件的方式进行拓展
采用程序设计的方法,编制每个指令对应的微程序
每一个微程序由若干微指令组成,一个微指令有 n 个微命令
有微程序的 PC
,有额外的转移控制信号。在顺序执行的时候,pc 自增,转移执行的时候,根据转移控制信号来控制 PC 的移动
- 水平型微指令:相似的微指令放在一条微指令中,比较复杂
- 垂直型微指令:一条微指令只控制一两个微命令,简单,但是编码要长
是产生的微指令,可以不译码,也可以译码转化成更一般的控制信号
- 来自于 CPU 内部的,可以终止当前运行的命令的,称为异常
- 来自于 CPU 外部的,不能终止当前指令,而要等到当前命令运行完之后改变之后的运行逻辑的,“请求中断”的信号,称为中断
异常的处理是没有放在状态单元之间发生的,所以异常的处理更复杂,要求处理速度经可能的快
内部的异常按处理方式分类:
- 故障:执行指令引起的异常事件。可恢复的、不可恢复的
- 自陷:预先安排的事件,如单步追踪
- 终止:硬故障事件,调出中断服务程序重启系统
检测到异常的时候,进行以下处理:
- 关闭中断:使处理器处于禁止中断的状态
- 保护现场:程序状态字 PSW、放在 PSWR、堆栈上
识别:硬件识别方式(8086)和软件识别(MIPS)
- 软件识别:有一个统一的中断处理程序,按顺序查询;查看原因寄存器
- 硬件:用专门的硬件查询电路按优先级顺序识别异常,得到“中断类型号”,到中断向量表读取对应的中断服务程序的入口地址:用 8259 (A) 产生
中断向量表(其实是混用的),根据中断号找到对应的 cs:ip
MIPS : EPC 存放断点(或者当前异常触发地址 PC+4 (中断)or -4(异常))、Cause 记录异常原因;同时需要加入两个寄存器的写使能
或者直接转终止