OK. I'll get these patches committed.
Thanks, Ali On 05.09.2012 10:27, Nathanaël Prémillieu wrote: > Hi Ali, > > Thanks for the last modification, everything works well now. > If my numbers are correct, for some benchmarks, the majority of the > mispredictions were not flagged as control instructions (50%~60% on > average, up to 98%) and for some other it was negligible (1% or even less). > > Nathanaël > > Le 04/09/2012 03:10, Ali Saidi a écrit : > >> Hi Nathanaël, How big was the stat before this out of curiosity? Have you run into any problems with the patch? Something like this might solve your problem with the remaining ones: diff -r 42807286d6cb src/arch/arm/insts/macromem.cc --- a/src/arch/arm/insts/macromem.cc Tue Aug 28 17:57:51 2012 -0500 +++ b/src/arch/arm/insts/macromem.cc Mon Sep 03 20:10:02 2012 -0500 @@ -104,6 +104,12 @@ // into the final one later *++uop = new MicroLdrUop(machInst, INTREG_UREG1, INTREG_UREG0, up, addr); + if (reg == INTREG_PC) { + (*uop)->setFlag(StaticInst::IsControl); + if (!(condCode == COND_AL || condCode == COND_UC)) + (*uop)->setFlag(StaticInst::IsCondControl); + (*uop)->setFlag(StaticInst::IsIndirectControl); + } } else { // Otherwise just do it normally if (reg == INTREG_PC && exception_ret) { @@ -113,6 +119,12 @@ } else { *++uop = new MicroLdrUop(machInst, regIdx, INTREG_UREG0, up, addr); + if (reg == INTREG_PC) { + (*uop)->setFlag(StaticInst::IsControl); + if (!(condCode == COND_AL || condCode == COND_UC)) + (*uop)->setFlag(StaticInst::IsCondControl); + (*uop)->setFlag(StaticInst::IsIndirectControl); + } } } } else { Please let me know if that works out. Ali On Sep 3, 2012, at 4:06 AM, Nathanaël Prémillieu wrote: >> >>> Hi Ali, The patch seems to resolve most of my problems, thanks a lot. I have added a statistic to see how many instructions are detected as mispredicted (by the inst->mispredicted() function) but have not their IsControl flag set. In most of the benchmarks, it's now 0. However, I still have one benchmark that have one instruction that has a problem (more event are detected, but only one is committed). It is a MicroLdrUop ("ldr_uop") instruction. Nathanaël Le 29/08/2012 20:39, Ali Saidi a écrit : >>> >>>> Hi Nathanaël, I just posted some code that should address both the issues you found. I haven't tested it yet, but let me know what you find. http://reviews.gem5.org/r/1376/ [11]Thanks, Ali On 28.08.2012 12:01, Ali Saidi wrote: >>>> >>>>> 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 [9]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 gem5-users@gem5.org gem5-users@gem5.org> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [10] >>>> _______________________________________________ gem5-users mailing list gem5-users@gem5.org [12] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [13] >>> _______________________________________________ gem5-users mailing list gem5-users@gem5.org [14] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [15] >> _______________________________________________ gem5-users mailing list gem5-users@gem5.org [16] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [17] > > _______________________________________________ > gem5-users mailing list > gem5-users@gem5.org > http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users Links: ------ [1] mailto:gem5-users@gem5.org [2] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [3] mailto:gem5-users@gem5.org [4] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [5] mailto:gem5-users@gem5.org [6] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [7] mailto:gem5-users@gem5.org [8] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [9] mailto:nprem...@irisa.fr [10] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [11] http://reviews.gem5.org/r/1376/ [12] mailto:gem5-users@gem5.org [13] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [14] mailto:gem5-users@gem5.org [15] http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users [16] mailto:gem5-users@gem5.org [17] 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