FR2626692A1 - Multiprocessor parallel architecture - Google Patents

Multiprocessor parallel architecture Download PDF

Info

Publication number
FR2626692A1
FR2626692A1 FR8801467A FR8801467A FR2626692A1 FR 2626692 A1 FR2626692 A1 FR 2626692A1 FR 8801467 A FR8801467 A FR 8801467A FR 8801467 A FR8801467 A FR 8801467A FR 2626692 A1 FR2626692 A1 FR 2626692A1
Authority
FR
France
Prior art keywords
cache
memory
processor
data
main memory
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
FR8801467A
Other languages
French (fr)
Other versions
FR2626692B1 (en
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to FR8801467A priority Critical patent/FR2626692B1/en
Publication of FR2626692A1 publication Critical patent/FR2626692A1/en
Application granted granted Critical
Publication of FR2626692B1 publication Critical patent/FR2626692B1/en
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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration

Landscapes

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

Abstract

The present invention relates to a multiprocessor parallel architecture comprising elementary modules each of which comprises a processor P and a cache memory MC able to communicate with each other and, by means of a main bus BP, with other modules or with a main memory MP. This architecture comprises, in addition to its access to its processor and the main bus, access making it possible to transfer, in parallel, rows or parts of rows into a register associated with this cache, and further comprises a sequential-type bus BS making it possible to make the said registers communicate with each other and with the main memory.

Description

ARCHITECTURE PARALLÈLE MULTIPROCESSEUR
La présente invention concerne une architecture d'ordinateur comprenant plusieurs processeurs en parallèle.
MULTIPROCESSOR PARALLEL ARCHITECTURE
The present invention relates to a computer architecture comprising several processors in parallel.

Une architecture typique multiprocesseur de l'art antérieur est illustrée en figure I. A chaque processeur P sont assoclés localement (sur une même carte) une mémoire cache MC et un commutateur S permettant d'établir une communication entre le processeur et la mémoire cache, le processeur et un bus principal BP, ou la mémoire cache et ce bus principal BP. Le bus principal est connecté à plusieurs cartes comprenant de tels ensembles processeurs-mémoire cache et à une mémoire principale MP ainsi qu'à divers systemes de gestion non représentés. A typical multiprocessor architecture of the prior art is illustrated in FIG. I. To each processor P are locally associated (on the same card) a cache memory MC and a switch S making it possible to establish communication between the processor and the cache memory, the processor and a main bus BP, or the cache memory and this main bus BP. The main bus is connected to several cards comprising such processor-cache memory assemblies and to a main memory MP as well as to various management systems not shown.

L'un des objets d'une mémoire cache est de fournir des informations au processeur plus vite que ne peut le faire la mémoire principale. La mémoire cache ne contient qu'un sous-ensemble des données de la mémoire principale et est de plus petite dimension ce qui entraine que l'on peut se permettre d'utiliser des composants de mémoire vive (REM) plus rapides et plus chers mais moins nombreux que ceux de la mémoire principale ce qui contrebalance l'augmentation du prix. Puisque la mémoire cache ne contient qu'une partie de la mémoire principale, le processeur associé n'y trouvera pas toujours ce qu'il recherche.Dans ce cas, la donnée désirée doit être copiée depuis la mémoire principale
dans la mémoire cache. les résultats avantageux de la prévision
d'une mémoire cache dépendent du pourcentage de fois où le pro
cesseur y trouvera les données qu'il recherche. S'il les trouve
toujours, le processeur tourne à la vitesse de la mémoire cache.
One of the purposes of a cache is to provide information to the processor faster than the main memory can. The cache only contains a subset of the data in the main memory and is smaller, which means that we can afford to use faster and more expensive random access memory (REM) components, but fewer than those in main memory which compensates for the increase in price. Since the cache memory contains only a part of the main memory, the associated processor will not always find what it is looking for. In this case, the desired data must be copied from the main memory
in the cache. advantageous forecast results
of a cache depend on the percentage of times the pro
he will find the data he is looking for there. If he finds them
still, the processor runs at the speed of the cache.

S'il ne les trouve jamais, il tourne à la vitesse de la mémoire
principale et le cache n'apporte rien. Statistiquement, à l'heure
actuelle, avec une mémoire cache convenablement adaptée on atteint
des taux de réussite (hit) d'environ 95 % et un gain en rapidité
de deux à trois.
If it never finds them, it spins at the speed of memory
main and the cache does nothing. Statistically, on time
current, with a suitably adapted cache memory we have reached
success rates (hit) of around 95% and a gain in speed
two to three.

Un avantage des mémoires cache est aussi d'éviter l'en
combrement du bus principal qui constitue dans les systèmes moder
nes l'un des goulots d'étranglement de la vitesse d'un multi
processeur.
An advantage of cache memories is also to avoid
main bus space which constitutes in moder systems
nes one of the speed bottlenecks of a multi
processor.

La présente invention se base sur une analyse des infor
mations traitées par un processeur et échangées avec sa mémoire
cache. Classiquement, parmi les informations traitées par un pro
cesseur, on trouve trois catégories d'informations
a) des informations de texte correspondant à des pro
grammes et à leurs constantes qui ne sont jamais modifiées en
cours d'exécution
b) la pile de chaque tâche, ctest-à-dire les résultats
fournis par le processeur, pile qui est sans cesse modifiée mais
par un seul processeur à la fois,
c) des données communes, ou données partagées, modifiées a tout instant par plusieurs processeurs.
The present invention is based on an analysis of information
mations processed by a processor and exchanged with its memory
hidden. Conventionally, among the information processed by a professional
stopper, there are three categories of information
a) text information corresponding to pro
grams and their constants which are never changed to
running
b) the stack for each task, i.e. the results
supplied by the processor, a battery which is constantly modified but
by only one processor at a time,
c) common data, or shared data, modified at any time by several processors.

Selon un aspect de l'invention, on se place dans le cas
d'une organisation où les informations de type a) et b) transitent
toujours par les mémoires cache (même si une copie en est sauve
gardée dans la mémoire principale) et où les informations de type
c) sont mémorisées uniquement dans la mémoire principale et ne
transitent pas par les mémoires cache.
According to one aspect of the invention, we place ourselves in the case
of an organization where information of type a) and b) passes
always by cache memories (even if a copy is saved
kept in main memory) and where type information
c) are only stored in main memory and do not
not pass through the cache memories.

Une telle organisation présente des avantages en ce
qui concerne la cohérence du système et simplifie les-problèmes de mise à jour. En effet, les informations de type a) ne sont jamais modifiées et, mêne si elles sont envoyées par la mémoire principale dans divers caches, elles restent telles qu'elles sont et il ne se pose pas de problème de mise à jour. En ce qui concerne les informations de type b), elles sont générées au niveau des processeurs individuels mais par un seul processeur à la fois. Ainsi, quand elles sont renvoyées vers la mémoire principale il ne se pose pas de problème de cohérence entre des copies multiples. Par contre, pour les données communes ou partagées, elles peuvent être traitées par plusieurs processeurs qui en auront chacun reçu une copie de la mémoire principale et les auront modifiées indépendamment.
Such an organization has advantages in that
which concerns the consistency of the system and simplifies the updating problems. Indeed, the information of type a) is never modified and, even if it is sent by the main memory in various caches, it remains as it is and there is no problem of updating. Regarding information of type b), it is generated at the level of the individual processors but by only one processor at a time. Thus, when they are returned to the main memory, there is no problem of consistency between multiple copies. On the other hand, for common or shared data, they can be processed by several processors who will each have received a copy of the main memory and will have modified them independently.

