ISA описывает общий контракт, инструкция — конкретную операцию с условиями и исключениями. Имя архитектуры не заменяет проверку обязательной инструкции.
Инструкция процессора
Определение
Инструкция процессора — это отдельная операция, закодированная по правилам ISA: у неё заданы входные данные, результат и условия выполнения. Доступна ли она на конкретной машине, зависит от архитектуры, режима работы и того, включены ли нужные расширения.
Также ищут: CPU instruction · машинная инструкция · команда процессора
Зачем это знать
Программа может не запуститься на формально подходящей архитектуре из-за обязательного расширения. Проверка условий инструкции помогает выбрать CPU и не спутать аппаратную поддержку с доступностью в ОС.
Карта понятия
Что подтверждено
Справочник архитектуры задаёт формат каждой инструкции и результат, который должна видеть программа.
Граница применимости: Intel 64 и IA-32 приведены как документированный пример; у других ISA собственные форматы и правила.
В x86 наличие расширения проверяют во время выполнения через CPUID; некоторые возможности дополнительно требуют поддержки со стороны ОС.
Граница применимости: Проверка возможностей x86 в Linux; у отдельных расширений могут быть дополнительные требования.
Для использования AVX на x86 недостаточно одного признака аппаратной поддержки AVX. Нужны поддержка сохранения расширенного состояния со стороны ОС и включённые компоненты 128- и 256-битного векторного состояния, проверяемые через расширенный регистр управления с индексом 0.
Граница применимости: Проверка AVX, признака разрешённого ОС сохранения расширенного состояния и соответствующих компонентов расширенного регистра управления с индексом 0 по справочнику x86. Это условия доступности AVX, не универсальный алгоритм проверки всех расширений.
Отсутствие признака в описанном списке возможностей Linux само по себе не доказывает отсутствие функции в аппаратуре. Список отражает известные и доступные ядру возможности и не заменяет полный архитектурный способ их определения.
Граница применимости: Документация Linux x86 о признаках возможностей процессора; вывод ограничен этим интерфейсом и архитектурой.
В x86 выполнение инструкции при невыполненных условиях её доступности может вызвать исключение недопустимой команды. Условия и исключения проверяют по описанию самой инструкции до выбора требующей её программы.
Граница применимости: Условия выполнения и исключение недопустимой команды в указанном справочнике x86; не утверждение, что любая ошибка инструкции всегда имеет один код.
Название инструкции и её архитектурный результат не фиксируют число внутренних операций или время приложения. Для оценки скорости нужно учитывать реализацию CPU и фактическую нагрузку.
Граница применимости: Вывод из различия описанной операции и микроархитектуры; конкретные задержки инструкций здесь не назначаются.
При приёмке рекомендуем установить, какой вариант кода реально выбрала программа: требующий расширения или предусмотренный ею запасной путь. Наличие функции у CPU само по себе не показывает, использует ли её приложение.
Граница применимости: Редакторская проверка по условиям доступности x86 и зависимости результата от нагрузки; наличие запасной реализации у любой программы не предполагается.
Не путать
Инструкция задаёт операцию процессора, программный поток — последовательность выполнения приложения. Число потоков не определяет наличие требуемых инструкций.
Что проверить
- Получите требования программы к инструкциям и расширениям.
- Проверьте точную модель и режим процессора.
- Используйте документированный способ определения возможностей.
- Учитывайте дополнительные условия со стороны ОС.
- Не считайте отсутствие строки в списке возможностей Linux полным паспортом аппаратуры.
- Уточните выбранный программой путь выполнения и наличие запасного.
- Измерьте результат приложения отдельно от факта поддержки инструкции.
Первоисточники
- Intel 64 and IA-32 Architectures Software Developer Manuals
Официальное описание архитектуры, программной модели и полного набора инструкций Intel 64 и IA-32.
- x86 Feature Flags
Описывает обнаружение возможностей процессора через CPUID и условия, при которых feature доступна ОС.
- Introducing the Arm Architecture
Разграничивает архитектурный контракт и детали микроархитектуры.
Утверждения: 06
- АМД Эпик 9004 BIOS and Workload Tuning Guide
Фиксирует два hardware thread при SMT и предупреждает о нейтральном или отрицательном эффекте на части workload.
Утверждения: 07
- Arm Architecture
Определяет архитектуру Arm как правила выполнения инструкций аппаратурой.
- Intel Hyper-Threading Technology — 12th Generation Intel Core Datasheet
Показывает два logical processor, отдельное architectural state и общие ресурсы одного core.
Связанные понятия
Курсы по теме
В каталоге
- Процессоры с нужными расширениями команд — Программа может требовать конкретные расширения — их поддержку проверяют по модели процессора, а не по названию архитектуры.
- Платформы под нужное поколение процессоров — Платформа задаёт поколения процессоров, а с ними — доступные расширения набора команд.