Qu'est-ce que la cohérence du cache?
La cohérence du cache est le problème naturel qui se pose lorsque de multiples agents accèdent au jeu de données d'un système et le modifient. Les ordinateurs multiprocesseurs sont le principal domaine d’architecture de l’ordinateur où cela devient un problème. Chaque processeur d'un ordinateur multiprocesseur possède son propre cache qui charge et stocke des informations à partir de la mémoire vive (RAM). Lorsque deux processeurs accèdent à la même zone de mémoire, la cohérence du cache est perdue si certaines précautions ne sont pas prises.
Sans cohérence de cache, un système multiprocesseur serait incapable de fonctionner. Plusieurs méthodes ont été développées pour résoudre ce problème et éviter des problèmes potentiels. La cohérence basée sur les répertoires, le snooping et le snarfing sont trois méthodes utilisées pour éviter la perte de cohérence du cache.
La cohérence basée sur les répertoires fonctionne comme un filtre afin d'assurer la cohérence. Les données sont placées dans une partie de la mémoire accessible à tous les processeurs. Lorsque les informations stockées dans cette zone de mémoire sont modifiées, le système met à jour les caches ou les invalide.
La surveillance nécessite que le processeur surveille tous les accès aux emplacements de mémoire mis en cache. Cela permet au processeur de savoir quand une opération d'écriture a eu lieu. En sachant à quel moment une opération d'écriture a lieu, le processeur peut mettre à jour son cache.
Snarfing est assez similaire à snooping. Snarfing implique non seulement la surveillance des accès aux emplacements de mémoire mis en cache, mais également la surveillance des informations stockées dans la mémoire. Lorsqu'une écriture en mémoire se produit, le cache peut être mis à jour avec les nouvelles informations.
Les systèmes de cohérence basés sur des répertoires ont une latence relativement élevée, ce qui ralentit le traitement. Des exigences de bande passante plus faibles permettent aux systèmes de cohérence basés sur des répertoires d'être pratiques dans les applications à grande échelle de la cohérence de cache. Plus un système utilise de processeurs, plus il peut tirer parti des avantages d'un système de cohérence basé sur des répertoires.
Snooping est une méthode beaucoup plus rapide. Cette méthode nécessite plus de bande passante que l'approche basée sur les répertoires. Cette méthode peut être utilisée efficacement dans les systèmes comportant relativement peu de processeurs.
Le snarfing n'est généralement pas utilisé pour maintenir la cohérence du cache. Cela est principalement dû au fait que l'utilisation de snarfing nécessite davantage de ressources que les méthodes à la fois snooping et basées sur les répertoires. Pour qu'un système de surveillance fonctionne, il doit garder une trace des adresses de la mémoire et des données stockées dans ces zones de mémoire. La quantité de bande passante et le traitement utilisés par cette méthode la rendent indésirable pour la plupart des applications de maintien de la cohérence du cache.