Lors de leur renvoi vers la mémoire principale, des problèmes de mise è jour se poseraient si elles étaient mémorisées dans plusieurs mémoires cache. Il faudrait alors prévoir des systèmes hiérarchiques complexes pour gérer ces mises è jour.When they are returned to the main memory, update problems would arise if they were stored in several cache memories. Complex hierarchical systems would then have to be provided to manage these updates.

Même si on adoptait l'organisation susmentionnée, le fait d'utiliser un bus unique accédant à des données individuelles présenterait encore plusieurs inconvénients. Even if the above organization were adopted, the fact of using a single bus accessing individual data would still have several disadvantages.

Un premier inconvénient est que tous les transferts entre un processeur ou une mémoire cache et la mémoire principale se font par le bus principal qui tend à devenir un goulot d'étranglement. A first drawback is that all transfers between a processor or a cache memory and the main memory are done by the main bus which tends to become a bottleneck.

Un autre inconvénient est que, pendant un transfert entre une mémoire cache et la mémoire principale, le processeur associé est bloqué. Another drawback is that, during a transfer between a cache memory and the main memory, the associated processor is blocked.

Un troisième inconvénient évident est que le transfert de données par le bus principal est limité par la rapidité de ce bus principal à fonctionnement de type aléatoire (donnée par donnée). A third obvious drawback is that the transfer of data by the main bus is limited by the speed of this main bus operating at random type (data by data).

La présente invention prévoit une nouvelle architecture parallèle à multiprocesseur permettant d'éviter ces inconvénients.  The present invention provides a new parallel multiprocessor architecture to avoid these drawbacks.

Selon un mode de réalisation de la présente invention, il est prévu une architecture parallèle multiprocesseur comprenant des modules élémentaires dont chacun comprend un processeur et une mémoire cache pouvant communiquer entre eux et, par l'intermédiaire d'un bus principal, avec d'autres modules ou avec une mémoire principale, chaque cache comprenant, en plus de son accès vers son processeur et le bus principal, un accès permettant de transférer en parallèle des rangées ou parties de rangées dans un registre associé à ce cache, et cette architecture comprenant en outre un bus de type séquentiel permettant de faire communiquer lesdits registres entre eux et avec la mémoire principale. According to an embodiment of the present invention, there is provided a multiprocessor parallel architecture comprising elementary modules each of which comprises a processor and a cache memory which can communicate with each other and, via a main bus, with other modules or with a main memory, each cache comprising, in addition to its access to its processor and the main bus, an access making it possible to transfer in parallel rows or parts of rows in a register associated with this cache, and this architecture comprising in in addition to a sequential type bus enabling said registers to communicate with each other and with the main memory.

Dans une telle architecture parallèle multiprocesseur dans laquelle certaines des données sont susceptibles d'être cachées (mémorisées dans un cache) alors que d'autres données (données partagées) sont non-cachées (mémorisables seulement dans la mémoire principale), et dans laquelle des moyens sont prévus pour déterminer si un transfert requis par un processeur est susceptible d'être caché ou non, la présente invention prévoit que, s'il s'agit de données non-cachées, lesdits moyens orientent la requête vers le bus principal par lequel s'effectue le transfert requis entre le processeur et la mémoire principale, et que, s'il s'agit de données susceptibles d'être cachées mais non contenues dans le cache du processeur requérant, lesdits moyens orientent la requête de sorte que le bus séquentiel effectue le transfert entre caches ou entre cache et mémoire principale, par l'intermédiaire desdits registres. In such a parallel multiprocessor architecture in which some of the data is likely to be hidden (stored in a cache) while other data (shared data) is non-hidden (memorizable only in the main memory), and in which means are provided to determine whether a transfer required by a processor is capable of being hidden or not, the present invention provides that, if it is non-hidden data, said means direct the request to the main bus by which the required transfer takes place between the processor and the main memory, and that, if the data is likely to be hidden but not contained in the cache of the requesting processor, said means orient the request so that the bus sequential transfers between caches or between cache and main memory, via said registers.

Ainsi, la présente invention résout tous les problèmes susmentionnés des architectures de l'art antérieur. Elle nécessite seulement de prévoir comme mémoires cache des mémoires RAM à double accès qui sont aujourd'hui des composants commercialement disponibles (par exemple le produit dit MB 81461 vendu par la Société dite Fujitsu). Ceci permet d'assurer les communications entre mémoires cache ou entre une mémoire cache et la mémoire principale par le bus séquentiel sans affecter les communications directes entre un processeur et la mémoire cache associée ou ce processeur et la mémoire principale par le bus principal. Thus, the present invention solves all the aforementioned problems of the architectures of the prior art. It only requires the provision of dual-access RAM memories, which are currently commercially available components (for example, the product known as MB 81461 sold by the company known as Fujitsu). This makes it possible to ensure communications between cache memories or between a cache memory and the main memory by the sequential bus without affecting the direct communications between a processor and the associated cache memory or this processor and the main memory by the main bus.

Un autre avantage de l'invention est que les communications entre les mémoires cache et la mémoire principale sont réalisées plus vite avec un bus séquentiel tel qu'utilisé ici qu'avec un bus classique tel que le bus principal commun utilisé dans les systèmes de l'art antérieur. En effet, des transferts de données concernent généralement des blocs (suite de mots de données) d'une certaine longueur, et un bus séquentiel est particulièrement adapté à gérer de tels transferts ce qui peut être réalisé avec les technologies actuelles beaucoup plus vite qu'avec un bus classique non séquentiel dans lequel chaque donnée est adressée individuellement.Par exemple, dans une même technologie, si un transfert de mots par un bus classique est de l'ordre de 200 ns par mot, un transfert par un bus séquentiel, en dehors des opérations initiale et finale, occupe une durée de l'ordre de 30 ns par mot, ce qui constituera un gain important par rapport è un bus fonctionnant classiquement avec une mémoire à accès si le bloc a une certaine longueur et donc que les opérations initiales d'adressage deviennent négligeables. Another advantage of the invention is that communications between the cache memories and the main memory are carried out more quickly with a sequential bus as used here than with a conventional bus such as the common main bus used in the systems of the prior art. Indeed, data transfers generally relate to blocks (series of data words) of a certain length, and a sequential bus is particularly adapted to manage such transfers which can be achieved with current technologies much faster than with a conventional non-sequential bus in which each data item is addressed individually. For example, in the same technology, if a transfer of words by a conventional bus is of the order of 200 ns per word, a transfer by a sequential bus, in apart from the initial and final operations, occupies a duration of the order of 30 ns per word, which will constitute a significant gain compared to a bus conventionally operating with an access memory if the block has a certain length and therefore that the operations addressing initials become negligible.

