Question: 6 . 1 6 . 4 : [ 1 0 ] . help _ outline Consider the following piece of C code: for ( j
:
helpoutline
Consider the following piece of C code:
for j ; j ; j Dj Dj Dj ;
The ARMv code corresponding to the above fragment is:
MOV X # ADD X X X ADDI X X # LOOP: LDUR DX # LDUR DX # FADDD D D D STUR DX # ADDI X X # CMP X X BLE LOOP
The latency of an instruction is the number of cycles that must come between that instruction and an instruction using the result. Assume floating point instructions have the following associated latencies in cycles:
a
How many cycles does it take to execute this code?
b
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 loopcarried dependence between iterations of the loop. Identify the loopcarried dependences in the above code. Identify the dependent program variable and assemblylevel registers. You can ignore the loop induction variable jinstruction.
c
Rewrite the code by using registers to carry the data between iterations of the loop as opposed to storing and reloading the data from main memory Show where this code stalls and calculate the number of cycles required to execute.
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
