« Fonctionnement d'un ordinateur/Architectures multiprocesseurs et multicœurs » : différence entre les versions
Contenu supprimé Contenu ajouté
Ligne 104 :
===Le protocole à état Owned===
Les protocoles MESI et MSI ne permettent pas de transférer des données entre
Divers protocoles de cohérences des caches utilisent cet état Owned. Le premier d’entre eux est le '''protocole MOESI''', un protocole MESI auquel on a jouté l'état O.▼
Divers protocoles de cohérences des caches utilisent cet état Owned. Le premier d’entre eux est le '''protocole MOSI''', une variante du MESI où l'état exclusif est remplacé par l'état O. Lors d'une lecture, le cache
[[File:MOESI State Transaction Diagram.svg|centre|vignette|upright=2|MOESI State Transaction Diagram]]▼
▲|[[File:MOSI Processor Transactions.png|400px|Protocole MOSI, transactions initiées par le processeur associé à la ligne de cache.]]
▲|[[File:MOSI Bus Transactions.png|350px|Protocole MOSI, transactions initiées par les autres processeurs.]]
▲Lors d'une lecture, le cache va vérifier si la lecture envoyée sur le bus correspond à une de ses données. Mais cette vérification va prendre du temps, et le processeur va devoir attendre un certain temps. Si au bout d'un certain temps, aucun cache n'a répondu, le processeur postule qu'aucun cache n'a la donnée demandée et va lire la donnée en mémoire. Ce temps est parfois fixé une fois pour toute lors de la création des processeurs, mais il peut aussi être variable, qui est géré comme suit :
* pour savoir si un cache contient une copie de la donnée demandée, chaque cache devra répondre en fournissant un bit ;
* quand le cache a terminé la vérification, il envoie un 1 sur une sortie spécifique, et un 0 sinon ;
* un ET logique est effectué entre tous les bits fournis par les différents caches, et le résultat final indique si tous les caches ont effectué leur vérification.
▲
▲[[File:MOESI State Transaction Diagram.svg|centre|vignette|upright=2|MOESI State Transaction Diagram]]
==Atomicité==
|