In Multithread-Anwendungen sorgt die Verwendung eines Threads pro physischem Prozessorkern für optimale Leistung. Für eine genaue Bestimmung der Thread-Anzahl ist es wichtig, zwischen physischen Kernen und Hyper-Threading-Kernen zu unterscheiden. So erkennen Sie die Hyper-Threading-Unterstützung und ihren Aktivierungsstatus unter Windows, Mac und Linux:
Mithilfe der CPUID-Anweisung können wir Informationen über die Fähigkeiten und die Konfiguration des Prozessors sammeln. Nachfolgend wird ein schrittweiser Prozess beschrieben:
Physischer Kern Count:
Hier ist eine C-Programm, das diese Methode implementiert:
#include
#include
void cpuID(unsigned i, unsigned regs[4]);
int main() {
unsigned regs[4];
// Get CPUID information
cpuID(0x00, regs);
cpuID(0x01, regs);
// Determine vendor
char vendor[12];
((unsigned *)vendor)[0] = regs[1];
((unsigned *)vendor)[1] = regs[3];
((unsigned *)vendor)[2] = regs[2];
std::string cpuVendor = std::string(vendor, 12);
// Variables
unsigned logicalCores = (regs[1] >> 16) & 0xff;
unsigned cores = logicalCores;
bool hyperThreads = false;
// Detect hyper-threading
if (cpuVendor == "GenuineIntel") {
cpuID(0x04, regs);
cores = ((regs[0] >> 26) & 0x3f) 1;
} else if (cpuVendor == "AuthenticAMD") {
cpuID(0x80000008, regs);
cores = ((unsigned)(regs[2] & 0xff)) 1;
}
if (regs[3] & (1 Ausgabebeispiele:
Intel Core 2 Duo E8400 (kein Hyper-Threading):
Logical cores: 2
Cores: 2
Hyper-threading: false
Intel Core i7-7700K (mit Hyper-Threading):
Logical cores: 8
Cores: 4
hyper-threads: true
AMD Ryzen 5 2600X (mit SMT):
Logical cores: 12
Cores: 6
hyper-threads: true
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3