CPUID
"오늘의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 명령어 |
| 설계사 | 인텔 |
| 세부 정보 | |
| CPUID | CPU 식별 확장 및 기능 발견 |
| 설명 | 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는 `
.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[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
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