cpu: Make the NonCachingSimpleCPU use a back door for fetch.
authorGabe Black <gabe.black@gmail.com>
Wed, 4 Nov 2020 09:03:25 +0000 (01:03 -0800)
committerGabe Black <gabe.black@gmail.com>
Tue, 10 Nov 2020 13:43:19 +0000 (13:43 +0000)
commitb12422c79b1b5d30afb89d006cf777424729652d
tree32c813a78e9ed5a1317faa02bf6a075018267f30
parent56a549080f45b3d0d0e9d272b7475e35597e31f7
cpu: Make the NonCachingSimpleCPU use a back door for fetch.

If the memory system can provide a back door to memory, store that, and
use it for subsequent accesses to the range it covers. For now, this
covers only fetch. That's because fetch will generally happen more than
loads and stores, and because it's relatively simple to implement since
we can ignore atomic operations, etc.

Some limitted benchmarking suggests that this speeds up x86 linux boot
by about 20%, although my modifications to the config to remove caching
(which blocks the back door mechanism) also made gem5 crash, so it's
hard to say for sure if that's a valid result. The crash happened in the
same way before and after, so it's probably at least relatively
representative.

While this gives a pretty substantial performance boost, it will prevent
statistics from being collected at the memory, or on intermediate objects
in the interconnect like the bus. That is to be expected with this
memory mode, however.

Change-Id: I73f73017e454300fd4d61f58462eb4ec719b8d85
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/36979
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/cpu/simple/atomic.cc
src/cpu/simple/atomic.hh
src/cpu/simple/noncaching.cc
src/cpu/simple/noncaching.hh