Opcode* | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
---|---|---|---|---|---|
0F 33 | RDPMC | NP | Valid | Valid | Read performance-monitoring counter specified by ECX into EDX:EAX. |
Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
NP | NA | NA | NA | NA |
The EAX register is loaded with the low-order 32 bits. The EDX register is loaded with the supported high-order bits of the counter. The number of high-order bits loaded into EDX is implementation specific on processors that do no support architectural performance monitoring. The width of fixed-function and general-purpose performance coun-ters on processors supporting architectural performance monitoring are reported by CPUID 0AH leaf. See below for the treatment of the EDX register for “fast” reads.
The ECX register specifies the counter type (if the processor supports architectural performance monitoring) and counter index. Counter type is specified in ECX[30] to select one of two type of performance counters. If the processor does not support architectural performance monitoring, ECX[30:0] specifies the counter index; other-wise ECX[29:0] specifies the index relative to the base of each counter type. ECX[31] selects “fast” read mode if supported. The two counter types are :
The width of fixed-function performance counters and general-purpose performance counters on processor supporting architectural performance monitoring are reported by CPUID 0AH leaf. The width of general-purpose performance counters are 40-bits for processors that do not support architectural performance monitoring coun-ters. The width of special-purpose performance counters are implementation specific.
Table 4-16 lists valid indices of the general-purpose and special-purpose performance counters according to the DisplayFamily_DisplayModel values of CPUID encoding for each processor family (see CPUID instruction in Chapter 3, “Instruction Set Reference, A-L” in the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 2A).
Processor Family | DisplayFamily_DisplayModel/Other Signatures | Valid PMC Index Range | General-purpose Counters |
---|---|---|---|
P6 Processors Based on Intel NetBurst microarchitecture (No L3) Pentium M processors Processors Based on Intel NetBurst microarchitecture (No L3) |
06H_01H, 06H_03H, 06H_05H, 06H_06H, 06H_07H, 06H_08H, 06H_0AH, 06H_0BH 0FH_00H, 0FH_01H, 0FH_02H, 0FH_03H, 0FH_04H, 0FH_06H 06H_09H, 06H_0DH 0FH_03H, 0FH_04H) and (L3 is present) |
0, 1 ≥ 0 and ≤ 17 0, 1 ≥ 0 and ≤ 25 |
0, 1 ≥ 0 and ≤ 17 0, 1 ≥ 0 and ≤ 17 |
Processor Family | DisplayFamily_DisplayModel/Other Signatures | Valid PMC Index Range | General-purpose Counters |
---|---|---|---|
Intel® Core™ Solo and Intel® Core™ Duo processors, Dual-core Intel® Xeon® processor LV |