|
gem5
v21.0.1.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 289 of file buffers.hh.
|
inline |
Definition at line 305 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 351 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 342 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 337 of file buffers.hh.
References Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::popWire.
Referenced by Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::isPopable().
|
inline |
Definition at line 339 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 345 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 328 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 302 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 295 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 293 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 299 of file buffers.hh.
Referenced by Minor::FUPipeline::advance(), and Minor::SelfStallingPipeline< ElemType, ReportTraits, BubbleTraits >::advance().