Fonctionnement d'un ordinateur/Les architectures tolérantes aux pannes

Un ordinateur n'est jamais un composant parfait et des pannes peuvent survenir de temps à autre. Ces pannes peuvent être logicielles (un logiciel qui plante ou qui a un bug) ou matérielles (un composant cesse de fonctionner ou qui donne un résultat faux). Elles peuvent ne se manifester qu’occasionnellement, tandis que d'autres sont des pannes permanentes. Dans des milieux comme l'aéronautique, les satellites, ou dans tout système dit critique, on doit limiter à presque rien l'impact des pannes et de leurs conséquences : des vies peuvent être en jeu. Pour cela, il existe des systèmes tolérants aux pannes, qui peuvent continuer de fonctionner même avec un ou plusieurs composants en panne.

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.

La 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, la redondance ne s'utilise que quand le besoin de fiabilité est fort, typiquement dans les industries aéronautique, spatiale, ferroviaire, automobile et autres. Dans les 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 ;
  • une redondance logicielle, où plusieurs exemplaires d'un même programme font leurs calculs dans leur coin.

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 continuent 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. 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.

La redondance matérielle passive modifier

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.

 
Tolérance aux pannes matérielle passive

Le vote à majorité modifier

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", on choisit la valeur majoritaire parmi les différents résultats. Par exemple, prenons le cas avec 5 composants. Si un composant tombe en panne, les quatre autres donneront un résultat correct. Avec 4 sorties contre une, c'est le résultat correct qui l'emportera. Cette méthode ne fonctionne pas si le nombre de composants est pair, car on peut avoir autant de composants en panne que de composants fonctionnels, ce qui permet pas de dégager une majorité. Tant que plus de la moitié des composants n'a pas de panne, le vote à majorité donne systématiquement le bon résultat. Par exemple, utiliser 5 composants permet de résister à une panne de 2 composants, en utiliser 7 permet de résister à 3 composants en panne, etc.

 
Vote à majorité simple

Ce vote à majorité peut aussi s'effectuer non au niveau du résultat, mais au niveau des bits. Le vote à majorité s’effectue alors sur des bits de même poids, de la même colonne. Il existe des portes logiques spécifiquement conçues pour faire ce calcul, les portes à majorité.

 
Vote à majorité bit à bit

Des variantes de ce système de vote existent. Celles-ci consistent à prendre non pas le résultat ou bit majoritaire, mais seulement le plus fréquent (ou la médiane des différents résultats).

Implémentation modifier

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à possible de dupliquer le système de vote à majorité.

 
Triple Modular Redundancy et sa variante améliorée

Le 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 et le processeur par l'unité de calcul. Bref, les possibilités sont relativement nombreuses.

 
Vote à majorité sur les lectures et écritures - optimisé

La redondance matérielle active modifier

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 côté 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.

La duplication avec comparaison modifier

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.

 
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.

 
Duplication par comparaison avec un composant de réserve

Le Standby Sparing modifier

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.

 
Standby Sparing

Le Pair And Spare modifier

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.

 
Pair And Spare

Le Spare and Pair modifier

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.

 
Spare and Pair

La redondance matérielle hybride modifier

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.

La redondance à triple duplex modifier

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é.

 
Redondance à triple duplex

La redondance passive auto-correctrice modifier

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é.

 
Redondance passive auto-correctrice

La redondance passive avec composants de réserve modifier

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é.

 
Redondance passive avec composants de réserve