I think the problem is in prefetch/base.cc getPacket()
http://repo.gem5.org/gem5/file/347fc850752c/src/mem/cache/prefetch/base.cc#l149
As you can see this statement
DPRINTF(HWPrefetch, "addr 0x%x in cache, skipping\n", pkt->getAddr());
is printed if it is incache() or inMissQueue()
In another word, if it is in miss queue, the printf says that it is in cache.
I think it should be corrected like this:
if ( inCache(blk_addr) )
DPRINTF(HWPrefetch, "addr 0x%x in cache, skipping\n", pkt->getAddr());
else if ( inMissQueue(blk_addr) )
DPRINTF(HWPrefetch, "addr 0x%x in miss queue, skipping\n", pkt->getAddr());
else
break;
On 2/19/12, Mahmood Naderan <[email protected]> wrote:
> Hi
> In the debug messages below, you can see that a pf request (0x5c40) is
> skipped because it is already in cache. However some ticks later, a read
> request for 0x5c40 is missed in cache.
>
> 1254069000: system.cpu.icache: ReadReq (ifetch) 5c00 hit
> 1254069000: system.cpu.icache-pf: Found a pf candidate addr: 0x5c40,
> inserting into prefetch queue with delay 1000 time 1254070000
> 1254069000: system.cpu.icache-pf: Found a pf candidate addr: 0x5c80,
> inserting into prefetch queue with delay 1000 time 1254070000
> 1254069000: system.cpu.icache-pf: Found a pf candidate addr: 0x5cc0,
> inserting into prefetch queue with delay 1000 time 1254070000
> 1254069000: system.cpu.icache-pf: Found a pf candidate addr: 0x5d00,
> inserting into prefetch queue with delay 1000 time 1254070000
> 1254070000: system.cpu.dcache: set 3: moving blk bbec0 to MRU
> 1254070000: system.cpu.dcache: ReadReq bbee0 hit
> 1254071000: system.cpu.icache-pf: Requesting a hw_pf to issue
> 1254071000: system.cpu.icache-pf: addr 0x5c40 in cache, skipping
> 1254071000: system.cpu.icache-pf: addr 0x5c80 in cache, skipping
> 1254071000: system.cpu.icache-pf: addr 0x5cc0 in cache, skipping
> 1254071000: system.cpu.icache-pf: addr 0x5d00 in cache, skipping
> 1254071000: system.cpu.dcache: set 0: moving blk bbe00 to MRU
> 1254071000: system.cpu.dcache: ReadReq bbe24 hit
> 1254072000: system.cpu.dcache: set 0: moving blk bbe00 to MRU
> 1254072000: system.cpu.dcache: ReadReq bbe18 hit
> 1254072000: system.cpu.dcache: set 0: moving blk bbe00 to MRU
> 1254072000: system.cpu.dcache: ReadReq bbe24 hit
> 1254072000: system.cpu.dcache-pf: Found a pf candidate addr: 0xbbe00,
> inserting into prefetch queue with delay 1000 time 1254073000
> 1254072000: system.cpu.dcache-pf: Found a pf candidate addr: 0xbbe00,
> inserting into prefetch queue with delay 1000 time 1254073000
> 1254072000: system.cpu.dcache-pf: Prefetch addr already in pf buffer
> 1254072000: system.cpu.dcache-pf: Found a pf candidate addr: 0xbbe00,
> inserting into prefetch queue with delay 1000 time 1254073000
> 1254072000: system.cpu.dcache-pf: Prefetch addr already in pf buffer
> 1254072000: system.cpu.dcache-pf: Found a pf candidate addr: 0xbbe00,
> inserting into prefetch queue with delay 1000 time 1254073000
> 1254072000: system.cpu.dcache-pf: Prefetch addr already in pf buffer
> 1254073000: system.cpu.icache: ReadReq (ifetch) 5c40 miss
>
> The CacheRepl flag is on, but in the meantime, the block containing 5c40
> has not been evicted from cache.
>
> So What happened to that block?
> --
> // Naderan *Mahmood;
>
--
--
// Naderan *Mahmood;
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users