Name: Box: Date:


  1. (10 points) Draw the pipeline diagram for the following code running on a pipelined MIPS processor. Identify all of the data dependencies (draw forwards and stalls).

    add $3, $4, $2
    sub $5, $3, $1
    lw  $6, 200($3)
    add $7, $3, $6

    Which of the above dependencies are data hazards that will be resolved via forwarding? Which dependencies are data hazards that will cause a stall?

  2. (5 points) Modify the following code to make use of the delayed branch slot on a pipelined MIPS processor.

    loop: lw   $2, 100($3)
    sub  $4, $4, $5
    beq  $3, $4, loop
  1. (10 points) Consider the following code to be run on a pipelined MIPS processor:

    lw   $4, 4($5)
    lw   $3, 0($5)
    add  $7, $7, $3
    addi $5, $5, 4
    sw   $6, 0($5)
    add  $8, $8, $4
    beq  $7, $8, loop
    nop #this delay slot is currently empty

    a. Reorder the instructions to maximize performance. Performance may already by maximized.

    b. Reorder the instructions to minimize performance. Performance may already be minimized.

  2. (10 points) We wish to add a variant of the lw (load word) instruction, which increments the index register after loading the word from memory. This instruction (l_inc) corresponds to the following two instructions:

    lw   $rt, L($rs)
    addi $rs, $rs, 4

    Describe the changes you would need to make to the datapath. You may need to make major changes to the pipeline! Do your changes effect other instructions?