gem5  [DEVELOP-FOR-23.0]
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
bop.hh
Go to the documentation of this file.
1 
36 #ifndef __MEM_CACHE_PREFETCH_BOP_HH__
37 #define __MEM_CACHE_PREFETCH_BOP_HH__
38 
39 #include <queue>
40 
42 #include "mem/packet.hh"
43 
44 namespace gem5
45 {
46 
47 struct BOPPrefetcherParams;
48 
49 namespace prefetch
50 {
51 
52 class BOP : public Queued
53 {
54  private:
55 
56  enum RRWay
57  {
60  };
61 
63  const unsigned int scoreMax;
64  const unsigned int roundMax;
65  const unsigned int badScore;
67  const unsigned int rrEntries;
68  const unsigned int tagMask;
70  const bool delayQueueEnabled;
71  const unsigned int delayQueueSize;
72  const unsigned int delayTicks;
73 
76 
80 
88  {
91 
93  {}
94  };
95 
97 
101 
111  unsigned int bestScore;
113  unsigned int round;
114 
119  unsigned int hash(Addr addr, unsigned int way) const;
120 
125  void insertIntoRR(Addr addr, unsigned int way);
126 
132 
134  void resetScores();
135 
140  Addr tag(Addr addr) const;
141 
144  bool testRR(Addr) const;
145 
148  void bestOffsetLearning(Addr);
149 
151  void notifyFill(const PacketPtr& pkt) override;
152 
153  public:
154 
155  BOP(const BOPPrefetcherParams &p);
156  ~BOP() = default;
157 
158  void calculatePrefetch(const PrefetchInfo &pfi,
159  std::vector<AddrPriority> &addresses) override;
160 };
161 
162 } // namespace prefetch
163 } // namespace gem5
164 
165 #endif /* __MEM_CACHE_PREFETCH_BOP_HH__ */
gem5::prefetch::BOP::bestOffset
Addr bestOffset
Current best offset to issue prefetches.
Definition: bop.hh:105
gem5::prefetch::BOP::badScore
const unsigned int badScore
Definition: bop.hh:65
gem5::prefetch::BOP::DelayQueueEntry::baseAddr
Addr baseAddr
Definition: bop.hh:89
gem5::prefetch::BOP::bestScore
unsigned int bestScore
Max score found so far.
Definition: bop.hh:111
gem5::prefetch::BOP::delayQueue
std::deque< DelayQueueEntry > delayQueue
Definition: bop.hh:96
gem5::prefetch::BOP::insertIntoDelayQueue
void insertIntoDelayQueue(Addr addr)
Insert the specified address into the delay queue.
Definition: bop.cc:138
gem5::prefetch::BOP::tagMask
const unsigned int tagMask
Definition: bop.hh:68
gem5::prefetch::BOP::offsetsList
std::vector< OffsetListEntry > offsetsList
Definition: bop.hh:79
gem5::prefetch::BOP::RRWay
RRWay
Definition: bop.hh:56
gem5::prefetch::BOP::DelayQueueEntry
In a first implementation of the BO prefetcher, both banks of the RR were written simultaneously when...
Definition: bop.hh:87
gem5::prefetch::BOP::hash
unsigned int hash(Addr addr, unsigned int way) const
Generate a hash for the specified address to index the RR table.
Definition: bop.cc:117
std::vector< Addr >
gem5::prefetch::BOP::insertIntoRR
void insertIntoRR(Addr addr, unsigned int way)
Insert the specified address into the RR table.
Definition: bop.cc:125
gem5::prefetch::BOP::Left
@ Left
Definition: bop.hh:58
queued.hh
packet.hh
gem5::prefetch::BOP::calculatePrefetch
void calculatePrefetch(const PrefetchInfo &pfi, std::vector< AddrPriority > &addresses) override
Definition: bop.cc:229
gem5::VegaISA::t
Bitfield< 51 > t
Definition: pagetable.hh:56
gem5::VegaISA::p
Bitfield< 54 > p
Definition: pagetable.hh:70
gem5::Packet
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Definition: packet.hh:294
gem5::prefetch::BOP::notifyFill
void notifyFill(const PacketPtr &pkt) override
Update the RR right table after a prefetch fill.
Definition: bop.cc:255
gem5::prefetch::BOP::BOP
BOP(const BOPPrefetcherParams &p)
Definition: bop.cc:40
gem5::prefetch::BOP::delayTicks
const unsigned int delayTicks
Definition: bop.hh:72
gem5::Tick
uint64_t Tick
Tick count type.
Definition: types.hh:58
gem5::VegaISA::x
Bitfield< 4 > x
Definition: pagetable.hh:61
gem5::prefetch::BOP::scoreMax
const unsigned int scoreMax
Learning phase parameters.
Definition: bop.hh:63
gem5::prefetch::BOP::phaseBestOffset
Addr phaseBestOffset
Current best offset found in the learning phase.
Definition: bop.hh:107
gem5::prefetch::BOP::delayQueueSize
const unsigned int delayQueueSize
Definition: bop.hh:71
gem5::prefetch::BOP::rrRight
std::vector< Addr > rrRight
Definition: bop.hh:75
gem5::prefetch::BOP::testRR
bool testRR(Addr) const
Test if @X-O is hitting in the RR table to update the offset score.
Definition: bop.cc:170
std::pair
STL pair class.
Definition: stl.hh:58
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
gem5::prefetch::BOP::OffsetListEntry
std::pair< int16_t, uint8_t > OffsetListEntry
Structure to save the offset and the score.
Definition: bop.hh:78
gem5::prefetch::BOP::delayQueueEventWrapper
void delayQueueEventWrapper()
Event to handle the delay queue processing.
Definition: bop.cc:100
gem5::prefetch::Queued
Definition: queued.hh:59
gem5::prefetch::BOP::rrEntries
const unsigned int rrEntries
Recent requests table parameteres.
Definition: bop.hh:67
gem5::EventFunctionWrapper
Definition: eventq.hh:1136
gem5::prefetch::BOP::roundMax
const unsigned int roundMax
Definition: bop.hh:64
gem5::prefetch::BOP::Right
@ Right
Definition: bop.hh:59
gem5::prefetch::BOP::delayQueueEvent
EventFunctionWrapper delayQueueEvent
Definition: bop.hh:100
gem5::prefetch::BOP::resetScores
void resetScores()
Reset all the scores from the offset list.
Definition: bop.cc:156
std::deque
STL deque class.
Definition: stl.hh:44
gem5::prefetch::BOP::~BOP
~BOP()=default
gem5::prefetch::BOP::delayQueueEnabled
const bool delayQueueEnabled
Delay queue parameters.
Definition: bop.hh:70
gem5::prefetch::BOP::round
unsigned int round
Current round.
Definition: bop.hh:113
gem5::prefetch::BOP::bestOffsetLearning
void bestOffsetLearning(Addr)
Learning phase of the BOP.
Definition: bop.cc:188
gem5::prefetch::BOP
Definition: bop.hh:52
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: gpu_translation_state.hh:37
gem5::prefetch::BOP::rrLeft
std::vector< Addr > rrLeft
Definition: bop.hh:74
gem5::prefetch::BOP::offsetsListIterator
std::vector< OffsetListEntry >::iterator offsetsListIterator
Current test offset index.
Definition: bop.hh:109
gem5::prefetch::BOP::tag
Addr tag(Addr addr) const
Generate the tag for the specified address based on the tag bits and the block size.
Definition: bop.cc:164
gem5::prefetch::BOP::DelayQueueEntry::processTick
Tick processTick
Definition: bop.hh:90
gem5::prefetch::Base::PrefetchInfo
Class containing the information needed by the prefetch to train and generate new prefetch requests.
Definition: base.hh:96
gem5::prefetch::BOP::DelayQueueEntry::DelayQueueEntry
DelayQueueEntry(Addr x, Tick t)
Definition: bop.hh:92
gem5::X86ISA::addr
Bitfield< 3 > addr
Definition: types.hh:84
gem5::prefetch::BOP::issuePrefetchRequests
bool issuePrefetchRequests
Hardware prefetcher enabled.
Definition: bop.hh:103

Generated on Sun Jul 30 2023 01:56:57 for gem5 by doxygen 1.8.17