FR 2503900 A1 19821015 FR 8107410 A 19810413 Dispositif de reprise pour installation de traitement de données L'invention concerne les installations de traitement de données programmables, destinées à traiter des informations ou des nombres conformément à un programme enregistré. Le programme que doit exécuter l'installation est constitué d'une séquence d'instructions que l'on peut considérer comme groupées en sections correspondant- à des opérations distinctes, chaque section pouvant être fractionnée en sous-sections comportant une ou plusieurs instructions. Dans de nombreux cas, il est souhaitable de pouvoir rétablir l'installation dans l'état où elle se trouvait au début d'une section ou d'une sous-section de programme qui viént d'être exécutée, en réponse au résultat d'un test effectué à la fin de la section ou de la sous-section. Un cas qui a été particulièrement étudié dans le passé est celui où un test de vérification effectué à l'issue d'une section de programme dont le début est qualifié de "point de reprise" fait apparaître une erreur et conduit à ramener I1 installation dans l'état où elle se trouvait au point de reprise, afin de reprendre l'exécution du programme dans des conditions qui normalement évitent le renouvellement de l'erreur. On connaît notamment un procédé -visant à corriger les erreurs dues à des pannes intermittentes ou transitoires du matériel, dont la probabilité de répétition au cours de deux exécutions successives de la même section de programme est faible. A titre d'exemple particulièrement élaboré d'un tel procédé, on peut citer celui qui est décrit dans l'article de Y. DESWARTE et autre, "hlarignan, An intermittent failure correction method" FTC 5. Paris, Juin 1975, pp. 191-195. Ce procédé fait appel, pour révéler les erreurs, à l'exécution simultanée du même programme par deux calculateurs fonctionnant en parallèle. Périodiquement, l'identité des résultats est vérifiée par un test. Au cours de l'exécution du programme, la mémoire locale de chaque calculateur évolue de façon classique. Mais à chaque point de reprise on stocke le contexte de reprise (c'est-à-dire le contenu des registres internes) et, à chaque écriture ultérieure jusqu'au test, les valeurs successives des mots modifiés et leur adresse sont stockées dans une pile du type "dernier entrépremier sorti", dite "LIFO", incorporée à l'installation. Si une restauration est nécessaire, chaque mot modifié sera récrit,éventuellement plusieurs fois, dans l'ordre inverse de ses modifications. Si le test est satisfaisant et qu'il y a création d'un nouveau point de reprise, il suffit de mettre à zéro le po#inteur de pile de la LIFO dont la taille détermine l'intervalle de temps moyen entre deux créations de points de reprise. L'emploi d'une LIFO a l'avantage d'éviter tout traitement en logiciel lors de la désactivation d'un point de reprise, la seule opération étant la remise à zéro du pointeur de pile. Ce procédé n'en présente pas moins des limitations graves. Il ne permet pas d'éliminer les conséquences d'erreurs de logiciel. Les opérations de création et de désactivation d'un point de reprise, ainsi que de reprise, étant gérées par les calculateurs surveillés eux-mêmes, le taux de récupération d'erreurs transitoires est faible. En d'autres termes, on laisse échapper une fraction non négligeable des erreurs dues à des pannes fugitives du matériel. Enfin, le procédé est logiciel, donc peu rapide. On connaît par ailleurs des installations de calcul prévues pour limiter les effets d'erreurs de programmation, parmi lesquelles on peut citer celle qui fait l'objet du brevet GB 1 509 193 et de l'article "A program structure for error detection and recovery" de J.J. HORNING et al, Lecture Note in Computer Science 16, Berlin, Springer Verlag, pp. 177-193. L'approche utilisée consiste à fractionner le programme à exécuteren blocs de récupération" qui comportent chacun un bloc primaire et un test d'acceptation final, ainsi qu'un ou plusieurs blocs constituant des substituts ou alternats du bloc primaire. Chacun des blocs primaire et de substitution peut lui même contenir un bloc de récupération d'ordre hiérarchique inférieur. Si le test effectué à la fin d'un bloc révèle une erreur d'origine logicielle, on retourne au point de reprise pour éxécuter une version substituée du programme qui s'est mal exécuté. La mise en oeuvre de cette approche s'effectue en utilisant un "cache de récupération",-constitué par une mémoire qui stocke l'identité des variables qui ont été modifiées au cours de l'exécution de la section de programme dans sa première variante, ou éventuellement dans une seconde variante dans la mesure où cette seconde variante conduit également à un test défavorable. Si cette seconde variante est la dernière, il convient de remonter à un point de reprise hiérarchiquement supérieur, ce qui implique que le cache de récupération ait également conservé en mémoire les indications concernant les variables modifiées antérieurement au point de reprise hiérarchiquement le-plus bas. Pratiquement, la séquence de fonctionnement est la suivante : les variables sont empilées au fur et à mesure de leur déclaration dans une pile principale et une marque est placée dans cette pile à chaque entrée dans un bloc de récupération. Toutes les variables sous cette barre sont globales, et non pas locales, puisque déclarées dans un bloc contenant le bloc courant. Lorsqu'un bloc est complètement exécuté, l'espace alloué à ses variables est récupéré. On empile dans le cache de récupération les valeurs antérieures des mots ou "images-avant" des variables modifiées dans un bloc de récupération à la première modification ; un marquage de la variable spécifie Si son état à l'entrée du bloc a été ou non mémorisé. Si oui, on évite de sauvegarder cette variable lors d'une modification ultérieure. Ce mode de conservation avec marquage présente des inconvénients graves : à chaque création de point de reprise, il faut effacer tous les marquages ; ceci est fait par exploration de la mémoire-cache, ce qui fournit l'adresse des mots marqués. Cette approche ralentit considérablement le fonctionnement, car elle implique l'arrêt du fonctionnement utile de l'installation pour faire exécuter par les organes de gestion du cache de récupération des algorithmes qui sont particulièrement compliqués en cas d'imbrication des points de reprise. De plus, elle ne pallie que les conséquences d'erreurs de logiciel. La présente invention vise à fournir une installation de traitement de données répondant mieux que celles antérieurement connues aux exigences de la pratique, utilisable non seulement pour la correction d'erreurs, mais aussi pour le retour à un point de branchement dans un arbre de décision en cas de test conduisant au rejet de la branche essayée. Elle vise également à éviter tout ralentissement notable du fonctionnement de l'installation, y compris lors d'opérations fréquentes telles que la désactivation d'un point de reprise, et toute modification du mot de mémoire si plusieurs points de reprise de niveaux hiérarchiques différents cohabitent. Dans ce but, l'invention fait appel à un dispositif de récupération, externe à la partie de traitement de données de l'installation, ce qui permet de le transposer sur des processeurs autres que celui de l'installation pour laquelle il a été étudié et permet d'arriver à un haut degré de fiabilité, la probabilité de panne simultanée de la partie de traitement de données et du dispositif de récu pérationétant très faible. Le dispositif, lorsqu'il vise à éviter les conséquences d'erreurs, permet à la fois et en même temps, de récupérer les erreurs provenant du logiciel et celles dues à des défaillances transitoires, et de différencier les pannes transitoires et permanentes du matériel. L'invention propose plus particulièrement un dispositif de reprise pour installation de traitement de données programmable, installation destinée à traiter des informations ou des nombres conformément à un programme enregistré et comportant des moyens de mémorisation prévus pour stocker, lors du fonctionnement, les états courants des données, caractérisé en ce qu'il comprend : une mémoire organisée en pile du type dernier entré-premier sorti ; des moyens pour recopier dans ladite mémoire l'état antérieur de chaque donnée contenue dans les moyens de mémorisation avant changement de cet état par écriture dans les moyens de mémorisation ; des moyens de création d'au moins un point de reprise à un emplacement déterminé dudit programme par recopie dans lesdits moyens de mémorisation des registres de l'installation et des moyens d'inscription de la valeur du pointeur de pile à la création de chaque point de reprise ; en réponse à un test indiquant la nécessité de revenir à un point de reprise, des moyens remettent les moyens de mémorisation de l'installation dans l'état correspondant audit point de reprise par vidage de la pile depuis le pointeur courant jusqu'à la dernière valeur inscrite, tandis qu'en cas de réussite du test, lesdits moyens annulent la dernière inscription du pointeur de pile et le remettent à zéro si le point de reprise était du niveau hiérarchique le plus élevé. Le dispositif permet de façon simple de prévoir dans le programme des points de reprise de niveaux hiérarchiques différents, ce qui permet notamment de revenir au point de reprise de niveau hiérarchique élevé si toutes les portions de programme constituant des alternats à partir d'un point de reprise de niveau hiérarchique bas comportent des erreurs. L'invention sera mieux comprise à la lecture de la description qui suit d'un dispositif qui en constitue un mode particulier de réalisation, donné à titre d'exemple non limitatif. La description se réfère aux dessins qui l'accompagnent, dans lesquels - la Figure 1 est un schéma de principe montrant les éléments d'un dispositif de reprise qui interviennent en cas de défaillance du matériel et les liaisons entre ce dispositif et le processeur de l'installation - la Figure 2 est un schéma montrant l'affectation des composants principaux du dispositif de reprise et le fractionnement de la mémoire principale de l'installation et de la mémoire de sauvegarde- - la Figure 3 est un schéma fonctionnel de l'ensemble d'un dispositif de reprise correspondant à la constitution de principe des figures 1 et 2 - la Figure 4 est un chronogramme faisant appa raître l'allure des signaux en divers points du schéma de la figure 3. On décrira maintenant, à titre de mode particulier de réalisation de l'invention, un dispositif destiné à assurer une reprise à la suite d'une défaillance matérielle ou d'une erreur de logiciel sur une installation de traitement de données à microprocesseur, permettant d'atteindre un taux élevé de récupération des erreurs. Le dispositif doit être associé à des moyens de détection d'erreur qui peuvent être de l'un quelconque des types connus et ne seront donc pas décrits ici. Ces moyens de détection d'erreur peuvent notamment utiliser le fonctionnement en synchronisme de deux microprocesseurs, avec comparaison des résultats. On trouvera une description de tels moyens de détection dans les documents cités au préambule de la présente demande. Le dispositif suivant l'invention constitue, pour le processeur de l'installation, un périphérique qui lui est externe et ne le modifie pas. Il peut être paramétré de manière à permettre la reprise sur faute matérielle seule, mode de fonctionnement caractérisé par ltexistence d'un seul point de reprise à un instant donné ou bien de manière à permettre la reprise sur faute matérielle ou erreur logicielle, mode de fonctionnement caractérisé par la possibilité d'existence de plusieurs points de reprise de niveaux hiérarchiques différents. Avant de décri#re sa constitution, on rappellera son mode de fonctionnement, d'abord lors d'une reprise sur panne transitoire du matériel, puis à la suite d'une erreur de logiciel imposant l'utilisation d'un bloc alternat de programme au lieu d'un bloc primaire erroné. Reprise sur panne transitoire du matériel : La reprise vise, dans le dispositif suivant l'invention comme dans des dispositifs antérieurs, à déterminer si une anomalie détectée a un caractère transitoire ou permanent, le programme entrepris étant achevé dans le cas d'un caractère transitoire de la défaillance. Des points de reprise sont créés dans le programme, soit à la demande du dispositif lorsque la pile est pleine soit en fonction de l'occurence d'instructions d'entrées-sorties dans le programme de l'installation. Pour réexécuter une séquence de programme depuis un point de reprise pré-établi, il est nécessaire de remettre la mémoire et les registres du processeur dans l'état correspondant au point de reprise, ce qui implique - lors de la création d'un point de reprise, de mémoriser l'état des registres du processeur, - ultérieurement, avant d'effectuer chaque écriture en mémoire, de sauvegarder le mot mémoire tel qu'il se présente avant sa modification et de le stocker avec son adresse. En conséquence, le dispositif devra comporter les moyens nécessaires pour stocker, dans une mémoire de sauvegarde, les données nécessaires à la restauration de la mémoire en dépit des modifications qu'elle subit. La mémoire de sauvegarde nécessaire à la restauration de la mémoire principale est constituée en pile en mode "dernier entré-premier sorti" ou LIFO. Cette mémoire peut être une mémoire vive classique, dont la taille est choisie en fonction de l'intervalle que l'on veut ménager entre deux points successifs de reprise de niveau hiérarchique supérieur. Le dispositif peut notamment avoir la constitution de principe montrée en figure 1. Sur cette figure, le processeur 10, qui constitue l'élément de calcul de l'installation de traitement de données, comporte une sortie 11 fournissant un signal d'erreur en cas de résultat défavorable d'un test. Ce processeur 10 est associé, par un bus d'adresse 12 et un bus de données 13, à une mémoire principale 14. Les communications entre le processeur et son environnement sont commandées par le bus CTRL 18. La ligne 15 d'écriture WR provenant du microprocesseur 10 attaque la mémoire 14 sous contrôle du dispositif 17.En effet, l'invention implique que le dispositif de reprise soit capable de transformer le cycle d'écriture en mémoire 14 du processeur en un cycle de lecture-écriture, permettant de lire la valeur antérieure (image avant) du mot en mémoire avant que ce mot ne soit modifié par écriture. Le dispositif proprement dit comprend la mémoire de sauvegarde ou mémoire-cache 16 gérée en mode LIFO et un dispositif 17 de gestion de la mémoire 16. La création d'un point de reprise est faite en coopération par le processeur et le dispositif de gestion 17, celui-ci validant l'opération. Le dispositif de gestion 17 est prévu pour que - lorsque la pile est pleine, une demande de création d'un point de reprise soie émise vers le processeur sous forme d'une interruption, - sur un ordre du processeur 10 au dispositif de gestion 17 signalant qu'il vient de copier ses registres internes dans la mémoire 14, le dispositif de gestion annule le pointeur de pile validant ainsi le point de reprise. - lors de l'exécution du programme, chaque ordre d'écriture en mémoire 14, émis sur la ligne 15, soit transformé par le dispositif de gestion 17 en, successivement, une lecture de la mémoire 14 à l'adresse dans laquelle va s'effectuer l'écriture, un stockage du mot mémoire (adresse et donnée lues) dans la pile LIFO 16, et, enfin, écriture de la nouvelle valeur de la donnée dans la mémoire 14. L'exemple suivant correspond à une partie de programme exécutée entre un point de reprise numéroté j et une détection d'anomalie, seules ayant été reproduites les instructions correspondant à une écriture en mémoire pour plus de simplicité PR n0 j (point de reprise j) INST X : = X1 Y : = Y1 X:=X2 Z : = Z1 X = X3 Détection d'anomalie La mémoire 14 et la pile 16 auront alors successivement les deux configurations suivantes Meinoire Pile Avant PR n0 j : t X g Yo Avant la détection d'anomalie X :x3 g :Y1 J Y: Y0 Pour restaurer la mémoire 14 dans l'état où elle était au dernier point de reprise, il suffit de vider la pile 16.Ainsi, la variable X par exemple, qui avait, immédiatement avant détection, la valeur X3, sera successivement récrite X2, X1 puis Xo qui était son état avant création du point de reprise Si le test ne fait apparaître aucune anomalie, il suffit, pour désactiver le point de reprise, de remettre à zéro le pointeur de pile, ce qui est une opération qui, contrairement à celle envisagée dans le brevet GB 1 509 193, n'exige aucune exécution d'algorithme. Reprise à la suite d'une erreur de logiciel : Une telle reprise exige l'utilisation d'une technique logicielle appropriée. On prendra pour exemple la technique des blocs de récupération dont une description détaillée figure dans de nombreux documents antérieurs, en particulier dans le brevet GB 1 509 193 déjà cité. On ne rappellera donc que très brièvement la constitution et le rôle des blocs de récupération. Dans le mode de mise en oeuvre le plus simple de cette conception, on découvre le programme on blocs successifs. La structure de chaque bloc est du genre suivant bloc de récupération : A test d'acceptation : AT bloc primaire : AP programme bloc secondaire : AQ t programme C'est le programme correspondant au bloc primaire qui est d'abord exécuté. Ensuite, le test d'acceptation AT est appliqué. S'il donne un résultat favorable indiquant une bonne exécution du programme, il y a passage au bloc de récupération suivant. Dans le cas contraire, il y a exécution du bloc secondaire AQ, qui constitue un alternat du bloc primaire. Mais, avant d'exécuter le bloc secondaire AQ, il faut restaurer la mémoire dans l'état où elle se trouvait à l'entrée du bloc de réeupération. Cette opération peut être simplifiée en ne restaurant que les variables globales au bloc de récupération, et non pas celles qui ont été déclarées, donc définies, dans le bloc primaire AP. Très souvent, il est nécessaire d'imbriquer des blocs de récupération de niveaux hiérarchiques différents. Le Tableau I (plus complet que le précédent en ce qutil porte la mention des variables globales et locales) montre un exemple d'imbrication. Pour mieux faire apparaître sur ce tableau l'étendue des blocs de récupération, ils sont encadrés par des flèches, tandis que les lignes verticales délimitent chacune un bloc primaire ou un bloc constituant alternat. TABLEAU I Déclarer X bloc de récupération A test d'acceptation AT bloc primaire AP déclarer : Y programme bloc de récupération B test d'acceptation BT bloc primaire BP déclarer : U programme bloc secondaire BQ déclarer: V L programme bloc secondaire AQ déclarer : W programme bloc de récupération C test d'acceptation CT bloc primaire CP programme bloc secondaire CQ programme bloc de récupération D test d'acceptation DT bloc primaire DP t programme programme Lorsque par exemple c'est la portion de programme correspondant au bloc de récupération BP, qui est en cours d'exécution, le dispositif doit intervenir pour permettre de - restaurer les variables globales (ici limitées à Y) dans leur état à l'entrée du bloc de récupération B, en cas d'échec du test d'acceptation BT - restaurer les variables globales au bloc de récupération A (ici X) si le bloc de récupération B dans son ensemble ne peut s'exécuter, entraînant la non exécution de AP et le recours nécessaire à AQ, c'est-à-dire le retour à un point de reprise hiérarchiquement supérieur à celui précédant le bloc B. La partie de la mémoire principale 14, où s'effectue la copie des registres du processeur 10 et la mémoire de sauvegarde 16 doivent être organisées pour permettre la coexistence de ces points de reprise de niveaux hiérarchiques différents. On décrira maintenant ltorganisation schématisée en Figure 2 où a été utilisée la notation suivante MCLX partie de la mémoire qui contient les contextes du processeur pour tous les points de reprise non désactivés. IMB numéro d'imbrication du bloc de récupé ration courant. SPM registre d'adressage contenant le pointeur courant dans la pile 16. DOIS dimension de la pile 16. HLIM BLIM limites haute et basse de zone des variables locales/globales. SPo à SPn délimiteurs de zones dans la pile 16 (destines à stocker les valeurs du poin teur de pile correspondant aux niveaux hiérarchiques successifs, au nombre de n+1 au maximum, de points de reprise). C'est le processeur 10 (figure 1) qui initialise le dispositif constituant cache de récupération. Cette initialisation comporte le positionnement des différents registres du dispositif 17, en particulier DMS et MODE qui rendent le fonctionnement du dispositif paramétrable. Le registre DIODE, qui est mis à éro par un ordre de remise à zéro (reset) général invalide le fonctionnement du dispositif jusqu'à ce que le processeur l'ait chargé. Lors du fonctionnement normal de l'installation, toute écriture d'une variable globale (définie par exemple par une adresse n'appartenant pas à l'ensemble défini par BLIM et BLINI), provoque le stockage dans la pile 16 de l'ancienne valeur de la variable. Comme on l'a vu plus haut, les points de reprise sont prévus dans le programme. La création d'un point de reprise provoquera l'incrémentation du numéro dtimbrica- tion courant IMB et la copie du pointeur courant SPM dans le registre SPi correspondant au numéro d'imbrication i. Cette création sera généralement suivie d'ordres de modification, issus du processeur, des registres LI et BLIM, délimitant de nouvelles zones de rangement des variables locales. L'annulation ou désactivation d'un point de reprise par le processeur 10, par exemple après succès d'un test d'acceptation, s'effectue en décrémentant le numéro d'imbrication courant dans IMB. Le pointeur SPM n'est remis à zéro que lorsqu'on quitte un bloc de récupération du rang hiérarchique le plus élevé (rang 0). Une reprise est demandée par le processeur soit après une erreur logicielle, soit après une phase spéciale d'initialisation consécutive à une détection de panne matérielle. Dans ce cas, on restaure la mémoire 14 en vidant la pile 16 depuis le pointeur courant SPM jusqu'au pointeur SPi associé au niveau d'imbrication en cours. On voit que le dispositif est tout à la fois très simple (ce qui autorise son emploi dans un microcalculateur de faible complexité) et capable de récupérer à la fois les erreurs de logiciel, d'où une tolérance à ces erreurs, et les pannes transitoires. On décrira maintenant en détail un schéma fonctionnel possible du dispositif des figures 1 et 2, puis son application à une installation à microprocesseur zilog Z 80, donnée à titre d'exemple. Sur le schéma fonctionnel de la figure 3, où les organes correspondant à ceux des figures 1 et 2 portent le même numéro de référence, on a représenté en plus les registres de mode 20 et de code 21. Dans le registre 21 s inscrit l'instruction à exécuter par le cache, fournie par le bus de données 13. Le repère RD-M-WR réfère la logique permettant l'extraction du mot à sauvegarder en mémoire 14. Enfin, le repère IIRT 22 désigne un registre d'état, contenant en particulier des comptes rendus d'erreur. On décrira maintenant, en faisant référence à l'ensemble des figures 1 et 3, les moyens mis en service pour - la sauvegarde d'un mot mémoire avant son écriture, - la gestion de la pile de sauvegarde, - la création d'un point de reprise, - la désactivation d'un point de réponse, - la restauration de la mémoire après une faute et la procédure de reprise. Sauvegarde du mot mémoire (IMAGE AVANT) avant écriture La sauvegarde du mot mémoire est réalisée par transformation systématique des cycles d'écriture en cycles comprenant successivement lecture, mémorisation dans la mémoire de sauvegarde 16 et écriture. Le chronogramme des opérations est illustré sur la figure 4 où sont montrés les signaux apparaissant sur chaque ligne de la figure 3 avec la même référence. Le signal ATD provenant du décodage de MREQ (demande mémoire) sans ordre de lecture ni rafraîchissement provoque un état d'attente Tw dans le microprocesseur, isole ses sorties du bus de données 13 et empêche la transmission du signal WR à la mémoire 14. La mémoire 14 est lue et le couple constitué par le mot contenu en mémoire et son adresse est rangé dans la mémoire de sauvegarde 16 lors du signal d'écriture WR. La remontée de ATD termine l'écriture en mémoire de sauvegarde 16, relie les sorties de données du microprocesseur au bus 13 et autorise l'écriture en mémoire 14.En parallèle, l'adresse du mot modifié, pour laquelle le registre 25 joue le rôle de tampon, est comparée au couple HLIM-BLINf par le circuit 23. Selon sa position relative dans ces limites et le paramètrage spécifié par le registre MODE, l'incrémentation du pointeur de pile SPM, adressant la mémoire 16, sera effectuée ou non. Gestion de la pile de sauvegarde : Une caractéristique essentielle de l'invention est que la mémoire de sauvegarde est gérée en mode LIFO. Le registre DMS indique le seuil de remplissage de cette pile ; il est initialisé par le processeur La valeur-à charger dans DMS est égale à la dimension physique de la pile, diminuée d'autant dé mots qu'il faut d'écritures pour créer un point de reprise, du nombre maximum d'écritures exécutables dans une seule instruction, de deux fois le nombre d'écritures accompagnant la prise en compte d'une interruption. Lorsque le pointeur de pile dépasse la valeur fixée par DMS, une interruption ITPILEPLEiNE est générée par l'intermédiaire de la bascule ITPP 24. Les actions entreprises par le programme de traitement de l'interruption dépendent du mode d'utilisation de la reprise. Dans le cas du traitement de fautes matérielles seules (par de structure logicielle ad hoc pour la récupération d'erreurs de programmation), un nouveau point de reprise sera créé. Dans le cas où on récupère les erreurs logicielles, c'est le programme qui décide a priori de la création des points de reprise. La situation résultant de l'interruption est anormale. Son traitement dépend étroitement de l'application. Dans tous les cas, il conduira à une éxécution dégradée de la tâche à accomplir par l'installation. Création d'un point de reprise : A la suite d'une interruption ITPILEPLEINE (récupération d'erreurs matérielles seules) ou à des instants prédéterminés (occurence d'une instruction d'entrée-sortie, récupération d'erreurs logicielles), le programme décide de créer un point de reprise. Il envoie d'abord un ordre de "début de création de point de reprise" qui fait exécuter par le dispositif les actions suivantes le compteur ISIB est incrémenté, . le compteur SPM est mémorisé dans SPI à l'adresse 1MB. Le processeur sauvegarde ensuite ses registres. Il envoie enfin au dispositif 17 l'ordre de "fin de création de point de reprise" qui provoque les actions suivantes le compteur SPM est rechargé par le contenu de SPI à l'adresse IMB. Ceci a pour effet de supprimer de la pile 16 les I#IAGES-AVANT prises pendant la création du point de reprise, car elles ne servent plus. en mode "récupération de fautes matérielles seules", IMB est décrémenté (on n'utilise qu'un point de réponse), ce qui a pour effet dans ce mode de mettre la valeur zéro dans SPM. Désactivation d'un point de reprise : Sur un ordre du processeur, le point de reprise de niveau hiérarchique le plus bas est désactivé. Cette opération s'exécute de la manière suivante - décrémentation du compteur d'imbrication IMB, - si IMB devient négatif (c'est le cas quand le point de reprise du plus haut niveau hiérarchique est désactivé), le pointeur SPM est mis à zéro. Dans le cas général, la décrémentation du compteur IMB n'a pas d'action sur SPM. Cette opération a en conséquence pour effet d'associer les images-avant, prises dans le dernier bloc de reprise, au bloc de reprise de niveau immédiatement supérieur (figure 2), qui devient le bloc courant. Restauration de la mémoire et la procédure de reprise : Sur ordre du processeur (qui a décelé par exemple une anomalie dans son logiciel), une reprise est effectuée. La mémoire est restaurée en vidant la pile depuis le pointeur courant SPAX jusqu'a la valeur stockée dans SPI à l'adresse IB. Après avoir retrouvé l'accès à sa mémoire, le processeur poursuit l'exécution de son travail. Dans le cas d'une faute matérielle, le comportement est différent selon que le signal de faute est une confir maton ou non. cet effet, le dispositif comporte une bascule de mémorisation de faute 31. - Si elle est déjà armée quand arrive la faute, celleci est considérée comme permanente ; le processeur est arrêté par émission d'un signal sur la ligne STP, - sinon, des mécanismes extérieurs au dispositif t7, destinés à traiter la faute peuvent agir : une interruption ITFAUTE est générée en même temps qu'un ordre RESET est envoyé au processeur. L'interruption est prise en compte après la réinitialisation du processeur. Le programme d'interruption demande au dispositif 17 d'effectuer une restauration de la mémoire (voir plus haut) ; restaure ensuite les registres du processeur dans leur état au dernier point de reprise et provoque ensuite un branchement à ce point de reprise lors de sa désactivation. Pour déterminer Si une faute matérielle est permanente ou transitoire en présence de niveaux de reprise imbriqués, il faut prévoir un dispositif de décision approprié. Ce dispositif doit résoudre la situation suivante Création Désactivation Création erreur matérielle PR0 Retour Recréation PR1 L =r Dans cet exemple, la bascule de mémorisation de faute ne doit être relachée qu'à la désactivation du point de reprise PRO, seul moyen de garantir que le relachement ait lieu après l'exécution de l'instruction où a été détectée la faute. A cette fin, la bascule de faute attaque un registre à décalage 32 (figure 3) comportant autant de positions que le nombre maximum admissible de niveaux hiérarchiques.On opèrera un décalage de la bascule vers le registre à chaque création d'un point de reprise et un décalage du registre vers la bascule à chaque désactivation. On applique maintenant ce dispositif à l'exemple cidessus. En l'absence d'erreur, l'évolution de l'état de la bascule et du contenu du registre sera la suivante Création de PRo Création de PR1 Désactivation de PR Bascule Registre g r. Si au contraire il y a apparition d'une faute détectée après la désactivation de PR1, le déroulement des actions est le suivant Faute Reprise à PRO Création de PR1 Désactivation de PR1 Désactivation de PRo Bascule Registre izm E l 10101 On Voit que la bascule n'est relachée que lorsqu'on désactive le point de reprise PRO, donc après avoir exécuté correctement l'instruction où la faute a été détectée. En résumé, on voit que l'invention permet de réaliser un dispositif qui tout à la fois est simple et permet un taux très élevé de récupération d'erreur quelle qu'en soit la nature. De même, elle permet de façon simple de remonter à des points de reprise de différents niveaux hiérar chiques pour d'autres applications et notamment,dans une installation, une structure en arbre de décision. Il va sans dire que la portée du présent brevet ne se limite pas aux modes particuliers de réalisation qui ont été représentés et décrits à titre d'exemples mais s'étend à toute variante restant dans le cadre des équivalences. Revendications. 1. Dispositif de reprise pour installation de traitement de données programmable, installation destinée à traiter des informations ou des nombres conformément à un programme enregistré et comportant des moyens de mémorisation prévus pour stocker, lors du fonctionnement, les états courants des données, caractérisé en ce qu'il comprend : une mémoire de sauvegarde (16) organisée en pile du type dernier entré-premier sorti ; des moyens pour recopier dans ladite mémoire (16) l'adresse et l'état antérieur de chaque donnée contenue dans les moyens de mémorisation (14) avant changement de cet état par écriture dans les moyens de mémorisation ; des moyens de création de points de reprise à au moins un emplacement déterminé dudit programme par recopie dans lesdits moyens de mémorisation (14) des registres de l'installation ; des moyens d'inscription de la valeur (spi) lors du début du stockage : et des moyens qui, en réponse à un test indiquant la nécessité de revenir à un point de reprise remettent les moyens de mémorisation de l'installation dans l'état correspondant audit point de reprise par vidage de la pile depuis le pointeur courant jusqu'à la dernière valeur inscrite, tandis qu'en cas de réussite du test, lesdits moyens annulent la dernière inscription et remettent à zéro le pointeur de pile (SPM) si le point de reprise était du niveau hiérarchique le plus élevé. 2. Dispositif suivant la revendication 1, permettant de réaliser des points de reprise de niveau hiérarchiques successifs, prévus dans le programme de fonctionnement de l'installation, caractérisé en ce que lesdits moyens de création de points de reprise sont prévus pour recopier, dans lesdits moyens de mémorisation, l'état des registres de l'installation, à la suite de chaque point de reprise de niveau hiérarchique le plus élevé, l'état des registres de l'installation à chaque création de point de reprise de niveau hiérarchique plus bas et en ce que ladite mémoire (16) organisée en pile est de dimension suffisante pour recevoir l'état antérieur de chaque donnée contenue dans les moyens de mémoirisation (14) avant cha que changement entre deux points de reprise de niveau hiérarchiquement le plus élevé. 3. Dispositif suivant la revendication 2, caractérisé en ce qu'il comprend, hors de ladite installation, des registres appartenant à un ensemble de gestion de la mémoire de sauvegarde (16), lesdits registres (SPO SP;) étant prévus pour recevoir la valeur du pointeur de pile correspondant à chaque point de reprise entre deux points de reprise de niveau hiérarchiquement le plus élevé. 4. Dispositif suivant la revendication 2 ou 3, caractérisé en ce qu il comprend des moyens permettant de différencier une panne transitoire de matériel d'une panne permanente, comprenant une bascule de mémorisation d'erreur de matériel, attaquant un registre à décalage commandé de façon qu'il y ait décalage de la bascule vers le registre à chaque création de point de reprise et décalage du registre vers la bascule à chaque désactivation de point de reprise.