>so it fundamentally can't work with requests that don't have an associated PC
why a request has not PC? >I think the code that's causing the assertion should be inside an if, such >that the context and thread IDs of a prefetch are only set if the packet >that causes it has valid IDs. so, do you confirm that it should be fixed? I want to be sure that i understand correctly or not On 4/7/12, Steve Reinhardt <[email protected]> wrote: > IIRC, the stride prefetcher builds a stride table based on PCs, so it > fundamentally can't work with requests that don't have an associated PC. > The tagged prefetcher does not have this limitation, so it doesn't need > the PC. > > Note that the assertion you're running into is for a valid thread ID, not a > valid PC, which are different (though probably highly correlated) things. > I think the code that's causing the assertion should be inside an if, such > that the context and thread IDs of a prefetch are only set if the packet > that causes it has valid IDs. > > Steve > > On Fri, Apr 6, 2012 at 10:37 AM, Mahmood Naderan > <[email protected]>wrote: > >> Dear developers, >> I previous versions, there was a check in prefetcher code >> >> if (!pkt->req->hasPC()) { >> DPRINTF(HWPrefetch, "ignoring request with no PC"); >> return; >> } >> >> which prevent prefetching when the packet has no PC. However in the >> latest version, that check is removed in the tagged prefetcher. Stride >> is ok though. >> >> So the simulation crashes with this backtrace: >> >> #0 0x00007ffff67993a5 in __GI_raise (sig=6) at >> ../nptl/sysdeps/unix/sysv/linux/raise.c:64 >> #1 0x00007ffff679cb0b in __GI_abort () at abort.c:92 >> #2 0x00007ffff6791d4d in __GI___assert_fail (assertion=0x150fb30 >> "privateFlags.isSet(VALID_THREAD_ID)", file=<optimized out>, line=467, >> function=<optimized out>) at assert.c:81 >> >> #3 0x00000000005fee66 in Request::threadId (this=0x3d39fe0) at >> build/X86/mem/request.hh:467 >> >> #4 0x00000000005fde07 in BasePrefetcher::notify (this=0x3091880, >> pkt=@0x7fffffffc390, time=1958221000) at >> build/X86/mem/cache/prefetch/base.cc:239 >> >> #5 0x00000000005e6316 in Cache<LRU>::timingAccess (this=0x30c4340, >> pkt=0x3d39f80) at build/X86/mem/cache/cache_impl.hh:499 >> >> >> m5.debug: build/X86/mem/request.hh:467: int Request::threadId() const: >> Assertion `privateFlags.isSet(VALID_THREAD_ID)' failed. >> >> >> I think the check must be added in tagged too. >> -- >> // Naderan *Mahmood; >> _______________________________________________ >> gem5-dev mailing list >> [email protected] >> http://m5sim.org/mailman/listinfo/gem5-dev >> > _______________________________________________ > gem5-dev mailing list > [email protected] > http://m5sim.org/mailman/listinfo/gem5-dev > -- -- // Naderan *Mahmood; _______________________________________________ gem5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/gem5-dev
