diff options
author | Tony Gutierrez <anthony.gutierrez@amd.com> | 2016-01-19 14:05:03 -0500 |
---|---|---|
committer | Tony Gutierrez <anthony.gutierrez@amd.com> | 2016-01-19 14:05:03 -0500 |
commit | 28e353e0403ea379d244a418e8dc8ee0b48187cf (patch) | |
tree | 64bf9dcdf22bf7f60668f790744c11ee8ec2f2bf /src/mem/protocol | |
parent | d658b6e1cc22de852fef611e28f448257acc298a (diff) | |
download | gem5-28e353e0403ea379d244a418e8dc8ee0b48187cf.tar.xz |
mem: write combining for ruby protocols
This patch adds support for write-combining in ruby.
Diffstat (limited to 'src/mem/protocol')
-rw-r--r-- | src/mem/protocol/RubySlicc_Exports.sm | 13 | ||||
-rw-r--r-- | src/mem/protocol/RubySlicc_Types.sm | 2 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/mem/protocol/RubySlicc_Exports.sm b/src/mem/protocol/RubySlicc_Exports.sm index 882102923..5ee26d65c 100644 --- a/src/mem/protocol/RubySlicc_Exports.sm +++ b/src/mem/protocol/RubySlicc_Exports.sm @@ -39,12 +39,25 @@ external_type(Addr, primitive="yes"); external_type(Cycles, primitive="yes", default="Cycles(0)"); external_type(Tick, primitive="yes", default="0"); +structure(WriteMask, external="yes", desc="...") { + void clear(); + bool cmpMask(WriteMask); + bool isEmpty(); + bool isFull(); + bool isOverlap(WriteMask); + void orMask(WriteMask); + void fillMask(); +} + structure(DataBlock, external = "yes", desc="..."){ void clear(); + void copyPartial(DataBlock, int, int); + void copyPartial(DataBlock, WriteMask); void atomicPartial(DataBlock, WriteMask); } bool testAndRead(Addr addr, DataBlock datablk, Packet *pkt); +bool testAndReadMask(Addr addr, DataBlock datablk, WriteMask mask, Packet *pkt); bool testAndWrite(Addr addr, DataBlock datablk, Packet *pkt); // AccessPermission diff --git a/src/mem/protocol/RubySlicc_Types.sm b/src/mem/protocol/RubySlicc_Types.sm index 95fa1db17..a6c57e1b0 100644 --- a/src/mem/protocol/RubySlicc_Types.sm +++ b/src/mem/protocol/RubySlicc_Types.sm @@ -126,6 +126,8 @@ structure(RubyRequest, desc="...", interface="Message", external="yes") { int Size, desc="size in bytes of access"; PrefetchBit Prefetch, desc="Is this a prefetch request"; int contextId, desc="this goes away but must be replace with Nilay"; + WriteMask writeMask, desc="Writethrough mask"; + DataBlock WTData, desc="Writethrough data block"; int wfid, desc="Writethrough wavefront"; HSAScope scope, desc="HSA scope"; HSASegment segment, desc="HSA segment"; |