In the GenericScheduler, before comparing top and bottom candidates, we set
TopCand.Reason to NoCand, so that we can determine wether or not it was selected
over BotCand. However, in the case where the bottom candidate is selected,
TopCand needs to have Reason restored to its original value, otherwise
the scheduler will continue selecting from the bottom, until a new
instruction is added to the Top queue.
Details
Details
- Reviewers
MatzeB
Diff Detail
Diff Detail
Event Timeline
Comment Actions
Actually I am not so sure anymore. In cases where the topnode isn't picked the reason shouldn't matter, but we will reset the reason anyway next round when we compare against the top node again. Do you have an example that behaves differently with/without this patch? There may be something else wrong.
Comment Actions
pickNodeBidirectional() won't re-compare if topnode wasn't scheduled in the previous round.
Comment Actions
It will always compare the top and bottom pick. Even though one of them is possibly saved from last round they will be subject to a comparison so outdates/old data in the reason field shouldn't affect the decision.