Что такое кэш и для чего он. Что такое кэш-память на компьютере? Что делать, если кэш не удаляется

Ч то является самым грязным местом на компьютере? Думаете, корзина? Папки пользователя? Система охлаждения? Не угадали! Самое грязное место – это кэш! Ведь его постоянно приходится чистить!

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

Понятие и виды кэш-памяти

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

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

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

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

  • Современный центральный процессор содержит 2-3 основных уровня кеш-памяти (ее также называют сверхоперативной памятью), размещенных в виде аппаратных модулей на одном с ним кристалле. Самым быстрым и наименьшим по объему (32-64 Kb) является cache Level 1 (L1) – он работает на той же частоте, что и процессор. L2 занимает среднее положение по скорости и емкости (от 128 Kb до 12 Mb). А L3 – самый медленный и объемный (до 40 Mb), на некоторых моделях отсутствует. Скорость L3 является низкой лишь относительно его более быстрых собратьев, но и он в сотни раз шустрее самой производительной оперативки.

Сверхоперативная память процессора применяется для хранения постоянно используемых данных, перекачанных из ОЗУ, и инструкций машинного кода. Чем ее больше, тем процессор быстрее.

Сегодня три уровня кеширования – уже не предел. С появлением архитектуры Sandy Bridge корпорация Intel реализовала в своей продукции дополнительный cache L0 (предназначенный для хранения расшифрованных микрокоманд). А наиболее высокопроизводительные ЦП имеют и кэш четвертого уровня, выполненный в виде отдельной микросхемы.

Схематично взаимодействие уровней cache L0-L3 выглядит так (на примере Intel Xeon):

Человеческим языком о том, как всё это работает

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

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

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

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

Стол имеет ограниченную площадь (кэш-память имеет ограниченный объем ). Иногда ее можно расширить, например, придвинув второй стол, а иногда нельзя (объем кэша можно увеличить, если такая возможность предусмотрена программой; кэш оборудования изменить нельзя, так как он реализован аппаратно ).

Другой способ ускорить доступ к большему объему документов, чем вмещает стол – найти помощника, который будет подавать работнику бумаги с полки (операционная система может выделить часть неиспользуемой оперативной памяти для кэширования данных устройств ). Но это всё равно медленнее, чем брать их со стола.

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

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

С «функциями кэширования» мы на самом деле сталкиваемся повсеместно. Это и покупка продуктов впрок, и различные действия, которые мы совершаем мимоходом, заодно и т. д. По сути, это всё то, что избавляет нас от лишней суеты и ненужных телодвижений, упорядочивает быт и облегчает труд. То же самое делает и компьютер. Словом, если бы не было кэша, он бы работал в сотни и тысячи раз медленнее. И нам бы вряд ли это понравилось.

Ещё на сайте:

Что такое кэш, зачем он нужен и как работает обновлено: Февраль 25, 2017 автором: Johnny Mnemonic

Схема работы кэша

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

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

Кэширование в браузерах


Алгоритм кэширования в браузерах

Зачастую, говоря о кэшировании, многие вспоминают о cache -файлах в браузерах. И неудивительно, так как их очистка – один из основных советов, который дают пользователям при возникновении ошибок.

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

Кэш в Windows

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

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

Кэш на андройде

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

К сожалению, ОС не очень хорошо справляется с очисткой лишних файлов, из-за чего, при длительном пользовании, приложения могут работать некорректно , а само быстродействие телефона значительно снизится . Для предотвращения этого, рекомендуется использовать сторонние программы , которые производят очистку, например, Clean Master.

Термин кэш (или кеш ) имеет в русском языке два определения.

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

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

Второе определение пришло в русский молодёжный жаргон из американского сленга. В США под словом c ash понимают наличные деньги. Слово пришло прямиком из западных фильмов и своего значения не поменяло. В английском языке кэш - это бумажные деньги, которые легко спрятать от налогов, и которые активно используются в проведении теневых операций (и сразу вспоминается перевод слова cache ) . Синонимом кэша является «наличка».

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

Кэш браузера.

Пишите вы к примеру вопрос на THE QUESTION,закрываете вкладку,снова нажали Задать вопрос,и ваш вопрос на месте=),вроде это кэш.

Есть кэш в Гугле который сохраняет эскизы картинок для их быстрой закрузки.

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

Если же веб-мастер настроил кэширование, то после первого просмотра данные будут сохраняться в специальном разделе на жестком диске компьютера пользователя (этот раздел и называется кеш браузера).

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

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

