Jump to content

Политики размещения кэша

Политики размещения кэша — это политики, которые определяют, где может быть размещен конкретный блок памяти, когда он попадает в кэш ЦП . Блок памяти не обязательно может быть помещен в произвольное место кэша; оно может быть ограничено определенной строкой кэша или набором строк кэша. [1] согласно политике размещения кэша. [2] [3]

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

Кэш с прямым отображением

[ редактировать ]

В структуре кэша с прямым отображением кэш организован в несколько наборов. [1] с одной строкой кэша на набор. В зависимости от адреса блока памяти он может занимать только одну строку кэша. Кэш может быть представлен как матрица-столбец размером n × 1 . [5]

Поместить блок в кэш

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

Чтобы найти слово в кэше

[ редактировать ]
  • Набор идентифицируется индексными битами адреса.
  • Биты тега, полученные из адреса блока памяти, сравниваются с битами тега, связанными с набором. Если тег совпадает, происходит попадание в кэш , и блок кэша возвращается процессору. В противном случае происходит промах в кэше , и блок памяти извлекается из нижней памяти ( основной памяти , диска ).

Преимущества

[ редактировать ]
  • Эта политика размещения является энергоэффективной, поскольку позволяет избежать поиска по всем строкам кэша.
  • Политика размещения и политика замены проста.
  • Для этого требуется дешевое оборудование, поскольку одновременно необходимо проверять только один тег.

Недостаток

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

Рассмотрим основную память объемом 16 килобайт, которая организована в виде блоков по 4 байта, и кэш прямого отображения объемом 256 байт с размером блока 4 байта. Поскольку объем основной памяти составляет 16 КБ, нам нужно как минимум 14 бит, чтобы однозначно представить адрес памяти.

Поскольку каждый блок кэша имеет размер 4 байта, общее количество наборов в кэше равно 256/4, что соответствует 64 наборам.

Входящий адрес в кэш делится на биты Offset , Index и Tag .

  • Смещение соответствует битам, используемым для определения байта, к которому осуществляется доступ из строки кэша. Поскольку строки кэша имеют длину 4 байта, имеется 2 бита смещения .
  • Индекс соответствует битам, используемым для определения набора Кэша. В кэше 64 набора, а поскольку 2^6 = 64, индексных битов 6.
  • Тег соответствует остальным битам. Это означает, что имеется 14 – (6+2) = 6 бит тега , которые хранятся в поле тега для соответствия адресу при запросе к кэшу.

Ниже приведены адреса памяти и объяснение того, какой строке кэша они соответствуют:

  1. Адрес 0x0000 (ярлык - 0b00_0000, индекс – 0b00_0000, компенсировать - 0b00) соответствует блоку 0 памяти и соответствует набору 0 кэша.
  2. Адрес 0x0004 (ярлык - 0b00_0000, индекс – 0b00_0001, компенсировать - 0b00) соответствует блоку 1 памяти и соответствует набору 1 кэша.
  3. Адрес 0x00FF (ярлык - 0b00_0000, индекс – 0b11_1111, компенсировать - 0b11) соответствует блоку 63 памяти и отображается в набор 63 кэша.
  4. Адрес 0x0100 (ярлык - 0b00_0001, индекс – 0b00_0000, компенсировать - 0b00) соответствует блоку 64 памяти и соответствует набору 0 кэша.

Полностью ассоциативный кеш

[ редактировать ]

В полностью ассоциативном кэше кэш организован в единый набор кэшей с несколькими строками кэша. Блок памяти может занимать любую из строк кэша. Организацию кэша можно представить в виде матрицы строк размером 1 × m . [5]

Поместить блок в кэш

[ редактировать ]
  • Строка кэша выбирается на основе допустимого бита [1] связанный с этим. Если действительный бит равен 0, новый блок памяти можно поместить в строку кэша, в противном случае его необходимо поместить в другую строку кэша с действительным битом 0.
  • Если кеш полностью занят, блок вытесняется, и блок памяти помещается в эту строку кэша.
  • Удаление блока памяти из кэша определяется политикой замены. [7]

Чтобы найти слово в кэше

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

Преимущества

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

Недостатки

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

Рассмотрим основную память объемом 16 килобайт, которая организована в виде блоков по 4 байта, и полностью ассоциативный кэш объемом 256 байт и размером блока 4 байта. Поскольку объем основной памяти составляет 16 КБ, нам нужно как минимум 14 бит, чтобы однозначно представить адрес памяти.

Общее количество наборов в кэше равно 1, набор содержит 256/4=64 строки кэша, так как блок кэша имеет размер 4 байта.

Входящий адрес в кэш делится на биты смещения и тега.

  • Смещение соответствует битам, используемым для определения байта, к которому осуществляется доступ из строки кэша. В примере есть 2 бита смещения, которые используются для адресации 4 байтов строки кэша.
  • Тег соответствует остальным битам. Это означает, что имеется 14 – (2) = 12 битов тега , которые хранятся в поле тега для соответствия адресу при запросе к кэшу.

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

Set-ассоциативный кэш

[ редактировать ]

Набор-ассоциативный кеш — это компромисс между кешем с прямым отображением и полностью ассоциативным кешем.

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

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

Многие кэши процессоров в современных конструкциях имеют либо прямое отображение, либо двустороннюю ассоциативность множеств, либо ассоциативность множеств с четырьмя путями. [5]

Поместить блок в кэш

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

Чтобы найти слово в кэше

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

