gem5 [DEVELOP-FOR-25.0]
Loading...
Searching...
No Matches
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
53#include "base/statistics.hh"
54#include "cpu/o3/comm.hh"
55#include "cpu/o3/commit.hh"
56#include "cpu/o3/decode.hh"
58#include "cpu/o3/fetch.hh"
59#include "cpu/o3/free_list.hh"
60#include "cpu/o3/iew.hh"
61#include "cpu/o3/limits.hh"
62#include "cpu/o3/rename.hh"
63#include "cpu/o3/rob.hh"
64#include "cpu/o3/scoreboard.hh"
66#include "cpu/activity.hh"
67#include "cpu/base.hh"
68#include "cpu/simple_thread.hh"
69#include "cpu/timebuf.hh"
70#include "params/BaseO3CPU.hh"
71#include "sim/process.hh"
72
73namespace gem5
74{
75
76template <class>
77class Checker;
78class ThreadContext;
79
80class Checkpoint;
81class Process;
82
83namespace o3
84{
85
86class ThreadContext;
87
93class CPU : public BaseCPU
94{
95 public:
97
98 friend class ThreadContext;
99
100 public:
109
112
115
118
119 private:
120
123
126
128 void
130 {
131 if (tickEvent.squashed())
133 else if (!tickEvent.scheduled())
135 }
136
138 void
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 CPU(const BaseO3CPUParams &params);
175
178
180 void regProbePoints() override;
181
182 void
183 demapPage(Addr vaddr, uint64_t asn)
184 {
185 mmu->demapPage(vaddr, asn);
186 }
187
191 void tick();
192
194 void init() override;
195
196 void startup() override;
197
199 int
201 {
202 return activeThreads.size();
203 }
204
206 void activateThread(ThreadID tid);
207
209 void deactivateThread(ThreadID tid);
210
212 void insertThread(ThreadID tid);
213
215 void removeThread(ThreadID tid);
216
218 Counter totalInsts() const override;
219
221 Counter totalOps() const override;
222
224 void activateContext(ThreadID tid) override;
225
227 void suspendContext(ThreadID tid) override;
228
232 void haltContext(ThreadID tid) override;
233
236
238 bool isDraining() const { return drainState() == DrainState::Draining; }
239
240 void serializeThread(CheckpointOut &cp, ThreadID tid) const override;
241 void unserializeThread(CheckpointIn &cp, ThreadID tid) override;
242
245
247 bool isThreadExiting(ThreadID tid) const;
248
254
256 void exitThreads();
257
258 public:
261 DrainState drain() override;
262
264 void drainResume() override;
265
273 void commitDrained(ThreadID tid);
274
276 void switchOut() override;
277
279 void takeOverFrom(BaseCPU *oldCPU) override;
280
281 void verifyMemoryMode() const override;
282
285
287 void trap(const Fault &fault, ThreadID tid, const StaticInstPtr &inst);
288
291
293 void processInterrupts(const Fault &interrupt);
294
296 void halt() { panic("Halt not implemented!\n"); }
297
299
302
307
310
314 void setMiscReg(int misc_reg, RegVal val, ThreadID tid);
315
316 RegVal getReg(PhysRegIdPtr phys_reg, ThreadID tid);
317 void getReg(PhysRegIdPtr phys_reg, void *val, ThreadID tid);
318 void *getWritableReg(PhysRegIdPtr phys_reg, ThreadID tid);
319
320 void setReg(PhysRegIdPtr phys_reg, RegVal val, ThreadID tid);
321 void setReg(PhysRegIdPtr phys_reg, const void *val, ThreadID tid);
322
328
329 RegVal getArchReg(const RegId &reg, ThreadID tid);
330 void getArchReg(const RegId &reg, void *val, ThreadID tid);
331 void *getWritableArchReg(const RegId &reg, ThreadID tid);
332
333 void setArchReg(const RegId &reg, RegVal val, ThreadID tid);
334 void setArchReg(const RegId &reg, const void *val, ThreadID tid);
335
337 void pcState(const PCStateBase &new_pc_state, ThreadID tid);
338
340 const PCStateBase &pcState(ThreadID tid);
341
346 void squashFromTC(ThreadID tid);
347
351 ListIt addInst(const DynInstPtr &inst);
352
354 void instDone(ThreadID tid, const DynInstPtr &inst);
355
359 void removeFrontInst(const DynInstPtr &inst);
360
364
366 void removeInstsUntil(const InstSeqNum &seq_num, ThreadID tid);
367
369 void squashInstIt(const ListIt &instIt, ThreadID tid);
370
372 void cleanUpRemovedInsts();
373
375 void dumpInsts();
376
377 public:
378#ifndef NDEBUG
381#endif
382
385
389 std::queue<ListIt> removeList;
390
391#ifdef GEM5_DEBUG
395 std::set<InstSeqNum> snList;
396#endif
397
402
403 protected:
406
409
412
415
418
421
424
427
430
433
436
442 std::unordered_map<ThreadID, bool> exitingThreads;
443
446
448
449 public:
463
466
469
472
475
478
479 private:
485
486 public:
488 void activityThisCycle() { activityRec.activity(); }
489
491 void
493 {
494 activityRec.activateStage(idx);
495 }
496
498 void
500 {
501 activityRec.deactivateStage(idx);
502 }
503
505 void wakeCPU();
506
507 virtual void wakeup(ThreadID tid) override;
508
511
512 public:
516 {
517 return thread[tid]->getTC();
518 }
519
521 InstSeqNum globalSeqNum;//[MaxThreads];
522
528
531
534
537
540
543
545 std::map<ThreadID, unsigned> threadMap;
546
549
551 Fault
552 pushRequest(const DynInstPtr& inst, bool isLoad, uint8_t *data,
553 unsigned int size, Addr addr, Request::Flags flags,
554 uint64_t *res, AtomicOpFunctorPtr amo_op = nullptr,
555 const std::vector<bool>& byte_enable=std::vector<bool>())
556
557 {
558 return iew.ldstQueue.pushRequest(inst, isLoad, data, size, addr,
559 flags, res, std::move(amo_op), byte_enable);
560 }
561
563 Port &
564 getInstPort() override
565 {
566 return fetch.getInstPort();
567 }
568
570 Port &
571 getDataPort() override
572 {
573 return iew.ldstQueue.getDataPort();
574 }
575
588
589 public:
590 // hardware transactional memory
591 void htmSendAbortSignal(ThreadID tid, uint64_t htm_uid,
592 HtmFailureFaultCause cause) override;
593};
594
595} // namespace o3
596} // namespace gem5
597
598#endif // __CPU_O3_CPU_HH__
const char data[]
ActivityRecorder helper class that informs the CPU if it can switch over to being idle or not.
Definition activity.hh:54
BaseCPU(const Params &params, bool is_checker=false)
Definition base.cc:129
Templated Checker class.
Definition cpu.hh:448
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...
Cycles is a wrapper class for representing cycle counts, i.e.
Definition types.hh:79
Ports are used to interface objects to each other.
Definition port.hh:62
ProbePointArg generates a point for the class of Arg.
Definition probe.hh:273
Register ID: describe an architectural register with its class and index.
Definition reg_class.hh:94
gem5::Flags< FlagsType > Flags
Definition request.hh:102
ThreadContext is the external interface to all thread state for anything outside of the CPU.
std::vector< BaseISA * > isa
Definition cpu.hh:447
void instDone(ThreadID tid, const DynInstPtr &inst)
Function to tell the CPU that an instruction has completed.
Definition cpu.cc:1132
IEW iew
The issue/execute/writeback stages.
Definition cpu.hh:414
gem5::Checker< DynInstPtr > * checker
Pointer to the checker, which can dynamically verify instruction results at run time.
Definition cpu.hh:527
void dumpInsts()
Debug function to print all instructions on the list.
Definition cpu.cc:1280
void drainSanityCheck() const
Perform sanity checks after a drain.
Definition cpu.cc:795
void htmSendAbortSignal(ThreadID tid, uint64_t htm_uid, HtmFailureFaultCause cause) override
This function is used to instruct the memory subsystem that a transaction should be aborted and the s...
Definition cpu.cc:1437
std::list< DynInstPtr > instList
List of all the instructions in flight.
Definition cpu.hh:384
RegVal getReg(PhysRegIdPtr phys_reg, ThreadID tid)
Definition cpu.cc:945
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:552
ListIt addInst(const DynInstPtr &inst)
Function to add instruction onto the head of the list of the instructions.
Definition cpu.cc:1124
void setArchReg(const RegId &reg, RegVal val, ThreadID tid)
Definition cpu.cc:1089
ROB rob
The re-order buffer.
Definition cpu.hh:432
InstSeqNum globalSeqNum
The global sequence number counter.
Definition cpu.hh:521
void haltContext(ThreadID tid) override
Remove Thread from Active Threads List && Remove Thread Context from CPU.
Definition cpu.cc:573
TimeBuffer< DecodeStruct > decodeQueue
The decode stage's instruction queue.
Definition cpu.hh:471
EventFunctionWrapper tickEvent
The tick event used for scheduling CPU ticks.
Definition cpu.hh:122
void serializeThread(CheckpointOut &cp, ThreadID tid) const override
Serialize a single thread.
Definition cpu.cc:706
void startup() override
startup() is the final initialization call before simulation.
Definition cpu.cc:439
void drainResume() override
Resumes execution after a drain.
Definition cpu.cc:846
Rename rename
The dispatch stage.
Definition cpu.hh:411
void regProbePoints() override
Register probe points.
Definition cpu.cc:323
int numActiveThreads()
Returns the Number of Active Threads in the CPU.
Definition cpu.hh:200
UnifiedRenameMap::PerThreadUnifiedRenameMap PerThreadUnifiedRenameMap
Definition cpu.hh:113
void deactivateThread(ThreadID tid)
Remove Thread from Active Threads List.
Definition cpu.cc:467
Counter totalInsts() const override
Count the Total Instructions Committed in the CPU.
Definition cpu.cc:491
void trap(const Fault &fault, ThreadID tid, const StaticInstPtr &inst)
Traps to handle given fault.
Definition cpu.cc:699
CPU(const BaseO3CPUParams &params)
Constructs a CPU with the given parameters.
Definition cpu.cc:72
ProbePointArg< PacketPtr > * ppInstAccessComplete
Definition cpu.hh:176
void exitThreads()
Terminate all threads that are ready to exit.
Definition cpu.cc:1414
ThreadID getFreeTid()
Gets a free thread id.
Definition cpu.cc:1340
std::vector< ThreadState * > thread
Pointers to all of the threads in the CPU.
Definition cpu.hh:533
void tick()
Ticks CPU, calling tick() on each stage, and checking the overall activity to see if the CPU should d...
Definition cpu.cc:363
void halt()
Halts the CPU.
Definition cpu.hh:296
void removeThread(ThreadID tid)
Remove all of a thread's context from CPU.
Definition cpu.cc:633
void commitDrained(ThreadID tid)
Commit has reached a safe point to drain a thread.
Definition cpu.cc:843
void unscheduleTickEvent()
Unschedule tick event, regardless of its current state.
Definition cpu.hh:139
gem5::o3::CPU::CPUStats cpuStats
UnifiedFreeList freeList
The free list.
Definition cpu.hh:423
Status _status
Overall CPU status.
Definition cpu.hh:117
std::list< DynInstPtr >::iterator ListIt
Definition cpu.hh:96
void activateContext(ThreadID tid) override
Add Thread to Active Threads List.
Definition cpu.cc:515
virtual void wakeup(ThreadID tid) override
Definition cpu.cc:1328
bool removeInstsThisCycle
Records if instructions need to be removed this cycle due to being retired or squashed.
Definition cpu.hh:401
void setMiscReg(int misc_reg, RegVal val, ThreadID tid)
Sets a misc.
Definition cpu.cc:938
void activityThisCycle()
Records that there was time buffer activity this cycle.
Definition cpu.hh:488
std::vector< ThreadID > tids
Available thread ids in the cpu.
Definition cpu.hh:548
Port & getInstPort() override
Used by the fetch unit to get a hold of the instruction port.
Definition cpu.hh:564
ProbePointArg< std::pair< DynInstPtr, PacketPtr > > * ppDataAccessComplete
Definition cpu.hh:177
PerThreadUnifiedRenameMap commitRenameMap
The commit rename map.
Definition cpu.hh:429
void setMiscRegNoEffect(int misc_reg, RegVal val, ThreadID tid)
Sets a miscellaneous register.
Definition cpu.cc:932
void removeInstsUntil(const InstSeqNum &seq_num, ThreadID tid)
Remove all instructions younger than the given sequence number.
Definition cpu.cc:1208
bool isDraining() const
Is the CPU draining?
Definition cpu.hh:238
std::queue< ListIt > removeList
List of all the instructions that will be removed at the end of this cycle.
Definition cpu.hh:389
TimeBuffer< FetchStruct > fetchQueue
The fetch stage's instruction queue.
Definition cpu.hh:468
void cleanUpRemovedInsts()
Cleans up all instructions on the remove list.
Definition cpu.cc:1256
@ SwitchedOut
Definition cpu.hh:107
Commit commit
The commit stage.
Definition cpu.hh:417
void suspendContext(ThreadID tid) override
Remove Thread from Active Threads List.
Definition cpu.cc:553
void demapPage(Addr vaddr, uint64_t asn)
Definition cpu.hh:183
void unserializeThread(CheckpointIn &cp, ThreadID tid) override
Unserialize one thread.
Definition cpu.cc:712
void removeInstsNotInROB(ThreadID tid)
Remove all instructions that are not currently in the ROB.
Definition cpu.cc:1164
void takeOverFrom(BaseCPU *oldCPU) override
Takes over from another CPU.
Definition cpu.cc:889
void switchOut() override
Switches out this CPU.
Definition cpu.cc:875
PhysRegFile regFile
The register file.
Definition cpu.hh:420
Cycles lastRunningCycle
The cycle that the CPU was last running, used for statistics.
Definition cpu.hh:539
bool tryDrain()
Check if the pipeline has drained and signal drain done.
Definition cpu.cc:780
friend class ThreadContext
Definition cpu.hh:98
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:484
void processInterrupts(const Fault &interrupt)
Processes any an interrupt fault.
Definition cpu.cc:683
void squashFromTC(ThreadID tid)
Initiates a squash of all in-flight instructions for a given thread.
Definition cpu.cc:1117
TimeBuffer< TimeStruct > timeBuffer
The main time buffer to do backwards communication.
Definition cpu.hh:465
Tick lastActivatedCycle
The cycle that the CPU was last activated by a new thread.
Definition cpu.hh:542
StageIdx
Enum to give each stage a specific index, so when calling activateStage() or deactivateStage(),...
Definition cpu.hh:455
int instcount
Count of total number of dynamic instructions in flight.
Definition cpu.hh:380
void deactivateStage(const StageIdx idx)
Changes a stage's status to inactive within the activity recorder.
Definition cpu.hh:499
void squashInstIt(const ListIt &instIt, ThreadID tid)
Removes the instruction pointed to by the iterator.
Definition cpu.cc:1236
BaseMMU * mmu
Definition cpu.hh:110
System * system
Pointer to the system.
Definition cpu.hh:530
Decode decode
The decode stage.
Definition cpu.hh:408
void verifyMemoryMode() const override
Verify that the system is in a memory mode supported by the CPU.
Definition cpu.cc:910
RegVal getArchReg(const RegId &reg, ThreadID tid)
Architectural register accessors.
Definition cpu.cc:1065
Port & getDataPort() override
Get the dcache port (used to find block size for translations).
Definition cpu.hh:571
TimeBuffer< IEWStruct > iewQueue
The IEW stage's instruction queue.
Definition cpu.hh:477
EventFunctionWrapper threadExitEvent
The exit event used for terminating all ready-to-exit threads.
Definition cpu.hh:125
DrainState drain() override
Starts draining the CPU's pipeline of all instructions in order to stop all memory accesses.
Definition cpu.cc:718
std::list< ThreadID > activeThreads
Active Threads List.
Definition cpu.hh:435
PerThreadUnifiedRenameMap renameMap
The rename map.
Definition cpu.hh:426
Fault getInterrupts()
Returns the Fault for any valid interrupt.
Definition cpu.cc:676
InstSeqNum getAndIncrementInstSeq()
Get the current instruction sequence number, and increment it.
Definition cpu.hh:284
void scheduleTickEvent(Cycles delay)
Schedule tick event, regardless of its current state.
Definition cpu.hh:129
RegVal readMiscRegNoEffect(int misc_reg, ThreadID tid) const
Register accessors.
Definition cpu.cc:919
bool isCpuDrained() const
Check if a system is in a drained state.
Definition cpu.cc:806
Fetch fetch
The fetch stage.
Definition cpu.hh:405
void addThreadToExitingList(ThreadID tid)
Insert tid to the list of threads trying to exit.
Definition cpu.cc:1369
void pcState(const PCStateBase &new_pc_state, ThreadID tid)
Sets the commit PC state of a specific thread.
Definition cpu.cc:1111
void scheduleThreadExitEvent(ThreadID tid)
If a thread is trying to exit and its corresponding trap event has been completed,...
Definition cpu.cc:1394
void updateThreadPriority()
Update The Order In Which We Process Threads.
Definition cpu.cc:1353
void setReg(PhysRegIdPtr phys_reg, RegVal val, ThreadID tid)
Definition cpu.cc:1013
bool isThreadExiting(ThreadID tid) const
Is the thread trying to exit?
Definition cpu.cc:1388
LSQ::LSQRequest LSQRequest
Definition cpu.hh:111
void removeFrontInst(const DynInstPtr &inst)
Remove an instruction from the front end of the list.
Definition cpu.cc:1151
std::map< ThreadID, unsigned > threadMap
Mapping for system thread id to cpu id.
Definition cpu.hh:545
void * getWritableArchReg(const RegId &reg, ThreadID tid)
Definition cpu.cc:1081
RegVal readMiscReg(int misc_reg, ThreadID tid)
Reads a misc.
Definition cpu.cc:925
void init() override
Initialize the CPU.
Definition cpu.cc:421
void activateThread(ThreadID tid)
Add Thread to Active Threads List.
Definition cpu.cc:451
gem5::ThreadContext * tcBase(ThreadID tid)
Returns a pointer to a thread context.
Definition cpu.hh:515
void activateStage(const StageIdx idx)
Changes a stage's status to active within the activity recorder.
Definition cpu.hh:492
std::list< int > cpuWaitList
Threads Scheduled to Enter CPU.
Definition cpu.hh:536
Scoreboard scoreboard
Integer Register Scoreboard.
Definition cpu.hh:445
void * getWritableReg(PhysRegIdPtr phys_reg, ThreadID tid)
Definition cpu.cc:997
std::unordered_map< ThreadID, bool > exitingThreads
This is a list of threads that are trying to exit.
Definition cpu.hh:442
Counter totalOps() const override
Count the Total Ops (including micro ops) committed in the CPU.
Definition cpu.cc:503
void wakeCPU()
Wakes the CPU, rescheduling the CPU if it's not already active.
Definition cpu.cc:1307
void insertThread(ThreadID tid)
Setup CPU to insert a thread's context.
Definition cpu.cc:595
TimeBuffer< RenameStruct > renameQueue
The rename stage's instruction queue.
Definition cpu.hh:474
Commit handles single threaded and SMT commit.
Definition commit.hh:92
Decode class handles both single threaded and SMT decode.
Definition decode.hh:70
Fetch class handles both single threaded and SMT fetch.
Definition fetch.hh:80
IEW handles both single threaded and SMT IEW (issue/execute/writeback).
Definition iew.hh:88
Memory operation metadata.
Definition lsq.hh:220
Simple physical register file class.
Definition regfile.hh:66
ROB class.
Definition rob.hh:72
Rename handles both single threaded and SMT rename.
Definition rename.hh:79
Implements a simple scoreboard to track which registers are ready.
Definition scoreboard.hh:55
Derived ThreadContext class for use with the O3CPU.
FreeList class that simply holds the list of free integer and floating point registers.
Definition free_list.hh:125
std::array< UnifiedRenameMap, MaxThreads > PerThreadUnifiedRenameMap
Statistics container.
Definition group.hh:93
This is a simple scalar statistic, like a counter.
STL list class.
Definition stl.hh:51
STL vector class.
Definition stl.hh:37
std::unique_ptr< AtomicOpFunctor > AtomicOpFunctorPtr
Definition amo.hh:269
DrainState drainState() const
Return the current drain state of an object.
Definition drain.hh:324
DrainState
Object drain/handover states.
Definition drain.hh:75
@ Draining
Draining buffers pending serialization/handover.
Definition drain.hh:77
void schedule(Event &event, Tick when)
Definition eventq.hh:1012
void reschedule(Event &event, Tick when, bool always=false)
Definition eventq.hh:1030
#define panic(...)
This implements a cprintf based panic() function.
Definition logging.hh:220
const Params & params() const
Bitfield< 5, 3 > reg
Definition types.hh:92
Bitfield< 63 > val
Definition misc.hh:804
Bitfield< 3 > addr
Definition types.hh:84
RefCountingPtr< DynInst > DynInstPtr
double Counter
All counters are of 64-bit values.
Definition types.hh:46
Copyright (c) 2024 Arm Limited All rights reserved.
Definition binary32.hh:36
std::shared_ptr< FaultBase > Fault
Definition types.hh:249
int16_t ThreadID
Thread index/ID type.
Definition types.hh:235
uint64_t RegVal
Definition types.hh:173
std::ostream CheckpointOut
Definition serialize.hh:66
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition types.hh:147
PhysRegId * PhysRegIdPtr
Definition reg_class.hh:510
uint64_t Tick
Tick count type.
Definition types.hh:58
RefCountingPtr< StaticInst > StaticInstPtr
HtmFailureFaultCause
Definition htm.hh:48
uint64_t InstSeqNum
Definition inst_seq.hh:40
Declaration of Statistics objects.
statistics::Scalar timesIdled
Stat for total number of times the CPU is descheduled.
Definition cpu.hh:581
statistics::Scalar quiesceCycles
Stat for total number of cycles the CPU spends descheduled due to a quiesce operation or waiting for ...
Definition cpu.hh:586
statistics::Scalar idleCycles
Stat for total number of cycles the CPU spends descheduled.
Definition cpu.hh:583
CPUStats(CPU *cpu)
Definition cpu.cc:339

Generated on Mon May 26 2025 09:19:07 for gem5 by doxygen 1.13.2