Что скрывается за аббревиатурой CPUID?

CPU-Z идентифицирует не каждый процессор. Устройства без поддержки инструкции CPUID не определяются. Вы вряд ли встретите несовместимый с командой кристалл. Разберёмся, чем примечательна аббревиатура, что собой представляет. Покажем, как узнать, реализована ли CPUID в процессоре компьютера или ноутбука.

Что такое CPUID

CPU ID – процессорная инструкция, созданная для сбора и выдачи технической информации о ЦП. Она помогает BIOS, операционной системе и приложениям идентифицировать процессор. Внедряться начала с 1993 года параллельно с выходом на рынок кристаллов Intel 80486 вместе с ещё 75 командами.

Многие из вас думали, что CPUID – это название компании-разработчика?

Перед обращением к процессору в регистр EAX (изредка ECX) помещается значение, указывающее, какие сведения необходимо выдать. В зависимости от входного значения, которое отличается у разных разработчиков и моделей ЦП, получателю отправляются разные данные.

В инструкции два набора команд. Один возвращает основную сводку о CPU, второй – дополнительные сведения.

Как проверить, поддерживает ли процессор CPUID

Если вашему процессору менее 20 лет, значит он совместим с инструкцией. Не все древние модели, выпущенные в середине 1990-х годов, поддерживают инструкцию. Начиная с линейки Intel486 (80486), кристаллы предоставляют возможность проверить, реализована ли в них команда CPUID. За это отвечает особый флаг (последовательность битов) в регистре EFLAGS. Если значение флага изменяется, команда поддерживается, если недоступно для редактирования – нет.

Для проверки применяется следующий алгоритм (на Ассемблере):

pushfd

pop eax

mov ebx, eax

xor eax, 200000h

push eax

popfd

pushfd

pop eax

xor eax, ebx

je no_cpuid

Этот код уже внедрён и в CPU-Z.

Последовательность идентификации процессора с помощью CPUID

Исходя из содержимого EAX-регистра, CPUID знает, какие свойства или характеристики нужно выдать.

  • EAX = 0 – отправит идентификатор кристалла;
  • EAX = 2 – справка о кэше: тип, объем;
  • EAX = 3 – идентификатор модели;
  • EAX > 3 – выдаст специфические возможности экземпляра, зависят от модели.
идентификации процессора CPUID
Что возвращается в качестве ответа на запрос.

Какие данные можно получить при помощи CPUID-инструкции

Благодаря команде утилиты вроде CPU-Z и сама операционная система получают массу подробностей о ЦП. Windows, например, они нужны для идентификации аппаратуры при написании приложений на низкоуровневых языках программирования – операционные системы, компиляторы, драйверы. К получаемым характеристикам относятся:

  • архитектура и её расширения;
  • размеры буферов и кэшей разного уровня;
  • серийный номер;
  • семейство, модель, производитель;
  • идентификатор;
  • тип;
  • тактовая частота.
инструкции для процессора
Пример инструкции.

Какие программы используют инструкцию CPUID

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

Из переводящих полученные биты в человеко-понимаемую форму отметим:

  • CPU-Z – крохотная утилита для идентификации железа, тестирования процессора.
  • The CPUID Explorer – расширенный аналог предыдущего инструмента, разработка которого прекращена.
  • Intel Processor Identification Utility – фирменная утилита для идентификации процессоров собственного производства.
  • Msr-tools для Linux – также предоставит значения регистров MSR.
  • Cupid – очередной идентификатор для Linux.
  • Ggg-cpuid – собирает сведения с процессоров на различных архитектурах.
Что скрывается за аббревиатурой CPUID?
Так информация выглядит после обработки.

Вопросы и ответы

Михаил Строганов
Занимаюсь исследованиями софта и прикладным программированием уже более 11 лет. Перешел на сторону Open Source программ и выделяю их на фоне остальных.
Задать вопрос
Описывайте свои проблемы, всегда рады помочь.
Вопрос эксперту
Для чего нужна Max CPUID Value Limit в БИОСе?
Михаил Строганов
Опция позволяет указать число параметров, которое получит операционная система в качестве ответа на команду CPUID.

Оставьте комментарий