ємність кеш-пам'яті набагато менша від ємності основної оперативної пам'яті, кеш не може зберігати копію всієї основної пам'яті. Він зберігає лише обмежену кількість даних і каталог (cache directory) – список поточної відповідності даних ділянкам основної пам'яті. Загалом не вся пам'ять, яка доступна процесору, може кешуватися.
Кеш-попадання (cache hit) – звернення, за якого дані, необхідні процесору, попередньо зчитані в кеш з основної оперативної пам'яті.
Ефективність кеша виражається коефіцієнтом збігу, чи успіху. Він дорівнює відношенню кількості вдалих звернень до кеша до загальної кількості звернень.
Кеш-промах (cache miss) – звернення, за якого контролер кеша не передбачив необхідності в даних, що знаходяться за вказаною абсолютною адресою; в цьому випадку процесор повинен зчитувати дані не з кеша. а з оперативної пам'яті.
Зчитуючи дані з оперативної пам'яті, процесор повинен буде очікувати певний час, оскільки тактова частота оперативної пам'яті значно нижча за тактову частоту процесора. Відповідно до алгоритму кешування блок даних, зчитаний з оперативної пам'яті, заміщається за певних умов блоком даних з кеша. Від «інтелектуальності» алгоритму залежить відсоток попадань і відповідно ефективність кешування. Звернення до основної пам'яті може починатись одночасно з пошуком в каталозі, а в разі попадання – перериватися. Такий підхід відповідає архітектурі Look aside. При цьому економиться пам'ять, але зайві звернення до основної пам'яті збільшують енергоспоживання. За архітектури Look Through звернення до основної пам'яті починається тільки після фіксації промаху. При цьому губиться щонайменше один такт процесора, але заощаджується енергоспоживання.
Кеш-пам'ять у сучасних комп'ютерах будується за дворівневою схемою.
Первинний (внутрішній) кеш (LI Cache – кеш рівня 1), або кеш першого рівня, вбудований в процесори, починаючи з i486. Ємність такого кеша порівняно з основною оперативною пам'яттю невелика і становить 8-64 Кбайт, швидкодія – 10-2 нс.
Він може бути побудований з використанням двох архітектур: прінстонської та гарвардської. Прінстонська архітектура передбачає використання спільної пам'яті L1 для зберігання даних і команд. За гарвардської архітектури пам'ять L1 розподіляється на дві рівні частини, одна з яких використовується для зберігання команд, інша – для даних. Кеш L1 безпосередньо вбудований в мікросхему ядра процесора.
Вторинний (зовнішній) кеш (L2 Cache), або кеш другого рівня, встановлюється на системній платі, а в процесорах Р6 – на картриджі в одній упаковці з ядром і підключається до спеціальної внутрішньої шини процесора. Виготовляється у вигляді окремої мікросхеми. Якщо він встановлений на системній платі, то працює на її частоті й знаходиться поруч з мікросхемою процесора. У процесорах Р6 кеш другого рівня міститься не на системній платі, а на картриджі разом з матрицею процесора або на кристалі процесора.
В табл. 1.2 наведено динамічні параметри кешів різних рівнів у сучасних комп'ютерах фірми Intel.
Спочатку кеші проектувались як асинхронні й не були синхронізовані із системною шиною. Згодом, у 1995 p., було розроблено кеш синхронного типу, який працює синхронно із системною шиною процесора. Це підвищує його швидкодію та ефективність. Крім того, в цей же час функціонування процесорів було доповнено конвеєрним монопольним режимом (Pipeline Burst mode), що дало можливість скоротити період очікування за рахунок зменшення кількості станів очікування після першої передачі даних. Ці режими дали змогу підвищити ефективність комп'ютерів приблизно на 20%.
Таблиця 1.
Динамічні параметри кешів різних рівнів
Тип процесора | 486DX4 | Pentium | Pentium Pro | Pentium II | Pentium II (1998 p.)
Швидкодія кеша першого рівня, нс (МГц) | 10 (100) | 4(233) | 5 (200) | 3 (300) | 2 (400)
Швидкодія кеша другого рівня, нс (МГц) | 30 (33) | 15(66) | 5 (200) | 6(150) | 5(200)
Швидкодія системної плати, МГц | 33 | 66 | 66 | 66 | 100
Швидкодія
SIMM / DIMM, нс (МГц) | 60(16) | 60(16) | 60(16) | 15 (66) | 10(100)
Контролер кеша сучасних процесорів розміщений або в мікросхемі North Bridge (частина системної логіки, картридж з процесором і наступними елементами системної логіки: кеш-пам'ять, пам'ять, контролер AGP та ін.) комплекту мікросхем системної логіки на основі процесора Pentium, або на платі процесорів Pentium Pro, Pentium II і Pentium III.
Ефективність і можливості кеша залежать від його контролера. Більшість контролерів мають обмеження на ємність кешованої пам'яті. Для комплекту мікросхем системної логіки 430ТХ, який застосовується в комп'ютерах на основі процесора Pentium, вона становить 64 Мбайт. У такому випадку кешуються дані тільки в межах перших 64 Мбайт основної оперативної пам'яті, а всі дані після перших 64 Мбайт ніколи не потраплять в кеш, і при зверненні до них завжди необхідні всі стани очікування, що визначаються повільнішою логікою DRAM.
До значного уповільнення роботи комп'ютера загалом можуть призвести тип програмного забезпечення та адреси, за якими зберігаються дані оперативної пам'яті. Так, наприклад, операційні системи Windows 95/98 і NT завантажуються в оперативну пам'ять; і, якщо встановлено оперативну пам'ять ємністю 96 Мбайт, то операційна система і прикладні програми завантажуватимуться безпосередньо у верхні 32 Мбайт, які не кешуються. В цьому випадку можна зменшити ємність оперативної пам'яті до 64 Мбайт, тобто немає необхідності встановлювати ємність оперативної пам'яті більшу, ніж дає змогу її кешувати комплект мікросхем системної логіки.
Контролер кеша повинен забезпечувати когерентність (coherency) – узгодженість даних кеш-пам'яті обох рівнів з даними основної пам'яті при тому, що звернення до цих даних може здійснюватись не тільки процесором, а й іншими активними пристроями (busmaster), під'єднаними до системних шин РСІ, VLB, ISA та ін. У складі обчислювальної системи (мережі) може бути кілька