#факты | Что такое кэш-память?

13 Июня 2013 в 13:00, Олег Довбня 7 631 просмотр 28

Компьютерное кэширование

Сегодня поговорим о том, как работает кэширование. Наши читатели уже знакомы с иерархией компьютерной памяти и с тем, что кэш занимает в ней очень высокую ступеньку. Настала пора поближе познакомиться с самим принципом кэширования. Современные компьютеры могут похвастаться не только кэшем первого (L1) и второго (L2), но и третьего уровня (L3). Рассмотрим те задачи, которые выполняет компьютерный кэш, на примере рабочего дня библиотекаря в обычной, слегка старомодной библиотеке, где хранятся накопленные человечеством знания в виде бумажных томов.

Основная сложность в том, что «компьютерный кэш» понятие слишком многозначное и порой одним и тем же словом обозначают разные вещи. Достаточно сказать, что существует не только кэш памяти, но также аппаратный и программный дисковый кэш, кэш страниц и многие другие компьютерные процессы, объединенные общим именем. Например, виртуальная память тоже является одной из форм кэширования. Поэтому кэш процессора не единственный имеющийся в компьютере кэш. Кэширование играет гигантскую роль в работе всего компьютера в целом.

Кэширование на примере обычной библиотеки

Компьютерное кэширование

Технология кэширования базируется на подсистеме компьютерной памяти. Основная задача этой важной технологии состоит в том, чтобы заставить ваш компьютер работать быстрее. Даже в том случае, если это не самый мощный (и, соответственно, дорогой) компьютер. Благодаря кэшированию повышается скорость выполнения компьютером своих задач.

Чтобы понять основную идею рассматриваемой технологии, обратимся к простому примеру из жизни. Представим себе библиотекаря, который выдает читателям книги по их запросам. Читателю не приходится самому долгие часы бродить по гигантскому залу библиотеки и искать нужные книги.

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

Новому посетителю может понадобиться все тот же учебник по алгебре. Библиотекарю придется снова пойти в книгохранилище, взять книгу с полки, вернуться на рабочее место и выдать ее человеку, которому она необходима.

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

Есть ли способ облегчить библиотекарю его труд? Да! Для этого нужно создать «библиотечный кэш», и далее мы рассмотрим, как это сделать.

Для этого библиотекарю следует выдать сумку, в которой поместится, допустим, десять книг. В рамках компьютерной терминологии, можно сказать, что библиотекарь располагает «10-книжным кэшем». В эту сумку библиотекарь станет складывать возвращаемые ему читателями книги, но не более десяти. Это значит, что за наиболее популярными не придется каждый раз идти в хранилище, поскольку они всегда под рукой.

В начале рабочего дня «кэш-сумка» библиотекаря пуста. Приходит первый читатель и просит учебник алгебры. Библиотекарь отправляется в книгохранилище и возвращается с запрошенной книгой. Ничего нового, всё, как в предыдущем примере. Через некоторое время читатель возвращает учебник библиотекарю, но он не ставит его на полку в хранилище, а отправляет в сумку. Итак, кэш уже не пуст, в нем есть содержимое.

Приходит очередной читатель, которому необходим учебник алгебры. Вместо того, чтобы в очередной раз проделать путь от своего стола к полке, где находится книга, библиотекарь проверяет свою сумку и обнаруживает ее там. Ему достаточно извлечь книгу из сумки и выдать ее читателю. Утомительное путешествие в книгохранилище отменяется! Лишнее время не было потрачено и читатель получил книгу намного быстрее, чем в предыдущем примере.

Но может случиться так, что посетителю потребуется книга, которой в сумке нет. В этом случае кэш увеличит время поиска, поскольку библиотекарю понадобится сначала проверить свою сумку, а лишь затем (убедившись, что нужной книги там нет) отправиться в хранилище к соответствующей полке. Одна из самых сложных задач инженеров состоит в том, чтобы свести вызываемую проверкой кэша задержку к минимуму. Даже в рассмотренном нами примере, время, которое займет проверка сумки (время латентности), весьма невелико по сравнению с долгим путешествием в хранилище книг и обратно. В данном случае кэш невелик (всего 10 книг). К слову, латентность является одним из основных ограничений компьютерной памяти, о которых мы ранее писали.

