On a non-pipelined sequential processor, a program segment, which is the part…

2011

On a non-pipelined sequential processor, a program segment, which is the part of the interrupt service routine, is given to transfer 500 bytes from an I/O device to memory.

        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 Assume that each statement in this program is equivalent to a machine instruction which takes one clock cycle to execute if it is a non-load/store instruction. The load-store instructions take two clock cycles to execute.

The designer of the system also has an alternate approach of using the DMA controller to implement the same transfer. The DMA controller requires 20 clock cycles for initialization and other overheads. Each DMA transfer cycle takes two clock cycles to transfer one byte of data from the device to the memory.

What is the approximate speed up when the DMA controller based design is used in a place of the interrupt driven program based input-output?

  1. A.

    3.4

  2. B.

    4.4

  3. C.

    5.1

  4. D.

    6.7

Attempted by 43 students.

Show answer & explanation

Correct answer: A

Key insight: compute total cycles for the interrupt-driven method and for DMA, then take the ratio.

  • Interrupt-driven program:

    One-time setup = 2 cycles (initialize address, initialize count).

    Per byte loop = 2 (load) + 2 (store) + 1 (increment) + 1 (decrement) + 1 (branch) = 7 cycles.

    Total = 2 + 500 × 7 = 3502 cycles.

  • DMA-based transfer:

    One-time DMA overhead = 20 cycles; per byte transfer = 2 cycles.

    Total = 20 + 500 × 2 = 1020 cycles.

  • Speedup = (interrupt-driven cycles) / (DMA cycles) = 3502 / 1020 ≈ 3.43 ≈ 3.4.

A video solution is available for this question — log in and enroll to watch it.

Explore the full course: Gate Guidance By Sanchit Sir