취미 OS의 CPU 감지 및 일반 환경 감지 코드 작업 중입니다. CPUID를 여러 번 호출해야하는 경우가 있습니까? 즉, 시스템에 여러 개의 코어가있는 경우 각 코어에서 CPUID를 호출해야합니까? NUMA와 동일합니다.다중 코어의 CPUID/NUMA
AMD 및 Intel CPUID 설명서는이 점에서 분명하지 않습니다. osdev 위키에서 호출하는 CPUID가 Detecting CPU Topology이라고 언급되어 있지만, CPUID를 호출해야하는 횟수와 횟수에 대한 정보가 명확하지 않았습니다.
CPUID가 비정상적으로 작용할 수있는 상황 중 하나가 동일한 칩에 CPU와 GPU가 모두 포함 된 AMD Fusion이라고 가정합니다. 자세한 내용은 설명서를 살펴 봐야합니다. 그 외에는 내부 CPU 코어가 다른 코어와 다른 CPUID를 표시하는 이유를 알지 못합니다. – Polynomial
주어진 답변 외에 CPUID를 여러 번 호출하는 또 다른 이유는 성능 측정을 위해 rdtsc 명령을 사용할 때입니다. 일반적으로 cpuid가 '직렬화'명령이고 파이프 라이닝을 방지하기 때문에 cpuid를 사용하기 전에 cpuid를 사용합니다. 그러나 cpuid는 (rdtsc의 이전 인텔 매뉴얼에 따라) 호출 된 처음 몇 번 실행하는 데 오랜 시간이 걸릴 수 있습니다. 시작할 때 몇 번 호출하여 속도가 빨라 졌는지 확인한 다음 모든 rdtsc 호출 전에 사용하십시오. –