Hardware/CPU/IntelCPU.cs
changeset 201 958e9fe8afdf
parent 195 0ee888c485d5
child 219 ce04404774d6
     1.1 --- a/Hardware/CPU/IntelCPU.cs	Mon Sep 27 23:48:41 2010 +0000
     1.2 +++ b/Hardware/CPU/IntelCPU.cs	Thu Sep 30 16:51:09 2010 +0000
     1.3 @@ -145,7 +145,7 @@
     1.4        for (int i = 0; i < coreClocks.Length; i++) {
     1.5          coreClocks[i] =
     1.6            new Sensor(CoreString(i), i + 1, SensorType.Clock, this, settings);
     1.7 -        if (hasTSC)
     1.8 +        if (HasTimeStampCounter)
     1.9            ActivateSensor(coreClocks[i]);
    1.10        }
    1.11  
    1.12 @@ -182,7 +182,7 @@
    1.13          }
    1.14        }
    1.15  
    1.16 -      if (hasTSC) {
    1.17 +      if (HasTimeStampCounter) {
    1.18          double newBusClock = 0;
    1.19          uint eax, edx;
    1.20          for (int i = 0; i < coreClocks.Length; i++) {
    1.21 @@ -191,9 +191,10 @@
    1.22              (UIntPtr)(1L << cpuid[i][0].Thread))) {
    1.23              if (maxNehalemMultiplier > 0) { // Core i3, i5, i7
    1.24                uint nehalemMultiplier = eax & 0xff;
    1.25 -              coreClocks[i].Value =
    1.26 -                (float)(nehalemMultiplier * MaxClock / maxNehalemMultiplier);
    1.27 -              newBusClock = (float)(MaxClock / maxNehalemMultiplier);
    1.28 +              coreClocks[i].Value =(float)(nehalemMultiplier * 
    1.29 +                TimeStampCounterFrequency / maxNehalemMultiplier);
    1.30 +              newBusClock = 
    1.31 +                (float)(TimeStampCounterFrequency / maxNehalemMultiplier);
    1.32              } else { // Core 2
    1.33                uint multiplier = (eax >> 8) & 0x1f;
    1.34                uint maxMultiplier = (edx >> 8) & 0x1f;
    1.35 @@ -201,13 +202,15 @@
    1.36                uint factor = (multiplier << 1) | ((eax >> 14) & 1);
    1.37                uint maxFactor = (maxMultiplier << 1) | ((edx >> 14) & 1);
    1.38                if (maxFactor > 0) {
    1.39 -                coreClocks[i].Value = (float)(factor * MaxClock / maxFactor);
    1.40 -                newBusClock = (float)(2 * MaxClock / maxFactor);
    1.41 +                coreClocks[i].Value = 
    1.42 +                  (float)(factor * TimeStampCounterFrequency / maxFactor);
    1.43 +                newBusClock = 
    1.44 +                  (float)(2 * TimeStampCounterFrequency / maxFactor);
    1.45                }
    1.46              }
    1.47            } else { // Intel Pentium 4
    1.48 -            // if IA32_PERF_STATUS is not available, assume maxClock
    1.49 -            coreClocks[i].Value = (float)MaxClock;
    1.50 +            // if IA32_PERF_STATUS is not available, assume TSC frequency
    1.51 +            coreClocks[i].Value = (float)TimeStampCounterFrequency;
    1.52            }
    1.53          }
    1.54          if (newBusClock > 0) {