Go to the documentation of this file.
49 #ifndef __MEM_CACHE_NONCOHERENT_CACHE_HH__
50 #define __MEM_CACHE_NONCOHERENT_CACHE_HH__
59 struct NoncoherentCacheParams;
72 Tick request_time)
override;
77 Tick forward_time)
override;
87 panic(
"Unexpected timing snoop request %s", pkt->
print());
91 panic(
"Unexpected timing snoop response %s", pkt->
print());
100 panic(
"Unexpected atomic snoop request %s", pkt->
print());
106 bool deferred_response =
false,
107 bool pending_downgrade =
false)
override;
117 bool is_whole_line_write)
const override;
125 #endif // __MEM_CACHE_NONCOHERENTCACHE_HH__
void recvTimingSnoopResp(PacketPtr pkt) override
Handle a snoop response.
M5_NODISCARD PacketPtr evictBlock(CacheBlk *blk) override
Evict a cache block.
Tick recvAtomicSnoop(PacketPtr pkt) override
Snoop for the provided request in the cache and return the estimated time taken.
NoncoherentCache(const NoncoherentCacheParams *p)
uint64_t Tick
Tick count type.
void serviceMSHRTargets(MSHR *mshr, const PacketPtr pkt, CacheBlk *blk) override
Service non-deferred MSHR targets using the received response.
bool access(PacketPtr pkt, CacheBlk *&blk, Cycles &lat, PacketList &writebacks) override
Does all the processing necessary to perform the provided request.
void print(std::ostream &o, int verbosity=0, const std::string &prefix="") const
void recvTimingReq(PacketPtr pkt) override
Performs the access specified by the request.
void satisfyRequest(PacketPtr pkt, CacheBlk *blk, bool deferred_response=false, bool pending_downgrade=false) override
Perform any necessary updates to the block and perform any data exchange between the packet and the b...
PacketPtr createMissPacket(PacketPtr cpu_pkt, CacheBlk *blk, bool needs_writable, bool is_whole_line_write) const override
Create an appropriate downstream bus request packet.
void recvTimingSnoopReq(PacketPtr pkt) override
Snoops bus transactions to maintain coherence.
void handleTimingReqMiss(PacketPtr pkt, CacheBlk *blk, Tick forward_time, Tick request_time) override
void recvTimingResp(PacketPtr pkt) override
Handles a response (cache line fill/write ack) from the bus.
void doWritebacksAtomic(PacketList &writebacks) override
Send writebacks down the memory hierarchy in atomic mode.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void functionalAccess(PacketPtr pkt, bool from_cpu_side) override
Performs the access specified by the request.
Cycles is a wrapper class for representing cycle counts, i.e.
Cycles handleAtomicReqMiss(PacketPtr pkt, CacheBlk *&blk, PacketList &writebacks) override
Handle a request in atomic mode that missed in this cache.
void doWritebacks(PacketList &writebacks, Tick forward_time) override
Insert writebacks into the write buffer.
#define panic(...)
This implements a cprintf based panic() function.
Miss Status and handling Register.
Tick recvAtomic(PacketPtr pkt) override
Performs the access specified by the request.
Generated on Wed Sep 30 2020 14:02:12 for gem5 by doxygen 1.8.17