Brevet FR2640402A1 — publié le 19900615

DISPOSITIF DE COMMANDE DE MOIRE La présente invention se rapporte à un dispositif de commande de mémoire pour emploi dans des ordinateurs et dans des systèmes de traitement numérique de communication pour commander des mémoires. Un dispositif de commande de la mémoire relié à un dispositif de mémoire principale utilise un code de correction d'erreur (ECC) pour améliorer la fiabilité et la facilité d'emploi et de maintenance du dispositif de mémoire principale. Le traitement d'une écriture partielle avec un code de correction d'erreur dans ce type d'appareil de commande s'effectue de la façon suivante. Premièrement, les données et un code de correction d'erreur lus dans l'unité de mémoire principale subissent un traitement de correction avec le code de correction d'erreur et la partie désirée des données est fusionnée avec les données corrigées. Puis un autre code de correction d'erreur est généré sur la base des données ainsi fusionnées et le code de correction d'erreur, qui vient d'entre généré, et les données fusionnées sont écrites ensemble dans l'unité de mémoire principale. Au cours de l'opération d'écriture partielle, les données Re seront pas sauvegardées si l'adresse à laquelle on vient d'accéder fait l'objet d'une tentative d'accès de la part d'une autre source avant achèvement de l'écriture qui suit la lecture. Deux solutions sont proposées pour ce problème. Le premier procédé consiste à interdire l'autre demande d'accès en faisant en sorte que la durée du signal destiné à générer un signal d'occupation pour le bloc de mémoire auquel on a accédé soit supérieure à la durée habituelle d'une lecture ou d'une écriture. Le second procédé consiste à empêcher l'autre accès à la même adresse sur la base du résultat de la comparaison de l'adresse à laquelle on vient d'accéder et de l'adresse à laquelle l'accès vient d'être demandé. Habituellement, une écriture partielle nécessite une durée de cycle plus de deux fois plus longue qu'une écriture totale du fait qu'il s'y ajoute la fusion, et donc l'adresse de la demande provenant de la source de demande doit être retenue pendant cette durée de cycle d'écriture partielle. En particulier lorsque différents blocs sont impliqués dans une mémoire de configuration imbriquée, un dispositif de commande de mémoire fonctionnant dans un unique cycle de machine présente l'inconvénient que la durée du cycle de remise en circulation des données et analogues doit être plus longue de façon à correspondre à la longueur supplémentaire de la durée du cycle d'écriture partielle et, en outre, qu'il faut un volume plus important de matériel informatique pour retenir l'adresse de la demande au cours de l'écriture partielle. Un but de la présente invention est donc de proposer un dispositif de commande de mémoire qui puisse contribuer à réduire le volume de matériel informatique nécessaire en éliminant l'inconvénient mentionné ci-dessus qui se présente au moment de l'écriture partielle. Selon l'invention, on propose un dispositif de commande de mémoire comportant une mémoire-tampon de réception des demandes pour Recevoir les demandes provenant d'une unité de traitement arithmétique et d'une unité de traitement des entrées/ sorties ; un circuit de sélection des demandes pour juger de la priorité relative entre les différentes unités pour les demandes provenant de la mémoire de réception des demandes et pour sélectionner l'une des demandes; un circuit d'émission pour générer une instruction de lecture ou d'écriture sur la base de la demande sélectionnée par le circuit de sélection des demandes et pour émettre l'instruction en même temps qu'une adresse d'instruction et que des données d'écriture; une unité de mémoire principale, comprenant un registre d'adresses présentant une fonction de retenue et sensible au signal de sortie provenant du circuit d'émission concernant une lecture ou une écriture; une section d'instruction de retenue pour donner instruction au registre d'adresses de l'unité de mémoire principale de retenir l'adresse, émise par le circuit d'émission, au moins jusqu'à l'achèvement de l'écriture partielle; une section de réponse, sensible au signal de sortie du circuit d'émission pour corriger, et renvoyer à la source de demande d'accès, des données de réponse fournies par ladite unité de mémoire principale; une section de fusion, sensible à une instruction d'écriture partielle provenant de la source d'instructions d'accès, pour envoyer une demande de lecture à l'unité de mémoire principale, et pour fusionner les données de réponse, fournies par l'unité de mémoire principale en réponse à cette instruction de lecture, et les données provenant de la source d'instructions; etune section d'écriture pour écrire dans l'unité de mémoire principale les données fusionnées par cette section de fusion. Les caractéristiques, configurations et avantages de la présente invention apparattront mieux à partir de la description détaillée qui suit, prise en liaison avec les dessins joints sur lesquels: La figure 1 illustre une réalisation préférée de l'invention, et La figure 2 illustre une configuration proposée pour la partie caractéristique de la réalisation préférée de l'invention. Sur ces figures, les mêmes repères désignent respectivement les mêmes éléments constitutifs. En se reportant à la figure 1, une réalisation préférée de la présente invention comporte une mémoire-tampon 10 de réception des demandes provenant de l'unité EPU1, pour recevoir une adresse de demande, des codes de demande indiquant une action telle qu'une écriture et qu'une lecture, et des données à mémoriser (collectivement désignés ci-dessous sous le nom de demandes) en provenance d'une première unité de traitement arithmétique (EPU1, non représentée), une mémoire-tampon 11 de réception des demandes en provenance de l'unité EPU2, pour recevoir les demandes provenant d'une seconde unité de traitement arithmétique (EPU2, non représentée); une mémoiretampon 12 de réception des demandes en provenance de l'unité IOP, pour recevoir les demandes provenant d'une unité de traitement des entrées/des sorties (IOP, non représentée); un circuit 13 de vérification d'occupation pour vérifier l'occupation des blocs d'une unité de mémoire principale en ce qui concerne les demandes provenant de différentes sources de demandes par l'intermédaire de ces mémoires-tampons 10 à 12 et, lorsqu'un bloc a subi la vérification d'occupation, pour déterminer la priorité relative parmi les unités pour sélectionner en conséquence l'une des demandes ; un registre 20 de données à mémoriser pour sélectionner et mémoriser les données provenant de l'une des mémoires-tampons de réception 10 à 12, sélectionnée en fonction du signal de sortie du circuit 13 de vérification d'occupation; un registre 21 d'adresses de demandes pour sélectionner et mémoriser une adresse de demande provenant de l'une des mémoires-tampons 10 à 12 de réception sélectionnée en fonction du signal de sortie du circuit 13 de vérification d'occupation ; un registre 22 de codes de demandes pour sélectionner et mémoriser un code de demande provenant de l'une des mémoirestampons 10 à 12 de réception sélectionnée en fonction du signal de sortie du circuit 13 de vérification d'occupation ; un circuit 30 de conversion d'adresse pour convertir une adresse logique provenant du registre 21 d'adresses de demandes en une adresse physique; des registres d'adresses 40, 41 et 42 pour définir l'adresse physique, provenant du circuit de conversion d'adresse, au moment de l'accès aux blocs 0, 1, 2 et 4 de l'unité de mémoire principale et pour retenir l'adresse physique pendant le temps pris par un transfert entre une unité de commande d'action mémoire et l'unité de mémoire principale, c'est-à-dire deux fois la période de cycle de la machine ; un circuit 86 de génération d'un code de correction d'erreur pour générer un code de correction d'erreur sur la base des données à mémoriser provenant du registre 20 de données à mémoriser; un registre 82 de données partielles pour retenir, au moment de l'écriture partielle, les données à mémoriser fournies par une source de demande par l'intermédiaire du registre 20 de données à mémoriser, jusqu'au retour des données de réponse provenant de l'unité de mémoire principale; des registres 70 à 73 de données de réponse, pour mémoriser les données lues dans les blocs O à 3 respectivement; des circuits 74 et 75 de correction du code de correction d'erreur pour corriger les données qui se trouvent dans les registres de données 70 à 73 ; des registres 76 et 77 de résultat de correction du code de correction d'erreur pour mémoriser les résultats de correction provenant des circuits de correction du code de correction d'erreur ; un registre 83 des données faisant l'objet d'une écriture partielle pour mémoriser les données provenant de la mémoire-tampon 82 des données faisant l'objet de l'écriture partielle à l'instant défini dans les registres 76 et 77 un sélecteur bidirectionnel 78 pour sélectionner les octets dans les données de correction, constituées de multiplets de 16 bits, fournies par les registres 76 et 77 à l'instant de l'écriture partielle ; un circuit de fusion 84 pour ne remplacer, par les données à écrire provenant de la source de demande, que les octets indiqués par la source -de demande, parmi les données de huit octets sélectionnées par le sélecteur 78; un circuit de génération du code de correction d'erreur pour générer un code de correction d'erreur sur la base des nouvelles données générées par le circuit de fusion 84; des registres 87, 88, 89 et 90 de données à mémoriser, correspondant respectivement aux blocs 0, 1, 2 et 3 de l'unité de mémoire principale, pour mémoriser les données provenant du circuit 85 à l'instant de l'écriture partielle ou les données provenant du circuit 86 à l'instant de l'écriture totale ; et des registres 79, 80 et 81 d'envoi de la réponse pour faire, des données de correction provenant des registres 76 et 77, des données de réponse envoyées aux unités EPU1, EPU2 et IOP. On va décrire ci-dessous l'une des parties caractéristiques de la réalisation préférée de la présente invention. En réponse au fait que la demande d'écriture partielle a subi une vérification de la part du circuit 13 de vérification d'occupation, une mémoiretampon 31 de codes de demandes d'écriture partielle reçoit un signal indiquant une action et un signal indiquant un bloc de mémoire principale, l'un et l'autre mémorisés dans le registre 22 de code de demande. Etant donné qu'une demande d'écriture partielle s'exécute en deux phases distinctes, une phase de lecture et une phase d'écriture après fusion, la mémoire-tampon 31 de codes de demandes d'écriture partielle retient les instructions qui y ont été entrées jusqu'au moment de l'écriture. Un circuit 32 de génération du signal définissant un bloc de mémoire principale, jugeant quel bloc est demandé par une demande donnée, génère des signaux de définition pour les blocs 0, 1, 2 et 3. Chacun de ces signaux de définition comporte un signal de définition d'adresse, des données et un signal de validation d'écriture. Le signal de définition d'adresse n'est un "1" qu'à l'instant de écriture totale , de la lecture de l'octet ou du multiplet de 16 bits, ou de la lecture initiale de 1 partielle, mais il n'a pas cette valeur à l'instant de l'écriture qui suit l'écriture partielle. Cette disposition permet de se passer de retenir et de remettre en circulation l'adresse de la demande au moment de l'écriture partielle. Les données et le signal de validation d'écriture sont tous les deux un . "1" au moment de l'écriture complète habituelle et au moment de l'écriture complète qui suit l'écriture partielle. En se reportant à la figure 2, le registre 22 de code de demande mémorise un bit Vl indiquant la présence ou l'absence d'une demande. Si la valeur de ce bit V1 est "1", le contenu du registre a une signification. Un bit R de valeur "1" indique une demande de lecture d'un octet en provenance de la source de demande, et un bit BR de valeur "1" indique une demande de lecture du bloc en provenance de la source de demande. Au cours d'une action de lecture du multiplet de 16 bits, deux blocs de la mémoire sont utilisés, soit les blocs 0 et 1 soit les blocs 2 et 3. Un bit FW de valeur "1" indique une demande d'écriture totale provenant de la source de demande et un bit PW de valeur "1" indique une demande d'écriture partielle en provenance de la source de demande.B et N représentent les numéros des blocs de la mémoire auxquels il faut accéder. Lorsqu'unie demande a subi la vérification d'occupation de la part du circuit 13 de vérification d'occupation de la figure 1, les bits V1, R, BR, FW et PW, mentionnés ci-dessus, et les numéros de blocs P et N sont mémorisés dans le registre 22. La mémoire-tampon 31 de code de demande d'écriture partielle reçoit une écriture lorsque la demande qui se trouve dans le registre 22 de code de demande demande une écriture partielle. Alors, si à la fois le bit V1 et le bit PW qui se trouvent dans le registre 22 du code de demande ont la valeur "1", indique V2, indiquant la présence ou l'absence d'une demande dans la mémoire-tampon, prend la valeur "1". La demande qui se trouve dans cette mémoire-tampon est lue après avoir été retenue jusqu'au second instant d'écriture après la fusion, puis remis en circulation. Le signal de sortie prend la valeur "0" puisque le signal d'adresse apparat au second instant d'écriture partielle. Le bit V2 indique alors la présence d'une demande d'écriture. Du fait que la demande demande une écriture partielle, le bit BR a toujours la valeur "0", et les numéros de blocs sont fournis tels qu'ils sont. Un signal de bit provenant de la mémoire-tampon 200 est envoyé au circuit 32 de génération du signal de définition du bloc de mémoire principale. Le circuit 32 de génération du signal de définition du bloc de mémoire principale génère un signal de définition d'adresse, des données et un signal de validation d'écriture pour l'unité de mémoire principale, sur la base des signaux de sortie du registre 22 de code de demande et de la mémoiretampon 31 du code de demande d'écriture partielle. La section d'entrée du circuit de génération 32 est un sélecteur dans lequel le signal de sortie de la mémoire-tampon 31 du code de demande d'écriture partielle est entré au second instant d'écriture partielle. Pour qu'aucune demande n'entre dans le registre 22 de code de demande à cet instant, la vérification d'occupation pour les demandes provenant des mémoires-tampons de réception 10 à 12 de la figure 1 peut être interdite. Chaque fois que le signal de sortie du registre 22 de code de demande est entré, un signal de définition d'adresse est émis sans utilisation d'un code de demande. Les données, un signal de validation d'écriture et un signal de définition d'adresse ne sont émis que lors d'une demande d'écriture Si le signal de sortie de la mémoire-tampon 31 de demande d'écriture partielle est entré, l'entrée du signal de définition d'adresse est interdite et seul peuvent émis, les données, le signal de validation d'écriture et le signal de définition d'adresse. Le circuit 32 de génération de signal d'écriture dans le bloc de mémoire principale, de même que le circuit 32 de génération du signal de définition de ce bloc de mémoire principale, ne donnent un signal d'écriture de valeur 1 que si le bit FW a la valeur "1" sur la base du signal de sortie du registre 22 du code de demande. Chaque fois que le signal de sortie de la mémoire-tampon 31 du code de demande d'écriture partielle est entré, le signal d'écriture a la valeur "1". Etant donné que le registre d'adresses de l'unité de mémoire principale est du type à retenue, il retient son contenu actuel à moins d'avoir reçu un signal d'instruction de réinitialisation. Comme décrit jusqu'ici, puisque l'adresse de la demande est définie à l'instant de la première lecture si le bit PW, un élément d'une demande, a la valeur "1", et puisque l'adresse est retenue telle qu'elle est, il n'y a pas besoin de retenir et de remettre en circulation l'adresse de la demande avant de l'émettre. En se reportant à nouveau à la figure 1, la réalisation préférée de la présente invention comporte, en plus des éléments constitutifs déjà indiqués, des registres 50 à 53 de définition d'adresses, correspondant respectivement aux 0 à 3 de la mémoire principale, pour définir des adresses fournies par le circuit 32 de génération du signal définissant le bloc de mémoire principale, ainsi que des registres 60 à 63 de définition d'écriture, correspondant respectivement aux blocs 0 à 3 de mémoire principale, pour mettre en place des signaux de validation d'écriture fournis par le circuit de génération 32. Si la demande provenant de la source de demande demande une écriture totale ou si une écriture totale est demandée après fusion pour écriture partielle, le bit correspondant au bloc en question prend la valeur "1". La réalisation préférée de l'invention comporte en outre des registres d'écriture 64 à 67, correspondant respectivement aux blocs 0 à 3 de la mémoire principale, pour mémoriser des signaux d'écriture provenant du circuit 33 de génération du signal d'écriture dans le bloc de mémoire principale, et les signaux provenant des registres 64 à 67 sont envoyés dans les blocs des registres 60 à 63 dont les signaux de sortie ont la valeur "1". On va maintenant décrire schématiquement l'unité de mémoire principale à laquelle on doit accéder dans la réalisation préférée de l'invention. En se reportant à la figure 1, l'unité de mémoire principale est composée de quatre blocs, auxquels on a attribué les repères O, 1, 2 et 3. L'unité de mémoire principale est constituée de mémoires à accès direct et de registres d'adresses, et elle est entièrement commandée par le dispositif de commande d'accès en mémoire qui est une réalisation de la présente invention. Des registres d'écriture 100 à 103 correspondent respectivement aux blocs O, 1, 2 et 3 de la mémoire principale et entrent des signaux d'écriture pour les registres d'écriture 64 à 67. Les registres d'adresses 110 à 113 correspondent aux blocs 0, 1, 2, et 3 de la mémoire principale qui effectuent une opération de lecture ou d'écriture en fonction d'une adresse fournie par les registres 110 à 113. Les registres 120 à 123 de données à mémoriser reçoivent des données en provenance des registres 87 à 90 de données à mémoriser, et les mémorisent de façon correspondante dans les blocs 0 à 3 de la mémoire principale.De plus, l'unité de mémoire principale comporte des éléments de oémoire 130, 131, 132 et 134 des blocs 0, 1, 2 et 3 de la mémoire, respectivement, et des registres de lecture 140 à 143 pour recevoir respectivement les données provenant des éléments de mémoire 130 à 133. Les signaux de sortie des registres de lecture 140 à 143 sont envoyés dans les registres 70 à 73 de données de réponse, respectivement, du dispositif de commande d'accès en mémoire. Du fait que la présente invention fournit une configuration dans laquelle une adresse de demande transférée à l'unité de mémoire principale au premier instant de lecture pour une lecture partielle est retenue telle qu'elle est dans l'unité de mémoire r rincipale, il nty a pas besoin d'envoyer de nouveau une adresse au moment de l'écriture totale après fusion. Par conséquent l'absence de la nécessité de retenir puis de remettre en circulation une adresse de demande provenant d'une source de demande se traduit en un bénéfice permettant une réduction du volume de matériel informatique. REVENDICATION Dispositif de commande de mémoire comportant: une mémoire-tampon (10) de réception des demandes pour recevoir les demandes provenant d'une unité de traitement arithmétique (EPU1) et d'une unité de traitement des entrées/des sorties (IOP); un circuit (13) de sélection des demandes pour juger de la priorité relative entre les différentes unités pour les demandes provenant de la mémoiretampon (10) de réception des demandes et pour sélectionner l'une des demandes; un circuit d'émission (20,21,22,30) pour générer une instruction de lecture ou d'écriture sur la base de la demande sélectionnée par le circuit (13) de sélection des demandes et pour émettre l'instruction en même temps qu'une adresse d'instruction et que des données d'écriture;; une unité de mémoire principale, comprenant un registre d'adresses (40,41,42) présentant une fonction de retenue et sensible au signal de sortie provenant du circuit d'émission concernant une lecture ou une écriture; une section d'instruction de retenue pour donner instruction au registre d'adresses de l'unité de mémoire principale de retenir l'adresse, émise par le circuit d'émission, su moins jusqu'à l'achèvement de l'écriture partielle; une section de réponse (70-73,74,75,76,77, 79,80,81) sensible au signal de sortie du circuit d'émission pour corriger, et renvoyer à la source de demande d'acces, des données de réponse fournies par ladite unité de mémoire principale; ; une section de fusion (84), sensible à une instruction d'écriture partielle provenant de la source d'instructions d'accès, pour envoyer une demande de lecture à l'unité de mémoire principale, et pour fusionner les données de réponse, fournies par l'unité de mémoire principale en réponse à cette instruction de lecture, et les données provenant de la source d'instructions; et une section d'écriture pour écrire dans l'unité de mémoire principale les données fusionnées par cette section de fusion (84).