gem5
v20.1.0.0
|
The constructed pipeline. More...
#include <pipeline.hh>
Public Types | |
enum | StageId { CPUStageId = 0, Fetch1StageId, Fetch2StageId, DecodeStageId, ExecuteStageId, Num_StageId } |
Enumerated ids of the 'stages' for the activity recorder. More... | |
Public Member Functions | |
Pipeline (MinorCPU &cpu_, MinorCPUParams ¶ms) | |
void | wakeupFetch (ThreadID tid) |
Wake up the Fetch unit. More... | |
bool | drain () |
Try to drain the CPU. More... | |
void | drainResume () |
bool | isDrained () |
Test to see if the CPU is drained. More... | |
void | evaluate () override |
A custom evaluate allows report in the right place (between stages and pipeline advance) More... | |
void | minorTrace () const |
MinorCPU::MinorCPUPort & | getInstPort () |
Functions below here are BaseCPU operations passed on to pipeline stages. More... | |
MinorCPU::MinorCPUPort & | getDataPort () |
Return the DcachePort belonging to Execute for the CPU. More... | |
MinorActivityRecorder * | getActivityRecorder () |
To give the activity recorder to the CPU. More... | |
Public Member Functions inherited from Ticked | |
Ticked (ClockedObject &object_, Stats::Scalar *imported_num_cycles=NULL, Event::Priority priority=Event::CPU_Tick_Pri) | |
virtual | ~Ticked () |
void | regStats () |
Register {num,ticks}Cycles if necessary. More... | |
void | start () |
Start ticking. More... | |
Cycles | cyclesSinceLastStopped () const |
How long have we been stopped for? More... | |
void | resetLastStopped () |
Reset stopped time to current time. More... | |
void | stop () |
Cancel the next tick event and issue no more. More... | |
void | serialize (CheckpointOut &cp) const override |
Checkpoint lastStopped. More... | |
void | unserialize (CheckpointIn &cp) override |
Unserialize an object. More... | |
virtual void | countCycles (Cycles delta) |
Callback to handle cycle statistics and probes. More... | |
Public Member Functions inherited from Serializable | |
Serializable () | |
virtual | ~Serializable () |
void | serializeSection (CheckpointOut &cp, const char *name) const |
Serialize an object into a new section. More... | |
void | serializeSection (CheckpointOut &cp, const std::string &name) const |
void | unserializeSection (CheckpointIn &cp, const char *name) |
Unserialize an a child object. More... | |
void | unserializeSection (CheckpointIn &cp, const std::string &name) |
Public Attributes | |
bool | needToSignalDrained |
True after drain is called but draining isn't complete. More... | |
Protected Attributes | |
MinorCPU & | cpu |
bool | allow_idling |
Allow cycles to be skipped when the pipeline is idle. More... | |
Latch< ForwardLineData > | f1ToF2 |
Latch< BranchData > | f2ToF1 |
Latch< ForwardInstData > | f2ToD |
Latch< ForwardInstData > | dToE |
Latch< BranchData > | eToF1 |
Execute | execute |
Decode | decode |
Fetch2 | fetch2 |
Fetch1 | fetch1 |
MinorActivityRecorder | activityRecorder |
Activity recording for the pipeline. More... | |
Protected Attributes inherited from Ticked | |
ClockedObject & | object |
ClockedObject who is responsible for this Ticked's actions/stats. More... | |
EventFunctionWrapper | event |
The wrapper for processClockEvent. More... | |
bool | running |
Have I been started? and am not stopped. More... | |
Cycles | lastStopped |
Time of last stop event to calculate run time. More... | |
Stats::Scalar & | numCycles |
Total number of cycles either ticked or spend stopped. More... | |
Stats::Scalar | tickCycles |
Number of cycles ticked. More... | |
Stats::Formula | idleCycles |
Number of cycles stopped. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from Serializable | |
static const std::string & | currentSection () |
Gets the fully-qualified name of the active section. More... | |
static void | serializeAll (const std::string &cpt_dir) |
Serializes all the SimObjects. More... | |
static void | unserializeGlobals (CheckpointIn &cp) |
Protected Member Functions inherited from Ticked | |
void | processClockEvent () |
Evaluate and reschedule. More... | |
The constructed pipeline.
Kept out of MinorCPU to keep the interface between the CPU and its grubby implementation details clean.
Definition at line 69 of file pipeline.hh.
Enumerated ids of the 'stages' for the activity recorder.
Enumerator | |
---|---|
CPUStageId | |
Fetch1StageId | |
Fetch2StageId | |
DecodeStageId | |
ExecuteStageId | |
Num_StageId |
Definition at line 95 of file pipeline.hh.
Minor::Pipeline::Pipeline | ( | MinorCPU & | cpu_, |
MinorCPUParams & | params | ||
) |
Definition at line 54 of file pipeline.cc.
bool Minor::Pipeline::drain | ( | ) |
Try to drain the CPU.
Definition at line 195 of file pipeline.cc.
References DPRINTF, Minor::Execute::drain(), execute, isDrained(), and needToSignalDrained.
void Minor::Pipeline::drainResume | ( | ) |
Definition at line 211 of file pipeline.cc.
References cpu, DPRINTF, Minor::Execute::drainResume(), execute, fetch1, BaseCPU::numThreads, and Minor::Fetch1::wakeupFetch().
|
overridevirtual |
A custom evaluate allows report in the right place (between stages and pipeline advance)
Implements Ticked.
Definition at line 122 of file pipeline.cc.
References ActivityRecorder::active(), activityRecorder, allow_idling, cpu, CPUStageId, ActivityRecorder::deactivateStage(), decode, DecodeStageId, DPRINTF, dToE, DTRACE, eToF1, Minor::MinorActivityRecorder::evaluate(), Minor::Decode::evaluate(), Minor::Fetch2::evaluate(), Minor::Execute::evaluate(), Minor::Fetch1::evaluate(), execute, ExecuteStageId, f1ToF2, f2ToD, f2ToF1, fetch1, Fetch1StageId, fetch2, Fetch2StageId, isDrained(), minorTrace(), needToSignalDrained, MinorCPU::signalDrainDone(), and Ticked::stop().
|
inline |
To give the activity recorder to the CPU.
Definition at line 138 of file pipeline.hh.
References activityRecorder.
MinorCPU::MinorCPUPort & Minor::Pipeline::getDataPort | ( | ) |
Return the DcachePort belonging to Execute for the CPU.
Definition at line 183 of file pipeline.cc.
References execute, and Minor::Execute::getDcachePort().
MinorCPU::MinorCPUPort & Minor::Pipeline::getInstPort | ( | ) |
Functions below here are BaseCPU operations passed on to pipeline stages.
Return the IcachePort belonging to Fetch1 for the CPU
Definition at line 177 of file pipeline.cc.
References fetch1, and Minor::Fetch1::getIcachePort().
bool Minor::Pipeline::isDrained | ( | ) |
Test to see if the CPU is drained.
Definition at line 223 of file pipeline.cc.
References decode, DPRINTF, dToE, execute, f1ToF2, f2ToD, f2ToF1, fetch1, fetch2, Minor::Decode::isDrained(), Minor::Fetch2::isDrained(), Minor::Execute::isDrained(), and Minor::Fetch1::isDrained().
Referenced by drain(), and evaluate().
void Minor::Pipeline::minorTrace | ( | ) | const |
Definition at line 107 of file pipeline.cc.
References activityRecorder, decode, dToE, eToF1, execute, f1ToF2, f2ToD, f2ToF1, fetch1, fetch2, Minor::MinorActivityRecorder::minorTrace(), Minor::Decode::minorTrace(), Minor::Fetch2::minorTrace(), Minor::Execute::minorTrace(), and Minor::Fetch1::minorTrace().
Referenced by evaluate().
void Minor::Pipeline::wakeupFetch | ( | ThreadID | tid | ) |
Wake up the Fetch unit.
This is needed on thread activation esp. after quiesce wakeup
Definition at line 189 of file pipeline.cc.
References fetch1, and Minor::Fetch1::wakeupFetch().
|
protected |
Activity recording for the pipeline.
This is access through the CPU by the pipeline stages but belongs to the Pipeline as it is the cleanest place to initialise it
Definition at line 91 of file pipeline.hh.
Referenced by evaluate(), getActivityRecorder(), and minorTrace().
|
protected |
Allow cycles to be skipped when the pipeline is idle.
Definition at line 75 of file pipeline.hh.
Referenced by evaluate().
|
protected |
Definition at line 72 of file pipeline.hh.
Referenced by drainResume(), evaluate(), and Pipeline().
|
protected |
Definition at line 84 of file pipeline.hh.
Referenced by evaluate(), isDrained(), and minorTrace().
|
protected |
Definition at line 80 of file pipeline.hh.
Referenced by evaluate(), isDrained(), and minorTrace().
|
protected |
Definition at line 81 of file pipeline.hh.
Referenced by evaluate(), and minorTrace().
|
protected |
Definition at line 83 of file pipeline.hh.
Referenced by drain(), drainResume(), evaluate(), getDataPort(), isDrained(), and minorTrace().
|
protected |
Definition at line 77 of file pipeline.hh.
Referenced by evaluate(), isDrained(), and minorTrace().
|
protected |
Definition at line 79 of file pipeline.hh.
Referenced by evaluate(), isDrained(), and minorTrace().
|
protected |
Definition at line 78 of file pipeline.hh.
Referenced by evaluate(), isDrained(), and minorTrace().
|
protected |
Definition at line 86 of file pipeline.hh.
Referenced by drainResume(), evaluate(), getInstPort(), isDrained(), minorTrace(), and wakeupFetch().
|
protected |
Definition at line 85 of file pipeline.hh.
Referenced by evaluate(), isDrained(), and minorTrace().
bool Minor::Pipeline::needToSignalDrained |
True after drain is called but draining isn't complete.
Definition at line 105 of file pipeline.hh.
Referenced by drain(), and evaluate().