Brevet FR2900749A1 — publié le 20071109

PROCEDE ET DISPOSITIF DE SECURISATION DE LA MEMOIRE D'UN CALCULATEUR A L'ENCONTRE DES ERREURS DUES AUX RADIATIONS L'invention concerne le durcissement des calculateurs soumis à un bombardement de particules, tels que par exemple, les calculateurs qui sont embarqués à bord de satellites ou d'aéronefs croisant à des altitudes élevées, exposés à un flux de neutrons issus principalement de l'interaction des rayons cosmiques et des vents solaires avec les couches les plus externes de l'atmosphère terrestre. Les effets de concentration dû aux lignes du champ magnétique terrestre et d'atténuation dû à l'atmosphère terrestre, font que les conséquences du bombardement de particules d'origine cosmique sur les équipements électroniques sont marginales au niveau de la mer dans les régions tropicales ou tempérées où se concentre la majeure partie de la population du globe. Ce n'est plus le cas aux faibles latitudes aux voisinages des pôles ou dans les hautes altitudes où la densité de neutrons est environ 1000 fois plus élevée. Les équipements électroniques des satellites qui croisent en très haute altitude et des aéronefs qui peuvent être amenés lors de vols longs courrier à croiser de longues périodes à de faibles latitudes et à des altitudes élevées doivent donc être prévus pour résister aux contraintes liées au bombardement de particules d'origine cosmique. Ce n'est pas le cas des équipements électroniques du commerce produits en très grande série qui sont élaborés sans tenir compte des contraintes liées au bombardement de particules d'origine cosmique car développés pour satisfaire les marchés les plus larges possibles situés dans les régions tempérées et tropicales, à moyenne ou faible altitude. Dans le contexte aéronautique, c'est-à-dire avec une intensité de bombardement neutronique 1000 fois plus élevée qu'au niveau de la mer aux moyennes latitudes, les composants électroniques du commerce, de type mémoire vive RAM (Random Access Memory) notamment, sont réputés pouvoir présenter des défaillances de type simple événement SEU (acronyme de l'expression anglo-saxonne :"Single Event Upset") consistant en l'inversion du contenu d'un bit isolé, avec une probabilité d'environ 10"8 par bit et par heure. Un tel chiffre est inacceptable pour des calculateurs remplissant des fonctions critiques et faisant appel à des mémoires à plusieurs millions de bits car le temps moyen entre deux défaillances, de l'ordre que de quelques dizaines d'heures, est incompatible avec les objectifs de sécurité recherchés. Certaines publications récentes décrivent également la possibilité d'erreurs multiples M.E.0 (acronyme de l'expression anglo-saxonne :"Multiple Event Upset") consistant dans les inversions des contenus de plusieurs bites sur un même composant mémoire avec des probabilités environ 100 fois moindres. Pour pallier ce genre de défaillances des composants électroniques du commerce de type mémoire ainsi que d'ailleurs des erreurs dues aux bruits de transmission, il est connu de rendre le stockage et la transmission d'informations tolérant aux erreurs par l'emploi de codes correcteurs d'erreur de type "Hamming" ou "Reed-Solomon" qui ajoutent une certaine redondance aux informations stockées ou transmises. Les codes correcteurs d'erreur de type Reed-Solomon qui sont plus redondants que les codes correcteurs d'erreur de type Hamming, sont particulièrement adaptés à la protection vis-à-vis des événements M.E.U. dans la mesure où ils permettent de corriger des erreurs consécutives et donc des erreurs multiples situées dans un même composant mémoire. Les calculateurs font appel à un ou plusieurs composants électroniques dits "processeurs ou unité centrale" échangeant des informations par des liaisons physiques dites "bus système" ou "bus interne" avec des composants électroniques de type mémoire vive et par d'autres liaisons physiques dites "bus d'extension" ou bus d'entrée/sortie" avec des équipements périphériques. Les fonctions auxiliaires de contrôle des échanges de données entre unité centrale et mémoire vive centrale ainsi qu'entre unité centrale et équipements périphériques sont dites fonctions "pont" ou "bridge" en anglo-saxon. Les fonctions auxiliaires "pont" sont souvent confiées avec d'autres fonctions auxiliaires à des composants électroniques spécialisés dits "pont Nord ou contrôleur de mémoire ", "pont Sud ou contrôleur d'entrée-sortie", qui sont conçus pour permettre d'interconnecter efficacement une unité centrale avec des mémoires vives et des équipements périphériques en tirant le meilleur profit de l'architecture de cache de l'unité centrale et des modes d'accès séquentiels à la mémoire permettant de maximiser la bande passante. Certains composants électroniques processeurs intègrent directement les fonctions "pont" en proposant plusieurs interface bus et un contrôleur mémoire s'interfaçant directement avec une banque de composants de mémoire vive. Les composants électroniques de type "pont" ou de type processeur avec fonctions "pont" intégrées les plus récents incorporent également des codes correcteurs d'erreurs de type Hamming aux 1 o informations échangées avec des composants électroniques de type mémoire vive, qui permettent de corriger toute panne simple (inversion d'un bit) et de détecter toute défaillance affectant 2 bits mais qui peuvent être pris en défaut par les erreurs multiples MEU affectant généralement un nombre quelconque de bits à l'intérieur d'un même composant de mémoire vive, pour 15 lesquels seuls les codes correcteurs d'erreur de type Reed-Solomon sont efficaces. Pour des applications embarquées critiques, il est bien sûr possible de développer un composant électronique "pont" spécifique disposant de codes correcteurs d'erreur de type Reed-Solomon. Cette 20 approche se heurte toutefois aux désavantages suivants : - Le marché d'un tel composant électronique spécifique à fonction "pont" se limitant aux domaines aéronautique et satellitaire ne peut générer les quantités susceptibles de permettre l'amortissement de son développement qui restera par ailleurs coûteux et incertain tout en produisant 25 un résultat en deçà des performances accessibles par un produit du commerce bénéficiant des technologies les plus récentes. En résumé ce développement sera coûteux et donnera naissance à un produit onéreux dont la durée de vie en production restera faible - De par sa spécificité, le composant ainsi développé ne pourra 30 pas tirer profit de l'évolution de logiciels du commerce qui s'appuieront préférentiellement sur des composants électroniques visant un marché global. L'invention vise à résoudre ces problèmes en proposant un 35 dispositif matériel d'interface indépendant du couple processeur-pont et permettant d'accroître la capacité de correction d'erreur d'une fonction "pont" implémentée dans un composant du commerce. Elle a également pour but un dispositif peu complexe réalisable dans un circuit de logique programmable de complexité moyenne faisant 5 appel à des technologies performantes et faible coût. L'invention a pour objet un procédé de sécurisation de la mémoire d'un calculateur comportant un couple processeur-pont, le pont assurant des fonctions auxiliaires de contrôle des échanges de données entre le 10 processeur et une mémoire vive incorporant un code correcteur d'erreurs de type Hamming aux informations échangées. Ce procédé est remarquable en ce qu'il consiste à intercaler entre le couple processeur-pont et la mémoire vive, un dispositif d'interface réalisant un transcodage dans les deux sens entre le code de correction d'erreurs de type Hamming incorporé dans les 15 informations échangées par les fonctions auxiliaires de contrôle des échanges de données du couple processeur-pont et un code de correction d'erreurs de type Reed-Solomon adapté à l'architecture de la mémoire vive. Avantageusement, les couples processeur-pont et dispositif d'interface-mémoire vive fonctionnent selon des cycles d'horloges distincts et 20 synchrones, la période d'horloge du couple dispositif d'interface-mémoire vive étant plus courte que celle du couple processeur-pont et dans un rapport entier, et le pont étant paramétrable en cycle de latence. Avantageusement, le dispositif d'interface et la mémoire vive fonctionnent à une fréquence d'horloge nominale multiple de celle du pont, 25 dans un rapport 2 ou 3. Avantageusement, le dispositif d'interface corrige dans la mémoire vive les erreurs de données identifiées par le code de correction d'erreur de type Reed-Solomon. Avantageusement, le dispositif d'interface transpose une valeur de 30 code de correction d'erreur de type Reed-Solomon caractéristique d'une présence d'erreur dans la donnée codée en une valeur de code de détection d'erreur de type Hamming caractéristique d'une présence d'erreur détectable et corrigeable dans la donnée codée, cela afin de faire réagir le couple processeur-pont. L'invention a également pour objet un dispositif de sécurisation de la mémoire d'un calculateur comportant un couple processeur-pont avec des fonctions de contrôle des échanges de données entre le processeur et une mémoire vive incorporant des codes correcteurs d'erreurs de type Hamming aux informations échangées, remarquable en ce qu'il comporte intercalé entre le couple processeur-pont et la mémoire vive, un dispositif d'interface réalisé sous la forme d'un réseau logique programmable, assurant un transcodage dans les deux sens entre le code de correction d'erreurs de type Hamming incorporé dans les informations échangées par les fonctions auxiliaires de contrôle des échanges de données du couple processeur-pont et un code de correction d'erreurs de type Reed-Solomon adapté à l'architecture de la mémoire vive. D'autres caractéristiques et avantages de l'invention ressortiront 15 de la description ci-après d'un mode de réalisation donné à titre d'exemple. Cette description sera faite en regard du dessin dans lequel : - une figure 1 représente un schéma d'implantation d'un dispositif selon l'invention entre un couple processeur-pont et une mémoire vive d'un calculateur, et 20 - des figures 2, 3 et 4 sont des diagrammes de temps illustrant plusieurs modes de fonctionnement possible du dispositif selon l'invention montré à la figure 1. On distingue sur la figure 1, un couple processeur 1 pont 2 25 échangeant des données avec une mémoire vive constituée d'un banc parallèle de six composants électroniques de type mémoire vive SDRAM (acronyme de l'expression anglo-saxonne :"Static Random Access Memory") 31 à 36 par l'intermédiaire d'un dispositif d'interface transcodeur 4, ainsi qu'un oscillateur local 5 fournissant directement le signal d'horloge du couple 30 processeur 1 pont 2 et indirectement, le signal d'horloge des composants de mémoire vive 31 à 36 et du dispositif d'interface transcodeur 4 par l'intermédiaire d'un oscillateur à verrouillage de phase PLL 6 fonctionnant en multiplieur de fréquence. Le processeur 1 possède un bus de 64 bits parallèles que le pont 35 2 étend vers un bus de 72 bits parallèles en lui adjoignant 8 bits parallèles supplémentaires réservés à code de détection d'erreur EDC de 8 bits de type Hamming. Le dispositif d'interface transcodeur 4 implémente quant à lui un code de détection d'erreur EDC de type Reed-Solomon de 32 bits, adapté à une architecture de mémoire vive constituée de six composants électroniques de type SDRAM 31 à 36 à largeur individuelle de donnée de 16 bits parallèles et présentant au total une largeur de bus de 96 bits parallèles : 64 bits pour les données et le reste pour le code de détection d'erreur EDC de 32 bits de type Reed-Solomon. Réalisé sous la forme d'un réseau logique io programmable, il associe un codeur-décodeur de Hamming à architecture parallèle, à un codeur-décodeur de Reed-Solomon à architecture parallèle et en pipeline tel que, par exemple, celui décrit dans le brevet américain US 5,754,563 et permet de corriger toutes les erreurs multiples concentrées dans un même composant de la mémoire vive. 15 D'autres architectures que celle représentée peuvent être envisagées pour la génération des différentes horloges. Il peut en particulier s'avérer judicieux de mettre à profit les oscillateurs à verrouillage de phase PLL éventuellement présents dans le circuit programmable choisi pour implémenter le dispositif d'interface transcodeur 4 pour générer l'ensemble 20 des horloges. La figure 2 est un diagramme de temps donnant un chronogramme de fonctionnement relativement aux signaux d'horloge p du pont 2 et t du dispositif d'interface transcodeur 4 et de la mémoire vive 31 à 36, pour un pont 2 configuré avec un paramètre de latence de 3 cycles 25 d'horloge, une mémoire configurée avec un paramètre de latence de 2 cycles d'horloge, un rapport de fréquence de signaux d'horloge entre le pont 2 et la mémoire vive égal à 2 et une profondeur de pipeline égale à 4. Un ordre de lecture ou d'écriture transmis par le pont 2 au cours d'une période a de son signal d'horloge p est transmis par le dispositif 30 d'interface transcodeur 4 à la mémoire vive 31 à 36 au cours de la deuxième partie a2 de cette période a. Il est exécuté par la mémoire vive 32 à 36, pour ce qui concerne des 16 premiers bits Dl de la donnée en fin b2 du deuxième cycle du signal d'horloge p. Ces 16 premiers bits Dl sont alors traités par le dispositif d'interface transcodeur 4 qui utilise les quatre étages de pipeline et 35 les rend accessibles pour le pont 2 en fin d2 du quatrième cycle du signal d'horloge p. Le pont 2 a à sa disposition une donnée complète Dl, D2, D3, D4, sept cycles de signal d'horloge p après qu'il en ait fait la demande. On note qu'en cas d'erreur, il est possible d'insérer un cycle de correction d'une donnée dans la mémoire vive 31 à 36 de façon parfaitement transparente pour le pont 2 et le processeur 1 pour autant que le dispositif d'interface transcodeur 4 puisse mener ce cycle de correction en arrière plan du cycle de lecture. La figure 3 est une variante du chronogramme de fonctionnement de la figure 2 établie, comme précédemment, pour un pont 2 configuré avec un paramètre de latence de 3 cycles d'horloge, une mémoire configurée avec un paramètre de latence de 2 cycles d'horloge mais avec un rapport de fréquence de signaux d'horloge entre le pont 2 et la mémoire vive égal à 3 au lieu de 2 et avec une profondeur de pipeline égale à 8 au lieu de 4. Le pont 2 a encore à sa disposition une donnée complète Dl, D2, D3, D4, sept cycles de signal d'horloge p après qu'il en ait fait la demande car le doublement du nombre d'étages du pipeline est compensé exactement par l'augmentation du rapport de fréquence des signaux d'horloge. La différence vient ici du fait qu'il devient possible d'insérer un cycle de correction d'une donnée dans la mémoire vive 31 à 36 de façon parfaitement transparente pour le pont 2 et le processeur 1 sans que le dispositif d'interface transcodeur 4 ait à mener ce cycle de correction en arrière plan d'un cycle de lecture. II peut être intéressant d'utiliser des composants électroniques mémoire 31 à 36 de largeur 8 bits parallèles et de profondeur double accédés en deux cycles ce qui présente l'avantage de diminuer de moitié la largeur du bus de données sur le composant du dispositif d'interface transcodeur 4. Dans ce cas, un étage de pipeline devra être utilisé pour la concaténation des deux demi data. La figure 4 illustre le cadencement associé à une telle solution pour un rapport de fréquence de signal d'horloge de 2. Dans ce cas, il n'est plus possible de procéder dans la mémoire vive 31 à 36, à une correction d'erreur transparente pour le pont 2 et le processeur 1. L'inconvénient de ne pas corriger les erreurs à la source est que dans ce cas de telles erreurs peuvent à la longue s'accumuler et mettre en défaut la capacité de détection et de correction. Il est toutefois possible de forcer le pont 2 et/ou le processeur 1 à effectuer un cycle de correction en lui transmettant une data dans laquelle on aura sciemment inséré une erreur simple détectable et corrigeable par le code de Hamming. En effet dans ce cas, les mécanismes de détection et correction d'erreur propres au pont 2 ou à l'ensemble pont-processeur 1, 2 seront mis en oeuvre provoquant un cycle d'écriture de correction qui sera pris en compte par le transcodeur comme un cycle d'écriture classique. REVENDICATIONS 1. Procédé de sécurisation de la mémoire d'un calculateur comportant un couple processeur-pont (1, 2), le pont (2) assurant des fonctions auxiliaires de contrôle des échanges de données entre le processeur(1) et une mémoire vive (31 à 36) incorporant un code correcteur d'erreurs de type Hamming aux informations échangées, caractérisé en ce qu'il consiste à intercaler entre le couple processeur-pont (1, 2) et la mémoire vive (31 à 36), un dispositif d'interface (4) réalisant un transcodage dans les deux sens entre le code de correction d'erreurs de type Hamming incorporé dans les informations échangées par les fonctions auxiliaires de contrôle des échanges de données du couple processeur-pont (1, 2) et un code de correction d'erreurs de type Reed-Solomon adapté à l'architecture de la mémoire vive. 2. Procédé selon la revendication 1, caractérisé en ce que les couples processeur-pont (1, 2) et dispositif d'interface-mémoire vive (4, 31 à 36) fonctionnent selon des cycles d'horloges distincts et synchrones, la période d'horloge du couple dispositif d'interface-mémoire vive (4, 31 à 36) étant plus courte que celle du couple processeur-pont (1, 2) et dans un rapport entier, et le pont (2) étant paramétrable en cycle de latence. 3. Procédé selon la revendication 2, caractérisé en ce que le dispositif d'interface (4) et la mémoire vive (31 à 36) fonctionnent à une fréquence d'horloge nominale double de celle du pont (2). 4. Procédé selon la revendication 2, caractérisé en ce que le dispositif d'interface (4) et la mémoire vive (31 à 36) fonctionnent à une fréquence d'horloge nominale triple de celle du pont (2). 30 5. Procédé selon la revendication 1, caractérisé en ce que le dispositif d'interface (4) corrige dans la mémoire vive(31 à 36) les erreurs de données identifiées par le code de correction d'erreur de type Reed-Solomon.25 6. Procédé selon la revendication 1, caractérisé en ce que le dispositif d'interface (4) transpose une valeur de code de correction d'erreur de type Reed-Solomon caractéristique d'une présence d'erreur dans la donnée codée en une valeur de code de détection d'erreur de type Hamming caractéristique d'une présence d'erreur détectable et corrigeable dans la donnée codée, cela afin de faire réagir le couple processeur-pont. 7 Dispositif de mise en oeuvre du procédé selon la revendication 1, caractérisé en ce qu'il comporte intercalé entre le couple processeurpont io (1, 2) et la mémoire vive (31 à 36), un dispositif d'interface (4) assurant le transcodage, réalisé sous la forme d'un réseau logique programmable.