Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
31_KC.docx
Скачиваний:
5
Добавлен:
21.08.2019
Размер:
399.15 Кб
Скачать

26.Паралелізм

Паралельні обчислювальні системи - це фізичні комп'ютерні, а також

програмні системи, що реалізовують тим або іншим способом паралельну

обробку даних на багатьох обчислювальних вузлах.

Ідея роспаралелювання обчислень заснована на тому, що більшість

завдань може бути розділена на набір менших завдань, які можуть бути

вирішені одночасно. Зазвичай паралельні обчислення вимагають координації

дій. Паралельні обчислення існують в декількох формах: паралелізм на рівні

бітів, паралелізм на рівні інструкцій, паралелізм даних, паралелізм завдань.

Паралельні обчислення використовувалися багато років в основному у

високопродуктивних обчисленнях, але останнім часом до них зріс інтерес

унаслідок існування фізичних обмежень на зростання тактової частоти

процесорів. Паралельні обчислення стали домінуючою парадигмою в

архітектурі комп'ютерів, в основному у формі багатоядерних процесорів.

Розглянемо типи паралелізму:

1. Паралелізм на рівні бітів

Ця форма паралелізму заснована на збільшенні розміру машинного слова.

Збільшення розміру машинного слова зменшує кількість операцій, необхідних

процесору для виконання дій над змінними, чий розмір перевищує розмір

машинного слова. Наприклад: на 8-бітовому процесорі потрібно скласти два 16-

бітні цілі числа. Для цього спочатку потрібно скласти нижні 8 біт числа, потім

скласти верхні 8 біт і до результату їх складання додати значення прапора

перенесення. Разом 3 інструкції. З 16-бітовим процесором можна виконати цю

операцію однією інструкцією.

Історично 4-бітові мікропроцесори були замінені 8-бітовими, потім

з'явилися 16-бітові і 32-бітові. 32-бітові процесори довгий час були стандартом

в повсякденних обчисленнях. З появою технології x86-64 для цих цілей стали

використовувати 64-бітові процесори.

2. Паралелізм на рівні інструкцій

Комп'ютерна програма - це, по суті, потік інструкцій, що виконуються

процесором. Але можна змінити порядок цих інструкцій, розподілити їх по

групах, які виконуватимуться паралельно, без зміни результату роботи всієї

програми. Даний прийом відомий як паралелізм на рівні інструкцій.

Просування в розвитку паралелізму на рівні інструкцій в архітектурі

комп'ютерів відбувалося з середини 1980-х до середини 1990-х.

Сучасні процесори мають багатоступінчастий конвеєр команд. Кожному

рівню конвеєра відповідає певна дія, що виконується процесором в цій

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

до N різних інструкцій на різному рівні. Класичний приклад процесора з

конвеєром — це RISC-процесор з 5-ма рівнями: вибірка інструкції з пам'яті (IF),

декодування інструкції (ID), виконання інструкції (EX), доступ до пам'яті

(MEM), запис результату в регістри (WB). Процесор Pentium 4 має 35-ти

ступінчатий конвеєр.

Деякі процесори, додатково до використання конвеєрів, володіють

можливістю виконувати декілька інструкцій одночасно, що дає додатковий

паралелізм на рівні інструкцій. Можлива реалізація даного методу за

допомогою суперскалярності, коли інструкції можуть бути згруповані разом

для паралельного виконання (якщо в них немає залежності між даними). Також

можливі реалізації з використанням явного паралелізму на рівні інструкцій:

VLIW і EPIC.

3. Паралелізм даних

Основна ідея підходу, заснованого на паралелізмі даних, полягає в тому,

що одна операція виконується відразу над всіма елементами масиву даних.

Різні фрагменти такого масиву обробляються на векторному процесорі або на

різних процесорах паралельної машини. Розподілом даних між процесорами

займається програма. Векторизація або розпаралелювання в цьому випадку

найчастіше виконується вже на етапі компіляції — перевід вихідного тексту

програми в машинні команди. Роль програміста в цьому випадку зазвичай

зводиться до задання налаштувань векторної або паралельної оптимізації

компілятору, директив паралельної компіляції, використання спеціалізованих

мов для паралельних обчислень.

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