Стойленская нива
- 1 year ago
- 0
- 0
MOESI — протокол поддержки когерентности кэшей микропроцессоров, включающий в себя все возможные состояния, используемые в других протоколах. В дополнение к состояниям часто используемого протокола , добавлено пятое состояние «Owned», означающее что данные одновременно и модифицированы и разделяются ( modified и shared ). Оно позволяет избежать необходимости записи модифицированных данных обратно в основную память, прежде чем другие процессоры системы смогут её прочесть. Данные все еще необходимо записать в память, но с данным протоколом эта запись (write-back) может быть отложена.
Используется микропроцессорами AMD Opteron.
Согласно документации AMD64 Architecture Programmer’s Manual Vol 2 'System Programming' , каждая линия кэша находится в одном из пяти состояний:
Для любой пары кешей разрешены следующие состояния заданной кэш-строки:
M | O | E | S | I | |
---|---|---|---|---|---|
M |
![]() |
![]() |
![]() |
![]() |
![]() |
O |
![]() |
![]() |
![]() |
![]() |
![]() |
E |
![]() |
![]() |
![]() |
![]() |
![]() |
S |
![]() |
![]() |
![]() |
![]() |
![]() |
I |
![]() |
![]() |
![]() |
![]() |
![]() |
Данный протокол, являясь усложнением более простого протокола , позволяет избежать необходимости записи изменений кэш-линии в основную память для разрешения другому процессору их чтения. Состояние Owned позволяет процессору передать модифицированные данные непосредственно в другой процессор.
Если процессор хочет записать в кэш-линию с состоянием Owned, он должен уведомить остальные процессоры, которые разделяют эту кеш-линию. В зависимости от реализации возможен либо запрос на изменение всех разделяемых копий в состояние Invalid (и перевод своей копии в модифицированное состояние), либо запрос на обновление их копий новыми данными (своя копия остается в состоянии Owned).