Firefly (протокол согласования кеша) - Firefly (cache coherence protocol)
В Светляк согласованность кеша протокол - это схема, используемая в DEC Firefly многопроцессорная рабочая станция, разработанная Центр системных исследований DEC. Этот протокол представляет собой протокол согласования кэша обновления записи с 3 состояниями. в отличие от Протокол дракона, протокол Firefly обновляет основную память, а также локальные кэши при переходе шины обновления записи. Таким образом, состояния Shared Clean и Shared Modified, присутствующие в случае протокола Dragon, не различаются в случае протокола Firefly.
состояния
В этом протоколе каждому блоку могут быть присвоены следующие состояния:
- Действительный-эксклюзивный (V): Блок кеша действительный, чистый и находится только в одном кэше.
- Общий (S): Блок кеша действительный, чистый и может находиться в нескольких кешах.
- Грязный (D): Блок является единственной копией памяти, и он загрязнен, т.е. его значение было изменено с момента извлечения из памяти. Это единственное состояние, которое генерирует обратную запись при замене блока в кэше.
Эти состояния соответствуют Эксклюзивный, Общий, и Изменено государства Протокол MESI. Этот протокол никогда не приводит к аннулированию, поэтому Недействительным состояние здесь не указано.
Запросы на стороне процессора
Запросы на стороне процессора или запросы ЦП - это обращения, которые процессор делает к своим собственным кэшам. Их можно разделить на 4 типа запросов, а именно:
- PrRdMiss: Запрос со стороны процессора на чтение блока кэша, которого нет в кэше.
- PrRdHit: Запрос на стороне процессора на чтение блока кэша, который уже находится в кэше.
- PrWtHit: Запрос со стороны процессора на запись в блок кэша, который уже находится в кэше.
- PrWtMiss: Запрос со стороны процессора на запись в блок кэша, которого нет в кэше.
Запросы со стороны автобуса
Запросы на стороне шины - это запросы, генерируемые в ответ на запросы на стороне процессора для поддержания согласованности кеша. Они отслеживаются анализатором кешей и памяти, и принимаются соответствующие меры. В протоколе Firefly они подразделяются на два типа, а именно:
1. BusRd: Запрос, который указывает, что есть запрос на чтение блока кэша, сделанный другим процессором, и этот процессор не имеет данных.
2. BusWr / BusUpdt: Запрос, который указывает, что есть запрос на запись в блок кэша, сделанный другим процессором, и все остальные кэши должны обновить свои копии блока.
Переходы
Чтобы определить, какие переходы должны быть выполнены, протокол определяет совместное использование с помощью специальной линии шины с именем Копии Существуют. Все остальные тайники шпионить все операции с памятью и поднять CopiesExist (C) если они обнаруживают "отслеживание попаданий", то есть если у них есть копия данных в их собственном кэше.
Стрелка, идущая из ниоткуда в состояние, представляет недавно загруженный блок.
Переходы, инициированные процессором
В случае промаха процессора при чтении блока, и если нет копии блока в любом другом кэше, проверяется строка 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. Обновление данных при каждой записи приводит к тому, что некоторые ненужные данные остаются в кэше, что может привести к удалению некоторых «полезных» данных.
Смотрите также
- DEC Firefly
- Центр системных исследований DEC
- Согласованность кеша
- Протокол MSI
- Протокол MESI
- Протокол дракона
использованная литература
- Хашеми, Б. (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.