gem5  v21.1.0.2
commit.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010-2012, 2014, 2019 ARM Limited
3  * All rights reserved.
4  *
5  * The license below extends only to copyright in the software and shall
6  * not be construed as granting a license to any other intellectual
7  * property including but not limited to intellectual property relating
8  * to a hardware implementation of the functionality of the software
9  * licensed hereunder. You may use the software subject to the license
10  * terms below provided that you ensure that this notice is replicated
11  * unmodified and in its entirety in all distributions of the software,
12  * modified or unmodified, in source code or in binary form.
13  *
14  * Copyright (c) 2004-2006 The Regents of The University of Michigan
15  * All rights reserved.
16  *
17  * Redistribution and use in source and binary forms, with or without
18  * modification, are permitted provided that the following conditions are
19  * met: redistributions of source code must retain the above copyright
20  * notice, this list of conditions and the following disclaimer;
21  * redistributions in binary form must reproduce the above copyright
22  * notice, this list of conditions and the following disclaimer in the
23  * documentation and/or other materials provided with the distribution;
24  * neither the name of the copyright holders nor the names of its
25  * contributors may be used to endorse or promote products derived from
26  * this software without specific prior written permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  */
40 
41 #ifndef __CPU_O3_COMMIT_HH__
42 #define __CPU_O3_COMMIT_HH__
43 
44 #include <queue>
45 
46 #include "base/statistics.hh"
47 #include "cpu/exetrace.hh"
48 #include "cpu/inst_seq.hh"
49 #include "cpu/o3/comm.hh"
50 #include "cpu/o3/dyn_inst_ptr.hh"
51 #include "cpu/o3/iew.hh"
52 #include "cpu/o3/limits.hh"
53 #include "cpu/o3/rename_map.hh"
54 #include "cpu/o3/rob.hh"
55 #include "cpu/timebuf.hh"
56 #include "enums/CommitPolicy.hh"
57 #include "sim/probe/probe.hh"
58 
59 namespace gem5
60 {
61 
62 struct O3CPUParams;
63 
64 namespace o3
65 {
66 
67 class ThreadState;
68 
91 class Commit
92 {
93  public:
98  {
101  };
102 
105  {
111  SquashAfterPending, //< Committing instructions before a squash.
112  };
113 
114  private:
122  CommitPolicy commitPolicy;
123 
129 
131  void processTrapEvent(ThreadID tid);
132 
133  public:
135  Commit(CPU *_cpu, const O3CPUParams &params);
136 
138  std::string name() const;
139 
141  void regProbePoints();
142 
144  void setThreads(std::vector<ThreadState *> &threads);
145 
148 
150 
153 
155  void setIEWQueue(TimeBuffer<IEWStruct> *iq_ptr);
156 
158  void setIEWStage(IEW *iew_stage);
159 
165 
168 
171 
173  void setROB(ROB *rob_ptr);
174 
176  void startupStage();
177 
179  void clearStates(ThreadID tid);
180 
182  void drain();
183 
185  void drainResume();
186 
188  void drainSanityCheck() const;
189 
191  bool isDrained() const;
192 
194  void takeOverFrom();
195 
197  void deactivateThread(ThreadID tid);
198 
200  bool executingHtmTransaction(ThreadID) const;
201 
202  /* Reset HTM tracking, e.g. after an abort */
204 
206  void tick();
207 
211  void commit();
212 
214  size_t numROBFreeEntries(ThreadID tid);
215 
217  void generateTrapEvent(ThreadID tid, Fault inst_fault);
218 
222  void generateTCEvent(ThreadID tid);
223 
224  private:
228  void updateStatus();
229 
234  bool changedROBEntries();
235 
237  void squashAll(ThreadID tid);
238 
240  void squashFromTrap(ThreadID tid);
241 
243  void squashFromTC(ThreadID tid);
244 
247 
276  void squashAfter(ThreadID tid, const DynInstPtr &head_inst);
277 
279  void handleInterrupt();
280 
282  void propagateInterrupt();
283 
285  void commitInsts();
286 
290  bool commitHead(const DynInstPtr &head_inst, unsigned inst_num);
291 
293  void getInsts();
294 
296  void markCompletedInsts();
297 
300 
303 
306 
307  public:
309  TheISA::PCState pcState(ThreadID tid) { return pc[tid]; }
310 
313  { pc[tid] = val; }
314 
316  Addr instAddr(ThreadID tid) { return pc[tid].instAddr(); }
317 
319  Addr nextInstAddr(ThreadID tid) { return pc[tid].nextInstAddr(); }
320 
322  Addr microPC(ThreadID tid) { return pc[tid].microPC(); }
323 
324  private:
327 
330 
333 
335 
337 
340 
343 
346 
349 
350  public:
353 
354  private:
357 
360 
365 
370 
373 
376 
385 
388 
391 
394 
397 
399 
403  const unsigned renameWidth;
404 
406  const unsigned commitWidth;
407 
410 
415 
422 
427 
430 
435 
438 
441 
444 
447 
451 
454 
457 
460 
466 
468  void updateComInstStats(const DynInstPtr &inst);
469 
470  // HTM
473 
475  {
491 
516 
519  } stats;
520 };
521 
522 } // namespace o3
523 } // namespace gem5
524 
525 #endif // __CPU_O3_COMMIT_HH__
gem5::o3::Commit::drainPending
bool drainPending
Is a drain pending? Commit is looking for an instruction boundary while there are no pending interrup...
Definition: commit.hh:414
gem5::statistics::Scalar
This is a simple scalar statistic, like a counter.
Definition: statistics.hh:1927
gem5::o3::Commit::setActiveThreads
void setActiveThreads(std::list< ThreadID > *at_ptr)
Sets pointer to list of active threads.
Definition: commit.cc:299
gem5::o3::Commit::renameMap
UnifiedRenameMap * renameMap[MaxThreads]
Rename map interface.
Definition: commit.hh:456
gem5::o3::Commit::setROB
void setROB(ROB *rob_ptr)
Sets pointer to the ROB.
Definition: commit.cc:311
gem5::o3::Commit::TrapPending
@ TrapPending
Definition: commit.hh:109
gem5::o3::Commit::fetchToCommitDelay
const Cycles fetchToCommitDelay
Definition: commit.hh:398
gem5::o3::Commit::takeOverFrom
void takeOverFrom()
Takes over from another CPU's thread.
Definition: commit.cc:400
gem5::o3::Commit::CommitStats::instsCommitted
statistics::Vector instsCommitted
Total number of instructions committed.
Definition: commit.hh:493
gem5::o3::Commit::CommitStats::commitEligibleSamples
statistics::Scalar commitEligibleSamples
Number of cycles where the commit bandwidth limit is reached.
Definition: commit.hh:518
gem5::o3::Commit::squashFromTC
void squashFromTC(ThreadID tid)
Handles squashing due to an TC write.
Definition: commit.cc:585
gem5::o3::Commit::regProbePoints
void regProbePoints()
Registers probes.
Definition: commit.cc:139
gem5::o3::Commit::Commit
Commit(CPU *_cpu, const O3CPUParams &params)
Construct a Commit with the given parameters.
Definition: commit.cc:85
gem5::o3::Commit::CommitStats::loads
statistics::Vector loads
Stat for the total number of committed loads.
Definition: commit.hh:499
gem5::o3::Commit::renameWidth
const unsigned renameWidth
Rename width, in instructions.
Definition: commit.hh:403
gem5::statistics::Distribution
A simple distribution stat.
Definition: statistics.hh:2081
gem5::o3::Commit::setIEWQueue
void setIEWQueue(TimeBuffer< IEWStruct > *iq_ptr)
Sets the pointer to the queue coming from IEW.
Definition: commit.cc:284
gem5::o3::Commit::CommitStats::numCommittedDist
statistics::Distribution numCommittedDist
Distribution of the number of committed instructions each cycle.
Definition: commit.hh:490
gem5::o3::Commit::drain
void drain()
Initializes the draining of commit.
Definition: commit.cc:348
gem5::o3::Commit::CommitStats::committedInstType
statistics::Vector2d committedInstType
Committed instructions by instruction type (OpClass)
Definition: commit.hh:515
gem5::o3::Commit::pc
TheISA::PCState pc[MaxThreads]
The commit PC state of each thread.
Definition: commit.hh:434
gem5::o3::Commit::renameQueue
TimeBuffer< RenameStruct > * renameQueue
Rename instruction queue interface, for ROB.
Definition: commit.hh:345
gem5::o3::Commit::ppSquash
ProbePointArg< DynInstPtr > * ppSquash
To probe when an instruction is squashed.
Definition: commit.hh:128
gem5::o3::Commit::squashAfterInst
DynInstPtr squashAfterInst[MaxThreads]
Instruction passed to squashAfter().
Definition: commit.hh:384
gem5::o3::Commit::setThreads
void setThreads(std::vector< ThreadState * > &threads)
Sets the list of threads.
Definition: commit.cc:248
gem5::o3::Commit::timeBuffer
TimeBuffer< TimeStruct > * timeBuffer
Time buffer interface.
Definition: commit.hh:326
gem5::o3::Commit::fromIEW
TimeBuffer< IEWStruct >::wire fromIEW
Wire to read information from IEW queue.
Definition: commit.hh:342
gem5::o3::Commit::priority_list
std::list< ThreadID > priority_list
Priority List used for Commit Policy.
Definition: commit.hh:387
gem5::o3::Commit::wroteToTimeBuffer
bool wroteToTimeBuffer
Records that commit has written to the time buffer this cycle.
Definition: commit.hh:364
gem5::o3::Commit::changedROBEntries
bool changedROBEntries()
Returns if any of the threads have the number of ROB entries changed on this cycle.
Definition: commit.cc:476
gem5::o3::Commit::startupStage
void startupStage()
Initializes stage by sending back the number of free entries.
Definition: commit.cc:314
gem5::X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:775
gem5::o3::Commit::pcState
void pcState(const TheISA::PCState &val, ThreadID tid)
Sets the PC of a specific thread.
Definition: commit.hh:312
exetrace.hh
gem5::o3::Commit::setRenameMap
void setRenameMap(UnifiedRenameMap rm_ptr[MaxThreads])
Sets pointer to the commited state rename map.
Definition: commit.cc:305
gem5::statistics::Vector2d
A 2-Dimensional vecto of scalar stats.
Definition: statistics.hh:2055
gem5::o3::Commit::commitInsts
void commitInsts()
Commits as many instructions as possible.
Definition: commit.cc:946
gem5::o3::Commit::ppCommit
ProbePointArg< DynInstPtr > * ppCommit
Probe Points.
Definition: commit.hh:125
gem5::statistics::Vector
A vector of scalar stats.
Definition: statistics.hh:2003
gem5::o3::Commit::CommitStats
Definition: commit.hh:474
std::vector
STL vector class.
Definition: stl.hh:37
gem5::o3::Commit::FetchTrapPending
@ FetchTrapPending
Definition: commit.hh:110
iew.hh
gem5::o3::Commit::ThreadStatus
ThreadStatus
Individual thread status.
Definition: commit.hh:104
gem5::o3::Commit::squashFromSquashAfter
void squashFromSquashAfter(ThreadID tid)
Handles a squash from a squashAfter() request.
Definition: commit.cc:601
gem5::o3::Commit::setRenameQueue
void setRenameQueue(TimeBuffer< RenameStruct > *rq_ptr)
Sets the pointer to the queue coming from rename.
Definition: commit.cc:275
gem5::o3::Commit::CommitStatus
CommitStatus
Overall commit status.
Definition: commit.hh:97
gem5::o3::Commit::committedStores
bool committedStores[MaxThreads]
Records if there were any stores committed this cycle.
Definition: commit.hh:446
gem5::o3::Commit::generateTrapEvent
void generateTrapEvent(ThreadID tid, Fault inst_fault)
Generates an event to schedule a squash due to a trap.
Definition: commit.cc:499
gem5::o3::Commit::deactivateThread
void deactivateThread(ThreadID tid)
Deschedules a thread from scheduling.
Definition: commit.cc:415
rob.hh
gem5::o3::Commit::commitToIEWDelay
const Cycles commitToIEWDelay
Commit to IEW delay.
Definition: commit.hh:393
gem5::RefCountingPtr< DynInst >
gem5::TimeBuffer
Definition: timebuf.hh:40
gem5::o3::Commit::numROBFreeEntries
size_t numROBFreeEntries(ThreadID tid)
Returns the number of free ROB entries for a specific thread.
Definition: commit.cc:493
gem5::Cycles
Cycles is a wrapper class for representing cycle counts, i.e.
Definition: types.hh:78
gem5::o3::Commit::htmStarts
int htmStarts[MaxThreads]
Definition: commit.hh:471
gem5::o3::Commit::name
std::string name() const
Returns the name of the Commit.
Definition: commit.cc:136
gem5::o3::Commit::stats
gem5::o3::Commit::CommitStats stats
gem5::o3::Commit::CommitStats::branchMispredicts
statistics::Scalar branchMispredicts
Stat for the total number of branch mispredicts that caused a squash.
Definition: commit.hh:488
gem5::o3::Commit::iewStage
IEW * iewStage
The pointer to the IEW stage.
Definition: commit.hh:164
timebuf.hh
gem5::o3::Commit::activeThreads
std::list< ThreadID > * activeThreads
Pointer to the list of active threads.
Definition: commit.hh:453
gem5::o3::Commit::changedROBNumEntries
bool changedROBNumEntries[MaxThreads]
Records if the number of ROB entries has changed this cycle.
Definition: commit.hh:369
gem5::o3::Commit::iewQueue
TimeBuffer< IEWStruct > * iewQueue
IEW instruction queue interface.
Definition: commit.hh:339
comm.hh
gem5::o3::Commit::generateTCEvent
void generateTCEvent(ThreadID tid)
Records that commit needs to initiate a squash due to an external state update through the TC.
Definition: commit.cc:524
gem5::o3::Commit::renameToROBDelay
const Cycles renameToROBDelay
Rename to ROB delay.
Definition: commit.hh:396
gem5::o3::Commit::squashAll
void squashAll(ThreadID tid)
Squashes all in flight instructions.
Definition: commit.cc:533
gem5::o3::Commit::CommitStats::floating
statistics::Vector floating
Total number of floating point instructions.
Definition: commit.hh:509
inst_seq.hh
gem5::o3::CPU
O3CPU class, has each of the stages (fetch through commit) within it, as well as all of the time buff...
Definition: cpu.hh:95
gem5::o3::Commit
Commit handles single threaded and SMT commit.
Definition: commit.hh:91
gem5::o3::Commit::propagateInterrupt
void propagateInterrupt()
Get fetch redirecting so we can handle an interrupt.
Definition: commit.cc:760
gem5::Fault
std::shared_ptr< FaultBase > Fault
Definition: types.hh:255
gem5::o3::Commit::Running
@ Running
Definition: commit.hh:106
gem5::o3::Commit::processTrapEvent
void processTrapEvent(ThreadID tid)
Mark the thread as processing a trap.
Definition: commit.cc:78
gem5::o3::Commit::isDrained
bool isDrained() const
Has the stage drained?
Definition: commit.cc:373
gem5::o3::Commit::rob
ROB * rob
ROB interface.
Definition: commit.hh:352
gem5::o3::Commit::commitStatus
ThreadStatus commitStatus[MaxThreads]
Per-thread status.
Definition: commit.hh:120
gem5::o3::Commit::roundRobin
ThreadID roundRobin()
Returns the thread ID to use based on a round robin policy.
Definition: commit.cc:1474
gem5::o3::Commit::microPC
Addr microPC(ThreadID tid)
Reads the micro PC of a specific thread.
Definition: commit.hh:322
gem5::o3::Commit::Active
@ Active
Definition: commit.hh:99
gem5::o3::Commit::getInsts
void getInsts()
Gets instructions from rename and inserts them into the ROB.
Definition: commit.cc:1331
gem5::o3::Commit::avoidQuiesceLiveLock
bool avoidQuiesceLiveLock
Have we had an interrupt pending and then seen it de-asserted because of a masking change?...
Definition: commit.hh:465
gem5::o3::Commit::htmStops
int htmStops[MaxThreads]
Definition: commit.hh:472
gem5::o3::Commit::ROBSquashing
@ ROBSquashing
Definition: commit.hh:108
gem5::MipsISA::PCState
GenericISA::DelaySlotPCState< 4 > PCState
Definition: pcstate.hh:40
statistics.hh
gem5::o3::IEW
IEW handles both single threaded and SMT IEW (issue/execute/writeback).
Definition: iew.hh:87
gem5::o3::Commit::commitHead
bool commitHead(const DynInstPtr &head_inst, unsigned inst_num)
Tries to commit the head ROB instruction passed in.
Definition: commit.cc:1145
gem5::o3::Commit::toIEW
TimeBuffer< TimeStruct >::wire toIEW
Wire to write information heading to previous stages.
Definition: commit.hh:329
gem5::o3::Commit::resetHtmStartsStops
void resetHtmStartsStops(ThreadID)
Definition: commit.cc:435
gem5::o3::Commit::squashAfter
void squashAfter(ThreadID tid, const DynInstPtr &head_inst)
Handle squashing from instruction with SquashAfter set.
Definition: commit.cc:618
gem5::o3::Commit::oldestReady
ThreadID oldestReady()
Returns the thread ID to use based on an oldest instruction policy.
Definition: commit.cc:1501
gem5::o3::Commit::CommitStats::commitSquashedInsts
statistics::Scalar commitSquashedInsts
Stat for the total number of squashed instructions discarded by commit.
Definition: commit.hh:480
gem5::o3::Commit::commitWidth
const unsigned commitWidth
Commit width, in instructions.
Definition: commit.hh:406
gem5::o3::Commit::clearStates
void clearStates(ThreadID tid)
Clear all thread-specific states.
Definition: commit.cc:334
gem5::o3::Commit::thread
std::vector< ThreadState * > thread
Vector of all of the threads.
Definition: commit.hh:359
gem5::o3::Commit::cpu
CPU * cpu
Pointer to O3CPU.
Definition: commit.hh:356
rename_map.hh
gem5::o3::Commit::checkEmptyROB
bool checkEmptyROB[MaxThreads]
Records if commit should check if the ROB is truly empty (see commit_impl.hh).
Definition: commit.hh:450
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
dyn_inst_ptr.hh
gem5::o3::Commit::CommitStats::integer
statistics::Vector integer
Total number of integer instructions.
Definition: commit.hh:511
gem5::o3::Commit::instAddr
Addr instAddr(ThreadID tid)
Returns the PC of a specific thread.
Definition: commit.hh:316
gem5::o3::Commit::fromFetch
TimeBuffer< FetchStruct >::wire fromFetch
Definition: commit.hh:336
gem5::o3::Commit::CommitStats::vectorInstructions
statistics::Vector vectorInstructions
Total number of vector instructions.
Definition: commit.hh:507
gem5::o3::Commit::updateComInstStats
void updateComInstStats(const DynInstPtr &inst)
Updates commit stats based on this instruction.
Definition: commit.cc:1384
gem5::o3::Commit::getCommittingThread
ThreadID getCommittingThread()
Gets the thread to commit, based on the SMT policy.
Definition: commit.cc:1446
gem5::ProbePointArg
ProbePointArg generates a point for the class of Arg.
Definition: thermal_domain.hh:54
gem5::o3::Commit::commit
void commit()
Handles any squashes that are sent from IEW, and adds instructions to the ROB and tries to commit ins...
Definition: commit.cc:784
gem5::o3::MaxThreads
static constexpr int MaxThreads
Definition: limits.hh:38
gem5::o3::Commit::CommitStats::amos
statistics::Vector amos
Stat for the total number of committed atomics.
Definition: commit.hh:501
gem5::o3::Commit::drainResume
void drainResume()
Resumes execution after draining.
Definition: commit.cc:351
gem5::o3::Commit::executingHtmTransaction
bool executingHtmTransaction(ThreadID) const
Is the CPU currently processing a HTM transaction?
Definition: commit.cc:426
gem5::o3::Commit::SquashAfterPending
@ SquashAfterPending
Definition: commit.hh:111
gem5::o3::Commit::Idle
@ Idle
Definition: commit.hh:107
gem5::o3::Commit::interrupt
Fault interrupt
The interrupt fault.
Definition: commit.hh:429
gem5::o3::Commit::lastCommitedSeqNum
InstSeqNum lastCommitedSeqNum[MaxThreads]
The sequence number of the last commited instruction.
Definition: commit.hh:440
gem5::o3::Commit::setFetchQueue
void setFetchQueue(TimeBuffer< FetchStruct > *fq_ptr)
Definition: commit.cc:266
gem5::o3::Commit::trapSquash
bool trapSquash[MaxThreads]
Records if a thread has to squash this cycle due to a trap.
Definition: commit.hh:372
gem5::o3::Commit::commitPolicy
CommitPolicy commitPolicy
Commit policy used in SMT mode.
Definition: commit.hh:122
gem5::o3::Commit::trapInFlight
bool trapInFlight[MaxThreads]
Records if there is a trap currently in flight.
Definition: commit.hh:443
gem5::o3::Commit::_status
CommitStatus _status
Overall commit status.
Definition: commit.hh:116
gem5::o3::Commit::pcState
TheISA::PCState pcState(ThreadID tid)
Reads the PC of a specific thread.
Definition: commit.hh:309
gem5::statistics::Group
Statistics container.
Definition: group.hh:93
gem5::o3::Commit::CommitStats::memRefs
statistics::Vector memRefs
Stat for the total number of committed memory references.
Definition: commit.hh:497
gem5::o3::Commit::_nextStatus
CommitStatus _nextStatus
Next commit status, to be set at the end of the cycle.
Definition: commit.hh:118
gem5::InstSeqNum
uint64_t InstSeqNum
Definition: inst_seq.hh:40
gem5::o3::Commit::CommitStats::opsCommitted
statistics::Vector opsCommitted
Total number of ops (including micro ops) committed.
Definition: commit.hh:495
gem5::o3::Commit::CommitStats::CommitStats
CommitStats(CPU *cpu, Commit *commit)
Definition: commit.cc:149
gem5::o3::Commit::CommitStats::commitNonSpecStalls
statistics::Scalar commitNonSpecStalls
Stat for the total number of times commit has had to stall due to a non-speculative instruction reach...
Definition: commit.hh:484
gem5::o3::Commit::tick
void tick()
Ticks the commit stage, which tries to commit instructions.
Definition: commit.cc:629
gem5::o3::Commit::Inactive
@ Inactive
Definition: commit.hh:100
gem5::o3::Commit::ppCommitStall
ProbePointArg< DynInstPtr > * ppCommitStall
Definition: commit.hh:126
std::list< ThreadID >
gem5::o3::Commit::youngestSeqNum
InstSeqNum youngestSeqNum[MaxThreads]
The sequence number of the youngest valid instruction in the ROB.
Definition: commit.hh:437
probe.hh
gem5::o3::Commit::CommitStats::functionCalls
statistics::Vector functionCalls
Total number of function calls.
Definition: commit.hh:513
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: decoder.cc:40
gem5::o3::Commit::numThreads
const ThreadID numThreads
Number of Active Threads.
Definition: commit.hh:409
limits.hh
gem5::o3::Commit::markCompletedInsts
void markCompletedInsts()
Marks completed instructions using information sent from IEW.
Definition: commit.cc:1364
gem5::o3::Commit::drainImminent
bool drainImminent
Is a drain imminent? Commit has found an instruction boundary while no interrupts were present or in ...
Definition: commit.hh:421
gem5::o3::Commit::updateStatus
void updateStatus()
Updates the overall status of commit with the nextStatus, and tell the CPU if commit is active/inacti...
Definition: commit.cc:446
gem5::o3::ROB
ROB class.
Definition: rob.hh:72
gem5::o3::Commit::setTimeBuffer
void setTimeBuffer(TimeBuffer< TimeStruct > *tb_ptr)
Sets the main time buffer pointer, used for backwards communication.
Definition: commit.cc:254
gem5::o3::Commit::squashFromTrap
void squashFromTrap(ThreadID tid)
Handles squashing due to a trap.
Definition: commit.cc:568
gem5::o3::Commit::trapLatency
const Cycles trapLatency
The latency to handle a trap.
Definition: commit.hh:426
gem5::o3::Commit::canHandleInterrupts
bool canHandleInterrupts
True if last committed microop can be followed by an interrupt.
Definition: commit.hh:459
gem5::o3::Commit::handleInterrupt
void handleInterrupt()
Handles processing an interrupt.
Definition: commit.cc:707
gem5::o3::Commit::setIEWStage
void setIEWStage(IEW *iew_stage)
Sets the pointer to the IEW stage.
Definition: commit.cc:293
gem5::o3::Commit::fromRename
TimeBuffer< RenameStruct >::wire fromRename
Wire to read information from rename queue.
Definition: commit.hh:348
gem5::o3::Commit::CommitStats::branches
statistics::Vector branches
Total number of committed branches.
Definition: commit.hh:505
gem5::o3::Commit::drainSanityCheck
void drainSanityCheck() const
Perform sanity checks after a drain.
Definition: commit.cc:358
gem5::ThreadID
int16_t ThreadID
Thread index/ID type.
Definition: types.hh:242
gem5::TimeBuffer::wire
Definition: timebuf.hh:59
gem5::o3::Commit::nextInstAddr
Addr nextInstAddr(ThreadID tid)
Returns the next PC of a specific thread.
Definition: commit.hh:319
gem5::o3::Commit::CommitStats::membars
statistics::Vector membars
Total number of committed memory barriers.
Definition: commit.hh:503
gem5::o3::UnifiedRenameMap
Unified register rename map for all classes of registers.
Definition: rename_map.hh:174
gem5::o3::Commit::iewToCommitDelay
const Cycles iewToCommitDelay
IEW to Commit delay.
Definition: commit.hh:390
gem5::o3::Commit::robInfoFromIEW
TimeBuffer< TimeStruct >::wire robInfoFromIEW
Wire to read information from IEW (for ROB).
Definition: commit.hh:332
gem5::o3::Commit::fetchQueue
TimeBuffer< FetchStruct > * fetchQueue
Definition: commit.hh:334
gem5::o3::Commit::tcSquash
bool tcSquash[MaxThreads]
Records if a thread has to squash this cycle due to an XC write.
Definition: commit.hh:375

Generated on Tue Sep 21 2021 12:25:04 for gem5 by doxygen 1.8.17