stringtranslate.com

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

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

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

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

Фон

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

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

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

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

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

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

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

Кэш времени попадания + ( кэш частоты промахов × время штрафа за промах , необходимое для перехода в основную память после отсутствия кеша ). [ нужны дальнейшие объяснения ]

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

Компромиссы

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

Эволюция

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

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

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

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

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

Недостатки

Характеристики

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

Банковские против унифицированных

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

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

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

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

Может ли блок, присутствующий на верхнем уровне кэша, также присутствовать на нижнем уровне кэша, определяется политикой включения системы памяти , которая может быть инклюзивной, эксклюзивной или неинклюзивной-неэксклюзивной (NINE). [ нужна цитата ]

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

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

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

Написание политик

Существует две политики, определяющие способ обновления измененного блока кэша в основной памяти: сквозная запись и обратная запись. [ нужна цитата ]

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

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

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

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

Общий и частный

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

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

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

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

Последние модели реализации

Организация кэша микроархитектуры Intel Nehalem [38]

Микроархитектура Intel Broadwell (2014 г.)

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

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

Микроархитектура AMD Zen 2 (2019 г.)

IBM POWER7 (2010 г.)

Смотрите также

Рекомендации

  1. ^ Хеннесси, Джон Л; Паттерсон, Дэвид А; Асанович, Крсте; Бакос, Джейсон Д; Колвелл, Роберт П.; Бхаттачарджи, Абхишек; Конте, Томас М; Дуато, Хосе; Франклин, Диана; Гольдберг, Дэвид; Жуппи, Норман П; Ли, Шэн; Муралиманохар, Навин; Петерсон, Грегори Д.; Пинкстон, Тимоти Марк; Ранганатан, Пракаш; Вуд, Дэвид Аллен; Янг, Клиффорд; Заки, Амр (2011). Компьютерная архитектура: количественный подход (Шестое изд.). ISBN 978-0128119051. ОКЛК  983459758.
  2. ^ «Тайник: зачем выравнивать» (PDF) .
  3. ^ Рональд Д. Миллер; Ларс И. Эрикссон; Ли А. Флейшер, 2014. Электронная книга Миллера по анестезии. Elsevier Науки о здоровье. п. 75. ISBN 978-0-323-28011-2
  4. ^ Альберт Ю. Зомайя, 2006. Справочник по природным и инновационным вычислениям: интеграция классических моделей с новыми технологиями. Springer Science & Business Media. п. 298. ISBN 978-0-387-40532-2
  5. ^ Ричард К. Дорф, 2018. Датчики, нанонаука, биомедицинская инженерия и инструменты: датчики, нанонаука, биомедицинская инженерия. ЦРК Пресс. п. 4. ISBN 978-1-4200-0316-1
  6. ^ Дэвид А. Паттерсон; Джон Л. Хеннесси, 2004. Компьютерная организация и дизайн: интерфейс аппаратного и программного обеспечения, третье издание. Эльзевир. п. 552. ISBN 978-0-08-050257-1
  7. ^ «Сэр Морис Винсент Уилкс | Британский ученый-компьютерщик» . Британская энциклопедия . Проверено 11 декабря 2016 г.
  8. ^ Беркли, Джон Л. Хеннесси, Стэнфордский университет, и Дэвид А. Паттерсон, Калифорнийский университет. «Проектирование иерархии памяти. Часть 6. Intel Core i7, заблуждения и подводные камни». ЭДН . Проверено 13 октября 2022 г.{{cite news}}: CS1 maint: несколько имен: список авторов ( ссылка )
  9. ^ Шейн Кук, 2012. Программирование CUDA: Руководство разработчика по параллельным вычислениям на графических процессорах. Ньюнес. стр. 107–109. ISBN 978-0-12-415988-4
  10. ^ Брюс Хеллингсворт; Патрик Холл; Говард Андерсон; 2001. Высшая национальная вычислительная техника. Рутледж. стр. 30–31. ISBN 978-0-7506-5230-8
  11. ^ Рита Саху, Гаган Саху. Инфоматические практики. Saraswati House Pvt Ltd., стр. 1–. ISBN 978-93-5199-433-6
  12. ^ Филип А. Лапланте; Сеппо Дж. Оваска; 2011. Проектирование и анализ систем реального времени: инструменты для практика. Джон Уайли и сыновья. стр. 94–95. ISBN 978-1-118-13659-1
  13. ^ abc Хеннесси и Паттерсон. Компьютерная архитектура: количественный подход . Морган Кауфманн . ISBN 9780123704900.
  14. ^ Четин Кая Коч, 2008. Криптографическая инженерия. Springer Science & Business Media. стр. 479–480. ISBN 978-0-387-71817-0
  15. ^ Дэвид А. Паттерсон; Джон Л. Хеннесси; 2008. Организация и дизайн компьютера: аппаратно-программный интерфейс. Морган Кауфманн. стр. 489–492. ISBN 978-0-08-092281-2
  16. ^ Харви Г. Крагон, 2000. Компьютерная архитектура и реализация. Издательство Кембриджского университета. стр. 95–97. ISBN 978-0-521-65168-4
  17. ^ Бейкер Мохаммад, 2013. Проектирование встроенной памяти для многоядерных и систем на кристалле. Springer Science & Business Media. стр. 11–14. ISBN 978-1-4614-8881-1
  18. ^ Гайд, Уильям. «Как проектируются и создаются процессоры». Техспот . Проверено 17 августа 2019 г.
  19. ^ Вожин Г. Оклобдзия, 2017. Цифровой дизайн и производство. ЦРК Пресс. п. 4. ISBN 978-0-8493-8604-6
  20. ^ «Иерархия памяти».
  21. ^ аб Солихин, Ян (2016). Основы параллельной многоядерной архитектуры . Чепмен и Холл. стр. Глава 5: Введение в организацию иерархии памяти. ISBN 9781482211184.
  22. ^ Ян Солихин, 2015. Основы параллельной многоядерной архитектуры. ЦРК Пресс. п. 150. ISBN 978-1-4822-1119-1
  23. ^ Стив Хит, 2002. Проектирование встраиваемых систем. Эльзевир. п. 106. ISBN 978-0-08-047756-5
  24. ^ Алан Клементс, 2013. Компьютерная организация и архитектура: темы и вариации. Cengage Обучение. п. 588. ISBN 1-285-41542-6
  25. ^ «Оценка производительности эксклюзивных иерархий кэша» (PDF) . Архивировано из оригинала (PDF) 13 августа 2012 г. Проверено 19 октября 2016 г.
  26. ^ Дэвид А. Паттерсон; Джон Л. Хеннесси; 2017. Компьютерная организация и дизайн RISC-V Edition: Аппаратно-программный интерфейс. Эльзевир Наука. стр. 386–387. ISBN 978-0-12-812276-1
  27. ^ Стефан Гедекер; Адольфи Хойзи; 2001. Оптимизация производительности числовых кодов. СИАМ. п. 11. ISBN 978-0-89871-484-5
  28. ^ аб Солихин, Ян (2009). Основы архитектуры параллельного компьютера . Издательство Солихин. стр. Глава 6: Введение в организацию иерархии памяти. ISBN 9780984163007.
  29. ^ Харви Г. Крагон, 1996. Системы памяти и конвейерные процессоры. Джонс и Бартлетт Обучение. п. 47. ISBN 978-0-86720-474-2
  30. ^ Дэвид А. Паттерсон; Джон Л. Хеннесси; 2007. Компьютерная организация и дизайн, обновленная печать, третье издание: Аппаратно-программный интерфейс. Эльзевир. п. 484. ISBN 978-0-08-055033-6
  31. ^ «Программные методы для многоядерных систем с общим кэшем». 24 мая 2018 г.
  32. ^ «Адаптивная схема разделения общего/частного кэша NUCA для мультипроцессоров» (PDF) . Архивировано из оригинала (PDF) 19 октября 2016 г.
  33. ^ Аканкша Джайн; Кэлвин Лин; 2019. Политика замены кэша. Издательство Морган и Клейпул. п. 45. ISBN 978-1-68173-577-1
  34. ^ Дэвид Каллер; Джасвиндер Пал Сингх; Ануп Гупта; 1999. Параллельная компьютерная архитектура: аппаратно-программный подход. Профессиональное издательство Персидского залива. п. 436. ISBN 978-1-55860-343-1
  35. ^ AB Стивен В. Кеклер; Кунле Олукотун; Х. Питер Хофсти; 2009. Многоядерные процессоры и системы. Springer Science & Business Media. п. 182. ISBN 978-1-4419-0263-4
  36. ^ ab «Микроархитектура Intel Broadwell».
  37. ^ ab «Микроархитектура Intel Kaby Lake».
  38. ^ «Архитектура процессоров Nehalem и платформ Nehalem-EP SMP» (PDF) . Архивировано из оригинала (PDF) 11 августа 2014 г.
  39. ^ "IBM Power7".