Навігація
Головна
 
Головна arrow Інформатика arrow Архітектура ЕОМ і систем
< Попередня   ЗМІСТ   Наступна >

МУЛЬТИПРОЦЕССОР STANFORD DASH

Склад. Цей мультипроцессор, створений в Стенфордському університеті, є прикладом конкретної реалізації систем CC-NUMA на основі каталогу. Система складається з 16 кластерів, кожен з яких містить (рис. 18.10, а ):

  • • 4 процесорних елемента ПЕ (MIPS R3000), при цьому кожен ПЕ відстежує тільки свою локальну шину;
  • • модуль пам'яті МП об'ємом 16 Мбайт, який виконує функції кеша, що містить 1М = 220 рядків довжиною 16 байт. Загальний обсяг пам'яті дорівнює 16x16 = 256 Мбайт;
  • • каталог з 1М елементів (рис. 18.10, б), який стежить за тим, які кластери мають копії своїх рядків. Кожен елемент містить:
  • • 16 біт (біти 0-15), по одному біту на кластер. Біти показують, чи є в даний момент рядок даного кластера в кеш-пам'яті;
  • • 2-бітове поле, яке повідомляє про стан рядки (Uncachcd - U, Shared - S, Modified - М).

Пам'ять всіх каталогів 18 × 1М × 16 трохи перевищує 36 Мбайт, що становить близько 14% від 256 Мбайт.

Принцип функціонування. Кластери в Stanford DASH мають можливість обмінюватися інформацією один з одним через межкластерний інтерфейс по межкластерним каналах (рис. 18.10 ^).

Кластерний блок (а), каталог (б) і структура (в) DASH

Мал. 18.10. Кластерний блок ( а ), каталог (б) і структура (в) DASH

Кожен рядок кеш-пам'яті може перебувати в одному з трьох наступних станів:

  • • Uncached (некешірованная) - рядок знаходиться тільки в пам'яті;
  • • Shared (спільно використовувана) - рядок в пам'яті містить новітні дані; рядок може знаходитися в декількох блоках кеш-пам'яті;
  • • Modified (змінена) - рядок, що міститься в пам'яті, неправильна ; рядок знаходиться тільки в одній кеш-пам'яті.

Власником рядки в стані Uncached або Shared є власний кластер, а в стані Modified - той кластер, в якому міститься єдина копія цього рядка. Перш ніж записати що-небудь в рядок в стані Shared, потрібно знайти і оголосити недійсними всі існуючі копії.

Як уже зазначалося, стан U, S або М кожного рядка кеш-пам'яті фіксується в поле "Стан" у відповідному елементі каталогу (рис. 18.10, б).

Зчитування з пам'яті. Розглянемо їх дії при зчитуванні рядки. У кожен момент у кожного рядка є власний (унікальний) власник.

Спочатку процесорний елемент ПЕ даного кластера перевіряє свою кеш-пам'ять. Якщо там рядки немає, на локальну шину кластера передається запит для виявлення, чи містить який-небудь інший ПЕ цього ж кластеру потрібний рядок. При наявності рядка відбувається передача її з однієї кеш-пам'яті в іншу, при цьому:

  • • якщо рядок знаходиться в стані Shared, то створюється її копія;
  • • якщо рядок знаходиться в стані Modified, потрібно проінформувати вихідний каталог, що рядок перейшла в стан Shared.

В обох випадках рядок береться з якоїсь кеш-пам'яті. Відзначимо, що каталог містить 1 біт на кластер, а не 1 біт на кожен ПЕ, тому бітове відображення каталогів залишається незмінним.

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

  • • якщо потрібний рядок знаходиться в стані Uncached або Shared, то апаратні засоби викликають цей рядок з глобальної пам'яті і посилають назад в запитувач кластер. Потім оновлюють свій каталог, позначаючи цього рядка як збережену в кеш-пам'яті кластера запитуючої сторони;
  • • якщо потрібний рядок знаходиться в стані Modified, апаратні засоби знаходять кластер, який містить цей рядок, і посилають в цей кластер запит. Отримавши запит, кластер посилає цього рядка в запитувач кластер і позначає її копію як Shared, оскільки тепер ця рядок знаходиться більш ніж в одній кеш-пам'яті. Він також надсилає копію назад в вихідний кластер, щоб оновити пам'ять і змінити стан рядка на Shared.

Запис в пам'ять. Перед тим як здійснити запис, процесорний елемент ПЕ повинен виявити єдиного володаря цього рядка кеш-пам'яті в системі.

При наявності в кеш-пам'яті даного ПЕ цього рядка дії залежать від її стану:

  • • якщо рядок знаходиться в стані Modified, то можна відразу ж здійснити запис;
  • • якщо рядок знаходиться в стані Shared, то попередньо в вихідний кластер надсилається пакет, щоб оголосити всі інші копії недійсними.

При відсутності потрібного рядка в кеш-пам'яті даного ПЕ він надсилає запит на локальну шину, щоб дізнатися, чи немає цього рядка в сусідніх ПЕ:

  • • якщо даний рядок там є, то вона передається з однієї кеш-пам'яті в іншу. Якщо цей рядок в стані Shared, то всі інші копії повинні бути оголошені недійсними;
  • • якщо рядок знаходиться в інших кластерах, в вихідний кластер надсилається пакет. При цьому можливо три варіанти:
  • • якщо рядок знаходиться в стані Uncached, вона позначається як Modified і відправляється до запитувачу процесору;
  • • якщо рядок знаходиться в стані Shared, всі копії оголошуються недійсними і після цього над рядком відбувається та ж процедура, що і над Uncached рядком;
  • • якщо рядок знаходиться в стані Modified, то запит направляється в той кластер, в якому рядок міститься в даний момент. Цей кластер задовольняє запит, а потім оголошує недійсною свою власну копію.
 
Якщо Ви помітили помилку в тексті позначте слово та натисніть Shift + Enter
< Попередня   ЗМІСТ   Наступна >
 
Дисципліни
Агропромисловість
Аудит та Бухоблік
Банківська справа
БЖД
Географія
Документознавство
Екологія
Економіка
Етика та Естетика
Журналістика
Інвестування
Інформатика
Історія
Культурологія
Література
Логіка
Логістика
Маркетинг
Медицина
Нерухомість
Менеджмент
Педагогіка
Політологія
Політекономія
Право
Природознавство
Психологія
Релігієзнавство
Риторика
Соціологія
Статистика
Техніка
Страхова справа
Товарознавство
Туризм
Філософія
Фінанси
Пошук