AMD 760MP & Athlon MP

Publié le 18/07/2001 par et
Imprimer


Puisque l’on parle de cache, nous finirons cette partie sur l’Athlon MP avec le MOESI, qui est en fait le protocole destiné à s’assurer de la cohérence des caches des processeurs AMD de 7è génération. En effet, si le cache est très important en ce qui concerne les performances, il pose problème dans les systèmes bi processeur.

Prenons deux microprocesseurs P1 et P2, chacun disposant de sa propre mémoire cache. Si le processeur P1 modifie une zone mémoire, les informations seront d’abord écrites dans sa mémoire cache. Du coup, si P2 accède aux informations stockées dans la dite zone mémoire avant que P1 ai bien voulu vider son cache, il se retrouvera avec les anciennes données, qui seront donc incorrectes.

Ce problème de cohérence des caches est solvable via l’utilisation d’une autre technique d’écriture, le Write through. Cette fois, le processeur P1 écrira directement la nouvelle donnée dans la mémoire vive. Dans le même temps, P2 sera averti de cette écriture. Du coup, si P2 avait déjà caché cette zone mémoire, il pourra invalider ou updater la valeur stockée dans son cache.

D’autres protocoles plus sophistiqués existent, tels que le MESI utilisé par Intel. Ces protocoles permettent à P1 et P2 de définir pour chacune des informations en cache un état : Modified , Exclusive, Shared ou Invalid. Pour chaque état, on peut savoir si les informations sont à jour ou non dans le cache de P1, le cache de P2 ou la mémoire :

Etat Modified pour P1 : P1 Oui, P2 Non, Mémoire Non.
Etat Exclusive pour P1 : P1 Oui, P2 Non, Mémoire Oui.
Etat Shared pour P1 : P1 Oui, P2 Oui, Mémoire Oui.
Etat Invalid pour P1 : P1 Non, P2 Oui, Mémoire Non.

Prenons un exemple d’utilisation de ces états. Si une zone mémoire est en cache dans P1 mais pas dans P2, elle sera indiquée en tant que Exclusive chez P1. Si P2 décide de cacher cette zone mémoire, on passera en mode Shared dans P1 et P2. Si P1 décide ensuite de changer la valeur correspondant à cette zone mémoire, il en avertira P2. Chez P2, cette ligne de cache passera en Invalid, alors qu’elle passera en Modified chez P1.

Le mode MESI permet d’économiser de nombreux échanges de données. Par exemple, si l’on est en mode Exclusive on sait qu’il est inutile d’avertir l’autre processeur d’une modification de la donnée étant donné qu’il ne l’a pas en cache. De même, on est pas obligé d’écrire de suite la nouvelle valeur en mémoire vive lorsque P2 passe en Invalid et P1 en Modified.

En fait, le seul problème du MESI, c’est que si P2 veut avoir la nouvelle valeur, il devra attendre que P1 écrive l’écrive en mémoire vive. On passera donc de nouveau en Exclusive pour P1, puis en Shared pour P1 et P2. Pour contourner ce problème, AMD utilise donc le protocole MOESI, qui intègre un cinquième état : Owner (Etat Owner pour P1 : P1 Oui, P2 Oui, Mémoire Non). Avec le MOESI, P1 enverra directement la nouvelle valeur à P2, sans passer par la mémoire vive. On passera donc en Owner chez P1 et en Shared chez P2.

Par rapport au MESI, le MOESI permet donc une économie substantielle en terme de bande passante mémoire.
Vos réactions

Top articles