假定计算机的主频为 500MHz ,CPI 为4。现有设备A 和 B,其数据传输率分别为2MB/s 和 40MB/s ,对应 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 总时间的百分比最多是多少 ?
【分析】 数据I/O的进行传输过程,是将数据线先放入缓冲寄存器中,然后再进行CPU的调用。让主存跟CPU的速度匹配。可以结合下图理解,CPU的传输数据速度比较快,而从主存或者辅存中进行交换的速度较慢,因此,设立一个缓冲区,使得CPU效率更高。
【解】
1. 由于缓冲寄存器的空间有限,而且在满时如果不进行传输就会进行替换导致数据丢失。因此A最多时隔查询的时间为缓冲区满的时间。即4B/2MB = 2。所以最多时隔2就得查询一次。
由计算机的主频为500MHz,时间周期为500M/s。A在1s的刷新次数为1s/2 = ;用于设备A的输入/输出的时间至少为个周期,所以占整个CPU时间的百分比至少为
计算1s中A用在输入/输出的时间周期,再与CPU1s的时间周期数的比值。
2.响应和处理中断的总周期数为400个,所需要的时间为400x(1/500M)=0.8。而设备B最长时间查询间隔为4B/40MB = 0.1;因此处理中断的周期比缓冲区传输时间长,在传满缓冲区后,中断仍未结束,则会导致缓冲区内的数据丢失,因此设备B不适合中断I/O方式。
3.在DMA方式中,分为三个阶段,预处理、数据传送和后处理,而只有预处理跟后处理需要CPU处理,而数据传送是DMA控制的。因此1s中设备B进行传输数据的周期为DMA次数X500,DMA次数就为40MB/1000B =40000次。
因此设备B在1s中CPU使用的时间周期数为,500x40000 = 2000 0000个时间周期。因此占用的CPU总时间百分比就为 2000 0000/500M = 4%.
【注】计算百分比,CPU计算百分比可以通过1s中,CPU能执行的时间周期,和设备1s中进行的时间周期之比。