Ces objets, caractéristiques et avantages et ainsi que d'autres de la présente invention seront expliqués plus en détail dans la description suivante de modes de réalisation particuliers faite en relation avec les figures jointes parmi lesquelles
la figure 1 illustre une architecture multiprocesseur de l'art antérieur
la figure 2 illustre de façon générale une architecture multiprocesseur selon la présente invention
la figure 3 représente schématiquement une mémoire RMI à double accès ;;
les figures 4 et 5 illustrent schématiquement le processus de transfert d'une mémoire è double accès à une autre en utilisant un bus séquentiel
la figure 6 illustre de façon générale l'organisation du bus séquentiel
les figures 7 è 9 sont destinées è servir de support è la description d'un mode de réalisation logiciel d'une architecture selon la présente invention
les figures 10 à 13 sont destinées è servir de support è la description d'un mode de réalisation matériel d'une architecture selon la présente invention.
These objects, characteristics and advantages and others of the present invention will be explained in more detail in the following description of particular embodiments made in relation to the attached figures among which
Figure 1 illustrates a multiprocessor architecture of the prior art
FIG. 2 generally illustrates a multiprocessor architecture according to the present invention
FIG. 3 schematically represents an RMI memory with dual access;
Figures 4 and 5 schematically illustrate the process of transferring from one dual access memory to another using a sequential bus
FIG. 6 illustrates in general the organization of the sequential bus
Figures 7 to 9 are intended to serve as a support for the description of a software embodiment of an architecture according to the present invention
Figures 10 to 13 are intended to serve as support for the description of a hardware embodiment of an architecture according to the present invention.

La figure 2 illustre de façon générale une architecture multiprocesseur selon la présente invention. On y retrouve des cartes comprenant chacune un processeur P, une mémoire cache MC et un commutateur S relié au processeur, è la mémoire cache et à un bus principal BP auquel est également reliée une mémoire principale MP. Selon la présente invention, les mémoires cache MC sont des mémoires è double accès qui communiquement également avec un bus séquentiel BS relié è toutes les mémoires cache et à la mémoire principale. La mémoire principale est également une mémoire è double accès qui peut communiquer soit avec le bus principal par son accès aléatoire soit avec le bus séquentiel par un accès séquentiel. FIG. 2 generally illustrates a multiprocessor architecture according to the present invention. There are cards each comprising a processor P, a cache memory MC and a switch S connected to the processor, to the cache memory and to a main bus BP to which is also connected a main memory MP. According to the present invention, the cache memories MC are dual-access memories which also communicate with a sequential bus BS connected to all the cache memories and to the main memory. The main memory is also a dual access memory which can communicate either with the main bus by its random access or with the sequential bus by a sequential access.

La figure 3 représente schématiquement la structure d'une mémoire RAM è double accès. Cette mémoire comprend une matrice de rangées et de colonnes. Chaque donnée est mémorisée à l'intersection d'une rangée et d'une colonne-. Son adresse consiste en cette combinaison. Il suffit donc de la présenter aux entrées d'adresse r et c sur le bus d'adresse 32 pour lire ou écrire la donnée. Une mémoire RAM à double accès comprend en outre un registre série 31 dans lequel on peut transférer en parallèle le contenu d'une rangée complète de la matrice 30. Inversement, on peut retransférer le contenu du registre en parallèle dans une rangée de la matrice 30. FIG. 3 schematically represents the structure of a dual access RAM memory. This memory includes a matrix of rows and columns. Each data item is stored at the intersection of a row and a column. His address consists of this combination. It therefore suffices to present it to the address inputs r and c on the address bus 32 to read or write the data. A dual-access RAM memory further comprises a serial register 31 into which the content of a complete row of the matrix 30 can be transferred in parallel. Conversely, the content of the register can be transferred in parallel into a row of the matrix 30 .

Ces transferts sont illustrés schématiquement en figure 4. Pour repérer le début d'un bloc à l'intérieur d'une rangée, il est prévu un sélecteur CS (figure 3) permettant de pointer le début d'un bloc. Cette indication est spécifiée par le bus d'adresse de la même façon que la rangée et la colonne pour l'accès aléatoire. Une fois qu'une rangée est transférée dans le registre série 31, à chaque coup d'une horloge, le sélecteur CS est avancé et le bit suivant du registre est accessible en lecture ou en écriture à partir de la broche de données série. Il faut noter que ltopéra- tion du sélecteur CS sur le registre série est indépendante du fonctionnement de la partie à accès aléatoire de la matrice 30 et c'est là l'un des principaux avantages de ce mode de fonctionnement comme on le verra ci-après. These transfers are illustrated schematically in Figure 4. To locate the start of a block within a row, there is a selector CS (Figure 3) for pointing the start of a block. This indication is specified by the address bus in the same way as the row and column for random access. Once a row is transferred to the serial register 31, at each stroke of a clock, the selector CS is advanced and the next bit of the register is accessible in read or write mode from the serial data pin. It should be noted that the operation of the selector CS on the serial register is independent of the operation of the random access part of the matrix 30 and this is one of the main advantages of this operating mode as will be seen below. after.

Pour lire un bloc de bits par la broche de données série, il faut présenter une rangée et une-colonne, comme pour un accès aléatoire mais en spécifiant une opération particulière. To read a block of bits by the serial data pin, it is necessary to present a row and a-column, as for a random access but by specifying a particular operation.

Dans cette opération le numéro de rangée indique quelle rangée sera chargée dans le registre série et le numéro de colonne précise la position du sélecteur CS. A la fin de l'opération, le contenu du registre série est disponible bit par bit à la broche de données série et le contenu de la matrice reste disponible par les broches de données d'accès aléatoire.In this operation the row number indicates which row will be loaded in the serial register and the column number specifies the position of the selector CS. At the end of the operation, the content of the serial register is available bit by bit at the serial data pin and the content of the matrix remains available through the random access data pins.

Pour écrire dans la matrice des données en provenance de la broche de données série, on commence comme pour une lecture. To write data from the serial data pin to the matrix, we start as for reading.

Ceci initialise le registre série 31 et positionne le sélecteur CS.This initializes the serial register 31 and positions the selector CS.

Ensuite les données série sont écrites dans le registre en synchronisation avec l'horloge. Enfin le registre série est transféré dans une rangée voulue de la matrice.Then the serial data is written to the register in synchronization with the clock. Finally the serial register is transferred to a desired row of the matrix.

A titre d'exemple, un cycle de transfert de données par l'accès aléatoire occupe environ 200 nanosecondes de même qu'un transfert entre la matrice et le registre série. Toutefois une fois que les données sont transférées dans le registre série, l'horloge série donne accès aux données successives de ce registre à un rythme d'environ 1 mot, constitué d'un certain nombre de bits en parallèle toutes les 30 ns. L'accès série est donc bien adapté au transfert rapide de blocs constitués de données d'adresses successives. For example, a data transfer cycle by random access takes about 200 nanoseconds as well as a transfer between the matrix and the serial register. However, once the data is transferred to the serial register, the serial clock gives access to the successive data of this register at a rate of approximately 1 word, consisting of a certain number of bits in parallel every 30 ns. Serial access is therefore well suited to the rapid transfer of blocks made up of data from successive addresses.

La figure 4 illustre très schématiquement le transfert d'une rangée d'une matrice source vers une matrice de destination selon la présente invention. La rangée de la matrice source 30S est d'abord transférée dans son registre série correspondant 31S. FIG. 4 very schematically illustrates the transfer of a row from a source matrix to a destination matrix according to the present invention. The row of the source matrix 30S is first transferred to its corresponding serial register 31S.

Le contenu de ce registre est transféré au rythme de l'horloge série en passant par le bus séquentiel BS vers le registre série destination 31D. Une fois que cette opération est réalisée, le contenu du registre série 31D est transféré en parallèle dans la rangée choisie de la mémoire destination 30D.The content of this register is transferred at the rate of the serial clock via the sequential bus BS to the destination serial register 31D. Once this operation has been carried out, the content of the serial register 31D is transferred in parallel to the chosen row of the destination memory 30D.

