2013-03-12 7 views
5

인텔 내장 안내서에는 여러 가지 내장 CPU의 하단에 여러 CPUID의 성능을 나열하는 '대기 시간 및 처리량 정보'가 있습니다.인텔 내장 가이드에 나열된대로 CPUID를 확인하십시오.

CPUID(s)    Parameters Latency Throughput 
0F_03         13   4 
06_2A     xmm1, xmm2   5   2 
06_25/2C/1A/1E/1F/2E xmm1, xmm2   5   2 
06_17/1D    xmm1, xmm2   6   1 
06_0F     xmm1, xmm2   5   2 

을 지금 : 고유 _mm_hadd_pd에 대해 다음과 같이

는 예를 들어, 내장 함수 가이드의 테이블 보이는 내가 결정하려면 어떻게해야 내 CPU가 무슨 ID?

저는 쿠분투 12.04를 사용 중이며 sudo dmidecode -t 4과 함께 시도했으며 우분투 패키지의 작은 프로그램 cpuid을 사용해 보았습니다. 그러나 그 출력은별로 유용하지 않습니다.

위의 명령 출력 결과 중 어디에서나 내장 (Intrinsics) 안내서에 나열된 문자열을 찾을 수 없습니다.

답변

1

는 비트 위치에 지정된

대가족이 비트 27 내지 20 가족 코드와 함께 사용되는 위치 결정 CPUID 명령, 8 내지 11을 사용하여 그 정보를 얻을 수 나타내는 프로세서가 Intel386, Intel486, Pentium, Pentium Pro 또는 Pentium 4 프로세서 제품군에 속하는지 여부 P6 패밀리 프로세서에는 Pentium Pro 프로세서 아키텍처 을 기반으로하는 모든 프로세서가 포함되어 있으며 확장 된 패밀리는 00h 이고 패밀리 코드는 06h와 같습니다. 펜티엄 4 패밀리 프로세서에는 인텔 NetBurst® 마이크로 아키텍처 을 기반으로하는 모든 프로세서가 포함되어 있으며 확장 된 패밀리는 00h이고 패밀리 코드는 0Fh와 같습니다.

프로세서 가족 내의 프로세서 의 모델을 식별하기 사용되는 4~7하지만 비트에 지정된 모델 번호와 함께,도 19을 통해 16 뛰기 비트 positi 에 지정된 확장 모델.

자세한 내용은 Intel Processor Identification and the CPUID Instruction의 22 페이지를 참조하십시오.

실제 CPUID는 "family_model"입니다. 내가 할 내 컴퓨터에 대해

#include "stdio.h" 

int main() { 

    int ebx = 0, ecx = 0, edx = 0, eax = 1; 
    __asm__ ("cpuid": "=b" (ebx), "=c" (ecx), "=d" (edx), "=a" (eax):"a" (eax)); 

    int model = (eax & 0x0FF) >> 4; 
    int extended_model = (eax & 0xF0000) >> 12; 
    int family_code = (eax & 0xF00) >> 8; 
    int extended_family_code = (eax & 0xFF00000) >> 16; 

    printf ("%x %x %x %x \n", eax, ebx, ecx, edx); 
    printf ("CPUID: %02x %x\n", extended_family_code | family_code, extended_model | model); 
    return 0; 
} 

: 다음 코드는 일을해야

CPUID : 06_25

이 도움이 되었으면 좋겠합니다.

+0

그래, 그게 전부 야. 이제 Sandy Bridge에서 06_2A를 얻었습니다 :) –

+0

좋은 답변이지만, 확실하게 소스 코드를 컴파일하는 것보다 쉬운 방법이 있습니까? 아마도 거기에 어떤 프로그램이 있습니까? – crockeea