background image

17-48 Vol. 3B

DEBUG, BRANCH PROFILE, TSC, AND RESOURCE MONITORING FEATURES

Thread access to the IA32_QM_EVTSEL and IA32_QM_CTR MSR pair should be serialized to avoid situations 
where one thread changes the RMID/EvtID just before another thread reads monitoring data from 
IA32_QM_CTR.

IA32_QM_CTR: This MSR reports monitored data when available. It contains three bit fields. If software 
configures an unsupported RMID or event type in IA32_QM_EVTSEL, then IA32_QM_CTR.Error (bit 63) will be 
set, indicating there is no valid data to report. If IA32_QM_CTR.Unavailable (bit 62) is set, it indicates 
monitored data for the RMID is not available, and IA32_QM_CTR.data (bits 61:0) should be ignored. Therefore, 
IA32_QM_CTR.data (bits 61:0) is valid only if bit 63 and 62 are both clear. For Cache Monitoring Technology, 
software can convert IA32_QM_CTR.data into cache occupancy or bandwidth metrics expressed in bytes by 
multiplying with the conversion factor from CPUID.(EAX=0FH, ECX=1H).EBX.

17.16.8  Monitoring Programming Considerations

Figure 17-23 illustrates how system software can program IA32_QOSEVTSEL and IA32_QM_CTR to perform 
resource monitoring.

Though the field provided in IA32_QM_CTR allows for up to 62 bits of data to be returned, often a subset of bits are 
used. With Cache Monitoring Technology for instance, the number of bits used will be proportional to the base-two 
logarithm of the total cache size divided by the Upscaling Factor from CPUID.
In Memory Bandwidth Monitoring the initial counter size is 24 bits, and retrieving the value at 1Hz or faster is suffi-
cient to ensure at most one rollover per sampling period. Any future changes to counter width will be enumerated 
to software. 

Figure 17-24.  IA32_QM_EVTSEL and IA32_QM_CTR MSRs

Figure 17-25.  Software Usage of Cache Monitoring Resources

0

63

IA32_QM_CTR

U

61

E

Resource Monitoring Data

0

31

63

RMID

7

Reserved

IA32_QM_EVTSEL

Reserved

41

32

42

8

EvtID

RMID

0

63

Monitoring Data

IA32_QM_CTR MSR

62

Availability

Error

7

63

Reserved

41

RMID

Resource Monitoring ID

0

EvtID

32

Reserved

Event ID

IA32_QOSEVTSEL MSR

System Software

Event ID

Counter Data