Что значит очистить кэш и как это сделать? Что такое «кэш» и как его очистить? Просто о сложном Системный кэш
Информационные технологии весьма разнообразны, но предназначение некоторых очень сложно бывает понять. Вот взять, например, кэш - что это такое? Зачем было сделано? Есть ли от этого толк? Что ж, если вы читаете эти строки - смысл есть, просто вам про него ещё не известно. И в рамках статьи это недоразумение будет исправлено.
Что такое кеш?
Под ним понимают промежуточный буфер, который содержит информацию, вероятность запроса которой самая высокая, для её быстрого предоставления пользователю компьютера. Доступ к необходимым данным осуществляется быстрее, чем обращение к удалённому источнику или при выборке из более медленного источника памяти. Но минусом кэш-памяти является тот факт, что она имеет небольшой размер, что делает проблематичным хранение в ней больших объемов информации.
Как эта технология функционирует?
Сейчас, когда вы знаете что такое кеш, следует поговорить об устройстве. Основы кэш-памяти составляют наборы записей. Каждый набор ассоциирован с определённым блоком или элементом данных, которые являются копией информации, размещенной в основной памяти. У каждой записи есть свой идентификатор (его ещё иногда называют тегом), с помощью которого поддерживается связь между «оригиналом» данных в основной памяти и «копией» в кэш-памяти. Обращается к ней клиент, в качестве которого может выступать операционная система, браузер или ЦПУ. При обращении на наличие объекта запроса в первую очередь компьютер исследует кэш-память. Если найдено совпадение идентификаторов, то используются данные из неё, а сам процесс называют попаданием. Если необходимой информации нет, то начинает подгружаться основная память. Такой процесс называется промахом кэш-памяти. Процент обращения к ней, когда был получен необходимый ответ, называется коэффициентом попадания.
Учитывая ограниченность размера, которую имеет кэш, может быть принято решение о вытеснении части информации. Для его принятия используются различные алгоритмы ветвления. В случае изменения элементов, хранимых в кэш-памяти, изменения будут внесены и в основную На скорость внесения данных влияет политика записи. Так, при неотложном варианте все изменения будут вноситься синхронно в основную память. При отложенной (или обратной) записи данные заменяются только в том случае, если они были вытеснены из кэш-памяти другими элементами. Как реализован этот механизм в вышеуказанных частях техники? Давайте рассмотрим, что такое кеш, и как он взаимодействует с другими частями компьютера.
Кеш в операционной системе ПК
Самым важным является кэш Windows - хранилище временных данных операционной системы (или другой, если она установлена на вашем компьютере). Он состоит из таких элементов:
- Страницы оперативной памяти, которые в свою очередь делятся на буферы, длина которых равна и зависит от используемого устройства памяти.
- Набор заголовков самих буферов, задача которых - описывать их состояние.
- Хеш-таблицы, в которых содержится указание, какой заголовок к какому буферу относится.
- Список свободных буферов.
Кеш программ
Многим программам необходимо записывать свои промежуточные расчеты, чтобы избежать необходимости в вычислениях каждый раз. И, как вы уже догадались, используют они кеш. Программа от этого выигрывает, ведь это позволяет значительно ускорить её работу и проведение ею всех необходимых расчетов, но только при условии наличия дополнительной оперативной памяти или свободного места на диске. Во всех остальных случаях кэш не сможет вам помочь почувствовать преимущества от его работы. Но не стоит огорчаться - это замечание относится исключительно к хранению данных, в любом случае - посмотрите в диспетчер задач, и сможете увидеть, что часть памяти кеширована.
Кеш браузеров
Как уменьшить трафик, передаваемый по сети? Тут на помощь опять приходит кэш-память! В ней на компьютере пользователя или на прокси-серверах хранится часть информации, используемой в страницах браузеров. Обычно за внесение информации в кэш-память и за её использование отвечает НТТР-протокол. Но в отдельных случаях его функции взять на себя может система управления сайтом, на котором сейчас находится пользователь. Недостаток всей системы проявляется в том, что изменения, внесённые в одном браузере, не всегда или не тотчас же отображаются в другом. Особенно это не проработано на мобильных платформах. Далее будет рассказано, как установить кеш на "Андроид", и вы сможете понять, почему там не проработан этот аспект.
Очистка кеша браузера
Особенности кэш-памяти в браузере проявляются ещё и в том, что её необходимо периодически чистить. Дело в том, что сама по себе эта память довольно большая, и дополнительно она ещё хранит данные, которые не очень удобно бывает обработать. Поэтому время от времени не помешает чистить кэш браузера. К тому же этот подход советуют и при обнаружении проблем с подгрузкой новых данных или при временных неисправностях, которые слишком зачастили. У большинства браузеров не является сложным процессом, и выполнить его можно за пару секунд. Это настолько универсально, что даже по общему описанию вы сможете сделать всё необходимое независимо от того, что является объектом чистки: кэш в "Мозиле" или "Интернет эксплорере". Чтобы очистить его, вам необходимо пройтись по следующим пунктам:
- Нажмите сейчас на меню настроек.
- Выберите кнопку «История». Если её нет - "Настройки пользователя", а там уже «Историю» или «Куки».
- Перед вами появится меню, в котором можно будет выбрать, какие данные необходимо стереть и за какой период. Сделайте настройки по своему усмотрению.
- Нажмите на кнопку «Очистить».
Небольшое предупреждение: удалятся все данные, которые вы выделите. По умолчанию удалению подлежит всё, в том числе формы автоматического заполнения и пароли к разным сайтам. Так что если вы привыкли к тому, что заполняете логин и пароль с помощью или вообще не помните пароль к сайтам, на которых вы часто бываете, то необходимо убедиться, что потом вы сможете получить доступ.
Кеш в мобильной платформе
Мы разобрались с тем, что такое кеш на персональных компьютерах. А теперь к самому необычному - как обстоят дела с кэш-памятью на мобильных платформах. В целом можно сказать, что механизм реализации похож на тот, что применяется в персональных компьютерах, но со своими ограничениями, которые упираются в аппаратные ограничения и планшетов. Так, на них хранилище данных имеет меньшие размеры, меньше помогает при работе с браузерами и в целом менее заметное, чем при работе с компьютером. Хотя можно рассказать и более детально, используя в качестве примера Android-кэш. Возьмите файл с расширением.акр и нажмите кнопку «Установить». В той папке, где он будет установлен, появится одна папка, начинающаяся на com, и кончающаяся именем программы. Это и есть хранилище временных данных, или кэш-память отдельной программы. Вот - вам даже не нужно ничего делать, кроме пары нажатий.
Кэш — память (кеш , cash , буфер — eng.) — применяется в цифровых устройствах, как высокоскоростной буфер обмена. Кэш память можно встретить на таких устройствах компьютера как , процессоры, сетевые карты, приводы компакт дисков и многих других.
Принцип работы и архитектура кэша могут сильно отличаться.
К примеру, кэш может служить как обычный буфер обмена . Устройство обрабатывает данные и передаёт их в высокоскоростной буфер, где контроллёр передаёт данные на интерфейс. Предназначен такой кэш для предотвращения ошибок, аппаратной проверки данных на целостность, либо для кодировки сигнала от устройства в понятный сигнал для интерфейса, без задержек. Такая система применяется например в CD/DVD приводах компакт дисков.
В другом случае, кэш может служить для хранения часто используемого кода и тем самым ускорения обработки данных. То есть, устройству не нужно снова вычислять или искать данные, что заняло бы гораздо больше времени, чем чтение их из кэш-а. В данном случае очень большую роль играет размер и скорость кэш-а.
Такая архитектура чаще всего встречается на жёстких дисках, и центральных процессорах (CPU ).
При работе устройств, в кэш могут загружаться специальные прошивки или программы диспетчеры, которые работали бы медленней с ПЗУ (постоянное запоминающее устройство).
Большинство современных устройство, используют смешанный тип кэша , который может служить как буфером обмена, как и для хранения часто используемого кода.
Существует несколько очень важных функций, реализуемых для кэша процессоров и видео чипов.
Объединение исполнительных блоков . В центральных процессорах и видео процессорах часто используется быстрый общий кэш между ядрами. Соответственно, если одно ядро обработало информацию и она находится в кэше, а поступает команда на такую же операцию, либо на работу с этими данными, то данные не будут снова обрабатываться процессором, а будут взяты из кэша для дальнейшей обработки. Ядро будет разгружено для обработки других данных. Это значительно увеличивает производительность в однотипных, но сложных вычислениях, особенно если кэш имеет большой объём и скорость.
Общий кэш , также позволяет ядрам работать с ним напрямую, минуя медленную .
Кэш для инструкций. Существует либо общий очень быстрый кэш первого уровня для инструкций и других операций, либо специально выделенный под них. Чем больше в процессоре заложенных инструкций, тем больший кэш для инструкций ему требуется. Это уменьшает задержки памяти и позволяет блоку инструкций функционировать практически независимо.При его заполнении, блок инструкций начинает периодически простаивать, что замедляет скорость вычисления.
Другие функции и особенности .
Примечательно, что в CPU (центральных процессорах), применяется аппаратная коррекция ошибок (ECC ), потому как небольшая ошибочка в кэше, может привести к одной сплошной ошибке при дальнейшей обработке этих данных.
В CPU и GPU существует иерархия кэш памяти , которая позволяет разделять данные для отдельных ядер и общие. Хотя почти все данные из кэша второго уровня, всё равно копируются в третий, общий уровень, но не всегда. Первый уровень кеша — самый быстрый, а каждый последующий всё медленней, но больше по размеру.
Для процессоров, нормальным считается три и менее уровней кэша. Это позволяет добиться сбалансированности между скоростью, размером кэша и тепловыделением. В видеопроцессорах сложно встретить более двух уровней кэша.
Размер кэша, влияние на производительность и другие характеристики .
Естественно, чем больше кэш , тем больше данных он может хранить и обрабатывать, но тут есть серьёзная проблема.
Большой кеш — это большой бюджет . В серверных процессорах (CPU ), кэш может использовать до 80% транзисторного бюджета. Во первых, это сказывается на конечной стоимости, а во вторых увеличивается энергопотребление и тепловыделение, которое не сопоставимо с увеличенной на несколько процентов производительностью.
Одним из немаловажных факторов повышающих производительность процессора, является наличие кэш-памяти, а точнее её объём, скорость доступа и распределение по уровням.
Уже достаточно давно практически все процессоры оснащаются данным типом памяти, что ещё раз доказывает полезность её наличия. В данной статье, мы поговорим о структуре, уровнях и практическом назначении кэш-памяти, как об очень немаловажной характеристике процессора .
Что такое кэш-память и её структура
Кэш-память – это сверхбыстрая память используемая процессором, для временного хранения данных, которые наиболее часто используются. Вот так, вкратце, можно описать данный тип памяти.
Кэш-память построена на триггерах, которые, в свою очередь, состоят из транзисторов. Группа транзисторов занимает гораздо больше места, нежели те же самые конденсаторы, из которых состоит оперативная память . Это тянет за собой множество трудностей в производстве, а также ограничения в объёмах. Именно поэтому кэш память является очень дорогой памятью, при этом обладая ничтожными объёмами. Но из такой структуры, вытекает главное преимущество такой памяти – скорость. Так как триггеры не нуждаются в регенерации, а время задержки вентиля, на которых они собраны, невелико, то время переключения триггера из одного состояния в другое происходит очень быстро. Это и позволяет кэш-памяти работать на таких же частотах, что и современные процессоры.
Также, немаловажным фактором является размещение кэш-памяти. Размещена она, на самом кристалле процессора, что значительно уменьшает время доступа к ней. Ранее, кэш память некоторых уровней, размещалась за пределами кристалла процессора, на специальной микросхеме SRAM где-то на просторах материнской платы. Сейчас же, практически у всех процессоров, кэш-память размещена на кристалле процессора.
Для чего нужна кэш-память процессора?
Как уже упоминалось выше, главное назначение кэш-памяти – это хранение данных, которые часто используются процессором. Кэш является буфером, в который загружаются данные, и, несмотря на его небольшой объём, (около 4-16 Мбайт) в современных процессорах , он дает значительный прирост производительности в любых приложениях.
Чтобы лучше понять необходимость кэш-памяти, давайте представим себе организацию памяти компьютера в виде офиса. Оперативная память будет являть собою шкаф с папками, к которым периодически обращается бухгалтер, чтобы извлечь большие блоки данных (то есть папки). А стол, будет являться кэш-памятью.
Есть такие элементы, которые размещены на столе бухгалтера, к которым он обращается в течение часа по несколько раз. Например, это могут быть номера телефонов, какие-то примеры документов. Данные виды информации находятся прямо на столе, что, в свою очередь,увеличивает скорость доступа к ним.
Точно так же, данные могут добавиться из тех больших блоков данных (папок), на стол, для быстрого использования, к примеру, какой-либо документ. Когда этот документ становится не нужным, его помещают назад в шкаф (в оперативную память), тем самым очищая стол (кэш-память) и освобождая этот стол для новых документов, которые будут использоваться в последующий отрезок времени.
Также и с кэш-памятью, если есть какие-то данные, к которым вероятнее всего будет повторное обращение, то эти данные из оперативной памяти, подгружаются в кэш-память. Очень часто, это происходит с совместной загрузкой тех данных, которые вероятнее всего, будут использоваться после текущих данных. То есть, здесь присутствует наличие предположений о том, что же будет использовано «после». Вот такие непростые принципы функционирования.
Уровни кэш-памяти процессора
Современные процессоры, оснащены кэшем, который состоит, зачастую из 2–ух или 3-ёх уровней. Конечно же, бывают и исключения, но зачастую это именно так.
В общем, могут быть такие уровни: L1 (первый уровень), L2 (второй уровень), L3 (третий уровень). Теперь немного подробнее по каждому из них:
Кэш первого уровня (L1) – наиболее быстрый уровень кэш-памяти, который работает напрямую с ядром процессора, благодаря этому плотному взаимодействию, данный уровень обладает наименьшим временем доступа и работает на частотах близких процессору. Является буфером между процессором и кэш-памятью второго уровня.
Мы будем рассматривать объёмы на процессоре высокого уровня производительности Intel Core i7-3770K. Данный процессор оснащен 4х32 Кб кэш-памяти первого уровня 4 x 32 КБ = 128 Кб. (на каждое ядро по 32 КБ)
Кэш второго уровня (L2) – второй уровень более масштабный, нежели первый, но в результате, обладает меньшими «скоростными характеристиками». Соответственно, служит буфером между уровнем L1 и L3. Если обратиться снова к нашему примеру Core i7-3770 K, то здесь объём кэш-памяти L2 составляет 4х256 Кб = 1 Мб.
Кэш третьего уровня (L3) – третий уровень, опять же, более медленный, нежели два предыдущих. Но всё равно он гораздо быстрее, нежели оперативная память. Объём кэша L3 в i7-3770K составляет 8 Мбайт. Если два предыдущих уровня разделяются на каждое ядро, то данный уровень является общим для всего процессора. Показатель довольно солидный, но не заоблачный. Так как, к примеру, у процессоров Extreme-серии по типу i7-3960X, он равен 15Мб, а у некоторых новых процессоров Xeon, более 20.
Всякий раз, когда у вас возникают проблемы с сайтом, одно из первых предложений, которое вы услышите от поддержки специалистов IT » попробуйте очистить кэш браузера и удалить куки «.
Так что же такое это зловещее кеш браузера? Что делает кэш браузера и почему его нужно чистить?
Что такое кеш браузера
Кеш браузера – это временный склад (хранилище) информации на компьютере, загруженный в вашем браузере.
Файлы, которые кэшируются локально включают элементы сайтов, такие как HTML, CSS стили, Java скрипты, а также графические изображения и другой мультимедийный контент.
При следующем посещении сайта, браузер проверит содержимое кеша и обновит его или добавит то, чего нет.
Это уменьшает использование полосы пропускания как на стороне пользователя, сервера и позволяет загружать страницы быстрее. Следовательно, он особенно полезный, когда у вас медленный интернет.
Для чего нужно чистить кеш браузера
Кеш браузера может получиться довольно большой и занимать много места на вашем жестком диске, а вы посещать снова эти ресурсы не будете никогда.
В то время как вы можете ограничить его объем, еще полезно время от времени его очищать.
Иногда, кэшированные версии сайта могут привести к проблемам, например, когда браузер не загружает новую копию, хотя на сайте было обновление с момента последнего его посещения.
Еще одно свидетельство чистки, когда сайт загружается частично. Кроме того, там хранятся данные сайта которые сохранились с прошлого посещения.
Это может быть проблемой частной жизни, в зависимости от того, кто имеет доступ к вашему компьютеру.
Что такое кеш память компьютера
В компьютере кеш используется микропроцессором. Это уменьшает время доступа к памяти.
При большом количестве запросов в память, компьютер будет их обрабатывать кешем.
Простыми словами, что такое кеш компьютера можно сказать так, когда процессор обратиться к памяти, то сначала проверит, есть ли требуемая копия данных.
Если найдет, то может мгновенно произвести операцию используя ее, а если не найдет, то придется ожидать запроса в основную память, а она в несколько раз медленная в сравнении с сохраненной на «складе».
Для чего еще нужен кеш
Микропроцессоры в компьютерах (современных) имеют не менее три кеша: для ускорения загрузки, для ускорения чтения и для трансляции.
Сохраненная память обеспечивает примерно в пять раз большую пропускную способность (для чтения), чем физическая память компьютера.
Но это еще не все: время доступа к кеш памяти может сократится даже в 25 раз. Теперь вам легко представить себе, для чего нужен кеш в сегодняшних компьютерных системах и браузерах.
Почему тогда AMD и Intel не продает процессоры с еще большим количеством памяти
Производители AMD и Intel всегда идут на компромисс. Наиболее важной причиной являются структурные ограничения.
Кеш имеет огромное количество транзисторов, поэтому емкость нужно сбалансировать со стоимостью производства.
Речь идет также о том, что в определенных структурах, «хранимая память» может иметь большое время доступа из-за большой площади – придется долго «искать».
По этим причинам, дешевые блоки лишены кэш-памяти третьего уровня – это намного дешевле в производстве.
Большой кеш не всегда означает более высокую производительность
Так случается, когда данные, необходимые для расчета, могут не быть обнаружены ни в одном из уровней памяти.
Если они не будут найдены в первом уровне, процессор начнет их искать во втором, а потом в третьем и только после этого начнет копаться в оперативной памяти.
Теперь легко представить себе ситуацию, что процессор с 2 МБ памяти третьего уровня доберется в физическую память раньше, чем тот же процессор, но оснащенный 6 Мб памяти третьего уровня. Успехов.
Диаграмма кэша памяти ЦПУ
Кэш - это память с большей скоростью доступа, предназначенная для ускорения обращения к данным, содержащимся постоянно в памяти с меньшей скоростью доступа (далее «основная память»). Кэширование применяется ЦПУ , жёсткими дисками , браузерами и веб-серверами .
Кэш состоит из набора записей. Каждая запись ассоциирована с элементом данных или блоком данных (небольшой части данных), которая является копией элемента данных в основной памяти. Каждая запись имеет идентификатор , определяющий соответствие между элементами данных в кэше и их копиями в основной памяти.
Когда клиент кэша (ЦПУ, веб-браузер, операционная система) обращается к данным, прежде всего исследуется кэш. Если в кэше найдена запись с идентификатором, совпадающим с идентификатором затребованного элемента данных, то используются элементы данных в кэше. Такой случай называется попаданием кэша . Если в кэше не найдено записей, содержащих затребованный элемент данных, то он читается из основной памяти в кэш, и становятся доступным для последующих обращений. Такой случай называется промахом кэша . Процент обращений к кэшу, когда в нём найден результат, называется уровнем попаданий или коэффициентом попаданий в кэш.
Например, веб-браузер проверяет локальный кэш на диске на наличие локальной копии веб-страницы, соответствующей запрошенному 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 Мбайт (модели с поддержкой одновременно и имеет смысл прочитать блок один раз, затем хранить одну копию блока в оперативной памяти для всех процессов;
Кэширование, выполняемое операционной системой
Кэш оперативной памяти состоит из следующих элементов:
- набор страниц оперативной памяти, разделённых на буферы, равные по длине блоку данных соответствующего устройства внешней памяти;
- набор заголовков буферов, описывающих состояние соответствующего буфера;
- хеш-таблицы , содержащей соответствие номера блока заголовку;
- списки свободных буферов.
Алгоритм работы кэша с отложенной записью
Изначально все заголовки буферов помещаются в список свободных буферов. Если процесс намеревается прочитать или модифицировать блок, то он выполняет следующий алгоритм:
- пытается найти в хеш-таблице заголовок буфера с заданным номером;
- в случае, если полученный буфер занят, ждёт его освобождения;
- в случае, если буфер не найден в хеш-таблице, берёт первый буфер из хвоста списка свободных;
- в случае, если список свободных буферов пуст, то выполняется алгоритм вытеснения (см. ниже);
- в случае, если полученный буфер помечен как «грязный», выполняет асинхронную запись содержимого буфера во внешнюю память.
- удаляет буфер из хеш-таблицы, если он был помещён в неё;
- помещает буфер в хеш-таблицу с новым номером.
Процесс читает данные в полученный буфер и освобождает его. В случае модификации процесс перед освобождением помечает буфер как «грязный». При освобождении буфер помещается в голову списка свободных буферов.
Таким образом:
- если процесс прочитал некоторый блок в буфер, то велика вероятность, что другой процесс при чтении этого блока найдёт буфер в оперативной памяти;
- запись данных во внешнюю память выполняется только тогда, когда не хватает «чистых» буферов, либо по запросу.
Алгоритм вытеснения
Если список свободных буферов пуст, то выполняется алгоритм вытеснения буфера. Алгоритм вытеснения существенно влияет на производительность кэша. Существуют следующие алгоритмы:
- LRU (Least Recently Used) - вытесняется буфер, неиспользованный дольше всех;
- MRU (Most Recently Used) - вытесняется последний использованный буфер;
- LFU (Least Frequently Used) - вытесняется буфер, использованный реже всех;
- ARC (англ.) (Adaptive Replacement Cache) - алгоритм вытеснения, комбинирующий LRU и LFU, запатентованный
Программное кэширование
Политика записи при кэшировании
При чтении данных кэш-память даёт однозначный выигрыш в производительности. При записи данных выигрыш можно получить только ценой снижения надёжности. Поэтому в различных приложениях может быть выбрана та или иная политика записи кэш-памяти..
Существуют две основные политики записи кэш-памяти - сквозная запись (write-through) и отложенная запись (write-back).
- сквозная запись подразумевает, что при изменении содержимого ячейки памяти, запись происходит синхронно и в кэш и в основную память.
- отложенная запись подразумевает, что можно отложить момент записи данных в основную память, а записать их только в кэш. При этом данные будут выгружены в оперативную память только в случае обращения к ним какого либо другого устройства (другой ЦП, контроллер DMA) либо нехватки места в кэше для размещения других данных. Производительность, по сравнению со сквозной записью, повышается, но это может поставить под угрозу целостность данных в основной памяти, поскольку программный или аппаратный сбой может привести к тому, что данные так и не будут переписаны из кэша в основную память. Кроме того, в случае кэширования оперативной памяти, когда используются два и более процессоров, нужно обеспечивать согласованность данных в разных кэшах.
Кэширование интернет-страниц
В процессе передачи информации по сети может использоваться кэширование интернет-страниц - процесс сохранения часто запрашиваемых документов на (промежуточных) прокси-серверах или машине пользователя, с целью предотвращения их постоянной загрузки с сервера-источника и уменьшения трафика . Таким образом, информация перемещается ближе к пользователю. Управление кэшированием осуществляется при помощи CMS конкретного сайта для снижения нагрузки на сервер при большой посещаемости. Кэширование может производится как в память, так и в файловый кэш (