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

Reply via email to