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


Reply via email to