gem5 v24.0.0.0
|
#include <lsq.hh>
Classes | |
class | DcachePort |
DcachePort class for the load/store queue. More... | |
class | LSQRequest |
Memory operation metadata. More... | |
class | SingleDataRequest |
class | SplitDataRequest |
class | UnsquashableDirectRequest |
Public Member Functions | |
LSQ (CPU *cpu_ptr, IEW *iew_ptr, const BaseO3CPUParams ¶ms) | |
Constructs an LSQ with the given parameters. | |
std::string | name () const |
Returns the name of the LSQ. | |
void | setActiveThreads (std::list< ThreadID > *at_ptr) |
Sets the pointer to the list of active threads. | |
void | drainSanityCheck () const |
Perform sanity checks after a drain. | |
bool | isDrained () const |
Has the LSQ drained? | |
void | takeOverFrom () |
Takes over execution from another CPU's thread. | |
int | entryAmount (ThreadID num_threads) |
Number of entries needed for the given amount of threads. | |
void | tick () |
Ticks the LSQ. | |
void | insertLoad (const DynInstPtr &load_inst) |
Inserts a load into the LSQ. | |
void | insertStore (const DynInstPtr &store_inst) |
Inserts a store into the LSQ. | |
Fault | executeLoad (const DynInstPtr &inst) |
Executes a load. | |
Fault | executeStore (const DynInstPtr &inst) |
Executes a store. | |
void | commitLoads (InstSeqNum &youngest_inst, ThreadID tid) |
Commits loads up until the given sequence number for a specific thread. | |
void | commitStores (InstSeqNum &youngest_inst, ThreadID tid) |
Commits stores up until the given sequence number for a specific thread. | |
void | writebackStores () |
Attempts to write back stores until all cache ports are used or the interface becomes blocked. | |
void | writebackStores (ThreadID tid) |
Same as above, but only for one thread. | |
void | squash (const InstSeqNum &squashed_num, ThreadID tid) |
Squash instructions from a thread until the specified sequence number. | |
bool | violation () |
Returns whether or not there was a memory ordering violation. | |
bool | violation (ThreadID tid) |
Returns whether or not there was a memory ordering violation for a specific thread. | |
DynInstPtr | getMemDepViolator (ThreadID tid) |
Gets the instruction that caused the memory ordering violation. | |
int | getLoadHead (ThreadID tid) |
Returns the head index of the load queue for a specific thread. | |
InstSeqNum | getLoadHeadSeqNum (ThreadID tid) |
Returns the sequence number of the head of the load queue. | |
int | getStoreHead (ThreadID tid) |
Returns the head index of the store queue. | |
InstSeqNum | getStoreHeadSeqNum (ThreadID tid) |
Returns the sequence number of the head of the store queue. | |
int | getCount () |
Returns the number of instructions in all of the queues. | |
int | getCount (ThreadID tid) |
Returns the number of instructions in the queues of one thread. | |
int | numLoads () |
Returns the total number of loads in the load queue. | |
int | numLoads (ThreadID tid) |
Returns the total number of loads for a single thread. | |
int | numStores () |
Returns the total number of stores in the store queue. | |
int | numStores (ThreadID tid) |
Returns the total number of stores for a single thread. | |
int | numHtmStarts (ThreadID tid) const |
int | numHtmStops (ThreadID tid) const |
void | resetHtmStartsStops (ThreadID tid) |
uint64_t | getLatestHtmUid (ThreadID tid) const |
void | setLastRetiredHtmUid (ThreadID tid, uint64_t htmUid) |
unsigned | numFreeLoadEntries () |
Returns the number of free load entries. | |
unsigned | numFreeStoreEntries () |
Returns the number of free store entries. | |
unsigned | numFreeEntries (ThreadID tid) |
Returns the number of free entries for a specific thread. | |
unsigned | numFreeLoadEntries (ThreadID tid) |
Returns the number of free entries in the LQ for a specific thread. | |
unsigned | numFreeStoreEntries (ThreadID tid) |
Returns the number of free entries in the SQ for a specific thread. | |
bool | isFull () |
Returns if the LSQ is full (either LQ or SQ is full). | |
bool | isFull (ThreadID tid) |
Returns if the LSQ is full for a specific thread (either LQ or SQ is full). | |
bool | isEmpty () const |
Returns if the LSQ is empty (both LQ and SQ are empty). | |
bool | lqEmpty () const |
Returns if all of the LQs are empty. | |
bool | sqEmpty () const |
Returns if all of the SQs are empty. | |
bool | lqFull () |
Returns if any of the LQs are full. | |
bool | lqFull (ThreadID tid) |
Returns if the LQ of a given thread is full. | |
bool | sqFull () |
Returns if any of the SQs are full. | |
bool | sqFull (ThreadID tid) |
Returns if the SQ of a given thread is full. | |
bool | isStalled () |
Returns if the LSQ is stalled due to a memory operation that must be replayed. | |
bool | isStalled (ThreadID tid) |
Returns if the LSQ of a specific thread is stalled due to a memory operation that must be replayed. | |
bool | hasStoresToWB () |
Returns whether or not there are any stores to write back to memory. | |
bool | hasStoresToWB (ThreadID tid) |
Returns whether or not a specific thread has any stores to write back to memory. | |
int | numStoresToWB (ThreadID tid) |
Returns the number of stores a specific thread has to write back. | |
bool | willWB () |
Returns if the LSQ will write back to memory this cycle. | |
bool | willWB (ThreadID tid) |
Returns if the LSQ of a specific thread will write back to memory this cycle. | |
void | dumpInsts () const |
Debugging function to print out all instructions. | |
void | dumpInsts (ThreadID tid) const |
Debugging function to print out instructions from a specific thread. | |
Fault | read (LSQRequest *request, ssize_t load_idx) |
Executes a read operation, using the load specified at the load index. | |
Fault | write (LSQRequest *request, uint8_t *data, ssize_t store_idx) |
Executes a store operation, using the store specified at the store index. | |
void | checkStaleTranslations () |
Checks if queues have any marked operations left, and sends the appropriate Sync Completion message if not. | |
void | recvReqRetry () |
Retry the previous send that failed. | |
void | completeDataAccess (PacketPtr pkt) |
bool | recvTimingResp (PacketPtr pkt) |
Handles writing back and completing the load or store that has returned from memory. | |
void | recvTimingSnoopReq (PacketPtr pkt) |
Fault | pushRequest (const DynInstPtr &inst, bool isLoad, uint8_t *data, unsigned int size, Addr addr, Request::Flags flags, uint64_t *res, AtomicOpFunctorPtr amo_op, const std::vector< bool > &byte_enable) |
bool | cacheBlocked () const |
Is D-cache blocked? | |
void | cacheBlocked (bool v) |
Set D-cache blocked status. | |
bool | cachePortAvailable (bool is_load) const |
Is any store port available to use? | |
void | cachePortBusy (bool is_load) |
Another store port is in use. | |
RequestPort & | getDataPort () |
Public Attributes | |
CPU * | cpu |
The CPU pointer. | |
IEW * | iewStage |
The IEW stage pointer. | |
Static Protected Member Functions | |
static uint32_t | maxLSQAllocation (SMTQueuePolicy pol, uint32_t entries, uint32_t numThreads, uint32_t SMTThreshold) |
Auxiliary function to calculate per-thread max LSQ allocation limit. | |
Protected Attributes | |
bool | _cacheBlocked |
D-cache is blocked. | |
int | cacheStorePorts |
The number of cache ports available each cycle (stores only). | |
int | usedStorePorts |
The number of used cache ports in this cycle by stores. | |
int | cacheLoadPorts |
The number of cache ports available each cycle (loads only). | |
int | usedLoadPorts |
The number of used cache ports in this cycle by loads. | |
bool | waitingForStaleTranslation |
If the LSQ is currently waiting for stale translations. | |
Addr | staleTranslationWaitTxnId |
The ID if the transaction that made translations stale. | |
SMTQueuePolicy | lsqPolicy |
The LSQ policy for SMT mode. | |
std::list< ThreadID > * | activeThreads |
List of Active Threads in System. | |
unsigned | LQEntries |
Total Size of LQ Entries. | |
unsigned | SQEntries |
Total Size of SQ Entries. | |
unsigned | maxLQEntries |
Max LQ Size - Used to Enforce Sharing Policies. | |
unsigned | maxSQEntries |
Max SQ Size - Used to Enforce Sharing Policies. | |
DcachePort | dcachePort |
Data port. | |
std::vector< LSQUnit > | thread |
The LSQ units for individual threads. | |
ThreadID | numThreads |
Number of Threads. | |
Constructs an LSQ with the given parameters.
Definition at line 71 of file lsq.cc.
References cpu, dcachePort, DPRINTF, lsqPolicy, maxLQEntries, maxSQEntries, gem5::o3::MaxThreads, numThreads, panic, and thread.
bool gem5::o3::LSQ::cacheBlocked | ( | ) | const |
Is D-cache blocked?
Definition at line 186 of file lsq.cc.
References _cacheBlocked.
Referenced by recvReqRetry(), and gem5::o3::LSQUnit::trySendPacket().
void gem5::o3::LSQ::cacheBlocked | ( | bool | v | ) |
Set D-cache blocked status.
Definition at line 192 of file lsq.cc.
References _cacheBlocked, and gem5::ArmISA::v.
bool gem5::o3::LSQ::cachePortAvailable | ( | bool | is_load | ) | const |
Is any store port available to use?
Definition at line 198 of file lsq.cc.
References cacheLoadPorts, cacheStorePorts, usedLoadPorts, and usedStorePorts.
Referenced by cachePortBusy(), gem5::o3::LSQUnit::trySendPacket(), and gem5::o3::LSQUnit::writebackStores().
void gem5::o3::LSQ::cachePortBusy | ( | bool | is_load | ) |
Another store port is in use.
Definition at line 210 of file lsq.cc.
References cachePortAvailable(), usedLoadPorts, and usedStorePorts.
Referenced by gem5::o3::LSQUnit::trySendPacket().
void gem5::o3::LSQ::checkStaleTranslations | ( | ) |
Checks if queues have any marked operations left, and sends the appropriate Sync Completion message if not.
Definition at line 1496 of file lsq.cc.
References cpu, gem5::Request::createMemManagement(), gem5::Packet::createRead(), gem5::BaseCPU::dataRequestorId(), dcachePort, DPRINTF, panic, gem5::RequestPort::sendTimingReq(), staleTranslationWaitTxnId, thread, gem5::Request::TLBI_EXT_SYNC_COMP, and waitingForStaleTranslation.
Referenced by recvTimingResp(), and recvTimingSnoopReq().
void gem5::o3::LSQ::commitLoads | ( | InstSeqNum & | youngest_inst, |
ThreadID | tid ) |
Commits loads up until the given sequence number for a specific thread.
Definition at line 253 of file lsq.cc.
References thread.
Referenced by gem5::o3::IEW::tick().
void gem5::o3::LSQ::commitStores | ( | InstSeqNum & | youngest_inst, |
ThreadID | tid ) |
Commits stores up until the given sequence number for a specific thread.
Definition at line 259 of file lsq.cc.
References thread.
Referenced by gem5::o3::IEW::tick().
void gem5::o3::LSQ::completeDataAccess | ( | PacketPtr | pkt | ) |
Definition at line 395 of file lsq.cc.
References completeDataAccess(), gem5::o3::LSQ::LSQRequest::contextId(), gem5::BaseCPU::contextToThread(), cpu, gem5::Packet::senderState, and thread.
Referenced by completeDataAccess().
void gem5::o3::LSQ::drainSanityCheck | ( | ) | const |
Perform sanity checks after a drain.
Definition at line 137 of file lsq.cc.
References drainSanityCheck(), isDrained(), numThreads, and thread.
Referenced by gem5::o3::IEW::drainSanityCheck(), and drainSanityCheck().
void gem5::o3::LSQ::dumpInsts | ( | ) | const |
Debugging function to print out all instructions.
Definition at line 764 of file lsq.cc.
References activeThreads, and thread.
void gem5::o3::LSQ::dumpInsts | ( | ThreadID | tid | ) | const |
int gem5::o3::LSQ::entryAmount | ( | ThreadID | num_threads | ) |
Number of entries needed for the given amount of threads.
Fault gem5::o3::LSQ::executeLoad | ( | const DynInstPtr & | inst | ) |
Executes a load.
Definition at line 237 of file lsq.cc.
References thread.
Referenced by gem5::o3::IEW::executeInsts().
Fault gem5::o3::LSQ::executeStore | ( | const DynInstPtr & | inst | ) |
Executes a store.
Definition at line 245 of file lsq.cc.
References thread.
Referenced by gem5::o3::IEW::executeInsts().
int gem5::o3::LSQ::getCount | ( | ) |
Returns the number of instructions in all of the queues.
Definition at line 473 of file lsq.cc.
References activeThreads, getCount(), and gem5::statistics::total.
Referenced by getCount(), gem5::o3::CPU::removeThread(), and gem5::o3::IEW::tick().
int gem5::o3::LSQ::getCount | ( | ThreadID | tid | ) |
|
inline |
Definition at line 892 of file lsq.hh.
References dcachePort.
Referenced by gem5::o3::CPU::getDataPort(), gem5::o3::CPU::htmSendAbortSignal(), and gem5::o3::IEW::startupStage().
uint64_t gem5::o3::LSQ::getLatestHtmUid | ( | ThreadID | tid | ) | const |
Definition at line 368 of file lsq.cc.
References gem5::InvalidThreadID, and thread.
Referenced by gem5::o3::IEW::dispatchInsts().
int gem5::o3::LSQ::getLoadHead | ( | ThreadID | tid | ) |
InstSeqNum gem5::o3::LSQ::getLoadHeadSeqNum | ( | ThreadID | tid | ) |
DynInstPtr gem5::o3::LSQ::getMemDepViolator | ( | ThreadID | tid | ) |
Gets the instruction that caused the memory ordering violation.
Definition at line 308 of file lsq.cc.
References thread.
Referenced by gem5::o3::IEW::executeInsts().
int gem5::o3::LSQ::getStoreHead | ( | ThreadID | tid | ) |
InstSeqNum gem5::o3::LSQ::getStoreHeadSeqNum | ( | ThreadID | tid | ) |
bool gem5::o3::LSQ::hasStoresToWB | ( | ) |
Returns whether or not there are any stores to write back to memory.
Definition at line 714 of file lsq.cc.
References activeThreads, and hasStoresToWB().
Referenced by gem5::o3::IEW::hasStoresToWB(), gem5::o3::IEW::hasStoresToWB(), and hasStoresToWB().
bool gem5::o3::LSQ::hasStoresToWB | ( | ThreadID | tid | ) |
void gem5::o3::LSQ::insertLoad | ( | const DynInstPtr & | load_inst | ) |
Inserts a load into the LSQ.
Definition at line 221 of file lsq.cc.
References thread.
Referenced by gem5::o3::IEW::dispatchInsts().
void gem5::o3::LSQ::insertStore | ( | const DynInstPtr & | store_inst | ) |
Inserts a store into the LSQ.
Definition at line 229 of file lsq.cc.
References thread.
Referenced by gem5::o3::IEW::dispatchInsts().
bool gem5::o3::LSQ::isDrained | ( | ) | const |
Has the LSQ drained?
Definition at line 146 of file lsq.cc.
References DPRINTF, lqEmpty(), and sqEmpty().
Referenced by drainSanityCheck(), and gem5::o3::IEW::isDrained().
bool gem5::o3::LSQ::isEmpty | ( | ) | const |
bool gem5::o3::LSQ::isFull | ( | ) |
bool gem5::o3::LSQ::isFull | ( | ThreadID | tid | ) |
bool gem5::o3::LSQ::isStalled | ( | ) |
Returns if the LSQ is stalled due to a memory operation that must be replayed.
Definition at line 689 of file lsq.cc.
References activeThreads, isStalled(), and thread.
Referenced by isStalled(), and isStalled().
bool gem5::o3::LSQ::isStalled | ( | ThreadID | tid | ) |
bool gem5::o3::LSQ::lqEmpty | ( | ) | const |
Returns if all of the LQs are empty.
Definition at line 603 of file lsq.cc.
References activeThreads, lqEmpty(), and thread.
Referenced by isDrained(), isEmpty(), and lqEmpty().
bool gem5::o3::LSQ::lqFull | ( | ) |
Returns if any of the LQs are full.
Definition at line 635 of file lsq.cc.
References activeThreads, lqFull(), and thread.
Referenced by gem5::o3::IEW::dispatchInsts(), isFull(), lqFull(), and lqFull().
bool gem5::o3::LSQ::lqFull | ( | ThreadID | tid | ) |
|
inlinestaticprotected |
Auxiliary function to calculate per-thread max LSQ allocation limit.
Depending on a policy, number of entries and possibly number of threads and threshold, this function calculates how many resources each thread can occupy at most.
Definition at line 920 of file lsq.hh.
References numThreads.
std::string gem5::o3::LSQ::name | ( | ) | const |
Returns the name of the LSQ.
Definition at line 124 of file lsq.cc.
References iewStage, and gem5::o3::IEW::name().
unsigned gem5::o3::LSQ::numFreeEntries | ( | ThreadID | tid | ) |
Returns the number of free entries for a specific thread.
unsigned gem5::o3::LSQ::numFreeLoadEntries | ( | ) |
Returns the number of free load entries.
Definition at line 524 of file lsq.cc.
References activeThreads, thread, and gem5::statistics::total.
Referenced by gem5::o3::IEW::clearStates(), gem5::o3::Rename::clearStates(), gem5::o3::Rename::resetStage(), gem5::o3::IEW::startupStage(), and gem5::o3::IEW::tick().
unsigned gem5::o3::LSQ::numFreeLoadEntries | ( | ThreadID | tid | ) |
unsigned gem5::o3::LSQ::numFreeStoreEntries | ( | ) |
Returns the number of free store entries.
Definition at line 541 of file lsq.cc.
References activeThreads, thread, and gem5::statistics::total.
Referenced by gem5::o3::IEW::clearStates(), gem5::o3::Rename::clearStates(), gem5::o3::Rename::resetStage(), gem5::o3::IEW::startupStage(), and gem5::o3::IEW::tick().
unsigned gem5::o3::LSQ::numFreeStoreEntries | ( | ThreadID | tid | ) |
int gem5::o3::LSQ::numHtmStarts | ( | ThreadID | tid | ) | const |
Definition at line 344 of file lsq.cc.
References gem5::InvalidThreadID, and thread.
Referenced by gem5::o3::IEW::dispatchInsts().
int gem5::o3::LSQ::numHtmStops | ( | ThreadID | tid | ) | const |
Definition at line 352 of file lsq.cc.
References gem5::InvalidThreadID, and thread.
Referenced by gem5::o3::IEW::dispatchInsts().
int gem5::o3::LSQ::numLoads | ( | ) |
Returns the total number of loads in the load queue.
Definition at line 490 of file lsq.cc.
References activeThreads, numLoads(), and gem5::statistics::total.
Referenced by numLoads().
int gem5::o3::LSQ::numLoads | ( | ThreadID | tid | ) |
int gem5::o3::LSQ::numStores | ( | ) |
Returns the total number of stores in the store queue.
Definition at line 507 of file lsq.cc.
References activeThreads, thread, and gem5::statistics::total.
int gem5::o3::LSQ::numStores | ( | ThreadID | tid | ) |
int gem5::o3::LSQ::numStoresToWB | ( | ThreadID | tid | ) |
Returns the number of stores a specific thread has to write back.
Definition at line 736 of file lsq.cc.
References thread.
Referenced by writebackStores().
Fault gem5::o3::LSQ::pushRequest | ( | const DynInstPtr & | inst, |
bool | isLoad, | ||
uint8_t * | data, | ||
unsigned int | size, | ||
Addr | addr, | ||
Request::Flags | flags, | ||
uint64_t * | res, | ||
AtomicOpFunctorPtr | amo_op, | ||
const std::vector< bool > & | byte_enable ) |
Definition at line 783 of file lsq.cc.
References gem5::o3::LSQ::LSQRequest::_byteEnable, gem5::X86ISA::addr, gem5::BaseCPU::cacheLineSize(), gem5::o3::CPU::checker, gem5::BaseCPU::contextToThread(), cpu, data, flags, gem5::o3::LSQ::LSQRequest::getVaddr(), gem5::Request::HTM_CMD, gem5::o3::LSQ::LSQRequest::initiateTranslation(), gem5::o3::LSQ::LSQRequest::isMemAccessRequired(), gem5::o3::LSQ::LSQRequest::isTranslationComplete(), gem5::NoFault, read(), gem5::o3::LSQ::LSQRequest::req(), gem5::BaseCPU::taskId(), gem5::o3::LSQ::LSQRequest::taskId(), thread, gem5::Request::TLBI_CMD, gem5::transferNeedsBurst(), and write().
Referenced by gem5::o3::CPU::pushRequest().
Fault gem5::o3::LSQ::read | ( | LSQRequest * | request, |
ssize_t | load_idx ) |
Executes a read operation, using the load specified at the load index.
Definition at line 1526 of file lsq.cc.
References gem5::o3::LSQ::LSQRequest::contextId(), gem5::BaseCPU::contextToThread(), cpu, gem5::o3::LSQ::LSQRequest::req(), and thread.
Referenced by pushRequest().
void gem5::o3::LSQ::recvReqRetry | ( | ) |
Retry the previous send that failed.
Definition at line 384 of file lsq.cc.
References activeThreads, cacheBlocked(), gem5::o3::IEW::cacheUnblocked(), iewStage, and thread.
bool gem5::o3::LSQ::recvTimingResp | ( | PacketPtr | pkt | ) |
Handles writing back and completing the load or store that has returned from memory.
pkt | Response packet from the memory sub-system |
Definition at line 403 of file lsq.cc.
References checkStaleTranslations(), gem5::o3::LSQ::LSQRequest::contextId(), gem5::BaseCPU::contextToThread(), cpu, DPRINTF, gem5::Packet::getAddr(), gem5::Packet::isError(), gem5::Packet::isInvalidate(), numThreads, gem5::o3::LSQ::LSQRequest::packetReplied(), panic_if, gem5::Packet::senderState, thread, and waitingForStaleTranslation.
void gem5::o3::LSQ::recvTimingSnoopReq | ( | PacketPtr | pkt | ) |
Definition at line 444 of file lsq.cc.
References checkStaleTranslations(), gem5::Packet::cmdString(), DPRINTF, gem5::Packet::getAddr(), gem5::Packet::isInvalidate(), numThreads, gem5::Packet::req, staleTranslationWaitTxnId, thread, and waitingForStaleTranslation.
void gem5::o3::LSQ::resetHtmStartsStops | ( | ThreadID | tid | ) |
Definition at line 361 of file lsq.cc.
References gem5::InvalidThreadID, and thread.
Referenced by gem5::o3::CPU::htmSendAbortSignal().
Sets the pointer to the list of active threads.
Definition at line 130 of file lsq.cc.
References activeThreads.
Referenced by gem5::o3::IEW::setActiveThreads().
void gem5::o3::LSQ::setLastRetiredHtmUid | ( | ThreadID | tid, |
uint64_t | htmUid ) |
Definition at line 377 of file lsq.cc.
References gem5::InvalidThreadID, and thread.
Referenced by gem5::o3::IEW::setLastRetiredHtmUid().
bool gem5::o3::LSQ::sqEmpty | ( | ) | const |
Returns if all of the SQs are empty.
Definition at line 619 of file lsq.cc.
References activeThreads, sqEmpty(), and thread.
Referenced by isDrained(), isEmpty(), and sqEmpty().
bool gem5::o3::LSQ::sqFull | ( | ) |
Returns if any of the SQs are full.
Definition at line 662 of file lsq.cc.
References activeThreads, and sqFull().
Referenced by gem5::o3::IEW::dispatchInsts(), isFull(), sqFull(), and sqFull().
bool gem5::o3::LSQ::sqFull | ( | ThreadID | tid | ) |
void gem5::o3::LSQ::squash | ( | const InstSeqNum & | squashed_num, |
ThreadID | tid ) |
Squash instructions from a thread until the specified sequence number.
Definition at line 283 of file lsq.cc.
References thread.
Referenced by gem5::o3::IEW::squash().
void gem5::o3::LSQ::takeOverFrom | ( | ) |
Takes over execution from another CPU's thread.
Definition at line 164 of file lsq.cc.
References _cacheBlocked, numThreads, thread, and usedStorePorts.
Referenced by gem5::o3::IEW::takeOverFrom().
void gem5::o3::LSQ::tick | ( | ) |
Ticks the LSQ.
Definition at line 175 of file lsq.cc.
References _cacheBlocked, cacheLoadPorts, gem5::o3::IEW::cacheUnblocked(), iewStage, usedLoadPorts, and usedStorePorts.
Referenced by gem5::o3::IEW::tick().
bool gem5::o3::LSQ::violation | ( | ) |
Returns whether or not there was a memory ordering violation.
Definition at line 289 of file lsq.cc.
References activeThreads, thread, and violation().
Referenced by gem5::o3::IEW::executeInsts(), and violation().
bool gem5::o3::LSQ::violation | ( | ThreadID | tid | ) |
bool gem5::o3::LSQ::willWB | ( | ) |
Returns if the LSQ will write back to memory this cycle.
Definition at line 742 of file lsq.cc.
References activeThreads, and willWB().
Referenced by gem5::o3::IEW::updateStatus(), and willWB().
bool gem5::o3::LSQ::willWB | ( | ThreadID | tid | ) |
Fault gem5::o3::LSQ::write | ( | LSQRequest * | request, |
uint8_t * | data, | ||
ssize_t | store_idx ) |
Executes a store operation, using the store specified at the store index.
Definition at line 1535 of file lsq.cc.
References gem5::BaseCPU::contextToThread(), cpu, data, gem5::o3::LSQ::LSQRequest::req(), and thread.
Referenced by pushRequest().
void gem5::o3::LSQ::writebackStores | ( | ) |
Attempts to write back stores until all cache ports are used or the interface becomes blocked.
Definition at line 265 of file lsq.cc.
References activeThreads, DPRINTF, numStoresToWB(), and thread.
Referenced by gem5::o3::IEW::tick().
void gem5::o3::LSQ::writebackStores | ( | ThreadID | tid | ) |
Same as above, but only for one thread.
|
protected |
D-cache is blocked.
Definition at line 896 of file lsq.hh.
Referenced by cacheBlocked(), cacheBlocked(), takeOverFrom(), and tick().
List of Active Threads in System.
Definition at line 938 of file lsq.hh.
Referenced by dumpInsts(), getCount(), hasStoresToWB(), isFull(), isStalled(), lqEmpty(), lqFull(), numFreeLoadEntries(), numFreeStoreEntries(), numLoads(), numStores(), recvReqRetry(), setActiveThreads(), sqEmpty(), sqFull(), violation(), willWB(), and writebackStores().
|
protected |
The number of cache ports available each cycle (loads only).
Definition at line 902 of file lsq.hh.
Referenced by cachePortAvailable(), and tick().
|
protected |
The number of cache ports available each cycle (stores only).
Definition at line 898 of file lsq.hh.
Referenced by cachePortAvailable().
CPU* gem5::o3::LSQ::cpu |
The CPU pointer.
Definition at line 878 of file lsq.hh.
Referenced by checkStaleTranslations(), completeDataAccess(), LSQ(), pushRequest(), read(), recvTimingResp(), gem5::o3::LSQ::DcachePort::recvTimingSnoopReq(), and write().
|
protected |
Data port.
Definition at line 952 of file lsq.hh.
Referenced by checkStaleTranslations(), getDataPort(), and LSQ().
IEW* gem5::o3::LSQ::iewStage |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Number of Threads.
Definition at line 958 of file lsq.hh.
Referenced by drainSanityCheck(), LSQ(), maxLSQAllocation(), recvTimingResp(), recvTimingSnoopReq(), and takeOverFrom().
|
protected |
|
protected |
The ID if the transaction that made translations stale.
Definition at line 909 of file lsq.hh.
Referenced by checkStaleTranslations(), and recvTimingSnoopReq().
|
protected |
The LSQ units for individual threads.
Definition at line 955 of file lsq.hh.
Referenced by checkStaleTranslations(), commitLoads(), commitStores(), completeDataAccess(), drainSanityCheck(), dumpInsts(), dumpInsts(), executeLoad(), executeStore(), getCount(), getLatestHtmUid(), getLoadHead(), getLoadHeadSeqNum(), getMemDepViolator(), getStoreHead(), getStoreHeadSeqNum(), gem5::o3::LSQ::SingleDataRequest::handleLocalAccess(), gem5::o3::LSQ::SplitDataRequest::handleLocalAccess(), hasStoresToWB(), insertLoad(), insertStore(), isFull(), isFull(), isStalled(), isStalled(), lqEmpty(), lqFull(), lqFull(), LSQ(), numFreeLoadEntries(), numFreeLoadEntries(), numFreeStoreEntries(), numFreeStoreEntries(), numHtmStarts(), numHtmStops(), numLoads(), numStores(), numStores(), numStoresToWB(), pushRequest(), read(), recvReqRetry(), recvTimingResp(), recvTimingSnoopReq(), resetHtmStartsStops(), setLastRetiredHtmUid(), sqEmpty(), sqFull(), squash(), takeOverFrom(), violation(), violation(), willWB(), write(), and writebackStores().
|
protected |
The number of used cache ports in this cycle by loads.
Definition at line 904 of file lsq.hh.
Referenced by cachePortAvailable(), cachePortBusy(), and tick().
|
protected |
The number of used cache ports in this cycle by stores.
Definition at line 900 of file lsq.hh.
Referenced by cachePortAvailable(), cachePortBusy(), takeOverFrom(), and tick().
|
protected |
If the LSQ is currently waiting for stale translations.
Definition at line 907 of file lsq.hh.
Referenced by checkStaleTranslations(), recvTimingResp(), and recvTimingSnoopReq().