mem-ruby: MESI_Three_Level LL/SC improvements
authorTimothy Hayes <timothy.hayes@arm.com>
Mon, 27 Apr 2020 14:04:09 +0000 (15:04 +0100)
committerPouya Fotouhi <pfotouhi@ucdavis.edu>
Sat, 2 May 2020 06:49:17 +0000 (06:49 +0000)
commite61f10740bf17437c3d771593e9e1830aa90d1d2
treee80ce49aa66ee95f66ead54381cf548bb601d4f7
parentdd6cd33344044bee2f6a6341b233b0bdb619af94
mem-ruby: MESI_Three_Level LL/SC improvements

This patch fixes the MESI_Three_Level protocols so that it correctly
informers the Ruby sequencer when a line eviction occurs. Furthermore,
the patch allows the protocol to recognize the 'Store_Conditional'
RubyRequestType and shortcuts this operation if the monitored line
has been cleared from the address monitor. This prevents certain
livelock behaviour in which a line could ping-pong between competing
cores.

The patch establishes a new C/C++ preprocessor definition which allows
the Sequencer to send the 'Store_Conditional' RubyRequestType to
MESI_Three_Level instead of 'ST'. This is a temporary measure until
the other protocols explicitely recognize 'Store_Conditional'.

Change-Id: I27ae041ab0e015a4f54f20df666f9c4873c7583d
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28328
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Maintainer: Bobby R. Bruce <bbruce@ucdavis.edu>
Tested-by: kokoro <noreply+kokoro@google.com>
src/mem/ruby/protocol/MESI_Three_Level-L0cache.sm
src/mem/ruby/system/SConscript
src/mem/ruby/system/Sequencer.cc