gem5 v24.0.0.0
|
A write queue for all eviction packets, i.e. More...
#include <write_queue.hh>
Public Member Functions | |
WriteQueue (const std::string &_label, int num_entries, int reserve, const std::string &name) | |
Create a write queue with a given number of entries. | |
WriteQueueEntry * | allocate (Addr blk_addr, unsigned blk_size, PacketPtr pkt, Tick when_ready, Counter order) |
Allocates a new WriteQueueEntry for the request and size. | |
void | markInService (WriteQueueEntry *entry) |
Mark the given entry as in service. | |
Public Member Functions inherited from gem5::Queue< WriteQueueEntry > | |
Queue (const std::string &_label, int num_entries, int reserve, const std::string &name) | |
Create a queue with a given number of entries. | |
bool | isEmpty () const |
bool | isFull () const |
int | numInService () const |
WriteQueueEntry * | findMatch (Addr blk_addr, bool is_secure, bool ignore_uncacheable=true) const |
Find the first entry that matches the provided address. | |
bool | trySatisfyFunctional (PacketPtr pkt) |
WriteQueueEntry * | findPending (const QueueEntry *entry) const |
Find any pending requests that overlap the given request of a different queue. | |
WriteQueueEntry * | getNext () const |
Returns the WriteQueueEntry at the head of the readyList. | |
Tick | nextReadyTime () const |
virtual void | deallocate (WriteQueueEntry *entry) |
Removes the given entry from the queue. | |
DrainState | drain () override |
Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are partially executed or are partially in flight. | |
Public Member Functions inherited from gem5::Drainable | |
DrainState | drainState () const |
Return the current drain state of an object. | |
virtual void | notifyFork () |
Notify a child process of a fork. | |
Public Member Functions inherited from gem5::Named | |
Named (const std::string &name_) | |
virtual | ~Named ()=default |
virtual std::string | name () const |
Additional Inherited Members | |
Protected Member Functions inherited from gem5::Queue< WriteQueueEntry > | |
WriteQueueEntry::Iterator | addToReadyList (WriteQueueEntry *entry) |
Protected Member Functions inherited from gem5::Drainable | |
Drainable () | |
virtual | ~Drainable () |
virtual void | drainResume () |
Resume execution after a successful drain. | |
void | signalDrainDone () const |
Signal that an object is drained. | |
Protected Attributes inherited from gem5::Queue< WriteQueueEntry > | |
const std::string | label |
Local label (for functional print requests) | |
const int | numEntries |
The total number of entries in this queue. | |
const int | numReserve |
The number of entries to hold as a temporary overflow space. | |
std::vector< WriteQueueEntry > | entries |
Actual storage. | |
WriteQueueEntry::List | allocatedList |
Holds pointers to all allocated entries. | |
WriteQueueEntry::List | readyList |
Holds pointers to entries that haven't been sent downstream. | |
WriteQueueEntry::List | freeList |
Holds non allocated entries. | |
int | _numInService |
The number of entries that are in service. | |
int | allocated |
The number of currently allocated entries. | |
A write queue for all eviction packets, i.e.
writebacks and clean evictions, as well as uncacheable writes.
Definition at line 60 of file write_queue.hh.
gem5::WriteQueue::WriteQueue | ( | const std::string & | _label, |
int | num_entries, | ||
int | reserve, | ||
const std::string & | name ) |
Create a write queue with a given number of entries.
num_entries | The number of entries in this queue. |
reserve | The maximum number of entries needed to satisfy any access. |
Definition at line 54 of file write_queue.cc.
WriteQueueEntry * gem5::WriteQueue::allocate | ( | Addr | blk_addr, |
unsigned | blk_size, | ||
PacketPtr | pkt, | ||
Tick | when_ready, | ||
Counter | order ) |
Allocates a new WriteQueueEntry for the request and size.
This places the request as the first target in the WriteQueueEntry.
blk_addr | The address of the block. |
blk_size | The number of bytes to request. |
pkt | The original write. |
when_ready | When is the WriteQueueEntry be ready to act upon. |
order | The logical order of this WriteQueueEntry |
Definition at line 61 of file write_queue.cc.
References gem5::Queue< WriteQueueEntry >::addToReadyList(), gem5::WriteQueueEntry::allocate(), gem5::Queue< WriteQueueEntry >::allocated, gem5::Queue< WriteQueueEntry >::allocatedList, gem5::WriteQueueEntry::allocIter, gem5::Queue< WriteQueueEntry >::freeList, gem5::WriteQueueEntry::getNumTargets(), and gem5::WriteQueueEntry::readyIter.
Referenced by gem5::BaseCache::allocateWriteBuffer().
void gem5::WriteQueue::markInService | ( | WriteQueueEntry * | entry | ) |
Mark the given entry as in service.
This removes the entry from the readyList or deallocates the entry if it does not expect a response (writeback/eviction rather than an uncacheable write).
entry | The entry to mark in service. |
Definition at line 78 of file write_queue.cc.
References gem5::Queue< WriteQueueEntry >::deallocate(), and gem5::WriteQueueEntry::popTarget().
Referenced by gem5::BaseCache::markInService().