Стоит также отметить, что далеко не всё содержимое сайта кэшируется. Настройки кэша выставляются каждым веб-мастером по собственному усмотрению. Если же информационный ресурс создается при помощи CMS (WordPress, Joomla, Drupal), то разработчику, как правило, доступны уже готовые решения по обеспечению кеширования в виде плагинов (которые имеют стандартные установки и часто не нуждаются в дополнительных настройках).

В CMS WordPress, к примеру, широкую популярность обрели плагины и

Современные браузеры устроены таким образом, что практически всю информацию, которую пользователь запрашивает из Сети, браузеры сохраняют на локальном жестком диске вашего компьютера. Делается это для того, чтобы не скачивать одни и те же файлы при каждом запросе пользователя, то есть с целью экономии трафика, а также ускорения работы браузера — использование кэша (cache) (этот процесс называется кэширование, cacheing) позволяет загружать странички, к которым пользователь уже обращался гораздо быстрее, поскольку большая часть файлов, из которых состоит веб-страничка, уже загружена на компьютер. При повторном обращении к страничке браузеру нужно всего лишь проверить, не изменились ли какие-либо элементы с последнего обращения к ней, и загрузить заново только изменившиеся элементы. Такими элементами может быть все, что угодно, из чего состоят страницы сайтов — изображения, текст, видео, звук.

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

Обычно он имеет ограниченный объем, поскольку старые неиспользуемые файлы постоянно замещаются новыми в процессе работы пользователя.

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

Зачем нужен кэш

Итак, чем может быть полезен кэш. Если все файлы, которые когда-либо просматривал пользователь, в браузере сохраняются, то может быть такое, что пользователю может понадобиться какой-либо файл. Например, прослушав однажды музыкальную композицию или посмотрев фильм онлайн, мы можем захотеть сохранить этот файл для повторного использования. Я очень часто так делаю с музыкой — слушаю музыку онлайн, и понравившиеся композиции я могу «достать» из кэша браузера и сохранить в своей фонотеке для повторного прослушивания. То же самое можно делать и с видеороликами.

Видео: Что такое кэш, для чего он и как очистить кэш браузера?

Еще одно интересное использование кэша — ускорение загрузки веб-страничек. Поскольку большая часть мелких файлов сохраняются на жестком диске вашего компьютера, то повторное обращение к этим файлам в кэше все же занимает некоторое время — хоть и гораздо быстрее, чем загрузка из сети. Но можно еще ускорить работу кэша. Для этого нужно поместить кэш браузера в оперативную память компьютера. Чтение из оперативной памяти происходит практически мгновенно, что позволяет ускорить повторную загрузку веб-страничек в 2-3 раза в отличие от обычной скорости. Как это сделать, я расскажу в другой статье.

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

Где находится кэш

Кэш браузеров находится в рабочих папках браузеров. Кэш — это не что иное как обычная папка, содержащая эти самые файлы, как правило, она так и называется «cache». В операционной системе linux рабочие папки браузеров находятся в домашнем каталоге пользователя. Кэш Оперы можно найти по адресу ~/.opera/cache/. Для Firefox он лежит в.mozilla/firefox/[случайный номер профиля].default/Cache/

В windows XP кэш Opera находится в C:\Documents and Settings\[имя пользователя]\Local Settings\Application Data\Opera\Opera [версия]\cache

Кэш Firefox находится по аналогичному адресу: C:\Documents and Settings\[имя пользователя]\Local Settings\Application Data\Mozilla\Firefox\Profiles\[случайный номер профиля].default\Cache.

Поиск файлов в кэше

С этим разобрались. Но если вы зайдете в эти папки, вы увидите множество файлов (иногда несколько тысяч!) с бессмысленными ничего не говорящими пользователю названиями, и без расширений. Если вы пользователь linux, то большую часть файлов файловый менеджер опознает и отобразит тип файлов и соответствующие значки, поскольку Linux опознает файлы независимо от их расширения. Но вот в Windows такой роскоши не наблюдается — для того, чтобы оболочка и файловый менеджер опознали файлы, необходимы расширения (как правило трехбуквенные сочетания через точку после названия файла — .exe, .mp3, .avi, .doc, .pdf, и.т.д).

К счастью, опознать файлы и найти нужный можно не только по названию. У любых файлов существуют такие атрибуты, как размер и дата сохранения. Таким образом, мы почти всегда сможем выдрать из кэша браузера нужный нам файл сразу же после просмотра или прослушивания. Все, что нужно сделать — это задать в настройках файлового менеджера отображение размера файлов и даты их изменения. В Windows для этого нужно задать вид отображения «Таблица». Теперь нужно отсортировать файлы находящиеся в кэше по дате, либо по размеру.

