Личный кабинет        06.08.2019   

Что такое кэш браузера. Что такое кэш, зачем он нужен и как работает

Речь идет не о наличности, а о кэш -памяти процессоров и не только. Из объема кэш -памяти торгаши сделали очередной коммерческий фетиш, в особенности с кэшем центральных процессоров и жестких дисков (у видеокарт он тоже есть – но до него пока не добрались). Итак, есть процессор ХХХ с кэшем L2 объемом 1Мб, и точно такой же процессор XYZ с кэшем объемом 2Мб. Угадайте какой лучше? Аа – вот не надо так сразу!

Кэш -память – это буфер, куда складывается то, что можно и/или нужно отложить на потом. Процессор выполняет работу и возникают ситуации, когда промежуточные данные нужно где-то сохранить. Ну конечно в кэше! – ведь он на порядки быстрее, чем оперативная память, т.к. он в самом кристалле процессора и обычно работает на той же частоте. А потом, через какое то время, эти данные он выудит обратно и будет снова их обрабатывать. Грубо говоря как сортировщик картошки на конвейере, который каждый раз, когда попадается что-то другое кроме картошки (морковка ) , бросает ее в ящик. А когда тот полон – встает и выносит его в соседнюю комнату. В этот момент конвейер стоит и наблюдается простой. Объем ящика и есть кэш в данной аналогии. И сколько его надо – 1Мб или 12? Понятно, что если его объем мал придется слишком много времени уделят выносу и будет простой, но с какого то объема его дальнейшее увеличение ничего не даст. Ну будет ящик у сортировщика на 1000кг морковки – да у него за всю смену столько ее не будет и от этого он НЕ СТАНЕТ В ДВА РАЗА БЫСТРЕЕ! Есть еще одна тонкость – большой кэш может вызывать увеличение задержек обращения к нему во-первых, а заодно повышается и вероятность возникновения ошибок в нем, например при разгоне – во-вторых. (о том КАК в этом случае определить стабильность/нестабильность процессора и выяснить что ошибка возникает именно в его кэше, протестировать L1 и L2 – можно прочесть тут.) В-третьих – кэш выжирает приличную площадь кристалла и транзисторный бюджет схемы процессора. То же самое касается и кэш памяти жестких дисков. И если архитектура процессора сильная – у него будет востребовано во многих приложениях 1024Кб кэша и более. Если у вас быстрый HDD – 16Мб или даже 32Мб уместны. Но никакие 64Мб кэша не сделают его быстрее, если это обрезок под названием грин версия (Green WD) с частотой оборотов 5900 вместо положеных 7200, пусть даже у последнего будет и 8Мб. Потом процессоры Intel и AMD по-разному используют этот кэш (вообще говоря AMD более эффективно и их процессоры часто комфортно довольствуются меньшими значениями). Вдобавок у Intel кэш общий, а вот у AMD он персональный у каждого ядра. Самый быстрый кэш L1 у процессоров AMD составляет по 64Кб на данные и инструкции, что вдвое больше, чем у Intel. Кэш третьего уровня L3 обычно присутствует у топовых процессоров наподобие AMD Phenom II 1055T X6 Socket AM3 2.8GHz или у конкурента в лице Intel Core i7-980X. Прежде всего большие объемы кэша любят игры. И кэш НЕ любят многие профессиональные приложения (см. Компьютер для рендеринга, видеомонтажа и профприложений). Точнее наиболее требовательные к нему вообще равнодушны. Но чего точно не стоит делать, так это выбирать процессор по объему кэша. Старенький Pentium 4 в последних своих проявлениях имел и по 2Мб кэша при частотах работы далеко за 3ГГц – сравните его производительность с дешевеньким двуядерничком Celeron E1***, работающим на частотах около 2ГГц. Он не оставит от старичка камня на камне. Более актуальный пример – высокочастотный двухъядерник E8600 стоимостью чуть не 200$ (видимо из-за 6Мб кэша) и Athlon II X4-620 2,6ГГц, у которого всего 2Мб. Это не мешает Атлону разделать конкурента под орех.

Как видно на графиках – ни в сложных программах, ни в требовательных к процессору играх никакой кэш не заменит дополнительных ядер. Athlon с 2Мб кэша (красный) легко побеждает Cor2Duo с 6Мб кэша даже при меньшей частота и чуть не вдвое меньшей стоимости. Так же многие забывают, что кэш присутствует в видеокартах, потому что в них, вообще говоря, тоже есть процессоры. Свежий пример видеокарта GTX460, где умудряются не только порезать шину и объем памяти (о чем покупатель догадается) – но и КЭШ шейдеров соответственно с 512Кб до 384Кб (о чем покупатель уже НЕ догадается). А это тоже добавит свой негативный вклад в производительность. Интересно еще будет выяснить зависимость производительности от объема кэша. Исследуем как быстро она растет с увеличением объема кэша на примере одного и того же процессора. Как известно процессоры серии E6*** , E4*** и E2*** отличаются только объемом кэша (по 4, 2 и 1 Мб соответственно). Работая на одинаковой частоте 2400МГц они показывают следующие результаты.