Dans le cas de la figure 4, on a traité du transfert d'une rangée d'une matrice mémoire à une autre en passant par les registres série correspondant. Toutefois, on souhaite dans certains cas faire un transfert non pas d'une rangée complète mais d'une partie de rangée, un tel transfert sera simplement réalisé comme cela est représenté à la figure 5 entre les registres série source 31S et destination 31D. Etant donné un bloc commençant à la colonne m d'une rangée de la matrice source et que l'on veut placer à partir de la colonne n d'une rangée de la matrice destination, on commence par transférer les contenus des rangées source et destination dans les registres correspondant 31S et 31D. On pointe ensuite par le sélecteur CS mentionné en relation avec la figure 3 la colonne m dans le registre 31S et la colonne n dans le registre 31D. Le bus séquentiel est alors utilisé pour faire le transfert au rythme de l'horloge série en commençant à m dans le registre 31S et à n dans le registre 31D. Ensuite, le contenu du registre 31D est transféré en parallèle à la rangée correspondante de la matrice 30D, les autres données de cette rangée étant donc réinsérées dans la rangée à l'emplacement où elles se trouvaient initialement. In the case of FIG. 4, we have dealt with the transfer of a row from one memory matrix to another by passing through the corresponding serial registers. However, in certain cases it is desired to make a transfer not of a complete row but of a row part, such a transfer will simply be carried out as shown in FIG. 5 between the source source registers 31S and destination 31D. Given a block starting at column m of a row of the source matrix and which we want to place from column n of a row of the destination matrix, we start by transferring the contents of the source and destination rows in the corresponding registers 31S and 31D. Column m in register 31S and column n in register 31D are then pointed by the selector CS mentioned in relation to FIG. 3. The sequential bus is then used to transfer at the rate of the serial clock, starting at m in the register 31S and at n in the register 31D. Then, the content of the register 31D is transferred in parallel to the corresponding row of the matrix 30D, the other data of this row being therefore reinserted in the row at the location where they were originally located.

Dans ce qui précède, on a illustré un transfert entre une mémoire source et une mémoire destination, étant entendu que chacune des ces mémoires peut être un cache ou que l'une de ces mémoires peut être la mémoire principale. La figure 6 représente de façon un peu plus détaillée la gestion des transferts par le bus séquentiel. On a supposé que les organes de gestion étaient situés dans un bloc 70 au voisinage de la mémoire principale '.11.  In the foregoing, a transfer between a source memory and a destination memory has been illustrated, it being understood that each of these memories can be a cache or that one of these memories can be the main memory. FIG. 6 shows in a little more detail the management of transfers by the sequential bus. It was assumed that the management bodies were located in a block 70 in the vicinity of the main memory '. 11.

Quand l'une des mémoires connectées au bus émet une requête sur une ligne R, celle-ci est transmise à un organe d'arbitrage 71 qui envoie en retour, quand le bus est libre, un signal d'acceptation
G et le transfert se fait alors au rythme d'une horloge 72 (précédemment appelée horloge série) pendant une durée déterminée par un compteur 73 en fonction du nombre de bits à transférer.
When one of the memories connected to the bus sends a request on a line R, this is transmitted to an arbitration unit 71 which sends back, when the bus is free, an acceptance signal
G and the transfer is then made at the rate of a clock 72 (previously called serial clock) for a duration determined by a counter 73 as a function of the number of bits to be transferred.

Ceci est représenté symboliquement en couplant les sorties de l'horloge 72 et du compteur 73 dans une porte ET 74 qui fournit des signaux d'horloge C sur la ligne correspondante. Alors des données D sont échangées sur le bus de données reliant entre elles les diverses mémoires cache et principale.This is symbolically represented by coupling the outputs of clock 72 and counter 73 into an AND gate 74 which supplies clock signals C on the corresponding line. Then data D is exchanged on the data bus connecting together the various cache and main memories.

On a décrit jusqu'à présent l'aspect général architectural du système selon la présente invention. On va maintenant exposer deux modes de réalisation plus particuliers de gestion de ce système, d'une part, avec un système de gestion de mémoires cache essentiellement logiciel, d'autre part, avec un système de gestion de mémoires cache essentiellement matériel. The general architectural aspect of the system according to the present invention has been described so far. We will now expose two more specific embodiments of management of this system, on the one hand, with an essentially software cache management system, on the other hand, with an essentially hardware cache management system.

Mémoires cache gérées par logiciel
On rappelera comme cela a été indiqué initialement que l'on se place dans le cadre d'une organisation où les données partagées, telles que définies précédemment, sont mémorisées dans la mémoire principale à l'exclusion des mémoires cache. On choisit aussi que les pages de texte et de pile soient mémorisées dans les diverses mémoires cache à l'exclusion de la mémoire principale, ce
qui permet de choisir une mémoire principale de taille modeste.
Software-managed cache memories
It will be recalled, as was indicated initially, that we place ourselves within the framework of an organization where the shared data, as defined above, are stored in the main memory to the exclusion of the cache memories. We also choose that the text and stack pages are stored in the various cache memories to the exclusion of the main memory, this
which allows you to choose a main memory of modest size.

Les pages de pile n'existent à un instant donné qu'à un seul emplacement. Les pages de texte peuvent coexister à l'identique dans plusieurs mémoires cache. Stack pages exist at one time only in one location. Text pages can coexist identically in multiple cache memories.

La figure 7 représente une carte selon la présente invention dans laquelle on peut voir, outre les éléments précédemment décrits, un module de gestion de mémoire (MMU) qui sert de gestionnaire de mémoire cache. FIG. 7 represents a card according to the present invention in which we can see, in addition to the elements previously described, a memory management module (MMU) which serves as cache manager.

Comme l'illustre la figure 8, la mémoire cache MC est divisée en deux zones principales, une zone réservée aux tables de gestion de la mémoire, à savoir une table de pages virtuelles locale (TPVL) et une table de pages physiques locale (TPPL) et le reste qui est disponible pour les données mémorisées dans la mémoire cache, organisées en pages. De même la mémoire principale MP comprend une zone de table de pages virtuelles partagées (TPVP) et une zone de mémorisation de données proprement dite. As illustrated in FIG. 8, the cache memory MC is divided into two main areas, an area reserved for memory management tables, namely a local virtual page table (TPVL) and a local physical page table (TPPL ) and the rest which is available for the data stored in the cache memory, organized in pages. Similarly, the main memory MP includes a shared virtual page table area (TPVP) and a data storage area proper.

La table TPVL est utilisée directement par le module MMU et est formatée en conséquence. Comme la table de page virtuelle partagée de la mémoire principale, cette table TPVL contient autant d'éléments que de pages virtuelles. The TPVL table is used directly by the MMU module and is formatted accordingly. Like the shared virtual page table in main memory, this TPVL table contains as many elements as there are virtual pages.

Comme l'indique -la figure 9, chaque élément de la table
TPVL contient plusieurs informations utilisées par le module MbS dont trois sont primordiales : le numéro de la page physique, le bit de pile qui indique si l'on est en présence d'une page de pile
P ou d'une page de texte T, et le bit de validité qui est dans l'état V (valide) ou I (invalide). Si le bit de validité est à zéro, la page virtuelle n'est pas dans la mémoire cache (ce qui provoque le défaut de page). S'il est à 1, le numéro de page physique indique la position de la page dans la mémoire cache.
As shown in Figure 9, each element of the table
TPVL contains several pieces of information used by the MbS module, three of which are essential: the number of the physical page, the stack bit which indicates whether there is a stack page
P or a text page T, and the validity bit which is in state V (valid) or I (invalid). If the validity bit is set to zero, the virtual page is not in the cache memory (which causes the page fault). If it is 1, the physical page number indicates the position of the page in the cache memory.

