FR2733614A1 - Systeme multiprocesseur en groupes et procede pour controler une phase d'horloge de groupes - Google Patents

Systeme multiprocesseur en groupes et procede pour controler une phase d'horloge de groupes Download PDF

Info

Publication number
FR2733614A1
FR2733614A1 FR9605305A FR9605305A FR2733614A1 FR 2733614 A1 FR2733614 A1 FR 2733614A1 FR 9605305 A FR9605305 A FR 9605305A FR 9605305 A FR9605305 A FR 9605305A FR 2733614 A1 FR2733614 A1 FR 2733614A1
Authority
FR
France
Prior art keywords
groups
cache
directory
group
multiprocessor system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9605305A
Other languages
English (en)
Other versions
FR2733614B1 (fr
Inventor
Koichi Horikawa
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of FR2733614A1 publication Critical patent/FR2733614A1/fr
Application granted granted Critical
Publication of FR2733614B1 publication Critical patent/FR2733614B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Dans un système et un procédé multiprocesseur en groupes, un premier et un second groupes (1, 2) sont connectés entre un premier et un second répertoires (100, 200). Le premier répertoire (100) vérifie si une adresse d'une requête sur un premier bus système (40) coïncide avec une adresse d'une requête provenant du second répertoire (200). Quand le premier répertoire (100) détecte la coïncidence, le premier répertoire (100) annule la requête sur le premier bus système (40) et réémet la requête. Etant donné que le premier bus système (40) et un second bus système (41) ont une phase d'horloge différente, les requêtes sont vérifiées sans chevauchement.

Description

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 < à l'étape 503).
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" < à l'étape 511). L'état de la mémoire cache 300 et de la mémoire cache avec l'état "DE" devient "CS" < à l'étape 512). Le bloc est envoyé à la mémoire cache 300 et à la mémoire partagée 30 < à l'étape 513).
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 < à l'étape 521). Le bloc est envoyé à la mémoire cache 300. L'état de la mémoire cache 300 et de la mémoire cache avec l'état "CE" devient "CS" < à l'étape 522).
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 < à l'étape 531) . Ensuite, le bloc est enregistré dans la mémoire cache 300 avec l'état "CE" < à l'étape 532).
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
< à l'étape 541). Le bloc est enregistré dans la mémoire cache 300 avec l'état "CS" < à l'étape 542).
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 < à l'étape 551). Le bloc est enregistré dans la mémoire cache 300 avec l'état "CS"
< à l'étape 552). L'état de la mémoire cache avec l'état "DE" devient "CS" < à l'étape 552). Le bloc est envoyé à la mémoire partagée 30 (à l'étape 553). L'indicateur modifié du bloc dans le répertoire 100 devient "pas modifié" (par exemple, "0") à l'étape 554.
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 < à l'étape 603).
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" < à l'étape 611). L'état de la mémoire cache 300 et de la mémoire cache avec l'état "DE" devient "CS" < à l'étape 612). Le bloc est envoyé à la mémoire cache 300 et à la mémoire partagée 31 < à l'étape 613).
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 < à l'étape 621) et est envoyé à la mémoire cache 300. L'état de la mémoire cache 300 devient "CS" < à l'étape 622).
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 < à l'étape 605).
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"
< à l'étape 631). L'état de la mémoire cache 300 et de la mémoire cache avec l'état "DE" devient "CS" < à l'étape 632). Le bloc est envoyé à la mémoire cache 300 et à la mémoire partagée 31 < à l'étape 633).
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 < à l'étape 641). Le bloc est envoyé à la mémoire cache 300. L'état de la mémoire cache 300 et de la mémoire cache avec l'état "CE" devient "CS" < à l'étape 642).
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 < à l'étape 651) et est enregistré dans la mémoire cache 300 avec l'état "CS"
< à l'étape 652).
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é < à l'étape 701).
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 < à l'étape 712).
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 < à l'étape 722). Par la suite, l'état de la mémoire cache 300 devient "DE" < à l'étape 723).
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 < à l'étape 732). L'état de la mémoire cache 300 devient "DE" < à l'étape 733). La mémoire cache 300 émet une " requête d'invalidation de bloc de mémoire"
(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" < à l'étape 733)-
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é < à l'étape 702).
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" < à l'étape 741). Le bloc est envoyé à la mémoire cache 300. Par la suite, les données sont écrites dans la mémoire cache 300 < à l'étape 742). A l'étape 743, l'état de la mémoire cache 300 devient "DE" et l'état de la mémoire cache avec "DE" devient "IV".
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 < à l'étape 751). Le bloc est envoyé à la mémoire cache 300. Par la suite, les données sont écrites dans la mémoire cache 300 < à l'étape 752). A l'étape 753, l'état de la mémoire cache (locale) 300 devient "DE" et l'état de la mémoire cache avec l'état "CE" devient "IV".
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 < à l'étape 761) Le bloc est envoyé à la mémoire cache 300. Par la suite, les données sont écrites dans la mémoire cache 300 < à l'étape 762). A l'étape 763, l'état de la mémoire cache 300 devient "DE" et l'état de la mémoire cache avec l'état "CS" devient "IV". Le répertoire 100 récupère la mémoire 101 de répertoire.
Quand l'indicateur modifié du bloc est enregistré comme "0", le répertoire 100 invalide le bloc (par exemple, positionne l'indicateur valide à "0") < à l'étape 764). Ensuite, le répertoire 100 transfère 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, du groupe 2, ont une copie du bloc avec l'état "CS", l'état de la mémoire cache avec l'état "CS" devient "IV" < à l'étape 763).
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 < à l'étape 771).
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 < à l'étape 772). Le bloc est envoyé à la mémoire cache 300.
Par la suite, les données sont écrites dans la mémoire cache 300 < à l'étape 773). Le bloc est enregistré dans la mémoire cache 300 avec l'état de "DE" < à l'étape 774).
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 < à l'étape 782).
Le bloc est envoyé à la mémoire cache 300.
Par la suite, les données sont écrites dans la mémoire cache 300 < à l'étape 783). Le bloc est enregistré dans la mémoire cache 300 avec l'état de "DE" < à l'étape 784). Quand quelques unes des mémoires cache 340 à 370, du groupe 2, ont une copie du bloc avec l'état "CS", l'état du bloc avec l'état "CS" devient "IV" < à l'étape 784). Le répertoire 100 invalide le bloc (par exemple, positionne l'indicateur valide à "0") à l'étape 785.
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 < à l'étape 793). A l'étape 794, le bloc est enregistré dans la mémoire cache 300 avec l'état de "DE" et l'état du bloc avec l'état "DE" devient "IV". Le répertoire 100 invalide le bloc (par exemple, positionne l'indicateur valide à "0") à l'étape 795.
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é
< à l'étape 801).
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 < à l'étape 812) et l'opération est achevée.
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'étape 822). A l'étape 823, l'état de la mémoire cache 300 devient "DE" et si quelques unes des mémoires cache 310 à 370 ont un bloc avec l'état "CS", alors l'état du bloc avec l'état "CS" devient "IV".
L'indicateur modifié du bloc dans le répertoire 200
(répertoire éloigné) devient l'état "modifié" (par exemple, "1") < à l'étape 824).
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 < à l'étape 802).
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" < à l'étape 831) et est envoyé à la mémoire cache 300. Par la suite, les données sont écrites dans la mémoire cache 300 (à l'étape 832). Enfin, à l'étape 833, l'état de la mémoire cache 300 devient "DE" et l'état de la mémoire cache avec l'état "DE" devient "IV".
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 < à l'étape 841). Le bloc est envoyé vers la mémoire cache 300 et les données sont écrites dans la mémoire cache 300 < à l'étape 842). A l'étape 843, l'état de la mémoire cache 300 devient "DE" et l'état de la mémoire cache avec l'état "CS" devient "IV". Enfin, l'indicateur modifié du bloc dans le répertoire 200 devient "modifié" (par exemple, "1") < à l'étape 844).
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") < à l'étape 850) . Ensuite, l'opération (SUB~2), définie sur la figure 13, est exécutée < à l'étape 860).
Se référant à la figure 13, les états des mémoires cache 340 à 370 dans le groupe 2 sont vérifiés < à l'étape 861).
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" < à l'étape 862).
Le bloc est envoyé à la mémoire cache 300 et les données sont écrites dans la mémoire cache 300 < à l'étape 863). Le bloc est enregistré dans la mémoire cache 300 avec l'état de "DE" < à l'étape 864). L'état du bloc avec l'état "DE" devient "IV" (à l'étape 864).
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
< à l'étape 873). A l'étape 874, le bloc est enregistré dans la mémoire cache 300 avec l'état de "DE" et l'état du bloc avec "CE" ou "CS" devient "IV".
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 < à l'étape 882). Le bloc est envoyé à la mémoire cache 300. Par la suite, les données sont écrites dans la mémoire cache 300 < à l'étape 883). Le bloc est enregistré dans la mémoire cache 300 avec l'état de "DE" (à l'étape 884).
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.

