📜  门|门CS 2011 |问题 28

📅  最后修改于: 2021-09-24 05:33:44             🧑  作者: Mango

在非流水线顺序处理器上,程序段是中断服务程序的一部分,用于将 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

这个问题的测验