Где именно в компьютере расположены кэши L1, L2 и L3?

Где именно в компьютере расположены кэши L1, L2 и L3?

Где именно в компьютере расположены кэши L1, L2 и L3?

Я знаю, что мы используем кэш для повышения производительности, выбирая ДАННЫЕ и ИНСТРУКЦИИ из кэша, а не из основной памяти.

Ниже приведены мои вопросы.

  1. Где именно расположен кэш L1? На чипе ЦП?
  2. Где именно расположен кэш L2?

  3. Где именно расположен кэш L3 на материнской плате?

Я думаю, что новейшие SMP-процессоры используют трехуровневую кэш-память, поэтому я хочу понять иерархию уровней кэш-памяти и их архитектуру.

решение1

Начнем вот с чего:

Я думаю, что новейшие SMP-процессоры используют трехуровневую кэш-память, поэтому я хочу понять иерархию уровней кэш-памяти и их архитектуру.

Чтобы понять, что такое кэши, вам нужно знать несколько вещей:

У ЦП есть регистры. Значения в них можно использовать напрямую. Нет ничего быстрее.

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

(Представьте себе воображаемую пластину площадью 500 см2 . Я отрезаю от нее 10 чипов, каждый размером 50 см2 . Один из них сломан. Я выбрасываю его, и у меня остается 9 рабочих чипов. Теперь беру ту же пластину и отрезаю от нее 100 чипов, каждый в десять раз меньше. Один из них сломан. Я выбрасываю сломанный чип, и у меня остается 99 рабочих чипов. Это лишь малая часть потерь, которые я бы понес в противном случае. Чтобы компенсировать более крупные чипы, мне пришлось бы запросить более высокую цену. Больше, чем просто цена за дополнительный кремний.)

Это одна из причин, почему нам нужны небольшие и доступные по цене чипы.

Однако чем ближе кэш к процессору, тем быстрее к нему можно получить доступ.

Это также легко объяснить: электрические сигналы распространяются со скоростью, близкой к скорости света. Это быстро, но все же конечная скорость. Современные процессоры работают с тактовой частотой ГГц. Это тоже быстро. Если я возьму процессор с частотой 4 ГГц, то электрический сигнал может пройти около 7,5 см за такт. Это 7,5 см по прямой линии. (Микросхемы — это все, что угодно, но только не прямые соединения). На практике вам понадобится значительно меньше этих 7,5 см, поскольку это не дает времени для микросхем представить запрошенные данные и для сигнала на обратное перемещение.

В итоге мы хотим, чтобы кэш был физически как можно ближе. А это значит большие чипы.

Эти два фактора необходимо сбалансировать (производительность и стоимость).

Где именно в компьютере расположены кэши L1, L2 и L3?

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

IBM XT
Оригинальный 4,77 МГц: кэш отсутствует. ЦП обращается к памяти напрямую. Чтение из памяти будет происходить по такой схеме:

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

80286 (1982)
По-прежнему нет кэша. Доступ к памяти не был большой проблемой для версий с более низкой скоростью (6 МГц), но более быстрая модель работала на частоте до 20 МГц и часто требовала задержки при доступе к памяти.

Тогда вы получите такой сценарий:

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

Это дополнительный шаг, потраченный на ожидание памяти.В современной системе это может быть легко 12 шагов, поэтому у нас есть кэш.

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

Чтение из памяти теперь начинается с проверки, есть ли данные уже в кэше. Если да, то они считываются из гораздо более быстрого кэша. Если нет, то та же процедура, что описана для 80286

80486: (1989)
Это первый ЦП этого поколения, который имеет кэш на ЦП.
Это унифицированный кэш объемом 8 КБ, что означает, что он используется для данных и инструкций.

Примерно в это время становится обычным размещать 256 КБ быстрой статической памяти на материнской плате в качестве кэша 2 -го уровня. Таким образом, кэш 1- го уровня на ЦП, кэш 2 -го уровня на материнской плате.

Материнская плата 486 с обозначением расположения процессора и кэша 2-го уровня

80586 (1993)
586 или Pentium-1 использует кэш 1-го уровня, разделенный на 8 КБ для данных и инструкций. Кэш был разделен так, чтобы кэши данных и инструкций можно было индивидуально настраивать для их конкретного использования. У вас по-прежнему есть небольшой, но очень быстрый 1 кэш около ЦП и больший, но более медленный 2 кэш на материнской плате. (На большем физическом расстоянии).

В той же области, где производился Pentium 1, Intel выпустилаПентиум Про('80686'). В зависимости от модели этот чип имел 256Кб, 512Кб или 1Мб кэша на борту. Он также был намного дороже, что легко объяснить с помощью следующей картинки.

Изображение процессора Pentium Pro, модель кэша 256 КБ

Обратите внимание, что половина пространства в чипе занята кэшем. И это для модели 256 КБ. Больше кэша было технически возможно, и некоторые модели выпускались с кэшами 512 КБ и 1 МБ. Рыночная цена на них была высокой.

Также обратите внимание, что этот чип содержит два кристалла. Один с реальным ЦП и первым кэшем , а второй кристалл с 256 КБ второго кэша .

