Протокол MESI
+ недействительный — элемент кэша содержит недействительные данные;
+ разделяемый — элемент может храниться в нескольких кэшах, память обновлена;
+ эксклюзивный — элемент находится только в данном кэше (ни в каких других кэшах его нет), память обновлена;
+ модифицированный — элемент действителен, основная память недействительна, копий элемента не существует.
При загрузке процессора все элементы кэша помечаются как недействительные. При первом считывании из основной памяти нужная строка вызывается в кэш данного процессора и помечается как эксклюзивная, поскольку это — единственная кэшированная копия (рис.
8.22, а). При последующих считываниях процессор использует эту строку, не обращаясь к шине. Другой процессор может вызвать ту же строку и поместить ее в кэш. В этом случае первый держатель строки (процессор 1) благодаря слежению узнает, что он уже не единственный держатель строки, и объявляет по шине, что у него копия. Обе копии помечаются как разделяемые (рис. 8.22, б). Другими словами, состояние «разделяемая» означает, что память обновлена, и строка после чтения находится в одном или нескольких кэшах. При последующих чтениях разделяемой строки процессор не использует шину и не меняет состояние строки.Посмотрим теперь, что происходит, когда процессор 2 выполняет запись в разделяемую строку кэша.
В этом случае процессор помещает на шину специальный сигнал, сообщая всем другим процессорам о том, что их копии более недействительны, при этом копия в кэше самого процессора 2 переходит в состояние «модифицирована» (рис. 8.22, в). В память эта строка не записывается. Отметьте, что если указанная строка является эксклюзивной, никакого сигнала о недействительности на шину передавать не нужно, поскольку других копий этой строки не существует.Далее выясним, что происходит, когда эту строку считывает процессор 3. Процессор 2, который в данный момент является держателем строки, знает, что копия в памяти недействительна, поэтому он передает на шину сигнал о том, чтобы процессор 3 ждал, пока он запишет строку обратно в память. Сразу после записи процессор 3 вызывает из памяти копию только что записанной строки, и в обоих кэшах строка помечается как разделяемая (рис. 8.22, г). Когда затем процессор 2 снова записывает эту строку (рис. 8.22, в), ее копия в кэше процессора 3 становится недействительной.
Наконец, пусть теперь слово в строке записывает процессор 1. Процессор 2 видит, что делается попытка записи, и выставляет на шину сигнал, который сообщает процессору 1, чтобы тот подождал, пока процессор 2 запишет свою строку в память. После окончания записи процессор 2 помечает собственную копию строки как недействительную, поскольку знает, что другой процессор собирается ее изменить. Возникает ситуация, в которой процессор выполняет запись в некэшированную строку. Если применяется политика заполнения по записи, строка будет загружена в кэш и помечена как модифицированная (рис. 8.22, е). Если политика заполнения по записи не применяется, запись происходит непосредственно в память, и строка вообще нигде не кэшируется.
Рис. 8.22. Иллюстрация протокола МЕЭ1 |
Еще по теме Протокол MESI:
- Глава 4. Киотский протокол в Украине
- § 6. Протокол судебного заседания
- Судебные протоколы вообще
- Пример обработки протокола.
- Базовый протокол устранения проблемы с BSFF
- В. Г. Олифер, Н. А. Олифер. 54 Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов. 3-е изд, 2006
- Определение пятое
- Основания
- Определение семнадцатое
- 3.1. Общие положения
- Основания
- Основания