Tandis qu'un processeur exécute son programme, il génère une série d'adresses qui sont traduites au fur et à mesure par son module de gestion de mémoire (MMU). S'il s'agit de l'adresse d'une donnée qualifiée ci-dessus de partagée, le MMU en relation avec la
TPVL le détermine et le transfert est acheminé immédiatement par le bus principal. S'il s'agit de l'adresse de données de pile ou de texte, normalement, la table TPVL indique dans quelle page physique de la mémoire cache du module se trouvent les données re cherchées. Toutefois, tét ou tard le processeur va requérir une adresse virtuelle dont la page physique ne se trouve pas dans la mémoire cache, c'est-à-dire que le bit de validité de cette page virtuelle n'est pas mis à 1 dans la table TPVL. Ceci provoque une interruption logicielle du type défaut de page" (miss).Il s'agit donc de rechercher la page manquante. Le problème qui se pose alors est double : où trouver la page manquante ? où charger la page manquante ?
En ce qui concerne la recherche de la page manquante, la position de toutes les pages valides de la machine se trouve dans la table des pages virtuelles partagées TPVP au niveau de la mémoire principale MP. La table TPP est maintenue dans la mémoire principale et contient un mot pour chaque page virtuelle. Le mot indique le module et l'adresse où est stockée la page. Les pages de pile n'existent qu'en original (pas de copie) mais les pages de texte peuvent exister en plusieurs copies. La table TPVP indique la mémoire cache où la page recherchée a été envoyée en dernier et la position de cette page dans cette mémoire.
As a processor executes its program, it generates a series of addresses which are translated progressively by its memory management module (MMU). If it is the address of a datum described above as shared, the MMU in relation to the
TPVL determines this and the transfer is routed immediately by the main bus. If it is the stack or text data address, normally, the TPVL table indicates in which physical page of the module cache memory the data sought is found. However, sooner or later the processor will request a virtual address whose physical page is not in the cache memory, that is to say that the validity bit of this virtual page is not set to 1 in the TPVL table. This causes a software failure of the page fault type "(miss). It is therefore a question of finding the missing page. The problem which then arises is twofold: where to find the missing page? Where to load the missing page?
Regarding the search for the missing page, the position of all the valid pages of the machine is found in the table of shared virtual pages TPVP in the main memory MP. The TPP table is kept in main memory and contains a word for each virtual page. The word indicates the module and the address where the page is stored. Stack pages exist only in original (no copy) but text pages can exist in multiple copies. The TPVP table indicates the cache memory where the page sought was last sent and the position of this page in this memory.

Le deuxième problème qui se pose est de choisir l'empla- cement où doit être chargée la page, c'est-à-dire de trouver un emplacement de page disponible. Cette question est résolue en utilisant la table de pages virtuelles locale TPVL et la table de pages physiques locale TPPL du processeur requérant. The second problem that arises is choosing the location where the page should be loaded, that is, finding an available page location. This issue is resolved using the local virtual page table TPVL and the local physical page table TPPL of the requesting processor.

La table de pages physiques locale TPPL possède un élément pour chaque page physique dans la mémoire cache. Elle permet de trouver une page dans la mémoire cache qui est remplaçable et où on peut charger la page manquante. Afin de remplacer seulement les pages les plus anciennes, un pointeur de remplacement PTR parcourt la table TPPL de façon circulaire. Il recherche la page la moins récemment utilisée (dite LRET d'après l'expression anglosaxonne least recently used). L'élément dans la. table TPPL indique ou bien la page virtuelle dans la TPVL à laquelle il correspond ou bien est à zéro pour signaler que la page physique est libre (ce qui arrive en début d'exécution). Ainsi., pour répondre à la question "où charger la page ?", on avance le pointeur de remplacement en relation avec la table TPPL.Si l'élément concerné de la table est à zéro, sa page est remplaçable. Sinon on regarde l'élément indiqué dans la table TPVL. Si c'est une page invalide on peut la remplacer. Si c'est une page de pile, il faut la préserver car elle n'existe qu'en ori#ginal et on avance à nouveau le pointeur. The local physical page table TPPL has one item for each physical page in the cache. It allows you to find a page in the replaceable cache memory where you can load the missing page. In order to replace only the oldest pages, a PTR replacement pointer traverses the TPPL table in a circular fashion. It searches for the least recently used page (called LRET according to the English expression least recently used). The element in the. TPPL table indicates either the virtual page in the TPVL to which it corresponds or is zero to indicate that the physical page is free (which happens at the start of execution). Thus, to answer the question "where to load the page?", We advance the replacement pointer in relation to the table TPPL. If the element concerned of the table is zero, its page is replaceable. Otherwise we look at the element indicated in the TPVL table. If it is an invalid page we can replace it. If it is a stack page, it must be preserved because it only exists in original # and we move the pointer again.

Sinon on regarde à la position correspondante dans la TPVP s'il s'agit d'une copie de page de texte (remplaçable) ou de l'original le plus récent (non remplaçable). Une fois une page remplaçable trouvée, le sous-programme de défaut de page la remplace par la page manquante.Otherwise we look at the corresponding position in the TPVP if it is a copy of a text page (replaceable) or the most recent original (not replaceable). Once a replaceable page is found, the page fault routine replaces it with the missing page.

Avant de poursuivre l'exécution interrompue, la table
TPVP est mise à jour avec la nouvelle position de page (un original s'il s'agit d'une page de pile, une copie la plus récente s'il s'agit d'une page de texte).
Before continuing with the interrupted execution, the table
TPVP is updated with the new page position (an original if it is a stack page, a most recent copy if it is a text page).

Lors de l'initialisation du fonctionnement de la machine, le programme (texte) est téléchargé dans les mémoires cache des modules de processeur. De façon générale, il sera trop important pour tenir dans la mémoire cache d'un seul module. Il sera donc divisé en pages et réparti entre tous les modules. La répartition exacte n'a pas d'importance pourvu que la table de pages virtuelles partagée de la mémoire principale et les tables de pages virtuelles locales associées à chaque mémoire cache indiquent la position de chaque page. Au début de l'exécution, toutes les piles sont vides. Les seules pages valides dans les mémoires cache sont donc les pages de texte. During the initialization of the operation of the machine, the program (text) is downloaded into the cache memories of the processor modules. In general, it will be too large to fit in the cache memory of a single module. It will therefore be divided into pages and distributed among all the modules. Exact distribution does not matter as long as the shared virtual page table in main memory and the local virtual page tables associated with each cache indicate the position of each page. At the start of execution, all the batteries are empty. The only valid pages in the cache memories are therefore the text pages.

