Consider the following piece of C code:for (j=2;j<1000;j++)D[j] = D[j−1]+D[j−2];Th e MIPS code corresponding to the above fragment is:addiu $s2,$zero,7992addiu $s1,$zero,16loop: l.d $f0, 16($s1)l.d $f2, 8($s1)add.d $f4, $f0, $f2s.d $f4, 0($s1)addiu $s1, $s1, 8bne $s1, $s2, loopInstructions have the following associated latencies (in cycles): add.d l.d s.d addiu 4 6 1 2 How many cycles does it take for all instructions in a single iteration of the above loop to execute?When an instruction in a later iteration of a loop depends upon a data value produced in an earlier iteration of the same loop, we say that there is a loop carried dependence between iterations of the loop. Identify the loop-carried dependences in the above code. Identify the dependent program variable and assembly-level registers. You can ignore the loop induction variable j.
Consider the following piece of C code:
for (j=2;j<1000;j++)
D[j] = D[j−1]+D[j−2];
Th e MIPS code corresponding to the above fragment is:
addiu $s2,$zero,7992
addiu $s1,$zero,16
loop: l.d $f0, 16($s1)
l.d $f2, 8($s1)
add.d $f4, $f0, $f2
s.d $f4, 0($s1)
addiu $s1, $s1, 8
bne $s1, $s2, loop
Instructions have the following associated latencies (in cycles):
add.d | l.d | s.d | addiu |
4 | 6 | 1 | 2 |
How many cycles does it take for all instructions in a single iteration of the above loop to execute?
When an instruction in a later iteration of a loop depends upon a data value produced in an earlier iteration of the same loop, we say that there is a loop carried dependence between iterations of the loop. Identify the loop-carried dependences in the above code. Identify the dependent program variable and assembly-level registers. You can ignore the loop induction variable j.
Trending now
This is a popular solution!
Step by step
Solved in 2 steps