38 #include "params/WeightedLRURP.hh"
50 replacement_data)
const
52 std::static_pointer_cast<WeightedLRUReplData>(replacement_data)->
58 replacement_data,
int occupancy)
const
60 std::static_pointer_cast<WeightedLRUReplData>(replacement_data)->
62 std::static_pointer_cast<WeightedLRUReplData>(replacement_data)->
63 last_occ_ptr = occupancy;
69 assert(candidates.size() > 0);
75 for (
const auto& candidate : candidates) {
77 std::shared_ptr<WeightedLRUReplData> candidate_replacement_data =
78 std::static_pointer_cast<WeightedLRUReplData>(
79 candidate->replacementData);
81 std::shared_ptr<WeightedLRUReplData> victim_replacement_data =
82 std::static_pointer_cast<WeightedLRUReplData>(
85 if (candidate_replacement_data->last_occ_ptr <
86 victim_replacement_data->last_occ_ptr) {
88 }
else if (candidate_replacement_data->last_occ_ptr ==
89 victim_replacement_data->last_occ_ptr) {
91 Tick time = candidate_replacement_data->last_touch_tick;
92 if (time < victim_replacement_data->last_touch_tick) {
100 std::shared_ptr<ReplacementData>
108 replacement_data)
const
111 std::static_pointer_cast<WeightedLRUReplData>(
112 replacement_data)->last_touch_tick =
curTick();
117 replacement_data)
const
120 std::static_pointer_cast<WeightedLRUReplData>(
121 replacement_data)->last_touch_tick =
Tick(0);