mem-cache: Fix priority of multi compressor
authorDaniel R. Carvalho <odanrc@yahoo.com.br>
Sun, 5 Apr 2020 21:24:08 +0000 (23:24 +0200)
committerDaniel Carvalho <odanrc@yahoo.com.br>
Thu, 30 Apr 2020 22:14:09 +0000 (22:14 +0000)
The priority queue comparator orders such that false gives the
entry a higher priority. Therefore, if it is desired to make
the entry with lowest decompression latency have higher priority,
the comparison must be inverted.

Can be tested with:
  MultiCompressor(compressors=[
    PerfectCompressor(decompression_latency=1),
    PerfectCompressor(decompression_latency=2)])

Where it is expected that compressor0 (the one with decomp lat
of 1) is always chosen.

Change-Id: I44acbf5f51c6e47efdd2a16fba9596935cf2eb69
Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28367
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/mem/cache/compressors/multi.cc

index 599e0591b066eaceba082c1afafafff15a543c7f..fe22f5eb4ff80feb5739516104bfe605017e2c66 100644 (file)
@@ -103,7 +103,7 @@ MultiCompressor::compress(const uint64_t* cache_line, Cycles& comp_lat,
             if (lhs_cf == rhs_cf) {
                 // When they have similar compressed sizes, give the one
                 // with fastest decompression privilege
-                return lhs->decompLat < rhs->decompLat;
+                return lhs->decompLat > rhs->decompLat;
             }
             return lhs_cf < rhs_cf;
         }