Как очистить кэш браузера и зачем это нужно? Память кэш - это что? Что такое кэш браузера

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

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

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

Уровни

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Mozilla Firefox

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

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

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

Internet Explorer

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

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

Opera

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

Google Chrome

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

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

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

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

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

Для чего процессору нужна кэш-память?

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

Кэш-память хранит только наиболее часто используемые элементы данных?

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

Два уровня кэш-памяти процессора

Большинство жестких дисков и некоторых других компонентов компьютера используют всего один уровень кэш – памяти. В отличие от них, кэш – память процессора является двухуровневой, в которой кэш 1-го уровня (L1) меньше и быстрее, а кэш 2-го уровня немного медленнее первого, но при этом намного быстрее, чем оперативная память. Кэш L1 разделен на две части, а именно, на кэш команд и на кэш данных. В кэше команд хранится набор инструкций, которые необходимы процессору для вычислений, в то время как кэш данных хранит значения, которые необходимы для текущего исполнения. Кэш L2 отвечает за загрузку данных из основной памяти. Опять же, возвращаясь к нашей библиотеке.

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

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

Чем больше кэш, тем лучше?

На этот вопрос можно ответить одновременно и, да и нет. Больший объем кэша позволяет быстро получать данные в случае, если они доступны в любом из уровней L1 и L2. Вернемся к нашему примеру с библиотекой. Если посетитель попросит какую – либо популярную книгу, которая не хранится библиотекарем в ящике стола или в книжном шкафу, то он сначала поищет ее в ящике, а затем перейдет к книжному шкафу. То есть некоторое количество времени будет тратиться впустую, прежде чем книга, наконец, будет извлечена с книжной полки библиотеки. Так же и процессор сначала проверяет кэш первого уровня (L1), затем второго (L2) и только после этого, отправляет запрос в оперативную память. Когда данные обнаруживаются в кэше, то это называется «попаданием», в противоположном случае – «промахом»


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


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

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

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

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

Что такое кэш браузера

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

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

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

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

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

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

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

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

Зачем чистить кэш

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

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

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

Чистим кэш в различных браузерах

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

  • Интернет Эксплорер:


Заходим в меню браузера, после чего ищем пункт «Сервис ». Нажимаем «Удалить журнал обозревателя », а в появившемся окне ставим галочку только напротив пункта «Временные файлы интернета ». Жмем «Удалить ».

  • Mozilla Firefox:


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

  • Google Chrome:


Для того чтобы очистить кэш в браузере Хром, заходим в меню и открываем пункт «Инструменты ». Нажимаем на «Показать дополнительные настройки », после чего кликаем по «Очистить историю ». Если нужно очистить весь кэш, то указываем период «За всё время », а галочку ставим только напротив пункта «Изображения и другие файлы, сохраненные в кэше ». Жмем на «Очистить историю ».

  • Опера:


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

  • Яндекс.Браузер:


Для того чтобы очистить кэш в Яндекс.Браузере, заходим в меню и выбираем вкладку «Инструменты ». Переходим в «Удаление данных о просмотренных страницах ».

Чтобы очистить весь кэш, в выпадающем списке рядом с надписью «Удалить указанные ниже элементы » выбираем «За все время ». Ставим отметку только напротив пункта «Очистить кэш » и кликаем по кнопке «Очистить историю ».

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

Всем пользователям хорошо известны такие элементы компьютера, как процессор, отвечающий за обработку данных, а также оперативная память (ОЗУ или RAM), отвечающая за их хранение. Но далеко не все, наверное, знают, что существует и кэш-память процессора(Cache CPU), то есть оперативная память самого процессора (так называемая сверхоперативная память).

В чем же состоит причина, которая побудила разработчиков компьютеров использовать специальную память для процессора? Разве возможностей ОЗУ для компьютера недостаточно?

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

Вообще говоря, существуют две основные технологии микросхем памяти – статическая память и динамическая память. Не углубляясь в подробности их устройства, скажем лишь, что статическая память, в отличие от динамической, не требует регенерации; кроме того, в статической памяти для одного бита информации используется 4-8 транзисторов, в то время как в динамической – 1-2 транзистора. Соответственно динамическая память гораздо дешевле статической, но в то же время и намного медленнее. В настоящее время микросхемы ОЗУ изготавливаются на основе динамической памяти.

Примерная эволюция соотношения скорости работы процессоров и ОЗУ:

