Les protocoles matériels de cohérence de caches mis en oeuvre avec une technique <<d'espionnage de bus>> sont très utilisés dans les systèmes multiprocesseurs à mémoire partagée, car ils utilisent une connexion physique préexistante : le bus vers la mémoire. Chaque contrôleur de cache espionne la transaction sur le bus et compare l'adresse du transfert en cours sur le bus commun avec le contenu de son, ou de ses caches. Si l'un des caches du microprocesseur possède une copie de la donnée transférée, une action est nécessaire (mise à jour de la donnée, changement de son état).
En cas de présence de la donnée lue par le microprocesseur P1, en statut modifié dans le cache du microprocesseur P2, deux solutions sont possibles : fourniture directe de la donnée par P2 à P1 ou utilisation du mécanisme appelé Bus Retry (reprise des transferts avortés). En cas de reprise des transferts, la transaction du microprocesseur P1 est abandonnée, le microprocesseur P2 écrit la donnée en mémoire, et P1 essaye à nouveau d'accéder à la mémoire. Ce mécanisme possède l'avantage d'être simple à mettre en oeuvre mais reste assez coûteux en temps.
Contrairement au MIPS R8000, le contrôleur de cache secondaire du MIPS R10000 est intégré sur le circuit. Il est chargé de l'interface entre le microprocesseur, la mémoire principale et le reste du système. Il doit notamment assurer l'interface avec le reste du système (chargement des données à partir de la mémoire principale ou mise à jour de la mémoire à partir du cache secondaire, transaction de cohérence avec les autres microprocesseurs), mais il doit également assurer la gestion de la cohérence des deux niveaux de caches par maintien de la propriété d'inclusion et la cohérence du cache secondaire externe avec les autres caches du système.
Le MIPS R10000 intègre de plus un mécanisme permettant de dupliquer en externe une copie du cache d'étiquettes de second niveau. Ceci permet de réduire la demande sur le cache secondaire. Ainsi, seules les transactions de cohérence nécessitant une action sont vues par le microprocesseur.
Le protocole de cohérence de caches employé par le MIPS R10000 est le protocole à invalidation en écriture nommé MESI (dont le diagramme des transitions est donné à la figure ). Chaque ligne du cache peut être dans l'un des quatre états : Exclusive, Shared, Modified et Invalid. Ce protocole, déjà utilisé par le MIPS R8000, est le plus utilisé par les systèmes utilisant des caches à politique d'écriture de type write-back. Lorsqu'un microprocesseur modifie une donnée, tous les caches possédant une copie de cette donnée invalident la ligne qui la contient.
La propriété d'inclusion entre les caches primaires et le cache secondaire est maintenue par l'UltraSPARC, le contrôleur système est responsable du maintien de la cohérence du cache externe avec l'ensemble du système. Pour cela, l'UltraSPARC permet d'implémenter un protocole de cohérence de caches appelé MOESI et représenté figure . Chaque ligne du cache peut être dans l'un des cinq états du protocole. Ces cinq états sont codés sur 3 bits dans la mémoire des étiquettes du cache externe.
L'UltraSPARC peut être utilisé dans un système qui garde une copie du cache externe d'étiquettes où les cinq états du protocole ne sont pas maintenus et implémentant un protocole à seulement 2, 3 ou 4 états. Les protocoles de cohérence de caches MSI et MOSI peuvent ainsi être utilisés.
Le PentiumPro implémente sur son cache secondaire le même protocole de cohérence de cache que le MIPS R10000, à savoir, le protocole à invalidation en écriture reposant sur l'espionnage de bus appelé MESI et présenté à la figure . À noter que le PentiumPro met en oeuvre une cohérence matérielle entre son cache d'instructions et les caches de données, alors que sur le MIPS R10000 au l'UltraSPARC les amateurs de Self Modifying Code (code écrivant dans les instructions) le font à leurs risques et péril.