« Fonctionnement d'un ordinateur/Les architectures tolérantes aux pannes » : différence entre les versions

m
aucun résumé des modifications
Contenu supprimé Contenu ajouté
que j'aie / qu'il/elle/on ait
mAucun résumé des modifications
Ligne 1 :
Un ordinateur n'est jamais un composant parfait, ce qui fait que des pannes peuvent survenir de temps à autre. Ces pannes peuvent être aussi bien logicielles (un logiciel qui plante ou qui a un bug), que matérielles (un composant cesse de fonctionner ou qui donne un résultat faux). Certaines erreurs peuvent être transitoires et ne se manifester qu’occasionnellement, tandis que d'autres sont de vraies pannes qui empêchent le bon fonctionnement d'un ordinateur tant qu'elle ne sont pas résolues. Pour donner un exemple de panne transitoire, on peut citer l'incident de Schaerbeek. Le 18 mai 2003, dans la petite ville belge de Schaerbeek, on constata une erreur sur la machine à voter électronique de la commune : il y avait un écart de 4096 voix en faveur d'un candidat entre le dépouillement traditionnel et le dépouillement électronique. Mais ce n'était pas une fraude : le coupable était un rayon cosmique, qui avait modifié l'état d'un bit de la mémoire de la machine à voter. Et si les pannes causées par des rayons cosmiques sont rares, d'autres pannes peuvent avoir des conséquences similaires.
 
[[File:Distribfaultredudance.PNG|droitevignette|Illustration de la redondance matérielle. On voit sur ce schéma que le processeur, la mémoire et les contrôleurs d’entrée-sortie sont dupliqués.]]
 
Dans des milieux comme l'aéronautique, les satellites, ou dans tout système dit critique, on ne peut pas se permettre que de telles pannes aient des conséquences : des vies peuvent être en jeu. Dans une telle situation, on doit limiter l'impact des pannes. Pour cela, il existe des systèmes tolérants aux pannes, qui peuvent continuer de fonctionner, même en ayant un ou plusieurs composants en panne. Cette tolérance aux pannes se base sur la redondance : on duplique du matériel, des données, ou des logiciels en plusieurs exemplaires. Ainsi, si un exemplaire tombe en panne, les autres pourront prendre la relève. Ces solutions matérielles pour tolérer les pannes sont relativement couteuses, dupliquer du matériel n'étant pas sans cout. Aussi, les méthodes vues dans ce cours ne s'utilisent que pour des cas bien précis, où le besoin de fiabilité est fort, typiquement dans les grosses industries (aéronautique, spatiale, ferroviaire, automobile et autres). Il est peu probable qu'un développeur lambda ait affaire à ce genre d'architecture, alors que la redondance de données peut très bien faire partie de son quotidien. Dans nos ordinateurs, cette redondance peut prendre plusieurs formes :
 
* une redondance des données, qui est à la base des codes correcteurs d'erreur et des systèmes RAID ;
* une redondance matérielle : on duplique des serveurs, des unités de calcul, des processeurs ou de la mémoire, des disques durs (RAID), et ainsi de suite ;
Ligne 10 ⟶ 9 :
 
De manière générale, les architectures tolérantes aux pannes dupliquent du matériel, que ce soit des ordinateurs, des composants (processeurs, mémoires, disques durs), voire des portions de composants (cœurs de processeurs, unités de calcul) : si un composant tombe en panne, les autres permettent au système de fonctionner. Par exemple, on peut utiliser plusieurs ordinateurs identiques, qui font la même chose en parallèle : si un ordinateur tombe en panne, les autres prendront le relais. Comme autre exemple, on peut utiliser plusieurs processeurs ou dupliquer les unités de calcul dans un processeur. On peut classer les techniques de redondances matérielles en deux :
 
* les méthodes actives, où l'on doit détecter les erreurs et reconfigurer le circuit pour corriger la panne ;
* les méthodes passives, qui masquent les erreurs sans pour autant faire quoique ce soit sur le composant fautif ;
* les méthodes hybrides, qui mélangent les méthodes passives et les méthodes actives.
 
==RedondanceLa redondance matérielle passive==
 
Avec la redondance matérielle passive, tous les composants travaillent en parallèle : ils reçoivent les données en entrée, les traitent, et fournissent un résultat plus ou moins en même temps. La sortie des composants est reliée à un système qui se chargera de corriger les erreurs ou fautes en sortie, sans pour autant les détecter. Par exemple, on peut imaginer ce que cela donnerait avec des unités de calcul redondantes : toutes les unités de calcul recevraient les opérandes en même temps, feraient leurs calculs indépendamment les unes des autres, et fourniraient leur résultat à un système qui corrigerait d'éventuelles erreurs de calcul ou pannes.
 
