Что такое кэш процессора

Основная память компьютера – устройство с очень низкой скоростью обмена данных. Если процессору необходимы какие-то данные, он посылает запрос через шину памяти, производится поиск нужных данных и только потом они отправляются в процессор. Все это занимает очень много времени по машинным меркам. Но что если бы данные хранились где-то рядом с процессором? Кэш-память работает на основе этой идеи. Для того чтобы понять концепцию, возьмем пример библиотеки.

Предположим, у нас есть библиотека с одним библиотекарем. Если человек приходит и просит первый том Гарри Поттера, библиотекарь идет к книжной полке, находит его и приносит посетителю. Когда человек прочитал книгу, она снова возвращается на полку. Если в любой другой человек приходит и просит эту же книгу, цикл повторяется снова. Это пример того, как система работает без кэш-памяти.

Зачем нужна кэш-память?

Представьте, что библиотекарь использует ящик стола как кэш-памяти. Процедура остается той же, когда книгу спрашивают первый раз. Но, когда книга вернулась, библиотекарь не возвращает ее на полку, а кладет в ящик. Теперь, когда следующий человек приходит и просит эту книгу, библиотекарю нужно просто открыть ящик. Аналогичным образом кэш-память хранит элементы данных, к которым часто обращается процессор. Таким образом, каждый раз, запрашиваются эти данные, процессор получает их из кэша, минуя долгий путь в основную память.

Хранит ли кэш только часто используемые данные?

Кэш – умная часть памяти, автоматически осуществляющая поиск данных, которые могут понадобиться в ближайшем будущем. Вернемся к нашей библиотеке. Когда человек просит первый том Гарри Поттера, библиотекарь приносит также второй том. Когда человек прочитает первую книгу, очень вероятно, что он может попросить вторую часть. И когда он это сделает, она уже будет лежать в ящике. Аналогичным образом, когда кэш-память извлекает запрошенные данные из памяти, она также извлекает данные, которые находятся по адресам, близким к запрошенным. Эти смежные блоки данных, которые передаются в кэш, называются кэш-линиями.

Двухуровневый кэш процессора

Большинство жестких дисков используют один уровень кэш-памяти. Но кэш имеет два уровня, где уровень L1 меньше и быстрее, а уровень L2, несколько медленнее (но быстрее, чем основная память). Опять же, возвращаясь к нашей библиотеке. Рассмотрим ящик библиотекаря как кэш L1. Когда спрос на книги высок, и в ящике уже довольно много книг и вероятность того, что там найдется нужная, снижается. Здесь и появляется L2. Представим L2 как книжный шкаф возле стола библиотекаря. Когда ящик заполнен, библиотекарь начинает ставить книги в этот шкаф. Теперь, если книга не найдена в ящике сразу, то она может лежать в шкафй. Аналогичным образом, когда L1 заполнен, данные сохраняются в L2. Процессор в первую очередь ищет данные в L1, и если они не будут найдены, обратится к L2. Если же данные не найдены в L2, то обращение к основной памяти неизбежно.

Кэш – это хорошая идея?

И да, и нет. Возвращаясь к нашей библиотеке. Если человек просит книгу, которая не хранится ни в ящике, ни в книжном шкафу, то библиотекарь тратит много времени впустую, осуществляя поиск сначала в ящике, потом в шкафу и только потом получает книгу с полки. Когда данные не найдены ни в первом, ни во втором уровне кэща, только тогда посылается запрос в основную память. На это тратится очень много процессорного времени.

Если кэш-память работает так быстро, почему бы не выполнять его достаточно большой, чтобы хранить все данные оперативной памяти в нем? Причина в том, что высокая скорость обходится очень дорого. Поэтому необходимо правильное использование ресурсов кэш-памяти.
Пишет
Сергей Егоров
Сергей Егоров
Комментарии
  07 дек. 2012 13:12
А как, то есть где найти папку КЭШа, чтобы извлечь из неё информацию?