gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
fetch.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010-2012, 2014 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
9  * licensed hereunder. You may use the software subject to the license
10  * terms below provided that you ensure that this notice is replicated
11  * unmodified and in its entirety in all distributions of the software,
12  * modified or unmodified, in source code or in binary form.
13  *
14  * Copyright (c) 2004-2006 The Regents of The University of Michigan
15  * All rights reserved.
16  *
17  * Redistribution and use in source and binary forms, with or without
18  * modification, are permitted provided that the following conditions are
19  * met: redistributions of source code must retain the above copyright
20  * notice, this list of conditions and the following disclaimer;
21  * redistributions in binary form must reproduce the above copyright
22  * notice, this list of conditions and the following disclaimer in the
23  * documentation and/or other materials provided with the distribution;
24  * neither the name of the copyright holders nor the names of its
25  * contributors may be used to endorse or promote products derived from
26  * this software without specific prior written permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  *
40  * Authors: Kevin Lim
41  * Korey Sewell
42  */
43 
44 #ifndef __CPU_O3_FETCH_HH__
45 #define __CPU_O3_FETCH_HH__
46 
47 #include "arch/decoder.hh"
48 #include "arch/utility.hh"
49 #include "base/statistics.hh"
50 #include "config/the_isa.hh"
51 #include "cpu/pc_event.hh"
52 #include "cpu/pred/bpred_unit.hh"
53 #include "cpu/timebuf.hh"
54 #include "cpu/translation.hh"
55 #include "mem/packet.hh"
56 #include "mem/port.hh"
57 #include "sim/eventq.hh"
58 #include "sim/probe/probe.hh"
59 
60 struct DerivO3CPUParams;
61 
70 template <class Impl>
72 {
73  public:
75  typedef typename Impl::CPUPol CPUPol;
76  typedef typename Impl::DynInst DynInst;
77  typedef typename Impl::DynInstPtr DynInstPtr;
78  typedef typename Impl::O3CPU O3CPU;
79 
81  typedef typename CPUPol::FetchStruct FetchStruct;
82  typedef typename CPUPol::TimeStruct TimeStruct;
83 
87 
89  {
90  protected:
92 
93  public:
95  : fetch(_fetch)
96  {}
97 
98  void
100  {}
101 
102  void
103  finish(const Fault &fault, RequestPtr req, ThreadContext *tc,
105  {
106  assert(mode == BaseTLB::Execute);
107  fetch->finishTranslation(fault, req);
108  delete this;
109  }
110  };
111 
112  private:
113  /* Event to delay delivery of a fetch translation result in case of
114  * a fault and the nop to carry the fault cannot be generated
115  * immediately */
117  {
118  private:
122 
123  public:
125  : fetch(_fetch)
126  {}
127 
128  void setFault(Fault _fault)
129  {
130  fault = _fault;
131  }
132 
133  void setReq(RequestPtr _req)
134  {
135  req = _req;
136  }
137 
139  void process()
140  {
141  assert(fetch->numInst < fetch->fetchWidth);
142  fetch->finishTranslation(fault, req);
143  }
144 
145  const char *description() const
146  {
147  return "FullO3CPU FetchFinishTranslation";
148  }
149  };
150 
151  public:
155  enum FetchStatus {
158  };
159 
174  };
175 
181  IQ,
183  };
184 
185  private:
188 
190  ThreadStatus fetchStatus[Impl::MaxThreads];
191 
194 
197 
202 
203  public:
205  DefaultFetch(O3CPU *_cpu, DerivO3CPUParams *params);
206 
208  std::string name() const;
209 
211  void regStats();
212 
214  void regProbePoints();
215 
217  void setTimeBuffer(TimeBuffer<TimeStruct> *time_buffer);
218 
221 
224 
226  void startupStage();
227 
229  void recvReqRetry();
230 
233 
235  void drainResume();
236 
238  void drainSanityCheck() const;
239 
241  bool isDrained() const;
242 
244  void takeOverFrom();
245 
255  void drainStall(ThreadID tid);
256 
258  void wakeFromQuiesce();
259 
261  void deactivateThread(ThreadID tid);
262  private:
264  void resetStage();
265 
269  inline void switchToActive();
270 
274  inline void switchToInactive();
275 
286 
298  bool fetchCacheLine(Addr vaddr, ThreadID tid, Addr pc);
299  void finishTranslation(const Fault &fault, RequestPtr mem_req);
300 
301 
304  bool
306  {
307  return (interruptPending && (THE_ISA != ALPHA_ISA || !(pc & 0x3)));
308  }
309 
311  inline void doSquash(const TheISA::PCState &newPC,
312  const DynInstPtr squashInst, ThreadID tid);
313 
317  void squashFromDecode(const TheISA::PCState &newPC,
318  const DynInstPtr squashInst,
319  const InstSeqNum seq_num, ThreadID tid);
320 
322  bool checkStall(ThreadID tid) const;
323 
327 
328  public:
333  void squash(const TheISA::PCState &newPC, const InstSeqNum seq_num,
334  DynInstPtr squashInst, ThreadID tid);
335 
339  void tick();
340 
345 
351  void fetch(bool &status_change);
352 
355  {
356  return (addr & ~(fetchBufferMask));
357  }
358 
360  TheISA::Decoder *decoder[Impl::MaxThreads];
361 
362  private:
363  DynInstPtr buildInst(ThreadID tid, StaticInstPtr staticInst,
364  StaticInstPtr curMacroop, TheISA::PCState thisPC,
365  TheISA::PCState nextPC, bool trace);
366 
368  ThreadID getFetchingThread(FetchPriority &fetch_priority);
369 
372 
374  ThreadID iqCount();
375 
377  ThreadID lsqCount();
378 
382 
385 
387  void profileStall(ThreadID tid);
388 
389  private:
392 
395 
398 
401 
404 
407 
408  //Might be annoying how this name is different than the queue.
411 
414 
415  TheISA::PCState pc[Impl::MaxThreads];
416 
417  Addr fetchOffset[Impl::MaxThreads];
418 
419  StaticInstPtr macroop[Impl::MaxThreads];
420 
422  bool delayedCommit[Impl::MaxThreads];
423 
425  RequestPtr memReq[Impl::MaxThreads];
426 
431 
433  int numInst;
434 
436  struct Stalls {
437  bool decode;
438  bool drain;
439  };
440 
442  Stalls stalls[Impl::MaxThreads];
443 
446 
449 
452 
455 
457  unsigned fetchWidth;
458 
460  unsigned decodeWidth;
461 
464 
467 
470 
472  unsigned int cacheBlkSize;
473 
477  unsigned fetchBufferSize;
478 
481 
483  uint8_t *fetchBuffer[Impl::MaxThreads];
484 
486  Addr fetchBufferPC[Impl::MaxThreads];
487 
489  unsigned fetchQueueSize;
490 
493 
495  bool fetchBufferValid[Impl::MaxThreads];
496 
498  int instSize;
499 
501  Counter lastIcacheStall[Impl::MaxThreads];
502 
505 
508 
511 
514 
519 
521  bool issuePipelinedIfetch[Impl::MaxThreads];
522 
525 
526  // @todo: Consider making these vectors and tracking on a per thread basis.
577 };
578 
579 #endif //__CPU_O3_FETCH_HH__
Impl::O3CPU O3CPU
Definition: fetch.hh:78
Stats::Formula fetchRate
Number of instruction fetched per cycle.
Definition: fetch.hh:576
Impl::DynInst DynInst
Definition: fetch.hh:76
Addr fetchBufferMask
Mask to align a fetch address to a fetch buffer boundary.
Definition: fetch.hh:480
unsigned fetchWidth
The width of fetch in instructions.
Definition: fetch.hh:457
ThreadID iqCount()
Returns the appropriate thread to fetch using the IQ count policy.
Definition: fetch_impl.hh:1529
void profileStall(ThreadID tid)
Profile the reasons of fetch stall.
Definition: fetch_impl.hh:1646
TheISA::ExtMachInst ExtMachInst
Definition: fetch.hh:86
TheISA::Decoder * decoder[Impl::MaxThreads]
The decoder.
Definition: fetch.hh:360
Cycles is a wrapper class for representing cycle counts, i.e.
Definition: types.hh:83
Stats::Formula idleRate
Rate of how often fetch was idle.
Definition: fetch.hh:572
void tick()
Ticks the fetch stage, processing all inputs signals and fetching as many instructions as possible...
Definition: fetch_impl.hh:889
FetchPriority fetchPolicy
Fetch policy.
Definition: fetch.hh:193
void resetStage()
Reset this pipeline stage.
Definition: fetch_impl.hh:344
void squashFromDecode(const TheISA::PCState &newPC, const DynInstPtr squashInst, const InstSeqNum seq_num, ThreadID tid)
Squashes a specific thread and resets the PC.
Definition: fetch_impl.hh:805
FetchPriority
Fetching Policy, Add new policies here.
Definition: fetch.hh:177
TimeBuffer< TimeStruct >::wire fromRename
Wire to get rename's information from backwards time buffer.
Definition: fetch.hh:400
void pipelineIcacheAccesses(ThreadID tid)
Pipeline the next I-cache access to the current one.
Definition: fetch_impl.hh:1616
void drainSanityCheck() const
Perform sanity checks after a drain.
Definition: fetch_impl.hh:435
Addr fetchBufferPC[Impl::MaxThreads]
The PC of the first instruction loaded into the fetch buffer.
Definition: fetch.hh:486
bool checkInterrupt(Addr pc)
Check if an interrupt is pending and that we need to handle.
Definition: fetch.hh:305
FetchStatus _status
Fetch status.
Definition: fetch.hh:187
Impl::DynInstPtr DynInstPtr
Definition: fetch.hh:77
Stats::Scalar fetchPendingTrapStallCycles
Total number of stall cycles caused by pending traps.
Definition: fetch.hh:554
ip6_addr_t addr
Definition: inet.hh:335
TimeBuffer< FetchStruct >::wire toDecode
Wire used to write any information heading to decode.
Definition: fetch.hh:410
bool lookupAndUpdateNextPC(DynInstPtr &inst, TheISA::PCState &pc)
Looks up in the branch predictor to see if the next PC should be either next PC+=MachInst or a branch...
Definition: fetch_impl.hh:550
int numInst
Tracks how many instructions has been fetched this cycle.
Definition: fetch.hh:433
void processCacheCompletion(PacketPtr pkt)
Processes cache completion event.
Definition: fetch_impl.hh:379
Stats::Scalar fetchMiscStallCycles
Total number of cycles spent in any other state.
Definition: fetch.hh:548
Stats::Scalar fetchIdleCycles
Stat for total number of cycles spent blocked due to other stages in the pipeline.
Definition: fetch.hh:544
Port Object Declaration.
FinishTranslationEvent(DefaultFetch< Impl > *_fetch)
Definition: fetch.hh:124
Stats::Formula branchRate
Number of branch fetches per cycle.
Definition: fetch.hh:574
unsigned fetchQueueSize
The size of the fetch queue in micro-ops.
Definition: fetch.hh:489
Stats::Scalar fetchTlbSquashes
Total number of outstanding tlb accesses that were dropped due to a squash.
Definition: fetch.hh:568
TimeBuffer< TimeStruct >::wire fromDecode
Wire to get decode's information from backwards time buffer.
Definition: fetch.hh:397
Stats::Scalar icacheStallCycles
Stat for total number of cycles stalled due to an icache miss.
Definition: fetch.hh:528
Bitfield< 4, 0 > mode
Definition: miscregs.hh:1385
Definition: lsq.hh:58
ThreadContext is the external interface to all thread state for anything outside of the CPU...
Declaration of Statistics objects.
bool issuePipelinedIfetch[Impl::MaxThreads]
Set to true if a pipelined I-cache request should be issued.
Definition: fetch.hh:521
ThreadID numThreads
Number of threads.
Definition: fetch.hh:507
This is a simple scalar statistic, like a counter.
Definition: statistics.hh:2475
CPUPol::TimeStruct TimeStruct
Definition: fetch.hh:82
DefaultFetch< Impl > * fetch
Definition: fetch.hh:119
Stats::Scalar fetchedInsts
Stat for total number of fetched instructions.
Definition: fetch.hh:530
Stats::Scalar fetchNoActiveThreadStallCycles
Total number of stall cycles caused by no active threads to run.
Definition: fetch.hh:552
uint32_t MachInst
Definition: types.hh:40
FetchStatus
Overall fetch status.
Definition: fetch.hh:155
Stats::Distribution fetchNisnDist
Distribution of number of instructions fetched each cycle.
Definition: fetch.hh:570
void deactivateThread(ThreadID tid)
For priority-based fetch policies, need to keep update priorityList.
Definition: fetch_impl.hh:539
Stats::Scalar fetchPendingDrainCycles
Total number of cycles spent in waiting for drains.
Definition: fetch.hh:550
TheISA::MachInst MachInst
Typedefs from ISA.
Definition: fetch.hh:85
PacketPtr retryPkt
The packet that is waiting to be retried.
Definition: fetch.hh:466
ThreadID numFetchingThreads
Number of threads that are actively fetching.
Definition: fetch.hh:510
Cycles iewToFetchDelay
IEW to fetch delay.
Definition: fetch.hh:451
void takeOverFrom()
Takes over from another CPU's thread.
Definition: fetch_impl.hh:484
void process()
Process the delayed finish translation.
Definition: fetch.hh:139
void drainStall(ThreadID tid)
Stall the fetch stage after reaching a safe drain point.
Definition: fetch_impl.hh:493
ThreadID getFetchingThread(FetchPriority &fetch_priority)
Returns the appropriate thread to fetch, given the fetch policy.
Definition: fetch_impl.hh:1455
Stats::Scalar fetchCycles
Stat for total number of cycles spent fetching.
Definition: fetch.hh:536
ThreadID threadFetched
Thread ID being fetched.
Definition: fetch.hh:513
const char * description() const
Return a C string describing the event.
Definition: fetch.hh:145
void regStats()
Registers statistics.
Definition: fetch_impl.hh:181
Addr fetchOffset[Impl::MaxThreads]
Definition: fetch.hh:417
bool isDrained() const
Has the stage drained?
Definition: fetch_impl.hh:453
ThreadID roundRobin()
Returns the appropriate thread to fetch using a round robin policy.
Definition: fetch_impl.hh:1499
void switchToActive()
Changes the status of this stage to active, and indicates this to the CPU.
Definition: fetch_impl.hh:513
DefaultFetch class handles both single threaded and SMT fetch.
Definition: fetch.hh:71
A simple distribution stat.
Definition: statistics.hh:2523
int instSize
Size of instructions.
Definition: fetch.hh:498
bool checkStall(ThreadID tid) const
Checks if a thread is stalled.
Definition: fetch_impl.hh:820
void fetch(bool &status_change)
Does the actual fetching of instructions and passing them on to the next stage.
Definition: fetch_impl.hh:1150
Stats::Scalar fetchTlbCycles
Stat for total number of cycles spent waiting for translation.
Definition: fetch.hh:540
void finishTranslation(const Fault &fault, RequestPtr mem_req)
Definition: fetch_impl.hh:643
RequestPtr memReq[Impl::MaxThreads]
Memory request used to access cache.
Definition: fetch.hh:425
bool fetchCacheLine(Addr vaddr, ThreadID tid, Addr pc)
Fetches the cache line that contains the fetch PC.
Definition: fetch_impl.hh:593
void recvReqRetry()
Handles retrying the fetch access.
Definition: fetch_impl.hh:1424
void finish(const Fault &fault, RequestPtr req, ThreadContext *tc, BaseTLB::Mode mode)
Definition: fetch.hh:103
DefaultFetch(O3CPU *_cpu, DerivO3CPUParams *params)
DefaultFetch constructor.
Definition: fetch_impl.hh:81
uint64_t InstSeqNum
Definition: inst_seq.hh:40
ThreadID retryTid
The thread that is waiting on the cache to tell fetch to retry.
Definition: fetch.hh:469
Stats::Scalar predictedBranches
Stat for total number of predicted branches.
Definition: fetch.hh:534
void setActiveThreads(std::list< ThreadID > *at_ptr)
Sets pointer to list of active threads.
Definition: fetch_impl.hh:317
std::list< ThreadID > * activeThreads
List of Active Threads.
Definition: fetch.hh:504
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
uint64_t ExtMachInst
Definition: types.hh:41
void regProbePoints()
Registers probes.
Definition: fetch_impl.hh:171
TimeBuffer< TimeStruct >::wire fromCommit
Wire to get commit's information from backwards time buffer.
Definition: fetch.hh:406
Stats::Scalar fetchIcacheWaitRetryStallCycles
Total number of stall cycles caused by I-cache wait retrys.
Definition: fetch.hh:558
int64_t Counter
Statistics counter type.
Definition: types.hh:58
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
Definition: packet.hh:245
uint8_t * fetchBuffer[Impl::MaxThreads]
The fetch data that is being fetched and buffered.
Definition: fetch.hh:483
std::deque< DynInstPtr > fetchQueue[Impl::MaxThreads]
Queue of fetched instructions.
Definition: fetch.hh:492
Impl::CPUPol CPUPol
Typedefs from Impl.
Definition: fetch.hh:75
Stats::Scalar fetchIcacheSquashes
Total number of outstanding icache accesses that were dropped due to a squash.
Definition: fetch.hh:564
bool interruptPending
Checks if there is an interrupt pending.
Definition: fetch.hh:518
ThreadID branchCount()
Returns the appropriate thread to fetch using the branch count policy.
Definition: fetch_impl.hh:1602
unsigned decodeWidth
The width of decode in instructions.
Definition: fetch.hh:460
TheISA::PCState pc[Impl::MaxThreads]
Definition: fetch.hh:415
Counter lastIcacheStall[Impl::MaxThreads]
Icache stall statistics.
Definition: fetch.hh:501
A formula for statistics that is calculated when printed.
Definition: statistics.hh:2895
Mode
Definition: tlb.hh:61
Basically a wrapper class to hold both the branch predictor and the BTB.
Definition: bpred_unit.hh:67
FinishTranslationEvent finishTranslationEvent
Event used to delay fault generation of translation faults.
Definition: fetch.hh:524
Stats::Scalar fetchPendingQuiesceStallCycles
Total number of stall cycles caused by pending quiesce instructions.
Definition: fetch.hh:556
int16_t ThreadID
Thread index/ID type.
Definition: types.hh:171
void setTimeBuffer(TimeBuffer< TimeStruct > *time_buffer)
Sets the main backwards communication time buffer pointer.
Definition: fetch_impl.hh:304
void setFetchQueue(TimeBuffer< FetchStruct > *fq_ptr)
Sets pointer to time buffer used to communicate to the next stage.
Definition: fetch_impl.hh:324
Addr fetchBufferAlignPC(Addr addr)
Align a PC to the start of a fetch buffer block.
Definition: fetch.hh:354
ThreadStatus fetchStatus[Impl::MaxThreads]
Per-thread status.
Definition: fetch.hh:190
Declaration of the Packet class.
Stalls stalls[Impl::MaxThreads]
Tracks which stages are telling fetch to stall.
Definition: fetch.hh:442
O3CPU * cpu
Pointer to the O3CPU.
Definition: fetch.hh:391
bool cacheBlocked
Is the cache blocked? If so no threads can access it.
Definition: fetch.hh:463
Definition: eventq.hh:185
FetchTranslation(DefaultFetch< Impl > *_fetch)
Definition: fetch.hh:94
GenericISA::SimplePCState< MachInst > PCState
Definition: types.hh:43
FetchStatus updateFetchStatus()
Updates overall fetch stage status; to be called at the end of each cycle.
Definition: fetch_impl.hh:835
Cycles decodeToFetchDelay
Decode to fetch delay.
Definition: fetch.hh:445
Cycles commitToFetchDelay
Commit to fetch delay.
Definition: fetch.hh:454
void switchToInactive()
Changes the status of this stage to inactive, and indicates this to the CPU.
Definition: fetch_impl.hh:526
void startupStage()
Initialize stage.
Definition: fetch_impl.hh:332
ProbePointArg< RequestPtr > * ppFetchRequestSent
To probe when a fetch request is successfully sent.
Definition: fetch.hh:201
ProbePointArg< DynInstPtr > * ppFetch
Probe points.
Definition: fetch.hh:199
CPUPol::FetchStruct FetchStruct
Typedefs from the CPU policy.
Definition: fetch.hh:81
void setFault(Fault _fault)
Definition: fetch.hh:128
Stats::Scalar fetchSquashCycles
Stat for total number of cycles spent squashing.
Definition: fetch.hh:538
void squash(const TheISA::PCState &newPC, const InstSeqNum seq_num, DynInstPtr squashInst, ThreadID tid)
Squashes a specific thread and resets the PC.
Definition: fetch_impl.hh:875
unsigned fetchBufferSize
The size of the fetch buffer in bytes.
Definition: fetch.hh:477
ThreadID lsqCount()
Returns the appropriate thread to fetch using the LSQ count policy.
Definition: fetch_impl.hh:1566
Cycles renameToFetchDelay
Rename to fetch delay.
Definition: fetch.hh:448
Source of possible stalls.
Definition: fetch.hh:436
void wakeFromQuiesce()
Tells fetch to wake up from a quiesce instruction.
Definition: fetch_impl.hh:503
Stats::Scalar fetchBlockedCycles
Total number of cycles spent blocked.
Definition: fetch.hh:546
ThreadStatus
Individual thread status.
Definition: fetch.hh:161
Stats::Scalar fetchedCacheLines
Stat for total number of fetched cache lines.
Definition: fetch.hh:560
void drainResume()
Resume after a drain.
Definition: fetch_impl.hh:425
std::list< ThreadID > priorityList
List that has the threads organized by priority.
Definition: fetch.hh:196
bool checkSignalsAndUpdate(ThreadID tid)
Checks all input signals and updates the status as necessary.
Definition: fetch_impl.hh:991
std::string name() const
Returns the name of fetch.
Definition: fetch_impl.hh:164
StaticInstPtr macroop[Impl::MaxThreads]
Definition: fetch.hh:419
bool delayedCommit[Impl::MaxThreads]
Can the fetch stage redirect from an interrupt on this instruction?
Definition: fetch.hh:422
void setReq(RequestPtr _req)
Definition: fetch.hh:133
Stats::Scalar fetchedBranches
Total number of fetched branches.
Definition: fetch.hh:532
DynInstPtr buildInst(ThreadID tid, StaticInstPtr staticInst, StaticInstPtr curMacroop, TheISA::PCState thisPC, TheISA::PCState nextPC, bool trace)
Definition: fetch_impl.hh:1096
std::shared_ptr< FaultBase > Fault
Definition: types.hh:184
BPredUnit * branchPred
BPredUnit.
Definition: fetch.hh:413
TimeBuffer< TimeStruct > * timeBuffer
Time buffer interface.
Definition: fetch.hh:394
bool wroteToTimeBuffer
Variable that tracks if fetch has written to the time buffer this cycle.
Definition: fetch.hh:430
void doSquash(const TheISA::PCState &newPC, const DynInstPtr squashInst, ThreadID tid)
Squashes a specific thread and resets the PC.
Definition: fetch_impl.hh:752
DefaultFetch< Impl > * fetch
Definition: fetch.hh:91
unsigned int cacheBlkSize
Cache block size.
Definition: fetch.hh:472
bool fetchBufferValid[Impl::MaxThreads]
Whether or not the fetch buffer data is valid.
Definition: fetch.hh:495
void markDelayed()
Signal that the translation has been delayed due to a hw page table walk.
Definition: fetch.hh:99
TimeBuffer< TimeStruct >::wire fromIEW
Wire to get iew's information from backwards time buffer.
Definition: fetch.hh:403

Generated on Fri Jun 9 2017 13:03:43 for gem5 by doxygen 1.8.6