计算机体系结构-通用特性解析
立即解锁
发布时间: 2025-08-20 02:12:42 阅读量: 2 订阅数: 4 


计算机架构:软件、编码与硬件的综合探讨
### 计算机体系结构 - 通用特性解析
#### 1. 中断机制概述
中断是第三代计算机实现的第四大编程概念。对于 CPU 而言,中断待处理信号可能来自内部或外部。CPU 要接受待处理的中断请求,F 寄存器中的 IF(中断允许标志)位必须置 1。当此条件满足时,硬件机制被激活,迫使当前程序放弃控制权;若 IF 位为 0,CPU 会暂时忽略该中断信号,且中断待处理信号在 CPU 采取进一步行动前不会消失。
中断硬件机制激活时,CPU 会进行上下文切换。在微型计算机中,CPU 切换 PC(程序计数器)和 SR(状态寄存器),称为部分上下文切换;在大型机中,切换整套工作寄存器的过程称为完全上下文切换。不过,真正完整的运行环境还包括内存中的代码和磁盘上的数据。任务被定义为由操作系统分配资源的基本计算单元。中断发生时,CPU 保存当前任务的旧环境,并从低内存地址(即中断向量)加载新环境。中断对于保护系统免受崩溃和提高吞吐量是必要的,有了中断,CPU 操作和 I/O 操作可以同时进行。
#### 2. 中断类型及优先级
不同类型的中断具有不同的优先级,以确保系统能合理处理各种中断情况。以下是 IBM 大型机中断的优先级列表:
| 中断类型 | 优先级 |
| --- | --- |
| 机器检查(MC) | 4(最高) |
| 程序检查(PC) | 3 |
| 管理调用(SVC) | 3 |
| 外部 | 2 |
| I/O | 1(最低) |
- **机器检查(MC)**:具有最高优先级。当机器检测到硬件故障时,所有计算应暂停。MC 的中断服务例程(ISR)会显示消息,提示操作员运行更多诊断程序,必要时寻求帮助。机器正常工作后,所有被中断的程序应重新运行。
- **程序检查(PC)**:与 SVC 优先级相同,因为它们互斥,不会同时发生。当检测到编程错误,如用户尝试用整数除以零或执行非法操作码时,CPU 硬件会触发中断。
- **管理调用(SVC)**:是一种特殊指令,用于触发硬件中断机制。执行 SVC 后,控制权传递给操作系统,由操作系统执行相应服务。SVC 指令类似于子程序调用,但会保存 SR。例如,程序需要读取键盘输入时,会向操作系统发出系统调用作为 I/O 请求。系统调用、管理调用、陷阱调用和 int(中断)含义相同。服务完成后,操作系统通常将控制权返回给调用后的下一条指令。
- **外部**:由外部设备(如实时时钟、其他计算机、仪器等)产生的信号。如果外部信号重要,应赋予较高优先级。微型计算机支持一种名为 NMI(不可屏蔽中断)的外部中断,其优先级高于任何 I/O 中断,这在信号来自紧急实时设备时非常合理。
- **I/O**:由 I/O 控制器生成的 I/O 完成中断信号,优先级最低。因为该事件迟早会得到处理,不会造成损失。这种设计使 CPU 和 I/O 设备能并行操作,即异步处理。例如,键盘输入字符到达硬件 I/O 数据缓冲区时,会触发中断以表示 I/O 完成。任务的 I/O 操作完成后,CPU 处理该事件并标记任务准备好执行。
#### 3. 上下文切换
在 8086 中,中断的发生会触发硬件中断机制进行上下文切换。以系统调用终止为例:
```plaintext
Code image
Statement
B4 4C
mov ah, 4ch
;function code in ah
CD 21
int 21h
;system call
```
功能代码 4C 通过 AH 以值传递的方式请求程序终止。int 指令的十六进制操作码为 CD,十六进制中断代码 21 是用于计算低内存中中断向量地址的立即操作数。每个中断向量有两个字,顶部字是新的 IP,底部字是新的 CS,即中断向量包含 CS:IP 对。执行 int 21h 指令会引发以下六个硬件步骤:
1. 压入 F 寄存器。
2. 重置 IF(中断标志)和 TF(跟踪标志)。
3. 压入 CS。
4. CS ← M[21 * 4 + 2]。
5. 压入 IP。
6. IP ← M[21 * 4]。
执行指令前的栈帧如图 5.10a 所示,执行 int 指令后,F、CS 和 IP 寄存器按步骤 1、3 和 5 压入栈中(如图 5.10b)。步骤 2、4 和 6 加载新环境。步骤 4 中,新的 CS 从硬件计算的低内存地址获取,先将中断代码左移两位得到 20 位地址(如图 5.10c),然后将 b1 置为 1 形成最终地址(如图 5.10d)。步骤 6 中,将中断代码左移两位生成绝对低地址。在 CPU 执行前两个步骤时,特殊硬件会禁用任何进一步的中断。之后,新的 F 寄存器与旧的 F 寄存器相同,只是 IF 和 TF 位被清除,不再允许中断。
#### 4. 中断返回
处理完中断后,如果操作系统想返回被中断的程序,会做两件事:首先恢复程序的工作寄存器,然后执行 iret(中断返回)指令:
```plaintext
Code image
Statement
CF
iret
;interrupt return
;pop ip
;pop cs
;pop f
```
iret 指令的操作码为 CF,类似于远返回指令,但在弹出返回地址后还会从栈中弹出 F 寄存器。
#### 5. 多任务处理
I/O 控制器芯片用于执行 I/O 操作。当 I/O 操作完成时,如果控制器能中断 CPU,I/O 操作
0
0
复制全文
相关推荐