Таким образом, если бы процессор брал все время информацию из оперативной памяти, то ему пришлось бы ждать медлительную динамическую память, и он все время бы простаивал. В том же случае, если бы в качестве ОЗУ использовалась статическая память, то стоимость компьютера возросла бы в несколько раз.

Именно поэтому был разработан разумный компромисс. Основная часть ОЗУ так и осталась динамической, в то время как у процессора появилась своя быстрая кэш-память, основанная на микросхемах статической памяти. Ее объем сравнительно невелик – например, объем кэш-памяти второго уровня составляет всего несколько мегабайт. Впрочем, тут стоить вспомнить о том, что вся оперативная память первых компьютеров IBM PC составляла меньше 1 МБ.

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

История кэш-памяти

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

Впервые кэш-память объемом всего в 16 КБ появилась в ПК на базе процессора i80386. На сегодняшний день современные процессоры используют различные уровни кэша, от первого (самый быстрый кэш самого маленького объема – как правило, 128 КБ) до третьего (самый медленный кэш самого большого объема – до десятков МБ).

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

Долгое время в процессорах существовали всего два уровня кэша, но в CPU Intel Itanium впервые появилась кэш-память третьего уровня, общая для всех ядер процессора. Существуют и разработки процессоров с четырехуровневым кэшем.

Архитектуры и принципы работы кэша

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

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

Порядок поиска процессором информации в памяти:

Именно таким образом Процессор осуществляет поиск инфоромации

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

Схема организации взаимодействия ядра процессора, кэша и ОЗУ:

Кэш-контроллер является ключевым элементом связи процессора, ОЗУ и Кэш-памяти

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

Методы записи кэша

Существует два основных метода записи информации в кэш-память:

  1. Метод write-back (обратная запись) – запись данных производится сначала в кэш, а затем, при наступлении определенных условий, и в ОЗУ.
  2. Метод write-through (сквозная запись) – запись данных производится одновременно в ОЗУ и в кэш.

Архитектура ассоциативности кэш-памяти

Архитектура ассоциативности кэша определяет способ, при помощи которого данные из ОЗУ отображаются в кэше. Существуют следующие основные варианты архитектуры ассоциативности кэширования:

  1. Кэш с прямым отображением – определенный участок кэша отвечает за определенный участок ОЗУ
  2. Полностью ассоциативный кэш – любой участок кэша может ассоциироваться с любым участком ОЗУ
  3. Смешанный кэш (наборно-ассоциативный)

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

Заключение

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

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

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

Зададимся вопросом: «А как определить наиболее часто используемую информацию? Неужели сначала кто-то анализирует ход выполнения программы, определяет, какие команды и данные чаще используются, а потом, при следующем запуске программы, эти данные переписываются в кэш-память и уже тогда программа выполняется эффективно?» Конечно нет. Хотя в современных микропроцессорах имеется определенный механизм, который позволяет в некоторой степени реализовать этот принцип. Но в основном, конечно, кэш-память сама отбирает информацию, которая чаще всего используется. Рассмотрим, как это происходит.

Механизм сохранения информации в кэш-памяти

При включении микропроцессора в работу вся информация в его кэш-памяти недостоверна.

При обращении к памяти микропроцессор, как уже отмечалось, сна чала проверяет, не содержится ли искомая информация в кэш-памяти.

Для этого сформированный им физический адрес сравнивается с адресами ячеек памяти, которые были ранее кэшированы из ОЗУ в КП.

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

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

Рис. 4.1. Организация обмена между оперативной и кэш-памятью

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

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

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

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

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

Типы кэш-памяти

Если каждая строка ОЗУ имеет только одно фиксированное место, на котором она может находиться в кэш-памяти, то такая кэш-память называется памятью с прямым отображением .

Предположим, что ОЗУ состоит из 1000 строк с номерами от 0 до 999, а кэш-память имеет емкость только 100 строк. В кэш-памяти с прямым отображением строки ОЗУ с номерами 0, 100, 200, …, 900 могут сохраняться только в строке 0 КП и нигде иначе, строки 1, 101, 201, …, 901

ОЗУ — в строке 1 КП, строки ОЗУ с номерами 99, 199, …, 999 сохраняются в строке 99 кэш-памяти (рис. 4.2). Такая организация кэш-памяти обеспечивает быстрый поиск в ней нужной информации: необходимо проверить ее наличие только в одном месте. Однако емкость КП при этом используется не в полной мере: несмотря на то, что часть кэш-памяти может быть не заполнена, будет происходить вытеснение из нее полезной информации при последовательных обращениях, например, к строкам 101, 301, 101 ОЗУ.

