맨위로가기

CPUID

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

CPUID는 CPU의 제조사, 모델, 기능 등을 식별하는 데 사용되는 명령어이다. x86 아키텍처에서 CPUID 명령어가 처음 도입되기 전에는, 프로그래머들이 CPU의 미세한 동작 차이를 이용하여 CPU를 식별하는 난해한 코드를 작성해야 했다. x86 외의 아키텍처, 예를 들어 ARM, MIPS, PowerPC 등에서는 CPUID와 유사한 정보를 얻기 위해 다른 방식의 레지스터를 사용한다. CPUID 명령은 어셈블리어에서 EAX 레지스터를 통해 매개변수를 전달받으며, 고급 언어에서도 래퍼 함수나 인라인 어셈블리를 통해 접근할 수 있다.

더 읽어볼만한 페이지

  • 기계어 - 브랜치 (컴퓨터 과학)
    프로그램 실행 흐름을 제어하는 명령어인 브랜치는 점프, 호출, 반환 명령어로 나뉘며, CPU 플래그 레지스터와 주소 지정 방식을 활용하여 코드 분기 및 서브루틴 호출/반환을 수행하지만, 파이프라인 CPU에서 성능 저하를 유발하여 분기 예측 등의 기술로 해결합니다.
  • 기계어 - 주소 지정 방식
  • X86 아키텍처 - 물리 주소 확장
    물리 주소 확장(PAE)은 x86 아키텍처에서 32비트 주소를 36비트 이상으로 확장하여 CPU가 4GB 초과 물리 메모리에 접근하도록 하는 기술로, 페이지 테이블 확장 및 추가 페이지 테이블을 통해 최대 64GB 메모리를 지원하며 AMD64 아키텍처에서 가상 주소 공간 확장에 사용되고 운영 체제, 칩셋, 마더보드의 지원이 필요하며 CPUID 플래그로 지원 여부를 확인한다.
  • X86 아키텍처 - X86 가상화
    X86 가상화는 x86 아키텍처 기반 시스템에서 가상 머신을 구현하는 기술로, 소프트웨어 기반 가상화와 하드웨어 지원 가상화로 나뉘며, CPU 제조사의 가상화 확장 기술을 활용하여 가상 머신의 성능을 향상시킨다.
  • 빈 문단이 포함된 문서 - 광주고등법원
    광주고등법원은 1952년에 설치되어 광주광역시, 전라남도, 전북특별자치도, 제주특별자치도를 관할하며, 제주와 전주에 원외재판부를 두고 있다.
  • 빈 문단이 포함된 문서 - 1502년
    1502년은 율리우스력으로 수요일에 시작하는 평년으로, 이사벨 1세의 이슬람교 금지 칙령 발표, 콜럼버스의 중앙아메리카 해안 탐험, 바스쿠 다 가마의 인도 상관 설립, 크리미아 칸국의 킵차크 칸국 멸망, 비텐베르크 대학교 설립, 최초의 아프리카 노예들의 신대륙 도착 등의 주요 사건이 있었다.
CPUID
CPUID
종류명령어 집합
구분x86 명령어
설계사인텔
세부 정보
CPUIDCPU 식별 확장 및 기능 발견
설명CPUID 명령어는 x86 아키텍처에서 프로세서의 식별 및 기능 정보를 얻기 위해 사용되는 명령어이다. 이 명령어는 프로세서의 벤더, 모델, 스테핑 정보뿐만 아니라 지원하는 기능 집합(예: SSE, AVX)과 캐시 정보 등을 제공한다.
작동 방식CPUID 명령어는 EAX 레지스터에 특정 값을 넣고 실행하면, 프로세서가 해당 값에 대응하는 정보를 EDX, ECX, EBX, EAX 레지스터에 반환하는 방식으로 작동한다. 예를 들어, EAX = 0을 넣고 CPUID를 실행하면 프로세서 벤더 문자열이 반환된다.
사용 예시운영체제나 특정 소프트웨어는 CPUID 명령어를 사용하여 프로세서의 기능을 확인하고, 이에 따라 최적화된 코드를 실행하거나 특정 기능을 사용할 수 있는지 판단한다. 예를 들어, AVX 명령어를 사용하기 전에 CPUID를 통해 프로세서가 AVX를 지원하는지 확인하는 과정을 거칠 수 있다.
역사1993년 인텔 펜티엄 프로세서에 처음 도입
이후 AMD 및 다른 x86 프로세서 제조업체에서도 구현
주요 정보
EAX = 0벤더 ID 문자열 (예: "GenuineIntel" 또는 "AuthenticAMD")
EAX = 1프로세서 모델, 스테핑, 기능 플래그
EAX = 4캐시 정보
EAX = 7확장 기능 플래그 (예: AVX2, BMI2)
EAX = 0Bh토폴로지 정보 (코어, 스레드 정보)

2. 역사

`CPUID` 명령어가 널리 사용되기 전에는 프로그래머들이 프로세서 제조사와 모델을 파악하기 위해 CPU 동작의 미세한 차이를 이용하는 복잡한 기계어 코드를 작성해야 했다.[2][3][34][4] 80386 프로세서부터는 EDX 레지스터를 통해 리비전을 확인할 수 있었지만, 이는 재부팅 후에만 가능했고 응용 프로그램에서 이 값을 읽을 수 있는 표준적인 방법은 없었다. x86 계열 외의 아키텍처에서는 개발자들이 CPU 설계 차이를 파악하기 위해 명령어 타이밍이나 CPU 오류 발생과 관련된 복잡한 과정을 사용해야 하는 경우가 많았다. `CPUID` 명령어는 x86 아키텍처에 특화되어 있지만, ARM과 같은 다른 아키텍처에서도 x86의 `CPUID`와 유사한 정보를 얻기 위해 규정된 방식으로 읽을 수 있는 온칩 레지스터를 제공하는 경우가 많다.

2. 1. x86 아키텍처에서의 CPUID

