Кеш

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Кеш (від англ. cache — схованка) — особлива швидкісна пам'ять або частина ОЗП, де зберігаються копії часто використовуваних даних. Забезпечує до них швидкий доступ. Кеш пам'ять зберігає вміст і адресу даних, до яких часто звертається процесор. Під час чергового звертання процесора до адреси пам'яті, перевіряється наявність цієї адреси у кеші. Якщо відповідні дані наявні, вони передаються процесору з кешу. Це дозволяє скоротити тривалість обміну, оскільки швидкодія кешу більша за швидкодію звичайної пам'яті. Вибір даних зі звичайної (повільнішої) пам'яті здійснюється лише тоді, коли потрібні процесору дані в кеші відсутні.

Історія[ред.ред. код]

Використання слова «кеш» у контексті комп'ютерів походить від 1967 року, коли готувалась стаття для публікації в журналі 'IBM Systems Journal'. Стаття стосувалася захоплюючого вдосконалення пам'яті в Моделі 85, наступної в лінії IBM System/360. Редактор журналу, Lyle R. Johnson, попрохав ужити більш описовий термін, ніж «швидкохідний буфер», але іншого слова не було знайдено, тоді він запропонував «кеш». Статтю було опубліковано на початку 1968 року, автори були нагороджені IBM, їх робота широко схвалювалась і згодом була поліпшена, та назва «кеш» швидко стала стандартно вживаною в комп'ютерній літературі.

Принцип дії[ред.ред. код]

Кеш — це швидка проміжна (буферна) пам'ять невеликої місткості, що розташована поміж процесором і основною пам'яттю. Операції обміну даними між процесором і кешем виконуються швидше, ніж звернення процесора безпосередньо до основної пам'яті, тим самим прискорюється робота процесора з пам'яттю. Найчастіше кеш залишається прозорим для програміста, тому що система команд процесора, зазвичай, не містить команд роботи з кешем. При поясненні роботи кеша можна вважати, що процесор також його «не бачить» і звертається до пам'яті так, ніби кеша немає. Проте кеш, як правило, існує, і на апаратному рівні перехоплює сигнали процесора читання/запис, а коли треба, то надає процесору швидкі копії інформаційних кодів, які тимчасово зберігає у власній робочій пам'яті. Якщо кеш спроможний підмінити собою пам'ять (це називається «попадання в кеш», англ. Cache hit), тоді він за рахунок власних ресурсів задовольняє запит процесора. Процесор не пригальмовується і продовжує працювати на великій швидкості. Коли «підміна» пам'яті неможлива, тоді до роботи залучається основна пам'ять, обмін з якою суттєво пригальмовує процесор.

Усі завдання, пов'язані з перехопленням запитів від процесора на роботу із пам'яттю, вирішує частина апаратури кешу під назвою «контролер кешу». Друга частина апаратури кешу містить невелику швидку робочу пам'ять, де зберігається копія комірок головної пам'яті, до яких нещодавно були звернення, тобто результати «найсвіжіших» запитів процесора. Важливо, що вміст комірок головної пам'яті копіюється до пам'яті кешу разом зі своїми адресами. Саме ці скопійовані адреси і дозволяють контролеру кешу приймати рішення про спроможність буферної пам'яті задовольнити конкретний процесорний запит без залучення до обміну повільної основної пам'яті.

В окремих обчислювальних системах одночасно може використовуватись декілька кешів різного функціонального призначення, в тому числі:

  • кеш даних - виконує буферизації всіх запитів процесора до ОП;
  • кеш команд - зберігає наперед вибрані команди процесора, що з великою ймовірністю будуть виконані наступними;
  • буфер швидкої переадресації - забезпечує зберігання елементів таблиць сегментів та сторінок для перетворення (трансляції) віртуальних адрес в фізичні без звернення до ОП.

Більшість сучасних мікропроцесорів для комп'ютерів і серверів мають як мінімум три незалежних кеші: кеш інструкцій для прискорення завантаження машинного коду, кеш даних для прискорення читання і запису даних і буфер асоціативної трансляції (TLB) для прискорення трансляції віртуальних (математичних) адрес у фізичні, як для інструкцій, так і для даних. Кеш даних часто реалізується у вигляді багаторівневого кешу (L1, L2, L3).

Збільшення розміру кеш-пам'яті позитивно впливає на продуктивність майже всіх додатків [1].

Багаторівневі кеші[ред.ред. код]

Багаторівневі кеші зазвичай працюють у послідовності від менших кешей до великих. Спочатку відбувається перевірка найменшого та найшвидшого кеша першого рівня (L1), у разі попадання процесор продовжує роботу на високій швидкості. Якщо менший кеш дав промах, перевіряється наступний, трохи більший і більш повільний кеш другого рівня (L2), і так далі, поки не буде запиту до основного ОЗП.

Література[ред.ред. код]

Примітки[ред.ред. код]

Посилання[ред.ред. код]

Див. також[ред.ред. код]

Комп'ютерна пам'ять