• Aucun résultat trouvé

3.3 Les approches de détection en ligne des erreurs

3.3.1 Détection en ligne des erreurs par redondance spatiale

Il existe deux types d’approches de détection utilisant la redondance spatiale. La première approche se base sur la duplication matérielle du système ou parties du système à fiabiliser, c’est le cas du Locksteping et du NMR. Alors que la deuxième approche se base sur la redondance matérielle déjà existante, c’est le cas du Redundant Multitheading.

Lockstepping

Le principe du lockstep [46] est connu et utilisé depuis les années 80 dans les applications à fort besoin de fiabilité. Le lockstep est un procédé de détection par couplage fort, qui met en jeu deux copies redondantes, d’un même programme, synchronisées au cycle près. Un comparateur prend en entrée un ensemble de signaux internes de chaque copie redondante. Si les signaux diffèrent, une erreur est détectée. La méthode du lockstep est une implémentation de DMR. Couverture de fautes Le principal avantage du lockstep est qu’il ne se focalise pas sur un modèle de faute en particulier. La couverture de fautes est donc maximale pour les erreurs local- isées dans le processeur. Le lockstep est capable de détecter les défauts transitoires, intermittents et permanents.

Impact sur les performances Tant qu’il n’y a pas d’erreur, l’impact sur les performances est quasiment nul. En effet, seule la durée de comparaison des sorties est ajoutée, ce qui représente au mieux un cycle d’horloge et au maximum quelques cycles [46].

Impact sur la surface Le coût en surface est généralement élevé mais dépend directement de la sphère de redondance choisie. L’implémentation d’un lockstep nécessite au minimum la duplication d’un processeur, ou de parties de celui-ci mais les différents niveaux de cache peuvent s’ajouter, augmentant ainsi le coût en surface. Dans notre cas, et afin de comparer le coût en surface des différentes techniques, nous considérerons que l’implémentation de cette technique ajoute au minimum 100% de la surface.

Contraintes d’implémentation La mise en place du lockstep nécessite une synchronisation forte pour maintenir les copies dans le même état, ce qui exprime une forte contrainte de concep- tion au niveau de la duplication des entrées et la comparaison des sorties. Si la synchronisation n’est pas faite au niveau cycle, les deux copies peuvent diverger rapidement. Notamment pour les processeurs out-of-order qui peuvent exécuter des instructions de manière spéculative, dans ce cas, les deux copies peuvent prendre des chemins différents.

Ces contraintes peuvent être complexes à mettre en œuvre. Pour les relâcher, il existe une implémentation du lockstep qui ne necéssite pas une synchronisation au cycle près, c’est le Loose locksteppingou Redundant Multitheading (RMT) .

Redundant Multitheading

De la même manière que pour le lockstep, les techniques de Redundant Multitheading (RMT) reposent sur la comparaison des sorties de deux copies redondantes d’un même programme. En ce qui concerne le lockstep, les entrées sont reproduites et les sorties comparées cycle par cycle, alors que pour le RMT ces actions sont réalisées à chaque instruction de commit.

Le RMT est un concept qui peut être implémenté sur des architectures intégrant le multi- threading, tel que les processeurs SMT [47] ou CMP [48], avec peu de modifications matérielles. Ces processeurs possèdent plusieurs pipelines d’exécution et permettent l’exécution de plusieurs threads en parallèle. Ici, le processeur est modifié de manière à ce que deux threads exécutent les mêmes opérations. Ainsi, à la différence d’un processeur SMT non modifié, l’implémentation du RMT réduit l’OS à ne voir qu’un seul thread pour deux voies matérielles.

Dans l’industrie, la société Marathon Technologies est la première entreprise à avoir implé- mentée le concept de RMT dans ses serveurs Endurance 4000. Puis récemment Hewlett-Packard est passé des architectures NonStop utilisant du lockstep aux architectures NonStop Advance Ar- chitecture(NSAA) utilisant du RMT.

Contraintes d’implémentation L’implémentation dépend directement du type d’architecture visé, ainsi la technique Simultaneous and Redondant Threading [47] (SRT) repose sur un pro- cesseur superscalaire SMT et la technique Chip level Redundant Threading [48] (CRT) repose sur un processeur CMP. Dans l’implémentation qui est faite du SRT, les deux threads sont démar- rés avec un certain décalage (de quelques dizaines à quelques centaines de cycles d’horloge), le premier thread est appelé leading thread et le deuxième trailing thread. Chacun des deux threads produit des résultats, mais ceux-ci sont copiés en mémoire uniquement s’ils sont identiques. Impact sur des performances En décalant le départ des deux threads, le trailing thread béné- ficie de tout les défauts de cache du leading, c’est ce qui est appelé le slack fetch. Cette technique permet de limiter l’impact sur les performances de l’architecture. La dégradation des perfor- mances est de 20 à 40% suivant l’application exécutée et par rapport à un système non redondant sans présence d’erreur.

Dans une implémentation de type CRT, le fait que les threads s’exécutent sur des processeurs différents permet de limiter la dépendance de donnée au sein de chaque processeur. Ainsi les performances sont meilleures que pour le SRT. La dégradation des performances est de 10 à 30% suivant l’application exécutée et par rapport à un système non redondant.

Couverture de fautes La couverture de fautes dépend de la sphère de redondance. Ainsi les registres qui ne sont pas dupliqués ne bénéficient pas de protection. Par rapport au lockstep, cette méthode ne bénéficie pas d’une couverture totale des fautes pour l’ensemble du processeur.

Les méthodes de SRT et CRT permettent une détection efficace des erreurs transitoires. En ce qui concerne les erreurs permanentes et intermittentes, l’approche CRT permet une plus grande couverture que l’approche SRT. En effet, les threads sont exécutés sur des processeurs différents, ce qui évite les modes communs.

Synthèse et adaptation à nos contraintes

Nous avons présenté dans cette partie, deux techniques de redondance spatiale : le lockstep et le RMT. Concernant la couverture des erreurs, ces techniques permettent de détecter des erreurs intermittentes. De plus, ces méthodes peuvent être adaptées à des architectures multiprocesseurs, cependant le coût en surface serait très important.

L’implémentation d’un lockstep implique que chaque processeur de l’architecture soit du- pliqué, mais elle n’induit pas de dégradation des performances. Cependant, à cause du couplage fort, cette technique nécessite une modification des processeurs, ce que nous voulons éviter.

De même, les méthodes de RMT nécessitent des processeurs multithread pour pouvoir être implémentées. Or, nous considérons une architecture constituée de processeurs non-multithread. Ainsi, l’augmentation de la surface, induite par cette technique, peut être estimée à 40% pour chaque processeur. Cette technique, implique donc un coût en surface inférieur à une technique lockstep, mais nécessite toujours la modification des processeurs.

À la vue des remarques précédentes, les techniques de redondance spatiale ne peuvent répon- dre à nos contraintes.

3.3.2

Détection en ligne des erreurs par vérification de propriétés