36 #include "params/BRRIPRP.hh" 40 numRRPVBits(p->num_bits), hitPriority(p->hit_priority), btp(p->btp)
49 std::shared_ptr<BRRIPReplData> casted_replacement_data =
53 casted_replacement_data->
valid =
false;
57 BRRIPRP::touch(
const std::shared_ptr<ReplacementData>& replacement_data)
const 59 std::shared_ptr<BRRIPReplData> casted_replacement_data =
68 casted_replacement_data->rrpv--;
73 BRRIPRP::reset(
const std::shared_ptr<ReplacementData>& replacement_data)
const 75 std::shared_ptr<BRRIPReplData> casted_replacement_data =
83 casted_replacement_data->rrpv--;
87 casted_replacement_data->valid =
true;
94 assert(candidates.size() > 0);
101 victim->replacementData)->rrpv;
104 for (
const auto& candidate : candidates) {
105 std::shared_ptr<BRRIPReplData> candidate_repl_data =
107 candidate->replacementData);
110 if (!candidate_repl_data->valid) {
115 int candidate_RRPV = candidate_repl_data->
rrpv;
116 if (candidate_RRPV > victim_RRPV) {
118 victim_RRPV = candidate_RRPV;
125 victim->replacementData)->rrpv.saturate();
130 for (
const auto& candidate : candidates) {
132 candidate->replacementData)->rrpv += diff;
139 std::shared_ptr<ReplacementData>
146 BRRIPRPParams::create()
BaseReplacementPolicyParams Params
Convenience typedef.
bool valid
Whether the entry is valid.
std::shared_ptr< ReplacementData > instantiateEntry() override
Instantiate a replacement data entry.
Copyright (c) 2018 Inria All rights reserved.
void touch(const std::shared_ptr< ReplacementData > &replacement_data) const override
Touch an entry to update its replacement data.
A common base class of cache replacement policy objects.
std::enable_if< std::is_integral< T >::value, T >::type random()
Use the SFINAE idiom to choose an implementation based on whether the type is integral or floating po...
const unsigned numRRPVBits
Number of RRPV bits.
const unsigned btp
Bimodal throtle parameter.
void reset()
Reset the counter to its initial value.
#define fatal_if(cond,...)
Conditional fatal macro that checks the supplied condition and only causes a fatal error if the condi...
void invalidate(const std::shared_ptr< ReplacementData > &replacement_data) const override
Invalidate replacement data to set it as the next probable victim.
uint8_t saturate()
Saturate the counter.
BRRIPRP(const Params *p)
Construct and initiliaze this replacement policy.
BRRIP-specific implementation of replacement data.
void reset(const std::shared_ptr< ReplacementData > &replacement_data) const override
Reset replacement data.
const bool hitPriority
The hit priority (HP) policy replaces entries that do not receive cache hits over any cache entry tha...
SatCounter rrpv
Re-Reference Interval Prediction Value.
A replaceable entry is a basic entry in a 2d table-like structure that needs to have replacement func...
ReplaceableEntry * getVictim(const ReplacementCandidates &candidates) const override
Find replacement victim using rrpv.