gem5  [DEVELOP-FOR-23.0]
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
tlb.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021 Advanced Micro Devices, Inc.
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 met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  *
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * 3. Neither the name of the copyright holder nor the names of its
16  * contributors may be used to endorse or promote products derived from this
17  * software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #ifndef __ARCH_AMDGPU_VEGA_TLB_HH__
33 #define __ARCH_AMDGPU_VEGA_TLB_HH__
34 
35 #include <list>
36 #include <queue>
37 #include <string>
38 #include <vector>
39 
41 #include "arch/generic/mmu.hh"
42 #include "base/statistics.hh"
43 #include "base/trace.hh"
44 #include "mem/packet.hh"
45 #include "mem/port.hh"
46 #include "params/VegaGPUTLB.hh"
47 #include "sim/clocked_object.hh"
48 
49 namespace gem5
50 {
51 
52 class BaseMMU;
53 class Packet;
54 class AMDGPUDevice;
55 class ThreadContext;
56 
57 namespace VegaISA
58 {
59 
60 class Walker;
61 
62 class GpuTLB : public ClockedObject
63 {
64  public:
65  GpuTLB(const VegaGPUTLBParams &p);
66  ~GpuTLB();
67 
68  typedef enum BaseMMU::Mode Mode;
69 
71  {
72  public:
73  virtual ~Translation() { }
74 
79  virtual void markDelayed() = 0;
80 
86  virtual void finish(Fault fault, const RequestPtr &req,
87  Mode mode) = 0;
88 
95  virtual bool squashed() const { return false; }
96  };
97 
99  void dumpAll();
100  VegaTlbEntry *lookup(Addr va, bool update_lru=true);
101 
102  Walker *getWalker();
103  void invalidateAll();
104  void demapPage(Addr va, uint64_t asn);
105 
106  protected:
108  EntryList::iterator lookupIt(Addr va, bool update_lru=true);
111 
112  int size;
113  int assoc;
114  int numSets;
115 
119  bool FA;
121 
127 
132 
134 
135  /*
136  * It's a per-set list. As long as we have not reached
137  * the full capacity of the given set, grab an entry from
138  * the freeList.
139  */
141 
150 
151  public:
152  // latencies for a TLB hit, miss and page fault
156 
158  {
160 
163 
164  // local_stats are as seen from the TLB
165  // without taking into account coalescing
170 
171  // global_stats are as seen from the
172  // CU's perspective taking into account
173  // all coalesced requests.
178 
179  // from the CU perspective (global)
182 
183  // from the perspective of this TLB
186  } stats;
187 
188 
189  VegaTlbEntry *insert(Addr vpn, VegaTlbEntry &entry);
190 
191  // Checkpointing
192  virtual void serialize(CheckpointOut& cp) const override;
193  virtual void unserialize(CheckpointIn& cp) override;
194  void issueTranslation();
196  VegaTlbEntry *tlbLookup(const RequestPtr &req, bool update_stats);
197 
198  void walkerResponse(VegaTlbEntry& entry, PacketPtr pkt);
200  PacketPtr pkt);
201 
203 
205  VegaTlbEntry *tlb_entry, Mode mode);
206 
207  void updatePhysAddresses(Addr virt_page_addr, VegaTlbEntry *tlb_entry,
208  Addr phys_page_addr);
209 
210  void issueTLBLookup(PacketPtr pkt);
211 
212  // CpuSidePort is the TLB Port closer to the CPU/CU side
213  class CpuSidePort : public ResponsePort
214  {
215  public:
216  CpuSidePort(const std::string &_name, GpuTLB * gpu_TLB,
217  PortID _index)
218  : ResponsePort(_name), tlb(gpu_TLB), index(_index) { }
219 
220  protected:
222  int index;
223 
224  virtual bool recvTimingReq(PacketPtr pkt);
225  virtual Tick recvAtomic(PacketPtr pkt) { return 0; }
226  virtual void recvFunctional(PacketPtr pkt);
227  virtual void recvRangeChange() { }
228  virtual void recvReqRetry();
229  virtual void recvRespRetry() { panic("recvRespRetry called"); }
230  virtual AddrRangeList getAddrRanges() const;
231  };
232 
240  class MemSidePort : public RequestPort
241  {
242  public:
243  MemSidePort(const std::string &_name, GpuTLB * gpu_TLB,
244  PortID _index)
245  : RequestPort(_name), tlb(gpu_TLB), index(_index) { }
246 
248 
249  protected:
251  int index;
252 
253  virtual bool recvTimingResp(PacketPtr pkt);
254  virtual Tick recvAtomic(PacketPtr pkt) { return 0; }
255  virtual void recvFunctional(PacketPtr pkt) { }
256  virtual void recvRangeChange() { }
257  virtual void recvReqRetry();
258  };
259 
260  // TLB ports on the cpu Side
262  // TLB ports on the memory side
264 
265  Port &getPort(const std::string &if_name,
266  PortID idx=InvalidPortID) override;
267 
269 
270  // maximum number of permitted coalesced requests per cycle
272 
273  // Current number of outstandings coalesced requests.
274  // Should be <= maxCoalescedReqs
276 
284  void translationReturn(Addr virtPageAddr, tlbOutcome outcome,
285  PacketPtr pkt);
286 
287  class TLBEvent : public Event
288  {
289  private:
297 
298  public:
299  TLBEvent(GpuTLB *_tlb, Addr _addr, tlbOutcome outcome,
300  PacketPtr _pkt);
301 
302  void process();
303  const char *description() const;
304 
305  // updateOutcome updates the tlbOutcome of a TLBEvent
306  void updateOutcome(tlbOutcome _outcome);
308  };
309 
310  std::unordered_map<Addr, TLBEvent*> translationReturnEvent;
311 
312  // this FIFO queue keeps track of the virt. page addresses
313  // that are pending cleanup
314  std::queue<Addr> cleanupQueue;
315 
316  // the cleanupEvent is scheduled after a TLBEvent triggers in order to
317  // free memory and do the required clean-up
318  void cleanup();
319 
321 };
322 
323 } // namespace VegaISA
324 
325 } // namespace gem5
326 
327 #endif // __ARCH_AMDGPU_VEGA_TLB_HH__
gem5::statistics::Scalar
This is a simple scalar statistic, like a counter.
Definition: statistics.hh:1929
gem5::VegaISA::GpuTLB::VegaTLBStats::pageTableCycles
statistics::Scalar pageTableCycles
Definition: tlb.hh:181
gem5::PortID
int16_t PortID
Port index/ID type, and a symbolic name for an invalid port id.
Definition: types.hh:245
gem5::VegaISA::GpuTLB::tlbLookup
VegaTlbEntry * tlbLookup(const RequestPtr &req, bool update_stats)
TLB_lookup will only perform a TLB lookup returning the TLB entry on a TLB hit and nullptr on a TLB m...
Definition: tlb.cc:260
gem5::VegaISA::GpuTLB::cpuSidePort
std::vector< CpuSidePort * > cpuSidePort
Definition: tlb.hh:261
gem5::VegaISA::GpuTLB::cleanupQueue
std::queue< Addr > cleanupQueue
Definition: tlb.hh:314
gem5::VegaISA::GpuTLB::issueTranslation
void issueTranslation()
gem5::VegaISA::GpuTLB::TLBEvent::pkt
PacketPtr pkt
Definition: tlb.hh:296
gem5::VegaISA::GpuTLB::freeList
std::vector< EntryList > freeList
Definition: tlb.hh:140
gem5::VegaISA::GpuTLB::issueTLBLookup
void issueTLBLookup(PacketPtr pkt)
Do the TLB lookup for this coalesced request and schedule another event <TLB access latency> cycles l...
Definition: tlb.cc:310
gem5::VegaISA::GpuTLB::dumpAll
void dumpAll()
gem5::VegaISA::GpuTLB::lookup
VegaTlbEntry * lookup(Addr va, bool update_lru=true)
Definition: tlb.cc:211
gem5::BaseMMU::Mode
Mode
Definition: mmu.hh:56
gem5::VegaISA::GpuTLB
Definition: tlb.hh:62
gem5::CheckpointIn
Definition: serialize.hh:68
gem5::VegaISA::GpuTLB::cleanup
void cleanup()
Definition: tlb.cc:933
gem5::VegaISA::GpuTLB::pageAlign
Addr pageAlign(Addr vaddr)
Definition: tlb.cc:150
gem5::VegaISA::GpuTLB::FA
bool FA
true if this is a fully-associative TLB
Definition: tlb.hh:119
gem5::VegaISA::GpuTLB::VegaTLBStats::localCycles
statistics::Scalar localCycles
Definition: tlb.hh:184
gem5::VegaISA::GpuTLB::GpuTLB
GpuTLB(const VegaGPUTLBParams &p)
Definition: tlb.cc:52
gem5::VegaISA::GpuTLB::lookupIt
EntryList::iterator lookupIt(Addr va, bool update_lru=true)
Definition: tlb.cc:181
gem5::VegaISA::GpuTLB::insert
VegaTlbEntry * insert(Addr vpn, VegaTlbEntry &entry)
Definition: tlb.cc:157
gem5::VegaISA::GpuTLB::CpuSidePort::recvTimingReq
virtual bool recvTimingReq(PacketPtr pkt)
recvTiming receives a coalesced timing request from a TLBCoalescer and it calls issueTLBLookup() It o...
Definition: tlb.cc:660
gem5::VegaISA::GpuTLB::VegaTLBStats::localNumTLBHits
statistics::Scalar localNumTLBHits
Definition: tlb.hh:167
gem5::VegaISA::GpuTLB::hitLatency
int hitLatency
Definition: tlb.hh:153
gem5::VegaISA::GpuTLB::TLB_HIT
@ TLB_HIT
Definition: tlb.hh:195
gem5::statistics::Formula
A formula for statistics that is calculated when printed.
Definition: statistics.hh:2538
gem5::VegaISA::GpuTLB::VegaTLBStats::globalNumTLBAccesses
statistics::Scalar globalNumTLBAccesses
Definition: tlb.hh:174
std::vector< VegaTlbEntry >
gem5::VegaISA::GpuTLB::~GpuTLB
~GpuTLB()
Definition: tlb.cc:109
gem5::VegaISA::GpuTLB::walkerResponse
void walkerResponse(VegaTlbEntry &entry, PacketPtr pkt)
Definition: tlb.cc:425
gem5::VegaISA::GpuTLB::TLBEvent::outcome
tlbOutcome outcome
outcome can be TLB_HIT, TLB_MISS, or PAGE_WALK
Definition: tlb.hh:295
gem5::VegaISA::GpuTLB::size
int size
Definition: tlb.hh:112
gem5::VegaISA::GpuTLB::MemSidePort::recvFunctional
virtual void recvFunctional(PacketPtr pkt)
Definition: tlb.hh:255
gem5::InvalidPortID
const PortID InvalidPortID
Definition: types.hh:246
gem5::VegaISA::GpuTLB::EntryList
std::list< VegaTlbEntry * > EntryList
Definition: tlb.hh:107
gem5::VegaISA::GpuTLB::Translation::squashed
virtual bool squashed() const
This function is used by the page table walker to determine if it should translate the a pending requ...
Definition: tlb.hh:95
gem5::VegaISA::GpuTLB::VegaTLBStats::globalNumTLBHits
statistics::Scalar globalNumTLBHits
Definition: tlb.hh:175
gem5::VegaISA::GpuTLB::PAGE_WALK
@ PAGE_WALK
Definition: tlb.hh:195
gem5::VegaISA::GpuTLB::entryList
std::vector< EntryList > entryList
An entryList per set is the equivalent of an LRU stack; it's used to guide replacement decisions.
Definition: tlb.hh:149
packet.hh
gem5::VegaISA::GpuTLB::Mode
enum BaseMMU::Mode Mode
Definition: tlb.hh:68
gem5::RequestPort
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
Definition: port.hh:118
gem5::VegaISA::GpuTLB::MemSidePort::retries
std::deque< PacketPtr > retries
Definition: tlb.hh:247
gem5::VegaISA::GpuTLB::VegaTLBStats::maxDownstreamReached
statistics::Scalar maxDownstreamReached
Definition: tlb.hh:161
gem5::VegaISA::GpuTLB::demapPage
void demapPage(Addr va, uint64_t asn)
Definition: tlb.cc:238
gem5::VegaISA::GpuTLB::MemSidePort::index
int index
Definition: tlb.hh:251
gem5::VegaISA::GpuTLB::TLBEvent::description
const char * description() const
Return a C string describing the event.
Definition: tlb.cc:636
gem5::VegaISA::GpuTLB::CpuSidePort::tlb
GpuTLB * tlb
Definition: tlb.hh:221
gem5::VegaISA::GpuTLB::getPort
Port & getPort(const std::string &if_name, PortID idx=InvalidPortID) override
Get a port with a given name and index.
Definition: tlb.cc:114
gem5::VegaISA::GpuTLB::setMask
Addr setMask
Definition: tlb.hh:120
gem5::VegaISA::GpuTLB::Translation
Definition: tlb.hh:70
gem5::VegaISA::GpuTLB::allocationPolicy
bool allocationPolicy
Allocation Policy: true if we always allocate on a hit, false otherwise.
Definition: tlb.hh:126
gem5::VegaISA::GpuTLB::TLB_MISS
@ TLB_MISS
Definition: tlb.hh:195
gem5::VegaISA::GpuTLB::TLBEvent::updateOutcome
void updateOutcome(tlbOutcome _outcome)
Definition: tlb.cc:642
gem5::VegaISA::GpuTLB::CpuSidePort::recvFunctional
virtual void recvFunctional(PacketPtr pkt)
Receive a functional request packet from the peer.
Definition: tlb.cc:766
gem5::VegaISA::GpuTLB::hasMemSidePort
bool hasMemSidePort
if true, then this is not the last level TLB
Definition: tlb.hh:131
gem5::Fault
std::shared_ptr< FaultBase > Fault
Definition: types.hh:248
gem5::VegaISA::p
Bitfield< 54 > p
Definition: pagetable.hh:70
gem5::VegaISA::GpuTLB::translationReturnEvent
std::unordered_map< Addr, TLBEvent * > translationReturnEvent
Definition: tlb.hh:310
gem5::Event
Definition: eventq.hh:254
gem5::VegaISA::GpuTLB::CpuSidePort::recvRangeChange
virtual void recvRangeChange()
Definition: tlb.hh:227
gem5::VegaISA::GpuTLB::VegaTLBStats::globalTLBMissRate
statistics::Formula globalTLBMissRate
Definition: tlb.hh:177
gem5::Packet
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Definition: packet.hh:294
gem5::VegaISA::GpuTLB::VegaTLBStats::accessCycles
statistics::Scalar accessCycles
Definition: tlb.hh:180
gem5::VegaISA::GpuTLB::CpuSidePort::recvReqRetry
virtual void recvReqRetry()
Definition: tlb.cc:884
gem5::probing::Packet
ProbePointArg< PacketInfo > Packet
Packet probe point.
Definition: mem.hh:108
gem5::VegaISA::GpuTLB::Translation::markDelayed
virtual void markDelayed()=0
Signal that the translation has been delayed due to a hw page table walk.
statistics.hh
gem5::VegaISA::GpuTLB::stats
gem5::VegaISA::GpuTLB::VegaTLBStats stats
gem5::Tick
uint64_t Tick
Tick count type.
Definition: types.hh:58
gem5::VegaISA::GpuTLB::VegaTLBStats::localNumTLBMisses
statistics::Scalar localNumTLBMisses
Definition: tlb.hh:168
gem5::RequestPtr
std::shared_ptr< Request > RequestPtr
Definition: request.hh:92
gem5::VegaISA::GpuTLB::VegaTLBStats::localLatency
statistics::Formula localLatency
Definition: tlb.hh:185
mmu.hh
gem5::VegaISA::GpuTLB::TLBEvent::TLBEvent
TLBEvent(GpuTLB *_tlb, Addr _addr, tlbOutcome outcome, PacketPtr _pkt)
Definition: tlb.cc:397
port.hh
gem5::VegaISA::GpuTLB::MemSidePort::recvTimingResp
virtual bool recvTimingResp(PacketPtr pkt)
MemSidePort receives the packet back.
Definition: tlb.cc:906
gem5::VegaISA::GpuTLB::assoc
int assoc
Definition: tlb.hh:113
gem5::AMDGPUDevice
Device model for an AMD GPU.
Definition: amdgpu_device.hh:62
gem5::VegaISA::GpuTLB::CpuSidePort::recvRespRetry
virtual void recvRespRetry()
Called by the peer if sendTimingResp was called on this protocol (causing recvTimingResp to be called...
Definition: tlb.hh:229
gem5::VegaISA::GpuTLB::VegaTLBStats::globalNumTLBMisses
statistics::Scalar globalNumTLBMisses
Definition: tlb.hh:176
gem5::VegaISA::GpuTLB::updatePhysAddresses
void updatePhysAddresses(Addr virt_page_addr, VegaTlbEntry *tlb_entry, Addr phys_page_addr)
gem5::VegaISA::GpuTLB::missLatency2
int missLatency2
Definition: tlb.hh:155
gem5::VegaISA::GpuTLB::getWalker
Walker * getWalker()
Definition: tlb.cc:288
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
gem5::VegaISA::GpuTLB::TLBEvent::tlb
GpuTLB * tlb
Definition: tlb.hh:290
gem5::VegaISA::GpuTLB::TLBEvent::getTLBEventVaddr
Addr getTLBEventVaddr()
Definition: tlb.cc:648
gem5::VegaISA::GpuTLB::VegaTLBStats::outstandingReqsMax
statistics::Scalar outstandingReqsMax
Definition: tlb.hh:162
gem5::ArmISA::va
Bitfield< 8 > va
Definition: misc_types.hh:330
gem5::ClockedObject
The ClockedObject class extends the SimObject with a clock and accessor functions to relate ticks to ...
Definition: clocked_object.hh:234
gem5::VegaISA::GpuTLB::TLBEvent
Definition: tlb.hh:287
gem5::VegaISA::GpuTLB::missLatency1
int missLatency1
Definition: tlb.hh:154
gem5::VegaISA::GpuTLB::MemSidePort::recvAtomic
virtual Tick recvAtomic(PacketPtr pkt)
Definition: tlb.hh:254
gem5::EventFunctionWrapper
Definition: eventq.hh:1136
gem5::VegaISA::GpuTLB::handleTranslationReturn
void handleTranslationReturn(Addr addr, tlbOutcome outcome, PacketPtr pkt)
handleTranslationReturn is called on a TLB hit, when a TLB miss returns or when a page fault returns.
Definition: tlb.cc:451
gem5::VegaISA::GpuTLB::createPagefault
Fault createPagefault(Addr vaddr, Mode mode)
Definition: tlb.cc:136
gem5::VegaISA::GpuTLB::MemSidePort
MemSidePort is the TLB Port closer to the memory side If this is a last level TLB then this port will...
Definition: tlb.hh:240
gem5::VegaISA::GpuTLB::TLBEvent::virtPageAddr
Addr virtPageAddr
Definition: tlb.hh:291
gem5::VegaISA::GpuTLB::VegaTLBStats
Definition: tlb.hh:157
gem5::ResponsePort
A ResponsePort is a specialization of a port.
Definition: port.hh:331
gem5::VegaISA::GpuTLB::CpuSidePort::index
int index
Definition: tlb.hh:222
gem5::VegaISA::GpuTLB::outstandingReqs
int outstandingReqs
Definition: tlb.hh:275
gem5::VegaISA::GpuTLB::TLBEvent::process
void process()
Definition: tlb.cc:630
gem5::VegaISA::GpuTLB::MISS_RETURN
@ MISS_RETURN
Definition: tlb.hh:195
gem5::Port
Ports are used to interface objects to each other.
Definition: port.hh:61
gem5::VegaISA::GpuTLB::MemSidePort::MemSidePort
MemSidePort(const std::string &_name, GpuTLB *gpu_TLB, PortID _index)
Definition: tlb.hh:243
pagetable.hh
gem5::VegaISA::GpuTLB::CpuSidePort::getAddrRanges
virtual AddrRangeList getAddrRanges() const
Get a list of the non-overlapping address ranges the owner is responsible for.
Definition: tlb.cc:892
gem5::VegaISA::GpuTLB::maxCoalescedReqs
int maxCoalescedReqs
Definition: tlb.hh:271
clocked_object.hh
gem5::VegaISA::GpuTLB::pagingProtectionChecks
void pagingProtectionChecks(PacketPtr pkt, VegaTlbEntry *tlb_entry, Mode mode)
Do Paging protection checks.
Definition: tlb.cc:409
gem5::VegaISA::GpuTLB::CpuSidePort::CpuSidePort
CpuSidePort(const std::string &_name, GpuTLB *gpu_TLB, PortID _index)
Definition: tlb.hh:216
std::deque
STL deque class.
Definition: stl.hh:44
gem5::VegaISA::GpuTLB::handleFuncTranslationReturn
void handleFuncTranslationReturn(PacketPtr pkt, tlbOutcome outcome)
handleFuncTranslationReturn is called on a TLB hit, when a TLB miss returns or when a page fault retu...
Definition: tlb.cc:695
gem5::VegaISA::GpuTLB::gpuDevice
AMDGPUDevice * gpuDevice
Definition: tlb.hh:110
gem5::VegaISA::GpuTLB::cleanupEvent
EventFunctionWrapper cleanupEvent
Definition: tlb.hh:320
gem5::statistics::Group
Statistics container.
Definition: group.hh:92
gem5::VegaISA::GpuTLB::memSidePort
std::vector< MemSidePort * > memSidePort
Definition: tlb.hh:263
gem5::VegaISA::GpuTLB::tlb
std::vector< VegaTlbEntry > tlb
Definition: tlb.hh:133
gem5::VegaISA::GpuTLB::serialize
virtual void serialize(CheckpointOut &cp) const override
Serialize an object.
Definition: tlb.cc:295
gem5::CheckpointOut
std::ostream CheckpointOut
Definition: serialize.hh:66
trace.hh
gem5::VegaISA::GpuTLB::unserialize
virtual void unserialize(CheckpointIn &cp) override
Unserialize an object.
Definition: tlb.cc:300
gem5::MipsISA::vaddr
vaddr
Definition: pra_constants.hh:278
gem5::VegaISA::GpuTLB::translationReturn
void translationReturn(Addr virtPageAddr, tlbOutcome outcome, PacketPtr pkt)
A TLBEvent is scheduled after the TLB lookup and helps us take the appropriate actions: (e....
Definition: tlb.cc:548
gem5::VegaISA::GpuTLB::Translation::~Translation
virtual ~Translation()
Definition: tlb.hh:73
std::list
STL list class.
Definition: stl.hh:51
gem5::VegaISA::GpuTLB::MemSidePort::tlb
GpuTLB * tlb
Definition: tlb.hh:250
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: gpu_translation_state.hh:37
gem5::VegaISA::GpuTLB::MemSidePort::recvReqRetry
virtual void recvReqRetry()
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
Definition: tlb.cc:925
gem5::VegaISA::GpuTLB::VegaTLBStats::localNumTLBAccesses
statistics::Scalar localNumTLBAccesses
Definition: tlb.hh:166
gem5::VegaISA::GpuTLB::CpuSidePort::recvAtomic
virtual Tick recvAtomic(PacketPtr pkt)
Receive an atomic request packet from the peer.
Definition: tlb.hh:225
gem5::VegaISA::GpuTLB::CpuSidePort
Definition: tlb.hh:213
gem5::VegaISA::GpuTLB::MemSidePort::recvRangeChange
virtual void recvRangeChange()
Called to receive an address range change from the peer response port.
Definition: tlb.hh:256
gem5::VegaISA::GpuTLB::tlbOutcome
tlbOutcome
Definition: tlb.hh:195
gem5::VegaISA::GpuTLB::invalidateAll
void invalidateAll()
Definition: tlb.cc:224
gem5::VegaISA::GpuTLB::Translation::finish
virtual void finish(Fault fault, const RequestPtr &req, Mode mode)=0
The memory for this object may be dynamically allocated, and it may be responsible for cleaning itsle...
gem5::VegaISA::GpuTLB::walker
Walker * walker
Definition: tlb.hh:109
gem5::VegaISA::GpuTLB::VegaTLBStats::VegaTLBStats
VegaTLBStats(statistics::Group *parent)
Definition: tlb.cc:958
gem5::Named::_name
const std::string _name
Definition: named.hh:41
gem5::VegaISA::Walker
Definition: pagetable_walker.hh:54
gem5::VegaISA::GpuTLB::VegaTLBStats::localTLBMissRate
statistics::Formula localTLBMissRate
Definition: tlb.hh:169
panic
#define panic(...)
This implements a cprintf based panic() function.
Definition: logging.hh:188
gem5::ArmISA::mode
Bitfield< 4, 0 > mode
Definition: misc_types.hh:74
gem5::X86ISA::addr
Bitfield< 3 > addr
Definition: types.hh:84
gem5::VegaISA::GpuTLB::numSets
int numSets
Definition: tlb.hh:114

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