En aplicaciones de subprocesos múltiples, la utilización de un subproceso por núcleo de procesador físico garantiza un rendimiento óptimo. Para una determinación precisa del número de subprocesos, es esencial distinguir entre núcleos físicos y de hiperprocesamiento. A continuación se explica cómo detectar la compatibilidad con Hyper-Threading y su estado de activación en Windows, Mac y Linux:
Utilizando la instrucción CPUID, podemos recopilar información sobre las capacidades y la configuración del procesador. A continuación se describe un proceso paso a paso:
Recuento de núcleos físicos:
Aquí hay un programa en C que implementa este método:
#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 Ejemplos de salida:
Intel Core 2 Duo E8400 (sin hyper-threading):
Logical cores: 2
Cores: 2
Hyper-threading: false
Intel Core i7-7700K (con hyper-threading):
Logical cores: 8
Cores: 4
hyper-threads: true
AMD Ryzen 5 2600X (con SMT):
Logical cores: 12
Cores: 6
hyper-threads: true
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3