протокол MOESI для кеширования - PullRequest
0 голосов
/ 21 мая 2010

процессор A владеет строкой кэша, которая используется совместно с процессором B.
что происходит, когда B пытается записать в эту строку?
Кроме того, если бы он был «недействительным» вместо «общего», это имело бы какое-то значение? спасибо.

Ответы [ 2 ]

1 голос
/ 15 мая 2011

Полагаю, вы говорите: - Процессор A имеет строку кэша в состоянии 'O' - Процессор B имеет строку кеша в состоянии 'S'

Если процессор B намеревается изменить строку, процессор A понижает строку с «O» до «I», а процессор B обновляет строку с «S» до «M». Детали того, как выполняются эти две операции, зависят от того, как реализован протокол когерентности кэша. Snooping или каталог.

Обратите внимание, что в вышеприведенном случае нет передачи данных из процессора A / памяти в процессор B, поскольку процессор B уже имеет данные (и должен быть последним).

Теперь перейдем к случаю, когда процессор B имеет строку в состоянии «I» вместо «S». Процессор B может изменять только часть строки кэша. Для a, запись с выделением, запись с кешем, строка кеша должна быть передана с процессора A на процессор B до того, как процессор B запишет строку кеша.

Простой ответ на ваш вопрос: «Передача данных происходит, когда в состоянии« I », по сравнению с отсутствием передачи данных, когда в« состоянии »*

1 голос
/ 21 мая 2010

Я нашел это:
«Если процессор желает записать в строку собственного кэша, он должен уведомить другие процессоры, которые совместно используют эту строку кэша. В зависимости от реализации он может просто сказать им сделать недействительными свои копии (перевести свою собственную копию в состояние« Изменено »), или он может попросить их обновить свои копии новым содержимым (оставив свою собственную копию в состоянии Owned). "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...