某计算机的 CPU 主频为 500MHz, CPI 为 5(即执行每条指令平均需 5 个时钟周期)。 假定某外设的数据传输率为 0. 5MB/s, 采用中断方式与主机进行数据传送, 以 32 位为传输单位, 对应的中断服务程序包含 18 条指令, 中断服务的其他开销相当于 2 条指令的执行时间。 请回答下列问题, 要求给出计算过程。
在中断方式下, CPU 用于该外设 I/O 的时间占整个 CPU 时间的百分比是多少?
该外设数据传输率为 0. 5MB/s, 以 32 位为传输单位, 故 1s 内因外设传输数据而引起的中断次数为:
0.5MB/4B=1.25×105(次)
对应的中断服务程序及其他开销共需 18+2=20 条指令, CPI 为 5, 故 1s 内用于该外设 I/O 的时钟周期数为:
1.25×105×20×5=1.25×107
CPU 主频为 500MHz, 即 1s 内共有 500M 个时钟周期, 故用于该外设 I/O的时间占整个 CPU 时间的百分比是:
(1.25×107)/(500×106)×100%=2.5%
当该外设的数据传输率达到 5MB/s 时, 改用 DMA 方式传送数据。 假设每次 DMA 传送大小为 5000B,且 DMA 预处理和后处理的总开销为 500 个时钟周期, 则 CPU 用于该外设 I/O 的时间占整个 CPU 时间的百分比是多少? (假设 DMA 与 CPU 之间没有访存冲突)
该外设的数据传输率为 5MB/s, 每次 DMA 传送大小为 50008, 故 1s 内的 DMA 传输次数为:
5MB/5000B=(5×106B)/(5×103B)=1000(次)
DMA 预处理及后处理的总开销为 500 个时钟周期, 故 1s 内用于该外设传输数据的时钟周期数为:
1000×500=5×105(个)
2PU 主频为 500MHz, 故用于该外设 I/O 的时间占整个 CPU 时问的百分比是:
(5×105)/(500×106)×100%=0.1%。