Что такое роль L3$ в протоколе МЭСИ

Я хотел бы узнать больше о МЭСИ в Intel Broadwell.

Предположим, сокет процессора имеет 6 ядер от ядра 0 до ядра 5, каждый из них имеет свои L1$ и L2$ и разделяет L3$, есть var X в общей памяти, x находится в строке кеша называется XCacheL , вот подробности моего вопроса:

T1: ядро ​​0, ядро ​​4 и ядро ​​5 имеют x = 100 и XCacheL. имеет статус Сhared, так как 3 ядра имеют копию XCacheL.

T2: Ядру 0 требуется изменить x, поэтому передача ядра 0 делает сигнал недействительным, а ядро ​​4 и ядро ​​5 получают сигнал. , аннулировать свою копию XCacheL, Core 0 изменить x на 200 и статус XCacheL теперь Мodified .

T3: ядро ​​4 требует чтения x, но его копия XCacheL становится недействительной в T2, поэтому происходит промах чтения, произойдет следующее:

● Processor makes bus request to memory
● Snooping cache puts copy value on the bus
● Memory access is abandoned
● Local processor caches value
● Local copy tagged S
● Source (M) value copied back to memory
● Source value M -> S

поэтому после T3 XCacheL имеет статус ядра 0 и ядра 4: Сhared и яnvalidated в ядре 5, а также L3$ и основная память имеют новейший действующий XCacheL.

T4: ядро ​​5 требует чтения x, так как его копия XCacheL имеет яnвалидацию в T2, но этот monent XCacheL имеет правильная копия в L3$, нужно ли ядру 5 запускать промах чтения, как это делает ядро ​​4 ?!

Я предполагаю: нет необходимости, так как L3$ имеет действительный XCacheL, таким образом, ядро ​​5 может достичь L3$ и получить правильный XCacheL от L3$ до L1$ в ядре 5, поэтому ядро ​​5 не вызовет промах чтения.

Там, где L3 инклюзивно, вероятно, быстрее читать общие строки оттуда. Там, где это не так, они пересылаются из других кешей. Вот почему MESIF существует. Uncore, вероятно, просто транслирует запрос по каналу QPI/UPI, и либо L3, iMC, либо другой основной агент самонаведения отвечает на него. Это то, что вы подразумеваете под промахом чтения (извините, мне не хватает терминологии), чем ядро ​​​​все равно сработает. На самом деле вам всегда нужно запускать что-то для чтения из-за пределов ядра, даже из L1.

Margaret Bloom 21.01.2019 09:42

Переход от Modified непосредственно к Shared при чтении выполняется не на всех процессорах. Иногда полезно объявить недействительным, потому что чтение скоро станет записью, и вам нужна исключительно строка. см. - software.intel.com/en-us/forums/…

Leeor 30.01.2019 03:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
2
224
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Все процессоры Broadwell используют включительно L3. Так что да, ядро ​​5 пропустит свои частные кэши L1 и L2, и запрос на чтение будет отправлен агенту кэширования слайса L3, на который отображается запрошенная строка. Агент кэширования определяет, что у него есть строка и она находится в состоянии S. Поскольку это запрос на чтение, агент кэширования отправит строку кэша на ядро ​​5. Состояние строки не изменяется, и отслеживание не отправляется.

Ответ принят как подходящий

Вы правы, на этапе T4 нагрузка на ядро ​​№ 5 попадает в L3, поэтому доступ к памяти не происходит. Ядро № 5 получает еще одну копию линии в состоянии Shared.


Ваша последовательность шагов не имеет смысла для ЦП, такого как Broadwell, где все ядра имеют общий доступ к встроенным контроллерам DRAM.

Кольцевая шина соединяет ядра (каждое из которых имеет часть кэш-памяти L3), системный агент (каналы PCIe и подключение к другим ядрам) и домашний агент (контроллеры памяти). См. блок-схему кольцевой шины в https://en.wikichip.org/wiki/intel/microarchitectures/broadwell_(client)#Die_Stats.

Отдельные ядра не управляют напрямую «шиной памяти» или даже одной из двух или четырех шин DRAM. Контроллер памяти разрешает доступ к DRAM и имеет некоторую буферизацию для переупорядочения/объединения доступов. (Все, который обращается к памяти, проходит через него, включая DMA, поэтому он может делать все, что захочет, пока он дает видимость загрузки/сохранения, происходящей в каком-то разумном порядке.)

Запрос на загрузку не будет отправлен системному агенту до тех пор, пока он не попадет в кэш L3. См. https://superuser.com/questions/1226197/x86-адрес-пространство-контроллер/1226198#1226198 для иллюстрации четырехъядерного рабочего стола (который проще и просто имеет контроллер памяти, подключенный к системному агенту, что делает его точно таким же, как северный мост до того, как процессоры интегрировали контроллеры памяти).


Поскольку Broadwell использует инклюзивный кэш L3, теги L3 могут сообщить ему, какое ядро ​​имеет модифицированную или монопольную копию, если таковые имеются, даже если строка в самом L3 не является общедоступной. (т. е. данные строки могут быть недействительными в L3, но теги по-прежнему отслеживают, какое ядро ​​имеет частную копию). См. Какой метод сопоставления кеша используется в процессоре Intel Core i7?

Это позволяет тегам L3 действовать как отслеживающий фильтр для уменьшения количества широковещательных передач.

Другие вопросы по теме