ISA (Instruction Set Architecture)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:56, 24 декабря 2016.
Схема, иллюстрирующая место уровней микроархитектуры, архитектуры набора команд и микрокода в многоуровневой структуре компьютера

Архитектура набора команд (англ. instruction set architecture, ISA) — часть архитектуры компьютера, определяющая программируемую часть ядра микропроцессора. На этом уровне определяются реализованные в микропроцессоре конкретного типа:

  • архитектура памяти,
  • взаимодействие с внешними устройствами ввода/ вывода,
  • режимы адресации,
  • регистры,
  • машинные команды,
  • различные типы внутренних данных (например, с плавающей запятой, целочисленные типы и т . д.),
  • обработчики прерываний и исключительных состояний.

Набор команд представляет собой интерфейс между программным обеспечением компьютера и его аппаратной части, и тем самым позволяет независимое развитие этих двух вычислительных сфер.

Общая характеристика системы команд

Архитектура системы команд нацелена на максимально параллельное извлечение инструкций из памяти и декодирование инструкций. Формат инструкций регулярный, но не строго фиксированный.Единицей потока команд является 16-байтовая связка, собранная из трёх (обычно) или двух команд.
Везде, где только это возможно, система команд стремится быть единообразной (uniform), то есть некая часть инструкции с одинаковым смыслом, присутствующая во многих инструкциях, во всех этих инструкциях должна находится в одном месте.
Архитектура команд использует неразрушающие команды – двухадресные унарные команды, трехадресные бинарные команды и четырехадресные команды с перекрытием.
В архитектуре может использоваться внеочередное выполнение команд. Для этого на систему команд наложено несколько ограничений. Отсутствуют неявные или опциональные результаты команд, отсутствуют глобальные регистры и флаги. Количество возможных побочных эффектов команд ограничено. Большинство инструкций имеет один регистр-результат. Несколько инструкций имеют два результата-регистра. Количество операндов ограничено тремя (а для большинства инструкций двумя) регистрами.
Архитектура принадлежит к типу load/store. Обращения к памяти ограничиваются командами загрузки или записи, перемещающими данные между регистрами и памятью, и не пересекаются с одновременным использованием загруженного значения. Любая команда обращения к памяти ограничена строго одним обращением в память с единственной трансляцией виртуального адреса, для чего введены строгие ограничения по выравниванию данных в памяти.
Команды перехода проверяют значение регистра-предиката, которое может быть результатом предыдущих сравнений и/или дополнительные условия.

Машинный язык

Машинный язык строится из дискретных заявлений или инструкций . На архитектуре обработки, данная команда может указать:

  • Конкретные регистры для арифметики, адресации или функции управления;
  • Отдельные ячейки памяти или смещения;
  • Особые режимы адресации , используемые для интерпретации операнды;

Более сложные операции строятся путем сочетания этих простых инструкций, которые выполняются последовательно, или любым другим способом, направленные на потока управления инструкциями.

Типы команд

Примеры операций, общих для многих наборов команд включают в себя:

Обработка данных и операции с памятью

  • Установка в регистра на фиксированное постоянное значение.
  • Копирование данных из ячейки памяти в регистр, или наоборот. Используется для хранения содержимого регистра, результата вычисления, или для извлечения сохраненных данных для выполнения вычислений на ней позже. Часто называется загрузкой и сохранением операций.
  • Считывание и запись данных из аппаратных устройств.

Арифметические и логические операции

  • Добавление , вычитание , умножение или деление значений двух регистров, помещая результат в регистр, возможно , установив один или несколько кодов условий в регистре состояния .
  • Выполнение битовых операций.
  • Сравнение двух значений в регистрах.

Управление потоком данных операций

  • Команда перехода в другое место в программе и выполнение инструкции.
  • Условно разветвляются в другое место если определенное условие выполнено.
  • Косвенно разветвляются в другое место.
  • Вызов другого блока кода.

Инструкции сопроцессора

  • загрузка / сохранение данных из сопроцессора или обмен с регистрами процессора;
  • выполнение операций сопроцессора.

Регистровые файлы

Ресурсы процессора включают в себя регистровые файлы, специальные регистры, структуры ассоциативного поиска, прерывания. Одни ресурсы доступны для программ пользователя, другие необходимы для функционирования операционной системы. Каждый процессор имеет набор регистров, которые содержат текущее состояние процессора. Все регистры подразделяются на шесть регистровых файлов. Не существует регистров, которые не входили бы в какой-либо регистровый файл.

