gem5 v24.0.0.0
|
#include <execute.hh>
Classes | |
struct | ExecuteThreadInfo |
Public Member Functions | |
Execute (const std::string &name_, MinorCPU &cpu_, const BaseMinorCPUParams ¶ms, Latch< ForwardInstData >::Output inp_, Latch< BranchData >::Input out_) | |
~Execute () | |
MinorCPU::MinorCPUPort & | getDcachePort () |
Returns the DcachePort owned by this Execute to pass upwards. | |
LSQ & | getLSQ () |
To allow ExecContext to find the LSQ. | |
bool | instIsRightStream (MinorDynInstPtr inst) |
Does the given instruction have the right stream sequence number to be committed? | |
bool | instIsHeadInst (MinorDynInstPtr inst) |
Returns true if the given instruction is at the head of the inFlightInsts instruction queue. | |
void | evaluate () |
Pass on input/buffer data to the output if you can. | |
void | minorTrace () const |
bool | isDrained () |
After thread suspension, has Execute been drained of in-flight instructions and memory accesses. | |
unsigned int | drain () |
Like the drain interface on SimObject. | |
void | drainResume () |
Public Member Functions inherited from gem5::Named | |
Named (const std::string &name_) | |
virtual | ~Named ()=default |
virtual std::string | name () const |
Public Attributes | |
std::vector< InputBuffer< ForwardInstData > > | inputBuffer |
Protected Types | |
enum | DrainState { NotDraining , DrainCurrentInst , DrainHaltFetch , DrainAllInsts } |
Stage cycle-by-cycle state. More... | |
Protected Member Functions | |
const ForwardInstData * | getInput (ThreadID tid) |
Get a piece of data to work on from the inputBuffer, or 0 if there is no data. | |
void | popInput (ThreadID tid) |
Pop an element off the input buffer, if there are any. | |
void | tryToBranch (MinorDynInstPtr inst, Fault fault, BranchData &branch) |
Generate Branch data based (into branch) on an observed (or not) change in PC while executing an instruction. | |
void | updateBranchData (ThreadID tid, BranchData::Reason reason, MinorDynInstPtr inst, const PCStateBase &target, BranchData &branch) |
Actually create a branch to communicate to Fetch1/Fetch2 and, if that is a stream-changing branch update the streamSeqNum. | |
void | handleMemResponse (MinorDynInstPtr inst, LSQ::LSQRequestPtr response, BranchData &branch, Fault &fault) |
Handle extracting mem ref responses from the memory queues and completing the associated instructions. | |
bool | executeMemRefInst (MinorDynInstPtr inst, BranchData &branch, bool &failed_predicate, Fault &fault) |
Execute a memory reference instruction. | |
bool | isInterrupted (ThreadID thread_id) const |
Has an interrupt been raised. | |
bool | isInbetweenInsts (ThreadID thread_id) const |
Are we between instructions? Can we be interrupted? | |
bool | takeInterrupt (ThreadID thread_id, BranchData &branch) |
Act on an interrupt. | |
unsigned int | issue (ThreadID thread_id) |
Try and issue instructions from the inputBuffer. | |
bool | tryPCEvents (ThreadID thread_id) |
Try to act on PC-related events. | |
void | doInstCommitAccounting (MinorDynInstPtr inst) |
Do the stats handling and instruction count and PC event events related to the new instruction/op counts. | |
ThreadID | checkInterrupts (BranchData &branch, bool &interrupted) |
Check all threads for possible interrupts. | |
bool | hasInterrupt (ThreadID thread_id) |
Checks if a specific thread has an interrupt. | |
bool | commitInst (MinorDynInstPtr inst, bool early_memory_issue, BranchData &branch, Fault &fault, bool &committed, bool &completed_mem_issue) |
Commit a single instruction. | |
void | commit (ThreadID thread_id, bool only_commit_microops, bool discard, BranchData &branch) |
Try and commit instructions from the ends of the functional unit pipelines. | |
void | setDrainState (ThreadID thread_id, DrainState state) |
Set the drain state (with useful debugging messages) | |
ThreadID | getCommittingThread () |
Use the current threading policy to determine the next thread to decode from. | |
ThreadID | getIssuingThread () |
Protected Attributes | |
Latch< ForwardInstData >::Output | inp |
Input port carrying instructions from Decode. | |
Latch< BranchData >::Input | out |
Input port carrying stream changes to Fetch1. | |
MinorCPU & | cpu |
Pointer back to the containing CPU. | |
unsigned int | issueLimit |
Number of instructions that can be issued per cycle. | |
unsigned int | memoryIssueLimit |
Number of memory ops that can be issued per cycle. | |
unsigned int | commitLimit |
Number of instructions that can be committed per cycle. | |
unsigned int | memoryCommitLimit |
Number of memory instructions that can be committed per cycle. | |
bool | processMoreThanOneInput |
If true, more than one input line can be processed each cycle if there is room to execute more instructions than taken from the first line. | |
MinorFUPool & | fuDescriptions |
Descriptions of the functional units we want to generate. | |
unsigned int | numFuncUnits |
Number of functional units to produce. | |
Cycles | longestFuLatency |
Longest latency of any FU, useful for setting up the activity recoder. | |
bool | setTraceTimeOnCommit |
Modify instruction trace times on commit. | |
bool | setTraceTimeOnIssue |
Modify instruction trace times on issue. | |
bool | allowEarlyMemIssue |
Allow mem refs to leave their FUs before reaching the head of the in flight insts queue if their dependencies are met. | |
unsigned int | noCostFUIndex |
The FU index of the non-existent costless FU for instructions which pass the MinorDynInst::isNoCostInst test. | |
LSQ | lsq |
Dcache port to pass on to the CPU. | |
std::vector< Scoreboard > | scoreboard |
Scoreboard of instruction dependencies. | |
std::vector< FUPipeline * > | funcUnits |
The execution functional units. | |
std::vector< ExecuteThreadInfo > | executeInfo |
ThreadID | interruptPriority |
ThreadID | issuePriority |
ThreadID | commitPriority |
Friends | |
std::ostream & | operator<< (std::ostream &os, Execute::DrainState state) |
Execute stage.
Everything apart from fetching and decoding instructions. The LSQ lives here too.
Definition at line 67 of file execute.hh.
|
protected |
Stage cycle-by-cycle state.
State that drain passes through (in order). On a drain request, Execute transitions into either DrainCurrentInst (if between microops) or DrainHaltFetch.
Note that Execute doesn't actually have * a 'Drained' state, only an indication that it's currently draining and isDrained that can't tell if there are insts still in the pipeline leading up to Execute
Enumerator | |
---|---|
NotDraining | |
DrainCurrentInst | |
DrainHaltFetch | |
DrainAllInsts |
Definition at line 144 of file execute.hh.
gem5::minor::Execute::Execute | ( | const std::string & | name_, |
MinorCPU & | cpu_, | ||
const BaseMinorCPUParams & | params, | ||
Latch< ForwardInstData >::Output | inp_, | ||
Latch< BranchData >::Input | out_ ) |
Check that there is a functional unit for all operation classes
Definition at line 63 of file execute.cc.
References commitLimit, cpu, executeInfo, fatal, gem5::PowerISA::fu, fuDescriptions, funcUnits, gem5::MinorFUPool::funcUnits, gem5::ArmISA::i, inputBuffer, issueLimit, memoryCommitLimit, memoryIssueLimit, gem5::Num_OpClasses, numFuncUnits, gem5::MinorFU::opLat, scoreboard, gem5::MinorCPU::threads, and warn.
gem5::minor::Execute::~Execute | ( | ) |
Definition at line 1863 of file execute.cc.
References cpu, executeInfo, funcUnits, gem5::ArmISA::i, numFuncUnits, and gem5::BaseCPU::numThreads.
|
protected |
Check all threads for possible interrupts.
If interrupt is taken, returns the tid of the thread. interrupted is set if any thread has an interrupt, irrespective of if it is taken
Definition at line 1608 of file execute.cc.
References cpu, DPRINTF, executeInfo, gem5::FullSystem, gem5::BaseCPU::getInterruptController(), interruptPriority, gem5::InvalidThreadID, isInbetweenInsts(), isInterrupted(), NotDraining, gem5::BaseCPU::numThreads, and takeInterrupt().
Referenced by evaluate().
|
protected |
Try and commit instructions from the ends of the functional unit pipelines.
If only_commit_microops is true then only commit upto the end of the currect full instruction. If discard is true then discard all instructions rather than committing. branch is set to any branch raised during commit.
Try and execute as many instructions from the end of FU pipelines as possible. This doesn't include actually advancing the pipelines.
We do this by looping on the front of the inFlightInsts queue for as long as we can find the desired instruction at the end of the functional unit it was issued to without seeing a branch or a fault. In this function, these terms are used: complete – The instruction has finished its passage through its functional unit and its fate has been decided (committed, discarded, issued to the memory system) commit – The instruction is complete(d), not discarded and has its effects applied to the CPU state discard(ed) – The instruction is complete but not committed as its streamSeqNum disagrees with the current Execute::streamSeqNum
Commits are also possible from two other places:
1) Responses returning from the LSQ 2) Mem ops issued to the LSQ ('committed' from the FUs) earlier than their position in the inFlightInsts queue, but after all their dependencies are resolved.
Definition at line 1030 of file execute.cc.
References gem5::minor::MinorDynInst::bubble(), gem5::minor::LSQ::canRequest(), commitInst(), commitLimit, gem5::minor::LSQ::completeMemBarrierInst(), cpu, gem5::Clocked::curCycle(), gem5::curTick(), DPRINTF, executeInfo, gem5::BaseCPU::executeStats, gem5::minor::LSQ::findResponse(), gem5::PowerISA::fu, funcUnits, gem5::BaseCPU::getContext(), gem5::minor::LSQ::getLastMemBarrier(), handleMemResponse(), gem5::minor::Execute::ExecuteThreadInfo::inFlightInsts, gem5::minor::Execute::ExecuteThreadInfo::inFUMemInsts, gem5::minor::QueuedInst::inst, gem5::minor::ForwardInstData::insts, gem5::minor::Execute::ExecuteThreadInfo::instsBeingCommitted, isInbetweenInsts(), gem5::minor::BranchData::isStreamChange(), gem5::minor::Execute::ExecuteThreadInfo::lastCommitWasEndOfMacroop, gem5::minor::Execute::ExecuteThreadInfo::lastPredictionSeqNum, lsq, memoryCommitLimit, noCostFUIndex, gem5::NoFault, gem5::ThreadContext::pcState(), gem5::minor::LSQ::popResponse(), scoreboard, setTraceTimeOnCommit, gem5::minor::Execute::ExecuteThreadInfo::streamSeqNum, tryPCEvents(), gem5::minor::BranchData::UnpredictedBranch, and updateBranchData().
Referenced by evaluate().
|
protected |
Commit a single instruction.
Returns true if the instruction being examined was completed (fully executed, discarded, or initiated a memory access), false if there is still some processing to do. fu_index is the index of the functional unit this instruction is being executed in into for funcUnits If early_memory_issue is true then this is an early execution of a mem ref and so faults will not be processed. If the return value is true: fault is set if a fault happened, branch is set to indicate any branch that occurs committed is set to true if this instruction is committed (and so needs to be traced and accounted for) completed_mem_issue is set if the instruction was a memory access that was issued
Definition at line 888 of file execute.cc.
References gem5::minor::LSQ::canPushIntoStoreBuffer(), cpu, doInstCommitAccounting(), DPRINTF, executeInfo, executeMemRefInst(), gem5::BaseCPU::fetchStats, gem5::BaseCPU::getContext(), gem5::minor::BranchData::isBubble(), isInterrupted(), lsq, gem5::NoFault, panic, gem5::ThreadContext::pcState(), gem5::minor::ExecContext::readPredicate(), gem5::ThreadContext::status(), gem5::ThreadContext::Suspended, gem5::minor::BranchData::SuspendThread, gem5::MinorCPU::threads, tryToBranch(), and updateBranchData().
Referenced by commit().
|
protected |
Do the stats handling and instruction count and PC event events related to the new instruction/op counts.
Definition at line 856 of file execute.cc.
References gem5::BaseCPU::baseStats, gem5::SimpleThread::comInstEventQueue, gem5::BaseCPU::commitStats, cpu, gem5::ThreadState::numInst, gem5::BaseCPU::BaseCPUStats::numInsts, gem5::ThreadState::ThreadStateStats::numInsts, gem5::ThreadState::numOp, gem5::ThreadState::ThreadStateStats::numOps, gem5::BaseCPU::probeInstCommit(), gem5::EventQueue::serviceEvents(), gem5::MinorCPU::threads, and gem5::ThreadState::threadStats.
Referenced by commitInst(), and handleMemResponse().
unsigned int gem5::minor::Execute::drain | ( | ) |
Like the drain interface on SimObject.
Definition at line 1825 of file execute.cc.
References cpu, DPRINTF, DrainCurrentInst, DrainHaltFetch, executeInfo, gem5::minor::Pipeline::ExecuteStageId, isDrained(), isInbetweenInsts(), NotDraining, gem5::BaseCPU::numThreads, setDrainState(), and gem5::MinorCPU::wakeupOnEvent().
Referenced by gem5::minor::Pipeline::drain().
void gem5::minor::Execute::drainResume | ( | ) |
Definition at line 1782 of file execute.cc.
References cpu, DPRINTF, gem5::minor::Pipeline::ExecuteStageId, NotDraining, gem5::BaseCPU::numThreads, setDrainState(), and gem5::MinorCPU::wakeupOnEvent().
Referenced by gem5::minor::Pipeline::drainResume().
void gem5::minor::Execute::evaluate | ( | ) |
Pass on input/buffer data to the output if you can.
Definition at line 1421 of file execute.cc.
References gem5::ActivityRecorder::activity(), gem5::MinorCPU::activityRecorder, gem5::minor::FUPipeline::advance(), gem5::minor::BranchData::bubble(), gem5::minor::MinorDynInst::bubble(), checkInterrupts(), commit(), cpu, gem5::Clocked::curCycle(), DPRINTF, DrainAllInsts, DrainCurrentInst, DrainHaltFetch, gem5::minor::Execute::ExecuteThreadInfo::drainState, executeInfo, gem5::minor::Pipeline::ExecuteStageId, gem5::minor::LSQ::findResponse(), gem5::PowerISA::fu, funcUnits, getCommittingThread(), gem5::BaseCPU::getContext(), getInput(), getIssuingThread(), gem5::minor::BranchData::HaltFetch, hasInterrupt(), gem5::ArmISA::i, inp, inputBuffer, gem5::minor::QueuedInst::inst, gem5::minor::ForwardInstData::insts, gem5::InvalidThreadID, gem5::minor::BranchData::isBubble(), isInbetweenInsts(), issue(), lsq, gem5::minor::LSQ::needsToTick(), NotDraining, numFuncUnits, gem5::BaseCPU::numThreads, out, gem5::ThreadContext::pcState(), popInput(), scoreboard, setDrainState(), gem5::minor::LSQ::step(), updateBranchData(), and gem5::MinorCPU::wakeupOnEvent().
Referenced by gem5::minor::Pipeline::evaluate().
|
protected |
Execute a memory reference instruction.
This calls initiateAcc on the instruction which will then call writeMem or readMem to issue a memory access to the LSQ. Returns true if the instruction was executed rather than stalled because of a lack of LSQ resources and false otherwise. branch is set to any branch raised by the instruction. failed_predicate is set to false if the instruction passed its predicate and so will access memory or true if the instruction failed its predicate and is now complete. fault is set if any non-NoFault fault is raised. Any faults raised are actually invoke-d by this function.
Definition at line 450 of file execute.cc.
References gem5::minor::LSQ::canRequest(), gem5::PCStateBase::clone(), cpu, DPRINTF, gem5::BaseCPU::getContext(), lsq, gem5::NoFault, gem5::ThreadContext::pcState(), gem5::minor::LSQ::pushFailedRequest(), gem5::minor::ExecContext::readMemAccPredicate(), gem5::minor::ExecContext::readPredicate(), and gem5::MinorCPU::threads.
Referenced by commitInst().
|
inlineprotected |
Use the current threading policy to determine the next thread to decode from.
Definition at line 1687 of file execute.cc.
References gem5::minor::LSQ::canRequest(), commitPriority, cpu, executeInfo, gem5::minor::LSQ::findResponse(), gem5::PowerISA::fu, funcUnits, gem5::minor::Execute::ExecuteThreadInfo::inFlightInsts, gem5::minor::Execute::ExecuteThreadInfo::inFUMemInsts, gem5::minor::QueuedInst::inst, gem5::InvalidThreadID, lsq, noCostFUIndex, panic, gem5::MinorCPU::randomPriority(), gem5::MinorCPU::roundRobinPriority(), and gem5::MinorCPU::threadPolicy.
Referenced by evaluate().
MinorCPU::MinorCPUPort & gem5::minor::Execute::getDcachePort | ( | ) |
Returns the DcachePort owned by this Execute to pass upwards.
Definition at line 1890 of file execute.cc.
References gem5::minor::LSQ::getDcachePort(), and lsq.
Referenced by gem5::minor::Pipeline::getDataPort().
|
protected |
Get a piece of data to work on from the inputBuffer, or 0 if there is no data.
Definition at line 198 of file execute.cc.
References inputBuffer, and gem5::minor::ForwardInstData::isBubble().
Referenced by evaluate(), getIssuingThread(), and issue().
|
inlineprotected |
Definition at line 1754 of file execute.cc.
References cpu, getInput(), gem5::InvalidThreadID, issuePriority, panic, gem5::MinorCPU::randomPriority(), gem5::MinorCPU::roundRobinPriority(), and gem5::MinorCPU::threadPolicy.
Referenced by evaluate().
|
inline |
To allow ExecContext to find the LSQ.
Definition at line 337 of file execute.hh.
References lsq.
Referenced by gem5::minor::ExecContext::initiateMemAMO(), gem5::minor::ExecContext::initiateMemRead(), and gem5::minor::ExecContext::writeMem().
|
protected |
Handle extracting mem ref responses from the memory queues and completing the associated instructions.
Fault is an output and will contain any fault caused (and already invoked by the function) Sets branch to any branch generated by the instruction.
Definition at line 325 of file execute.cc.
References cpu, doInstCommitAccounting(), DPRINTF, fatal, gem5::Packet::getAddr(), gem5::Packet::getConstPtr(), gem5::BaseCPU::getContext(), gem5::Packet::getSize(), gem5::Packet::isError(), lsq, gem5::minor::LSQ::LSQRequest::needsToBeSentToStoreBuffer(), gem5::NoFault, gem5::minor::LSQ::LSQRequest::packet, gem5::minor::LSQ::popResponse(), gem5::minor::ExecContext::readMemAccPredicate(), gem5::minor::ExecContext::readPredicate(), gem5::minor::LSQ::sendStoreToStoreBuffer(), gem5::MinorCPU::threads, and tryToBranch().
Referenced by commit().
|
protected |
Checks if a specific thread has an interrupt.
No action is taken. this is used for determining if a thread should only commit microops
Definition at line 1643 of file execute.cc.
References cpu, executeInfo, gem5::FullSystem, gem5::BaseCPU::getInterruptController(), isInterrupted(), and NotDraining.
Referenced by evaluate().
bool gem5::minor::Execute::instIsHeadInst | ( | MinorDynInstPtr | inst | ) |
Returns true if the given instruction is at the head of the inFlightInsts instruction queue.
Definition at line 1879 of file execute.cc.
References executeInfo.
Referenced by gem5::minor::LSQ::tryToSendToTransfers().
bool gem5::minor::Execute::instIsRightStream | ( | MinorDynInstPtr | inst | ) |
Does the given instruction have the right stream sequence number to be committed?
Definition at line 1873 of file execute.cc.
References executeInfo.
Referenced by gem5::minor::LSQ::tryToSendToTransfers().
bool gem5::minor::Execute::isDrained | ( | ) |
After thread suspension, has Execute been drained of in-flight instructions and memory accesses.
Definition at line 1847 of file execute.cc.
References cpu, executeInfo, inputBuffer, gem5::minor::LSQ::isDrained(), lsq, and gem5::BaseCPU::numThreads.
Referenced by drain(), and gem5::minor::Pipeline::isDrained().
|
protected |
Are we between instructions? Can we be interrupted?
Definition at line 1414 of file execute.cc.
References gem5::minor::LSQ::accessesInFlight(), executeInfo, and lsq.
Referenced by checkInterrupts(), commit(), drain(), evaluate(), and minorTrace().
|
protected |
Has an interrupt been raised.
Definition at line 416 of file execute.cc.
References gem5::BaseCPU::checkInterrupts(), and cpu.
Referenced by checkInterrupts(), commitInst(), and hasInterrupt().
|
protected |
Try and issue instructions from the inputBuffer.
Definition at line 547 of file execute.cc.
References gem5::ActivityRecorder::activity(), gem5::MinorCPU::activityRecorder, allowEarlyMemIssue, cpu, gem5::Clocked::curCycle(), gem5::curTick(), DPRINTF, executeInfo, gem5::MinorFUTiming::extraAssumedLat, gem5::MinorFUTiming::extraCommitLat, gem5::MinorFUTiming::extraCommitLatExpr, gem5::PowerISA::fu, funcUnits, gem5::BaseCPU::getContext(), getInput(), gem5::minor::LSQ::getLastMemBarrier(), gem5::minor::Execute::ExecuteThreadInfo::inFlightInsts, gem5::minor::Execute::ExecuteThreadInfo::inFUMemInsts, gem5::minor::Execute::ExecuteThreadInfo::inputIndex, gem5::minor::ForwardInstData::insts, gem5::minor::LSQ::issuedMemBarrierInst(), issueLimit, lsq, memoryIssueLimit, noCostFUIndex, numFuncUnits, popInput(), processMoreThanOneInput, scoreboard, setTraceTimeOnIssue, gem5::MinorFUTiming::srcRegsRelativeLats, gem5::ThreadContext::status(), gem5::minor::Execute::ExecuteThreadInfo::streamSeqNum, gem5::MinorFUTiming::suppress, gem5::ThreadContext::Suspended, and gem5::minor::ForwardInstData::width().
Referenced by evaluate().
void gem5::minor::Execute::minorTrace | ( | ) | const |
Definition at line 1654 of file execute.cc.
References executeInfo, funcUnits, gem5::ArmISA::i, inputBuffer, isInbetweenInsts(), lsq, gem5::minor::LSQ::minorTrace(), gem5::minor::MinorBuffer< ElemType, ReportTraits >::minorTrace(), gem5::minor::minorTrace(), numFuncUnits, and scoreboard.
Referenced by gem5::minor::Pipeline::minorTrace().
|
protected |
Pop an element off the input buffer, if there are any.
Definition at line 211 of file execute.cc.
References executeInfo, and inputBuffer.
Referenced by evaluate(), and issue().
|
protected |
Set the drain state (with useful debugging messages)
Definition at line 1818 of file execute.cc.
References DPRINTF, executeInfo, and state.
Referenced by drain(), drainResume(), and evaluate().
|
protected |
Act on an interrupt.
Returns true if an interrupt was actually signalled and invoked
Definition at line 422 of file execute.cc.
References gem5::minor::LSQ::accessesInFlight(), gem5::minor::MinorDynInst::bubble(), cpu, DPRINTF, gem5::BaseCPU::getContext(), gem5::BaseInterrupts::getInterrupt(), gem5::BaseCPU::getInterruptController(), gem5::minor::BranchData::Interrupt, lsq, gem5::NoFault, gem5::ThreadContext::pcState(), updateBranchData(), and gem5::BaseInterrupts::updateIntrInfo().
Referenced by checkInterrupts().
|
protected |
Try to act on PC-related events.
Returns true if any were executed
Definition at line 834 of file execute.cc.
References cpu, DPRINTF, gem5::BaseCPU::getContext(), gem5::PCStateBase::instAddr(), gem5::ThreadContext::pcState(), and gem5::MinorCPU::threads.
Referenced by commit().
|
protected |
Generate Branch data based (into branch) on an observed (or not) change in PC while executing an instruction.
Also handles branch prediction information within the inst.
Definition at line 220 of file execute.cc.
References gem5::minor::BranchData::BadlyPredictedBranch, gem5::minor::BranchData::BadlyPredictedBranchTarget, gem5::PCStateBase::clone(), gem5::minor::BranchData::CorrectlyPredictedBranch, cpu, DPRINTF, gem5::BaseCPU::getContext(), gem5::minor::BranchData::NoBranch, gem5::NoFault, gem5::ThreadContext::pcState(), gem5::ThreadContext::status(), gem5::ThreadContext::Suspended, gem5::minor::BranchData::UnpredictedBranch, and updateBranchData().
Referenced by commitInst(), and handleMemResponse().
|
protected |
Actually create a branch to communicate to Fetch1/Fetch2 and, if that is a stream-changing branch update the streamSeqNum.
Definition at line 299 of file execute.cc.
References DPRINTF, executeInfo, gem5::minor::BranchData::isStreamChange(), and gem5::minor::BranchData::NoBranch.
Referenced by commit(), commitInst(), evaluate(), takeInterrupt(), and tryToBranch().
|
friend |
Definition at line 1793 of file execute.cc.
|
protected |
Allow mem refs to leave their FUs before reaching the head of the in flight insts queue if their dependencies are met.
Definition at line 115 of file execute.hh.
Referenced by issue().
|
protected |
Number of instructions that can be committed per cycle.
Definition at line 87 of file execute.hh.
|
protected |
Definition at line 211 of file execute.hh.
Referenced by getCommittingThread().
|
protected |
Pointer back to the containing CPU.
Definition at line 78 of file execute.hh.
Referenced by checkInterrupts(), commit(), commitInst(), doInstCommitAccounting(), drain(), drainResume(), evaluate(), Execute(), executeMemRefInst(), getCommittingThread(), getIssuingThread(), handleMemResponse(), hasInterrupt(), isDrained(), isInterrupted(), issue(), takeInterrupt(), tryPCEvents(), tryToBranch(), and ~Execute().
|
protected |
Definition at line 207 of file execute.hh.
Referenced by checkInterrupts(), commit(), commitInst(), drain(), evaluate(), Execute(), getCommittingThread(), hasInterrupt(), instIsHeadInst(), instIsRightStream(), isDrained(), isInbetweenInsts(), issue(), minorTrace(), popInput(), setDrainState(), updateBranchData(), and ~Execute().
|
protected |
Descriptions of the functional units we want to generate.
Definition at line 98 of file execute.hh.
Referenced by Execute().
|
protected |
The execution functional units.
Definition at line 128 of file execute.hh.
Referenced by commit(), evaluate(), Execute(), getCommittingThread(), issue(), minorTrace(), and ~Execute().
|
protected |
Input port carrying instructions from Decode.
Definition at line 72 of file execute.hh.
Referenced by evaluate().
std::vector<InputBuffer<ForwardInstData> > gem5::minor::Execute::inputBuffer |
Definition at line 131 of file execute.hh.
Referenced by evaluate(), Execute(), getInput(), isDrained(), minorTrace(), and popInput().
|
protected |
Definition at line 209 of file execute.hh.
Referenced by checkInterrupts().
|
protected |
Number of instructions that can be issued per cycle.
Definition at line 81 of file execute.hh.
|
protected |
Definition at line 210 of file execute.hh.
Referenced by getIssuingThread().
|
protected |
Longest latency of any FU, useful for setting up the activity recoder.
Definition at line 105 of file execute.hh.
|
protected |
Dcache port to pass on to the CPU.
Execute owns this
Definition at line 122 of file execute.hh.
Referenced by commit(), commitInst(), evaluate(), executeMemRefInst(), getCommittingThread(), getDcachePort(), getLSQ(), handleMemResponse(), isDrained(), isInbetweenInsts(), issue(), minorTrace(), and takeInterrupt().
|
protected |
Number of memory instructions that can be committed per cycle.
Definition at line 90 of file execute.hh.
|
protected |
Number of memory ops that can be issued per cycle.
Definition at line 84 of file execute.hh.
|
protected |
The FU index of the non-existent costless FU for instructions which pass the MinorDynInst::isNoCostInst test.
Definition at line 119 of file execute.hh.
Referenced by commit(), getCommittingThread(), and issue().
|
protected |
Number of functional units to produce.
Definition at line 101 of file execute.hh.
Referenced by evaluate(), Execute(), issue(), minorTrace(), and ~Execute().
|
protected |
Input port carrying stream changes to Fetch1.
Definition at line 75 of file execute.hh.
Referenced by evaluate().
|
protected |
If true, more than one input line can be processed each cycle if there is room to execute more instructions than taken from the first line.
Definition at line 95 of file execute.hh.
Referenced by issue().
|
protected |
Scoreboard of instruction dependencies.
Definition at line 125 of file execute.hh.
Referenced by commit(), evaluate(), Execute(), issue(), and minorTrace().
|
protected |
Modify instruction trace times on commit.
Definition at line 108 of file execute.hh.
Referenced by commit().
|
protected |
Modify instruction trace times on issue.
Definition at line 111 of file execute.hh.
Referenced by issue().