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.
