Appearance
题目
某设备以中断方式与 CPU 进行数据交换,CPU 主频为 1GHz,设备接口中的数据缓冲寄存器为 32 位,设备的数据传输率为 50KBps。若每次中断开销(包括中断响应和中断处理)为 1000 个时钟周期,则 CPU 用于该设备输入/输出的时间占整个 CPU 时间的百分比最多是( )。
错因
B
把缓冲寄存器算成 16 位 = 2 字节。每次中断传 2 字节 → 每秒中断数 = 50000/2 = 25000 次 → 占用周期 = 25000 × 1000 = 2.5 × 10^7 → 占比 = 2.5%。错在没把题面"32 位"换算成 4 字节。
C
把缓冲寄存器算成 8 位 = 1 字节。每次中断传 1 字节 → 每秒中断数 = 50000/1 = 50000 次 → 占用周期 = 5 × 10^7 → 占比 = 5%。错在把"32 位"完全忽略,按"每次中断传 1 字节"算。
D
把数据传输率多算 10 倍(如把 50 KBps 看成 500 KBps),或者把每次中断周期多算 10 倍。这个错相当于"数量级看错一位"。
总解析
核心思路:每秒触发的中断次数 × 每次中断的 CPU 周期数 → 占用 CPU 周期 → 与主频比 = 占比。
第一步:算"每次中断能搬运多少字节"
数据缓冲寄存器 = 32 位 = 4 字节。每次中断响应一次数据传输,CPU 把缓冲寄存器里的 4 字节拷到主存(或反向)。
第二步:算每秒中断次数
设备数据传输率 = 50 KBps = 字节/秒。
第三步:算每秒被中断占用的时钟周期
每次中断耗时 1000 个时钟周期:
第四步:算占整个 CPU 时间的百分比
CPU 主频 1 GHz = 周期/秒:
最终答案是 A(1.25%)。
完整推导表:
| 步骤 | 数值 |
|---|---|
| 数据缓冲寄存器宽度 | 32 位 = 4 字节 |
| 每次中断传送字节数 | 4 |
| 数据传输率 | 50 KB/s = 50000 字节/s |
| 每秒中断次数 | 50000 / 4 = 12500 |
| 每次中断耗周期 | 1000 |
| 每秒占用周期 | 12500 × 1000 = 1.25 × 10⁷ |
| CPU 主频 | 1 GHz = 10⁹ 周期/s |
| 占比 | 1.25 × 10⁷ / 10⁹ = 1.25% |
为什么是"最多":
题面问"最多是"——意指在设备满速传输且中断及时响应、无延迟的理想情况下。实际可能更低(如设备未满速),但不会更高。
易错点速查:
- 32 位 = 4 字节(按"位 ÷ 8"换算),不是 32 字节也不是 1 字节
- 每次中断传输的字节数 = 缓冲寄存器宽度(不是 1 字节默认)
- 单位换算:1 GHz = 周期/s;50 KBps = 字节/s
- 公式: