48 #ifndef __MEM_CACHE_MSHR_QUEUE_HH__
49 #define __MEM_CACHE_MSHR_QUEUE_HH__
79 MSHRQueue(
const std::string &_label,
int num_entries,
int reserve,
98 Tick when_ready,
Counter order,
bool alloc_on_fill);
150 #endif //__MEM_CACHE_MSHR_QUEUE_HH__
Miss Status and Handling Register (MSHR) declaration.
Declaration of a high-level queue structure.
A Class for maintaining a list of pending and allocated memory requests.
MSHR::List readyList
Holds pointers to entries that haven't been sent downstream.
bool forceDeallocateTarget(MSHR *mshr)
Deallocate top target, possibly freeing the MSHR.
const int numReserve
The number of entries to hold as a temporary overflow space.
void moveToFront(MSHR *mshr)
Moves the MSHR to the front of the pending list if it is not in service.
A high-level queue interface, to be used by both the MSHR queue and the write buffer.
void markPending(MSHR *mshr)
Mark an in service entry as pending, used to resend a request.
bool havePending() const
Returns true if the pending list is not empty.
MSHR * allocate(Addr blk_addr, unsigned blk_size, PacketPtr pkt, Tick when_ready, Counter order, bool alloc_on_fill)
Allocates a new MSHR for the request and size.
uint64_t Tick
Tick count type.
Miss Status and handling Register.
void markInService(MSHR *mshr, bool pending_modified_resp)
Mark the given MSHR as in service.
const int numEntries
The total number of entries in this queue.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
int64_t Counter
Statistics counter type.
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
const int demandReserve
The number of entries to reserve for future demand accesses.
bool canPrefetch() const
Returns true if sufficient mshrs for prefetch.
MSHRQueue(const std::string &_label, int num_entries, int reserve, int demand_reserve)
Create a queue with a given number of entries.
int allocated
The number of currently allocated entries.