Brevet FR2268306A1 — publié le 19751114

La présente invention concerne les calculateurs et les dispositifs analogues réalisant diverses opérations pour la manipulation des états ou des valeurs d'articles d'information. Un programme qui doit être mis en oeuvre dans un calculateur est construit à partir d'opérations identifiables qui constituent chacune un bloc et en conséquence, on peut considérer que l'ensemble du programme est un jeu de blocs. De nombreux blocs sont eux-mêmes construits à partir de blocs plus petits si bien que l'ensemble du programme forme un jeu imbriqué de blocs. A la fin d'un bloc, il est souvent souhaitable que l'appareil soit remis dans l'état qu'il occupait avant le début du bloc. Un procédé à cet effet comprend l'enregistrement séparé dans la mémoire du calculateur des états initiaux de tous les articles d'information. Ce procédé gaspille la capacité de mémoire car, dans de nombreux blocs, seul un nombre relativement faible d'articles d'information change. L'invention concerne un appareil de traitement de données destiné à une unité centrale de traitement d'un calculateur ou à un dispositif analogue, mettant en oeuvre des opérations comprenant un jeu de blocs de programme, l'appareil conservant l'état pris par chacun des articles d'information au début de chaque bloc lorsque les articles dtinformation changent d'état au cours du bloc, si bien que les conditions existant au début du broc peuvent être retrouvées, l'appareil comprenant une première mémoire destinée à conserver l'état le plus récent de chacun des articles, une seconde mémoire destinée à conserver les états antérieurs des articles, un dispositifòmmandé par la seconde mémoire et destiné à transférer l'état existant d'un article de la première mémoire à la seconde lorsque l'état de l'article varie et à rétablir dans la première mémoire 11 état d'un article conservé dans la seconde, et un dispositif destiné à associer une information supplémentaire aux articles de manière que le transfert et le rétablissement de ceux-ci soient commandés. Dans un mode de réalisation, le dispositif d'asso ciation d'information supplémentaire avec les articles comprend une mémoire supplémentaire qui est adressable avec la première et qui est destinée à déterminer si l'état de chaque article doit être conservé dans la première mémoire lorsque l'article change d'état au cours du bloc en cours. Chacun des articles d'information peut comprendre une variable, les divers états des articles comprenant des valeurs attribuées à ces variables. Dans une variante, les articles peuvent être des vecteurs, des structures complexes de liste, des paramètres de divers processus, des procédures par récurrence, des piles ou les variables ellesmêmes. Les diverses mémoires peuvent être sous forme d'une mémoire unique. Dans une variante, chaque mémoire est un dispositif séparé ou deux des mémoires peuvent être groupées en un seul dispositif. Les mémoires conservent des mots (c'està-dire des groupes de chiffres de longueur fixe) dans chacun des emplacements de mémoire, mais les articles d'information peuvent avoir une longueur inférieure ou supérieure à celle d'un mot. Dans divers modes de réalisation, les mémoires peuvent être sous forme de piles. Une pile est un type de mémoire dans lequel des mots qui doivent être conservés sont introduits sous forme d'une séquence linéaire commençant en bas. D'autres caractéristiques et avantages d'un mode de réalisation d'appareil selon l'invention, permettant la détection et la correction des erreurs, ressortiront mieux de la description qui va suivre, faite en référence aux dessins annexés sur lesquels - les figures I à 9 sont des diagrammes synoptiques représentant l'état des diverses mémoires au cours de diverses étapes lors de la mise en oeuvre du programme du tableau I - la figure 10 est un diagramme synoptique d'un appareil selon un mode de réalisation de l'invention - la figure 11 est un diagramme synoptiqued'une partie de l'appareil de la figure 10, plus en détail - la figure 12 est un diagramme synoptique d'un appareil selon un mode de réalisation de l'invention qui est une variante du mode de réalisation de la figure 10 ; et - les figures 13 à 15 sont des diagrammes synoptiques représentant l'état des diverses mémoires, au cours de diverses étapes du programme du tableau V. Un programme de calculateur permettant la correction des erreurs selon l'invention est construit à partir d'un certain nombre d'opérations identifiables permettant la correction des erreurs, de nombreuses de ces opérations étant elles-mêmes construites à partir d'opérations plus petites. Un jeu d'opérations groupées ensemble et permettant ainsi la correction des erreurs, est appelé "bloc de correction" dans le présent mémoire. Chaque bloc de correction doit contenir un bloc primaire et un essai dtacceptation. De plus, il peut contenir un ou plusieurs autres blocs. Chaque bloc primaire ou autre peut lui-même constituer ou contenir un bloc de correction contenant au moins un bloc primaire et un essai d'acceptation. Le tableau I représente un bloc I de correction ayant un essai It. Il contient un bloc primaire la et un autre bloc Ib. Le bloc primaire la contient un bloc de correction Il comprenant un essai d'acceptation IIt, un bloc primaire lia et deux autres blocs IIb et IIc. L'autre bloc Ib contient deux blocs de correction III et IV. Le bloc de correction III comprend un essai d'acceptation IIIt, un bloc primaire IIIa et un autre bloc IIIb. Le bloc de correction IV comprend un essai d'acceptation IVt et un bloc primaire IVa. Pour simplifier la compréhension, les traits verticaux doubles délimitent l'étendue des blocs de correction alors que les traits verticaux simples délimitent l'étendue des blocs primaires et autres. Chaque essai d'acceptation est une partie de programme qui est appelée à la sortie d'un bloc primaire ou autre. il donne une décision binaire sur le fait que I'opé- ration demandée au bloc de correction a été réalisée de fa çon convenable en ce qui concerne le programme qui le contient ou appelle le bloc de correction.Pour chaque bloc de correction, il existe un essai unique d'acceptation appelé à la sortie du bloc primaire et aussi appelé à la sortie d'un autre TABLEAU I DECLARE M BLOC DE CORRECTION I ESSAI D'ACCEPTATION It BLOC PRIMAIRE la DECLARE M PROGRAMME BLOC DE CORRECTION Il ESSAI D'ACCEPTATION IIt BLOC PRIMAIRE IIa rDECLARE J 1 PROGRAMME AUTRE BLOC IIb DECLARE K PROGRAMME AUTRE BLOC IIc SECLARE L PROGRAMME PROGRAMME AUTRE BLOC Ib DECLARE L PROGRAMME BLOC DE CORRECTION III ESSAI D'ACCEPTATION IIIt BLOC PRIMAIRE IIIa PROGRAMME AUTRE BLOC IIIb L C [ PROGRAMME BLOC DE CORRECTION IV ESSAI D'ACCEPTATION IVt BLOC PRIMAIRE IVa F PROGRAMME PROGRAMME bloc dans le cas où une autre opération est nécessaire. Lorsque l'opération primaire réalisée avec un bloc de correction est rejetée le programme doit en réaliser une autre. Lorsque celle-ci se termine, le résultat est soumis au même essai d'acceptation et, lorsque celui-ci est positif, le programme progresse avec le résultat créé par la seconde opération. Lorsque l'essai d'acceptation n'est toujours pas satisfaisant, une autre opération est tentée. Dans le cas où tous les autres blocs ont été essayés et n'ont pas satisfait à l'essai d'acceptation, l'ensemble du bloc de correction doit être considéré comme défectueux. Cette considération impose le rejet du bloc global qui appelle le bloc de correction. L'autre bloc de ce bloc global doit être utilisé à la place. L'essai d'acceptation ne se trouve pas dans le bloc primaire et en conséquence, il ne peut pas atteindre les variables locales des blocs primaireswautres ; il n'existe aucune raison pour laquelle les déclarations locales d'un autre bloc doivent ?être les mêmes que les déclarations locales du bloc primaire correspondant.Qu'un essai d'acceptation donne un résultat positif ou négatif, les déclarations locales faites au cours du bloc qui a conduit à un résultat positif ou négatif doivent être écartées de manière que l'ensemble soit mis dans la même condition qu'au début du traitement du bloc, si bien que I'autre bloc peut être écrit de manière classique lorsqu'on veut que le dessin de l'autre bloc ne soit pas affecté par l'exécution inacceptable antérieure du bloc primaire ou par les variations des valeurs des variables que l'exécution a pu provoquer. Ainsi, lorsqu'un autre bloc est introduit, il est présenté exactement dans les mêmes conditions que celles qui correspondent à la présentation du bloc primaire correspondant, lorsqu'il est introduit antérieurement. Toutes les opérations sur le bloc primaire ont été défaites et toutes les variables modifiées par le bloc primaire ont été remises à leur valeur antérieure. Une description plus complète des critères que doit satisfaire un tel appareil de correction d'erreurs est contenue dans le rapport de B. Randell RESEARCH ON COMPUTING SYSTEM RELIABILITY AT THE UNIVERSITY OF NEWCASTLE-UPON-TYNE, 1972/73", Tech. Report 57, Computing Laboratory, University of Newcastle-upon-Tyne, (Janvier 1974). Ute application de l'invention qu'on décrit maintenant à titre purement illustratif, est la réalisation d'un dispositif permettant la remise à leurs valeurs antérieures, avec une efficacité raisonnable des variables modifiées par un bloc primaire ou un autre bloc. Plus précisément, L'opé- ration est réalisée par enregistrement dans une mémoire séparée, appelée "mémoire de réserve", des identités des variables modifiées par un bloc primaire ou par un autre bloc avec les valeurs de ces variables avant la première de ces modifications. Les identités sont disposées de manière qu'elles comprennent des informations suffisant à la détermination de la variable à laquelle se rapporte chaque valeur enregistrée, et elles peuvent par exemple comprendre les adresses ou les adresses virtuelles de ces variables.Dans le mode de réalisation qu'on décrit maintenant, la mémoire principale et la mémoire de réserve sont organisées sous forme de piles. Comme seules les valeurs des variables à l'entrée dans un bloc de correction doivent être conservées, il n'est pas nécessaire que les valeurs intermédiaires des variables qui peuvent changer plus d'une fois dans un bloc de correction soient conservées, et un indicateur boolien est associé à chaque mot de la mémoire principale et indique si la valeur considérée a déjà été conservée dans la mémoire de réserve ou non. Les figures 1 à 8 représentent l'état de la mémoire principale et de la mémoire de réserve au cours de la mise en oeuvre du bloc primaire la et du début de l'autre bloc Ib du tableau I. Les valeurs déclarées particulières des variables sont données à titre purement illustratif. La figure 1 représente la situation avant introduction du bloc de correction I. La variable N est déclarée et on lui attribue la valeur 1. L'acte de déclaration de la variable N provoque l'attribution d'une adresse à celle-ci à la partie inférieure de la mémoire principale 10. A ce moment, la mémoire de réserve 12 est vide. La figure 2 représente la situation lors du bloc primaire la. D'abord, des repères 14 et 16 de pile sont pla cés dans les mémoires 10 et 12 respectivement. Ces repères indiquent le début d'un bloc de correction. Lors du programme correspondant au bloc primaire la, on suppose que la variable M est déclarée et a la valeur 2. La valeur attribuée 2 est introduite dans la mémoire 10 à l'adresse de la varie ble N qui se trouve au-dessus du repère 14. De plus, au cours du programme correspondant au bloc la, on suppose qu'une nouvelle valeur 3 est attribuée à la variable N. L'adresse de celle-ci dans la mémoire principale 10 et sa valeur originale sont introduites dans la mémoire 12 au-dessous du repère 16 et l'indicateur est établi à l'adresse de N dans la mémoire 10 (comme indiqué par un astérisque). Les repères de pile tels que 14 et 16 indiquent le début des régions de la mémoire principale et de la mémoire de réserve respectivement, associées à un bloc de correction. Toute introduction dans la mémoire 10 ou 12 audessus du repère supérieur doit avoir été faite au cours du bloc en cours. Dans une étape du programme correspondant au bloc primaire la, le bloc de correction Il est introduit et la figure 3 représente la situation au cours du bloc primaire lIa. Au début du bloc Il de correction, d'autres repères 18 et 20 de pile sont établis dans les mémoires 10 et 12 respectivement et l'indicateur placé en face de la variable N dans la mémoire principale est effacé car ce n'est plus la valeur de la variable N qui est conservée dans la mémoire 12 au-dessus du repère supérieur de pile. On suppose que, dans le bloc IIa, la variable J est déclarée et a la valeur attribuée 3. Celle-ci est introduite dans la mémoire 10 au-dessus du repère 18. On se réfère maintenant à la figure 4 qui suppose que, au cours du bloc primaire IIa, la valeur IV est attribuée à la variable M. Celle-ci est déclarée avant le début du bloc en cours et en conséquence sa position dans la mémoire 10 se trouve au-dessous du repère 18 qui marque le commencement du bloc Il de correction. L'adresse et la valeur originale de la variable M sont placées dans la mémoire 12 au-dessus du repère 20, la valeur locale 4 de la variable M est introduite dans la mémoire 10 et l'indicateur (repéré par un astérisque) à l'adresse M dans la mémoire 10 est établi. Sur la figure 5 qui correspond aussi au bloc primaire IIa, on suppose que la valeur M+1 est attribuée à la variable N. L'adresse et la valeur immédiatement précédente de la variable N sont introduites à la partie supérieure de la mémoire 12, la valeur locale de la variable N est introduite dans la mémoire 10 et l'indicateur correspondant est établi. Ensuite, comme représenté sur la figure 6, on suppose qu'une seconde attribution locale de la variable M, par exemple 6, est faite dans le bloc primaire IIa. Le fait qu'il ne s'agit pas de la première attribution par une opération dans ce bloc est indiqué par l'existence antérieure d'un indicateur établi correspondant à l'adresse de la variable M dans la mémoire 10. En conséquence, la nouvelle valeur de la variable M est introduite dans la mémoire 10 mais la valeur immédiatement précédente n'est pas placée dans la mémoire de réserve (une valeur antérieure ayant déjà été introduite). Cette introduction est inhibée par la présence d'un indicateur à l'adresse 17. L'indicateur reste évidemment établi. La figure 7 représente le cas dans lequel l'essai IIt d'acceptation du bloc de correction Il a été réaliséàla fin du bloc IIa et a donné un résultat positif. La pile de la mémoire 10 est découpée au repère 18 marquant le début du bloc Il si bien que la variable locale J est écartée. Tous les indicateurs sont effacés, et les indicateurs sont établis pour les variables qui ont été introduites dans la région qui se trouve sous la région supérieure de la mémoire 12 (entre les repères 16 et 20). Ces informations introduites dans la mémoire de réserve sont réalisées au cours du bloc I avant le début du bloc Il. De cette manière, l'enregistrement des variables déjà conservées lorsque le bloc Il a été introduit est rétabli. Toutes les données introduites dans la mémoire 12 au-dessus du repère 16 sont alors traitées.Celles dont l'adresse indique qu'elles correspondent à des variables locales du bloc I (c'est-à-dire pour les adresses qui se trouvent au-dessus du repère 14) sont écartées, par exemple l'entrée M,2. Celles qui correspondent à des variables pour lesquelles il existe déjà des entrées dans la région inférieure à la partie supérieure de la mémoire 12 sont écartées car ces variables sont déjà conservées dans le bloc I, par exemple I1 entrée N,3. Dans le cas où d'autres entrées ont été ré.ali- sées au-dessus du repère 20, celles-ci sont décalées vers le bas dans la région qui se trouve au-dessous de la région supérieure de la mémoire 12 si bien qu'elles se trouvent dans des mots contigus commençant à ltemplacement antérieurement occupé par le repère 20.Pour chaque entrée qui n1 est pas rejetée, par exemple l'entrée N,1, l'indicateur boolien correspondant à la variable désignée par l'adresse virtuelle est établi, indiquant que ces variables ont déjà en fait été conservées dans le bloc I. Lorsqu'un retour est réalisé du bloc en cours Il au bloc I, la région qui se trouve audessous de la région supérieure de la mémoire 12 (au-dessus du repère 16) devient la région supérieure. Comme l'essai d'acceptation IIt a été satisfait, le programme quitte alors le bloc la et tente l'essai d'acceptation It qui donne un résultat négatif, par exemple, à titre d'hypothèse. Le mécanisme doit rétablir les valeurs des variables comme si le bloc la n'avait jamais été exécuté. La variable M est une variable locale du bloc la et elle est donc rejetée.La variable N a été modifiée dans le bloc la et sa valeur antérieure a été enregistrée dans la mémoire de réserve. Cette valeur antérieure (1) est rétablie et l'indicateur de la variable N est effacé. Les repères 14 et 16 sont retirés des mémoires 10 et 12 respectivement. L'état des mémoires 10 et 12, comme représenté sur la figure 8, est alors exactement le même que si le bloc la n'avait jamais été introduit, c'est-à- dire le même que celui de la figure 1. Comme l'essai d'acceptation-It est négatif, le programme passe à l'autre blo-c Ib. La figure 9 représente la situation. Les repères 14 et 15 sont introduits à la fois dans les mémoires 10 et 12. La variable L est déclarée et on lui attribue la valeur 7 qui est introduite dans la mémoire 10. Les opérations progressent alors comme décrit précédemment en référence au bloc primaire la. La figure 10 représente un mécanisme de réserve permettant la mise en oeuvre des opérations décrites précédemment. Le mécanisme est utilisé avec un appareillage de traitement d'informations, par exemple une unité centrale 30 de traitement, et comporte une mémoire principale 32 qui a une largeur de un mot, une mémoire 34 de bit qui a une largeur de un bit et contient autant de bits que la mémoire principale contient de mots, et une mémoire 36 de réserve dont la largeur est suffisante pour qu'elle contienne une adresse de mémoire principale et un mot de données de la mémoire principale dans chaque mot de la mémoire de réserve. La mémoire de réserve 36 correspond à la mémoire 12 des figures 1 à 9 alors que la mémoire 32 et la mémoire 34 correspondent ensemble à la mémoire 10 des figures 1 à 9. Chacune des mémoires 32, 34 et 36 a trois lignes de commande, une ligne LIRE destinée à commander une opération de lecture, une ligne ECRIRE destinée à commander une opération d'écriture et une ligne PREP destinée à indiquer que la mémoire a terminé l'opération antérieure de lecture ou d'écriture. Les données sont transférées entre l'unité centrale 30 de traitement et les diverses mémoires 32, 34 et 36 par une ligne omnibus 38 qui contient huit trajets de donnés s ayant chacun un mot de largeur. Chaque trajet de données transporte un signe respectif P, Q, E, S, F, U, V et G et le dispose à l'entrée de six registres R, E, A, H, C et D et d'un bloc G de registres. Comme représenté sur la figure 11, chacun des registres R, E, A, H, C et D comprend un registre 40 à deux rangées (de type d) qui a une largeur d'un mot. L'entrée du registre 40 est reliée à la sortie d'un multiplexeur 42 à huit entrées. Chaque entrée a une largeur d'un mot et est reliée à un trajet respectif de la ligne omnibus 38 (figure 10). Le fonctionnement du multiplexeur 42 est commandé par des signaux du trajet 44 provenant du circuit logique de commande de l'appareil. Le trajet 44 transmet aussi une forme d'onde de commande qui est combinée à un signal provenant d'une horloge 47 par une porte intersection 46 qui transmet une forme d'onde d'échantillonnage pour le registre 40.Le flanc antérieur de la forme d'onde d'échantillonnage provoque la lecture par le registre 40 du signal provenant du multiplexeur 42, et le flanc postérieur de la forme d'onde d'échantillonnage provoque la présentation par le registre 40 de ce nouvel état à sa sortie. On se réfère maintenant à nouveau à la figure 10 sur laquelle le bloc G de registres reçoit un signal de mul tiplèxeur provenant de la ligne commune 38, comme dans le cas du multiplexeur 42. De plus, il contient cinq registres internes CM, CN, CO, CP et CQ et son entrée de sélection SELECT peut recevoir des signaux SELECT CM, SELECT CN, SELECT CO, SELECT CP et SELECT CQ. Le registre choisi est établi lorsque les données sont lues dans le bloc G et il présente son contenu à la sortie du bloc G lorsque les données doivent être lues. Le registre CM est utilisé pour contenir l'adresse du repère supérieur de pile dansla mémoire 36 de réserve. Ce repère contient l'adresse du repère suivant au-dessous de lui et ainsi de suite. Le repère inférieur contient une adresse qui permet son identification telle quelle. Le registre CP contient l'adresse du mot vide de la mémoire 36 qui se trouve juste au-dessus du mot le plus haut actuellement utilisé, c'est-à-dire la nouvelle adresse disponible dans la mémoire 36. Le registre CN contient une copie de la valeur antérieure conservée dans le registre CP, c'est-à-dire la-dernière adresse utilisée dans la mémoire 36. Celle-ci est utilisée dans l'opération de sortie. Le registre CO contient l'adresse d'un mot dans la région supérieure de la mémoire 36 et il est utilisé au cours de la troisième étape de l'opération de sortie pour l'explo- ration de la région supérieure de la mémoire de réserve comme décrit dans la suite. Le registre CQ contient l'adresse du mot le plus élevé dans la mémoire de réserve, disponible en vue d'une utilisation. Le registre R contient un mot de données qui doit être renvoyé à l'unité de centrale 30 de traitement. Le registre E contient l'adresse du repère supérieur de pile de la mémoire principale 32. Ce repère contient l'adresse du re père suivant de pile et ainsi de suite. Le repère inférieur de pile contient une adresse qui permet son identification telle quelle. Le registre A contient l'adresse en cours dans la mémoire principale. Il est utilisé pour adresser la mémoire de bit ainsi que la mémoire principale et son contenu peut être écrit d'un côté de la mémoire de réserve. Les signaux de sortie des registres E et A parviennent à un comparateur 48 qui transmet un signal Y de sortie lorsque le signal de sortie du registre A est supérieur à celui du registre E. Ainsi, le signal Y indique que l'adresse actuellement contenue dans le registre A est supérieure au repère supérieur et ainsi que la variable adressée par l'adresse dans le registre A est une variable locale pour le bloc de correction en cours. Le registre H contient les données qui doivent être écrites dans la mémoire principale 32. Le registre C contient l'adresse qui doit être utilisée pour la mémoire de réserve. De plus, sa sortie est reliée à l'entrée d'une unité 50 de progression-régression qui a une entrée de commande FUN destinée à recevoir l'un de quatre signaux de commande de manière que l'unité transmette un signal F de sortie qui dépend du signal C d'entrée comme indiqué dans le tableau Il. TABLEAU Il FUN F PROG C+1 REGR C-1 MEME C ZERO O Le registre D contient une partie des données qui doivent être écrites dans la mémoire 36, l'autre partie de ces données se trouvant dans le registre A. Les signaux de sortie des registres C et D sont transmis de plus à une unité 50 d'égalité quitransmet un signal Z lorsque les valeurs des deux registres C et D sont égales. En plus du registre R, le circuit d'interface avec unité centrale 30 comprend deux trajets P et Q de données. Le trajet P transmet l'adresse de la mémoire principale que veut atteindre l'unité centraletde traitement et le trajet Q transmet les données que l'unité 30 veut conserver ou qui doivent être introduites dans les registres du dispositif. Un trajet R de données formé à la sortie du registre R, transmet les données qui sont destinées à l'unité centrale 30. Le circuit logique de commande de 11 appareil est décrit maintenant en détail. Cependant, il est commode de considérer maintenant les signaux de commande qui passent entre le circuit logique de commande de l'appareil et l'unité centrale 30 de traitement. L'appareil a deux signaux de commande qutil peut transmettre à l'unité centrale 30. PREP indique que le dispositif a terminé ltopération demandée par l'unité 30 et ERREUR indique une condition d'erreur. L'unité centrale 30 de traitement est de type classique si bien que, lors de l'exécution des instructions, elle crée des signaux de commande dirigeant les opérations des mémoires classiques au cours des opérations de lecture et d'écriture. De plus, elle comprend un dispositif destiné à créer des signaux de commande de manière que l'appareil représenté sur la figure 10 réalise d'autres opérations ou actions relatives à l'utilisation des blocs de correction et aux essais d'acceptation dans les programmes.L'appareil peut ainsi recevoir un signal de commande choisi parmi treize provenant de l'unité centrale de commande si bien qu'ilpeut réaliser les actions suivantes: L'action LIRE correspondant à la mise en place de la valeur du mot qui doit être lu dans la mémoire 32 avec l'adresse virtuelle convenable L'action ECRIRE correspondant à l'enregistrement d'une nouvelle valeur pour une variable L'action ENTREE lors de l'entrée dans un bloc de correction L'opération INVERSE nécessaire lorsqu'un essai d'acceptation rejette un bloc L'action SORTIE à la fin d'un essai d'acceptation donnant un résultat positif L'action RETAB provoquant la remise du mécanisme dans l'état à partir duquel l'unité centrale de traitement a commencé à traiter un nouveau programme, et Sept opérations destinées à permettre l'accès de l'ensemble de commande de l'unité centrale de traitement aux divers registres E, CM, CP et CQ, par exemple en vue d'une multiprogrammation. Le circuit logique de commande du mécanisme de réserve représenté sur la figure 10 est maintenant décrit sous forme des états d'une machine en référence au tableau III. Une représentation des divers états d'une machine indique chaque état que peut commander le circuit logique de commande Ces états sont numérotés dans la colonne de gauche du tableau. Pour chaque état, la colonne centrale du tableau détermine les formes d'ondes de commande qui doivent être créées lorsque le circuit logique de commande est dans cet état. Les formes d'onde qui commandent le déclenchement dans les divers registres sont indiquées sous la forme P > A. Cette notation spécifie que les formes d'onde doivent etre créées à la fois pour provoquer l'introduction des données dans le registre A et pour provoquer la sélection de son entrée P correspondante par le multiplexeur. L'état suivant que le circuit logique de ccmmande est supposé prendre est spécifié dans la colonne de droite du tableau III. Lorsqu'un nombre unique apparaît dans cette colonne, il s'agit du numéro de l'état suivant quidoit être pris dans tous les cas. Lorsque le circuit de commande doit prendre différents états suivant la présence ou l'absence de formes d'onde qu'il peut détecter, cette possibilité est indiquée de la manière suivante Z - 3, Z ) 2 qui indique que, si la forme d'onde Z a une valeur 1, l'état suivant est l'état 2 alors que, si elle a une valeur 0, l'état suivant est l'état 3. Le circuit logique de commande passe d'un état au suivant à intervalles réguliers commandés par l'horloge 47 (figure 11). Après commutation, le circuit logique de commande est destiné à passer à l'état 1. TABLEAU III Etat Action Nouvel état Etats initial et final 1 LIRE ) 11 ECRIRE --- > 13 RETAB y 21 ETAB E --- > 31 LIRE E --- > 32 ETAB CP 33 LIRE CP --- > 34 ETAB CM --- > 35 LIRE CM --- > 36 ETAB CQ --- > 37 ENTREE + 41 INVERS ---d 51 SORTIE ---+ 61 autre signal ou pas de signal --- > 1 2 ERREUR RETAB + 2 RETAB --- > 21 3 PREPARATION 1 Lire 11 P --- > A 12 12 LIRE, A, S --- > R PREP A--- > 12 PREP A --- > 3 Ecrire 13 P--- > A, Q --- > H 14 SELECT CP, G - --- > C 14 LIRE A, LIRE B, S ---d D PREP A.PREP B --- > 14 PREP A.PREP B + 15 15 Y--- > 16. Y.X --- > 17 Y + X --- > 18 16 ECRIRE A, ECRIRE B, PREP A. PREP B. --- > 16 DESETAB PREP A. PREP B. --- > 3 17 ECRIRE A, ECRIRE B, ETAB PREP A. PREP B --- > --- > 17 PREP A. PREP B - w 3 18 ECRIRE A, ECRIRE B, ETAB PREP A. PREP B. PREP C ECRIRE C --- > 18 TABLEAU III (suite) PROG, SELECT CP,.F > G PREP A. PREP B.PREP C F --- 2 Gestion de commande de mémoire de réserve 21 ZERO, SELECT CM, F --- > G, F --- > E 22 22 ZERO, SELECT CN, F --- G 23 23 ZERO, SELECT CP, F --- > G 24 24 ZERO, SELECT CQ, F--- > G PREP 1 Entrée/sortie unité centrale de traitement 31 Q --- E, PREP 1 32 E --- > R 3 33 SELECT CP, Q --- > G, PREP 1 34 SELECT CP, G --- > R 3 35 SELECT CM, Q > G, PREP 36 SELECT CM, G --- > R 3 37 SELECT CQ, Q ---t G, PREP 1 Introduction bloc de correction 41 Q > E, SELECT CM G --- > C 42 42 SELECT CP G --- > D 43 43 PROG, F --- > C 44 44 Z > 45, Z Z--- > 47 45 LIRE C, U --- > A PREP C --- > 45, PREP C --- > 46 46 ECRIRE B, DEETAB PREP B 7 46, PREP B --- > 43 47 SELECT CM, G D 48 48 ECRIRE C, MEME, SELECT PREP C --- > 48, PREP C - 249 CM, F --- > C, F 49 PROG, SELECT CP, F --- > G 19 Reverse 51 Q E, SELECT CM, G y D 52 52 SELECT CP, G ---? C 53 TABLEAU III (suite) 53 REGR, F ---- > C 54 54 Z --- > 55, Z --- > 57 55 LIRE C, U ---+ > A V y H PREP C --- > 55, PREP C i 56 56 ECRIRE A, ECRIRE B, ~~~~~ DEETAB PREP k. PREP B --- > > 56 PREP A.PREP B - -- > 53 57 PROG, SELECT CP, F > G, PREP 1 61 SELECT CM, G --- > C, G b D, Q 3 E 62 62 MEME, SELECT CO, F --- > G 63 63 SELECT CP, G - C, MEME, F --- > G 64 64 SELECT CN, MEME, F 3 G 65 65 REGR, F ---y C 66 66 Z --- > 67, Z ---y 69 67 LIRE C, U ---+ A PREP C --- > 67, PREP C --- > 68 68 ECRIRE B, DEETAB PREP B - > 68, PREP B -) 65 69 LIRE C, SELECT CM, V --- > G, V --- > D PREP C --- > 69, PREP C --- > 70 70 REGR, F --- > C 71 71 Z--- > 72, Z--- > 74 72 LIRE C, U ---} A PREP C --- > 72, PREP C --- > 73 73 ECRIRE B, ETAB PREP B --- > 73, PREP B --- > 70 74 SELECT CO, G --- > C 75 75 PROG, F --- > C, SELECT CN, G A D 76 76 MEME, SELECT CO, F --- > G Z --- > 77, Z --- > 3 77 LIRE C, U --- > A, V -+ D PREP C --- > 77, PREP C --- > 78 78 LIRE B PREP B " 78, PREP B --- 75 80 SELECT CP, G , C, ECRIRE B, ETAB PREP B > 80, PREP B , 81 81 ECRIRE C PREP C --- > 81, PREP C --- > 82 82 PROG, SELECT CP, F --- > G 74 L'état 1 détecte les 13 signaux de commande provenant de l'unité centrale de traitement et commande l'action appropriée. L'état-2 est un état d'erreur qui assure le rétablissement de l'unité centrale 30 de traitement. Les états Il et 12 correspondent à l'action de lecture. L'adresse provenant de l'unité 30 est transmise au registre A lors de l'étape Il et la mémoire principale 32 est lue, le signal transmis étant introduit dans le registre R au cours de 11 état 12. Lorsque la mémoire 32 ne répond pas immédiatement, le circuit logique de commande reste dans L'état 12 jusqu'à ce qu'il obtienne une réponse. L'état 3 est utilisé par de nombreuses actions pour la transmission d'une réponse PREP à l'unité 30 et pour le retour à l'état 1. Les états 13 à 20 correspondent à l'action d'écriture. Les états 13 et 14 correspondent à la lecture de 1'in- dicateur du mot qui doit être écrit et aussi de son contenu dans le registre D dans le cas où le mot doit être conservé dans la mémoire 36. L'état 45.détermine si le mot adressé est local (état suivant 16) ou déjà conservé (état suivant 17) ou est attribué pour la première fois dans ce bloc de correction (état suivant 18). L'état 18-correspond aussi à l'enregistrement de la valeur antérieure du mot et de son adresse dans la mémoire 36, à la progression de la valeur de l'index de la mémoire de réserve et à son retour au registre interne CP dans le bloc G de registres.Les états 19 et 20 vérifient l'utilisation du dernier mot de la mémoire de réserve et peuvent créer une condition d'erreur le cas échéant. Les états 21 à 24 concernent les valeurs introduites dans les registres internes du bloc G. Les étapes 31 à 37 concernent la transmission des données à l'unité centrale 30 et par celle-ci. Les étapes 41 à 49 correspondent à l'opération d'entrée de bloc de correction. Les états 41 à 42 fixent les limites de la région supérieure de la mémoire de réserve dans les registres C et D. Les états 43 à 46 forment une boucle, provoquant le contact du registre C permettant ltexploration de la région supérieure de la mémoire de réserve, avec lecture de la partie d'adresse de chaque entrée dans la mémoire de réserve de manière que itindicateur de chaque mot correspondant de la mémoire principale soit rétabli. Comme un mot ne peut avoir son bit établi que lorsqu'il existe une entrée pour lui dans la région supérieure de la mémoire de réserve, cette opération rétablit tous les indicateurs de bit dans la mémoire 34.Les états 47 à 49 correspondent à ltécriture du contenu existant du registre CM dans la mémoire 36, permettant la formation d'un repère de pile et la création de nouvelles valeurs pour les adresses du repère supérieur de la mémoire de réserve (introduite dans le registre CM) et de la partie supérieure de la pile (introduite dans le registre CP). Les états 51 à 57 correspondent à l'opération inverse àltentrée d'un bloc de correction et sont utilisés pour-le rétablissement des valeurs des variables qui ont été modifiés s dans le bloc de correction après un essai d'acceptation donnant un résultat négatif. Les étapes forment une boucle qui correspond de façon générale à celle des états 41 à 46, mais cette fois, les valeurs de la mémoire de réserve, enregistrées dans la région supérieure de la mémoire 36, sont réécrites dans la mémoire principale de manière que les effets du bloc erroné soient effacés. L'état 57 règle index à la partie supérieure de la pile de réserve (conservé dans le registre CP). Les états 61 à 82 correspondent à liopération de sortie après un essai d'acceptation donnant un résultat positif. Les états 61 à 64 correspondent à la conservation dans les registres CN et CO de copies des entrées existantes dans les registres CP et CM respectivement en vue d'une utilisation ultérieure. Les états 61 à 64 établissent aussi le contenu du registre CM dans le registre CP et indiquent ainsi où sera la partie supérieure de la pile lorsque la région supérieure aura été retirée. Les états restants comprennent trois boucles. Les états 65 à 68 correspondent à l'exploration de la région supérieure de la mémoire de réserve vers le bas à partir du haut, désétablissant les bits indicateurs de tous les mots conservés dans la région supérieure de la mémoire 36, c'est-à-dire tous les bits indicateurs établis dans la mémoire 34.L'état 39 correspond à la lecture du repère de pile de réserve entre les deux régions supérieures de la mémoire 36, et enregistre celui-ci comme repère suivant dans le registre CM et aussi dans le registre D pour indiquer la partie inférieure de la seconde région de la mémoire de réserve. Les états 70 à 73 continuent à explorer la seconde région de la mémoire de réserve à partir du haut et établissent les indicateurs des mots conservés dans la seconde région dans la mémoire 34 (c'est-à-dire les indicateurs retirés par l'opération précédente d'entrée). Les états 74 à 79 correspondent à une analyse à nouveau de la région supérieure de la mémoire de réserve pour déterminer que les articles enregistrés dans la région supérieure sont soit actuellement locaux (indiqués par une forme d'onde Y), soit déjà présents dans la seconde région (indiquée par la forme d'onde X),soit doivent être copiés de la région supérieure de la mémoire de réserve dans la seconde région de celle-ci. Le registre CO contient un index inférieur d'une unité à l'adresse de l'entrée suivante qui doit être examinée dans la région supérieure et le registre CN contient un index supérieur d'une unité à l'adresse de l'entrée supérieure dans la région supérieure.Lorsque I'essai de l'étape 79 indique que l'entrée dans la mémoire de réserve n'est ni locale ni déjà conservée à ce niveau, les étapes 81 à 82 réécrivent l'entrée dans la mémoire 36 à l'adresse donnée par la partie supérieure de la pile (registre CP) qui progresse alors. Le bit indicateur du mot conservé est alors établi. La machine mettant en oeuvre les états indiqués peut être réalisée avec un matériel logique équivalent du type décrit par T.C. Bartee et Coll, "THEORY AND DESIGN OF DIGITAL MACHINES", McGraw Hill, 1962. Dans une variante, la commande de la machine peut être transformée en un microprogramme comme décrit par S.S. Husson, MICROPROGRAMMING, PRINCIPLES AND PRACTICE", Prentice Hall 1970. Dans une variante selon l'invention, un registre supplémentaire conserve un nombre indiquant le "niveau de correction en cours, c'est-à-dire la profondeur en cours de l'imbrication dynamique des blocs de correction ou, en d'autres termes, le nombre de régions de la mémoire de réserve (séparées par des repères de pile) actuellement utilisés. Ce registre progresse et régresse sous la commande des entrées et des sorties de blocs de correction. La mémoire 34 du mode de réalisation représenté sur la figure 10 est remplacée par une mémoire de niveau de correction destinée à conserver un mot de correction pour chaque valeur enregistrée dans la mémoire principale 32.Lorsqu'une variable est introduite dans la mémoire 36, la valeur et le niveau de correction conservés dans le mot correspondant de la mémoire de niveau de correction sont enregistrés de manière qu'une histoire de l'introduction antérieure de la variable dans la mémoire de réserve ou de la déclaration de celle-ci comme locale soit enregistrée à chaque introduction en réserve de la variable (c'est-à-dire lors de la conservation de cette variable et de son identité dans la région supérieure en cours de la mémoire 36). Lorsqu'une variable est déclarée et lorsqu'un emplacement dans la mémoire 32 lui est attribué, le niveau en cours de correction est introduit dans la partie correspondante de la mémoire de niveau de correction. Après introduction dans un bloc de correction, le registre de niveau de correction progresse d'une unité et un nouveau repère est placé dans la mémoire de réserve. Aucune action n'est réalisée sur la pile de données dans la mémoire principale. Après attribution d'une nouvelle valeur à unevariable, une recherche est d'abord faite et détermine si le niveau de correction de la variable dans la mémoire principale est égal au niveau en cours de correction. Si c'est le cas, la nouvelle valeur est introduite dans la mémoire principale et-aucune introduction n'est réalisée en réserve. La mémoire de niveau de correction est aussi laissée sans modification. Lorsque le niveau de correction de la variable n'indique pas le niveau de correction en cours, une nouvelle entrée est placée dans la mémoire de réserve. Cette entrée de réserve comprend l'identité, la valeur antérieure et le niveau antérieur de correction de la variable conservé dans la mémoire de niveau de correction. La nouvelle valeur est alors introduite dans la mémoire principale et le niveau de correction de la mémoire de niveau de correction est rendu égal au niveau en cours. Après rejet par un essai d'acceptation, les entrées dans la région supérieure de la mémoire sont traitées une par une, leurs valeurs et les domaines des niveaux de correction étant recopiés dans les emplacements de la mémoire principale et de la mémoire de niveau de correction respectivement, désignés par leurs identités. La mémoire de réserve est. ramenée jusqu'au repère de ce bloc de correction, mais sans.ce repère. Le niveau en cours de correction reste sans modification. Après satisfaction d'un essai d'acceptation, le registre de niveau de correction en cours diminue d'une unité.Les entrées dens la région supérieure de la mémoire de réserve sont traitées une par une. Les niveaux de correction des mots de la mémoire de niveau de correction correspondant aux adresses virtuelles des entrées dans la région supérieure de la mémoire de réserve sont établis à des valeurs égales au niveau courant de correction. Ainsi, lorsque le niveau de correction de l'entrée dans la mémoire de réserve est égal au niveau de correction en cours, l'entrée est rejetée. Dans le cas contraire, l'entrée est décalée d'une unité vers le bas dans la région suivante de la mémoire de réserve. La figure 12 est un diagrammé synoptique d'un appareil correspondant à la variante qui vient d'être décrite, mettant en oeuvre les niveaux de correction, et équivaut au diagramme synoptique de la figure 10. L'appareil de la figure 12 est destiné à être utilisé avec un appareillage de traitement d'informations, par exemple une unité centrale 70 de traitement. Il comprend une mémoire principale 72 qui a une largeur d'un mot, une mémoire de niveau 74 qui a une largeur suffisante pour qu'elle puisse contenir un numéro de niveau de correction et elle contient autant de mots que la mémoire principale, et une mémoire 76 de réserve dont la largeur lui permet de contenir un mot de la mémoire principale, l'adresse dans la mémoire principale et un numéro de niveau. Chacune des mémoires 72, 74 et 76 a trois lignes de commande, une ligne LIRE commandant une opération de lecture, une ligne ECRIRE commandant une opération d'écriture, et une ligne indiquant que la mémoire a terminé I'opération antérieure de lecture ou d'écriture. Les données sont transférées entre l'unité centrale 70 et les diverses mémoires 72,-74 et 76 par une li- gne commune 78 de données qui contient dix trajets de données ayant chacun une largeur d'un mot. Chaque trajet transmet un signal P, Q, S, T, E, F, U, V, W ou G et rend ces mots disponibles aux entrées de sept registres R, A, H, E, K, C, D cet d'un bloc G de registres. Les registres R, A, H, E, K, C et D sont du type représentésur la figure 11, mis à part que le multiplexeur a 10 entrées au leur de 8 seulement. Comme décrit précédemment, la nécessité de la conservation dlun paramètre en réserve est déterminée par les valeurs relatives du numéro du niveau courant de correction et du numéro du niveau de- correction de la variable en question. Le registre E est utilisé de manière qu'il contienne le numéro du niveau courant de correction. La valeur qu'il contient est mise à zéro lorsque l'appareil est remis au début d'une partie de programme et il est automatiquement réglé à l'entrée du bloc de correction et à la sortie de celui-ci, sans mise en oeuvre de l'unité centrale 70. Le registre K est utilisé de manière qu'il contienne le numéro du niveau de correction d'une variable dans la mémoire principale 72 ou dans la mémoire de réserve 76 lorsqu'une décision de mise en réserve d'une telle variable ou de conservation de l'entrée dans la mémoire de réserve doit être prise. Les signaux de sortie des registres E et K parviennent à une unité 80 d'égalité analogue à l'unité 52 de la figure 10 qui transmet un signal Y de sortie lorsque les va leurs conservées dans les registres E et K sont égales. Comme dans le cas de l'appareil de la figure 10, le bloc G comprend 5 registres internes CM, CN, CO, CP et CQ. Les fonctions de ces registres sont analogues à celles des registres correspondants du bloc G de la figure 10 et apparaissent clairement dans la description qui suit. Cependant, le registre CO est utilisé de plus au cours de l'opération inverse pour la conservation de la valeur du numéro du niveau courant de correction. Les registres R, A, H, C et D ont des fonctions analogues à celles des registres cprrespondants de l'ap- pareil de la figure 10, le registre R formant un mot de données qui doit être renvoyé à l'unite 70, le registre A conservant l'adresse dans la mémoire principale, le registre H conservant un mot de données qui doit être écrit dans la mémoire principale 72, le registre C conservant une adresse qui doit être utilisée pour la mémoire 76 de réserve et le registre D conservant des données qui doivent étre écrites dans la mémoire 76 de réserve. Le signal de sortie du registre C est transmis à l'entrée d'une unité 82 de progression-régression analogue à l'unité 50 de l'appareil de la figure 10. L'unité 82 a une entrée de commande FUN destinée à recevoir l'un de quatre de signaux de commande de manière que l'unité crée un signal F de sortie qui dépend du signal C d'entrée comme indiqué par le tableau Il. Le registre D contient une partie des données qui doivent être écrites dans la mémoire 36, les autres parties des données se trouvant dans les registres A et K. Les signaux de sortie des registres C et D sont transmis de plus à une unité 84 d'égalité qui transmet un signal Z de sortie lorsque les valeurs des deux registres C et D sont égales. En plus du registre R, le circuit d'interface avec l'unité 70 comprend deux trajets P et Q de données. Le trajet P transmet l'adresse dans la mémoire principale que veut atteindre l'unité centrale de traitement, et le trajet Q transmet les données que l'unité 70 veut conserver ou qui doivent être introduites dans les registres du dispositif. Un trajet R de données formé à la sortie du registre R, transmet les données destinées à l'unité centrale 70. Le circuit logique de commande du mécanisme de réserve représenté est décrit dans la suite en référence à des états pris par une machine comme représenté sur le tableau IV. La représentation des états indique chaque état que peut commander le circuit logique. Ces états sont nu mérités dans la colonne gauche du tableau. Pour chaque état, la colonne centrale du tableau indique les formes d'onde de commande qui doivent être créées lorsque le circuit logique est dans cet état. Les formes d'onde qui commandent la transmission aux-divers registres sont indiquées sous la forme P > A. Cette représentation indique que--les formes d'onde doivent être créées à la fois pour provoquer l'introduction des données dans le registre A et pour provoquer la sélection de son entrée P correspondante par le multiplexeur. L'état suivant que doit prendre le circuit logique de commande est spécifié dans la colonne de droite du tableau IV. Lorsqu'un nombre unique apparat dans cette colonne, il s'agit du numéro de I'état suivant qui doit être atteint dans tous les cas. Lorsque le circuit logique de commande doit prendre différents états suivant la présence ou l'absence de formes d'onde qu'il peut détecter, ce phé nomène est indiqué de la manière suivante Z > 3, Z ---E 2 qui indique que, lorsque la forme d'onde Z a la valeur 1, l'état suivant est l'état 2 alors que, lorsque la forme d'onde Z est à I1 état 0, l'état suivant doit etre l'état 3. Le circuit logique de commande passe d'un état au suivant à intervalles réguliers sous la commande d'une horloge associée aux registres R à G, analogue à lthorloge 47 (figure 11) du premier mode de réalisation. Après commutation, le circuit logique de commande est destiné à passer à l'état 1. TABLEAU IV Etat Action Nouvel état Etats initial et final 1 LIRE ---d 19 ECRIRE , 13 RETAB e --- > 21 ETAB E --- > 31 LIRE E --- > 32 ETAB CP - 33 LIRE CP --- > --- > 34 34 ETAB CM - --- > --- > 35 LIRE CM --- > 36 ETAB CQ y 37 ENTREE --- > 41 INVERS @ 51 SORTIE --- > 61 autre signal ou pas de signal ---+ 1 2 ERREUR RETAB > 2 RETAB --- > 21 3 PREP 1 Lire Il P --- > A 12 12 LIRE, A, S , --- > R PREP A ---+ 12 PREP A --- > 3 Ecrire 13 P --- > A, Q - H 14 SELECT CP, G --- > C 14 LIRE A, LIRE B, PREP A. PREP B e 14 S --- > D, T --- > K PREP A.PREP B 15 15 Y --- > 16 Y --- > 17 16 ECRXRE A PREP A --- > 16 PREP A --- > 3 17 ECRIRE A, ECRIRE B, ECRIRE CPREP . PREP B. PREP C--- > 17 PROG, SELECT CP, F - > G,FeC PREP A. PREP B. PREP C- > 18 18 SELECT CQ, G --- > D 19 19 Z e 3 Z --- > 2 Gestion de commande de mémoire de réserve 21 ZERO, F --- > E 22 22 ZERO, SELECT CM, F --- > G 23 23 ZERO, SELECT CN, F ---d G 24 24 ZERO, SELECT CP, F --- > G 25 25 ZERO, SELECT CQ, F --- > G, PREP 1 Entrée/sortie unité centrale de traitement 31 Q--- > E, PREP 1 32 E , R 3 33 SELECT CP, Q --- > G, PREP 1 34 SELECT CP, G --- > R 3 35 SELECT CM, Q t G, PREP 1 36 SELECT CM, G --- > R 3 37 SELECT CQ, G --- > G, PREP 1 Introduction bloc de correction 41 E --- > C 42 42 PROG, F --- > E, F --- > K 43 43 SELECT CP, G , C 44 44 SELECT CM, G --- > D 45 45 ECRIRE C, MEME, SELECT CM, PREP C --- > 45 F --- > G PREP C > 46 46 PROG, SELECTCP, F --- > C, F--- > G 19 Inversion 51 SELECT CO, E --- > G 52 52 SELECT CM, G 5 D 53 53 SELECT CP, G --- > C 54 54 REGR, F SC 55 55 Z --- > 56 Z > 58 56 LIRE C, U f A, V ---d H, PREP C " 56 W E PREP C > 57 57 ECRIRE A, ECRIRE B PREP A. PREP B , 57 PREP A.PREP B - --- > 54 58 PROG, SELECT CP, F ,G 59 59 SELECT CO, G --- > E 3 Sortie 61 E , C 62 52 REGR, C ---d E 63 63 SELECT CP, G --- > C, --- > D 64 64 SELECT CN, MEME, F --- > G 65 65 SELECT CM, G --- > C 66 66 LIRE C, SELECT CM, V ---- > G PREP C - > 66 PREP C + 67 67 SELECT CP, MEME, F --- > G 68 68 PROG, F ? C Z--- > 69 Z --- > 3 69 LIRE C, U ---5 A, V --- > D, PREP C '?69 W --- > K PREP C --- > 70 70 Y 71 Y --y 76 71 SELECT CO, MEME, F --- > G 72 72 SELECT CP, G , C 73 73 ECRIRE C PREP C 773 PREP C ---e.74 --- > 74 74 PROG, SELECT CP, F + G 75 75 SELECT CO, G --- > C 76 76 SELECT CN, G --- > D, PREP B ~ 76 ECRIRE B PREP B - 7 68 68 Les états 13 à 19 correspondent à l'action d'é- criture. L'état 14 provoque la lecture du contenu du mot qui doit être écrit et du numéro de niveau associé dans les registres D et K respectivement dans le cas où le mot doit être conservé. L'état 15 indique si le mot doit être conservé (état suivant 17) ou non (état suivant 16).L'état 18 correspond à l'écriture de la nouvelle valeur du mot et du numéro de niveau en cours de correction dans la mémoire principale et la mémoire de niveau respectivement, et lté- criture de la valeur antérieure et de l'adresse associée dans la mémoire principale et du numéro de niveau dans la mémoire de réserve. L'index de la mémoire de réserve progresse et revient au registre CP dans le bloc G. Les états 18 et 19 vérifient l'utilisation du dernier mot de la mémoire de ré serve et peuvent créer une condition d'erreur le cas échéant. Les états 21 à 25 correspondent à I'introduction de valeurs dans les registres internes du bloc G et au déclenchement du registre E de niveau courant de correction. Les états 31 à 37 concernent la transmission des données à l'unité centrale de traitement et par celle-ci. Les états 41 à 46 correspondent à l'opération d'entrée d'un bloc de correction. Les états 41 et 42 font avancer le numéro de niveau courant de correction et établissent la nouvelle valeur dans les registres E et K. Les états 43 à 46 écrivent le contenu existant du registre interne CM et du registre K dans la mémoire de réserve avec formation dtun repère de mémoire de réserve, et créent de nouvelles valeurs pour les adresses du repère supérieur de mémoire de réserve (introduite dans le registre CM) et de partie supérieure de la mémoire de réserve (introduite dans le registre C9) Les états 51 à 59 correspondent à l'opération inverse et sont utilisés pour le rétablissement des valeurs des variables qui ont été modifiées dans le bloc de correction après un résultat négatif dtun essai d'acceptation. L'état 51 conserve la valeur du registre E dans le registre interne CO. Les états 54 à 57 forment une boucle qui explore la région supérieure de la mémoire de réserve. Pour chaque mot de la région supérieure de la mémoire de réserve, les états 56 et 57 lisent l'adresse dans la mémoire principale d'une variable, sa valeur antérieure et son niveau antérieur de correction dans les registres A, H et E respectivement, et écrivent la valeur antérieure et le niveau de correction dans la mémoire principale et la mémoire de niveau respectivement. L'état 58 règle l'index à la partie supérieure de la pile de réserve (valeur conservée dans le registre CP). L'état 59 rétablit la valeur du niveau courant de correction dans le registre E. Les états 61 à 76 correspondent à l'opération de sortie après la fin de l'essai d'acceptation donnant un résultat positif. Les états 61 et 62 provoquent la régression du registre E de niveau courant de correction. Les états 63 et 64 conservent dans le registre CN l'entrée existante du registre CP en vue d'une utilisation ultérieure. Les états 65 et 66 lisent l'index du repère supérieur de réserve et l'introduisent dans le registre CM sous forme de l'adresse du repère supérieur de réserve après la fin de l'opération de sortie. L'état 67 correspond à l'introduction dans le registre CP de l'adresse de la partie supérieure de la mémoire de réserve, après retrait de la région supérieure. Les états 68 à 76 forment une boucle d'exploration de la région supérieure de réserve à partir du bas. L'état 69 lit un mot de la région supérieure de réserve, établit l'adresse dans la mémoire principale d'une variable, sa valeur antérieure et le niveau antérieur de correction dans les registres A, D et K respectivement. Dans l'état 70, le niveau antérieur de correction dans le registre K est comparé au niveau de correction du bloc de correction dont la sortie est en cors. Lorsque les numéros des niveaux de correction dans les registres K et E sont égaux (comme indiqué par la forme d'onde Y), l'entrée dans la mémoire de réserve, en cours d'examen, est écartée (état suivant 76). Lorsque les numéros de niveau sont inégaux, l'entrée dans la mémoire de réserve doit être copiée de la région supérieure dans la seconde région (état suivant 71).Le registre CO contient un index de l'entrée dans la mémoire de réserve en cours d'examen, et le registre CN conserve un index supérieur d'une unité à l'adresse de l'entrée supérieure dans la région supérieure. Lorsque l'essai de l'étape 70 indique que le niveau de correction de l'entrée examinée n'est pas égal au niveau de correction du bloc de correction pendant lequel la sortie est réalisée, les états 72 à 64 écrivent le contenu des registres A, D et K (c'est-à-dire une copie de l'entrée de réserve examinée) dans la mémoire de réserve à l'adresse donnée par la partie supérieure de la pile de réserve (registre CP) qui progresse alors.Dans l'état 76, le niveau de correction du bloc de correction pendant lequel la sortie est faite, est écrit dans le mot de mémoire de niveau associé à la variable dont l'entrée de réserve est traitée, si bien que le fait que le résultat global du bloc de correction subissant la sortie pour cette variable est celui d'une attribution dans le bloc de correction qui la contient, est enregistré. Une machine mettant en oeuvre les divers états indiqués peut être réalisée avec le matériel logique équivalent du type décrit par T.C. Bartee et coll, "THEORY AND DESIGN OF DIGITAL MACHINES McGraw Hill, 1962. Dans une variante, la commande de machine peut être réalisée par un microprogramme comme décrit par S.S. Husson MICROPROGRAMMING, PRINCIPLES AND PRACTICEn,Prentice Hall 1970. Le mode de réalisation qui vient d'être décrit, mettant en oeuvre des niveaux de correction, nécessite une capacité accrue de mémoire mais peut donner des opérations plus rapides que ensemble décrit en référence à la figure 10. On a décrit l'appareil précédent entièrement en référence à l'attribution de valeurs des variables à des emplacements de mémoire. Ces valeurs ont été corrigées simplement par inversion des attributions. De nombreuses opérations de programmation créent des résultats autres que par attribution, ou doivent conserver certains résultats même lorsque le traitement d'une opération est abandonnée et qu'une autre opération est tentée. Des exemples sont les opérations qui impliquent l'accès à des fichiers et des circuits d'interface d1entrée-sortie, des programmes de facturation, des tracés de diagnostics et des circuits d'interface d'utilisateurs qui ont des interactions mutuelles. Il est caractéristique de tels programmes que la correction d'erreur est plus complexe que l'inversion automatique des attributions, et il faut que le concepteur de programme puisse spécifier l'action appropriée de correction. Ce critère peut être satisfait par structuration des opérations nécessitant une opération spéciale de correction suivant des procédures appelées dans la suite du présent mémoire procédures correctrices.Une procédure correctrice n'est pas elle-mme un bloc de correction avec un essai d'acceptation et un autre bloc, mais son corps peut contenir un ou plusieurs blocs de correction. Une telle procédure peut déclarer ses propres variables dont les valeurs ne sont pas automatiquement rétablies par l'appareil selon l'invention dans le cas d'une erreur mais qu peuvent être rétablies par un programme de la procédure correctrice. Plusieurs procédures correctrices peuvent être associées les unes aux autres et peuvent se partager un jeu de variables propres. Une procédure correctrice possède trois points d'entrée. La première fois qu'une procédure correctrice est appelée dans un bloc de correction, l'appareil selon l'invention provoque l'introduction de la procédure dans son point d'entrée "sur" dont le rôle est de permettre à la procédure de conserver l'information qui sera nécessaire pour la réintroduction dans le cas d'une erreur dans le bloc de correction assurant l'appel. La procédure correctrice passe alors au point d'entrée "normal" dont le but est de remplir la fonction nécessaire pour la procédure, dans ltenvironnement d'appel. Après les indications ultérieures d'une procédure correctrice dans un bloc de correction, l'appareil provoque l'introduction de la procédure à son point "normal" d'entrée.Le troisième point d'entrée est le point "inverse" dont le but est de permettre la réintroduction de l'information, conservée pendant le premier appel du bloc de correction, lorsque l'appareil découvre que l'effet de la procédure correctrice doit être annulé. Un exemple de procédure correctrice est décrit dans la suite en référence au mode de réalisation de l'invention de la figure 10 avec une mémoire de bit, mais il faut noter que les procédures correctrices peuvent aussi être utilisées avec un appareil fonctionnant suivant la variante décrite précédemment. Le tableau V représente un bloc V de correction contenant un bloc supplémentaire VI de correction et une procédure correctrice VII ayant sa propre variable W et contenant un autre bloc VIII de correction. Les figures 13 à 15 sont analogues aux figures 1 à 9 et représentent les cas de la mémoire principale 10 et de la mémoire de réserve 12 à divers moments dans le bloc V de correction. TABLEAU TABLEAU V BLOC DE CORRECTION V PROCEDURE CORRECTRICE VII VARIABLE PROPRE W BLOC DE CORRECTION VIII BLOC DE CORRECTION VI APPEL DE VII La figure 13 représente la situation au début du bloc V. Les repères 60 et 62 de pile sont disposés dans la mémoire principale et la mémoire de réserve respectivement. Sur Sw la figure 14, lorsqutun programme parvient dans un domaine dans lequel la procédure correctrice VII est déclarée', un identificateur donnant accès à la procédure est placé sur la pile principale, sous forme de la variable propre W de la procédure. Une procédure correctrice peut évidemment avoir plus d'une variable et dans ce cas les noms de toutes ces variables propres sont introduits dans la mémoire 10 à-ce moment. Après entrée dans le bloc VI de correction, d'autres repères 64 et 66 de pile sont placés dans les mémoires 10 et 12 respectivement. Comme représenté sur la figure 15, lorsque la procédure correctrice VII est appelée pour la première fois (dans le bloc VI), l'indicateur correspondant au mot de la mémoire 10 contenant l'identificateur de procédure est déterminé comme étant effacé, indiquant que la procécure n'a pas été utilisée dans ce bloc de correction Le mécanisme de réserve établit alors 11 indicateur correspondant à l'identificateur VII dans la mémoire principale 10 et enregistre I'identificateur et son identité dans la mémoire 12. Le mécanisme de réserve provoque alors le passage de la procédure correctrice à son entrée sûre. La procédure correctrice obtient alors une nouvelle zone sûre" de la mémoire 12 dans laquelle elle enregistre l'information de correction. La procédure VII introduit alors ces blocs internes de correction qui assurent la mise en saleté des informations de correction et la fonction imposée par la procédure. Tout appel ultérieur à la procédure correctrice dans le bloc V rencontre l'indicateur dans I'identificateur déjà établi. La procédure correctrice passe alors au point normal d'entrée, sans action particulière. Cependant, lorsque le programme a introduit un autre bloc de correction dans le bloc VI avant d'appeler à nouveau la procédure VII, l'indicateur de son identificateur a été effacé et un jeu supplémentaire d'informations de correction doit être enregistré dans la mémoire 12 de manière qu'il corresponde au nouveau bloc de correction 'dans lequel la correction peut être nécessaire. Après une sortie satisfaisante du bloc de correction, l'identificateur et sa zone associée de sécurité dans la mémoire de réserve sont traités par le mécanisme de réserve comme tout autre variable enregistrée dans cette mémoire. Ils sont transférés d'une région de réserve à la suivante, avec rétablissement de l'indicateur de l'identificateur de la pile principale jusqu'à ce que les variables deviennent locales ou que l'identificateur soit déjà présent dans cette région.Dans les blocs de correction qui se trouvent dans la procédure correctrice, les variables propres de la procédure et les variables de 'la zone de sécurité de la mémoire de réserve sont considérées comme non locales et peuvent être rétablies de la même manière que toute autre variable en cas d'erreur, mais, lorsque l'essai d'acceptation du bloc VIII de correction est satisfait, au cours de la sortie de ce bloc de correction, ces variables sont considérées comme locales dans le bloc suivant de correction quelle que soit la position dans la mémoire 10 et les valeurs réservées antérieurement sont donc rejetées. Ainsi, la sortie de la procédure VII rend efficacement permanente toute attribution aux variables propres et la correction ultérieure ne peut être réalisée que par le programme de correction contenu dans la procédure correctrice.Cependant, toute attribution faite par la procédure à des variables non locales, soit directement, soit par l'intermédiaire d'un mécanisme paramétrique quelconque, est traitée normalement et en conséquence peut être défaite par le mécanisme de réserve. Après une erreur, la région supérieure de la pile de réserve est traitée de manière classique, et lorsque l'identificateur de la procédure correctrice est rencontré, le mécanisme de réserve appelle le point d'entrée inverse de la procédure. Ce point d'entrée inverse peut mettre en oeuvre un bloc de correction, d'autres appels de procédure et d'autres blocs de correction, et tout autre traitement nécessaire au rétablissement des variables propres aux valeurs convenables. Dans la description qui précède, on a supposé que les divers articles d'information ont la même dimension que le mot de la mémoire principale. L'invention convient aussi aux cas dans lesquels les articles ont une longueur inférieure à celle d'un mot, et dans ce cas, une attribution à une seule unité d'information provoque la mise en réserve de l'ensemble du mot. - L'invention concerne aussi les articles d'information de longueur supérieure à celle d'un mot et dans ce cas plusieurs mots doivent être cachés pour la conservation de la valeur d'un article d'information. Il est bien entendu que l'invention n'a été décrite et représentée qu'à titre 'exemple préférentiel et qu'on pourra apporter toute équivalence technique dans ses éléments constitutifs sans pour autant sortir de son cadre, qui est défini dans les revendications annexées. REVENDICATIONS 1. Appareil de traitement de données formant un jeu de blocs de programme, comprenant une première mémoire destinée à conserver les états les plus récents d'articles d'information, ledit appareil étant caractérisé en ce qu'il conserve les états qu'a pris chacun des articles d'information juste avant le début de chaque bloc, lorsque ces articles changent d'état au cours du bloc, si bien que les états de ces articles, existant au début du bloc, peuvent être rétablis le cas échéant, et l'appareil comprend une seconde mémoire destinée à conserver les états antérieurs des articles, un dispositif destiné à remettre le cas échéant la mémoire dans les états correspondant au moment qui précède immédiatement l'entrée dans un bloc en cours de programme, ce dispositif de remise en état comprenant un dispositif destiné à écarter de la mémoire principale les articles conservés au cours du bloc en cours de programme, et un dispositif de transfert de la seconde mémoire à la première des états conservés dans la seconde mémoire pour le bloc immédiatement précédent des articles qui sont rejetés de la première mémoire, l'appareil comprenant de plus un dispositif destiné à faire progresser le cas échéantles états de la mémoire et comprenant un dispositif destiné à écarter de la seconde mémoire au moins les articles d'information appartenant localement au bloc immédiatement précédent de programme et les articles d'information pour lesquels des entrées existent déjà dans la seconde mémoire dans le bloc imm'dia- tement précédent. 2. Appareil selon la revendication 1, caractérisé en ce qu'il comprend un dispositif de transfert de l'étage précédent d'un article d'information de la première mémoire à la seconde lorsque l'état de cet article dans la mémoire varie au cours du bloc de programme en cours. 3. Appareil selon la revendication 2, caractérisé en ce que le dispositif de transfert fonctionne pour le premier changement d'état seulement d'un article au cours du bloc en cours. 4. Appareil selon l'une des revendications 2 et 3, caractérisé en ce qu'il comprend un dispositif destiné à associer un indicateur à chaque article conservé dans la première mémoire et destiné à indiquer si un état précédent de l'article est déjà-conservé dans la seconde mémoire dans le bloc en cours. 5. Appareil selon la revendication 4, caractérisé en ce que la présence d'un indicateur inhibe le fonctionnement du dispositif de transfert. 6. Appareil selon l'une quelconque des revendications précédentes, destiné au traitement de données formant un jeu imbriqué de blocs de programme, caractérisé en ce qu'il comprend un séparateur assurant la séparation des articles d'un bloc successif d'un jeu de blocs imbriqués, et des articles d'un bloc précédent du jeu, le séparateur étant associé à la première et à la seconde mémoire. 7. Appareil selon les revendications 4 et 6 prises ensemble, caractérisé en ce que l'indicateur indique aussi la profondeur d'imbrication d'un bloc en cours dans le jeu de blocs imbriqués. 8. Appareil selon l'une quelconque des revendications précédentes, caractérisé en ce que la première et la seconde mémoire sont des mémoires à pile.