MOESI

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

MOESI — протокол поддержки когерентности кэшей микропроцессоров, включающий в себя все возможные состояния, используемые в других протоколах. В дополнение к состояниям часто используемого протокола MESI, добавлено пятое состояние «Owned», означающее что данные одновременно и модифицированы и разделяются (modified и shared). Оно позволяет избежать необходимости записи модифицированных данных обратно в основную память, прежде чем другие процессоры системы смогут ее прочесть. Данные все еще необходимо записать в память, но с данным протоколом эта запись (write-back) может быть отложена.

Используется микропроцессорами AMD Opteron.

Согласно документации AMD64 Architecture Programmer’s Manual Vol 2 'System Programming'[1], каждая линия кэша находится в одном из пяти состояний:

Модифицирована (Modified)
Кэш-линия в модифицированном состоянии содержит наиболее свежие, корректные данные. Копия данных в основной памяти устарела и некорректна, и ни один другой процессор не имеет копии данных. Данные в линии кэша могут быть повторно модифицированы без каких-либо запросов и изменений состояния. Состояние может поменяться на Exclusive при записи измененных данных в основную память.
Владелец (Owned)
Кэш-линия в состоянии owned содержит наиболее свежие, корректные данные. Состояние owned похоже на состояние shared тем, что другие процессоры могут иметь копию наиболее свежих и корректных данных. В отличие от состояния shared, однако, копия в основной памяти может быть устаревшей и некорректной. Только один из процессоров может иметь данную кеш-линию в состоянии owned, все остальные процессоры могут иметь эти данные только в состоянии shared. Кеш-линия может перейти в состояние Modified после invalidating всех разделяемых копий, или в состояние Shared при записи измененных данных в основную память.
Эксклюзивное (Exclusive)
Кэш-линия в эксклюзивном состоянии содержит наиболее свежие, корректные данные. Копия в основной памяти также содержит наиболее свежую, корректную копию данных. Ни один другой процессор не имеет копии данных в своем кэше. Состояние может измениться на модифицированное (Modified) в любой момент для модификации данных в данной кэш-линии. Также состояние может измениться на Invalid в любой момент.
Разделяемое (Shared)
Кэш-линия в разделяемом состоянии содержит наиболее свежие, корректные данные. Другие процессоры в системе могут иметь копии данных в разделяемом состоянии. Копия в основной памяти также содержит наиболее свежую, корректную копию данных, если ни один другой процессор не имеет данной кэш-линии в состоянии owned. Запись в данную кэш-линию запрещенна, и требует перевода ее в эксклюзивное состояние с одновременным переводом всех остальных разделяемых копий в состояние Invalid. Также состояние может измениться на Invalid в любой момент.
Не актуальное (Invalid)
Кэш-линия в разделяемом состоянии не содержит корректных данных. Корректные копии данных могут быль либо в основной памяти, либо в кэше другого процессора.

Для любой пары кешей разрешены следующие состояния заданной кэш-строки:

 M   O   E   S   I 
 M  Файл:X mark.svgN Файл:X mark.svgN Файл:X mark.svgN Файл:X mark.svgN Файл:Yes check.svgY
 O  Файл:X mark.svgN Файл:X mark.svgN Файл:X mark.svgN Файл:Yes check.svgY Файл:Yes check.svgY
 E  Файл:X mark.svgN Файл:X mark.svgN Файл:X mark.svgN Файл:X mark.svgN Файл:Yes check.svgY
 S  Файл:X mark.svgN Файл:Yes check.svgY Файл:X mark.svgN Файл:Yes check.svgY Файл:Yes check.svgY
 I  Файл:Yes check.svgY Файл:Yes check.svgY Файл:Yes check.svgY Файл:Yes check.svgY Файл:Yes check.svgY

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

Если процессор хочет записать в кэш-линию с состоянием Owned, он должен уведомить остальные процессоры, которые разделяют эту кеш-линию. В зависимости от реализации возможен либо запрос на изменение всех разделяемых копий в состояние Invalid (и перевод своей копии в модифицированное состояние), либо запрос на обновление их копий новыми данными (своя копия остается в состоянии Owned).

См. также

Примечания

de:MOESI

fr:Protocole MOESI en:MOESI protocol

Источник — «http://www.sbup.com/wiki/MOESI»
Личные инструменты

Served in 0.117 secs.