假定计算机的主频为 500MHz, CPI 为 4。 现有设备 A 和 B, 其数据传输率分别为2MB/s 和 40MB/s, 对应 I/O 接口中各有一个 32 位数据缓冲寄存器。 请回答下列问题, 要求给出计算过程。
若设备 A 采用定时查询 I/O 方式, 每次输入/输出都至少执行 10 条指令。 设备 A 最多间隔多长时间查询一次才能不丢失数据? CPU 用于设备 A 输入/输出的时间占 CPU 总时间的百分比至少是多少?
程序定时向缓存端口查询数据, 由于缓存端口大小有限, 必须在传输完端口大小的数据时访问端口 , 以防止部分数据没有被及时读取而丢失。 设备 A 准备 32 位数据所用时间为4B/2MB=2us, 所以最多每隔 2us 必须查询一次, 每秒的查询次数至少是 1s/2us=5×105 , 每秒 CPU用于设备 A 输入/输出的时间至少为 5×105 10×4=2×107 个时钟周期, 占整个 CPU 时间的百分比至少是 2×107 /500M=4%。
在中断 I/O 方式下, 若每次中断响应和中断处理的总时钟周期数至少为 400, 则设备 B能否采用中断 I/O 方式? 为什么?
中断响应和中断处理的时间为 400×(1/500M) =0.8us, 这时只需判断设备 B 准备 32 位数据要多久, 如果准备数据的时间小于中断响应和中断处理的时间, 那么数据就会被刷新、 造成丢失。 经过计算, 设备 B 准备 32 位数据所用时间为 4B/40MB=0.1us, 因此, 设备 B 不适合采用中断 I/O 方式。
若设备 B 采用 DMA 方式, 每次 DMA 传送的数据块大小 1000B, CPU 用于 DMA 预处理和后处理的总时钟周期数为 500, 则 CPU 用于设备 B 输r/输出的时间占 CPU 总时间的百分比最多是多少?
在 DMA 方式中, 只有预处理和后处理需要 CPU 处理, 数据的传送过程是由 DMA 控制。设备 B 每秒的 DMA 次数最多为40MB/1000B=40000, CPU 用于设备 B 输入/输出的时间最多为40000×500=2×107 个时钟周期, 占 CPU 总时间的百分比最多为 2×107 /500M=4%。