![]()
Précédent : Compilation pour architectures hautes
performances Remonter : Fondements scientifiques
Suivant : Domaines d'applications
Mots clés : MVP, gestion mémoire .
La gestion des données dans une architecture parallèle à mémoire distribuée (APMD) est rendue complexe par la distribution physique des mémoires. Ce caractère distribué de la mémoire oblige l'utilisateur ou un compilateur ``intelligent'' à distribuer les données de l'algorithme devant s'exécuter en parallèle. Cette distribution des données est une opération complexe qui demande une très bonne connaissance de l'application à paralléliser. Cette distribution explicite peut être évitée grâce à des mécanismes de gestion de données permettant la migration de celles-ci en fonction des calculs effectués par chaque processeur. La mémoire virtuelle partagée (MVP) [Li86] est un exemple de mécanisme de gestion de données. Un tel concept offre un espace d'adressage global pour une architecture parallèle ayant un ensemble d'espaces d'adressage disjoints (APMD). L'implémentation d'un mécanisme de MVP s'appuie sur des mécanismes de gestion mémoire virtuelle au sein ou au dessus d'un système d'exploitation. L'espace d'adressage global est une région de mémoire virtuelle composée de pages migrant à la demande entre les processeurs selon les accès mémoire. Chaque mémoire locale agit comme un large cache, ou mémoire attractive, contenant les pages précédemment accédées. Comme tout dispositif fondé sur l'utilisation de caches, le problème de la cohérence de ces caches se pose.
Le concept de MVP fournit une vision globale de la mémoire
dans laquelle les calculateurs peuvent lire ou écrire. Vis à vis
de l'utilisateur, il offre également un modèle mémoire qui
caractérise le comportement de la mémoire lorsque plusieurs
calculateurs effectuent des accès simultanés. De façon intuitive,
l'utilisateur souhaite que la mémoire fournisse toujours le
dernier résultat qui a été écrit dans la mémoire. Cependant, dans
un système parallèle, la notion de ``dernier accès'' est ambiguë.
Il oblige à définir un ordre total sur tous les accès mémoire, ce
qui n'est pas souvent nécessaire. Le modèle de cohérence
séquentielle est un exemple de modèle mémoire dont les accès sont
consistants avec un ordre total. Un système mémoire possède la
propriété de cohérence séquentielle si tous les processus voient
les accès mémoire comme si ils avaient été exécutés sur un
calculateur séquentiel multiprogrammé. Du point de la vue de la
mise en
uvre d'une MVP, un tel modèle impose de
nombreuses communications (accès aux pages, invalidation, etc.).
Plusieurs travaux ont été réalisés afin de concevoir de nouveaux
modèles mémoire pouvant être implémentés plus efficacement sur
des systèmes parallèles.
Parmi ceux-ci, le modèle de cohérence à la libération
[GLL+90] a été
un des plus étudiés. Le principe de ce modèle mémoire repose sur
le constat que les accès aux données, effectués par un programme
parallèle, sont souvent synchronisés. Le modèle mémoire à
consistance à la libération est fondé sur l'utilisation de deux
classes d'opérations sur la mémoire. La première classe regroupe
les opérations classiques de lecture et d'écriture tandis que la
deuxième classe contient les opérations de synchronisation :
libération et acquisition. Le rôle de ces deux opérations est de
propager les modifications qui ont été réalisées par les
opérations d'écriture. Une opération de libération indique qu'un
processeur a effectué des modifications et que celles-ci doivent
être communiquées à tout processeur qui effectuera une opération
d'acquisition. De même, une opération d'acquisition indique qu'un
processeur va exécuter des opérations qui nécessitent la
connaissance des modifications effectuées par les processeurs
ayant exécuté une opération de libération. Deux formes de
cohérence à la libération ont été proposées [KCZ92]. La première forme est
appelée cohérence à la libération impatiente. Les modifications,
réalisées depuis la dernière opération d'acquisition, sont
propagées à tous les autres processeurs lors de la libération. La
deuxième forme, appelée cohérence à la libération paresseuse,
diffère de la précédente par le moment choisi pour diffuser les
modifications. Plutôt que de le faire à la libération, les
modifications sont propagées lors de l'opération d'acquisition.
Lors de l'acquisition, le processeur détermine quelles sont les
modifications valides dont il a besoin en fonction de la
définition du modèle de cohérence à la libération. Cette approche
permet ainsi de réduire fortement le nombre de messages Une
première mise en
uvre de la cohérence à la
libération paresseuse a été effectuée au sein de la MVP
TreadMarks[KDCZ94]. KOAN
et MYOAN implémentent une autre forme de cohérence permettant la
modification simultanée par de multiples écrivains d'une même
page [[7]].