FR 2964482 A1 20120309 FR 1056965 A 20100902 PROCEDE DE TEST EN LIGNE DES ETAGES DE PIPELINE TEMPORAIREMENT NON UTILISES ET SON DISPOSITIF ASSOCIE L'invention concerne un procédé de test des étages temporairement non-utilisés dans un pipeline et des dispositifs apparentés. L'invention s'applique notamment aux domaines des micro-technologies et des nanotechnologies. L'invention peut être utilisée, par exemple, pour la détection des fautes de délai apparues lors de la phase de production ou dues au vieillissement des circuits numériques pipelinés, ou encore des fautes transitoires produites par des interférences avec l'environnement ou par la radioactivité de certaines impuretés dans les matériaux composant lesdits circuits. Le terme pipeline désigne un circuit numérique partitionné en plusieurs étages séparés par des buffers, chaque étage pouvant exécuter dans chaque cycle d'horloge une opération. Les pipelines peuvent être rencontrés dans les coeurs des processeurs ou les systèmes d'interconnexions par exemple. Dans les pipelines où les opérations sont exécutées en ordre, c'est-à-dire dans le même ordre que celui dans lequel elles sont entrées, des cycles non-utilisés traversent tous les étages du pipeline situés entre l'étage où ils sont apparus et la ou les sorties du pipeline, exactement comme les bulles de gaz se propagent dans une bouteille d'eau minérale. Dans la suite, de tels cycles non-utilisés dans le pipeline seront appelés tout simplement "bulles". Par exemple, dans le cas d'un coeur de processeur, ces bulles peuvent apparaître à cause des défauts de lecture d'instructions (le terme anglo-saxon est "fetch-miss"), des instructions nop (terme qui vient de l'anglais "no operation"), ou des instructions de branchement comme par exemple les sauts d'adresse. Une opération est dite « valide » si le résultat de son exécution peut avoir un effet sur le résultat d'une tache ou d'un programme qui doit être exécuté par un dispositif de type pipeline. Le terme vecteur de test est utilisé pour indiquer l'état d'un buffer à l'entrée d'un étage de pipeline pendant la phase de test. Dans les circuits réalisés à base de micro-technologies et nanotechnologies, les fautes résultant de défauts physiques dus au vieillissement peuvent engendrer des erreurs de fonctionnement et finalement la défaillance du système. De plus, la très forte miniaturisation de ces circuits diminue la quantité de charge électrique nécessaire pour changer le niveau logique d'un signal, ce qui favorise implicitement l'apparition des fautes transitoires. Dans les systèmes numériques réalisés à base de technologies nanométriques, les approches actuelles qui permettent le monitoring du vieillissement sont trop onéreuses en termes de surface et de puissance ou bien ils ont un taux de couverture limité concernant les fautes liées au 1 o vieillissement. En général, la majorité des défauts liés au vieillissement ont la propriété de se manifester par une augmentation progressive de la latence du circuit. Par conséquent, ces défauts vont induire des fautes de délai dont l'amplitude augmente progressivement dans le temps. C'est cette propriété 15 qui va être utilisée pour diminuer massivement la latence de détection et même passer de la détection des fautes liées au vieillissement à leur prédiction. L'invention a notamment pour objet un procédé de test de « bon fonctionnement » d'un dispositif pipeline, permettant la détection de fautes de 20 délai et/ou la détection de fautes transitoires, le procédé utilisant notamment la génération et la gestion de vecteurs de test dans les étages du pipeline et mettant à profit des cycles d'horloge pendant lesquels les étages du pipeline ne sont pas utilisés. 25 L'invention concerne un procédé de test en ligne de dispositifs de type pipeline, ledit dispositif de type pipeline comportant une succession d'étages séparés par des buffers, chaque buffer étant en liaison avec un signal idle (ou valide = not idle) et au moins un bit de statut caractérisé en ce qu'il comporte au moins les étapes suivantes : 30 a) détecter la valeur du signal idle traduisant la non utilisation, ou l'interruption brusque du flot d'opérations dans un pipeline, b) maintenir l'état du buffer afin de permettre la réexécution de l'opération valide (03) pendant le cycle non utilisé, c) exécuter les instructions répliquées en ne considérant à l'intérieur du 35 pipeline que les résultats d'une seule réplique, d) mémoriser à la fin du pipeline la sortie qui correspond à une version (0'3) d'une opération répliquée afin de la comparer avec la sortie d'une version successive (0"3) de la même opération répliquée, e) comparer les sorties du pipeline qui correspondent aux versions successives (0'3) et (0"3) et s'il existe une différence indiquer la présence d'une erreur. Le signal idle peut être observé à l'entrée du pipeline, ou à n'importe quel étage du pipeline. Au niveau de l'étape b) la dernière opération valide avant un cycle 1 o non-utilisé est, par exemple, ré-exécutée sur plusieurs cycles successifs. L'exécution de la première instanciation d'une opération répliquée peut être effectuée en mode dégradé. L'opération de mémorisation d) des valeurs obtenues par les différentes instanciations d'une opération répliquée est exécutée en utilisant 15 un buffer dupliqué en sortie du pipeline. L'opération de comparaison est, par exemple, exécutée à la sortie de chacun des étages constituant le pipeline. Selon une variante de mise en oeuvre, on introduit un cycle non utilisé ou bulle à l'entrée du pipeline après chaque opération qui n'est pas 20 naturellement suivie par un cycle non utilisé et on vérifie les résultats de chaque opération en sortie du pipeline ou au niveau de chacun des étages du pipeline. On peut utiliser un encodage naïf de l'information qui décrit le type d'opération exécutée par chaque étage dans le pipeline défini de la manière 25 suivante : on associe un bit de statut à chaque buffer, sauf le premier buffer dans le pipeline, de telle façon que le bit de statut d'un buffer à l'entrée d'un étage exécutant une opération qui correspond à une réexécution de l'opération dans l'étage précédente prend la valeur s'E {0, 1} et s=not(s') dans les autres cas. 30 Dans le cas où l'étape de comparaison e) est effectuée en sortie du pipeline, le procédé utilise une bascule supplémentaire associée au buffer de sortie, ladite bascule supplémentaire stockant le bit de statut de ce buffer pendant le cycle précédent. Selon une variante de réalisation, il est possible d'utiliser deux bits 35 de statut dans le cas où les opérations ont plus que deux répliques afin de distinguer entre les opérations non-répliquées et la première version, les versions suivantes et la dernière version d'une opération répliquée, chacun des bits de statut pouvant être encodé séparément. Le procédé peut être utilisé pour des pipelines dans les coeurs des processeurs où des cycles temporairement non utilisés sont obtenus en insérant des opérations de type « no opération », ou pour des pipelines dans les systèmes d'interconnections où les bits de statut sont décalées d'un étage de pipeline en avant, ou encore pour des pipelines dans les systèmes d'interconnections où des cycles temporairement non utilisés sont inclus 1 o dans les tables de gestion ou sont générés par un arbitre central. L'invention concerne aussi un dispositif de test en ligne pour des dispositifs de type pipeline composés d'une succession d'étages séparés par des buffers, caractérisé en ce qu'il comporte au moins les éléments suivants : 15 un moyen d'encodage naïf des types d'opération existantes dans les étages dudit pipeline, indiquant les opérations dupliquées et leurs versions, constitué d'un bit de statut associé à chaque buffer à la fin d'un étage de pipeline de tell façon que le bit de statut d'un buffer à l'entrée d'un étage exécutant une opération qui correspond à une réexécution dans l'étage précédente prend la 20 valeur s'E {0, 1} et s=not(s') dans les autres cas afin de sélectionner le mode dégradé pour les buffers à la fin de chaque étage de pipeline qui exécute la première version d'une opération dupliquée, de comparer les résultats et de choisir entre les résultats produits par les deux versions d'une opération dupliquée. 25 Le dispositif peut comporter une bascule pour stocker chaque bit de statut. Selon un mode de réalisation du dispositif le bit de statut s' prend la valeur {s, s'}, le bit de statut s=not(s') prend la valeur {s', s}, chaque paire de bits de statut étant obtenus à partir d'un signal indiquant l'absence d'une 30 opération valide à l'entrée du pipeline et à partir de ce même signal inversé par un inverseur, et comporte des moyens permettant d'identifier l'apparition de la combinaison (s, s') afin de sélectionner le mode dégradé pour les buffers à la fin de chaque étage de pipeline qui exécute la première version d'une opération dupliquée, de comparer les résultats et de choisir entre les 35 résultats produits par les deux versions d'une opération dupliquée. Les moyens d'identification de l'apparition de la combinaison (s, s') sont, par exemple, choisis parmi la liste des moyens suivants : les portes ET logique si le paramètre s est égal à 0, des portes OU logique inversé lorsque s=1. L'information transportée par le bit de statut associé à un buffer peut être donnée par la comparaison avec le bit du statut du buffer suivant, la valeur du premier bit de statut dans le pipeline pendant un cycle d'horloge étant obtenu à partir de sa valeur pendant le cycle d'horloge précédant comparée avec le signal d'entrée indiquant l'absence d'une opération valide 1 o à l'entrée du pipeline, et en ce qu'il comporte des portes OU exclusif logique (XOR), et des inverseurs logiques permettant d'identifier les opérations dupliquées et leur versions afin de sélectionner le mode dégradé pour les buffers à la fin de chaque étage de pipeline qui exécute la première version d'une opération dupliquée, de comparer les résultats et de choisir entre les 15 résultats produits par les deux versions d'une opération dupliquée. Selon un mode de réalisation, un buffer comporte un nombre double de bits de statut dans le cas où les opérations ont plus que deux répliques afin de distinguer entre les opérations non-répliquées et la première version, les versions suivantes et la dernière version d'une 20 opération répliquée, chacun des bits de statut pouvant être encodé séparément. D'autres caractéristiques et avantages de l'invention apparaîtront mieux à l'aide de la description qui suit, donnée à titre illustratif et non 25 limitatif, faite en regard des dessins annexés parmi lesquels: - la figure 1, présente un exemple de mise en oeuvre du procédé de test selon l'invention des étages temporairement non-utilisés dans un pipeline, - la figure 2, présente un dispositif avec un encodage naïf de 30 l'information qui permet la distinction entre deux types d'opération dans les étages d'un pipeline, - la figure 3, présente un dispositif avec un encodage de l'information qui permet la distinction entre deux types d'opération dans les étages d'un pipeline, qui est robuste contre les fautes de délai et les fautes transitoires mais qui nécessite un double coût par rapport au dispositif de la figure 2, et - la figure 4, présente un dispositif avec un encodage de l'information qui permet la distinction entre deux types d'opération dans les étages d'un pipeline, qui est robuste contre les fautes de délai et les fautes transitoires et qui nécessite le même coût que le dispositif en figure 2. Principe de base L'exemple donné à la figure 1 présente un exemple de procédé de 1 o test de bon fonctionnement, selon l'invention, des étages d'un pipeline. Sur cette figure 1, l'état du pipeline a été représenté pour 5 cycles d'horloge schématisés par cycle ou clk référencés en commençant par i, i+1 ,.. i+4. La figure 1 présente le procédé de test des étages non-utilisés dans un pipeline composé de quatre étages combinatoires 121, 122, 123, et 15 124, chacun des étages étant séparé par un buffer respectivement 112, 113 et 114. Deux buffers supplémentaires 111 et 115 sont placés à l'entrée et, respectivement, à la sortie du pipeline. Le signal « idle » correspond à un mécanisme connu de l'art antérieur, mécanisme à l'entrée d'un pipeline ou au niveau d'autres étages 20 du pipeline qui indique si une nouvelle opération est disponible ou non. Ainsi, l'absence d'une nouvelle opération valide est indiquée, par exemple, par le signal 101 (idle). Le signal 101 est utilisé pour bloquer le premier buffer 111, par exemple, du pipeline afin de pouvoir démarrer la réexécution d'une opération selon les étapes caractéristiques du procédé de test selon 25 l'invention. Le blocage du premier buffer du pipeline est symbolisé dans cet exemple de mise en oeuvre par la porte 102 qui implémente l'operateur ET logique (AND) et qui reçoit comme entrées le signal 101 (idle) inversé et un signal d'horloge 103. Ce mécanisme peut aussi être utilisé dans tous les étages du 30 pipeline afin de pouvoir spéculer à tout moment l'apparition d'une opération invalide. Sans sortir du cadre de l'invention, d'autres types de signaux qui indiquent l'interruption brusque du flot d'opérations dans un pipeline peuvent être utilisés afin d'indiquer l'apparition d'une bulle à l'intérieur du pipeline. 35 Ces signaux peuvent bloquer tous les buffers 111, 112, 113 et 114. Le procédé de test proposé selon l'invention est basé sur la réexécution de la dernière opération exécutée avant un cycle non-utilisé dans un ou plusieurs étages du pipeline. Une telle situation est illustrée en figure 1, où pendant le cycle clk=i le signal idle=l indique que l'opération 03 exécutée par le première étage du pipeline sera suivi par un cycle non-utilisé ou autrement dit par une instruction non-valide. La réexécution d'une opération, l'opération 03 dans cet exemple, par le même matériel à des cycles successifs i+1, i+2, i+3, ...permet notamment la détection des fautes de délai et implicitement la détection 1 o d'une grande majorité des défauts dus au vieillissement du circuit ou dispositif apparentés à un pipeline. Dans cet exemple, les opérations 02 et 03 offrent une paire de vecteurs pour le test des fautes de délai dans les étages traversés. L'opération 02 assure l'initialisation des fautes de délai (vecteur 15 d'initialisation), tandis que l'opération 03 offre un vecteur d'activation au cours du cycle suivant. La vérification de la réponse de chaque étage du pipeline à cette paire de vecteurs de test est facilitée par la réexécution de l'opération 03. 03 est doublé (du fait de sa réexécution) et devient 0"3 ,121 et 0'3, 122. En relâchant le maintien du buffer au cycle d'horloge ckl=i+1 et 20 aux cycles qui suivent, les opérations 04, 05, 06 apparaissent ensuite. Si une erreur apparaît pendant l'exécution d'une des instanciations d'une opération répliquée, elle sera propagée jusqu'à la sortie du pipeline si elle n'est pas logiquement masquée. Par exemple, la figure 1 montre une erreur qui apparaît dans le 25 deuxième étage 122 (symbolisé par un éclair E dans la partie combinatoire puis par une croix dans la partie buffer 113 au cycle ckl=i+2) et qui arrive à la sortie du pipeline 115 après trois cycles supplémentaires ckl=i+2, ckl=i+3, ckl=i+4 (non représenté sur la figure). Afin de permettre la comparaison des résultats produits par les 30 différentes instanciations d'une opération répliquée, comme 03, une manière de procéder est de dupliquer le buffer de sortie 115. Cette duplication permet de stocker le résultat ROiier de la première exécution d'une opération répliquée et de le comparer avec le résultat ROi2nd de l'autre réplique. Cette solution permet de réduire le coût de l'implémentation mais peut aussi 35 diminuer la couverture de fautes de délai à cause du masquage logique qui peut empêcher la propagation des effets d'une faute d'un étage à l'autre. Ce masquage logique est faible dans le pipeline d'un système d'interconnexion, mais il peut devenir important dans le pipeline d'un coeur de processeur. Variante avec comparaison à la sortie de chaque étage Afin de maximiser le taux de couverture, la comparaison des résultats des différentes versions d'une opération répliquée peut être faite à la sortie de chaque étage. Cette vérification nécessite, dans cet exemple, une porte logique de type XOR pour comparer la sortie et l'entrée de chaque bascule dans les buffers à la sortie de chaque étage. Dans ce dernier cas, la 1 o duplication du dernier buffer 115 dans le pipeline n'est plus nécessaire. Variante avec mise en oeuvre du mode dégradé Selon un mode de mise en oeuvre permettant la prédiction des erreurs dues aux fautes de délai, l'exécution de la première instanciation de l'opération 03 est réalisée en mode dégradé, c'est à dire dans un mode dans 15 lequel les étages du pipeline qui exécutent cette opération ont moins de marge temporelle pour tolérer l'arrivée tardive des signaux à leurs sorties. Cette dégradation augmente la probabilité qu'une faute de délai induite par un défaut de vieillissement affecte d'abord les opérations répliquées. Le mode dégradé ne fait pas l'objet de ce brevet. Un exemple de mode dégradé 20 est explicité dans une demande de brevet du Demandeur déposée le même jour que la présente demande de brevet ou encore dans la publication de S.Shyam et al intitulée « Ultra low-cost defect protection for microprocessor pipelines », publiée dans le journal « Architectural Support for Programming Languages and Operating Systems », pp.73-82, 2006. 25 Protection contre les fautes transitoires Afin d'assurer la protection contre les fautes transitoires qui sont intrinsèquement imprédictibles, une variante de mise en oeuvre du procédé selon l'invention va protéger chaque opération. Pour obtenir ce résultat, des bulles vont être insérées à l'entrée du 30 pipeline après chaque opération qui n'est pas naturellement suivie par une bulle. Ceci permet la réexécution systématique des opérations tout au long de leur parcours dans le pipeline. Comme la vérification de chaque opération peut être faite le plus tard à la sortie du pipeline, la latence de détection est quasi-inexistante et l'utilisation du mode dégradé n'est plus impérative. Il 35 devient ainsi possible de vérifier systématiquement les résultats de chaque opération et d'arriver à une latence de détection quasi-inexistante pour les fautes transitoires et pour les fautes de délai. Augmenter le taux de couverture pendant l'exécution des programmes de test La réplication et la vérification systématiques des instructions peuvent être aussi utilisées pendant l'exécution de programmes de test des processeurs afin d'augmenter l'observabilité des fautes et implicitement leurs taux de couverture. Dans ce cas aussi, l'exécution en mode dégradé de la première instanciation de chaque instruction répliquée assure une prédiction 1 o des potentielles erreurs. Selon un mode de mise en oeuvre du procédé de test, le taux de couverture des fautes de délai est augmenté en introduisant de manière volontaire des bulles dans un pipeline protégé avec ce procédé. Par exemple, dans le cas des pipelines dans les coeurs de processeur, cette 15 augmentation peut être faite en insérant des opérations de type nop (terme qui vient de l'anglais "no operation") dans les programmes exécutés. Dans le cas des systèmes d'interconnections pipelinés, des bulles artificielles peuvent être introduites (a) dans les tables de gestion de la communication qui sont présentes dans certains architectures ou (b) par un arbitre central 20 quand celui-ci est disponible, ces technologies étant connues de l'Homme du métier. Retour en arrière Afin d'assurer la possibilité d'effectuer un retour en arrière propre en cas d'erreur, les résultats des opérations répliquées doivent toujours être 25 vérifiés avant les accès non-réversibles à l'extérieur du pipeline, comme l'écriture ou la mise-à-jour des données. Afin de pouvoir faire la distinction entre les fautes transitoires et les fautes de délai, en cas d'erreur une réexécution doit commencer avec l'opération qui précède l'opération défaillante. Les résultats produits par les premières instanciations d'une 30 opération peuvent être utilisés seulement à l'intérieur du pipeline ou pour les accès réversibles à l'extérieur du pipeline, comme la lecture des données. On peut par exemple utiliser la première instanciation d'une opération pour faire la lecture des données à l'extérieur du pipeline et les résultats de la dernière instanciation pour toute autre action. 35 Différents exemples d'implémentation L'implémentation du procédé de test selon l'invention nécessite un dispositif adapté pour exécuter les opérations décrites précédemment et indiquer la présence des opérations répliquées, notamment : - l'identification des cycles quand les sorties du pipeline (ou de chaque étage) doivent être vérifiées, - l'identification des cycles quand les sorties du pipeline (ou de chaque étage) peuvent être utilisées, - l'assertion de signaux de contrôle qui permettent l'exécution de la première instanciation d'une opération répliquée en mode dégradé. Les figures 2, 3 et 4 présentent différents modes de réalisation de dispositifs qui satisfont au moins à ces critères dans le cas où les opérations répliquées ont seulement deux instanciations. La figure 2 présente un dispositif avec un encodage naïf des types d'opérations dans les étages d'un pipeline, qui indique les opérations qui sont des répliques des opérations précédentes. Comme un bit de statut est nécessaire pour chaque buffer (sauf le premier), le coût est d'une seule bascule (220, 230, 240 et 250) par buffer, plus les connexions qui permettent la transmission des bits de statut d'un buffer à l'autre (223, 233, 243 et 253). Les bits de statut sont transmis d'un buffer à l'autre. Seul le premier bit de statut est généré à partir du signal « idle » à l'entrée du pipeline. Le bit de statut 220 est généré par le signal 202 (idle) qui indique, par exemple, l'absence d'une opération valide à l'entrée du pipeline. Selon cet encodage, le bit de statut stocké dans le buffer à l'entrée d'un étage exécutant une opération qui est ré-exécutée dans l'étage précédant, a une valeur s'E {0,1 }. Dans tous les autres cas, le bit de statut prend la valeur s=not(s'), avec le symbole "not" représentant l'operateur de négation logique. Le bit de statut associé à un buffer du pipeline peut être utilisé pour la gestion du mode dégradé dans le buffer suivant. Dans le cas du deuxième buffer 223, c'est le signal 202 (idle) à l'entrée du pipeline qui gère le mode dégradé. La valeur s' d'un bit de statut ou du signal 202 indique que le buffer concerné doit fonctionner en mode dégradé. Le premier buffer 213 du pipeline n'as pas besoin d'être mis en mode dégradé pour la protection de la logique à l'intérieur de l'étage du pipeline correspondant. Le bit de statut dans une bascule associée à un buffer de sortie indique la validité du contenu du buffer. Dans la figure 2, c'est le cas du bit de statut 250 qui fournit le signal de validité 262 pour la sortie 263 venant du buffer 253. La valeur s' du bit de statut associé à un buffer du pipeline indique aussi que les entrées et les sorties de ce buffer doivent être identiques. Cette indication est utile dans le cas où la comparaison des résultats produits par les différentes versions d'une opération répliquée doivent être comparées à la sortie de chaque étage du pipeline. Dans le cas où cette comparaison est faite seulement aux sorties du pipeline, une bascule supplémentaire est nécessaire pour chaque buffer de sortie afin de stocker le bit de statut de ce buffer pendant le cycle précédent. C'est le cas de la bascule 260 produisant à sa sortie le signal 261 dont une valeur égale à s' qu'une comparaison de la sortie 263 doit être faite. La figure 3 présente un dispositif avec le même type d'encodage que celui présenté en figure 2, exceptée la valeur s qui est remplacée par le couple (s', s) et la valeur s' par le couple (s, s'). Les deux bits de statut 320 sont obtenus à partir du signal 302 (idle) qui indique l'absence d'une opération valide à l'entrée du pipeline et à partir de l'inverse de ce signal produit par l'inverseur 305. Pour l'homme de métier, il est évident que l'inverseur 305 peut être mis à l'entrée de l'autre bascule associée au buffer 323 afin d'inverser l'encodage des bits de statut. Les portes 332, 342 et 352 permettent d'identifier l'apparition de la combinaison des bits de statut (s, s') afin de sélectionner le mode dégradé pour les buffers 333, 343 et 353. Le contrôle du mode dégradé pour le buffer 323 est fait avec le signal d'entrée 302 (idle). La porte logique 354 fournit le signal de validité 362 (idle) pour la sortie 363 venant du buffer 353. Les bits de statut 330, 340, 350 sont propagés d'un buffer à l'autre comme il a été décrit précédemment. Comme dans la figure précédente et aussi de la figure suivante, les bits de statut sont propagés d'un buffer à l'autre. Les deux bits de statut 350 produisent deux bits de statut 360 transmis à une porte logique 364 qui produit à sa sortie un signal 361 indiquant quand une comparaison de la sortie 363 doit être faite. Les portes 332, 342, 352, 354 et 364 peuvent être des portes ET logique (AND) si le paramètre s est égal à 0 et des portes OU logique inversé (NOR) dans le cas contraire (s=1). La première entrée de ces portes est inversée. La combinaison (s, s') des bits de statut associés à un buffer du pipeline indique aussi que les entrées et les sorties de ce buffer doivent être identiques. Cette indication est utile dans le cas où la comparaison des résultats produits par les différentes versions d'une opération répliquée doivent être comparées à la sortie de chaque étage du pipeline. 1 o Cet encodage assure une protection de l'information encodée contre les fautes transitoires et les fautes de délai, mais il duplique le nombre des ressources matérielles nécessaires. La figure 4 présente un dispositif avec un encodage des types d'opérations dans les étages d'un pipeline, qui offre la même protection des 15 bits de statut contre les fautes transitoires et les fautes de délai que l'encodage dans la figure 3 mais avec seulement le coût de l'encodage décrit en relation avec la figure 2. Selon cet encodage, si un étage exécute une opération qui est la réplique de l'opération qui est ré-exécutée dans l'étage précédent, alors les bits de statut stockés dans les buffers à l'entrée et à la 20 sortie de cet étage doivent avoir la même valeur. Dans tous les autres cas, les deux valeurs doivent être différentes. Le bit de statut 420 dans le deuxième buffer du pipeline est généré par le signal 401 (idle) qui indique l'absence d'une opération valide à l'entrée du pipeline. Avant d'être utilisé, le signal 401 doit passer d'abord par un inverseur logique 402. 25 Les combinaisons (s', s') ou (s, s) des bits de statut associés aux buffers d'entrée et de sortie d'un étage indiquent que le deuxième buffer doit capturer le résultat en mode dégradé et que les entrées et les sorties du premier buffer doivent être identiques. Dans le cas du dernier buffer, la deuxième indication est fournie par la comparaison des bits de statut dans 30 les bascules 450 et 460. La deuxième indication est utile dans le cas où la comparaison des résultats produits par les différentes versions d'une opération répliquée doivent être comparées à la sortie de chaque étage du pipeline. Les portes 411, 421, 431, 441, 451 et 461 implémentent 35 l'opération OU exclusif logique (XOR). La porte 411 est utilisée pour générer le bit de statut (420) associé au deuxième buffer (423) du pipeline. Le bit 420 changera de valeur dans le cycle suivant seulement si le signal idle (401) à l'entrée du pipeline est mis à zéro logique. Les portes 421, 431 et 441 fournissent les signaux permettant la sélection du mode dégradé pour les buffers 433, 443 et 453. Le contrôle du mode dégradé pour le buffer 423 est fait avec le signal d'entrée 401 (idle). La porte logique 451 et l'inverseur 464 fournissent le signal de validité 462 (idle) pour la sortie 464 venant du buffer 453. La porte logique 461 et l'inverseur 472 produisent le signal 471 indiquant quand une comparaison de la sortie 463 doit être faite. Pour l'homme de métier les modifications nécessaires aux dispositifs en figures 2, 3 et 4 doivent être évidentes si les signaux 'idle' aux entrées et/ou aux sorties du pipeline sont remplacés par des signaux 'valide' qui sont les inverses de signaux 'idle' (valide = not(idle)). Dans le cas où les opérations peuvent avoir plus que deux répliques, il est nécessaire d'avoir un bit de statut supplémentaire pour chaque buffer dans le pipeline afin de distinguer entre les opérations non-répliquées et la première version, les versions suivantes et la dernière version d'une opération répliquée. Chaque bit de statut dans un buffer du pipeline peut être encodé séparément avec un des encodages présentés en figures 2 à 4. La réplication des opérations au delà de la duplication permet de limiter la puissance consommée quand les cycles non-utilisés se succèdent l'un après l'autre. L'extension d'un des dispositifs décrits en figures 2 à 4 afin d'implémenter des pipelines avec plusieurs bits de statut par buffer doit être 25 évidente pour l'homme de métier. Dans le cas du pipeline d'un système d'interconnexion où le temps de propagation des bits de statut d'un buffer au suivant est comparable à la latence d'un étage du pipeline, les bits de statut doivent être décalés d'un étage en avant par rapport à l'encodage montré en figures 2, 3 ou 4. REVENDICATIONS1 - Procédé de test en ligne de dispositifs de type pipeline, ledit dispositif de type pipeline comportant une succession d'étages (121, 122, 123) séparés par des buffers (111, 112, 113, 114, 115), chaque buffer (111, 112, 113, 114, 115) étant en liaison avec un signal idle (ou valide = not idle) et au moins un bit de statut caractérisé en ce qu'il comporte au moins les étapes suivantes : a) détecter la valeur du signal idle traduisant la non utilisation d'un cycle ou l'interruption brusque du flot d'opérations dans un pipeline, b) maintenir l'état du buffer (111) afin de permettre la réexécution de l'opération valide (03) pendant le cycle non utilisé indiqué par le signal idle, c) exécuter les instructions répliquées en ne considérant à l'intérieur du pipeline que les résultats d'une seule réplique, d) mémoriser à la fin du pipeline la sortie qui correspond à une version (0'3) 15 d'une opération répliquée afin de la comparer avec la sortie d'une version successive (0"3) de la même opération répliquée , e) comparer les sorties du pipeline qui correspondent aux versions successives (0'3) et (0"3) et s'il existe une différence indiquer la présence d'une erreur. 20 2 - Procédé selon la revendication 1 caractérisé en ce qu'au niveau de l'étape b) la dernière opération valide avant un cycle non-utilisé est ré-exécutée sur plusieurs cycles successifs. 25 3 - Procédé selon l'une des revendications 1 à 2 caractérisé en ce que l'exécution de la première instanciation d'une opération répliquée est effectuée en mode dégradé. 4 - Procédé selon l'une des revendications 1 à 3 caractérisé en ce que 30 l'opération de mémorisation d) des valeurs obtenues par les différentes instanciations d'une opération répliquée est exécutée en utilisant un buffer (115) dupliqué en sortie du pipeline. 5 - Procédé selon l'une des revendications 1 à 3 caractérisé en ce que l'opération de comparaison est exécutée à la sortie de chacun des étages constituant le pipeline. 6 - Procédé selon l'une des revendications 1 à 5 caractérisé en ce que l'on introduit un cycle non utilisé ou bulle à l'entrée du pipeline après chaque opération qui n'est pas naturellement suivie par un cycle non utilisé et on vérifie les résultats de chaque opération en sortie du pipeline ou au niveau de chacun des étages du pipeline. 7 - Procédé selon l'une des revendications précédentes caractérisé en ce que l'on utilise un encodage naïf de l'information qui décrit le type d'opération exécutée par chaque étage dans le pipeline défini de la manière suivante : on associe un bit de statut à chaque buffer, sauf le premier buffer dans le pipeline, de telle façon que le bit de statut d'un buffer à l'entrée d'un étage exécutant une opération qui correspond à une réexécution de l'opération dans l'étage précédent prend la valeur s'E{0, 1} et s=not(s') dans les autres cas. 8 - Procédé selon la revendication précédente caractérisé en ce que dans le cas où l'étape de comparaison e) est effectuée en sortie du pipeline, le procédé utilise une bascule supplémentaire associée au buffer de sortie, ladite bascule supplémentaire stockant le bit de statut de ce buffer pendant le cycle précédent. 9 - Procédé selon les revendications 7 et 8 caractérisé en ce que l'on utilise deux bits de statut dans le cas où les opérations ont plus que deux répliques afin de distinguer entre les opérations non-répliquées et la première version, les versions suivantes et la dernière version d'une opération répliquée, chacun des bits de statut pouvant être encodé séparément. 10 - Utilisation du procédé selon l'une des revendications précédentes pour des pipelines dans les coeurs des processeurs où des cycles temporairement non utilisés sont obtenus en insérant des opérations de type « no opération ». 11 - Utilisation du procédé selon l'une des revendications 1 à 9 pour des pipelines dans les systèmes d'interconnections où les bits de statut sont décalées d'un étage de pipeline en avant. 12- Utilisation du procédé selon l'une des revendications 1 à 6 pour des pipelines dans les systèmes d'interconnections où des cycles temporairement non utilisés sont inclus dans les tables de gestion ou sont générés par un arbitre central. 10 13 - Dispositif de test en ligne pour des dispositifs de type pipeline composés d'une succession d'étages séparés par des buffers (223, 233, 243, 253), caractérisé en ce qu'il comporte au moins les éléments suivants : un moyen d'encodage naïf des types d'opération existantes dans les étages 15 dudit pipeline, indiquant les opérations dupliquées et leurs versions, constitué d'un bit de statut associé à chaque buffer à la fin d'un étage de pipeline de telle façon que le bit de statut d'un buffer à l'entrée d'un étage exécutant une opération qui correspond à une réexécution dans l'étage précédente prend la valeur s'e{O, 1) et s=not(s') dans les autres cas afin de sélectionner le mode 20 dégradé pour les buffers à la fin de chaque étage de pipeline qui exécute la première version d'une opération dupliquée, de comparer les résultats et de choisir entre les résultats produits par les deux versions d'une opération dupliquée. 25 14 - Dispositif selon la revendication 13 caractérisé en ce qu'il comporte une bascule pour stocker chaque bit de statut. 15 - Dispositif selon les revendications 13 et 14 caractérisé en ce que le bit de statut s' prend la valeur {s, s'}, le bit de statut s=not(s') prend la valeur {s', 30 s), chaque paire de bits de statut (320) étant obtenus à partir d'un signal (302) indiquant l'absence d'une opération valide à l'entrée du pipeline et à partir de ce même signal inversé par un inverseur (305), et en ce qu'il comporte des moyens (332, 342, 352) permettant d'identifier l'apparition de la combinaison (s, s') afin de sélectionner le mode dégradé pour les buffers à 35 la fin de chaque étage de pipeline qui exécute la première version d'une5opération dupliquée, de comparer les résultats et de choisir entre les résultats produits par les deux versions d'une opération dupliquée. 16 - Dispositif selon la revendication 15 caractérisé en ce que les moyens d'identification de l'apparition de la combinaison (s, s') sont choisis parmi la liste des moyens suivants : les portes ET logique si le paramètre s est égal à 0, des portes OU logique inversé lorsque s=1. 17 - Dispositif selon les revendications 13 et 14 caractérisé en ce que l'information transportée par le bit de statut associé à un buffer est donnée par la comparaison avec le bit du statut du buffer suivant, la valeur du premier bit de statut dans le pipeline pendant un cycle d'horloge étant obtenu à partir de sa valeur pendant le cycle d'horloge précédant comparée avec le signal d'entrée (401) indiquant l'absence d'une opération valide à l'entrée du pipeline, et en ce qu'il comporte des portes OU exclusif logique (XOR) (421, 431, 441, 451, 461) et des inverseurs logiques (464, 472) permettant d'identifier les opérations dupliquées et leurs versions afin de sélectionner le mode dégradé pour les buffers à la fin de chaque étage de pipeline qui exécute la première version d'une opération dupliquée, de comparer les résultats et de choisir entre les résultats produits par les deux versions d'une opération dupliquée. 18 - Dispositif selon les revendications 13 à 17 caractérisé en ce qu'un buffer comporte un nombre double de bits de statut dans le cas où les opérations ont plus que deux répliques afin de distinguer entre les opérations non-répliquées et la première version, les versions suivantes et la dernière version d'une opération répliquée, chacun des bits de statut pouvant être encodé séparément.30