mem-cache: Create BIP Replacement Policy

Implementation of a Bimodal Insertion Policy replacement policy.

Change-Id: Ife058d0d4310dbcb35858348006189f0b2bf7c37
Reviewed-on: https://gem5-review.googlesource.com/9003
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
This commit is contained in:
Daniel R. Carvalho
2018-03-12 12:22:54 +01:00
committed by Daniel Carvalho
parent 50cc923f8c
commit 65a703c6bf
4 changed files with 150 additions and 0 deletions

View File

@@ -50,6 +50,12 @@ class LRURP(BaseReplacementPolicy):
cxx_class = 'LRURP'
cxx_header = "mem/cache/replacement_policies/lru_rp.hh"
class BIPRP(LRURP):
type = 'BIPRP'
cxx_class = 'BIPRP'
cxx_header = "mem/cache/replacement_policies/bip_rp.hh"
btp = Param.Percent(3, "Percentage of blocks to be inserted as MRU")
class MRURP(BaseReplacementPolicy):
type = 'MRURP'
cxx_class = 'MRURP'

View File

@@ -33,6 +33,7 @@ Import('*')
SimObject('ReplacementPolicies.py')
Source('base.cc')
Source('bip_rp.cc')
Source('brrip_rp.cc')
Source('fifo_rp.cc')
Source('lfu_rp.cc')

View File

@@ -0,0 +1,59 @@
/**
* Copyright (c) 2018 Inria
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Daniel Carvalho
*/
#include "mem/cache/replacement_policies/bip_rp.hh"
#include "base/random.hh"
#include "debug/CacheRepl.hh"
BIPRP::BIPRP(const Params *p)
: LRURP(p), btp(p->btp)
{
}
void
BIPRP::reset(CacheBlk *blk)
{
BaseReplacementPolicy::reset(blk);
// Blocks are inserted as MRU if lower than btp, LRU otherwise
if (random_mt.random<unsigned>(1, 100) <= btp) {
blk->lastTouchTick = curTick();
} else {
// Make their timestamps as old as possible, so that they become LRU
blk->lastTouchTick = 0;
}
}
BIPRP*
BIPRPParams::create()
{
return new BIPRP(this);
}

View File

@@ -0,0 +1,84 @@
/**
* Copyright (c) 2018 Inria
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Daniel Carvalho
*/
/**
* @file
* Declaration of a Bimodal Interval Prediction replacement policy.
* Has a probability of when placing new blocks, placing them as MRU.
*
* Although both LRU and LIP can be seen as specific cases of BIP
* where the bimodal throtle parameter are 1 and 0, respectively, we
* decide not to inherit from it, and do the other way around (inherit
* from LRU) for efficiency reasons.
*
* In the original paper they use btp = 1/32 ~= 3%.
*/
#ifndef __MEM_CACHE_REPLACEMENT_POLICIES_LIP_RP_HH__
#define __MEM_CACHE_REPLACEMENT_POLICIES_LIP_RP_HH__
#include "mem/cache/replacement_policies/lru_rp.hh"
#include "params/BIPRP.hh"
class BIPRP : public LRURP
{
protected:
/**
* Bimodal throtle parameter. Value in the range [0,100] used to decide
* if a new block is inserted at the MRU or LRU position.
*/
const unsigned btp;
public:
/** Convenience typedef. */
typedef BIPRPParams Params;
/**
* Construct and initiliaze this replacement policy.
*/
BIPRP(const Params *p);
/**
* Destructor.
*/
~BIPRP() {}
/**
* Reset replacement data for a block. Used when a block is inserted.
* Sets the insertion tick, and update correspondent replacement data.
* Uses the bimodal throtle parameter to decide whether the new block
* should be inserted as MRU, or LRU.
*
* @param blk Cache block to be reset.
*/
void reset(CacheBlk *blk) override;
};
#endif // __MEM_CACHE_REPLACEMENT_POLICIES_LIP_RP_HH__