gem5  v22.1.0.0
Classes | Public Types | Public Member Functions | Private Attributes | Friends | List of all members
gem5::WriteQueueEntry Class Reference

Write queue entry. More...

#include <write_queue_entry.hh>

Inheritance diagram for gem5::WriteQueueEntry:
gem5::QueueEntry gem5::Printable gem5::Packet::SenderState gem5::Named

Classes

class  TargetList
 

Public Types

typedef std::list< WriteQueueEntry * > List
 A list of write queue entriess. More...
 
typedef List::iterator Iterator
 WriteQueueEntry list iterator. More...
 

Public Member Functions

bool sendPacket (BaseCache &cache) override
 Send this queue entry as a downstream packet, with the exact behaviour depending on the specific entry type. More...
 
 WriteQueueEntry (const std::string &name)
 A simple constructor. More...
 
void allocate (Addr blk_addr, unsigned blk_size, PacketPtr pkt, Tick when_ready, Counter _order)
 Allocate a miss to this entry. More...
 
void deallocate ()
 Mark this entry as free. More...
 
int getNumTargets () const
 Returns the current number of allocated targets. More...
 
bool hasTargets () const
 Returns true if there are targets left. More...
 
TargetgetTarget () override
 Returns a reference to the first target. More...
 
void popTarget ()
 Pop first target. More...
 
bool trySatisfyFunctional (PacketPtr pkt)
 
void print (std::ostream &os, int verbosity=0, const std::string &prefix="") const override
 Prints the contents of this MSHR for debugging. More...
 
std::string print () const
 A no-args wrapper of print(std::ostream...) meant to be invoked from DPRINTFs avoiding string overheads in fast mode. More...
 
bool matchBlockAddr (const Addr addr, const bool is_secure) const override
 Check if entry corresponds to the one being looked for. More...
 
bool matchBlockAddr (const PacketPtr pkt) const override
 Check if entry contains a packet that corresponds to the one being looked for. More...
 
bool conflictAddr (const QueueEntry *entry) const override
 Check if given entry's packets conflict with this' entries packets. More...
 
- Public Member Functions inherited from gem5::QueueEntry
 QueueEntry (const std::string &name)
 
bool isUncacheable () const
 
- Public Member Functions inherited from gem5::Packet::SenderState
 SenderState ()
 
virtual ~SenderState ()
 
- Public Member Functions inherited from gem5::Named
 Named (const std::string &name_)
 
virtual ~Named ()=default
 
virtual std::string name () const
 
- Public Member Functions inherited from gem5::Printable
 Printable ()
 
virtual ~Printable ()
 

Private Attributes

Iterator readyIter
 Pointer to this entry on the ready list. More...
 
Iterator allocIter
 Pointer to this entry on the allocated list. More...
 
TargetList targets
 List of all requests that match the address. More...
 

Friends

template<typename Entry >
class Queue
 Consider the queues friends to avoid making everything public. More...
 
class WriteQueue
 

Additional Inherited Members

- Public Attributes inherited from gem5::QueueEntry
bool inService
 True if the entry has been sent downstream. More...
 
Counter order
 Order number assigned to disambiguate writes and misses. More...
 
Addr blkAddr
 Block aligned address. More...
 
unsigned blkSize
 Block size of the cache. More...
 
bool isSecure
 True if the entry targets the secure memory space. More...
 
- Public Attributes inherited from gem5::Packet::SenderState
SenderStatepredecessor
 
- Protected Attributes inherited from gem5::QueueEntry
Tick readyTime
 Tick when ready to issue. More...
 
bool _isUncacheable
 True if the entry is uncacheable. More...
 

Detailed Description

Write queue entry.

Definition at line 67 of file write_queue_entry.hh.

Member Typedef Documentation

◆ Iterator

typedef List::iterator gem5::WriteQueueEntry::Iterator

WriteQueueEntry list iterator.

Definition at line 93 of file write_queue_entry.hh.

◆ List

A list of write queue entriess.

Definition at line 91 of file write_queue_entry.hh.

Constructor & Destructor Documentation

◆ WriteQueueEntry()

gem5::WriteQueueEntry::WriteQueueEntry ( const std::string &  name)
inline

A simple constructor.

Definition at line 117 of file write_queue_entry.hh.

Member Function Documentation

◆ allocate()

void gem5::WriteQueueEntry::allocate ( Addr  blk_addr,
unsigned  blk_size,
PacketPtr  pkt,
Tick  when_ready,
Counter  _order 
)

Allocate a miss to this entry.

Parameters
blk_addrThe address of the block.
blk_sizeThe number of bytes to request.
pktThe original write.
when_readyWhen should the write be sent out.
_orderThe logical order of this write.

Definition at line 90 of file write_queue_entry.cc.

References gem5::QueueEntry::_isUncacheable, gem5::WriteQueueEntry::TargetList::add(), gem5::QueueEntry::blkAddr, gem5::QueueEntry::blkSize, gem5::Packet::cmd, gem5::QueueEntry::inService, gem5::Packet::isEviction(), gem5::QueueEntry::isSecure, gem5::Packet::isSecure(), gem5::Packet::isWrite(), gem5::Packet::matchBlockAddr(), gem5::QueueEntry::order, panic_if, gem5::QueueEntry::readyTime, gem5::Packet::req, targets, and gem5::MemCmd::WriteClean.

Referenced by gem5::WriteQueue::allocate().

◆ conflictAddr()

