Файл: Мельник А. Архітектура комп\'ютера.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 24.12.2021

Просмотров: 6770

Скачиваний: 22

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

426

тивність системи складає 143 GFLOPS на тесті UNPACK (матричні тести лінійної алгебри), що на порядок перевищує продуктивність машин CRAY.

Суперкомп'ютер Blue Gene фірми IBM. Найшвидший на 2007 рік суперкомп'ютер, створення якого фірма IBM проголосила у грудні 1999 року, отримав назву Blue Gene. Він спроможний виконувати понад один квадрильйон операцій на секунду (1PFLOPS = 1000 TFLOPS= 1000000 GFLOPS). Blue Gene є майже в мільйон разів продуктивнішим від ПК. Ієрархічний дизайн Blue Gene наведено на рис. 12.2.

Blue Gene складено з мільйона процесорів, кожний з яких має продуктивність 1 GFLOPS. 32 таких надшвидких процесори інтегровано до одного кристалу (32 GFLO­PS). Компактна (два фути на два фути) плата вміщує 64 щойно зазначених кристали (2 TFLOPS). Апаратна частина такого друкованого вузла є продуктивнішою від відомого рекордсмена, суперкомп'ютера ASCI міністерства енергетики СІЛА, який займає 8000 квадратних футів площі. 11 друкованих вузлів збирають до одної монтажної 6-ти футо­вої шафової конструкції, яка має продуктивність 16 TFLOPS. Фінальну конструкцію, що займає площу, меншу від 2000 кв. футів, утворено сполученням 64 шаф. Разом отриму­ється продуктивність 1 PFLOPS= 1000 TFLOPS.

12.2. Вибір кількості процесорів у багатопроцесорній системі

Потрібно відзначити, що збільшення кількості процесорів у багатопроцесорній сис­темі не завжди пропорційно зменшує час вирішення задачі. На рис. 12.3 наведено за­лежність прискорення від кількості задіяних процесорів при розв'язанні однієї задачі молекулярної динаміки на багатопроцесорній системі Intel Paragon. Параметром є версія програмного коду. Бачимо, що монотонне зростання прискорення досягнуто лише на другій версії паралельної програми.


427

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

Зрозумілим є намагання програмістів забезпечити лінійне прискорення (теоретич­на межа), коли із збільшенням у п разів кількості задіяних процесорів також у п разів зменшується час виконання програми. Однак це не завжди вдається, і причину цього пояснює закон Амдала.

Закон Амдала і його наслідки. Припустимо, що у деякій програмі частка операцій, які потрібно виконувати послідовно, дорівнює f, де 0<f<l (при цьому частка розуміється не по статичному числу рядків коду, а по числу реально виконуваних операцій). Край­ні випадки в значеннях f відповідають цілком паралельним (f=0) і цілком послідовним (f=l) програмам. Отож, для того, щоб оцінити, яке прискорення S може бути отримане на комп'ютері з р процесорами при даному значенні f, можна скористатися законом Ам­дала, згідно з яким S = p/(l+(p-l)f). При великих значеннях р прискорення S прямує до величини І/f. Тобто, відповідно до цього закону, якщо 9/10 програми здійснюється па­ралельно, а 1/10, як і раніше, послідовно, то прискорення більш ніж у 10 разів одержати в принципі неможливо поза залежністю від якості реалізації паралельної частини коду і кількості використовуваних процесорів (ясно, що прискорення в 10 разів досягається лише в тому випадку, коли час виконання паралельної частини дорівнює 0).

Подивимося на проблему з іншої сторони: а яку ж частину коду треба прискорити (а значить і попередньо досліджувати), щоб одержати задане прискорення? Відповідь можна знайти в наслідку із закону Амдала: для того, щоб прискорити виконання про­грами в q разів необхідно прискорити не менше, ніж у q разів (1 -1/q) -у частину програми. Отже, якщо є бажання прискорити програму в 100 разів у порівнянні з її послідовним варіантом, то необхідно в 100 разів прискорити 99% коду, що майже завжди складає зна­чну частину програми. Таким чином, якщо після оцінки закладеного в програмі алго­ритму стало зрозуміло, що частка послідовних операцій велика, то на значне прискорення


428

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

У зв'язку з наведеними проблемами число процесорів в реальних багатопроцесор­них системах, які орієнтовані в основному на вирішення складних одиничних задач, є невеликим, Інформацію про кількість процесорів таких систем подає рис. 12.4.

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

12.3. Багатопотокова обробка інформації

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

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

Багатопроцесорність на одному кристалі (Chip Multiprocessing). Два процесорні ядра фізично розташовані на одному кристалі із використанням спільної або розподі­леної кеш пам'яті. Природно, що розмір кристала отримують досить великим, що є при­чиною великої вартості цього кристала. В багатопроцесорній системі можуть функціо­нувати декілька таких кристалів.


