Go to the documentation of this file.
49 #ifndef __MEM_CACHE_NONCOHERENT_CACHE_HH__
50 #define __MEM_CACHE_NONCOHERENT_CACHE_HH__
63 struct NoncoherentCacheParams;
76 Tick request_time)
override;
81 Tick forward_time)
override;
91 panic(
"Unexpected timing snoop request %s", pkt->
print());
95 panic(
"Unexpected timing snoop response %s", pkt->
print());
104 panic(
"Unexpected atomic snoop request %s", pkt->
print());
110 bool deferred_response =
false,
111 bool pending_downgrade =
false)
override;
121 bool is_whole_line_write)
const override;
131 #endif // __MEM_CACHE_NONCOHERENTCACHE_HH__
void recvTimingSnoopReq(PacketPtr pkt) override
Snoops bus transactions to maintain coherence.
Tick recvAtomic(PacketPtr pkt) override
Performs the access specified by the request.
Miss Status and handling Register.
void recvTimingResp(PacketPtr pkt) override
Handles a response (cache line fill/write ack) from the bus.
void recvTimingReq(PacketPtr pkt) override
Performs the access specified by the request.
void serviceMSHRTargets(MSHR *mshr, const PacketPtr pkt, CacheBlk *blk) override
Service non-deferred MSHR targets using the received response.
NoncoherentCache(const NoncoherentCacheParams &p)
void doWritebacks(PacketList &writebacks, Tick forward_time) override
Insert writebacks into the write buffer.
Cycles handleAtomicReqMiss(PacketPtr pkt, CacheBlk *&blk, PacketList &writebacks) override
Handle a request in atomic mode that missed in this cache.
PacketPtr createMissPacket(PacketPtr cpu_pkt, CacheBlk *blk, bool needs_writable, bool is_whole_line_write) const override
Create an appropriate downstream bus request packet.
bool access(PacketPtr pkt, CacheBlk *&blk, Cycles &lat, PacketList &writebacks) override
Does all the processing necessary to perform the provided request.
Cycles is a wrapper class for representing cycle counts, i.e.
Tick recvAtomicSnoop(PacketPtr pkt) override
Snoop for the provided request in the cache and return the estimated time taken.
PacketPtr evictBlock(CacheBlk *blk) override
Evict a cache block.
void print(std::ostream &o, int verbosity=0, const std::string &prefix="") const
void functionalAccess(PacketPtr pkt, bool from_cpu_side) override
Performs the access specified by the request.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
uint64_t Tick
Tick count type.
void recvTimingSnoopResp(PacketPtr pkt) override
Handle a snoop response.
void doWritebacksAtomic(PacketList &writebacks) override
Send writebacks down the memory hierarchy in atomic mode.
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...
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
void handleTimingReqMiss(PacketPtr pkt, CacheBlk *blk, Tick forward_time, Tick request_time) override
#define panic(...)
This implements a cprintf based panic() function.
Generated on Sun Jul 30 2023 01:56:57 for gem5 by doxygen 1.8.17