Brevet FR2815735A1 — publié le 20020426

DISPOSITIF ET PROCEDE DE DETECTION ET CORRECTION D'ERREURS MEMOIRE DANS UN SYSTEME ELECTRONIQUE DESCRIPTION Domaine technique La présente invention concerne un dispositif et un procédé de détection et correction d'erreurs mémoire dans un système électronique. Etat de la technique antérieure Les circuits électroniques intégrés à bord des véhicules spatiaux peuvent être sensibles à certaines particules générées par le soleil ou à certaines particules existant dans l'espace interstellaire. Ces particules, en traversant ces circuits, y déposent des charges électriques qui peuvent faire changer un bit d'état. De tels événements sont appelés"single event upset" (ou"événements singuliers") ou"soft-error" ; Ils sont transitoires et ne dégradent en rien le composant électronique : une cellule mémoire victime d'un événement singulier subit une erreur de lecture, mais peut être réécrite normalement par la suite. Plusieurs effets tels que : - la réduction de la lithographie des technologies des circuits intégrés (0,25 um aujourd'hui et 0,18 um prochainement), - la baisse des tensions d'alimentation (2,2 V aujourd'hui), peuvent avoir pour conséquence que de telles erreurs se produisent également dans les circuits intégrés utilisés au sol. En effet, l'énergie par cellule élémentaire diminuant régulièrement (cellules mémoire, registres, etc. ), celles-ci peuvent donc être perturbées par des énergies parasites faibles qui étaient sans incidence sur les circuits intégrés de précédentes générations. L'informatique industrielle se trouve donc confrontée à des phénomènes d'erreurs transitoires engendrées : - soit par des neutrons d'origine solaire non filtrés par l'atmosphère, - soit par des particules alpha provenant de la désintégration d'isotopes radioactifs contenus dans les matériaux des boîtiers d'encapsulation des circuits intégrés. L'élément le plus critique vis-à-vis de ce problème est la logique combinatoire : les erreurs mémoire peuvent être détectées via des codages (parité ou Hamming par exemple) mais, en ce qui concerne la logique combinatoire, il est impossible de détecter un événement singulier aléatoire sur un noeud quelconque à l'intérieur d'un circuit. Le problème des événements singuliers devient donc prépondérant pour les fabricants de composants et de systèmes électroniques. Ceux-ci sont donc amenés à intégrer soit dans les circuits intégrés, soit dans les architectures, des mécanismes de protection contre les erreurs dues à ces événements. Une solution envisageable consiste à concevoir des circuits tolérants aux événements singuliers. Comme illustré sur la figure 1, un système électronique peut être constitué d'un microprocesseur 10 et sa mémoire Il reliés par un bus de données 12 et un bus Adresses+Contrôle 13. Un module de décodage 14 permet d'effectuer la sélection 15 des boîtiers mémoire. La mémoire 11 peut être protégée par un composant couramment noté EDAC ("Error Detection And Correction"), voire EDC, ECC ou EDCC ("Error Detection/Correction Code"), qui permet de détecter puis de corriger des erreurs engendrées par les événements singuliers dans les cellules de mémorisation, comme décrit dans les documents référencés [1] à [5] en fin de description. Comme illustré sur la figure 2, l'EDAC 20, ou composant de détection et correction d'erreurs mémoire, dans une architecture série, est un composant connecté au bus de données 12, par exemple de M bits de large, mais pas au bus d'adresses 13. L'EDAC 20 est relié à la mémoire 11 par un bus 55 de M bits de large sur lequel transitent les données stockées dans la partie 16 de la mémoire 11, et par un bus 54 de N bits de large sur lequel transitent les codes stockés dans la partie 17 de la mémoire 11 (à toute donnée est associé un code). Lors d'une écriture en mémoire 11 par le microprocesseur 10, l'EDAC 20 ajoute aux M bits de la donnée un code de N bits de largeur. La largeur de la mémoire 11 est donc de M+N bits afin de conserver le code associé à chacune des données mémorisées. Lors d'une lecture en mémoire 11 par le microprocesseur 10, l'EDAC 20 reçoit M+N bits. Il calcule le code correspondant à la donnée de M bits (zone données 16) et le compare au code de N bits (zone codes 17) qui est stocké en mémoire avec la donnée. Si les deux codes ne sont pas identiques, une erreur est alors décrétée. Dans ce cas, et dans l'hypothèse de l'utilisation d'un code de Hamming qui permet de corriger un bit, l'EDAC 20 inverse le bit fautif pour le corriger, présente le mot corrigé sur son bus, et génère une interruption IT au microprocesseur pour que celui-ci réécrive la donnée correcte en mémoire. L'EDAC 20 n'ayant pas connaissance de l'adresse de la donnée, il ne peut effectuer lui-même la correction en mémoire il. Le code de parité (N=1) ne permettant que de détecter mais pas de corriger une erreur, on utilise généralement un code de Hamming qui a la capacité de détecter et corriger une erreur dans un mot, et de détecter (sans pouvoir alors les corriger) deux erreurs dans le même mot. La largeur du code de Hamming, et donc l'augmentation de la capacité mémoire nécessaire, dépend de la valeur de M. Par exemple, pour M=16, on a couramment N=6. Comme décrit dans le document référencé [5], l'EDAC 20 travaille sur le bus de données, et fonctionne en parallèle avec le module de décodage 14 qui travaille sur le bus d'adresses 13. La fonction réalisée par l'EDAC étant plus complexe, le temps de propagation de celui-ci 20 est supérieur à celui du module de décodage 14 et ralentit donc les accès mémoire d'un coeur unité centrale protégé par un tel composant. La capacité des boîtiers mémoires augmentant, le nombre de boîtiers se réduit (notamment dans le domaine embarqué, tels que automobile, aéronautique ou spatial par exemple, qui utilise des petites capacités mémoire). Par conséquent, le module de décodage 14 se simplifie et devient de façon inhérente de plus en plus rapide. Le ralentissement dû à l'EDAC 20 devient donc de plus en plus pénalisant. Deux types d'architectures d'EDAC existent : - L'EDAC dans une architecture série, illustrée sur la figure 2 (ou"flow-through"voire "feed-through"), est un composant inséré sur le bus de données 12 entre le microprocesseur 10 et sa mémoire 11 comme décrit dans les documents référencés [l], [3] et [4]. - L'EDAC, dans une architecture parallèle illustrée sur la figure 3 (ou"bus-watch") est un composant connecté au bus de données 12 comme un périphérique. Il capture les données et les traite avant de valider l'accès mémoire, comme décrit dans le document référencé [2]. L'EDAC 20 est relié à la mémoire 11 par un bus 54. L'EDAC 20, qui est un composant très souvent employé dans le domaine spatial, devient de plus en plus pénalisant au fur et à mesure de l'augmentation des fréquences d'horloge des microprocesseurs. Ce composant est d'autant plus critique avec des microprocesseurs à architecture RISC ("Reduced Instruction Set Computer"ou microprocesseur à jeu d'instructions réduit) qui accèdent à la mémoire presque à chaque cycle : Il est nécessaire d'ajouter des cycles d'attente ("wait-states") pour laisser le temps à l'EDAC 20 de fonctionner, sinon il faut ralentir la fréquence de fonctionnement du microprocesseur. Dans le domaine spatial, les fréquences des microprocesseurs sont actuellement de l'ordre de quelques dizaines de MHz. Dans le domaine de l'informatique industrielle, ces fréquences sont actuellement d'un ordre de grandeur ou deux plus élevé : Ainsi, des microprocesseurs fonctionnant à 1 GHz commencent à apparaître. La recherche d'un mode de fonctionnement plus performant de l'EDAC n'introduisant aucun ralentissement est, par conséquent, devenu une nécessité dans le domaine de l'informatique industrielle. Comme décrit dans le document référencé [6], il est également connu d'utiliser une mémoire cache de 8 mots, associée à un générateur de vecteurs de test, qui permet de traiter de façon plus efficace qu'un EDAC, d'un point de vue temps de propagation, le problème d'adresses mémoire défaillantes suite à une panne définitive de bits isolés. Un tel système ne fonctionne cependant que pour les pannes définitives de quelques bits, ce qui est une configuration peu fréquente. Il n'est pas adapté au traitement des erreurs temporaires de type événements singuliers. Le document référencé [6] précise que ce système doit être associé à un EDAC pour pouvoir les prendre en compte. L'objet de l'invention est de fournir un dispositif et un procédé de détection et correction d'erreurs mémoire qui permettent de protéger la mémoire sans pénalité en performance sur les temps d'accès, contrairement aux dispositifs de l'art connu. Exposé de l'invention La présente invention concerne un dispositif de détection et correction d'erreurs mémoire dans un système électronique comprenant un composant électronique comportant plusieurs étages pipeline, et une mémoire, caractérisé en ce que ce dispositif comprend des moyens de détection/correction mis en parallèle sur les accès mémoire et activés chaque fois que le composant lit un mot en mémoire, ces moyens laissant pénétrer ce mot dans le composant avant de le vérifier. Avantageusement les moyens de détection/correction comportent des moyens de vérification du mot lu en mémoire aptes à être activés en parallèle avec sa progression à l'intérieur des étages pipeline du composant électronique. Ils comportent des moyens de génération d'une interruption au composant, activés lorsqu'ils détectent une erreur sur le mot lu en mémoire, afin que la progression de ce mot erroné à l'intérieur des étages pipeline du composant soit interrompue avant qu'il ne soit transmis à l'étage pipeline d'exécution. Ils comportent des moyens disposant d'une connexion au bus d'adresses qui permettant, suite à une détection d'erreur, de réécrire directement en mémoire un mot corrigé. Dans un mode de réalisation avantageux, ils comportent en outre des moyens de codage des données mis en série sur les accès mémoire, et structurés en étages pipeline de façon à avoir le même débit que le composant électronique lorsque celui-ci écrit en mémoire, en particulier pendant les transferts de blocs. Ledit dispositif dispose alors d'une connexion au bus d'adresses, et de moyens de cheminement des adresses comprenant un ensemble de registres pipeline connectés en série dans lesquels est réalisé le transport des adresses capturées, le nombre de ces registres pipeline étant identique au nombre d'étages pipeline des moyens de codage afin que ces adresses se propagent dans le dispositif au même rythme que les mots à coder. Il comprend un comparateur câblé sur chaque registre pipeline des moyens de cheminement des adresses, ces comparateurs permettant une comparaison temps réel entre toutes les adresses qui se trouvent à l'intérieur du dispositif à un moment donné et l'adresse du mot que le composant électronique souhaite lire en mémoire à ce moment là. Dans un mode de réalisation avantageux, il peut comprendre des moyens introduisant des cycles mémoire d'attente au composant électronique lorsque l'un des comparateurs détecte la présence de l'adresse du mot que le composant souhaite lire en mémoire, ces moyens permettant de laisser le temps au mot de se propager dans les derniers étages pipeline du dispositif afin que celui-ci puisse écrire en mémoire ce mot et son code associé avant que le composant ne les lise. Ou alors, dans un autre mode de réalisation avantageux il peut comprendre, des moyens de multiplexage permettant lorsque l'un des comparateurs détecte la présence de l'adresse du mot que le composant souhaite lire en mémoire, de fournir ce mot au composant quel que soit l'étage pipeline où il se trouve et d'inhiber les moyens de détection d'erreurs du dispositif sur ce mot puisque son code associé n'a pas eu le temps d'être complètement calculé. L'invention concerne également un procédé de détection et correction d'erreurs mémoire dans un système électronique comprenant un composant électronique comportant plusieurs étages pipeline et une mémoire, caractérisé en ce que chaque mot lu en mémoire par le composant électronique n'est pas vérifié préalablement à la capture de ce mot par le composant. Avantageusement la vérification du mot lu en mémoire s'effectue en parallèle avec sa progression à l'intérieur des étages pipeline du composant électronique, afin de s'assurer qu'il n'est pas erroné, permettant ainsi de masquer le temps de fonctionnement du dispositif par le temps de propagation dans les premiers étages pipeline du composant. Lorsqu'une erreur est détectée sur le mot lu en mémoire, le cheminement du mot dans les étages pipeline du composant électronique est interrompu avant que ce mot erroné ne puisse être effectivement utilisé par une unité de traitement de ce composant. Lorsqu'une erreur est détectée sur un mot lu en mémoire, et après sa correction, ce mot corrigé est directement réécrit en mémoire sans intervention du composant électronique. Dans un mode de réalisation avantageux les mots que doit écrire le composant électronique en mémoire sont capturés, puis codés avec un code quelconque de détection/correction d'erreur, puis écrits en mémoire ; le codage étant structuré en étages pipeline de façon à avoir le même débit que le composant lorsque celui-ci écrit en mémoire et, ainsi, ne pas le ralentir, en particulier pendant les transferts de blocs. Les adresses sont capturées en même temps que les mots à coder, et ces adresses se propagent à l'intérieur d'étages pipeline au même rythme que les mots à coder. Toutes les adresses présentes dans les étages pipeline sont comparées en temps réel à l'adresse du mot que le composant électronique souhaite lire, ceci afin de détecter si le mot recherché par le composant n'a pas été écrit très récemment et ne se trouve pas encore dans ces étages pipeline. Si un mot que le composant électronique souhaite lire en mémoire se trouve encore dans les étages pipeline, on peut introduire des cycles mémoire d'attente au composant électronique pour attendre que se finalise le calcul de code et l'écriture en mémoire de ce mot et de son code associé avant que le composant ne les lise, ou le mot peut être directement fourni au composant en inhibant alors la détection d'erreur sur ce mot puisque son code associé n'a pas eu le temps d'être complètement calculé. Le procédé de l'invention peut être utilisé dans un système électronique embarqué. Il peut également être utilisé dans le domaine spatial. Le dispositif de l'invention est indépendant du code utilisé pour détecter/corriger les erreurs (parité, Hamming, etc..). Les réalisations classiques d'EDAC série ou parallèle réduisent la performance du système électronique en augmentant les temps d'accès à la mémoire. Le dispositif de l'invention permet de profiter pleinement des performances du composant électronique (par exemple un microprocesseur) puisque : - la fonction de détection/correction travaille en parallèle, donc en temps masqué, avec la propagation de l'instruction ou de la donnée dans le pipeline du composant électronique, - la fonction codage est pipelinée pour offrir le même débit que le composant électronique luimême, une structure en"mémoire associative"permettant de résoudre les problèmes de non cohérence de la mémoire lors d'accès rapprochés en écriture puis en lecture sur le même mot. Brève description des dessins - La figure 1 illustre un système électronique de l'art connu avec une mémoire non protégée. - Les figures 2 et 3 illustrent ce système électronique de l'art connu avec une mémoire protégée par un EDAC classique, respectivement dans une architecture série et dans une architecture parallèle. - La figure 4 illustre ce système électronique avec une mémoire protégée selon l'invention pour la fonction détection/correction, seules les phases de lecture mémoire étant représentées. - La figure 5 illustre le diagramme temporel du fonctionnement de l'invention pour la fonction de détection/correction, dans une hypothèse sans mémoire cache. - La figure 6 illustre le système électronique, la mémoire étant protégée par un dispositif incluant uniquement la fonction de codage des données, seuls les phases d'écriture mémoire étant représentées. - La figure 7 illustre l'architecture interne du dispositif de l'invention pour la fonction de codage (exemple à trois étages pipeline). - La figure 8 illustre l'architecture du dispositif de l'invention intégrant à la fois les fonctions de détection/correction et codage. - Les figures 9 et 10 illustrent les flots de données à l'intérieur du dispositif de l'invention intégrant à la fois les fonctions de codage et de détection/correction respectivement pour l'écriture de la mémoire et pour la lecture de la mémoire. Exposé détaillé de modes de réalisation La présente invention concerne un dispositif de détection et correction d'erreurs mémoire dans un système électronique comprenant un composant électronique comportant plusieurs étages pipeline et une mémoire. Par"composant électronique", on entend un circuit ou un ensemble de circuits intégrés, qui réalise une fonction nécessitant une mémoire, cette fonction pouvant être conçue à partir d'un opérateur ou processeur câblé (voir le document référencé [7] page 20 et page 106), d'un processeur en tranches ("bit slices", voir le document référencé [7] pages 106 à 109), ou d'un microprocesseur par exemple. Dans la suite de la description, on utilise le mot "microprocesseur"car celui-ci est le plus représentatif. Le dispositif de détection et de correction d'erreurs mémoire selon l'invention inclut : - des moyens de détection/correction activés lorsque le microprocesseur lit la mémoire, - et éventuellement des moyens de codage activés lorsque le microprocesseur écrit la mémoire. Moyens de détection/correction La fonction de détection/correction du dispositif de l'invention est basée sur le fait que, pour améliorer la performance des microprocesseurs modernes, ceux-ci disposent d'un nombre d'étages pipeline de plus en plus important, fonctionnant comme décrit dans le document référencé [7] aux pages 11 à 15. Comme illustré sur la figure 4, le dispositif de détection et correction d'erreurs mémoire incluant ces moyens de détection/correction 20 est mis en parallèle sur les accès mémoire du microprocesseur 10. Son temps de propagation n'est plus en série vis-àvis du microprocesseur 10 comme dans le cas d'un EDAC série ou parallèle, mais en parallèle. Il est donc masqué. L'objectif de l'invention est de pouvoir dégager suffisamment de temps au dispositif de détection et correction d'erreurs mémoire pour le laisser fonctionner sans ralentir les accès mémoire. Grâce aux nombreux étages pipeline, ce dispositif permet de laisser rentrer l'instruction ou la donnée potentiellement erronée dans ces étages pipeline du microprocesseur sans la vérifier préalablement, mais en la vérifiant en parallèle. En cas d'erreur détectée par ce dispositif, ce dernier interrompt le cheminement de l'instruction ou de la donnée avant qu'elle ne soit exécutée ou utilisée effectivement par une unité de traitement interne au microprocesseur. Le fonctionnement du dispositif de l'invention est illustré sur le diagramme temporel de la figure 5, correspondant à un exemple de réalisation de ce dispositif, en utilisant un microprocesseur générique, celui-ci dispose de cinq étages pipeline : un étage de recherche de l'instruction ("fetch"), un étage de décodage, un étage d'orientation vers une unité de traitement, un étage d'exécution, et un étage de rangement du résultat obtenu. Ce microprocesseur intègre une logique de traitement d'interruption (IT) incluant un étage de synchronisation des événements externes asynchrones IT et un étage de prise en compte de l'interruption IT. Les instructions non exécutées après l'activation de cet étage de prise en compte des interruptions sont inhibées et le microprocesseur recharge totalement son pipeline (création d'une "bulle"dans le pipeline comme décrit dans le document référencé [7] aux pages 11 à 15). Le dispositif de détection et correction d'erreurs mémoire dispose de trois étages pipeline : un étage de capture de la donnée ou de l'instruction et de son code passant sur le bus de données du microprocesseur, un étage de calcul du code et de comparaison avec le code capturé, la comparaison générant une interruption au microprocesseur en cas de détection de non égalité entre les deux codes, et un étage de réécriture de la donnée corrigée en mémoire lorsque nécessaire. Pour la fonction de détection/correction, lors d'une lecture en mémoire externe de données ou d'instructions, le fonctionnement est le suivant : - le microprocesseur accède en lecture à un mot stocké en mémoire externe sans aucun ralentissement dû au dispositif de détection et correction d'erreurs mémoire. - Ce mot est"capturé"par le dispositif en même temps qu'il l'est par le microprocesseur. - Le dispositif travaille en parallèle avec la progression de l'instruction ou de la donnée dans les niveaux pipeline (par exemple K étages) du microprocesseur. Le dispositif dispose du temps qui est nécessaire à ce mot pour arriver jusqu'à l'unité d'exécution (a priori K-2 cycles, l'étage K-1 étant généralement l'exécution, et l'étage K le stockage du résultat). - En cas de détection 30 d'une erreur (Instr. 3 sur la figure 5), le dispositif interrompt (31) le microprocesseur par une interruption avant que cette instruction/donnée ne soit exécutée/utilisée. - Dans ce cas, deux options se présentent : * soit le dispositif se contente de corriger le mot et de le présenter sur son bus, le microprocesseur se charge alors d'aller corriger la mémoire, 'somit le dispositif réécrit directement en DMA ("Direct Access Memory"ou accès direct à la mémoire) le mot corrigé en mémoire dès que le bus est libéré suite à l'interruption, ceci est possible dans l'hypothèse où le dispositif est connecté au bus d'adresses comme représenté en pointillés à la figure 4, cette connection étant nécessaire à la fonction de codage. - L'effet de l'interruption est simplement de forcer une"purge"32 des niveaux pipeline du microprocesseur grâce à l'exécution des quelques instructions de ce programme d'interruption (a priori vide, et contenant éventuellement des NOP ("No Operation", c'est-à-dire"nulle"qui ne donne lieu à aucune opération) si les instructions de branchement et de retour d'interruption ne suffisent pas à assurer cette purge). La purge permet de supprimer les quelques mots en train de progresser dans le pipeline du microprocesseur (dont le mot erroné Instr. 3). Le microprocesseur va alors rechercher une nouvelle fois ces mots en mémoire externe (le mot erroné Instr. 3 ayant entre-temps été corrigé en mémoire externe par le dispositif). On introduit donc une"bulle"dans le pipeline du microprocesseur à chaque détection d'erreur ; l'impact sur la performance étant négligeable, étant donné la faible densité des événements singuliers. Pour déterminer le nombre de cycles disponibles pour que le dispositif puisse exécuter sa phase de détection, on vérifie au cas par cas en fonction du microprocesseur utilisé jusqu'à quel niveau pipeline le mot potentiellement erroné peut progresser afin d'être sûr qu'à ce moment là, l'arrivée d'une interruption sur une broche externe du microprocesseur puisse interrompre la progression de ce mot vers l'unité d'exécution. Pour cela on prend également en compte la latence (c'est-à-dire le retard) due à l'échantillonnage puis l'exécution d'une interruption suite aux étages pipeline potentiels dans le cheminement de cette interruption. Si une mémoire cache est intégrée sur la puce du microprocesseur, on purge en plus le cache sur l'apparition de l'interruption de détection d'erreur. Cela peut être fait dans le programme de l'interruption qui est liée au dispositif. La mise en couvre de cette fonction dépend de la spécificité du microprocesseur. Par exemple, pour le PowerPC 603e de Motorola, il est possible de purger le cache instructions à l'aide d'une seule instruction (le cycle suivant, le microprocesseur considère que le cache instructions est vide). Mais le cache données ne peut qu'être"flushé", c'est-à-dire qu'il doit être vidé entièrement : i. e. les blocs contenant des données mises à jour à l'intérieur du cache sont sauvegardés en mémoire. Dans le cas où un cache doit être"flushé"sur détection d'erreur mémoire, il faut que le dispositif laisse le"flush"se finaliser (le"flush"va alors sauvegarder la donnée erronée) avant d'effectuer la correction en mémoire. Moyens de codage La fonction de codage des données du dispositif de l'invention est basée sur le fait que, pour améliorer la performance des microprocesseurs modernes, ceux-ci intègrent des mémoires caches internes, et les écritures en mémoire externes se font alors la plupart du temps par des transferts de blocs ("flush"ou mode rafale, i. e., une donnée à chaque cycle et ceci de façon continue pour tout le bloc). Comme illustré sur la figure 6, le dispositif de l'invention incluant la fonction de codage est mis en série sur les accès mémoire du microprocesseur. Son temps de propagation reste en série vis-à-vis du microprocesseur mais ne le ralentit pas grâce à un fonctionnement pipeline. Ce fonctionnement nécessite de connecter le dispositif au bus d'adresses contrairement aux EDACs classiques. Les moyens de codage du dispositif sont partagés en étages pipeline 41, 42, 43, et utilisent un fonctionnement de type"mémoire associative"comme illustré sur la figure 7. Si la durée des accès mémoire du microprocesseur est de T, et si le temps de codage du dispositif est inférieur à P fois T, alors la fonction codage est partagée en P étages pipeline 41,42, 43, chacun ayant un temps de propagation T. Les mots de données sont chargés dans le premier étage 41 du dispositif au rythme des écritures du microprocesseur, puis ils sont écrits en mémoire par le dispositif avec P cycles de retard mais au même rythme (donc, sans ralentir le microprocesseur). En parallèle, les adresses associées à chaque donnée sont chargées dans le dispositif et retardées par P simples registres pipeline 44 connectés en série pour rester en phase avec leur donnée. Si une donnée écrite doit être relue avec un délai inférieur à P cycles mémoire, la mémoire n'est plus en cohérence. Il faut donc que la fonction de codage du dispositif soit structurée comme une mémoire associative, un comparateur 45 câblé sur chaque étage du pipeline des adresses permet de comparer en temps réel ces P adresses à l'adresse du mot que le microprocesseur souhaite lire. Si l'un des comparateurs détecte que la donnée est dans le pipeline du dispositif (signal"adresse présente"activé, ou "adress-hit"), on peut : - soit introduire, grâce à un générateur de cycles d'attente 46, des cycles mémoire d'attente ("wait-states") au microprocesseur pour laisser le dispositif finaliser son calcul de code, et laisser le microprocesseur accéder à ce mot uniquement une fois qu'il a été écrit en mémoire avec son code associé. L'avantage est alors de banaliser sa nouvelle lecture ; - soit directement fournir la donnée au microprocesseur grâce à un multiplexage (multiplexeur 47) sur la sortie"donnée"de tous les étages pipeline 41,42, 43, mais en inhibant alors la détection d'erreur du dispositif sur ce mot puisque le code n'a pas eu le temps d'être complètement calculé. L'avantage est alors le gain en performance. Etant donné la faible densité des événements singuliers, donc la perte négligeable en performance, la première solution (introduction de cycles d'attente) est préférable. Le fonctionnement de ces deux solutions (en logique positive) est illustré dans les tableaux 1 et 2 en fin de description. Intégration des moyens de détection/correction et de codage La fonction de détection/correction nécessitant une architecture de type série, et la fonction de codage de type parallèle, l'intégration des deux fonctions dans un même composant nécessite l'utilisation de multiplexeurs. L'architecture d'un tel composant est montrée à la figure 8, et les flots de données selon qu'il s'agit d'une phase d'écriture de la mémoire (activant la fonction de codage) ou d'une phase de lecture de la mémoire (activant la fonction de détection/correction) sont illustrés respectivement aux figures 9 et 10. Sur ces figures 8,9 et 10 sont représentés : - un module 50 correspondant à la fonction codage (exemple de 3 étages pipeline), - un module 51 correspondant à la fonction détection/correction, - le bus adresses microprocesseur 13, - le bus données microprocesseur 12, - une ligne interruption microprocesseur 52, - le bus adresses mémoire 53, - le bus codes mémoire 54, - le bus données mémoire 55. Tableau 1 Tableau de fonctionnement du générateur de cycles d'attente 46 Validation Commande Attente ABC 0 0 0 0 0 cycle 1 0 0 1 1 cycle 1 0 1 0 2 cycles 1 1 0 0 3 cycles Tableau 2 Tableau de fonctionnement du multiplexeur 47 Validation Sélection Sortie ABC 0 0 0 0 Isolée 1 0 0 1 E3 1 0 1 0 E2 1100El REFERENCES [1]"29C516E-16 bits flow-through EDAC unit" (document TEMIC Semiconductors, rév. D, 09/12/97). [2]"29C532E-32 bits bus-watch EDAC unit" (document TEMIC Semiconductors, rév. B, 26/02/97). [3]"MA31752-16 bits feed-through EDAC unit" (document GEC Plessey Semiconductors, réf. DS3569-2. 4). [4]"MA31755-16 bits feed-through EDAC unit" (document GEC Plessey Semiconductors, réf. DS3572-2. 2). [5]"Two error-detecting and correcting circuits for space applications"de R. Johansson (Proceedings of 26th IEEE Fault Tolerant Computing Symposium, 1996). [6]"Memory system reliability improvement through associative cache redundancy", de M. A. Lucente, C. H. Harris et R. M. Muir (IEEE Journal of Solid-State Circuits, Vol. 26, n 3, mars 1991). [7]"Réalisation d'un mini-processeur vectoriel travaillant en arithmétique flottante 32 bits, adapté au traitement fréquentiel d'images"de Michel Pignol (Thèse de docteur ingénieur en électronique présentée à l'université de Clermont II le 12 septembre 1986). REVENDICATIONS 1. Dispositif de détection et correction d'erreurs mémoire dans un système électronique comprenant un composant électronique (10) comportant plusieurs étages pipeline et une mémoire (11), caractérisé en ce que ce dispositif comprend des moyens de détection/correction (20) mis en parallèle sur les accès mémoire et activés chaque fois que le composant lit un mot en mémoire, ces moyens (20) laissant pénétrer ce mot dans le composant (10) avant de le vérifier. 2. Dispositif selon la revendication 1, dans lequel les moyens de détection/correction (20) comportent des moyens de vérification du mot lu en mémoire aptes à être activés en parallèle avec sa progression à l'intérieur des étages pipeline du composant électronique. 3. Dispositif selon la revendication 1, dans lequel les moyens de détection/correction (20) comportent des moyens de génération d'une interruption au composant (10), activés lorsqu'ils détectent une erreur sur le mot lu en mémoire, afin que la progression de ce mot erroné à l'intérieur des étages pipeline du composant soit interrompue avant qu'il ne soit transmis à l'étage pipeline d'exécution. 4. Dispositif selon la revendication 1, dans lequel les moyens de détection/correction (20) comportent des moyens disposant d'une connexion au bus d'adresses qui permettent, suite à une détection d'erreur, de réécrire directement en mémoire un mot corrigé. 5. Dispositif selon la revendication 1 comportant en outre des moyens de codage des données mis en série sur les accès mémoire, et structurés en étages pipeline de façon à avoir le même débit que le composant électronique (10) lorsque celui-ci écrit en mémoire, en particulier pendant les transferts de blocs. 6. Dispositif selon la revendication 5 disposant d'une connexion au bus d'adresses, et de moyens de cheminement des adresses, comprenant un ensemble de registres pipeline (44) connectés en série, dans lesquels est réalisé le transport des adresses capturées, le nombre de ces registres pipeline étant identique au nombre d'étages pipeline des moyens de codage (41,42, 43) afin que ces adresses se propagent dans le dispositif au même rythme que les mots à coder. 7. Dispositif selon la revendication 6 comprenant un comparateur (45) câblé sur chaque registre pipeline (44) des moyens de cheminement des adresses, ces comparateurs (45) permettant une comparaison temps réel entre toutes les adresses qui se trouvent à l'intérieur du dispositif à un moment donné et l'adresse du mot que le composant électronique (10) souhaite lire en mémoire à ce moment là. 8. Dispositif selon la revendication 7, comprenant de moyens (46) introduisant des cycles mémoire d'attente au composant électronique lorsque l'un des comparateurs détecte la présence de l'adresse du mot que le composant souhaite lire en mémoire, ces moyens permettant de laisser le temps au mot de se propager dans les derniers étages pipeline du dispositif afin que celui-ci puisse écrire en mémoire ce mot et son code associé avant que le composant ne les lise. 9. Dispositif selon la revendication 7 comprenant des moyens de multiplexage (47) permettant lorsque l'un des comparateurs détecte la présence de l'adresse du mot que le composant souhaite lire en mémoire, de fournir ce mot au composant quel que soit l'étage pipeline où il se trouve et d'inhiber les moyens de détection d'erreurs du dispositif sur ce mot puisque son code associé n'a pas eu le temps d'être complètement calculé. 10. Procédé de détection et correction d'erreurs mémoire dans un système électronique comprenant un composant électronique comportant plusieurs étages pipeline et une mémoire, caractérisé en ce que chaque mot lu en mémoire par le composant électronique n'est pas vérifié préalablement à la capture de ce mot par le composant. 11. Procédé selon la revendication 10, dans lequel la vérification du mot lu en mémoire s'effectue en parallèle avec sa progression à l'intérieur des étages pipeline du composant électronique, afin de s'assurer qu'il n'est pas erroné, permettant ainsi de masquer le temps de fonctionnement du dispositif par le temps de propagation dans les premiers étages pipeline du composant. 12. Procédé selon la revendication 10, dans lequel, lorsqu'une erreur est détectée sur le mot lu en mémoire, le cheminement du mot dans les étages pipeline du composant électronique est interrompu avant que ce mot erroné ne puisse être effectivement utilisé par une unité de traitement de ce composant. 13. Procédé selon la revendication 10, dans lequel, lorsqu'une erreur est détectée sur un mot lu en mémoire, et après sa correction, ce mot corrigé est directement réécrit en mémoire sans intervention du composant électronique. 14. Procédé selon la revendication 10, dans lequel les mots que doit écrire le composant électronique en mémoire sont capturés, puis codés avec un code quelconque de détection/correction d'erreur, puis écrits en mémoire ; le codage étant structuré en étages pipeline de façon à avoir le même débit que le composant lorsque celui-ci écrit en mémoire et, ainsi, ne pas le ralentir, en particulier pendant les transferts de blocs. 15. Procédé selon la revendication 14, qui capture les adresses en même temps que les mots à coder, et dans lequel ces adresses se propagent à l'intérieur d'étages pipeline au même rythme que les mots à coder. 16. Procédé selon la revendication 15, dans lequel toutes les adresses présentes dans les étages pipeline sont comparées en temps réel à l'adresse du mot que le composant électronique souhaite lire, ceci afin de détecter si le mot recherché par le composant n'a pas été écrit très récemment et ne se trouve pas encore dans ces étages pipeline. 17. Procédé selon la revendication 16, dans lequel si un mot que le composant électronique souhaite lire en mémoire se trouve encore dans les étages pipeline, on introduit des cycles mémoire d'attente au composant électronique pour attendre que se finalise le calcul de code et l'écriture en mémoire de ce mot et de son code associé avant que le composant ne les lise. 18. Procédé selon la revendication 16, dans lequel si un mot que le composant électronique souhaite lire en mémoire se trouve encore dans les étapes pipeline, ce mot est directement fourni au composant en inhibant alors la détection d'erreur sur ce mot puisque son code associé n'a pas eu le temps d'être complètement calculé. 19. Utilisation du dispositif selon l'une quelconque des revendications 1 à 9, dans un système électronique embarqué. 20. Utilisation du dispositif selon l'une quelconque des revendications 1 à 9, dans le domaine spatial.