gem5
v20.1.0.0
|
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>
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 |
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.
|
inline |
Definition at line 303 of file buffers.hh.
References ArmISA::i.
|
inline |
Try to advance the pipeline.
If we're stalled, don't advance. If we're not stalled, advance then check to see if we become stalled (a non-bubble at the end of the pipe)
Definition at line 349 of file buffers.hh.
References TimeBuffer< T >::advance(), Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::isPopable(), Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::occupancy, Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::pushWire, and Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::stalled.
Referenced by Minor::FUPipeline::advance().
|
inline |
Have we already pushed onto this pipe without advancing.
Definition at line 340 of file buffers.hh.
References Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::pushWire.
Referenced by Minor::FUPipeline::advance(), and Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::push().
|
inline |
Peek at the end element of the pipe.
Definition at line 335 of file buffers.hh.
References Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::popWire.
Referenced by Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::isPopable().
|
inline |
Definition at line 337 of file buffers.hh.
References Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::popWire.
|
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().
|
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.
unsigned int Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::occupancy |
The number of slots with non-bubbles in them.
Definition at line 300 of file buffers.hh.
Referenced by Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::advance(), and Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::push().
|
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().
|
protected |
Wire at the input end of the pipeline (for convenience)
Definition at line 291 of file buffers.hh.
Referenced by Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::advance(), Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::alreadyPushed(), and Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::push().
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().