Рис. 4.2. Принцип организации кэш-памяти с прямым отображением

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

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

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

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

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

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

Некоторые эвристические оценки вероятности кэш-промаха при разных стратегиях замещения (в процентах) представлены в табл. 4.1.

Таблица 4.1. Вероятность кэш-промаха для различной кэш-памяти
Размер кэша,Кбайт Организация кэш-памяти
2-канальная ассоциативная 4-канальная ассоциативная 8-канальная ассоциативная
LRU Random LRU Random LRU Random
16 5.2 5.7 4.7 5.3 4.4 5.0
64 1.9 2.0 1.5 1.7 1.4 1.5
256 1.15 1.17 1.13 1.13 1.12 1.12

Анализ таблицы показывает, что:

  • увеличением емкости кэша, естественно, уменьшается вероятность кэш-промаха , но даже при незначительной на сегодняшний день емкости кэш-памяти в 16 Кбайт около 95 % обращений происходят к КП, минуя оперативную память;
  • чем больше степень ассоциативности кэш-памяти, тем больше вероятность кэш-попадания за счет более полного заполнения КП (время поиска информации в КП в данном анализе не учитывается);
  • механизм LRU обеспечивает более высокую вероятность кэш-попадания по сравнению с механизмом случайного замещения Random, однако этот выигрыш не очень значителен.

Соответствие между данными в оперативной памяти и в кэш-памяти обеспечивается внесением изменений в те области ОЗУ, для которых данные в кэш-памяти подверглись изменениям. Существует два основных способа реализации этих действий: со сквозной записью (writethrough) и с обратной записью (write-back).

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

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

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

Организация внутренней кэш-памяти микропроцессора

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

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

Внутренняя кэш-память в микропроцессоре i486 реализует сквозную запись . Начиная с МП Pentium используется сквозная или обратная запись .

Во внешней КП применяется любой способ записи или их комбинация.

Внутренняя кэш-память МП i486 имеет емкость 8 Кбайт и организована в виде 4-канальной ассоциативной памяти. Это означает, что данные из какой-либо строки ОЗУ могут храниться в любой из 4 строк кэш-памяти.

КП состоит из следующих блоков (рис. 4.3):

  • блока данных,
  • блока тегов,
  • блока достоверности и LRU.

Рис. 4.3. Структура внутренней кэш-памяти МП i486

Блок данных содержит 8 Кбайт данных и команд. Он разделен на 4 массива (направления), каждый из которых состоит из 128 строк. Строка содержит данные из 16 последовательных адресов памяти начиная с адреса, кратного 16. Индекс массивов блока данных, состоящий из 7 бит, соответствует 4 строкам КП, по одной из каждого массива. Четыре строки КП с одним и тем же индексом называются множеством.

В блоке тегов имеется один тег длиной 21 бит для каждой строки данных в КП. Блок тегов также разделен на 4 массива по 128 тегов. Тег содержит старшие 21 бит физического адреса данных, находящихся в соответствующей строке КП.

В блоке достоверности и LRU содержится по одному 7-разрядному значению для каждого из 128 множеств строк КП: 4 бита достоверности (V) по одному на каждую строку множества и 3 бита (B0 … B2), управляющие механизмом LRU. Биты достоверности показывают, содержит ли строка достоверные (V = 1) или недостоверные (V = 0) данные. При программной очистке КП и аппаратном сбросе процессора все биты достоверности сбрасываются в 0.

Адресация кэш-памяти осуществляется путем разделения старших 28 бит физического адреса на 2 части. Младшие 7 бит из этих разрядов (разряды 10…4 физического адреса) образуют поле индекса и определяют множество, в котором могут храниться данные. Старшие 21 бит (разряды 31…11 физического адреса) служат полем тега и применяются для определения того, находится ли информация с данным физическим адресом в какой-либо строке выбранного множества.

Поиск в кэш-памяти информации с заданным физическим адресом выполняется следующим образом:

Физический адрес, по которому происходит обращение, разбивается на 3 поля: Тег, Индекс, № байта. 7 разрядов А10…А4 поля индекса определяют одно из 128 множеств.

В выбранном множестве содержатся 4 строки с информацией.

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

Если для одной из строк ее тег и разряды А31…А11 физического адреса совпали, то это означает, что произошло кэш-попадание и необходимая информация есть в кэш-памяти.

