Взгляните на: Кэш процессоров L1, L2 и L3 все сделаны из SRAM?
В общем, все они реализованы с помощью 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 и L3 Кэш Разница?
Обычно на современных ядрах ЦП имеется 3 слоя кеша:
- Кэш-память первого уровня очень мала и очень тесно связана с реальными процессорами ЦП, обычно она может выполнять запросы данных в течение 3 тактов ЦП. Кэш-память первого уровня, как правило, составляет около 4-32 КБ в зависимости от архитектуры ЦП и разделена между кэшами инструкций и данных.
- Кэш-память второго уровня обычно больше, но немного медленнее и обычно привязана к ядру процессора. Последние процессоры, как правило, имеют 512 КБ кэш-памяти на ядро, и этот кэш не имеет различий между кэшами команд и данных, это унифицированный кэш. Я полагаю, что время отклика для данных в кеше обычно не превышает 20 тактов процессора
- Кэш-память третьего уровня, как правило, разделяется всеми ядрами, присутствующими в ЦП, и снова становится намного больше и медленнее, но все равно намного быстрее, чем при переходе в основную память. Кэш-память третьего уровня обычно имеет размер 4-8 МБ.
- Основная память (~ 16 G, Shared).
Взгляните на: https://stackoverflow.com/questions/4666728/size-of-l1-cache-and-l2-cache
L1 ближе к процессору, и доступ к нему осуществляется при каждом доступе к памяти, поэтому его обращения происходят очень часто. Таким образом, он должен возвращать данные очень быстро (обычно в течение тактового цикла). Это также требует много портов чтения / записи и высокой пропускной способности доступа. Создание большого кэша с этими свойствами невозможно. Таким образом, дизайнеры держат его небольшим, например, 32 КБ в большинстве процессоров сегодня.
Доступ к L2 возможен только при пропусках на L1, поэтому доступ осуществляется реже (обычно 1/20 от L1). Таким образом, для доступа к L1 может потребоваться несколько циклов (обычно до 10) и меньше портов. Это позволяет дизайнерам сделать его больше.
Они оба играют разные роли. Если L1 будет увеличен, это увеличит задержку доступа к L1, что резко снизит производительность, потому что замедлит загрузку и хранение. Таким образом, размер L1 практически не обсуждается.
Если мы удалили L2, промахи L1 должны будут перейти на следующий уровень, скажем, в память. Это означает, что большой объем доступа будет поступать в память, что будет означать, что нам нужна дополнительная пропускная способность памяти, что уже является узким местом. Таким образом, держать L2 вокруг выгодно.
Эксперты часто называют L1 фильтром задержки (поскольку он ускоряет частые случаи попаданий L1), а L2 - фильтром полосы пропускания, поскольку он уменьшает использование полосы пропускания памяти.
Примечание. Я использовал двухуровневую иерархию кэша в своем аргументе, чтобы упростить его. Почти во всех современных многоядерных чипах также существует L3. В этих чипах L3 играет роль фильтра пропускной способности памяти. L2 теперь играет роль фильтра пропускной способности на кристалле, то есть он уменьшает доступ к межсоединению на кристалле и L3 (позволяя разработчикам устанавливать межсоединения с низкой пропускной способностью, такие как кольцо и медленный однопортовый L3, который позволяет им сделать L3 больше).
Возможно, стоит упомянуть, что количество портов является очень важным моментом проектирования, поскольку оно определяет, сколько памяти будет занимать кэш-память. Порты добавляют провода к кешу, который потребляет много чипа и энергии.
Взгляните на: http://en.wikipedia.org/wiki/Static_random-access_memory
Статическая память с произвольным доступом (SRAM или статическая память) - это тип полупроводниковой памяти, в которой для сохранения каждого бита используется схема с двумя защелками. Термин статический отличает его от динамического ОЗУ (DRAM), которое необходимо периодически обновлять. SRAM демонстрирует постоянство данных 1, но он все еще нестабилен в общепринятом смысле, что данные в конечном итоге теряются, когда на память не подается питание.