mem-ruby: modify the TBE data state for ReadOnce_HitUpstream

When ReadOnce request hits upstream, set dataToBeInvalid to true
for R* states so that the line from the upstream is successfully dropped
at the end by Finalize_UpdateCacheFromTBE.
For UD_RU and UC_RU state, set dataValid to true to prevent it changing
to RU state when it doesn't get the snoop data response.

Change-Id: Ie83c511e8d158e18abc5c9c16bc6040ce73587bf
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/58411
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Tiago Muck <tiago.muck@arm.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Daecheol You
2022-03-11 13:23:59 +09:00
parent cad8cf70ee
commit 9bfffe0f34

View File

@@ -554,6 +554,15 @@ action(Initiate_ReadOnce_HitUpstream, desc="") {
}
tbe.updateDirOnCompAck := false;
// no need to update or access tags/data on ReadOnce served from upstream
if (is_invalid(cache_entry)) {
// if we receive data, invalidate at the end so it can be dropped
tbe.dataToBeInvalid := true;
} else if (tbe.dataValid == false) {
// possible on UD_RU,UC_RU where cache_entry valid but tbe.dataValid == false
// this prevents going to RU if no data is received from snoop
tbe.dataValid := true;
}
}