YaChudo

Протокол MESI

Переглядів: 0. Оновлено 05.11.2026.

Write through
Write back
Write once

MESI — це протокол забезпечення когерентності кеш-пам'яті комп'ютера, який використовується в більшості сучасних процесорів.[1]

Кожному рядку кеш-пам'яті призначається один із чотирьох станів (закодованих двома додатковими бітами):

  • M (modified, модифікований) — рядок пам'яті наявний лише на одному з рівнів кеша і відрізняється від вмісту оперативної пам'яті.
  • E (exclusive, ексклюзивний) — рядок пам'яті наявний лише на одному з рівнів кеша, а також в оперативній пам'яті.
  • S (shared, спільний) — рядок пам'яті наявний на всіх рівнях кеша, а також в оперативній пам'яті.
  • I (invalid, недійсний) — рядок пам'яті є неактуальним і може бути замінений іншим.

Для будь-якої заданої пари кешів допустимі стани певного рядка кешу є такими:

 M   E   S   I 
 M  Red X Red X Red X Green tick
 E  Red X Red X Red X Green tick
 S  Red X Red X Green tick Green tick
 I  Green tick Green tick Green tick Green tick

Якщо блок перебуває у стані M (modified, модифікований) або E (exclusive, ексклюзивний), то копії цього блоку в інших кешах перебувають у стані I (invalid, недійсний).

Режими запису до кеш-пам'яті

  • Write through (наскрізний запис) — найстаріший за часом режим запису, що використовувався в процесорах 80486 (перших процесорах із кеш-пам'яттю). Запис виконується через усю ієрархію пам'яті — від найнижчого рівня кешу до оперативної пам'яті. Використовуються лише два стани: shared і invalid. Після заповнення рядка він переходить у стан shared. Під час запису до пам'яті через канал DMA (ESH-W, external hit write) рядок позначається як invalid.
  • Write back (також copy back) — режим запису, запроваджений разом з архітектурою Intel Pentium. Це різновид відкладеного запису. Після запису даних до рядка кешу оновлення решти пам'яті відкладається до моменту витіснення цього рядка з кеш-пам'яті. Це значно прискорює роботу кеш-пам'яті, зменшуючи навантаження на системну шину. Використовуються три стани: exclusive, modified і invalid. Після заповнення рядка (RM) він переходить у стан exclusive. Перший запис до оперативної пам'яті переводить його у стан modified. Під час читання через канал DMA (ESH-R, external hit read) відбувається повернення до стану exclusive. Запис через канал DMA призводить до позначення рядка як invalid.
  • Write once — поєднання двох наведених вище режимів. Перший запис до кешу виконується в режимі write through. Наступні записи здійснюються в режимі write back до повторного анулювання відповідного рядка кеш-пам'яті. Читання через канал DMA переводить рядок у стан shared, а запис через канал DMA — у стан invalid.

Див. також

Примітки

  1. ↑ Papamarcos, M. S.; Patel, J. H. (1984). A low-overhead coherence solution for multiprocessors with private cache memories (PDF). Proceedings of the 11th annual international symposium on Computer architecture - ISCA '84. с. 348. doi:10.1145/800015.808204. ISBN 0818605383. S2CID 195848872. Процитовано 19 березня 2013.

Посилання

Джерело: стаття у Вікіпедії та історія редагувань (автори).