logo
AOM / Мельник А

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

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

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

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

429

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

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

Технологію гіперпотокової обробки реалізовано в процесорі IntelXeonMP(FosterMP),на якому і відбувалося дослідження ефективності цієї технології. Процесор 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.

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

431

повідність поміж регістрами загального призначення логічних процесорів та фізичного процесора (використовують одну таку таблицю на кожен логічний процесор).

При паралельному опрацюванні двох потоків підтримується вміст двох лічильників команд. Переважна частка команд отримується з таблиці TraceCache(ТС), де ці коман­ди зберігають в декодованому (трансльованому до рівня мікрооперацій) виді. Доступ до ТС обидва активні логічні процесори отримують за чергою, через такт. У той же час, коли активним є лише один логічний процесор, він отримує монопольний доступ до ТС, без чергування за тактами. Так само відбувається і доступ до пам'яті команд, коли треба опрацювати складну команду, що не має динамічно компільованого варіанту для подання на безпосереднє виконання. Буфери перетворення з передісторією ITLB (In­struction Translation Look-aside Buffer), задіяні за умови відсутності необхідних команд у кеш пам'яті команд, дублюються і постачають команди за правилом "кожен для свого потоку". Блок декодування команд є поділюваним і у випадку, коли потрібне декоду­вання команд для обох потоків, обслуговує їх за чергою (знову-таки через такт). Блоки черги мікрооперацій та їх розміщення поділено навпіл, аби розподілити елементи для кожного логічного процесора. Блоки диспетчерів у кількості 5 штук опрацьовують чер­ги декодованих команд, незважаючи на приналежність до LP0 або LP1, і спрямовують команди на виконання цільовим виконавчим блокам залежно від готовності до виконан­ня операндів команд і наявності вільного стану цільових виконавчих блоків (динамічне виконання). Кеш пам'яті усіх рівнів (L1/L2 для Хеоп, а також L3 для Xeon MP) є цілком поділюваними поміж двома логічними процесорами, проте для забезпечення когерент­ності (цілісності) даних записи до буферів перетворення з передісторією DTLB (Data Translation Look-aside Buffer) забезпечуються дескрипторами у вигляді ідентифікаторів логічних процесорів.

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

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

432

потокової обробки без будь-яких змін власних машинних кодів. Але існують і проблеми, Наприклад, якщо один процес знаходиться в стані очікування, то він спроможний за­хопити усі ресурси фізичного процесора, перешкоджаючи тим самим функціонуванню другого логічного процесора. Таким чином, продуктивність при використанні техноло­гії гіперпотокової обробки може іноді й знижуватися (до 20%).

Ще однією метою реалізації технології гіперпотокової обробки було зведення до мінімуму зростання числа транзисторів, площі кристала та енергоспоживання при по­мітному зростанні продуктивності. І це завдання вдалося виконати. Додання до Хеоп/ Xeon-МР підтримки технології гіперпотокової обробки збільшило площу кристала та енергоспоживання лише на 5%.

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

Бачимо зростання продуктивності (темний колір) при використанні другого процесо­ра в порівнянні із базовим її рівнем для одного задіяного процесора, та додатковий при­ріст продуктивності за рахунок увімкнення багатопотокової обробки (світлий колір).