gem5 v24.0.0.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())
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
301 RegVal readMiscRegNoEffect(int misc_reg, ThreadID tid) const;
302
306 RegVal readMiscReg(int misc_reg, ThreadID tid);
307
309 void setMiscRegNoEffect(int misc_reg, RegVal val, ThreadID tid);
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
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:
489
491 void
493 {
495 }
496
498 void
500 {
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
void activity()
Records that there is activity this cycle.
Definition activity.cc:55
void deactivateStage(const int idx)
Deactivates a stage.
Definition activity.cc:108
void activateStage(const int idx)
Marks a stage as active.
Definition activity.cc:91
void demapPage(Addr vaddr, uint64_t asn)
Definition mmu.cc:97
Templated Checker class.
Definition cpu.hh:77
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
Physical register ID.
Definition reg_class.hh:415
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:264
Register ID: describe an architectural register with its class and index.
Definition reg_class.hh:94
ThreadContext is the external interface to all thread state for anything outside of the CPU.
O3CPU class, has each of the stages (fetch through commit) within it, as well as all of the time buff...
Definition cpu.hh:94
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:1141
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:1289
void drainSanityCheck() const
Perform sanity checks after a drain.
Definition cpu.cc:804
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:1446
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:954
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:1133
void setArchReg(const RegId &reg, RegVal val, ThreadID tid)
Definition cpu.cc:1098
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:715
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:855
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:708
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:1423
ThreadID getFreeTid()
Gets a free thread id.
Definition cpu.cc:1349
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:852
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:1337
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:947
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:941
void removeInstsUntil(const InstSeqNum &seq_num, ThreadID tid)
Remove all instructions younger than the given sequence number.
Definition cpu.cc:1217
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:1265
@ 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:721
void removeInstsNotInROB(ThreadID tid)
Remove all instructions that are not currently in the ROB.
Definition cpu.cc:1173
void takeOverFrom(BaseCPU *oldCPU) override
Takes over from another CPU.
Definition cpu.cc:898
void switchOut() override
Switches out this CPU.
Definition cpu.cc:884
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:789
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:692
void squashFromTC(ThreadID tid)
Initiates a squash of all in-flight instructions for a given thread.
Definition cpu.cc:1126
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:1245
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:919
RegVal getArchReg(const RegId &reg, ThreadID tid)
Architectural register accessors.
Definition cpu.cc:1074
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:727
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:685
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:928
bool isCpuDrained() const
Check if a system is in a drained state.
Definition cpu.cc:815
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:1378
void pcState(const PCStateBase &new_pc_state, ThreadID tid)
Sets the commit PC state of a specific thread.
Definition cpu.cc:1120
void scheduleThreadExitEvent(ThreadID tid)
If a thread is trying to exit and its corresponding trap event has been completed,...
Definition cpu.cc:1403
void updateThreadPriority()
Update The Order In Which We Process Threads.
Definition cpu.cc:1362
void setReg(PhysRegIdPtr phys_reg, RegVal val, ThreadID tid)
Definition cpu.cc:1022
bool isThreadExiting(ThreadID tid) const
Is the thread trying to exit?
Definition cpu.cc:1397
void removeFrontInst(const DynInstPtr &inst)
Remove an instruction from the front end of the list.
Definition cpu.cc:1160
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:1090
RegVal readMiscReg(int misc_reg, ThreadID tid)
Reads a misc.
Definition cpu.cc:934
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:1006
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:1316
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:79
RequestPort & getInstPort()
Definition fetch.hh:360
IEW handles both single threaded and SMT IEW (issue/execute/writeback).
Definition iew.hh:88
LSQ ldstQueue
Load / store queue.
Definition iew.hh:358
Memory operation metadata.
Definition lsq.hh:190
Fault pushRequest(const DynInstPtr &inst, bool isLoad, uint8_t *data, unsigned int size, Addr addr, Request::Flags flags, uint64_t *res, AtomicOpFunctorPtr amo_op, const std::vector< bool > &byte_enable)
Definition lsq.cc:783
RequestPort & getDataPort()
Definition lsq.hh:892
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.
bool scheduled() const
Determine if the current event is scheduled.
Definition eventq.hh:458
void squash()
Squash the current event.
Definition eventq.hh:465
void schedule(Event &event, Tick when)
Definition eventq.hh:1012
void reschedule(Event &event, Tick when, bool always=false)
Definition eventq.hh:1030
bool squashed() const
Check whether the event is squashed.
Definition eventq.hh:472
#define panic(...)
This implements a cprintf based panic() function.
Definition logging.hh:188
const Params & params() const
uint8_t flags
Definition helpers.cc:87
Bitfield< 5, 3 > reg
Definition types.hh:92
Bitfield< 63 > val
Definition misc.hh:804
Bitfield< 3 > addr
Definition types.hh:84
double Counter
All counters are of 64-bit values.
Definition types.hh:46
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria 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
uint64_t Tick
Tick count type.
Definition types.hh:58
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 Tue Jun 18 2024 16:24:01 for gem5 by doxygen 1.11.0