Считывается найденная строка из 16 байт. Искомый байт в ней определяется 4 младшими разрядами физического адреса (А3…А0).

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

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

Управление работой кэш-памяти на уровне страниц

В элементах каталога страниц и таблиц страниц имеются 2 бита, которые применяются для управления выходными сигналами процессора и участвуют в кэшировании страниц.

Бит PCD запрещает (PCD = 1) или разрешает (PCD = 0) кэширование страницы. Запрещение кэширования необходимо для страниц, которые содержат порты ввода/вывода с отображением на память. Оно также полезно для страниц, кэширование которых не дает выигрыша в быстродействии, например, страниц, содержащих программу инициализации.

Бит PWT определяет метод обновления ОЗУ и внешней кэш-памяти (кэш 2-го уровня). Если PWT = 1, то для данных в соответствующей странице определяется кэширование со сквозной записью, при PWT = 0 применяется способ обратной записи. Используется в микропроцессорах начиная с Pentium. Так как внутренняя кэш-память в МП i486 работает со сквозной записью, состояние бита PWT на нее не влияет. Бит PWT в этом случае действует только на внешнюю КП.

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

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

Рис. 4.4. Структура мультимикропроцессорной системы с общей оперативной памятью

Предположим, что МП А считал некоторую строку данных из ОЗУ в свою внутреннюю КП и изменил данные в этой строке в процессе работы.

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

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

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

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

Существует два класса протоколов когерентности:

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

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

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

Один из методов заключается в том, чтобы гарантировать, что процессор должен получить исключительные права доступа к элементу данных перед выполнением записи в этот элемент данных. Этот тип протоколов называется протоколом записи с аннулированием (write invalidate protocol), поскольку при выполнении записи он аннулирует другие копии. Это наиболее часто используемый протокол как в схемах на основе справочников , так и в схемах наблюдения . Исключительное право доступа гарантирует, что во время выполнения записи не существует никаких других копий элемента данных, в которые можно писать или из которых можно читать: все другие кэшированные копии элемента данных аннулированы.

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

Этот тип протокола называется протоколом записи с обновлением (write update protocol), или протоколомзаписи с трансляцией (write broadcast protocol).

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

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

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

Этот протокол использует 4 признака состояния строки кэш-памяти микропроцессора, по первым буквам которых и называется протокол:

  • измененное состояние (Modified): информация, хранимая в кэшпамяти микропроцессора А, достоверна только в этом кэше; она отсутствует в оперативной памяти и в кэш-памяти других микропроцессоров;
  • исключительная копия (Exclusive): информация, содержащаяся в кэше А, содержится еще только в оперативной памяти;
  • разделяемая информация (Shared): информация, содержащаяся в кэше А, содержится в кэш-памяти по крайней мере еще одного МП, а также в оперативной памяти;
  • недостоверная информация (Invalid): в строке кэш-памяти находится недостоверная информация.

Таким образом, состояние признаков потокола MESI отражает следующие состояния (по отношению к МПА) строки кэш-памяти (табл. 4.2):

Таблица 4.2. Формирование признаков состояния протокола MESI
Cостояние признака протокола Состояние строки памяти
Кэш А Кэш В ОЗУ
Modified Д НД НД
Shared Д Д Д
Exclusive Д НД Д
Invalid НД Х Х

При работе микропроцессора А с точки зрения обеспечения когерентности памяти возможны следующие ситуации:

  • RH (Read Hit) — кэш-попадание при чтении;
  • WH (Write Hit) — кэш-попадание при записи;
  • RME (Read Miss Exclusive) — кэш-промах при чтении;
  • RMS (Read Miss Shared) — кэш-промах при чтении, но соответствующий блок есть в кэш-памяти другого микропроцессора;
  • WM (Write Miss) — кэш-промах при записи;
  • SHR (Snoop Hit Read) — обнаружение копии блока при прослушивании операции чтения другого кэша;
  • SHW (Snoop Hit Write) — обнаружение копии блока при прослушивании операции записи другого кэша.

Наибольший интерес здесь представляют две последние позиции.

Современные микропроцессоры имеют двунаправленную шину адреса.

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

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

Рис. 4.5. MESI-диаграмма обеспечения когерентности кэш-памяти

Проиллюстрируем некоторые из представленных переходов.

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

При этом состояние строки в кэш-памяти рассматриваемого микропроцессора изменится с модифицированного на разделяемое (Shared).

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

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