在非流水线顺序处理器上,程序段是中断服务程序的一部分,用于将 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 控制器的设计代替基于输入输出的中断驱动程序时,大约的加速比是多少?
(一) 3.4
(二) 4.4
(三) 5.1
(四) 6.7答案:(一)
解释:
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
这个问题的测验