>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

Reply via email to