Le bus commun est le moyen le plus naturel pour passer d'une architecture mono à une architecture multiprocesseur : on « greffe » sur le bus mémoire d'autres processeurs. La présence de caches conduit au problème de la cohérence des données et la mise en place d'une logique de type espion de bus permet de coordonner l'évolution simultanée des données dans tous les caches. Le bus commun apparaît alors comme une sorte de place publique où chacun dit aux autres ce qu'il veut faire, à tour de rôle. Mais la taille de la place est limitée et dès que le nombre de processeurs dépasse un certain seuil, un temps d'attente de plus en plus important apparaît avant de pouvoir prendre la parole. La fréquence des demandes d'un processeur d'accès au bus commun dépend de sa fréquence d'horloge, des caractéristiques de sa hiérarchie de caches et dans une certaine mesure de la nature des applications traitées.
[...] Le cache contient des blocs qui proviennent soit de la mémoire du nœud, soit de la mémoire des autres nœuds. Les mémoires des nœuds sont vues comme un mémoire unique, c'est-à-dire que chaque nœud possède une tranche de cette mémoire. Les forts poids de l'adresse identifient cette tranche de mémoire et donc le nœud qui la possède : l'adressage d'un nœud est implicite. Lorsqu'un processeur fait une référence mémoire qui provoque un défaut cache, la logique de gestion soit fournit le bloc depuis la mémoire locale, soit envoie un message dans le réseau à destination du nœud qui possède le bloc pour le demander, bloc qui est retourné via un autre message. [...]
[...] Si le bloc est diffusé en écriture (bit n+1 = alors un message est envoyé au processeur k (rang du bit à 1 dans le VP) qui possède la seule copie à jour de ce bloc. Une copie du bloc est retournée à la logique de gestion du processeur qui la donne au cache local et met la mémoire à jour. Dans le répertoire, l'état du bloc devient diffusé en lecture (bit et les bits i et k sont mis à un. L'état du bloc dans les caches des processeurs i et k est marqué S (passe de M à S pour et de I à S pour i). [...]
[...] Mais pour aller au delà il faut utiliser un autre réseau d'interconnexion que le bus commun COHERENCE DES CACHES DANS LE CAS GENERAL. Avec un réseau autre que le bus commun, il n'est plus possible d'envisager une solution de type espion de bus. Sachant que le point de départ d'un bloc de données est la mémoire, il semble naturel de suivre l'état des blocs depuis la mémoire. Le réseau d'interconnexion va alors voir son trafic augmenter : en plus des transferts des blocs de données, on va voir transiter des messages de cohérence. [...]
[...] Cas mémoire distante (de processeur d'adresse j). Les mêmes opérations que dans le cas précédent sont réalisées, mais en considérant le répertoire de la mémoire distante j et le cache du processeur i. Cas de l'écriture. Hit : Si l'état local du bloc est dans l'état l'écriture se fait sans autre action. Si le bloc est dans l'état alors une action est requise de la part de la logique de gestion. Si le bloc est local, alors une requête d'invalidation est envoyée à tous les processeurs qui possèdent une copie du bloc. [...]
[...] Dans ce dernier cas, comme le bloc ne peut être présent que dans un seul cache, un seul bit doit être à un dans ce vecteur de présence VP, bit qui identifie le processeur qui possède le bloc. Les diverses situations et leurs conséquences sont les suivantes : Cas de la lecture. Hit : la donnée est lue dans le cache, suite à une demande de lecture processeur PrRd. Cette opération se fait localement : pas de modification de l'état du bloc dans le cache, pas d'accès à la logique de gestion. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture