FR 3028066 A1 20160506 FR 1460633 A 20141104 3028066 PROCEDE ET DISPOSITIF DE TOLERANCE AUX FAUTES SUR DES COMPOSANTS ELECTRONIQUES Domaine de l'invention L'invention concerne le domaine des composants électroniques, et en particulier porte sur un procédé et un dispositif de tolérance aux fautes permanentes ou transitoires sur de tels composants. Etat de la Technique Dans un environnement hostile aux composants électroniques, que cela soit à cause de rayonnements de l'industrie spatiale, aéronautique ou nucléaire, par la chaleur ou toute autre cause, un système composé de composants électroniques peut subir une destruction partielle, et arriver au stade où plusieurs composants d'un même système ou bien une partie d'un seul composant peut ne plus fonctionner normalement. Ces destructions induisent des fautes permanentes. Elles se différencient des fautes dites transitoires qui elles changent temporairement la valeur d'un résultat (par exemple un changement de valeur d'un bit dans une mémoire) sans pour autant provoquer de dommage pour l'électronique. Les fautes permanentes étant inévitables, il existe différentes approches pour les tolérer lors du fonctionnement d'un composant ou d'un ensemble de composants formant un système électronique. Une première approche qui retarde l'apparition des fautes permanentes consiste en l'utilisation de technologies durcies pour la fabrication du ou de l'ensemble des composants afin de les rendre moins sensibles aux rayonnements ou aux effets thermiques. Ce type de solution est classiquement utilisé dans le domaine spatial. Le premier 2 3028066 inconvénient majeur de ce type d'approche est que le coût d'un composant durci est de 100 à 1000 fois supérieur au coût d'un composant non-durci. Par ailleurs, les composants durcis ont généralement plusieurs générations de retard, technologiquement parlant, par rapport aux 5 composants du commerce. Beaucoup de composants de classes militaire et spatiale sont soumis à des règles d'exportation strictes, ce qui limite fortement leur utilisabilité en Europe et plus largement en dehors des USA. Enfin, la technologie durcie ne fait que retarder l'apparition de fautes et le composant ne fonctionne plus si une faute permanente 10 apparait, malgré le durcissement effectué. Une seconde approche connue de tolérance aux fautes permanentes, est l'utilisation de redondances pour masquer les dites fautes permanentes. Le moyen le plus connu est la triplication qui consiste à tripler l'intégralité du design et d'insérer des voteurs pour 15 comparer les résultats des calculs et ainsi mémoriser uniquement le bon résultat. L'article de S. D'Angelo, C. Metra, and G. R. Sechi, "Transient and permanent fault diagnosis for fpga-based tmr systems," Tolerance in VLSI Systems, 1999 présente une telle approche. Cette méthode a initialement été développée pour la tolérance aux fautes transitoires, mais 20 elle permet aussi de détecter et masquer momentanément les fautes permanentes. L'inconvénient de cette méthode est qu'elle ne permet de masquer qu'au maximum une seule faute par élément de circuit tripliqué entre deux voteurs. A partir du moment où une faute est apparue, le résultat n'est plus garanti. Pour pallier à cette limitation, il est possible, 25 avec un surcoût encore plus important, d'augmenter le nombre de ressources, par exemple faire du vote majoritaire avec 5 voies. Une approche récente décrite dans l'article de Z. E. Rakossy, M. Hiromoto, H. Tsutsui, T. Sato, Y. Nakamura, and H. Ochi, "Hot-Swapping Architecture with Back-biased Testing for Mitigation of Permanent Faults 30 in Functional Unit Array," in DATE '13 Proceedings of the Conference on 3 3028066 Design, Automation and Test in Europe, 2013, permet d'intégrer de façon quasi transparente de l'autotest dans une architecture pour ne plus utiliser les ressources qui sont défectueuses. Pour cela, l'architecture est organisée en lignes, et chaque ligne contient un certain nombre de 5 ressources capables d'effectuer des calculs. Entre les lignes, il y a deux niveaux d'interconnexion, le premier servant à réaliser le chemin de données de l'application qui est portée sur l'architecture, le second étant un ensemble de switches permettant d'éventuellement rediriger les données vers d'autres ressources de calculs proches. Une application 10 peut utiliser seulement un certain nombre de ressources par ligne fixé par avance, par exemple 4 parmi 7 disponibles. Les ressources supplémentaires permettent de réaliser de l'autotest. Durant une exécution normale, les ressources qui sont testées vont changer au cours du temps de manière à régulièrement tester l'intégralité de la ligne. Le 15 second niveau d'interconnexion permet de conserver la fonctionnalité malgré l'autotest. Le composant peut ainsi fonctionner en ignorant les ressources de calcul défectueux tant qu'il reste des ressources libres dans la ligne. La principale limitation de cette approche est son découpage en lignes. En effet, si une ligne perd un nombre de ressources 20 de calcul égal au nombre de ressources libres de la ligne, il ne sera plus possible d'effectuer l'autotest et si elle en perd d'avantage, le système ne fonctionnera plus même s'il reste des ressources libres dans d'autres lignes. Une autre approche proposée dans l'article de S. Eisenhardt, A. 25 Küster, T. Schweizer, T. Kuhn, and W. Rosenstiel, "Spatial and Temporal Data Path Remapping for Fault-Tolerant Coarse-Grained Reconfigurable Architectures," 2011 IEEE International Symposium on Defect and Fault Tolerance in VLSI and Nanotechnology Systems, pp. 382-388, Oct. 2011, permet une certaine tolérance aux fautes pour les Architectures Reconfigurables à Gros Grains (CGRAs). Lors de l'apparition d'une faute 4 3028066 permanente, un voisinage autour de la ressource de calcul (appelée « tuile ») fautive est considéré. La méthode consiste à chercher s'il est possible de déplacer les calculs dans ce voisinage afin qu'ils n'utilisent plus la ressource de calcul défectueuse. Le voisinage commence par un 5 groupe de 3x3 tuiles centré sur la tuile fautive, puis, si il n'existe pas de solution, il est agrandi à 5x5 tuiles, puis à 7x7 tuiles. Le problème est que le temps de reconfiguration peut être rédhibitoire pour des applications temps réel car la synthèse/compilation sur CGRA est extrêmement complexe, et le système ne fonctionne plus durant cette reconfiguration. 10 De plus, l'exploration se limite à des voisinages restreints ne permettant pas, par exemple, de simplement déplacer l'intégralité des calculs dans une seule direction. Dans le document de Y. Wang, L. Zhang, Y. Han, H. Li, and X. Li, "Elastic CGRA: Circumventing Hard-faults Through Instruction Mitigation," in IEEE/IFIP International Conference on 15 Dependable Systems and Networks (DSN), 2011, la solution décrite est de déplacer les calculs sur des lignes ou des colonnes afin de profiter de ressources libres dans l'intégralité du CGRA. L'inconvénient est que cette approche ne permet pas de tolérer plusieurs fautes permanentes les unes à côté des autres, limitant alors son intérêt. 20 Ainsi, il n'existe pas de solution qui permette une réelle tolérance à plusieurs fautes permanentes, sans interruption du fonctionnement d'un système. Il existe alors le besoin d'une solution qui palie aux inconvénients des approches connues. La présente invention répond à ce besoin. 25 5 3028066 Résumé de l'invention Un objet de la présente invention est de proposer un procédé et un dispositif pour tolérer des fautes transitoires et des fautes permanentes au sein d'un système électronique numérique. Un autre objet de 5 l'invention est de détecter des fautes permanentes et les masquer sans interrompre un traitement en cours effectué par un système électronique. L'invention propose une architecture dite en « ping-pong » qui permet de basculer le fonctionnement d'une unité fonctionnelle qui est capable de détecter et de signaler qu'une de ses ressources de calcul est 10 défectueuse, vers une autre unité fonctionnelle non défectueuse, le temps de la reconfiguration de l'unité fonctionnelle soumise à une faute permanente, afin d'assurer un fonctionnement continu et la production de résultats corrects. Avantageusement, la présente invention permet en cas 15 d'apparitions de fautes permanentes, d'augmenter la durée de vie d'un dispositif électronique qu'il soit durci ou non durci, et ce, sans interrompre son fonctionnement. Avantageusement, l'invention permet de faciliter la mise place d'une maintenance préventive. 20 Avantageusement, l'invention utilise l'intégralité du composant pour augmenter sa durée de vie, détecte en temps réel l'apparition des fautes et agit en conséquence sans attendre un éventuel autotest. La méthode de l'invention offre une flexibilité en termes de reconfigurabilité car elle permet d'utiliser le plus longtemps possible un 25 dispositif tant que des ressources de calcul qui composent les unités fonctionnelles en bon état sont disponibles en nombre suffisant pour assurer un fonctionnement minimal. 6 3028066 De plus elle permet par un simple suivi du dénombrement des calculateurs non endommagés, de connaitre le nombre de configurations restantes et ainsi de prévoir de la maintenance préventive par le remplacement de modules, voire d'estimer la durée de vie restante du 5 composant en ligne. Avantageusement, la méthode de l'invention étant une méthode architecturale, elle ne dépend pas d'un procédé de fabrication. Elle peut être adaptée aussi bien sur des composants « rad-hard » afin de cumuler les avantages des deux techniques, qu'utilisée avec des technologies 10 d'intégration pour des composants de grande consommation par exemple. La méthode de l'invention étant indépendante de la technologie d'intégration, elle peut être appliquée aussi bien avec des composants discrets qu'au niveau de circuits intégrés. Elle peut être dérivée afin d'être 15 utilisée dans le domaine du calcul en réseau, en mode « cluster, cloud computing » par exemple. La présente invention trouvera avantageusement application dans le domaine de l'instrumentation nucléaire ainsi que dans les domaines du spatial et du militaire. Plus généralement, l'invention est d'intérêt dans 20 tout domaine où l'électronique est soumise à des conditions de fonctionnement difficiles en température, rayonnement ionisant, vieillissement, comme l'automobile et l'aéronautique, ou encore si la durée de vie doit être importante, par exemple dans un sous-marin où un composant doit être fiable durant la durée de l'immersion, dans une 25 centrale où il faut attendre un arrêt de tranche pour faire de la maintenance, mais aussi dans les situations où il doit pouvoir être fait de la maintenance préventive. Par ailleurs, les secteurs qui utilisent des appareils électroniques qui ne peuvent pas facilement être remplacés en cas de défaillance, tels 7 3028066 les secteurs aéronautiques, nautique et sous-marinier y trouveront intérêt, mais aussi le secteur de l'automobile et plus généralement les constructeurs et développeurs d'appareils électroniques mobiles. Enfin les applications militaires sont aussi privilégiées, d'une part en raison des 5 restrictions sur les importations de composants, d'autre part parce que la méthode proposée permet de faire de la fiabilité à moindre coût (pour usage unique par exemple) ou d'assurer de la maintenance préventive. Avantageusement, l'invention pourra permettre l'utilisation de composants dédiés présentant des défauts, dus par exemple à la 10 réduction de la finesse de gravure de l'électronique, après avoir détecté les parties défectueuses. Ainsi, il sera possible de ne pas jeter ces composants s'il existe une configuration permettant d'exécuter le code qu'ils sont censés réaliser. A ce titre, l'invention intéressera les fondeurs qui cherchent à diminuer les taux de rejets des fonderies, de plus en plus 15 élevés à cause de la finesse de gravure qui augmente. Pour obtenir les résultats recherchés, un procédé de tolérance aux fautes sans interruption de fonctionnement d'un système électronique est proposé. Le système est composé d'au moins deux représentations d'unités fonctionnelles, les unités fonctionnelles ayant une pluralité de 20 ressources de calculs, chaque représentation étant associée à une liste de configurations des ressources de calculs afin d'exécuter une application sur ladite représentation. Le procédé est implémenté par ordinateur et comprend les étapes suivantes : - en réponse à la détection d'une faute permanente, chercher 25 parmi les représentations d'unités fonctionnelles, une représentation offrant une configuration valide pour exécuter ladite application : - en réponse à l'identification d'une représentation, activer la représentation d'unité fonctionnelle identifiée et basculer 8 3028066 l'exécution de ladite application vers ladite représentation identifiée ; et - mettre à jour la liste des configurations permettant d'exécuter ladite application sans la ressource de calculs défectueuse pour 5 la première représentation d'unité fonctionnelle. Dans un mode de réalisation, le procédé comprend une étape initiale de détection d'une faute sur une des ressources de calculs, lors de l'exécution d'une application sur une première représentation d'unité 10 fonctionnelle. Dans un mode de réalisation, l'étape de détection de fautes consiste à faire de l'autotest périodique sur les représentations d'unités fonctionnelles. Dans un autre mode réalisation, l'étape de détection de fautes consiste à compter les erreurs successives (identifiées par 15 triplication et vote majoritaire par exemple, ou par code correcteur d'erreur), et noter la ressource comme fautive lorsque plusieurs erreurs successives se produisent. Dans un mode de réalisation, l'étape de mise à jour de la liste des configurations consiste à compiler l'application exécutée à la volée. Dans 20 un autre mode, il s'agit de sélectionner une configuration dans une liste qui contient un ensemble d'applications précompilées. Avantageusement, la liste des configurations comprend des configurations utilisant des ressources de calculs différentes. Toujours avantageusement, la liste des configurations comprend des 25 configurations dont l'interconnexion entre des ressources de calculs est différente. Dans une variante d'implémentation, le procédé comprend avant l'étape de mise à jour, une étape pour déterminer si une configuration 9 3028066 n'utilisant pas une ou plusieurs ressources de calculs défectueuses est disponible pour la première représentation. Dans une autre variante d'implémentation, le procédé comprend, 5 avant l'étape de mise à jour, une étape pour déterminer s'il existe une version mode dégradé du code de l'application. Dans une implémentation préférentielle, l'unité fonctionnelle est représentée par une architecture reconfigurable à gros grains composée de ressources de calculs. 10 Le procédé comprend dans une implémentation, une étape initiale pour définir au moins deux représentations d'architecture reconfigurable sous forme d'unités fonctionnelles, et une liste de configurations des ressources de calculs afin d'exécuter une application. L'invention concerne aussi un dispositif de tolérance aux fautes 15 sans interruption de fonctionnement d'un système électronique, composé d'au moins deux représentations d'unités fonctionnelles, les unités fonctionnelles ayant une pluralité de ressources de calculs, chaque représentation étant associée à une liste de configurations des ressources de calculs afin d'exécuter une application sur ladite 20 représentation, le dispositif comprenant des moyens pour mettre en oeuvre les étapes du procédé. Une partie de l'invention peut opérer sous la forme d'un produit programme d'ordinateur qui comprend des instructions de code permettant d'effectuer les étapes du procédé revendiqué lorsque le programme est exécuté sur un ordinateur. 25 10 3028066 Description des figures Différents aspects et avantages de l'invention vont apparaitre en appui de la description d'un mode préféré d'implémentation de l'invention mais non limitatif, avec référence aux figures ci-dessous : 5 La figure 1 est un schéma des blocs fonctionnels permettant d'opérer le procédé de l'invention dans un mode de réalisation; La figure 2 montre un enchainement des étapes du procédé de tolérance aux fautes dans un mode de réalisation de l'invention ; Les figures 3a à 3c illustrent la mise à jour d'une liste de configurations 10 sur un exemple de représentation d'unité fonctionnelle dans un mode de réalisation de l'invention ; Les figures 4a à 4c illustrent des exemples de réseaux de ressources de calcul interconnectées selon un mode de réalisation de l'invention. 15 Description détaillée de l'invention Référence est faite à la figure 1 qui montre les blocs fonctionnels permettant d'implémenter l'invention. Il est à considérer que pour différents modes de réalisation, des variations et modifications peuvent 20 être apportées à cet exemple qui n'est décrit qu'à titre illustratif et non limitatif. Le dispositif de l'invention 100 est applicable à tout système électronique qu'il soit un composant unique comportant une pluralité de ressources de calculs ou un ensemble de composants formant un réseau 25 ou une matrice de ressources de calculs homogènes ou hétérogènes. L'unité fonctionnelle peut être basée sur une architecture à plusieurs 11 3028066 coeurs de processeurs ou une architecture reconfigurable à gros grains (CGRA) simple. Dans une implémentation préférentielle, l'architecture est un CGRA possédant un ensemble de ressources de calcul qui permettent de 5 réaliser les opérations nécessaires (addition, multiplication, soustraction, etc.) à une application qui doit être exécutée. Les ressources de calcul peuvent aussi être des composants discrets tels des microprocesseurs, des microcontrôleurs, des processeurs de signal numérique (DSP) ou des composants dédiés. Dans des alternatives d'implémentation, les 10 ressources de calculs peuvent être des unités centrales complètes, voire des ensembles de calculateurs (cluster). L'architecture globale du système est initialement modélisée sous la forme d'un graphe. Ce graphe sera, dans une implémentation préférentielle utilisant des CGRAs, rendu équivalent à celui représentant 15 l'application au travers des étapes décrites dans l'article de Peyret, T., Corre, G., Thevenin, M., Martin, K., Coussy, P. (2014) « Efficient application mapping on CGRAs based on backward simultaneous scheduling/binding and dynamic graph transformations » in 2014 IEEE 25th International Conference on Application-Specific Systems, 20 Architectures and Processors, et qui permet d'obtenir plusieurs configurations différentes. Sur l'exemple de la figure 1, le système électronique comporte une pluralité de ressources de calculs (106-1 à 106-n). L'architecture du système est représentée sous la forme d'une première unité fonctionnelle 25 104-1 et d'au moins une seconde unité fonctionnelle 104-2. L'homme du métier appréciera que l'invention puisse être étendue à une pluralité d'unités fonctionnelles 102. Un ensemble de composants fonctionnels 108 comprend un gestionnaire de configuration 110, couplé à une base de configurations 112 et un activateur de représentation 114. Le dispositif 12 3028066 de l'invention peut être couplé à un détecteur de fautes (non représenté) qui permet de détecter des fautes dans chaque unité fonctionnelle. Selon les implémentations, les fonctions des éléments 110, 112, 114 peuvent être centralisées, partiellement ou totalement distribuées sur 5 les ressources de calcul. Le gestionnaire de reconfiguration 110 permet d'associer chaque représentation à une liste de configurations des ressources de calculs. Une configuration consiste à interconnecter des ressources de calculs entre elles afin d'exécuter une application donnée sur ladite 10 représentation. Un exemple d'association d'une représentation d'unité fonctionnelle reconfigurable 302 avec une liste de configurations 304 est montré sur la figure 3a. Dans cet exemple, une application est initialement exécutée selon une première configuration 304-1 comportant cinq ressources de calculs. A l'état initial, l'ensemble des ressources de 15 calculs sont valides. La liste 304 associée à la représentation active 302, comporte initialement quatre configurations possibles 304-1 à 304-4 pour exécuter l'application portée. De manière plus détaillée, la (re)configuration qui consiste à associer des opérations (ou des traitements selon la granularité) à des 20 ressources de calcul, peut se faire de diverses manières. Dans une implémentation, la reconfiguration peut se faire selon le principe du « Just In Time Compilation » qui consiste à compiler l'application exécutée à la volée. Dans une implémentation préférentielle d'un CGRA, un algorithme 25 de recherche de configurations permet d'obtenir des configurations différentes pour les diagrammes de flux de données (Control and Data Flow Graphs CDFGs en anglais) du code de l'application à porter. Les configurations différentes peuvent soit utiliser des ressources de calcul différentes ou l'interconnexion entre les ressources de calculs peut être 30 différente. 13 3028066 L'algorithme de configuration permet d'obtenir des réseaux plus ou moins connectés, avec plus ou moins de ressources utilisées et étant plus ou moins homogènes. Des exemples de configurations de réseaux ayant huit ressources 5 de calcul sont illustrés sur les figures 4a à 4c. Dans ces exemples, les réseaux sont calculés avec deux niveaux de contraintes, le nombre maximal de voisins (4 sur la figure 4a ; 3 sur la figure 4b ; 3 et 2 sur la figure 4c) et le nombre maximal de ressources de calculs pouvant communiquer selon une capacité maximale (2 et 1 sur la figure 4a; 4, 3 10 et 2 sur la figure 4b ; 1, 6 et 8 sur la figure 4C). Un tri basé sur un compromis entre le nombre de ressources nécessaires, l'agencement des ressources et la latence d'exécution permet de ne conserver que les meilleures solutions en termes de latence et d'utilisation de ressources de calcul. Par exemple, s'il existe une 15 configuration de même latence qu'une autre mais qui est incluse dans une autre, cette dernière est à privilégier. Par contre, si la configuration utilisant plus de ressources est plus rapide, les deux configurations peuvent être conservées. En effet, le code d'une application n'est pas constitué que d'un seul graphe (DFG), mais d'un ensemble de graphes, et 20 la contrainte de latence s'applique à l'ensemble des DFGs et pas à chacun d'eux. Il faut donc considérer qu'il est possible d'utiliser une version plus lente d'un DFG, à cause des ressources encore disponibles, et de compenser cette augmentation en utilisant une configuration pour une autre partie qui utilise plus de ressources que la plus petite 25 configuration mais qui est plus rapide. Ainsi, la latence globale reste inchangée. L'homme du métier appréciera que les configurations peuvent soit être calculées dynamiquement, soit être pré-calculées. Dans cette variante, elles sont mémorisées dans la base de configurations 112 et 30 embarquées sur le système. 14 3028066 Le principe de l'invention est que lors de la détection d'une faute permanente par le détecteur de faute, le traitement en cours est basculé sur une autre représentation disponible et rendue active par l'activateur de représentation 114. Quand le basculement est effectif, la 5 reconfiguration est calculée sur la représentation contenant la ressource défectueuse, et la liste des configurations est mise à jour. En reprenant l'exemple des figures 3a à 3d, partant d'un fonctionnement initial en figure 3a selon la configuration 304-1, lors de la détection d'une faute permanente sur la ressource de calcul 306 en figure 10 3b, la représentation est dans un état où certaines ressources de calculs sont valides et d'autre défectueuses. Après basculement du traitement sur une autre représentation (non illustré), la liste des configurations est mise à jour en fonction de l'état de la représentation. Ainsi sur la figure 3c, les configurations 304-12 et 304-32 ne sont plus valides pour le traitement 15 à effectuer et sont supprimées de la liste des configurations disponibles. La figure 3d montre la liste des configurations restantes valides (304-3, 304-4) pour le traitement à effectuer. Avantageusement, le principe de l'invention est particulièrement flexible et offre des bénéfices supplémentaires. Le premier est de 20 permettre de faire de l'autotest sur la représentation qui n'est pas utilisée. Il est alors possible de confirmer des fautes permanentes ou au contraire d'établir que des ressources fonctionnent toujours. Il est aussi possible de régénérer l'électronique éteinte en la soumettant à un rayonnement gamma, et régénérer une représentation de secours à condition qu'elle 25 puisse se remettre en fonctionnement rapidement. Le détecteur de fautes permet de détecter des fautes sur les ressources de calculs impliquées dans un traitement. La détection de fautes permanentes peut se faire en utilisant de la redondance spatiale ou temporelle, comme par exemple la triplication (voir l'article de S. 30 D'Angelo, C. Metra, and G. R. Sechi, "Transient and permanent fault 15 3028066 diagnosis for fpga-based tmr systems," Tolerance in VLSI Systems, 1999) qui permet aussi de tolérer les fautes transitoires, dans ce cas, elle sera plutôt distribué dans chacune des ressources. Elle peut aussi être basée sur de l'autotest périodique, qui sera plutôt centralisé. 5 Différentes variantes d'implémentation de la détection des fautes permanentes et de la tolérance aux fautes transitoires sont proposées. Dans une variante, il est possible de tripliquer l'intérieur de chaque ressources de calculs en interne, de manière à masquer les fautes transitoires et de détecter l'apparition d'une faute permanente, par 10 compteur par exemple. Une amélioration de cette solution consiste à appliquer le principe décrit dans l'article déjà cité de Z. E. Rakossy. et à l'appliquer localement à chaque ressource de calcul. Ainsi, en prenant simplement une ressource de plus (donc 4 fois plus de ressources que la version sans triplication), l'espérance de vie de la ressource de calcul est 15 doublée (elle pourra avoir une faute permanente et continuer à fonctionner). Cette variante a l'avantage d'être extrêmement simple à mettre en oeuvre, mais ne permet malgré tout pas une grande réutilisabilité des ressources. Dans une autre variante, un vote peut être ajouté comme étant une 20 opération dans le graphe DFG. Ainsi, toutes les ressources sont considérées individuellement et sont utilisées au maximum. Un inconvénient majeur de cette approche est qu'elle double la latence. Dans une autre variante, un vote est inclus dans chaque ressource de calcul (à la place de multiplexeurs d'entrée des opérateurs). Cette 25 option offre à la fois de la réutilisabilité et de la rapidité mais présente l'inconvénient majeur d'augmenter grandement la pression sur le réseau d'interconnexion. Le dispositif 100 de l'invention peut opérer sur un ou plusieurs processeurs qui enregistrent l'état de dégradation du système, pilotent les 30 basculements et mettent à jour les listes de configurations. Un tel 16 3028066 processeur et la mémoire associée doivent de manière préférentielle être tolérants aux fautes, mais peuvent alternativement être des composants discrets durcis contre les rayonnements ionisants dits « rad-hard ». Référence est faite à la figure 2 qui montre un enchainement 200 5 des étapes du procédé de tolérance aux fautes de l'invention opéré par un module de tolérance aux fautes tel le module 108 de la figure 1. Le procédé débute après qu'une architecture reconfigurable et des représentations associées soient définies pour un système électronique. Les représentations de l'architecture peuvent être telles les deux 10 représentations 104-1 et 104-32 de la figure 1. Quand une faute est identifiée sur la configuration active (étape 204) pour une première représentation, le procédé permet alors de déterminer si la faute est une faute transitoire ou permanente (étape 206). Si la faute n'est pas permanente, le procédé reboucle à l'étape 15 précédente. Si la faute est permanente, l'activateur de représentation d'unité fonctionnelle permet de chercher à l'étape 208 parmi l'ensemble des représentations initialement définies, une représentation d'unité fonctionnelle qui offre au moins une configuration valide pour permettre d'exécuter l'application. Si aucune représentation n'est trouvée, le 20 procédé s'arrête (210). Quand une représentation est trouvée, le procédé poursuit à l'étape suivante 212 en activant cette représentation avec un code correspondant à son état actuel, puis bascule le fonctionnement en cours vers la nouvelle représentation active. 25 Ensuite, le gestionnaire de reconfiguration 110 cherche (étape 214) si une configuration parmi celles prédéfinies et n'utilisant pas la ressource défectueuse est disponible pour la représentation fautive. S'il n'y en a pas, le procédé s'arrête pour cette représentation (210) qui n'est plus utilisée. 17 3028066 Si une configuration est identifiée (branche oui), le procédé permet au gestionnaire de reconfiguration de mettre à jour la liste des configurations disponibles n'utilisant pas la ressource de calculs défectueuse pour la représentation fautive. Et le procédé reboucle sur 5 l'étape de détection de fautes pour la nouvelle représentation active. Dans une variante, le procédé peut vérifier après l'étape 214 s'il existe une version « mode dégradé » du code de l'application. Si oui, le procédé permet de poursuivre l'exécution avec le code en mode dégradé à la place du code en « mode normal » pour augmenter durée de 10 vie du composant. Puis le procédé permet la mise à jour de la liste des configurations restantes. Optionnellement, un message d'alerte ou d'information peut être adressé vers l'utilisateur pour prévenir de la dégradation de l'architecture, en vue d'une maintenance préventive par exemple. 15 Ainsi, la présente invention offre un procédé de tolérance aux fautes à la fois matériel et logiciel qui n'interrompt pas le fonctionnement d'un système. 18 REVENDICATIONS1. Un procédé de tolérance aux fautes sans interruption de fonctionnement d'un système électronique, le système étant composé d'au moins deux représentations d'unités fonctionnelles, les unités fonctionnelles ayant une pluralité de ressources de calculs, chaque représentation étant associée à une liste de configurations des ressources de calculs afin d'exécuter une application sur ladite représentation, le procédé étant implémenté par ordinateur et comprenant les étapes de : - en réponse à la détection (206) d'une faute permanente, chercher (208) parmi les représentations d'unités fonctionnelles définies, une représentation d'unité fonctionnelle offrant une configuration de ressources de calculs valide pour exécuter ladite application ; - en réponse à l'identification d'une représentation d'unité fonctionnelle, activer (212) la représentation d'unité fonctionnelle identifiée et basculer (212) l'exécution de ladite application vers ladite représentation d'unité fonctionnelle identifiée ; et - mettre à jour (216) la liste des configurations de ressources de calculs permettant d'exécuter ladite application sans la ressource de calculs défectueuse pour la première représentation d'unité fonctionnelle. 2. Le procédé selon la revendication 1 comprenant une étape initiale pour détecter (204) une faute sur une ressource de calculs, lors de l'exécution d'une application sur une première représentation d'unité fonctionnelle. 19 3028066 3. Le procédé selon la revendication 2 dans lequel l'étape de détection de fautes consiste à faire de l'autotest périodique sur les représentations d'unités fonctionnelles ou consiste à compter les erreurs successives identifiées par triplication puis effectuer 5 un vote majoritaire. 4. Le procédé selon l'une quelconque des revendications 1 à 3 dans lequel l'étape de mise à jour de la liste des configurations consiste à compiler ladite application exécutée à la volée ou 10 consiste à sélectionner une configuration dans une liste qui contient un ensemble d'applications précompilées. 5. Le procédé selon l'une quelconque des revendications 1 à 4 dans lequel la liste des configurations comprend des 15 configurations utilisant des ressources de calculs différentes. 6. Le procédé selon l'une quelconque des revendications 1 à 5 dans lequel la liste des configurations comprend des configurations dont l'interconnexion entre des ressources de 20 calculs est différente. 7. Le procédé selon l'une quelconque des revendications 1 à 6 comprenant de plus avant l'étape de mise à jour, une étape qui consiste à déterminer si une configuration n'utilisant pas la 25 ressource de calculs défectueuse est disponible pour la première représentation. 8. Le procédé selon l'une quelconque des revendications 1 à 7 comprenant de plus avant l'étape de mise à jour, une étape pour 30 déterminer s'il existe une version mode dégradé du code de ladite application. 20 3028066 9. Le procédé selon l'une quelconque des revendications 1 à 8 dans lequel le système électronique est représenté par une architecture reconfigurable à gros grains. 5 10. Le procédé selon l'une quelconque des revendications 1 à 9 comprenant une étape initiale pour définir au moins deux représentations d'unités fonctionnelles reconfigurables, et une liste de configurations des ressources de calculs afin d'exécuter 10 une application. 11 Un dispositif de tolérance aux fautes sans interruption de fonctionnement d'un système électronique, le système étant composé d'au moins deux représentations d'unités 15 fonctionnelles, les unités fonctionnelles ayant une pluralité de ressources de calculs, chaque représentation étant associée à une liste de configurations des ressources de calculs afin d'exécuter une application sur ladite représentation, le dispositif comprenant des moyens pour mettre en oeuvre les étapes du 20 procédé selon l'une quelconque des revendications 1 à 10.