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

Для Windows 17.08.2019
Для Windows

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

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

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

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

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

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

Основные типы и уровни кэш-памяти L1 L2 L3

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

Скорость кэша зависит от объема конкретной микросхемы, Чем больше объем микросхемы, тем труднее добиться высокой скорости для её работы. Учитывая данную особенность, при изготовлении кэш память процессора выполняют в виде нескольких небольших блоков, именуемых уровнями. Самой распространенной на сегодняшний день считается трехуровневая система кеша L1,L2, L3:

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

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

Третий уровень кэш памяти L3 — имеет самый большой объем из трех уровней (может достигать десятков мегабайт), но и обладает самой медленной скоростью, которая всё же значительно выше скорости оперативной памяти. Кэш память L3 служит общей для всех ядер процессора. Уровень памяти L3 предназначен для временного хранения тех важных данных, вероятность обращения к которым чуть ниже, чем у информации которая хранится в первых двух уровнях L1, L2. Она также обеспечивает взаимодействие ядер процессора между собой.

Некоторые модели процессоров выполнены с двумя уровнями кэш памяти, в которых L2 совмещает все функции L2 и L3.

Когда полезен большой объем кэша.

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

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

Что такое кэш-память на компьютере?

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

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

  • DNS-кэш, который хранит запросы компьютера к другим серверам сети . Необходим для того, чтобы не тратить время на повторные обращения, вся необходимая информация хранится в кэш-памяти. Когда нужно полностью обновить данные с сервера, тогда меняется и DNS-кэш. Соответственно, сами собой данные не удаляются, поэтому даже ненужные сохраняются там.
  • Thumbnail-кэш. Thumbnail дословно переводится как «ноготь большого пальца», а образно обозначает в английском языке миниатюры картинки, превью или эскизы. Компьютер сохраняет в кэш-памяти иконки картинок, видеофайлов или значков программ, поэтому прогружает миниатюры во второй раз значительно быстрее. Но если сами картинки уже удалены, их миниатюры из кэша не исчезают.
  • Кэш оперативной памяти . Сама оперативная память тоже хранит в себе временные файлы по технологии cache. И некоторые файлы не очищаются из-за ошибок или багов.
  • Кэш браузера. Уже было упомянуто о кэшировании видео для онлайн-просмотра, но это не всё. Каждая картинка, элементы дизайна, анимация на сайтах сохраняются в кэш-память. Часть веб-страниц полностью хранится во временной памяти, чтобы сократить время их прогрузки. Всё это накапливается, и даже уже неиспользуемые сайты продолжают занимать место.
  • Как произвести очистку кэш-памяти?

    DNS (ДНС)

    DNS (Domain Name System, дословно - система доменных имён) — своеобразная адресная книга интернета. Дело в том, что компьютер не сможет по символьным адресам (типа yandex.ru) найти нужный сервер, к которому он должен обратиться. Компьютер понимает только язык ip-адресов. Сервера DNS, которых, кстати говоря, очень много, хранят в себе соответствие ip буквенному адресу. Пользователь, вводя запрос в поисковик или адресную строку, посылает сигнал сначала DNS-серверу, который находит соответствующий ip-адрес и посылает его компьютеру, чтобы тот смог загрузить искомую веб-страницу.

    Кэш DNS чистится с помощью командной строки. Чтобы открыть её, нажмите Win + R (программа «Выполнить») и введите в поле cmd. Или откройте «Пуск», пройдите в раздел «Стандартные» и запустите командную строку.

    В командной строке введите: ipconfig /flushdns

    Появится строчка «Успешно сброшен кэш распознавателя DNS». DNS-кэш очищен.

    Введите команду ipconfig/flushdns

    Видео: как очистить DNS-кэш на Windows 7 и XP

    Чистка Thumbnail

    Thumbnail-кэш можно очистить стандартной утилитой «Очистка диска». Чтобы запустить её, откройте «Панель управления» -> «Система и безопасность» -> «Администрирование» -> «Очистка диска».

    В программе выберите диск, который нуждается в очистке. Чтобы удалить Thumbnails, отметьте системный диск (обычно это C:\). Затем поставьте галочки напротив тех файлов, которые нужно удалить (найдите в списке пункт Thumbnails, чтобы удалить эскизы). Нажмите «ОК» и подождите некоторое время. Thumbnail-кэш очищен.

    Отметьте «Thumbnail», чтобы удалить Thumbnail-кэш

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

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

    Отметьте галочкой «Не кэшировать эскизы»

    Нюансы для оперативной памяти

    Так как кэш оперативной памяти стоит очищать регулярно, есть смысл облегчить процесс. Создадим ярлык, который будет отправлять нас к программе, очищающей временные файлы. Итак, нажмите правой кнопкой мыши на свободном месте рабочего стола и в меню выберите пункт «Создать», затем «Ярлык». Теперь узнайте разрядность вашей версии системы (откройте «Компьютер», кликните правой кнопкой мыши на свободное пространство, выберете «Свойства системы», а там будет указано: 32- или 64-разрядная система).

    Введите строчку в зависимости от разрядности вашей ОС

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

    • Для 32-разрядной системы: %windir%\system32\rundll32.exe advapi32.dll,ProcessIdleTasks
    • Для 64-разрядной: %windir%\SysWOW64\rundll32.exe advapi32.dll,ProcessIdleTasks

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

    Запустите созданный ярлык

    Как почистить браузер?

    Кэш каждого браузера чистится отдельно. Рассмотрим действия на примере Google Chrome.

    Откройте «Настройки»

    Откройте меню, нажав кнопку в правом верхнем углу (☰). Откройте «Настройки». Пролистайте страницу вниз до самого конца и откройте дополнительные настройки. В «Личных данных» найдите кнопку «Очистить историю». Откроется окошко со списком опций. Отметьте «Очистить <…>, сохранённые в кэше». Нажмите «Очистить». Через некоторое время все временные файлы удалятся.

    Очистите кэш

    Как удалить все временные файлы с помощью программ?

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

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

    В окне программы выберите раздел «Очистка». Отметьте галочками все пункты, которые нужно очистить. Нажмите «Анализ», чтобы программа осмотрела компьютер и выявила весь ненужный мусор, среди которого будет и неиспользуемый кэш. Теперь нажмите «Очистить», и через несколько минут программа удалит весь найденный программный хлам. Помимо кэша она очистит и неиспользуемые временные файлы, буфер обмена, дампы памяти, пути загрузки, cookie-файлы браузера, адреса, журналы посещений, файлы index.dat и много чего ещё. А если открыть вкладку «Реестр», то можно почистить и реестр Windows, что скажется благополучно на быстродействии системы.

    Нажмите «Анализ», а затем «Очистить»

    Возможные проблемы

    Файлы в кэш-памяти не удаляются

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

    Не удаляется кэш браузера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

    Кэш в Windows

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

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

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

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

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

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

    Что такое кэш-память?

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

    Что такое кэш компьютера?

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

    Пример работы

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

    Кэш браузера

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

    Кэш для игр на "Андроид"

    Пользователи смартфонов "Андроид" часто задаются вопросом о том, что такое кэш для "Андроид". Чаще всего он требуется для игры с трехмерной графикой, которая требует большего пространства для дополнительных материалов. Иногда для игр он скачивается самостоятельно при входе в игру. Используя интернет, игра самостоятельно загружает требуемую ей информацию и помещает её в хранилище. Но иногда случается так, что кэш для игры нужно поместить в хранилище самостоятельно. Сделать это можно, следуя инструкции к установке игры. Чаще всего игра с кэшем устанавливается следующим образом. Установочный файл помещается в любое место на вашем устройстве, ведь этот файл требуется просто установить. Кэш, в свою очередь, должен быть помещен в специально отведённое место на вашем смартфоне, для того чтобы во время запуска игры он начал считывать информацию с нужного места. Если кэш расположен там, где нужно, игра будет спокойно функционировать. Место, куда нужно его копировать, указано в описании игры.

    Что значит "очистить кэш"?

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

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

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

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

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



    Рекомендуем почитать

    Наверх