33#ifndef __MEM_CACHE_COMPRESSORS_BASE_DELTA_IMPL_HH__
34#define __MEM_CACHE_COMPRESSORS_BASE_DELTA_IMPL_HH__
36#include "debug/CacheComp.hh"
46template <
class BaseType, std::
size_t DeltaSizeBits>
52template <
class BaseType, std::
size_t DeltaSizeBits>
62template <
class BaseType, std::
size_t DeltaSizeBits>
72template <
class BaseType, std::
size_t DeltaSizeBits>
73std::unique_ptr<Base::CompressionData>
78 std::unique_ptr<Base::CompressionData> comp_data =
89 DPRINTF(CacheComp,
"Base%dDelta%d compression failed\n",
90 8 *
sizeof(BaseType), DeltaSizeBits);
91 }
else if (diff > 0) {
92 comp_data->setSizeBits(comp_data->getSizeBits() +
93 8 *
sizeof(BaseType) * diff);
Definition of a base delta immediate compressor.
Cycles is a wrapper class for representing cycle counts, i.e.
BaseDelta(const Params &p)
std::unique_ptr< Base::CompressionData > compress(const std::vector< Base::Chunk > &chunks, Cycles &comp_lat, Cycles &decomp_lat) override
Apply the compression process to the cache line.
void addToDictionary(DictionaryEntry data) override
void resetDictionary() override
Clear all dictionary entries.
typename DictionaryCompressor< BaseType >::DictionaryEntry DictionaryEntry
static constexpr int DEFAULT_MAX_NUM_BASES
BaseDictionaryCompressorParams Params
const std::size_t dictionarySize
Dictionary size.
std::size_t numEntries
Number of valid entries in the dictionary.
const std::size_t blkSize
Uncompressed cache line size (in bytes).
std::vector< DictionaryEntry > dictionary
The dictionary.
virtual void resetDictionary()
Clear all dictionary entries.
std::unique_ptr< Base::CompressionData > compress(const std::vector< Chunk > &chunks)
Apply compression.
DictionaryCompressor(const Params &p)
static DictionaryEntry toDictionaryEntry(T value)
Turn a value into a dictionary entry.
Implementation of a dictionary based cache compressor.
Copyright (c) 2024 Arm Limited All rights reserved.