Claims (23)

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).
FR9605305A 1995-04-26 1996-04-26 Systeme multiprocesseur en groupes et procede pour controler une phase d'horloge de groupes Expired - Fee Related FR2733614B1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7102532A JP2786124B2 (ja) 1995-04-26 1995-04-26 共有メモリ型マルチプロセッサシステム

Publications (2)

Publication Number Publication Date
FR2733614A1 true FR2733614A1 (fr) 1996-10-31
FR2733614B1 FR2733614B1 (fr) 1998-06-12

Family

ID=14329912

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9605305A Expired - Fee Related FR2733614B1 (fr) 1995-04-26 1996-04-26 Systeme multiprocesseur en groupes et procede pour controler une phase d'horloge de groupes

Country Status (2)

Country Link
JP (1) JP2786124B2 (fr)
FR (1) FR2733614B1 (fr)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3288261B2 (ja) 1997-06-19 2002-06-04 甲府日本電気株式会社 キャッシュシステム
US6269428B1 (en) * 1999-02-26 2001-07-31 International Business Machines Corporation Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system
JP2001167077A (ja) 1999-12-09 2001-06-22 Nec Kofu Ltd ネットワークシステムにおけるデータアクセス方法、ネットワークシステムおよび記録媒体
US6799217B2 (en) * 2001-06-04 2004-09-28 Fujitsu Limited Shared memory multiprocessor expansion port for multi-node systems
JP6428521B2 (ja) * 2015-07-23 2018-11-28 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0603801A2 (fr) * 1992-12-23 1994-06-29 Bull HN Information Systems Inc. Mémoire partagée géneralisée dans une architecture en grappes pour un système d'ordinateur

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05100952A (ja) * 1991-10-07 1993-04-23 Fuji Xerox Co Ltd データ処理装置
EP0553743A1 (fr) * 1992-01-31 1993-08-04 Motorola, Inc. Contrôleur d'antémémoire

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0603801A2 (fr) * 1992-12-23 1994-06-29 Bull HN Information Systems Inc. Mémoire partagée géneralisée dans une architecture en grappes pour un système d'ordinateur

