일부 Intel CPU에는 bit 28 in register EDX from CPUID으로 읽을 수있는 하이퍼 스레딩 기능이 있습니다. AMD CPU에는 하이퍼 스레딩이 없지만 일부는 modules which have two integer units and one floating point unit입니다. CPU에 모듈이 있는지 감지하기위한 CPUID를 통한 방법이 있습니까?AMD CPU에 모듈이 있는지 감지하십시오.
편집 : Jester의 답변을 기반으로 "컴퓨팅 유닛"(일명 모듈) 당 코어 수를 결정하기 위해 다음의 테스트되지 않은 함수 (AMD 프로세서에 액세스 할 필요가 없습니다)를 생각해 냈습니다.
// 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)
void coresPerComputeUnit() {
int abcd[4];
int cores = 1;
cpuid(abcd,0x80000000);
if(abcd[0]<0x8000001E) return; // Fn8000_001E not available
cpuid(abcd,0x8000001E);
cores += (abcd[1] & 0xff00) >> 8; //ebx bit 15:8 CoresPerComputeUnit
}
http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/42301_15h_Mod_00h-0Fh_BKDG1.pdf
질문에 대답하기에 충분하지 않지만 [AMD 아키텍처 프로그래머 매뉴얼 볼륨 3] 섹션 E5 (다중 코어 계산) (http://amd-dev.wpengine.netdna-cdn.com/wordpress /media/2008/10/24594_APM_v3.pdf)에는 프로세서의 코어 수를 찾는 방법이 나와 있습니다. [Bulldozer는 마이크로 아키텍처입니다] (http://en.wikipedia.org/wiki/Bulldozer_%28microarchitecture%29) 아키텍처 자체가 아니라 AMD 프로세서가 어떻게 생겼는지를 확인하기 위해 할 수있는 최선의 방법입니다 그것은 불도저를 사용하고 있습니다. (필자가 링크 한 설명서에는 "Bulldozer"의 인스턴스가 없습니다.) – bouteillebleu