Эти простые и понятные каждому примеры раскрывают нам некоторое факты, которые следует знать о технологии кэширования:

  • В технологии кэширования задействована быстрая память сравнительно малого объема. Она работает в связке с более объемной, но при этом более медленной памятью
  • Использование кэша предполагает проверку, находятся ли в нем нужные данные. Если они там обнаружены, то говорят о «попадании» (cache hit). Если нет, то это называют «потерпевшим неудачу поиском при обращении к кэшу» или попросту «промахе» (cache miss). В последнем случае компьютеру придется обратиться к медленной памяти большего размера
  • Максимальный размер кэша намного меньше, чем у более ёмких хранилищ информации (например, оперативной памяти или, тем более, жесткого диска)
  • Может быть несколько уровней кэша. В примере с библиотекарем, меньшим, но скоростным типом памяти является его сумка, а книгохранилище выступает в роли объемной, но сравнительно медленной памяти. Это пример одноуровневого кэша. Могут быть добавлены дополнительные слои кэша: например в виде полки на сотню книг непосредственно у стола библиотекаря. Сначала библиотекарь проверит сумку (кэш первого уровня, L1), затем расположенную под рукой полку. И только в том случае, если нужная книга не будет обнаружена ни там, ни там, он отправится в хранилище. Такой способ организации кэша называется двухуровневым

Компьютерное кэширование

Компьютерное кэширование

Современный компьютер работает с невероятно высокой скоростью. Когда его процессор обращается к оперативной памяти (ОЗУ, RAM), ему требуются считанные наносекунды, то есть миллиардные доли секунды. Предположим, что одно обращение процессора к памяти занимает 60 наносекунд. Это очень быстро, но процессор работает еще быстрее. Даже довольно медленному и порядком устаревшему процессору на один такт потребуются всего 2 наносекунды. Далее будем опираться на эти цифры, которые условны и лишь помогут нам сделать повествование более конкретным. К слову, нашим читателям уже известно, что наращивание оперативной памяти не всегда ведет к повышению производительности компьютера.

Что будет, если встроить в материнскую плату специальное хранилище информации, небольшое, но сравнительно быстрое (допустим, на цикл обращения к нему уйдет всего 30 наносекунд). Это уже в два раза быстрее того времени, которое потребовалось бы на обращение к оперативной памяти. Такой кэш называется кэшем второго уровня (или кэшем L2).

А если интегрировать еще меньшую, но еще более скоростную память непосредственно в чип процессора? Получится кэш первого уровня. Обращаться к такой памяти процессор сможет уже на своей скорости. В качестве примера возьмем устаревший процессор Pentium с тактовой частотой 233 мегагерца. Его кэш первого уровня (L1) был быстрее кэша второго уровня (L2) в 3,5 раза. А тот, в свою очередь, вдвое быстрее времени доступа к оперативной памяти.

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

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

И жесткому диску тоже приходится порой брать на себя функции кэша (временного хранилища) по отношению к вашему интернет-соединению. Ведь Интернет тоже можно рассматривать в качестве огромной, но не слишком быстрой, «памяти». Хранилище данных, расположенное на ступеньку выше в иерархии компьютерной памяти, может выступать кэшем данных по отношению к более медленному накопителю.

Теперь, когда мы рассмотрели, как работает кэширование, сделаем небольшой перерыв и вернемся к этой теме вновь, чтобы узнать о технологии кэширования и его субсистеме.

Продолжение следует

По материалам computer.howstuffworks.com

#факты | Что такое кэш-память?

Приложение
Hi-News.ru

Новости высоких технологий в приложении для iOS и Android.

28 комментариев

  1. BOR731

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

  2. denzerden

    Спасибо, было любопытно!

  3. holmuradov

    Спасибо ! Очень интересно

  4. Murik5005

    Спасибо, очень интересно!)

  5. Max

    Опять много текста.

    Было бы хорошо, если была бы и короткая берсия.

    • KMA

      Почитал бы лишний раз :/

    • Vik_Arm

      поверь это короткая версия, то что на лекциях говорят в универе, меня например намного длиннее и скучнее, а здесь все понятно и не надоедает при чтении, конечно можно еще короче делать но смысл ? если узнавать что-то новое то по подробностями. что бы потом использовать в разговоре

  6. LeClair

    Доступно объяснено и с хорошим примером. Спасибо!

  7. TheSkyPetaul

    Понравилось! Жду продолжения!

  8. RosinanteUA

    Много букв. Скучно написано. Лент читать.

  9. writtentostars

    Продолжайте писать, очень хорошо написано как и предыдущие ваши статьи.

  10. Si

    Короче я даун.
    Если ты написал что L2 - это кэш второго уровня на мат. плате, а L1 - это кэш первого уровня в процессоре. То дальше ты пишешь: "В современных процессорах оба уровня кэша зачастую вмонтированы непосредственно в их чипы. В таких случаях на материнской плате появляется кэш третьего уровня (L3), ...."
    В чьи чипы вмонтированы? почему теперь на мат плате - l3, если до этого был L2??

    • wlkmn

      Бывает L1 и L2, а бывает еще и L3. Вот в этом случае на мат плате находится кэш L3 :)

  11. FanLee

    отличная статья, очень интересно, спасибо)
    жду продолжение)

Новый комментарий

Для отправки комментария вы должны авторизоваться или зарегистрироваться.