gem5  v21.2.0.0
Public Member Functions | Public Attributes | Protected Attributes | List of all members
gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits > Class Template Reference

A pipeline simulating class that will stall (not advance when advance() is called) if a non-bubble value lies at the far end of the pipeline. More...

#include <buffers.hh>

Inheritance diagram for gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >:
gem5::minor::MinorBuffer< ElemType, ReportTraits > gem5::Named gem5::TimeBuffer< ElemType > gem5::minor::FUPipeline

Public Member Functions

 SelfStallingPipeline (const std::string &name, const std::string &data_name, unsigned depth)
 
void push (ElemType &elem)
 Write an element to the back of the pipeline. More...
 
ElemType & front ()
 Peek at the end element of the pipe. More...
 
const ElemType & front () const
 
bool alreadyPushed ()
 Have we already pushed onto this pipe without advancing. More...
 
bool isPopable ()
 There's data (not a bubble) at the end of the pipe. More...
 
void advance ()
 Try to advance the pipeline. More...
 
- Public Member Functions inherited from gem5::minor::MinorBuffer< ElemType, ReportTraits >
 MinorBuffer (const std::string &name, const std::string &data_name, int num_past, int num_future, int report_left=-1, int report_right=-1)
 
bool empty () const
 
void minorTrace () const
 Report buffer states from 'slot' 'from' to 'to'. More...
 
- Public Member Functions inherited from gem5::Named
 Named (const std::string &name_)
 
virtual ~Named ()=default
 
virtual std::string name () const
 
- Public Member Functions inherited from gem5::TimeBuffer< ElemType >
 TimeBuffer (int p, int f)
 
 TimeBuffer ()
 
 ~TimeBuffer ()
 
void id (int id)
 
int id ()
 
void advance ()
 
ElemType * access (int idx)
 
ElemType & operator[] (int idx)
 
const ElemType & operator[] (int idx) const
 
wire getWire (int idx)
 
wire zero ()
 
unsigned getSize ()
 

Public Attributes

bool stalled
 If true, advance will not advance the pipeline. More...
 
unsigned int occupancy
 The number of slots with non-bubbles in them. More...
 

Protected Attributes

TimeBuffer< ElemType >::wire pushWire
 Wire at the input end of the pipeline (for convenience) More...
 
TimeBuffer< ElemType >::wire popWire
 Wire at the output end of the pipeline (for convenience) More...
 
- Protected Attributes inherited from gem5::minor::MinorBuffer< ElemType, ReportTraits >
int reportLeft
 The range of elements that should appear in trace lines. More...
 
int reportRight
 
std::string dataName
 Name to use for the data in a MinorTrace line. More...
 
- Protected Attributes inherited from gem5::TimeBuffer< ElemType >
int past
 
int future
 
unsigned size
 
int _id
 
char * data
 
std::vector< char * > index
 
unsigned base
 

Additional Inherited Members

- Protected Member Functions inherited from gem5::TimeBuffer< ElemType >
void valid (int idx) const
 
int calculateVectorIndex (int idx) const
 

Detailed Description

template<typename ElemType, typename ReportTraits, typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
class gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >

A pipeline simulating class that will stall (not advance when advance() is called) if a non-bubble value lies at the far end of the pipeline.

The user can clear the stall before calling advance to unstall the pipeline.

Definition at line 294 of file buffers.hh.

Constructor & Destructor Documentation

◆ SelfStallingPipeline()

template<typename ElemType , typename ReportTraits , typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::SelfStallingPipeline ( const std::string &  name,
const std::string &  data_name,
unsigned  depth 
)
inline

Definition at line 310 of file buffers.hh.

References gem5::ArmISA::i.

Member Function Documentation

◆ advance()

template<typename ElemType , typename ReportTraits , typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
void gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::advance ( )
inline

◆ alreadyPushed()

template<typename ElemType , typename ReportTraits , typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
bool gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::alreadyPushed ( )
inline

◆ front() [1/2]

template<typename ElemType , typename ReportTraits , typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
ElemType& gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::front ( )
inline

◆ front() [2/2]

template<typename ElemType , typename ReportTraits , typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
const ElemType& gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::front ( ) const
inline

◆ isPopable()

template<typename ElemType , typename ReportTraits , typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
bool gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::isPopable ( )
inline

◆ push()

template<typename ElemType , typename ReportTraits , typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
void gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::push ( ElemType &  elem)
inline

Write an element to the back of the pipeline.

This doesn't cause the pipeline to advance until advance is called. Pushing twice without advance-ing will just cause an overwrite of the last push's data.

Definition at line 333 of file buffers.hh.

References gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::alreadyPushed(), gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::occupancy, and gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::pushWire.

Member Data Documentation

◆ occupancy

template<typename ElemType , typename ReportTraits , typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
unsigned int gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::occupancy

◆ popWire

template<typename ElemType , typename ReportTraits , typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
TimeBuffer<ElemType>::wire gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::popWire
protected

Wire at the output end of the pipeline (for convenience)

Definition at line 300 of file buffers.hh.

Referenced by gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::front().

◆ pushWire

template<typename ElemType , typename ReportTraits , typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
TimeBuffer<ElemType>::wire gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::pushWire
protected

◆ stalled

template<typename ElemType , typename ReportTraits , typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
bool gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::stalled

If true, advance will not advance the pipeline.

Definition at line 304 of file buffers.hh.

Referenced by gem5::minor::FUPipeline::advance(), and gem5::minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::advance().


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

Generated on Tue Dec 21 2021 11:36:13 for gem5 by doxygen 1.8.17