logo
AOM / Мельник А

12.7.3. Системи з неоднорідним доступом до пам'яті

У системі NUMAкожен процесор має частину спільної пам'яті (рис. 12.20). Ця пам'ять має єдиний адресний простір. Тому, будь-який процесор може звернутися до будь-якої комірки спільної пам'яті безпосередньо, використовуючи її адресу. Проте час доступу до модулів спільної пам'яті залежить від 'їх відстані від процесора. Це приводить до різного (неоднорідного) часу доступу до пам'яті від різних процесорів. Використовується кілька архітектур для підключення процесорів до модулів пам'яті в системі NUMA.

Як правило, система NUMAрозрахована на застосування великої кількості проце­сорів. UMA є більш вибагливою щодо швидкодії підсистеми пам'яті. Тобто реалізація UMA є порівняно простішою та розповсюдженішою (багатопроцесорні сервери фірмі: Compaq, як приклад). Архітектуру NUMA реалізовано, наприклад, в суперкомп'ютері ORIGIN 2000 фірми SGI (більш точно - тут є архітектура CC-NUMA, або NUMA із мно­жиною когерентних кеш пам'ятей).

У симетричних багатопроцесорних комп'ютерних системах із спільною пам'яттю має місце практична межа числа їх процесорів. Ефективна схема з кеш пам'яттю зменшує

443

навантаження на шину між процесором і основною пам'яттю, але зі збільшенням чис­ла процесорів навантаження на шину також зростає. Оскільки шина використовується також для передачі сигналів, що забезпечують когерентність, ситуація з навантаженням на шину ще більш ускладнюється. З якогось моменту в плані продуктивності шина пере­творюється на вузьке місце. Для систем із спільною пам'яттю такою межею стає число процесорів в межах від 16 до 64. Наприклад, кількість процесорів системи Silicon Grap­hics Power Challenge обмежена 64 процесорами типу R10000, оскільки при подальшому збільшенні числа процесорів продуктивність падає.

Обмеження на число процесорів в архітектурі з спільною пам'яттю служить спо­нукальним мотивом для розвитку кластерних систем. В останніх кожен вузол має ло­кальну основну пам'ять, тобто додатки "не бачать" спільної основної пам'яті. По суті, когерентність підтримується не стільки апаратурою, скільки програмним забезпечен­ням, що не кращим чином позначається на продуктивності. Одним із шляхів створення великомасштабних комп'ютерних систем є технологія CC-NUMA.Наприклад, система NUMASiliconGraphicsOriginпідтримує до 1024 процесорів R10000.Технологія CC-NUMAпередбачає включення множини незалежних вузлів, кожний з яких може бути, наприклад, системою із спільною пам'яттю. Таким чином, вузол містить множину про­цесорів, у кожного з яких присутні локальні кеш пам'яті першого і другого рівнів. У вузлі є й основна пам'ять, спільна для всіх процесорів цього вузла, але така, що розглядається як частина спільної основної пам'яті системи. В архітектурі CC-NUMA вузол виступає основним будівельним блоком. Наприклад, кожен вузол у системі Silicon Graphics Origin містить два мікропроцесори MIPS R10000. Вузли об'єднуються за допомогою якої-не-будь комунікаційної мережі, яка представлена координатним комутатором, кільцем або має іншу топологію.

Відповідно до технології CC-NUMA,кожен вузол у системі володіє власною осно­вною пам'яттю, але з погляду процесорів має місце спільна пам'ять, де кожен елемент будь-якої локальної основної пам'яті має унікальну системну адресу. Коли процесор іні­ціює доступ до пам'яті і потрібна комірка відсутня в його локальній кеш пам'яті, кеш-пам'ять другого рівня процесора організує операцію вибірки. Якщо потрібна комірка знаходиться в локальній основній пам'яті, вибірка проводиться з використанням локаль­ної шини. Якщо ж необхідна комірка зберігається у віддаленій секції спільної пам'яті, то автоматично формується запит, що посилається по комунікаційній мережі на потрібну локальну шину, і вже по ній до підключеної до даної локальної шини кеш пам'яті. Всі ці дії виконуються автоматично, прозорі для процесора і його кеш пам'яті.

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