mem-cache: Fix BDI size calculation
authorDaniel R. Carvalho <odanrc@yahoo.com.br>
Thu, 1 Aug 2019 08:21:15 +0000 (10:21 +0200)
committerDaniel Carvalho <odanrc@yahoo.com.br>
Thu, 12 Sep 2019 19:40:58 +0000 (19:40 +0000)
The bitmask field indicates to which base a delta refers, and in
the original paper it is fixed and proportional to the highest
number of bases allowed in the compressed data.

Change-Id: I271bf2e19e0765de52b933eaf6d4fcc2ce25d185
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19748
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/bdi.cc

index e29179fc0ac9a939b83351b01d194afe50565489..a8068c6146593920655d7992709ce66af74286a8 100644 (file)
@@ -166,7 +166,7 @@ BDI::BDICompDataBaseDelta<TB, TD>::calculateCompressedSize()
     std::size_t size = encodingBits;
 
     // Number of bits used by BitMask
-    size += bitMask.size()*std::ceil(std::log2(bases.size()));
+    size += bitMask.size()*std::ceil(std::log2(maxNumBases));
 
     // Number of bits used by Bases. bases[0] is implicit in a hardware
     // implementation, therefore its size is 0