Работают ли кэши разного уровня в одной и той же частотной области? - PullRequest
0 голосов
/ 21 февраля 2019

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

Итак, кеши L2 работают в том же домене, что и кеши L1?Как насчет кэш-памяти L3 (срезов), поскольку теперь они не являются инклюзивными и совместно используются всеми ядрами?

И связанные с этим вопросы: все ли функциональные блоки в ядре в одной и той же области синхронизации?Все ли неосновные части находятся в одном часовом домене?Являются ли ядра многоядерной системы синхронными?

Я полагаю, что пересечение тактовой области приведет к дополнительной задержке.Работает ли большая часть микросхемы процессора в одном и том же тактовом домене?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Частные кэши L1i / d всегда являются частью каждого ядра, а не на отдельных часах .L1d очень тесно связан с блоками исполнения нагрузки и L1dTLB.Это довольно универсально верно для всех архитектур.( VIPT Cache: соединение между TLB и Cache? )

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


Остальная часть этого ответа в основном касается процессоров Intel x86, потому что из вашего упоминания кусков L3 я думаю, что это то, что выПредставляете.

Как насчет кэша L3 (срезов), поскольку они теперь не включают и распределяются между всеми ядрами?

из основных процессоров Intel (P6 /SnB-семейство), только Skylake-X имеет не включающий кэш L3.Intel, поскольку Nehalem использует инклюзивный кэш последнего уровня, поэтому его теги могут быть фильтром отслеживанияСм. Какой метод отображения кэша используется в процессоре Intel Core i7? .Но SKX изменился с кольца на сетку и сделал L3 не включающим / неисключительным.


На процессорах Intel для настольных ПК / ноутбуков (двойной / четырехъядерный) все ядра (включая ихКэши L1 + L2) находятся в той же частотной области .Uncore (кэш L3 + кольцевая шина) находится в отдельной частотной области, но я думаю, что обычно работает на скорости ядер.Он может работать быстрее, чем ядра, если графический процессор занят, но все ядра бездействуют.

Часы памяти остаются высокими даже при отключении процессора.(Тем не менее, пропускная способность одноядерного процессора может пострадать, если процессор решит снизить тактовую частоту с 4,0 до 2,7 ГГц, потому что он выполняет код с привязкой к памяти на единственном активном ядре. Пропускная способность одноядерного процессора ограничена max_concurrency / latency, а не самой пропускной способностью DRAMесли у вас двухканальный DDR4 или DDR3. Почему Skylake намного лучше, чем Broadwell-E, для пропускной способности однопоточной памяти? Я думаю, это из-за увеличенной задержки ядра.)

В статье из Википедии Uncore упоминается разгон ее отдельно от ядер для уменьшения задержки L3 / памяти.


На Haswell и более поздних Xeons (E5 v3), uncore (кольцо)срезы шины и L3) и каждое отдельное ядро ​​имеет отдельные частотные домены. (источник: глубокое погружение NUMA Фрэнка Денемана, часть 2: Архитектура системы . У него есть опечатка, говорящая Haswell (v4), когда Haswellна самом деле Xeon E [357] -xxxx v3. Но другие источники, такие как эта статья Сравнение основных и неосновных режимов масштабирования частоты вПрименение химии ntum GAMESS подтверждает, что Haswell имеет эти функции. Uncore Frequency Scaling (UFS) и Power Power State (PCPS) были новыми в Haswell.


На Xeons до Haswell,uncore работает со скоростью самого быстрого ядра в этом пакете .При установке NUMA с двумя сокетами это может сильно затруднить работу другого сокета, замедляя выполнение запросов отслеживания.См. Сообщение Джона "Dr. Bandwidth" Маккальпина на этой ветке форума Intel :

На процессорах Xeon E5-26xx "uncore" (содержащий кэш L3, кольцевое межсоединение)контроллеры памяти и т. д.) работают со скоростью, не превышающей скорость самого быстрого ядра, поэтому «состояние пакета C1E» приводит к падению частоты ядра до 1,2 ГГц.В этом состоянии микросхеме требуется больше времени для ответа на запросы отслеживания QPI, что увеличивает эффективную задержку локальной памяти, наблюдаемую процессорами и механизмами DMA на другом чипе!

... На моих чипах Xeon E5-2680 состояние "пакета C1E" увеличивает локальную задержку на другом чипе почти на 20%

«Состояние пакета C1E» также уменьшает поддерживаемую полосу пропускания для памяти, расположенной на «простаивающем» чипе, примерно на 25%, поэтому любые ошибки размещения NUMA приводят к еще большим потерям производительности.

Dr,Пропускная способность выполнялась простым бесконечным циклом, прикрепленным к ядру на другом сокете, чтобы он был синхронизирован, и смог измерить разницу.

Xeons с поддержкой четырех сокетов (E7-xxxx) имеют небольшой уловоккеш фильтра в каждом сокете.Системы с двумя сокетами просто спамят другой сокет при каждом запросе отслеживания, используя значительную долю пропускной способности QPI, даже когда они получают доступ к своей локальной DRAM после пропуска L3.


Я думаю, что Broadwell иHaswell Xeon может поддерживать свои высокие часы без ядра, даже когда все ядра простаивают, именно для того, чтобы избежать этого узкого места.

Dr.Пропускная способность говорит, что он отключает состояние пакета C1E на своих Haswell Xeons, но это, вероятно, не было необходимости.Он также опубликовал некоторые материалы об использовании счетчиков производительности Uncore для измерения частоты ядра, чтобы выяснить, что на самом деле делает ваш ЦП, и о настройках BIOS, которые могут повлиять на принятие решения о частоте ядра.


Дополнительная справка: я обнаружил https://www.anandtech.com/show/8423/intel-xeon-e5-version-3-up-to-18-haswell-ep-cores-/4 о некоторых изменениях, таких как новые опции режима snoop (при котором переход по кольцевой шине отправляет snoops другому ядру), но в нем не упоминаются часы.

0 голосов
/ 21 февраля 2019

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

В современных процессорах Intel кэш-память L1i / L1d и L2 и все функциональные блоки ядра находятся в одной частотной области.На клиентских процессорах все ядра одного и того же сокета также находятся в одной и той же частотной области, поскольку они используют один и тот же регулятор частоты.На серверных процессорах (начиная с Haswell, я думаю) каждое ядро ​​находится в отдельной частотной области.

В современных процессорах Intel (начиная с Nehalem, я думаю), ядро ​​(которое включает в себя L3) находится в отдельной частотной области.,Один интересный случай - когда сокет используется в конфигурации с двумя узлами NUMA.В этом случае, я думаю, что неосновные разделы каждого узла NUMA все равно будут существовать в одной и той же частотной области.

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

Существуют и другие частотные области.В частности, каждый канал DRAM работает в частотных областях.Я не знаю, поддерживают ли современные процессоры использование разных каналов для работы на разных частотах.

...