计算题

某 32 位机(机器字长 32 位) 的一台外设通过 32 位总线与系统内存相连。 CPU 每秒执行 100 条指令,平均每条指令需要 5 个机器周期, 其中 3 个周期必须访问内存。 内存读写需一个机器周期, 假定 CPU 在 95%的时间内持续执行“背景程序”, 且这段时间内不执行 I/O 指令。 现该外设需要把一个非常大的数据块传送到内存。

问答题

如果采用程序 I/O 方式, 每传送一 32 位字宽的数据需要 CPU 执行 2 条指令。 请计算最大数据传输率(单位: 字/秒)。

【正确答案】

数据块非常大, 可认为其执行时间远远大于 1s, 故可用其 1s 内的最大数据传输率来近似表示其整个传输过程中的最大数据传输率。
CPU 每秒执行 100 条指令, 且 95%的时间内持续执行背景程序, 故 1s 内 CPU 可用来进行 I/O 传送的指令条数为: 100* (1-95%) =5(条);
最大数据传输率为: 5/2=2. 5(字/秒)。

【答案解析】
问答题

如果采用 DMA 方式, 在 DMA 与 CPU 出现总线访问冲突时, CPU 优先。 请计算最大数据传输率(单位: 字/秒)。

【正确答案】

 CPU 每秒内共有(100* 5=) 500 个机器周期, 其中执行“背景程序” 时有(100* 95%* 3=) 285个机器周期必须访问内存, 由于 DMA 与 CPU 访存冲突时, CPU 优先, 故 DMA 控制器只能在余下的 500-285=215 个机器周期内访存;
又内存读写需要一个机器周期, 故采用 DMA 传输方式时, 1s 内可读写内存 215 次, 即最大数据传输率为215 字/秒。

【答案解析】