Що таке конвеєр інструкцій?

click fraud protection

Будь-яка інструкція процесора має кілька етапів своєї роботи. Для завершення кожного з цих етапів потрібен один цикл ЦП. Ці етапи: вибірка інструкцій, декодування інструкцій, виконання, доступ до пам’яті та зворотний запис. Відповідно, вони отримують інструкцію, яку потрібно виконати, відокремити операцію від значень, якими оперують on, виконайте процес, відкрийте регістр, у якому буде записаний результат, і запишіть результат до відкритого зареєструватися.

Історичні процесори замовлення

У ранніх комп’ютерах центральний процесор не використовував конвеєр інструкцій. У цих процесорах кожна одноциклова операція мала виконуватися для кожної інструкції. Це означало, що знадобилося п'ять тактів для повної обробки середньої інструкції, перш ніж можна було почати наступну. Для деяких операцій може не знадобитися запис будь-якого результату в регістр, тобто доступ до пам’яті та етапи зворотного запису можна пропустити.

У субскалярному процесорі без конвеєра кожна частина кожної інструкції виконується по порядку.

Однак існує проблема, коли виконується повна інструкція по порядку, перш ніж ви зможете перейти до наступної інструкції. Проблема полягає в промаху кешу. Центральний процесор зберігає дані, які він активно обробляє, у реєстрі. Це можна отримати із затримкою в один цикл. Проблема в тому, що регістр крихітний, оскільки він вбудований у ядро ​​процесора. ЦП повинен перейти до більшого, але повільнішого кеша L1, якщо дані ще не завантажено. Якщо його немає, він повинен знову перейти до більшого та повільнішого кеша L2. Наступним кроком є ​​кеш L3; Останнім варіантом є системна оперативна пам'ять. Для перевірки кожного з цих параметрів потрібно все більше циклів ЦП.

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

Класичний конвеєр RISC

RISC означає комп’ютер зі скороченим набором інструкцій. Це стиль дизайну процесора, який оптимізує продуктивність, спрощуючи декодування кожної інструкції. Це порівняно з CISC або Complex Instruction Set Computer, який розробляє складніші набори інструкцій, що дозволяє використовувати менше інструкцій для виконання тих самих завдань.

Класичний дизайн RISC включає конвеєр інструкцій. Замість виконання будь-якого з п’яти етапів інструкцій у будь-якому заданому циклі конвеєр дозволяє виконувати всі п’ять етапів. Звичайно, ви не можете виконати всі п’ять етапів однієї інструкції в циклі. Але ви можете поставити в чергу п’ять послідовних інструкцій зі зміщенням на один етап кожна. Таким чином, нова інструкція може бути виконана кожен такт. Пропонуючи потенційне 5-кратне збільшення продуктивності за відносно низького зростання складності ядра.

У скалярному конвеєрному процесорі кожен етап виконання інструкцій може виконуватися один раз за такт. Це дозволяє отримати максимальну пропускну здатність однієї виконаної інструкції за цикл.

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

Все ще послідовний

Ніщо з цього не вирішує проблему очікування відповіді протягом багатьох циклів, коли потрібно запитати різні рівні кешу та оперативної пам’яті. Це також створює нову проблему. Що, якщо одна інструкція покладається на вихідні дані попередньої інструкції? Ці проблеми самостійно вирішує досвідчений диспетчер. Він ретельно планує порядок виконання, щоб жодні інструкції, які покладаються на вихідні дані іншого, не знаходилися надто близько одна до одної. Він також обробляє промахи кешу, паркуючи інструкцію та замінюючи її в конвеєрі іншою інструкції, які готові до виконання та не вимагають результату, відновлюючи інструкцію, коли вона є готовий.

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

Висновок

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