我做了一个函数(见下文),它检测 CPU 内核是否具有超线程。当我在 BIOS 中禁用超线程时,CPUID 仍然报告内核具有超线程。我怎样才能正确地确定是否启用了超线程?
// input: eax = functionnumber, ecx = 0
// output: eax = output[0], ebx = output[1], ecx = output[2], edx = output[3]
//static inline void cpuid (int output[4], int functionnumber)
bool hasHyperThreading() {
int abcd[4];
cpuid(abcd,1);
return (1<<28) & abcd[3];
}