Hi, Here are the intial results I obtained for Turbo Mode using APERF/MPERF, I need some clarification on the results.
Remaining in P0, I sampled the ratio APERF and MPERF for different interval lengths. The computer I ran these experiments on does not have Turbo Mode feature, so the clock is expected to be in P0 throughout the experiment. I took 10 samples per interval length. I reset APERF/MPERF registers after every read. Interval Length = 1sec 1 ratio = 0.953074 2 ratio = 0.950529 3 ratio = 0.955870 4 ratio = 0.950900 5 ratio = 0.947259 6 ratio = 0.950799 7 ratio = 0.947093 8 ratio = 0.949705 9 ratio = 0.947057 10 ratio = 0.951851 Interval Length = 10sec 1 ratio = 0.852206 2 ratio = 0.852150 3 ratio = 0.846130 4 ratio = 0.825831 5 ratio = 0.763463 6 ratio = 0.751499 7 ratio = 0.782461 8 ratio = 0.772478 9 ratio = 0.750490 10 ratio = 0.855870 Ideally since we are in P0, I believe we expect the ratio = APERF/MPERF to be 1 (correct me if I am wrong). When the interval is 1sec we see that the ratio is around 0.95, on the other hand when interval is 10sec, the ratio is around 0.85 and during some sampling it goes down to 0.75 as well. I understand the ratio cannot be one, as we have to execute 2 instructions to read both regs (APERF MPERF) and these two cannot occur concurently. So practically, the ratio should be close to one (when in P0). But, I see values like 0.85 and 0.75, is this normal ? and this happens when the interval is large (10sec) in my example. By the way, I am taking care to make the 2 reads happens as quickly as possible, spl_high() rdmsr (APERF) rdmsr (MPERF) spl0() Please let me know of any suggestions/explanations possible. Thanks, Vinay