Пентиум-2

Pentium 2 — это ядро ​​Pentium Pro. По экономическим причинам в ЦП нет 2 -го кэша. Вместо этого то, что продается как ЦП, представляет собой печатную плату с отдельными чипами для ЦП (и 1- го кэша) и 2 -го кэша.

По мере развития технологий и начала создания чипов с меньшими компонентами становится финансово возможным поместить 2 кэш обратно в реальный кристалл ЦП. Однако разделение все еще существует. Очень быстрый 1 кэш прижимается к ЦП. С одним 1- м кэшем на ядро ​​ЦП и большим, но менее быстрым 2 кэшем рядом с ядром.

Изображение процессора Pentium 2 (с крышкой и без нее)

Пентиум-3
Пентиум-4
Это не относится ни к Pentium-3, ни к Pentium-4.

Примерно в это время мы достигли практического предела того, насколько быстро мы можем тактировать процессоры. 8086 или 80286 не нуждались в охлаждении. Pentium-4, работающий на частоте 3,0 ГГц, производит так много тепла и потребляет так много энергии, что становится более практичным разместить два отдельных процессора на материнской плате, а не один быстрый.

(Два процессора с частотой 2,0 ГГц потребляли бы меньше энергии, чем один идентичный процессор с частотой 3,0 ГГц, но могли бы выполнять больше работы).

Эту проблему можно решить тремя способами:

  1. Сделайте процессоры более эффективными, чтобы они выполняли больше работы на той же скорости.
  2. Использовать несколько процессоров
  3. Используйте несколько процессоров в одном «чипе».

1) Это продолжающийся процесс. Он не новый и не остановится.

2) Было сделано на ранней стадии (например, с двумя материнскими платами Pentium-1 и чипсетом NX). До сих пор это был единственный вариант для создания более быстрого ПК.

3) Требуются процессоры, в которых несколько «ядер процессора» встроены в один чип. (Затем мы назвали такой процессор двухъядерным процессором, чтобы усилить путаницу. Спасибо маркетингу :) )

В наши дни, чтобы избежать путаницы, мы просто называем процессор «ядром».

Теперь существуют такие чипы, как Pentium-D (duo), которые по сути представляют собой два ядра Pentium-4 на одном чипе.

Ранний Pentium-D (2 ядра P4)

Помните картинку старого pentium-Pro? С огромным размером кэша?
Смотритедвабольшие площади на этой картинке?

Оказывается, мы можем разделить этот кэш 2 -го уровня между двумя ядрами ЦП. Скорость немного упадет, но общий кэш 2 -го уровня размером 512 КБ часто быстрее, чем добавление двух независимых кэшей 2 -го уровня в два раза меньшего размера.

Это важно для вашего вопроса.

Это означает, что если вы что-то читаете из одного ядра ЦП, а затем пытаетесь прочитать это из другого ядра, которое использует тот же кэш, то вы получите кэш-попадание. Доступ к памяти не потребуется.

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

Таким образом, в более поздних моделях вы увидите общие кэши 2-го уровня.

Изображение открытого процессора Core2

Если вы программируете для современных процессоров, то у вас есть два варианта:

  1. Не беспокойтесь. ОС должна уметь планировать вещи. Планировщик оказывает большое влияние на производительность компьютера, и люди потратили много усилий на его оптимизацию. Если вы не делаете что-то странное или не оптимизируете для одной конкретной модели ПК, вам лучше использовать планировщик по умолчанию.
  2. Если вам нужна максимальная производительность, а более быстрое оборудование недоступно, попробуйте оставить потоки, которые обращаются к одним и тем же данным, на одном ядре или на ядре с доступом к общему кэшу.


Я понимаю, что я еще не упомянул кэш L3, но они не отличаются. Кэш L3 работает так же. Больше, чем L2, медленнее, чем L2. И он часто используется совместно ядрами. Если он присутствует, он намного больше, чем кэш L2 (иначе его наличие не имело бы смысла), и он часто используется совместно всеми ядрами.

modernCPUwithL3.png

решение2

Что кэши являются внутренними компонентами процессора. Некоторые из них являются общими для ядер, некоторые — индивидуальными, в зависимости от реализации. Но все они находятся на чипе. Некоторые подробности: Процессор Intel Intel® Core™ i7, взятыйздесь:

  • Кэш первого уровня (L1) объемом 32 КБ для инструкций и 32 КБ для данных для каждого ядра
  • Общий кэш второго уровня (L2) для инструкций и данных объемом 256 КБ для каждого ядра
  • 8 МБ общего кэша инструкций/данных последнего уровня (L3), общего для всех ядер

Фотография чипа процессора (извините, точную модель не знаю). Видно, что кэш занимает значительную площадь на чипе:

альтернативный текст

решение3

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

Nehalem Die (http://www.legitreviews.com/article/824/1/)

решение4

Я не уверен насчет L3, но L1/L2 всегда находится на CPU. С точки зрения иерархии, в основном, L1 — это обычно кэш инструкций, L2 и L3 — кэши данных.

Связанный контент