9. Consider the following loop. LOOP: LDUR X10, [X1, #O] LDUR X11, [X1, #8] ADD X12, X10, X11 STUR X12, [X1, #-8] SUBI X
Posted: Fri Apr 29, 2022 6:46 am
9. Consider the following loop. LOOP: LDUR X10, [X1, #O] LDUR X11, [X1, #8] ADD X12, X10, X11 STUR X12, [X1, #-8] SUBI X1, X1, #16 CBNZ X12, LOOP (a) Assume that data and control hazards are handled by simply stalling the pipeline (i.e. inserting NOP instructions where necessary). Show the pipeline timing diagram of the code execution. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 IF ID EX MEWB IF Cycle number: LOOP: LDUR X10, [X1, #0] LDUR X11, [X1, #8] ADD X12, X10, X11 STUR X12, [X1, #-8] SUBI X1, X1, #16 CBNZ X12, LOOP 2nd iteration: LDUR X10, [X1, #0]
(b) Can you reorder the code to reduce the number of stalls? If yes, show the reordered code. (c) Show the pipeline timing diagram of the code execution with data forwarding and assume that the branch is handled by predicting it as taken and the branch target address is calculated at the ID stage. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 IF ID EX|ME WB A IF > > Cycle number: LOOP: LDUR X10, [X1, #0] LDUR X11, [X1, #8] ADD X12, X10, X11 STUR X12, [X1, #-8] SUBI X1, X1, #16 CBNZ X12, LOOP > > 2nd iteration: LDUR X10, [X1, #0] (d) What is the speedup for the execution of (c) over (a)?
(b) Can you reorder the code to reduce the number of stalls? If yes, show the reordered code. (c) Show the pipeline timing diagram of the code execution with data forwarding and assume that the branch is handled by predicting it as taken and the branch target address is calculated at the ID stage. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 IF ID EX|ME WB A IF > > Cycle number: LOOP: LDUR X10, [X1, #0] LDUR X11, [X1, #8] ADD X12, X10, X11 STUR X12, [X1, #-8] SUBI X1, X1, #16 CBNZ X12, LOOP > > 2nd iteration: LDUR X10, [X1, #0] (d) What is the speedup for the execution of (c) over (a)?