Go to the documentation of this file.
29 #ifndef __MEM_CACHE_COMPRESSORS_FREQUENT_VALUES_HH__
30 #define __MEM_CACHE_COMPRESSORS_FREQUENT_VALUES_HH__
46 struct FrequentValuesCompressorParams;
71 const std::string &
name)
164 bool is_invalidation);
169 std::unique_ptr<Base::CompressionData>
compress(
171 Cycles& decomp_lat)
override;
176 typedef FrequentValuesCompressorParams
Params;
223 #endif //__MEM_CACHE_COMPRESSORS_FREQUENT_VALUES_HH__
void decompress(const CompressionData *comp_data, uint64_t *data) override
Apply the decompression process to the compressed data.
unsigned takenSamples
Number of samples taken so far.
void regProbeListeners() override
Register probe listeners for this object.
Copyright (c) 2020 Inria All rights reserved.
Encoder::Code code
The codeword.
Copyright (c) 2018 Metempsy Technology Consulting All rights reserved.
Phase
The phase that the compressor is at.
uint64_t Tick
Tick count type.
std::vector< FrequentValuesListener * > listeners
const bool useHuffmanEncoding
Whether Huffman encoding is applied to the VFT indices.
void notify(const DataUpdate &data_update) override
FrequentValuesListener(FrequentValues &_parent, ProbeManager *pm, const std::string &name)
std::unique_ptr< Base::CompressionData > compress(const std::vector< Chunk > &chunks, Cycles &comp_lat, Cycles &decomp_lat) override
Apply the compression process to the cache line.
Base cache compressor interface.
This compressor samples the cache for a while, trying to define the most frequently used values.
void generateCodes()
End sampling phase and start the code generation.
const Tick codeGenerationTicks
Ticks needed to perform the CODE_GENERATION phase.
~FrequentValues()=default
This encoder builds a Huffman tree using the frequency of each value to be encoded.
Encoder::Huffman encoder
The encoder applied to the VFT indices.
void invalidate() override
Invalidate the block.
FrequentValuesCompressorParams Params
BaseCacheCompressorParams Params
EventFunctionWrapper codeGenerationEvent
Event to handle finishing code generation and starting compression.
const unsigned numVFTEntries
Maximum number of VFT entries, and thus of codewords too.
uint64_t value
The value is stored as a 64 bit entry to accomodate for the uncompressed value.
uint64_t value
Original value, stored both for when the codeword marks an uncompressed entry, and to verify correctn...
void probeNotify(const DataUpdate &data_update)
Process a notification event from the ProbeListener.
std::vector< CompressedValue > compressedValues
The values contained in the original data, after being compressed sequentially.
SatCounter32 counter
The ideal counter width (in bits) is determined by the maximum number of times a given value appears ...
CompressedValue(Encoder::Code _code, uint64_t _value)
AssociativeSet< VFTEntry > VFT
The Value Frequency Table, a small cache that keeps track and estimates the frequency distribution of...
ProbeManager is a conduit class that lives on each SimObject, and is used to match up probe listeners...
void sampleValues(const std::vector< uint64_t > &data, bool is_invalidation)
Sample values from a packet, adding them to the VFT.
A data contents update is composed of the updated block's address, the old contents,...
uint64_t uncompressedValue
A pseudo value is used as the representation of uncompressed values.
virtual void invalidate()
Invalidate the block.
FrequentValues(const Params &p)
Cycles is a wrapper class for representing cycle counts, i.e.
void reset()
Reset the counter to its initial value.
const int counterBits
Number of bits in the saturating counters.
VFTEntry(std::size_t num_bits)
A compressed value contains its encoding, and the compressed data itself.
const unsigned numSamples
Number of samples in the sampling phase.
const bool checkSaturation
Whether an action must be performed when counters saturate.
ProbeListenerArgBase is used to define the base interface to a ProbeListenerArg (i....
Generated on Tue Mar 23 2021 19:41:27 for gem5 by doxygen 1.8.17