loop: LW R4, 0(R3) ADDI R3, R3, 4 SUBI R1, R1, 1 b1: BEQ R0, R4, b2 # R0 is zero
ID: 3709018 • Letter: L
Question
loop:
LW R4, 0(R3)
ADDI R3, R3, 4
SUBI R1, R1, 1
b1:
BEQ R0, R4, b2 # R0 is zero
ADDI R2, R2, 1
b2:
BNE R0, R1, loop
ADDI R3, R3, 4
Assume R3 points to the array with all 0 entries.
R1 = R2 = 5.
a) If there is a branch delay slot and result of R2 stays even after branch is taken. What is the value of R2 when the loop finishes?
b) If there is no branch delay slot, what is the value of R2 when the loop finishes?
c) Which behavior makes the most sense?
d) Now assume we use a global branch-predictor with no branch delay slot. Assume R1 starts out with value 10. R3 points to the array with all 0 entries. How well does the predictor work?
Explanation / Answer
(a)
R2 value would be 6 at end of loop.
(b)
R2 value would be 6 at end of loop.
(c)
Since R2 is not being used anywhere within the loop except incrementing it,
both the behaviours make sense.
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.