`CPUID` 명령어가 일반에 사용되기 전에는 프로그래머들은 프로세서의 제조사와 모델을 파악하기 위해 CPU 동작의 미세한 차이를 이용하는 난해한 기계어를 작성하곤 했다.[2][3][34][4] 80386 프로세서가 도입되면서, 리셋 시 EDX 레지스터는 리비전을 나타냈지만, 이는 리셋 후에만 읽을 수 있었고, 응용 프로그램이 해당 값을 읽을 수 있는 표준적인 방법은 없었다.

x86 계열 이외의 아키텍처에서는 개발자들이 CPU 설계의 차이를 파악하기 위해 (명령어 타이밍이나 CPU 오류 트리거와 관련된) 난해한 프로세스를 사용해야 하는 경우가 많았다.

`CPUID` 명령어는 x86 아키텍처에 특화되어 있지만, ARM과 같은 다른 아키텍처는 x86 `CPUID` 명령어와 동일한 종류의 정보를 얻기 위해 규정된 방식으로 읽을 수 있는 온칩 레지스터를 제공하는 경우가 많다. `CPUID` 명령은 일부 80486 및 그 이후 프로세서에서 사용할 수 있으므로, 경우에 따라 `CPUID` 명령이 존재하는 프로세서인지 여부를 사전에 판별할 필요가 생긴다. 80486 이상의 프로세서임을 확인할 수 있는 경우, `CPUID` 명령의 존재를 확인하기 위한 플래그로 32비트 플래그 레지스터(EFLAGS)의 제21비트가 새로 마련되었으므로, 이 비트가 "변경 가능"하면 `CPUID` 명령을 사용할 수 있다고 판단할 수 있다.

2. 2. x86 외 아키텍처에서의 CPU 식별

x86 계열 이외의 아키텍처에서는 개발자들이 CPU 설계의 차이를 파악하기 위해 (명령어 타이밍이나 CPU 오류 트리거와 관련된) 난해한 프로세스를 사용해야 하는 경우가 많다.[2]

예를 들어, CPUID 명령어가 전혀 없는 모토로라 680x0 계열에서는 특정 명령어에 특권이 필요했다. 이를 통해 다양한 CPU 제품군을 구별할 수 있었다. 모토로라 68010에서는 ''SR에서 MOVE'' 명령어가 특권을 가지게 되었다. 이 주목할 만한 명령어 (및 상태 머신) 변경을 통해 68010은 Popek과 Goldberg의 가상화 요구 사항을 충족할 수 있었다. 68000은 비특권 ''SR에서 MOVE''를 제공했기 때문에, 두 개의 다른 CPU는 CPU 오류 조건이 트리거됨으로써 구별될 수 있었다.[3]

CPUID 명령어는 x86 아키텍처에 특화되어 있지만, ARM과 같은 다른 아키텍처는 x86 CPUID 명령어와 동일한 종류의 정보를 얻기 위해 규정된 방식으로 읽을 수 있는 온칩 레지스터를 제공하는 경우가 많다.[34]

3. CPUID 호출

어셈블리어에서 CPUID 명령어는 EAX 레지스터를 사용하므로 별도의 매개변수가 필요 없다. EAX 레지스터에는 어떤 정보를 반환할지를 지정하는 값을 설정해야 한다. CPUID는 EAX = 0으로 먼저 호출되어야 하는데, 이는 CPU가 지원하는 가장 높은 호출 변수를 반환하기 때문이다. 확장 정보를 가져오려면 EAX의 비트 31을 설정하여 CPUID를 호출해야 한다. 가장 높은 확장 명령 호출 변수를 확인하려면 EAX = 80000000h로 CPUID를 호출하면 된다.[5]

CPUID 연산 코드는 0F A2이다.

최근 추가된 일부 리프(leaf)에는 CPUID를 호출하기 전에 ECX 레지스터를 통해 선택되는 서브 리프도 존재한다.

3. 1. CPUID 명령 사용 가능 여부 판별 (일본어 문서 내용)

CPUID 명령은 일부 80486 및 그 이후 프로세서에서 사용할 수 있으므로, CPUID 명령이 존재하는 프로세서인지 여부를 사전에 판별해야 할 필요가 있는 경우가 있다. 80486 이전의 프로세서를 식별해야 하는 경우에는, 각 프로세서의 미묘한 동작 차이를 이용하는 난해한 기술을 구사해야 했다.

80486 이상의 프로세서임을 확인할 수 있는 경우, CPUID 명령의 존재를 확인하기 위한 플래그로 32비트 플래그 레지스터(EFLAGS)의 제21비트가 새로 마련되었으므로, 이 비트가 "변경 가능"하면 CPUID 명령을 사용할 수 있다고 판단할 수 있다. EFLAGS는 80386 이상의 프로세서라면 액세스할 수 있으므로, 80286 이하의 프로세서를 판별·제외할 필요는 있지만, CPUID 명령의 유무만을 조사하고 싶다면 실질적으로 80386 이상임을 확인할 수 있다면 이 플래그를 조사할 수 있다.

4. 고급 언어에서의 CPUID 사용

CPUID 명령어는 여러 고급 프로그래밍 언어에서 쉽게 사용할 수 있다.

C/C++에서는 GCC, MSVC, Borland/Embarcadero C 컴파일러 등에서 CPUID를 활용할 수 있다. GCC는 `` 헤더를 통해 `__cpuid` 매크로나 `__get_cpuid` 함수를 제공하고, MSVC는 내장 함수 `__cpuid()`를 제공한다.[184]

.NET 5 이상에서는 `System.Runtime.Intrinsics.X86.X86base.CpuId` 메서드를 통해 CPUID 기능을 사용할 수 있다. 또한, 많은 인터프리터 언어나 스크립팅 언어는 FFI 라이브러리를 통해 CPUID를 사용한다.

4. 1. 인라인 어셈블리

CPUID 명령어는 다양한 언어에서 접근할 수 있다. 다음은 C++ (gcc)를 사용하여 cpuid가 반환하는 처음 다섯 개의 값을 출력하는 코드이다.



