From 605a0917bb6dc18696de4a05e231ac2654642c16 Mon Sep 17 00:00:00 2001 From: "Daniel R. Carvalho" Date: Tue, 17 Mar 2020 17:35:35 +0100 Subject: [PATCH] mem-cache: Make compression size threshold a percentage By changing the parameter into a percentage, changing the block size will automatically reconfigure the size threshold. Also, change the default percentage to 50% to avoid storing blocks unlikely to co-allocate in compressed format. Change-Id: I1458f19db39becc2d40c00269132fea01770016f Signed-off-by: Daniel R. Carvalho Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33385 Reviewed-by: Nikos Nikoleris Maintainer: Nikos Nikoleris Tested-by: kokoro --- src/mem/cache/compressors/Compressors.py | 6 +++--- src/mem/cache/compressors/base.cc | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mem/cache/compressors/Compressors.py b/src/mem/cache/compressors/Compressors.py index 01cb61975..9fa06f210 100644 --- a/src/mem/cache/compressors/Compressors.py +++ b/src/mem/cache/compressors/Compressors.py @@ -37,9 +37,9 @@ class BaseCacheCompressor(SimObject): block_size = Param.Int(Parent.cache_line_size, "Block size in bytes") chunk_size_bits = Param.Unsigned(32, "Size of a parsing data chunk (in bits)") - size_threshold = Param.Unsigned(Parent.cache_line_size, "Minimum size, " - "in bytes, in which a block must be compressed to. Otherwise it is " - "stored in its uncompressed state") + size_threshold_percentage = Param.Percent(50, + "Minimum percentage of the block size, a compressed block must " + "achieve to be stored in compressed format") class BaseDictionaryCompressor(BaseCacheCompressor): type = 'BaseDictionaryCompressor' diff --git a/src/mem/cache/compressors/base.cc b/src/mem/cache/compressors/base.cc index 5b96e97b6..e12e36e18 100644 --- a/src/mem/cache/compressors/base.cc +++ b/src/mem/cache/compressors/base.cc @@ -77,7 +77,7 @@ Base::CompressionData::getSize() const Base::Base(const Params *p) : SimObject(p), blkSize(p->block_size), chunkSizeBits(p->chunk_size_bits), - sizeThreshold(p->size_threshold), + sizeThreshold((blkSize * p->size_threshold_percentage) / 100), stats(*this) { fatal_if(64 % chunkSizeBits, -- 2.30.2