Protocole MOESI

Protocole MOESI

En informatique, le protocole MOESI (Modified, Owned, Exclusive, Shared, Invalid) est un protocole de cohérence de cache utilisé dans les systèmes multiprocesseurs.

Sommaire

Rappels sur la cohérence

Les architectures à mémoire distribuée peuvent intégrer un mécanisme de cohérence de cache. Il s'agit d'assurer que la modification d’une ligne de cache soit bien reportée aux autres caches. On parle dans ce cas de ccNUMA pour cache coherent Non Uniform Memory Acces, c'est-à-dire en français « accès mémoire non uniforme ». En effet, dans le cas d’architecture multiprocesseur à mémoire distribuée, l’accès à la mémoire n’est pas uniforme selon que l’on accède à une mémoire locale ou distante. En outre, il est nécessaire d’implémenter un mécanisme pour assurer une bonne cohérence entre les données présentes dans les différentes mémoires cache. Par exemple, on comprend cette contrainte, lors de la migration d’une tâche d’un processeur à un autre. En effet, sans synchronisation, la tâche pourrait, paradoxalement, poursuivre son exécution sur le nouveau processeur en utilisant des données anciennes qu’elle a pourtant modifiées depuis.

MOESI

Le MOESI (Modified, Owned, Exclusive, Shared, Invalid) est précisément un protocole qui peut être utilisé pour maintenir une cohérence de cache. Il est une évolution du protocole MESI utilisé auparavant. Dans ce protocole, chaque ligne de cache se trouve dans l'un des cinq états cités suivants:

  • I - Invalid : la ligne de cache ne contient pas la valeur actualisée de la donnée. Celle-ci se trouve en mémoire principale ou dans la mémoire cache d'un autre processeur,
  • E - Exclusive : la ligne de cache contient la donnée la plus récente qui se trouve aussi en mémoire principale mais dans aucune des autres mémoires caches,
  • S - Shared : la ligne de cache contient la donnée la plus récente. On ignore si elle se trouve aussi en mémoire principale ou dans une autre mémoire cache,
  • M - Modified : la ligne de cache contient la donnée la plus récente qui ne se trouve dans aucune autre mémoire cache. De plus, la valeur contenue par la mémoire principale est incorrecte.
  • O - Owned : la ligne de cache contient la donnée la plus récente qui peut se trouver aussi dans la mémoire cache d'un autre processeur. En revanche, la valeur contenue par la mémoire principale est incorrecte.

D’abord, une lecture peut être réalisée dans tous les états exceptés "invalid". Dans ce dernier cas, une requête est émise à l’ensemble des unités. Il y a alors deux cas, la donnée peut être présente ou non dans une autre mémoire cache. Si elle s’y trouve, on la récupère alors directement, et l’état de la ligne de cache devient "Shared". Autrement, elle est récupérée depuis la mémoire RAM adéquate et la ligne devient "Exclusive".

Une écriture peut être effectuée directement dans les états "exclusive" et "modified". Dans les autres états, la donnée peut être chargée dans d’autres caches, il faut donc invalider toutes ces lignes avant de procéder à l’écriture. Finalement, lorsque ces invalidations ont été menées à bien, la donnée est écrite en cache et l’état de la ligne passe à "Modified", tandis que le " dirty bit" passe à 1 indiquant une différence entre la valeur en cache et en RAM.

Par ailleurs, c’est à cause de ce cas de figure que la réception de "Probe Write Hit" qui indique une écriture sur une autre unité, invalide systématiquement la ligne de cache.

