gem5 v24.0.0.0
|
Like a Queue but with a restricted interface and a setTail function which, when the queue is empty, just takes a reference to the pushed item as the single element. More...
#include <buffers.hh>
Public Member Functions | |
InputBuffer (const std::string &name, const std::string &data_name, unsigned int capacity_) | |
void | setTail (ElemType &new_element) |
Set the tail of the queue, this is like push but needs to be followed by pushTail for the new tail to make its way into the queue proper. | |
bool | empty () const |
No single element or queue entries. | |
const ElemType & | front () const |
Return the element, or the front of the queue. | |
ElemType & | front () |
void | pop () |
Pop either the head, or if none, the head of the queue. | |
void | pushTail () const |
Push the single element (if any) into the queue proper. | |
void | minorTrace () const |
Report elements. | |
bool | canReserve () const |
Reservable interface, passed on to queue. | |
void | reserve () |
Reserve a slot in whatever structure this is attached to. | |
void | freeReservation () |
Free a reserved slot. | |
unsigned int | unreservedRemainingSpace () |
Like remainingSpace but does not count reserved spaces. | |
Public Member Functions inherited from gem5::minor::Reservable | |
virtual | ~Reservable () |
Protected Attributes | |
Queue< ElemType, ReportTraits, BubbleTraits > | queue |
Underlying queue. | |
ElemType * | elementPtr |
Pointer to the single element (if not NULL) | |
Like a Queue but with a restricted interface and a setTail function which, when the queue is empty, just takes a reference to the pushed item as the single element.
Calling pushTail will push that element onto the queue.
The purpose of this class is to allow the faster operation of queues of items which usually don't get deeper than one item and for which the copy associated with a push is expensive enough to want to avoid
The intended use case is the input buffer for pipeline stages, hence the class name
Definition at line 571 of file buffers.hh.
|
inline |
Definition at line 581 of file buffers.hh.
|
inlinevirtual |
Reservable interface, passed on to queue.
Implements gem5::minor::Reservable.
Definition at line 647 of file buffers.hh.
References gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::queue.
|
inline |
No single element or queue entries.
Definition at line 604 of file buffers.hh.
References gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::elementPtr, and gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::queue.
|
inlinevirtual |
Free a reserved slot.
Implements gem5::minor::Reservable.
Definition at line 649 of file buffers.hh.
References gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::queue.
|
inline |
Definition at line 610 of file buffers.hh.
References gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::elementPtr, and gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::queue.
|
inline |
Return the element, or the front of the queue.
Definition at line 607 of file buffers.hh.
References gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::elementPtr, and gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::queue.
|
inline |
Report elements.
Definition at line 640 of file buffers.hh.
References gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::pushTail(), and gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::queue.
|
inline |
Pop either the head, or if none, the head of the queue.
Definition at line 615 of file buffers.hh.
References gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::elementPtr, and gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::queue.
|
inline |
Push the single element (if any) into the queue proper.
If the element's reference points to a transient object, remember to always do this before the end of that object's life
Definition at line 631 of file buffers.hh.
References gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::elementPtr, and gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::queue.
Referenced by gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::minorTrace(), and gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::unreservedRemainingSpace().
|
inlinevirtual |
Reserve a slot in whatever structure this is attached to.
Implements gem5::minor::Reservable.
Definition at line 648 of file buffers.hh.
References gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::queue.
|
inline |
Set the tail of the queue, this is like push but needs to be followed by pushTail for the new tail to make its way into the queue proper.
Definition at line 592 of file buffers.hh.
References gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::elementPtr, and gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::queue.
|
inline |
Like remainingSpace but does not count reserved spaces.
Definition at line 653 of file buffers.hh.
References gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::pushTail(), and gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::queue.
|
mutableprotected |
Pointer to the single element (if not NULL)
Definition at line 578 of file buffers.hh.
Referenced by gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::empty(), gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::front(), gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::front(), gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::pop(), gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::pushTail(), and gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::setTail().
|
mutableprotected |
Underlying queue.
Definition at line 575 of file buffers.hh.
Referenced by gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::canReserve(), gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::empty(), gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::freeReservation(), gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::front(), gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::front(), gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::minorTrace(), gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::pop(), gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::pushTail(), gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::reserve(), gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::setTail(), and gem5::minor::InputBuffer< ElemType, ReportTraits, BubbleTraits >::unreservedRemainingSpace().