2010-05-21 5 views
0

Le processeur A possède une ligne de cache qui est partagée avec le processeur B.
Que se passe-t-il lorsque B essaie d'écrire sur cette ligne?
aussi, si c'était «invalide» au lieu de «partagé» cela ferait-il une différence?
merci.cache-cohérence protocole MOESI

+0

Que – MSalters

+0

-vous vous pensez peut-être qu'ils transférer la propriété si? il est invalide alors A serait writeback? – ThP

Répondre

1

J'ai trouvé ceci:
"Si un processeur souhaite écrire dans une ligne de cache possédée, il doit avertir les autres processeurs qui partagent cette ligne de cache, en leur disant simplement d'invalider leurs copies (déplacer sa propre copie à l'état modifié), ou il peut leur dire de mettre à jour leurs copies avec le nouveau contenu (en laissant sa propre copie dans l'état possédé). "

1

Je suppose que vous dites: - Processeur A a la ligne cache dans l'état « O » - Processeur B a la ligne cache dans l'état « S »

Si le processeur B a l'intention de modifier la ligne, le processeur A rétrograde la ligne de 'O' à 'I', et le processeur B met à jour la ligne de 'S' à 'M'. Les détails sur la façon dont ces deux opérations se produisent dépendent de la façon dont le protocole de cohérence du cache est implémenté. Snooping ou répertoire. Notez que dans le cas ci-dessus, il n'y a pas de transfert de données du processeur A/mémoire vers le processeur B, car le processeur B a déjà les données (et devrait être le dernier). Nous arrivons maintenant au cas où le processeur B a la ligne dans l'état 'I' au lieu de 'S'. Le processeur B peut uniquement modifier une partie d'une ligne de cache. Dans le cas d'un cache write write write back, la ligne de cache doit être transférée du processeur A vers le processeur B, avant que le processeur B n'écrive la ligne de cache.

réponse simple à votre question est: « Le transfert de données est impliqué lorsque dans l'état « I » vs pas de transfert de données lorsque dans l » » Etat»