mshr.hh (13351:1d456a63bfbc) | mshr.hh (13859:4156ac0c7257) |
---|---|
1/* 2 * Copyright (c) 2012-2013, 2015-2016, 2018 ARM Limited 3 * All rights reserved. 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 110 unchanged lines hidden (view full) --- 119 public: 120 121 /** Track if we sent this as a whole line write or not */ 122 bool wasWholeLineWrite; 123 124 /** True if the entry is just a simple forward from an upper level */ 125 bool isForward; 126 | 1/* 2 * Copyright (c) 2012-2013, 2015-2016, 2018 ARM Limited 3 * All rights reserved. 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 110 unchanged lines hidden (view full) --- 119 public: 120 121 /** Track if we sent this as a whole line write or not */ 122 bool wasWholeLineWrite; 123 124 /** True if the entry is just a simple forward from an upper level */ 125 bool isForward; 126 |
127 class Target { | 127 class Target : public QueueEntry::Target { |
128 public: 129 130 enum Source { 131 FromCPU, 132 FromSnoop, 133 FromPrefetcher 134 }; 135 | 128 public: 129 130 enum Source { 131 FromCPU, 132 FromSnoop, 133 FromPrefetcher 134 }; 135 |
136 const Tick recvTime; //!< Time when request was received (for stats) 137 const Tick readyTime; //!< Time when request is ready to be serviced 138 const Counter order; //!< Global order (for memory consistency mgmt) 139 const PacketPtr pkt; //!< Pending request packet. | |
140 const Source source; //!< Request from cpu, memory, or prefetcher? 141 142 /** 143 * We use this flag to track whether we have cleared the 144 * downstreamPending flag for the MSHR of the cache above 145 * where this packet originates from and guard noninitial 146 * attempts to clear it. 147 * --- 8 unchanged lines hidden (view full) --- 156 */ 157 bool markedPending; 158 159 const bool allocOnFill; //!< Should the response servicing this 160 //!< target list allocate in the cache? 161 162 Target(PacketPtr _pkt, Tick _readyTime, Counter _order, 163 Source _source, bool _markedPending, bool alloc_on_fill) | 136 const Source source; //!< Request from cpu, memory, or prefetcher? 137 138 /** 139 * We use this flag to track whether we have cleared the 140 * downstreamPending flag for the MSHR of the cache above 141 * where this packet originates from and guard noninitial 142 * attempts to clear it. 143 * --- 8 unchanged lines hidden (view full) --- 152 */ 153 bool markedPending; 154 155 const bool allocOnFill; //!< Should the response servicing this 156 //!< target list allocate in the cache? 157 158 Target(PacketPtr _pkt, Tick _readyTime, Counter _order, 159 Source _source, bool _markedPending, bool alloc_on_fill) |
164 : recvTime(curTick()), readyTime(_readyTime), order(_order), 165 pkt(_pkt), source(_source), markedPending(_markedPending), 166 allocOnFill(alloc_on_fill) | 160 : QueueEntry::Target(_pkt, _readyTime, _order), source(_source), 161 markedPending(_markedPending), allocOnFill(alloc_on_fill) |
167 {} 168 }; 169 170 class TargetList : public std::list<Target> { 171 172 public: 173 bool needsWritable; 174 bool hasUpgrade; --- 296 unchanged lines hidden (view full) --- 471 * @return true if there are targets 472 */ 473 bool hasTargets() const { return !targets.empty(); } 474 475 /** 476 * Returns a reference to the first target. 477 * @return A pointer to the first target. 478 */ | 162 {} 163 }; 164 165 class TargetList : public std::list<Target> { 166 167 public: 168 bool needsWritable; 169 bool hasUpgrade; --- 296 unchanged lines hidden (view full) --- 466 * @return true if there are targets 467 */ 468 bool hasTargets() const { return !targets.empty(); } 469 470 /** 471 * Returns a reference to the first target. 472 * @return A pointer to the first target. 473 */ |
479 Target *getTarget() | 474 QueueEntry::Target *getTarget() override |
480 { 481 assert(hasTargets()); 482 return &targets.front(); 483 } 484 485 /** 486 * Pop first target. 487 */ --- 54 unchanged lines hidden --- | 475 { 476 assert(hasTargets()); 477 return &targets.front(); 478 } 479 480 /** 481 * Pop first target. 482 */ --- 54 unchanged lines hidden --- |