"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Windows, Mac 및 Linux에서 하이퍼스레딩이 활성화되어 있는지 확인하는 방법은 무엇입니까?

Windows, Mac 및 Linux에서 하이퍼스레딩이 활성화되어 있는지 확인하는 방법은 무엇입니까?

2024년 11월 23일에 게시됨
검색:375

How to Determine if Hyper-Threading is Enabled on Windows, Mac, and Linux?

활성화된 하이퍼스레딩 존재 감지

멀티 스레드 애플리케이션에서 물리적 프로세서 코어당 하나의 스레드를 활용하면 최적의 성능이 보장됩니다. 정확한 스레드 수를 결정하려면 물리적 코어와 하이퍼스레딩 코어를 구별하는 것이 중요합니다. Windows, Mac, Linux에서 하이퍼스레딩 지원과 활성화 상태를 감지하는 방법은 다음과 같습니다.

CPUID 명령어

CPUID 명령어를 활용하면 프로세서의 기능과 구성에 대한 정보를 수집할 수 있습니다. 단계별 프로세스는 다음과 같습니다.

  1. 공급업체 감지: CPUID 기능 0을 실행하여 CPU 공급업체(예: Intel 또는 AMD)를 식별합니다.
  2. 하이퍼스레딩 비트 검사: CPUID 기능 1을 실행하고 EDX 레지스터의 비트 28을 확인합니다. 이 비트는 하이퍼스레딩 지원을 나타냅니다.
  3. 논리 코어 수: CPUID 기능 1의 EBX 비트[23:16]에서 CPU당 논리 코어 수를 검색합니다.
  4. 물리적 코어 Count:

    • Intel CPUs: 공급업체가 'GenuineIntel'인 경우 CPUID 함수 4를 사용하여 비트를 추출하여 물리적 코어 수에 1을 더한 값을 얻습니다. [31:26 ] EAX 레지스터.
    • AMD CPUs: 벤더가 'AuthenticAMD'인 경우 CPUID를 실행합니다. 0x80000008 함수를 사용하고 ECX 레지스터의 비트 [7:0]을 사용하여 물리적 코어 수에 1을 더한 값을 도출합니다.

구현

여기 C 프로그램이 있습니다. 이 메소드를 구현하는 코드:

#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 

출력 예:

Intel Core 2 Duo E8400(하이퍼스레딩 없음):

Logical cores: 2
Cores: 2
Hyper-threading: false

Intel Core i7-7700K(하이퍼스레딩 포함):

 Logical cores: 8
    Cores: 4
hyper-threads: true

AMD Ryzen 5 2600X(SMT 포함):

 Logical cores: 12
    Cores: 6
hyper-threads: true
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3