gem5  v20.1.0.0
cpu.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2013, 2016-2020 ARM Limited
3  * Copyright (c) 2013 Advanced Micro Devices, Inc.
4  * All rights reserved
5  *
6  * The license below extends only to copyright in the software and shall
7  * not be construed as granting a license to any other intellectual
8  * property including but not limited to intellectual property relating
9  * to a hardware implementation of the functionality of the software
10  * licensed hereunder. You may use the software subject to the license
11  * terms below provided that you ensure that this notice is replicated
12  * unmodified and in its entirety in all distributions of the software,
13  * modified or unmodified, in source code or in binary form.
14  *
15  * Copyright (c) 2004-2005 The Regents of The University of Michigan
16  * Copyright (c) 2011 Regents of the University of California
17  * All rights reserved.
18  *
19  * Redistribution and use in source and binary forms, with or without
20  * modification, are permitted provided that the following conditions are
21  * met: redistributions of source code must retain the above copyright
22  * notice, this list of conditions and the following disclaimer;
23  * redistributions in binary form must reproduce the above copyright
24  * notice, this list of conditions and the following disclaimer in the
25  * documentation and/or other materials provided with the distribution;
26  * neither the name of the copyright holders nor the names of its
27  * contributors may be used to endorse or promote products derived from
28  * this software without specific prior written permission.
29  *
30  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
31  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
32  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
33  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
34  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
35  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
36  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
37  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
38  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
39  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
40  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41  */
42 
43 #ifndef __CPU_O3_CPU_HH__
44 #define __CPU_O3_CPU_HH__
45 
46 #include <iostream>
47 #include <list>
48 #include <queue>
49 #include <set>
50 #include <vector>
51 
52 #include "arch/generic/types.hh"
53 #include "arch/types.hh"
54 #include "base/statistics.hh"
55 #include "config/the_isa.hh"
56 #include "cpu/o3/comm.hh"
57 #include "cpu/o3/cpu_policy.hh"
58 #include "cpu/o3/scoreboard.hh"
59 #include "cpu/o3/thread_state.hh"
60 #include "cpu/activity.hh"
61 #include "cpu/base.hh"
62 #include "cpu/simple_thread.hh"
63 #include "cpu/timebuf.hh"
64 #include "params/DerivO3CPU.hh"
65 #include "sim/process.hh"
66 
67 template <class>
68 class Checker;
69 class ThreadContext;
70 template <class>
72 
73 class Checkpoint;
74 class Process;
75 
76 struct BaseCPUParams;
77 
78 class BaseO3CPU : public BaseCPU
79 {
80  //Stuff that's pretty ISA independent will go here.
81  public:
82  BaseO3CPU(BaseCPUParams *params);
83 
84  void regStats();
85 };
86 
92 template <class Impl>
93 class FullO3CPU : public BaseO3CPU
94 {
95  public:
96  // Typedefs from the Impl here.
97  typedef typename Impl::CPUPol CPUPolicy;
98  typedef typename Impl::DynInstPtr DynInstPtr;
99  typedef typename Impl::O3CPU O3CPU;
100 
103 
105 
108 
110 
111  friend class O3ThreadContext<Impl>;
112 
113  public:
114  enum Status {
120  };
121 
125 
128 
129  private:
130 
133 
136 
139  {
140  if (tickEvent.squashed())
141  reschedule(tickEvent, clockEdge(delay));
142  else if (!tickEvent.scheduled())
143  schedule(tickEvent, clockEdge(delay));
144  }
145 
148  {
149  if (tickEvent.scheduled())
150  tickEvent.squash();
151  }
152 
164  bool tryDrain();
165 
175  void drainSanityCheck() const;
176 
178  bool isCpuDrained() const;
179 
180  public:
182  FullO3CPU(DerivO3CPUParams *params);
184  ~FullO3CPU();
185 
187  void regStats() override;
188 
191 
193  void regProbePoints() override;
194 
195  void demapPage(Addr vaddr, uint64_t asn)
196  {
197  this->itb->demapPage(vaddr, asn);
198  this->dtb->demapPage(vaddr, asn);
199  }
200 
201  void demapInstPage(Addr vaddr, uint64_t asn)
202  {
203  this->itb->demapPage(vaddr, asn);
204  }
205 
206  void demapDataPage(Addr vaddr, uint64_t asn)
207  {
208  this->dtb->demapPage(vaddr, asn);
209  }
210 
214  void tick();
215 
217  void init() override;
218 
219  void startup() override;
220 
223  { return activeThreads.size(); }
224 
226  void activateThread(ThreadID tid);
227 
229  void deactivateThread(ThreadID tid);
230 
232  void insertThread(ThreadID tid);
233 
235  void removeThread(ThreadID tid);
236 
238  Counter totalInsts() const override;
239 
241  Counter totalOps() const override;
242 
244  void activateContext(ThreadID tid) override;
245 
247  void suspendContext(ThreadID tid) override;
248 
252  void haltContext(ThreadID tid) override;
253 
255  void updateThreadPriority();
256 
258  bool isDraining() const { return drainState() == DrainState::Draining; }
259 
260  void serializeThread(CheckpointOut &cp, ThreadID tid) const override;
261  void unserializeThread(CheckpointIn &cp, ThreadID tid) override;
262 
265 
267  bool isThreadExiting(ThreadID tid) const;
268 
274 
276  void exitThreads();
277 
278  public:
282  void syscall(ThreadID tid);
283 
286  DrainState drain() override;
287 
289  void drainResume() override;
290 
298  void commitDrained(ThreadID tid);
299 
301  void switchOut() override;
302 
304  void takeOverFrom(BaseCPU *oldCPU) override;
305 
306  void verifyMemoryMode() const override;
307 
310  { return globalSeqNum++; }
311 
313  void trap(const Fault &fault, ThreadID tid, const StaticInstPtr &inst);
314 
319  void setVectorsAsReady(ThreadID tid);
320 
327  void switchRenameMode(ThreadID tid, UnifiedFreeList* freelist);
328 
331 
333  void processInterrupts(const Fault &interrupt);
334 
336  void halt() { panic("Halt not implemented!\n"); }
337 
341  RegVal readMiscRegNoEffect(int misc_reg, ThreadID tid) const;
342 
346  RegVal readMiscReg(int misc_reg, ThreadID tid);
347 
349  void setMiscRegNoEffect(int misc_reg, RegVal val, ThreadID tid);
350 
354  void setMiscReg(int misc_reg, RegVal val, ThreadID tid);
355 
356  RegVal readIntReg(PhysRegIdPtr phys_reg);
357 
358  RegVal readFloatReg(PhysRegIdPtr phys_reg);
359 
360  const VecRegContainer& readVecReg(PhysRegIdPtr reg_idx) const;
361 
366 
368  Enums::VecRegRenameMode vecRenameMode() const { return vecMode; }
369 
371  void vecRenameMode(Enums::VecRegRenameMode vec_mode)
372  { vecMode = vec_mode; }
373 
377  template<typename VecElem, int LaneIdx>
379  readVecLane(PhysRegIdPtr phys_reg) const
380  {
381  vecRegfileReads++;
382  return regFile.readVecLane<VecElem, LaneIdx>(phys_reg);
383  }
384 
388  template<typename VecElem>
390  readVecLane(PhysRegIdPtr phys_reg) const
391  {
392  vecRegfileReads++;
393  return regFile.readVecLane<VecElem>(phys_reg);
394  }
395 
397  template<typename LD>
398  void
399  setVecLane(PhysRegIdPtr phys_reg, const LD& val)
400  {
402  return regFile.setVecLane(phys_reg, val);
403  }
404 
405  const VecElem& readVecElem(PhysRegIdPtr reg_idx) const;
406 
407  const VecPredRegContainer& readVecPredReg(PhysRegIdPtr reg_idx) const;
408 
410 
411  RegVal readCCReg(PhysRegIdPtr phys_reg);
412 
413  void setIntReg(PhysRegIdPtr phys_reg, RegVal val);
414 
415  void setFloatReg(PhysRegIdPtr phys_reg, RegVal val);
416 
417  void setVecReg(PhysRegIdPtr reg_idx, const VecRegContainer& val);
418 
419  void setVecElem(PhysRegIdPtr reg_idx, const VecElem& val);
420 
421  void setVecPredReg(PhysRegIdPtr reg_idx, const VecPredRegContainer& val);
422 
423  void setCCReg(PhysRegIdPtr phys_reg, RegVal val);
424 
425  RegVal readArchIntReg(int reg_idx, ThreadID tid);
426 
427  RegVal readArchFloatReg(int reg_idx, ThreadID tid);
428 
429  const VecRegContainer& readArchVecReg(int reg_idx, ThreadID tid) const;
432 
434  template<typename VecElem>
436  readArchVecLane(int reg_idx, int lId, ThreadID tid) const
437  {
438  PhysRegIdPtr phys_reg = commitRenameMap[tid].lookup(
439  RegId(VecRegClass, reg_idx));
440  return readVecLane<VecElem>(phys_reg);
441  }
442 
443 
445  template<typename LD>
446  void
447  setArchVecLane(int reg_idx, int lId, ThreadID tid, const LD& val)
448  {
449  PhysRegIdPtr phys_reg = commitRenameMap[tid].lookup(
450  RegId(VecRegClass, reg_idx));
451  setVecLane(phys_reg, val);
452  }
453 
454  const VecElem& readArchVecElem(const RegIndex& reg_idx,
455  const ElemIndex& ldx, ThreadID tid) const;
456 
457  const VecPredRegContainer& readArchVecPredReg(int reg_idx,
458  ThreadID tid) const;
459 
461 
462  RegVal readArchCCReg(int reg_idx, ThreadID tid);
463 
469  void setArchIntReg(int reg_idx, RegVal val, ThreadID tid);
470 
471  void setArchFloatReg(int reg_idx, RegVal val, ThreadID tid);
472 
473  void setArchVecPredReg(int reg_idx, const VecPredRegContainer& val,
474  ThreadID tid);
475 
476  void setArchVecReg(int reg_idx, const VecRegContainer& val, ThreadID tid);
477 
478  void setArchVecElem(const RegIndex& reg_idx, const ElemIndex& ldx,
479  const VecElem& val, ThreadID tid);
480 
481  void setArchCCReg(int reg_idx, RegVal val, ThreadID tid);
482 
484  void pcState(const TheISA::PCState &newPCState, ThreadID tid);
485 
488 
490  Addr instAddr(ThreadID tid);
491 
493  MicroPC microPC(ThreadID tid);
494 
497 
502  void squashFromTC(ThreadID tid);
503 
507  ListIt addInst(const DynInstPtr &inst);
508 
510  void instDone(ThreadID tid, const DynInstPtr &inst);
511 
515  void removeFrontInst(const DynInstPtr &inst);
516 
519  void removeInstsNotInROB(ThreadID tid);
520 
522  void removeInstsUntil(const InstSeqNum &seq_num, ThreadID tid);
523 
525  inline void squashInstIt(const ListIt &instIt, ThreadID tid);
526 
528  void cleanUpRemovedInsts();
529 
531  void dumpInsts();
532 
533  public:
534 #ifndef NDEBUG
535 
537 #endif
538 
541 
545  std::queue<ListIt> removeList;
546 
547 #ifdef DEBUG
548 
551  std::set<InstSeqNum> snList;
552 #endif
553 
558 
559  protected:
561  typename CPUPolicy::Fetch fetch;
562 
564  typename CPUPolicy::Decode decode;
565 
567  typename CPUPolicy::Rename rename;
568 
570  typename CPUPolicy::IEW iew;
571 
573  typename CPUPolicy::Commit commit;
574 
576  Enums::VecRegRenameMode vecMode;
577 
580 
582  typename CPUPolicy::FreeList freeList;
583 
585  typename CPUPolicy::RenameMap renameMap[Impl::MaxThreads];
586 
588  typename CPUPolicy::RenameMap commitRenameMap[Impl::MaxThreads];
589 
591  typename CPUPolicy::ROB rob;
592 
595 
601  std::unordered_map<ThreadID, bool> exitingThreads;
602 
605 
607 
608  public:
613  enum StageIdx {
620 
624  typedef typename CPUPolicy::TimeStruct TimeStruct;
625 
626  typedef typename CPUPolicy::FetchStruct FetchStruct;
627 
628  typedef typename CPUPolicy::DecodeStruct DecodeStruct;
629 
630  typedef typename CPUPolicy::RenameStruct RenameStruct;
631 
632  typedef typename CPUPolicy::IEWStruct IEWStruct;
633 
636 
639 
642 
645 
648 
649  private:
655 
656  public:
659 
661  void activateStage(const StageIdx idx)
662  { activityRec.activateStage(idx); }
663 
665  void deactivateStage(const StageIdx idx)
666  { activityRec.deactivateStage(idx); }
667 
669  void wakeCPU();
670 
671  virtual void wakeup(ThreadID tid) override;
672 
675 
676  public:
678  ThreadContext *
680  {
681  return thread[tid]->getTC();
682  }
683 
685  InstSeqNum globalSeqNum;//[Impl::MaxThreads];
686 
692 
695 
698 
701 
704 
707 
709  std::map<ThreadID, unsigned> threadMap;
710 
713 
715  Fault pushRequest(const DynInstPtr& inst, bool isLoad, uint8_t *data,
716  unsigned int size, Addr addr, Request::Flags flags,
717  uint64_t *res, AtomicOpFunctorPtr amo_op = nullptr,
718  const std::vector<bool>& byte_enable =
720 
721  {
722  return iew.ldstQueue.pushRequest(inst, isLoad, data, size, addr,
723  flags, res, std::move(amo_op), byte_enable);
724  }
725 
727  Fault read(LSQRequest* req, int load_idx)
728  {
729  return this->iew.ldstQueue.read(req, load_idx);
730  }
731 
733  Fault write(LSQRequest* req, uint8_t *data, int store_idx)
734  {
735  return this->iew.ldstQueue.write(req, data, store_idx);
736  }
737 
739  Port &
740  getInstPort() override
741  {
742  return this->fetch.getInstPort();
743  }
744 
746  Port &
747  getDataPort() override
748  {
749  return this->iew.ldstQueue.getDataPort();
750  }
751 
771 
772  //number of integer register file accesses
775  //number of float register file accesses
778  //number of vector register file accesses
781  //number of predicate register file accesses
784  //number of CC register file accesses
787  //number of misc
790 
791  public:
792  // hardware transactional memory
793  void htmSendAbortSignal(ThreadID tid, uint64_t htm_uid,
794  HtmFailureFaultCause cause);
795 };
796 
797 #endif // __CPU_O3_CPU_HH__
FullO3CPU::wakeup
virtual void wakeup(ThreadID tid) override
Definition: cpu.cc:1716
AtomicOpFunctorPtr
std::unique_ptr< AtomicOpFunctor > AtomicOpFunctorPtr
Definition: amo.hh:239
FullO3CPU::takeOverFrom
void takeOverFrom(BaseCPU *oldCPU) override
Takes over from another CPU.
Definition: cpu.cc:1133
Event::scheduled
bool scheduled() const
Determine if the current event is scheduled.
Definition: eventq.hh:460
FullO3CPU::setArchFloatReg
void setArchFloatReg(int reg_idx, RegVal val, ThreadID tid)
Definition: cpu.cc:1406
FullO3CPU
FullO3CPU class, has each of the stages (fetch through commit) within it, as well as all of the time ...
Definition: cpu.hh:93
FullO3CPU::deactivateStage
void deactivateStage(const StageIdx idx)
Changes a stage's status to inactive within the activity recorder.
Definition: cpu.hh:665
FullO3CPU::getInstPort
Port & getInstPort() override
Used by the fetch unit to get a hold of the instruction port.
Definition: cpu.hh:740
FullO3CPU::deactivateThread
void deactivateThread(ThreadID tid)
Remove Thread from Active Threads List.
Definition: cpu.cc:620
FullO3CPU::getInterrupts
Fault getInterrupts()
Returns the Fault for any valid interrupt.
Definition: cpu.cc:883
PhysRegFile::readVecLane
VecLaneT< VecElem, true > readVecLane(PhysRegIdPtr phys_reg) const
Reads a vector register lane.
Definition: regfile.hh:227
FullO3CPU::readArchVecElem
const VecElem & readArchVecElem(const RegIndex &reg_idx, const ElemIndex &ldx, ThreadID tid) const
Definition: cpu.cc:1354
FullO3CPU::regProbePoints
void regProbePoints() override
Register probe points.
Definition: cpu.cc:366
FullO3CPU::timeBuffer
TimeBuffer< TimeStruct > timeBuffer
The main time buffer to do backwards communication.
Definition: cpu.hh:635
FullO3CPU::rob
CPUPolicy::ROB rob
The re-order buffer.
Definition: cpu.hh:591
FullO3CPU::commitRenameMap
CPUPolicy::RenameMap commitRenameMap[Impl::MaxThreads]
The commit rename map.
Definition: cpu.hh:588
FullO3CPU::rename
CPUPolicy::Rename rename
The dispatch stage.
Definition: cpu.hh:567
FullO3CPU< O3CPUImpl >::Status
Status
Definition: cpu.hh:114
FullO3CPU::vecRegfileReads
Stats::Scalar vecRegfileReads
Definition: cpu.hh:779
FullO3CPU::updateThreadPriority
void updateThreadPriority()
Update The Order In Which We Process Threads.
Definition: cpu.cc:1743
ActivityRecorder
ActivityRecorder helper class that informs the CPU if it can switch over to being idle or not.
Definition: activity.hh:50
FullO3CPU::RenameStruct
CPUPolicy::RenameStruct RenameStruct
Definition: cpu.hh:630
VecPredRegContainer
Generic predicate register container.
Definition: vec_pred_reg.hh:47
data
const char data[]
Definition: circlebuf.test.cc:42
ArmISA::VecRegContainer
VecReg::Container VecRegContainer
Definition: registers.hh:71
FullO3CPU::microPC
MicroPC microPC(ThreadID tid)
Reads the commit micro PC of a specific thread.
Definition: cpu.cc:1486
FullO3CPU::addThreadToExitingList
void addThreadToExitingList(ThreadID tid)
Insert tid to the list of threads trying to exit.
Definition: cpu.cc:1760
FullO3CPU::setMiscRegNoEffect
void setMiscRegNoEffect(int misc_reg, RegVal val, ThreadID tid)
Sets a miscellaneous register.
Definition: cpu.cc:1180
FullO3CPU::startup
void startup() override
Definition: cpu.cc:589
FullO3CPU::totalInsts
Counter totalInsts() const override
Count the Total Instructions Committed in the CPU.
Definition: cpu.cc:645
FullO3CPU::setVectorsAsReady
void setVectorsAsReady(ThreadID tid)
Mark vector fields in scoreboard as ready right after switching vector mode, since software may read ...
Definition: cpu.cc:841
FullO3CPU::checker
Checker< Impl > * checker
Pointer to the checker, which can dynamically verify instruction results at run time.
Definition: cpu.hh:691
FullO3CPU::activateThread
void activateThread(ThreadID tid)
Add Thread to Active Threads List.
Definition: cpu.cc:602
FullO3CPU::setArchVecReg
void setArchVecReg(int reg_idx, const VecRegContainer &val, ThreadID tid)
Definition: cpu.cc:1417
FullO3CPU::miscRegfileWrites
Stats::Scalar miscRegfileWrites
Definition: cpu.hh:789
Event::squashed
bool squashed() const
Check whether the event is squashed.
Definition: eventq.hh:474
FullO3CPU::serializeThread
void serializeThread(CheckpointOut &cp, ThreadID tid) const override
Serialize a single thread.
Definition: cpu.cc:937
FullO3CPU::readVecReg
const VecRegContainer & readVecReg(PhysRegIdPtr reg_idx) const
Definition: cpu.cc:1211
FullO3CPU::demapPage
void demapPage(Addr vaddr, uint64_t asn)
Definition: cpu.hh:195
Process
Definition: process.hh:65
ThreadID
int16_t ThreadID
Thread index/ID type.
Definition: types.hh:227
FullO3CPU::exitingThreads
std::unordered_map< ThreadID, bool > exitingThreads
This is a list of threads that are trying to exit.
Definition: cpu.hh:601
FullO3CPU::demapInstPage
void demapInstPage(Addr vaddr, uint64_t asn)
Definition: cpu.hh:201
FullO3CPU::demapDataPage
void demapDataPage(Addr vaddr, uint64_t asn)
Definition: cpu.hh:206
FullO3CPU::setArchIntReg
void setArchIntReg(int reg_idx, RegVal val, ThreadID tid)
Architectural register accessors.
Definition: cpu.cc:1395
FullO3CPU::DecodeStruct
CPUPolicy::DecodeStruct DecodeStruct
Definition: cpu.hh:628
FullO3CPU::nextInstAddr
Addr nextInstAddr(ThreadID tid)
Reads the next PC of a specific thread.
Definition: cpu.cc:1479
Flags< FlagsType >
FullO3CPU::isThreadExiting
bool isThreadExiting(ThreadID tid) const
Is the thread trying to exit?
Definition: cpu.cc:1780
FullO3CPU::switchRenameMode
void switchRenameMode(ThreadID tid, UnifiedFreeList *freelist)
Check if a change in renaming is needed for vector registers.
Definition: cpu.cc:863
FullO3CPU::getWritableVecReg
VecRegContainer & getWritableVecReg(PhysRegIdPtr reg_idx)
Read physical vector register for modification.
Definition: cpu.cc:1220
FullO3CPU::tickEvent
EventFunctionWrapper tickEvent
The tick event used for scheduling CPU ticks.
Definition: cpu.hh:132
FullO3CPU::readArchVecReg
const VecRegContainer & readArchVecReg(int reg_idx, ThreadID tid) const
Definition: cpu.cc:1334
FullO3CPU::setArchCCReg
void setArchCCReg(int reg_idx, RegVal val, ThreadID tid)
Definition: cpu.cc:1447
FullO3CPU::IEWStruct
CPUPolicy::IEWStruct IEWStruct
Definition: cpu.hh:632
ProbePointArg
ProbePointArg generates a point for the class of Arg.
Definition: thermal_domain.hh:50
Tick
uint64_t Tick
Tick count type.
Definition: types.hh:63
ArmISA::VecPredRegContainer
VecPredReg::Container VecPredRegContainer
Definition: registers.hh:77
FullO3CPU::totalIpc
Stats::Formula totalIpc
Stat for the total IPC.
Definition: cpu.hh:770
FullO3CPU::intRegfileReads
Stats::Scalar intRegfileReads
Definition: cpu.hh:773
Checker
Templated Checker class.
Definition: cpu.hh:653
FullO3CPU::tcBase
ThreadContext * tcBase(ThreadID tid)
Returns a pointer to a thread context.
Definition: cpu.hh:679
FullO3CPU::instcount
int instcount
Count of total number of dynamic instructions in flight.
Definition: cpu.hh:536
FullO3CPU::drainResume
void drainResume() override
Resumes execution after a drain.
Definition: cpu.cc:1088
FullO3CPU::removeThread
void removeThread(ThreadID tid)
Remove all of a thread's context from CPU.
Definition: cpu.cc:797
FullO3CPU::addInst
ListIt addInst(const DynInstPtr &inst)
Function to add instruction onto the head of the list of the instructions.
Definition: cpu.cc:1501
FullO3CPU::fetchQueue
TimeBuffer< FetchStruct > fetchQueue
The fetch stage's instruction queue.
Definition: cpu.hh:638
PhysRegFile
Simple physical register file class.
Definition: regfile.hh:59
std::vector< TheISA::ISA * >
FullO3CPU::instAddr
Addr instAddr(ThreadID tid)
Reads the commit PC of a specific thread.
Definition: cpu.cc:1472
FullO3CPU::setVecPredReg
void setVecPredReg(PhysRegIdPtr reg_idx, const VecPredRegContainer &val)
Definition: cpu.cc:1295
HtmFailureFaultCause
HtmFailureFaultCause
Definition: htm.hh:44
FullO3CPU::_status
Status _status
Overall CPU status.
Definition: cpu.hh:127
FullO3CPU::idleCycles
Stats::Scalar idleCycles
Stat for total number of cycles the CPU spends descheduled.
Definition: cpu.hh:755
FullO3CPU::removeFrontInst
void removeFrontInst(const DynInstPtr &inst)
Remove an instruction from the front end of the list.
Definition: cpu.cc:1531
FullO3CPU< O3CPUImpl >::VecElem
TheISA::VecElem VecElem
Definition: cpu.hh:101
FullO3CPU::CPUPolicy
Impl::CPUPol CPUPolicy
Definition: cpu.hh:97
Stats::Vector
A vector of scalar stats.
Definition: statistics.hh:2575
FullO3CPU::fpRegfileWrites
Stats::Scalar fpRegfileWrites
Definition: cpu.hh:777
BaseTLB
Definition: tlb.hh:50
FullO3CPU::vecRegfileWrites
Stats::Scalar vecRegfileWrites
Definition: cpu.hh:780
FullO3CPU::globalSeqNum
InstSeqNum globalSeqNum
The global sequence number counter.
Definition: cpu.hh:685
FullO3CPU::getDataPort
Port & getDataPort() override
Get the dcache port (used to find block size for translations).
Definition: cpu.hh:747
TimeBuffer< TimeStruct >
FullO3CPU::squashFromTC
void squashFromTC(ThreadID tid)
Initiates a squash of all in-flight instructions for a given thread.
Definition: cpu.cc:1493
FullO3CPU::switchOut
void switchOut() override
Switches out this CPU.
Definition: cpu.cc:1118
FullO3CPU::TimeStruct
CPUPolicy::TimeStruct TimeStruct
Typedefs from the Impl to get the structs that each of the time buffers should use.
Definition: cpu.hh:624
RegId
Register ID: describe an architectural register with its class and index.
Definition: reg_class.hh:75
FullO3CPU::Idle
@ Idle
Definition: cpu.hh:116
FullO3CPU::cleanUpRemovedInsts
void cleanUpRemovedInsts()
Cleans up all instructions on the remove list.
Definition: cpu.cc:1640
EventFunctionWrapper
Definition: eventq.hh:1101
FullO3CPU::readVecElem
const VecElem & readVecElem(PhysRegIdPtr reg_idx) const
Definition: cpu.cc:1229
FullO3CPU< O3CPUImpl >::LSQRequest
typename LSQ< O3CPUImpl >::LSQRequest LSQRequest
Definition: cpu.hh:124
FullO3CPU::commitDrained
void commitDrained(ThreadID tid)
Commit has reached a safe point to drain a thread.
Definition: cpu.cc:1081
FullO3CPU::commit
CPUPolicy::Commit commit
The commit stage.
Definition: cpu.hh:573
timebuf.hh
DrainState
DrainState
Object drain/handover states.
Definition: drain.hh:71
FullO3CPU::readVecPredReg
const VecPredRegContainer & readVecPredReg(PhysRegIdPtr reg_idx) const
Definition: cpu.cc:1237
Stats::Scalar
This is a simple scalar statistic, like a counter.
Definition: statistics.hh:2533
FullO3CPU< O3CPUImpl >::StageIdx
StageIdx
Enum to give each stage a specific index, so when calling activateStage() or deactivateStage(),...
Definition: cpu.hh:613
FullO3CPU::fetch
CPUPolicy::Fetch fetch
The fetch stage.
Definition: cpu.hh:561
FullO3CPU::readVecLane
VecLaneT< VecElem, true > readVecLane(PhysRegIdPtr phys_reg) const
Read physical vector register lane.
Definition: cpu.hh:379
Counter
int64_t Counter
Statistics counter type.
Definition: types.hh:58
comm.hh
FullO3CPU::regFile
PhysRegFile regFile
The register file.
Definition: cpu.hh:579
FullO3CPU::suspendContext
void suspendContext(ThreadID tid) override
Remove Thread from Active Threads List.
Definition: cpu.cc:710
FullO3CPU::regStats
void regStats() override
Registers statistics.
Definition: cpu.cc:381
FullO3CPU::DecodeIdx
@ DecodeIdx
Definition: cpu.hh:615
FullO3CPU::vecRenameMode
void vecRenameMode(Enums::VecRegRenameMode vec_mode)
Sets the current vector renaming mode.
Definition: cpu.hh:371
FullO3CPU::removeInstsNotInROB
void removeInstsNotInROB(ThreadID tid)
Remove all instructions that are not currently in the ROB.
Definition: cpu.cc:1545
ArmISA::VecElem
uint32_t VecElem
Definition: registers.hh:68
cp
Definition: cprintf.cc:40
FullO3CPU::setCCReg
void setCCReg(PhysRegIdPtr phys_reg, RegVal val)
Definition: cpu.cc:1304
FullO3CPU::setIntReg
void setIntReg(PhysRegIdPtr phys_reg, RegVal val)
Definition: cpu.cc:1263
FullO3CPU::DynInstPtr
Impl::DynInstPtr DynInstPtr
Definition: cpu.hh:98
FullO3CPU::IEWIdx
@ IEWIdx
Definition: cpu.hh:617
FullO3CPU::ListIt
std::list< DynInstPtr >::iterator ListIt
Definition: cpu.hh:109
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition: thread_context.hh:88
FullO3CPU::wakeCPU
void wakeCPU()
Wakes the CPU, rescheduling the CPU if it's not already active.
Definition: cpu.cc:1694
FullO3CPU::activateContext
void activateContext(ThreadID tid) override
Add Thread to Active Threads List.
Definition: cpu.cc:671
VecLaneT
Vector Lane abstraction Another view of a container.
Definition: vec_reg.hh:262
FullO3CPU::verifyMemoryMode
void verifyMemoryMode() const override
Verify that the system is in a memory mode supported by the CPU.
Definition: cpu.cc:1155
FullO3CPU::instList
std::list< DynInstPtr > instList
List of all the instructions in flight.
Definition: cpu.hh:540
FullO3CPU::read
Fault read(LSQRequest *req, int load_idx)
CPU read function, forwards read to LSQ.
Definition: cpu.hh:727
FullO3CPU::decodeQueue
TimeBuffer< DecodeStruct > decodeQueue
The decode stage's instruction queue.
Definition: cpu.hh:641
FullO3CPU::vecPredRegfileReads
Stats::Scalar vecPredRegfileReads
Definition: cpu.hh:782
BaseO3CPU
Definition: cpu.hh:78
FullO3CPU::readMiscRegNoEffect
RegVal readMiscRegNoEffect(int misc_reg, ThreadID tid) const
Register accessors.
Definition: cpu.cc:1165
System
Definition: system.hh:73
FullO3CPU::getWritableArchVecPredReg
VecPredRegContainer & getWritableArchVecPredReg(int reg_idx, ThreadID tid)
Definition: cpu.cc:1374
Fault
std::shared_ptr< FaultBase > Fault
Definition: types.hh:240
MipsISA::vaddr
vaddr
Definition: pra_constants.hh:275
FullO3CPU::Thread
O3ThreadState< Impl > Thread
Definition: cpu.hh:107
FullO3CPU::threadExitEvent
EventFunctionWrapper threadExitEvent
The exit event used for terminating all ready-to-exit threads.
Definition: cpu.hh:135
FullO3CPU::getWritableArchVecReg
VecRegContainer & getWritableArchVecReg(int reg_idx, ThreadID tid)
Read architectural vector register for modification.
Definition: cpu.cc:1344
statistics.hh
FullO3CPU::cpuWaitList
std::list< int > cpuWaitList
Threads Scheduled to Enter CPU.
Definition: cpu.hh:700
Port
Ports are used to interface objects to each other.
Definition: port.hh:56
FullO3CPU::ppDataAccessComplete
ProbePointArg< std::pair< DynInstPtr, PacketPtr > > * ppDataAccessComplete
Definition: cpu.hh:190
FullO3CPU::ipc
Stats::Formula ipc
Stat for the IPC per thread.
Definition: cpu.hh:768
FullO3CPU::readArchVecPredReg
const VecPredRegContainer & readArchVecPredReg(int reg_idx, ThreadID tid) const
Definition: cpu.cc:1364
FullO3CPU::activityRec
ActivityRecorder activityRec
The activity recorder; used to tell if the CPU has any activity remaining or if it can go to idle and...
Definition: cpu.hh:654
FullO3CPU::renameMap
CPUPolicy::RenameMap renameMap[Impl::MaxThreads]
The rename map.
Definition: cpu.hh:585
process.hh
UnifiedFreeList
FreeList class that simply holds the list of free integer and floating point registers.
Definition: free_list.hh:115
activity.hh
FullO3CPU::~FullO3CPU
~FullO3CPU()
Destructor.
Definition: cpu.cc:360
FullO3CPU::freeList
CPUPolicy::FreeList freeList
The free list.
Definition: cpu.hh:582
FullO3CPU::timesIdled
Stats::Scalar timesIdled
Stat for total number of times the CPU is descheduled.
Definition: cpu.hh:753
FullO3CPU::pushRequest
Fault pushRequest(const DynInstPtr &inst, bool isLoad, uint8_t *data, unsigned int size, Addr addr, Request::Flags flags, uint64_t *res, AtomicOpFunctorPtr amo_op=nullptr, const std::vector< bool > &byte_enable=std::vector< bool >())
CPU pushRequest function, forwards request to LSQ.
Definition: cpu.hh:715
FullO3CPU::removeInstsThisCycle
bool removeInstsThisCycle
Records if instructions need to be removed this cycle due to being retired or squashed.
Definition: cpu.hh:557
FullO3CPU::write
Fault write(LSQRequest *req, uint8_t *data, int store_idx)
CPU write function, forwards write to LSQ.
Definition: cpu.hh:733
FullO3CPU::itb
BaseTLB * itb
Definition: cpu.hh:122
thread_state.hh
FullO3CPU::ccRegfileWrites
Stats::Scalar ccRegfileWrites
Definition: cpu.hh:786
O3ThreadState
Class that has various thread state, such as the status, the current instruction being processed,...
Definition: commit.hh:56
FullO3CPU::getFreeTid
ThreadID getFreeTid()
Gets a free thread id.
Definition: cpu.cc:1729
FullO3CPU::readIntReg
RegVal readIntReg(PhysRegIdPtr phys_reg)
Definition: cpu.cc:1195
BaseO3CPU::BaseO3CPU
BaseO3CPU(BaseCPUParams *params)
Definition: cpu.cc:70
FullO3CPU::vecRenameMode
Enums::VecRegRenameMode vecRenameMode() const
Returns current vector renaming mode.
Definition: cpu.hh:368
FullO3CPU::instDone
void instDone(ThreadID tid, const DynInstPtr &inst)
Function to tell the CPU that an instruction has completed.
Definition: cpu.cc:1510
FullO3CPU::removeInstsUntil
void removeInstsUntil(const InstSeqNum &seq_num, ThreadID tid)
Remove all instructions younger than the given sequence number.
Definition: cpu.cc:1590
FullO3CPU::CommitIdx
@ CommitIdx
Definition: cpu.hh:618
FullO3CPU::SwitchedOut
@ SwitchedOut
Definition: cpu.hh:119
FullO3CPU::FullO3CPU
FullO3CPU(DerivO3CPUParams *params)
Constructs a CPU with the given parameters.
Definition: cpu.cc:82
X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:769
InstSeqNum
uint64_t InstSeqNum
Definition: inst_seq.hh:37
FullO3CPU::thread
std::vector< Thread * > thread
Pointers to all of the threads in the CPU.
Definition: cpu.hh:697
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
BaseCPU::params
const Params * params() const
Definition: base.hh:296
FullO3CPU::activityThisCycle
void activityThisCycle()
Records that there was time buffer activity this cycle.
Definition: cpu.hh:658
FullO3CPU::readFloatReg
RegVal readFloatReg(PhysRegIdPtr phys_reg)
Definition: cpu.cc:1203
FullO3CPU::ppInstAccessComplete
ProbePointArg< PacketPtr > * ppInstAccessComplete
Definition: cpu.hh:189
FullO3CPU::lastActivatedCycle
Tick lastActivatedCycle
The cycle that the CPU was last activated by a new thread.
Definition: cpu.hh:706
FullO3CPU::insertThread
void insertThread(ThreadID tid)
Setup CPU to insert a thread's context.
Definition: cpu.cc:745
FullO3CPU::processInterrupts
void processInterrupts(const Fault &interrupt)
Processes any an interrupt fault.
Definition: cpu.cc:891
FullO3CPU::system
System * system
Pointer to the system.
Definition: cpu.hh:694
FullO3CPU::isCpuDrained
bool isCpuDrained() const
Check if a system is in a drained state.
Definition: cpu.cc:1042
FullO3CPU::syscall
void syscall(ThreadID tid)
Executes a syscall.
Definition: cpu.cc:917
FullO3CPU::drainSanityCheck
void drainSanityCheck() const
Perform sanity checks after a drain.
Definition: cpu.cc:1030
FullO3CPU::ImplState
O3ThreadState< Impl > ImplState
Definition: cpu.hh:106
FullO3CPU::tids
std::vector< ThreadID > tids
Available thread ids in the cpu.
Definition: cpu.hh:712
FullO3CPU::getAndIncrementInstSeq
InstSeqNum getAndIncrementInstSeq()
Get the current instruction sequence number, and increment it.
Definition: cpu.hh:309
FullO3CPU::isDraining
bool isDraining() const
Is the CPU draining?
Definition: cpu.hh:258
FullO3CPU::dtb
BaseTLB * dtb
Definition: cpu.hh:123
FullO3CPU::vecPredRegfileWrites
Stats::Scalar vecPredRegfileWrites
Definition: cpu.hh:783
FullO3CPU::vecMode
Enums::VecRegRenameMode vecMode
The rename mode of the vector registers.
Definition: cpu.hh:576
FullO3CPU::activeThreads
std::list< ThreadID > activeThreads
Active Threads List.
Definition: cpu.hh:594
FullO3CPU::dumpInsts
void dumpInsts()
Debug function to print all instructions on the list.
Definition: cpu.cc:1666
FullO3CPU::committedInsts
Stats::Vector committedInsts
Stat for the number of committed instructions per thread.
Definition: cpu.hh:760
BaseCPU
Definition: cpu_dummy.hh:43
cpu_policy.hh
types.hh
FullO3CPU::tryDrain
bool tryDrain()
Check if the pipeline has drained and signal drain done.
Definition: cpu.cc:1014
FullO3CPU::readArchVecLane
VecLaneT< VecElem, true > readArchVecLane(int reg_idx, int lId, ThreadID tid) const
Read architectural vector register lane.
Definition: cpu.hh:436
FullO3CPU::halt
void halt()
Halts the CPU.
Definition: cpu.hh:336
FullO3CPU::removeList
std::queue< ListIt > removeList
List of all the instructions that will be removed at the end of this cycle.
Definition: cpu.hh:545
BaseTLB::demapPage
virtual void demapPage(Addr vaddr, uint64_t asn)=0
VecRegClass
@ VecRegClass
Vector Register.
Definition: reg_class.hh:56
FullO3CPU::Blocked
@ Blocked
Definition: cpu.hh:118
simple_thread.hh
FullO3CPU::NumStages
@ NumStages
Definition: cpu.hh:619
FullO3CPU::setArchVecLane
void setArchVecLane(int reg_idx, int lId, ThreadID tid, const LD &val)
Write a lane of the destination vector register.
Definition: cpu.hh:447
FullO3CPU::readCCReg
RegVal readCCReg(PhysRegIdPtr phys_reg)
Definition: cpu.cc:1255
FullO3CPU::setVecElem
void setVecElem(PhysRegIdPtr reg_idx, const VecElem &val)
Definition: cpu.cc:1287
LSQ::LSQRequest
Memory operation metadata.
Definition: lsq.hh:230
FullO3CPU::readArchIntReg
RegVal readArchIntReg(int reg_idx, ThreadID tid)
Definition: cpu.cc:1312
FullO3CPU::scheduleTickEvent
void scheduleTickEvent(Cycles delay)
Schedule tick event, regardless of its current state.
Definition: cpu.hh:138
base.hh
MipsISA::PCState
GenericISA::DelaySlotPCState< MachInst > PCState
Definition: types.hh:41
RegIndex
uint16_t RegIndex
Definition: types.hh:52
ActivityRecorder::activity
void activity()
Records that there is activity this cycle.
Definition: activity.cc:54
FullO3CPU::renameQueue
TimeBuffer< RenameStruct > renameQueue
The rename stage's instruction queue.
Definition: cpu.hh:644
FullO3CPU::committedOps
Stats::Vector committedOps
Stat for the number of committed ops (including micro ops) per thread.
Definition: cpu.hh:762
Stats::Formula
A formula for statistics that is calculated when printed.
Definition: statistics.hh:3037
FullO3CPU::squashInstIt
void squashInstIt(const ListIt &instIt, ThreadID tid)
Removes the instruction pointed to by the iterator.
Definition: cpu.cc:1619
FullO3CPU::haltContext
void haltContext(ThreadID tid) override
Remove Thread from Active Threads List && Remove Thread Context from CPU.
Definition: cpu.cc:731
FullO3CPU::htmSendAbortSignal
void htmSendAbortSignal(ThreadID tid, uint64_t htm_uid, HtmFailureFaultCause cause)
Definition: cpu.cc:1832
ElemIndex
uint16_t ElemIndex
Logical vector register elem index type.
Definition: types.hh:55
FullO3CPU::Running
@ Running
Definition: cpu.hh:115
addr
ip6_addr_t addr
Definition: inet.hh:423
FullO3CPU::Halted
@ Halted
Definition: cpu.hh:117
FullO3CPU::iew
CPUPolicy::IEW iew
The issue/execute/writeback stages.
Definition: cpu.hh:570
Event::squash
void squash()
Squash the current event.
Definition: eventq.hh:467
FullO3CPU::tick
void tick()
Ticks CPU, calling tick() on each stage, and checking the overall activity to see if the CPU should d...
Definition: cpu.cc:509
Cycles
Cycles is a wrapper class for representing cycle counts, i.e.
Definition: types.hh:83
FullO3CPU::setVecLane
void setVecLane(PhysRegIdPtr phys_reg, const LD &val)
Write a lane of the destination vector register.
Definition: cpu.hh:399
FullO3CPU::totalCpi
Stats::Formula totalCpi
Stat for the total CPI.
Definition: cpu.hh:766
FullO3CPU::isa
std::vector< TheISA::ISA * > isa
Definition: cpu.hh:606
FullO3CPU::init
void init() override
Initialize the CPU.
Definition: cpu.cc:568
CheckpointOut
std::ostream CheckpointOut
Definition: serialize.hh:63
PhysRegId
Physical register ID.
Definition: reg_class.hh:223
O3ThreadContext::schedule
bool schedule(PCEvent *e) override
Definition: thread_context.hh:72
FullO3CPU::activateStage
void activateStage(const StageIdx idx)
Changes a stage's status to active within the activity recorder.
Definition: cpu.hh:661
ActivityRecorder::activateStage
void activateStage(const int idx)
Marks a stage as active.
Definition: activity.cc:90
FullO3CPU::decode
CPUPolicy::Decode decode
The decode stage.
Definition: cpu.hh:564
FullO3CPU::FetchStruct
CPUPolicy::FetchStruct FetchStruct
Definition: cpu.hh:626
FullO3CPU::setVecReg
void setVecReg(PhysRegIdPtr reg_idx, const VecRegContainer &val)
Definition: cpu.cc:1279
FullO3CPU::RenameIdx
@ RenameIdx
Definition: cpu.hh:616
FullO3CPU::iewQueue
TimeBuffer< IEWStruct > iewQueue
The IEW stage's instruction queue.
Definition: cpu.hh:647
RefCountingPtr< StaticInst >
FullO3CPU::pcState
void pcState(const TheISA::PCState &newPCState, ThreadID tid)
Sets the commit PC state of a specific thread.
Definition: cpu.cc:1465
BaseO3CPU::regStats
void regStats()
Definition: cpu.cc:76
FullO3CPU::threadMap
std::map< ThreadID, unsigned > threadMap
Mapping for system thread id to cpu id.
Definition: cpu.hh:709
FullO3CPU::exitThreads
void exitThreads()
Terminate all threads that are ready to exit.
Definition: cpu.cc:1808
FullO3CPU::trap
void trap(const Fault &fault, ThreadID tid, const StaticInstPtr &inst)
Traps to handle given fault.
Definition: cpu.cc:908
FullO3CPU::setMiscReg
void setMiscReg(int misc_reg, RegVal val, ThreadID tid)
Sets a misc.
Definition: cpu.cc:1187
std::list
STL list class.
Definition: stl.hh:51
ActivityRecorder::deactivateStage
void deactivateStage(const int idx)
Deactivates a stage.
Definition: activity.cc:107
FullO3CPU::O3CPU
Impl::O3CPU O3CPU
Definition: cpu.hh:99
MicroPC
uint16_t MicroPC
Definition: types.hh:144
FullO3CPU::totalOps
Counter totalOps() const override
Count the Total Ops (including micro ops) committed in the CPU.
Definition: cpu.cc:658
FullO3CPU::setFloatReg
void setFloatReg(PhysRegIdPtr phys_reg, RegVal val)
Definition: cpu.cc:1271
FullO3CPU::unscheduleTickEvent
void unscheduleTickEvent()
Unschedule tick event, regardless of its current state.
Definition: cpu.hh:147
FullO3CPU::scoreboard
Scoreboard scoreboard
Integer Register Scoreboard.
Definition: cpu.hh:604
CheckpointIn
Definition: serialize.hh:67
FullO3CPU::miscRegfileReads
Stats::Scalar miscRegfileReads
Definition: cpu.hh:788
FullO3CPU::cpi
Stats::Formula cpi
Stat for the CPI per thread.
Definition: cpu.hh:764
FullO3CPU::numActiveThreads
int numActiveThreads()
Returns the Number of Active Threads in the CPU.
Definition: cpu.hh:222
FullO3CPU::drain
DrainState drain() override
Starts draining the CPU's pipeline of all instructions in order to stop all memory accesses.
Definition: cpu.cc:951
FullO3CPU::fpRegfileReads
Stats::Scalar fpRegfileReads
Definition: cpu.hh:776
FullO3CPU::readArchCCReg
RegVal readArchCCReg(int reg_idx, ThreadID tid)
Definition: cpu.cc:1384
FullO3CPU::ccRegfileReads
Stats::Scalar ccRegfileReads
Definition: cpu.hh:785
FullO3CPU::setArchVecElem
void setArchVecElem(const RegIndex &reg_idx, const ElemIndex &ldx, const VecElem &val, ThreadID tid)
Definition: cpu.cc:1427
scoreboard.hh
FullO3CPU::unserializeThread
void unserializeThread(CheckpointIn &cp, ThreadID tid) override
Unserialize one thread.
Definition: cpu.cc:944
FullO3CPU::FetchIdx
@ FetchIdx
Definition: cpu.hh:614
FullO3CPU::readMiscReg
RegVal readMiscReg(int misc_reg, ThreadID tid)
Reads a misc.
Definition: cpu.cc:1172
RegVal
uint64_t RegVal
Definition: types.hh:168
FullO3CPU::setArchVecPredReg
void setArchVecPredReg(int reg_idx, const VecPredRegContainer &val, ThreadID tid)
Definition: cpu.cc:1437
FullO3CPU::scheduleThreadExitEvent
void scheduleThreadExitEvent(ThreadID tid)
If a thread is trying to exit and its corresponding trap event has been completed,...
Definition: cpu.cc:1787
Scoreboard
Implements a simple scoreboard to track which registers are ready.
Definition: scoreboard.hh:48
VecRegContainer
Vector Register Abstraction This generic class is the model in a particularization of MVC,...
Definition: vec_reg.hh:156
PhysRegFile::setVecLane
void setVecLane(PhysRegIdPtr phys_reg, const LD &val)
Get a vector register lane for modification.
Definition: regfile.hh:243
DrainState::Draining
@ Draining
Draining buffers pending serialization/handover.
FullO3CPU::intRegfileWrites
Stats::Scalar intRegfileWrites
Definition: cpu.hh:774
FullO3CPU::readArchFloatReg
RegVal readArchFloatReg(int reg_idx, ThreadID tid)
Definition: cpu.cc:1323
panic
#define panic(...)
This implements a cprintf based panic() function.
Definition: logging.hh:171
FullO3CPU::getWritableVecPredReg
VecPredRegContainer & getWritableVecPredReg(PhysRegIdPtr reg_idx)
Definition: cpu.cc:1246
FullO3CPU::lastRunningCycle
Cycles lastRunningCycle
The cycle that the CPU was last running, used for statistics.
Definition: cpu.hh:703
O3ThreadContext
Derived ThreadContext class for use with the O3CPU.
Definition: cpu.hh:71
FullO3CPU::readVecLane
VecLaneT< VecElem, true > readVecLane(PhysRegIdPtr phys_reg) const
Read physical vector register lane.
Definition: cpu.hh:390
FullO3CPU::quiesceCycles
Stats::Scalar quiesceCycles
Stat for total number of cycles the CPU spends descheduled due to a quiesce operation or waiting for ...
Definition: cpu.hh:758

Generated on Wed Sep 30 2020 14:01:58 for gem5 by doxygen 1.8.17