429

  • Багатопотокова обробка з квантуванням часу (Time-Slice Multithreading). Про­цесор перемикають поміж програмними потоками через фіксовані проміжки часу. На­кладні витрати часом виходять досить значними, особливо якщо який-небудь процес знаходиться в стані очікування

  • Багатопотокова обробка з перемиканням за подіями (Switch-on-Event Multithre­ading). Перемикання задач при наявності тривалих пауз, наприклад "невлучень" до кеш пам'яті, велике число яких притаманне серверним аплікаціям. Тут процес, що чекає на завантаження даних з порівняно повільної основної пам'яті до кеш пам'яті, пригаль­мовують, вивільняючи тим самим ресурси процесора на користь інших процесів. Про­те багатопотокова обробка з перемиканням за подіями, як і багатопотокова обробка з квантуванням часу, не завжди дозволяє досягти оптимального використання ресурсів процесора, зокрема через помилки в передбаченні розгалужень, існуючі залежності по­між командами тощо

  • Одночасна багатопотокова обробка (Simultaneous Multithreading). Тут програм­ні потоки виконуються на одному процесорі "одночасно", тобто без переключення між ними. Ресурси процесора розподіляються динамічно, за принципом "не використовуєш - віддай іншому"

Одночасна багатопотокова обробка покладена в основу технології гіперпотокової обробки (Hyper-Threading) фірми Intel, яку розглянемо детальніше

Багатопотокові обчислення використовуються не лише в серверах, де багатопотоко-вість існує первинно, але і в робочих станціях і настільних персональних комп'ютерах. Потоки можуть відноситися як до однієї, так і до різних прикладних програм, але майже завжди активних потоків більше від одного (аби переконатися в цьому, достатньо у Wi­ndows 2000/ХР відчинити Task Manager та увімкнути відбиття ним числа виконуваних потоків). Разом з тим відомо, що стандартний процесор може одночасно опрацьовувати лише один з декількох існуючих потоків, тому і змушений постійно перемикатися поміж цими потоками

Технологію гіперпотокової обробки реалізовано в процесорі Intel Xeon MP (Foster MP), на якому і відбувалося дослідження ефективності цієї технології. Процесор Xeon MP використовує притаманне Pentium 4 ядро Willamette, містить 256 KB кеш пам'яті другого рівня L2, 512 KB кеш пам'яті третього рівня L3, та підтримує функціонування в чотири-процесорних конфігураціях. Підтримка технології гіперпотокової обробки також присут­ня у процесорі для робочих станцій Intel Xeon (ядро Prestonia, 512 KB кеш пам'яті другого рівня L2), що поступив на ринок дещо раніше від процесора Xeon MP Далі розглянемо можливості технології гіперпотокової обробки на прикладі саме процесора Intel Xeon.

На рис. 12.5 а показано завантаженість процесорів комп'ютерної системи, яка скла­дається з двох суперскалярних процесорів. Кожен процесор може виконувати по 3 ко­манди в одному циклі. Незадіяні (позначено білим) прямокутники свідчать про нео­птимальну утилізацію системних ресурсів В той же ж час технологія гіперпотокової обробки не лише дозволяє опрацьовувати паралельно декілька потоків, але і зменшує при цьому наявне число незадіяних виконавчих часових інтервалів. На рис. 12.5 b по­казано завантаженість процесорів комп'ютерної системи, яка також складається з двох фізичних процесорів, та в якій використовується технологія гіперпотокової обробки. Кожен з процесорів тут опрацьовує по два потоки інформації, що дозволило наблизити систему до пікової продуктивності.




430


Технологія гіперпотокової обробки ґрунтується на тому, що одночасно тільки час­тина ресурсів процесора використовується на опрацювання програмного коду. Не ви­користовувані ресурси можна завантажити іншою роботою, наприклад, задіяти на пара­лельне виконання ще одного додатку (або іншого потоку з того ж додатку). Заради цього в одному фізичному процесорі Intel Xeon формують два логічні процесори (LP - Logical Processor), що поділяють поміж собою обчислювальні ресурси єдиного фізичного про­цесора. Операційна система та прикладна програма "відчувають" саме два логічні про­цесори та спроможні розподіляти роботу між ними так само, як і у випадку повноцінної двопроцесорної системи. Поділ ресурсів (зокрема, виконавчих вузлів) поміж двома по­токами подано на рис. 12.5b.

Потрібно відзначити, що технологією гіперпотокової обробки передбачено, аби при наявності лише одного активного потоку дозволити йому виконуватися з швидкоді­єю, як і на звичайному процесорі, тобто щоб ефективність використання процесора не зменшувалася. Заради цього у процесорі передбачено два режими роботи: однозадачний (03) та багатозадачний (БЗ). У режимі ОЗ активним є лише один логічний процесор, який без обмежень користується наявними ресурсами. Інший логічний процесор призу­пинено командою HALT. Із появою другого програмного потоку логічний процесор, що не був задіяний, активується (за допомогою переривання поточного стану HALT). При цьому фізичний процесор перемикається до стану БЗ. Пригальмовування незадіяних логічних процесорів командою HALT покладено на операційну систему, яка, до речі, і відповідає за таке ж швидке виконання одного потоку, як і у випадку без використання технології Hyper-Threading.

Для кожного з двох логічних процесорів зберігають так званий архітектурний стан (Architecture State), який складено із станів регістрів різного типу - загального призна­чення, керуючих, регістрів контролера переривань і службових (рис. 12.6). У кожного логічного процесора є свій контролер переривань і множина регістрів, для коректної роботи з якими введена таблиця альтернативних назв регістрів, яка відслідковує від-