假定计算机的主频为 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 总时间的百分比最大是多少?
[tag_link]
1)程序定时向缓存端口查询数据,由于缓存端口大小有限,必须在传输完端口大小的数据时访问端口,以防止部分数据未被及时读取而丢失。设备 A 准备 32 位数据所用的时间为 4B/2MB=2μs,所以最多每隔 2μs 必须查询一次,每秒的查询次数至少是 1s / 2μs =5×105,每秒 CPU 用于设备 A 输入/输出的时间至少为5×105×10×4=2×107个时钟周期,占整个 CPU 时间的百分比至少是2×10/500M=4%。
2)中断响应和中断处理的时间为 400×(1/500M)=0.8μs,这时只需判断设备 B 准备 32 位数据要多久,如果准备数据的时间小于中断响应和中断处理的时间,那么数据就会被刷新,造成丢失。经过计算,设备 B 准备 32 位数据所用的时间为 4B/40MB=0.1us,因此设备 B 不适合采用中断 I/O 方式。
3)在 DMA 方式中,只有预处理和后处理需要 CPU 处理,数据的传送过程是由 DMA 控制的。设备 B 每秒的 DMA 次数最多为 40MB/1000B=40000,CPU 用于设备 B 输入/输出的时间最多为40000×500=2×107个时钟周期,占 CPU 总时间的百分比最多为2×107/500M=4%。