Tiago Muck has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/57393 )
Change subject: mem-ruby: reuse existing event on CleanUnique
......................................................................
mem-ruby: reuse existing event on CleanUnique
Reuse the existing MaintainCoherence event to schedule
writebacks or cache fill after a CleanUnique.
JIRA: https://gem5.atlassian.net/browse/GEM5-1195
Change-Id: I127ebf78736b8312ccf2b18cf7c586eb5a77f373
Signed-off-by: Tiago Mück <tiago.m...@arm.com>
---
M src/mem/ruby/protocol/chi/CHI-cache-actions.sm
1 file changed, 24 insertions(+), 24 deletions(-)
diff --git a/src/mem/ruby/protocol/chi/CHI-cache-actions.sm
b/src/mem/ruby/protocol/chi/CHI-cache-actions.sm
index ce0fc13..3c6a02a 100644
--- a/src/mem/ruby/protocol/chi/CHI-cache-actions.sm
+++ b/src/mem/ruby/protocol/chi/CHI-cache-actions.sm
@@ -621,43 +621,28 @@
tbe.updateDirOnCompAck := false;
assert(tbe.dataValid == false);
assert(tbe.is_stale);
+ tbe.is_stale := false;
tbe.actions.push(Event:SendCompUCRespStale);
tbe.actions.push(Event:WaitCompAck);
- tbe.is_stale := false;
+ tbe.actions.push(Event:TagArrayWrite);
} else {
// must be the only one in sharers map
assert(tbe.dir_sharers.count() == 1);
assert(tbe.dataUnique);
- tbe.actions.push(Event:SendCompUCResp);
- tbe.actions.push(Event:WaitCompAck);
-
- // similar to Initiate_MaitainCoherence; writeback if the owner has
data as
- // clean data and we have it dirty and cannot keep it
- bool fill_pipeline := tbe.dataValid && tbe.dataDirty;
- bool req_has_dirty := tbe.dir_ownerExists && (tbe.dir_owner ==
tbe.requestor);
- if (tbe.dataValid && tbe.dataDirty && tbe.dataToBeInvalid &&
- (req_has_dirty == false)) {
- fill_pipeline := false;
- if (is_HN) {
- tbe.actions.push(Event:SendWriteNoSnp);
- } else {
- tbe.actions.push(Event:SendWriteClean);
- }
- tbe.actions.push(Event:WriteBEPipe);
- tbe.actions.push(Event:SendWBData);
- }
-
// needed by UpdateDirState_FromReqResp triggered by the expected
CompAck
tbe.dataMaybeDirtyUpstream := true;
tbe.requestorToBeExclusiveOwner := true;
tbe.dir_ownerExists := false;
- if (fill_pipeline) {
- tbe.actions.push(Event:CheckCacheFill);
- }
+ tbe.actions.push(Event:SendCompUCResp);
+ tbe.actions.push(Event:WaitCompAck);
+
+ // Ensure we writeback or update the cache if the owner has data as
+ // clean data and we have it dirty.
+ // MaintainCoherence queues the TagArrayWrite
+ tbe.actions.push(Event:MaintainCoherence);
}
- tbe.actions.push(Event:TagArrayWrite);
}
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/57393
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I127ebf78736b8312ccf2b18cf7c586eb5a77f373
Gerrit-Change-Number: 57393
Gerrit-PatchSet: 1
Gerrit-Owner: Tiago Muck <tiago.m...@arm.com>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s