Brevet FR2733614A1 — publié le 19961031

SYSTEME MULTIPROCESSEUR EN GROUPES ET PROCEDE POUR CONTROLER UNE PHASE D'HORLOGE DE GROUPES Domaine de l'invention La présente invention concerne un système multiprocesseur et un procédé pour garantir la cohérence de mémoires cache ; et concerne, plus particulièrement, un procédé et un système multiprocesseur comportant des groupes, chacun de ceuxci comportant des processeurs et une mémoire partagée. Dans un système multiprocesseur en groupes classique, les processeurs sont divisés en une pluralité d'ensembles appelés "groupes". Chaque groupe comporte au moins un processeur, au moins une mémoire cache, une mémoire partagée et un bus système. Un commutateur crossbar (par exemple, un commutateur crossbar complet) connecte les groupes mutuellement. Dans ce système classique, pour garantir la cohérence des mémoires cache (par exemple, des stockages dans les mémoires cache), une opération de contrôle est exécutée de sorte que le même bloc de mémoire ne soit pas copié simultanément parmi une pluralité de mémoires cache. Cependant, ce système classique présente un problème en ce que la quantité de matériel est augmentée parce que deux groupes sont connectés par le commutateur crossbar. De plus, afin de garantir la cohérence des mémoires cache (par exemple, des stockages dans les mémoires cache), les blocs de mémoire dans la mémoire partagée peuvent être copiés par une seule des mémoires cache à la fois. En conséquence, le taux "d'acceptation" dans les mémoires cache est abaissé et, donc, la performance globale du système multiprocesseur est abaissée. Résumé de l'invention Compte tenu des problèmes précédents du système classique, un objet de la présente invention est de prévoir un système multiprocesseur en groupes et un procédé pour garantir la cohérence des mémoires cache entre une pluralité de groupes. Dans un système multiprocesseur comportant des groupes selon un premier aspect de la présente invention, chacun des groupes comprend au moins un processeur, au moins une mémoire cache et une mémoire partagée. Le système multiprocesseur comprend un contrôleur de synchronisation pour décaler les horloges des groupes les unes par rapport aux autres et un répertoire pour transférer les requêtes et les données parmi les groupes. Avec la structure unique et non évidente de la présente invention, le matériel du système est réduit et le mécanisme de contrôle est simplifié. Ainsi, le taux d'acceptation dans les mémoires cache et la performance globale des multiprocesseurs ou du système sont augmentés par rapport à ceux du système classique. Brève description des dessins Les objets, caractéristiques et avantages mentionnés ci-dessus, et les autres, de la présente invention deviendront plus apparents par voie de référence à la description détaillée suivante de l'invention prise conjointement avec les dessins joints dans lesquels la figure 1 est un schéma fonctionnel montrant la configuration d'un système multiprocesseur en groupes selon un premier mode de réalisation de la présente invention la figure 2 est un schéma fonctionnel montrant la configuration d'une mémoire cache 300 selon le premier mode de réalisation de la présente invention la figure 3 est un schéma fonctionnel montrant la configuration d'un répertoire 100 selon le premier mode de réalisation de la présente invention la figure 4 est un format d'une mémoire 101 de répertoire selon le premier mode de réalisation de la présente invention la figure 5 est un schéma fonctionnel montrant la configuration des contrôleurs de synchronisation 20 et 21 selon le premier mode de réalisation de la présente invention la figure 6 est un diagramme de séquencement des contrôleurs de synchronisation 20 et 21 selon le premier mode de réalisation de la présente invention la figure 7 est un diagramme de séquencement des bus système 40 et 41 selon le premier mode de réalisation de la présente invention la figure 8 est un organigramme montrant une opération pour lire les données attribuées à une mémoire partagée locale dans le système multiprocesseur en groupes selon le premier mode de réalisation de la présente invention la figure 9 est un organigramme montrant une opération pour lire les données attribuées à une mémoire partagée éloignée dans le système multiprocesseur en groupes selon le premier mode de réalisation de la présente invention la figure 10 est un organigramme montrant une opération entière pour écrire les données attribuées à une mémoire partagée locale dans le système multiprocesseur en groupes selon le premier mode de réalisation de la présente invention la figure 11 est un organigramme montrant une opération pour écrire les données attribuées à une mémoire partagée locale dans le système multiprocesseur en groupes selon le premier mode de réalisation de la présente invention, quand les données ne sont pas copiées par l'une quelconque des mémoires cache la figure 12 est un organigramme montrant une opération entière pour écrire les données attribuées à la mémoire partagée éloignée dans le système multiprocesseur en groupes selon le premier mode de réalisation de la présente invention ; et la figure 13 est un organigramme montrant une opération pour écrire les données attribuées à une mémoire partagée éloignée dans le système multiprocesseur en groupes selon le premier mode de réalisation de la présente invention, quand les données ne sont pas copiées par l'une quelconque des mémoires cache. Description détaillée du mode de réalisation préféré Un système multiprocesseur en groupes et un procédé selon un mode de réalisation préféré de la présente invention vont être décrits en détail avec référence aux dessins joints. Se référant à la figure 1, un système multiprocesseur et un procédé selon un premier mode de réalisation de la présente invention comportent une pluralité (par exemple, deux) de groupes 1 et 2. Le groupe 1 comporte au moins un processeur, mais communément une pluralité (par exemple, quatre) de processeurs 10 à 13. Au moins une mémoire cache est prévue dans le groupe. Par exemple, les processeurs 10 à 13 sont respectivement connectés aux mémoires cache 300 à 330. Le groupe 1 comporte un contrôleur de synchronisation 20, une mémoire partagée 30 et un répertoire 100. Un bus système 40, dans le groupe 1, connecte les mémoires cache 300 à 330, le contrôleur 20 de synchronisation, la mémoire partagée 30 et le répertoire 100, les uns aux autres. Le groupe 2 présente la même configuration que le groupe 1, c'est-à-dire, des processeurs 14 à 17, des mémoires cache 340 à 370, un contrôleur de synchronisation 21, une mémoire partagée 31, un répertoire 200 et un bus système 41. Les mémoires partagées 30 et 31 sont accessibles à partir des processeurs 10 à 17 à travers les mémoires cache 300 à 370. Les contrôleurs de synchronisation 20 et 21 contrôlent la synchronisation entre les groupes 1 et 2. Les répertoires 100 et 200 des groupes 1 et 2 stockent respectivement les informations sur les blocs copiés dans les mémoires cache de l'autre groupe. Les contrôleurs de synchronisation 20 et 21 sont connectés l'un à l'autre et les répertoires 100 et 200 sont connectés l'un à l'autre. Se référant à la figure 2, la mémoire cache 300 comporte une mémoire vive (mémoire à accès aléatoire) 301, un contrôleur de mémoire cache 302 et un contrôleur de réessai 303. Le contrôleur de mémoire cache 302 est connecté au processeur 10, à la mémoire vive 301, au contrôleur de réessai 303 et au bus système 40. On retrouve la même configuration dans les autres mémoires cache 310 à 370. Le contrôleur de mémoire cache 302 retourne les données provenant de la mémoire vive 301 vers le processeur, met à jour la mémoire vive 301 et émet une requête de lecture de bloc de mémoire vers le bus système 40 en réponse à une requête de lecture de données ou à une requête d'écriture de données provenant du processeur 10. C'est-à-dire qu'un transfert de données entre la mémoire partagée et la mémoire cache est exécuté par blocs. Le contrôleur de réessai 303 donne l'ordre au contrôleur 302 de mémoire cache de réessayer une requête quand une requête "annule" est émise sur le bus système 40. Le contrôleur de mémoire cache 302 comporte un registre pour stocker les informations relatives au fait que la mémoire cache 300 a émis une requête. Ainsi, le contrôleur de mémoire cache 302 réessaye la requête si le contrôleur de réessai 303 donne l'ordre au contrôleur de mémoire cache 302 de réessayer et le registre dans le contrôleur 302 de mémoire cache indique que la mémoire cache 300 a émis la requête. Chaque bloc des mémoires cache 300 à 370 a, de préférence, un des états exemplaires ci-dessous. Dans cet exemple, les états sont "CE", "CS", "DE" et "IV". L'état "CE" indique "propre exclusif" (c'est-à-dire qu'une seule mémoire cache a une copie du bloc, qui n'est pas modifiée). L'état "CS" indique "propre partagé" (c'est-à-dire que plusieurs mémoires cache peuvent avoir une copie du bloc, qui n'est pas modifiée). L'état "DE" indique "sale exclusif" (c'està-dire qu'une seule mémoire cache a une copie du bloc, qui est modifiée) . L'état "IV" indique "non valide" (c'est-à-dire que le bloc n'est pas enregistré). Se référant à la figure 3, le répertoire 100 comporte une mémoire de répertoire 101, un contrôleur de répertoire 102, un détecteur de coïncidence d'adresses 103 et un générateur de signal d'annulation 104. Le contrôleur de répertoire 102 est connecté au bus système 40, à la mémoire de répertoire 101 et au répertoire 200. Le répertoire 200 présente une configuration similaire. La mémoire de répertoire 101 stocke les adresses de blocs de la mémoire partagée 30, dont l'une quelconque des mémoires cache 340 à 370 a une copie. Le contrôleur de répertoire 102 contrôle la requête de lecture de bloc de mémoire émise sur le bus système 40, met à jour les informations stockées dans la mémoire de répertoire 101 et transfère une requête de lecture de bloc de mémoire vers le répertoire 200. Inversement, en réponse à une requête de lecture de bloc de mémoire transférée à partir du répertoire 200, le contrôleur de répertoire 102 met à jour les informations stockées dans la mémoire de répertoire 101 et émet également la requête de lecture de bloc de mémoire vers le bus système 40. Le détecteur de coïncidence d'adresses 103 détecte si une adresse d'une requête de lecture de bloc de mémoire sur le bus système 40 coïncide avec une adresse d'une autre requête de lecture de mémoire provenant du répertoire 200 et, si c'est le cas, sort un signal de coïncidence d'adresses vers le générateur de signal d'annulation 104. Le générateur de signal d'annulation 104 émet un signal "annule" sur le bus système 40 en réponse à la sortie (par exemple, un signal de coïncidence) envoyée à partir du détecteur 103 de coïncidence d'adresses. Se référant à la figure 4, une mémoire de répertoire 101 comporte une pluralité (par exemple, N, où N est un entier positif) d'entrées. Chaque entrée stocke une adresse de bloc 107, un indicateur 108 modifié et un indicateur 109 valide. L'adresse de bloc 107 indique une adresse d'un bloc qui est attribué à la mémoire partagée 30 et qui est copié dans n'importe laquelle des mémoires cache 340 à 370 dans le groupe 2. L'indicateur 108 modifié indique si le bloc est modifié par l'une quelconque des mémoires cache 340 à 370 dans le groupe 2. Si l'indicateur modifié est positionné à "modifié" (par exemple, "1"), alors l'adresse de bloc de l'entrée a été modifiée. L'indicateur 109 valide indique si l'entrée respective est "valide". Si l'indicateur valide est positionné à "non valide" (par exemple, "0"), alors l'adresse de bloc de l'entrée est non valide. Se référant à la figure 5, le contrôleur 20 de synchronisation comporte un circuit de temporisation 201, un sélecteur 202, une bascule bistable 203, un inverseur 204, une porte ET 205, une porte OU 206, une pluralité de bascules bistables 207 connectées en série, un encodeur 208 et un circuit de vérification de synchronisation 209. Le contrôleur de synchronisation 21 présente une configuration similaire comprenant un circuit de temporisation 211, un sélecteur 212, une bascule bistable 213, un inverseur 214, une porte ET 215, une porte OU 216, des bascules bistables 217 connectées en série, un encodeur 218 et un circuit de vérification de synchronisation 219. Le circuit de temporisation 201 génère un signal retardé de 2,5 horloges. Le sélecteur 202 sélectionne l'un parmi un signal de "MISE A ZERO" et le signal retardé en fonction d'un signal de verrouillage qui y est entré en provenance d'un générateur de signal de verrouillage (non référencé). Dans le contrôleur de synchronisation 20, le signal de verrouillage (par exemple, "0") donne l'ordre au sélecteur 202 de sélectionner le signal de "MISE A ZERO". La bascule bistable 203, l'inverseur 204 et la porte ET 205, en combinaison, fonctionnent comme un circuit différentiel. Chacune des bascules bistables 207 mémorise un signal d'entrée horloge-par-horloge. Ainsi, les bascules bistables 207, en combinaison, fonctionnent comme un compteur. La porte OU 206 exécute une opération logique OU entre une sortie de la porte ET 205 et une sortie de la dernière des bascules bistables 207. L'encodeur 208 code les sorties de chacune des bascules bistables 207. Une sortie de l'encodeur 208 indique une phase du bus système 40 et est fournie au bus système 40 et aux circuits de vérification de synchronisation 209 et 219. Le circuit de vérification de synchronisation 209 compare la sortie (par exemple, la phase) de l'encodeur 208 avec une sortie (par exemple, la phase) de l'encodeur 218. Quand une différence entre les phases des bus système 40 et 41 n'est pas de 2,5 horloges (par exemple, pas une phase de 2,5), le circuit de vérification de synchronisation 209 sort un signal d'erreur. Se référant à la figure 6, une horloge du groupe 1 est décalée d'une demi-horloge par rapport à une horloge du groupe 2. En réponse au signal de MISE A ZERO, la porte ET 205 sort une impulsion d'horloge. Ensuite, chacune des bascules bistables 207 mémorise l'impulsion une-par-une. L'encodeur 208 sort la phase du bus système 40. En réponse au signal de MISE A ZERO, le circuit de temporisation 211 sort un signal retardé de MISE A ZERO de 2,5 horloges (par exemple, une phase de 2,5) . La porte ET 215 sort une impulsion d'horloge. L'encodeur 218 sort la phase du bus système 41. Se référant à la figure 7, une transaction des bus système 40 et 41 comporte cinq phases (c'est-à-dire, "RQ", "AR0", "AD0", "AD1" et "AR1"). Dans la phase "RQ" (requête), le bus système est demandé pour un accès (par exemple, pour accéder à la mémoire partagée) . Dans la phase "AR0" (arbitrage 0), une des mémoires cache pour émettre une requête d'accès (par exemple, une requête de lecture de mémoire) est sélectionnée dans le groupe. Dans la phase "ADO" (adresse 0), la mémoire cache sélectionnée émet la requête d'accès et une adresse supérieure. Dans la phase "AD1" (adresse 1), la mémoire cache sélectionnée émet une adresse inférieure. Dans la phase "AR1" (arbitrage 1), le répertoire détecte s'il existe un conflit entre les groupes 1 et 2. Le répertoire émet une requête d'annulation dans la phase suivante "RQ" si le conflit est détecté dans la phase "AR1". Les bus système 40 et 41 sont contrôlés de sorte que les opérations de synchronisation de ceux-ci soient décalées les unes par rapport aux autres. Dans ce mode de réalisation, les opérations de synchronisation sont décalées d'une phase de 2,5. C'est-à-dire que la phase "RQ" du bus système 40 survient entre les phases "ADO" et "AD1" du bus système 41. Ci-dessous et se référant aux figures 1 à 13, le fonctionnement du système multiprocesseur selon le mode de réalisation mentionné ci-dessus de la présente invention va être décrit. Pour faciliter la discussion, la description suivante suppose que le processeur 10, dans le groupe 1, émet une requête de lecture/écriture de données. Cette description est également applicable quand un des autres processeurs 11 à 17 émet une requête de lecture/écriture de données. Sur les figures 8 à 13, "MEMOIRE CACHE LOCALE" ou "LOCALE" correspond à la mémoire cache 300, "AUTRE MEMOIRE CACHE" ou "AUTRE" correspond aux mémoires cache 310 à 330, "ELOIGNEE" correspond aux mémoires cache 340 à 370, "MEM LOCALE" ou "MEM" correspond à la mémoire partagée 30, "MEM ELOIGNEE" correspond à la mémoire partagée 31, "MDL" indique l'indicateur modifié dans le répertoire 100, "MDR" indique l'indicateur modifié dans le répertoire 200, "VDL" indique l'indicateur valide dans le répertoire 100 et "VDR" indique l'indicateur valide dans le répertoire 200. D'abord, une opération de lecture pour les données attribuées à la mémoire partagée 30 (c'est-à-dire, la mémoire locale) dans le groupe 1 est décrite. Se référant à la figure 8, quand les données sont copiées (c'est-à-dire, un "IMPACT" ( HIT ) dans la mémoire cache 300 (c'est-à-dire, la mémoire cache locale), les données sont lues à partir de la mémoire cache 300 (par exemple, aux étapes 501 et 502) et l'opération se termine. Quand les données ne sont pas copiées (c'est-à- dire, un "RATE") dans la mémoire cache 300, le circuit 302 de contrôle de mémoire cache émet une requête à partir de bus système à la phase "RQ" du bus système 40. Quand le bus système 40 est acquis, le circuit 302 de contrôle de mémoire cache émet une "requête de lecture de bloc partagé" (ci-après appelée une "SBR") aux phases "ADO" et "AD1" du bus système 40. La SBR est une requête de lecture de bloc et est utilisée pour accéder au bloc sans une opération d'écriture. Ciaprès, une opération similaire sera exécutée quand la mémoire cache émet, par la suite, d'autres requêtes vers le bus système. A des fins de brièveté, une description supplémentaire est omise.En réponse à la SBR, les autres mémoires cache 310 à 330, dans le groupe 1, sont vérifiées Quand l'une des mémoires cache 310 à 330 a un état de "DE" à l'étape 503, un bloc comprenant les données demandées est lu à partir de la mémoire cache avec l'état "DE" Quand quelques unes des mémoires cache 310 à 330 ont un état de "CE" ou "CS" à l'étape 503, le bloc comprenant les données demandées est lu à partir de la mémoire partagée 30 Quand aucune des mémoires cache 310 à 330 n'a une copie du bloc comprenant les données demandées, le répertoire 100 vérifie si le bloc est enregistré dans la mémoire locale (par exemple, la mémoire 101 de répertoire) à l'étape 504. Si le bloc n'est pas enregistré dans la mémoire 101 de répertoire à l'étape 504, le bloc est lu à partir de la mémoire partagée 30 Si le bloc est enregistré dans la mémoire 101 de répertoire et que l'indicateur 108 modifié indique que le bloc est "pas modifié" (par exemple, "0") à l'étape 504, le bloc est lu à partir de la mémoire partagée 30 Si le bloc est enregistré dans la mémoire 101 de répertoire et que l'indicateur 108 modifié indique que le bloc est "modifié" (par exemple, "1") à l'étape 504, le bloc est lu à partir de la mémoire cache avec l'état "DE" du groupe 2 Ensuite, une opération de lecture des données attribuées à la mémoire partagée 31 (c'est-à-dire, une mémoire éloignée) dans le groupe 2 est décrite. Se référant à la figure 9, quand les données sont copiées (c'est-à-dire, un "IMPACT") dans la mémoire cache 300 (c'est-à-dire, la mémoire cache locale), les données sont lues de la mémoire cache 300 (aux étapes 601 et 602) et l'opération se termine. Quand les données ne sont pas copiées (c'est-àdire, un "RATE") dans la mémoire cache 300, le circuit 302 de contrôle de mémoire cache émet une requête de bus système à la phase "RQ" du bus système 40. Quand le bus système 40 est acquis, le circuit 302 de contrôle de mémoire cache émet une "SBR" aux phases "ADO" et "AD1" du bus système 40. En réponse à la "SBR", les autres mémoires cache 310 à 330, dans le groupe 1, sont vérifiées Quand l'une des mémoires cache 310 à 330 a un état "DE" à l'étape 603, un bloc comprenant les données demandées est lu à partir de la mémoire cache avec l'état "DE" A l'étape 614, l'indicateur modifié dans le répertoire 200 est positionné à "0". Quand quelques unes des mémoires cache 310 à 330 ont un état "CS" à l'étape 603, le bloc comprenant les données demandées est lu à partir de la mémoire partagée 31 Quand aucune des mémoires cache 310 à 330 n'a une copie du bloc comprenant les données demandées, le répertoire 200 enregistre une adresse du bloc (par exemple, positionne l'indicateur valide du bloc à "1") avec "pas modifié" (par exemple, positionne l'indicateur modifié du bloc à "0") à l'étape 604. Par la suite, les mémoires cache 340 à 370 dans le groupe 2 (par exemple, le groupe éloigné) sont vérifiées Quand l'une des mémoires cache 340 à 370 (par exemple, les mémoires cache éloignées) a un état "DE" à l'étape 605, un bloc comprenant les données demandées est lu à partir de la mémoire cache avec l'état "DE" Quand quelques unes des mémoires cache 340 à 370 ont un état de "CE" ou "CS" à l'étape 605, le bloc comprenant les données demandées est lu à partir de la mémoire partagée (éloignée) 31 Quand aucune des mémoires cache 340 à 370 n'a une copie du bloc comprenant les données demandées, le bloc comprenant les données demandées est lu à partir de la mémoire partagée (éloignée) 31 Troisièmement, une opération d'écriture pour les données attribuées à la mémoire partagée 30 (c'est-àdire, la mémoire locale) dans le groupe 1 est décrite. Se référant à la figure 10, d'abord, l'état de la mémoire cache (locale) 300 est vérifié Quand la mémoire cache 300 a un état de "DE" à l'étape 701, les données sont écrites dans la mémoire cache 300 Quand la mémoire cache 300 a un état de "CE" à l'étape 701, les données sont écrites dans la mémoire cache 300 Quand la mémoire cache 300 a un état de "CS" à l'étape 701, les données sont écrites dans la mémoire cache 300 (ci-après appelée une "INV") vers le bus système 40. L'"INV" est utilisée pour invalider un bloc dans les autres mémoires cache. Explicitement, si quelques unes des autres mémoires cache 310 à 330, dans le groupe 1, ont une copie du bloc avec l'état "CS", alors l'état de la mémoire cache avec l'état "CS" devient "IV" (c'est-à-dire, invalidé) à l'étape 733. Quand l'indicateur modifié indique que le bloc est "pas modifié" (par exemple, "0") dans le répertoire 100, le répertoire 100 invalide l'entrée du bloc (par exemple, positionne l'indicateur valide à "0") à l'étape 734. Le répertoire 100 transfère de plus l'"INV" au répertoire 200. Le répertoire 200 émet l'"INV" vers le bus système 41.Quand quelques unes des mémoires cache 340 à 370, dans le groupe 2, ont une copie du bloc avec "CS", alors l'état de la mémoire cache (mémoires) avec "CS" devient "IV" Quand la mémoire cache 300 n'a pas une copie du bloc comprenant les données demandées à l'étape 701, la mémoire cache 300 émet une "requête de lecture de bloc exclusif" (ci-après appelée une "EBR") aux phases "ADO" et "AD1" du bus système 40. L'EBR est une requête de lecture de bloc et est utilisée pour accéder au bloc avec une opération d'écriture. En réponse à l'"EBR", l'état des mémoires cache 310 à 330, dans le groupe 1, est vérifié Quand l'une des mémoires cache 310 à 330 a un état de "DE" à l'étape 702, le bloc est lu à partir de la mémoire cache avec "DE" Quand quelques unes des mémoires cache 310 à 330 ont un état de "CE" à l'étape 702, le bloc est lu à partir de la mémoire partagée 30 Quand quelques unes des mémoires cache 310 à 330 ont un état "CS" à l'étape 702, le bloc est lu à partir de la mémoire partagée 30 Quand l'indicateur modifié du bloc est enregistré comme "0", le répertoire 100 invalide le bloc (par exemple, positionne l'indicateur valide à "0") Quand aucune des mémoires cache 310 à 330 n'a une copie du bloc à l'étape 702, à l'étape 770 l'opération (SUB~1), décrite plus en détail ci-dessous quant à la figure 11, est exécutée. Se référant à la figure 11, le répertoire 100 vérifie si le bloc est enregistré dans la mémoire 101 de répertoire Si le bloc n'est pas enregistré dans la mémoire 101 de répertoire à l'étape 771, le bloc est lu à partir de la mémoire partagée 30 Par la suite, les données sont écrites dans la mémoire cache 300 Si le bloc est enregistré dans la mémoire 101 de répertoire et que l'indicateur modifié 108 est "pas modifié" (par exemple "0") à l'étape 771, le bloc est lu à partir de la mémoire partagée 30 Le bloc est envoyé à la mémoire cache 300. Par la suite, les données sont écrites dans la mémoire cache 300 Si le bloc est enregistré dans la mémoire 101 de répertoire et que l'indicateur modifié 108 indique que le bloc est "modifié" (par exemple, "1") à l'étape 711, le bloc est lu à partir de la mémoire cache avec l'état "DE" (à l'étape 792). Le bloc est envoyé à la mémoire cache (locale) 300. Par la suite, les données sont écrites dans la mémoire cache 300 Quatrièmement, se référant à la figure 12, une opération d'écriture pour les données attribuées à la mémoire partagée 31 (c'est-à-dire une mémoire éloignée) dans le groupe 2 est décrite. D'abord, l'état de la mémoire cache 300 est vérifié Quand la mémoire cache 300 a un état de "DE" à l'étape 801, les données sont écrites dans la mémoire cache 300 Quand la mémoire cache 300 a un état de "CS" à l'étape 801, les données sont écrites dans la mémoire cache 300 L'indicateur modifié du bloc dans le répertoire 200 (répertoire éloigné) devient l'état "modifié" (par exemple, "1") Quand la mémoire cache 300 n'a pas une copie du bloc comprenant les données demandées à l'étape 801, la mémoire cache 300 émet une "EBR". En réponse à l'"EBR", les états des mémoires cache 310 à 330 dans le groupe 1 sont vérifiés Quand l'une des mémoires cache 310 à 330 a un état de "DE" à l'étape 802, le bloc est lu à partir de la mémoire cache avec l'état "DE" Quand quelques unes des mémoires cache 310 à 330 ont un état de "CS" à l'étape 802, le bloc est lu à partir de la mémoire partagée 31 Quand aucune des mémoires cache 310 à 330 n'a une copie du bloc à l'étape 802, l'indicateur valide dans le répertoire 200 devient "valide" (par exemple, "1") et l'indicateur modifié dans le répertoire 200 devient "modifié" (par exemple, "1") Se référant à la figure 13, les états des mémoires cache 340 à 370 dans le groupe 2 sont vérifiés Si l'une des mémoires cache 340 à 370 a le bloc avec l'état "DE" à l'étape 861, le bloc est lu à partir de la mémoire cache avec l'état "DE" Le bloc est envoyé à la mémoire cache 300 et les données sont écrites dans la mémoire cache 300 Si quelques unes des mémoires cache 340 à 370 ont le bloc avec l'état "CE" ou l'état "CS" à l'étape 861, le bloc est lu à partir de la mémoire partagée 31 (à l'étape 872). Le bloc est envoyé à la mémoire cache 300 et les données sont écrites dans la mémoire cache 300 Si aucune des mémoires cache 340 à 370 n'a une copie du bloc à l'étape 861, le bloc est lu à partir de la mémoire partagée 31 Ensuite, se référant aux figures 1 et 7, l'opération de détection de coïncidence d'adresses et d'annulation dans le système multiprocesseur selon le mode de réalisation mentionné ci-dessus de la présente invention va être décrite. Le répertoire 100 émet une requête vers le bus système 40 en synchronisation avec les phases "ADO" et "AD1" du bus système 40. Si aucune autre requête n'est transférée à partir du répertoire 200, le répertoire 100 n'annule pas la requête. Le répertoire 200 transfère une requête au répertoire 100 en synchronisation avec les phases "AR1" et "RQ" du bus système 41. En supposant que les transferts de requête ont nécessité 1,5 horloges (par exemple, une phase de 1,5), cette requête est reçue par le répertoire 100 en synchronisation avec les phases "AD1" et "AR1" du bus système 40. Simultanément, le répertoire 100 reçoit la requête émise vers le bus système 40 en synchronisation avec les phases "AD1" et "ARl" du bus système 40. En conséquence, le détecteur de coïncidence d'adresses 103 compare une adresse de la requête provenant du bus système 40 avec une adresse de la requête provenant du répertoire 200 en synchronisation avec la phase "AR1" du bus système 40. Quand le détecteur de coïncidence d'adresses 103 détecte la coïncidence, le détecteur de coïncidence d'adresses 103 signale la coïncidence (par exemple, sort un signal de coïncidence) vers le générateur de signal d'annulation 104. Sur réception de la sortie provenant du détecteur de coïncidence d'adresses 103, le générateur de signal d'annulation 104 émet un signal "annule" vers le bus système 40 en synchronisation avec la phase suivante "RQ" du bus système 40. En supposant que la mémoire cache 300 a émis la requête vers le bus système 40, le signal "annule" apparaissant sur le bus système 40 est détecté par le contrôleur de réessai 303. Le contrôleur de réessai 303 donne l'ordre au contrôleur de mémoire cache 302 de réessayer la requête. Le contrôleur de mémoire cache 302 invalide la requête envoyée en premier et émet de nouveau la même requête dans la période de temps suivante et les périodes de temps suivantes du bus système 40. Etant donné que les bus système 40 et 41 sont contrôlés en ayant leurs synchronisations décalées d'une phase de 2,5 (par exemple, 2,5 horloges entre celles-ci) l'une par rapport à l'autre, la requête entre les répertoires 100 et 200 ne passe pas par les lignes 105 et 106 de signal (voir la figure 3) en même temps et, de ce fait, aucun conflit ou retard n'est rencontré. La coïncidence d'adresses est détectée de manière fiable et certaine par le détecteur de coïncidence d'adresses 103. Autrement dit, les synchronisations et les positionnements de la détection de coïncidence d'adresses sont alternativement exécutés dans le groupe 1 et le groupe 2 de sorte que la coïncidence d'adresses est d'abord détectée dans le répertoire 100 en synchronisation avec la phase "AR1" du bus système 40, ensuite la coïncidence d'adresses est en second lieu détectée dans le répertoire 200 en synchronisation avec la phase "AR1" du bus système 41, ensuite la coïncidence d'adresses est en troisième lieu détectée dans le répertoire 100 en synchronisation avec la phase "AR1" du bus système 40, etc. Ainsi, le détecteur de coïncidence d'adresses 103 détecte la coïncidence exclusivement au même moment et il n'y a aucun chevauchement de détection et les erreurs de cohérence sont évitées. En conséquence, un mécanisme matériel spécifique et dédié n'est pas nécessaire, comme dans les systèmes classiques, pour mémoriser les adresses des requêtes émises à partir des deux groupes. Une telle requête qui a été émise vers le bus système 40 et qui sera transférée vers le groupe 2 sera transférée vers le groupe 2 sans que le moindre état d'attente soit nécessaire, à moins que la coïncidence d'adresses soit détectée par le détecteur de coïncidence d'adresses 103. Cette requête est émise sur le bus système 41 aussitôt que le répertoire 2 acquiert le bus système 41. Ainsi, la performance du système est augmentée par rapport aux systèmes classiques. Comme cela est connu de ceux de compétence ordinaire dans l'art prenant la présente application dans son ensemble, le concept sous-jacent de la présente invention est applicable à d'autres agencements dans lesquels un nombre total des processeurs est différent de celui du mode de réalisation décrit ci-dessus et, également, un nombre total des mémoires cache est différent de celui du mode de réalisation ci-dessus. Comme cela est apparent à partir de la description ci-dessus, selon la présente invention, étant donné qu'aucun commutateur crossbar complet n'est nécessaire pour connecter une pluralité (par exemple, deux) de groupes les uns aux autres, le matériel du système est fortement réduit. De plus, une opération de contrôle est exécutée afin que le même bloc de mémoire puisse être partagé entre une pluralité de mémoires cache non seulement à l'intérieur des groupes, mais aussi à l'extérieur des groupes. De là, un partage de blocs intra-groupe et intergroupe se produit. Ainsi, le taux d'acceptation des mémoires cache est augmenté et la performance de tout le système multiprocesseur est considérablement améliorée par rapport à celle des systèmes classiques. De plus, étant donné qu'un mécanisme matériel spécifique et dédié destiné à empêcher le passage de la requête entre les groupes n'est pas nécessaire, le mécanisme de contrôle est simplifié par rapport au système classique. Bien que l'invention ait été décrite en termes d'un mode de réalisation préféré, les hommes de l'art reconnaîtront que l'invention peut être mise en pratique avec des modifications dans l'esprit et l'étendue des revendications jointes. Par exemple, bien que la phase de 2,5 horloges entre les premier et second bus système ait été décrite ci-dessus, la phase peut être n'importe quelle phase prédéterminée tant que les exigences et les contraintes du concepteur sont satisfaites. REVENDICATIONS 1. Système multiprocesseur comportant une pluralité de groupes, chacun desdits groupes comprenant au moins un processeur (10), au moins une mémoire cache (300) et une mémoire partagée (30), caractérisé en ce que ledit système multiprocesseur comprend un contrôleur (20) de synchronisation pour décaler les horloges des groupes de ladite pluralité de groupes les unes par rapport aux autres ; et un répertoire (100) pour transférer une requête et des données parmi lesdits groupes de ladite pluralité de groupes. 2. Système multiprocesseur selon la revendication 1, caractérisé en ce que ladite mémoire partagée (30) comprend des blocs et dans lequel ledit répertoire (100) gère un état desdits blocs de ladite mémoire partagée (30). 3. Système multiprocesseur selon la revendication 1, caractérisé en ce que ledit répertoire (100) comprend des moyens destinés à détecter une coïncidence d'adresses d'une première requête dans un premier groupe (1) avec une seconde requête sortie par un second groupe (2) alternativement parmi lesdits groupes de ladite pluralité de groupes. 4. Système multiprocesseur comportant une pluralité de groupes, caractérisé en ce que chacun desdits groupes comprend au moins un processeur (10) au moins une mémoire cache (300) connectée audit au moins un processeur (10) ; une mémoire partagée (30) couplée à ladite au moins une mémoire cache (300) ; un premier bus système (40) pour connecter ladite au moins une mémoire cache (300) et ladite mémoire partagée (30) ; et un contrôleur de synchronisation (20) pour décaler une horloge dudit premier bus système (40) par rapport à une horloge d'un second bus système (41) dans un second groupe (2) de ladite pluralité de groupes. 5. Système multiprocesseur selon la revendication 4, caractérisé en ce que ledit contrôleur de synchronisation (20) comprend un circuit de temporisation (201) pour retarder un signal associé audit premier bus système (40) pour produire un signal retardé ; et un sélecteur pour sélectionner l'un parmi le signal associé audit premier bus système (40) et le signal retardé provenant dudit circuit de temporisation (201). 6. Système multiprocesseur selon la revendication 4, caractérisé en ce que ledit contrôleur de synchronisation (20) comprend un compteur pour compter une horloge dudit premier bus système (40). 7. Système multiprocesseur selon la revendication 4, caractérisé en ce que ledit contrôleur de synchronisation (20) comprend un circuit de vérification de synchronisation (209) pour vérifier si ladite horloge dudit premier bus système (40) est décalée par rapport à ladite horloge dudit second bus système (41) dans ledit second groupe (2) 8. Système multiprocesseur selon la revendication 4, caractérisé en ce que chacun desdits groupes comprend de plus un répertoire (100) pour transférer des requêtes et des données parmi d'autres groupes de ladite pluralité de groupes. 9. Système multiprocesseur selon la revendication 8, caractérisé en ce que ledit répertoire (100) comprend une mémoire (101) de répertoire pour stocker les adresses des blocs de ladite mémoire partagée (30), lesdits blocs étant copiés par n'importe quelles mémoires cache dans d'autres groupes de ladite pluralité de groupes. 10. Système multiprocesseur selon la revendication 9, caractérisé en ce que ladite mémoire (101) de répertoire stocke un premier indicateur indiquant si un bloc correspondant est modifié par l'une quelconque desdites mémoires cache dans lesdits autres groupes de ladite pluralité de groupes. 11. Système multiprocesseur selon la revendication 9, caractérisé en ce que ledit répertoire (100) comprend de plus un contrôleur de répertoire (102) pour transférer une requête entre ledit premier bus système (40) et un second groupe (2) de ladite pluralité de groupes et pour mettre à jour ladite mémoire (101) de répertoire. 12. Système multiprocesseur selon la revendication 8, caractérisé en ce que ledit répertoire (100) comprend un détecteur de coïncidence d'adresses (103) pour détecter si une première adresse d'une première requête sur ledit bus système coïncide avec une seconde adresse d'une seconde requête provenant d'un second groupe (2). 13. Système multiprocesseur selon la revendication 12, caractérisé en ce que ledit détecteur de coïncidence d'adresses (103) dudit premier groupe (1) détecte une coïncidence à la fois, sans aucun chevauchement avec un détecteur de coïncidence d'adresses (103) dudit second groupe (2). 14. Système multiprocesseur selon la revendication 12, caractérisé en ce que ledit répertoire (100) comprend de plus un générateur de signal d'annulation (104) pour générer un signal d'annulation quand ledit détecteur (103) de coïncidence d'adresses détecte la coïncidence. 15. Système multiprocesseur selon la revendication 14, caractérisé en ce que chacune desdites mémoires cache comprend un contrôleur de réessai (303) pour annuler ladite première requête et émettre une requête de réessai quand ledit générateur de signal d'annulation (104) génère le signal d'annulation. 16. Système multiprocesseur selon la revendication 8, caractérisé en ce que ledit contrôleur de synchronisation (20) comprend un circuit de temporisation (201) pour retarder un signal associé audit premier bus système (40) pour produire un signal retardé ; et un sélecteur pour sélectionner l'un parmi le signal et le signal retardé provenant dudit circuit de temporisation (201). 17. Système multiprocesseur selon la revendication 8, caractérisé en ce que ledit contrôleur de synchronisation (20) comprend un compteur pour compter une horloge dudit premier bus système (40). 18. Système multiprocesseur selon la revendication 8, caractérisé en ce que ledit contrôleur de synchronisation (20) comprend un circuit de vérification de synchronisation (209) pour juger si ladite horloge dudit premier bus système (40) est décalée par rapport à ladite horloge dudit second bus système (41) dans un second groupe (2) de ladite pluralité de groupes. 19. Procédé de contrôle d'un système multiprocesseur comportant une pluralité de groupes, chacun desdits groupes comprenant au moins un processeur (10), au moins une mémoire cache (300) couplée audit au moins un processeur (10) et une mémoire partagée (30), caractérisé en ce que ledit procédé comprend les étapes consistant à décaler une horloge des groupes de ladite pluralité de groupes les uns par rapport aux autres ; et détecter si une première adresse d'une première requête provenant d'un premier groupe (1) coïncide avec une seconde adresse d'une seconde requête provenant d'un second groupe (2). 20. Procédé de contrôle du système multiprocesseur selon la revendication 19, caractérisé en ce que ledit procédé comprend de plus les étapes consistant à annuler ladite première requête ; et réémettre ladite première requête quand la coïncidence est détectée dans ladite étape de détection. 21. Système multiprocesseur selon la revendication 1, caractérisé en ce que ledit contrôleur de synchronisation (20) décale une horloge d'un premier groupe (1) pour avoir une phase prédéterminée par rapport à une horloge d'un second groupe (2). 22. Système multiprocesseur selon la revendication 4, caractérisé en ce que ledit contrôleur de synchronisation (20) décale ladite horloge dudit premier groupe (1) pour avoir une phase prédéterminée par rapport à ladite horloge dudit second groupe (2). 23. Procédé de contrôle du système multiprocesseur selon la revendication 19, caractérisé en ce que dans ladite étape de décalage, une horloge dudit premier groupe (1) est décalée pour avoir une phase prédéterminée par rapport à une horloge dudit second groupe (2).