Question: Assume that the following code segment is run on a MIPS processor with hazard detection and forwarding, in order, 5 stages pipeline (F (instruction fetch),

 Assume that the following code segment is run on a MIPS

Assume that the following code segment is run on a MIPS 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 bge $R1,$R0,L2 L1: sw $R2,100($R1)#$R2M[$R1+100] shl $R2,$R2,1 beq $R0,$R0, L3 L2: $R2,100($R1)#M[$R1+100]$R2 addi $R2,$R2,100 addi $R3,$R3,1 beq $R0,$R0,STR END 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. Notice that END is a directive, not an instruction. Note: You only need to find the dependencies and establish if any of them require stall cycles. 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!