Question: PROBLEM 2 Assume that the following code segment is run on a MIPS like processor with hazard detection and forwarding, in order, 5 stages pipeline

PROBLEM 2
Assume that the following code segment is run on a MIPS like processor with hazard detection and forwarding, in order, 5 stages pipeline (F (instruction fetch), D (instruction decode), E (execute), M (memory access, W (write-back)), static not taken branch prediction (branches are always predicted as not taken), etc.. Below is the code segment that is running on the processor.
# code segment
beq $R1, $R0, L2
L1: sw $R2,100($R1) # $R2-> M[$R1+100]
shl $R2, $R2,1
beq $R1, $R0, L3
L2: lw $R2,100($R1) # M[$R1+100]-> $R2
addi $R2, $R2,100
addi $R3, $R3,1
beq $R1, $R0, L1
L3: END
Note: END is an assembly directive, not an instruction and should not be counted as an instruction.
a) How many cycles does this program take? Assume all data and instructions are already in the cache, and that all register values are initially 0. The branches are always going to be evaluated as not taken and they require two stall clock cycles each.
b) An optimizing compiler is used to re-order the code for faster execution. Given that the branches are always going to be not taken, how would the new code look like? How many cycles would the code take?

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!