Внеочередное исполнение | это... Что такое Внеочередное исполнение? (original) (raw)

Внеочередное исполнение (англ. Out-of-order execution) — парадигма, применяемая при разработке вычислительных устройств, с целью повышения производительности. Её особенность в том, что инструкции поступают в исполнительные модули не в порядке их следования, как было в концепции выполнения инструкций по порядку (англ. In-Order execution), а по готовности к выполнению. Среди широко известных машин впервые эта парадигма была в существенной мере реализована в машинах CDC 6600 фирмы Control Data и IBM 360/91 фирмы IBM.

Содержание

Концепция

Выполнение инструкций по порядку

  1. Считывание инструкции
  2. Если все операнды инструкции доступны, то она передаётся на выполнение соответствующему исполнительному модулю, иначе процессор останавливается, ожидая готовности операндов.
  3. Инструкция выполняется в соответствующем модуле.
  4. Модуль записывает результат обратно в регистровый файл.

Выполнение не по порядку

  1. Считывание инструкции
  2. Помещение инструкции в очередь
  3. Инструкция находится в очереди до тех пор пока её операнды не станут доступны. Таким образом инструкция может покинуть очередь прежде, чем попавшая туда раньше.
  4. Выбранная из очереди инструкция выполняется в соответствующем модуле.
  5. Результат помещается в очередь.
  6. Только после того, как все инструкции, которые были в очереди впереди данной, выполнятся, её результат помещается в регистровый файл.

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

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

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

Литература

Есть более полная статья
Просмотр этого шаблона Технологии цифровых процессоров
Архитектура CISC · EDGE · EPIC · MISC · URISC · RISC · VLIW · ZISC · Фон Неймана · Гарвардская 8 бит · 16 бит · 32 бит · 64 бит · 128 бит
Параллелизм Pipeline Конвейер · In-Order & Out-of-Order execution · Переименование регистров · Speculative execution Уровни Бит · Инструкций · Суперскалярность · Данных · Задач Потоки Многопоточность · Simultaneous multithreading · Hyperthreading · Superthreading · Аппаратная виртуализация Классификация Флинна SISD · SIMD · MISD · MIMD
Реализации DSP · GPU · SoC · PPU · Векторный процессор · Математический сопроцессорМикропроцессор · Микроконтроллер
Компоненты Barrel shifter · FPU · BSB · MMU · TLB · Регистровый файл · control unit · АЛУДемультиплексор · Мультиплексор · Микрокод · Тактовая частотаКорпусРегистрыКэш (Кэш процессора)
Управление питанием APM · ACPI · Clock gating · Динамическое изменение частоты • Динамическое изменение напряжения