Преимущества

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

Недостатки

[ редактировать ]
  • Политика размещения не будет эффективно использовать все доступные строки кэша и подвержена конфликтам .

Рассмотрим основную память объемом 16 килобайт, которая организована в виде блоков по 4 байта, и двухсторонний наборно-ассоциативный кэш объемом 256 байт с размером блока 4 байта. Поскольку объем основной памяти составляет 16 КБ, нам нужно как минимум 14 бит, чтобы однозначно представить адрес памяти.

Поскольку каждый блок кэша имеет размер 4 байта и является двухсторонним наборно-ассоциативным, общее количество наборов в кэше равно 256/(4 * 2), что равно 32 наборам.

Set-ассоциативный кеш

Входящий адрес в кэш делится на биты смещения, индекса и тега.

  • Смещение соответствует битам, используемым для определения байта, к которому осуществляется доступ из строки кэша. Поскольку строки кэша имеют длину 4 байта, имеется 2 бита смещения .
  • Индекс соответствует битам, используемым для определения набора Кэша. В кэше 32 набора, а поскольку 2^5 = 32, индексных битов 5.
  • Тег соответствует остальным битам. Это означает, что в поле тега хранится 14 – (5+2) = 7 бит , которые соответствуют адресу при запросе к кэшу.

Ниже приведены адреса памяти и объяснение того, какая строка кэша и в каком наборе они сопоставляются:

  1. Адрес 0x0000 (ярлык - 0b000_0000, индекс – 0b0_0000, компенсировать - 0b00) соответствует блоку 0 памяти и соответствует набору 0 кэша. Блок занимает строку кэша в наборе 0, определяемую политикой замены кэша.
  2. Адрес 0x0004 (ярлык - 0b000_0000, индекс – 0b0_0001, компенсировать - 0b00) соответствует блоку 1 памяти и соответствует набору 1 кэша. Блок занимает строку кэша в наборе 1, определяемую политикой замены кэша.
  3. Адрес 0x00FF (ярлык - 0b000_0001, индекс – 0b1_1111, компенсировать - 0b11) соответствует блоку 63 памяти и отображается в набор 31 кэша. Блок занимает строку кэша в наборе 31, определяемую политикой замены кэша.
  4. Адрес 0x0100 (ярлык - 0b000_0010, индекс – 0b0_0000, компенсировать - 0b00) соответствует блоку 64 памяти и соответствует набору 0 кэша. Блок занимает строку кэша в наборе 0, определяемую политикой замены кэша.

Двусторонний перекошенный ассоциативный кеш

[ редактировать ]

Были предложены и другие схемы, такие как перекошенный кэш , [8] где индекс для пути 0 является прямым, как указано выше, но индекс для пути 1 формируется с помощью хэш-функции . Хорошая хеш-функция обладает свойством, заключающимся в том, что адреса, конфликтующие с прямым сопоставлением, обычно не конфликтуют при сопоставлении с хеш-функцией, поэтому менее вероятно, что программа пострадает от неожиданно большого количества конфликтных промахов из-за патологического доступа. шаблон. Обратной стороной является дополнительная задержка при вычислении хэш-функции. [9] Кроме того, когда приходит время загрузить новую строку и удалить старую, может быть сложно определить, какая из существующих строк использовалась в последний раз, поскольку новая строка в каждом случае конфликтует с данными по разным индексам; Отслеживание LRU для нескошенных кэшей обычно выполняется для каждого набора. Тем не менее, асимметрично-ассоциативные кэши имеют большие преимущества перед обычными множественно-ассоциативными кэшами. [10]

Псевдоассоциативный кеш

[ редактировать ]

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

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

См. также

[ редактировать ]
  1. ^ Jump up to: а б с д и «Основы кэширования» (PDF) .
  2. ^ «Политика размещения кэша» . Архивировано из оригинала 21 февраля 2020 года.
  3. ^ «Политика размещения» . Архивировано из оригинала 14 августа 2020 года.
  4. ^ Мэттсон, РЛ ; Гечеи, Дж.; Слуц, ДР; Трейгер, я (1970). «Методы оценки иерархий хранения». IBM Systems Journal . 9 (2): 78–117. дои : 10.1147/sj.92.0078 .
  5. ^ Jump up to: а б с Солихин, Ян (2015). Основы параллельной многоядерной архитектуры . Тейлор и Фрэнсис. стр. 100-1 136–141. ISBN  978-1482211184 .
  6. ^ «Типы промахов в кэше» (PDF) .
  7. ^ «Полностью ассоциативный кэш» . Архивировано из оригинала 24 декабря 2017 года.
  8. ^ Андре Сезнек (1993). «Дело в пользу двусторонних асимметрично-ассоциативных кэшей» . Новости компьютерной архитектуры ACM SIGARCH . 21 (2): 169–178. дои : 10.1145/173682.165152 .
  9. ^ Jump up to: а б К. Козыракис . «Лекция 3: Расширенные методы кэширования» (PDF) . Архивировано из оригинала (PDF) 7 сентября 2012 г.
  10. ^ Микроархитектура «Перекошенные ассоциативные кеши имеют ... большие преимущества перед обычными ассоциативными кешами».
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e9a62a92a22168be551e2d5fc16e2122__1712039880
URL1:https://arc.ask3.ru/arc/aa/e9/22/e9a62a92a22168be551e2d5fc16e2122.html
Заголовок, (Title) документа по адресу, URL1:
Cache placement policies - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)