ТОП 10:

Однорідний доступ до пам'яті



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

Якщо шина зайнята, процесор чекає, поки вона не звільниться. Необхідність такого очікування є головним недоліком базової архітектури зі спільною шиною. Кількість процесорів, які можна використати в цій архітектурі, невелика (від 2 до 4).

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

У цьому разі, однак, виникає інша проблема, пов'язана із необхідністю під­тримки когерентності кеша (cache coherence) — погодженості даних, які перебу­вають у кешах різних процесорів.

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

Забезпечення когерентності кеша спричиняє зниження продуктивності. Необ­хідно, аби процесор, що змінює дані в пам'яті, передавав шиною спеціальний сигнал, який сповіщає інші процесори про цю зміну. У разі отримання сигналу кожен процесор, який визначив, що він кешував ті ж самі дані, має вилучити їх із кеша (зробити перехресне очищення кеша, cross invalidation). Періодичні звертання процесорів до шини для виявлення сигналу і перехресне очищення кеша займають багато часу. Крім того, підвищується ймовірність промаху під час доступу до кеша.

Незважаючи на ці проблеми, UMA-архітектуру із когерентним кешем широко використовують на практиці.

 

Неоднорідний доступ до пам'яті

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

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

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

 

Підтримка багатопроцесорності в операційних системах

Розглянемо підходи до реалізації підтримки багатопроцесорності в ОС на про­грамному рівні.

 







Последнее изменение этой страницы: 2017-02-06; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.231.220.225 (0.003 с.)