gem5  v21.1.0.2
Public Member Functions | Public Attributes | Private Attributes | List of all members
gem5::MSHR::TargetList Class Reference

#include <mshr.hh>

Inheritance diagram for gem5::MSHR::TargetList:
std::list< Target > gem5::Named

Public Member Functions

 TargetList (const std::string &name=".unnamedTargetList")
 
void updateFlags (PacketPtr pkt, Target::Source source, bool alloc_on_fill)
 Use the provided packet and the source to update the flags of this TargetList. More...
 
void init (Addr blk_addr, Addr blk_size)
 Reset state. More...
 
void resetFlags ()
 
void populateFlags ()
 Goes through the list of targets and uses them to populate the flags of this TargetList. More...
 
void updateWriteFlags (PacketPtr pkt)
 Add the specified packet in the TargetList. More...
 
bool isReset () const
 Tests if the flags of this TargetList have their default values. More...
 
void add (PacketPtr pkt, Tick readyTime, Counter order, Target::Source source, bool markPending, bool alloc_on_fill)
 Add the specified packet in the TargetList. More...
 
void replaceUpgrades ()
 Convert upgrades to the equivalent request if the cache line they refer to would have been invalid (Upgrade -> ReadEx, SC* -> Fail). More...
 
void clearDownstreamPending ()
 
void clearDownstreamPending (iterator begin, iterator end)
 
bool trySatisfyFunctional (PacketPtr pkt)
 
void print (std::ostream &os, int verbosity, const std::string &prefix) const
 
bool isWholeLineWrite () const
 Check if this list contains writes that cover an entire cache line. More...
 
- Public Member Functions inherited from gem5::Named
 Named (const std::string &name_)
 
virtual ~Named ()=default
 
virtual std::string name () const
 

Public Attributes

bool needsWritable
 
bool hasUpgrade
 
bool allocOnFill
 Set when the response should allocate on fill. More...
 
bool hasFromCache
 Determine whether there was at least one non-snooping target coming from another cache. More...
 
- Public Attributes inherited from std::list< Target >
Target item
 Dummy Item. More...
 

Private Attributes

Addr blkAddr
 Address of the cache block for this list of targets. More...
 
Addr blkSize
 Size of the cache block. More...
 
bool canMergeWrites
 Indicates whether we can merge incoming write requests. More...
 
std::vector< char > writesBitmap
 Track which bytes are written by requests in this target list. More...
 

Detailed Description

Definition at line 169 of file mshr.hh.

Constructor & Destructor Documentation

◆ TargetList()

gem5::MSHR::TargetList::TargetList ( const std::string &  name = ".unnamedTargetList")

Definition at line 73 of file mshr.cc.

Member Function Documentation

◆ add()

void gem5::MSHR::TargetList::add ( PacketPtr  pkt,
Tick  readyTime,
Counter  order,
Target::Source  source,
bool  markPending,
bool  alloc_on_fill 
)
inline

Add the specified packet in the TargetList.

This function stores information related to the added packet and updates accordingly the flags.

Parameters
pktPacket considered for adding
readTimeTick at which the packet is processed by this cache
orderA counter giving a unique id to each target
sourceIndicates the source agent of the packet
markPendingSet for deferred targets or pending MSHRs
alloc_on_fillWhether it should allocate on a fill

Definition at line 163 of file mshr.cc.

References gem5::MSHR::downstreamPending, DPRINTF, gem5::Packet::findNextSenderState(), gem5::QueueEntry::order, gem5::Packet::print(), and gem5::QueueEntry::readyTime.

Referenced by gem5::MSHR::allocate(), gem5::MSHR::allocateTarget(), and gem5::MSHR::handleSnoop().

◆ clearDownstreamPending() [1/2]

void gem5::MSHR::TargetList::clearDownstreamPending ( )

◆ clearDownstreamPending() [2/2]

void gem5::MSHR::TargetList::clearDownstreamPending ( iterator  begin,
iterator  end 
)

◆ init()

void gem5::MSHR::TargetList::init ( Addr  blk_addr,
Addr  blk_size 
)
inline

Reset state.

Parameters
blk_addrAddress of the cache block
blk_sizeSize of the cache block

Definition at line 202 of file mshr.hh.

References blkAddr, blkSize, resetFlags(), and writesBitmap.

Referenced by gem5::MSHR::allocate(), and gem5::MSHR::extractServiceableTargets().

◆ isReset()

bool gem5::MSHR::TargetList::isReset ( ) const
inline

Tests if the flags of this TargetList have their default values.

Returns
True if the TargetList are reset, false otherwise.

Definition at line 243 of file mshr.hh.

References allocOnFill, canMergeWrites, hasFromCache, hasUpgrade, and needsWritable.

