Иерархия кэша

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

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

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

Pr Схема архитектуры процесса, показывающая четыре независимых процессора, каждый из которых связан через системы кэширования с основной памятью и системой ввода-вывода. Универсальная многоуровневая организация кеширования
Содержание
  • 1 Предпосылки
  • 2 Многоуровневый кэш
    • 2.1 Среднее время доступа (AAT)
    • 2.2 Компромиссы
    • 2.3 Evolution
    • 2.4 Повышение производительности
    • 2.5 Недостатки
  • 3 Свойства
    • 3.1 Банковские по сравнению с унифицированный
    • 3.2 Политики включения
    • 3.3 Политики записи
    • 3.4 Совместное использование в сравнении с частным
  • 4 Последние модели реализации
    • 4.1 Микроархитектура Intel Broadwell (2014)
    • 4.2 Микроархитектура Intel Kaby Lake (2016)
    • 4.3 Микроархитектура AMD Zen (2017)
    • 4.4 Микроархитектура AMD Zen 2 (2019)
    • 4.5 IBM Power 7
  • 5 См. Также
  • 6 Ссылки
Предпосылки

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

Это привело к концепции кэш-памяти, впервые предложенной Морисом. Уилкс, британский ученый-компьютерщик из Кембриджского университета в 1965 году. Он назвал такие модели памяти «рабской памятью». Примерно между 1970 и 1990 годами в статьях и статьях Ананта Агарвала, Алана Джея Смита, Марка Д. Хилла и других обсуждались более совершенные конструкции кэш-памяти. В то время были реализованы первые модели кэш-памяти, но даже когда исследователи изучали и предлагали лучшие конструкции, потребность в более быстрых моделях памяти сохранялась. Эта потребность возникла из-за того, что, хотя ранние модели кеширования улучшали задержку доступа к данным, с точки зрения стоимости и технических ограничений кэш компьютерной системы не мог приблизиться к размеру основной памяти. Начиная с 1990 года, предлагались такие идеи, как добавление еще одного уровня кэша (второго уровня) в качестве резервной копии кеша первого уровня. Жан-Лу Бэр, Вен-Ханн Ван, Эндрю Уилсон и другие проводили исследования этой модели. Когда несколько симуляций и реализаций продемонстрировали преимущества двухуровневых моделей кэш-памяти, концепция многоуровневых кешей стала новой и в целом более совершенной моделью кэш-памяти. С 2000 года модели многоуровневой кэш-памяти привлекли широкое внимание и в настоящее время реализованы во многих системах, например, трехуровневые кэш-памяти, присутствующие в продуктах Intel Core i7.

Многоуровневый кэш

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

Среднее время доступа (AAT)

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

AAT = время попадания + ((частота промахов) × (штраф за промах)) {\ displaystyle {\ text {AAT}} = {\ text {время обращения}} + (({\ text {коэффициент промахов}}) \ times ({\ text {штраф за промах}}))}{\ displaystyle {\ text {AAT}} = {\ text {время обращения}} + (({\ text {коэффициент промахов}}) \ times ({\ text {штраф за промах}})) }

AAT для основной памяти определяется временем обращения основная память. AAT для кешей может быть задан как

Время попадания кеш + (Частота промахов кеш × Штраф за промах время, затраченное на переход в основную память после отсутствия кэша).

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

Компромиссы

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

Evolution

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

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

Повышение производительности

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

Пример: основная память = 50 нс, L1 = 1 нс с частотой промахов 10%, L2 = 5 нс с частотой промахов 1%), L3 = 10 нс с частотой промахов 0,2%.

  • Нет кеша, AAT = 50 нс
  • Кэш L1, AAT = 1 нс + (0,1 × 50 нс) = 6 нс
  • Кэш L1–2, AAT = 1 нс + ( 0,1 × [5 нс + (0,01 × 50 нс)]) = 1,55 нс
  • Кэш L1–3, AAT = 1 нс + (0,1 × [5 нс + (0,01 × [10 нс + (0,002 × 50 нс)])]) = 1.5001 нс

Недостатки

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

Банковское или объединенное

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

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

Политики включения

схема системы памяти, показывающая копию L1 в L2 и копию L2 в L3. Инклюзивная организация кеша

Может ли блок, присутствующий в верхнем уровне кеша, также присутствовать на нижнем уровне кеша, определяется включением системы памяти политика, которая может быть включающей, исключающей или неисключающей, неисключительной (ДЕВЯТЬ).

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

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

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

Политики записи

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

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

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

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

Общие комбинации политик: «блок записи», «выделение для записи» и «запись через запись без выделения».

Совместное использование в сравнении с частным

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

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

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

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

Последние модели реализации
Организация кеш-памяти микроархитектуры Intel Nehalem

микроархитектура Intel Broadwell (2014)

  • Кэш L1 (инструкции и данные) - 64 КБ на ядро ​​
  • Кэш L2 - 256 КБ на ядро ​​
  • Кэш L3 - 2 МБ до 6 МБ общего
  • кэш L4 - 128 МБ eDRAM (только модели Iris Pro)

Микроархитектура Intel Kaby Lake (2016)

  • Кэш L1 (инструкции и данные) - 64 КБ на ядро ​​
  • Кэш L2 - 256 КБ на ядро ​​
  • Кэш L3 - от 2 МБ до 8 МБ совместно

Микроархитектура AMD Zen (2017)

  • Кэш L1 - 32 КБ данных и 64 КБ инструкций на ядро, 4-сторонний
  • кэш L2 - 512 КБ на ядро, 4-сторонний включительно
  • Кэш L3 - 4 МБ локальный и удаленный на 4-ядерный CCX, 2 CCX на чиплет, 16- способ не включающий. До 16 МБ на настольных процессорах и 64 МБ на серверных процессорах

микроархитектура AMD Zen 2 (2019)

  • кэш L1 - 32 кБ данных и 32 кБ инструкций на ядро, 8-процессорный
  • кэш L2 - 512 КБ на ядро, 8-процессорный кэш
  • L3 включительно - 16 МБ на каждый 4-ядерный CCX, 2 CCX на чиплет, 16-канальный без включения. До 64 МБ на ЦП настольных ПК и 256 МБ на ЦП серверов

IBM Power 7

  • Кэш L1 (инструкции и данные) - каждый с 64-ю банками, каждый банк имеет 2 порта + 1wr 32 кБ, 8-сторонний ассоциативный, Блок 128 Байт, запись через
  • Кэш L2 - 256 Кбайт, 8-полосный, блок 128 Байт, обратная запись, включая L1, задержка доступа 2 нс
  • Кэш L3 - 8 областей по 4 Мбайт ( всего 32 МБ), локальная область 6 нс, удаленная 30 нс, каждая область 8-канальная ассоциативная, массив данных DRAM, массив тегов SRAM
См. также
Ссылки
Последняя правка сделана 2021-05-13 13:06:45
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте