Hi Nathanaël,

Sent from my ARM powered mobile device

On Aug 28, 2012, at 11:34 AM, Nathanaël Prémillieu <nprem...@irisa.fr> wrote:

> Hi Ali,
> 
> Thank for your response.
> I was thinking that data instructions as branch was a specificity of ARMv7. 
> In The ARM Architecture Reference Manual, p. 170, it is stated that:
> "In ARMv7, a processor in ARM state can also enter Thumb state (and change to 
> executing Thumb instructions) by executing an ADC, ADD, AND, ASR, BIC, EOR, 
> LSL, LSR, MOV, MVN, ORR, ROR, RRX, RSB, RSC, SBC, or SUB
> instruction that has the PC as destination register and does not set the 
> condition flags."
> 
> I don't currently  know if it happens a lot and if it is responsible for a 
> significative part of the detected mispredictions. I will send some update 
> when I will have numbers.
> 
Thanks for looking into it and please let us know. Looking at the reference 
manual it appears as though I wasnt quite correct. See table D4 in version 406B 
of the manual or I5 in version 406C. It seems like we're missing a few that 
aren't deprecated. 

> I have started to modify the src/arch/arm/isa/insts/data.isa file and it 
> seems to work.
> 
> For the load instructions, LOAD_REG_AN_PN_SN_UN_WN_SZ4, 
> LOAD_IMM_AN_PN_SN_UN_WN_SZ4, LOAD_REG_AY_PN_SN_UN_WN_SZ4 and 
> LOAD_IMM_AY_PN_SN_UN_WN_SZ4 are not split in two and the control flag is not 
> set when it is necessary.
Hrm.  This is probably a bug. 


Thanks,

Ali

> 
> Thanks,
> Nathanaël
> 
> Le 28/08/2012 15:32, Ali Saidi a écrit :
>> Hi Nathanaël,
>> 
>> The use of data instructions as branches is deprecated so we chose not to 
>> mark them as branches and I'd hope you're not seeing too much use of them.  
>> If you care the isBranch kwarg can be passed to the various data 
>> instructions in src/arch/arm/isa/insts/data.isa like it is for the mov 
>> instruction to mark these as branches. As for the loads, I believe these are 
>> correct, although it's always possible we missed some. In gem5 the load 
>> operations are turned into to uops one that does the memory load and a 
>> second that is the control instruction. Is this not what you're observing?
>> 
>> 
>> Thasks,
>> Ali
>> 
>> 
>> 
>> On Aug 28, 2012, at 4:35 AM, Nathanaël Prémillieu wrote:
>> 
>>> Hi All,
>>> 
>>> Any thoughts on that matter ? Because not having these instructions 
>>> identified as control instructions causes the branch predictor to not 
>>> predict them, increasing the number of branch mispredictions.
>>> It seems that some load instructions have also this problem.
>>> 
>>> Thanks,
>>> 
>>> Nathanaël
>>> 
>>> Le 23/08/2012 01:19, Nathanaël Prémillieu a écrit :
>>>> Hi All,
>>>> 
>>>> I happen to see that for data instructions in the ARM ISA (for example
>>>> an ADD) that have the PC as their destination register are not set as
>>>> control instructions (i.e. the flag IsControl is not set).
>>>> I was wondering whether it is a bug or it has some logic.
>>>> 
>>>> Thanks,
>>>> 
>>>> Nathanaël
>>>> _______________________________________________
>>>> gem5-users mailing list
>>>> gem5-users@gem5.org
>>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>> _______________________________________________
>>> gem5-users mailing list
>>> gem5-users@gem5.org
>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>> 
>> _______________________________________________
>> gem5-users mailing list
>> gem5-users@gem5.org
>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>> 
> _______________________________________________
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to