From: Daniel R. Carvalho Date: Sat, 2 Nov 2019 14:20:00 +0000 (+0100) Subject: mem-cache,mem-ruby: Move WeightedLRU RP X-Git-Tag: v19.0.0.0~21 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7515106ebe879163e77d7e41a6bea242eeb4a9f8;p=gem5.git mem-cache,mem-ruby: Move WeightedLRU RP Move the WeightedLRUReplacementPolicy to the replacement policies folder. Change-Id: I9902faefb6de33343bb65f994be70bd9e1dd4e14 Signed-off-by: Daniel R. Carvalho Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22445 Reviewed-by: Jason Lowe-Power Reviewed-by: John Alsop Tested-by: kokoro Maintainer: Jason Lowe-Power --- diff --git a/src/mem/cache/replacement_policies/ReplacementPolicies.py b/src/mem/cache/replacement_policies/ReplacementPolicies.py index 8a67deaa1..739b40046 100644 --- a/src/mem/cache/replacement_policies/ReplacementPolicies.py +++ b/src/mem/cache/replacement_policies/ReplacementPolicies.py @@ -96,3 +96,8 @@ class TreePLRURP(BaseReplacementPolicy): cxx_class = 'TreePLRURP' cxx_header = "mem/cache/replacement_policies/tree_plru_rp.hh" num_leaves = Param.Int(Parent.assoc, "Number of leaves in each tree") + +class WeightedLRURP(BaseReplacementPolicy): + type = "WeightedLRURP" + cxx_class = "WeightedLRUPolicy" + cxx_header = "mem/cache/replacement_policies/weighted_lru_rp.hh" diff --git a/src/mem/cache/replacement_policies/SConscript b/src/mem/cache/replacement_policies/SConscript index 468cf7df4..a1fd443bc 100644 --- a/src/mem/cache/replacement_policies/SConscript +++ b/src/mem/cache/replacement_policies/SConscript @@ -41,3 +41,4 @@ Source('mru_rp.cc') Source('random_rp.cc') Source('second_chance_rp.cc') Source('tree_plru_rp.cc') +Source('weighted_lru_rp.cc') diff --git a/src/mem/cache/replacement_policies/weighted_lru_rp.cc b/src/mem/cache/replacement_policies/weighted_lru_rp.cc new file mode 100644 index 000000000..f7bcd4006 --- /dev/null +++ b/src/mem/cache/replacement_policies/weighted_lru_rp.cc @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2013-2015 Advanced Micro Devices, Inc. + * All rights reserved. + * + * For use for simulation and test purposes only + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. Neither the name of the copyright holder 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 HOLDER 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: Derek Hower + */ + +#include "mem/cache/replacement_policies/weighted_lru_rp.hh" + +#include + +#include "params/WeightedLRURP.hh" + +WeightedLRUPolicy::WeightedLRUPolicy(const Params* p) + : BaseReplacementPolicy(p) +{ +} + +WeightedLRUPolicy * +WeightedLRURPParams::create() +{ + return new WeightedLRUPolicy(this); +} + +void +WeightedLRUPolicy::touch(const std::shared_ptr& + replacement_data) const +{ + std::static_pointer_cast(replacement_data)-> + last_touch_tick = curTick(); +} + +void +WeightedLRUPolicy::touch(const std::shared_ptr& + replacement_data, int occupancy) const +{ + std::static_pointer_cast(replacement_data)-> + last_touch_tick = curTick(); + std::static_pointer_cast(replacement_data)-> + last_occ_ptr = occupancy; +} + +ReplaceableEntry* +WeightedLRUPolicy::getVictim(const ReplacementCandidates& candidates) const +{ + assert(candidates.size() > 0); + + ReplaceableEntry* victim = candidates[0]; + // Use weight (last_occ_ptr) to find victim. + // Evict the block that has the smallest weight. + // If two blocks have the same weight, evict the oldest one. + for (const auto& candidate : candidates) { + // candidate's replacement_data + std::shared_ptr candidate_replacement_data = + std::static_pointer_cast( + candidate->replacementData); + // victim's replacement_data + std::shared_ptr victim_replacement_data = + std::static_pointer_cast( + victim->replacementData); + + if (candidate_replacement_data->last_occ_ptr < + victim_replacement_data->last_occ_ptr) { + victim = candidate; + } else if (candidate_replacement_data->last_occ_ptr == + victim_replacement_data->last_occ_ptr) { + // Evict the block with a smaller tick. + Tick time = candidate_replacement_data->last_touch_tick; + if (time < victim_replacement_data->last_touch_tick) { + victim = candidate; + } + } + } + return victim; +} + +std::shared_ptr +WeightedLRUPolicy::instantiateEntry() +{ + return std::shared_ptr(new WeightedLRUReplData); +} + +void +WeightedLRUPolicy::reset(const std::shared_ptr& + replacement_data) const +{ + // Set last touch timestamp + std::static_pointer_cast( + replacement_data)->last_touch_tick = curTick(); +} + +void +WeightedLRUPolicy::invalidate(const std::shared_ptr& + replacement_data) const +{ + // Reset last touch timestamp + std::static_pointer_cast( + replacement_data)->last_touch_tick = Tick(0); +} diff --git a/src/mem/cache/replacement_policies/weighted_lru_rp.hh b/src/mem/cache/replacement_policies/weighted_lru_rp.hh new file mode 100644 index 000000000..f339605cf --- /dev/null +++ b/src/mem/cache/replacement_policies/weighted_lru_rp.hh @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2013-2015 Advanced Micro Devices, Inc. + * All rights reserved. + * + * For use for simulation and test purposes only + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 3. Neither the name of the copyright holder 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 HOLDER 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: Sooraj Puthoor + */ + +#ifndef __MEM_CACHE_REPLACEMENT_POLICIES_WEIGHTED_LRU_RP_HH__ +#define __MEM_CACHE_REPLACEMENT_POLICIES_WEIGHTED_LRU_RP_HH__ + +#include + +#include "base/types.hh" +#include "mem/cache/replacement_policies/base.hh" + +struct WeightedLRURPParams; + +class WeightedLRUPolicy : public BaseReplacementPolicy +{ + protected: + /** Weighted LRU implementation of replacement data. */ + struct WeightedLRUReplData : ReplacementData + { + /** pointer for last occupancy */ + int last_occ_ptr; + + /** Tick on which the entry was last touched. */ + Tick last_touch_tick; + + /** + * Default constructor. Invalidate data. + */ + WeightedLRUReplData() : ReplacementData(), + last_occ_ptr(0), last_touch_tick(0) {} + }; + public: + typedef WeightedLRURPParams Params; + WeightedLRUPolicy(const Params* p); + ~WeightedLRUPolicy() {} + + /** + * Invalidate replacement data to set it as the next probable victim. + * Sets its last touch tick as the starting tick. + * + * @param replacement_data Replacement data to be invalidated. + */ + void invalidate(const std::shared_ptr& replacement_data) + const override; + /** + * Touch an entry to update its replacement data. + * Sets its last touch tick as the current tick. + * + * @param replacement_data Replacement data to be touched. + */ + void touch(const std::shared_ptr& + replacement_data) const override; + void touch(const std::shared_ptr& replacement_data, + int occupancy) const; + + /** + * Reset replacement data. Used when an entry is inserted. + * Sets its last touch tick as the current tick. + * + * @param replacement_data Replacement data to be reset. + */ + void reset(const std::shared_ptr& replacement_data) const + override; + + /** + * Instantiate a replacement data entry. + * + * @return A shared pointer to the new replacement data. + */ + std::shared_ptr instantiateEntry() override; + + /** + * Find replacement victim using weight. + * + * @param candidates Replacement candidates, selected by indexing policy. + * @return Replacement entry to be replaced. + */ + ReplaceableEntry* getVictim(const ReplacementCandidates& + candidates) const override; +}; + +#endif // __MEM_CACHE_REPLACEMENT_POLICIES_WEIGHTED_LRU_RP_HH__ diff --git a/src/mem/ruby/structures/CacheMemory.cc b/src/mem/ruby/structures/CacheMemory.cc index a7aa6370b..b7343084a 100644 --- a/src/mem/ruby/structures/CacheMemory.cc +++ b/src/mem/ruby/structures/CacheMemory.cc @@ -35,9 +35,9 @@ #include "debug/RubyCacheTrace.hh" #include "debug/RubyResourceStalls.hh" #include "debug/RubyStats.hh" +#include "mem/cache/replacement_policies/weighted_lru_rp.hh" #include "mem/ruby/protocol/AccessPermission.hh" #include "mem/ruby/system/RubySystem.hh" -#include "mem/ruby/system/WeightedLRUPolicy.hh" using namespace std; diff --git a/src/mem/ruby/system/SConscript b/src/mem/ruby/system/SConscript index b67311bca..62d680e8d 100644 --- a/src/mem/ruby/system/SConscript +++ b/src/mem/ruby/system/SConscript @@ -37,7 +37,6 @@ if env['BUILD_GPU']: SimObject('GPUCoalescer.py') SimObject('RubySystem.py') SimObject('Sequencer.py') -SimObject('WeightedLRUReplacementPolicy.py') if env['BUILD_GPU']: SimObject('VIPERCoalescer.py') @@ -51,4 +50,3 @@ Source('RubySystem.cc') Source('Sequencer.cc') if env['BUILD_GPU']: Source('VIPERCoalescer.cc') -Source('WeightedLRUPolicy.cc') diff --git a/src/mem/ruby/system/WeightedLRUPolicy.cc b/src/mem/ruby/system/WeightedLRUPolicy.cc deleted file mode 100644 index 8f330d917..000000000 --- a/src/mem/ruby/system/WeightedLRUPolicy.cc +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) 2013-2015 Advanced Micro Devices, Inc. - * All rights reserved. - * - * For use for simulation and test purposes only - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the copyright holder 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 HOLDER 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: Derek Hower - */ - -#include "mem/ruby/system/WeightedLRUPolicy.hh" - -#include -#include - -WeightedLRUPolicy::WeightedLRUPolicy(const Params* p) - : BaseReplacementPolicy(p) -{ -} - -WeightedLRUPolicy * -WeightedLRUReplacementPolicyParams::create() -{ - return new WeightedLRUPolicy(this); -} - -void -WeightedLRUPolicy::touch(const std::shared_ptr& - replacement_data) const -{ - std::static_pointer_cast(replacement_data)-> - last_touch_tick = curTick(); -} - -void -WeightedLRUPolicy::touch(const std::shared_ptr& - replacement_data, int occupancy) const -{ - std::static_pointer_cast(replacement_data)-> - last_touch_tick = curTick(); - std::static_pointer_cast(replacement_data)-> - last_occ_ptr = occupancy; -} - -ReplaceableEntry* -WeightedLRUPolicy::getVictim(const ReplacementCandidates& candidates) const -{ - assert(candidates.size() > 0); - - ReplaceableEntry* victim = candidates[0]; - // Use weight (last_occ_ptr) to find victim. - // Evict the block that has the smallest weight. - // If two blocks have the same weight, evict the oldest one. - for (const auto& candidate : candidates) { - // candidate's replacement_data - std::shared_ptr candidate_replacement_data = - std::static_pointer_cast( - candidate->replacementData); - // victim's replacement_data - std::shared_ptr victim_replacement_data = - std::static_pointer_cast( - victim->replacementData); - - if (candidate_replacement_data->last_occ_ptr < - victim_replacement_data->last_occ_ptr) { - victim = candidate; - } else if (candidate_replacement_data->last_occ_ptr == - victim_replacement_data->last_occ_ptr) { - // Evict the block with a smaller tick. - Tick time = candidate_replacement_data->last_touch_tick; - if (time < victim_replacement_data->last_touch_tick) { - victim = candidate; - } - } - } - return victim; -} - -std::shared_ptr -WeightedLRUPolicy::instantiateEntry() -{ - return std::shared_ptr(new WeightedLRUReplData); -} - -void -WeightedLRUPolicy::reset(const std::shared_ptr& - replacement_data) const -{ - // Set last touch timestamp - std::static_pointer_cast( - replacement_data)->last_touch_tick = curTick(); -} - -void -WeightedLRUPolicy::invalidate(const std::shared_ptr& - replacement_data) const -{ - // Reset last touch timestamp - std::static_pointer_cast( - replacement_data)->last_touch_tick = Tick(0); -} diff --git a/src/mem/ruby/system/WeightedLRUPolicy.hh b/src/mem/ruby/system/WeightedLRUPolicy.hh deleted file mode 100644 index a11784584..000000000 --- a/src/mem/ruby/system/WeightedLRUPolicy.hh +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2013-2015 Advanced Micro Devices, Inc. - * All rights reserved. - * - * For use for simulation and test purposes only - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. 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. - * - * 3. Neither the name of the copyright holder 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 HOLDER 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: Sooraj Puthoor - */ - -#ifndef __MEM_RUBY_SYSTEM_WEIGHTEDLRUPOLICY_HH__ -#define __MEM_RUBY_SYSTEM_WEIGHTEDLRUPOLICY_HH__ - -#include "mem/cache/replacement_policies/base.hh" -#include "mem/ruby/structures/CacheMemory.hh" -#include "params/WeightedLRUReplacementPolicy.hh" - -/* Simple true LRU replacement policy */ - -class WeightedLRUPolicy : public BaseReplacementPolicy -{ - protected: - /** Weighted LRU implementation of replacement data. */ - struct WeightedLRUReplData : ReplacementData - { - /** pointer for last occupancy */ - int last_occ_ptr; - - /** Tick on which the entry was last touched. */ - Tick last_touch_tick; - - /** - * Default constructor. Invalidate data. - */ - WeightedLRUReplData() : ReplacementData(), - last_occ_ptr(0), last_touch_tick(0) {} - }; - public: - typedef WeightedLRUReplacementPolicyParams Params; - WeightedLRUPolicy(const Params* p); - ~WeightedLRUPolicy() {} - - /** - * Invalidate replacement data to set it as the next probable victim. - * Sets its last touch tick as the starting tick. - * - * @param replacement_data Replacement data to be invalidated. - */ - void invalidate(const std::shared_ptr& replacement_data) - const override; - /** - * Touch an entry to update its replacement data. - * Sets its last touch tick as the current tick. - * - * @param replacement_data Replacement data to be touched. - */ - void touch(const std::shared_ptr& - replacement_data) const override; - void touch(const std::shared_ptr& replacement_data, - int occupancy) const; - - /** - * Reset replacement data. Used when an entry is inserted. - * Sets its last touch tick as the current tick. - * - * @param replacement_data Replacement data to be reset. - */ - void reset(const std::shared_ptr& replacement_data) const - override; - - /** - * Instantiate a replacement data entry. - * - * @return A shared pointer to the new replacement data. - */ - std::shared_ptr instantiateEntry() override; - - /** - * Find replacement victim using weight. - * - * @param candidates Replacement candidates, selected by indexing policy. - * @return Replacement entry to be replaced. - */ - ReplaceableEntry* getVictim(const ReplacementCandidates& - candidates) const override; -}; - -#endif // __MEM_RUBY_SYSTEM_WeightedLRUPolicy_HH__ diff --git a/src/mem/ruby/system/WeightedLRUReplacementPolicy.py b/src/mem/ruby/system/WeightedLRUReplacementPolicy.py deleted file mode 100644 index 48143e5d9..000000000 --- a/src/mem/ruby/system/WeightedLRUReplacementPolicy.py +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (c) 2013-2015 Advanced Micro Devices, Inc. -# All rights reserved. -# -# For use for simulation and test purposes only -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. 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. -# -# 3. Neither the name of the copyright holder 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 HOLDER 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: Derek Hower - -from m5.params import * -from m5.proxy import * -from m5.objects.ReplacementPolicies import BaseReplacementPolicy - -class WeightedLRUReplacementPolicy(BaseReplacementPolicy): - type = "WeightedLRUReplacementPolicy" - cxx_class = "WeightedLRUPolicy" - cxx_header = "mem/ruby/system/WeightedLRUPolicy.hh"