Кэш процессоров L1, L2 и L3 все сделаны из SRAM?

10

Все ли кэши процессора L1, L2 и L3 сделаны из SRAM? Если это правда, почему L1 быстрее, чем L2, а L2 быстрее, чем L3? Я не понял эту часть, когда я прочитал о них.

Аказ Соуза
источник
Смежный вопрос: зачем нам несколько уровней кеш-памяти? , Также несколько связано: что такое на самом деле многоуровневый кеш в процессорах? , Из вашего комментария, я вижу, вы уже нашли последний вопрос.
Пол А. Клейтон,

Ответы:

12

В общем , все они реализованы с помощью SRAM.

(Микросхемы IBM POWER и zArchitecture используют память DRAM для L3. Это называется встроенной DRAM, потому что она реализована в том же типе технологии процесса, что и логика, что позволяет интегрировать быструю логику в тот же чип, что и DRAM. Для POWER4 отключение чип L3 используется eDRAM; POWER7 имеет L3 на том же чипе, что и ядра обработки.)

Хотя они используют SRAM, они не все используют один и тот же дизайн SRAM. SRAM для L2 и L3 оптимизированы по размеру (для увеличения емкости с учетом ограниченного размера производимого чипа или снижения стоимости заданной емкости), в то время как SRAM для L1 с большей вероятностью будет оптимизирован для скорости.

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

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

Кроме того, кэш L2 физически более удален от механизма исполнения. Размещение кэша данных L1 близко к исполнительному механизму (так, чтобы общий случай попадания L1 был быстрым) обычно означает, что L2 должен быть размещен дальше.

Пол А. Клейтон
источник
Отличный ответ. Но я не согласен с вашим утверждением, что количество промахов L2 выше, чем промахов L1. По мере того как мы перемещаемся ниже в иерархии памяти, мы имеем большие структуры, обеспечивающие меньшие промахи, но с увеличенной задержкой.
Харшавардхан Раманна
@HarshavardhanRamanna Да, увеличение емкости и ассоциативность помогают пропускать пропуски, но доступ к фильтрам нижних уровней (традиционная передача целого блока из L2 отфильтровывает кратковременную пространственную локальность в пределах блока; попадание учитывается только для одного доступа в L2, в то время как сам блок, вероятно, обеспечит попадания в L1 для дополнительного доступа). Общее количество промахов снижается (например, L2 с приличным 80% -ым ударом и L1 с 95% -ым ударом получают общий 99% -ый коэффициент попадания).
Пол А. Клейтон,