м того, щоб повністю реалізувати можливості розширеного конвеєра, необхідно підвищити тактову частоту, а це, як ми знаємо, призводить до підвищеним енергоспоживанню і тепловіддачі. p> Нарешті, можна реалізувати багатопоточність. Перевага цієї технології полягає у введенні додаткового програмного потоку, дозволяє ввести в дію ті апаратні ресурси, які в іншому випадку простоювали б. За результатами експериментальних досліджень розробники Intel з'ясували, що збільшення площі мікросхеми на 5% при реалізації багатопоточності для багатьох програм дає приріст продуктивності на 25%. Першим процесором Intel з підтримкою багатопоточності став Хеоn 2002 року. Згодом, починаючи з частоти 3,06 ГГц, багатопоточність була впроваджена в лінійку Pentium 4. Intel називає реалізацію багатопоточності в Pentium 4 гіперпоточностью (hyperthreading). p> 7 Закон Амдала. Закон Густафсона В
7.1 Прискорення, ефективність, завантаження і якість
Паралелізм досягається за рахунок того, що у складі обчислювальної системи окремі пристрої присутні в декількох копіях. Так, до складу процесора може входити кілька АЛУ, і висока продуктивність забезпечується за рахунок одночасної роботи всіх цих АЛП. Другий підхід був описаний раніше.
Розглянемо паралельне виконання програми з наступними характеристиками:
О (n) - загальне число операцій (команд), виконаних на n-процесорної системі;
Т (n) - час виконання О (n) операцій на n-процесорної системі у вигляді числа квантів часу.
У загальному випадку Т (n) <О (n), якщо в одиницю часу n процесорами виконується більш ніж одна команда, де n> 2. Приймемо, що в однопроцесорній системі T (1) = О (1). p> Прискорення (speedup), або точніше, середнє прискорення за рахунок паралельного виконання програми - це відношення часу, необхідного для виконання найкращого з послідовних алгоритмів на одному процесорі, і часу паралельного обчислення на n процесорах. Без урахування комунікаційних витрат прискорення S (n) визначається як
В
Як правило, прискорення задовольняє умові S (n) n. Ефективність (efficiency) n-процесорної системи - це прискорення на один процесор, яке визначається виразом
В
Ефективність зазвичай відповідає умові 1/n Е (n) n. Для більш реалістичного опису продуктивності паралельних обчислень необхідно промоделювати ситуацію, коли паралельний алгоритм може зажадати більше операцій, ніж його послідовний аналог.
Досить часто організація обчислень на n процесорах пов'язана з істотними витратами. Тому має сенс ввести поняття надмірності (redundancy) у вигляді
В
Це відношення відображає ступінь відповідності між програмним і апаратним паралелізмом. Очевидно, що 1 R (n) n. p> Визначимо ще одне поняття, коефіцієнт корисного використання або утилізації (utilization), як
В
Тоді можна стверджувати, що
В
Розглянемо приклад. Нехай найкращий з відомих послідовних алгоритмів займає 8 с, а паралельний алгоритм займає на п'яти процесорах 2 с. Тоді:
S (n) = 8/2 = 4;
Е (n) = 4/5 = 0,8;
R (n) = 1/0, 8 - 1 = 0,25. p> Власне прискорення визначається шляхом реалізації паралельного алгоритму на одному процесорі.
Якщо прискорення, досягнуте на n процесорах, одно n, то кажуть, що алгоритм показує лінійне прискорення.
У виняткових ситуаціях прискорення S (n) може бути більше, ніж n. У цих випадках іноді застосовують термін суперлінейное прискорення. Дане явище має шанси на виникнення у двох наступних випадках:
Послідовна програма може виконуватися в дуже маленькій пам'яті, викликаючи Свопінг (підкачки), або, що менш очевидно, може призводити до більшого числа кеш-промахів, ніж паралельна версія, де зазвичай кожна паралельна частина коду виконується з використанням багато меншого Набр даних.
Інша причина підвищеного прискорення ілюструється прикладом. Нехай нам потрібно виконати логічну операцію A1 v A2, де як A1 так і А2 мають значення В«ІстинаВ» з імовірністю 50%, причому середній час обчислення Ai, позначене як T (Ai), істотно розрізняється залежно від того, чи є результат істинним або хибним.
Нехай
В
Тепер отримуємо чотири рівноймовірно випадку (Т - В«істинаВ», F - В«брехняВ»):
В
Таким чином, паралельні обчислення на двох процесорах ведуть до середнього прискоренню:
В
Зазначимо, що суперлінейное прискорення викликано жорсткістю послідовної обробки, так як після обчислення ще потрібно перевірити А2. До чинників, які обмежують прискорення, слід віднести:
- Програмні витрати. Навіть якщо послідовні і паралельні алгоритми виконують одні й ті ж обчислення, паралельним алгоритмам притаманні додаткові програмні витрати - додаткові індексні обчислення, неминуче виникають через декомпозиції даних і розподілу їх по процесорах; різні види облікових операцій, вимагаються у паралельних алгоритмах, але відсутні в алгоритмах послідовних.
- Витрати через дисба...