1. CPU的结构
CPU 实质包括运算器和控制器两大部分.
对于冯-诺依曼结构的计算机来说,一旦程序进入到存储器后,就可以由计算机自动完成取指令和执行指令的任务.控制器就是专用与完成此项工作的.它负责协调并控制计算机各个部件执行程序的指令序列.其基本功能为:
- 取指令 :控制器必须具备能够自动地从存储器中取出指令.要求控制器能够自动形成指令的地址,并能发出取指令的命令,将对应此地址的指令取到控制器中.第一条指令的地址可以人为指令,也可以系统设定.
- 分析指令 :分析此指令要完成什么动作,分析参与此次操作的操作数地址,即操作数的有效地址.
- 执行指令 :根据分析指令产生的"操作命令"和"操作数地址"的要求形成操作控制信号序列(不同的指令有不同的操作控制信号序列),通过对运算器 存储器以及I/O设备的操作,执行每一条指令.
ALU:运算逻辑单元
CU:控制单元
将上图进行细化:
2. CPU的寄存器
通常CPU执行机器语言访问的寄存器为用户可见寄存器
- 用户可见寄存器
- 通用寄存器
可用户存放操作数,也可以作为满足某种寻址所需的寄存器. - 数据寄存器
用于存放操作数,其位数应满足多数数据类型的数值范围. - 地址寄存器
用于存放地址,位数必须足够长,以满足最大的地址范围 - 条件代码寄存器
这类寄存器中存放条件码,对于用户来说是部分透明的.条件码是根据运算结果有硬件设置的位,如算术运算产生的正 负 零 或溢出等结果.
- 控制和状态寄存器
用于控制CPU的操作或运算的
- MAR 存储器地址寄存器
用于存放将被访问的存储单元的地址 - MDR 存储器数据寄存器
用于存放欲存入存储器中的数据或最近从存储器中读出的数据 - PC 程序计数器
存放现行指令的地址,通常具有计数功能,当遇到转移类指令时,PC值可以被修改 - IR 指令寄存器
存放当前欲执行的指令 - PSW程序状态字寄存器
存放条件码和其他状态信息 - 中断标记寄存器
存放中断标记
3. 中断系统
中断系统:主要用于处理计算机的各种中断
引起中断的原因:
- 自愿中断 人为设置的中断.
- 程序性事故 定点溢出 浮点溢出 操作码不能识别 除法非法等等.
- 硬件故障 插件接触不良 通风不良 磁表面损坏 电源掉电等等
- I/O设备 I/O设备一旦准备就绪,便能向CPU发出中断请求
- 外部事件 键盘输入,鼠标输入等等.
中断源: 通常将能引起中断的各个因素称作中断源.
- 可屏蔽中断: CPU可以根据该中断源是否被屏蔽来确定是否给予响应
- 不可屏蔽中断 CPU不能禁止响应的中断
中断系统需要解决的问题以及解决办法:
1. 各个中断源如何向CPU提出中断请求?
解:
- 为了判断是哪个中断源提出请求,在中断系统中必须设置中断请求标记触发器.简称中断请求触发器(INTR)
2. 当多个中断源同时提出中断请求时,中断系统如何确定优先响应哪个中断源的请求?
- 中断判优:在任何一个中断系统中,在任一时刻,只能响应一个中断源的请求.但许多中断源提出的请求都是随机的,当某一时刻有多个中断源提出请求时,中断系统必须按其优先级予以响应.
3. CPU在什么条件 什么时候 以什么方式来响应中断?
4. CPU响应中断后,如何停止原程序的执行,从而转入中断服务程序的入口地址?
-
CPU响应的条件为中断触发器必须为"1".
-
在中断系统中有一个允许中断触发器EINT 它可被开中断指令置"1",也可被关中断指令置"0".当EINT被置1时,CPU允许响应中断源的请求 置"0"时,CPU将禁止响应中断
-
CPU总是在指令执行周期结束后,响应任何中断源的请求. CPU在指令周期结束时刻统一向所有的中断源发出中断查询信号,只有此时CPU才能获知哪个中断源有请求,在某些计算机中有些指令执行事件很长,有可能将CPU的中断查询信号设置在指令执行过程中设置若干个查询断点,以便CPU发现中断请求可以及时响应.
-
在中断周期内,CPU会进行一系列的操作:
- 保护程序断点:
将当前程序计数器PC的内容(程序断点)保存到存储器中,它可以存在存储器的特定单元内,也可以存入堆栈. - 寻找中断服务程序的入口地址
- 硬件向量法: 在中断周期内,将向量地址送至PC 使得CPU下一条执行无条件转移指令,转至中断服务程序的入口地址
- 软件查询法: 在中断周期内,将中断识别程序其首地址送至PC 使得CPU执行中断识别程序,找到入口地址
- 关中断
为了确保,CPU响应某个中断源请求之后的一系列操作不至于又受到了新的中断请求的干扰,在中断周期内必须自动关中断
ENIT置"0"
5. CPU响应中断后如何保护现场?
6. 中断处理结束后,CPU如何恢复现场,如何返回到原程序的间断处?
- 保护现场
- 程序断点的现场由隐指令完成
- 各个寄存器内容可在中断服务程序中,由用户/系统用机器指令编程完成
- 恢复现场
- 在中断返回前,必须将寄存器的内容恢复到中断前的处理状态,这部分工作也有中断服务程序完成
7. 在中断处理过程中,又出现了新的中断请求,CPU如何处理