38 #include "params/BRRIPRP.hh" 42 numRRPVBits(p->num_bits), hitPriority(p->hit_priority), btp(p->btp)
51 std::shared_ptr<BRRIPReplData> casted_replacement_data =
55 casted_replacement_data->
valid =
false;
59 BRRIPRP::touch(
const std::shared_ptr<ReplacementData>& replacement_data)
const 61 std::shared_ptr<BRRIPReplData> casted_replacement_data =
70 casted_replacement_data->rrpv--;
75 BRRIPRP::reset(
const std::shared_ptr<ReplacementData>& replacement_data)
const 77 std::shared_ptr<BRRIPReplData> casted_replacement_data =
85 casted_replacement_data->rrpv--;
89 casted_replacement_data->valid =
true;
96 assert(candidates.size() > 0);
103 victim->replacementData)->rrpv;
106 for (
const auto& candidate : candidates) {
107 std::shared_ptr<BRRIPReplData> candidate_repl_data =
109 candidate->replacementData);
112 if (!candidate_repl_data->valid) {
117 int candidate_RRPV = candidate_repl_data->
rrpv;
118 if (candidate_RRPV > victim_RRPV) {
120 victim_RRPV = candidate_RRPV;
127 victim->replacementData)->rrpv.saturate();
132 for (
const auto& candidate : candidates) {
134 candidate->replacementData)->rrpv += diff;
141 std::shared_ptr<ReplacementData>
148 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.