Brevet FR2427647A1 — publié le 19791228

La présente invention concerne un procédé permettant d'exécuter des contrôles d'erreurs dans des dispositifs à mémoire de calculateurs numériques et un agencement de circuit pour exécuter de tels contrôles d'erreurs. Dans les calculateurs numériques, la mémoire principale, c'est-à-dire la mémoire ou les mémoires de l'unité centrale de traitement,joue un rôle important; elle détient les instructions de programme et les zones de données en cours de traitement. Une erreur dans la mémoire se traduit, en regle générale, par une interruption du calculateur, par exemple, du calculateur de commande d'un procédé. Il est par conséquent nécessaire que la mémoire principale de l'unité centrale de traitement ne soit pas sujette a des dérangements. Dans les techniques de contrôle d'erreurs connues, qui permettent d'améliorer la fiabilité des dispositifs à calculateur, on fait appel à une représentation redondante des mots, c'est-à- dire des données et des instructions, qui doivent être traités dans un calculateur. Il est fait appel à des codes d'auto-contrôle et de correction d'erreurs, où sont utilisés davantage de bits qu'il n'est strictement nécessaire pour représenter l'information. Si, par exemple, un mot est écrit dans une mémoire, des bits de contrôle sont ajoutés aux bits de données. Les bits de contrôle permettent de détecter et de corriger des erreurs avec un circuit approprié lorsque le mot est lu dans la mémoire. Un exemple d'un tel code est le code Hamming dans lequel 4 bits sont ajoutés comme bits de contrôle à un mot de données de 8 bits On connaît également la détermination à deux dimensions des bits de parité pour la correction d'erreurs (A. P. Speiser, "Digitale Rechenanlagen",1961, pages 263 et 264). Dans ce cas, les sommes des rangées ainsi que les sommes des colonnes sont formées des bits individuels et contrôlées par un bit de parité qui rend la somme impaire lou paire). La technique citée en premier a l'inconvénient de nécéssiter des mémoires beaucoup plus grandes, ce qui implique une puissance et une place plus grandes des coûts plus importants, un risque de panne plus élevé et un temps d'accès à la mémoire qui est allongé. Dans la méthode citée en dernier, c'est-à-dire avec une organisation de mémoire orientée en bits, la position d'une erreur ne peut être exactement localisée, parce qu'une défaillance de puce se traduit par la perte d'un grand nombre de colonnes. La présente invention a pour objet de prévoir une mémoire centrale d'unité de traitement qui soit aussi peu sujette à dérangement que possible, permettant ainsi d'ameliorer la fiabilité du système entier du calculateur. Dans la présente invention, cet objet est atteint par un procédé qui est décrit dans la revendication 1 et par un agencement de circuit qui fait l'objet de la revendication 5. L'un des principaux avantages présentés par la présente invention est que même un simple bit à l'intérieur d'un mot de données, c'est-à-dire à l'intérieur d'un multiplet, peut être localisé d'une façon simple et peu coûteuse. La présente invention sera bien comprise à la lecture de la description suivante faite en relation avec les dessins cijoints dans lesquels La figure 1 représente schématiquement la formation des sommes des rangées et des colonnes du contenu d'un bloc de mémoire; La figure 2 est un diagramme représentant un agencement de circuit selon la présente invention; et La figure 3 représente un mode de réalisation de l'agence- ment de circuit de la figure 2. La méthode suivante permet la détection et la correction des erreurs se produisant dans une mémoire. A chaque mot de donnée devant être écrit dans une mémoire - dans le présent mode de réalisation il est constitué de huit bits - est ajouté un neuvième bit, ou bit supplémentaire. Il est déterminé en faisant le complément du nombre de "uns" logiques ("l't) contenus dans le mot de façon que ce nombre devienne impair (ou pair ). Ce bit dit de parité est écrit dans la mémoire avec le mot et est recalculé au moment de la lecture. Par comparaison du bit de parité recalculé au bit de parité stocké dans la mémoire, on peut détecter une erreur à l'inte- rieur d'une rangée de mémoire La position exacte de l'erreur à l'intérieur de la rangée ne peut pas encore être localisée. Pour localiser l'erreur, la zone entière de mémoire à vérifier qui correspond généralement#à la section d'adresse du calculateur,est divisée en sous-unités.-Une partie d'une mémoire principale AS, représentée dans la figure 1, est divisée en deux sousunités B1 et B2, appelées ci-après "blocs". Chaque bloc contient des positions de mémoire qui sont disposées en rangées ZE et en colonnes SP, et #qui sont chacune en mesure de con#tenir un bit. Comme on peut le voir dans la figure, une rangée de mémoire ZE peut stocker les huit bits d'un mot.Lorsqu'un mot est écrit dans une rangée de mémoire ZE, un générateur dit de parité qui sera décrit en liaison avec la figure 3 et qui peut être un circuit intégré, calcule la somme par rangée des bits à écrire, en détermine le bit de parité comme cela a été indiqué précédemment, et écrit ce bit de parité dans la neuvième position de la rangée. Ensuite, la somme arithmétique par colonne SU1, SU2 des mots de chaque bloc Bl , B2 est calculée et mémorisée. Les sommes des colonnes individuelles SP peuvent comprendre plusieurs bits. Les sommes par colonne SU1 et SU2 des blocs de mémoire B1 et B2 sont écrites, respectivement, dans des blocs de mémoire différents (puces), ce qui permet d'assurer qu'une erreur de sommation peut être localisée même s'il y a un défaut dans le bloc de mémoire respectif. Lorsqu'une erreur est détectée dans un bloc de mémoire par contrôle des bits de parité, l'adresse spécifiant l'instruction en cours d'exécution sera retenue, par exemple, avec l'agencement de circuit décrit ci-dessous. Le programmeen#cours de traitement dans le calculateur sera interrompu immédiatement, et un sousprogramme d'erreur à priorité sera entré. Le calculateur est alors amené à lire la totalité du contenu du bloc de mémoire qui a été identifié comme étant défectueux et dont l'adresse a été retenue, età calculer les sommes par colonne. Par comparaison des sommes par colonne recalculées aux sommes par colonne mémorisées, la colon ne erronée du bloc de mémoire et, par conséquent, le bit erroné peu vent être détectés et corrigés. Cela impose, naturellement, que l'affectation des blocs de mémoire Bl, B2 aux blocs contenant les sommes par colonne SU1, SU2 de ces blocs de mémoire soit connue. Si la capacité du bloc de mémoire est déterminée par le volume des modules de mémoire (puces) utilisés, dans la méthode selon la présente invention, une défaillance d'une puce de mémoire n' azura pas d'influence sur la fonction de mémorisation. La mémoire AS contient un bloc de mémoire supplémentaire normalement inutilisé (voir la description de la figure 2) où le contenu du bloc de mémoire qui a été identifié comme étant défectueux est écrit après la correction. C'est seulement après que le contenu complet du bloc a été transféré que le calculateur revient à la séquence normale de programme. L#agencement de circuit selon la. présente invention assure alors que, lorsque le bloc de mémoire défectueux est adressé, les données ne seront pas lues dans ce bloc, mais dans le bloc de mémoire auxiliaire ou bloc de réserve. Cela permet d'éliminer la nécessité de faire appel au sous-programme d'erreur-et de corriger la ou les erreurs chaque fois qu'il y a de nouveaux accès au bloc de mémoire identifié comme défectueux. En conséquence, le temps global de calcul se trouve réduit. Le bloc de mémoire auxiliaire est continuellement contrôlé au moyen d'un programme d'essai. Il est également avantageux que le sous-programme d'erreur soit stocke dans une zone de mémoire indépendante de la mémoire AS à surveiller, par exemple, dans un module séparé. L'unité centrale de traitement 11 d'un système de calculateur - dans le cas d'un système à microcalculateur, le microprocesseur MPU - est connectée par l'intermédiaire des lignes d'adresses AL et/ou des lignes de données DL,à un circuit de contrôle d'erreurs 13, à une mémoire d'adresse 15, à un comparateur 17, et à une mémoire 19, par exemple, à la mémoire principale AS. Par la ligne de données DL, qui est un canal-, les bits d'un mot lus dans une rangée de mémoire sont transférés au circuit de contrôle d'erreurs 13, où ils sont contrôlés au moyen des bits de parité. Si les bits de parite-ne sont pas en accord, le circuit de contrôle d'erreurs délivrera une demande d'interruption INT, qui est transférée par une ligne de commande 21, 23 à l'unité centrale de traitement 11 faisant entrer celle-ci dans le programme d'erreurs. La mémoire 15 conserve l'adresse du bloc de mémoire qui a été identifié comme étant défectueux et le comparateur 17 compare cette adresse à l'adresse d'instruction respective qui est exécutée par l'unité centrale de traitement 11. Selon que la comparaison montre qu'un bloc de mémoire fonctionne correctement ou est défectueux,une commande de validation 27 produit un signal SPE, qui valide la mémoire 19, ou un signal ZSPE,qui valide une mémoire auxiliaire 29. L'unité centrale de traitement 11 est également reliée à un organe de commande de validation 27 par l'intermédiaire d'un décodeur d'instruction 31 et d'un circuit de commande 33. Cela permet à l'unité centrale de traitement 11 de contrôler la mémoire auxiliaire 29 pendant une exécution normale du programme et de lire un bloc de mémoire identifié comme défectueux. D'autres détails de fonctionnement du circuit selon la présente invention seront maintenant décrits en liaison avec la figure 3. Les bits de données Do à D7 provenant de la mémoire 19 par le canal de données DL sont introduits dans un générateur de parité ou organe de contrôle de parité 41, qui ferme la somme par rangée et produit un bit de parité pair ou impair. Ce bit de parité est comparé dans un circuit OU-Exclusif 43 au bit de parité D8 lu dans la mémoire. Le signal de sortie du circuit OU-Exclusif 43 est appliqué par l'intermédiaire d'un élément NON 45 à un circuit NON OU 47, dont la seconde entrée est alimentée avec un signal MEM lorsque l'accès à la mémoire se produit. En plus des composants de circuit, la figure 3 représente les changements et les valeurs des signaux qui apparaissent à la sortie des composants respectifs de circuit ou sur les lignes respectives lorsqu'une erreur se produit dans un bloc de mémoire ou lorsqu'une adresse de bloc mémoire est en accord avec l'adresse d'un bloc mémoire identifié comme défectueux. Lorsqu'une erreur a été détectée au cours du contrôle de parité et qu'un accès à la mémoire se produit, le circuit NON OU 47 produit le signal INT, ce qui provoque l'exécution du programme d'erreur par l'unité centrale de traitement Il. Une bascule D 49 reçoit un signal d'entrée D=O et délivre un signal de sortie Q=O. Par l'intermédiaire d'un élément NON 51, une diode émettrice de lumière 53 est actionnée pour indiquer l'erreur. En même temps, les quatre bits d'adresse les plus significatifs A12 à A15 du canal AL, qui identifient le bloc de mémoire défectueux sont écrits dans un registre de décalage à 4 bits 55, qui est conçu en organe de déclen chement, c'est-à-dire qui est apte à conserver un certain état. Le contenu du registre 55 peut être maintenant lu par l'unité centrale de traitement 11 par l'intermédiaire de son canal de données DL (bits Do à D3). Le registre 55 est simultanément passé du mode "charge" au mode "maintien de donnée", de sorte que l'adresse mé morisée ne peut plus être écrite par remplacement. A la suite de l'exécution du sous-programme d'erreur, l'adresse du bloc courant respectif A12 à A15 est comparée, dans un comparateur 57 à quatre bits, à l'adresse mémorisée dans le registre à décalage 55. En cas d'accord, le comparateur 57 produit un signal logique "1" à sa sortie "=". Si l'accès à la mémoire se produit, le signal MEM sera transmis, par l'intermédiaire d'un élément NON 59,à une entrée d'un élément ET 61, dont l'autre entrée est alimentée avec le signal de sortie du comparateur 57. Par l'intermédiaire de circuits logiques supplémentaires, dont la réalisation et. la fonction apparaissent facilement dans la figure 3, un signal de validation de mémoire SPE=O et un signal de validation de mémoire auxiliaire ZSPE=1 sont produits, ce qui permet de valider l'acces à la mémoire auxiliaire 29. En cas de désaccord entre l'adresse du bloc courant et l'adresse détectée comme étant fausse, les signaux SPE=1 et ZSPE=O sont produits, ce qui valide l'accès à la mémoire 19. Deux bascules D supplémentaires 63 et 65, ayant des en trées "prédisposition" et "remise a zéro comme la bascule 49, sont commandées par des instructions provenant de# l'unité centrale de traitement Il. Les hypothèses suivantes sont faites bascule D 63 ... Q = O (par impulsion ou instruction de remise à zéro) bascule D 65 ... Q = 1 (par impulsion ou instruction de remise à zéro) Pendant l'exécution du programme d'erreur, le contenu du. bloc de mémoire défectueux doit être lu dans le but, d'une part, de localiser la position de l'erreur et, d'autre part, de corriger l'erreur. Il doit être par conséquent possible, malgré l'accord entre les adresses de bloc d'avoir accès à la mémoire 19 (signal SP) au lieu de la mémoire auxiliaire 29 (signal SPE). De plus, l'unité centrale de traitement 11 doit pouvoir avoir accès à la mémoire auxiliaire 29, même s'il n'y a pas d'erreur. Dans ces cas, l'accès à la mémoire est commandé par des instructions OUT transmises depuis l'unité centrale de traitement 11 aux bascules 63 et 65. Avec une instruction OUT' l'unité centrale de traitement 11 transfère une adresse PORT par le canal d'adresses. Lorsque cette adresse PORT est décodée, un signal de commande est produit grâce auquel une bascule peut être mise à 1 ou remise à zéro. Les instructions OUT provoquent l'exécution des opérations de commande suivantes OUT la -- > Q=l = > accès à la mémoire auxiliaire 29 bien qu'aucune erreur ne se soit produite lB A OUT 1B = remise à-zéro = > Q=O = > accès à la mémoire auxiliaire 29 seulement si une erreur s'est produite. (Remise à zéro) OUT 2 = > Q=l -- > accès à la mémoire 19, cas normal OUT 3 = > Q=O = > accès à la mémoire 19 bien qu'une erreur se soit produite. L'agencement de circuit selon la présente invention convient particulièrement au contrôle des mémoires parce que les sommes par colonne des blocs individuels- de ces mémoires sont fixées depuis le début et peuvent être écrites en même temps que le programme. La présente invention n'est pas limitée aux exemples de réalisation qui viennent d'être décrits, elle est au contraire susceptible de variantes et de modifications qui apparaîtront à l'homme de l'art. REVEND ICAT IONS 1 - Procédé d'exécution de contrôles d'erreurs dans des systèmes à. mémoire de calculateurs numériques, en particulier dans les mémoires principales de microprocesseurs, où des mots groupés en blocs et devant être écrits dans une mémoire sont contrôlés pour détecter des erreurs par sommation du contenu des rangées et des colonnes et par calcul de bits de parité avec l'aide des sommes des rangée, caractérisé en ce que les sommes des colonnes et les mots contrôlés avec elles sont écrits dans des blocs de mémoire différents, en ce que les sommes des rangées sont utilisées pour détecter une erreur dans un bloc de mémoire, dont l'adresse est maintenue et dont le contenu est écrit dans un bloc de mémoire auxiliaire à la suite de la correction du bit détecté comme étant erroné, et en ce qu'avec chaque appel subséquent du contenu du bloc de mémoire défectueux l'adresse de celui-ci est remplacée par l'adresse du bloc de mémoire auxiliaire. 2 - Procédé selon la revendication li caractérisé en ce que le bloc de mémoire auxiliaire est continuellement contrôlé pour détecter des erreurs. 3 - Procédé selon l'une des revendications 1 ou 2, carac térisé en ce que les bits de parité sont produits chaque fois qu'un mot est écrit dans la memoire, en ce qu'ils sont écrits en même temps que le mot, et sont vérifiés par nouveau calcul lorsque le mot est lu. 4 - Procédé selon l'une des revendications 1 à 3, caractérisé en ce que les sommes- arithmétiques par colonnes des mots écrits dans les blocs de la mémoire sont formés, et en chaque lors de la production d'une erreur dans un bloc de mémoire le contenu de celui-ci est lu, et les sommes arithmétiques par colonnes sont contrôlées par nouveau calcul. 5 - Circuit pour l'exécution des contrôles d'erreurs dans des systèmes à mémoire de calculateurs numériques, en particulier suivant la. méthode décrite dans l'une des revendications précédentes, qui comprend un dispositif de contrôle d'erreurs ajoutant un bit de parité à chaque mot devant être écrit dans la mémoire principale du calculateur et recalcule le bit de parité à des fins de contrôle au moment de la lecture du mot, les sommes par colonne des bits individuels des mots mémorisés étant formées pour chaque bloc de façon à localiser l'erreur, caractérisé en ce qu'il comprend une mémoire auxiliaire (29) dans laquelle le contenu d'un bloc de mémoire détecté comme comportant une erreur est écrit après la correction d'erreur, et un circuit de commande de validation de mémoire (27), qui, lorsque le bloc de mémoire défectueux (B1) est adressé, provoque l'accès du calculateur à la mémoire auxiliaire (29). 6 - Circuit selon la revendication 5, caractérisé en ce que le circuit de commande (27) de validation de mémoire est commandé par le signal de sortie d'un comparateur (17) dans lequel l'adresse de l'instruction respective qui doit être sortie de la mémoire par l'unité centrale de traitement (S) du calculateur est comparée à l'adresse du bloc de mémoire défectueux (31).