Let me clarify more -
1) Event BR_INST_RETIRED.MISPRED is for Atom processors, and other Core processors
2) However event RESOURCE_STALL.BR_MISS_CLEAR is for Core processors ONLY
3) To measure the performance impact of the branch mispredictions use the event RESOURCE_STALLS.BR_MISS_CLEAR on Core platform
4) To know branch misprediction ratio, use:
BR_INST_RETIRED.MISPRED / BR_INST_RETIRED.ANY
Yes. You cannot compare RESOURCE_STALL.BR_MISS_CLEAR count on Core CPU with BR_INST_RETIRED.MISPRED count directory.Thinking if instruction was prefetched from BTB (Branch Target Buffer), decoded, executed, result was saved into write-buffer, finallyfound that instructionin branchwas mis-predicted. So should redo allof works, it depends on instruction's complexity - so penalty is hard tobe estimated.
BR_INST_RETIRED.MISPRED / INST_RETIRED.ANY gives out mispredication rate. Developers have to reduce such case, use this tool to detect then change branch order in code (if-else-if-, switch, etc), or use Intel C++ compiler's PGO option.
RESOURCE_STALLS.BR_MISS_CLEAR gives out real penalty in cycles. Unfortunately Atom doesn't support on this.