Почему кеш-память такая дорогая?

13383
BradleyMorgan

В разговорах о компьютерной архитектуре считается, что кэш-память намного дороже основной памяти.

Я понимаю, что он должен быть близко к процессору, и, следовательно, должен быть меньше, но что еще влияет на стоимость кэш-памяти?

Может кто-нибудь объяснить детали материалов \ труд \ технология \ производство \ итд. требуется для кеша и основной памяти, чтобы я мог лучше понять стоимость?

4

2 ответа на вопрос

4
Margus

Взгляните на: Кэш процессоров 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, но он все еще нестабилен в общепринятом смысле, что данные в конечном итоге теряются, когда на память не подается питание.

0
Giovanni Tirloni

Краткий ответ: потому что регистры, кеш и основная память строятся по-разному, поэтому существует компромисс между быстрым / дорогим и медленным / дешевым.

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

Вы можете прочитать больше об этом на странице Иерархии памяти Википедии и перейти по ссылкам для более подробной информации.

Если вы хотите углубиться в эту область, доклады Мартина Томпсона очень проницательны, особенно те, что касаются мифов о производительности (в которых есть прямое сравнение регистров, кэша и основной памяти).

Похожие вопросы