Daniel Carvalho has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/33382 )
Change subject: mem-cache: Add an extra decomp lat to multi compressor
......................................................................
mem-cache: Add an extra decomp lat to multi compressor
There is extra hardware required when dealing with multi
compressors. As such, add a parameter to allowing increasing
their decompression latency to account for any extra delay.
Change-Id: I153e4c5ab6927ac092e2ebd767fe88974597bb20
Signed-off-by: Daniel R. Carvalho <oda...@yahoo.com.br>
---
M src/mem/cache/compressors/Compressors.py
M src/mem/cache/compressors/multi.cc
M src/mem/cache/compressors/multi.hh
3 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/mem/cache/compressors/Compressors.py
b/src/mem/cache/compressors/Compressors.py
index 45effe9..01cb619 100644
--- a/src/mem/cache/compressors/Compressors.py
+++ b/src/mem/cache/compressors/Compressors.py
@@ -116,6 +116,8 @@
encoding_in_tags = Param.Bool(False, "If set the bits to inform which "
"sub-compressor compressed some data are added to its
corresponding "
"tag entry.")
+ extra_decomp_lat = Param.Unsigned(0, "Extra latency to be added to
the "
+ "sub-compressor's decompression latency")
class PerfectCompressor(BaseCacheCompressor):
type = 'PerfectCompressor'
diff --git a/src/mem/cache/compressors/multi.cc
b/src/mem/cache/compressors/multi.cc
index bb98dcd..b740a95 100644
--- a/src/mem/cache/compressors/multi.cc
+++ b/src/mem/cache/compressors/multi.cc
@@ -61,6 +61,7 @@
: Base(p), compressors(p->compressors),
numEncodingBits(p->encoding_in_tags ? 0 :
std::log2(alignToPowerOfTwo(compressors.size()))),
+ extraDecompressionLatency(p->extra_decomp_lat),
multiStats(stats, *this)
{
fatal_if(compressors.size() == 0, "There must be at least one
compressor");
@@ -145,7 +146,7 @@
DPRINTF(CacheComp, "Best compressor: %d\n", best_index);
// Set decompression latency of the best compressor
- decomp_lat = results.top()->decompLat;
+ decomp_lat = results.top()->decompLat + extraDecompressionLatency;
// Update compressor ranking stats
for (int rank = 0; rank < compressors.size(); rank++) {
diff --git a/src/mem/cache/compressors/multi.hh
b/src/mem/cache/compressors/multi.hh
index 868682f..fe952d5 100644
--- a/src/mem/cache/compressors/multi.hh
+++ b/src/mem/cache/compressors/multi.hh
@@ -75,6 +75,13 @@
*/
const std::size_t numEncodingBits;
+ /**
+ * Extra decompression latency to be added to the sub-compressor's
+ * decompression latency. This can different from zero due to decoding,
+ * shifting, or packaging, for example.
+ */
+ const Cycles extraDecompressionLatency;
+
struct MultiStats : public Stats::Group
{
const Multi& compressor;
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33382
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I153e4c5ab6927ac092e2ebd767fe88974597bb20
Gerrit-Change-Number: 33382
Gerrit-PatchSet: 1
Gerrit-Owner: Daniel Carvalho <oda...@yahoo.com.br>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s