Конвеєр команд: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Dmitry Kazany (обговорення | внесок)
Немає опису редагування
Dmitry Kazany (обговорення | внесок)
Рядок 19:
Спочатку визначимо декілька понять:
*Пропускна спроможність - максимальна кількість команд, які виконуються за один такт машинного часу (instructions per cycle, IPC)
*ДовжинаТривалість етапу (стадії) - кількість машинних циклів для виконання одного етапу конвеєрного обчислення (може бути різною для різних етапів)
*Необхідний (максимальний) ступінь паралелізму - кількість (незалежних) команд, які потрібно завантажити в конвеєр для повного використання його потенціалу
 
===Найпростіший (класичний) конвеєр===
{{TODO}}
[[Зображення:SimplePipeline.gif|center]]
Характеристики пристрою:
*Пропускна спроможність = 1 IPC
*Тривалість стадії = 1 цикл
*Необхідний (максимальний) ступінь паралелізму = 1 команда
 
===Суперскалярний конвеєр===
[[Зображення:SscalarPipeline.gif|center]]
Характеристики пристрою:
*Пропускна спроможність = ''n'' IPC (=3 IPC на малюнку)
*Тривалість стадії = 1 цикл
*Необхідний (максимальний) ступінь паралелізму = ''n'' команд (=3 на малюнку)
 
Як бачимо, в тому випадку, коли тривалість всіх стадій є однаковою, пропускна спроможність суперскалярного конвеєра в ''n'' разів вища за звичайний. Однак для повного завантаження та максимальної ефективності необхідно, щоби на кожному циклі роботи він був завантажений ''n'' командами, які можуть виконуватись незалежно одна від одної. Така вимога істотно обмежує ефективність суперскалярного конвеєра, адже ступінь схованого паралелізму звичайних послідовних програм, зазвичай, є не дуже високою і в середньому обмежена числами близько 2.5-3 ІPC, хоча на окремих класах задач може бути істотно вищою. Подальше збільшення рівня паралелізму потребує вже зміни самої парадигми програмування.
 
===VLIW-конвеєр===
[[Зображення:VLIWPipeline.gif|center]]
*Пропускна спроможність = ''n'' IPC (=3 IPC на малюнку)
*Тривалість стадії = 1 цикл
*Необхідний (максимальний) ступінь паралелізму = ''n'' команд (=3 на малюнку)
З малюнку легко бачити, що базові параметри VLIW-конвеєра повністю співпадають з такими для суперскалярного конвеєра (хоча що стосується реальних, а не теоретичних, показників IPC, то вважається що спеціальні інструменти VLIW-процесорів для виявлення схованого паралелізму послідовних програм є більш оптимістичними, аніж суперскалярний підхід). VLIW-процесори апаратурно є набагато простішими, аніж суперскалярними, і це можна бачити з конфігурації конвеєра. Тут підготовка до виконання цілого комплексу команд, упакованих в довге командне слово, на стадії EX відбувається одночасно (пакування відбувається ще на етапі компіляції програми), тоді як в звичайному суперскалярному процесорі кожна команда проходить усі стадії окремо.
 
===Суперконвеєр===
Припустимо, що деякі (можливо, усі) з вказаних нами етапів типового 5-стадійного конвеєра в свою чергу також допускають розбиття на більш елементарні "суперстадії". Скоріше, суперконвеєр - це не окремий різновид конвеєра, а стратегія його побудови, коли задля збільшення тактової частоти та, відповідно, зменшення тривалості машинного циклу, збільшують кількість стадій конвеєра, кожна з яких в свою чергу може виконуватись швидше, аніж стадія звичайного конвеєра.
Таким чином для звичайного (не суперскалярного) суперконвеєра, в якому кожній "звичайній" стадії відповідає ''m'' "суперстадій" (елементарних стадій):
*Пропускна спроможність = 1 IPC, але тривалість циклу 1/''m'' в порівнянні зі звичайним конвеєром
*Тривалість стадії = 1 цикл для "суперстадії", або ''m'' циклів для кожної "звичайної стадії"
*Необхідний (максимальний) ступінь паралелізму = ''m'' команд
 
Однако нескінченно дрібнити стадії конвеєра та підвищувати таким чином тактову частоту неможливо. Довгі конвеєри стають вкрай неефективними при виконанні команд, які змінюють хід виконання програми (тобто команд умовних та безумовних переходів). Ці команди за певних умов призводять до необхідності повного перезавантаження конвеєра, а чим більше стадій, тим більше часу для цього необхідно.