Après une modification, celle-ci n’est pas reportée en mémoire principale tant que la ligne de cache n’est pas écrasée par des données correspondant à autre adresse. C’est pour cette raison, que l’on récupère prioritairement les données dans les autres caches. L’état "Owned" sert d’ailleurs à cela en prolongeant la durée pendant laquelle la RAM n’est pas actualisée. En effet, lorsqu’un autre processeur récupère une donnée modifiée pour la lire, l’état passe à "Owned" pour indiquer que la donnée a été recopiée ailleurs mais que le report sur la RAM n’a pas été fait. Cet état est indispensable car l’état "Shared" ne permet pas cette distinction. Ce nouvel état constitue l’évolution apportée au MESI. Ceci permet de rafraîchir la mémoire RAM moins souvent. En fait, on l’évite le plus longtemps possible, tant que la donnée reste présente en mémoire cache. L’état "exclusive" qui n’est pas non plus absolument indispensable permet d’éviter l’émission des requêtes inutiles. En effet, lorsque l’on sait qu’aucun cache ne dispose de la donnée, il est inutile d’émettre une requête malgré tout pour invalider des lignes de cache inexistantes. Or, ces requêtes encombrent inutilement les bus d’interconnexion ce qui nuit aux performances.

Voir aussi

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Protocole MOESI de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Regardez d'autres dictionnaires:

  • MOESI — Protocole MOESI En informatique, le protocole MOESI (Modified, Owned, Exclusive, Shared, Invalid) est un protocole de cohérence de cache utilisé dans les systèmes multiprocesseurs. Sommaire 1 Rappels sur la cohérence 2 MOESI 3 Voir aussi …   Wikipédia en Français

  • Protocole MESI — Le protocole MESI (Modified Exclusive, Shared, Invalid, aussi connu sous le nom d Illinois protocol) est un protocole de cohérence de cache utilisé dans les systèmes multiprocesseur. Chaque ligne du cache est estampillée avec l une des marques… …   Wikipédia en Français

  • Protocole MSI — Le protocole MSI (Modified, Shared, Invalid) est un protocole de cohérence de cache utilisé dans les systèmes multiprocesseur. États Il s applique à des caches fonctionnant en write back dans lesquels chaque ligne possède un des trois états  …   Wikipédia en Français

  • MESI — Protocole MESI Le protocole MESI (Modified Exclusive, Shared, Invalid, aussi connu sous le nom d Illinois protocol) est un protocole de cohérence de cache utilisé dans les systèmes multiprocesseur. Chaque ligne du cache est estampillée avec l une …   Wikipédia en Français

  • Memoire distribuee — Mémoire distribuée En informatique, et dans le cadre de systèmes multiprocesseurs, chaque processeur à sa propre mémoire. Lorsque la mémoire est répartie ou distribuée les processeurs ou les applications de chaque nœuds peuvent utiliser un réseau …   Wikipédia en Français

  • Mémoire Distribuée — En informatique, et dans le cadre de systèmes multiprocesseurs, chaque processeur à sa propre mémoire. Lorsque la mémoire est répartie ou distribuée les processeurs ou les applications de chaque nœuds peuvent utiliser un réseau pour accéder aux… …   Wikipédia en Français

  • Mémoire distribuée — La mémoire distribuée est la mémoire des architectures distribuées, c est à dire la mémoire dite « vive » dans les systèmes informatiques pouvant exécuter en collaboration un programme sur plusieurs machines reliées ensemble par réseau …   Wikipédia en Français

  • Mémoire répartie — Mémoire distribuée En informatique, et dans le cadre de systèmes multiprocesseurs, chaque processeur à sa propre mémoire. Lorsque la mémoire est répartie ou distribuée les processeurs ou les applications de chaque nœuds peuvent utiliser un réseau …   Wikipédia en Français

  • NUMA — Pour les articles homonymes, voir Numa. En informatique, NUMA est l acronyme anglais de Non Uniform Memory Access ou Non Uniform Memory Architecture, signifiant respectivement accès mémoire non uniforme et architecture mémoire non uniforme. Il s… …   Wikipédia en Français

  • Non Uniform Memory Access — Pour les articles homonymes, voir Numa. En informatique, un système NUMA (pour Non Uniform Memory Access ou Non Uniform Memory Architecture, signifiant respectivement accès mémoire non uniforme et architecture mémoire non uniforme) est un système …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”