Регистровый файл Количество регистров Размер регистров в битах Дополнительная информация
Регистры общего назначения 128 64 Регистры общего назначения предназначены для манипуляций с целыми числами длиной 1,2,4,8 байт или векторами целых чисел длиной 1 или 2 байта. Регистр g0 всегда равен нулю, запись в него игнорируется. Все остальные 127 регистров общего назначения полностью равноправны на уровне архитектуры (но возможно неравноправны с точки зрения двоичного интерфейса ABI).
Регистры плавающей точки (векторные регистры) 128 128 Регистры плавающей точки предназначены для манипуляций с вещественными числами четверной точности, упакованными векторами вещественных чисел одинарной и двойной точности, упакованными векторами целых чисел длиной 1,2,4,8 байт. Регистр f0 всегда равен нулю, запись в него игнорируется. Все остальные 127 регистров плавающей точки полностью равноправны на уровне архитектуры.
Регистры специального назначения 128 64 Как ясно из названия, у регистров специального назначения разное предназначение. Не все из 128 специальных регистров реализованы. Чтение/запись зависит от уровня приоритета, номера регистра.
Условные регистры (предикаты) 64 1 Набор однобитовых регистров. Реализован на основе специального регистра CRF. Предикат с0 всегда равен 1 (истинен).
Регистры мониторинга 2x4+ 64 Эти регистры предназначены для подсчёта разных внутренних событий при выполнении потока инструкций. Их количество зависит от реализации. Чтение/запись зависит от уровня приоритета, модели процессора. Они всегда используются попарно.
Отладочные регистры 2x4+ 64 Отладочные регистры позволяют организовать перехват обращений программы в определённые диапазоны адресов с определёнными целями (например исполнение или запись), и позволяют отладчику проверять правильность программы. Их количество зависит от реализации. Чтение/запись зависит от уровня приоритета, модели процессора. Они всегда используются попарно.
Регистры идентифицирующие возможности процессора (CPUID) 8+ 64 Эти регистры хранят информацию о текущей реализации архитектуры – об аппаратных возможностях исполняющего код процессора. Их количество зависит от реализации. Они доступны только для чтения.

Способы адресации кода

Вычисление эффективных адресов кода происходит по модулю 264 с последующим усечением.
Абсолютная адресация кода отсутствует. Архитектура не дает возможности помещать в код команд абсолютные статические адреса переходов. Доступен только PIC (position independent code) – позиционно-независимый код. Целевые адреса (для кода и констант) могут вычисляться только относительно адреса текущей связки команд или (для приватных данных) относительно базовых регистров. Архитектура содержит четыре способа относительной адресации кода:

  • длинное безусловное смещение – для безусловного перехода;
  • короткое условное смещение – для условного перехода;
  • delay – смещение вперед для предсказания места будущего перехода;
  • последовательная выборка команд – значение 16 добавляется к адресу текущей связки команд, чтобы сформировать 64-разрядный целевой адрес следующей связки команд.

Способы адресации данных

Абсолютная адресация данных отсутствует. Архитектура не дает возможности помещать в код команд абсолютные статические адреса переменных. Доступен только BIC (binding independent code) – код, независящий от привязки к месту расположения приватных данных или кода. Целевые адреса для неизменяемых данных могут вычисляться только относительно адреса текущей связки команд, а для приватных данных – только относительно зарезервированных базовых регистров. Архитектура содержит четыре способа адресации данных:

  • базовый со смещением (base plus displacement addressing mode) – далее просто базовая адресация;
  • базовый с индексацией (base plus index addressing mode) – далее просто индексированная адресация;
  • базовый с масштабируемой индексацией (base plus scaled index addressing mode) – далее просто масштабированная индексированная адресация;
  • базовый со смещением и продвижением базы (base plus displacement with update addressing mode) – далее просто базовая адресация c продвижением базы.

Наборы команд на базе архитектуры Intel (IA)

Корпорация Intel разработала три типа ISA, которые ориентируются на различные секторы рынка. Для их именования часто используется акроним из выражения Intel Architecture, IA (например, IA-32, IA-64).

  • Архитектура IA-32 предназначена для выполнения массовых 32-разрядных приложений на ПК начального уровня и реализована в следующих семействах процессоров:
    • Intel Celeron и Intel Pentium (в корпусе FC-PGA2);
    • процессорах Intel, использующих технологии ультранизкого напряжения питания;
    • Intel Core Duo.
  • Архитектура набора команд IA-64 реализована в семействе процессоров Intel Itanium.
  • Архитектура Intel 64 предназначена для современных ПК и серверов среднего уровня, оптимизированных для выполнения 64-разрядных приложений. Эта архитектура реализована в следующих семействах процессоров:
    • Intel Xeon;
    • Intel Core 2 Duo.

Ссылки