Au lancement d'une exécution, chaque processeur aborde une tâche (une partie du programme) et entrain l'apparition d'un grand nombre de défauts de page puisque les pages de texte voulues ne se trouvent généralement pas stockées dans la mémoire cache qui en a besoin. Les transferts appropriés sont réalisés selon le processus indiqué ci-dessus par le bus séquentiel selon l'invention.
Ensuite, chaque processeur accumule rapidement un ensemble de pages utilisées et commence à créer des pages de pile.
At the start of an execution, each processor addresses a task (part of the program) and causes the appearance of a large number of page faults since the desired pages of text are generally not stored in the cache memory which requires. The appropriate transfers are carried out according to the process indicated above by the sequential bus according to the invention.
Then each processor quickly accumulates a set of used pages and begins to create stack pages.

En cours d'exécution, il arrivera qu'un processeur suspende une tâche pour en reprendre une autre. Rapidement il rassemblera à nouveau un ensemble de pages de texte suffisantes pour l'exécution de cette nouvelle tâche. Une page n'est copiée dans la mémoire cache associée à un processeur que sur demande. During execution, it will happen that a processor suspends a task to resume another. Quickly he will again collect a set of pages of text sufficient for the execution of this new task. A page is only copied to the cache associated with a processor on request.

Les pages de texte remplacées sont les plus anciennes copies dont il est le moins probable que le processeur ait besoin.The replaced text pages are the oldest copies that the processor is least likely to need.

Mémoires cache gérées par matériel
Dans le cadre de cette réalisation, on part des hypothèses et des choix suivants
a) la mémoire principale est capable de contenir la totalité du texte, des piles et des données partagées. Plus parti culièrement, on choisit dans cet exemple de réalisation le cas où deux mémoires matériellement distinctes constituent la mémoire principale. La première mémoire à accès aléatoire est gérée classiquement par le bus principal pour les transferts des données partagées. C'est le fonctionnement et la gestion de la deuxième mémoire qui seront exclusivement traités ci-après. Cette deuxième mémoire est appelée dans ce chapitre "mémoire principale".
Hardware-managed cache memories
As part of this achievement, we start from the following assumptions and choices
a) the main memory is capable of holding all of the text, stacks and shared data. More particularly, in this exemplary embodiment, the case is chosen where two materially distinct memories constitute the main memory. The first random access memory is conventionally managed by the main bus for the transfer of shared data. It is the operation and management of the second memory which will be exclusively dealt with below. This second memory is called in this chapter "main memory".

b) La mémoire cache de chaque module de processeur est divisée en blocs. Si le processeur a besoin d'une donnée dans un bloc qui ne se trouve pas dans sa mémoire cache, le bloc sera recopié à partir de la mémoire principale. S'il s'agit d'un bloc de pile, il sera éventuellement copié depuis sa position dans la mémoire cache d'un autre module. b) The cache memory of each processor module is divided into blocks. If the processor needs data in a block which is not in its cache memory, the block will be copied from the main memory. If it is a stack block, it may be copied from its position in the cache memory of another module.

c) Tout bloc de pile que l'on voudra remplacer dans une mémoire cache sera préalablement sauvegardé dans la mémoire principale. c) Any battery block that we want to replace in a cache memory will be previously saved in the main memory.

Comme l'illustre la figure 10, la mémoire cache est divisée en un grand nombre de blocs qui sont similaires aux pages précédemment mentionnées dans le cas de la réalisation logicielle mais à la différence que la taille d'un bloc n'est pas liée à la taille d'une page du module MMU et est plus petite. A chaque bloc sont rattachés d'une part une étiquette, d'autre part un bit supplémentaire destiné à indiquer si le contenu du bloc a été modifié ou non depuis son chargement. L'étiquette stocke les bits de poids fort de l'adresse du bloc et peut afficher l'état invalide si le bloc ne contient pas d'informations. Les bits d'adresse de poids faibles sélectionnent le bloc parmi tous les blocs de la mémoire cache. As illustrated in FIG. 10, the cache memory is divided into a large number of blocks which are similar to the pages previously mentioned in the case of the software implementation but with the difference that the size of a block is not linked to the page size of the MMU module and is smaller. Each block is attached on the one hand a label, on the other hand an additional bit intended to indicate if the content of the block has been modified or not since its loading. The label stores the most significant bits of the block address and can display the invalid state if the block does not contain any information. The least significant address bits select the block from among all the blocks in the cache memory.

La figure 11 représente à nouveau un module processeur dans lequel on retrouve les mêmes références qu'en figure 2 désignant les mêmes éléments mais où la mémoire cache MC comprend une partie de mémorisation de données MD et, de façon adjacente, une portée M contenant des bits indiquant si le bloc de données correspondant a été modifié ou non et une partie T d'étiquette. FIG. 11 again represents a processor module in which the same references are found as in FIG. 2 designating the same elements but in which the cache memory MC comprises a data storage part MD and, adjacent to it, a scope M containing bits indicating whether the corresponding data block has been modified or not and a label part T.

L'adresse produite par le processeur P est divisée en parties de poids fort et de poids faible. La partie de poids faible adresse la mémoire cache à double accès et sélectionne le bloc. Elle adresse également la mémoire de bit de modification M et la mémoire d'étiquette T. La partie de poids fort est comparée dans la mémoire d'étiquette à l'étiquette correspondant au bloc. S'il y a correspondance (signalée par la sortie T), la donnée recherchée se trouve effectivement dans le bloc. Sinon l'étiquette indique l'adresse du bloc actuellement chargé et indique donc l'endroit en mémoire principale où il faudra le sauvergarder comme cela sera indiqué ci-après avant de le remplacer par le bloc recherché.The address produced by the processor P is divided into most significant and least significant parts. The least significant part addresses the dual-access cache memory and selects the block. It also addresses the modification bit memory M and the label memory T. The most significant part is compared in the label memory with the label corresponding to the block. If there is a match (signaled by output T), the data sought is actually in the block. Otherwise the label indicates the address of the block currently loaded and therefore indicates the place in main memory where it will have to be saved as will be indicated below before replacing it with the block sought.

La mémoire cache peut être initialisée pour les transferts séquentiels soit depuis son processeur soit depuis le bus principal. L'étiquette d'un bloc peut être invalidée également depuis le bus principal. Le chargement d'un bloc par le bus séquentiel remet son bit de modification à zéro. Un accès en écriture du processeur P vers n'importe quelle donnée dans un bloc met son bit de modification M à 1.  The cache memory can be initialized for sequential transfers either from its processor or from the main bus. The label of a block can also be invalidated from the main bus. The loading of a block by the sequential bus resets its modification bit to zero. A write access from the processor P to any data in a block sets its modification bit M to 1.

La sauvegarde et le chargement se font par le bus séquentiel BS sous la commande de ses dispositifs de gestion associés à la mémoire principale. Il faut toutefois signaler quel bloc est à sauvegarder et quel bloc est à charger. Suite à un défaut de cache (miss) le module processeur demande un accès de sa mémoire cache au bus séquentiel et émet alors un ou deux mots par l'intermédiaire du bus principal vers le dispositif de gestion de la mémoire principale et du bus séquentiel. Le premier mot est une demande de sauvegarde et n'est émis que si le contenu du bloc à remplacer a été modifié. Le deuxième mot spécifie le bloc à charger. The saving and the loading are done by the sequential bus BS under the control of its management devices associated with the main memory. It is however necessary to indicate which block is to be saved and which block is to be loaded. Following a cache fault (miss), the processor module requests access from its cache memory to the sequential bus and then transmits one or two words via the main bus to the main memory and sequential bus management device. The first word is a save request and is only issued if the content of the block to be replaced has been modified. The second word specifies the block to load.

