Позачергове виконання

Позачергове виконання (англ. Out-of-order execution) — парадигма, що застосовується при розробці процесорів з метою підвищення продуктивності. Її особливість в тому, що інструкції надходять до виконавчих модулів не в порядку їх слідування, як було в концепції виконання інструкцій по порядку (англ. In-Order execution), а за готовністю до виконання. Серед широко відомих машин вперше ця парадигма була в істотній мірі реалізована в машинах CDC 6600 компанії Control Data і IBM System/360 Model 91 компанії IBM.

Концепція

Виконання інструкцій по порядку (In-order)

  1. Зчитування інструкції
  2. Якщо всі операнди інструкції доступні, то вона передається на виконання відповідного виконавчого модуля, інакше процесор зупиняється, чекаючи готовності операндів.
  3. Інструкція виконується у відповідному модулі.
  4. Модуль записує результат назад в регістровий файл.

Позачергове виконання (Out-of-order)

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

Ключова ідея позачергового виконання полягає в можливості уникнути простою процесора в тих випадках, коли дані, необхідні для виконання чергової інструкції, недоступні. Як можна бачити вище, процесор уникає простоїв, які виникають в пункті 2 для чергового виконання інструкцій в разі, коли інструкція не може бути виконана через недоступність її операндів.

Процесор із позачерговим виконанням коду виконує ті інструкції, які готові, незалежно від їх порядку проходження в коді програми. Інструкції виконуються не в порядку їх слідування в коді програми, а в порядку доступності даних в регістрах процесора. Після виконання процесор змінює порядок результатів виконання інструкцій так, щоб створювалася видимість нормального, чергового виконання.

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

Див. також

Література

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.