Referenced by gem5::MSHR::deallocate().

◆ isWholeLineWrite()

bool gem5::MSHR::TargetList::isWholeLineWrite ( ) const
inline

Check if this list contains writes that cover an entire cache line.

This is used as part of the miss-packet creation. Note that new requests may arrive after a miss-packet has been created, and for the corresponding fill we use the wasWholeLineWrite field.

Definition at line 282 of file mshr.hh.

References gem5::ArmISA::i, and writesBitmap.

Referenced by gem5::MSHR::isWholeLineWrite().

◆ populateFlags()

void gem5::MSHR::TargetList::populateFlags ( )

Goes through the list of targets and uses them to populate the flags of this TargetList.

When the function returns the flags are consistent with the properties of packets in the list.

Definition at line 109 of file mshr.cc.

References gem5::ArmISA::t.

Referenced by gem5::MSHR::extractServiceableTargets(), gem5::MSHR::promoteDeferredTargets(), and gem5::MSHR::promoteIf().

◆ print()

void gem5::MSHR::TargetList::print ( std::ostream &  os,
int  verbosity,
const std::string &  prefix 
) const

◆ replaceUpgrades()

void gem5::MSHR::TargetList::replaceUpgrades ( )

Convert upgrades to the equivalent request if the cache line they refer to would have been invalid (Upgrade -> ReadEx, SC* -> Fail).

Used to rejig ordering between targets waiting on an MSHR.

Definition at line 221 of file mshr.cc.

References gem5::replaceUpgrade(), and gem5::ArmISA::t.

Referenced by gem5::MSHR::handleSnoop().

◆ resetFlags()

void gem5::MSHR::TargetList::resetFlags ( )
inline

◆ trySatisfyFunctional()

bool gem5::MSHR::TargetList::trySatisfyFunctional ( PacketPtr  pkt)

Definition at line 263 of file mshr.cc.

References gem5::ArmISA::t, and gem5::Packet::trySatisfyFunctional().

Referenced by gem5::MSHR::trySatisfyFunctional().

◆ updateFlags()

void gem5::MSHR::TargetList::updateFlags ( PacketPtr  pkt,
Target::Source  source,
bool  alloc_on_fill 
)

Use the provided packet and the source to update the flags of this TargetList.

Parameters
pktPacket considered for the flag update
sourceIndicates the source of the packet
alloc_on_fillWhether the pkt would allocate on a fill

Definition at line 81 of file mshr.cc.

References gem5::MSHR::allocOnFill(), gem5::Packet::cmd, gem5::Packet::fromCache(), gem5::MSHR::Target::FromPrefetcher, gem5::MSHR::Target::FromSnoop, gem5::MSHR::hasFromCache(), gem5::Packet::isUpgrade(), gem5::MSHR::needsWritable(), gem5::Packet::needsWritable(), and gem5::MemCmd::StoreCondReq.

◆ updateWriteFlags()

void gem5::MSHR::TargetList::updateWriteFlags ( PacketPtr  pkt)

Member Data Documentation

◆ allocOnFill

bool gem5::MSHR::TargetList::allocOnFill

Set when the response should allocate on fill.

Definition at line 176 of file mshr.hh.

Referenced by gem5::MSHR::allocOnFill(), isReset(), and resetFlags().

◆ blkAddr

Addr gem5::MSHR::TargetList::blkAddr
private

Address of the cache block for this list of targets.

Definition at line 290 of file mshr.hh.

Referenced by init().

◆ blkSize

Addr gem5::MSHR::TargetList::blkSize
private

Size of the cache block.

Definition at line 293 of file mshr.hh.

Referenced by init().

◆ canMergeWrites

bool gem5::MSHR::TargetList::canMergeWrites
private

Indicates whether we can merge incoming write requests.

Definition at line 296 of file mshr.hh.

Referenced by isReset(), and resetFlags().

◆ hasFromCache

bool gem5::MSHR::TargetList::hasFromCache

Determine whether there was at least one non-snooping target coming from another cache.

Definition at line 181 of file mshr.hh.

Referenced by gem5::MSHR::hasFromCache(), isReset(), and resetFlags().

◆ hasUpgrade

bool gem5::MSHR::TargetList::hasUpgrade

Definition at line 174 of file mshr.hh.

Referenced by isReset(), and resetFlags().

◆ needsWritable

bool gem5::MSHR::TargetList::needsWritable

◆ writesBitmap

std::vector<char> gem5::MSHR::TargetList::writesBitmap
private

Track which bytes are written by requests in this target list.

Definition at line 305 of file mshr.hh.

Referenced by init(), isWholeLineWrite(), and resetFlags().


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

Generated on Tue Sep 21 2021 12:27:47 for gem5 by doxygen 1.8.17