Протокол когерентности памяти MESIF

В этом протоколе предусмотрено 5 состояний для каждой строки: Modified (M), Exclusive (E), Shared (S), Invalid (I) и Forward (F). Дополнительное (по сравнению с протоколом MESI) состояние F означает, что кэш-память является единственным ответчиком (designated responder) для любых запросов к данной строке (блоку) кэш-памяти. Строка в кэш-памяти в состоянии S теперь не отвечает на snoop-запросы. При копировании F-строки в соседнюю кэш-память новая копия получает F состояние.

В протоколе MESIF, только единственный экземпляр линии кэш-памяти может быть в состоянии F, и только этот экземпляр (единственный) может дублироваться (размножаться). Другие кэш-памяти, возможно, содержат данные, но они будут в общем состоянии S и не могут копироваться. Другими словами, линия кэш-памяти в состоянии F использована, чтобы отвечать на любые запросы чтения, в то время как линии кэш-памяти в состоянии S сейчас безмолвны. Это делает линию в состоянии F первой среди равных, отвечающих на запросы слежения (snoop). Обозначая единственную линию кэш-памяти, отвечающую на запросы, когерентный трафик существенно уменьшается, когда существуют многие копии данных.

Когда линия кэш-памяти в состоянии F копируется, состояние F мигрирует (переходит) к более новой копии, в то время как для старой линии кэш-памяти устанавливается состояние S (состояние «общее» или «разделяемое»). Это имеет два преимущества над закреплением (сохранением) состояния F для оригинальной копии линии кэш-памяти. Во-первых, новейшая копия линии кэш-памяти находится всегда в состоянии F, и очень маловероятно, что линия в состоянии F будет вытеснена из кэш-памятей. В сущности, это преимущество временной локальности запросов. Второе преимущество состоит в том, что, если определенная (специфическая) линия кэш-памяти пользуется высоким спросом из-за пространственного местоположения (пространственной локальности), пропускная способность использована для передачи тех данных, которые будут распространяться через несколько узлов.

Итак, в четырехпроцессорной системе при использовании протокола MESIF по сравнению с традиционным протоколом MESI, сокращаются два ответа на единственный запрос, так как на запросы, которые выдаются во все процессоры, отвечает только один из них, в котором имеется строка в состоянии F.

Вообще, протокол MESIF - существенный шаг вперед для протокола когерентности. Однако, есть по меньшей мере одна оптимизация, которой фирма Intel не последовала, - состояние «Собственник» (Owner - Владелец), которое использовано в протоколе когерентности MOESI, используемом в процессорах фирмы AMD. Состояние O использовано, чтобы разделить «грязные» линии (т.е. линии, которые были модифицированы) кэш-памяти, не выполняя запись обратно в оперативную память.

Особо, если модифицированная («грязная») линия кэш-памяти находится в состоянии М (изменено), то другое ядро может запросить копию. «Грязная» линия кэш-памяти переводится в состояние О (собственник – владелец), и дубликат копии устанавливается в состояние S. В результате, любая линия кэш-памяти в состоянии O должна быть записана в оперативную память перед тем, как она может быть вытеснена, и состояние S больше не подразумевает, что линия кэш-памяти чиста. В сравнении, система, использующая протокол MESIF или MESI: изменила бы состояние линии кэш-памяти на F или S состояние, копируя ее в запрашивающую кэш-память; записала бы данные обратно в оперативную память. Состояние O избегает записи, сохраняя часть пропускной способности.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: