Firefly (протокол согласования кеша) - Firefly (cache coherence protocol)

В Светляк согласованность кеша протокол - это схема, используемая в DEC Firefly многопроцессорная рабочая станция, разработанная Центр системных исследований DEC. Этот протокол представляет собой протокол согласования кэша обновления записи с 3 состояниями. в отличие от Протокол дракона, протокол Firefly обновляет основную память, а также локальные кэши при переходе шины обновления записи. Таким образом, состояния Shared Clean и Shared Modified, присутствующие в случае протокола Dragon, не различаются в случае протокола Firefly.

состояния

В этом протоколе каждому блоку могут быть присвоены следующие состояния:

  • Действительный-эксклюзивный (V): Блок кеша действительный, чистый и находится только в одном кэше.
  • Общий (S): Блок кеша действительный, чистый и может находиться в нескольких кешах.
  • Грязный (D): Блок является единственной копией памяти, и он загрязнен, т.е. его значение было изменено с момента извлечения из памяти. Это единственное состояние, которое генерирует обратную запись при замене блока в кэше.

Эти состояния соответствуют Эксклюзивный, Общий, и Изменено государства Протокол MESI. Этот протокол никогда не приводит к аннулированию, поэтому Недействительным состояние здесь не указано.

Запросы на стороне процессора

Запросы на стороне процессора или запросы ЦП - это обращения, которые процессор делает к своим собственным кэшам. Их можно разделить на 4 типа запросов, а именно:

  1. PrRdMiss: Запрос со стороны процессора на чтение блока кэша, которого нет в кэше.
  2. PrRdHit: Запрос на стороне процессора на чтение блока кэша, который уже находится в кэше.
  3. PrWtHit: Запрос со стороны процессора на запись в блок кэша, который уже находится в кэше.
  4. PrWtMiss: Запрос со стороны процессора на запись в блок кэша, которого нет в кэше.

Запросы со стороны автобуса

Запросы на стороне шины - это запросы, генерируемые в ответ на запросы на стороне процессора для поддержания согласованности кеша. Они отслеживаются анализатором кешей и памяти, и принимаются соответствующие меры. В протоколе Firefly они подразделяются на два типа, а именно:

1. BusRd: Запрос, который указывает, что есть запрос на чтение блока кэша, сделанный другим процессором, и этот процессор не имеет данных.

2. BusWr / BusUpdt: Запрос, который указывает, что есть запрос на запись в блок кэша, сделанный другим процессором, и все остальные кэши должны обновить свои копии блока.

Переходы

Чтобы определить, какие переходы должны быть выполнены, протокол определяет совместное использование с помощью специальной линии шины с именем Копии Существуют. Все остальные тайники шпионить все операции с памятью и поднять CopiesExist (C) если они обнаруживают "отслеживание попаданий", то есть если у них есть копия данных в их собственном кэше.

Стрелка, идущая из ниоткуда в состояние, представляет недавно загруженный блок.

Переходы, инициированные процессором

Диаграмма состояний протокола Firefly.

В случае промаха процессора при чтении блока, и если нет копии блока в любом другом кэше, проверяется строка CopiesExist (C) и C имеет значение LOW, тогда блок помещается в кеш, и состояние устанавливается как Действительный. Если в некоторых кешах уже есть копия (C - HIGH), то блок помещается в кеш в Общий штат.

При промахе записи в блок, если в каком-либо кэше нет копии блока (C - LOW), блок помещается в кэш в Грязный штат. Если в некоторых кешах уже есть копия блока (C - HIGH), то блок помещается в кеш в состоянии Общий состояние и изменения отражаются в памяти.

Если блок уже кэширован в Действительный состояние, попадание записи процессора изменяет состояние на Грязный состояние, поскольку ни один другой кеш не имеет копии данных. Эта запись не записывается в память.

Если блок кешируется в Грязный состояние и происходит попадание записи в процессор, то состояние остается как Грязный штат.

Если блок находится в Общий состояние и есть попадание записи процессора, и если в некоторых кэшах уже есть копия (C), блок остается в Общий штат. Если ни в одном кэше нет копии блока (! C), блок записывается в Действительный заявить, поскольку это единственная «действительная» копия, присутствующая в кешах.

Если происходит чтение ЦП, блок остается в том состоянии, в котором он уже находится - точно так же, как в протоколе Dragon.

Переходы, инициированные шиной

Если блок находится в Общее состояние, и есть запрос BusRd или BusWr, блок остается в состоянии Shared.

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

Если блок находится в Действительное состояние а другой процессор читает его, он переходит в состояние Shared. Если отслеживается другой запрос на запись процессора, блок будет обновлен, и, поскольку он теперь является общим, он также переходит в состояние Shared.

В отличие от MESI, в протоколе обновления Firefly распространение записи обеспечивается прямым обновлением всех других копий по запросу на запись процессоров (PrWr).

Сравнение с другими политиками

1. Из-за того, что обновленные копии данных существуют в кэшах, существует меньше нарушений согласованности, чем в политиках записи-недействительности.

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

3. Обновление данных при каждой записи приводит к тому, что некоторые ненужные данные остаются в кэше, что может привести к удалению некоторых «полезных» данных.

Смотрите также

использованная литература

  • Хашеми, Б. (01.05.2011). Моделирование и оценка протоколов когерентности Snoopy Cache со стратегией обновления в многопроцессорных системах с общей памятью. 2011 Девятый международный симпозиум IEEE по параллельной и распределенной обработке с помощью семинаров по приложениям (ISPAW). С. 256–259. Дои:10.1109 / ISPAW.2011.68. ISBN  978-1-4577-0524-3.
  • Eggers, S.J .; Кац, Р. Х. (1988-01-01). Характеристика совместного использования в параллельных программах и ее применение для оценки протокола согласованности. Материалы 15-го ежегодного международного симпозиума по компьютерной архитектуре. ISCA '88. Лос-Аламитос, Калифорния, США: Издательство компьютерного общества IEEE. С. 373–382. Дои:10.1145/633625.52442. ISBN  978-0818608612.
  • Арчибальд, Джеймс; Баер, Жан-Лу (1986-09-01). «Протоколы согласованности кэша: оценка с использованием модели многопроцессорного моделирования». ACM Trans. Comput. Syst. 4 (4): 273–298. Дои:10.1145/6513.6514. ISSN  0734-2071.
  • Солихин Ян (2015-10-09). Основы параллельной многоядерной архитектуры. Роли, Северная Каролина: ООО «Солихин Паблишинг энд Консалтинг». ISBN  978-1-4822-1118-4.