在非流水线顺序处理器上,程序段是中断服务程序的一部分,它的作用是将500个字节从I / O设备传输到内存。
Initialize the address register
Initialize the count to 500
LOOP: Load a byte from device
Store in memory at address given by address register
Increment the address register
Decrement the count
If count != 0 go to LOOP
假定该程序中的每个语句等效于机器指令,如果它是非加载/存储指令,则需要一个时钟周期执行。加载存储指令需要两个时钟周期来执行。
该系统的设计者还具有使用DMA控制器来实现相同传输的另一种方法。 DMA控制器需要20个时钟周期来进行初始化和其他开销。每个DMA传输周期需要两个时钟周期才能将一个字节的数据从器件传输到存储器。
当使用基于DMA控制器的设计代替基于中断驱动的程序的输入输出时,近似的加速速度是多少?
(A) 3.4
(B) 4.4
(C) 5.1
(D) 6.7答案: (A)
解释:
Explanation:
STATEMENT CLOCK CYCLE(S) NEEDED
Initialize the address register 1
Initialize the count to 500 1
LOOP: Load a byte from device 2
Store in memory at address given by address register 2
Increment the address register 1
Decrement the count 1
If count != 0 go to LOOP 1
Interrrupt driven transfer time = 1+1+500×(2+2+1+1+1) = 3502
DMA based transfer time = 20+500*2 = 1020
Speedup = 3502/1020 ≈ 3.4
Source: http://clweb.csa.iisc.ernet.in/rahulsharma/gate2011key.html
这个问题的测验