Skip to content

2018年 408 计算机组成原理 第 43 题

计算机组成原理2018年综合题8分

题目

假定计算机的主频为 500MHz,CPI 为 4。现有设备 A 和 B,其数据传输率分别为 2MBps 和 40MBps,对应 I/O 接口中各有一个 32 位数据缓冲寄存器。请回答下列问题,要求给出计算过程。

(1) 若设备 A 采用定时查询 I/O 方式,每次输入/输出都至少执行 10 条指令。设备 A 最多间隔多长时间查询一次才能不丢失数据?CPU 用于设备 A 输入/输出的时间占 CPU 总时间的百分比至少是多少?

(2) 在中断 I/O 方式下,若每次中断响应和中断处理的总时钟周期数至少为 400,则设备 B 能否采用中断 I/O 方式?为什么?

(3) 若设备 B 采用 DMA 方式,每次 DMA 传送的数据块大小 1000B,CPU 用于 DMA 预处理和后处理的总时钟周期数为 500,则 CPU 用于设备 B 输入/输出的时间占 CPU 总时间的百分比最大是多少?

解析

本题用同一个核心思路串起 3 种 I/O 方式:"设备每准备 1 个传输单位的耗时" vs "CPU 处理这次传输所需耗时" 的对比。

  • 程序查询:CPU 每隔 X 时间主动查端口,X 必须 ≤ 设备产出周期,否则丢数据;
  • 中断:设备产出后申请中断,中断响应 + 处理 必须 ≤ 设备产出周期,否则上一字符还没读走下一个就来覆盖;
  • DMA:设备整块传到主存,CPU 只在预处理 / 后处理介入,CPU 占用率 = (预+后处理周期 × 块数) / 总时钟周期。

CPU 时钟周期:

每秒 CPU 提供 个时钟周期。

(1) 设备 A 定时查询:查询周期与 CPU 占用比例 [4 分]

Step 1. 设备 A 准备 32 位(4B)数据的时间。

为不丢数据,CPU 必须在每 2μs 内至少查询一次。

Step 2. 每秒查询次数。

Step 3. 每次查询的 CPU 开销。

每次查询执行 10 条指令,CPI = 4:

Step 4. 每秒 CPU 用于查询的总周期。

Step 5. 占 CPU 总时间百分比。

易错点: 是 "最多间隔多长查询一次" 而非 "最少"。意思是 CPU 查询的最大允许间隔不能超过设备准备一个数据的时间,否则上一个数据会被新数据覆盖丢失。

(2) 设备 B 能否采用中断 I/O?[3 分]

Step 1. 算单次中断的总耗时。

每次中断响应 + 处理共 400 个时钟周期:

Step 2. 算设备 B 准备 32 位(4B)数据的时间。

Step 3. 比较。

设备 B 每 0.1μs 就送来一个 32 位数据,但 CPU 处理一次中断要花 0.8μs ——CPU 还没处理完上一个,下一个数据就把缓冲区覆盖了,必然丢数据。

结论:设备 B 不适合中断方式。 应改用 DMA。

(3) 设备 B 用 DMA 时 CPU 占用比例 [4 分]

Step 1. 算每秒 DMA 次数。

每次 DMA 传 1000B,设备 B 速率 40MB/s:

Step 2. 算每秒 DMA 总开销。

每次 DMA 预+后处理 500 个时钟周期:

Step 3. 占 CPU 总时间百分比。

编者注(生僻术语): 注意:DMA 整块传输 1000B 的过程 CPU 不参与(没有访存冲突的前提下),所以 CPU 占用只算 500 周期 × 块数。这是 DMA 相对于中断方式在大块传输上的根本优势——把"次数"从 N 字符压到 N/块大小。

巧合: 本题中查询方式(设备 A,2MB/s)和 DMA 方式(设备 B,40MB/s)的 CPU 占用率都是 4%,但意义不同:查询方式 4% 是用于"每个字"的零碎中断;DMA 4% 是用于"每千字节块"的预后处理——后者实际服务的数据量是前者的 20 倍。

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数