lru_rp.hh (12613:40c18bb90501) lru_rp.hh (12684:44ebd2bc020f)
1/**
2 * Copyright (c) 2018 Inria
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 29 unchanged lines hidden (view full) ---

38#ifndef __MEM_CACHE_REPLACEMENT_POLICIES_LRU_RP_HH__
39#define __MEM_CACHE_REPLACEMENT_POLICIES_LRU_RP_HH__
40
41#include "mem/cache/replacement_policies/base.hh"
42#include "params/LRURP.hh"
43
44class LRURP : public BaseReplacementPolicy
45{
1/**
2 * Copyright (c) 2018 Inria
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 29 unchanged lines hidden (view full) ---

38#ifndef __MEM_CACHE_REPLACEMENT_POLICIES_LRU_RP_HH__
39#define __MEM_CACHE_REPLACEMENT_POLICIES_LRU_RP_HH__
40
41#include "mem/cache/replacement_policies/base.hh"
42#include "params/LRURP.hh"
43
44class LRURP : public BaseReplacementPolicy
45{
46 protected:
47 /** LRU-specific implementation of replacement data. */
48 struct LRUReplData : ReplacementData
49 {
50 /** Tick on which the entry was last touched. */
51 Tick lastTouchTick;
52
53 /**
54 * Default constructor. Invalidate data.
55 */
56 LRUReplData() : lastTouchTick(0) {}
57 };
58
46 public:
47 /** Convenience typedef. */
48 typedef LRURPParams Params;
49
50 /**
51 * Construct and initiliaze this replacement policy.
52 */
53 LRURP(const Params *p);
54
55 /**
56 * Destructor.
57 */
58 ~LRURP() {}
59
60 /**
59 public:
60 /** Convenience typedef. */
61 typedef LRURPParams Params;
62
63 /**
64 * Construct and initiliaze this replacement policy.
65 */
66 LRURP(const Params *p);
67
68 /**
69 * Destructor.
70 */
71 ~LRURP() {}
72
73 /**
61 * Touch a block to update its last touch tick.
74 * Invalidate replacement data to set it as the next probable victim.
75 * Sets its last touch tick as the starting tick.
62 *
76 *
63 * @param blk Cache block to be touched.
77 * @param replacement_data Replacement data to be invalidated.
64 */
78 */
65 void touch(CacheBlk *blk) override;
79 void invalidate(const std::shared_ptr<ReplacementData>& replacement_data)
80 const override;
66
67 /**
81
82 /**
68 * Reset replacement data for a block. Used when a block is inserted.
83 * Touch an entry to update its replacement data.
69 * Sets its last touch tick as the current tick.
70 *
84 * Sets its last touch tick as the current tick.
85 *
71 * @param blk Cache block to be reset.
86 * @param replacement_data Replacement data to be touched.
72 */
87 */
73 void reset(CacheBlk *blk) override;
88 void touch(const std::shared_ptr<ReplacementData>& replacement_data) const
89 override;
74
75 /**
90
91 /**
92 * Reset replacement data. Used when an entry is inserted.
93 * Sets its last touch tick as the current tick.
94 *
95 * @param replacement_data Replacement data to be reset.
96 */
97 void reset(const std::shared_ptr<ReplacementData>& replacement_data) const
98 override;
99
100 /**
76 * Find replacement victim using LRU timestamps.
77 *
78 * @param candidates Replacement candidates, selected by indexing policy.
101 * Find replacement victim using LRU timestamps.
102 *
103 * @param candidates Replacement candidates, selected by indexing policy.
79 * @return Cache block to be replaced.
104 * @return Replacement entry to be replaced.
80 */
105 */
81 CacheBlk* getVictim(const ReplacementCandidates& candidates) override;
106 ReplaceableEntry* getVictim(const ReplacementCandidates& candidates) const
107 override;
108
109 /**
110 * Instantiate a replacement data entry.
111 *
112 * @return A shared pointer to the new replacement data.
113 */
114 std::shared_ptr<ReplacementData> instantiateEntry() override;
82};
83
84#endif // __MEM_CACHE_REPLACEMENT_POLICIES_LRU_RP_HH__
115};
116
117#endif // __MEM_CACHE_REPLACEMENT_POLICIES_LRU_RP_HH__