For faster navigation, this Iframe is preloading the Wikiwand page for Когерентность памяти.

Когерентность памяти

Материал из Википедии — свободной энциклопедии

Когерентность памяти (англ. memory coherence) — свойство компьютерных систем, содержащих более одного процессора или ядра, имеющих доступ к одной области памяти, заключающееся в том, что изменённая одним ядром/процессором ячейка памяти принимает новое значение для остальных ядер/процессоров.

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

В многопроцессорных (многоядерных) системах несколько процессорных узлов работают одновременно и могут одновременно (параллельно) обращаться к одной ячейке памяти (для чтения или для записи). Узлы могут одновременно прочитать значение из одной ячейки памяти, могут сохранить прочитанное значение в своих кешах. Как только один из узлов запишет в ячейку новое значение, значения, сохранённые в локальной памяти других узлов, должны помечаться как устаревшие. Необходим механизм уведомления всех узлов о том, что значение, сохранённое в их кешах, устарело; такой механизм называется протоколом когерентности (англ. memory coherence protocol). Если в системе используется подобный протокол, то говорят, что система имеет «когерентную память» (англ. coherent memory).

Точная природа и смысл механизма когерентности определяются моделью консистентности/связанности, реализованной в протоколе. Для составления правильных «параллельных» программ программисты должны знать о том, какая именно модель/способ консистентности/связанности кеш-памяти используется в их системах.

Если протокол когерентности/синхронизации реализован аппаратно, для выяснения применяемой модели консистентности/связанности программисты могут использовать сниффинг (снупинг) шины[англ.], могут читать специальные таблицы-справочники (англ. directory-based). В качестве примера протокола когерентности можно привести протокол MSI (англ. modified, shared, invalid) (англ.) и его разновидности (MESI (англ.), MOSI (англ.), MOESI, MESIF).

Литература

[править | править код]
{{bottomLinkPreText}} {{bottomLinkText}}
Когерентность памяти
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?