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


32

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

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

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

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

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

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


1
Точная иерархия варьируется между разными процессорами. Чтобы выяснить иерархию кэша на вашей машине, вы можете использовать утилиту CoreInfo.exe SysInternal в ( technet.microsoft.com/en-us/sysinternals/cc835722.aspx )

2
Кроме того, чем больше становится кэш (L3> L2> 1), тем дальше он располагается от самого ядра (например, задержка доступа к L3 выше, чем L1).

Ответы:


48

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

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

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

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

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

(Представьте себе воображаемую пластину размером 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 - го кэша не находится в CPU. Вместо того, что продается как процессор, мы используем печатную плату с отдельными чипами для процессора (и 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 - й кэш между двумя ядрами процессора. Скорость снизится незначительно, но 512KiB общей 2 - й кэш часто быстрее , чем добавление два независимых 2 - го уровня кэши половины размера.

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

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

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

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

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

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

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


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

modernCPUwithL3.png


Какая отличная рецензия!
lukas.pukenis

"но 512 МБ разделяют 2-й кэш", я думаю, что это 512 КБ.
lukas.pukenis

такой отличный ответ! спасибо, что поделились мужчиной
samsamara

14

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

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

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

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


1
Если под чипом вы подразумеваете кремниевый кристалл, то последний уровень кэша может быть вне чипа. Например, в IBM zEC12 ( en.wikipedia.org/wiki/IBM_zEC12_(microprocessor) ) используется многочиповый модуль с шестью процессорами и двумя чипами общего кэша с кэш-памятью L4. Кристалл Intel Well также обеспечивает внешнюю кэш-память L4 (также с использованием eDRAM).
Пол А. Клэйтон,

5

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

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


5

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


1
+1 за часть этих дней . В старые времена все было иначе. (например, кэш-память второго уровня в материнской плате во время Cyrix / Pentium-1)
Hennes

0

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


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

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.