I experienced an interesting problem while using vtune 2016. In top-down analysis method (Gerneal Exploration), vtune uses UOPS_ISSUED.ANY, UOPS_RETIRE.RETIRE_SLOTS, INT_MISC.RECOVERY_CYCLES and CPU_CLK_UNHALTED.THREAD to evaluate the effect of Bad Speculation. I created a custom analysis in vtune including above events.
What makes me suprising is that, the results of General Exploration and my custom analysis is significantly different while measuring same program. In the result of my custom analysis, UOPS_ISSUED.ANY and UOPS_RETIRE.RETIRE_SLOTS are doubled while CPU_CLK_UNHALTED.THREAD stays the same. Thus, the effect of Bad Speculation is just doubled in the result of my custom analysis. Could anyone kindly give some help and make some detailed explanations to me?
PS : The program I measured is just a single-thread application. And the events included in my custom analysis is as follows:
CPU_CLK_UNHALTED.THREAD, CPU_CLK_UNHALTED.THREAD_P, IDQ_UOPS_NOT_DELIVERD.CORE, INST_RETIRED.ANY, INST_RETIRED.ANY_P, INT_MISC.RECOVERY_CYCLES, UOPS_ISSUED.ANY, UOPS_RETIRED.RETIRE_SLOTS