Fixed the Intel Sandy Bridge CPU core clock calculation.

This commit is contained in:
Michael Möller
2011-01-22 17:58:32 +00:00
parent b193ab9b43
commit 1915002fa9
3 changed files with 19 additions and 15 deletions

View File

@@ -255,14 +255,20 @@ namespace OpenHardwareMonitor.Hardware.CPU {
{
newBusClock =
TimeStampCounterFrequency / timeStampCounterMultiplier;
if (microarchitecture == Microarchitecture.Nehalem ||
microarchitecture == Microarchitecture.SandyBridge)
{
switch (microarchitecture) {
case Microarchitecture.Nehalem: {
uint multiplier = eax & 0xff;
coreClocks[i].Value = (float)(multiplier * newBusClock);
} else {
double multiplier = ((eax >> 8) & 0x1f) + 0.5 * ((eax >> 14) & 1);
} break;
case Microarchitecture.SandyBridge: {
uint multiplier = (eax >> 8) & 0xff;
coreClocks[i].Value = (float)(multiplier * newBusClock);
} break;
default: {
double multiplier =
((eax >> 8) & 0x1f) + 0.5 * ((eax >> 14) & 1);
coreClocks[i].Value = (float)(multiplier * newBusClock);
} break;
}
} else {
// if IA32_PERF_STATUS is not available, assume TSC frequency

View File

@@ -193,23 +193,21 @@ namespace OpenHardwareMonitor.Hardware.HDD {
if (attributes.Length > 0) {
r.AppendLine("Drive name: " + name);
r.AppendLine();
r.AppendFormat(CultureInfo.InvariantCulture, " {0}{1}{2}{3}{4}{5}",
r.AppendFormat(CultureInfo.InvariantCulture, " {0}{1}{2}{3}{4}",
("ID").PadRight(6),
("RawValue").PadRight(20),
("WorstValue").PadRight(12),
("AttrValue").PadRight(12),
("Name"),
Environment.NewLine);
foreach (SMART.DriveAttribute a in attributes) {
if (a.ID == SMART.AttributeID.None) continue;
string raw = BitConverter.ToString(a.RawValue);
r.AppendFormat(CultureInfo.InvariantCulture, " {0}{1}{2}{3}{4}{5}",
r.AppendFormat(CultureInfo.InvariantCulture, " {0}{1}{2}{3}{4}",
a.ID.ToString("d").PadRight(6),
raw.Replace("-", " ").PadRight(20),
a.WorstValue.ToString(CultureInfo.InvariantCulture).PadRight(12),
a.AttrValue.ToString(CultureInfo.InvariantCulture).PadRight(12),
a.ID,
Environment.NewLine);
}
r.AppendLine();

View File

@@ -37,5 +37,5 @@
using System.Reflection;
[assembly: AssemblyVersion("0.2.1.7")]
[assembly: AssemblyInformationalVersion("0.2.1.7 Alpha")]
[assembly: AssemblyVersion("0.2.1.9")]
[assembly: AssemblyInformationalVersion("0.2.1.9 Alpha")]