FR 2771526 A1 19990528 FR 9714899 A 19971127 Titre: ARCHITECTURE POUR LA GESTION DE DONNEES VITALES DANS UNE MACHINE MULTI-MODULAIRE ET PROCEDE POUR LA MISE EN OEUVRE D'UNE TELLE ARCHITECTURE La présente invention concerne une architecture pour la gestion de données vitales dans une machine multi-modulaire de traitement de données numérique. Elle concerne également un procédé de gestion de données vitales pour la mise en oeuvre d'une telle architecture. Dans le cadre de l'invention, le terme "vital" s'applique à des données essentielles au bon fonctionnement de tout ou partie de la machine, ou de ses modules. De façon plus générale, il s'agit de toutes données que l'utilisateur de la machine désire conserver ou protéger, même en cas de dysfonctionnement d'une partie de cette machine. Les machines de traitement d'informations numériques dites "multi- modulaires" sont composées à partir de "briques" ou modules de base identiques et interconnectés de façon appropriée pour pouvoir communiquer entre eux. Dans un but de simplification, les "machines de traitement d'informations numériques multi-modulaires" seront appelées ci-après "machines". Pour le type de machine précité, une des premières exigences rencontrées est que, même si un module devient défectueux, les données vitales puissent être récupérées. Dans l'art connu, il existe des machines dites "de haute fiabilité" permettant la protection des données. Elles présentent une grande redondance matérielle. Plusieurs éléments identiques sont reliés entre eux. En d'autres termes, ces machines utilisent des mécanismes matériels pour répliquer les données et assurer leur cohérence. Si le résultat obtenu est tout à fait conforme à ce que l'on peut attendre de ces dispositions, ces machines présentent cependant un inconvénient majeur: leur coût est élevé, du fait précisément de la redondance en matériel, et leur architecture matérielle est complexe. Or, dans la plupart des cas, I'utilisation d'une solution coûteuse ne se justifie pas. Tout au contraire, même si une certaine redondance peut rester nécessaire, il s'avère de plus en plus que la réduction du prix de revient (fabrication, matériel utilisé, etc.) est une exigence incontournable. Le prix du matériel a d'ailleurs fortement chuté ces dernières années, alors que les performances des machines ont, pour leur part, fortement augmentées. L'invention se fixe pour but de pallier les inconvénients des o10 dispositifs de l'art connu, tout en répondant au mieux aux exigences qui se font jour. Le procédé selon l'invention permet d'assurer l'intégrité des informations vitales. Elle propose une architecture particulière de machine pour la gestion de données vitales et un procédé de gestion de ces données vitales. Pour ce faire, on munit chaque module d'une mémoire non-volatile dans laquelle des données vitales sont enregistrées, selon une organisation qui sera précisée ci-après. Il s'agit d'une mémoire du type connu sous l'abréviation anglo- saxonne "NVRAM" (pour "Non-Volatile Random Access Memory"). Ce type de mémoire permet une lecture, mais aussi une écriture rapide de données. Elle est secourue par une alimentation électrique permanente, à piles ou batteries, de sorte qu'elle continue de fonctionner lorsque la machine est hors tension ou en cas de panne secteur. Elle conserve donc les données enregistrées, en I'occurrence les données vitales précitées. Cette mémoire est distincte des autres mémoires: mémoire fixe ("ROM") ou vive ("RAM"). Ces mémoires constituent un ensemble de mémoires non-volatiles locales dites "physiques" et cet ensemble est vu par le système d'exploitation de la machine, ou une extension de celui-ci, comme une mémoire non- volatile à adressage virtuel unique. Chaque mémoire locale physique comprend deux parties: une première partie emmagasine une copie de données vitales dites "globales", une seconde partie emmagasine des données "privées" locales. Il en est de même de l'espace d'adressage virtuel: une première partie est constituée par ce qui sera appelée une "mémoire non-volatile virtuelle globale", les données vitales globales étant "vues" une seule fois; une seconde partie est constituée par ce qui sera appelée "mémoire non-volatile virtuelle locale". Le procédé de gestion comprend deux phases principales: une première phase, au démarrage de la machine, pendant laquelle l'état des to modules et de leurs mémoires est vérifié, et une seconde phase, lorsque le système d'exploitation est lancé, pendant laquelle l'accès à la mémoire à adressage virtuel est assuré ainsi que la cohérence des mémoires non- volatiles physiques. L'invention a donc pour objet une architecture pour la gestion de données vitales dans une machine de traitement d'informations numériques multi-modulaire, ladite machine comprenant un nombre maximum prédéterminé de modules, caractérisée en ce que chacun desdits modules comprend une mémoire non-volatile physique dans laquelle sont enregistrées lesdites données vitales. L'invention a encore pour objet un procédé de gestion de données vitales pour la mise en oeuvre de cette architecture. L'invention présente de nombreux avantages et répond bien aux buts qu'elle s'est fixés, car, tout en assurant l'intégrité des données vitales, elle ne nécessite qu'un très faible accroissement de la quantité de matériel utilisé: essentiellement la présence dans chaque module d'une mémoire non-volatile de capacité peu élevée. La redondance sticto sensu se limite à la réplication des données dites "globales" dans chaque module. L'invention sera mieux comprise et d'autres caractéristiques et avantages apparaîtront à la lecture de la description qui suit en référence aux figures annexées, parmi lesquelles: - la figure 1 illustre de façon simplifiée une architecture de machine de traitement de données numériques multi-modulaire conforme à l'invention; - la figure 2 illustre schématiquement une mémoire non-volatile à adressage virtuel permettant un accès à des mémoires non-volatiles physiques comprises dans chaque module de l'architecture de la figure 1; - et la figure 3 illustre schématiquement les différentes couches de logiciel dont est munie la machine de traitement de données numériques multi- modulaire de la figure 1. La figure 1 illustre une architecture de machine multi-modulaire 1 io conforme à l'invention, pour la gestion des données vitales. La machine 1 comprend n modules, référencés M1,..., Mx,..., Mn. Chaque module, outre les organes habituels (non représentés), telle qu'une unité centrale, une mémoire vive, etc., comprend également, conformément à une caractéristique importante de l'invention, une mémoire non-volatile spécifique: NVM1,... NVMx,..., NVMn. Comme il a été indiqué précédemment, il s'agit avantageusement de mémoires de type "NVRAM", secourues par des sources d'alimentation électrique permanente 2, par exemple des piles ou des batteries rechargeables. Selon une autre caractéristique importante de l'invention, chaque mémoire non volatile, que l'on qualifiera de "physique", puisqu'il s'agit bien d'un circuit matériel, est découpée en deux zones d'emplacements de mémoires, c'est-à-dire des adresses physiques. Une première zone de chaque mémoire non-volatile est affectée à une copie de données vitales globales. Ces zones sont référencées G1, ., Gx,..., Gn. Ces données vitales globales sont..DTD: associées au fonctionnement de la machine considérée dans son ensemble. Une seconde zone de chaque mémoire non-volatile est affectée à l'enregistrement de données privées, locales au module en question. Ces zones sont référencées L1,.... Lx,..., Ln. Ces données sont relatives à I'exploitation propre à chaque module. Les contenus des premières zones, G1 à Gn, doivent tous être identiques. Il s'agit d'une copie, ou partie répliquée dans chaque module, M1 à Mn, chargée lors d'une phase initiale. Les données vitales globales consistent, à titre d'exemple non limitatif, en des informations telles que l'adresse réseau de la machine, s'il existe plusieurs connexions possibles, la première adresse réseau, le nom du système, le périphérique à partir duquel on initialise la machine ("boot") et des options associées, etc. Vu du système d'exploitation, ou plus précisément, comme il le sera o10 montré ci- après, d'une extension spécifique de ce système d'exploitation 7, l'ensemble des mémoires physiques non-volatiles NVM1 à NVMn, constitue un espace d'adressage virtuel unique continu Av, comme illustré par la figure 2. Les octets sont adressables dans une tranche s'étageant d'une adresse Ao à une adresse An+l, I'adresse Ao étant a priori l'adresse 0. La taille maximale de i5 cet espace mémoire virtuel Av dépend de la configuration maximale de la machine 1, notamment du nombre maximum de modules M1 à Mn, et de la quantité de données vitales, locales et globales. De façon analogue aux mémoires non-volatiles physiques NVM1 à NVMn, la mémoire virtuelle Av comprend également deux parties. La première partie est constituée par une plage FG, d'adresses Ao à A1, permettant l'accès aux données vitales globales. En effet, les données globales ne sont "vues" qu'une seule fois par le système d'exploitation, via son extension 7, puisque seules les données vitales globales sont copiées (dupliquées) dans chaque mémoire locale physique NVM1 à NVMn. Cette partie de la mémoire virtuelle Av sera appelée "mémoire nonvolatile virtuelle globale" MVG. De façon analogue, la seconde partie de la mémoire virtuelle est appelée "mémoire virtuelle non-volatile locale" MVL. Le nombre de "fenêtres" ou tranches élémentaires d'adressage est égal au nombre maximum de modules M1 à Mn, que peut comprendre la machine 1, par exemple n si la configuration représentée sur la figure 1 est la configuration maximale, un nombre plus grand dans le cas contraire. Sur la figure 2, les tranches d'adresses sont référencés A1-A2, A2-A3, A3-A4,.... Ax-Ax+1l..., An-An+l, pour les fenêtres correspondant aux données vitales locales, FL1, FL2, FL3,..., FLx,..., FLn, respectivement. Le mécanisme 4 d'affectation d'adresses, dans l'espace virtuel Av est un mécanisme classique, connu per se, qu'il n'est pas utile de décrire plus avant. Il doit être bien entendu par ailleurs que, si la configuration io d'adressage illustrée par la figure 2 est avantageuse, elle n'est pas la seule possible. A titre d'exemple, la zone de mémoire virtuelle MVG, correspondant aux données vitales globales pourrait tout aussi bien être localisée en zone d'adresses hautes. Selon l'invention, si un module quelconque, Mx (ou pour le moins la mémoire non-volatile physique qui lui est associée, NVMx) est défectueux, tombe en panne ou n'existe pas (configuration matérielle réelle de la machine inférieure à la configuration maximale), sa fenêtre d'adressage FLx, reste ou devient inaccessible, dans l'espace mémoire virtuel correspondant à la "mémoire non-volatile virtuelle locale" MVL. Dans tous les cas cela signifie que le module en question n'est pas ou plus accessible. On va maintenant décrire la procédure proprement dite destinée à assurer l'intégrité des données vitales. Selon le procédé de l'invention, cette procédure comprend deux phases principales. La première phase ou phase initiale est relative à la période de démarrage ou de redémarrage de la machine 1. La figure 3 illustre de façon schématique les couches de logiciels associées à la machine 1: des couches profondes, constituées par un micrologiciel ("firmware") standard 5 et un micrologiciel spécifique 6, c'est-à- dire de micro-instructions, deux couches intermédiaires, constituées par un logiciel spécifique 7, appelé "couche d'abstraction" (qui sera décrit ci-après), le système d'exploitation 3, et une couche supérieure constituée par les logiciels 8 d'application ou d'utilisateur. La couche de micrologiciel 6, dite "spécifique" complète la couche de micrologiciel 5, que l'on peut appeler standard, même si cette dernière est d'un type dit "propriétaire". En effet, que les mécanismes propres à l'invention soient implantés ou non, la seule différence au niveau des couches profondes est constituée par la présence ou non de cette couche de micrologiciel spécifique 6. En d'autres termes, il n'est pas nécessaire de modifier la couche standard 5. La fonction de la couche de micrologiciel spécifique 6 est de vérifier, au moment du démarrage, c'est-à-dire avant que le système d'exploitation 3 soit lancé, I'état des mémoires non-volatiles physiques NVM1 à NVMn, notamment si les sommes de contrôle des blocs de données sont correctes. De façon encore plus spécifique à l'invention, le micrologiciel spécifique 6 compare le contenu des premières zones de mémoire, G1 à Gn, des mémoires non-volatiles physiques, NMV1 à NMVn, c'est-à-dire les zones afférentes aux données vitales globales, de manière à déterminer si leurs contenus sont identiques. Si le micrologiciel spécifique 6 trouve des erreurs, c'est-à-dire des discordances, il existe deux modes principaux de correction d'erreurs, comme indiqué ci-dessous. Pour une option que l'on appellera "à haute disponibilité", on prévoit un mécanisme (non représenté), classique en soi, de vote majoritaire. S'il existe une ou plusieurs mémoires dont le contenu de la première zone (par exemple le contenu de la zone Gx pour une mémoire MVNx, de rang arbitraire x) n'est pas conforme à celui obtenu par le vote majoritaire, cette ou ces mémoire(s) est (sont) déclarée(s) "minoritaire(s)". Elle(s) est (sont) ré- initialisée(s) de manière à réécrire le contenu de la première zone (par exemple Gx, si la seule mémoire défaillante est NMVx) et de le rendre conforme à celui obtenu par le vote majoritaire. Cette opération est effectuée sous le contrôle et la commande du micrologiciel spécifique 6. Il est à noter que ce mode opératoire ne nécessite pas de matériel supplémentaire, c'est-à-dire une redondance matérielle, le vote majoritaire pouvant être réalisé par des opérations logicielles. Pour une option que l'on appellera "de haute sécurité", le micrologiciel spécifique 6 ne corrige pas automatiquement les erreurs lui- même. L'action réalisée consiste en une simple détection d'un état "erreur détectée", état qui est transmis à un opérateur humain (non représenté) sous la forme d'un message, par exemple visuel (voyant sur une console opérateur, etc.). C'est l'opérateur qui décide alors de la suite à donner à l'incident détecté et effectue manuellement les opérations de correction d'erreur, c'est-à-dire modifie sélectivement le contenu d'une ou plusieurs mémoires non-volatiles physiques, NVM1 à NVMn. Il est clair que ce processus est plus lent que le processus précédent, mais il offre une plus grande sûreté de fonctionnement. En effet, dans le cas d'une seule mémoire déclarée "minoritaire" dans une configuration comprenant un grand nombre de mémoires non-volatiles physiques, il est très probable, selon les lois de la statistique, que ce soit cette mémoire qui soit en erreur. Cependant, cette probabilité diminue fortement, d'une part lorsque le nombre total de modules, donc de mémoires non-volatiles, est faible, d'autre part, lorsque la proportion de mémoires "minoritaires" est proche de celle des mémoires "majoritaires". En d'autres termes, le nombre de mémoires en erreur peut, dans des circonstances a priori exceptionnelles, être plus important que celui des mémoires à contenu correct. Dans ces dernières circonstances, le vote majoritaire conduit à une correction erronée du contenu des premières zones G1 à Gn, de toutes les mémoires non- volatiles physiques NVM1 à NVMn. Il en résulte que tout ou partie des données vitales globales est alors perdu. La "mémoire non-volatile virtuelle globale" MVG, c'est-à-dire les données vitales globales (fenêtre FG), vues du système d'exploitation 3, est alors également en erreur. Si une ou plusieurs mémoires en erreur ne peu(ven)t être ré- initialisée(s), cela signifie que cette (ces) mémoires (est) sont défectueuse(s). Le ou les module(s) module(s) est (sont) arrêté(s), et la ou les fenêtre(s) est (sont) inaccessible(s) dans l'espace d'adressage virtuel Av de la mémoire virtuelle locale MVL. Lorsque le système d'exploitation 3 est lancé, c'est-à-dire pendant le régime de fonctionnement normal de la machine 1, se déroule la deuxième phase de la procédure destinée à assurer l'intégrité des données vitales du procédé selon l'invention. Pour ce faire, une deuxième pièce de logiciel spécifique est mise en oeuvre. Il s'agit d'une couche de logiciel intermédiaire, que l'on appellera "couche d'abstraction" qui prolonge les fonctions du système d'exploitation 3 et assure les interfaces nécessaires avec ce dernier. C'est cette couche, constituant une extension du noyau ("kernel"), qui est en charge de fournir l'accès à la mémoire à adressage virtuelle (figure 2). Elle assure en outre la cohérence parmi les mémoires non-volatiles physiques NMV1 à NMVn. Ces dispositions permettent de ne pas modifier le système d'exploitation standard de la machine 1, tout en assurant le fonctionnement correct des mémoires physiques non volatiles NMV1 à NMVn, et l'adressage virtuel de ces mémoires, selon le procédé de l'invention. Le logiciel spécifique 7 assure aussi la surveillance des mémoires physiques non-volatiles NVM1 à NVMn, et l'intégrité des données enregistrées dans ces mémoires. Pour fixer les idées, si le système d'exploitation 3 est un environnement UNIX (marque déposée) ou similaire, les opérations précitées peuvent s'effectuer sous le contrôle de "demons" qui tournent en permanence. Lorsqu'une erreur est détectée, selon sa gravité, deux types de mesures peuvent être pris. S'il s'agit d'une erreur fatale, le ou les modules ayant causé l'erreur est (sont) arrêté(s), voire dans certains cas très graves la machine complète. Si un ou plusieurs modules sont arrêtés, conformément à l'invention, leurs fenêtres d'adressage cessent d'être visibles. Le système d'exploitation 3 est interfacé avec le micrologiciel spécifique 6 qui met à sa disposition une structure de données qui contient, notamment: - la spécification du nombre maximum de modules (figure 1: M1 à Mn), c'est-à-dire la configuration maximale de la machine 1); - la description du découpage de l'espace d'adressage de la mémoire virtuelle AV; - et des informations suffisantes pour accéder à la couche de logiciel spécifique 7 ou couche dite "d'abstraction" qui permet de lire et écrire la o10 mémoire à adressage virtuel AV. A la lecture de ce qui précède, on constate aisément que l'invention atteint bien les buts qu'elle s'est fixés. Il doit être clair cependant que l'invention n'est pas limitée aux seuls exemples de réalisations explicitement décrits, notamment en relation avec les figures 1 à 3. REVENDICATIONS 1. Architecture pour la gestion de données vitales dans une machine de traitement d'informations numériques multi-modulaire (1), ladite machine comprenant un nombre maximum prédéterminé de modules (M1- Mn), caractérisée en ce que chacun desdits modules (M1-Mn) comprend une mémoire non-volatile physique (NVM1-NVMn) dans laquelle sont enregistrées lesdites données vitales. 2. Architecture selon la revendication 1, caractérisée en ce que lesdites mémoires non-volatiles physiques (NVM1-NVMn) sont des mémoires à accès aléatoires secourues par une source d'alimentation électrique permanente, de manière à conserver lesdites données vitales lorsque ladite machine (1) est mise hors tension ou en cas de panne d'alimentation électrique de cette machine (1). 3. Architecture selon la revendication 1 ou 2, caractérisée en ce que chacune desdites mémoires non-volatiles physiques (NVM1-NVMn) est divisée en des première (G1-Gn) et seconde (L1-Ln) zones de positions de mémoire, et en ce que ladite première zone (G1-Gn) est destinée à l'enregistrement de données vitales globales, associées au fonctionnement de la machine (1), ces données étant répliquées, d'une mémoire non-volatile physique à l'autre, et identiques lorsque tous les modules sont dans un état de fonctionnement correct, et ladite seconde zone (L1 -Ln) est destinée à l'enregistrement de données vitales locales, dites privées, associées au fonctionnement du module particulier (M1-Mn) dans lequel est comprise ladite mémoire non-volatile physique locale (NVM1-NVMn). 4. Architecture selon la revendication 3, caractérisée en ce qu'elle comprend un organe d'adressage (4) d'un espace continu d'adresses virtuelles (Av), constitué d'une première mémoire non- volatile (MVG) à adressage virtuel rendant accessible lesdites données vitales globales, sous la forme d'un espace d'adressage virtuel unique (FG), et une seconde mémoire non-volatile (MVL) à adressage virtuel, rendant accessibles lesdites données vitales locales, sous la forme d'une série de fenêtres d'adresses virtuelles contiguës (FL1-FLn), les fenêtres étant en nombre égal audit nombre maximum prédéterminé de modules (M1-Mn), une fenêtre (FL1-FLn) associée à un module déterminé (M1-Mn) n'étant pas accessible lorsque celui-ci est défectueux ou inexistant dans ladite machine (1). 5. Procédé mettant en oeuvre l'architecture selon l'une quelconque des revendications 1 à 4, caractérisé en ce qu'il comprend une étape initiale de chargement desdites mémoires non-volatiles physiques (NVM1-NVMn) par des données vitales. 6. Procédé selon la revendication 5, caractérisé en ce qu'une io première zone de positions mémoires (G1-Gn) desdites mémoires non- volatiles physiques (NVM1-NVMn) est chargée avec des données vitales globales associées au fonctionnement de ladite machine (1) et une seconde zone de positions mémoires (L1-Ln) est chargée avec des données vitales locales, dites privées, associées au fonctionnement du module particulier (M1 -Mn) dans lequel est comprise ladite mémoire non-volatile physique locale (NVM1NVMn). 7. Procédé selon la revendication 6, caractérisé en ce qu'il comprend une étape de formation d'un espace continu d'adresses virtuelles (Av), constitué d'une première mémoire non-volatile (MVG) à adressage virtuel rendant accessible lesdites données vitales gfobales, sous la forme d'un espace d'adressage virtuel unique (FG), et une seconde mémoire à adressage virtuel (MVL), rendant accessibles lesdites données vitales locales, sous la forme d'une série de fenêtres d'adresses virtuelles contigues (FL1-FLn), et une étape de détection des modules défectueux ou inexistants (M1 -Mn) dans ladite machine (1) rendant inaccessibles, dans l'espace d'adressage virtuel de la mémoire non-volatile virtuelle locale (MVL), les fenêtres d'adresses virtuelles (FL1-FLn) associées aux mémoires non-volatiles physiques (NVM1-NVMn) de ces modules (M1-Mn). 8. Procédé selon la revendication 7, caractérisé en ce qu'il comprend une phase initiale consistant, lors du démarrage de ladite machine (1), à vérifier le bon fonctionnement desdites mémoires non- volatiles physiques (NVM1-NVMn), de manière à détecter lesdits modules défectueux (M1 -Mn). 9. Procédé selon la revendication 8, caractérisé en ce que ladite phase initiale comprend une étape consistant à comparer le contenu desdites premières zones d'adresses (G1-Gn) de toutes les mémoires non- volatiles physiques (NVM1-NVMn) existantes de ladite machine (1) et à générer une condition d'erreur en cas de détection d'au moins une divergence. 10. Procédé selon la revendication 9, caractérisé en ce que, lors d'une détection d'erreur, un vote majoritaire entre les contenus desdites premières zones (G1-Gn) de toutes les mémoires non- volatiles physiques (NVM1-NVMn) est effectué, et en ce que, suite audit vote, le contenu des premières zones d'adresses des mémoires minoritaires est ré-initialisé en y chargeant le contenu des premières zones d'adresses des mémoires majoritaires, de manière à supprimer ladite condition d'erreur. 11. Procédé selon la revendication 9, caractérisé en ce que, ladite machine (1) étant sous le contrôle d'un opérateur humain, un message est transmis à cet opérateur signalant ladite condition d'erreur, de manière à ce que ladite erreur détectée soit réparée manuellement. 12. Procédé selon l'une quelconque des revendications 9 à 11, caractérisé en ce que ladite phase initiale se déroule sous la commande d'un micrologiciel spécifique (6). 13. Procédé selon la revendication 7, caractérisé en ce qu'il comprend une deuxième phase consistant, lorsque le système d'exploitation (3) dont est munie ladite machine (1) est lancé, à scruter l'état desdites mémoires non-volatiles physiques (NVM1-NVMn) et à détecter l'apparition de pannes dans le fonctionnement desdits modules (M1-Mn). 14. Procédé selon la revendication 13, caractérisé en ce que ladite deuxième phase se déroule sous la commande d'un logiciel spécifique (7), formant extension dudit système d'exploitation (3), et en ce que ce logiciel spécifique (7) assure l'accès à ladite mémoire non-volatile virtuelle (Av) et la cohérence entre les contenus desdites premières zones (G1-Gn) de toutes les mémoires non-volatiles physiques (NVM1-NVMn). 15. Procédé selon les revendications 12 et 14, caractérisé en ce que ledit micrologiciel spécifique (6) est interfacé avec le système d'exploitation (3) de ladite machine (1) et en ce qu'il comporte une liste de données accessibles par ledit système d'exploitation (3) contenant, au moins, des informations sur ledit nombre maximum prédéterminé de modules (M1-Mn), des informations sur le découpage dudit espace d'adressage virtuel de ladite mémoire non-volatile virtuelle (Av) et des informations permettant au système d'exploitation (3) d'accéder audit logiciel spécifique (7), de manière à autoriser des opérations de lecture et d'écriture dans ladite mémoire non-volatile to virtuelle (Av).