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

#include <mshr.hh>

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

Public Member Functions

 TargetList ()
 
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 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 162 of file mshr.hh.

Constructor & Destructor Documentation

◆ TargetList()

MSHR::TargetList::TargetList ( )

Definition at line 67 of file mshr.cc.

Member Function Documentation

◆ add()

void 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 156 of file mshr.cc.

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

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

◆ clearDownstreamPending() [1/2]

void MSHR::TargetList::clearDownstreamPending ( )

◆ clearDownstreamPending() [2/2]

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

◆ init()

void 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 194 of file mshr.hh.

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

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

◆ isReset()

bool 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 235 of file mshr.hh.

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

Referenced by MSHR::deallocate().

◆ isWholeLineWrite()

bool 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 274 of file mshr.hh.

References ArmISA::i, and writesBitmap.

Referenced by MSHR::isWholeLineWrite().

◆ populateFlags()

void 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 102 of file mshr.cc.

References ArmISA::t.

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

◆ print()

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

◆ replaceUpgrades()

void 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 212 of file mshr.cc.

References replaceUpgrade(), and ArmISA::t.

Referenced by MSHR::handleSnoop().

◆ resetFlags()

void MSHR::TargetList::resetFlags ( )
inline

Definition at line 202 of file mshr.hh.

References allocOnFill, canMergeWrites, MipsISA::fill, hasFromCache, hasUpgrade, needsWritable, and writesBitmap.

Referenced by MSHR::deallocate(), and init().

◆ trySatisfyFunctional()

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

Definition at line 254 of file mshr.cc.

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

Referenced by MSHR::trySatisfyFunctional().

◆ updateFlags()

void 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 74 of file mshr.cc.

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

◆ updateWriteFlags()

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

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

Definition at line 111 of file mshr.cc.

References QueueEntry::blkSize, MipsISA::fill, Packet::getOffset(), Packet::getSize(), MSHR::isWholeLineWrite(), Packet::isWrite(), Request::LLSC, Request::MEM_SWAP, Request::MEM_SWAP_COND, ArmISA::offset, Request::PRIVILEGED, Packet::req, Request::SECURE, Request::STRICT_ORDER, and Request::UNCACHEABLE.

Member Data Documentation

◆ allocOnFill

bool MSHR::TargetList::allocOnFill

Set when the response should allocate on fill.

Definition at line 168 of file mshr.hh.

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

◆ blkAddr

Addr MSHR::TargetList::blkAddr
private

Address of the cache block for this list of targets.

Definition at line 282 of file mshr.hh.

Referenced by init().

◆ blkSize

Addr MSHR::TargetList::blkSize
private

Size of the cache block.

Definition at line 285 of file mshr.hh.

Referenced by init().

◆ canMergeWrites

bool MSHR::TargetList::canMergeWrites
private

Indicates whether we can merge incoming write requests.

Definition at line 288 of file mshr.hh.

Referenced by isReset(), and resetFlags().

◆ hasFromCache

bool MSHR::TargetList::hasFromCache

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

Definition at line 173 of file mshr.hh.

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

◆ hasUpgrade

bool MSHR::TargetList::hasUpgrade

Definition at line 166 of file mshr.hh.

Referenced by isReset(), and resetFlags().

◆ needsWritable

bool MSHR::TargetList::needsWritable

◆ writesBitmap

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

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

Definition at line 297 of file mshr.hh.

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


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

Generated on Wed Sep 30 2020 14:02:28 for gem5 by doxygen 1.8.17