Review Board 2.0.15


o3: Fix starvation issue in Round Robin SMT commit policy

Review Request #2182 - Created March 4, 2014 and updated

Information
Faissal Sleiman
gem5
default
Reviewers
Default
Changeset 10102:1167ec8e97e9
---------------------------
o3: Fix starvation issue in Round Robin SMT commit policy

The round robin commit policy can result in starvation when a thread is
trying to commit a non-speculative instruction. Two effects cause this to
happen. (1) commitHead() fails if the parameter inst_num is greater than
zero when trying to commit non-speculative instructions. (2) Round robin
cycles the priority of a chosen thread even if it failed to commit.

It is possible for round robin to choose thread 0 at the start of a cycle,
thread 0 then commits one instruction, round robin next chooses thread 1,
thread 1 fails to commit because it happens to be trying to commit a
non-speculative instruction with inst_num = 1. Next cycle, round robin
will have returned to thread 0 which can continue to starve thread 1.

The patch fixes this by returning a thread which fails to commit to the
head of the priority list for the beginning of next cycle.