ідповідність її "строк" з відповідними рядками кеш-пам'яті, тобто п-й рядок кеш-пам'яті відповідає n-й "рядку" даної "сторінки" оперативної пам'яті. p> Розглянемо механізм роботи кеш-пам'яті різних видів асоціативності. Припустимо, є абстрактна модель з вісьмома рядками кеш-пам'яті і 64 еквівалентними рядками оперативної пам'яті. Потрібен помістити в кеш рядок 9 оперативної пам'яті (зауважимо, що всі рядки нумеруються від нуля і по зростаючій). У моделі з прямим відображенням ця рядок може зайняти тільки одне місце: 9 mod 8 = 1 (Обчислення остачі від ділення без остачі), тобто місце рядка 1. Якщо взяти модель з двоканальної асоціативністю, то цей рядок може зайняти одне з двох місць: 9 mod 4 = 1, тобто рядок 1 будь-якого каналу (сегмента). Полноассоціатівная модель надає свободу для розміщення, і даний рядок може зайняти місце будь-який з восьми наявних. Іншими словами, фактично є 8 каналів, кожен з яких складається з 1 рядка. p> Жодна з вищезгаданих моделей не дозволить, зрозуміло, помістити в кеш більше рядків, ніж він фізично в змозі розмістити, вони лише пропонують різні варіанти, що розрізняються балансом ефективності використання кешу і швидкості доступу до нього. br/>
Типи підключення кеш-пам'яті
Кількість портів читання-запису кеш-пам'яті - показник того, скільки одночасних операцій читання-запису може бути оброблено. Хоча жорстких вимог і немає, певну відповідність набору функціональних пристроїв ЦП повинно простежуватися, так як відсутність вільного порту під час виконання команди призведе до вимушеного простою. p> Існує два основних способи підключення кешпамяті до ЦП для читання: наскрізний і побічний (Look-Through і Look-Aside). Суть першого в тому, що при необхідності дані спочатку запитуються у контролерів кеш-пам'яті самого високого рівня, який перевіряє стан підключених тегів і повертає або потрібну інформацію, або негативний відповідь, і в цьому випадку запит перенаправляється в більш низький рівень ієрархії кеш-пам'яті або в оперативну пам'ять. При реалізації другого способу читання запит одночасно надсилається як кеш-контролера самого високого рівня, так і іншим кеш-контролерів і контролеру оперативної пам'яті. Недолік першого способу очевидна: при відсутності інформації в кеші високого рівня доводиться повторювати запит, і час простою ЦП збільшується. Недолік другого підходу - висока надмірність операцій і, як наслідок, "Засмічення" внутрішніх шин ЦП і системної шини непотрібною інформацією. Логічно припустити, що якщо для кешей L1 оптимальна наскрізна схема, то для T-cache або B-cache побічна схема може виявитися більш вигідною. Для S-cache вибір неоднозначний. p> Розрізняють також локальний і віддалений кеш. Локальним називають кеш, що знаходиться або в ядрі ЦП, або на тій же кремнієвій підкладці або в корпусі ЦП, віддаленим - розміщений на системної платі. Відповідно локальним кешем управляє контролер в ядрі ЦП, а віддаленим - НМС системної плати. Локальний кеш з точки зору швидкодії переважно, оскільки інтерфейс до віддаленого кешу зазвичай мультиплексується з системною шиною. З одного боку, коли інший ЦП захоплює загальну системну шину або який-небудь периферійний контролер звертається до пам'яті безпосередньо, віддалений кеш може виявитися тимчасово недоступним. З іншого - такий кеш легше використовувати в багатопроцесорних системах. p> Існують два поширених способу запису в кеш: наскрізний (Write-Through) і зворотного (Write-Back) запису. У першому випадку інформація одночасно зберігається як у поточний, так і в більш низький рівень ієрархії кеш-пам'яті (або прямо в оперативну пам'ять за відсутності такого). У другому - дані зберігаються тільки в поточному рівні кеш-пам'яті, при цьому виникає ситуація, коли інформація в кеші і оперативної пам'яті розрізняється, причому остання стає застарілою. Для того щоб при скиданні кешу інформація не була необоротно втрачена, до кожної рядку кеша додається "брудний" біт (dirty bit, інакше відомий як modified). Він потрібен для позначення того, чи відповідає інформація в кеші інформації в оперативній пам'яті, і чи слід її записати в пам'ять при скиданні кеша. p> Також слід згадати спосіб резервування запису (write allocation). При запису даних в оперативну пам'ять часто виникає ситуація, коли записувані дані можуть скоро знадобитися, і тоді їх доведеться досить довго довантажувати. Резервування запису дозволяє частково вирішити цю проблему: дані записуються не в оперативну пам'ять, а в кеш. Рядок кеша, замість якій записуються дані, повністю вивантажується в оперативну пам'ять. Так як знову записаних даних зазвичай недостатньо для формування повної рядка кешу, з оперативної пам'яті запитується відсутня інформація. Коли вона отримана, новий рядок записується, і тег оновлюється. Певних переваг чи недоліків такий підхід не має - іноді це може дати незначний приріст продуктивності, але так...