секторірованного (sectored) кешу, при якому один рядок містить кілька суміжних осередків - секторів, розмір яких відповідає мінімальній порції обміну даних кеша з основною пам'яттю. При цьому в записі каталогу, відповідної кожному рядку, повинні зберігатися біти дійсності для кожного сектора даного рядка. Секторірованіе дозволяє економити пам'ять, необхідну для зберігання каталогу при збільшенні обсягу кешу, оскільки більшу кількість біт каталогу відводиться під тег і вигідніше використовувати додаткові біти дійсності, ніж збільшувати глибину індексу (кількість елементів) каталогу.
Рядки кеша під відображення блоку пам'яті виділяються при промахах операцій читання, в Р6 рядки заповнюються і при записі. Запис блоку, що не має копії в кеші, проводиться в основну пам'ять (для підвищення швидкодії запис може вироблятися через буфер відкладеного запису). Поведінка кеш-контролера при операції запису в пам'ять, коли копія затребуваної області знаходиться в деякій рядку кеша, визначається його алгоритмом, або політикою запису (Write Policy). Існують дві основні політики запису даних з кеша в основну пам'ять: наскрізна запис WT (Write Through) і зворотний запис WB (Write Back).
Політика WT передбачає виконання кожної операції запису (навіть однобайтном), що потрапляє в кешированний блок, одночасно і в рядок кеша, і в основну пам'ять. При цьому процесору при кожній операції запису доведеться виконувати відносно тривалу запис в основну пам'ять. Алгоритм досить простий в реалізації і легко забезпечує цілісність даних за рахунок постійного збігу копій даних в кеші і основної пам'яті. Для нього не потрібно зберігати ознаки присутності і модифікування - цілком достатньо тільки інформації тега (при цьому вважається, що будь-який рядок завжди відображає якийсь блок, а який саме - вказує тег). Але ця простота обертається низькою ефективністю запису. Існують варіанти цього алгоритму із застосуванням відкладеної буферирован записи, при якій дані в основну пам'ять переписуються через FIFO-буфер під час вільних тактів шини.
Політика WB дозволяє зменшити кількість операцій запису на шині основної пам'яті. Якщо блок пам'яті, в який повинен робитися запис, відображений в кеші, то фізична запис спочатку буде проведена в цю дійсну рядок кеша, і вона буде відзначена як брудна (dirty), або модифікована, тобто вимагає вивантаження в основну пам'ять. Тільки після цієї вивантаження (записи в основну пам'ять) рядок стане чистою (clean), і її можна буде використовувати для кешування інших блоків без втрати цілісності даних. В основну пам'ять дані переписуються тільки цілої рядком. Ця вивантаження контролером може відкладатися до настання крайньої необхідності (звернення до кешированной пам'яті іншим абонентом, заміщення в кеші новими даними) або виконуватися у вільний час після модифікації всього рядка. Даний алгоритм складніше в реалізації, але істотно ефективніше, ніж WT. Підтримка системною платою кешування зі зворотним записом вимагає обробки додаткових інтерфейсних сигналів для вивантаження модифікованих рядків в основну пам'ять, якщо до цієї області здійснюється поводження з боку таких контролерів шини, як інші процесори, графічні адаптери, контролери дисків, мережеві адаптери і т. П.
Залежно від способу визначення взаємної відповідності рядка кеша і області основної пам'яті розрізняють три архітектури кеш-пам'яті: кеш прямого відображення (direct-mapped cache), повністю асоціативний кеш (fully associative cache) та їх комбінація -частково- або набірний-асоціативний кеш (set-associative cache).
2. Основні режими роботи
.1 Кеш прямого відображення
Рис. 2. Кеш прямого відображення.
У кеш-пам'яті прямого відображення адреса пам'яті, по якому відбувається звернення, однозначно визначає рядок кеша, в якій може перебувати необхідний блок. Принцип роботи такого кеша пояснимо на прикладі несекторірованного кеша обсягом 256 Кбайт з розміром рядка 32 байта і обсягом Кешована основної пам'яті 64 Мбайт - типовий кеш системної плати для Pentium. Структуру пам'яті в такій системі ілюструє рис. 2.
кешувального основна пам'ять умовно розбивається на сторінки (в даному випадку 256), розмір яких збігається з розміром кеш-пам'яті (256 Кбайт). Кеш-пам'ять (і умовно сторінки основної пам'яті) ділиться на рядки (256К/32=8К рядків). Архітектура прямого відображення увазі, що кожен рядок кеша може відображати з будь-якої сторінки Кешована пам'яті тільки відповідну їй рядок (на малюнку вони знаходяться на одному горизонтальному рівні). Оскільки обсяг основної пам'яті багато більше об'єму кеша, на кожну рядок кеша може претендувати безліч блоків пам'яті з однаковою молодшої частиною адреси (зміщенням всередині сторінки). Один рядок в певний момент може, пр...