# факты | Как работает кэширование?
Что такое кэш-память мы уже знаем. Настала пора рассмотреть принцип технологии кэширования. Многие пользователи полагают, что смотрят веб-страницы непосредственно «где-то там» в далеком и загадочном Интернете. На самом деле, каждая открываемая вами страница сначала сохраняется на жесткий диск вашего компьютера. Как может маленькая кэш-память ускорять работу оперативной памяти, которая значительно больше? Дело в том, что даже огромнейшее из приложений состоит из отдельных байтов. И лишь немногие из них используются одновременно.
Что такое кэш?
- Hadr-диск, который хранит в себе все основные файлы компьютера: начиная от операционной системы и заканчивая всеми установленными программами. По своей производительности это довольно медленная память.
- Оперативная память, она же RAM, как правило, имеет меньший объем, но более высокую производительность , чем память hard-диска.
- Память процессора, котор ая среди пользователей называ ется «кэш». Это самая « скоростная » память.
Любая программа на компьютере — это всего лишь большой набор различных инструкций, чтобы указать ПК , как он должен поступать. Данные инструкции обрабатывает процессор, но до него их нужно как-то донести. Как это происходит?
В момент запуска программы с hard-диска инструкции «перехватывает» оперативная память. Далее она по иерархии «передает» эти инструкции «выше», то есть непосредственно в процессор. Процессор способен обрабатывать очень много подобных инструкций в секунду времени. Однако, чтобы обработка инструкций не «тормозила» , у процессора должна быть собственная сверхбыстрая память, то есть кэш, который сейчас есть в каждом современном процессоре.
За перераспределение инструкций из процессора в его память отвечает специальный микроконтроллер памяти процессора, именно он отправляет инструкции в кэш.
С иерархией памяти в компьютере вроде все понятно, но что же такое кэш L1, L2, L3?
Как работает кэш-память
Чтобы понять, что такое кэширование и как оно работает, нам нужно объяснить, что такое принцип локальности.
Принцип локальности гласит, что когда центральный процессор считывает данные из ячеек основной памяти компьютера, весьма вероятно, что другие данные, которые он будет использовать, также будут расположены рядом с рассматриваемой ячейкой. По этой причине вся информация, смежная с запрашиваемой центральным процессором, передаётся в кэш. Когда процессор компьютера запрашивает новую информацию, она, скорее всего, уже будет в кэше.
В случае, если запрошенные данные не кэшируются, центральный процессор сделает запрос в основную память, чтобы найти ячейку, содержащую информацию. Также в этом случае центральный процессор будет передавать информацию, смежную с информацией о ячейке, используемой в кеше. Этот процесс будет продолжаться до тех пор, пока кэш полностью не заполнится.
Программный кэш
Представляет собой директорию на жестком диске компьютера, создаваемую программами для непродолжительного хранения информации. Например, браузер сохраняет страницы, просмотренные пользователем. При повторном переходе по введенному адресу браузер сначала обращается к кеш-памяти, чтобы ускорить загрузку страницы и одновременно уменьшить потребление трафика. Размер папки способен варьироваться от разновидности программного обеспечения.
Программный кэш
Влияние на производительность системы
В современных процессорах количество кэш-попаданий превышает 90%. Это справедливо по отношению к задачам, не требующих высокой производительности. При повышении нагрузки количество промахов увеличивается.
Практика показала, что повышение тактовой частоты влияет лучше на работу системы, чем увеличение кэша. Однако такое решение влечет за собой увеличение стоимости CPU. «Потолок» здесь — 4 ГГц. Дальше каждая десятая доля герца сопряжена с ростом цены в геометрической прогрессии.
Использование трехуровневого кэша увеличивает производительность CPU на 10%. Этот эффект больше всего ощущается при использовании архиваторов (в наше время не самый актуальный софт), при обработке видео и видеоиграх. В «легких» приложениях — например, офисном пакете или интернет-браузере, эффективность кеша чуть более нуля.
Архитектура ассоциативности кэш-памяти
Архитектура ассоциативности кэша определяет способ, при помощи которого данные из ОЗУ отображаются в кэше. Существуют следующие основные варианты архитектуры ассоциативности кэширования:
- Кэш с прямым отображением – определенный участок кэша отвечает за определенный участок ОЗУ
- Полностью ассоциативный кэш – любой участок кэша может ассоциироваться с любым участком ОЗУ
- Смешанный кэш (наборно-ассоциативный)
На различных уровнях кэша обычно могут использоваться различные архитектуры ассоциативности кэша. Кэширование с прямым отображением ОЗУ является самым быстрым вариантом кэширования, поэтому эта архитектура обычно используется для кэшей большого объема. В свою очередь, полностью ассоциативный кэш обладает меньшим количеством ошибок кэширования (промахов).