From: Daniel R. Carvalho Date: Thu, 12 Sep 2019 15:11:54 +0000 (+0200) Subject: mem-cache: Inform unused bits instead of bytes in compressor pattern X-Git-Tag: v19.0.0.0~378 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7244788c02ef69f8c313f0714f0d5b8f2918222d;p=gem5.git mem-cache: Inform unused bits instead of bytes in compressor pattern Increase pattern precision by giving the number of unmatched bits instead of bytes. Change-Id: I5efbe9c31672cc973b4c89c741cdc8cc28d26285 Signed-off-by: Daniel R. Carvalho Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21152 Reviewed-by: Nikos Nikoleris Maintainer: Nikos Nikoleris Tested-by: kokoro --- diff --git a/src/mem/cache/compressors/dictionary_compressor.hh b/src/mem/cache/compressors/dictionary_compressor.hh index b519bb466..6922715fd 100644 --- a/src/mem/cache/compressors/dictionary_compressor.hh +++ b/src/mem/cache/compressors/dictionary_compressor.hh @@ -272,8 +272,8 @@ class DictionaryCompressor::Pattern /** Length, in bits, of the code and match location. */ const uint8_t length; - /** Number of unmatched bytes. */ - const uint8_t numUnmatchedBytes; + /** Number of unmatched bits. */ + const uint8_t numUnmatchedBits; /** Index representing the the match location. */ const int matchLocation; @@ -288,14 +288,14 @@ class DictionaryCompressor::Pattern * @param number Pattern number. * @param code Code associated to this pattern. * @param metadata_length Length, in bits, of the code and match location. - * @param num_unmatched_bytes Number of unmatched bytes. + * @param num_unmatched_bits Number of unmatched bits. * @param match_location Index of the match location. */ Pattern(const int number, const uint64_t code, - const uint64_t metadata_length, const uint64_t num_unmatched_bytes, + const uint64_t metadata_length, const uint64_t num_unmatched_bits, const int match_location, const bool allocate = true) : patternNumber(number), code(code), length(metadata_length), - numUnmatchedBytes(num_unmatched_bytes), + numUnmatchedBits(num_unmatched_bits), matchLocation(match_location), allocate(allocate) { } @@ -333,7 +333,7 @@ class DictionaryCompressor::Pattern std::size_t getSizeBits() const { - return numUnmatchedBytes*CHAR_BIT + length; + return numUnmatchedBits + length; } /** @@ -404,7 +404,7 @@ class DictionaryCompressor::UncompressedPattern const int match_location, const DictionaryEntry bytes) : DictionaryCompressor::Pattern(number, code, metadata_length, - sizeof(T), match_location, true), + sizeof(T) * 8, match_location, true), data(bytes) { } @@ -456,7 +456,7 @@ class DictionaryCompressor::MaskedPattern const DictionaryEntry bytes, const bool allocate = true) : DictionaryCompressor::Pattern(number, code, metadata_length, - popCount(~mask) / 8, match_location, allocate), + popCount(~mask), match_location, allocate), bits(DictionaryCompressor::fromDictionaryEntry(bytes) & ~mask) { }