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

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

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

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

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

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

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

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

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

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

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

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

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

решение1

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

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

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

решение2

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

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

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