ReplacementPolicies.py revision 12627
112922Sgabeblack@google.com# Copyright (c) 2018 Inria
212922Sgabeblack@google.com# All rights reserved.
312922Sgabeblack@google.com#
412922Sgabeblack@google.com# Redistribution and use in source and binary forms, with or without
512922Sgabeblack@google.com# modification, are permitted provided that the following conditions are
612922Sgabeblack@google.com# met: redistributions of source code must retain the above copyright
712922Sgabeblack@google.com# notice, this list of conditions and the following disclaimer;
812922Sgabeblack@google.com# redistributions in binary form must reproduce the above copyright
912922Sgabeblack@google.com# notice, this list of conditions and the following disclaimer in the
1012922Sgabeblack@google.com# documentation and/or other materials provided with the distribution;
1112922Sgabeblack@google.com# neither the name of the copyright holders nor the names of its
1212922Sgabeblack@google.com# contributors may be used to endorse or promote products derived from
1312922Sgabeblack@google.com# this software without specific prior written permission.
1412922Sgabeblack@google.com#
1512922Sgabeblack@google.com# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1612922Sgabeblack@google.com# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1712922Sgabeblack@google.com# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1812922Sgabeblack@google.com# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1912922Sgabeblack@google.com# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2012922Sgabeblack@google.com# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2112922Sgabeblack@google.com# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2212922Sgabeblack@google.com# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2312922Sgabeblack@google.com# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2412922Sgabeblack@google.com# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2512922Sgabeblack@google.com# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2612922Sgabeblack@google.com#
2712922Sgabeblack@google.com# Authors: Daniel Carvalho
2812922Sgabeblack@google.com
2912922Sgabeblack@google.comfrom m5.params import *
3012922Sgabeblack@google.comfrom m5.proxy import *
3112922Sgabeblack@google.comfrom m5.SimObject import SimObject
3212922Sgabeblack@google.com
3312922Sgabeblack@google.comclass BaseReplacementPolicy(SimObject):
3412922Sgabeblack@google.com    type = 'BaseReplacementPolicy'
3512922Sgabeblack@google.com    abstract = True
3612922Sgabeblack@google.com    cxx_header = "mem/cache/replacement_policies/base.hh"
3712922Sgabeblack@google.com
3812922Sgabeblack@google.comclass FIFORP(BaseReplacementPolicy):
3912922Sgabeblack@google.com    type = 'FIFORP'
4012922Sgabeblack@google.com    cxx_class = 'FIFORP'
4112922Sgabeblack@google.com    cxx_header = "mem/cache/replacement_policies/fifo_rp.hh"
4212922Sgabeblack@google.com
4312922Sgabeblack@google.comclass LRURP(BaseReplacementPolicy):
4412922Sgabeblack@google.com    type = 'LRURP'
4512922Sgabeblack@google.com    cxx_class = 'LRURP'
4612922Sgabeblack@google.com    cxx_header = "mem/cache/replacement_policies/lru_rp.hh"
4712922Sgabeblack@google.com
4812922Sgabeblack@google.comclass MRURP(BaseReplacementPolicy):
4912922Sgabeblack@google.com    type = 'MRURP'
5012922Sgabeblack@google.com    cxx_class = 'MRURP'
5112922Sgabeblack@google.com    cxx_header = "mem/cache/replacement_policies/mru_rp.hh"
5212922Sgabeblack@google.com
5312922Sgabeblack@google.comclass RandomRP(BaseReplacementPolicy):
5412922Sgabeblack@google.com    type = 'RandomRP'
5512922Sgabeblack@google.com    cxx_class = 'RandomRP'
5612922Sgabeblack@google.com    cxx_header = "mem/cache/replacement_policies/random_rp.hh"
5712922Sgabeblack@google.com
5812922Sgabeblack@google.comclass BRRIPRP(BaseReplacementPolicy):
5912922Sgabeblack@google.com    type = 'BRRIPRP'
6012922Sgabeblack@google.com    cxx_class = 'BRRIPRP'
6112922Sgabeblack@google.com    cxx_header = "mem/cache/replacement_policies/brrip_rp.hh"
6212922Sgabeblack@google.com    max_RRPV = Param.Unsigned(3, "Maximum RRPV possible")
6312922Sgabeblack@google.com    hit_priority = Param.Bool(False,
6412922Sgabeblack@google.com        "Prioritize evicting blocks that havent had a hit recently")
6512922Sgabeblack@google.com    btp = Param.Percent(3,
6612922Sgabeblack@google.com        "Percentage of blocks to be inserted with long RRPV")
6712922Sgabeblack@google.com
6812922Sgabeblack@google.comclass RRIPRP(BRRIPRP):
6912922Sgabeblack@google.com    btp = 0
7012922Sgabeblack@google.com