[[File:Tolérance aux pannes matérielle passive.png|centre|vignette|upright=2|Tolérance aux pannes matérielle passive]]
 
===VoteLe vote à majorité===
 
Dans la plupart des cas, le système de correction des erreurs se base sur ce qu'on appelle un '''vote à majorité'''. Avec le vote à majorité "classique", si différentes valeurs sont disponibles sur ses entrées, il prend simplement la valeur majoritaire sur les autres. Par exemple, prenons le cas avec 5 composants : si un composant tombe en panne, les quatre autres donneront un résultat correct : à 4 sorties contre une, c'est le résultat correct qui l'emportera. Il faut savoir que cette méthode ne fonctionne convenablement que si le nombre de composants est impair : dans le cas contraire, on peut avoir autant de composants en panne que de composants fonctionnels, ce qui fait qu'aucune majorité ne peut être dégagée. Si le nombre de composants en panne est inférieur au nombre de composants sans panne, ce système de vote à majorité donnera systématiquement le bon résultat. Ainsi, utiliser 3 composants permet de résister à une panne de composant, utiliser 5 composants permet de résister à une panne de 2 composants, en utiliser 7 permet de résister à 3 composants en panne, etc.
 
[[File:Vote à majorité simple.png|centre|vignette|upright=2|Vote à majorité simple]]
 
Ce vote à majorité peut aussi s'effectuer non au niveau du résultat, mais au niveau des bits. Dans ce cas, le circuit de correction d'erreur va placer les bits des différents résultats sur la même colonne, et choisit pour chaque colonne le bit qui est majoritaire. Ce calcul peut s'effectuer naturellement en utilisant ces portes à majorité, des portes logiques spécifiquement conçues pour déterminer quel est le bit majoritaire sur ses entrées. Des variantes de ce système de vote existent. Celles-ci consiste à prendre non pas le résultat ou bit majoritaire, mais seulement le plus fréquent (ou la médiane des différents résultats).
 
[[File:Vote à majorité bit à bit.png|centre|vignette|upright=2|Vote à majorité bit à bit]]
 
===Implémentation===
Ligne 35 ⟶ 33 :
Ce mécanisme fonctionne très bien, à un détail près : le circuit de vote à majorité est un point faillible du système : s'il tombe en panne, tout le système tombe en panne. Pour éviter cela, il est là encore possible de dupliquer ce système de vote à majorité, ce qui est utilise quand le résultat doit être réutilisé par d'autres (qui sont eux-mêmes dupliqués).
 
[[File:Triple Modular Redundancy et sa variante améliorée.png|650px|centre|vignette|upright=2|Triple Modular Redundancy et sa variante améliorée]]
 
Ce système de vote à majorité peut s'utiliser pour les communications avec la mémoire. Il peut notamment servir pour gérer les lectures ou écritures dans une mémoire, voire les deux. On peut aussi l'utiliser pour gérer les communications à l'intérieur d'un composant. Par exemple, on pourrait imaginer utiliser ces méthodes pour l'unité de calcul et les registres : dans les schémas suivants, il suffirait de remplacer la mémoire par les bancs de registre (register files) et le processeur par l'unité de calcul. Bref, les possibilités sont relativement nombreuses.
 
[[File:Vote à majorité sur les lectures et écritures - optimisé.png|650px|centre|vignette|upright=2|Vote à majorité sur les lectures et écritures - optimisé]]
 
==RedondanceLa redondance matérielle active==
 
La redondance active ne masque pas les pannes comme peut le faire la redondance passive. Elle va détecter les pannes et passer le relais du composant en panne à un composant fonctionnel. Ces méthodes se déclinent en deux grandes catégories :
 
* d'un coté celles où les composants travaillent en parallèle et où la reconfiguration du circuit suffit ;
* de l'autre, celles où un seul composant fonctionne à la fois, et où la correction d'une panne demande de reprendre les calculs de zéro.
 
===DuplicationLa duplication avec comparaison===
 
Une première technique de redondance active se contente de dupliquer le composant en un composant principal et un composant de réserve. On peut alors détecter une erreur en comparant la sortie des deux composants : si elle est différente, on est certain qu'il y a eu une erreur (on suppose qu'il n'y en a pas eu en cas d'accord entre les deux composants). Une fois l'erreur détectée, on ne peut cependant pas la corriger. Le premier processeur à utiliser cette méthode était l'EDVAC, dans les années 1950. Il comprenait deux unités de calcul, et continuait d’exécuter son programme tant que les deux unités de calcul donnaient des résultats identiques. En cas de non-agrément entre les deux unités de calcul, le processeur ré-exécutait l'instruction fautive.
 
[[File:Duplication avec comparaison.png|650px|centre|vignette|upright=2|Duplication avec comparaison]]
 
On peut améliorer ce circuit afin qu'il puisse corriger l'erreur. Pour cela, on rajoute un troisième composant de réserve, dont on suppose qu'il ne sera pas en panne. Si une erreur est détectée par le comparateur, on préfère utiliser la sortie du composant de réserve.
 
[[File:Duplication par comparaison avec un composant de réserve.png|650px|centre|vignette|upright=2|Duplication par comparaison avec un composant de réserve]]
 
===Le ''Standby Sparing''===
 
Avec cette méthode, le système de correction des pannes choisit un résultat parmi ceux qu'il reçoit, et considère que ce résultat est le bon. En somme, il choisit la sortie d'un composant parmi toutes les autres : c'est donc un multiplexeur ou un switch. Quand le composant choisit tombe en panne, le multiplexeur/switch se reconfigure et choisit alors une autre sortie (celle d'un autre composant). Reste que cette configuration du switch demande de détecter les pannes, afin de commander le multiplexeur switch. On trouve donc, pour chaque composant, un système de détection des pannes, ainsi qu'un circuit combinatoire qui commande le multiplexeur/switch.
 
[[File:Standby Sparing.png|650px|centre|vignette|upright=2|Standby Sparing]]
 
===Le ''Pair And Spare''===
 
Il faut noter que les deux techniques précédentes sont loin d'être incompatibles. On peut notamment les utiliser de concert : la technique de duplication par comparaison peut être utilisée pour détecter les erreurs, et la technique du Standby Sparing pour effectuer la correction. On peut aussi faire l'inverse.
 
[[File:Pair And Spare.png|650px|centre|vignette|upright=2|Pair And Spare]]
 
===Le ''Spare and Pair''===
 
Un exemple typique est l'architecture Stratus (aussi connue IBM/System 88). Celui-ci contient quatre processeurs logiques qui font leurs calculs en parallèle : le résultat est choisi parmi les processeurs sans pannes. Une panne ou erreur est détectée avec duplication par comparaison : chaque processeur logique est dupliqué et une panne est détectée si les deux processeurs sont en désaccord sur le résultat. L'ensemble contient donc huit processeurs.
 
[[File:Spare and Pair.png|650px|centre|vignette|upright=2|Spare and Pair]]
 
==RedondanceLa redondance matérielle hybride==
 
Les méthodes de redondance hybride mélangent les techniques vues plus haut. Il en existe grosso-modo trois principales :
 
* la redondance passive avec composants de réserve ;
* la redondance passive auto-correctrice ;
* la redondance à triple duplex.
 
===RedondanceLa redondance à triple duplex===
 
Avec la redondance à triple duplex, plusieurs composants qui utilisent la duplication avec comparaison sont suivis par une porte à majorité. Le principe de cette technique est simple : si un composant est en panne, alors son résultat ne doit pas être pris en compte dans le calcul du vote à majorité.
 
[[File:Redondance à triple duplex.png|650px|centre|vignette|upright=2|Redondance à triple duplex]]
 
===RedondanceLa redondance passive auto-correctrice===
 
La redondance passive auto-correctrice est similaire à la technique précédente, à un détail près : on n'utilise pas vraiment la duplication par comparaison de la même manière. Le principe de cette technique est le même que la précédente : si un composant est en panne, alors son résultat ne doit pas être pris en compte. Sauf que cette fois-ci, on détecte une panne en comparant le résultat du composant avec le vote majoritaire : il y a une panne si les deux ne sont pas identiques. Ainsi, au lieu d'avoir deux composants en entrée du comparateur, on n'en aura qu'un seul : l'autre entrée du comparateur sera reliée à la sortie de la porte à majorité.
 
[[File:Redondance passive auto-correctrice.png|650px|centre|vignette|upright=2|Redondance passive auto-correctrice]]
 
===RedondanceLa redondance passive avec composants de réserve===
 
Avec la redondance passive avec composants de réserve, plusieurs modules qui utilisent la redondance active sont suivis par un système de vote à majorité.
 
[[File:Redondance passive avec composants de réserve.png|650px|centre|vignette|upright=2|Redondance passive avec composants de réserve]]
 
<noinclude>
47 462

modifications