gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Public Attributes | Protected Attributes | List of all members
Minor::Pipeline Class Reference

The constructed pipeline. More...

#include <pipeline.hh>

Inheritance diagram for Minor::Pipeline:
Ticked Serializable

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 &params)
 
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 countCycles (Cycles delta) override
 Callback to handle cycle statistics and probes. More...
 
void minorTrace () const
 
MinorCPU::MinorCPUPortgetInstPort ()
 Functions below here are BaseCPU operations passed on to pipeline stages. More...
 
MinorCPU::MinorCPUPortgetDataPort ()
 Return the DcachePort belonging to Execute for the CPU. More...
 
MinorActivityRecordergetActivityRecorder ()
 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...
 
- 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

MinorCPUcpu
 
bool allow_idling
 Allow cycles to be skipped when the pipeline is idle. More...
 
Latch< ForwardLineDataf1ToF2
 
Latch< BranchDataf2ToF1
 
Latch< ForwardInstDataf2ToD
 
Latch< ForwardInstDatadToE
 
Latch< BranchDataeToF1
 
Execute execute
 
Decode decode
 
Fetch2 fetch2
 
Fetch1 fetch1
 
MinorActivityRecorder activityRecorder
 Activity recording for the pipeline. More...
 
- Protected Attributes inherited from Ticked
ClockedObjectobject
 ClockedObject who is responsible for this Ticked's actions/stats. More...
 
ClockEvent event
 The single instance of ClockEvent used. 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::ScalarnumCycles
 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 ()
 Get the fully-qualified name of the active section. More...
 
static void serializeAll (const std::string &cpt_dir)
 
static void unserializeGlobals (CheckpointIn &cp)
 
- Static Public Attributes inherited from Serializable
static int ckptCount = 0
 
static int ckptMaxCount = 0
 
static int ckptPrevCount = -1
 

Detailed Description

The constructed pipeline.

Kept out of MinorCPU to keep the interface between the CPU and its grubby implementation details clean.

Definition at line 71 of file pipeline.hh.

Member Enumeration Documentation

Enumerated ids of the 'stages' for the activity recorder.

Enumerator
CPUStageId 
Fetch1StageId 
Fetch2StageId 
DecodeStageId 
ExecuteStageId 
Num_StageId 

Definition at line 97 of file pipeline.hh.

Constructor & Destructor Documentation

Minor::Pipeline::Pipeline ( MinorCPU cpu_,
MinorCPUParams &  params 
)

Definition at line 56 of file pipeline.cc.

References cpu, and fatal.

Member Function Documentation

void Minor::Pipeline::countCycles ( Cycles  delta)
inlineoverridevirtual

Callback to handle cycle statistics and probes.

This callback is called at the beginning of a new cycle active cycle and when restarting the ticked object. The delta parameter indicates the number of cycles elapsed since the previous call is normally '1' unless the object has been stopped and restarted.

Parameters
deltaNumber of cycles since the previous call.

Reimplemented from Ticked.

Definition at line 129 of file pipeline.hh.

References cpu.

bool Minor::Pipeline::drain ( )

Try to drain the CPU.

Definition at line 197 of file pipeline.cc.

References DPRINTF, Minor::Execute::drain(), execute, isDrained(), and needToSignalDrained.

Referenced by MinorCPU::drain().

void Minor::Pipeline::drainResume ( )
void Minor::Pipeline::evaluate ( )
overridevirtual
MinorActivityRecorder* Minor::Pipeline::getActivityRecorder ( )
inline

To give the activity recorder to the CPU.

Definition at line 145 of file pipeline.hh.

References activityRecorder.

Referenced by MinorCPU::MinorCPU().

MinorCPU::MinorCPUPort & Minor::Pipeline::getDataPort ( )

Return the DcachePort belonging to Execute for the CPU.

Definition at line 185 of file pipeline.cc.

References execute, and Minor::Execute::getDcachePort().

Referenced by MinorCPU::getDataPort().

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 179 of file pipeline.cc.

References fetch1, and Minor::Fetch1::getIcachePort().

Referenced by MinorCPU::getInstPort().

bool Minor::Pipeline::isDrained ( )

Test to see if the CPU is drained.

Definition at line 225 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
void Minor::Pipeline::wakeupFetch ( ThreadID  tid)

Wake up the Fetch unit.

This is needed on thread activation esp. after quiesce wakeup

Definition at line 191 of file pipeline.cc.

References fetch1, and Minor::Fetch1::wakeupFetch().

Referenced by MinorCPU::activateContext(), and MinorCPU::startup().

Member Data Documentation

MinorActivityRecorder Minor::Pipeline::activityRecorder
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 93 of file pipeline.hh.

Referenced by evaluate(), getActivityRecorder(), and minorTrace().

bool Minor::Pipeline::allow_idling
protected

Allow cycles to be skipped when the pipeline is idle.

Definition at line 77 of file pipeline.hh.

Referenced by evaluate().

MinorCPU& Minor::Pipeline::cpu
protected

Definition at line 74 of file pipeline.hh.

Referenced by countCycles(), drainResume(), evaluate(), and Pipeline().

Decode Minor::Pipeline::decode
protected

Definition at line 86 of file pipeline.hh.

Referenced by evaluate(), isDrained(), and minorTrace().

Latch<ForwardInstData> Minor::Pipeline::dToE
protected

Definition at line 82 of file pipeline.hh.

Referenced by evaluate(), isDrained(), and minorTrace().

Latch<BranchData> Minor::Pipeline::eToF1
protected

Definition at line 83 of file pipeline.hh.

Referenced by evaluate(), and minorTrace().

Execute Minor::Pipeline::execute
protected

Definition at line 85 of file pipeline.hh.

Referenced by drain(), drainResume(), evaluate(), getDataPort(), isDrained(), and minorTrace().

Latch<ForwardLineData> Minor::Pipeline::f1ToF2
protected

Definition at line 79 of file pipeline.hh.

Referenced by evaluate(), isDrained(), and minorTrace().

Latch<ForwardInstData> Minor::Pipeline::f2ToD
protected

Definition at line 81 of file pipeline.hh.

Referenced by evaluate(), isDrained(), and minorTrace().

Latch<BranchData> Minor::Pipeline::f2ToF1
protected

Definition at line 80 of file pipeline.hh.

Referenced by evaluate(), isDrained(), and minorTrace().

Fetch1 Minor::Pipeline::fetch1
protected

Definition at line 88 of file pipeline.hh.

Referenced by drainResume(), evaluate(), getInstPort(), isDrained(), minorTrace(), and wakeupFetch().

Fetch2 Minor::Pipeline::fetch2
protected

Definition at line 87 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 107 of file pipeline.hh.

Referenced by drain(), and evaluate().


The documentation for this class was generated from the following files:

Generated on Fri Jun 9 2017 13:04:33 for gem5 by doxygen 1.8.6