1. Compute and save the reference frequency.
Bits 15:8 of the PLATFORM_INFO MSR (0CEH)
are the “Base Operating Ratio.” Multiply by the
bus clock frequency (BCLK) to get the base
operating frequency. The standard bus clock
frequency is 133.33 MHz.
2. Enable fixed Architectural Performance
Monitor counters 1 and 2 in the Global
Performance Counter Control
IA32_PERF_GLOBAL_CTRL (38FH) and the
Fixed-Function Performance Counter Control
IA32_FIXED_CTR_CTL (38DH). Repeat this
step for each logical processor in the system.
Fixed Counter 1 (CPU_CLK_UNHALTED.CORE)
counts the number of core cycles while the
core is not in a halted state. Fixed Counter 2
(CPU_CLK_UNHALTED.REF) counts the number
of reference (base operating frequency) cycles
while the core is not in a halted state.
3. Configure an auto-rearming timer with 1-
second duration using an OS API.
4. Repeat steps 5 through 10 until the
application exits.
5. Wait for the 1-second timer to expire.
6. Read the Fixed-Function Performance Counter
1 IA32_FIXED_CTR1 (30AH) and the Fixed-
Function Performance Counter 2
IA32_FIXED_CTR2 (30BH). Repeat this step
for each logical processor in the system.
7. Compute the number of unhalted core cycles
and unhalted reference cycles that have
expired since the last iteration by subtracting
the previously sampled values from the
currently sampled values.
8. Compute the actual frequency value for each
logical processor as follows: Fcurrent = Base
Operating Frequency * (Unhalted Core Cycles /
Unhalted Ref Cycles)
9. Update with GUI to display the newly
computed values (for accurate display, choose
the maximum frequency of all logical
processors).
10. Save Unhalted Core Cycles and Unhalted Ref
Cycles for use in the next iteration.
สงสัยว่า อะไรคือ Bits 15:8 อะคะ
Base Operating
reference cycles คืออะไรคะ
แล้วก็ข้อ 2 IA32_PERF_GLOBAL_CTRL (38FH) พวกชื่อแปลก ๆ แบบนี้ คืออะไรคะ

นั่งอ่านมาตั้งแต่เมื่อวาน แต่ยากเกินจะเข้าใจจริงๆ T__T
ช่วยให้ความรู้ทีนะคะ ขอบคุณค่ะ