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 для основной памяти определяется по Hit time main memory . 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 Xeon Emerald Rapids (2024)

До 64 ядер:

Intel i5 Raptor Lake-HX (2024)

6 ядер (производительность| эффективность):

AMD EPYC 9684X (2023)

96 ядер:

Apple M1 Ультра (2022)

20 ядер (4:1 ядро ​​«производительности» | ядро ​​«эффективности»):

AMD Ryzen 7000 (2022)

6–16 ядер:

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

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

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

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

IBM POWER7 (2010)

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

Ссылки

  1. ^ Хеннесси, Джон Л.; Паттерсон, Дэвид А.; Асанович, Крсте ; Бакос, Джейсон Д.; Колвелл, Роберт П.; Бхаттачарджи, Абхишек; Конте, Томас М.; Дуато, Хосе; Франклин, Диана; Голдберг, Дэвид; Джуппи, Норман П.; Ли, Шэн; Муралиманохар, Навин; Петерсон, Грегори Д.; Пинкстон, Тимоти Марк; Ранганатан, Пракаш; Вуд, Дэвид Аллен; Янг, Клиффорд; Заки, Амр (2011). Архитектура компьютера: количественный подход (шестое изд.). Elsevier Science. ISBN 978-0128119051. OCLC  983459758.
  2. ^ «Кэш: зачем его выравнивать» (PDF) .
  3. ^ Рональд Д. Миллер; Ларс И. Эрикссон; Ли А. Флейшер, 2014. Электронная книга Миллера по анестезии. Elsevier Health Sciences. стр. 75. ISBN 978-0-323-28011-2
  4. ^ Альберт И. Зомайя, 2006. Справочник по вдохновленным природой и инновационным вычислениям: интеграция классических моделей с новыми технологиями. Springer Science & Business Media. стр. 298. ISBN 978-0-387-40532-2
  5. ^ Ричард К. Дорф, 2018. Датчики, нанонаука, биомедицинская инженерия и приборы: Датчики, нанонаука, биомедицинская инженерия. CRC Press. стр. 4. ISBN 978-1-4200-0316-1
  6. ^ Дэвид А. Паттерсон; Джон Л. Хеннесси, 2004. Организация и проектирование компьютеров: интерфейс оборудования и программного обеспечения, третье издание. Elsevier. стр. 552. ISBN 978-0-08-050257-1
  7. ^ "Сэр Морис Винсент Уилкс | Британский учёный-компьютерщик". Encyclopaedia Britannica . Получено 11 декабря 2016 г.
  8. ^ Беркли, Джон Л. Хеннесси, Стэнфордский университет, и Дэвид А. Паттерсон, Калифорнийский университет. «Проектирование иерархии памяти — Часть 6. Intel Core i7, заблуждения и подводные камни». EDN . Получено 13 октября 2022 г.{{cite news}}: CS1 maint: несколько имен: список авторов ( ссылка )
  9. ^ Шейн Кук, 2012. Программирование CUDA: Руководство разработчика по параллельным вычислениям с использованием графических процессоров. Newnes. С. 107–109. ISBN 978-0-12-415988-4
  10. ^ Брюс Хеллингсворт; Патрик Холл; Говард Андерсон; 2001. Higher National Computing. Routledge. стр. 30–31. ISBN 978-0-7506-5230-8
  11. ^ Reeta Sahoo, Gagan Sahoo. Infomatic Practices. Saraswati House Pvt Ltd. стр. 1–. ISBN 978-93-5199-433-6
  12. ^ Филлип А. Лапланте; Сеппо Дж. Оваска; 2011. Проектирование и анализ систем реального времени: инструменты для практиков. John Wiley & Sons. стр. 94–95. ISBN 978-1-118-13659-1
  13. ^ abc Хеннесси и Паттерсон. Архитектура компьютера: количественный подход . Морган Кауфманн . ISBN 9780123704900.
  14. ^ Cetin Kaya Koc, 2008. Криптографическая инженерия. Springer Science & Business Media. С. 479–480. ISBN 978-0-387-71817-0
  15. ^ Дэвид А. Паттерсон; Джон Л. Хеннесси; 2008. Организация и проектирование компьютеров: интерфейс оборудования и программного обеспечения. Morgan Kaufmann. С. 489–492. ISBN 978-0-08-092281-2
  16. ^ Харви Г. Крейгон, 2000. Архитектура и реализация компьютеров. Cambridge University Press. С. 95–97. ISBN 978-0-521-65168-4
  17. ^ Бейкер Мохаммад, 2013. Проектирование встроенной памяти для многоядерных процессоров и систем на кристалле. Springer Science & Business Media. С. 11–14. ISBN 978-1-4614-8881-1
  18. ^ Гейд, Уильям. «Как проектируются и строятся процессоры». Techspot . Получено 17 августа 2019 г.
  19. ^ Вожин Г. Оклобдзия, 2017. Цифровой дизайн и производство. ЦРК Пресс. п. 4. ISBN 978-0-8493-8604-6
  20. ^ «Иерархия памяти».
  21. ^ ab Solihin, Yan (2016). Основы параллельной многоядерной архитектуры . Chapman and Hall. стр. Глава 5: Введение в организацию иерархии памяти. ISBN 9781482211184.
  22. ^ Ян Солихин, 2015. Основы параллельной многоядерной архитектуры. CRC Press. стр. 150. ISBN 978-1-4822-1119-1
  23. ^ Стив Хит, 2002. Проектирование встроенных систем. Elsevier. стр. 106. ISBN 978-0-08-047756-5
  24. ^ Алан Клементс, 2013. Организация и архитектура компьютера: темы и вариации. Cengage Learning. стр. 588. ISBN 1-285-41542-6
  25. ^ "Оценка производительности иерархий эксклюзивного кэша" (PDF) . Архивировано из оригинала (PDF) 2012-08-13 . Получено 2016-10-19 .
  26. ^ Дэвид А. Паттерсон; Джон Л. Хеннесси; 2017. Организация и проектирование компьютеров RISC-V Edition: Интерфейс оборудования и программного обеспечения. Elsevier Science. стр. 386–387. ISBN 978-0-12-812276-1
  27. ^ Стефан Годекер; Адольфи Хойзи; 2001. Оптимизация производительности численно-интенсивных кодов. SIAM. стр. 11. ISBN 978-0-89871-484-5
  28. ^ ab Солихин, Ян (2009). Основы архитектуры параллельных компьютеров . Издательство Солихина. стр. Глава 6: Введение в организацию иерархии памяти. ISBN 9780984163007.
  29. ^ Харви Г. Крейгон, 1996. Системы памяти и конвейерные процессоры. Jones & Bartlett Learning. стр. 47. ISBN 978-0-86720-474-2
  30. ^ Дэвид А. Паттерсон; Джон Л. Хеннесси; 2007. Организация и проектирование компьютеров, пересмотренная печать, третье издание: Интерфейс оборудования и программного обеспечения. Elsevier. стр. 484. ISBN 978-0-08-055033-6
  31. ^ «Программные методы для многоядерных систем с общим кэшем». 2018-05-24.
  32. ^ "Адаптивная схема общего/частного разбиения кэша NUCA для многопроцессорных чипов" (PDF) . Архивировано из оригинала (PDF) 2016-10-19.
  33. ^ Аканкша Джейн; Кэлвин Лин; 2019. Политики замены кэша. Morgan & Claypool Publishers. стр. 45. ISBN 978-1-68173-577-1
  34. ^ Дэвид Каллер; Джасвиндер Пал Сингх; Ануп Гупта; 1999. Архитектура параллельных компьютеров: аппаратно-программный подход. Gulf Professional Publishing. стр. 436. ISBN 978-1-55860-343-1
  35. ^ ab Stephen W. Keckler; Kunle Olukotun; H. Peter Hofstee; 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) 2014-08-11.
  39. ^ "IBM Power7". Архивировано из оригинала 21 августа 2010 года.