28

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

Я знаю, что мы используем Cache для повышения производительности, выбирая DATA и INSTRUCTIONS из Cache, а не из основной памяти.

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

  1. Где именно находится L1 Cache? , находится на чипе процессора?
  2. Где именно находится L2 Cache?

  3. Где именно находится L3 Cache? находится на материнской плате?

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

6 ответов6

45

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

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

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

Процессор имеет регистры. Значения в этом могут быть непосредственно использованы. Нет ничего быстрее.

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

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

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

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

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

Суть в том, что мы хотим, чтобы кэш был максимально приближен к физическому Что означает большие фишки.

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

Где именно кэш-память L1, L2 и L3 находится в компьютере?

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

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

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

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 выпустила Pentium Pro ('80686'). В зависимости от модели этот чип имел 256 КБ, 512 КБ или 1 МБ кэш-памяти. Это было также намного дороже, что легко объяснить с помощью следующей картины.

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

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

Также обратите внимание, что этот чип содержит две матрицы. Один с реальным процессором и 1- м кешем, а второй - с 256-Кбайтным 2- м кешем.

Pentium-2

Pentium 2 является ядром Pentium Pro. Из соображений экономики нет кэша 2 - го не находится в процессоре. Вместо того, что продается как процессор, используется печатная плата с отдельными чипами для процессора (и 1- го кеша) и 2- го кеша.

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

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

Pentium-3
Pentium-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

14

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

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

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

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

5

В эти дни все кэши на процессоре умирают. Раньше они иногда располагались на материнской плате или на дочерней плате ЦП, но я не думаю, что есть какие-либо современные процессоры, которые используют кэш-память вне чипа.

5

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

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

0

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

0

L1 расположен на микросхеме ЦП, L2 расположен между процессором и основной памятью, но есть смысл знать, что в некоторых системах L2 находится на микросхеме ЦП, в то время как в некоторых других системах L2 находится на самой материнской плате, а L3 постоянно находится на основной плате чипа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .