Ноу Інти, лекція, організація і принципи роботи кеш-пам’яті
Управління роботою кеш-пам'яті на рівні сторінок
В елементах каталогу сторінок і таблиць сторінок є 2 біта, які застосовуються для управління вихідними сигналами процесора і беруть участь в кешуванні сторінок.
Біт PCD забороняє (PCD = 1) або дозволяє (PCD = 0) кешування сторінки. Заборона кешування необхідно для сторінок, які містять порти введення / виводу з відображенням на пам'ять. Воно також корисно для сторінок, кешування яких не дає виграшу у швидкодії, наприклад, сайти можуть містити матеріали програму ініціалізації.
Біт PWT визначає метод оновлення ОЗУ і зовнішньої кеш-пам'яті (кеш 2-го рівня). Якщо PWT = 1. то для даних у відповідній сторінці визначається кешування з наскрізною записом, при PWT = 0 застосовується спосіб зворотного запису. Використовується в мікропроцесорах починаючи з Pentium. Так як внутрішня кеш - пам'ять в МП i486 працює з наскрізною записом, стан біта PWT на неї не впливає. Біт PWT в цьому випадку діє тільки на зовнішню КП.
Забезпечення узгодженості кеш-пам'яті мікропроцесорів в мультипроцесорних системах
Розглянемо особливості роботи кеш-пам'яті в тому випадку, коли одночасно кілька мікропроцесорів використовують загальну оперативну пам'ять (рис. 4.4). В цьому випадку можуть виникнути проблеми, пов'язані з кешуванням інформації з оперативної пам'яті в кеш - пам'ять мікропроцесорів.

Мал. 4.4. Структура мультимикропроцессорная системи із загальною оперативною пам'яттю
Припустимо, що МП А вважав деяку рядок даних з ОЗУ в свою внутрішню КП і змінив дані в цьому рядку в процесі роботи.
Ми відзначали, що існує два основних механізми оновлення оперативної пам'яті:
Для забезпечення узгодженості (когерентності) пам'яті в мультипроцесорних системах використовуються апаратні механізми. що дозволяють вирішити цю проблему. Такі механізми називаються протоколами когерентності кеш-пам'яті. Ці протоколи покликані гарантувати, що будь-який зчитування елемента даних повертає останнім за часом записане в нього значення.
Існує два класи протоколів когерентності:
У мультипроцесорних системах із загальною пам'яттю найбільшою популярністю користуються протоколи спостереження. оскільки для опитування стану кешів вони можуть використовувати вже існуюче фізичне з'єднання - шину пам'яті.
Для підтримки когерентності застосовується два основні методи.
Альтернативою протоколу записи з анулюванням є оновлення всіх копій елемента даних в разі запису в цей елемент даних.
Цей тип протоколу називається протоколом записи з оновленням (write update protocol), або протоколом записи з трансляцією (write broadcast protocol).
Розглянемо один з найбільш поширених протоколів, що забезпечують узгоджену роботу кеш-пам'яті декількох мікропроцесорів і основної пам'яті в мультимикропроцессорная системах, протокол MESI. який відноситься до групи протоколів спостереження з анулюванням. Будемо знайомитися з ним на прикладі двухпроцессорной системи, що складається з мікропроцесорів A і B.
Цей протокол використовує 4 ознаки стану рядки кеш-пам'яті мікропроцесора, за першими літерами яких і називається протокол:
- змінений стан (Modified): інформація, що зберігається в кеш-пам'яті мікропроцесора А, достовірна тільки в цьому кеші; вона відсутня в оперативній пам'яті і в кеш-пам'яті інших мікропроцесорів;
- виняткова копія (Exclusive): інформація, що міститься в кеші А, міститься ще тільки в оперативній пам'яті;
- Колективна інформація (Shared): інформація, що міститься в кеші А, міститься в кеш-пам'яті принаймні ще одного МП, а також в оперативній пам'яті;
- недостовірна інформація (Invalid): в рядку кеш-пам'яті знаходиться недостовірна інформація.
Таким чином, стан ознак потокола MESI відображає наступні стани (по відношенню до МПА) рядки кеш-пам'яті (табл. 4.2):
Таблиця 4.2. Формування ознак стану протоколу MESI
Cостояние ознаки протоколу
При роботі мікропроцесора А з точки зору забезпечення когерентності пам'яті можливі наступні ситуації:
- RH (Read Hit) - кеш-попадання при читанні;
- WH (Write Hit) - кеш-попадання під час запису;
- RME (Read Miss Exclusive) - кеш-промах при читанні;
- RMS (Read Miss Shared) - кеш-промах при читанні, але відповідний блок є в кеш-пам'яті другого мікропроцесора;
- WM (Write Miss) - кеш-промах під час запису;
- SHR (Snoop Hit Read) - виявлення копії блоку при прослуховуванні операції читання іншого кешу;
- SHW (Snoop Hit Write) - виявлення копії блоку при прослуховуванні операції записи іншого кеша.
Найбільший інтерес тут представляють дві останні позиції.
Зміни ознаки стану блоку кеш-пам'яті МП в залежності від різних ситуацій в його роботі і роботі мультимикропроцессорная системи в цілому представлені на рис. 4.5.

Мал. 4.5. MESI-діаграма забезпечення когерентності кеш-пам'яті
Проілюструємо деякі з представлених переходів.
При цьому стан рядка в кеш-пам'яті розглянутого мікропроцесора зміниться з модифікованого на поділюване (Shared).
Якщо рядок кеш-пам'яті перебувала в стані Invalid. тобто інформація в ній була недостовірною, то по відношенню до цієї рядку слід розглядати тільки ситуації, пов'язані з кеш-промахами. Так, якщо стався кеш-промах при виконанні операції запису, то необхідна рядок буде занесена в кеш - пам'ять даного МП, в цей рядок будуть записані змінені дані, і вона набуде статусу виключного власника нової інформації (Modified).
Короткі підсумки. У лекції розглянуті загальні принципи функціонування кеш-пам'яті мікропроцесора, організація кеш-пам'яті з прямим відображенням, повністю асоціативної і для множини асоціативної КП. Розглянуто основні механізми оновлення оперативної пам'яті: кешування з наскрізною і зі зворотним записом. Представлена організація внутрішньої кеш-пам'яті мікропроцесора. Розібрані способи забезпечення узгодженості кеш-пам'яті мікропроцесорів в мультипроцесорних системах.