Appearance
题目
假定 CPU 主频为 50MHz,CPI 为 4。设备 D 采用异步串行通信方式向主机传送 7 位 ASCII 字符,通信规程中有 1 位奇校验位和 1 位停止位,从 D 接收启动命令到字符送入 I/O 端口需要 0.5ms。请回答下列问题,要求说明理由。
(1) 每传送一个字符,在异步串行通信线上共需传输多少位?在设备 D 持续工作过程中,每秒钟最多可向 I/O 端口送入多少个字符?
(2) 设备 D 采用中断方式进行输入/输出,示意图如下∶

I/O 端口每收到一个字符申请一次中断,中断响应需 10 个时钟周期,中断服务程序共有 20 条指令,其中第 15 条指令启动 D 工作。若 CPU 需从 D 读取 1000 个字符,则完成这一任务所需时间大约是多少个时钟周期?CPU 用于完成这一任务的时间大约是多少个时钟周期?在中断响应阶段 CPU 进行了哪些操作?
解析
本题考查 异步串行通信的帧格式、中断方式 I/O 的时间核算、中断响应阶段的工作内容 三块内容。难点在第 (2) 问的"两个时间"区分:
- 总任务时间:CPU 等设备 D 准备字符的时间 + 中断响应 + 中断服务程序部分指令;
- CPU 实际占用时间:只有 CPU 真正在干活的部分(中断响应 + 整段中断服务程序),不包括 CPU 在等设备的时间。
(1) 异步串行通信每帧位数与最大字符速率 [3 分]
每个字符的帧位数。
异步串行通信的字符帧 = 起始位 + 数据位 + 校验位 + 停止位:
易错点: 起始位(start bit)必须算上——它是异步通信的同步信号。如果只数 9 位(漏掉起始位),按评分说明给 1 分。
每秒最多字符数。 题干说"从 D 接收启动命令到字符送入 I/O 端口需要 0.5ms"——这是设备 D 准备 1 个字符的耗时。每秒最多准备:
【评分说明】第 1 问若答总位数为 9,给 1 分。
(2) 中断方式下 1000 字符的总时间与 CPU 占用时间 [9 分]
Step 0. 算时钟周期。
Step 1. 拆解一个字符的传送过程。
| 阶段 | 含义 | 时间 |
|---|---|---|
| ① 设备 D 准备字符 | 启动到字符到 I/O 端口 | 0.5 ms |
| ② 中断响应 | 关中断、保护断点等 | 10 个时钟周期 |
| ③ 中断服务程序前 15 条指令 | 含第 15 条启动 D 工作 | 个时钟周期 |
| ④ 中断服务程序后 5 条指令 | CPU 处理收尾,但此时 D 已开始下一字符的准备 | 个时钟周期(与下个字符的 ① 重叠) |
Step 2. 算单字符传送时间。
注意:第 15 条指令"启动 D 工作"之后,D 开始为下一字符准备,所以 ④ 与下一字符的 ① 重叠——传送时间只算到第 15 条为止。
设备 D 准备时间换算成时钟周期:
单字符传送时间:
Step 3. 算 1000 字符总时间。
【评分说明】第 1 问若答 25070020,同样给分;若答 25000000 或 25000020,给 2 分。
Step 4. 算 CPU 实际占用时间。
CPU 在每字符上真正干活的部分:中断响应(10)+ 整段 20 条中断服务():
1000 字符:
易错点(关键的两个时间区别):
- 任务总时间 包括"等 D 准备字符"——CPU 在等的时候也在跑,但等的时候 CPU 处理的是别的程序;
- CPU 用于该任务时间 只算 CPU 真正给这个 I/O 任务工作的时间。
两者的差就是"中断方式相对于程序查询方式的优势"——CPU 不必空轮询等设备。
Step 5. 中断响应阶段 CPU 的操作。
中断响应(一次中断刚被识别后的硬件动作)至少做:
- 关中断(屏蔽其他中断,避免中断嵌套竞争);
- 保护断点(把当前 PC 压栈或写入断点寄存器,以便中断返回);
- 保护程序状态(PSW);
- 识别中断源(向量法或软件查询)。
【评分说明】只要回答关中断和保护断点,就给 2 分;其他答案酌情给分。
编者注(生僻术语): "中断响应"是 CPU 内部硬件自动完成的几步固定动作,紧接着才进入"中断服务程序"(软件层面的处理代码)。两者不要混淆——前者由硬件做,后者由软件写。