Поиск видео и аудиофайлов в кэше

Видео- и аудиофайлы обычно имеют размер в несколько мегабайт, поэтому их будет отлично видно если вы посмотрите в столбец «Размер», поскольку все остальные файлы имеют размер в несколько килобайт или даже байт. Только что просмотренные или прослушанные файлы вы сможете различить по дате и времени изменения. Все, что вам нужно будет сделать для того, чтобы распознать файл — это добавить к его имени соответствующее расширение — «.mp3» если это музыка или «.flv», если это видео. Помня обо всех этих вещах, довольно легко выдергивать последний прослушанный или просмотренный онлайн файл. Вы можете скопировать нужный файл в любое удобное место и задать ему любое удобное для вас название.

Кэш Opera

Но это еще не все. Как в Opera, так и в Firefox есть собственные инструменты для просмотра кэша, но я считаю, что пользоваться штатным файловым менеджером вашей операционной системы гораздо удобней. Для того, чтобы просмотреть кэш в Opera, нужно в адресной строке набрать opera:cache и перед вами предстанет содержимое кэша в удобной для просмотра форме. Кроме того, в новой версии opera 10.50 к этому инструменту были добавлены элементы для удобного распознавания и поиска нужных файлов — как по размеру, так и по типу. Мало того, еще и отображается web-адрес источника файла.

Кэш Firefox

В Firefox подобный инструмент тоже имеется, но там можно лишь просматривать содержимое кэша. Там отображается размер файлов, дата сохранения и источник, а также некоторая бесполезная для рядового пользователя информация о файле. Для того чтобы посмотреть кэш в Mozilla Firefox нужно набрать в адресной строке about:cache.

Очистка кэша в Mozilla Filrefox

Или вот так, наглядно видно как очистить кэш в файрфокс:

Как очистить кэш в браузере Google Chrome

С момента написания этой статьи прошло много лет. Много чего изменилось в мире программного обеспечения — информационные технологии развиваются очень стремительно. В то время браузера Google Chrome еще не было, то ли он только появился. Сейчас же это практически самый распостраненный браузер, наряду с firefox, в то время как Internet Explorer и Opera практически исчезли с компьютеров пользователей (кстати, ее заменил интересный ), а на базе Crhomium появилось множество браузеров — Яндекс.Браузер, Амиго и другие. Чтобы очистить кэш в Google Chrome нужно зайти в меню, выбрать «Настройки» далее развернуть их, и найти там пункт «Очистить данные просмотров». Обратите внимание, что здесь можно выбрать период, за которые нужно стереть данные.

Ну вот, собственно, теперь вы сможете пользоваться этой удобной вещью.

Диаграмма кэша памяти ЦПУ

Кэш - это память с большей скоростью доступа, предназначенная для ускорения обращения к данным, содержащимся постоянно в памяти с меньшей скоростью доступа (далее «основная память»). Кэширование применяется ЦПУ , жёсткими дисками , браузерами и веб-серверами .

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

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

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

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

При модификации элементов данных в кэше выполняется их обновление в основной памяти. Задержка во времени между модификацией данных в кэше и обновлением основной памяти управляется так называемой политикой записи .

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

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

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

Кэш центрального процессора

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

Уровни кэша

Кэш центрального процессора разделён на несколько уровней. Для универсальных процессоров - до 3. Кэш-память уровня N+1 как правило больше по размеру и медленнее по скорости обращения и передаче данных, чем кэш-память уровня N.

Самой быстрой памятью является кэш первого уровня - L1-cache. По сути, она является неотъемлемой частью процессора, поскольку расположена на одном с ним кристалле и входит в состав функциональных блоков. Состоит из кэша команд и кэша данных. Некоторые процессоры без L1 кэша не могут функционировать. На других его можно отключить, но тогда значительно падает производительность процессора. L1 кэш работает на частоте процессора, и, в общем случае, обращение к нему может производиться каждый такт (зачастую является возможным выполнять даже несколько чтений/записей одновременно). Латентность доступа обычно равна 2−4 тактам ядра. Объём обычно невелик - не более 128 Кбайт.

Вторым по быстродействию является L2-cache - кэш второго уровня. Обычно он расположен либо на кристалле, как и L1, либо в непосредственной близости от ядра, например, в процессорном картридже (только в слотовых процессорах). В старых процессорах - набор микросхем на системной плате. Объём L2 кэша от 128 Кбайт до 1−12 Мбайт. В современных многоядерных процессорах кэш второго уровня, находясь на том же кристалле, является памятью раздельного пользования - при общем объёме кэша в 8 Мбайт на каждое ядро приходится по 2 Мбайта. Обычно латентность L2 кэша, расположенного на кристалле ядра, составляет от 8 до 20 тактов ядра. В отличие от L1 кэша, его отключение может не повлиять на производительность системы. Однако, в задачах, связанных с многочисленными обращениями к ограниченной области памяти, например, СУБД , производительность может упасть в десятки раз.

