gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Public Attributes | List of all members
Minor::LSQ::StoreBuffer Class Reference

Store buffer. More...

#include <lsq.hh>

Inheritance diagram for Minor::LSQ::StoreBuffer:
Named

Public Member Functions

 StoreBuffer (std::string name_, LSQ &lsq_, unsigned int store_buffer_size, unsigned int store_limit_per_cycle)
 
bool canInsert () const
 Can a new request be inserted into the queue? More...
 
void deleteRequest (LSQRequestPtr request)
 Delete the given request and free the slot it occupied. More...
 
void insert (LSQRequestPtr request)
 Insert a request at the back of the queue. More...
 
AddrRangeCoverage canForwardDataToLoad (LSQRequestPtr request, unsigned int &found_slot)
 Look for a store which satisfies the given load. More...
 
void forwardStoreData (LSQRequestPtr load, unsigned int slot_number)
 Fill the given packet with appropriate date from slot slot_number. More...
 
unsigned int numUnissuedStores ()
 Number of stores in the store buffer which have not been completely issued to the memory system. More...
 
void countIssuedStore (LSQRequestPtr request)
 Count a store being issued to memory by decrementing numUnissuedAccesses. More...
 
bool isDrained () const
 Drained if there is absolutely nothing left in the buffer. More...
 
void step ()
 Try to issue more stores to memory. More...
 
void minorTrace () const
 Report queue contents for MinorTrace. More...
 
- Public Member Functions inherited from Named
 Named (const std::string &name_)
 
const std::string & name () const
 

Public Attributes

LSQlsq
 My owner. More...
 
const unsigned int numSlots
 Number of slots, this is a bound on the size of slots. More...
 
const unsigned int storeLimitPerCycle
 Maximum number of stores that can be issued per cycle. More...
 
std::deque< LSQRequestPtrslots
 Queue of store requests on their way to memory. More...
 
unsigned int numUnissuedAccesses
 Number of occupied slots which have not yet issued a memory access. More...
 

Additional Inherited Members

- Protected Attributes inherited from Named
const std::string _name
 

Detailed Description

Store buffer.

This contains stores which have been committed but whose memory transfers have not yet been issued. Load data can be forwarded out of the store buffer

Definition at line 470 of file lsq.hh.

Constructor & Destructor Documentation

Minor::LSQ::StoreBuffer::StoreBuffer ( std::string  name_,
LSQ lsq_,
unsigned int  store_buffer_size,
unsigned int  store_limit_per_cycle 
)

Definition at line 1543 of file lsq.cc.

Member Function Documentation

LSQ::AddrRangeCoverage Minor::LSQ::StoreBuffer::canForwardDataToLoad ( LSQRequestPtr  request,
unsigned int &  found_slot 
)

Look for a store which satisfies the given load.

Returns an indication whether the forwarding request can be wholly, partly or not all all satisfied. If the request can be wholly satisfied, the store buffer slot number which can be used is returned in found_slot

Definition at line 669 of file lsq.cc.

References Minor::LSQ::LSQRequest::containsAddrRangeOf(), DPRINTF, Request::getPaddr(), Request::getSize(), ArmISA::i, Minor::LSQ::LSQRequest::inst, Minor::LSQ::NoAddrRangeCoverage, Minor::LSQ::LSQRequest::packet, and Minor::LSQ::LSQRequest::request.

Referenced by Minor::LSQ::tryToSendToTransfers().

bool Minor::LSQ::StoreBuffer::canInsert ( ) const

Can a new request be inserted into the queue?

Definition at line 626 of file lsq.cc.

Referenced by Minor::LSQ::canPushIntoStoreBuffer(), and Minor::LSQ::findResponse().

void Minor::LSQ::StoreBuffer::countIssuedStore ( LSQRequestPtr  request)

Count a store being issued to memory by decrementing numUnissuedAccesses.

Does not count barrier requests as they will be handles as barriers are cleared from the buffer

Definition at line 736 of file lsq.cc.

References Minor::LSQ::LSQRequest::isBarrier().

Referenced by Minor::LSQ::recvReqRetry().

void Minor::LSQ::StoreBuffer::deleteRequest ( LSQRequestPtr  request)

Delete the given request and free the slot it occupied.

Definition at line 633 of file lsq.cc.

References DPRINTF, and Minor::LSQ::LSQRequest::inst.

Referenced by Minor::LSQ::recvTimingResp().

void Minor::LSQ::StoreBuffer::forwardStoreData ( LSQRequestPtr  load,
unsigned int  slot_number 
)
void Minor::LSQ::StoreBuffer::insert ( LSQRequestPtr  request)
bool Minor::LSQ::StoreBuffer::isDrained ( ) const
inline

Drained if there is absolutely nothing left in the buffer.

Definition at line 527 of file lsq.hh.

References slots.

Referenced by Minor::LSQ::isDrained().

void Minor::LSQ::StoreBuffer::minorTrace ( ) const

Report queue contents for MinorTrace.

Definition at line 832 of file lsq.cc.

References ArmISA::i, MINORTRACE, X86ISA::os, Minor::LSQ::LSQRequest::reportData(), and X86ISA::size().

Referenced by Minor::LSQ::minorTrace().

unsigned int Minor::LSQ::StoreBuffer::numUnissuedStores ( )
inline

Number of stores in the store buffer which have not been completely issued to the memory system.

Definition at line 519 of file lsq.hh.

References numUnissuedAccesses.

Referenced by Minor::LSQ::needsToTick().

void Minor::LSQ::StoreBuffer::step ( )

Member Data Documentation

LSQ& Minor::LSQ::StoreBuffer::lsq

My owner.

Definition at line 474 of file lsq.hh.

const unsigned int Minor::LSQ::StoreBuffer::numSlots

Number of slots, this is a bound on the size of slots.

Definition at line 477 of file lsq.hh.

unsigned int Minor::LSQ::StoreBuffer::numUnissuedAccesses

Number of occupied slots which have not yet issued a memory access.

Definition at line 488 of file lsq.hh.

Referenced by numUnissuedStores().

std::deque<LSQRequestPtr> Minor::LSQ::StoreBuffer::slots

Queue of store requests on their way to memory.

Definition at line 484 of file lsq.hh.

Referenced by isDrained().

const unsigned int Minor::LSQ::StoreBuffer::storeLimitPerCycle

Maximum number of stores that can be issued per cycle.

Definition at line 480 of file lsq.hh.


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

Generated on Fri Jun 9 2017 13:04:33 for gem5 by doxygen 1.8.6