Разделяется ли кэш L3 всеми ядрами для процессора Sandy-Bridge E Xeon?


12

В связанном вопросе я спросил о преимуществах двухпроцессорной системы с точки зрения удвоения кеша L3.

Однако я заметил, что процессоры серии Xeon E5-2600 имеют ровно 2,5 МБ кэш-памяти L3 на ядро .

Это наводит меня на мысль, что операционная система резервирует 2,5 МБ кэш-памяти L3 на ядро. Тем не менее, у меня также есть противоречивое впечатление, что кэш L3 является общим для всех ядер. На удивление мало информации или дискуссий по этому поводу.

Моя главная проблема заключается в том, могут ли фоновые приложения с низким приоритетом «перегружать» кэш L3 и снижать производительность для приоритетных приложений с более высоким приоритетом. Две конкретные проблемы с производительностью, которые у меня есть, мотивируют этот вопрос.

  1. Компиляция определенной программы на C ++ требует 25 минут в моей текущей системе разработки в VS 2008, тогда как в другой системе она идет значительно быстрее, требуя всего 5 минут в VS 2008 с идентичными настройками - несмотря на то, что у меня есть i7- почти высокого класса. 970 CPU и достаточно оперативной памяти.

  2. Программы часто запускаются в моей системе до 20 секунд (т.е. отображают главное окно); и что касается соответствующего, оболочке Windows требуется до 10 секунд, чтобы отобразить контекстное меню проводника Windows (и связанные варианты поведения также занимают столько же времени), несмотря на мои попытки ограничить пункты контекстного меню (в настоящее время, возможно, 10 дополнительных за пределами по умолчанию).

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

У меня также работает много фоновых приложений с низким приоритетом; в частности, избыточное программное обеспечение для резервного копирования в облачное хранилище, такое как CrashPlan, которое обычно использует около 25% общей загрузки ЦП в этой 6-ядерной 12-поточной системе.

Я буду получать новый компьютер. Я знаю, что я буду продолжать запускать много фоновых приложений и устанавливать / удалять многие программы. Если бы я думал, что получение двухпроцессорной системы, которая удваивает не только ядра, но и кэш-память L3, поможет преодолеть ужасную производительность компилятора C ++ и общее замедление работы системы, я бы с удовольствием это сделал.

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

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


Хороший вопрос, на который у меня лично нет хорошего ответа, кроме как сказать, что у меня тоже сложилось впечатление, что L3 поделились. Я просто хотел бы спросить, почему вы называете эти «2-е поколение» Xeon, когда «Xeon» уже 10 лет является продуктом Intel. (Если это по аналогии с чипами Sandy Bridge i3 /
5/7

Intel называет линейку процессоров i7-2600 «вторым поколением» ( ark.intel.com/products/family/59136/… ). Под «Xeon 2-го поколения» я имею в виду эквивалентный выпуск процессоров архитектуры Xeon Sandy-Bridge E 6 марта 2012 г. ( en.wikipedia.org/wiki/… ).
Дан Ниссенбаум

1
Это аналогия, которую я думал ты проводил. Это плохо (это 2-го поколения i7s, но это не 2-го поколения Xeons), и я бы поменял название IMO ... Я ожидал найти вопрос о 12-летних процессорах, и это может удержать много людей нажав здесь. Может быть, изменить «2-го поколения» на «Sandy Bridge-E».
Шинрай

Ответы:


13

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

Хотя это может показаться пустой тратой пространства L3, на самом деле это делает L3 незаменимым для ускорения операций между ядрами памяти. Основное назначение кэша L3 - выполнять роль коммутатора и промежуточной области для ядер. Например, если одно ядро ​​хочет знать, может ли область памяти кэшироваться другим ядром, оно может проверить кэш L3. Если информация была обработана одним ядром, а следующее должно быть обработано другим ядром, они передают ее через кэш-память третьего уровня, а не через более медленную внешнюю память. Кроме того, его влияние на производительность невелико, за исключением необычных алгоритмов - кэш L2 достаточно велик для мелких вещей, а кэш L3 слишком мал для больших вещей.

Таким образом, в то время как каждое ядро ​​имеет собственный кэш L2 размером 256 КБ и эффективно резервируется в кэш-памяти L3 объемом 256 КБ, баланс распределяется между всеми ядрами. Менее важная активность в других ядрах может повредить выполнению более важной задачи, которая выигрывает от использования пространства L3. Но по причинам, которые я упомянул, это, как правило, незначительный эффект на практике, и, как правило, не стоит беспокоиться о том, чтобы не только оптимизировать операции с «объемными данными» (например, сжатие и сканирование), чтобы минимизировать загрязнение кэша. (Например, используя невременные операции.)


0

Насколько я понимаю, все уровни кэша реализованы непосредственно на чипе, и что L2 и L3 - это одно и то же (что только Intel распознает разницу, AMD объединяет их). Имея это в виду, я бы предположил, что кэш L3 на процессорах не распределяется между процессорами на материнской плате с двумя сокетами. Это также имеет смысл, имея в виду, что типично видеть отдельные каналы памяти в ОЗУ на процессор.

Кто-то поправит меня, если я ошибаюсь.


L2 и L3 совсем не одно и то же. В последних разработках Intel L1 / L2 являются небольшими для каждого ядра (32k L1 I $ & D $ / 256k унифицированный L2), в то время как L3 включительно и используется совместно с GPU и всеми ядрами. L1 / L2 физически разделены, но в некотором роде служат аналогичным целям (то есть обеспечивают быстрый доступ к памяти для одного ядра). Инклюзивный L3 имеет другое назначение: согласованность между ядрами (и графическим процессором). Смотрите ответ @ DavidSchwartz.
Питер Кордес
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.