Hi All,

I am trying to understand writeback miss and hits. Right now, I only have a single core with L1 and L2 in my simulation, so there is no coherency b/w cores.

I want to extract from the simulation the traces for the last level cache. More specifically the misses that leads to memory accesses, so I am trying to extract the memory requests from the traces.

I don't quite understand the behaviour of writebacks. My understanding is that when a block is dirty and if it's being replaced, then we must write this back to main memory. So what's the meaning of hits and misses?

I noticed from the trace that when there is a writeback hit, no actual replacement occurs. However, for writeback misses, the replacement occurs some of the time but not others, why is this the case? shouldn't we always replace the dirty block?

Here is two example of traces where one does replacment and one does not:

Replacement occurs:
---------------------------------------------
20004092000: system.cpu.dcache: ReadReq 109e380 miss
20004093000: system.l2: ReadReq 109e380 miss

20004145000: system.cpu.dcache: replacement: replacing 108e380 with 109e380: writeback

20004147000: system.l2: Writeback 108e380 miss
20004147000: system.l2: replacement: replacing e8e380 with 108e380: writeback
------------------------------------------------------------------


No Replacment:
----------------------------------------------------------
960663000: system.cpu.dcache: WriteReq 14bbc00 miss
960664000: system.l2: ReadExReq 14bbc00 miss

960716000: system.cpu.dcache: replacement: replacing 10abc00 with 14bbc00: writeback

960718000: system.l2: Writeback 10abc00 miss
----------------------------------------------------------------

Many Thanks,
Zheng Wu



_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to