Сайт о телевидении

Сайт о телевидении

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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


Впервые кэш-память появилась на 386-х компьютерах и располагалась она на материнской плате. Материнские платы 386 DX имели кэш-память объемом от 64 до 256 Кб. 486-е процессоры уже имели кэш-память, расположенную на процессорном кристалле, но кэш-память на материнской плате была сохранена. Система кэш-памяти стала двухуровневой: память на кристалле стали называть кэшем первого уровня (L1), а на материнской плате - кэшем второго уровня (L2). Со временем кэш второго уровня "перебрался" на кристалл процессора. Первой это осуществила AMD на процессоре K6-III (L1 = 64 Kb, L2 = 256 Kb).

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

Инклюзивная кэш-память

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


Схема работы следующая. Во время копирования информации из ОЗУ в кэш делается две копии, одна копия заносится в L2, другая копия - в L1. Когда L1 полностью заполнен, информация замещается по принципу удаления наиболее "старых данных" - LRU (Least-Recently Used). Аналогично происходит и с кэшем второго уровня, но, поскольку его объем больше, то и информация хранится в нем дольше.


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


Инклюзивная архитектура применяется в тех системах, где разница в объемах кэшей первого и второго уровня велика. Например, у Pentium 3 (Coppermine): L1 = 16 Kb, L2 = 256 Kb; Pentium 4: L1 = 16 Kb, L2 = 1024 Kb. В таких системах дублируется небольшая часть кэша второго уровня, это вполне приемлемая цена за простоту реализации инклюзивного механизма.

Эксклюзивная кэш-память

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


При считывании информации из ОЗУ в кэш - информация сразу заносится в L1. Когда L1 заполнен, то, по принципу LRU информация переносится из L1 в L2.


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


Эксклюзивная архитектура применяется в системах, где разность между объемами кэшей первого и второго уровня относительно невелика. Например, у Athlon XP: L1 = 64 Kb, L2 = 256 Kb. В эксклюзивной архитектуре кэш-память используется более эффективно, но схема реализации эксклюзивного механизма гораздо сложнее.

Взаимодействие кэш-памяти с ОЗУ

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


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


Достоинства : простая организация массива, минимальное время поиска.

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


Наборно-ассоциативная кэш-память. Весь объем кэша делится на несколько равных сегментов, кратных двойке в целой степени (2, 4, 8). Например, кэш 64 Кб может быть разделен на:

  • 2 сегмента по 32 Кб каждый;
  • 4 сегмента по 16 Кб каждый;
  • 8 сегментов по 8 Кб каждый.

Pentium 3 и 4 имеют 8-канальную структуру кэша (кэш разбит на 8 сегментов); Athlon Thunderbird - 16-канальную.


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


Достоинства : повышается эффективность использования всего объема кэша - чем больше кэш-банков (выше ассоциативность), тем выше эффективность.

Недостатки : более сложная схема управления работой кэша; дополнительное время на анализ информации.


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


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


Достоинства : максимальная эффективность использования пространства кэш-памяти.

Недостатки : наибольшие затраты времени на поиск информации.

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

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

Чистка кэша в Mozilla Firefox

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

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

Почему надо очищать кэш?


Очистка кэша в Chrome

Существует несколько причин, по которым имеет смысл время от времени очищать кэш.

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

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

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

Очистка кэша: вот как это работает

Теперь мы поэтапно объясним, как очистить кэш.

  • Откройте браузер.
  • Удерживайте клавиши «Ctrl» + «Shift» + «Delete», чтобы очистить кэш.
  • Очистите его, выбрав необходимые параметры.

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


Очистка кэша в Opera.

Кэш нужно удалять не только в браузерах. Даже программы и системы, такие как Mac OS X, Outlook, Spotify и Xbox One можно избавить от кэша.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Кэш Opera

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

Кэш Firefox

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

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

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

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

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

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