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>
This commit is contained in:
Daniel R. Carvalho
2020-10-06 12:52:03 +02:00
committed by Daniel Carvalho
parent 98d1020416
commit 28d8594435
3 changed files with 18 additions and 8 deletions

View File

@@ -69,14 +69,12 @@ enum CacheBlkStatusBits : unsigned {
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
{

View File

@@ -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 @@ CompressionBlk::setDecompressionLatency(const Cycles lat)
_decompressionLatency = lat;
}
void
CompressionBlk::invalidate()
{
SectorSubBlk::invalidate();
setUncompressed();
}
std::string
CompressionBlk::print() const
{

View File

@@ -59,6 +59,9 @@ class CompressionBlk : public SectorSubBlk
*/
Cycles _decompressionLatency;
/** Compression bit. */
bool _compressed;
public:
CompressionBlk();
CompressionBlk(const CompressionBlk&) = delete;
@@ -110,6 +113,8 @@ class CompressionBlk : public SectorSubBlk
*/
void setDecompressionLatency(const Cycles lat);
void invalidate() override;
/**
* Pretty-print sector offset and other CacheBlk information.
*