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 <>
Change-Id: I79ca2d45518de7a4e382b520a11f8e221b0cb803
Tested-by: kokoro <>
Reviewed-by: Srikant Bharadwaj <>
Reviewed-by: Jason Lowe-Power <>
Maintainer: Jason Lowe-Power <>
3 files changed