Brevet FR2632093A1 — publié le 19891201

- 1 - Mémoire modulaire L'invention se situe dans le domaine des mémoires, appelées couramment mémoires centrales, utilisées dans les unités centrales des ordinateurs. La mémoire selon l'invention est particulièrement destinée à être utilisée dans des systèmes à hautes performances utilisant par exemple des processeurs vectoriels. Dans ce genre d'application, on utilise habituellement des mémoires à semi- conducteurs telles que des mémoires statiques. Une unité centrale comprend généralement un ou plusieurs processeurs reliés à une mémoire centrale par l'intermédiaire d'un contrôleur mémoire. Les processeurs accèdent normalement aux données contenues dans la mémoire en envoyant au contrôleur mémoire des demandes sous la forme de signaux de 1 commande (commande de lecture ou commande d'écriture), de signaux d'adresse et de signaux de données, dans le cas d'une écriture. Les signaux de commande sont généralement précédés ou accompagnés d'un signal de requête permettant d'avertir le contrôleur mémoire qu'une demande est envoyée. En réponse à une telle demande, le contrôleur mémoire effectue alors une série d'opérations consistant notamment à charger dans un registre d'entrée les paramètres de la demande. Généralement le contrôleur envoie également des signaux d'acquittement pour informer le processeur que la demande est acceptée puis que la réponse est disponible dans le registre de sortie du contrôleur. La réponse est constituée des données contenues à l'adresse fournie par le processeur dans le cas d'une lecture. La réponse peut comprendre également un compte rendu d'erreurs pour informer le processeur si l'opération demandée a été effectuée correctement. Les paramètres fondamentaux pour évaluer les performances d'une mémoire sont le temps d'accès et le temps de cycle. Le temps d'accès est défini comme étant l'intervalle de temps qui sépare l'envoi d'une requête par le a_ processeur et 1 'apparition d'un signal, d'acquittement indiquant que la - 2 - demande est prise en compte par la mémoire indiquant ainsi qu'une nouvelle demande peut être adressée à la mémoire par le processeur. Le temps de cycle définit l'intervalle de temps qui sépare le moment o une demande est reçue par la mémoire et l'instant o la réponse est disponible dans le registre de sortie de la mémoire. Selon l'évolution actuelle dans la conception des ordinateurs, il est nécessaire de disposer de mémoires ayant des capacités de plus en plus importantes. D'autre part, on cherche à réaliser des processeurs ayant des performances de plus en plus élevées, c'est-à-dire permettant un très grand nombre d'accès mémoire par seconde. Pour augmenter les performances du processeur, on utilise diverses techniques telles que l'utilisation de systèmes multiprocesseurs et/ou l'architecture dite "pipe line". Cependant, pour bien utiliser les perfectionnements réalisés dans les processeurs, il faut aussi que les mémoires associées aient des performances compatibles. Il faut donc réaliser des mémoires présentant un temps d'accès et un temps de cycle le plus court possible. Mais ces conditions sont difficilement compatibles avec l'augmentation de la capacité de la mémoire car, avec les technologies actuelles, le temps d'accès d'une mémoire augmente avec sa capacité. Pour résoudre ce problème, une solution classique consiste à utiliser une mémoire composée de plusieurs modules, chaque module ayant par conséquent un temps d'accès inférieur à celui qu'aurait une mémoire non modulaire de même capacité. D'autre part, on utilise la technique de l'entrelacement selon laquelle les demandes successives envoyées par les processeurs s'adressent successivement à des modules différents de la mémoire. Cependant cette solution pose un autre problème qui est celui des liaisons entre les processeurs et les divers modules mémoire. Selon une première méthode connue, on utilise des chemins d'accès différents pour chacun des modules. Un processeur est alors relié aux modules par l'intermédiaire d'un circuit d'interconnexion ayant autant de liaison que la mémoire a de modules. Dans le cas d'un système multiprocesseur, tel qu'un processeur vectoriel, le circuit d'interconnexion est fonctionnellement équivalent à un système "crossbar". Cette méthode présente l'avantage d'autoriser des 3 - accès simultanés des processeurs vers plusieurs modules mémoire. Cependant cette solution est limitée aux cas o le nombre de modules et de processeurs est relativement limité. En effet, au delà d'une dizaine de module, le dispositif d'interconnexion devient difficile à réaliser et à contrôler. De plus, elle entraîne une augmentation du temps de cycle du système. Selon une autre solution connue, cet inconvénient peut être évité en utilisant une liaison de type bus entre les processeurs et les différents modules. Dans ce cas, on prévoit un contrôleur mémoire par module, chaque contrôleur étant muni d'un registre d'entrée et d'un décodeur d'adresse. Habituellement on utilise deux bus distincts pour véhiculer les demandes et les réponses de sorte que, en mode entrelacé, le temps d'accès global de la mémoire est égal au temps d'accès d'un module divisé par le nombre de modules. Cependant cette dernière solution, présente l'inconvénient suivant. La réponse à une demande adressée à un module quelconque de la mémoire est disponible dans le registre de sortie du module au bout d'un temps correspondant au temps de propagation de la demande du processeur au module auquel s'ajoute le temps de cycle du module. Or le temps de propagation et le temps de cycle peuvent être variables d'un module à l'autre. Ces différences deviennent particulièrement sensibles lorsque le temps de cycle du processeur diminue et lorsque le nombre de modules augmente car il devient alors possible que les réponses à deux demandes successives adressées à deux modules différents se présentent simultanément sur le bus de sortie. L'invention a pour but de remédier à cet inconvénient en assurant que les réponses issues des différents modules seront reçues successivement par le processeur dans un ordre identique à l'ordre d'envoi des demandes correspondantes et acceptées par les modules. Plus précisément l'invention a pour objet une mémoire à plusieurs modules destinée à recevoir des demandes d'au moins un processeur, lesdites demandes ayant la forme de signaux de commandes, d'adressages et éventuellement de données, chaque module comportant des moyens pour décoder - 4 - lesdites demandes apparaissant sur son entrée et des moyens pour fournir des signaux de réponse auxdites demandes, ladite mémoire étant caractérisée en ce que lesdites demandes sont transmises à l'entrée de chacun desdits modules par l'intermédiaire d'un registre à décalage d'entrée, en ce que les réponses issues dudit module sont transmises à l'entrée dudit processeur par l'intermédiaire d'un registre à décalage de sortie, en ce que le nombre d'étages dudit registre à décalage d'entrée est différent pour chacun des modules associés et en ce que le nombre total d'étages appartenant aux registres à décalage d'entrée et de sortie associés à l'un desdits modules est constant et indépendant du module considéré. L'invention présente en outre l'avantage d'éviter l'utilisation d'un système centralisé de synchronisation complexe et de permettre une totale modularité de la mémoire. De plus, l'invention permet une réalisation particulièrement simple et selon laquelle la mémoire comporte un seul registre à décalage d'entrée et un seul registre à décalage de sortie communs à tous les modules, la sortie dudit processeur étant reliée à l'entrée du premier étage dudit registre à décalage d'entrée, l'entrée dudit processeur étant reliée à la sortie du dernier étage dudit registre à décalage de sortie et en ce que la sortie de chaque étage de registre à décalage d'entrée est reliée à l'entrée d'un desdits modules, la sortie dudit module étant reliée à la sortie de l'étage de même rang du registre à décalage de sortie. La solution précédente permet bien d'obtenir les performances recherchées en mode entrelacé. Cependant la mémoire ne doit pas être limitée à ce mode de fonctionnement et il faut donc prévoir un mécanisme interdisant qu'une demande adresse un module qui vient d'être adressé par une demande précédente moins d'un certain temps minimum auparavent, ce temps correspondant au temps d'accès du module. Ce problème existe également dans le système avec bus évoqué précédemment. Pour résoudre cette difficulté, on prévoit habituellement un système à fenêtres géré par le processeur. Il est également possible de prévoir un circuit d'inhibition temporisé extérieur au processeur interdisant l'envoi d'une demande adressée à un module et succédant à une première demande adressée au même module après un -5 intervalle de temps inférieur à une durée déterminée en fonction du temps d'accès global caractérisant chaque module. Bien que ces solutions résolvent le problème de collision de demandes successives trop rapprochées, il en résulte une complication dans la réalisation soit du processeur, soit du circuit d'inhibition. Cette solution présente en outre l'inconvénient d'augmenter le temps de cycle global du système. 1o Aussi, selon une variante de 1 'invention le problème précédent est résolu selon le principe suivant: à chaque demande issue du processeur, on associe un indicateur véhiculé avec la demande et signalant que la demande est valide. Lorsque la demande est acceptée par l'un des modules de la mémoire, cet indicateur prend une autre valeur signifiant que la demande est acceptée par le module. Ainsi, en fonction de la valeur de cet indicateur, il sera possible de déterminer si une nouvelle demande peut être envoyée par le processeur. Aussi 1 'invention a également pour objet une mémoire caractérisée en ce que chaque module est associé à un circuit d'acquittement des demandes pour associer à chaque demande un indicateur de demande véhiculé par ledit registre à décalage d'entrée, ledit circuit d'acquittement des demandes forçant ledit indicateur de demande à une première valeur déterminée lorsqu'un signal d'acquittement délivré par ledit module indique que ledit module accepte la demande présente à son entrée et en ce que ledit registre à décalage d'entrée comporte un étage supplémentaire placé en aval du dernier étage dudit registre à décalage, la sortie dudit étage supplémentaire étant reliée à un circuit de contrôle des demandes associé audit processeur, ledit circuit de contrôle des demandes comportant un dispositif de sélection des demandes autorisant le transfert à l'entrée dudit registre à décalage d'entrée soit d'une nouvelle demande si la valeur dudit indicateur contenue dans ledit étage supplémentaire est égale à ladite première valeur déterminée soit de la demande contenue dans ledit étage supplémentaire dans le cas contraire, 1 'indicateur de demande associé à toute nouvelle demande prenant une seconde valeur déterminée. Un problème analogue au précédent se pose aussi dans le cas o l'on utilise un registre à décalage de sortie unique pour véhiculer les réponses des -6- divers modules. Il peut en effet se produire des situations o une réponse contenue dans l'étage du registre à décalage placé en amont d'un des modules entre en conflit avec la réponse disponible en sortie de ce module. Une solution pourrait consister à prévoir au niveau du processeur un mécanisme de contrôle des adresses pour prévenir dans tous les cas ce genre de situation. Mais cette solution complique la tâche du processeur, ce qui dégrade ses performances. Aussi selon une autre variante de l'invention, on résoud ce problème d'une façon analogue à la solution au problème précédent. Dans ce but, l'invention concerne également une mémoire en outre caractérisée en ce que ledit registre à décalage de sortie comporte un étage supplémentaire placé en aval du dernier étage et en amont du premier étage dudit registre à décalage de sortie, en ce que la sortie dudit étage supplémentaire est reliée à l'entrée dudit processeur et à l'entrée d'un circuit d'acquittement des réponses associé audit processeur ledit circuit d'acquittement des réponses comprenant des moyens pour associer à chaque réponse transférée au premier étage dudit registres à décalage de sortie un indicateur de réponse véhiculé par ledit registre à décalage de sortie, ledit indicateur de réponse prenant une première valeur déterminée si ladite réponse est acceptée par le processeur, et en ce que chaque module est associé à un circuit de contrôle des réponses comprenant un dispositif de sélection des réponses autorisant le transfert sur l'étage placé en aval dudit module - soit d'une réponse disponible à la sortie dudit module si la valeur dudit indicateur de réponse contenue dans l'étage situé en amont dudit module est égale à ladite première valeur déterminée, - soit de la réponse contenue dans ledit étage amont dans le cas contraire, et en ce que ledit circuit de contrôle des réponses comprend des moyens pour forcer ledit indicateur de réponse à une seconde valeur déterminée si une réponse issue dudit module est transférée sur ledit étage aval. D'autres caractéristiques et détails de réalisation de l'invention seront exposées dans la suite de la description en relation avec les figures o: - 7 - - La figure 1 montre un schéma de réalisation de la présente invention. - La figure 2 montre une variante de réalisation de la présente invention. - Les figures 3 et 4 montrent des détails de réalisation de la variante, selon la figure 2. - La figure 5 montre une deuxième variante de réalisation de 1 'invention. La figure i représente une mémoire conformément à l'invention selon un mode de réalisation simplifié. La mémoire comprend plusieurs modules mémoire MM1, MM2,...,MMi,...,MMn. La mémoire coopère avec un dispositif utilisateur tel qu'un processeur P, et 1is communique avec lui par ses interfaces d'entrée-sortie. Chaque module MMi comporte une interface d'entrée IEi pour recevoir des demandes de l'extérieur, une demande correspondant à un ordre de lecture ou d'écriture dans le module considéré. En général, une demande est constituée d'un code de fonction servant à définir l'opération à effectuer par la mémoire, d'une information d'adresse et, dans le cas d'une écriture, des données à écrire. La demande peut également comporter une étiquette d'origine servant à iuentifier la demande. L'interface d'entrée comprend un registre d'entrée servant à mémoriser les demandes reçues ainsi qu'un décodeur d'adresse servant notamment à sélectionner le module considéré, par exemple en réponse au poids fort de l'adresse reçue. L'interface de sortie ISi est reliée aux lignes de sortie de la mémoire. L'interface ISi comprend un registre de sortie servant à emmagasiner les réponses avant qu'elles soient prises en compte par le processeur. Une réponse est constituée des données lues, dans le cas d'une lecture accompagnée généralement d'un compte rendu d'erreurs servant à informer le processeur si l'opération demandée a été correctement ou non effectuée. Une réponse peut également comprendre une étiquette de destination servant à -8- identifier la réponse. Généralement, les étiquettes d'origine d'une demande et celle de destination pour la réponse correspondante sont identiques. Dans le cas d'un processeur composé de plusieurs processeurs élémentaires, l'étiquette peut servir à identifier le processeur élémentaire qui a émis la demande. Le processeur fournit ses demandes sur des lignes d'entrée LE par l'intermédiaire d'un circuit d'interface de sortie comportant un ou plusieurs registres. Une interface d'entrée du processeur, comportant également un ou plusieurs registres reçoit les réponses de la mémoire par l'intermédiaire des lignes de sortie LS. Conformément à l'invention, les demandes issues du processeur accèdent aux divers modules de la mémoire par l'intermédiaire d'un registre à décalage d'entrée constitué des étages RE1,RE2,...REj,...REn_1. Les lignes d'entrée LE sont reliées à l'entrée du premier étage REni1 du registre à décalage d'entrée et la sortie de chaque étage REi est reliée à l'entrée d'un module correspondant MMi ainsi qu'à l'entrée de l'étage suivant REj_1. Le premier module MMn peut être relié directement aux lignes d'entrée LE. La mémoire comprend également un registre à décalage de sortie constitué des étages RS1,RS2,...RSi,...RSn_1. Chaque étage RSi du registre à décalage de sortie a sa sortie reliée à la sortie d'un module correspondant MMi et à l'entrée de l'étage suivant RSi.1. Chaque étage des registres à décalage d'entrée et de sortie reçoit sur son entrée d'horloge un signal d'horloge h engendré par un circuit d'horloge H. Ce signal d'horloge h est également appliqué au processeur P. pour sa synchronisation. Le dispositif de la figure 1 fonctionne de la façon suivante: lors d'une opération de lecture ou d'écriture commandée par le processeur P, ce dernier délivre sur la ligne d'entrée LE une succession de demandes D1,D2. Dx au rythme du signal d'horloge h. Chaque fois que cela est possible, le processeur accède à la mémoire en mode entrelacé et, dans ce cas, la première demande D1 s'adresse au module MM1, la seconde demande - 9 - D2 s'adresse au module MM2, etc... Apres l'envoi de n demandes, c'est-à-dire après n décalages, les demandes D1,D2,...Dn l, sont disponibles en sortie respectivement des étages RE1,RE2,...REn_i, la demande Dn étant disponible à la sortie du registre de sortie du processeur P. Ainsi les modules MMi reçoivent simultanément une demande qui leur est destinée. Apres un temps de cycle des modules, les réponses sont disponibles en sortie des modules MMi et pourront être introduites dans l'étage aval correspondant RSil du registre à décalage de sortie. A chaque décalage provoqué par le signal d'horloge h, le processeur P reçoit une réponse dont l'ordre d'arrivée correspond à l'ordre d'envoi de la..DTD: demande correspondante. On constate donc que le temps total d'accès à des données est totalement indépendant du module dans lequel se trouvent ces données. La mémoire doit être aussi en mesure de fonctionner dans un mode non entrelacé, c'est-à-dire selon lequel des demandes successives sont adressées à des modules quelconques. Compte tenu du fait que le temps de cycle des registres à décalage est prévu pour être très inférieur au temps d'accès des modules, il faut éviter que deux demandes rapprochées s'adressent au même module. De même, il faut éviter qu'une réponse issue d'un module entre en conflit avec une réponse placée dans l'étage situé en amont de ce module. Ces situations peuvent être évitées grâce à un mécanisme de gestion des adresses commandé par le processeur. Cependant, cette solution présente l'inconvénient d'alourdir la tâche du processeur et risque de réduire ses performances. La variante de réalisation représentée à la figure 2 permet de résoudre ce problème sans présenter les inconvénients précités. Sur la figure 2, on retrouve avec les mêmes signes de références les modules mémoire, les registres à décalage d'entrée et de sortie et le processeur. Par rapport à la figure 1, la figure 2 présente les différences suivantes. Tout d'abord le registre à décalage d'entrée est complété par un étage supplémentaire REn placé en aval du dernier étage RE1 du registre à décalage d'entrée. La sortie de cet étage supplémentaire REn est reliée à un circuit de contrôle des demandes 1. - 10 - De plus, chaque module mémoire MMi est associé à un circuit d'acquittement Ai dont l'entrée est reliée à l'étage amont REi du registre à décalage d'entrée et dont une sortie est reliée à l'étage aval REi.1. Une autre sortie du circuit d'acquittement Ai est reliée à l'entrée du module associé MMi. Le circuit d'acquittement Ai reçoit également un signal d'acquittement ACKi issu du module mémoire associé. La sortie du circuit de contrôle des demandes i est directement reliée à l'entre-, circuit d'acquittement An associée au module MMn. Le circuit de contrôle aes demandes 1 est relié en entrée à l'interface de sortie du processeur P par les lignes d'entrée LE. Ce circuit 1 reçoit en outre du processeur P un signal DEM indiquant que le processeur est prêt pour envoyer une nouvelle demande. Le circuit 1 fournit enfin au processeur P un signal SP qui sera défini ultérieurement. Bien que cela ne soit pas visible sur la figure 2, les étages REi du registre à décalage d'entrée comportent, en plus des bascules affectées aux signaux de demande, une bascule supplémentaire et les liaisons entre les étages comportent une ligne supplémentaire associée à cette bascule. Le but de cette bascule et de cette ligne supplémentaire est de pouvoir véhiculer un indicateur binaire B dont la valeur logique indique si la demande associée a été prise en compte ou non par l'un des modules de la mémoire. Le fonctionnement détaillé des circuits d'acquittement et du circuit de contrôle de demandes seront exposés plus en détail en référence à la figure 3. Néanmoins, on peut déjà indiquer dans les grandes lignes le fonctionnement du registre à décalage d'entrée selon la variante de la figure 2. En supposant qu'une demande peut être envoyée à la mémoire, le circuit de contrôle i délivre à sa sortie la demande proprement dite accompagnée de l'indicateur B dont la valeur logique indique la présence d'une demande valide, c'est-à-dire non encore acceptée par la mémoire. Cette demande et l'indicateur associé progressent dans le registre à décalage tant qu'ils n'ont pas atteint le module destinataire identifié par l'adresse. Lorsque la demande arrive dans l'étage placé en amont du module destinataire, l'adresse contenue dans la demande est reconnue par ce module et si ce - 11 - module est disponible, il transmet un signal d'acquittement ACKi au circuit d'acquittement Ai. Au cycle d'horloge suivant, la demande est transmise à l'étage aval mais le circuit d'acquittement force l'indicateur B à une autre valeur logique indiquant que la demande a été acceptée par le module MMi. Si le module n'est pas disponible, celui-ci envoie un signal d'acquittement ACKi ayant la valeur complémentaire. Au temps d'horloge suivant la demande est aussi transmise à l'étage aval mais l'indicateur B conserve sa valeur initiale. La demande et son indicateur progressent ensuite dans le registre à décalage d'entrée et arriveront dans l'étage supplémentaire REn. Lorsque le processeur est -prêt à envoyer une demande, il positionne le signal DEM à une première valeur déterminée. Ce signal est reçu par le circuit de contrôle des demandes 1 qui comprend des moyens pour tester la valeur logique de l'indicateur B contenu dans l'étage REn. Si la valeur de l'indicateur B indique une demande valide, la demande et l'indicateur contenus dans le registre REn sont transmis à l'entrée du premier circuit d'acquittement An et la demande du processeur n'est pas autorisée à être introduite dans le registre à décalage. Si l'indicateur contenu dans le registre REn indique une demande non valide, la aemianue du processeur est introduite dans le registre à décalage par l'intermédiaire de la ligne de sortie du circuit de contrôle des demandes 1. Le processeur est informé si sa demande est acceptée ou non par le signal SP engendré par le circuit de contrôle des demandes 1. Nous voyons que cette solution résoud le problème posé précédemment car dans le cas o deux demandes trop rapprochées seraient présentées au même module mémoire, la deuxième demande qui ne peut pas être prise en compte par ce module continue à progresser dans le registre à décalage et sera réintroduite à l'entrée de ce. registre après n décalages. Cette demande se présentera à nouveau à l'entrée du module destinataire et une nouvelle tentative de prise en compte sera à nouveau effectuée. Par rapport à la figure 1, la réalisation selon la figure 2 présente aussi des modifications portant sur le registre à décalage de sortie, Chaque module MMi est associé à un circuit de contrôle des réponses Ci relié à la sortie du module correspondant. Chaque circuit de contrôle - 12 - des réponses a une autre entrée reliée à la sortie de l'étage RSi situé en amont du module correspondant et a sa sortie reliée à l'entrée de l'étage RSi.1 situé en aval du module correspondant. Chaque circuit de contrôle des réponses Ci reçoit également un signal Ri issu du module associé et dont la valeur logique est représentative d'une réponse disponible en sortie du module. Le circuit de contrôle des réponses C1 associé au dernier module MM1 a sa sortie reliée à un étage supplémentaire RSn du registre à décalage de lo sortie. Le circuit de contrôle des réponses Cn associé au premier module MMn a une entrée reliée à la sortie d'un circuit d'acquittement des réponses 2 dont l'entrée est reliée à la fois à la sortie de l'étage supplémentaire RSn et à l'entrée du processeur. Le circuit d'acquittement des réponses 2 reçoit également du processeur P un signal RACK dont la valeur logique est indicative d'une réponse acceptée par le processeur. Chaque circuit de contrôle des réponses Ci fournit au module associé un signal SMi qui sera défini ultérieurement. Chaque étage RSi du registre à décalage de sortie comprend une bascule supplémentaire (non représentée) et les liaisons reliant les étages entre eux comportent une ligne supplémentaire. La bascule supplémentaire et la ligne supplémentaire permettent de véhiculer un indicateur de réponse Br ayant une première valeur logique lorsque la réponse associée a déjà été acceptée par le processeur et une seconde valeur logique lorsque cette réponse n'a pas été acceptée. Le registre à décalage de sortie selon la figure 2 fonctionne de la façon suivante. Lorsqu'une réponse valide, c'est-à-dire non encore acceptée par le processeur est présente dans l'étage supplémentaire RSn et que cette réponse est acceptée par le processeur, ce dernier envoie au circuit d'acquittement des réponses 2 un signal RACK ayant une première valeur logique indiquant que la réponse est acceptée. Le circuit d'acquittement des réponses 2 transmet alors la réponse contenue dans l'étage RSn vers le circuit de contrôle des réponses Cn du premier module 4Mn. Simultanément le circuit d'acquittement des réponses 2 force l'indicateur de réponses Br associé à la première valeur logique. - 13 - Si la réponse n'est pas acceptée par le processeur, celui-ci envoie un signal RACK ayant une deuxième valeur logique et en réponse à ce signal, le circuit d'acquittement des réponses 2 transmet la réponse contenue dans l'étage RSn et l'indicateur Br associé directement à l'entrée du circuit de contrôle des réponses Cn sans modifications. Lorsqu'un module MMi a une réponse prête, ce dernier envoie au circuit de contrôle des réponses associé Ciun signal Ri ayant une première valeur logique. Si l'indicateurBr contenu dans l'étage situé en amont du module a o10 la première valeur logique déterminée, le circuit de contrôle de réponses Ci met en communication la sortie du module associé avec l'entrée de l'étage RSi_1 situé en aval de ce module. Simultanément le circuit de contrôle des réponses Ci force l'indicateur de réponse Br associé à la deuxième valeur logique et le transmet à la bascule correspondante de l'étage aval Ci_1. Si l'indicateur contenu dans l'étage situé en amont du module a une valeur égale à la deuxième valeur logique, la réponse disponible en sortie du module est bloquée et le contenu de l'étage amont RSi est transmis directement dans l'étage aval RSi_1. Lorsqu'une réponse disponible dans un module Mli a été introduite dans le registre à décalage de sortie cela est signifié au module MMi par le signal SMi. Le registre à décalage de sortie selon la figure 2 permet donc d'éviter la collision de deux réponses, l'une issue d'un module mémoire, l'autre issue de l'étage situé en amont de ce module. La figure 3 montre avec plus de détails le circuit de contrôle des demandes 1 et les circuits d'acquittement Ai utilisés dans la figure 2. Le circuit de contrôle des demandes 1 est constitué d'un circuit de sélection lB et d'un circuit de commandes 1A. Le circuit de sélection lB comprend un premier multiplexeur 3 à deux entrées, une première entrée recevant un signal logique fixe, l'autre entrée étant reliée à la bascule de l'étage REn contenant l'indicateur B.,Un deuxième multiplexeur 4 à deux - 14 - entrées a sa première entrée reliée à la sortie du processeur P et sa seconde entrée reliée aux sorties des autres bascules de l'étage REn. Les deux multiplexeurs 3 et 4 sont commandés par un signal SP issu du circuit de commandes 1A. Le circuit de commandes 1lA reçoit l'indicateur contenu dans l'étage REn et le signal DEM. Dans l'exemple de réalisation représenté, nous avons supposé que l'indicateur est un élément binaire qui lorsqu'il prend la valeur i logique indique que la demande est valide donc non encore acceptée par la mémoire. o10 Lorsque l'indicateur prend la valeur 0 logique, la demande associée a été acceptée par la mémoire. Par ailleurs, nous avons supposé que lorque le signal SP prend la valeur 1 logique, les multiplexeurs 3 et 4 mettent en communication leur entrée supérieure avec leur sortie. Enfin, nous supposerons que le signal DEM prend la valeur i logique lorsqu'une demande est présente à la sortie du processeur. Le circuit de contrôle des demandes fonctionne de la façon suivante. Le circuit de contrôle 1A délivre le signal SP avec la valeur 1 logique lorsque l'indicateur B a la valeur 0 logique et lorque le signal DEM a la valeur i logique. Le signal SP prend la valeur 0 logique dans les cas contraires. Ainsi, lorque SP est égal à 1, la demande présente en sortie du processeur est transmise à la sortie du multiplexeur 4 et simultanément l'indicateur B prend la valeur i logique en sortie du multiplexeur 3. Si SP est égal à O, le contenu de l'étage REn est alors présent aux sorties des multiplexeurs 3 et 4. Le signal SP est également transmis au processeur P pour l'informer si sa demande a été introduite ou non dans le registre à décalage d'entrée. La réalisation du circuit de commandes 1A ne sera pas décrite plus en détails car elle ne présente aucune difficulté pour l'homme du métier. Les circuits d'acquittement An et An_1 associés aux deux premiers modules MMn et MMnl1 sont également représentés sur la figure 3. Le circuit d'acquittement An-1 associé au second module MMn-_ est simplement constitué d'une porte logique 5 à deux entrées dont la première entrée reçoit le signal d'acquittement ACKn_1 du module associé et dont la seconde entrée - 15 -63293 est reliée à la sortie de la bascule de l'étage amont affectée à l'indicateur. La sortie de la porte 5 est reliée à l'entrée de la bascule de l'étage aval affectée à l'indicateur. En fonctionnement, lorqu'une demande est adressée au module MMn-1 et que cette demande est présente dans le registre REni, si la demande est valide c'est-à-dire si l'indicateur B contenu dans ce dernier registre a la valeur 1 logique et si la mémoire est disponible, la mémoire prend en compte la demande et délivre un signal d'acquittement ACKni ayant la valeur 1 logique. La porte logique 5 délivre alors en sortie la valeur 0 logique. Si une demande non valide, c'est-à-dire avec B égal O, est contenue dans le registre REni, cette demande est mise directement en communication avec l'étage aval REn_2 sans modification de l'indicateur B. i5 Le circuit d'acquittement associé au premier module MM, est identique, à la différence près que ses entrées ne sont pas reliées à l'étage amont du registre à décalage d'entrée mais aux sorties du circuit de sélection lB. Les autres étages du registre à décalage d'entrée sont identiques au premier et n'ont donc pas été représentés sur la figure 3. La figure 4 représente les modes de réalisation du circuit d'acquittement des réponses 2 et des circuits de contrôle des réponses Ci. Le circuit d'acquittement des réponses 2 comprend essentiellement une porte logique 6 recevant sur une première entrée l'indicateur Br contenu dans l'étage RSn du registre à décalage de sortie. La porte 6 reçoit sur sa seconde entrée le signal RACK issu du processeur P. La sortie de la porte 6 est reliée au circuit de contrôle des réponses Cn du module MMn. Conformément à la convention exposée précédemment, lorsque l'indicateur Br a la valeur 1 logique, cela signifie que la réponse associée est valide c'est-à-dire qu'elle n'a pas été acceptée par le processeur. On suppose également que le signal RACK prend la valeur 1 logique lorsque le processeur accepte une demande valide. 2 632093 16- Compte tenu de cette convention, le fonctionnement du circuit d'acquittement des réponses est le suivant. Lorsqu'une réponse contenue dans le registre RSn est associée à un indicateur de réponse Br dont la valeur logique est égale à 1, cela signifie que cette réponse valide devrait être prise en compte par le processeur. Si tel est le cas, le signal RACK délivré par le processeur prend la valeur i logique et le circuit 6 délivre en sortie la valeur 0 logique. Dans le cas contraire, le signal RACK a la valeur 0 logique et la sortie du circuit 6 prend la valeur 1 logique signifiant ainsi que la demande n'a pas été acceptée par le o10 processeur. Si par contre, l'indicateur Br contenu dans le registre RSn a la valeur 0 logique, la sortie 6 prend la valeur 0 logique également. La figure 4 représente seulement les circuits de contrôle des réponses associés aux deux premiers modules MMn et MMn-1 car les circuits associés aux autres modules sont identiques. Nous allons maintenant considérer le circuit de contrôle des réponses Cn1 associé au deuxième module MMn_1. Ce circuit est constitué d'un circuit de sélection 2Cnl et d'un circuit de commande ICn_1. Le circuit de sélection 2Cn_1 comprend deux multiplexeurs 7 et 8 à deux entrées. La première entrée du premier multiplexeur 7 est reliée à la sortie de la partie de l'étage RSni1 affectée à la réponse proprement dite. La seconde entrée du multiplexeur 7 est reliée à la sortie du module MMn.1. La première entrée du second multiplexeur 8 est reliée à la sortie de la bascule de l'étage RSn.1 affectée à l'indicateur de réponse Br. Sa seconde entrée est maintenue à la valeur i logique. Le circuit de commande lCn_1 est relié en entrée à la sortie de la bascule de l'étage RSni1 contenant l'indicateur de réponse Br. Le circuit lCn_1 reçoit également le signal Rn_1 du module MMn_1. Nous supposons que le signal Rn.1 prend la valeur i logique lorsqu'une demande est disponible dans le module MMn-1. La sortie Sn_1 du circuit 1Cn_1 est reliée à l'entrée de commande des deux multiplexeurs 7 et 8. Lorsque le signal Sn_1 a la valeur i logique, les multiplexeurs 7 et 8 mettent en communication leur entrée inférieure avec leur sortie. Le circuit de commande 1Cn_1 est conçu de façon à ce que lorsque le signal Rn_1 a la valeur 1 logique et que l'indicateur Br a la valeur 0 logique, le signal Sn-1 prend la valeur 0 - 17 - logique autorisant ainsi le transfert de la réponse présente dans l'interface de sortie du module MMn_1 dans l'étage aval RSn_2. Simultanément, l'indicateur Br fourni au registre aval prend la valeur 1 logique. Si l'indicateur de réponse Br contenu dans le registre RSn1 a la valeur 1 logique, signifiant ainsi que la réponse est valide, le circuit de commande lCn_1 délivre un signal SMn_, au module MMn-1 pour informer ce module que la réponse ne peut pas être introduite dans le registre à décalage de réponse. De plus, le signal Sn-1 prend la valeur O logique et la demande contenue dans l'étage RSn_1 est intégralement transférée dans le registre aval RSn_2. Il en résulte que l'indicateur de réponse introduit dans le registre aval conserve la valeur 1 logique. Bien entendu, si aucune réponse n'est disponible dans le module MMn1.i, le signal RnI prenant alors la valeur O logique, le signal Sn-1 prend la valeur O logique autorisant ainsi le transfert sans modification de la demande contenue dans l'étage RSni1 vers l'étage RSn-2 Le circuit de contrôle des réponses Cn associé au premier module MMn est 2G identique mais la première entrée de second multiplexeur est reliée à la sortie de la porte logique 6 du circuit d'acquittement des réponses 2. La figure 5 représente une autre variante de réalisation de la mémoire selon l'invention. Sur cette figure, on retrouve avec les mêmes références les éléments déjà représentés sur la figure 2. Cependant selon cette variante, les circuits de contrôle des réponses C1,...,Ci...,Cn sont reliés aux sorties de l'étage situé en amont du module précédent. Ces circuits Ci reçoivent également le signal Rî+l issu du module amont MMi+1. Selon cette variante, les circuits de contrôle des réponses Ci sont conçus de façon à déterminer avec un temps de cycle d'avance les conditions pour autoriser le transfert d'une réponse du module MMi associé vers l'étage aval du registre à décalage de sortie. Si nous considérons le deuxième circuit de contrôle des réponses Cn_-1 associé au deuxième module MMn-1, ce circuit autorisera le transfert d'une réponse disponible dans le module associé MMn_1 lorsque aucune - 18 - 2632093 réponse valide n'est présente en amont du module MMn et qu'aucune réponse n'est disponible dans ce module. Selon cette variante de réalisation, nous disposons d'un mécanisme d'anticipation permettant de compenser les retards éventuels introduits par le circuit de contrôle des réponses de l'étage précédent. Pour des raisons analogues, un mécanisme d'anticipation est également prévu dans le registre à décalage d'entrée. Selon cette autre variante, le circuit de contrôle des demandes 1 est relié à la sortie de l'étage RE1 et reçoit le signal ACK1 engendré par le module MM,1. Le circuit de contrôle des demandes 1 est alors conçu de façon à ce qu'une demande issue du processeur P soit autorisée à être introduite dans le registre à décalage d'entrée lorsqu'une demande contenue dans l'étage RE1 n'est pas valide ou lorsque cette demande est valide alors que le signal ACK1 indique que cette demande sera acceptée par 1.e module MM1 car celle-ci est destinée à ce module et ce module est disponible. La réalisation selon ces variantes du circuit d'acquittement des réponses 2, des circuits de contrôle des réponses Ci, du circuit de contrôle des demandes 1 et des circuits d'acquittement Ai ne nécessite pas d'explications complémentaires car elles sont tout à fait à la portée de l'nomme du métier compte-tenu des explications déjà données en référence aux figures 3 et 4, o sont représentées en pointillés les modifications à apporter aux liaisons. - 19 - 2632093 -19 - Revendications: 1. Mémoire à plusieurs modules (MMi) destinée à recevoir des demandes d'au moins un processeur (P), lesdites demandes ayant la forme de signaux de commandes, d'adressages et éventuellement de données, chaque module comportant des moyens pour décoder lesdites demandes apparaissant sur son entrée et des moyens pour fournir des signaux de réponse auxdites demandes, ladite mémoire étant caractérisée en ce que lesdites demandes sont transmises à l'entrée de chacun desdits modules (MMi) par l'intermédiaire d'un registre à décalage d'entrée (RE1...REi...REni), en ce que les réponses issues dudit module (MMi) sont transmises à l'entrée dudit o10 processeur (P) par l'intermédiaire d'un registre à décalage de sortie (RSi...RSi...RSn_1), en ce que le nombre d'étages dudit registre à décalage d'entrée est différent pour chacun des modules associés et en ce que le nombre total d'étages appartenant aux registres à décalage d'entrée et de sortie associés à l'un desdits modules (MMi) est constant et indépendant du 1l module considéré. 2. Mémoire selon la revendication 1, caractérisée en ce qu'elle comporte un seul registre à décalage d'entrée et un seul registre à décalage de sortie communs à tous les modules, la sortie dudit processeur (P) étant reliée à l'entrée du premier étage (REnl) dudit registre à décalage d'entrée, l'entrée dudit processeur (P) étant reliée à la sortie du dernier étage (RS1) dudit registre à décalage de sortie et en ce que la sortie de chaque étage (REi) de registre à décalage d'entrée est reliée à l'entrée d'un desdits modules (MMi), la sortie dudit module (MMi) étant reliée à la sortie de l'étage (RSi) de même rang du registre à décalage de sortie. 3. Mémoire selon la revendication 2, caractérisée en ce que la sortie dudit processeur (P) est directement reliée à l'entrée d'un module (MMn) dont la sortie est reliée à l'entrée du premier étage (RSn_1) du registre à décalage de sortie. 4. Mémoire selon l'une des revendications 2 ou 3, caractérisée en ce que chaque module (MMi) est associé à un circuit d'acquittement des demandes (Ai) pour associer à chaque demande un indicateur de demande (B) véhiculé par ledit registre à décalage d'entrée, ledit circuit d'acquittement des - 20 2632093 - 20 - o y demandes (Ai) forçant ledit indicateur de demandes (B) à une première valeur déterminée lorsqu'un signal d'acquittement (ACKi) délivré par ledit module (MMi) indique que ledit module (MMi) accepte la demande présente à son entrée et en ce que ledit registre à décalage d'entrée comporte un étage supplémentaire (REn) placé en aval du dernier étage (RE1) dudit registre à décalage, la sortie dudit étage supplémentaire (REn) étant reliée à un circuit de contrôle des demandes (1) associé audit processeur, ledit circuit de contrôle des demandes (1) comportant un dispositif de sélection des demandes (lB) autorisant le transfert à l'entrée dudit registre à décalage d'entrée soit d'une nouvelle demande, si la valeur dudit indicateur (B) contenue dans ledit étage supplémentaire (REn) est égale à ladite première valeur déterminée, soit de la demande contenue dans ledit étage supplémentaire (REn) dans le cas contraire, l'indicateur de demande (B) associé à toute nouvelles demande prenant une seconde valeur déterminée. 5. Mémoire selon la revendication 4, caractérisée en ce que ledit circuit de contrôle des demandes (1) reçoit ledit signal d'acquittement (ACK1) du dernier module (MM1) associé au dernier étage (RE1) du registre à décalage d'entrée et en ce que ledit circuit de contrôle des demandes (1) commande ledit dispositif de sélection des demandes (lB) pour autoriser le transfert d'une nouvelle demande à l'entrée dudit registre à décalage d'entrée lorsque la valeur de l'indicateur de demande (B) contenue dans ledit dernier étage (RE1) est égale à ladite première valeur déterminée ou lorsque, ledit indicateur ayant ladite seconde valeur déterminée, la demande contenue dans ledit dernier étage adresse le dernier module (MM1) et que ledit dernier module est disponible. 6. Mémoire selon l'une des revendications 2 à 5, caractérisée en ce que ledit registre à décalage de sortie comporte un étage supplémentaire (RSn) placé en aval du dernier étage (RS1) et en amont du premier étage (RSn_1) dudit registre à décalage de sortie, en ce que la sortie dudit étage supplémentaire (RSn) est reliée à l'entrée dudit processeur (P) et à l'entrée d'un circuit d'acquittement des réponses (2) associé audit processeur (P), ledit circuit d'acquittement des réponses (2) comprenant des moyens pour associer à chaque réponse transférée au premier étage (RSn_1) dudit registres à décalage de sortie un indicateur de réponse (Br) -21 - 263O 3 véhiculé par ledit registre à décalage de sortie, ledit indicateur de réponse (Br) prenant une première valeur déterminée si ladite réponse est acceptée par le processeur (P), et en ce que chaque module (MMi) est associé à un circuit de contrôle des réponses (Ci) comprenant un dispositif de sélection des réponses (2Ci) autorisant le transfert sur l'étage (RSi_I) placé en aval dudit module (MMi) - soit d'une réponse disponible à la sortie dudit module (MMi) si la valeur dudit indicateur de réponse (Br) contenue dans l'étage (RSi) situé en amont dudit module (MMi) est égale à ladite première valeur déterminée, - soit de la réponse contenue dans ledit étage amont (RSi) dans le cas contraire, et en ce que ledit circuit de contrôle des réponses (Ci) comprend des moyens (1Ci, 2Ci) pour forcer ledit indicateur de réponse (Br) à une seconde valeur déterminée si une réponse issue dudit module (MMi) est transférée sur ledit étage aval (RSij). 7. Mémoire selon la revendication 6, caractérisée en ce que ledit circuit de contrôle des réponses (Ci) d'un module (MMi) est relié à la sortie de 1 'étage (RSi+1) placé en amont du module précédant (MMi+1) et reçoit dudit module précédent un signal (Ri+1) indiquant que ledit module précédant (MMi+M) a une réponse disponible et en ce que ledit circuit de contrôle des e5 réponses (Ci) commande ledit dispositif de sélection des réponses (2Ci) pour autoriser le transfert d'une nouvelle réponse disponible dans ledit module (MMi) à l'entrée de l'étage (RSi_1) situé en aval dudit module (MMi) lorsque la valeur de l'indicateur de réponse (Br) contenue dans ledit étage amont (RSi+1) est égale à ladite première valeur déterminée et lorsqu'aucune réponse n'est disponible dans le module précédent (MMi+i). 8. Mémoire selon l'une des revendications précédentes, caractérisée en ce que les demandes contiennent en parallèle un code de fonction servant à définir 1 'opération à effectuer dans la mémoire, une information d'adresse, des données dans le cas d'une écriture et une étiquette d'origine dans le cas d'une lecture et en ce que les réponses contiennent en parallèle un compte rendu d'erreurs, une étiquette de destination correspondant à -22 - 2632093 l'étiquette d'origine pour la demande considérée et des données dans le cas d'une lecture. 9. Mémoire selon la revendication 8, caractérisée en ce que ledit processeur (P) étant constitué par une pluralité de processeurs élémentaires, ladite étiquette d'origine est représentative de l'identité du processeur élémentaire qui envoie la demande.