Що таке кеш?

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

Кешування — це процес зберігання тимчасової копії ресурсу таким чином, щоб отримати доступ до нього швидше, ніж зазвичай. Існує величезна кількість програмних і апаратних реалізацій. Кеші можуть діяти як кеші читання, кеші запису або обидва.

Читати кеші

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

Кеш читання, з яким ви, швидше за все, знайомі, це кеш браузера. Тут браузер зберігає локальну копію запитуваних ресурсів. Це означає, що якщо і коли веб-сторінка перезавантажується або завантажується подібна сторінка, яка використовує майже той самий вміст, цей вміст може обслуговуватися з кешу, а не з веб-сервера. Це не тільки означає, що веб-сторінка може завантажуватися швидше, але також зменшує навантаження на веб-сервер і зменшує кількість даних, які користувачеві потрібно завантажити, що може бути важливим для обмежених з’єднань.

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

Кеші запису

Кеш запису — це кеш, який може поглинати дані, що записуються на повільніший пристрій. Типовим прикладом цього може бути SLC-кеш у сучасних SSD. Цей кеш не дозволяє читати дані швидше, однак записувати в нього набагато швидше, ніж на флеш-пам’ять TLC або QLC, яка становить решту SSD. Кеш SLC може поглинати операції високошвидкісного запису, а потім вивантажувати ці дані, як тільки це можливо, на флеш-пам’ять TLC, яка пропонує набагато кращу щільність зберігання, але також набагато повільніше для запису. Використання флеш-пам’яті таким чином оптимізує її як для високої швидкості запису, так і для високої щільності зберігання.

Гібридні кеші

Є багато способів обробки кеш-пам’яті, які можуть дозволити їм працювати як кеш читання та запису. Кожен із цих методів обробляє операції запису по-різному та має переваги та недоліки. Три варіанти: повторний запис, наскрізний запис і зворотний запис. Кеш циклічного запису повністю пропускає кеш під час запису, кеш наскрізного запису записує в кеш, але вважає операцію завершеною лише тоді, коли її було записано в сховище. Кеш зворотного запису записує в кеш, а потім вважає операцію завершеною, покладаючись на те, що кеш перенесе його в сховище, якщо це необхідно.

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

Як видалити дані з кешу?

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

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

«Найменш використовуваний» віддає перевагу видаленню записів кешу, які не використовувалися деякий час. Це передбачає, що вони зараз не використовуються, але не бере до уваги, чи активно вони використовувалися деякий час тому. «Останні використані» надає перевагу видаленню останніх використаних записів кешу, припускаючи, що вони були використані та не потребують використання знову. Найкращим підходом є, як правило, поєднання всіх трьох на основі статистики використання.

Застаріла інформація та ризики безпеки

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

Особливо на веб-сайтах також надзвичайно важливо визначити, які дані можна кешувати, а які ні. Наприклад, для великого незмінного файлу JavaScript цілком нормально зберігати кеш. Це позбавляє користувача від необхідності кожного разу завантажувати його та може навіть принести користь іншим користувачам, які обслуговуються тим самим кеш-пам’яттю. Однак ви не можете кешувати дані сеансу. Уявіть, що станеться, якщо ви перейдете в програму обміну повідомленнями, увійшовши як ви, і виявите, що вам надається кешована версія повідомлень іншого користувача. На щастя, веб-сервери можуть вказувати, які ресурси можна, а які не можна кешувати, і ці проблеми загалом добре відомі, тому таких проблем небагато.

Висновок

Кеш — це частина пам’яті, яка може зберігати деякі нещодавно використані дані в спосіб зберігання, доступ до якого є швидшим, ніж повторний процес звичайного доступу до даних. Ємність кешу зазвичай обмежена, тобто йому потрібно видаляти записи, коли він заповнений. Кеші, як правило, прозорі для користувача, тобто затримка є єдиною ознакою того, що результат було подано через кеш.


Як клонувати жорсткий диск

Як клонувати жорсткий диск

У сучасну цифрову епоху, коли дані є цінним активом, клонування жорсткого диска в Windows може бути вирішальним процесом для багатьох. Цей вичерпний посібник

Як виправити помилку завантаження драйвера WUDFRd у Windows 10?

Як виправити помилку завантаження драйвера WUDFRd у Windows 10?

Ви стикаєтеся з повідомленням про помилку під час завантаження комп’ютера, у якому йдеться про те, що драйвер WUDFRd не вдалося завантажити на ваш комп’ютер?

Як виправити код помилки NVIDIA GeForce Experience 0x0003

Як виправити код помилки NVIDIA GeForce Experience 0x0003

Ви відчуваєте код помилки NVIDIA GeForce 0x0003 на робочому столі? Якщо так, прочитайте блог, щоб дізнатися, як швидко та легко виправити цю помилку.

Що таке SMPS?

Що таке SMPS?

Перш ніж вибрати SMPS для свого комп’ютера, дізнайтеся, що таке SMPS і значення різних показників ефективності.

Чому мій Chromebook не вмикається

Чому мій Chromebook не вмикається

Отримайте відповіді на запитання «Чому мій Chromebook не вмикається?» У цьому корисному посібнику для користувачів Chromebook.

Як повідомити Google про фішинг

Як повідомити Google про фішинг

Дізнайтеся, як повідомити про шахрая в Google, щоб запобігти йому обманювати інших за допомогою цього посібника.

Roomba зупиняється, залипає та розвертається – виправлення

Roomba зупиняється, залипає та розвертається – виправлення

Вирішіть проблему, коли ваш робот-пилосос Roomba зупиняється, залипає та продовжує обертатися.

Як змінити налаштування графіки на Steam Deck

Як змінити налаштування графіки на Steam Deck

Steam Deck пропонує надійний і універсальний ігровий досвід прямо у вас під рукою. Однак, щоб оптимізувати вашу гру та забезпечити найкраще

Що таке безпека на основі ізоляції?

Що таке безпека на основі ізоляції?

Я збирався заглибитися в тему, яка стає все більш важливою у світі кібербезпеки: безпека на основі ізоляції. Такий підхід до

Як використовувати Auto Clicker для Chromebook

Як використовувати Auto Clicker для Chromebook

Сьогодні я збирався заглибитися в інструмент, який може автоматизувати повторювані завдання на вашому Chromebook: Auto Clicker. Цей інструмент може заощадити ваш час і