Что вкладывается в категорию «холодный (теплый) кэш»? Интуитивно полезна и верна часто приводимая аналогия с «движком» авто – холодным или теплым. Суть кэша (кэширования)
) Представим ситуацию: хотим удостовериться программным способом, как с CPU происходит обмен. Используем кэш. «Холодный» – без значений, не ускоряющий. Он пуст или с нерелевантными (и даже неопределенными) данными. «Теплый» – со значениями, способный ускорить вычисления за счет быстроты выборки обрабатываемых в данным момент данных. Кэш – структура, маленькая и быстрая память, содержащая некоторые значения для убыстрения поиска: индексные ссылки, блоки или страницы памяти и др. Онам помогает избавить CPU от обращения к собственной (адресуемой) памяти. Кэш сохраняет значения в ссылках оперативного поиска (применяются таблицы, деревья) или медиа-доступа (применяются RAM, SSD вместо HDD). Чтобы выполнить поиск оперативно и необходим кэш. Например, файловая Linux-система. Для доступа к файлу системы, следует идентифицировать его начало на диске с помощью индекс-системы, оформляемой в виде таблицы где-то на диске («superblock»). Чем горячей – тем лучше Если нужно прочесть содержимое файла, следует прочесть таблицу индексов на HDD (10 мс). Затем анализировать, получить начальный блок файла и прочесть файл (еще 10 мс). Всего затратили около 20 мс. Много! Если добавим кэш (хэш-таблицу в RAM, 10 нс), то все произойдет на 3 порядка быстрее. В каждой строке хэш-таблиц – два значения. В начале кэш пустой, холодный. Нужно его заполнить значениями. Если индекс (файл) в кэше не найден, то выполняется цикл: • чтение индекс-таблицы; • анализ ее; • чтением файла; • сохранение номера индекса; • работаем с начальным блоком диска в кэше. Итерации продолжаются: попытка прочесть иной файл, просмотр кэша, получение «промаха» («холодный» кэш), чтение HDD, добавление в кэш строки таблицы. Холодный кэш ускорить ничего не сможет, все читаете с HDD по-прежнему. Даже иногда замедляется работа с системой – за счет времени дополнительного поиска по таблице («разогрева» кэша). Некоторые значения в кэше начинают появляться, вы пытаетесь прочесть файл, смотрите – и вот, попали в кэш (индекс найден)! Есть «стартовый» HDD-блок. Можно пропустить чтение суперблока, начать читать нужный файл. Ваш кэш «разогрелся», время уменьшили на 10 мс. В кэше – соответствующие данные, все чтения для программы – через кэша. Чем кэш горячее, тем быстрее обработка, самый горячий режим соответствует режиму реальной потоковой обработке. Подобный кэш регулярно обслуживаемый (используются update, removal и др.), иначе он увеличит свои размеры (накопит «мусор») с потерей производительности. Интерфейс, извлекая впервые данные, сохраняет их в «своем» (локальном) кэше, затем извлекает их из него.