Also Published As

Publication number Publication date
FR2733614B1 (fr) 1998-06-12
JP2786124B2 (ja) 1998-08-13
JPH08297642A (ja) 1996-11-12

Similar Documents

Publication Publication Date Title
US7149759B2 (en) Method and system for detecting conflicts in replicated data in a database network
US5627961A (en) Distributed data processing system
FR2677472A1 (fr) Unite de controle pour memoire cache de second niveau.
JP3502216B2 (ja) 情報処理装置
US6014756A (en) High availability error self-recovering shared cache for multiprocessor systems
US5032985A (en) Multiprocessor system with memory fetch buffer invoked during cross-interrogation
EP0063071B1 (fr) Procédé et dispositif de transmission de données numériques
FR2720531A1 (fr) Commande de verrouillage pour système de traitement de données.
FR2481487A1 (fr) Systeme de traitement de l&#39;information utilisant des techniques de regeneration et de detection et correction d&#39;erreurs
FR2602353A1 (fr) Repertoire et controle de cache
EP0385836B1 (fr) Procédé pour remplacer des modules mémoire dans un système informatique et système informatique pour la mise en oeuvre du procédé
NO172267B (no) Hurtigbuffer samt multiprosesseringssystem
FR2925191A1 (fr) Architecture de traitement numerique a haute integrite a multiples ressources supervisees
FR2733614A1 (fr) Systeme multiprocesseur en groupes et procede pour controler une phase d&#39;horloge de groupes
FR2764097A1 (fr) Detection de points chauds dans une machine avec memoire a acces non uniforme
JPS6044707B2 (ja) バツフアメモリ制御回路の障害検出方式
RU2181906C2 (ru) Способ и устройство для определения состояния совместно используемого ресурса
EP0297131B1 (fr) Méthodes et dispositifs pour vérifier l&#39;intégrité d&#39;une adresse mémoire sujette à incrémentation
FR2644260A1 (fr) Dispositif de commande d&#39;acces en memoire pouvant proceder a une commande simple
FR2792742A1 (fr) Systeme multiprocesseur a memoire partagee repartie comportant une fonction d&#39;enfichage a chaud pour des memoires principales
FR2590699A1 (fr) Systeme assurant la coherence pour les contenus d&#39;une antememoire
JP2000215182A (ja) クラスタ型並列計算機システムおよびプロセッサ間バリア同期方法
US5860108A (en) Method and clustered multi-processor system for controlling a clock phase for clusters
FR2602601A1 (fr) Systeme d&#39;initialisation de memoires
FR2741974A1 (fr) Procede et appareil pour corriger une erreur dans le champ de commande d&#39;une memoire cache

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20101230