33 #include "params/SecondChanceRP.hh" 42 const std::shared_ptr<SecondChanceReplData>& replacement_data)
const 48 replacement_data->hasSecondChance =
false;
53 const std::shared_ptr<ReplacementData>& replacement_data)
const 59 replacement_data)->hasSecondChance =
false;
64 replacement_data)
const 70 replacement_data)->hasSecondChance =
true;
75 replacement_data)
const 81 replacement_data)->hasSecondChance =
false;
88 assert(candidates.size() > 0);
91 for (
const auto& candidate : candidates) {
93 std::shared_ptr<SecondChanceReplData> candidate_replacement_data =
95 candidate->replacementData);
98 if ((candidate_replacement_data->tickInserted ==
Tick(0)) &&
99 !candidate_replacement_data->hasSecondChance) {
106 bool search_victim =
true;
107 while (search_victim) {
112 std::shared_ptr<SecondChanceReplData> victim_replacement_data =
117 if (victim_replacement_data->hasSecondChance) {
121 search_victim =
false;
128 std::shared_ptr<ReplacementData>
135 SecondChanceRPParams::create()
BaseReplacementPolicyParams Params
Convenience typedef.
void useSecondChance(const std::shared_ptr< SecondChanceReplData > &replacement_data) const
Use replacement data's second chance.
void invalidate(const std::shared_ptr< ReplacementData > &replacement_data) const override
Invalidate replacement data to set it as the next probable victim.
void invalidate(const std::shared_ptr< ReplacementData > &replacement_data) const override
Invalidate replacement data to set it as the next probable victim.
Copyright (c) 2018 Inria All rights reserved.
void reset(const std::shared_ptr< ReplacementData > &replacement_data) const override
Reset replacement data.
void touch(const std::shared_ptr< ReplacementData > &replacement_data) const override
Touch an entry to update its re-insertion tick and second chance bit.
std::shared_ptr< ReplacementData > instantiateEntry() override
Instantiate a replacement data entry.
std::shared_ptr< ReplacementData > replacementData
Replacement data associated to this entry.
uint64_t Tick
Tick count type.
Second-Chance-specific implementation of replacement data.
SecondChanceRP(const Params *p)
Construct and initiliaze this replacement policy.
ReplaceableEntry * getVictim(const ReplacementCandidates &candidates) const override
Find replacement victim using insertion timestamps and second chance bit.
void touch(const std::shared_ptr< ReplacementData > &replacement_data) const override
Touch an entry to update its replacement data.
ReplaceableEntry * getVictim(const ReplacementCandidates &candidates) const override
Find replacement victim using insertion timestamps.
A replaceable entry is a basic entry in a 2d table-like structure that needs to have replacement func...
void reset(const std::shared_ptr< ReplacementData > &replacement_data) const override
Reset replacement data.