gem5  v20.1.0.0
Public Member Functions | Public Attributes | Protected Attributes | List of all members
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 Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >:
Minor::MinorBuffer< ElemType, ReportTraits > Named TimeBuffer< ElemType > 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 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 Named
 Named (const std::string &name_)
 
const std::string & name () const
 
- Public Member Functions inherited from 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 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 Named
const std::string _name
 
- Protected Attributes inherited from 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 TimeBuffer< ElemType >
void valid (int idx) const
 
int calculateVectorIndex (int idx) const
 

Detailed Description

template<typename ElemType, typename ReportTraits, typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
class 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 287 of file buffers.hh.

Constructor & Destructor Documentation

◆ SelfStallingPipeline()

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

Definition at line 303 of file buffers.hh.

References ArmISA::i.

Member Function Documentation

◆ advance()

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

◆ alreadyPushed()

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

◆ front() [1/2]

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

◆ front() [2/2]

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

◆ isPopable()

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

There's data (not a bubble) at the end of the pipe.

Definition at line 343 of file buffers.hh.

References Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::front().

Referenced by Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::advance().

◆ push()

template<typename ElemType , typename ReportTraits , typename BubbleTraits = BubbleTraitsAdaptor<ElemType>>
void 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 326 of file buffers.hh.

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

Member Data Documentation

◆ occupancy

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

◆ popWire

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

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

Definition at line 293 of file buffers.hh.

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

◆ pushWire

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

◆ stalled

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

If true, advance will not advance the pipeline.

Definition at line 297 of file buffers.hh.

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


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

Generated on Wed Sep 30 2020 14:03:06 for gem5 by doxygen 1.8.17