Turbo ratios calculation formula

Tuesday February 18th, 2014By: CyrIng

The formula used in xfreq.c to compute the Intel Core i7 Processor ratios is the following :

Ratio = TR × { d(URC) ÷ d(TSC) } × OR

where :

TR the TurboRatio = d(UCC) ÷ d(URC)
OR the OperatingRatio = MSR(MSR_PLATFORM_INFO[15-8])
UCC the Unhalted Core Cycles = MSR(IA32_FIXED_CTR1)
URC the Unhalted Reference Cycles = MSR(IA32_FIXED_CTR2)
TSC the Time Stamp Counter = MSR(IA32_TIME_STAMP_COUNTER)

The d(N) Delta function substracts the N values sampled at time period T(t) and T(t-1)

illustration :
                                                                          (t-1)           (t)
Cycles:  .......... T0 .......... T1 .......... T2 .......... T3 .......... T4 .......... T5 .......... T6
OR    :  .......... 12 .......... 12 .......... 20 .......... 12 .......... 12 .......... 20 .......... 12
TSC   :  ........ 2660 ........ 5320 ........ 7980 ....... 10640 ....... 13300 ....... 15960 ......  18620
                                                                         [ d(TSC) = 2660   ]
URC   :  ......... 200 .... "halted" ......... 201 ......... 202 ....... 2862 ......... 5522 ..... "halted"
                                                                         [ d(URC) = 2660   ]
UCC   :  ......... 100 .... "halted" .... "halted" .... "halted" ....... 2760 ......... 4090 ..... "halted"
                                                                         [ d(UCC) = 1330   ]

Ratio at time (t) is :

Ratio = (2660 ÷ 2660) × (1330 ÷ 2660) × 20
Ratio = 10

With a BCLK clock set to 133 MHz, the Core Processor frequency is given by :

Freq = 133 x 10
Freq = 1330 Mhz

CyrIng