This was another patch that I forgot about (I had a lot going on before  
Christmas and in January - sorry).  Can I assume that it's ok to commit  
this one too?

Just a note about this - I don't have the EIO regressions running so can't  
update the stats for these.  Can someone else do it once I've pushed the  
patch?

Thanks
Tim

On Tue, 15 Dec 2009 05:06:55 -0500, Timothy M Jones <[email protected]>  
wrote:

> Thanks Kevin.  No problem for the delay.  I'll update the stats with  
> this new patch and then push it.  Hopefully that will be in the next  
> couple of days but possibly not til later on.
>
> Cheers
> Tim
>
> On Tue, 15 Dec 2009 00:44:45 -0000, Kevin Lim <[email protected]> wrote:
>
>> Hi Tim,
>>
>> Sorry for the slow reply, it's a very busy time for me. You're right
>> that the predict_record should be updated on the BTB not supplying the
>> target address. The patch you attached should fix the bug.
>>
>> Kevin
>>
>> Quoting Steve Reinhardt <[email protected]>:
>>
>>> Your logic looks fine to me... I think Kevin would have to speak up to
>>> say if there's any intended behavior here or if this is truly a bug.
>>>
>>> Steve
>>>
>>> On Tue, Dec 1, 2009 at 7:33 AM, Timothy M Jones <[email protected]>  
>>> wrote:
>>>> Hi everyone,
>>>>
>>>> I've noticed a slight problem in using the branch predictor that's  
>>>> causing
>>>> it to update its state with the incorrect outcome of the branch.  I'm
>>>> looking at O3CPU here.  The problem comes in bpred_unit_impl.hh in
>>>> predict().  If the BTB doesn't supply a target address, then  
>>>> pred_taken is
>>>> set to 'false'.  This is done without updating the predict_record  
>>>> which
>>>> could have the branch down as predicted taken.  If the branch then  
>>>> isn't
>>>> taken, the predictor is updated but with the possibly incorrect value  
>>>> from
>>>> the predict_record.
>>>>
>>>> I've attached a couple of patches to show what I mean.  The first,
>>>> 'test-bpred.patch' adds in a new trace flag 'TestBPred' simply to  
>>>> isolate
>>>> the problem and show it up.  The second,  
>>>> 'btb-invalid-fix-prediction.patch'
>>>> contains the fix.  For example, using
>>>> build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/o3-timing I get  
>>>> the
>>>> following output first:
>>>>
>>>> info: Entering event queue @ 0.  Starting simulation...
>>>>  49000: system.cpu.BPredUnit: First predicted 0x120000170 taken, now  
>>>> not
>>>> taken
>>>> target 0x120000170
>>>>  52500: system.cpu.commit: Committed 0x120000170
>>>>  53000: system.cpu.BPredUnit: Updating bpred for insn 0x120000170 as  
>>>> taken
>>>>  53000: system.cpu.commit: Committed 0x120000174
>>>>  53500: system.cpu.commit: Committed 0x120000178
>>>> ....
>>>>
>>>> As you can see, 0x120000170 obviously wasn't taken but the predictor  
>>>> is
>>>> updated as though it was because the initial prediction was changed  
>>>> when the
>>>> BTB couldn't supply a target address.  After applying the fix we get  
>>>> this:
>>>>
>>>> info: Entering event queue @ 0.  Starting simulation...
>>>>  49000: system.cpu.BPredUnit: First predicted 0x120000170 taken, now  
>>>> not
>>>> taken
>>>> target 0x120000170
>>>>  52500: system.cpu.commit: Committed 0x120000170
>>>>  53000: system.cpu.BPredUnit: Updating bpred for insn 0x120000170 as  
>>>> not
>>>> taken
>>>>  53000: system.cpu.commit: Committed 0x120000174
>>>>  53500: system.cpu.commit: Committed 0x120000178
>>>> ....
>>>>
>>>> Now the predictor is correctly updated with the knowledge that the  
>>>> branch
>>>> wasn't taken.
>>>>
>>>> Is my assessment of this right?
>>>>
>>>> Cheers
>>>> Tim
>>>> --
>>>> The University of Edinburgh is a charitable body, registered in
>>>> Scotland, with registration number SC005336.
>>>>
>>>>
>>>> _______________________________________________
>>>> m5-dev mailing list
>>>> [email protected]
>>>> http://m5sim.org/mailman/listinfo/m5-dev
>>>>
>>>>
>>> _______________________________________________
>>> m5-dev mailing list
>>> [email protected]
>>> http://m5sim.org/mailman/listinfo/m5-dev
>>>
>>>
>>>
>>
>> _______________________________________________
>> m5-dev mailing list
>> [email protected]
>> http://m5sim.org/mailman/listinfo/m5-dev
>>
>
>


-- 
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.

_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to