Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

The following code adds integers in two arrays (whose address is in $s0 and $s1)

ID: 3937140 • Letter: T

Question

The following code adds integers in two arrays (whose address is in $s0 and $s1) and stores the results back into the first array. $s2 is initialized to 0. $s3 is 100. Assume MIPS processors with a 5-stage pipeline and a not-taken predicator. For each of the following implementation, show the pipeline diagram from the IF stage of I1 to the IF stage of I1 in the next iteration and compute the total number of cycles needed for this loop. When counting the total number of cycles, simply multiply the cycle count for each iteration by the number of iterations. This implementation does not have any forwarding paths. The conditional branch is resolved in the EXE stage and the correct instruction is fetched in the MEM stage of the branch instruction. This implementation has all the forwarding paths needed for better performance. The conditional branch is resolved in the ID stage.

Explanation / Answer

SUB rd, r1, r2:

PC PC+4

GPR[rd] GPR[r1] - GPR[r2]

LW rd, r1, immediate:

PC PC+4

GPR[rd] mem[ GPR[r1] + immediate ]

SW r1, r2, immediate:

PC PC+4

mem[ GPR[r1] + immediate ] GPR[r2]

BEQZ r1, immediate:

if (GPR[r1]0) then

PC PC+4

else

PC PC+immediate

NOP:

PC PC

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote