Jump to content

Слежка за автобусом

(Перенаправлено с Обнюхивания автобуса )

Слежение за шиной или прослушивание шины — это схема, по которой контроллер когерентности (snooper) в кеше ( snoopycache ) отслеживает или отслеживает транзакции шины, и его цель — поддерживать когерентность кеша в распределенных системах с общей памятью . Эта схема была представлена ​​Равишанкаром и Гудманом в 1983 году под названием «когерентность кэша с однократной записью». [1] Кэш, содержащий контроллер когерентности (snooper), называется отслеживающим кешем.

Как это работает [ править ]

Когда определенные данные используются несколькими кэшами и процессор изменяет значение общих данных, изменение должно быть распространено на все остальные кэши, в которых есть копия данных. Распространение изменений не позволяет системе нарушить согласованность кэша . Уведомление об изменении данных может быть выполнено путем отслеживания шины. Все шпионы отслеживают каждую транзакцию в шине. Если транзакция, изменяющая блок общего кэша, появляется на шине, все шпионы проверяют, есть ли в их кэшах одинаковая копия общего блока. Если в кеше есть копия общего блока, соответствующий перехватчик выполняет действие для обеспечения согласованности кеша. Действием может быть очистка или аннулирование блока кэша. Это также предполагает изменение состояния блока кэша в зависимости от протокола когерентности кэша. [2]

Типы протоколов слежения [ править ]

Существует два типа протоколов отслеживания в зависимости от способа управления локальной копией операции записи:

Недействительность записи [ править ]

Когда процессор выполняет запись в блок общего кэша, все общие копии в других кэшах становятся недействительными из-за отслеживания шины. [3] Этот метод гарантирует, что процессор может читать и записывать только одну копию данных. Все остальные копии в других кэшах становятся недействительными. Это наиболее часто используемый протокол отслеживания. MSI , MESI , MOSI , MOESI и MESIF К этой категории относятся протоколы .

Запись-обновление [ править ]

Когда процессор записывает в блок общего кэша, все общие копии других кэшей обновляются посредством отслеживания шины. Этот метод передает данные записи во все кэши по шине. Он требует большего трафика по шине, чем протокол записи-недействительности. Именно поэтому этот метод является редкостью. Dragon и Firefly . К этой категории относятся протоколы [4] [5]

Реализация [ править ]

Одна из возможных реализаций выглядит следующим образом:

Кэш будет иметь три дополнительных бита :

  • V  – valid
  • D – грязный бит, означает, что данные в кеше не такие, как в памяти.
  • S – общий

Каждая строка кэша находится в одном из следующих состояний: «грязная» (обновлена ​​локальным процессором), «действительная», «недействительная» или «совместно используемая». Строка кэша содержит значение, и его можно читать или записывать. Запись в строку кэша меняет значение. Каждое значение находится либо в основной памяти (доступ к которой очень медленный), либо в одном или нескольких локальных кэшах (что происходит быстро). Когда блок впервые загружается в кеш, он помечается как «действительный».

При промахе чтения в локальном кэше запрос на чтение передается по шине. Все контроллеры кэша контролируют шину. Если этот адрес кэширован и он находится в состоянии «грязный», он меняет состояние на «действительный» и отправляет копию запрашивающему узлу. Состояние «действительно» означает, что строка кэша является текущей. При локальном промахе записи (попытка записать это значение, но его нет в кеше) отслеживание шины гарантирует, что все копии в других кешах будут установлены как «недействительные». «Недействительный» означает, что копия существовала в кеше, но она больше не актуальна.

Например, начальное состояние может выглядеть так:

Tag  | ID | V | D | S
---------------------
1111 | 00 | 1 | 0 | 0
0000 | 01 | 0 | 0 | 0
0000 | 10 | 1 | 0 | 1
0000 | 11 | 0 | 0 | 0

После записи адреса 1111 00 он изменится на следующее:

Tag  | ID | V | D | S
---------------------
1111 | 00 | 1 | 1 | 0
0000 | 01 | 0 | 0 | 0
0000 | 10 | 1 | 0 | 1
0000 | 11 | 0 | 0 | 0

Логика кэширования контролирует шину и определяет, запрашивается ли какая-либо кэшированная память. Если кеш «грязный» и общий, и на шине есть запрос на эту память, «грязный» отслеживающий элемент предоставит данные запрашивающей стороне. В этот момент либо запрашивающая сторона может взять на себя ответственность за данные (помечая данные как «грязные»), либо память может получить копию (говорят, что память «захватила» данные), и два элемента переходят в общее состояние. [6]


При аннулировании адреса, помеченного как «грязный» (т. е. в одном кэше будет «грязный» адрес, а в другом ведется запись), кэш проигнорирует этот запрос. Новый кеш будет помечен как грязный, действительный и эксклюзивный, и теперь этот кеш будет отвечать за адрес. [1]

Выгода [ править ]

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

Недостаток [ править ]

Недостатком отслеживания шины является ограниченная масштабируемость . Частое слежение за кэшем приводит к гонке за доступом со стороны процессора, что может увеличить время доступа к кэшу и энергопотребление. Каждый из запросов должен быть передан всем узлам системы. Это означает, что размер шины (физической или логической) и пропускная способность, которую она обеспечивает, должны расти по мере увеличения размера системы. [2] Поскольку отслеживание шины плохо масштабируется, в более крупных системах NUMA с когерентным кэшем (ccNUMA) обычно используются протоколы когерентности на основе каталогов .

Фильтр слежения [ править ]

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

Один из способов уменьшить ненужное отслеживание — использовать отслеживающий фильтр. Фильтр слежения определяет, нужно ли слежке проверять свой тег кэша или нет. Фильтр отслеживания представляет собой структуру на основе каталогов и отслеживает весь когерентный трафик, чтобы отслеживать состояния когерентности блоков кэша. Это означает, что фильтр отслеживания знает кэши, в которых есть копия блока кэша. Таким образом, это может предотвратить ненужное отслеживание кэшей, у которых нет копии блока кэша. Существует три типа фильтров в зависимости от расположения отслеживающих фильтров. Один из них — это фильтр источника, который расположен на стороне кэша и выполняет фильтрацию до того, как когерентный трафик достигнет общей шины. Другой — фильтр назначения, который расположен в кэшах получателя и предотвращает ненужные поиски тегов кэша в ядре получателя, но этот тип фильтрации не может предотвратить исходное сообщение когерентности от источника. Наконец, внутрисетевые фильтры динамически отсекают когерентный трафик внутри общей шины. [7] Фильтр отслеживания также подразделяется на инклюзивный и эксклюзивный. Включающий фильтр отслеживания отслеживает наличие блоков кэша в кэшах. Однако эксклюзивный фильтр отслеживания отслеживает отсутствие блоков кэша в кэшах. Другими словами, попадание во включающий фильтр отслеживания означает, что соответствующий блок кэша удерживается кэшами. С другой стороны, попадание в фильтр эксклюзивного отслеживания означает, что ни в одном кэше нет запрошенного блока кэша. [8]

Ссылки [ править ]

  1. Перейти обратно: Перейти обратно: а б Равишанкар, Чинья; Гудман, Джеймс (28 февраля 1983 г.). Реализация кэша для нескольких микропроцессоров (PDF) . стр. 346–350.
  2. Перейти обратно: Перейти обратно: а б с Ян Солихин (2016). Основы архитектуры параллельного компьютера . стр. 239–246.
  3. ^ Эггерс, С.Дж.; Кац, Р.Х. (1989). «Оценка производительности четырех протоколов отслеживания когерентности кэша» . Международный симпозиум по компьютерной архитектуре . ACM Пресс: 2–15. дои : 10.1145/74925.74927 . ISBN  978-0-89791-319-5 .
  4. ^ Хеннесси, Джон Л; Паттерсон, Дэвид А. (2011). Компьютерная архитектура: количественный подход . Эльзевир. ISBN  978-0123838728 .
  5. ^ Паттерсон, Дэвид А.; Хеннесси, Джон Л. (1990). Архитектура компьютера. Количественный подход . Издательство Морган Кауфманн. стр. 469–471. ISBN  1-55860-069-8 .
  6. ^ Сиратт, Адрем. «Что такое когерентность кэша?» . EasyTechJunkie . Проверено 1 декабря 2021 г.
  7. ^ Агарвал, Н.; Пех, Л.; Джа, Северная Каролина (декабрь 2009 г.). «Внутрисетевая фильтрация когерентности» . Материалы 42-го ежегодного международного симпозиума IEEE/ACM по микроархитектуре . стр. 232–243. дои : 10.1145/1669112.1669143 . hdl : 1721.1/58870 . ISBN  9781605587981 . S2CID   6626465 .
  8. ^ Ульфснес, Расмус (июнь 2013 г.). Проектирование отслеживающего фильтра для протоколов когерентности кэша на основе отслеживания . Норвежский университет науки и технологий. {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d3a294742f2fff5807801da445d15520__1713886620
URL1:https://arc.ask3.ru/arc/aa/d3/20/d3a294742f2fff5807801da445d15520.html
Заголовок, (Title) документа по адресу, URL1:
Bus snooping - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)