Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kompyuterni_sistemi_lektsiyi_1_1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
241.66 Кб
Скачать

3 Класифікація протоколів когерентності кешів

Існує декілька класів протоків когерентності:

  1. Протоколи на основі довідника directory based. В даних протоколах інформація про тсан блоку пам’яті зберігається тільки в одному місці, яке називається довідником;

  2. Протоколи спостереження snooping, В даних протоколах кожен кеш містить копію службової інформації про стан оперативної пам’яті, а також прослуховує шину даних на факти змін стану пам’яті.

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

Другий клас використовуються в більш простіших системах, а також в багатоядерних процесорах.

Протокол на основі повного довідника

Даний протокол є найпростішим. Існує єдиний централізований довідник, який зберігає в основній пам’яті і який містить інформацію про всі кеші.

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

Для кожного блоку оперативної пам’яті в довіднику є запис, який містить вказівники на копію даного блоку. Крім того, в кожному записі виділяться 1 біт модифікації, який показує, чи є копія «грязною» dirty =1, чи вона чиста clean =0. Цей біт показує, чи може процесор записати дані в запис.

В системі з N процесорів кожен запис довідника буде містити n однобітних вказівників. Якщо у відповідній локальній кеш пам’яті є копія даних, то відповідний біт встановлюється в одиницю, в іншому випадку =0. Кожному запису надається 2 біти стану.

1 — біт достовірності V.

2 — біт володіння P.

Якщо інформація в записі коректна, її біт V=1. Одиничне значення P біта вказує, що даному процесору надається право на запис у відповідний блок своєї локальної кеш пам’яті.

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

Протоколи підслуховування snooping

В даних системах процесор з’єднується загальною шиною, до якої під’єднуються кеші всіх процесорів системи, до неї підключаються контролери основної пам’яті interconnect. Будь-які запити, які відправляються на шину, прослуховуються усіма учасниками обміну.

Принципи комунікації:

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

  2. Для виконання будь-якої дії, підтвердження від інших учасників непотрібне. Проте кожен з учасників може відмінити транзакцію, яку почав інший.

MSI протокол

Всі блоки даних, які керуються в кеші процесора, мають додаткове поле, яке описує стан даного блоку. В MSI кожен блок може бути помічений як Modified, Shared, Invalid.

Стан М вказує на те, що даний блок є «грязним» (тобто в оперативній пам’яті зберігається некоректне значення, а коректне зберігається в кеші), причому даний блок зберігає тільки один процесор.

Стан S вказує на те, що даний блок пам’яті є коректним, але декілька процесорів мають копії даних блоків в своїх кешах.

Стан І вказує, що даний блок є некоректним і значення його треба зчитати з оперативної пам’яті.

В момент зчитування кожен процесор перевіряє, чи є ці дані в кеші, якщо їх немає або вони є І, процесор зчитує ці дані з оперативної пам’яті і помічає блок як S. Відповідно, кожен з інших процесорів слухає шину і якщо хоча б в одному з процесорів є даний блок пам’яті з модифікатором M, то даний процесор призупиняє транзакцію зчитування даних, записує модифіковані дані в оперативній пам’яті (помічаючи при цьому свій блок як S, після чого дозволяє іншим процесорам зчитувати ці дані). У випадку зміни даних процесор змінює дані в своєму кеші, і якщо цей блок був в стан S, то він розсилає сигнал іншим процесорам системи, щоб вони анулювали свої кеші. Сам процесор переводить цей блок в стан М.

Основний недолік протоколу MSI — це його завантаження шини, а також досить громіздка процедура переходу з стану S в стан М.

Компанія Intel в багатопроцесорних системах використовують протокол MESI.

Додатковий стан визначає, блок пам’яті належить тільки одному процесору і при зміні даних даного блоку немає необхідності повідомляти інші процесори. Блок пам’яті переводиться в даний стан в момент зчитування, якщо інший процесор на вказує в момент виклику, що вони мають цей блок даних. Якщо блок знаходиться в даному стані і в цей момент інший процесор запрошує цей блок, то що один що другий процесор помічає цей блок як S. Якщо процесор модифікує ексклюзивні дані, то блок даних переводиться в режим М.

Протокол MESIF

Даний протокол модифікує протокол MESI тим, що додає ще один стан, який називається Forward. Даний стан є підвидом стану S з тією лише відмінністю, що даний блок пам’яті інші процесори можуть зчитуватися не з оперативної пам’яті, а прямо з кеша іншого процесора. Якщо декілька процесорів мають один і той же блок в стані S, то немає необхідності звертатися іншому процесору в оперативну пам’ять за даним блоком. Він просто візьме копію, яка помічається як Fв локальній пам’яті іншого процесора. В даний стан переводиться переводиться останній блок пам’яті, який керувався

Протокол MOESI

В кеші додається стан owned — O, вказує на те, що даний блок пам’яті є найактуальніший (в оперативній пам’яті — некоректне значення) і інші процесори мають копію даного блоку. Тільки один процесор може володіти блоком пам’яті з даним станом. В даний стан блок переводиться зі стану М або Е, коли інший процесор намагається зчитати даний блок з оперативної пам’яті.

На відміну від інший протоколів дана транзакція не зупиняється, а значення копіюється з того процесора, в якого ці дані стану М або Е. даний блок помічається станом О в процесор з якого копіювали і станом S у процесора, який скопійований. Відповідно, якщо процесор хоче записати дані в блок, помічений як О, то всі інші процесори отримують сигнал, що вони повинні оновити дані з даного процесора. В іншому випадку працює аналогічно MESI.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]