Как видно – результаты не слишком отличаются. Скажу больше – если бы участвовал процессор с объемом 6Мб – результат увеличился бы еще на чуть-чуть, т.к. процессоры достигают насыщения. А вот для моделей с 512Кб падение было бы ощутимым. Другими словами 2Мб даже в играх вполне достаточно. Резюмируя можно сделать такой вывод – кэш это хорошо, когда УЖЕ много всего остального. Наивно и глупо менять скорость оборотов винчестера или количество ядер процессора на объем кэша при равной стоимости, ибо даже самый емкий ящик для сортировки не заменит еще одного сортировщика Но есть и хорошие примеры.. Например Pentium Dual-Core в ранней ревизии по 65-нм процессу имел 1Мб кэша на два ядра (серия E2160 и подобные), а поздняя 45-нм ревизия серии E5200 и дальше имеет уже 2Мб при прочих равных условиях (а главное – ЦЕНЕ). Конечно же стоит выбирать именно последний.

Кэш — память (кеш , cash , буфер — eng.) — применяется в цифровых устройствах, как высокоскоростной буфер обмена. Кэш память можно встретить на таких устройствах компьютера как , процессоры, сетевые карты, приводы компакт дисков и многих других.

Принцип работы и архитектура кэша могут сильно отличаться.

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

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

Такая архитектура чаще всего встречается на жёстких дисках, и центральных процессорах (CPU ).

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

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

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

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

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

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

Другие функции и особенности .

Примечательно, что в CPU (центральных процессорах), применяется аппаратная коррекция ошибок (ECC ), потому как небольшая ошибочка в кэше, может привести к одной сплошной ошибке при дальнейшей обработке этих данных.

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

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

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

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

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

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

Принцип работы

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

Уровни

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

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

Последовательность действий

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

Основные характеристики

Технология кэширования обладает следующими характерными особенностями:

  • Кэш - это быстрый относительно небольшого размера. Она работает совместно с более объемной, но менее быстрой памятью.
  • При поиске нужной информации процессор делает проверку наличия нужных ему данных. Если они обнаружены, то речь идет о “попадании”, а если нет - о “промахе”. Количество промахов и попаданий и определяет быстродействие процессора по отношению к поставленному перед ним заданию.
  • Размер памяти кэш намного меньше, чем оперативной памяти или возможностей, которыми обладает жесткий диск персонального компьютера.

Использование кэш в браузере

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

  • Файлы Cookie.
  • Информацию, которую пользователь указывал в
  • Журнал посещенных веб-страниц.
  • Различные данные, которые были внесены на сайтах и порталах.
  • Пароли и логины на различных онлайн-ресурсах.
  • Настройки сайтов и многое другое.

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

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

Зачем очищать кэш браузера?

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

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

Mozilla Firefox

Для того чтобы в данном браузере, необходимо выполнить следующие действия:

  • Открыть пустую вкладку.
  • Закрыть все страницы, оставив только открытую пустую вкладку.
  • Далее следует выбрать в меню опцию "Инструменты", далее "Настройки" и в появившемся окне найти вкладку “Дополнительно”.
  • После этого нужно выбрать вкладку "Сеть", а потом нажать на кнопку "Очистить сейчас".

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

Internet Explorer

Для удаления временных файлов в данном браузере необходимо выполнить следующие действия:

  • В браузере следует выбрать: "Сервис" - "Свойства обозревателя" - "Удалить".
  • После этого следует отметить все нужные пункты и подтвердить свои действия.

Opera

В данном браузере последней версии все чрезвычайно просто. Нужно только выбрать "Меню" - "Настройки" - "Удалить личные данные".

Google Chrome

Кэш в “Хроме” также удаляется без каких-либо проблем. Сначала нужно зайти в настройки, которые обозначены значком потом выбрать вкладку "Расширенные" и нажать на кнопку "Удалить данные о просмотренных страницах".

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

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

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

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

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

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


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

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

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

Кэш в Windows

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

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

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

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

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

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

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

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

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

Например, веб-браузер проверяет локальный кэш на диске на наличие локальной копии веб-страницы, соответствующей запрошенному 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 конкретного сайта для снижения нагрузки на сервер при большой посещаемости. Кэширование может производится как в память, так и в файловый кэш (