gem5  v20.1.0.0
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/timebuf.hh"
50 #include "enums/CommitPolicy.hh"
51 #include "sim/probe/probe.hh"
52 
53 struct DerivO3CPUParams;
54 
55 template <class>
57 
80 template<class Impl>
82 {
83  public:
84  // Typedefs from the Impl.
85  typedef typename Impl::O3CPU O3CPU;
86  typedef typename Impl::DynInstPtr DynInstPtr;
87  typedef typename Impl::CPUPol CPUPol;
88 
89  typedef typename CPUPol::RenameMap RenameMap;
90  typedef typename CPUPol::ROB ROB;
91 
92  typedef typename CPUPol::TimeStruct TimeStruct;
93  typedef typename CPUPol::FetchStruct FetchStruct;
94  typedef typename CPUPol::IEWStruct IEWStruct;
95  typedef typename CPUPol::RenameStruct RenameStruct;
96 
97  typedef typename CPUPol::Fetch Fetch;
98  typedef typename CPUPol::IEW IEW;
99 
101 
108  };
109 
117  SquashAfterPending, //< Committing instructions before a squash.
118  };
119 
120  private:
126  ThreadStatus commitStatus[Impl::MaxThreads];
128  CommitPolicy commitPolicy;
129 
135 
137  void processTrapEvent(ThreadID tid);
138 
139  public:
141  DefaultCommit(O3CPU *_cpu, DerivO3CPUParams *params);
142 
144  std::string name() const;
145 
147  void regProbePoints();
148 
150  void setThreads(std::vector<Thread *> &threads);
151 
154 
156 
159 
161  void setIEWQueue(TimeBuffer<IEWStruct> *iq_ptr);
162 
164  void setIEWStage(IEW *iew_stage);
165 
171 
174 
176  void setRenameMap(RenameMap rm_ptr[Impl::MaxThreads]);
177 
179  void setROB(ROB *rob_ptr);
180 
182  void startupStage();
183 
185  void clearStates(ThreadID tid);
186 
188  void drain();
189 
191  void drainResume();
192 
194  void drainSanityCheck() const;
195 
197  bool isDrained() const;
198 
200  void takeOverFrom();
201 
203  void deactivateThread(ThreadID tid);
204 
206  bool executingHtmTransaction(ThreadID) const;
207 
208  /* Reset HTM tracking, e.g. after an abort */
210 
212  void tick();
213 
217  void commit();
218 
220  size_t numROBFreeEntries(ThreadID tid);
221 
223  void generateTrapEvent(ThreadID tid, Fault inst_fault);
224 
228  void generateTCEvent(ThreadID tid);
229 
230  private:
234  void updateStatus();
235 
240  bool changedROBEntries();
241 
243  void squashAll(ThreadID tid);
244 
246  void squashFromTrap(ThreadID tid);
247 
249  void squashFromTC(ThreadID tid);
250 
253 
282  void squashAfter(ThreadID tid, const DynInstPtr &head_inst);
283 
285  void handleInterrupt();
286 
288  void propagateInterrupt();
289 
291  void commitInsts();
292 
296  bool commitHead(const DynInstPtr &head_inst, unsigned inst_num);
297 
299  void getInsts();
300 
302  void markCompletedInsts();
303 
306 
309 
312 
313  public:
315  TheISA::PCState pcState(ThreadID tid) { return pc[tid]; }
316 
319  { pc[tid] = val; }
320 
322  Addr instAddr(ThreadID tid) { return pc[tid].instAddr(); }
323 
325  Addr nextInstAddr(ThreadID tid) { return pc[tid].nextInstAddr(); }
326 
328  Addr microPC(ThreadID tid) { return pc[tid].microPC(); }
329 
330  private:
333 
336 
339 
341 
343 
346 
349 
352 
355 
356  public:
359 
360  private:
363 
366 
371 
375  bool changedROBNumEntries[Impl::MaxThreads];
376 
378  bool trapSquash[Impl::MaxThreads];
379 
381  bool tcSquash[Impl::MaxThreads];
382 
390  DynInstPtr squashAfterInst[Impl::MaxThreads];
391 
394 
397 
400 
403 
405 
409  const unsigned renameWidth;
410 
412  const unsigned commitWidth;
413 
415  unsigned numRobs;
416 
419 
424 
431 
436 
439 
443  TheISA::PCState pc[Impl::MaxThreads];
444 
446  InstSeqNum youngestSeqNum[Impl::MaxThreads];
447 
449  InstSeqNum lastCommitedSeqNum[Impl::MaxThreads];
450 
452  bool trapInFlight[Impl::MaxThreads];
453 
455  bool committedStores[Impl::MaxThreads];
456 
459  bool checkEmptyROB[Impl::MaxThreads];
460 
463 
465  RenameMap *renameMap[Impl::MaxThreads];
466 
469 
475 
477  void updateComInstStats(const DynInstPtr &inst);
478 
479  // HTM
480  int htmStarts[Impl::MaxThreads];
481  int htmStops[Impl::MaxThreads];
482 
483  struct CommitStats : public Stats::Group {
499 
524 
527  } stats;
528 };
529 
530 #endif // __CPU_O3_COMMIT_HH__
DefaultCommit::tick
void tick()
Ticks the commit stage, which tries to commit instructions.
Definition: commit_impl.hh:656
DefaultCommit::Thread
O3ThreadState< Impl > Thread
Definition: commit.hh:100
DefaultCommit::SquashAfterPending
@ SquashAfterPending
Definition: commit.hh:117
DefaultCommit::squashFromTC
void squashFromTC(ThreadID tid)
Handles squashing due to an TC write.
Definition: commit_impl.hh:609
DefaultCommit::_nextStatus
CommitStatus _nextStatus
Next commit status, to be set at the end of the cycle.
Definition: commit.hh:124
DefaultCommit::IEWStruct
CPUPol::IEWStruct IEWStruct
Definition: commit.hh:94
DefaultCommit::Active
@ Active
Definition: commit.hh:106
DefaultCommit::FetchStruct
CPUPol::FetchStruct FetchStruct
Definition: commit.hh:93
DefaultCommit::CommitStats::branchMispredicts
Stats::Scalar branchMispredicts
Stat for the total number of branch mispredicts that caused a squash.
Definition: commit.hh:496
DefaultCommit::generateTrapEvent
void generateTrapEvent(ThreadID tid, Fault inst_fault)
Generates an event to schedule a squash due to a trap.
Definition: commit_impl.hh:519
DefaultCommit::squashFromSquashAfter
void squashFromSquashAfter(ThreadID tid)
Handles a squash from a squashAfter() request.
Definition: commit_impl.hh:626
DefaultCommit::getCommittingThread
ThreadID getCommittingThread()
Gets the thread to commit, based on the SMT policy.
Definition: commit_impl.hh:1498
DefaultCommit::CommitStats::functionCalls
Stats::Vector functionCalls
Total number of function calls.
Definition: commit.hh:521
DefaultCommit::changedROBNumEntries
bool changedROBNumEntries[Impl::MaxThreads]
Records if the number of ROB entries has changed this cycle.
Definition: commit.hh:375
DefaultCommit::takeOverFrom
void takeOverFrom()
Takes over from another CPU's thread.
Definition: commit_impl.hh:413
DefaultCommit::oldestReady
ThreadID oldestReady()
Returns the thread ID to use based on an oldest instruction policy.
Definition: commit_impl.hh:1562
DefaultCommit::CommitStats::membars
Stats::Vector membars
Total number of committed memory barriers.
Definition: commit.hh:511
DefaultCommit::CommitStats::instsCommitted
Stats::Vector instsCommitted
Total number of instructions committed.
Definition: commit.hh:501
DefaultCommit::resetHtmStartsStops
void resetHtmStartsStops(ThreadID)
Definition: commit_impl.hh:451
DefaultCommit::CommitStats::committedInstType
Stats::Vector2d committedInstType
Committed instructions by instruction type (OpClass)
Definition: commit.hh:523
ThreadID
int16_t ThreadID
Thread index/ID type.
Definition: types.hh:227
DefaultCommit::Running
@ Running
Definition: commit.hh:112
DefaultCommit::squashAfter
void squashAfter(ThreadID tid, const DynInstPtr &head_inst)
Handle squashing from instruction with SquashAfter set.
Definition: commit_impl.hh:644
DefaultCommit::ROBSquashing
@ ROBSquashing
Definition: commit.hh:114
DefaultCommit::timeBuffer
TimeBuffer< TimeStruct > * timeBuffer
Time buffer interface.
Definition: commit.hh:332
DefaultCommit::fromIEW
TimeBuffer< IEWStruct >::wire fromIEW
Wire to read information from IEW queue.
Definition: commit.hh:348
DefaultCommit::committedStores
bool committedStores[Impl::MaxThreads]
Records if there were any stores committed this cycle.
Definition: commit.hh:455
DefaultCommit::commitStatus
ThreadStatus commitStatus[Impl::MaxThreads]
Per-thread status.
Definition: commit.hh:126
DefaultCommit::drain
void drain()
Initializes the draining of commit.
Definition: commit_impl.hh:354
DefaultCommit::iewQueue
TimeBuffer< IEWStruct > * iewQueue
IEW instruction queue interface.
Definition: commit.hh:345
ProbePointArg< DynInstPtr >
DefaultCommit::lastCommitedSeqNum
InstSeqNum lastCommitedSeqNum[Impl::MaxThreads]
The sequence number of the last commited instruction.
Definition: commit.hh:449
exetrace.hh
DefaultCommit::priority_list
std::list< ThreadID > priority_list
Priority List used for Commit Policy.
Definition: commit.hh:393
DefaultCommit::squashAll
void squashAll(ThreadID tid)
Squashes all in flight instructions.
Definition: commit_impl.hh:555
DefaultCommit::cpu
O3CPU * cpu
Pointer to O3CPU.
Definition: commit.hh:362
DefaultCommit::DynInstPtr
Impl::DynInstPtr DynInstPtr
Definition: commit.hh:86
DefaultCommit::trapSquash
bool trapSquash[Impl::MaxThreads]
Records if a thread has to squash this cycle due to a trap.
Definition: commit.hh:378
std::vector
STL vector class.
Definition: stl.hh:37
DefaultCommit::clearStates
void clearStates(ThreadID tid)
Clear all thread-specific states.
Definition: commit_impl.hh:338
DefaultCommit::microPC
Addr microPC(ThreadID tid)
Reads the micro PC of a specific thread.
Definition: commit.hh:328
DefaultCommit::CommitStats::amos
Stats::Vector amos
Stat for the total number of committed atomics.
Definition: commit.hh:509
DefaultCommit::Idle
@ Idle
Definition: commit.hh:113
DefaultCommit::renameWidth
const unsigned renameWidth
Rename width, in instructions.
Definition: commit.hh:409
Stats::Vector
A vector of scalar stats.
Definition: statistics.hh:2575
DefaultCommit::changedROBEntries
bool changedROBEntries()
Returns if any of the threads have the number of ROB entries changed on this cycle.
Definition: commit_impl.hh:494
DefaultCommit::O3CPU
Impl::O3CPU O3CPU
Definition: commit.hh:85
DefaultCommit::thread
std::vector< Thread * > thread
Vector of all of the threads.
Definition: commit.hh:365
DefaultCommit::fetchQueue
TimeBuffer< FetchStruct > * fetchQueue
Definition: commit.hh:340
DefaultCommit::Inactive
@ Inactive
Definition: commit.hh:107
TimeBuffer< TimeStruct >
DefaultCommit::rob
ROB * rob
ROB interface.
Definition: commit.hh:358
DefaultCommit::numRobs
unsigned numRobs
Number of Reorder Buffers.
Definition: commit.hh:415
DefaultCommit::CommitStatus
CommitStatus
Overall commit status.
Definition: commit.hh:105
DefaultCommit::fromRename
TimeBuffer< RenameStruct >::wire fromRename
Wire to read information from rename queue.
Definition: commit.hh:354
DefaultCommit::iewStage
IEW * iewStage
The pointer to the IEW stage.
Definition: commit.hh:170
DefaultCommit::squashAfterInst
DynInstPtr squashAfterInst[Impl::MaxThreads]
Instruction passed to squashAfter().
Definition: commit.hh:390
timebuf.hh
Stats::Scalar
This is a simple scalar statistic, like a counter.
Definition: statistics.hh:2533
DefaultCommit::htmStops
int htmStops[Impl::MaxThreads]
Definition: commit.hh:481
DefaultCommit::drainSanityCheck
void drainSanityCheck() const
Perform sanity checks after a drain.
Definition: commit_impl.hh:369
DefaultCommit::trapInFlight
bool trapInFlight[Impl::MaxThreads]
Records if there is a trap currently in flight.
Definition: commit.hh:452
DefaultCommit::toIEW
TimeBuffer< TimeStruct >::wire toIEW
Wire to write information heading to previous stages.
Definition: commit.hh:335
DefaultCommit::wroteToTimeBuffer
bool wroteToTimeBuffer
Records that commit has written to the time buffer this cycle.
Definition: commit.hh:370
DefaultCommit::CommitStats::vector
Stats::Vector vector
Total number of vector instructions.
Definition: commit.hh:515
inst_seq.hh
DefaultCommit::setROB
void setROB(ROB *rob_ptr)
Sets pointer to the ROB.
Definition: commit_impl.hh:310
DefaultCommit::numThreads
const ThreadID numThreads
Number of Active Threads.
Definition: commit.hh:418
DefaultCommit::CommitStats::branches
Stats::Vector branches
Total number of committed branches.
Definition: commit.hh:513
DefaultCommit::renameQueue
TimeBuffer< RenameStruct > * renameQueue
Rename instruction queue interface, for ROB.
Definition: commit.hh:351
DefaultCommit::FetchTrapPending
@ FetchTrapPending
Definition: commit.hh:116
Fault
std::shared_ptr< FaultBase > Fault
Definition: types.hh:240
DefaultCommit::canHandleInterrupts
bool canHandleInterrupts
True if last committed microop can be followed by an interrupt.
Definition: commit.hh:468
DefaultCommit::CommitStats::opsCommitted
Stats::Vector opsCommitted
Total number of ops (including micro ops) committed.
Definition: commit.hh:503
statistics.hh
DefaultCommit::renameToROBDelay
const Cycles renameToROBDelay
Rename to ROB delay.
Definition: commit.hh:402
DefaultCommit::markCompletedInsts
void markCompletedInsts()
Marks completed instructions using information sent from IEW.
Definition: commit_impl.hh:1414
DefaultCommit
DefaultCommit handles single threaded and SMT commit.
Definition: commit.hh:81
DefaultCommit::commitWidth
const unsigned commitWidth
Commit width, in instructions.
Definition: commit.hh:412
DefaultCommit::iewToCommitDelay
const Cycles iewToCommitDelay
IEW to Commit delay.
Definition: commit.hh:396
DefaultCommit::drainPending
bool drainPending
Is a drain pending? Commit is looking for an instruction boundary while there are no pending interrup...
Definition: commit.hh:423
DefaultCommit::commitPolicy
CommitPolicy commitPolicy
Commit policy used in SMT mode.
Definition: commit.hh:128
DefaultCommit::ROB
CPUPol::ROB ROB
Definition: commit.hh:90
DefaultCommit::setActiveThreads
void setActiveThreads(std::list< ThreadID > *at_ptr)
Sets pointer to list of active threads.
Definition: commit_impl.hh:295
DefaultCommit::handleInterrupt
void handleInterrupt()
Handles processing an interrupt.
Definition: commit_impl.hh:735
O3ThreadState
Class that has various thread state, such as the status, the current instruction being processed,...
Definition: commit.hh:56
DefaultCommit::processTrapEvent
void processTrapEvent(ThreadID tid)
Mark the thread as processing a trap.
Definition: commit_impl.hh:73
DefaultCommit::regProbePoints
void regProbePoints()
Registers probes.
Definition: commit_impl.hh:141
DefaultCommit::setTimeBuffer
void setTimeBuffer(TimeBuffer< TimeStruct > *tb_ptr)
Sets the main time buffer pointer, used for backwards communication.
Definition: commit_impl.hh:245
DefaultCommit::updateStatus
void updateStatus()
Updates the overall status of commit with the nextStatus, and tell the CPU if commit is active/inacti...
Definition: commit_impl.hh:463
DefaultCommit::tcSquash
bool tcSquash[Impl::MaxThreads]
Records if a thread has to squash this cycle due to an XC write.
Definition: commit.hh:381
DefaultCommit::CommitStats::commitSquashedInsts
Stats::Scalar commitSquashedInsts
Stat for the total number of squashed instructions discarded by commit.
Definition: commit.hh:488
DefaultCommit::RenameStruct
CPUPol::RenameStruct RenameStruct
Definition: commit.hh:95
DefaultCommit::pc
TheISA::PCState pc[Impl::MaxThreads]
The commit PC state of each thread.
Definition: commit.hh:443
DefaultCommit::htmStarts
int htmStarts[Impl::MaxThreads]
Definition: commit.hh:480
DefaultCommit::nextInstAddr
Addr nextInstAddr(ThreadID tid)
Returns the next PC of a specific thread.
Definition: commit.hh:325
DefaultCommit::setRenameQueue
void setRenameQueue(TimeBuffer< RenameStruct > *rq_ptr)
Sets the pointer to the queue coming from rename.
Definition: commit_impl.hh:268
X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:769
InstSeqNum
uint64_t InstSeqNum
Definition: inst_seq.hh:37
DefaultCommit::name
std::string name() const
Returns the name of the DefaultCommit.
Definition: commit_impl.hh:134
DefaultCommit::CPUPol
Impl::CPUPol CPUPol
Definition: commit.hh:87
DefaultCommit::drainImminent
bool drainImminent
Is a drain imminent? Commit has found an instruction boundary while no interrupts were present or in ...
Definition: commit.hh:430
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
DefaultCommit::TrapPending
@ TrapPending
Definition: commit.hh:115
Stats::Distribution
A simple distribution stat.
Definition: statistics.hh:2617
DefaultCommit::_status
CommitStatus _status
Overall commit status.
Definition: commit.hh:122
DefaultCommit::fromFetch
TimeBuffer< FetchStruct >::wire fromFetch
Definition: commit.hh:342
DefaultCommit::generateTCEvent
void generateTCEvent(ThreadID tid)
Records that commit needs to initiate a squash due to an external state update through the TC.
Definition: commit_impl.hh:545
DefaultCommit::startupStage
void startupStage()
Initializes stage by sending back the number of free entries.
Definition: commit_impl.hh:317
DefaultCommit::roundRobin
ThreadID roundRobin()
Returns the thread ID to use based on a round robin policy.
Definition: commit_impl.hh:1534
DefaultCommit::commitHead
bool commitHead(const DynInstPtr &head_inst, unsigned inst_num)
Tries to commit the head ROB instruction passed in.
Definition: commit_impl.hh:1183
DefaultCommit::CommitStats::CommitStats
CommitStats(O3CPU *cpu, DefaultCommit *commit)
Definition: commit_impl.hh:149
DefaultCommit::ppCommitStall
ProbePointArg< DynInstPtr > * ppCommitStall
Definition: commit.hh:132
DefaultCommit::Fetch
CPUPol::Fetch Fetch
Definition: commit.hh:97
DefaultCommit::CommitStats::commitEligibleSamples
Stats::Scalar commitEligibleSamples
Number of cycles where the commit bandwidth limit is reached.
Definition: commit.hh:526
DefaultCommit::ppCommit
ProbePointArg< DynInstPtr > * ppCommit
Probe Points.
Definition: commit.hh:131
DefaultCommit::isDrained
bool isDrained() const
Has the stage drained?
Definition: commit_impl.hh:385
DefaultCommit::RenameMap
CPUPol::RenameMap RenameMap
Definition: commit.hh:89
DefaultCommit::drainResume
void drainResume()
Resumes execution after draining.
Definition: commit_impl.hh:361
DefaultCommit::CommitStats::commitNonSpecStalls
Stats::Scalar commitNonSpecStalls
Stat for the total number of times commit has had to stall due to a non-speculative instruction reach...
Definition: commit.hh:492
DefaultCommit::setIEWQueue
void setIEWQueue(TimeBuffer< IEWStruct > *iq_ptr)
Sets the pointer to the queue coming from IEW.
Definition: commit_impl.hh:278
DefaultCommit::propagateInterrupt
void propagateInterrupt()
Get fetch redirecting so we can handle an interrupt.
Definition: commit_impl.hh:789
DefaultCommit::commitToIEWDelay
const Cycles commitToIEWDelay
Commit to IEW delay.
Definition: commit.hh:399
DefaultCommit::trapLatency
const Cycles trapLatency
The latency to handle a trap.
Definition: commit.hh:435
DefaultCommit::fetchToCommitDelay
const Cycles fetchToCommitDelay
Definition: commit.hh:404
DefaultCommit::robInfoFromIEW
TimeBuffer< TimeStruct >::wire robInfoFromIEW
Wire to read information from IEW (for ROB).
Definition: commit.hh:338
Stats::Vector2d
A 2-Dimensional vecto of scalar stats.
Definition: statistics.hh:2603
DefaultCommit::setFetchQueue
void setFetchQueue(TimeBuffer< FetchStruct > *fq_ptr)
Definition: commit_impl.hh:258
DefaultCommit::setRenameMap
void setRenameMap(RenameMap rm_ptr[Impl::MaxThreads])
Sets pointer to the commited state rename map.
Definition: commit_impl.hh:302
DefaultCommit::squashFromTrap
void squashFromTrap(ThreadID tid)
Handles squashing due to a trap.
Definition: commit_impl.hh:591
MipsISA::PCState
GenericISA::DelaySlotPCState< MachInst > PCState
Definition: types.hh:41
DefaultCommit::ThreadStatus
ThreadStatus
Individual thread status.
Definition: commit.hh:111
Stats::Group
Statistics container.
Definition: group.hh:83
Cycles
Cycles is a wrapper class for representing cycle counts, i.e.
Definition: types.hh:83
DefaultCommit::renameMap
RenameMap * renameMap[Impl::MaxThreads]
Rename map interface.
Definition: commit.hh:465
DefaultCommit::CommitStats::loads
Stats::Vector loads
Stat for the total number of committed loads.
Definition: commit.hh:507
DefaultCommit::instAddr
Addr instAddr(ThreadID tid)
Returns the PC of a specific thread.
Definition: commit.hh:322
DefaultCommit::activeThreads
std::list< ThreadID > * activeThreads
Pointer to the list of active threads.
Definition: commit.hh:462
DefaultCommit::commitInsts
void commitInsts()
Commits as many instructions as possible.
Definition: commit_impl.hh:977
DefaultCommit::pcState
void pcState(const TheISA::PCState &val, ThreadID tid)
Sets the PC of a specific thread.
Definition: commit.hh:318
DefaultCommit::CommitStats::memRefs
Stats::Vector memRefs
Stat for the total number of committed memory references.
Definition: commit.hh:505
DefaultCommit::CommitStats::floating
Stats::Vector floating
Total number of floating point instructions.
Definition: commit.hh:517
DefaultCommit::IEW
CPUPol::IEW IEW
Definition: commit.hh:98
std::list< ThreadID >
DefaultCommit::deactivateThread
void deactivateThread(ThreadID tid)
Deschedules a thread from scheduling.
Definition: commit_impl.hh:429
DefaultCommit::commit
void commit()
Handles any squashes that are sent from IEW, and adds instructions to the ROB and tries to commit ins...
Definition: commit_impl.hh:814
DefaultCommit::setIEWStage
void setIEWStage(IEW *iew_stage)
Sets the pointer to the IEW stage.
Definition: commit_impl.hh:288
DefaultCommit::youngestSeqNum
InstSeqNum youngestSeqNum[Impl::MaxThreads]
The sequence number of the youngest valid instruction in the ROB.
Definition: commit.hh:446
DefaultCommit::checkEmptyROB
bool checkEmptyROB[Impl::MaxThreads]
Records if commit should check if the ROB is truly empty (see commit_impl.hh).
Definition: commit.hh:459
probe.hh
DefaultCommit::interrupt
Fault interrupt
The interrupt fault.
Definition: commit.hh:438
DefaultCommit::pcState
TheISA::PCState pcState(ThreadID tid)
Reads the PC of a specific thread.
Definition: commit.hh:315
DefaultCommit::updateComInstStats
void updateComInstStats(const DynInstPtr &inst)
Updates commit stats based on this instruction.
Definition: commit_impl.hh:1435
DefaultCommit::ppSquash
ProbePointArg< DynInstPtr > * ppSquash
To probe when an instruction is squashed.
Definition: commit.hh:134
DefaultCommit::CommitStats::integer
Stats::Vector integer
Total number of integer instructions.
Definition: commit.hh:519
DefaultCommit::setThreads
void setThreads(std::vector< Thread * > &threads)
Sets the list of threads.
Definition: commit_impl.hh:238
DefaultCommit::executingHtmTransaction
bool executingHtmTransaction(ThreadID) const
Is the CPU currently processing a HTM transaction?
Definition: commit_impl.hh:441
ROB
ROB class.
Definition: rob.hh:59
DefaultCommit::getInsts
void getInsts()
Gets instructions from rename and inserts them into the ROB.
Definition: commit_impl.hh:1380
DefaultCommit::avoidQuiesceLiveLock
bool avoidQuiesceLiveLock
Have we had an interrupt pending and then seen it de-asserted because of a masking change?...
Definition: commit.hh:474
DefaultCommit::CommitStats::numCommittedDist
Stats::Distribution numCommittedDist
Distribution of the number of committed instructions each cycle.
Definition: commit.hh:498
DefaultCommit::DefaultCommit
DefaultCommit(O3CPU *_cpu, DerivO3CPUParams *params)
Construct a DefaultCommit with the given parameters.
Definition: commit_impl.hh:81
DefaultCommit::CommitStats
Definition: commit.hh:483
DefaultCommit::TimeStruct
CPUPol::TimeStruct TimeStruct
Definition: commit.hh:92
DefaultCommit::stats
DefaultCommit::CommitStats stats
DefaultCommit::numROBFreeEntries
size_t numROBFreeEntries(ThreadID tid)
Returns the number of free ROB entries for a specific thread.
Definition: commit_impl.hh:512

Generated on Wed Sep 30 2020 14:02:09 for gem5 by doxygen 1.8.17