#include

int main(int argc, char **argv) {

int b;

for (int a = 0; a < 5; a++) {

asm ( "mov %1, %%eax; " // a → eax

"cpuid;"

"mov %%eax, %0;" // eeax → b

:"=r"(b) /* 출력 */

:"r"(a) /* 입력 */

:"%eax" /* 레지스터 표시 */

);

std::cout << "코드 " << a << "은(는) 다음을 제공한다: " << b << std::endl;

}

return 0;

}



마이크로소프트 비주얼 C 컴파일러는 `__cpuid()` 함수를 내장하고 있어, 인라인 어셈블리를 사용하지 않고도 cpuid 명령을 추가할 수 있다. x64 버전의 MSVC는 인라인 어셈블리를 허용하지 않으므로 이 방법이 더 편리하다. MSVC에서는 다음과 같이 사용한다.



#include

#include

int main(int argc, char **argv) {

int b[4];

for (int a = 0; a < 5; a++) {

__cpuid(b,a);

std::cout << "코드 " << a << "은(는) 다음을 제공한다: " << b[0] << std::endl;

}

return 0;

}



다음은 gcc용 C 코드로, cpuid가 반환하는 처음 5개의 값을 출력한다.

```c

#include

#include

int main()

{

unsigned int i, eax, ebx, ecx, edx;

for (i = 0; i < 5; i++) {

__cpuid(i, eax, ebx, ecx, edx);

printf ("InfoType %x\nEAX: %x\nEBX: %x\nECX: %x\nEDX: %x\n", i, eax, ebx, ecx, edx);

}

return 0;

}

```

MSVC 및 Borland/Embarcadero C 컴파일러(bcc32) 스타일의 인라인 어셈블리에서는 파괴 정보가 명령어에 암시적으로 포함된다.

```c

#include

int main()

{

unsigned int a, b, c, d, i = 0;

__asm {

/* Do the call. */

mov EAX, i;

cpuid;

/* Save results. */

mov a, EAX;

mov b, EBX;

mov c, ECX;

mov d, EDX;

}

printf ("InfoType %x\nEAX: %x\nEBX: %x\nECX: %x\nEDX: %x\n", i, a, b, c, d);

return 0;

}

```

어느 버전이든 일반 어셈블리어로 작성하는 경우, 프로그래머는 EAX, EBX, ECX, EDX 레지스터의 값을 계속 사용하려면 결과를 다른 곳에 수동으로 저장해야 한다.

4. 2. 래퍼 함수

CPUID는 다양한 프로그래밍 언어에서 래퍼 함수를 통해 쉽게 접근할 수 있다.

C++ (GCC)에서는 다음과 같은 코드로 `cpuid`가 반환하는 처음 다섯 개의 값을 출력할 수 있다.

```cpp

#include

int main(int argc, char **argv) {

int b;

for (int a = 0; a < 5; a++) {

asm ( "mov %1, %%eax; " // a → eax

"cpuid;"

"mov %%eax, %0;" // eeax → b

:"=r"(b) /* 출력 */

:"r"(a) /* 입력 */

:"%eax" /* 레지스터 표시 */

);

std::cout << "코드 " << a << "은(는) 다음을 제공한다: " << b << std::endl;

}

return 0;

}

```

MSVC는 `__cpuid()` 함수를 내장하고 있어, 인라인 어셈블리 없이 `cpuid` 명령을 사용할 수 있다. 특히 x64 버전의 MSVC는 인라인 어셈블리를 허용하지 않으므로 더욱 편리하다.

```cpp

#include

#include

int main(int argc, char **argv) {

int b[4];

for (int a = 0; a < 5; a++) {

__cpuid(b,a);

std::cout << "코드 " << a << "은(는) 다음을 제공한다: " << b[0] << std::endl;

}

return 0;

}

```

GCC는 `cpuid.h` 헤더 파일을 통해 `__cpuid` 매크로를 제공한다. 이 매크로는 인라인 어셈블리로 확장된다.

```c

#include

#include

int main()

{

unsigned int eax, ebx, ecx, edx;

__cpuid(0 /* 공급업체 문자열 */, eax, ebx, ecx, edx);

printf("EAX: %x\nEBX: %x\nECX: %x\nEDX: %x\n", eax, ebx, ecx, edx);

return 0;

}

```

CPU에 없는 확장 기능을 요청할 경우를 대비하여, `cpuid.h`는 `__get_cpuid` 함수를 제공한다. 이 함수는 확장 기능을 확인하고 안전 검사를 수행하며, 포인터를 사용하여 출력 값을 전달한다.

```c

#include

#include

int main()

{

unsigned int eax, ebx, ecx, edx;

/* 0x81234567은 존재하지 않지만 존재한다고 가정합니다. */

if (!__get_cpuid (0x81234567, &eax, &ebx, &ecx, &edx)) {

printf("경고: CPUID 요청 0x81234567이 유효하지 않습니다!\n");

return 1;

}

printf("EAX: %x\nEBX: %x\nECX: %x\nEDX: %x\n", eax, ebx, ecx, edx);

return 0;

}

```

`__get_cpuid` 함수는 올바른 요청에 대해 0이 아닌 값을, 실패 시 0을 반환한다.[184]

MSVC에서 인라인 어셈블리 없이 CPUID를 사용하는 또 다른 예시는 다음과 같다.

```cpp

#include

#ifdef __MSVC__

#include

#endif

int main()

{

unsigned int regs[4];

int i;

for (i = 0; i < 4; i++) {

__cpuid(regs, i);

printf("코드 %d는 %d, %d, %d, %d를 제공합니다", regs[0], regs[1], regs[2], regs[3]);

}

return 0;

}

```

