« Fonctionnement d'un ordinateur/Architectures multiprocesseurs et multicœurs » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 84 :
===Les protocoles à état Shared===
 
La cohérence des caches est très simple quand on a des caches write-trough. Malheureusement, mais ces cachesderniers sont à l'origine de beaucoup d'écritures en mémoire qui saturent le bus. Aussi, d'autres caches ont étés inventés, qui n'ont pas ceon problèmea :inventé les caches Write-back, où le contenu de la mémoire n'est pas cohérent avec le contenu du cache. Si on écrit dans la mémoire cache, le contenu de la mémoire RAM n'est pas mis à jour. On doit attendre que la donnée soit effacéesorte du cache pour l'enregistrer en mémoire ou dans les niveaux de caches inférieurs (s'ils existent), :ce celaqui évite de nombreuses écritures mémoires inutiles.
 
Divers protocoles de cohérence des caches existent pour les caches Write Back. Le plus simple d'entre eux est le protocole MSI. Ce protocole scinde l'état Shared en deux sous-états : Modified et Shared. L'état Invalid ne change pas et correspond toujours au cas où la donnée présente dans le cache est périmée. L'état Shared change et correspond maintenant à une donnée à jour, présente dans plusieurs caches. L'état Modified correspond à une donnée que le processeur a modifié dans son cache : elle est à jour, mais dont les copies des autres caches sont périmées. Avec ce protocole, un processeur peut lire des lignes de caches dans l'état Modified ou Shared sans problème, mais toute tentative de lecture d'une ligne Invalid demande de récupérer la version à jour dans la mémoire. Pour l'écriture, rien de plus simple : toute écriture est possible et place la ligne de cache dans l'état Modified.
 
|[[File:Diagramme d'état informel du protocole MSI.png|centre|vignette|upright=2|Diagramme d'état informel du protocole MSI.]]
{|
 
|[[File:Diagramme d'état informel du protocole MSI.png|Diagramme d'état informel du protocole MSI.]]
|[[File:Modified-Shared-Invalid Protokoll.png|centre|vignette|upright=2|Diagramme du protocole MESI. Les abréviations PrRd et PrWr correspondent à des accès mémoire initiés par le processeur associé au cache, respectivement aux lectures et écritures. Les abréviations BusRd et BusRdx et Flush correspondent aux lectures, lectures exclusives ou écritures initiées par d'autres processeurs sur la ligne de cache.]]
|}
 
===Les protocoles à état Exclusif===