Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекцii_ALL.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.55 Mб
Скачать

2.2. Паралелізм на рівні команд

Розробники комп'ютерів прагнуть до того, щоб поліпшити продуктивність машин, над якими вони працюють. Один із способів змусити процесори працювати швидше – збільшення їхньої швидкості, однак при цьому існують деякі технологічні обмеження, пов'язані з конкретним історичним періодом. Тому більшість розробників для досягнення кращої продуктивності при даній швидкості роботи процесора використовують паралелізм (можливість виконувати дві або більш операції одночасно).

Існує дві основні форми паралелізму: паралелізм на рівні команд і паралелізм на рівні процесорів. У першому випадку паралелізм здійснюється в межах окремих команд і забезпечує виконання великої кількості команд у секунду. В другому випадку над одною задачею працюють одночасно кілька процесорів. Кожен підхід має свої переваги.

2.3. Конвеєри

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

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

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

С1 С2 С3 С4 С5

С1 1 2 3 4 5 6 7 8 9

С2 1 2 3 4 5 6 7 8

С3 1 2 3 4 5 6 7 ...

С4 1 2 3 4 5 6

С5 1 2 3 4 5

1 2 3 4 5 6 7 8 9

Час

Рис. 2.1. Конвеєр з 5 стадій (а); стан кожної стадії в залено

сті від кількості пройдених циклів (б). (Показано 9 циклів)

На рис. 2.1, б зображено, як діє конвеєр у часі. Під час циклу 1 стадія С1 працює над командою 1, викликаючи її з пам'яті. Під час циклу 2 стадія С2 декодує команду 1, у той час як стадія С1 викликає з пам'яті команду 2. Під час циклу 3 стадія СЗ викликає операнди для команди 1, стадія С2 декодує команду 2, а стадія С1 викликає третю команду. Під час циклу 4 стадія С4 виконує команду 1, С3 викликає операнди для команди 2, С2 декодує команду 3, а С1 викликає команду 4. Нарешті, під час п'ятого циклу С5 записує результат виконання команди 1 назад у регістр, тоді як інші стадії працюють над наступними командами.

Припустимо, що час циклу в цієї машини 2 нс. Тоді для того, щоб одна команда пройшла через весь конвеєр, потрібно 10 нс. На перший погляд може показатися, що такий комп'ютер може виконувати 100 млн команд у секунду, у дійсності ж швидкість його роботи є набагато вищою. Під час кожного циклу (2 нс) завершується виконання однієї нової команди, тому машина виконує не 100 млн, а 500 млн команд у секунду.

Конвеєри дозволяють знайти компроміс між часом очікування (скільки часу займає виконання однієї команди) і пропускною здатністю процесора (скільки мільйонів команд у секунду виконує процесор). Якщо час циклу складає Т нс, а конвеєр містить п стадій, то час очікування складе пТ нс, а пропускна здатність – 1000/Т млн команд у секунду.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]