gem5  v21.0.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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(const BaseCPUParams &params);
83 };
84 
90 template <class Impl>
91 class FullO3CPU : public BaseO3CPU
92 {
93  public:
94  // Typedefs from the Impl here.
95  typedef typename Impl::CPUPol CPUPolicy;
96  typedef typename Impl::DynInstPtr DynInstPtr;
97  typedef typename Impl::O3CPU O3CPU;
98 
101 
103 
104  friend class O3ThreadContext<Impl>;
105 
106  public:
107  enum Status {
113  };
114 
117 
120 
121  private:
122 
125 
128 
131  {
132  if (tickEvent.squashed())
133  reschedule(tickEvent, clockEdge(delay));
134  else if (!tickEvent.scheduled())
135  schedule(tickEvent, clockEdge(delay));
136  }
137 
140  {
141  if (tickEvent.scheduled())
142  tickEvent.squash();
143  }
144 
156  bool tryDrain();
157 
167  void drainSanityCheck() const;
168 
170  bool isCpuDrained() const;
171 
172  public:
174  FullO3CPU(const DerivO3CPUParams &params);
176  ~FullO3CPU();
177 
180 
182  void regProbePoints() override;
183 
184  void
185  demapPage(Addr vaddr, uint64_t asn)
186  {
187  mmu->demapPage(vaddr, asn);
188  }
189 
193  void tick();
194 
196  void init() override;
197 
198  void startup() override;
199 
202  { return activeThreads.size(); }
203 
205  void activateThread(ThreadID tid);
206 
208  void deactivateThread(ThreadID tid);
209 
211  void insertThread(ThreadID tid);
212 
214  void removeThread(ThreadID tid);
215 
217  Counter totalInsts() const override;
218 
220  Counter totalOps() const override;
221 
223  void activateContext(ThreadID tid) override;
224 
226  void suspendContext(ThreadID tid) override;
227 
231  void haltContext(ThreadID tid) override;
232 
234  void updateThreadPriority();
235 
237  bool isDraining() const { return drainState() == DrainState::Draining; }
238 
239  void serializeThread(CheckpointOut &cp, ThreadID tid) const override;
240  void unserializeThread(CheckpointIn &cp, ThreadID tid) override;
241 
244 
246  bool isThreadExiting(ThreadID tid) const;
247 
253 
255  void exitThreads();
256 
257  public:
260  DrainState drain() override;
261 
263  void drainResume() override;
264 
272  void commitDrained(ThreadID tid);
273 
275  void switchOut() override;
276 
278  void takeOverFrom(BaseCPU *oldCPU) override;
279 
280  void verifyMemoryMode() const override;
281 
284  { return globalSeqNum++; }
285 
287  void trap(const Fault &fault, ThreadID tid, const StaticInstPtr &inst);
288 
293  void setVectorsAsReady(ThreadID tid);
294 
301  void switchRenameMode(ThreadID tid, UnifiedFreeList* freelist);
302 
305 
307  void processInterrupts(const Fault &interrupt);
308 
310  void halt() { panic("Halt not implemented!\n"); }
311 
315  RegVal readMiscRegNoEffect(int misc_reg, ThreadID tid) const;
316 
320  RegVal readMiscReg(int misc_reg, ThreadID tid);
321 
323  void setMiscRegNoEffect(int misc_reg, RegVal val, ThreadID tid);
324 
328  void setMiscReg(int misc_reg, RegVal val, ThreadID tid);
329 
330  RegVal readIntReg(PhysRegIdPtr phys_reg);
331 
332  RegVal readFloatReg(PhysRegIdPtr phys_reg);
333 
334  const TheISA::VecRegContainer& readVecReg(PhysRegIdPtr reg_idx) const;
335 
340 
342  Enums::VecRegRenameMode vecRenameMode() const { return vecMode; }
343 
345  void vecRenameMode(Enums::VecRegRenameMode vec_mode)
346  { vecMode = vec_mode; }
347 
351  template<typename VE, int LaneIdx>
353  readVecLane(PhysRegIdPtr phys_reg) const
354  {
356  return regFile.readVecLane<VE, LaneIdx>(phys_reg);
357  }
358 
362  template<typename VE>
364  readVecLane(PhysRegIdPtr phys_reg) const
365  {
367  return regFile.readVecLane<VE>(phys_reg);
368  }
369 
371  template<typename LD>
372  void
373  setVecLane(PhysRegIdPtr phys_reg, const LD& val)
374  {
376  return regFile.setVecLane(phys_reg, val);
377  }
378 
379  const TheISA::VecElem& readVecElem(PhysRegIdPtr reg_idx) const;
380 
382  readVecPredReg(PhysRegIdPtr reg_idx) const;
383 
385 
386  RegVal readCCReg(PhysRegIdPtr phys_reg);
387 
388  void setIntReg(PhysRegIdPtr phys_reg, RegVal val);
389 
390  void setFloatReg(PhysRegIdPtr phys_reg, RegVal val);
391 
392  void setVecReg(PhysRegIdPtr reg_idx, const TheISA::VecRegContainer& val);
393 
394  void setVecElem(PhysRegIdPtr reg_idx, const TheISA::VecElem& val);
395 
396  void setVecPredReg(PhysRegIdPtr reg_idx,
398 
399  void setCCReg(PhysRegIdPtr phys_reg, RegVal val);
400 
401  RegVal readArchIntReg(int reg_idx, ThreadID tid);
402 
403  RegVal readArchFloatReg(int reg_idx, ThreadID tid);
404 
406  readArchVecReg(int reg_idx, ThreadID tid) const;
409 
411  template<typename VE>
413  readArchVecLane(int reg_idx, int lId, ThreadID tid) const
414  {
415  PhysRegIdPtr phys_reg = commitRenameMap[tid].lookup(
416  RegId(VecRegClass, reg_idx));
417  return readVecLane<VE>(phys_reg);
418  }
419 
420 
422  template<typename LD>
423  void
424  setArchVecLane(int reg_idx, int lId, ThreadID tid, const LD& val)
425  {
426  PhysRegIdPtr phys_reg = commitRenameMap[tid].lookup(
427  RegId(VecRegClass, reg_idx));
428  setVecLane(phys_reg, val);
429  }
430 
431  const TheISA::VecElem& readArchVecElem(const RegIndex& reg_idx,
432  const ElemIndex& ldx, ThreadID tid) const;
433 
435  int reg_idx, ThreadID tid) const;
436 
438  getWritableArchVecPredReg(int reg_idx, ThreadID tid);
439 
440  RegVal readArchCCReg(int reg_idx, ThreadID tid);
441 
447  void setArchIntReg(int reg_idx, RegVal val, ThreadID tid);
448 
449  void setArchFloatReg(int reg_idx, RegVal val, ThreadID tid);
450 
451  void setArchVecPredReg(int reg_idx, const TheISA::VecPredRegContainer& val,
452  ThreadID tid);
453 
454  void setArchVecReg(int reg_idx, const TheISA::VecRegContainer& val,
455  ThreadID tid);
456 
457  void setArchVecElem(const RegIndex& reg_idx, const ElemIndex& ldx,
458  const TheISA::VecElem& val, ThreadID tid);
459 
460  void setArchCCReg(int reg_idx, RegVal val, ThreadID tid);
461 
463  void pcState(const TheISA::PCState &newPCState, ThreadID tid);
464 
467 
469  Addr instAddr(ThreadID tid);
470 
472  MicroPC microPC(ThreadID tid);
473 
476 
481  void squashFromTC(ThreadID tid);
482 
486  ListIt addInst(const DynInstPtr &inst);
487 
489  void instDone(ThreadID tid, const DynInstPtr &inst);
490 
494  void removeFrontInst(const DynInstPtr &inst);
495 
498  void removeInstsNotInROB(ThreadID tid);
499 
501  void removeInstsUntil(const InstSeqNum &seq_num, ThreadID tid);
502 
504  inline void squashInstIt(const ListIt &instIt, ThreadID tid);
505 
507  void cleanUpRemovedInsts();
508 
510  void dumpInsts();
511 
512  public:
513 #ifndef NDEBUG
514 
516 #endif
517 
520 
524  std::queue<ListIt> removeList;
525 
526 #ifdef DEBUG
527 
530  std::set<InstSeqNum> snList;
531 #endif
532 
537 
538  protected:
540  typename CPUPolicy::Fetch fetch;
541 
543  typename CPUPolicy::Decode decode;
544 
546  typename CPUPolicy::Rename rename;
547 
549  typename CPUPolicy::IEW iew;
550 
552  typename CPUPolicy::Commit commit;
553 
555  Enums::VecRegRenameMode vecMode;
556 
559 
561  typename CPUPolicy::FreeList freeList;
562 
564  typename CPUPolicy::RenameMap renameMap[Impl::MaxThreads];
565 
567  typename CPUPolicy::RenameMap commitRenameMap[Impl::MaxThreads];
568 
570  typename CPUPolicy::ROB rob;
571 
574 
580  std::unordered_map<ThreadID, bool> exitingThreads;
581 
584 
586 
587  public:
592  enum StageIdx {
599 
603  typedef typename CPUPolicy::TimeStruct TimeStruct;
604 
605  typedef typename CPUPolicy::FetchStruct FetchStruct;
606 
607  typedef typename CPUPolicy::DecodeStruct DecodeStruct;
608 
609  typedef typename CPUPolicy::RenameStruct RenameStruct;
610 
611  typedef typename CPUPolicy::IEWStruct IEWStruct;
612 
615 
618 
621 
624 
627 
628  private:
634 
635  public:
638 
640  void activateStage(const StageIdx idx)
641  { activityRec.activateStage(idx); }
642 
644  void deactivateStage(const StageIdx idx)
645  { activityRec.deactivateStage(idx); }
646 
648  void wakeCPU();
649 
650  virtual void wakeup(ThreadID tid) override;
651 
654 
655  public:
657  ThreadContext *
659  {
660  return thread[tid]->getTC();
661  }
662 
664  InstSeqNum globalSeqNum;//[Impl::MaxThreads];
665 
671 
674 
677 
680 
683 
686 
688  std::map<ThreadID, unsigned> threadMap;
689 
692 
694  Fault pushRequest(const DynInstPtr& inst, bool isLoad, uint8_t *data,
695  unsigned int size, Addr addr, Request::Flags flags,
696  uint64_t *res, AtomicOpFunctorPtr amo_op = nullptr,
697  const std::vector<bool>& byte_enable =
699 
700  {
701  return iew.ldstQueue.pushRequest(inst, isLoad, data, size, addr,
702  flags, res, std::move(amo_op), byte_enable);
703  }
704 
706  Fault read(LSQRequest* req, int load_idx)
707  {
708  return this->iew.ldstQueue.read(req, load_idx);
709  }
710 
712  Fault write(LSQRequest* req, uint8_t *data, int store_idx)
713  {
714  return this->iew.ldstQueue.write(req, data, store_idx);
715  }
716 
718  Port &
719  getInstPort() override
720  {
721  return this->fetch.getInstPort();
722  }
723 
725  Port &
726  getDataPort() override
727  {
728  return this->iew.ldstQueue.getDataPort();
729  }
730 
731  struct FullO3CPUStats : public Stats::Group
732  {
734 
755 
756  //number of integer register file accesses
759  //number of float register file accesses
762  //number of vector register file accesses
765  //number of predicate register file accesses
768  //number of CC register file accesses
771  //number of misc
774  } cpuStats;
775 
776  public:
777  // hardware transactional memory
778  void htmSendAbortSignal(ThreadID tid, uint64_t htm_uid,
779  HtmFailureFaultCause cause);
780 };
781 
782 #endif // __CPU_O3_CPU_HH__
FullO3CPU::wakeup
virtual void wakeup(ThreadID tid) override
Definition: cpu.cc:1693
FullO3CPU::readArchVecElem
const TheISA::VecElem & readArchVecElem(const RegIndex &reg_idx, const ElemIndex &ldx, ThreadID tid) const
Definition: cpu.cc:1334
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:1118
Event::scheduled
bool scheduled() const
Determine if the current event is scheduled.
Definition: eventq.hh:462
FullO3CPU::setArchFloatReg
void setArchFloatReg(int reg_idx, RegVal val, ThreadID tid)
Definition: cpu.cc:1384
FullO3CPU
FullO3CPU class, has each of the stages (fetch through commit) within it, as well as all of the time ...
Definition: cpu.hh:91
FullO3CPU::readVecElem
const TheISA::VecElem & readVecElem(PhysRegIdPtr reg_idx) const
Definition: cpu.cc:1212
FullO3CPU::deactivateStage
void deactivateStage(const StageIdx idx)
Changes a stage's status to inactive within the activity recorder.
Definition: cpu.hh:644
FullO3CPU::getInstPort
Port & getInstPort() override
Used by the fetch unit to get a hold of the instruction port.
Definition: cpu.hh:719
FullO3CPU::deactivateThread
void deactivateThread(ThreadID tid)
Remove Thread from Active Threads List.
Definition: cpu.cc:607
FullO3CPU::getInterrupts
Fault getInterrupts()
Returns the Fault for any valid interrupt.
Definition: cpu.cc:888
FullO3CPU::regProbePoints
void regProbePoints() override
Register probe points.
Definition: cpu.cc:364
FullO3CPU::timeBuffer
TimeBuffer< TimeStruct > timeBuffer
The main time buffer to do backwards communication.
Definition: cpu.hh:614
FullO3CPU::rob
CPUPolicy::ROB rob
The re-order buffer.
Definition: cpu.hh:570
FullO3CPU::commitRenameMap
CPUPolicy::RenameMap commitRenameMap[Impl::MaxThreads]
The commit rename map.
Definition: cpu.hh:567
FullO3CPU::rename
CPUPolicy::Rename rename
The dispatch stage.
Definition: cpu.hh:546
FullO3CPU< O3CPUImpl >::Status
Status
Definition: cpu.hh:107
FullO3CPU::updateThreadPriority
void updateThreadPriority()
Update The Order In Which We Process Threads.
Definition: cpu.cc:1720
ActivityRecorder
ActivityRecorder helper class that informs the CPU if it can switch over to being idle or not.
Definition: activity.hh:50
FullO3CPU::setVecElem
void setVecElem(PhysRegIdPtr reg_idx, const TheISA::VecElem &val)
Definition: cpu.cc:1269
FullO3CPU::RenameStruct
CPUPolicy::RenameStruct RenameStruct
Definition: cpu.hh:609
BaseMMU
Definition: mmu.hh:45
data
const char data[]
Definition: circlebuf.test.cc:47
ArmISA::VecRegContainer
VecReg::Container VecRegContainer
Definition: registers.hh:63
FullO3CPU::microPC
MicroPC microPC(ThreadID tid)
Reads the commit micro PC of a specific thread.
Definition: cpu.cc:1464
FullO3CPU::addThreadToExitingList
void addThreadToExitingList(ThreadID tid)
Insert tid to the list of threads trying to exit.
Definition: cpu.cc:1737
FullO3CPU::setMiscRegNoEffect
void setMiscRegNoEffect(int misc_reg, RegVal val, ThreadID tid)
Sets a miscellaneous register.
Definition: cpu.cc:1165
FullO3CPU::startup
void startup() override
startup() is the final initialization call before simulation.
Definition: cpu.cc:576
FullO3CPU::totalInsts
Counter totalInsts() const override
Count the Total Instructions Committed in the CPU.
Definition: cpu.cc:632
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:846
FullO3CPU::checker
Checker< Impl > * checker
Pointer to the checker, which can dynamically verify instruction results at run time.
Definition: cpu.hh:670
FullO3CPU::activateThread
void activateThread(ThreadID tid)
Add Thread to Active Threads List.
Definition: cpu.cc:589
Event::squashed
bool squashed() const
Check whether the event is squashed.
Definition: eventq.hh:476
FullO3CPU::serializeThread
void serializeThread(CheckpointOut &cp, ThreadID tid) const override
Serialize a single thread.
Definition: cpu.cc:922
FullO3CPU::demapPage
void demapPage(Addr vaddr, uint64_t asn)
Definition: cpu.hh:185
Process
Definition: process.hh:65
EventManager::reschedule
void reschedule(Event &event, Tick when, bool always=false)
Definition: eventq.hh:1034
ThreadID
int16_t ThreadID
Thread index/ID type.
Definition: types.hh:233
FullO3CPU::exitingThreads
std::unordered_map< ThreadID, bool > exitingThreads
This is a list of threads that are trying to exit.
Definition: cpu.hh:580
FullO3CPU::setArchVecPredReg
void setArchVecPredReg(int reg_idx, const TheISA::VecPredRegContainer &val, ThreadID tid)
Definition: cpu.cc:1415
FullO3CPU::setArchIntReg
void setArchIntReg(int reg_idx, RegVal val, ThreadID tid)
Architectural register accessors.
Definition: cpu.cc:1373
FullO3CPU::DecodeStruct
CPUPolicy::DecodeStruct DecodeStruct
Definition: cpu.hh:607
FullO3CPU::nextInstAddr
Addr nextInstAddr(ThreadID tid)
Reads the next PC of a specific thread.
Definition: cpu.cc:1457
Flags< FlagsType >
FullO3CPU::isThreadExiting
bool isThreadExiting(ThreadID tid) const
Is the thread trying to exit?
Definition: cpu.cc:1757
FullO3CPU::switchRenameMode
void switchRenameMode(ThreadID tid, UnifiedFreeList *freelist)
Check if a change in renaming is needed for vector registers.
Definition: cpu.cc:868
FullO3CPU::tickEvent
EventFunctionWrapper tickEvent
The tick event used for scheduling CPU ticks.
Definition: cpu.hh:124
FullO3CPU::setArchCCReg
void setArchCCReg(int reg_idx, RegVal val, ThreadID tid)
Definition: cpu.cc:1425
FullO3CPU::IEWStruct
CPUPolicy::IEWStruct IEWStruct
Definition: cpu.hh:611
ProbePointArg
ProbePointArg generates a point for the class of Arg.
Definition: thermal_domain.hh:51
Tick
uint64_t Tick
Tick count type.
Definition: types.hh:59
FullO3CPU::readVecLane
VecLaneT< VE, true > readVecLane(PhysRegIdPtr phys_reg) const
Read physical vector register lane.
Definition: cpu.hh:353
ArmISA::VecPredRegContainer
VecPredReg::Container VecPredRegContainer
Definition: registers.hh:69
FullO3CPU::getWritableVecReg
TheISA::VecRegContainer & getWritableVecReg(PhysRegIdPtr reg_idx)
Read physical vector register for modification.
Definition: cpu.cc:1204
Checker
Templated Checker class.
Definition: cpu.hh:638
FullO3CPU::tcBase
ThreadContext * tcBase(ThreadID tid)
Returns a pointer to a thread context.
Definition: cpu.hh:658
FullO3CPU::instcount
int instcount
Count of total number of dynamic instructions in flight.
Definition: cpu.hh:515
FullO3CPU::drainResume
void drainResume() override
Resumes execution after a drain.
Definition: cpu.cc:1073
FullO3CPU::FullO3CPUStats::idleCycles
Stats::Scalar idleCycles
Stat for total number of cycles the CPU spends descheduled.
Definition: cpu.hh:738
FullO3CPU::removeThread
void removeThread(ThreadID tid)
Remove all of a thread's context from CPU.
Definition: cpu.cc:793
FullO3CPU::addInst
ListIt addInst(const DynInstPtr &inst)
Function to add instruction onto the head of the list of the instructions.
Definition: cpu.cc:1479
FullO3CPU::fetchQueue
TimeBuffer< FetchStruct > fetchQueue
The fetch stage's instruction queue.
Definition: cpu.hh:617
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:1450
FullO3CPU::setArchVecReg
void setArchVecReg(int reg_idx, const TheISA::VecRegContainer &val, ThreadID tid)
Definition: cpu.cc:1395
HtmFailureFaultCause
HtmFailureFaultCause
Definition: htm.hh:44
FullO3CPU::cpuStats
FullO3CPU::FullO3CPUStats cpuStats
FullO3CPU::_status
Status _status
Overall CPU status.
Definition: cpu.hh:119
FullO3CPU::removeFrontInst
void removeFrontInst(const DynInstPtr &inst)
Remove an instruction from the front end of the list.
Definition: cpu.cc:1508
FullO3CPU::CPUPolicy
Impl::CPUPol CPUPolicy
Definition: cpu.hh:95
Stats::Vector
A vector of scalar stats.
Definition: statistics.hh:2007
FullO3CPU::FullO3CPUStats::committedOps
Stats::Vector committedOps
Stat for the number of committed ops (including micro ops) per thread.
Definition: cpu.hh:746
FullO3CPU::globalSeqNum
InstSeqNum globalSeqNum
The global sequence number counter.
Definition: cpu.hh:664
FullO3CPU::getDataPort
Port & getDataPort() override
Get the dcache port (used to find block size for translations).
Definition: cpu.hh:726
TimeBuffer< TimeStruct >
FullO3CPU::FullO3CPUStats::miscRegfileReads
Stats::Scalar miscRegfileReads
Definition: cpu.hh:772
FullO3CPU::squashFromTC
void squashFromTC(ThreadID tid)
Initiates a squash of all in-flight instructions for a given thread.
Definition: cpu.cc:1471
FullO3CPU::switchOut
void switchOut() override
Switches out this CPU.
Definition: cpu.cc:1103
FullO3CPU::TimeStruct
CPUPolicy::TimeStruct TimeStruct
Typedefs from the Impl to get the structs that each of the time buffers should use.
Definition: cpu.hh:603
RegId
Register ID: describe an architectural register with its class and index.
Definition: reg_class.hh:75
FullO3CPU::Idle
@ Idle
Definition: cpu.hh:109
FullO3CPU::cleanUpRemovedInsts
void cleanUpRemovedInsts()
Cleans up all instructions on the remove list.
Definition: cpu.cc:1617
EventFunctionWrapper
Definition: eventq.hh:1112
FullO3CPU::FullO3CPUStats::FullO3CPUStats
FullO3CPUStats(FullO3CPU *cpu)
Definition: cpu.cc:379
FullO3CPU< O3CPUImpl >::LSQRequest
typename LSQ< O3CPUImpl >::LSQRequest LSQRequest
Definition: cpu.hh:116
FullO3CPU::getWritableArchVecPredReg
TheISA::VecPredRegContainer & getWritableArchVecPredReg(int reg_idx, ThreadID tid)
Definition: cpu.cc:1353
FullO3CPU::commitDrained
void commitDrained(ThreadID tid)
Commit has reached a safe point to drain a thread.
Definition: cpu.cc:1066
FullO3CPU::commit
CPUPolicy::Commit commit
The commit stage.
Definition: cpu.hh:552
timebuf.hh
FullO3CPU::FullO3CPUStats::committedInsts
Stats::Vector committedInsts
Stat for the number of committed instructions per thread.
Definition: cpu.hh:743
DrainState
DrainState
Object drain/handover states.
Definition: drain.hh:71
Stats::Scalar
This is a simple scalar statistic, like a counter.
Definition: statistics.hh:1933
FullO3CPU< O3CPUImpl >::StageIdx
StageIdx
Enum to give each stage a specific index, so when calling activateStage() or deactivateStage(),...
Definition: cpu.hh:592
FullO3CPU::fetch
CPUPolicy::Fetch fetch
The fetch stage.
Definition: cpu.hh:540
Counter
int64_t Counter
Statistics counter type.
Definition: types.hh:54
comm.hh
FullO3CPU::regFile
PhysRegFile regFile
The register file.
Definition: cpu.hh:558
FullO3CPU::suspendContext
void suspendContext(ThreadID tid) override
Remove Thread from Active Threads List.
Definition: cpu.cc:697
FullO3CPU::DecodeIdx
@ DecodeIdx
Definition: cpu.hh:594
FullO3CPU::vecRenameMode
void vecRenameMode(Enums::VecRegRenameMode vec_mode)
Sets the current vector renaming mode.
Definition: cpu.hh:345
FullO3CPU::removeInstsNotInROB
void removeInstsNotInROB(ThreadID tid)
Remove all instructions that are not currently in the ROB.
Definition: cpu.cc:1522
ArmISA::VecElem
uint32_t VecElem
Definition: registers.hh:60
cp
Definition: cprintf.cc:37
FullO3CPU::setCCReg
void setCCReg(PhysRegIdPtr phys_reg, RegVal val)
Definition: cpu.cc:1286
FullO3CPU::FullO3CPUStats::fpRegfileReads
Stats::Scalar fpRegfileReads
Definition: cpu.hh:760
EventManager::schedule
void schedule(Event &event, Tick when)
Definition: eventq.hh:1016
FullO3CPU::setIntReg
void setIntReg(PhysRegIdPtr phys_reg, RegVal val)
Definition: cpu.cc:1244
FullO3CPU::DynInstPtr
Impl::DynInstPtr DynInstPtr
Definition: cpu.hh:96
FullO3CPU::IEWIdx
@ IEWIdx
Definition: cpu.hh:596
FullO3CPU::ListIt
std::list< DynInstPtr >::iterator ListIt
Definition: cpu.hh:102
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:1671
FullO3CPU::setArchVecElem
void setArchVecElem(const RegIndex &reg_idx, const ElemIndex &ldx, const TheISA::VecElem &val, ThreadID tid)
Definition: cpu.cc:1405
FullO3CPU::activateContext
void activateContext(ThreadID tid) override
Add Thread to Active Threads List.
Definition: cpu.cc:658
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:1140
FullO3CPU::instList
std::list< DynInstPtr > instList
List of all the instructions in flight.
Definition: cpu.hh:519
FullO3CPU::read
Fault read(LSQRequest *req, int load_idx)
CPU read function, forwards read to LSQ.
Definition: cpu.hh:706
FullO3CPU::FullO3CPUStats::fpRegfileWrites
Stats::Scalar fpRegfileWrites
Definition: cpu.hh:761
FullO3CPU::decodeQueue
TimeBuffer< DecodeStruct > decodeQueue
The decode stage's instruction queue.
Definition: cpu.hh:620
BaseO3CPU
Definition: cpu.hh:78
FullO3CPU::readMiscRegNoEffect
RegVal readMiscRegNoEffect(int misc_reg, ThreadID tid) const
Register accessors.
Definition: cpu.cc:1150
System
Definition: system.hh:73
FullO3CPU::FullO3CPUStats::timesIdled
Stats::Scalar timesIdled
Stat for total number of times the CPU is descheduled.
Definition: cpu.hh:736
Fault
std::shared_ptr< FaultBase > Fault
Definition: types.hh:246
MipsISA::vaddr
vaddr
Definition: pra_constants.hh:275
FullO3CPU::Thread
O3ThreadState< Impl > Thread
Definition: cpu.hh:100
FullO3CPU::threadExitEvent
EventFunctionWrapper threadExitEvent
The exit event used for terminating all ready-to-exit threads.
Definition: cpu.hh:127
statistics.hh
FullO3CPU::cpuWaitList
std::list< int > cpuWaitList
Threads Scheduled to Enter CPU.
Definition: cpu.hh:679
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:179
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:633
FullO3CPU::readVecLane
VecLaneT< VE, true > readVecLane(PhysRegIdPtr phys_reg) const
Read physical vector register lane.
Definition: cpu.hh:364
FullO3CPU::renameMap
CPUPolicy::RenameMap renameMap[Impl::MaxThreads]
The rename map.
Definition: cpu.hh:564
FullO3CPU::FullO3CPUStats::vecRegfileWrites
Stats::Scalar vecRegfileWrites
Definition: cpu.hh:764
Clocked::clockEdge
Tick clockEdge(Cycles cycles=Cycles(0)) const
Determine the tick when a cycle begins, by default the current one, but the argument also enables the...
Definition: clocked_object.hh:174
process.hh
FullO3CPU::FullO3CPUStats::miscRegfileWrites
Stats::Scalar miscRegfileWrites
Definition: cpu.hh:773
UnifiedFreeList
FreeList class that simply holds the list of free integer and floating point registers.
Definition: free_list.hh:114
activity.hh
FullO3CPU::FullO3CPU
FullO3CPU(const DerivO3CPUParams &params)
Constructs a CPU with the given parameters.
Definition: cpu.cc:73
FullO3CPU::~FullO3CPU
~FullO3CPU()
Destructor.
Definition: cpu.cc:358
FullO3CPU::freeList
CPUPolicy::FreeList freeList
The free list.
Definition: cpu.hh:561
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:694
FullO3CPU::removeInstsThisCycle
bool removeInstsThisCycle
Records if instructions need to be removed this cycle due to being retired or squashed.
Definition: cpu.hh:536
FullO3CPU::write
Fault write(LSQRequest *req, uint8_t *data, int store_idx)
CPU write function, forwards write to LSQ.
Definition: cpu.hh:712
FullO3CPU::FullO3CPUStats::totalCpi
Stats::Formula totalCpi
Stat for the total CPI.
Definition: cpu.hh:750
thread_state.hh
O3ThreadState
Class that has various thread state, such as the status, the current instruction being processed,...
Definition: commit.hh:56
FullO3CPU::FullO3CPUStats::vecPredRegfileReads
Stats::Scalar vecPredRegfileReads
Definition: cpu.hh:766
FullO3CPU::getFreeTid
ThreadID getFreeTid()
Gets a free thread id.
Definition: cpu.cc:1706
FullO3CPU::readIntReg
RegVal readIntReg(PhysRegIdPtr phys_reg)
Definition: cpu.cc:1180
FullO3CPU::vecRenameMode
Enums::VecRegRenameMode vecRenameMode() const
Returns current vector renaming mode.
Definition: cpu.hh:342
FullO3CPU::instDone
void instDone(ThreadID tid, const DynInstPtr &inst)
Function to tell the CPU that an instruction has completed.
Definition: cpu.cc:1488
FullO3CPU::removeInstsUntil
void removeInstsUntil(const InstSeqNum &seq_num, ThreadID tid)
Remove all instructions younger than the given sequence number.
Definition: cpu.cc:1567
FullO3CPU::setVecReg
void setVecReg(PhysRegIdPtr reg_idx, const TheISA::VecRegContainer &val)
Definition: cpu.cc:1260
FullO3CPU::CommitIdx
@ CommitIdx
Definition: cpu.hh:597
FullO3CPU::FullO3CPUStats::vecRegfileReads
Stats::Scalar vecRegfileReads
Definition: cpu.hh:763
FullO3CPU::SwitchedOut
@ SwitchedOut
Definition: cpu.hh:112
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:676
FullO3CPU::readVecReg
const TheISA::VecRegContainer & readVecReg(PhysRegIdPtr reg_idx) const
Definition: cpu.cc:1196
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:148
FullO3CPU::activityThisCycle
void activityThisCycle()
Records that there was time buffer activity this cycle.
Definition: cpu.hh:637
FullO3CPU::readFloatReg
RegVal readFloatReg(PhysRegIdPtr phys_reg)
Definition: cpu.cc:1188
FullO3CPU::ppInstAccessComplete
ProbePointArg< PacketPtr > * ppInstAccessComplete
Definition: cpu.hh:178
FullO3CPU::lastActivatedCycle
Tick lastActivatedCycle
The cycle that the CPU was last activated by a new thread.
Definition: cpu.hh:685
FullO3CPU::insertThread
void insertThread(ThreadID tid)
Setup CPU to insert a thread's context.
Definition: cpu.cc:741
FullO3CPU::processInterrupts
void processInterrupts(const Fault &interrupt)
Processes any an interrupt fault.
Definition: cpu.cc:896
FullO3CPU::system
System * system
Pointer to the system.
Definition: cpu.hh:673
FullO3CPU::FullO3CPUStats::intRegfileWrites
Stats::Scalar intRegfileWrites
Definition: cpu.hh:758
FullO3CPU::isCpuDrained
bool isCpuDrained() const
Check if a system is in a drained state.
Definition: cpu.cc:1027
FullO3CPU::FullO3CPUStats::ipc
Stats::Formula ipc
Stat for the IPC per thread.
Definition: cpu.hh:752
FullO3CPU::drainSanityCheck
void drainSanityCheck() const
Perform sanity checks after a drain.
Definition: cpu.cc:1015
FullO3CPU::ImplState
O3ThreadState< Impl > ImplState
Definition: cpu.hh:99
FullO3CPU::tids
std::vector< ThreadID > tids
Available thread ids in the cpu.
Definition: cpu.hh:691
FullO3CPU::getAndIncrementInstSeq
InstSeqNum getAndIncrementInstSeq()
Get the current instruction sequence number, and increment it.
Definition: cpu.hh:283
Drainable::drainState
DrainState drainState() const
Return the current drain state of an object.
Definition: drain.hh:320
FullO3CPU::isDraining
bool isDraining() const
Is the CPU draining?
Definition: cpu.hh:237
FullO3CPU::vecMode
Enums::VecRegRenameMode vecMode
The rename mode of the vector registers.
Definition: cpu.hh:555
X86ISA::addr
Bitfield< 3 > addr
Definition: types.hh:80
FullO3CPU::activeThreads
std::list< ThreadID > activeThreads
Active Threads List.
Definition: cpu.hh:573
FullO3CPU::dumpInsts
void dumpInsts()
Debug function to print all instructions on the list.
Definition: cpu.cc:1643
BaseCPU
Definition: base.hh:104
cpu_policy.hh
types.hh
FullO3CPU::tryDrain
bool tryDrain()
Check if the pipeline has drained and signal drain done.
Definition: cpu.cc:999
FullO3CPU::halt
void halt()
Halts the CPU.
Definition: cpu.hh:310
FullO3CPU::removeList
std::queue< ListIt > removeList
List of all the instructions that will be removed at the end of this cycle.
Definition: cpu.hh:524
VecRegClass
@ VecRegClass
Vector Register.
Definition: reg_class.hh:56
FullO3CPU::Blocked
@ Blocked
Definition: cpu.hh:111
FullO3CPU::FullO3CPUStats
Definition: cpu.hh:731
simple_thread.hh
FullO3CPU::NumStages
@ NumStages
Definition: cpu.hh:598
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:424
FullO3CPU::readCCReg
RegVal readCCReg(PhysRegIdPtr phys_reg)
Definition: cpu.cc:1236
FullO3CPU::readArchVecReg
const TheISA::VecRegContainer & readArchVecReg(int reg_idx, ThreadID tid) const
Definition: cpu.cc:1316
LSQ::LSQRequest
Memory operation metadata.
Definition: lsq.hh:236
FullO3CPU::readArchIntReg
RegVal readArchIntReg(int reg_idx, ThreadID tid)
Definition: cpu.cc:1294
FullO3CPU::scheduleTickEvent
void scheduleTickEvent(Cycles delay)
Schedule tick event, regardless of its current state.
Definition: cpu.hh:130
base.hh
BaseMMU::demapPage
void demapPage(Addr vaddr, uint64_t asn)
Definition: mmu.hh:72
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:52
FullO3CPU::FullO3CPUStats::intRegfileReads
Stats::Scalar intRegfileReads
Definition: cpu.hh:757
FullO3CPU::renameQueue
TimeBuffer< RenameStruct > renameQueue
The rename stage's instruction queue.
Definition: cpu.hh:623
Stats::Formula
A formula for statistics that is calculated when printed.
Definition: statistics.hh:2538
FullO3CPU::getWritableVecPredReg
TheISA::VecPredRegContainer & getWritableVecPredReg(PhysRegIdPtr reg_idx)
Definition: cpu.cc:1228
Stats::Group
Statistics container.
Definition: group.hh:87
FullO3CPU::squashInstIt
void squashInstIt(const ListIt &instIt, ThreadID tid)
Removes the instruction pointed to by the iterator.
Definition: cpu.cc:1596
FullO3CPU::haltContext
void haltContext(ThreadID tid) override
Remove Thread from Active Threads List && Remove Thread Context from CPU.
Definition: cpu.cc:718
FullO3CPU::htmSendAbortSignal
void htmSendAbortSignal(ThreadID tid, uint64_t htm_uid, HtmFailureFaultCause cause)
Definition: cpu.cc:1809
FullO3CPU::FullO3CPUStats::ccRegfileReads
Stats::Scalar ccRegfileReads
Definition: cpu.hh:769
ElemIndex
uint16_t ElemIndex
Logical vector register elem index type.
Definition: types.hh:55
FullO3CPU::Running
@ Running
Definition: cpu.hh:108
FullO3CPU::Halted
@ Halted
Definition: cpu.hh:110
FullO3CPU::FullO3CPUStats::cpi
Stats::Formula cpi
Stat for the CPI per thread.
Definition: cpu.hh:748
FullO3CPU::iew
CPUPolicy::IEW iew
The issue/execute/writeback stages.
Definition: cpu.hh:549
Event::squash
void squash()
Squash the current event.
Definition: eventq.hh:469
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:496
Cycles
Cycles is a wrapper class for representing cycle counts, i.e.
Definition: types.hh:79
FullO3CPU::setVecLane
void setVecLane(PhysRegIdPtr phys_reg, const LD &val)
Write a lane of the destination vector register.
Definition: cpu.hh:373
FullO3CPU::readArchVecLane
VecLaneT< VE, true > readArchVecLane(int reg_idx, int lId, ThreadID tid) const
Read architectural vector register lane.
Definition: cpu.hh:413
FullO3CPU::isa
std::vector< TheISA::ISA * > isa
Definition: cpu.hh:585
FullO3CPU::init
void init() override
Initialize the CPU.
Definition: cpu.cc:555
CheckpointOut
std::ostream CheckpointOut
Definition: serialize.hh:64
PhysRegId
Physical register ID.
Definition: reg_class.hh:223
FullO3CPU::activateStage
void activateStage(const StageIdx idx)
Changes a stage's status to active within the activity recorder.
Definition: cpu.hh:640
ActivityRecorder::activateStage
void activateStage(const int idx)
Marks a stage as active.
Definition: activity.cc:88
FullO3CPU::readArchVecPredReg
const TheISA::VecPredRegContainer & readArchVecPredReg(int reg_idx, ThreadID tid) const
Definition: cpu.cc:1344
FullO3CPU::decode
CPUPolicy::Decode decode
The decode stage.
Definition: cpu.hh:543
FullO3CPU::FetchStruct
CPUPolicy::FetchStruct FetchStruct
Definition: cpu.hh:605
FullO3CPU::RenameIdx
@ RenameIdx
Definition: cpu.hh:595
FullO3CPU::iewQueue
TimeBuffer< IEWStruct > iewQueue
The IEW stage's instruction queue.
Definition: cpu.hh:626
RefCountingPtr< StaticInst >
FullO3CPU::pcState
void pcState(const TheISA::PCState &newPCState, ThreadID tid)
Sets the commit PC state of a specific thread.
Definition: cpu.cc:1443
BaseO3CPU::BaseO3CPU
BaseO3CPU(const BaseCPUParams &params)
Definition: cpu.cc:67
FullO3CPU::getWritableArchVecReg
TheISA::VecRegContainer & getWritableArchVecReg(int reg_idx, ThreadID tid)
Read architectural vector register for modification.
Definition: cpu.cc:1325
FullO3CPU::threadMap
std::map< ThreadID, unsigned > threadMap
Mapping for system thread id to cpu id.
Definition: cpu.hh:688
FullO3CPU::exitThreads
void exitThreads()
Terminate all threads that are ready to exit.
Definition: cpu.cc:1785
FullO3CPU::trap
void trap(const Fault &fault, ThreadID tid, const StaticInstPtr &inst)
Traps to handle given fault.
Definition: cpu.cc:913
SimObject::params
const Params & params() const
Definition: sim_object.hh:168
FullO3CPU::setMiscReg
void setMiscReg(int misc_reg, RegVal val, ThreadID tid)
Sets a misc.
Definition: cpu.cc:1172
std::list
STL list class.
Definition: stl.hh:51
ActivityRecorder::deactivateStage
void deactivateStage(const int idx)
Deactivates a stage.
Definition: activity.cc:105
FullO3CPU::O3CPU
Impl::O3CPU O3CPU
Definition: cpu.hh:97
MicroPC
uint16_t MicroPC
Definition: types.hh:150
FullO3CPU::totalOps
Counter totalOps() const override
Count the Total Ops (including micro ops) committed in the CPU.
Definition: cpu.cc:645
FullO3CPU::setFloatReg
void setFloatReg(PhysRegIdPtr phys_reg, RegVal val)
Definition: cpu.cc:1252
FullO3CPU::unscheduleTickEvent
void unscheduleTickEvent()
Unschedule tick event, regardless of its current state.
Definition: cpu.hh:139
FullO3CPU::scoreboard
Scoreboard scoreboard
Integer Register Scoreboard.
Definition: cpu.hh:583
PhysRegFile::readVecLane
VecLaneT< VE, true > readVecLane(PhysRegIdPtr phys_reg) const
Reads a vector register lane.
Definition: regfile.hh:222
CheckpointIn
Definition: serialize.hh:68
FullO3CPU::readVecPredReg
const TheISA::VecPredRegContainer & readVecPredReg(PhysRegIdPtr reg_idx) const
Definition: cpu.cc:1220
FullO3CPU::setVecPredReg
void setVecPredReg(PhysRegIdPtr reg_idx, const TheISA::VecPredRegContainer &val)
Definition: cpu.cc:1277
FullO3CPU::numActiveThreads
int numActiveThreads()
Returns the Number of Active Threads in the CPU.
Definition: cpu.hh:201
FullO3CPU::drain
DrainState drain() override
Starts draining the CPU's pipeline of all instructions in order to stop all memory accesses.
Definition: cpu.cc:936
FullO3CPU::readArchCCReg
RegVal readArchCCReg(int reg_idx, ThreadID tid)
Definition: cpu.cc:1362
scoreboard.hh
FullO3CPU::unserializeThread
void unserializeThread(CheckpointIn &cp, ThreadID tid) override
Unserialize one thread.
Definition: cpu.cc:929
FullO3CPU::FullO3CPUStats::totalIpc
Stats::Formula totalIpc
Stat for the total IPC.
Definition: cpu.hh:754
FullO3CPU::FetchIdx
@ FetchIdx
Definition: cpu.hh:593
FullO3CPU::mmu
BaseMMU * mmu
Definition: cpu.hh:115
FullO3CPU::readMiscReg
RegVal readMiscReg(int misc_reg, ThreadID tid)
Reads a misc.
Definition: cpu.cc:1157
RegVal
uint64_t RegVal
Definition: types.hh:174
FullO3CPU::scheduleThreadExitEvent
void scheduleThreadExitEvent(ThreadID tid)
If a thread is trying to exit and its corresponding trap event has been completed,...
Definition: cpu.cc:1764
Scoreboard
Implements a simple scoreboard to track which registers are ready.
Definition: scoreboard.hh:46
PhysRegFile::setVecLane
void setVecLane(PhysRegIdPtr phys_reg, const LD &val)
Get a vector register lane for modification.
Definition: regfile.hh:238
DrainState::Draining
@ Draining
Draining buffers pending serialization/handover.
FullO3CPU::readArchFloatReg
RegVal readArchFloatReg(int reg_idx, ThreadID tid)
Definition: cpu.cc:1305
FullO3CPU::FullO3CPUStats::vecPredRegfileWrites
Stats::Scalar vecPredRegfileWrites
Definition: cpu.hh:767
panic
#define panic(...)
This implements a cprintf based panic() function.
Definition: logging.hh:171
FullO3CPU::FullO3CPUStats::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:741
FullO3CPU::FullO3CPUStats::ccRegfileWrites
Stats::Scalar ccRegfileWrites
Definition: cpu.hh:770
FullO3CPU::lastRunningCycle
Cycles lastRunningCycle
The cycle that the CPU was last running, used for statistics.
Definition: cpu.hh:682
O3ThreadContext
Derived ThreadContext class for use with the O3CPU.
Definition: cpu.hh:71

Generated on Tue Mar 23 2021 19:41:18 for gem5 by doxygen 1.8.17