Questions: Out-of-Order Execution and Register Renaming

5 questions to test your understanding

Score: 0 / 5
Question 1 Multiple Choice

Two instructions both write to register R1 but neither reads the result of the other. A classic in-order pipeline would stall on this hazard. What does register renaming do to resolve it?

AIt detects that R1 is shared and forces both instructions to wait for a lock on the register
BIt assigns each instruction a distinct physical register, eliminating the false dependency entirely
CIt reorders the instructions so the second write happens first, preventing the naming conflict
DIt routes both writes through the reorder buffer, which serializes them at commit time
Question 2 Multiple Choice

Why does out-of-order execution still require instructions to *retire* (commit to architectural state) in program order?

ATo ensure that each instruction occupies a functional unit for the same number of cycles
BBecause register renaming cannot correctly track results committed out of order
CSo the processor can recover a consistent architectural state after exceptions or branch mispredictions
DTo prevent the reorder buffer from overflowing when many instructions are in flight
Question 3 True / False

Register renaming in out-of-order processors eliminates most data dependencies between instructions.

TTrue
FFalse
Question 4 True / False

Instructions in an out-of-order processor may execute in a different order than they were issued, and they also retire (commit to the architectural register file) in a different order than they were issued.

TTrue
FFalse
Question 5 Short Answer

What is the role of the reorder buffer (ROB) in an out-of-order processor, and why is it necessary?

Think about your answer, then reveal below.