Протокол MESI



MESI — це протокол забезпечення когерентності кеш-пам'яті комп'ютера, який використовується в більшості сучасних процесорів.[1]
Кожному рядку кеш-пам'яті призначається один із чотирьох станів (закодованих двома додатковими бітами):
- M (modified, модифікований) — рядок пам'яті наявний лише на одному з рівнів кеша і відрізняється від вмісту оперативної пам'яті.
- E (exclusive, ексклюзивний) — рядок пам'яті наявний лише на одному з рівнів кеша, а також в оперативній пам'яті.
- S (shared, спільний) — рядок пам'яті наявний на всіх рівнях кеша, а також в оперативній пам'яті.
- I (invalid, недійсний) — рядок пам'яті є неактуальним і може бути замінений іншим.
Для будь-якої заданої пари кешів допустимі стани певного рядка кешу є такими:
| M | E | S | I | |
|---|---|---|---|---|
| M | ||||
| E | ||||
| S | ||||
| I |
Якщо блок перебуває у стані 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.
Див. також
- Протокол MSI — базовий протокол, модифікацією якого є MESI.
- Write-once (режим кеша) — рання форма протоколу MESI.
- Протокол MOSI
- Протокол MOESI
- Протокол MESIF
- Протокол MERSI
- Протокол Dragon
- Протокол Firefly (режим кеша)
Примітки
- ↑ 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.
Посилання
Джерело: стаття у Вікіпедії та історія редагувань (автори).