36 #include "params/WeightedLRURP.hh"
43 namespace replacement_policy
56 std::static_pointer_cast<WeightedLRUReplData>(replacement_data)->
57 last_occ_ptr = occupancy;
63 assert(candidates.size() > 0);
69 for (
const auto& candidate : candidates) {
71 std::shared_ptr<WeightedLRUReplData> candidate_replacement_data =
72 std::static_pointer_cast<WeightedLRUReplData>(
73 candidate->replacementData);
75 std::shared_ptr<WeightedLRUReplData> victim_replacement_data =
76 std::static_pointer_cast<WeightedLRUReplData>(
79 if (candidate_replacement_data->last_occ_ptr <
80 victim_replacement_data->last_occ_ptr) {
82 }
else if (candidate_replacement_data->last_occ_ptr ==
83 victim_replacement_data->last_occ_ptr) {
85 Tick time = candidate_replacement_data->lastTouchTick;
86 if (time < victim_replacement_data->lastTouchTick) {
94 std::shared_ptr<ReplacementData>
A replaceable entry is a basic entry in a 2d table-like structure that needs to have replacement func...
std::shared_ptr< replacement_policy::ReplacementData > replacementData
Replacement data associated to this entry.
BaseReplacementPolicyParams Params
void touch(const std::shared_ptr< ReplacementData > &replacement_data) const override
Touch an entry to update its replacement data.
WeightedLRU(const Params &p)
std::shared_ptr< ReplacementData > instantiateEntry() override
Instantiate a replacement data entry.
virtual void touch(const std::shared_ptr< ReplacementData > &replacement_data, const PacketPtr pkt)
Update replacement data.
ReplaceableEntry * getVictim(const ReplacementCandidates &candidates) const override
Find replacement victim using weight.
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
uint64_t Tick
Tick count type.
GEM5_DEPRECATED_NAMESPACE(GuestABI, guest_abi)
Weighted LRU implementation of replacement data.