FFI 라이브러리를 통해 CPUID를 사용하는 인터프리터 언어나 스크립팅 언어도 많다. [https://web.archive.org/web/20150429190703/http://www.cstrahan.com/posts/pure-ruby-cpuid-via-ffi.html Ruby FFI 모듈을 사용한 구현 예시]에서는 어셈블리 언어를 실행하여 CPUID 연산 코드를 사용하는 방법을 보여준다.

.NET 5 이상 버전은 `System.Runtime.Intrinsics.X86.X86base.CpuId` 메서드를 제공한다. 다음 C# 코드는 CPUID 명령을 지원하는 경우 프로세서 브랜드를 출력한다.

```c#

using System.Runtime.InteropServices;

using System.Runtime.Intrinsics.X86;

using System.Text;

namespace X86CPUID {

class CPUBrandString {

public static void Main(string[] args) {

if (!X86Base.IsSupported) {

Console.WriteLine("CPU가 CPUID 명령을 지원하지 않습니다.");

} else {

Span raw = stackalloc int[12];

(raw[0], raw[1], raw[2], raw[3]) = X86Base.CpuId(unchecked((int)0x80000002), 0);

(raw[4], raw[5], raw[6], raw[7]) = X86Base.CpuId(unchecked((int)0x80000003), 0);

(raw[8], raw[9], raw[10], raw[11]) = X86Base.CpuId(unchecked((int)0x80000004), 0);

Span bytes = MemoryMarshal.AsBytes(raw);

string brand = Encoding.UTF8.GetString(bytes).Trim();

Console.WriteLine(brand);

}

}

}

}

4. 3. 기타 언어

CPUID가 반환하는 처음 다섯 개의 값을 출력하는 C++ (gcc) 코드는 다음과 같다.



#include

int main(int argc, char **argv) {

int b;

for (int a = 0; a < 5; a++) {

asm ( "mov %1, %%eax; " // a → eax

"cpuid;"

"mov %%eax, %0;" // eax → b

:"=r"(b) /* 출력 */

:"r"(a) /* 입력 */

:"%eax" /* 레지스터 표시 */

);

std::cout << "코드 " << a << "은(는) 다음을 제공한다: " << b << std::endl;

}

return 0;

}



마이크로소프트 비주얼 C 컴파일러는 `__cpuid()` 함수를 내장하고 있으므로, 인라인 어셈블리를 사용하지 않고도 CPUID 명령을 추가할 수 있다. x64 버전의 MSVC가 인라인 어셈블리를 허용하지 않기 때문에 유용하다. MSVC의 경우 다음과 같이 사용한다.



#include

#include

int main(int argc, char **argv) {

int b[4];

for (int a = 0; a < 5; a++) {

__cpuid(b,a);

std::cout << "코드 " << a << "은(는) 다음을 제공한다: " << b[0] << std::endl;

}

return 0;

}


5. x86 외 CPU 아키텍처에서의 CPU 정보

ARM 아키텍처예외 레벨 EL1 이상이 필요한 `CPUID` 보조 프로세서 레지스터를 가지고 있다.[185]

IBM System z 메인프레임 프로세서는 1983년 IBM 4381부터 프로세서 ID를 쿼리하기 위한 ''CPU ID 저장''(STIDP) 명령어를 가지고 있으며,[186][187] 설치된 하드웨어 기능을 나열하는 ''확장 기능 목록 저장''(STFLE) 명령어도 가지고 있다.[187]

MIPS32/64 아키텍처는 필수 ''프로세서 식별''(PrId) 및 일련의 데이지 체인 ''구성 레지스터''를 정의한다.[188]

PowerPC 프로세서는 사용 중인 프로세서 모델을 식별하는 32비트 읽기 전용 ''프로세서 버전 레지스터''(PVR)를 가지고 있다. 이 명령어는 슈퍼바이저 액세스 레벨이 필요하다.[189]

DSP 및 트랜스퓨터와 유사한 칩 제품군은 설계에 많은 변형이 있음에도 불구하고 눈에 띄는 방식으로 이 명령어를 채택하지 않았다.

참조

[1] 웹사이트 Intel 64 and IA-32 Architectures Software Developer's Manual http://www.intel.com[...] Intel.com 2013-04-11
[2] 웹사이트 Detecting Intel Processors - Knowing the generation of a system CPU http://www.rcollins.[...] Rcollins.org 2013-04-11
[3] 웹사이트 LXR linux-old/arch/i386/kernel/head.S https://archive.toda[...] Lxr.linux.no 2013-04-11
[4] 간행물 TMi0SDGL https://www.sac.sk/d[...] B-CoolWare 2000-06
[5] 웹사이트 CPUID, EAX=4 - Strange results (Solved) https://software.int[...] Software.intel.com 2014-07-10
[6] 간행물 First encounter with "GenuineIotel" (o after I, instead of n)
[7] 웹사이트 GenuineIotel CPUID dump for Intel Xeon E3-1231 http://users.atw.hu/[...]
[8] 간행물 CPUID dump for RDC IAD 100 http://users.atw.hu/[...] instlatx64 2022-12-22
[9] 간행물 Inxi issue 197: Elbrus CPU support data and implementation https://codeberg.org[...] smxi 2023-10-23
[10] 간행물 Identification of x86 CPUs with CPUID support http://grafi.ii.pw.e[...] 1997-05-05
[11] 간행물 CPUDET.PAS v1.61 https://groups.googl[...] 1996-10-23
[12] 웹사이트 ao486 CPUID instruction (in commit 43a2004) https://github.com/M[...] 2023-12-04
[13] 웹사이트 Update cpuid. · MiSTer-devel/ao486_MiSTer@82f5014 https://github.com/M[...] 2023-12-04
[14] 웹사이트 ao486 CPUID instruction https://github.com/M[...] 2023-12-04
[15] 웹사이트 v586: 586 compatible soft core for FPGA https://github.com/v[...] 2021-12-06
[16] 웹사이트 Steam Hardware & Software Survey https://store.steamp[...] 2022-07-26
[17] 웹사이트 Fun with Timers and cpuid - by Jim Cownie - CPU fun https://cpufun.subst[...] 2021-03-03
[18] 간행물 tests/lx86/proc/cpuinfo http://git.annexia.o[...] virt-what source tree
[19] 간행물 VIA Nano CPUID Tricks http://ixbtlabs.com/[...] iXBT Labs 2010-08-26
[20] 간행물 WinChip 2A data sheet https://www.ardent-t[...] IDT 1999-01
[21] 간행물 C3 Nehemiah Datasheet http://datasheets.ch[...] VIA 2004-09-29
[22] 간행물 CpuIDFake, v1.00 http://www.agner.org[...] 2010-01-22
[23] 간행물 Crusoe BIOS Programmer's Guide http://datasheets.ch[...] Transmeta 2004-01-23
[24] 간행물 Efficeon BIOS Programmers Guide Transmeta 2003-08-19
[25] 간행물 Geode LX Data Book https://www.amd.com/[...] AMD 2009-02
[26] 간행물 Vortex86EX2_A9133_Master_Data_Sheet_V11_BF https://www.vortex86[...] DM&P 2019-05-08
[27] 서적 Intel 64 and IA-32 Architectures Software Developer's Manual Intel Corporation 2018-12-20
[28] 간행물 Pentium Processor Family Developer's Manual https://www.ardent-t[...] Intel 1997
[29] 간행물 x86, x64 Instruction Latency, Memory Latency and CPUID dumps http://users.atw.hu/[...] InstLatx64 2023-09-30
[30] 간행물 Enhanced Am486DX Microprocessor Family https://www.amd.com/[...] AMD 1997-03
[31] 간행물 ÉlanSC400 and ÉlanSC410 Microcontrollers User's Manual https://www.amd.com/[...] AMD 1997
[32] 간행물 5x86 BIOS Writers Guide http://www.bitsavers[...] Cyrix 1995
[33] 간행물 CPU Detection Guide http://www.bitsavers[...] Cyrix 1997-10-02
[34] 간행물 CPU Identification http://debs.future.e[...]
[35] 간행물 rtl/ao486/defines.v https://github.com/M[...] MiSTer ao486 source code
[36] 웹사이트 CPUID for Vortex86DX2 933 MHz https://www.cpu-worl[...] CPU-World 2023-10-17
[37] 웹사이트 CPUID for Vortex86EX2 https://www.cpu-worl[...] CPU-World 2023-10-18
[38] 웹사이트 Centaur CNS CPUID dump http://users.atw.hu/[...] InstLatx64 2023-05-30
[39] 웹사이트 Nasty Software Hacks and Intel's CPUID https://blog.codingh[...] Coding Horror 2005-08-16
[40] 간행물 Intel Xeon Phi Coprocessor Instruction Set Architecture Reference Manual https://www.intel.co[...] Intel 2012-09
[41] 웹사이트 CPUID for Intel Itanium 2 1.50 GHz https://www.cpu-worl[...] CPU-World 2023-10-17
[42] 웹사이트 "[PATCH] x86/cpu: Add two Intel CPU model numbers - Tony Luck" https://lore.kernel.[...] 2024-09-24
[43] 웹사이트 72-Core Intel Xeon Phi 7290 CPUID dump http://users.atw.hu/[...] InstLatX64
[44] 웹사이트 96-Core AMD Ryzen Threadripper Pro 7995WX CPUID dump http://users.atw.hu/[...] InstLatx64
[45] 간행물 Intel Processor Identification and the CPUID Instruction http://bochs.sourcef[...] Intel 2002-05
[46] 문서 /arch/x86/include/asm/cpuid.h https://elixir.bootl[...] Linux 6.3 kernel sources
[47] 문서 CPUID Patch for IDT Winchip https://gcc.gnu.org/[...] gcc-patches mailing list 2019-05-21
[48] 웹사이트 CMPXCHG8B Support in the 32-Bit Windows Kernel https://www.geoffcha[...] 2008-01-23
[49] 간행물 AMD Processor Recognition Application Note http://www.bitsavers[...] AMD 1997-01
[50] 간행물 AP-485 Application Note - Intel Processor Identification and the CPUID Instruction https://kib.kiev.ua/[...] Intel 1997-03
[51] 웹사이트 SYSENTER, Where Are You? http://www.os2museum[...] OS/2 Museum 2017-07-20
[52] 웹사이트 ECX From CPUID Leaf 1 https://www.geoffcha[...] 2020-01-26
[53] 논문 Direct Cache Access for High Bandwidth Network I/O
[54] 간행물 What Every Programmer Should Know About Memory
[55] 간행물 Itanium Architecture Software Developer's Manual, rev 2.3, volume 4: IA-32 Instruction Set https://www.intel.co[...] Intel 2010-05
[56] 간행물 AP-485, Processor Identification and the CPUID Instruction flag https://kib.kiev.ua/[...] Intel 2006-01
[57] 웹사이트 HTT Means Hyper-Threading, Right? http://www.os2museum[...] OS/2 Museum 2017-12-11
[58] 웹사이트 Mechanisms to determine if software is running in a VMware virtual machine https://kb.vmware.co[...] VMWare 2015-05-01
[59] 웹사이트 Hypervisor CPUID Interface Proposal https://lore.kernel.[...] LKML Archive on lore.kernel.org 2008-10-01
[60] 웹사이트 AMD64 Technology AMD64 Architecture Programmer's Manual Volume 2: System Programming https://www.amd.com/[...] Advanced Micro Devices, Inc. 2023-09-09
[61] 간행물 SDM vol 2A https://kib.kiev.ua/[...] Intel 2015-01
[62] 간행물 Itanium Processor Reference Manual for Software Development https://web.archive.[...] Intel 2001-12
[63] 간행물 Processor Identification and the CPUID Instruction Application Note 485 https://kib.kiev.ua/[...] Intel 2009-08
[64] 웹사이트 Willamette-128 CPUID dump http://users.atw.hu/[...] InstLatX64 2019-12-07
[65] 웹사이트 Northwood-128 CPUID dump http://users.atw.hu/[...] InstLatX64 2019-12-07
[66] 웹사이트 Prescott-256 CPUID dump http://users.atw.hu/[...] InstLatX64 2019-12-06
[67] 웹사이트 Intel Tolapai CPUID dump http://users.atw.hu/[...] InstLatX64 2019-01-19
[68] 웹사이트 (PATCH 2.6.24-rc5) x86 intel_cacheinfo.c: cpu cache info entry for Intel Tolapai https://marc.info/?l[...] LKML 2007-12-20
[69] 간행물 Application Note 120: Cyrix III CPU BIOS Writer's Guide https://web.archive.[...] VIA-Cyrix 1999-11-24
[70] 웹사이트 Intel Atom 230 CPUID dump http://users.atw.hu/[...] InstlatX64 2019-12-07
[71] 웹사이트 Bonnell https://en.wikichip.[...]
[72] 문서 Cyrix CPU Detection Guide http://datasheets.ch[...] Cyrix 1997-10-02
[73] 문서 Processor Identification and the CPUID Instruction Application Note 485 https://kib.kiev.ua/[...] Intel 2011-01
[74] 웹사이트 Working Timna desktop 2023, page 2 https://www.cpu-worl[...] CPU-World forum
[75] 웹사이트 CPUID Leaf 2 https://www.geoffcha[...] 2020-01-26
[76] 문서 Itanium 2 Processor Reference Manual https://web.archive.[...] Intel 2004-05
[77] 문서 Itanium 2 Processor Specification Update https://web.archive.[...] Intel 2004-11
[78] 문서 Atom C3000 Processor Product Family Specification Update https://cdrdv2-publi[...] Intel 2023-03
[79] 문서 Xeon Processor 7500 Series Datasheet https://www.intel.co[...] Intel 2010-03
[80] 문서 Optimization Reference Manual, volume 1 https://cdrdv2-publi[...] Intel 2024-01
[81] 문서 Processor Identification and the CPUID Instruction https://kib.kiev.ua/[...] Intel 2006-09
[82] 웹사이트 Intel 64 Architecture Processor Topology Enumeration https://software.int[...] 2012-01-27
[83] 웹사이트 Processor and Core Enumeration Using CPUID | AMD http://developer.amd[...] Developer.amd.com 2014-07-10
[84] 웹사이트 Sandybridge processors report incorrect core number? https://software.int[...] Software.intel.com 2012-12-29
[85] 웹사이트 cpuid, __cpuidex http://msdn.microsof[...] Msdn.microsoft.com 2014-06-20
[86] 웹사이트 x86 architecture - CPUID http://www.sandpile.[...] sandpile.org 2014-07-10
[87] 웹사이트 topology.cpp in ps/trunk/source/lib/sysdep/arch/x86_x64 – Wildfire Games http://trac.wildfire[...] Trac.wildfiregames.com 2011-12-27
[88] 웹사이트 Hyper-Threading Technology and Multi-Core Processor Detection https://software.int[...]
[89] 문서 Architecture Instruction Set Extensions Programming Reference https://cdrdv2-publi[...] Intel 2024-03
[90] 문서 Intel Processor Identification and the CPUID Instruction (AP-485, rev 30) https://kib.kiev.ua/[...] Intel 2006-01
[91] 문서 Intel 64 and IA-32 Architecture Software Developer's Manual https://kib.kiev.ua/[...] Intel
[92] 문서 Processor Identification and the CPUID Instruction https://kib.kiev.ua/[...] Intel 2012-04
[93] 문서 Product Change Notification 108701 https://web.archive.[...] Intel 2008-08-01
[94] 웹사이트 Performance Monitoring Impact of Intel Transactional Synchronization Extension Memory Ordering Issue https://cdrdv2.intel[...] Intel 2023-06
[95] 문서 Architecture Specification: Intel Trust Domain Extensions (Intel TDX) Module https://web.archive.[...] Intel 2020-09
[96] 웹사이트 Deprecating the PCOMMIT instruction https://www.intel.co[...] Intel 2016-09-12
[97] 문서 AVX512-FP16 Architecture Specification https://cdrdv2-publi[...] Intel 2021-06
[98] 웹사이트 Speculative Execution Side Channel Mitigations https://software.int[...] Intel 2018-05
[99] 웹사이트 IBRS patch series [LWN.net] https://lwn.net/Arti[...]
[100] 문서 X86S External Architecture Specification https://web.archive.[...] Intel 2024-06
[101] 웹사이트 Envisioning a Simplified Intel Architecture https://www.intel.co[...] Intel
[102] 문서 Flexible Return and Event Delivery (FRED) Specification https://cdrdv2-publi[...] Intel 2023-12
[103] 문서 Software Developer's Manual https://kib.kiev.ua/[...] Intel 2023-06
[104] 웹사이트 Re: (PATCH v3 00/21) Enable CET Virtualization https://lkml.org/lkm[...] LKML 2023-06-16
[105] 문서 Advanced Vector Extensions 10 https://cdrdv2-publi[...] Intel 2023-07
[106] 간행물 Advanced Performance Extensions - Architecture Specification https://cdrdv2-publi[...] Intel 2023-08
[107] 웹사이트 Return Stack Buffer Underflow / CVE-2022-29901, CVE-2022-28693 / INTEL-SA-00702 https://www.intel.co[...] Intel 2022-07-12
[108] 웹사이트 Branch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598 https://www.intel.co[...] Intel 2022-08-04
[109] 간행물 Asynchronous Enclave Exit Notify and the EDECCSSA User Leaf Function https://cdrdv2-publi[...] Intel 2022-06-30
[110] 문서 x86/tsc: Use CPUID.0x16 to calculate missing crystal frequency https://github.com/t[...] Linux kernel git commit 604dc91 2019-05-09
[111] 서적 SDM Volume 3A https://kib.kiev.ua/[...] Intel 2024-03
[112] 문서 Spreadtrum SC9853I-IA CPUID dump http://users.atw.hu/[...] instlatx64
[113] 간행물 Architecture Specification: Intel Trust Domain Extensions (Intel TDX) Module https://cdrdv2-publi[...] Intel 2023-02
[114] 서적 Intel Xeon Phi Coprocessor Instruction Set Architecture Reference Manual https://www.intel.co[...] Intel 2012-09
[115] 웹사이트 HV_HYPERVISOR_INTERFACE https://www.geoffcha[...] Geoff Chappell 2022-12-10
[116] 문서 Hyper-V Enlightenments https://www.qemu.org[...] QEMU documentation
[117] 문서 /source/arch/x86/kvm/cpuid.c https://elixir.bootl[...] Linux 6.8.7 kernel source
[118] 웹사이트 Hyper-V Feature and Interface Discovery https://learn.micros[...] Microsoft 2022-07-08
[119] 문서 KVM CPUID bits https://docs.kernel.[...] Linux kernel documentation
[120] 문서 /arch/x86/kvm/hyperv.c, line 2793 https://elixir.bootl[...] Linux 6.8.7 kernel source
[121] 문서 Virtualization support: 4.118 KVM_GET_SUPPORTED_HV_CPUID https://docs.kernel.[...] Linux kernel documentation
[122] 문서 commit 560d5ed https://github.com/f[...] FreeBSD 2013-06-28
[123] 문서 /src/lib/vmm/x86.c line 42 https://github.com/m[...] HyperKit source code 2021-05-08
[124] 문서 CPUID Interface to Xen https://xenbits.xen.[...] Xen
[125] 문서 fb/target/i386/cpu.c, line 6475 https://github.com/q[...] QEMU source code 2024-03-18
[126] 웹사이트 Mechanisms to determine if software is running in a VMware virtual machine https://kb.vmware.co[...] VMWare 2015-05-01
[127] 웹사이트 CPUID Virtualization https://projectacrn.[...] Project ACRN 2022-10-20
[128] 문서 9.30 Paravirtualized Debugging https://www.virtualb[...] VirtualBox documentation
[129] 웹사이트 Hypervisor - Checking the guest's environment https://www.qnx.com/[...] QNX 2022-03-25
[130] 문서 /sys/dev/nvmm/x86/nvmm_x86_vmx.c, line 1430 https://github.com/N[...] NetBSD source code 2023-11-06
[131] 문서 /sys/arch/amd64/include/vmmvar.h, line 24 https://github.com/o[...] OpenBSD source code 2024-04-09
[132] 문서 hypervisor-interfaces.txt, line 39 https://github.com/s[...] Siemens Jailhouse hypervisor documentation 2020-01-27
[133] 문서 /core/cpuid.c, line 979 https://github.com/i[...] Intel HAXM source code 2023-01-20
[134] 문서 /vmm/vmexit/vmexit_cpuid.c, lines 17-75 https://github.com/i[...] Intel KGT source code (trusty branch) 2019-05-15
[135] 문서 /source/drivers/visorbus/visorchipset.c, line 28 https://elixir.bootl[...] Linux kernel v5.18.19 source code
[136] 문서 virt: Support detection of LMHS SRE guests #25594 https://github.com/s[...] N. Moore 2022-12-01
[137] Citation CPUID Specification, publication no.25481, rev 2.34 http://developer.amd[...] AMD 2010-09
[138] 문서 Linux kernel source code https://git.kernel.o[...]
[139] 간행물 AMD-K6 Processor Data Sheet https://www.ardent-t[...] AMD 1998-03
[140] 간행물 AMD-K6 Processor Revision Guide https://www.ardent-t[...] AMD 1999-06
[141] 간행물 Intel 64 and IA-32 Architectures Software Developer's Manual https://kib.kiev.ua/[...] Intel 2023-03-01
[142] Citation Lightweight Profiling Specification http://support.amd.c[...] AMD 2013-04-03
[143] 간행물 Cyrix CPU Detection Guide http://datasheets.ch[...] Cyrix 1997-10-02
[144] 간행물 Geode GX1 Processor Data Book https://www.amd.com/[...] AMD 2003-12-01
[145] 간행물 Processor Recognition http://datasheets.ch[...] Transmeta 2002-05-07
[146] 간행물 Processor Recognition Application Note http://www.amd.com/u[...] AMD 2005-12-01
[147] 간행물 Family 10h BKDG https://www.amd.com/[...] AMD 2013-01-11
[148] 간행물 AMD64 Architecture Programmer's Manual Volume 3 https://kib.kiev.ua/[...] AMD 2013-05-01
[149] 웹사이트 Intel Processor Identification and the CPUID Instruction http://download.inte[...] Download.intel.com 2012-03-06
[150] 간행물 Vortex86DX3 CPUID dump http://users.atw.hu/[...] InstLatx64 2021-09-27
[151] 간행물 AMD Ryzen 7 6800HS CPUID dump http://users.atw.hu/[...] InstLatx64 2022-02-21
[152] 간행물 Why you can't trust CPUID https://chipsandchee[...] Chips and Cheese 2022-10-27
[153] 간행물 Geode LX Databook https://www.amd.com/[...] AMD 2009-02-01
[154] 간행물 2x 24-core Montage Jintide C2460 CPUID dump http://users.atw.hu/[...] InstLatx64
[155] 간행물 2x 24-core Intel Xeon Platinum 8160 CPUID dump http://users.atw.hu/[...] InstLatx64
[156] 간행물 Zhaoxin KaiXian ZX-C+ C4580 CPUID dump http://users.atw.hu/[...] InstLatx64
[157] 간행물 VIA Eden X4 C4250 CPUID dump http://users.atw.hu/[...] InstLatx64
[158] 간행물 Application Note 112: Cyrix CPU Detection Guide https://www.ardent-t[...] Cyrix 1998-07-21
[159] 간행물 VIA Cyrix III "Samuel" CPUID dump http://users.atw.hu/[...] Instlatx64
[160] 간행물 BKDG for AMD Family 10h Processors https://www.amd.com/[...] AMD 2013-01-11
[161] 간행물 PPR For AMD Family 19h Model 61h rev B1 procesors https://www.amd.com/[...] AMD 2023-03-08
[162] 간행물 BKDG for AMD Family 16h Models 00-0Fh processors https://www.amd.com/[...] AMD 2015-02-19
[163] 간행물 BIOS and Kernel Developer's Guide for AMD Athlon 64 and AMD Opteron Processors https://www.amd.com/[...] AMD 2006-02-01
[164] 간행물 PPR for AMD Family 19h Model 01h, Revision B1 Processors, Volume 1 of 2 https://www.amd.com/[...] AMD 2021-05-27
[165] 간행물 AMD64 Virtualization Codenamed "Pacifica" Technology https://web.archive.[...] AMD 2005-05-01
[166] 간행물 CPUID specification https://kib.kiev.ua/[...] AMD 2006-01-01
[167] 간행물 CPUID specification https://kib.kiev.ua/[...] AMD 2010-09-01
[168] 간행물 AMD E-350 CPUID dump http://users.atw.hu/[...] Instlatx64
[169] 간행물 CPUID specification https://kib.kiev.ua/[...] AMD 2008-04-01
[170] 간행물 CPUID specification https://kib.kiev.ua/[...] AMD 2010-09-01
[171] 간행물 PPR for AMD Family 19h Model 61h, Revision B1 processors https://www.amd.com/[...] AMD 2023-03-08
[172] 간행물 Secure VM Service Module for SEV-SNP Guests https://www.amd.com/[...] AMD 2023-07-01
[173] 간행물 PPR for AMD Family 19h Model 61h, Revision B1 processors https://www.amd.com/[...] AMD 2023-03-08
[174] 간행물 Processor Programming Reference (PPR) for AMD Family 1Ah Model 24h, Revision B0 Processors https://www.amd.com/[...] AMD 2024-09-26
[175] 간행물 5th Gen AMD EPYC Processor Architecture https://www.amd.com/[...] AMD 2024-10-01
[176] 간행물 Technical Update Regarding Speculative Return Stack Overflow https://www.amd.com/[...] AMD 2024-02
[177] 웹사이트 Attacks on Virtual Machine Emulators http://www.symantec.[...] Symantec Advanced Threat Research 2017-03-15
[178] 웹사이트 x86 architecture CPUID https://sandpile.org[...] 2022-12-22
[179] 웹사이트 CPUID dump of AMD A4-5000 http://users.atw.hu/[...] 2022-12-22
[180] 간행물 WinChip 2B Processor Data Sheet https://www.ardent-t[...] IDT 1999-04
[181] 간행물 PadLock Programming Guide https://web.archive.[...] VIA 2005-08-04
[182] 문서 OpenEuler 1.0 LTS kernel sources https://gitee.com/op[...]
[183] 간행물 C3 Nehemiah Processor Datasheet http://datasheets.ch[...] VIA 2004-09-29
[184] 웹사이트 GCC-mirror/GCC https://github.com/g[...] 2022-03-13
[185] 웹사이트 ARM Information Center http://infocenter.ar[...] Infocenter.arm.com 2013-04-11
[186] 웹사이트 Processor version codes and SRM constants https://www-304.ibm.[...] 2014-09-08
[187] 웹사이트 IBM System z10 Enterprise Class Technical Guide http://www.redbooks.[...]
[188] 웹사이트 MIPS32 Architecture For Programmers, Volume III: The MIPS32 Privileged Resource Architecture http://www.cs.cornel[...] MIPS Technologies, Inc. 2001-03-12
[189] 웹사이트 PowerPC Operating Environment Architecture, book III http://moss.csc.ncsu[...]
[190] 웹사이트 '[ANNOUNCE] x86-cpuid.org: A machine-readable CPUID repository' https://lore.kernel.[...] 2024-07-20
[191] 문서 Linux 6.3 kernel sources https://elixir.bootl[...]
[192] 문서 CPUID Patch for IDT Winchip https://gcc.gnu.org/[...] gcc-patches mailing list 2019-05-21
[193] 간행물 AMD Processor Recognition Application Note http://www.bitsavers[...] AMD 1997-01
[194] 문서 SYSENTER, Where Are You? http://www.os2museum[...] OS/2 Museum 2017-07-20
[195] 문서 ECX From CPUID Leaf 1 https://www.geoffcha[...] 2020-01-26
[196] 간행물 Itanium Architecture Software Developer's Manual, rev 2.3, volume 4: IA-32 Instruction Set https://www.intel.co[...] Intel 2010-05
[197] 웹사이트 Mechanisms to determine if software is running in a VMware virtual machine https://kb.vmware.co[...] VMWare 2015-05-01
[198] 웹사이트 Hypervisor CPUID Interface Proposal https://lore.kernel.[...] LKML Archive on lore.kernel.org 2008-10-01
[199] 간행물 CPUID Specification, publication no.25481, rev 2.34 http://developer.amd[...] AMD 2010-09
[200] 문서 Linux kernel source code https://git.kernel.o[...]
[201] 문서 EDXのビット 0 から 9, 12 から 17, 23と 24は、AMDのCPUではEAX=1の場合のCPUIDの結果と重複、IntelのCPUでは未使用。
[202] 문서 インテル社のCPUではCPUIDのsyscallビットはCPUが64ビットモードで動作しているときのみセットされる。
[203] 간행물 Intel® 64 and IA-32 Architectures Software Developer’s Manual https://kib.kiev.ua/[...] Intel 2023-03
[204] 간행물 Lightweight Profiling Specification http://support.amd.c[...] AMD 2010-08
[205] 간행물 Family 10h BKDG https://www.amd.com/[...] AMD 2013-01-11
[206] 문서 http://www.intel.com[...]
[207] 문서 Detecting Intel Processors - Knowing the generation of a system CPU http://www.rcollins.[...]
[208] 웹인용 LXR linux-old/arch/i386/kernel/head.S http://lxr.linux.no/[...] 2010-06-06



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com