Почему кэш L1 быстрее, чем кэш L2?

14

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

ConditionRacer
источник
9
Потому что он построен таким образом.
Игнасио Васкес-Абрамс
Существует несколько способов создания ОЗУ одного типа. Некоторые способы приводят к тому, что ОЗУ быстрее, чем ОЗУ, построенное другими способами.
Игнасио Васкес-Абрамс
По той же причине, по которой ваша DDR RAM быстрее, чем ваш HDD ...
hassan789
1
связанный: мой ответ на вопрос SO и о размерах кэша также объясняет некоторые компромиссы между скоростью и энергопотреблением, связанные с наличием многоуровневых кэшей. По сути, создание суперскоростного кэша требует больших затрат энергии и площади кристалла для параллельной работы и несовместимо с большими размерами / ассоциативностью, которые требуются в кэше последнего уровня.
Питер Кордес

Ответы:

24

Нет, это не тот же тип ОЗУ, хотя они и на одном чипе, который использует тот же производственный процесс.

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

Дэйв Твид
источник
3
Это то, что я ищу, спасибо. Знаете ли вы какие-нибудь хорошие источники, где я могу прочитать о различиях?
ConditionRacer
Нет, не случайно. Детали этих компромиссов между пространством / мощностью / временем, а также варианты, касающиеся емкости кеша и архитектуры, очень тесно связаны с частными деталями процессов производителя, поэтому об этом публикуется очень мало (если вообще что-либо). Я могу говорить только в общих чертах.
Дэйв Твид
10
L1 также меньше, что означает, что распространение сигнала по нему занимает меньше тактов: часто размер L1 определяется как наибольшая доступная память за 1 (или 2) такта.
Брайан Драммонд
6
В дополнение к точке Брайана Драммонда, L1 также обычно использует параллельный доступ с тегами данных. L2 обычно сначала обращается к тэгам (определяя, каким образом, в случае какого-либо попадания), затем к данным, увеличивая задержку, но экономя энергию (значительную, учитывая больший размер, более высокую ассоциативность и более высокий коэффициент пропусков). (Доступ к L2 также обычно начинается после подтверждения пропуска L1, что увеличивает его эффективную задержку.)
Пол А. Клейтон
@BrianDrummond - меньше как с точки зрения нагрузки на провод, так и глубины затвора (я не думаю, что это очевидно из вашего комментария).
Шон
5

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

Кэш-память L1: доступ к циклу 2-3 такта

Кэш-память второго уровня: ~ 10 циклов доступа

Кэш-память L3: ~ 20-30 циклов доступа

Конструкция кэша L1 должна заключаться в том, чтобы максимизировать частоту обращений (вероятность того, что требуемый адрес инструкции или адрес данных находятся в кэше), сохраняя при этом минимальную задержку кэша. Intel использует кэш-память L1 с задержкой в ​​3 цикла. Кэш L2 распределяется между одним или несколькими кэшами L1 и часто намного, намного больше. Принимая во внимание, что кэш L1 разработан, чтобы максимизировать частоту обращений, кэш L2 разработан, чтобы минимизировать штраф промахов (задержка, понесенная, когда случается промах L1). Для чипов, которые имеют кэш-память L3, назначение зависит от дизайна чипа. Для Intel кеши L3 впервые появились в четырехпроцессорных многопроцессорных системах (процессоры Pentium 4 Xeon MP) в этом смысле. Кэши L3 в этом смысле значительно сократили задержки в многопоточных средах и сняли нагрузку с FSB. В то время,

Цитата получена здесь из ответа "Pinhedd's".

EasyOhm
источник
1
L1 обычно используется и для данных, но это правда, что часто данные L1 и инструкции L1 разделяются, а L2 используется совместно: programmers.stackexchange.com/questions/44731/… (одна из причин, по которой он может использоваться совместно, состоит в том, что у него больше способов ).
Гай Сиртон
1
Обычно процессоры имеют отдельные кэши команд и данных на уровне L1. Конечно, верно для более поздних чипов x86 и SPARC. И некоторые кэши инструкций L1 не хранят декодированные инструкции. Pentium 4 хранил декодированные инструкции, но затем Intel вернулась к обычным I-кэшам, а затем недавно добавила декодированные кеши команд обратно в свои чипы.
Крэйг С. Андерсон,
3

Есть несколько причин, по которым скорость обратно пропорциональна размеру. Первое, что приходит на ум, - это физическое доминирование проводников, где распространение сигнала ограничено некоторым фактором скорости света. Операция может занять столько времени, сколько потребуется электрический сигнал, чтобы пройти самое длинное расстояние внутри ячейки памяти и обратно. Другая связанная с этим причина - разделение часовых доменов. Каждый процессор работает от своего собственного тактового генератора, который позволяет процессору работать на тактовых частотах с частотой несколько ГГц. Кэш первого уровня работает и синхронизируется с тактовой частотой процессора, которая является самой быстрой в системе. Кеш уровня 2, с другой стороны, должен обслуживать многие процессоры и работает в другом (более медленном) тактовом домене. Не только тактовая частота L2 медленнее (большая ячейка), но и пересечение границы области часов добавляет еще одну задержку. Тогда, конечно, есть проблемы с разветвлением (уже упоминалось).

LR24
источник
1

Помимо присущих характеристик производительности, также играет роль локальность (L1 ближе к процессору). Согласно тому, что каждый программист должен знать о памяти :

Интересно отметить, что для встроенного кэша L2 большая часть (вероятно, даже большая часть) времени доступа вызвана задержками проводных соединений. Это физическое ограничение, которое может ухудшиться только при увеличении размеров кэша. Только сокращение процессов (например, от 60 нм для Merom до 45 нм для Penryn в линейке Intel) может улучшить эти показатели.

assylias
источник
Я думаю, что это применимо в основном там, где кэши велики - это относится не ко всем типам процессоров (хотя задержка соединения значительна).
Шон