Кэш третьего уровня наименее быстродействующий и обычно расположен отдельно от ядра ЦП, но он может быть очень внушительного размера - более 32 Мбайт. L3 кэш медленнее предыдущих кэшей, но всё равно значительно быстрее, чем оперативная память. В многопроцессорных системах находится в общем пользовании.

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

Ассоциативность кэша

Одна из фундаментальных характеристик кэш-памяти - уровень ассоциативности - отображает её логическую сегментацию. Дело в том, что последовательный перебор всех строк кэша в поисках необходимых данных потребовал бы десятков тактов и свёл бы на нет весь выигрыш от использования встроенной в ЦП памяти. Поэтому ячейки ОЗУ жёстко привязываются к строкам кэш-памяти (в каждой строке могут быть данные из фиксированного набора адресов), что значительно сокращает время поиска. С каждой ячейкой ОЗУ может быть связано более одной строки кэш-памяти: например, n -канальная ассоциативность (англ. n -way set associative ) обозначает, что информация по некоторому адресу оперативной памяти может храниться в n местах кэш-памяти.

При одинаковом объеме кэша схема с большей ассоциативностью будет наименее быстрой, но наиболее эффективной.

Кэширование внешних накопителей

Многие периферийные устройства хранения данных используют кэш для ускорения работы, в частности, жёсткие диски используют кэш-память от 1 до 32 Мбайт (модели с поддержкой одновременно и имеет смысл прочитать блок один раз, затем хранить одну копию блока в оперативной памяти для всех процессов;

  • доступ к некоторым блокам оперативной памяти происходит гораздо чаще, чем к другим, поэтому использование кэширования для таких блоков в целом увеличивает производительность системы;
  • для некоторых блоков памяти внешних накопителей не требуется непосредственной записи после модификации, и использование кэша для таких блоков оптимизирует использование ввода-вывода.
  • Кэширование, выполняемое операционной системой

    Кэш оперативной памяти состоит из следующих элементов:

    1. набор страниц оперативной памяти, разделённых на буферы, равные по длине блоку данных соответствующего устройства внешней памяти;
    2. набор заголовков буферов, описывающих состояние соответствующего буфера;
    3. хеш-таблицы , содержащей соответствие номера блока заголовку;
    4. списки свободных буферов.

    Алгоритм работы кэша с отложенной записью

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

    1. пытается найти в хеш-таблице заголовок буфера с заданным номером;
    2. в случае, если полученный буфер занят, ждёт его освобождения;
    3. в случае, если буфер не найден в хеш-таблице, берёт первый буфер из хвоста списка свободных;
    4. в случае, если список свободных буферов пуст, то выполняется алгоритм вытеснения (см. ниже);
    5. в случае, если полученный буфер помечен как «грязный», выполняет асинхронную запись содержимого буфера во внешнюю память.
    6. удаляет буфер из хеш-таблицы, если он был помещён в неё;
    7. помещает буфер в хеш-таблицу с новым номером.

    Процесс читает данные в полученный буфер и освобождает его. В случае модификации процесс перед освобождением помечает буфер как «грязный». При освобождении буфер помещается в голову списка свободных буферов.

    Таким образом:

    1. если процесс прочитал некоторый блок в буфер, то велика вероятность, что другой процесс при чтении этого блока найдёт буфер в оперативной памяти;
    2. запись данных во внешнюю память выполняется только тогда, когда не хватает «чистых» буферов, либо по запросу.

    Алгоритм вытеснения

    Если список свободных буферов пуст, то выполняется алгоритм вытеснения буфера. Алгоритм вытеснения существенно влияет на производительность кэша. Существуют следующие алгоритмы:

    1. LRU (Least Recently Used) - вытесняется буфер, неиспользованный дольше всех;
    2. MRU (Most Recently Used) - вытесняется последний использованный буфер;
    3. LFU (Least Frequently Used) - вытесняется буфер, использованный реже всех;
    4. ARC (англ.) (Adaptive Replacement Cache) - алгоритм вытеснения, комбинирующий LRU и LFU, запатентованный

      Программное кэширование

      Политика записи при кэшировании

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

      Существуют две основные политики записи кэш-памяти - сквозная запись (write-through) и отложенная запись (write-back).

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

      Кэширование интернет-страниц

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