mem-cache: Isolate compression bit
The compression bit does not belong with the coherence bits.
Change-Id: I6e9f201a9961b8c6051ba599f051a444d585f0e4
Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/35700
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
diff --git a/src/mem/cache/cache_blk.hh b/src/mem/cache/cache_blk.hh
index 4483fb1..bf9bfe6 100644
--- a/src/mem/cache/cache_blk.hh
+++ b/src/mem/cache/cache_blk.hh
@@ -69,14 +69,12 @@
BlkReadable = 0x04,
/** dirty (modified) */
BlkDirty = 0x08,
- /** block holds compressed data */
- BlkCompressed = 0x80
};
/**
* A Basic Cache block.
- * Contains information regarding its coherence, prefetching and compression
- * status, as well as a pointer to its data.
+ * Contains information regarding its coherence, prefetching status, as
+ * well as a pointer to its data.
*/
class CacheBlk : public TaggedEntry
{
diff --git a/src/mem/cache/tags/super_blk.cc b/src/mem/cache/tags/super_blk.cc
index 982d9b0..0f570f9 100644
--- a/src/mem/cache/tags/super_blk.cc
+++ b/src/mem/cache/tags/super_blk.cc
@@ -37,26 +37,26 @@
#include "base/logging.hh"
CompressionBlk::CompressionBlk()
- : SectorSubBlk(), _size(0), _decompressionLatency(0)
+ : SectorSubBlk(), _size(0), _decompressionLatency(0), _compressed(false)
{
}
bool
CompressionBlk::isCompressed() const
{
- return (status & BlkCompressed) != 0;
+ return _compressed;
}
void
CompressionBlk::setCompressed()
{
- status |= BlkCompressed;
+ _compressed = true;
}
void
CompressionBlk::setUncompressed()
{
- status &= ~BlkCompressed;
+ _compressed = false;
}
std::size_t
@@ -83,6 +83,13 @@
_decompressionLatency = lat;
}
+void
+CompressionBlk::invalidate()
+{
+ SectorSubBlk::invalidate();
+ setUncompressed();
+}
+
std::string
CompressionBlk::print() const
{
diff --git a/src/mem/cache/tags/super_blk.hh b/src/mem/cache/tags/super_blk.hh
index a1c3ff4..bca3266 100644
--- a/src/mem/cache/tags/super_blk.hh
+++ b/src/mem/cache/tags/super_blk.hh
@@ -59,6 +59,9 @@
*/
Cycles _decompressionLatency;
+ /** Compression bit. */
+ bool _compressed;
+
public:
CompressionBlk();
CompressionBlk(const CompressionBlk&) = delete;
@@ -110,6 +113,8 @@
*/
void setDecompressionLatency(const Cycles lat);
+ void invalidate() override;
+
/**
* Pretty-print sector offset and other CacheBlk information.
*