Review Board 2.0.15


O3: Keep around the last committed instruction and use for squashing.

Review Request #348 - Created Dec. 6, 2010 and submitted

Information
Ali Saidi
gem5
Reviewers
Default
ali, gblack, nate, stever
O3: Keep around the last committed instruction and use for squashing.

Before this, 0 was used for the youngest sequence number to squash
and there was a race to rename. In the case of a instruction marked
serializeAfter that squashes the ROB is empty and 0 is passed to the rename.
If multiple instructions commited that same cycle rename it could undo some
renames beacuse of the 0 being passed which would undo some state.

   
Posted (Dec. 8, 2010, 4:02 p.m.)
Looks ok. While the commit message is mostly ok it would benefit from some strategic commas. Also beacuse ->because.
Ship it!
Posted (Dec. 21, 2010, 2:18 p.m.)
I agree with Gabe, the explanation in the commit message is kind of confusing, but the patch itself looks OK.
  1. O3: Keep around the last committed instruction and use for squashing.
    
    Without this change 0 is always used for the youngest sequence number if
    a squash occured and the ROB was empty (E.g. an instruction is marked
    serializeAfter or a fetch stall prevents other instructions from issuing).
    Using 0 there is a race to rename where an instruction that committed the
    same cycle as the squashing instruction can have it's renamed state undone 
    by the squash using sequence number 0.