From 1915002fa919a928f9bd4bba70debcef944a42f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=B6ller?= Date: Sat, 22 Jan 2011 17:58:32 +0000 Subject: [PATCH] Fixed the Intel Sandy Bridge CPU core clock calculation. --- Hardware/CPU/IntelCPU.cs | 24 +++++++++++++++--------- Hardware/HDD/HDDGroup.cs | 6 ++---- Properties/AssemblyVersion.cs | 4 ++-- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/Hardware/CPU/IntelCPU.cs b/Hardware/CPU/IntelCPU.cs index 48aecb0..ae833fa 100644 --- a/Hardware/CPU/IntelCPU.cs +++ b/Hardware/CPU/IntelCPU.cs @@ -255,15 +255,21 @@ namespace OpenHardwareMonitor.Hardware.CPU { { newBusClock = TimeStampCounterFrequency / timeStampCounterMultiplier; - if (microarchitecture == Microarchitecture.Nehalem || - microarchitecture == Microarchitecture.SandyBridge) - { - uint multiplier = eax & 0xff; - coreClocks[i].Value = (float)(multiplier * newBusClock); - } else { - double multiplier = ((eax >> 8) & 0x1f) + 0.5 * ((eax >> 14) & 1); - coreClocks[i].Value = (float)(multiplier * newBusClock); - } + switch (microarchitecture) { + case Microarchitecture.Nehalem: { + uint multiplier = eax & 0xff; + coreClocks[i].Value = (float)(multiplier * newBusClock); + } 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 coreClocks[i].Value = (float)TimeStampCounterFrequency; diff --git a/Hardware/HDD/HDDGroup.cs b/Hardware/HDD/HDDGroup.cs index f274fc9..46b9eac 100644 --- a/Hardware/HDD/HDDGroup.cs +++ b/Hardware/HDD/HDDGroup.cs @@ -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(); diff --git a/Properties/AssemblyVersion.cs b/Properties/AssemblyVersion.cs index a345371..11e4310 100644 --- a/Properties/AssemblyVersion.cs +++ b/Properties/AssemblyVersion.cs @@ -37,5 +37,5 @@ using System.Reflection; -[assembly: AssemblyVersion("0.2.1.7")] -[assembly: AssemblyInformationalVersion("0.2.1.7 Alpha")] \ No newline at end of file +[assembly: AssemblyVersion("0.2.1.9")] +[assembly: AssemblyInformationalVersion("0.2.1.9 Alpha")] \ No newline at end of file