gem5  v22.1.0.0
Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
gem5::Ticked Class Referenceabstract

Ticked attaches gem5's event queue/scheduler to evaluate calls and provides a start/stop interface to ticking. More...

#include <ticked_object.hh>

Inheritance diagram for gem5::Ticked:
gem5::Serializable gem5::TickedObject gem5::minor::Pipeline

Public Member Functions

 Ticked (ClockedObject &object_, statistics::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 evaluate ()=0
 Action to call on the clock tick. More...
 
virtual void countCycles (Cycles delta)
 Callback to handle cycle statistics and probes. More...
 
- Public Member Functions inherited from gem5::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)
 

Protected Member Functions

void processClockEvent ()
 Evaluate and reschedule. More...
 

Protected Attributes

ClockedObjectobject
 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...
 
statistics::ScalarnumCycles
 Total number of cycles either ticked or spend stopped. More...
 
statistics::Scalar tickCycles
 Number of cycles ticked. More...
 
statistics::Formula idleCycles
 Number of cycles stopped. More...
 

Private Attributes

statistics::ScalarnumCyclesLocal
 Locally allocated stats. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from gem5::Serializable
static const std::string & currentSection ()
 Gets the fully-qualified name of the active section. More...
 
static void generateCheckpointOut (const std::string &cpt_dir, std::ofstream &outstream)
 Generate a checkpoint file so that the serialization can be routed to it. More...
 

Detailed Description

Ticked attaches gem5's event queue/scheduler to evaluate calls and provides a start/stop interface to ticking.

Ticked is not a ClockedObject but can be attached to one by inheritance and by calling regStats, serialize/unserialize

Definition at line 61 of file ticked_object.hh.

Constructor & Destructor Documentation

◆ Ticked()

gem5::Ticked::Ticked ( ClockedObject object_,
statistics::Scalar imported_num_cycles = NULL,
Event::Priority  priority = Event::CPU_Tick_Pri 
)

Definition at line 47 of file ticked_object.cc.

References processClockEvent().

◆ ~Ticked()

virtual gem5::Ticked::~Ticked ( )
inlinevirtual

Definition at line 98 of file ticked_object.hh.

Member Function Documentation

◆ countCycles()

virtual void gem5::Ticked::countCycles ( Cycles  delta)
inlinevirtual

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.

Definition at line 161 of file ticked_object.hh.

Referenced by processClockEvent(), and start().

◆ cyclesSinceLastStopped()

Cycles gem5::Ticked::cyclesSinceLastStopped ( ) const
inline

How long have we been stopped for?

Definition at line 119 of file ticked_object.hh.

References lastStopped.

Referenced by start().

◆ evaluate()

virtual void gem5::Ticked::evaluate ( )
pure virtual

Action to call on the clock tick.

Implemented in gem5::minor::Pipeline.

Referenced by processClockEvent().

◆ processClockEvent()

void gem5::Ticked::processClockEvent ( )
protected

Evaluate and reschedule.

Definition at line 61 of file ticked_object.cc.

References countCycles(), evaluate(), event, numCycles, running, and tickCycles.

Referenced by Ticked().

◆ regStats()

void gem5::Ticked::regStats ( )

Register {num,ticks}Cycles if necessary.

If numCycles is imported, be sure to register it before calling this regStats

Definition at line 71 of file ticked_object.cc.

References idleCycles, name(), gem5::statistics::DataWrap< Derived, InfoProxyType >::name(), numCycles, numCyclesLocal, and tickCycles.

Referenced by gem5::TickedObject::regStats().

◆ resetLastStopped()

void gem5::Ticked::resetLastStopped ( )
inline

Reset stopped time to current time.

Definition at line 126 of file ticked_object.hh.

References lastStopped.

Referenced by stop().

◆ serialize()

void gem5::Ticked::serialize ( CheckpointOut cp) const
overridevirtual

Checkpoint lastStopped.

Implements gem5::Serializable.

Reimplemented in gem5::TickedObject.

Definition at line 90 of file ticked_object.cc.

References lastStopped, and gem5::paramOut().

Referenced by gem5::TickedObject::serialize().

◆ start()

void gem5::Ticked::start ( )
inline

Start ticking.

Definition at line 106 of file ticked_object.hh.

References countCycles(), cyclesSinceLastStopped(), event, numCycles, running, and gem5::Event::scheduled().

◆ stop()

void gem5::Ticked::stop ( )
inline

Cancel the next tick event and issue no more.

Definition at line 133 of file ticked_object.hh.

References event, resetLastStopped(), running, and gem5::Event::scheduled().

Referenced by gem5::minor::Pipeline::evaluate().

◆ unserialize()

void gem5::Ticked::unserialize ( CheckpointIn cp)
overridevirtual

Unserialize an object.

Read an object's state from the current checkpoint section.

Parameters
cpCheckpoint state

Implements gem5::Serializable.

Reimplemented in gem5::TickedObject.

Definition at line 98 of file ticked_object.cc.

References lastStopped, and gem5::optParamIn().

Referenced by gem5::TickedObject::unserialize().

Member Data Documentation

◆ event

EventFunctionWrapper gem5::Ticked::event
protected

The wrapper for processClockEvent.

Definition at line 68 of file ticked_object.hh.

Referenced by processClockEvent(), start(), and stop().

◆ idleCycles

statistics::Formula gem5::Ticked::idleCycles
protected

Number of cycles stopped.

Definition at line 91 of file ticked_object.hh.

Referenced by regStats().

◆ lastStopped

Cycles gem5::Ticked::lastStopped
protected

Time of last stop event to calculate run time.

Definition at line 77 of file ticked_object.hh.

Referenced by cyclesSinceLastStopped(), resetLastStopped(), serialize(), and unserialize().

◆ numCycles

statistics::Scalar& gem5::Ticked::numCycles
protected

Total number of cycles either ticked or spend stopped.

Definition at line 85 of file ticked_object.hh.

Referenced by processClockEvent(), regStats(), and start().

◆ numCyclesLocal

statistics::Scalar* gem5::Ticked::numCyclesLocal
private

Locally allocated stats.

Definition at line 81 of file ticked_object.hh.

Referenced by regStats().

◆ object

ClockedObject& gem5::Ticked::object
protected

ClockedObject who is responsible for this Ticked's actions/stats.

Definition at line 65 of file ticked_object.hh.

◆ running

bool gem5::Ticked::running
protected

Have I been started? and am not stopped.

Definition at line 74 of file ticked_object.hh.

Referenced by processClockEvent(), start(), and stop().

◆ tickCycles

statistics::Scalar gem5::Ticked::tickCycles
protected

Number of cycles ticked.

Definition at line 88 of file ticked_object.hh.

Referenced by processClockEvent(), and regStats().


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

Generated on Wed Dec 21 2022 10:23:31 for gem5 by doxygen 1.9.1