Понятие кеш-памяти

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

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

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

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

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

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

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: