Plan Présentation de la Solution. Le Protocole MESI Gestion de la lecture /écriture du processeur en mémoire. Gestion de la lecture /écriture d ’un second maître du Bus en mémoire.
Une solution qui gère les problèmes de cohérence de cache. Il faut une solution !!! Une solution qui gère les problèmes de cohérence de cache. Une solution performante. Nous avons venons de voir pourquoi nous avons besoin d ’une solution. Il est impératif que la cohérence des données en mémoire soit respectée. Nous voulons une solution efficace pour gérer ce problème: La solution de l ’écriture immédiate est une solution qui maintient la cohérence des données en mémoire mais ce n ’est pas une solution performante.
Voici la Solution La solution est d ’utiliser un protocole pour gérer : -les écritures en mémoires -les lectures en mémoires
Définition d ’un protocole Ensemble de règles établies à l ’avance. Ces règles définissent le déroulement des opérations à effectuer.
Où et comment implanter le protocole Dans toutes les parties ou l ’on est susceptible de modifier la mémoire : Le cache L1 Le cache L2 … Comment implanter le protocole: En utilisant une machine d ’état. Cette machine d ’état est implanter dans le contrôleur du cache
Présentation de la Solution. Le Protocole MESI Plan Présentation de la Solution. Le Protocole MESI Gestion de la lecture /écriture du processeur en mémoire. Gestion de la lecture /écriture d ’un second maître du Bus en mémoire. Nous avons vu une présentation de la solution , où elle devait être implantée et comment . Maintenant présentons la solution .
M: Modified <==> Modifier E: Exclusif <==> Exclusif Le Protocole MESI M: Modified <==> Modifier E: Exclusif <==> Exclusif S: Shared <==> Partager I : Invalid <==> Invalide Explication des initiales du protocole MESI .
L ’État Modifier Le bloc du cache a été mis à jour (il contient des données modifiées) suite a un succès en écriture sur le cache Cette état informe le cache qu ’il doit espionner le bus système et écrire l ’entrer modifier en mémoire quand un succès d ’espionnage sur ce bloc est détecter. L ’état modifié est l ’état le plus important car c ’est dans cet état qu ’on active l ’espionnage . Tant que les données ne sont pas modifiées elles restent cohérentes.Mais lorsqu ’elles sont modifiées, le problème de cohérence peut intervenir.
Exemple de l ’État Modifié : Marque l ’état Modifié Mémoires A= 8 B= 9 C=10 D=15 E=1 . Cache A=9 Processeur M Maîtres Bus Comment le protocole MESI est-il implanté ? Nous pouvons voir qu ’un certain nombre de bit ont été rajouté dans le cache pour déterminer l ’état du bloc en mémoire.
Commençons à construire le graphe d ’état. réécriture Succes d ’espionnage Lecture /Écriture Succès en lecture Modifié Succès en écriture Dans un graphe d ’état on se rappelle que tous les états sont marqués par des bulles. Et les flèches pointent vers les états dans lesquels on passe lorsqu ’un événement se produit. -Nous avons donc une bulle qui marque l ’état modifié. -Lorsque le processeur écrit dans un bloc déjà modifié il reste modifié. -Lorsque le processeur lit un bloc modifié il reste modifié. -Mais lors d ’une lecture ou d ’une écriture par un maître du bus autre que le processeur, le bloc ne peut pas rester dans l ’état modifié .De plus une réécriture est obligatoire. Remarque : Une réécriture signifie: aller écrire en mémoire centrale les données du cache.
Commençons à construire le graphe d ’état. Succès en écriture Modifié Succès en lecture réécriture Succes d ’espionnage Succès d ’espionnage On replace dans le graphe général cet état .
L ’État Exclusif Indique que ce cache n ’a pas eu connaissance de la possession du bloc par un autre cache L ’état exclusif signifie que le cache qui a une donnée « pense » être le seul à l ’avoir.
Continuons à construire notre graphe d ’état Succès d ’espionnage sur lecture Succès d ’espionnage sur écriture Exclusif Succès en lecture Succès en écriture Même chose que précédemment : -Quand on est le seul cache à avoir une donnée et que le processeur nous la demande on est toujours le seul à avoir cette donnée donc on reste dans l ’état exclusif. -Quand le processeur écrit une donnée dans notre cache on est le seul à l ’avoir mais elle vient d ’être modifiée donc on doit passer dans l ’état Modifié. -Lorsque un maître du bus autre que le processeur lit la donnée on ne peut plus rester dans l ’état exclusif car d ’autres ont la donnée donc il faut aller dans un autre état .Un état qui signifierait que la donnée est partagée. -Lorsque un maître du bus autre que le processeur écrit à l ’adresse de cette donnée , on est le seul à avoir une donnée mais elle n ’est plus valide donc on doit passer dans un autre état qui marque que la donnée est invalide.
Continuons à construire notre graphe d ’état Succès en écriture Modifié Succès en lecture réécriture Succes d ’espionnage Succès d ’espionnage Succès d ’espionnage sur lecture On replace ce que l ’on vient de voir dans le graphe d ’état. Succès d ’espionnage sur écriture Exclusif Succès en écriture Succès en lecture
Indique que ce bloc peut être présent dans plusieurs caches. L ’État Partagé Indique que ce bloc peut être présent dans plusieurs caches. L’état partagé à l ’inverse de l ’état exclusif indique que le cache n ’est pas le seul à avoir la donnée .
Continuons à construire notre graphe d ’état Succès en lecture Succès d ’espionnage sur écriture Partagé Succès en écriture On a l ’état partagé. -Sur une lecture faite par le processeur , on reste dans l ’état partagé. -Sur une écriture par un maître du bus autre que le processeur la donnée partagée devient invalide il faut donc passer dans un autre état. -Sur une écriture par le processeur le cache devient le seul à posséder cette donnée donc il n ’a plus une donnée partagée mais une donnée en mode exclusif.
Continuons à construire notre graphe d ’état Succès en lecture Succès d ’espionnage sur écriture Partagé Succès en lecture Succès en écriture Modifié réécriture Succes d ’espionnage Succès d ’espionnage Exclusif Succès d ’espionnage sur écriture Succès en écriture Succès d ’spionnage sur lecture On replace le tout dans le graphe général .
Le bloc contenu dans la cache n ’est pas correct. L ’État Invalide Le bloc contenu dans la cache n ’est pas correct. L ’état invalide c ’est le plus simple état. Il indique que la donnée n ’est plus valide.
Continuons à construire notre graphe d ’état Chargement de bloc Échec en lecture Invalide -Sur une lecture deux cas sont possibles , dans les deux cas de toute manière il y a chargement du bloc. Mais l’état du bloc va différer suivant la position du cache dans la hiérarchie mémoire. En effet , suivant la position du cache , le cache va penser être le seul à avoir la donnée ou bien il va savoir que d ’autres l ’ont avant lui . Donc soit le bloc sera dans l ’état partagé ou en mode exclusif.
Finissons de construire notre graphe d ’état Succès en lecture Succès en écriture Modifié réécriture Succes d ’espionnage Succès d ’espionnage Exclusif Succès d ’espionnage sur écriture Partagé Succès d’espionnage lecture Chargement de bloc Échec en lecture Invalide Échec en lecture Chargement de bloc On replace le tout dans le graphe général et voilà le graphe complet.
Présentation de la Solution. Le Protocole MESI Plan Présentation de la Solution. Le Protocole MESI Gestion de la lecture /écriture du processeur en mémoire. Gestion de la lecture /écriture d ’un second maître du Bus en mémoire. Voyons maintenant un peu plus concrètement comment cela se passe. Nous allons voir l ’exemple d ’une lecture et d ’une écriture en mémoire par le processeur géré par le protocole MESI .
Opération de chargement de A Processeur Mémoire A=8 B=9 C=10 Maître Bus Cache L2 c Alors présentons premièrement le schéma: Nous pouvons constater que nous avons 2 caches un cache L1 qui est représenté dans le processeur, et un cache L2 Le système que nous présentons est un système à traversée de cache. La Flèche Noire représente Le Bus de données. La Flèche Verte représente le Bus d ’adresse. Comme nous travaillerons toujours sur une seul donnée , l ’état de cette donnée dans le protocole MESI est représenté pour les 2 caches. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Opération de chargement de A Processeur Mémoire A=8 B=9 C=10 Maître Bus Cache L2 A=8 c Au commencement, nous considérerons que les valeurs ne sont pas chargées. Donc l ’état de la mémoire des caches est invalide (aucune donnée correcte ). Le processeur désire charger la valeur de A. Donc par le bus d ’adresse il va demander la valeur à la mémoire. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Opération de chargement de A Processeur Mémoire A=8 B=9 C=10 Maître Bus Cache L2 c A=8 La donnée transite par le bus de donnée. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Explication du Fonctionnement du Protocole MESI Processeur Mémoire A=8 B=9 C=10 Maître Bus Cache L2 A=8 A=8 c La donnée va passer par le cache L2 qui va mémoriser au passage cette donnée. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Opération de chargement de A Processeur Mémoire A=8 B=9 C=10 Maître Bus A=8 Cache L2 A=8 c -Le cache L2 vient de mémoriser une donnée , au moment où il l ’a mémorisé il était le seul à l ’avoir donc il passé dans un état exclusif. -La donnée continue de transiter vers le processeur. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Opération de chargement de A Processeur A=8 Mémoire A=8 B=9 C=10 Maître Bus Cache L2 A=8 c Le cache L1 reçoit la donnée , comme le système est un système à traversée de cache , L1 sait que L2 a reçu la donnée avant lui donc L1 sait qu ’il partage sa donnée avec L2. Voilà l ’opération de chargement de A est fini. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Opération d ’écriture de A=9 Processeur A=8 Mémoire A=8 B=9 C=10 Maître Bus Cache L2 A=8 c Maintenant voyons ce qui se passe lorsque le processeur change la valeur de A. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Opération d ’écriture de A=9 Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A=9 Cache L2 A=8 c Le processeur vient de modifier A dans le cache L1, L1 sait donc que pour l ’instant il est le seul à avoir cette donnée donc il passé dans l ’état exclusif. Mais il va prévenir L2 (en lui passant la valeur ) que A a été modifié. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Opération d ’écriture de A=9 Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus Cache L2 A=9 A=9 c Donc L2 passe dans l ’état modifié et mémorise la nouvelle valeur de A. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Opération incrémentation de A et écriture de A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus Cache L2 A=9 c Imaginons maintenant que le processeur change encore la valeur de A. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Opération de réécriture de A=10 Processeur A=10 Mémoire A=8 B=9 C=10 Maître Bus Cache L2 A=9 c A passe à 10. L1 mémorise la nouvelle valeur et passe de l ’état exclusif à modifié. Mais L1 ne va pas envoyer les données à L2 . L2 est déjà dans un état modifié il surveille donc le bus pour la valeur de A . L2 n ’a pas besoin d ’avoir la vraie valeur de A. ==> Un gain de temps. On n ’a pas besoin de recopier la donnée dans tous les caches. ==> Évite de surcharger les bus en minimisant les transits de donnée. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Présentation de la Solution. Le Protocole MESI Plan Présentation de la Solution. Le Protocole MESI Gestion de la lecture /écriture du processeur en mémoire. Gestion de la lecture /écriture d ’un second maître du Bus en mémoire. Voyons maintenant l ’écriture et la lecture par un maître du bus autre que le processeur. C ’est là que les problèmes de cohérence vont apparaître…..
Explication du Fonctionnement du Protocole MESI Quand il y un maître du bus autres que le processeur qui intervient . comment cela se passe : Opération de lecture par un maîtres du bus autre que le processeur . Opération d ’écriture par un maîtres du bus autre que le processeur .
Explication du Fonctionnement du Protocole MESI Lors d ’une lecture par un maîtres du bus autre que le processeur il existe plusieurs cas : État du bloc L2 invalide => échec d ’espionnage État du bloc L2 Exclusif => Peut donner la valeur tout de suite Bloc L2 est dans l ’état modifié État du bloc de donné dans L1 (exclusif ou partagé ) État du bloc L1 modifier Nous n ’étudierons que les cas où L2 est dans un état modifié car dans les autres cas il n ’y a pas de problème de cohérence. Si L2 est dans l ’état invalide, il ne peut pas donner de valeur . Si L2 est dans l ’état exclusif, il peut donner immédiatement au second maître bus la valeur demandée. ==> Gain de temps. Mais Si L2 est dans l ’état modifié il doit faire des choses que nous allons voir
Le Maîtres du Bus veut connaître la valeur de A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=9 c Le maître du bus veut connaître la valeur de A . Et L2 est dans l ’état modifié. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=9 c Succès d ’espionnage de L2!!!! Donc il reprend le contrôle du Bus. L2 à la donner mais à t ’il la plus récente?? Il y a succès d ’espionnage. L2 reprend le contrôle du bus . L2 doit maintenant déterminer si il a la donnée la plus récente .Il va donc aller le demander au cache L1. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=9 c L2 interroge L1. L1 lui répond qu ’il est en mode Exclusif L2 interroge L1. L1 répond qu ’il est en mode exclusif . L2 peut donc en déduire qu ’il a la donnée la plus récente. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=9 c L2 sait maintenant que la Valeur de A qu ’il a est la plus récente.L2 va donc réécrire la Valeur de A en mémoire Comme L1 a partager sa valeur avec L2. L1 repasse donc dans l ’état partagé. L2 va lancer une procédure de réécriture. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=9 A=9 c Voilà la procédure de réécriture. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=9 c A=9 L2 passe dans l ’état exclusif . Nous nous retrouvons dans le mêmes états que lors du chargement de A. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=9 A=9 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=9 Mémoire A=9 B=9 C=10 Maître Bus A? Cache L2 A=9 A=9 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=9 Mémoire A=9 B=9 C=10 Maître Bus A? Cache L2 A=9 c L2 Rend la main au Maître Bus qui va pouvoir lire la Valeur de A L2 redonne la main au maître du bus. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=9 Mémoire A=9 B=9 C=10 Maître Bus A? Cache L2 A=9 A=9 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=9 Mémoire A=9 B=9 C=10 Maître Bus A? Cache L2 A=9 c A=9 Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=9 Mémoire A=9 B=9 C=10 Maître Bus A=9 Cache L2 A=9 A=9 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=9 Mémoire A=9 B=9 C=10 Maître Bus A=9 Cache L2 A=9 c Ainsi le maître du bus a désormais la valeur la plus récente de A . Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Explication du Fonctionnement du Protocole MESI Étudions le cas où le bloc de donnée L1 est en mode Modifié
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=9 c Maintenant, nous allons recommencer sauf que L1 et L2 ont des valeurs différentes. Le maître du bus veut connaître la valeur de A. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=9 c Succès d ’espionnage de L2!!!! Donc il reprend le contrôle du Bus. L2 à la donner mais à t ’il la plus récente?? Comme A est modifié L2 va espionner le bus . L2 s ’aperçoit que la valeur de A est demandée. L2 stoppe donc le transfert et reprend le contrôle du bus. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=9 c L2 interroge L1. L1 lui répond qu ’il est en mode modifier L2 interroge L1 pour savoir si L2 a la valeur de L1 la plus récente. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=8 B=9 C=10 A=10 Maître Bus A? Cache L2 A=9 c L2 en déduit donc que sa valeur est trop ancienne, il lui faut donc la nouvelle . L1 lui donne cette nouvelle valeur. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=8 B=9 C=10 Maître Bus A? A=10 Cache L2 A=9 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=10 A=10 c L1 partage maintenant sa donnée avec L2 donc L1 passe dans l ’état partagé. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=10 c L2 sait maintenant que la Valeur de A qu ’il a est la plus récente.L2 va donc réécrire la Valeur de A en mémoire L2 a maintenant la valeur la plus récente de A donc il va pouvoir entamer une procédure de réécriture. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=10 A=10 c Voilà la procédure de réécriture. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=10 c A=10 L2 passe donc dans l ’état exclusif. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=8 B=9 C=10 Maître Bus A? Cache L2 A=10 A=10 c La mémoire sauvegarde la valeur de A. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=10 B=9 C=10 Maître Bus A? Cache L2 A=10 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=10 B=9 C=10 Maître Bus A? Cache L2 A=10 A=10 L2 rend la main au maître du Bus pour qu ’il puisse exécuter la lecture c L2 redonne le contrôle du bus au maître bus qui va pouvoir finir son chargement . Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=10 B=9 C=10 Maître Bus A? Cache L2 A=10 A=10 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=10 B=9 C=10 Maître Bus A? Cache L2 A=10 c A=10 Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=10 B=9 C=10 Maître Bus A=10 Cache L2 A=10 A=10 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut connaître la valeur de A Processeur A=10 Mémoire A=10 B=9 C=10 Maître Bus A=10 Cache L2 A=10 c Et voilà le maître du bus vient de charger la valeur de A. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Explication du Fonctionnement du Protocole MESI Passons maintenant a l ’écriture par le Maître Bus L1 en mode Partagé ou Exclusif. L1 en mode modifié. Maintenant voyons comment cela se passe pour l ’écriture en mémoire par un second maître du bus différent du processeur.
Le Maître du Bus veut écrire une valeur dans A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c A est chargé dans L1 et L2 . L2 est en mode modifié donc il surveille le bus. Et le second maître du bus veut mettre à jour la valeur de A. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c Succès d ’espionnage de L2!!!! Donc il reprend le contrôle du Bus. L2 à la donner mais à t ’il la plus récente?? Le cache L2 s ’aperçoit que le second maître du bus veut écrire à l’adresse de A. L2 stoppe donc la procédure d ’écriture . Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 L2 interroge L1. L1 lui répond qu ’il est en mode Exclusif c L2 interroge L1 pour savoir si sa donnée est la plus récente . L1 lui répond qu ’il est en mode exclusif ce qui veut dire que L2 a la valeur la plus récente. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c L2 sait maintenant que la Valeur de A qu ’il a est la plus récente.L2 va donc réécrire la Valeur de A en mémoire L2 sait donc qu ’il peut entamer une procédure de réécriture. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 A=9 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=9 Mémoire A=8 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c A=9 Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=9 Mémoire A=9 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 A=9 c Une fois la valeur réécrite en mémoire, A contenu dans le cache L1 et L2 devient une donnée invalide; Car le maître du bus va remplacer cette valeur. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=9 Mémoire A=9 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c L2 Rend la main au maître Bus qui va pouvoir écrire la Valeur de A Une fois la procédure de réécriture terminée, L2 redonne le contrôle du bus au second maître bus. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=9 Mémoire A=9 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 A=4 c Le maître bus va écrire A en mémoire. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=9 Mémoire A=9 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c A=4 Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=9 Mémoire A=4 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 A=4 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=9 Mémoire A=4 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c Et voilà . Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Explication du Fonctionnement du Protocole MESI Maintenant voyons le cas ou L1 à été modifier Recommençons la même opération mais avec A qui a été modifié dans L1.
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=8 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c L1 et L2 ont des valeurs de A différentes. Le maître du bus veut écrire à l ’adresse de A. Comme L2 est en mode modifié il surveille le bus. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=8 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c Succès d ’espionnage de L2!!!! Donc il reprend le contrôle du Bus. L2 à la donner mais à t ’il la plus récente?? L2 va stopper la procédure d ’écriture en mémoire, et va entamer une procédure de réécriture mais avant il faut que L2 ait la bonne valeur de A. Il va donc s ’en assurer en demandant à L1 dans quel état est la donnée A dans L1. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=8 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 L2 interroge L1. L1 lui répond qu ’il est en mode Modifié c L2 interroge L1. L1 lui répond que A est dans un état modifié. Le cache L2 peut donc en déduire que L1 a une valeur de A différente. Il faut donc qu ’il réécrive cette donnée en mémoire et pas la sienne . Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=8 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c L2 sait maintenant que la Valeur de A dans L1 est la plus récente. L2 va donc réécrire la Valeur de A qui est dans L1 en mémoire Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=8 B=9 C=10 A=11 Maître Bus A<=4 Cache L2 A=9 c Le transfert commence. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=8 B=9 C=10 Maître Bus A<=4 A=11 Cache L2 A=9 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=8 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 A=11 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=8 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c A=11 Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=11 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 A=11 c L1 et L2 passe dans l ’état invalide car la valeur de A va être modifiée par le maître du bus. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=11 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c L2 Rend la main au maître Bus qui va pouvoir écrire la Valeur de A L2 redonne le contrôle du bus au second maître bus. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=9 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 A=4 c Le second maître du bus va donc écrire la valeur de A en mémoire. Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=9 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c A=4 Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=4 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 A=4 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Le Maître du Bus veut écrire une valeur dans A Processeur A=11 Mémoire A=4 B=9 C=10 Maître Bus A<=4 Cache L2 A=9 c Cache L1 Cache L2 Invalide Partagé Invalide Partagé Modifié Exclusif Modifié Exclusif
Une solution est la Gestion MESI (Modified,Exclusive,Invalid,Shared) Succès en écriture WB/WT#=0 Chargement de bloc échec en lecture WB/WT# = 0 Succès en lecture Invalide Partagé Succès d ’espionnage externe sur écriture INV.=1 Ou espionnage interne , ou FLUSH#, ou INVD,ou WBINVD Succès d ’espionnage externe INV.=0 Chargement de bloc INV=1 Échec en lecture Succès d ’espionnage externe sur lecture (INV. =0 ) INVD réécriture WB/WT#=1 Succès en écriture (WB/WT# =1) réécriture Voici le protocole MESI avec les signaux qui transitent entre le cache L1 et le cache L2. Succès d ’espionnage ou FLUSH#, ou WBINVD Succès d ’espionnage interne ou succès d ’espionnage externe sur écriture (INV= 1) ou FLUSH# , ou INVD, WBINVD Succes d ’espionnage externe en lecture (INV=0) Succès en lecture Modifié Exclusif Succès en écriture Succès en lecture Succès en écriture