mem-ruby: Adding a new slicc statement - to not evict locked cachelines
Ruby caches block incoming ports with messages on a locked
address to make sure the line would not be replaced by others.
But they do not check the lock upon capacity/conflict misses.
This change adds a new slicc statement "check_on_cache_probe" which takes
two arguments (mandatoryQueue for the controller, and the line subject
to eviction - i.e. address returned by cacheProbe).
If the line is locked, incoming message is delayed for 1 cycle and the
controller skips this request (i.e. does not trigger an event).
Coherence protocols should be updated accordingly. One use case for MESI
Two Level will be added in a separate change.
Signed-off-by: Pouya Fotouhi <email@example.com>
Tested-by: kokoro <firstname.lastname@example.org>
Reviewed-by: Srikant Bharadwaj <email@example.com>
Reviewed-by: Jason Lowe-Power <firstname.lastname@example.org>
Maintainer: Jason Lowe-Power <email@example.com>
3 files changed