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-инструкции
Благодаря команде утилиты вроде CPU-Z и сама операционная система получают массу подробностей о ЦП. Windows, например, они нужны для идентификации аппаратуры при написании приложений на низкоуровневых языках программирования – операционные системы, компиляторы, драйверы. К получаемым характеристикам относятся:
- архитектура и её расширения;
- размеры буферов и кэшей разного уровня;
- серийный номер;
- семейство, модель, производитель;
- идентификатор;
- тип;
- тактовая частота.
Какие программы используют инструкцию CPUID
Инструкция CPUID может выполняться не только ядром операционной системы, но и пользовательским программным обеспечение. Это даёт возможность программистам писать приложения для исследования центральных процессоров. Создано много такого софта, предоставляющего сведения о CPU посредством инструкции CPUID.
Из переводящих полученные биты в человеко-понимаемую форму отметим:
- CPU-Z – крохотная утилита для идентификации железа, тестирования процессора.
- The CPUID Explorer – расширенный аналог предыдущего инструмента, разработка которого прекращена.
- Intel Processor Identification Utility – фирменная утилита для идентификации процессоров собственного производства.
- Msr-tools для Linux – также предоставит значения регистров MSR.
- Cupid – очередной идентификатор для Linux.
- Ggg-cpuid – собирает сведения с процессоров на различных архитектурах.