Matthew Poremba has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/56449 )

Change subject: mem-ruby: Support partial DMA writes in MOESI_AMD_Base-dir
......................................................................

mem-ruby: Support partial DMA writes in MOESI_AMD_Base-dir

This stores the byte address for a DMA request in a TBE. When the
request is sent to memory, the byte address is passed as well. The
AbstractController handles the creation of a packet smaller than a
cacheline after this point.

Change-Id: Ie669906dcdbece5b2eb275adaf84237a067ef11c
---
M src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm
1 file changed, 33 insertions(+), 16 deletions(-)



diff --git a/src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm b/src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm
index 41c09b1..b62854e 100644
--- a/src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm
+++ b/src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm
@@ -144,24 +144,25 @@
   }

   structure(TBE, desc="...") {
-    State TBEState,     desc="Transient state";
-    DataBlock DataBlk,  desc="data for the block";
-    bool Dirty,         desc="Is the data dirty?";
-    int NumPendingAcks,        desc="num acks expected";
-    MachineID OriginalRequestor,        desc="Original Requestor";
+    State TBEState,               desc="Transient state";
+    DataBlock DataBlk,            desc="data for the block";
+    bool Dirty,                   desc="Is the data dirty?";
+    int NumPendingAcks,           desc="num acks expected";
+    MachineID OriginalRequestor,  desc="Original Requestor";
     MachineID WTRequestor,        desc="WT Requestor";
-    bool Cached,        desc="data hit in Cache";
-    bool MemData,       desc="Got MemData?",default="false";
-    bool wtData,       desc="Got write through data?",default="false";
-    bool atomicData,   desc="Got Atomic op?",default="false";
-    Cycles InitialRequestTime, desc="...";
-    Cycles ForwardRequestTime, desc="...";
+    bool Cached,                  desc="data hit in Cache";
+    bool MemData,                 desc="Got MemData?", default="false";
+ bool wtData, desc="Got write through data?", default="false";
+    bool atomicData,              desc="Got Atomic op?", default="false";
+    Cycles InitialRequestTime,    desc="...";
+    Cycles ForwardRequestTime,    desc="...";
     Cycles ProbeRequestStartTime, desc="...";
-    MachineID LastSender, desc="Mach which this block came from";
-    bool L3Hit, default="false", desc="Was this an L3 hit?";
-    uint64_t probe_id,        desc="probe id for lifetime profiling";
-    WriteMask writeMask,    desc="outstanding write through mask";
-    int Len,            desc="Length of memory request for DMA";
+    MachineID LastSender,         desc="Mach which this block came from";
+    bool L3Hit, default="false",  desc="Was this an L3 hit?";
+    uint64_t probe_id,            desc="probe id for lifetime profiling";
+    WriteMask writeMask,          desc="outstanding write through mask";
+    int Len,                      desc="Length of memory request for DMA";
+    Addr ByteAddr, default="0",   desc="Byte address for DMA";
   }

   structure(TBETable, external="yes") {
@@ -893,6 +894,7 @@
       tbe.NumPendingAcks := 0;
       tbe.Dirty := false;
       tbe.Len := in_msg.Len;
+      tbe.ByteAddr := in_msg.PhysicalAddress;
       if (in_msg.Type == DMARequestType:WRITE) {
         tbe.wtData := true;
         tbe.Dirty := true;
@@ -950,6 +952,7 @@
         out_msg.MessageSize := MessageSizeType:Writeback_Data;
         out_msg.DataBlk := tbe.DataBlk;
         out_msg.Len := tbe.Len;
+        out_msg.ByteAddr := tbe.ByteAddr;
         DPRINTF(ProtocolTrace, "%s\n", out_msg);
       }
     }

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/56449
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: Ie669906dcdbece5b2eb275adaf84237a067ef11c
Gerrit-Change-Number: 56449
Gerrit-PatchSet: 1
Gerrit-Owner: Matthew Poremba <matthew.pore...@amd.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

Reply via email to