Внеочередное исполнение (Операционные Системы)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:19, 1 июня 2016.

Внеочередное исполнение (англ. Out-of-Order execution) - процессоры, способные выполнять переупорядочение инструкций не в порядке их поступления. Вплоть до появления микроархитектуры Intel Pentium Pro (P6) все процессоры выполняли микрооперации в порядке их поступления. В случае, когда для выполнения очередной микрооперации требуется знание результата предыдущей микрооперации, такая микроархитектура последовательного выполнения микроопераций вполне логична и оправданна. Однако, как правило, фрагменты программного кода независимы друг от друга, то есть несколько операций (необязательно последовательных) могут выполняться одновременно при наличии соответствующего количества исполняющих блоков.

История

Процессор Intel Atom

Первый суперскалярный процессор, поддерживающий внеочередное выполнение инструкций, был разработан Сеймуром Креем еще в 60-х годах XX века. Компания Intel выпустила свой первый суперскалярный процессор с внеочердным выполнением инструкций в 1995 году (Intel Pentium Pro), а компания AMD — в 1996-м (K5). С тех пор все процессоры Intel и AMD были суперскалярными с внеочередным выполнением команд. Все, но только не процессор Intel Atom, который был разработан компанией Intel в 2007 году для весьма специфического сегмента рынка. Он имеет суперскалярную архитектуру, но без возможности переупорядочения команд. Компания Intel не предусмотрела в этом процессоре такой функциональности, хотя возможность переупорядочения команд позволяет существенно повысить производительность процессора. Причина в том, что Intel Atom изначально разрабатывался как недорогой процессор с очень низким энергопотреблением для специфического класса устройств. Сразу предполагалось, что процессором Intel Atom будут оснащаться устройства выхода в Интернет, и не более того. Понятно, что для обеспечения выхода в Сеть высокая производительность процессора не нужна, а потому не было смысла наделять процессор Intel Atom дополнительной логикой внеочередного выполнения команд. Наличие логики Out-of-Order сделало бы процессор Intel Atom, во-первых, более дорогим, во-вторых, существенно увеличило бы его энергопотребление, в­-третьих, повысило бы размер кристалла, а в­четвертых, процессор обладал бы избыточной производительностью. В то время, когда разрабатывался процессор Intel Atom, отказ от использования блока Out-of-Order был самым эффективным способом существенно уменьшить энергопотребление процессора, а сверхнизкое энергопотребление и есть главная отличительная черта Intel Atom.

Объяснение процессов внеочередного исполнения

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

Отставка выполненных машинных инструкций после их выхода из подсистемы внеочередного исполнения производится строго последовательно. Таким образом, восстанавливается натуральный порядок следования операций. Говорить о внешнем, или архитектурном состоянии программы можно только с позиции последней машинной инструкции, покинувшей блок отставки. При возникновении какого-либо прерывания все последующие инструкции будут считаться невыполненными, вне зависимости от действительного состояния их выполнения. При выходе из прерывания все эти инструкции будут повторно исполнены с самого начала.

In-Order vs. Out-of-Order

Выполнение инструкций по порядку (In-order)

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

Выполнение не по порядку (Out-of-order):

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

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

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

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

AMD vs. Intel

Сегодня концепция использования интернет-устройств на базе процессоров Intel Atom несколько изменилась. Фактически из устройств выхода в Интернет с минимальной функциональностью эти устройства трансформировались в устройства потребления контента. В связи с этим теперь наблюдается явный дефицит производительности процессоров Intel Atom. Частично проблему недостаточной производительности компания Intel решила за счет перехода от одноядерных к двухъядерным моделям процессоров Intel Atom, однако понятно, что это лишь попытка залатать дыры, так как без кардинального пересмотра микроархитектуры процессора проблему дефицита его производительности решить нельзя. На фоне явного дефицита процессора Intel Atom появлась конкурентная суперскалярной микроархитектура AMD Bobcat с внеочередным выполнением команд.

См. также

Литература