Кеш процесора, структура кеш - life-prog

Хоча кеш і невидимий для операційної системи, він взаємодіє з апаратним забезпеченням, пов'язаним з пам'яттю. Більш того, багато хто з принципів, використовуваних в схемах віртуальної пам'яті, застосовні також до кеш-пам'яті.







обгрунтування

При виконанні кожного циклу команди процесор принаймні один раз звертається до пам'яті, щоб зробити вибірку команди. Часто це відбувається повторно, причому можливі випадки декількох повторних звернень, при яких витягуються операнди і / або зберігаються результати. Частота, з якою процесор виконує команди, обмежена часом звернення до пам'яті. Роками це обмеження було істотною проблемою через постійне невідповідності між швидкістю процесора і швидкістю доступу до основної пам'яті - швидкість процесора зростала швидше, ніж швидкість доступу до пам'яті. Постійно потрібно було шукати компроміс між швидкістю, вартістю і ємністю. В ідеалі основна пам'ять повинна була б проводитися за тією ж технологією, що і регістри процесора, щоб час циклу пам'яті було порівняно з часом циклу процесора. Однак ця стратегія призводить до занадто великих витрат. Рішенням проблеми стало використання принципу локалізації, при якому між процесором і основною пам'яттю поміщається пам'ять з невеликою ємністю і швидким часом доступу, а саме - кеш.

Принципи роботи кеша

Кеш процесора, структура кеш - life-prog

Мал. 1.16. Кеш і основна пам'ять

Кеш процесора, структура кеш - life-prog

Мал. 1.17. Структура кеша і основної пам'яті

Кеш процесора, структура кеш - life-prog







Мал. 1.18. Операція читання кеш-пам'яті

Внутрішній устрій кеша

  • розмір кешу;
  • розмір блоку;
  • функція відображення;
  • алгоритм заміщення;
  • стратегія записи.


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

При зчитуванні в кеш нового блоку даних функція відображення визначає, яке місце буде відведено для цього блоку. Розробляючи цю функцію, необхідно враховувати два фактори, що накладають на неї певні обмеження. По-перше, при зчитуванні блоку, ймовірно, він замінить інший блок в кеші. Хотілося б зробити це таким чином, щоб звести до мінімуму ймовірність того, що замінюється блок знадобиться в найближчому майбутньому. Чим більш гнучкою є функція відображення, тим більше можливостей для розробки такого алгоритму заміни, який би дозволив збільшити результативність пошуку. По-друге, зі збільшенням гнучкості функції відображення повинні ускладнюватися схеми, що дозволяють визначити наявність в кеші необхідної інформації і забезпечити її пошук.

При завантаженні блоків в кеш в кінці кінців настає момент, коли всі слоти заповнюються і новий блок потрібно записувати на місце, зайняте якимось іншим блоком. Вибір цього блоку здійснюється відповідно до алгоритму заміщення. на який накладає обмеження відображає функція. При цьому бажано було б прибрати саме той блок, який, швидше за все, не знадобиться в найближчому майбутньому. Хоча достеменно визначити його неможливо, досить ефективною стратегією є заміна блоку, до якого найдовше не було звернень. Така стратегія називається політикою недавнього використання блоку (least-recently-used - LRU). Для визначення використовуваного блоків необхідний відповідний апаратно реалізований механізм.

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







Схожі статті