La figure 12 indique la structure de la mémoire principale et la figure 13 illustre le système de gestion de cette mémoire principale et du bus séquentiel. Seuls des transferts par bloc sont effectués depuis et vers la mémoire principale. FIG. 12 shows the structure of the main memory and FIG. 13 illustrates the system for managing this main memory and the sequential bus. Only block transfers are made to and from the main memory.

La mémoire principale MP consiste en un grand nombre de blocs dont chacun est associé à une étiquette T comme les mémoires cache. Toutefois le nombre de blocs de la mémoire principale est plus élevé que celui de chacune des mémoires cache puisque cette mémoire principale doit contenir la totalité des blocs de texte et de piles. L'étiquette indique le statut du bloc qui peut être l'un des trois suivants
a) bloc de texte résidant dans la mémoire principale
b) bloc de pile actuellement résidant dans la mémoire principale
c) bloc de pile actuellement résidant dans un module processeur. Dans ce dernier cas, l'étiquette indique aussi l'adresse du module et du bloc dans celui-ci.
The main memory MP consists of a large number of blocks, each of which is associated with a label T like the cache memories. However, the number of blocks in the main memory is higher than that of each of the cache memories since this main memory must contain all of the text and stack blocks. The label indicates the status of the block which can be one of the following three
a) block of text residing in main memory
b) stack block currently residing in main memory
c) battery pack currently residing in a processor module. In the latter case, the label also indicates the address of the module and of the block in it.

Le gestionnaire 80 répond aux demandes de sauvegarde et de chargement émises par un module processeur. The manager 80 responds to backup and load requests sent by a processor module.

Quand ce gestionnaire revoit une demande de sauvegarde, il initialise la mémoire principale pour un transfert par son accès série 81 en écriture et effectue le transfert du bloc par le bus séquentiel BS. Par la même occasion, il marque dans son étiquette T une indication correspondant à pile et "résidant". When this manager reviews a backup request, it initializes the main memory for a transfer by its serial access 81 in write mode and performs the block transfer by the sequential bus BS. At the same time, he marks in his label T an indication corresponding to battery and "resident".

Quand le gestionnaire reçoit une demande de chargement, il consulte l'étiquette du bloc demandé. Si elle affiche "texte, résidant ou pile, résidant il initialise la mémoire principale pour un transfert par son accès série en lecture et effectue le transfert du bloc vers la mémoire cache du module demandeur. Si le bloc chargé est un bloc de pile, l'étiquette "pile, résidant" est remplacée par le numéro du module demandeur et l'adresse du bloc dans celui-ci. When the manager receives a load request, he consults the label of the requested block. If it displays "text, resident or stack, resident it initializes the main memory for a transfer by its read serial access and transfers the block to the cache memory of the requesting module. If the loaded block is a stack block, l 'label "battery, resident" is replaced by the number of the requesting module and the address of the block in it.

Si l'étiquette affiche un "numéro de module le gestionnaire initialise la mémoire cache du module concerné pour un transfert série en lecture et effectue le transfert du bloc. Par la même occasion il met à jour son étiquette par le numéro du module demandé et invalide le bloc du module à partir duquel le transfert a été fait. If the label displays a "module number, the manager initializes the cache memory of the module concerned for a serial read transfer and performs the block transfer. At the same time it updates its label with the requested and invalid module number the module block from which the transfer was made.

Dans un tel système de gestion matérielle de mémoires cache et de mémo-ire principale, au début de l'exécution, les étiquettes de tous les blocs en mémoire principale sont mises à texte, résidant". Quand les processeurs commencent à tourner, il y aura une rafale de demandes de chargement. L'algorithme permet d'effectuer des copies des blocs de texte demandés dans la mémoire cache de chaque processeur qui les requiert. In such a hardware management system of cache memories and main memory, at the start of execution, the labels of all the blocks in main memory are set to text, residing ". When the processors start to run, there are will have a burst of load requests. The algorithm makes it possible to make copies of the requested text blocks in the cache memory of each processor that requires them.

Au fur et à mesure, des blocs de pile apparaissent dans les mémoires cache (bits de modifications à 1). Quand ces blocs doivent être remplacés ils sont sauvegardés comme "pile, résidant dans la mémoire principale. Quand un bloc de pile est demandé, il est transféré depuis la mémoire cache où il a été produit ou utilisé en dernier ou depuis la mémoire principale s'il a été sauvegardé. Il n'y a dans ce système jamais plus d'un exemplaire d'un bloc de pile à la fois.   As time goes by, stack blocks appear in the cache memories (change bits at 1). When these blocks need to be replaced they are saved as "stack, residing in main memory. When a stack block is requested, it is transferred from the cache memory where it was last produced or used or from main memory s' it has been backed up. There is never more than one copy of a battery pack in this system at a time.

Les deux modes de réalisation particuliers dits de gestion logicielle et de gestion matérielle présentés ci-dessus ne constituent que des exemples particuliers de mises en oeuvre et l'invention concerne de façon plus générale une architecture et toutes les variantes de ces modes de réalisation qui apparaitront à l'homme de l'art.  The two particular embodiments known as software management and hardware management presented above constitute only specific examples of implementation and the invention relates more generally to an architecture and all the variants of these embodiments which will appear to the skilled person.

Claims (5)