bool gem5::WriteQueueEntry::conflictAddr ( const QueueEntry entry) const
overridevirtual

Check if given entry's packets conflict with this' entries packets.

Parameters
entryOther entry to compare against.
Returns
True if entry matches given information.

Implements gem5::QueueEntry.

Definition at line 161 of file write_queue_entry.cc.

References gem5::QueueEntry::blkAddr, hasTargets(), gem5::QueueEntry::isSecure, and gem5::QueueEntry::matchBlockAddr().

◆ deallocate()

void gem5::WriteQueueEntry::deallocate ( )

Mark this entry as free.

Definition at line 120 of file write_queue_entry.cc.

References gem5::QueueEntry::inService, and targets.

◆ getNumTargets()

int gem5::WriteQueueEntry::getNumTargets ( ) const
inline

Returns the current number of allocated targets.

Returns
The current number of allocated targets.

Definition at line 142 of file write_queue_entry.hh.

References targets.

Referenced by gem5::BaseCache::access(), gem5::WriteQueue::allocate(), and gem5::Cache::recvTimingSnoopReq().

◆ getTarget()

Target* gem5::WriteQueueEntry::getTarget ( )
inlineoverridevirtual

Returns a reference to the first target.

Returns
A pointer to the first target.

Implements gem5::QueueEntry.

Definition at line 155 of file write_queue_entry.hh.

References hasTargets(), and targets.

Referenced by gem5::BaseCache::access(), gem5::Cache::recvTimingSnoopReq(), and gem5::BaseCache::sendWriteQueuePacket().

◆ hasTargets()

bool gem5::WriteQueueEntry::hasTargets ( ) const
inline

Returns true if there are targets left.

Returns
true if there are targets

Definition at line 149 of file write_queue_entry.hh.

References targets.

Referenced by conflictAddr(), getTarget(), and matchBlockAddr().

◆ matchBlockAddr() [1/2]

bool gem5::WriteQueueEntry::matchBlockAddr ( const Addr  addr,
const bool  is_secure 
) const
overridevirtual

Check if entry corresponds to the one being looked for.

Parameters
addrAddress to match against.
is_secureWhether the target should be in secure space or not.
Returns
True if entry matches given information.

Implements gem5::QueueEntry.

Definition at line 147 of file write_queue_entry.cc.

References gem5::X86ISA::addr, gem5::QueueEntry::blkAddr, hasTargets(), and gem5::QueueEntry::isSecure.

◆ matchBlockAddr() [2/2]

bool gem5::WriteQueueEntry::matchBlockAddr ( const PacketPtr  pkt) const
overridevirtual

Check if entry contains a packet that corresponds to the one being looked for.

Parameters
pktThe packet to search for.
Returns
True if any of its targets' packets matches the given one.

Implements gem5::QueueEntry.

Definition at line 154 of file write_queue_entry.cc.

References gem5::QueueEntry::blkAddr, gem5::QueueEntry::blkSize, hasTargets(), gem5::QueueEntry::isSecure, and gem5::Packet::matchBlockAddr().

◆ popTarget()

void gem5::WriteQueueEntry::popTarget ( )
inline

Pop first target.

Definition at line 164 of file write_queue_entry.hh.

References targets.

Referenced by gem5::WriteQueue::markInService().

◆ print() [1/2]

std::string gem5::WriteQueueEntry::print ( ) const

A no-args wrapper of print(std::ostream...) meant to be invoked from DPRINTFs avoiding string overheads in fast mode.

Returns
string with mshr fields

Definition at line 182 of file write_queue_entry.cc.

◆ print() [2/2]

void gem5::WriteQueueEntry::print ( std::ostream &  os,
int  verbosity = 0,
const std::string &  prefix = "" 
) const
overridevirtual

◆ sendPacket()

bool gem5::WriteQueueEntry::sendPacket ( BaseCache cache)
overridevirtual

Send this queue entry as a downstream packet, with the exact behaviour depending on the specific entry type.

Implements gem5::QueueEntry.

Definition at line 141 of file write_queue_entry.cc.

References gem5::BaseCache::sendWriteQueuePacket().

◆ trySatisfyFunctional()

bool gem5::WriteQueueEntry::trySatisfyFunctional ( PacketPtr  pkt)

Friends And Related Function Documentation

◆ Queue

template<typename Entry >
friend class Queue
friend

Consider the queues friends to avoid making everything public.

Definition at line 74 of file write_queue_entry.hh.

◆ WriteQueue

friend class WriteQueue
friend

Definition at line 75 of file write_queue_entry.hh.

Member Data Documentation

◆ allocIter

Iterator gem5::WriteQueueEntry::allocIter
private

Pointer to this entry on the allocated list.

See also
MissQueue, WriteQueue::allocatedList

Definition at line 109 of file write_queue_entry.hh.

Referenced by gem5::WriteQueue::allocate().

◆ readyIter

Iterator gem5::WriteQueueEntry::readyIter
private

Pointer to this entry on the ready list.

See also
MissQueue, WriteQueue::readyList

Definition at line 103 of file write_queue_entry.hh.

Referenced by gem5::WriteQueue::allocate().

◆ targets

TargetList gem5::WriteQueueEntry::targets
private

List of all requests that match the address.

Definition at line 112 of file write_queue_entry.hh.

Referenced by allocate(), deallocate(), getNumTargets(), getTarget(), hasTargets(), popTarget(), print(), and trySatisfyFunctional().


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

Generated on Wed Dec 21 2022 10:23:27 for gem5 by doxygen 1.9.1