systemc: Change how the scheduler orders processes.
authorGabe Black <gabeblack@google.com>
Sat, 15 Sep 2018 03:20:54 +0000 (20:20 -0700)
committerGabe Black <gabeblack@google.com>
Tue, 9 Oct 2018 21:50:44 +0000 (21:50 +0000)
commit69a40e98d01bab5c520723f35398c29f739d226f
tree640aaca1f6f01ebf25462944fbb3e6d0d04afb39
parentf8126c66ce65a2770ce7c524d7eb0becfbb11d4b
systemc: Change how the scheduler orders processes.

The Accellera implementation looks like it does all the methods, then
all the threads, and then loops back and tries again, and there are
even comments in the code that suggests that. What it actually does,
however, is runs all the methods, then runs a single thread if one is
waiting, and then starts over. The effect is that the scheduler will
run any methods first, then run threads until a method might have
become ready, and then repeat.

This will actually result in more mixing of threads and methods, more
context switches, and worse performance, but it makes the regressions
pass more.

Change-Id: I7cb0485e26eed79204ff2a3c3ded27b973e0b7b0
Reviewed-on: https://gem5-review.googlesource.com/c/12808
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
src/systemc/core/scheduler.cc
src/systemc/core/scheduler.hh