)
Уявімо ситуацію: хочемо програмним способом перевірити, як відбувається обмін із CPU. Використаємо кеш. «Холодний» — без значень, не прискорює роботу. Він порожній або містить нерелевантні (і навіть невизначені) дані. «Теплий» — зі значеннями, здатний прискорити обчислення завдяки швидкому отриманню даних, що обробляються в цей момент.
Кеш — структура, невелика й швидка пам'ять, що містить певні значення для пришвидшення пошуку: індексні посилання, блоки або сторінки пам'яті тощо. Вона допомагає позбавити CPU від звернення до власної (адресованої) пам'яті. Кеш зберігає значення для оперативного пошуку (застосовуються таблиці, дерева) або доступу до носія (застосовуються RAM, SSD замість HDD). Щоб виконувати пошук оперативно, кеш і потрібен.
Наприклад, файлова система Linux. Щоб отримати доступ до файла системи, слід ідентифікувати його початок на диску за допомогою індексної системи, оформленої у вигляді таблиці десь на диску («superblock»).
Що гарячіший — то краще
Якщо потрібно прочитати вміст файла, слід прочитати таблицю індексів на HDD (10 мс). Потім проаналізувати її, отримати початковий блок файла й прочитати файл (ще 10 мс). Загалом витратили близько 20 мс. Багато!
Якщо додамо кеш (хеш-таблицю в RAM, 10 нс), усе відбудеться на 3 порядків швидше.
У кожному рядку хеш-таблиць — два значення. Спочатку кеш порожній, холодний. Потрібно заповнити його значеннями. Якщо індекс (файл) у кеші не знайдено, виконується цикл:
• читання індексної таблиці;
• її аналіз;
• читання файла;
• збереження номера індексу;
• працюємо з початковим блоком диска в кеші.
Ітерації тривають: спроба прочитати інший файл, перегляд кешу, отримання «промаху» («холодний» кеш), читання HDD, додавання рядка таблиці в кеш.
Холодний кеш нічого не зможе прискорити, усе як і раніше читаєте з HDD. Іноді робота із системою навіть сповільнюється — через час, витрачений на додатковий пошук у таблиці («розігрівання» кешу).
У кеші починають з'являтися певні значення, ви намагаєтеся прочитати файл, дивитеся — і ось, потрапили в кеш (індекс знайдено)! Є «стартовий» блок HDD. Можна пропустити читання суперблока й почати читати потрібний файл. Ваш кеш «розігрівся», час скоротили на 10 мс. У кеші — відповідні дані, усі читання для програми — через кеш.
Що гарячіший кеш, то швидше оброблення; найгарячіший режим відповідає режиму реального потокового оброблення. Такий кеш регулярно обслуговується (використовуються update, removal тощо), інакше він збільшить свої розміри (накопичить «сміття»), втрачаючи продуктивність.
Інтерфейс, уперше отримавши дані, зберігає їх у «своєму» (локальному) кеші, а потім отримує їх звідти.