ScholarGate
Ассистент

Иерархия памяти и кэши

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

Найти тему в PaperMindСкороFind papers & topics
Tools & resources
Скачать слайды
Learn & explore
ВидеоСкоро

Definition

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

Scope

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

Sub-topics

Core questions

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

Key concepts

  • временная и пространственная локальность
  • попадание и промах кэша
  • ассоциативность и политика замещения
  • сквозная запись и обратная запись
  • многоуровневые кэши
  • когерентность кэша
  • виртуальная память и страничная организация
  • буфер ассоциативной трансляции
  • DRAM и пропускная способность памяти
  • среднее время доступа к памяти

Key theories

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

Mechanisms

Когда процессор запрашивает данные, сначала проверяется кэш; попадание (hit) быстро возвращает данные, в то время как промах (miss) извлекает блок с более низкого уровня и может вытеснить другой блок в соответствии с политикой замещения. Записи распространяются с помощью схем сквозной записи (write-through) или обратной записи (write-back), а протоколы когерентности поддерживают согласованность нескольких кэшей. Виртуальная память добавляет шаг трансляции — через таблицы страниц и буфер ассоциативной трансляции (translation lookaside buffer) — сопоставляя адреса программы с физической DRAM, обеспечивая при этом защиту.

Clinical relevance

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

History

Морис Уилкс предложил концепцию кэша («подчиненной памяти») в 1965 году, и кэши появились в коммерческих машинах, таких как IBM System/360 Model 85. Виртуальная память возникла с компьютером Atlas в начале 1960-х годов, формализованная моделью рабочего набора Деннинга. Обзор Алана Джея Смита 1982 года обобщил знания о проектировании кэшей, а многоуровневые кэши и сложные протоколы когерентности стали стандартом по мере увеличения разрыва в скорости между процессором и памятью.

Debates

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

Key figures

  • Maurice Wilkes
  • Alan Jay Smith
  • Peter J. Denning
  • John L. Hennessy
  • David A. Patterson

Related topics

Seminal works

  • hennessy2019
  • smith1982cache
  • patterson2020

Frequently asked questions

Почему кэши эффективны, если они так малы по сравнению с основной памятью?
Потому что программы демонстрируют локальность: в любой момент они многократно обращаются только к небольшому рабочему набору данных, и обращения группируются по соседним адресам. Небольшой кэш, содержащий этот рабочий набор, таким образом, удовлетворяет подавляющее большинство запросов.
В чем разница между кэшем и виртуальной памятью?
Оба перемещают данные между более быстрым, меньшим уровнем и более медленным, большим. Кэш (управляемый аппаратно) хранит блоки основной памяти; виртуальная память (управляемая операционной системой) сопоставляет адреса программы с физической памятью и переносит данные на диск и с диска, а также обеспечивает защиту и адресное пространство, большее, чем физическая ОЗУ.

Methods for this concept

Related concepts