Cpuid

Cpuid

cpuid

CPUID (CPU Identification) — ассемблерная мнемоника инструкции процессоров x86, используется для получения информации о процессоре. Используя её, программа может определить тип ЦП и его возможности (например, можно определить, какие расширения поддерживаются процессором).

Инструкция CPUID впервые появилась в процессорах i486. Потом она начала поддерживаться всеми процессорами начиная с Intel 486DX/SX/DX2 SL, AMD 486DX4, Cyrix 6x86 (M1), UMC U5S.

Код операции: 0F A2.

Содержание

Проверка поддержки инструкции CPUID процессором

Так как инструкция CPUID отсутствовала в первых процессорах архитектуры x86, перед её использованием следует удостоверится что ЦП её поддерживает. Для этого производится попытка изменить бит 21 (ID) регистра EFLAGS. Если бит успешно поменяется, то инструкция CPUID процессором поддерживается.

Приведённый ниже исходный код проверяет поддержку инструкции CPUID:

pushfd           ; размещение регистра EFLAGS в стеке
pop eax          ; извлечение значения EFLAGS в EAX
mov ebx, eax     ; сохранение значения в EBX
xor eax, 200000h ; изменение 21-го бита
push eax         ; размещение нового значения в стеке
popfd            ; сохранение нового значения в EFLAGS
pushfd           ; снова размещение EFLAGS в стеке
pop eax          ; значение EFLAGS теперь в EAX
xor eax, ebx     ; проверка 21-го бита
je no_cpuid      ; если он не изменился, то CPUID не поддерживается

В данном примере используется инструкция XOR, так как она непременно поменяет только 21-й флаг ID не затронув другие. Обратите внимание: здесь используются 32-битные инструкции, поэтому рекомендуем сначала проверить поддерживает ли процессор 32-битные директивы.

Использование CPUID

Инструкция CPUID по содержимому регистра EAX определяет какого рода информацию о процессоре необходимо вернуть. Первый раз её следует вызывать со значением EAX = 0. При этом будет возвращено максимально допустимое значение параметра инструкции, поддерживаемое данным процессором.

Для того, чтобы получить информацию о дополнительных функциях, имеющихся в процессорах, в регистре EAX перед вызовом CPUID должен быть установлен бит 31. Например, чтобы определить максимально допустимое значение параметра для дополнительных функций, необходимо выполнить CPUID со значением EAX = 80000000h.

EAX = 0: Получить идентификатор производителя процессора

При EAX = 0 ЦП возвращает идентификатор производителя процессора (англ. Vendor ID) в виде 12 символов ASCII, содержащихся в регистрах EBX, EDX, ECX (именно в таком порядке). В регистре EAX же возвращается максимально допустимое значение EAX при вызове CPUID.

Вот некоторые идентификаторы производителей процессоров:

ASCii-строка HEX-значения EBX:EDX:ECX Название
производителя
"GenuineIntel" 756E6547:49656E69:6C65746E Intel
"AuthenticAMD" 68747541:69746E65:444D4163 AMD
"CyrixInstead" 69727943:736E4978:64616574 Cyrix
"CentaurHauls" 746E6543:48727561:736C7561 Centaur
"SiS SiS SiS " 20536953:20536953:20536953 SiS
"NexGenDriven" 4778654E:72446E65:6E657669 NexGen
"GenuineTMx86" 756E6547:54656E69:3638784D Transmeta
"RiseRiseRise" 65736952:65736952:65736952 Rise
"UMC UMC UMC " 20434D55:20434D55:20434D55 UMC
"Geode by NSC" 646F6547:79622065:43534E20 National Semiconductor

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Полезное


Смотреть что такое "Cpuid" в других словарях:

  • cpuid — (CPU Identification)  ассемблерная мнемоника инструкции процессоров x86, используется для получения информации о процессоре. Используя её, программа может определить тип ЦП и его возможности (например, можно определить, какие расширения… …   Википедия

  • cPUID — (CPU Identification)  ассемблерная мнемоника инструкции процессоров x86, используется для получения информации о процессоре. Используя её, программа может определить тип ЦП и его возможности (например, можно определить, какие расширения… …   Википедия

  • CPUID — (CPU Identification)  ассемблерная мнемоника инструкции процессоров x86, используется для получения информации о процессоре. Используя её, программа может определить тип процессора и его возможности (например, можно определить, какие… …   Википедия

  • CPUID — The CPUID opcode is a processor supplementary instruction (its name derived from CPU IDentification) for the x86 architecture. It was introduced by Intel in 1993 when it introduced the Pentium and SL Enhanced 486 processors.[1] By using the CPUID …   Wikipedia

  • CPUID — Die CPUID Kennung ist seit den späteren 486ern Teil der x86 Prozessorarchitektur, ab dem Pentium war sie dann vollständig verfügbar. Die Kennung erlaubt der Software im laufenden Betrieb den Prozessor zu identifizieren, einschließlich des… …   Deutsch Wikipedia

  • CPUID String — Четырехзначная строка символов, по которой производится идентификация процессора. Первым символом обычно идет ноль, второй и третий означают семейство и номер модели, четвертый символ означает степпинг. Например, сравнивая два процессора с CPUID… …   Глоссарий терминов бытовой и компьютерной техники Samsung

  • CPUID — abbr. Central Processing Unit IDentifier (CPU) …   United dictionary of abbreviations and acronyms

  • CPU-Z — CPUID Développeur Franck Delattre …   Wikipédia en Français

  • Xeon — New Intel Xeon Logo used in 2011 Produced From 1998 to present Common manufacturer(s) …   Wikipedia

  • Intel Core (microarchitecture) — This article is about the Intel microarchitecture. For Intel processors branded as Intel Core, including the Core microarchitecture based Core 2 and others not based on the Core microarchitecture, see Intel Core. The Intel Core microarchitecture… …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»