Полагаю, вы говорите:
- Процессор A имеет строку кэша в состоянии 'O'
- Процессор B имеет строку кеша в состоянии 'S'
Если процессор B намеревается изменить строку, процессор A понижает строку с «O» до «I», а процессор B обновляет строку с «S» до «M». Детали того, как выполняются эти две операции, зависят от того, как реализован протокол когерентности кэша. Snooping или каталог.
Обратите внимание, что в вышеприведенном случае нет передачи данных из процессора A / памяти в процессор B, поскольку процессор B уже имеет данные (и должен быть последним).
Теперь перейдем к случаю, когда процессор B имеет строку в состоянии «I» вместо «S».
Процессор B может изменять только часть строки кэша. Для a, запись с выделением, запись с кешем, строка кеша должна быть передана с процессора A на процессор B до того, как процессор B запишет строку кеша.
Простой ответ на ваш вопрос: «Передача данных происходит, когда в состоянии« I », по сравнению с отсутствием передачи данных, когда в« состоянии »*