FR 2748136 A1 19971031 FR 9605424 A 19960430 MODULE ELECTRONIQUE AVEC ARCHITECTURE REDONDANTE POUR CONTRÔLE D'INTEGRITE DU FONCTIONNEMENT L'invention conceme les architectures électroniques complexes et devant fonctionner avec un haut degré de sécurité, telles que les architectures de communication électronique à l'intérieur d'un aéronef pour lesquelles la complexité résulte du grand nombre d'informations à traiter, du grand nombre de fonctions de traitement de ces informations, et du haut degré de sécurité exigé pour la fiabilité du fonctionnement de l'aéronef. Dans la suite on considérera par conséquent principalement le cas des systèmes électroniques d'avions, mais l'invention serait applicable dans d'autres cas. Les systèmes électroniques embarqués dans un avion moderne comportent en général plusieurs calculateurs communiquant entre eux et communiquant avec d'autres éléments électroniques (capteurs, système de visualisation, boutons et claviers de commande, actionneurs électromécaniques, etc.) par l'intermédiaire de fils ou de bus. Mais aujourd'hui, pour des raisons tenant notamment à la maintenance, on tend à préférer une architecture modulaire dans laquelle les fonctions électroniques sont regroupées dans des étagères électroniques (ou "racks"). Ces étagères sont constituées de plusieurs modules enfichables communiquant entre eux par l'intermédiaire d'un bus dit "bus de fond de panier", et communiquant en outre éventuellement avec des éléments extérieurs ou avec un ou plusieurs bus généraux de l'avion appelés "bus avion". Typiquement, une étagère peut comprendre des modules d'alimentation électrique, plusieurs modules d'entrée/sortie communiquant d'une part avec le bus de fond de panier et d'autre part avec des éléments extérieurs par des lignes spécifiques, plusieurs modules de traitement communiquant seulement avec le bus de fond de panier, et des modules de transfert de données (appelé aussi module "gateway") communiquant avec le bus de fond de panier d'une part et avec le ou les bus avion d'autre part. Ces étagères constituées de modules relativement standards exécutent alors des fonctions qui dépendent essentiellement des logiciels d'application embarqués en mémoire ROM ou EEPROM dans les modules. En cas de panne, un module défectueux est identifié et remplacé au sol très rapidement, évitant les coûts élevés d'immobilisation de l'avion au sol. Par ailleurs, ce type d'architecture modulaire permet d'aboutir à une réduction du poids, de la consommation, et du coût pour les mêmes fonctions qui étaient accomplies auparavant par des calculateurs séparés. Ceci résulte par exemple de la mise en commun des alimentations pour plusieurs fonctions présentes dans une meme étagère modulaire, ou la mise en commun des cartes d'entréelsortie lorsque des signaux d'entréelsortie identiques doivent etre utilisés dans plusieurs fonctions électroniques différentes. Mais ce type d'architecture modulaire entraîne une concentration des informations à un même endroit (I'étagère) et il faut s'assurer que cela n'entraine pas une détérioration de la fiabilité de l'ensemble: par exemple, il ne faut pas qu'une erreur qui se produit dans une carte entraîne une défaillance de l'ensemble de l'étagère. II faut donc pouvoir facilement identifier et inhiber un module défaillant sans que cela altère les fonctions des autres modules de l'étagère. Une des conséquences est qu'il faut assurer une très grande capacité de détection des pannes. Typiquement, on recherche un taux de pannes non détectées de la classe 10-7 par heure, pour une fiabilité de module de de la classe 10-5 panne par heure. Autrement dit, non seulement les modules doivent être suffisamment fiables, mais également ces pannes doivent être détectées par le système avec un degré de certitude très élevé. La détection de panne doit être effectuée à l'intérieur de chaque module pour que le module constate lui-meme sa défaillance et foumisse immédiatement une information d'invalidité. Pour accroître la fiabilité et le taux de détection de pannes, une méthode maintenant classique consiste à utiliser systématiquement une redondance des fonctions électroniques et à vérifier la concordance des informations résultant de l'exécution indépendante de ces fonctions par deux circuits séparés identiques. Typiquement, deux processeurs d'un même module électronique fonctionnent en parallèle sur les mêmes programmes et communiquent avec l'extérieur par des circuits d'interface appelés "Bus Interface Unit". Ces circuits d'interface constituent un tampon par lequel transitent, en entrée ou en sortie, toutes les données de communication entre les processeurs et l'extérieur. Ces circuits d'interface se contrôlent mutuellement pour assurer qu'une même donnée est émise à un meme instant vers l'extérieur par les deux processeurs. Si les données diffèrent, on considère qu'il y a dysfonctionnement et les deux circuits d'interface sont inhibés et isolent ainsi le module. Pour assurer en permanence cette comparaison des fonctionnements des deux processeurs, on se rend compte qu'il y a un problème de synchronisation difficile à résoudre. Les deux processeurs peuvent être synchronisés par une horloge commune afin qu'ils exécutent des taches identiques au même moment. Mais les circuits d'interface avec l'extérieur doivent être pilotés par des horloges indépendantes pour assurer véritablement une détection d'erreurs; par exemple, la norme ARINC 659, pour la communication avec un bus sécurisé de fond de panier en avionique, impose une duplication et une indépendance des interfaces entre bus et module, et en particulier une séparation des horloges des circuits d'interface. Or ces actions indépendantes des circuits d'interface peuvent entraîner des dérives de fonctionnement des microprocesseurs par rapport à ces circuits. Typiquement, un des deux microprocesseurs peut travailler sur une donnée fournie par son circuit d'interface à un moment donné, alors que l'autre circuit d'interface est légèrement en retard pour fournir la même donnée, de sorte que l'autre microprocesseur exécute la même instruction (du fait de l'horloge commune des deux microprocesseurs), mais sur une donnée ancienne non encore mise à jour par le deuxième circuit d'interface. II en résulte alors des résultats différents et une détection d'erreur qui interrompt les tâches des deux microprocesseurs alors que chacun des deux travaillait en fait correctement. Une telle fausse alarme n'est pas acceptable. C'est pourquoi il existe un besoin pour une architecture de modules électroniques qui améliore la fiabilité et qui facilite un taux élevé de détection de panne sans détection de fausses alarmes. Dans l'architecture selon l'invention, on propose d'incorporer à un module électronique comportant deux processeurs, travaillant de manière redondante mais non synchrone, un circuit de contrôle de synchronisme qui vérifie le synchronisme de certaines tâches spécifiques et qui décale dans le temps la tache exécutée par celui des processeurs qui est en avance par rapport à l'autre. Les tâches concernées sont principalement celles qui comportent une communication de données avec l'extérieur du module. On propose plus précisément un module électronique comportant deux processeurs qui effectuent de manière redondante mais non synchrones les memes tâches, caractérisé en ce qu'il comprend un circuit de controle de synchronisme effectuant, pour des taches spécifiées parmi les taches possibles, les opérations suivantes: - détection d'un commencement d'exécution d'une des taches spécifiées, - déclenchement d'une temporisation de durée déterminée lorsque cette tâche est démarrée par l'un des processeurs, - comparaison des tâches effectuées par les deux processeurs, - blocage de la tâche du premier processeur tant que l'autre processeur ne démarre pas la même tâche, - lorsque la tâche est commencée par le deuxième processeur, comparaison bit à bit des adresses et données utilisées par les deux processeurs pour l'exécution de la tache, et libération de la tâche pour les deux processeurs si les adresses et données sont identiques pour les deux processeurs, - émission d'un signal d'erreur s'il n'y a pas identité des adresses et données, et émission d'un signal d'erreur si la durée déterminée est écoulée sans que le deuxième processeur ait commencé la même tâche. Les tâches spécifiées qui donnent lieu à une tel recalage de synchronisation sont de préférence toutes les tâches associées à la communication entre le module électronique et l'extérieur, que ce soit en émission ou en réception de données. Une tâche peut être définie par les deux éléments suivants : un type d'accès mémoire (lecture de donnée, écriture de donnée notamment) et une plage d'adresses d'exécution de cette instruction (plage correspondant aux interfaces avec l'extérieur, par opposition aux plages d'adresses réservées aux mémoires de travail et de programme, RAM, ROM, EPROM associées au processeur). En résumé, pour certaines tâches, et notamment les émissions de données vers l'extérieur du module électronique et la réception de données en provenance de l'extérieur, on vérifie le synchronisme d'exécution des tâches et on décale l'exécution de la tâche du processeur qui est le plus en avance pour être sur que les deux processeurs travaillent sur les memes données. Les dérives éventuelles d'horloge ou de fonctionnement des processeurs sont donc rattrapées de temps en temps1 et ce rattrapage est fait précisément à l'occasion des tâches pour lesquelles une exécution synchrone est particulièrement critique. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit et qui est faite en référence aux dessins annexés dans lesquels la figure unique représente l'architecture générale d'un module électronique redondant selon l'invention. Le module comprend deux processeurs fonctionnant de manière redondante, c'est-à-dire qu'ils effectuent les mêmes tâches à peu près simultanément mais indépendamment l'un de l'autre. Par l'expression "à peu près simultanément", on entend le fait que les circuits ne sont pas rhytmés par la même horloge etlou le fait que leurs cycles de fonctionnement interne ne sont pas rigoureusement synchrones, mais cependant ils exécutent les tâches d'une manière suffisamment rapprochée dans le temps pour qu'on puisse détecter, par comparaison des données fournies vers l'extérieur par les deux processeurs, si une faute se produit dans le fonctionnement de l'un des deux processeurs. L'indépendance de fonctionnement des processeurs et la comparaison de ces fonctionnements est en effet le principe sur lequel se fonde le test des pannes : la probabilité pour qu'une même défaillance matérielle affecte au même instant les deux processeurs de conception identique est très faible et la comparaison des résultats permet donc de détecter une faute. Le module électronique comporte donc un processeur MP1 et un processeur MP2. A chaque processeur sont associés des circuits de mémoire (MM1, MM2 respectivement), éventuellement d'autres circuits logiques ou analogiques (CL1, CL2 respectivement), des circuits d'interface avec l'extérieur (BIU1, BIU2 respectivement), et un bus (B1, B2 respectivement) qui relie le processeur à ces divers circuits. Les circuits d'interface BIU1, BIU2, permettent la communication avec l'extérieur, par exemple avec un bus BEXT. Ce bus peut etre un bus de fond de panier d'une étagère comportant plusieurs modules électroniques. Pour une communication avec un bus sécurisé, et notamment avec un bus normalisé ARINC 659, on impose que les circuits d'interface BIU1 et BIU2 fonctionnent indépendamment l'un de l'autre et qu'une comparaison des données à émettre sur le bus extérieur soit effectuée systématiquement entre les circuits d'interface avant l'émission effective. Les horloges qui rythment leur fonctionnement sont séparées. Enfin, le module électronique comporte les circuits selon l'invention, destinés à assurer un contrôle du synchronisme des deux processeurs. Ces circuits sont constitués par un circuit CS1 surveillant l'exécution des tâches du premier processeur, et un circuit CS2 surveillant les tâches du deuxième processeur. Les deux circuits reçoivent les instructions, adresses et données, de l'un et l'autre des processeurs, c'est-àdire que chacun des circuits est connecté à la fois au bus B1 et au bus B2. La fonction du circuit CS1 consiste: - à surveiller le bus interne B1 du premier processeur pour y détecter certaines tâches prédéfinies pour lesquelles une opération de recalage de synchronisation est souhaitée; de manière générale ces tâches seront des tâches de communication avec l'extérieur par le circuit d'interface BIU1; cela veut dire que le circuit CS1 doit détecter la combinaison d'un type de cycle mémoire (lecture ou écriture principalement) avec une adresse ou une plage d'adresses (I'adresse ou la plage d'adresses qui correspond à la mémoire d'échange entre le circuit d'interface BIU1 et le processeur MP1); - à déclencher une temporisation de durée préétablie si une de ces tâches prédéfinies apparaît, et à bloquer temporairement l'exécution de cette tâche en attendant que l'autre processeur soit prêt à exécuter la même tache; - à comparer cycliquement à cette tâche la tâche actuellement exécutée par le deuxième processeur MP2 et à détecter s'il s'agit de la même tâche prédéfinie (c'est-à-dire même code d'instruction et même adresse ou plage d'adresse); - à comparer, dès que la même tâche est reconnue, les adresses et données, et éventuellement d'autres signaux de contrôle, sur lesquelles travaillent les deux processeurs, - à autoriser la poursuite de l'exécution de la tâche si c'est la même tâche qui est exécutée par les deux processeurs et si cette tâche se rapporte aux mêmes adresses et mêmes données dans les deux processeurs, et à condition que la durée de la temporisation ne soit pas terminée; - à envoyer un signal d'erreur si les tâches sont identiques et si les adresses et données ne sont pas identiques, - et à envoyer un signal d'erreur si la durée de la temporisation s'est écoulée sans que la même tâche prédéfinie soit apparue dans le deuxième processeur. Ces signaux d'erreur sont le signe d'un trop grand écart temporel entre les fonctionnements des deux processeurs, ou le signe que l'un des processeurs est en défaut de fonctionnement. Dans les deux cas, le module doit etre considéré comme non opérationnel et doit être mis hors service. Un registre d'état peut permettre de distinguer les erreurs résultant du dépassement de la temporisation (non exécution d'une tâche par le deuxième processeur) et les erreurs résultant d'adresses etlou données non identiques. Le circuit de surveillance CS2, identique au circuit CS1, exécute symétriquement les mêmes opérations pour l'autre processeur. Si le décalage temporel entre les instructions reçues par les deux processeurs est faible (à l'intérieur de la temporisation préétablie), les processeurs recalent leur fonctionnement puisqu'ils envoient ensemble un signal de libération du fonctionnement dès qu'ils détectent l'identité des tâches exécutées. Ce recalage n'est fait en principe que pour les instructions de communication avec l'extérieur puisque ce sont les instructions les plus critiques. On pourrait cependant prévoir qu'il soit fait aussi pour certaines autres instructions particulières. On comprendra que la structure symétrique du module implique que n'importe lequel des deux processeurs peut être légèrement en avance sur l'autre, et qu'il attend alors le deuxième pour poursuivre, I'exécution de la tâche étant libérée simultanément pour les deux processeurs. Les circuits d'interface BIU1 et BIU2 conservent leur rôle de détection d'erreurs d'émission : ils comparent bit à bit les données qu'ils doivent émettre sur le bus extérieur et ne les envoient que si la comparaison indique une identité (même bit au même instant). La structure générale du module électronique est la même dans le cas où le module est en relation non seulement avec un bus de fond de panier mais également avec d'autres éléments extérieurs. C'est le cas par exemple d'un module d'entréelsortie de données, qui est en contact d'un côté avec le bus de fond de panier, et de l'autre (par exemple à travers les circuits CLI, CL2) avec des capteurs, ou des actuateurs, des lignes recevant ou fournissant des données logiques ou analogiques, ou enfin un autre bus, tel que le bus général de l'avion (bus aux normes ARINC 629 par exemple). Dans ce cas, la liste des tâches préétablies nécessitant une resynchronisation peut être plus vaste que dans le cas d'un module relié uniquement au fond de panier, puisqu'elle inclut des tâches d'émission et réception de données aussi bien sur le bus de fond de panier que sur les autres bus ou lignes. REVENDICATIONS 1. Module électronique pour étagère de calculateur, comportant deux processeurs (MP1, MP2), travaillant de manière redondante mais non synchrone, caractérisé en ce qu'il comporte un circuit de contrôle de synchronisme (CS1, CS2) qui vérifie le synchronisme d'exécution de certaines tâches spécifiques par les deux processeurs, et qui décale dans le temps la tâche exécutée par celui des processeurs qui est en avance par rapport à l'autre. 2. Module électronique selon la revendication 1, caractérisé en ce que les tâches spécifiques sont les tâches de communication du module avec l'extérieur. 3. Module électronique comportant deux processeurs (MP1, MP2) qui effectuent de manière redondante mais non synchrones les mêmes tâches, caractérisé en ce qu'il comprend un circuit de contrôle de synchronisme (CS1, CS2) effectuant, pour des tâches spécifiées parmi les taches possibles, les opérations suivantes: - détection d'un commencement d'exécution d'une des tâches spécifiées, - déclenchement d'une temporisation de durée déterminée lorsque cette tâche est démarrée par l'un des processeurs, - comparaison des tâches effectuées par les deux processeurs, -blocage de la tâche du premier processeur tant que l'autre processeur ne démarre pas la même tâche, - lorsque la tâche est commencée par le deuxième processeur, comparaison bit à bit des adresses, données, et signaux de contrôle utilisés par les deux processeurs pour l'exécution de la tâche, et libération de la tâche pour les deux processeurs si les adresses, données, et signaux de contrôle sont identiques pour les deux processeurs, - émission d'un signal d'erreur s'il n'y a pas identité des adresses et données, et émission d'un signal d'erreur si la durée déterminée est écoulée sans que le deuxième processeurs ait commencé la meme tâche. 4. Module électronique selon la revendication 3, caractérisé en ce que le circuit de contrôle de synchronisme comprend deux circuits identiques associés chacun à l'un des processeurs et recevant d'une part un bus mémoire de ce processeur composé d'un bus adresse d'un bus donnée et des signaux de contrôle associés, et d'autre part un bus mémoire destiné à l'autre processeur. 5. Module électronique selon la revendication 4, caractérisé en ce qu'il comporte deux circuits d'interface avec l'extérieur (BIU1, BIU2), associés chacun à un processeur respectif, ces deux circuits étant rhytmés par des horloges différentes, les deux circuits d'interface étant pourvus de moyens de vérification mutuelle de l'identité des données qu'ils cherchent à émettre vers l'extérieur du module. 6. Module électronique selon l'une des revendications 4 et 5, caractérisé en ce que les tâches spécifiées sont les tâches associées à la communication entre le module et l'extérieur du module.