background image

Vol. 3B 19-165

PERFORMANCE-MONITORING EVENTS

To determine the branch misprediction ratio, divide the 

BR_INST_RETIRED.MISPRED event count by the number of 

BR_INST_RETIRED.ANY event count. To determine the number 

of mispredicted branches per instruction, divide the number of 

mispredicted branches by the INST_RETIRED.ANY event count. 

To measure the impact of the branch mispredictions use the 

event RESOURCE_STALLS.BR_MISS_CLEAR. 
Tips:
- See the optimization guide for tips on reducing branch 

mispredictions.
- PGO's purpose is to have straight line code for the most 

frequent execution paths, reducing branches taken and 

increasing the “basic block” size, possibly also reducing the code 

footprint or working-set.

C4H

0CH

BR_INST_RETIRED.TAK

EN

Retired taken branch 

instructions.

This event counts the number of branches retired that were 

taken.

C4H

0FH

BR_INST_RETIRED.AN

Y1

Retired branch 

instructions.

This event counts the number of branch instructions retired 

that were mispredicted. This event is a duplicate of 

BR_INST_RETIRED.MISPRED.

C5H

00H

BR_INST_RETIRED.MIS

PRED

Retired mispredicted 

branch instructions 

(precise event).

This event counts the number of retired branch instructions 

that were mispredicted by the processor. A branch 

misprediction occurs when the processor predicts that the 

branch would be taken, but it is not, or vice-versa. Mispredicted 

branches degrade the performance because the processor 

starts executing instructions along a wrong path it predicts. 

When the misprediction is discovered, all the instructions 

executed in the wrong path must be discarded, and the 

processor must start again on the correct path. 
Using the Profile-Guided Optimization (PGO) features of the 

Intel® C++ compiler may help reduce branch mispredictions. See 

the compiler documentation for more information on this 

feature. 
To determine the branch misprediction ratio, divide the 

BR_INST_RETIRED.MISPRED event count by the number of 

BR_INST_RETIRED.ANY event count. To determine the number 

of mispredicted branches per instruction, divide the number of 

mispredicted branches by the INST_RETIRED.ANY event count. 

To measure the impact of the branch mispredictions use the 

event RESOURCE_STALLS.BR_MISS_CLEAR. 
Tips:
- See the optimization guide for tips on reducing branch 

mispredictions.
- PGO's purpose is to have straight line code for the most 

frequent execution paths, reducing branches taken and 

increasing the “basic block” size, possibly also reducing the code 

footprint or working-set.

C6H

01H

CYCLES_INT_MASKED.

CYCLES_INT_MASKED

Cycles during which 

interrupts are disabled.

This event counts the number of cycles during which interrupts 

are disabled.

C6H

02H

CYCLES_INT_MASKED.

CYCLES_INT_PENDING

_AND_MASKED

Cycles during which 

interrupts are pending 

and disabled.

This event counts the number of cycles during which there are 

pending interrupts but interrupts are disabled.

Table 19-26.  Non-Architectural Performance Events for 45 nm, 32 nm Intel® Atom™ Processors (Contd.)

Event

Num.

Umask

Value

Event Name

Definition

Description and Comment