Тема 5. Кеш- пам'ять
| Сайт: | Навчально-інформаційний портал НУБіП України |
| Курс: | Комп'ютерна схемотехніка та архітектура комп'ютерів (КН). Ч1 ☑️ |
| Книга: | Тема 5. Кеш- пам'ять |
| Надруковано: | Гість-користувач |
| Дата: | четвер, 9 квітня 2026, 18:59 |
1. Загальні питання кешування пам’яті
Кеш-пам’ять персональних комп’ютерів є високошвидкісним буфером, побудованим на мікросхемах SRAM ( Static RAM – статична оперативна пам’ять), який безпосередньо обмінюється даними з процесором. Така пам’ять наявна у всіх 32-розрядних 64-розрядних сучасних процесорах.
Статична пам’ять SRAM без проблем працює на частотах в декілька гігагерц, тобто кеш на основі такої пам’яті може працювати на тактовій частоті процесора. Динамічна пам’ять DRAM функціонує на частотах істотно нижчих. Наприклад, ефективна частота найпоширенішої сьогодні DRAM-пам’яті DDR3 становить 1600 МГц. Однак це саме ефективна частота пам’яті, тобто частота, з якою дані надходять на зовнішню шину в пакетному режимі доступу, а реальна частота ядра пам’яті становить всього 200 МГц. Звичайно ж, нас цікавить в першу чергу саме ефективна частота пам’яті, тобто 1600 МГц, або 1,6 ГГц. Здавалося б, це немало, але потрібно враховувати і таймінги пам’яті, які характеризують її латентність. Причому таймінги пам’яті визначаються в тактах роботи ядра пам’яті, а не в тактах ефективної частоти, тобто для пам’яті DDR3-1600 c частотою роботи ядра пам’яті 200 МГц кожен такт становить 1/200 МГц = 5 нс. У той же час такт процесора з частотою, наприклад, 3 ГГц триває всього 0,3 нс, тобто в 17 разів менше.
Кеш (від англ. Cache - схованка) - особлива швидкісна пам'ять або частина ОЗП, де зберігаються копії часто використовуваних даних. Забезпечує до них швидкий доступ. Кеш пам'ять зберігає вміст і адресу даних, до яких часто звертається процесор. Під час чергового звертання процесора до адреси пам'яті, перевіряється наявність цієї адреси у кеші. Якщо відповідні дані наявні, вони передаються процесору з кешу. Це дозволяє скоротити тривалість обміну, оскільки швидкодія кешу більша за швидкодію звичайної пам'яті. Вибір даних зі звичайної (повільнішої) пам'яті здійснюється лише тоді, коли потрібні процесору дані в кеші відсутні. Вперще ке-пам’ять було застосовано у 1965 році М. Уїлксом в процесі розробки мікропроцесора Atlas та обчислювальній машині Моделі 85, наступної в лінії IBM System/360.
2. Принцип дії
Кеш - це швидка проміжна (буферна) пам'ять невеликої місткості, що розташована поміж процесором і основною пам'яттю. Операції обміну даними між процесором і кешем виконуються швидше, ніж звернення процесора безпосередньо до основної пам'яті, тим самим прискорюється робота процесора з пам'яттю. Найчастіше кеш залишається прозорим для програміста, тому що система команд процесора, зазвичай, не містить команд роботи з кешем. При поясненні роботи кеша можна вважати, що процесор також його «не бачить» і звертається до пам'яті так, ніби кеша немає. Проте кеш, як правило, існує, і на апаратному рівні перехоплює сигнали процесора читання/запис, а коли треба, то надає процесору швидкі копії інформаційних кодів, які тимчасово зберігає у власній робочій пам'яті. Якщо кеш спроможний підмінити собою пам'ять (це називається «попадання в кеш», англ. Cache hit), тоді він за рахунок власних ресурсів задовольняє запит процесора. Процесор не пригальмовується і продовжує працювати на великій швидкості. Коли «підміна» пам'яті неможлива, тоді до роботи залучається основна пам'ять, обмін з якою суттєво пригальмовує процесор.
Усі завдання, пов'язані з перехопленням запитів від процесора на роботу із пам'яттю, вирішує частина апаратури кешу під назвою «контролер кешу». Друга частина апаратури кешу містить невелику швидку робочу пам'ять, де зберігається копія комірок головної пам'яті, до яких нещодавно були звернення, тобто результати «найсвіжіших» запитів процесора. Важливо, що вміст комірок головної пам'яті копіюється до пам'яті кешу разом зі своїми адресами. Саме ці скопійовані адреси і дозволяють контролеру кешу приймати рішення про спроможність буферної пам'яті задовольнити конкретний процесорний запит без залучення до обміну повільної основної пам'яті.
Рис.1
Чим більший розмір кеш-пам'яті, тим більша ймовірність, що необхідні дані знаходяться там. Тому високопродуктивні процесори оснащуються підвищеними обсягами кеш-пам'яті. Розрізняють кеш-пам'ять першого рівня (виконується на одному кристалі з процесором і має об'єм порядку декілька десятків Кбайт), другого рівня (виконується на окремому кристалі, але в межах процесора, з об'ємом в сто і більше Кбайт) та третього рівня (виконується на окремих швидкодійних мікросхемах із розташуванням на материнській платі і має обсяг один і більше Мбайт)
В окремих обчислювальних системах одночасно може використовуватись декілька кешів різного функціонального призначення, в тому числі:
- кеш даних - виконує буферизацію всіх запитів процесора до ОП;
- кеш команд - зберігає наперед вибрані команди процесора, що з великою ймовірністю будуть виконані наступними;
- буфер швидкої переадресації - забезпечує зберігання елементів таблиць сегментів та сторінок для перетворення (трансляції) віртуальних адрес в фізичні без звернення до ОП.
Більшість сучасних мікропроцесорів для комп'ютерів і серверів мають як мінімум три незалежних кеші:
- кеш інструкцій для прискорення завантаження машинного коду
- кеш даних для прискорення читання і запису даних
- буфер асоціативної трансляції (TLB) для прискорення трансляції віртуальних (математичних) адрес у фізичні, як для інструкцій, так і для даних. Кеш даних часто реалізується у вигляді багаторівневого кешу (L1, L2, L3).
3. Рівні кеша
1. Кеш першого рівня L1(від 8 до 128 Кб) - найшвидший, але маленький за об'ємом. З L1 працює безпосередньо ядро процесора. У нього копіюються дані, витягнуті з оперативної пам'яті. Збереження основних команд дозволяє підвищити продуктивність процесора за рахунок більш високої швидкості обробки даних (обробка з кешу швидше, ніж з оперативної пам'яті).
2. Кеш другого рівня L2 (від 128 до 16384 Кб)- дещо більше першого за об'ємом, але повільніше за швидкістю передачі даних. Якщо ви обираєте процесор для ресурсоємних завдань, то модель з великим об'ємом кешу L2 буде актуальною. Для багатоядерних процесорів вказується сумарний об'єм кеш-пам'яті другого рівня.
3. Кеш третього рівня L3(від 0 до 30720 Кб). Цей кеш ще більше за розміром, хоча і трохи повільніше, ніж L2. Інтегрована кеш-пам'ять L3 в поєднанні з швидкою системною шиною формує високошвидкісний канал обміну даними з системною пам'яттю. Як правило, кеш-пам'ять третього рівня комплектуються тільки топові процесори і серверні рішення. Кеш-пам'яттю третього рівня мають, наприклад, такі лінійки процесорів, як AMD Opteron, AMD Phenom, AMD Phenom II, Intel Core i3, Intel Core i5, Intel Core i7, Intel Xeon.
Об'єми кешів L2 і L3 - дуже важливі характеристики. Чим вони більші, тим вище продуктивність процесора.
У багатоядерних процесорах об'єми 1 і 2 рівнів кеша діляться на кількість ядер. Тобто якщо в описі, наприклад, до четирех'ядерному процесора об'єм кеша другого рівня вказаний як «1 Мб», під цим мається на увазі 256 х 4 Кб. Справедливо і зворотна вказівка. Кеш L3 є загальним для всіх ядер.
Вибір ємності кеш-пам'яті - це завжди певний компроміс. З одного боку, кеш-пам'ять повинна бути достатньо мала, щоб її вартісні показники були близькі до величини, характерної для ОП. З іншої - вона повинна бути достатньо великою, щоб середній час доступу в системі, що складається з основної і кеш-пам'яті, визначався часом доступу до кеш-пам'яті. Чим більша ємність кеш-пам'яті, тим більше логічних схем повинні брати участь в її адресації. Як наслідок, ІМС кеш-пам'яті підвищеної ємності працюють повільніше в порівнянні з мікросхемами меншої ємності, навіть якщо вони виконані за однією і тією ж технологією. Реальна ефективність використання кеш-пам'яті залежить від характеру вирішуваних завдань, і неможливо заздалегідь визначити, яка її ємність буде дійсно оптимальною
4. Ексклюзивність (винятковість) і інклюзивність
Для багаторівневих кешей потрібно робити нові архітектурні рішення.
Наприклад, в деякому процесорі може вимагатись, щоб всі дані, що зберігаються в кеші L1, зберігалися також і в кеш-пам'яті L2. Такі пари кешей називають строго інклюзівними (англ. inclusive). Інші процесори (наприклад, AMD Athlon) можуть не мати такого вимоги, тоді кеші називаються ексклюзивні (виняткові)- дані можуть бути або в L1 або L2 кеш, але ніколи не можуть бути одночасно в обох.
Досі іншим процесорам (таким, як Pentium ) не потрібні, щоб дані в кеші першого рівня також розміщувалися в кеші другого рівня, тим не менш, вони продовжують це робити. Немає ніякого універсального загальноприйнятого імені для цієї проміжної політики, хоча часто використовується термін головним чином інклюзівно (англ. mainly inclusive).
Перевага виняткових кешей в тому, що вони зберігають більше даних. Це перевага більша, коли винятковий кеш L1 порівнянний за розміром з кешем L2, і менше, якщо кеш L2 у багато разів більше, ніж кеш L1. Коли L1 пропускає і L2 отримує доступ у разі попадання, рядок кеша попадання в L2 обмінюється з рядком в L1.
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання
Вирівнювання тексту
Ширина абзацу