REVEDICATISREVEDICATIS 1. Architecture parallèle multiprocesseur comprenant des modules élémentaires dont chacun comprend un processeur (P) et une mémoire cache (MC) pouvant communiquer entre eux et, par l'intermédiaire d'un bus principal (BP), avec d'autres modules ou avec une mémoire principale (MP), caractérisée en ce que chaque cache comprend, en plus de son accès vers son processeur et le bus principal, un accès permettant de transférer en parallèle des rangées ou parties de rangées dans un registre (31) associé à ce cache, et en ce qu'elle comprend en outre un bus de type séquentiel (BS) permettant de faire communiquer lesdits registres entre eux et avec la mémoire principale. 1. Parallel multiprocessor architecture comprising elementary modules each of which comprises a processor (P) and a cache memory (MC) which can communicate with each other and, via a main bus (BP), with other modules or with a main memory (MP), characterized in that each cache comprises, in addition to its access to its processor and the main bus, an access making it possible to transfer rows or parts of rows in parallel in a register (31) associated with this cache, and in that it further comprises a sequential type bus (BS) allowing said registers to communicate with each other and with the main memory. 2. Architecture parallèle multiprocesseur selon la revendication 1, dans laquelle certaines des données sont susceptibles d'être cachées (mémorisées dans un cache) alors que d'autres données (données partagées) sont non-cachées, (mémorisables seulement dans la mémoire principale), comprenant des moyens pour déterminer si un transfert requis par un processeur est susceptible d'être caché ou non, caractérisée en ce que 2. Parallel multiprocessor architecture according to claim 1, in which some of the data is likely to be hidden (stored in a cache) while other data (shared data) is not hidden, (storable only in the main memory) , comprising means for determining whether a transfer required by a processor is capable of being hidden or not, characterized in that - s'il s'agit de données non-cachées, lesdits moyens orientent la requête vers le bus principal par lequel s'effectue le transfert requis entre le processeur et la mémoire principale, et - in the case of non-hidden data, said means direct the request to the main bus by which the required transfer takes place between the processor and the main memory, and - s'il s'agit de données susceptibles d'être cachées mais non contenues dans le cache du processeur requérant, lesdits moyens orientent la requête de sorte que le bus séquentiel effectue le transfert entre caches ou entre cache et mémoire principale, par l'intermédiaire desdits registres.  - in the case of data likely to be hidden but not contained in the cache of the requesting processor, said means direct the request so that the sequential bus transfers between caches or between cache and main memory, by intermediary of said registers. 3. Architecture parallèle multiprocesseur selon la revendication 2, caractérisée en ce que les données susceptibles d'être cachées comprennent des données de texte (programme) non modifiées en cours d'exécution et des données de pile, susceptibles d'être modifiées par un seul processeur à la fois. 3. Parallel multiprocessor architecture according to claim 2, characterized in that the data likely to be hidden comprises text data (program) not modified during execution and stack data, capable of being modified by a single processor at a time. 4. Architecture parallèle multiprocesseur selon la revendication 3, caractérisée en ce que 4. Parallel multiprocessor architecture according to claim 3, characterized in that - lors du chargement initial du texte, celui-ci, divisé en pages, est directement chargé par le bus séquentiel dans les mémoires cache sans mémorisation dans la mémoire principale, en mémorisant seulement dans une table (TPVP) de la mémoire principale (MP) des informations sur les emplacements dans les mémoires cache où sont chargées ces pages, - during the initial loading of the text, this one, divided into pages, is directly loaded by the sequential bus in the cache memories without memorization in the main memory, by memorizing only in a table (TPVP) of the main memory (MP) information on the locations in the cache memories where these pages are loaded, - lors de la demande par un processeur d'une page de texte, celle-ci est transférée (recopiée) dans sa mémoire cache par le bus séquentiel et ladite table (TPVP) est mise à jour pour indiquer l'emplacement où la page a été transférée en dernier. - during a request by a processor for a text page, it is transferred (copied) into its cache memory by the sequential bus and said table (TPVP) is updated to indicate the location where the page has was last transferred. 5. Architecture parallèle multiprocesseur selon l'une des revendications 3 ou 4, caractérisée en ce que lors du transfert d'une page de pile à partir d'une mémoire, cette page de pile est invalidée dans la mémoire où on l'a prise, d'où il résulte qu'à un instant donné une page de pile n'existe qu'à un emplacement donné.  5. Parallel multiprocessor architecture according to one of claims 3 or 4, characterized in that during the transfer of a stack page from a memory, this stack page is invalidated in the memory where it was taken , where it follows that at a given time a stack page exists only at a given location.
FR8801467A 1988-02-01 1988-02-01 MULTIPROCESSOR PARALLEL ARCHITECTURE Expired - Fee Related FR2626692B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR8801467A FR2626692B1 (en) 1988-02-01 1988-02-01 MULTIPROCESSOR PARALLEL ARCHITECTURE

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR8801467A FR2626692B1 (en) 1988-02-01 1988-02-01 MULTIPROCESSOR PARALLEL ARCHITECTURE

Publications (2)

Publication Number Publication Date
FR2626692A1 true FR2626692A1 (en) 1989-08-04
FR2626692B1 FR2626692B1 (en) 1995-01-13

Family

ID=9363057

Family Applications (1)

Application Number Title Priority Date Filing Date
FR8801467A Expired - Fee Related FR2626692B1 (en) 1988-02-01 1988-02-01 MULTIPROCESSOR PARALLEL ARCHITECTURE

Country Status (1)

Country Link
FR (1) FR2626692B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1982002615A1 (en) * 1981-01-19 1982-08-05 Western Electric Co Random access memory system having high-speed serial data paths
EP0126976A2 (en) * 1983-05-20 1984-12-05 International Business Machines Corporation Multiprocessor system with communicating random access shared memory
EP0166192A2 (en) * 1984-06-29 1986-01-02 International Business Machines Corporation High-speed buffer store arrangement for fast transfer of data
EP0187289A2 (en) * 1984-12-31 1986-07-16 International Business Machines Corporation Hierarchical memory system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1982002615A1 (en) * 1981-01-19 1982-08-05 Western Electric Co Random access memory system having high-speed serial data paths
EP0126976A2 (en) * 1983-05-20 1984-12-05 International Business Machines Corporation Multiprocessor system with communicating random access shared memory
EP0166192A2 (en) * 1984-06-29 1986-01-02 International Business Machines Corporation High-speed buffer store arrangement for fast transfer of data
EP0187289A2 (en) * 1984-12-31 1986-07-16 International Business Machines Corporation Hierarchical memory system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IEEE TRANSACTIONS ON COMPUTERS, vol. C-31, no. 11, novembre 1982, pages 1083-1099, IEEE, New York, US; M.DUBOIS et al.: "Effects of cache coherency in multiprocessors" *

Also Published As

Publication number Publication date
FR2626692B1 (en) 1995-01-13

Similar Documents

Publication Publication Date Title
BE1003816A4 (en) APPARATUS AND METHOD FOR ACCESSING DATA IN PAGES stored MEMORY.
FI61363B (en) data processing system
FR2677472A1 (en) CONTROL UNIT FOR MEMORY SECOND LEVEL CACHE.
US20030200394A1 (en) Cache memory arrangement and methods for use in a cache memory system
FR2881540A1 (en) Input output cache memory usage method for computer system, involves assuring that prefetch locking indicator of cache memory line of cache memory associated to memory request is in locked condition, if memory request is not speculative
FR2497374A1 (en) COMPUTER MACHINE FOR MULTITASK PROCESSING
JPS58500226A (en) Apparatus and method for maintaining cache memory integrity in a shared memory environment
FR2621407A1 (en) SYSTEM FOR REASSIGNING ADDRESSES AND PURGEING ANEMEMOIRE BLOCKS FOR VIRTUAL ADDRESSING AND RE-REGISTRATION WORKSTATION STATION
FR2682506A1 (en) CACHED MEMORY PROCESSOR UTILIZING MARK ZONE ADDRESSES AND SHIFT AREA, AND CACHE MEMORY FOR PROCESSORS OF THIS TYPE.
EP0392932B1 (en) Method and device for speeding-up memory accesses using a modified LRU algorithm
FR2583540A1 (en) MEMORY MANAGEMENT FOR MICROPROCESSOR SYSTEM.
EP0031840A1 (en) Memory system
JPS61195441A (en) Simplified cash to be automatically updated
EP1710703A1 (en) Cache consistency in a shared-memory multiprocessor system
JP2001507845A (en) Prefetch management in cache memory
FR2472232A1 (en) DEVICE AND METHOD FOR DELETING ANEMEMATORY
NO167831B (en) DIRECTORY MANAGEMENT FOR DATA PROCESSING SYSTEM.
FR2835937A1 (en) IDENTIFICATION OF EXPIRED ENTRIES IN A COMPUTER CACHE
EP1739561A1 (en) Cache consistency in a shared-memory multiprocessor system
EP0394115B1 (en) Apparatus for speeding-up memory accesses in a computer system
FR2560412A1 (en) DATA PROCESSING APPARATUS
FR2626692A1 (en) Multiprocessor parallel architecture
US20130169651A1 (en) Texture pipeline context switch
FR2609195A1 (en) METHOD FOR MANAGING ANEMEMOIRES ASSOCIATED WITH PROCESSORS IN A SINGLE-BUS MULTIPROCESSOR ARCHITECTURE AND DATA PROCESSING SYSTEM OPERATING IN SUCH A METHOD
EP0306357A1 (en) Memory access management unit with logical unvarying identifiers, especially for data base management

Legal Events

Date Code Title Description
ST Notification of lapse