Brevet FR2774788A1 — publié le 19990813

Dans le domaine informatique, il est possible d'augmenter la puissance d'une machine en augmentant le nombre de processeurs dont elle est composée. Un type de machines connu sous le nom SMP permet aux différents processeurs d'une même machine d'accéder de façon symétrique à sa mémoire au moyen d'un bus système. Ce sont des machines avec mémoire à accès uniforme dans la mesure o le temps d'accès à la mémoire est sensiblement le même pour toutes les données accédées. Cependant, la courbe de performances de telles machines ne croit pas de façon linéaire en fonction du nombre de processeurs. Un nombre élevé de processeurs fait que la machine gère plus de problèmes d'accessibilité à ses ressources qu'elle n'en dispose pour exécuter des applications. Ceci a pour conséquence d'infléchir considérablement la courbe de performances lorsque le nombre de processeurs dépasse une valeur optimale souvent estimée de l'ordre de quatre. L'état de la technique propose différentes solutions à ce problème. Une solution connue consiste à regrouper en grappes plusieurs machines de façon à les faire communiquer entre elles au moyen d'un réseau. Chaque machine possède un nombre optimal, par exemple de quatre processeurs et son propre système d'exploitation. Elle établit une communication avec une autre machine toutes les fois qu'elle effectue un traitement sur des données détenues à jour par cette autre machine. Le temps nécessaire à ces communications et la nécessité de travailler sur des données cohérentes posent des problèmes de latence pour des applications volumineuses telles que par exemple les applications réparties qui demandent de nombreuses communications. La latence est la durée qui sépare l'instant d'émission d'une requête d'accès à la mémoire et l'instant auquel la réponse à cette requête est reçue. Une autre solution connue est celle des machines de type NUMA. Ce sont des machines avec mémoire à accès non uniforme (Non Uniform Memory Access en anglais), dans la mesure o le temps d'accès à la mémoire varie selon la localisation des données accédées. Une machine de type NUMA est constituée de plusieurs modules, chaque module comprenant un nombre optimal de processeurs et une partie physique de la mémoire totale de la machine. Une telle machine est à accès mémoire non uniforme car un module accède généralement plus facilement à une partie physique de la mémoire qu'il ne partage pas avec un autre module qu'à une partie qu'il partage. Bien que chaque module possède un bus système privé reliant ses processeurs et sa mémoire physique, un système d'exploitation commun à tous les modules permet de considérer l'ensemble des bus systèmes privés comme un seul et unique bus système de la machine. Un adressage logique affecte un lieu de résidence à un emplacement de mémoire physique déterminé d'un module. Pour un processeur considéré, on distingue les accès à une partie de mémoire locale, située physiquement sur le même module que le processeur et les accès à une partie de mémoire distante, située physiquement sur un ou plusieurs autres modules que celui o est situé le processeur. Un type particulier de machines NUMA est le type CCNUMA, c'est à dire celui des machines à cohérence antemémoire (Cache Coherency en anglais). Un mécanisme d'antémémoire partagée fait qu'à un instant donné, une copie valide, c'est à dire à jour, de ce bloc n'est pas nécessairement localisée dans son emplacement de mémoire physique de résidence. Une ou plusieurs copies à jour du bloc peuvent ainsi migrer d'un module à l'autre au gré des demandes applicatives et d'appels système. La mémoire physique, localisée dans un module considéré, est celle à laquelle le module considéré accède le plus rapidement, car directement au moyen de son bus système local. La mémoire physique, éloignée dans un autre module, est celle à laquelle le module considéré accède le moins rapidement, car nécessitant une ou plusieurs transactions entre modules. La mémoire physique, locale au module considéré, comprend une première partie spécialement affectée aux blocs de données résidents dans ce module, et une deuxième partie spécialement affectée aux copies de blocs résidents dans d'autres modules. La deuxième partie de mémoire physique constitue une antémémoire de mémoire éloignée dans les autres modules. Un bloc résident dans la première partie de mémoire physique n'est pas immédiatement disponible si son contenu ne constitue pas une copie à jour, c'est par exemple le cas si un ou plusieurs autres modules partagent ce bloc et si l'un de ces autres modules en détient une copie à jour, en termes de cohérence mémoire. Pour gérer le partage de blocs résidents dans sa première partie de mémoire physique, avec d'autres modules, le module considéré dispose d'un organe de contrôle antémémoire à distance RCC (Remote Cache Controler en anglais). L'intérêt des machines avec mémoire à accès non uniforme et cohérence antémémoire est que chaque module travaille sur des blocs de données résidents dans une première partie de sa mémoire locale ou sur des copies dans une deuxième partie de sa mémoire locale, de blocs résidents dans une première partie de mémoire d'un autre module. Un module considéré n'a alors besoin de communiquer avec d'autres modules que pour travailler sur des copies à jour de façon à assurer une cohérence des données. En exécution, il est donc a priori indifférent qu'un bloc de données soit résident dans un module ou un autre, chaque module rapatriant, si nécessaire, dans sa mémoire locale des copies de blocs dont il a besoin. Cependant, pour une exécution du système d'exploitation commun à tous les modules ou de certaines applications de type réparties, il est possible que certaines données soient souvent utiles à l'ensemble des modules. Ces données concernent, à titre d'exemple non limitatif des tables d'allocation de processus, des tables de fichiers ouvert ou des tables de prises de verrous sur des ressources partagées. La cohérence de ces données risque de nécessiter de nombreux échanges entre modules et de perturber ainsi l'augmentation de performance attendue de telles machines. D'autre part, il est intéressant d'utiliser un mode d'adressage virtuel pour faire exécuter des processus par une machine informatique. Comme il est connu dans l'état de la technique, un espace d'adressage virtuel est alloué à chaque processus exécuté par la machine. L'espace d'adressage virtuel permet de s'affranchir des contraintes de taille mémoire qui peuvent se présenter dans un espace d'adressage physique. Les processus (process en anglais) et les tâches (thread en anglais) à l'intérieur d'un processus accèdent à leur espace d'adressage virtuel au moyen d'adresses effectives qui génèrent des numéros de pages logiques à chacune desquelles la machine fait correspondre un numéro de page physique (frame en anglais), accessible en mémoire physique, au fur et à mesure des besoins réels d'accès. Le mécanisme de mémoire virtuel est indépendant du mécanisme de cohérence antémémoire. Cependant, si une tâche de processus s'exécute sur un processeur situé sur un module, différent du module dans la mémoire duquel réside une page physique accédée par cette tâche, la mise en oeuvre du protocole de cohérence antémémoire entre modules risque de ralentir les accès mémoire et de nuire aux performances du système. La complexité des mécanismes de correspondance et des besoins en mémoire physique des nombreux processus exécutés par la machine, fait qu'il est difficile d'appréhender a priori la répartition des pages physiques sur les modules pour correspondre à des pages logiques. L'invention propose un procédé de contrôle d'accès mémoire sur une machine avec mémoire à accès non uniforme répartie sur plusieurs modules, chaque module comprenant un ou plusieurs processeurs CPU pour exécuter des tâches sur un espace d'adressage virtuel ou physique au moyen d'adresses effectives EA générant des numéros de pages logiques LPN auxquelles il est possible de faire correspondre des numéros de pages physiques PPN dans ladite mémoire au moyen d'une table de correspondance LPT, une génération de numéro de page logique LPN provoquant une exception de type défaut de page premier niveau lorsque ledit numéro de page logique LPN est absent de la table de correspondance, caractérisé en ce qu'il comprend une étape pour activer, suite a chaque exception de type défaut de page premier niveau, une fonction de trace qui consigne la valeur de l'adresse effective EA ayant généré le numéro de page logique LPN qui a provoqué ladite exception, la date à laquelle ladite exception est provoquée, un identificateur de la tâche utilisant ladite adresse effective EA, un identificateur du processeur exécutant ladite tâche et le numéro de page physique PPN correspondant au numéro de page logique qui a provoqué ladite exception. L'activation de la fonction de trace à chaque exception de type défaut de page premier niveau permet de détecter chaque nouveau premier accès d'un processeur à une page de la mémoire physique, que cette page soit cloutée ou non. L'identificateur du processeur et le numéro de page physique permettent de savoir dans quel module sont situés la page physique et le processeur. Il existe une bonne affinité entre processeur et mémoire physique s'ils sont situés dans le même module. La date permet de définir l'instant auquel s'est produit ce nouveau premier accès, elle permet de correler les résultats de trace entre eux ou avec d'autres résultats obtenus par ailleurs. L'identificateur de tâche permet de savoir à quelle tâche est lié l'accès mémoire et de corréler ainsi différents accès mémoires liés à une même tâche, qui peut s'exécuter par exemple sur différents processeurs au cours du temps. La valeur de l'adresse effective permet de préciser le type d'adressage utilisé par la tâche, le numéro de page physique associé à une. même adresse effective peut évoluer au cours du temps si la page physique n'est pas cloutée. Pour communiquer, différentes tâches peuvent utiliser une même adresse effective. En démarrant le procédé en même temps que l'exécution des processus sur la machine, on est sûr ainsi de détecter toutes les configurations d'accès à la mémoire physique. Pour un démarrage du procédé indépendant de celui de l'exécution des processus sur la machine, l'invention propose d'invalider toutes les entrées de la table de correspondance LPT au démarrage du procédé. L'invention propose aussi une machine pour mettre en oeuvre le procédé de contrôle d'accès mémoire, comprenant des premiers moyens pour activer une fonction qui introduit un numéro de page logique LPN avec une correspondance sur un numéro de page physique PPN dans une table de correspondance suite à une exception provoquée par une absence d'entrée valide contenant ledit numéro de page logique LPN dans ladite table de correspondance, caractérisée en ce qu'elle comprend: - des deuxièmes moyens pour remplacer les premiers moyens par des troisièmes moyens qui activent une fonction de trace. L'invention sera mieux comprise à l'aide de la description d'un exemple de réalisation, en référence aux figures. La figure 1 rappelle brièvement le fonctionnement d'un adressage virtuel segmenté. La figure 2 présente des tables de correspondance entre numéros de page physique et numéros de pages logiques. La figure 3 montre différents niveaux de défaut de page et les principales actions qui en résultent habituellement. La figure 4 montre des modifications de la figure 3, selon l'invention. La figure 5 présente un exemple de machine informatique pour mettre en oeuvre l'invention. La figure 6 présente un tableau conforme au procédé de contrôle suivant l'invention. La figure 7 présente d'autres étapes du procédé en conformité avec la machine. La figure 1 rappelle brièvement le fonctionnement d'un adressage virtuel segmenté, dont les termes peuvent être utiles à l'explication de l'invention en référence aux figures qui suivent. On nomme adresse effective EA, une entité logique 113 comprenant essentiellement trois champs STE, SPN et SPRA. Le champ STE contient un nombre i de bits pour coder une entrée de table de segments 106 constituée de 2i registres. Par exemple, la table 106 contient seize registres si la valeur de i est de quatre. Chaque registre est destiné à contenir un nombre m de bits pour référencer un identificateur de segment SD. Ceci permet de segmenter un espace d'adressage en 2m segments de mémoire virtuelle. Par exemple, l'identificateur SD permet de distinguer seize méga-segments si la valeur de m est de vingt-quatre. Le préfixe méga est à prendre ici au sens informatique du terme, c'est à dire valant mille vingt-quatre kilo, le kilo valant lui-même mille vingt- quatre unités. Le champ SPN contient un nombre j de bits pour coder un numéro de page dans un segment. Un segment peut alors contenir 2J pages distinctes de mémoire virtuelle, par exemple soixante-quatre kilo-pages si la valeur de j est de seize. Le champ SPRA contient un nombre k de bits pour coder une adresse relative de multiplet, au sein d'une page, le multiplet étant la plus petite entité de données informatiques, généralement de huit ou neuf bits, adressable par le système. Une page peut alors contenir 2 multiplets informatiques, par exemple quatre kilo-multiplets si la valeur de k est de douze. Une concaténation d'identificateur de segment SD et de numéro de page SPN donne un numéro de page logique LPN 107. Il est alors possible de référencer 2m+j pages logiques distinctes, soit par exemple un téra- pages si la valeur de m+j est de quarante. En adressant les multiplets de chaque page au moyen du champ SPRA, il est possible d'obtenir ainsi un espace d'adressage virtuel de quatre peta-multiplets, les préfixes téra et peta étant à prendre au sens informatique des termes. Une table de pages logiques LPT 110 permet de faire correspondre un numéro de page physique PPN à un numéro de page logique LPN donné. En concaténant le numéro de page physique PPN à une adresse relative PRA dans la page ainsi référencée, on obtient une adresse physique 112 de multiplet. L'adresse relative PRA est une recopie directe du champ SPRA. Si par exemple, le numéro de page physique est codé sur vingt bits, il est possible d'obtenir une adresse physique codée sur trente-deux bits pour accéder à une mémoire physique de quatre méga-multiplets. Parmi les différents mécanismes possibles d'exploitation de la table 110, on peut citer celui du brevet US4279014 de J-C. Cassonnet et al. dont certaines références de la figure 1 sont volontairement reprises dans la présente description en référence à cette figure. L'adressage virtuel permet d'obtenir un espace d'adressage considérablement plus grand que l'espace d'adressage physique disponible. L'homme du métier connaît encore d'autres avantages tels que celui de faciliter l'édition dynamique de liens à l'exécution de programmes. La taille considérable de l'espace d'adressage virtuel fait qu'à un instant donné, une page logique de numéro LPN n'est pas nécessairement référencée dans la table LPT. Il se peut cependant qu'il existe une page physique de numéro PPN en mémoire physique, apte à correspondre à la page logique de numéro LPN. La figure 2 montre une table de correspondance inverse PPT 55 dont chaque entrée est référencée par un numéro de page physique PPN, de façon à couvrir l'ensemble de l'espace d'adressage physique utilisé. Chaque entrée de la table 55 donne accès à un numéro de page logique LPN correspondant au numéro de page physique PPN, ainsi qu'à un ensemble de propriétés de la page physique PPN, dont par exemple un indicateur Pin, un indicateur Lib et un indicateur ES. Un état Y de l'indicateur Pin signifie que la page physique de numéro PPN est cloutée en mémoire physique, 0lo c'est à dire qu'elle ne doit pas être remplacée par le contenu d'une autre page physique. Un état N de l'indicateur Pin signifie que la page physique de numéro PPN n'est pas cloutée en mémoire physique, c'est à dire qu'il est possible de la remplacer par le contenu d'une autre page physique, par exemple si la taille de la mémoire physique ne suffit pas pour satisfaire toutes les correspondances entre pages logiques et pages physiques. Un état Y de l'indicateur Lib signifie que la page physique de numéro PPN est libre, c'est à dire qu'elle est disponible pour correspondre à une éventuelle page logique de nouveau numéro LPN. Un état Y de l'indicateur ES signifie que la page physique de numéro PPN est en cours de remplacement au moyen d'un dispositif d'entrée sortie en communication avec une mémoire de masse et que cette page physique n'est donc pas disponible. La figure 3a montre comment un processeur CPU, tel que par exemple l'un de ceux présentés ultérieurement en référence à la figure 5, accède à une page physique de numéro PPN correspondant à la page logique de numéro LPN qu'il adresse conformément aux explications en référence à la figure 1. Un accès au numéro de page logique LPN en étape 59 provoque une scrutation de la table 110, par exemple suivant un mode similaire à celui expliqué dans le brevet US4279014 en référence à sa figure 3c. Si le processeur CPU trouve en étape 60, une entrée valide de la table LPT contenant le numéro de page logique LPN, il accède directement à la page physique de numéro PPN correspondante en étape 61. Sinon, le processeur CPU provoque en étape 62, une exception intitulée défaut de page premier niveau pour signifier que le numéro de page logique LPN est absent de la table LPT 110. L'exception provoquée en étape 62 a pour effet d'activer une fonction logicielle V_Recharge en étape 63. La fonction V_Recharge est activée en mode d'adressage physique, de façon à modifier le contenu de la table LPT pour y faire correspondre un numéro de page physique PPN au numéro de page x logique LPN. Le mode d'adressage physique consiste à utiliser directement l'adresse 112 sans passer par le mécanisme de la figure 1. Une étape 69 teste ensuite si le retour de la fonction V_Recharge se fait avec succès, c'est à dire si la page de numéro PPN est présente en mémoire physique. Le processeur CPU peut alors accéder à la page physique de numéro PPN en étape 61. Sinon, on est dans le cas d'un défaut de page de second niveau. Le processeur CPU provoque alors l'activation d'une fonction logicielle nommée p_obtenir en étape 70. Il est possible d'activer la fonction pobtenir en mode d'adressage virtuel, de façon à modifier le contenu de la table PPT pour y faire correspondre un numéro de page physique PPN à un numéro de page logique LPN. Le mode d'adressage virtuel simplifie une mise en oeuvre d'algorithmes complexes qui sortent du cadre de la présente invention. La fonction pobtenir active en étape 71 une fonction nommee pentrer en mode d'adressage virtuel. La fonction p_obtenir comprend aussi d'autres étapes non représentées car non directement utiles à la compréhension de l'invention. Par exemple, suite à une libération de page physique de numéro PPN pour allouer son emplacement à la page logique de numéro LPN, toutes les entrées de la table 110 qui établissaient auparavant une correspondance avec ce numéro de page physique PPN, sont invalidées. Il convient de remarquer que seules les pages physiques non cloutées peuvent être libérées. Suite à l'exécution de l'étape 71, le processeur CPU peut alors accéder à la page physique de numéro PPN en étape 61. La figure 3b montre les étapes essentielles de la fonction VRecharge pour résoudre le défaut de page premier niveau. En étape 64, la fonction V_Recharge scrute la table PPT 55. Si la fonction VRecharge trouve (56) en étape 65, un numéro de page physique PPN qui référence le numéro de page logique LPN qui faisait défaut dans la table LPT, la fonction V_Recharge active en mode d'adressage physique la fonction pentrer en étape 66. Sinon, la fonction V_Recharge termine en étape 68 en retournant un signal d'échec pour signifier une absence de succès d'accès à la table PPT 55. Suite à l'exécution de l'étape 66, la fonction V_Recharge termine en étape 67 en retournant un signal de succès pour signifier qu'une correspondance a été établie dans la table LPT pour le numéro de page logique LPN. La figure 3c explique les actions essentielles de la fonction p_entrer qui débute en étape 74. En étape 75, le numéro de page logique LPN résultant des étapes qui précèdent l'étape 74, est introduit (57) dans la table LPT 110 avec (58) le numéro de page physique PPN correspondant. Les figures 4a et 4b sont semblables respectivement aux figures 3a et 3b à ceci prés que les étapes 71 et 66 sont remplacées respectivement par des étapes 72 et 73 qui activent une fonction P_Entrer différente de la fonction p entrer, distinguée dans la description à l'aide de lettres majuscules. La figure 4c explique les actions essentielles de la fonction P_Entrer qui débute en étape 76. En étape 77, la fonction P_Entrer active une fonction Trace, expliquée dans la suite de la description. En étape 78, la fonction P Entrer active la fonction originelle p_entrer. Ce mode de réalisation est celui qui concilie une bonne adaptabilité du procédé de trace à un type quelconque de machine en perturbant le moins possible le fonctionnement de la machine à laquelle il est appliqué. En effet, on pourrait envisager de créer un processus particulier pour effectuer la trace. Cependant ce processus risquerait de perturber les mesures par les ressources, en particulier en terme de mémoire et de processeurs qui lui seraient allouées. On pourrait aussi envisager d'utiliser un dispositif matériel qui espionnerait les accès mémoire, tel qu'un contrôleur de bus spécifique. Cependant ce dispositif serait nécessairement lié à la constitution matérielle de la machine pour laquelle il aurait été conçu. Ici, au contraire, chaque exécution de la fonction de trace fait partie intégrante de la tâche dont elle effectue une empreinte des accès mémoire. La figure 5 présente un exemple de machine informatique 17 comprenant plusieurs modules 14, 15 reliés par un bus 16 de sorte que le même système d'exploitation tourne sur tous les modules. Le module 14 comprend plusieurs processeurs 0, 1, 2, 3, le module 15 comprend plusieurs processeurs 4, 5, 6, 7, ces processeurs étant nommés par la suite CPU. Chaque processeur CPU contient plusieurs registres internes dont nous retenons pour la suite de la description un registre d'adresse d'instruction IAR, un registre de lien LR, un registre de branchement CTR et un registre de base de temps TBR. Les registres IAR, LR et CTR servent au processeur CPU auquel ils appartiennent à accomplir des séquences d'instructions pendant l'exécution d'une tâche Th soumise au processeur CPU. Le registre TBR sert au processeur CPU auquel il appartient, à dater si besoin un événement survenu en cours d'exécution. Chaque module 14, 15 comprend une unité de mémoire physique 8, 9 et un organe de contrôle de cohérence antémémoire à distance RCC 10, 11 qui communique par le bus 16 avec le ou les autres modules. Un processeur CPU du module 14 peut faire, au moyen d'un bus 12, des accès directs locaux à l'unité de mémoire physique 8 et des accès directs distants à l'unité de mémoire physique 9 via les organes de contrôle 10, 11 et le bus 16. De même, un processeur CPU de tout autre module 15 peut faire, au moyen d'un bus 13, des accès directs locaux à l'unité de mémoire physique 9 et des accès directs distants à l'unité de mémoire physique 8 via les organes de contrôle 11, 10 et le bus 16. L'ensemble des unités de mémoire 8, 9 constitue la mémoire physique de la machine gérée par un système d'exploitation unique, commun à l'ensemble des modules. Les accès distants étant plus longs que les accès locaux, la machine est de type NUMA, c'est à dire à accès mémoire non uniforme. Chaque processeur possède un identificateur qui le distingue des autres processeurs, cet identificateur lui est attribué en fonction du module sur lequel il est situé, par exemple un numéro de 0 à 3 pour le module 14, un numéro de 4 à 7 pour le module 15, etc. Le numéro d'une page physique est distinctif du module sur lequel elle réside, par exemple les numéros hexadécimaux 0 à FFFF sur le module 14 si la mémoire 8 contient 256 Méga multiplets, les numéros 10000 à 2FFFF sur le module 15 si la mémoire 9 contient 512 Méga multiplets, et ainsi de suite. La machine 17 comprend différents moyens pour réaliser les étapes représentées sur les figures 3 et 4. Les étapes 59 à 62 sont réalisées par des moyens matériels tels que des circuits de portes logiques et des moyens micrologiciels. Ces moyens se retrouvent dans chaque processeur CPU de la machine. Les tables de correspondance 110 et 55 se retrouvent en mémoire physique 8,9 de la machine. La table de correspondance 110 est directement accessible par chaque processeur CPU en mode d'adressage physique. La table de correspondance 110 est résidente dans un seul module ou répartie dans plusieurs modules. L'étape 63 fait appel à des moyens logiciels, c'est à dire des moyens constitués de séquences d'instructions codées sous forme de texte résident en mémoire physique 8,9 de la machine, auquel chaque processeur CPU accède en mode d'adressage physique car cette étape déclenche une intervention directe sur la table de correspondance 110 qui ne peut donc être utilisée à ce moment dans un mode d'adressage virtuel. Les étapes 64 à 68 sont donc réalisées par des moyens logiciel utilisant le mode d'adressage physique. L'étape 70 fait appel à d'autres moyens logiciels utilisant le mode d'adressage virtuel. Le mode d'adressage virtuel facilite une mise en oeuvre de fonctions complexes, parcours de listes, accès à des mémoires de masse par des entrées sorties, etc. Il est rendu possible par l'absence d'intervention directe sur les éléments du mécanisme de mémoire virtuelle tel que décrit en référence à la figure 1. Les étapes 74 et 75 sont réalisées par des moyens logiciel utilisant le mode d'adressage physique ou utilisant le mode d'adressage virtuel dans une zone d'espace d'adressage o numéros de page logique LPN et numéros de page physique PPN sont identiques et cloutés en table PPT. Les moyens des étapes 63 à 75 ne sont pas constitués uniquement de lignes de code résidentes en mémoire de la machine mais aussi des circuits, résidents dans chaque processeur, pour interpréter ces lignes de code et déclencher les séquences d'actions qui résultent de cette interprétation. Ceci est parfaitement connu de l'état de la technique. La figure 6 présente un tableau constitué de plusieurs colonnes. La première colonne contient une succession de dates exprimées en heures, minutes, secondes et nanosecondes. A chaque date correspond une trace détaillée dans les colonnes suivantes, effectuée à la date répertoriée sur la même ligne dans la première colonne. La date permet de faire des corrélations avec des résultats obtenus par ailleurs. La deuxième colonne contient un nom Pnom de processus. Ce nom de processus permet de reconnaître, de façon macroscopique, le processus ayant effectué un accès mémoire dont résulte la trace. Cette colonne est optionnelle. La troisième colonne contient un identificateur Pid du processus mentionnéci-dessus, cet identificateur est généralement attribué automatiquement par le système d'exploitation, pour chaque processus créé. La quatrième colonne contient un identificateur de tâche Tid exécutée pour le processus identifié en troisième colonne, plus particulièrement responsable de la trace répertoriéee. La cinquième colonne contient un identificateur de processeur CPU qui exécutait la tâche référencée en quatrième colonne à la date à laquelle la trace fut élaborée. La connaissance de cet identificateur permet de déterminer le module sur lequel se trouve le processeur CPU. Par exemple, une valeur de zéro à trois indique que le processeur se trouve sur le module 14, une valeur de quatre à sept indique que le processeur se trouve sur le module 15. En ajoutant un module supplémentaire avec six processeurs, une valeur comprise entre huit et treize indique que le processeur se trouve sur ce module supplémentaire. Une exploitation conjointe de la cinquième et de la quatrième colonne permet de déterminer comment les tâches sont réparties sur les modules. La sixième colonne contient un signal IT dont une valeur Y signifie une intervention d'interruption. Dans le cas contraire, la valeur est N. Une valeur Y indique que l'information concernant la tâche identifiée en quatrième colonne n'est pas significative. En effet, les instructions exécutées au moment du défaut de page ne sont pas à proprement parlé celles de la tâche mais celles d'un gestionnaire d'interruptions. La septième colonne contient la valeur du registre LR, codée en hexadécimal, du processeur CPU référencé en cinquième colonne sur la même ligne. La valeur du registre LR est l'adresse de l'instruction qui suit un appel de fonction contenant l'instruction courante exécutée par le processeur CPU, dans une séquence de code. La huitième colonne contient la valeur du registre IAR, codée en hexadécimal, du processeur CPU référencé en cinquième colonne sur la même ligne. La valeur du registre IAR est l'adresse de l'instruction courante exécutée par le processeur CPU, dans la séquence de code. Les valeurs des registres LR et IAR permettent de déduire par exemple si la tâche Tid est exécutée en mode noyau, c'est à dire que, suite à un appel système, c'est la séquence de code d'une fonction du noyau qui est exécutée et non une séquence de code propre à la tâche Tid en elle même. Ces valeurs permettent donc d'établir une relation entre une allocation de page à la tâche Tid et son origine en tant qu'entité logique, code propre à la tâche ou code propre au noyau. Dans un procédé d'optimisation de la machine, les valeurs obtenues en septième et huitième colonne, en comparaison de celles obtenues dans les autres colonnes, permettent de décider, par exemple, de réorganiser le code. La neuvième colonne contient l'adresse effective EA, codée en hexadécimal, accédée par la tâche référencée en quatrième colonne sur la même ligne. Si chaque registre de la table de segments 106 est destiné à contenir un type de segment particulier, données, texte, librairie partagée..., il est possible de déduire du champ STE le domaine de l'espace d'adressage virtuel concerné par la trace. Un segment de texte qui concerne du code exécutable est généralement accédé en lecture. La connaissance du type de segment permet alors d'envisager différentes stratégies pour augmenter les performances de la machine, telles qu'une réplication ou une migration de pages dans le module contenant le processeur CPU référencé en cinquième colonne sur la même ligne. Si beaucoup de pages chaudes, c'est à dire de pages souvent accédées, sont détectées dans un segment de texte, une reproduction des pages dans différents modules évite les latences provoquées par un accès à la mémoire physique d'un module distant. Ceci est possible dans la mesure o ce segment de texte est accédé uniquement en lecture. Si beaucoup de pages chaudes sont détectées dans un segment de données pour l'exécution d'une tâche et que ces pages sont réparties physiquement sur plusieurs modules, une migration des pages et de la tâche elle-même sur un module unique, évite les latences provoquées par un accès à la mémoire physique d'un module distant. Cette solution est avantageuse car un segment de données est accessible tant en lecture qu'en écriture. Si plusieurs tâches, réparties sur différents modules, utilisent une même librairie partagée, il est intéressant de reproduire les pages associées à cette librairie sur chacun des modules concernés. Le champ SPRA permet de déduire plus précisément quelle adresse est accédée dans l'espace d'adressage virtuel. Comme il est identique à la valeur du champ PRA dans l'espace d'adressage physique, il permet de savoir si on se situe en début, en fin ou à l'intérieur d'une page physique. La dixième colonne contient le numéro de page physique PPN, codé en hexadécimal, correspondant à l'adresse effective référencée en neuvième colonne sur la même ligne. La connaissance de ce numéro de page permet de déduire le module dans lequel la page physique est résidente. Par exemple, une capacité de deux cent cinquante-six méga-multiplets pour l'unité de mémoire 8 permet d'y référencer des numéros de pages physiques PPN allant de 0 à FFFF, les pages physiques ainsi référencées sont alors résidentes dans le module 14. Une capacité de cinq cent douze méga-multiplets pour l'unité de mémoire 9 permet d'y référencer des numéros de pages physiques PPN allant de 10000 à 2FFFF; les pages physiques ainsi référencées sont alors résidentes dans le module 15. En ajoutant un module supplémentaire relié au bus 16, il est possible d'y référencer des numéros PPN au delà de 30000 à une valeur dépendant de la capacité de l'unité mémoire de ce module, et ainsi de suite jusqu'à FFFFF selon le nombre de modules ajoutés et la capacité de leur unité de mémoire respective. La onzième colonne contient l'identificateur de segment SD, codé en hexadécimal, correspondant à l'adresse effective référencée en neuvième colonne sur la même ligne. La valeur de cet identificateur, concaténée à la valeur du champ SPN, procure un numéro de page logique LPN. En adjoignant le numéro de page logique LPN à l'identificateur de tâche Tid obtenu en quatrième colonne, on s'assure de l'unicité d'un numéro de page virtuelle. Il est ainsi possible de reconnaître les numéros de page logiques utilisés par plusieurs tâches. La douzième colonne contient la valeur de l'indicateur Pin attribué à la page physique référencée sur la même ligne en dixième colonne. Un état Y correspond généralement à des pages cloutées en mémoire. Si une page physique inamovible est résidente dans un module différent de celui o se trouve le processeur exécutant la tâche Tid, le temps d'accès à cette page sera plus long que si le processeur se trouve sur le même module. Un état Y de l'indicateur Pin trop fréquent est donc préjudiciable aux performances de la machine. Ainsi, en dupliquant des pages mémoires souvent accédées mais uniquement en lecture, dans plusieurs modules, en faisant migrer des pages vers le module o elles sont le plus souvent accédées, ou en réorganisant le code de façon à en faciliter l'exécution, il est possible d'optimiser le fonctionnement de la machine. La figure 7 présente d'autres étapes du procédé en conformité avec la machine. Le procédé démarre par une phase de préparation constituée d'étapes 79, 80 et 83. Une zone est réservée en mémoire 8, 9 de la machine pour consigner temporairement les données répertoriées dans le tableau de la figure 6 au fur et à mesure de leur apparition. De façon avantageuse, la zone mémoire de la machine est divisée en deux tampons 81, 82 pour chaque processeur CPU. Ces tampons sont remplis et vidés alternativement pour ledit processeur CPU. L'attribution d'une paire de tampons à chaque processeur CPU de la machine 17 évite des accès concurrents à ces tampons par des processeurs distincts. Ainsi, leur contenu reste cohérent sans utiliser de verrous. Dans l'étape d'initialisation 79, l'un des tampons, par exemple le tampon 81 est qualifié tampon courant et l'autre tampon, dans ce cas le tampon 82 est qualifié tampon secours. Le tampon courant est celui dans lequel sont écrites les données de trace au fur et à mesure de leur consignation. Le tampon secours est celui destiné à devenir nouveau tampon courant lorsque le tampon courant actuel est plein. Dans l'étape de remplacement 80, les étapes 66 et 71 sont remplacées respectivement par les étapes 73 et 72. De la sorte, chaque activation de l'étape 77 provoque une activation d'étape 84 qui débute la fonction de trace. Dans l'étape d'invalidation 83, toutes les entrées de la table 110 sont invalidées. De cette façon, les accès à des pages logiques dont le numéro possédait déjà une correspondance avec un numéro de page physique avant lancement du processus de trace sont néanmoins consignés. On s'assure donc de conserver une trace de tous les types d'accès à la mémoire physique de la machine. Pour faciliter sa mise en oeuvre, la phase de préparation peut être réalisée en mode d'adressage virtuel. En étape 85, l'état du tampon courant est testé. Si le tampon courant est plein, l'état du tampon de secours est testé en étape 89. Si le tampon courant n'est pas plein, celui-ci est rempli en étape 86 avec les données mentionnées en référence à la figure 6. Le tampon courant est accédé en mode d'adressage virtuel si l'étape 77 résulte d'une activation de l'étape 72. Le tampon courant est accédé en mode d'adressage physique si l'étape 77 résulte d'une activation de l'étape 73. En étape 87, l'état du tampon courant est testé. Si le tampon courant est plein, l'état du tampon de secours est testé en étape 89. Si le tampon courant n'est pas plein, la fonction trace se termine en étape 88 pour retourner à l'étape 78. En étape 89, si le tampon de secours n'est pas vide, la fonction trace se termine en étape 88 pour retourner à l'étape 78. Le tampon courant reste plein et d'autres défauts de page pourront amener un résultat positif sur le test de l'étape 85. Si le tampon de secours est vide, le vidage du tampon courant est activé en étape 90. Le mode d'adressage virtuel facilite le vidage de la zone mémoire et le transfert de son contenu vers des mémoires de masse tels que des disques. En étape 91, une permutation dans laquelle le tampon de secours, alors vide, devient tampon courant pour des remplissages ultérieurs, permet de qualifier l'ancien tampon comme tampon de secours qui redeviendra à son tour disponible pour des remplissages ultérieurs une fois que celui-ci aura été vidé, la fonction trace se termine en étape 88 pour retourner à l'étape 78. Dans la mesure o la fonction de trace est préparée en mode d'adressage virtuel pour en faciliter le codage sur la machine, il convient que le code obtenu soit aligné en début de page virtuelle et tienne dans son intégralité sur une page virtuelle. En effet, ce code est ensuite exécuté en mode d'adressage physique pour les raisons expliquées précédemment et il convient qu'il ne dépasse pas la taille d'une page physique. REVENDICATIONS 1. Procédé de contrôle d'accès mémoire sur une machine avec mémoire (8, 9) à accès non uniforme répartie sur plusieurs modules (14,15), chaque module comprenant un ou plusieurs processeurs CPU (4,5,6,7) pour exécuter des tâches sur un espace d'adressage virtuel ou physique au moyen d'adresses effectives EA (113) générant des numéros de pages logiques LPN auxquelles il est possible de faire correspondre des numéros de pages physiques PPN dans ladite mémoire (8,9) au moyen d'une table de correspondance (110), une génération de numéro de page logique LPN provoquant une exception de type défaut de page premier niveau lorsque ledit numéro de page logique LPN est absent de la table de correspondance (110), caractérisé en ce qu'il comprend une étape (72) pour activer, suite à chaque exception de type défaut de page premier niveau, une fonction (Trace) qui consigne la valeur de l'adresse effective EA ayant généré le numéro de page logique LPN qui a provoqué ladite exception, la date à laquelle ladite exception est provoquée, l'identificateur (Tid) de la tâche utilisant ladite adresse effective EA, l'identificateur (CPU) du processeur exécutant ladite tâche et le numéro de page physique PPN correspondant au numéro de page logique qui a provoqué ladite exception. 2. Procédé de contrôle d'accès mémoire sur une machine avec mémoire (8,9) à accès non uniforme selon la revendication 1, caractérisé en ce qu'à son démarrage, toutes les entrées de la table de correspondance (110) sont invalidées. 3. Procédé de contrôle.d'accès mémoire sur une machine avec mémoire (8, 9) à accès non uniforme selon la revendication 1 ou 2, caractérisé en ce que la fonction (Trace) consigne simultanément un indicateur (Pin) pour signifier si la page physique est cloutée ou non cloutée. 4. Procédé de contrôle d'accès mémoire sur une machine avec mémoire (8, 9) à accès non uniforme selon l'une des revendications précédentes, caractérisé en ce que l'étape (72) remplace une étape (65) initialement prévue pour effectuer simplement une nouvelle correspondance dans la table (110) suite à un défaut de page premier niveau. 5. Procédé de contrôle d'accès mémoire sur une machine avec mémoire (8, 9) à accès non uniforme selon l'une des revendications précédentes, caractérisé en ce que les données tracées sont sauvegardées dans une zone mémoire pouvant être accédée indifféremment en mode d'adressage virtuel ou en mode d'adressage physique. 6. Procédé de contrôle d'accès mémoire sur une machine avec mémoire (8, 9) à accès non uniforme selon l'une des revendications précédentes, caractérisé en ce que le code de la fonction (Trace) et les données qui lui sont nécessaires, ne dépasse pas la taille d'une page virtuelle et en ce que ce code soit aligné sur un début de page virtuelle. 7. Machine pour mettre en oeuvre le procédé selon l'une des revendications précédentes, comprenant des premiers moyens (65) pour activer une fonction qui introduit un numéro de page logique LPN avec une correspondance sur un numéro de page physique PPN dans une table de correspondance (110) suite à une exception provoquée par une absence d'entrée valide contenant ledit numéro de page logique LPN dans ladite table de correspondance (110), caractérisée en ce qu'elle comprend: - des deuxièmes moyens pour remplacer les premiers moyens (65) par des troisièmes moyens (70) qui activent une fonction (Trace). 8. Machine selon la revendication 7, caractérisée en ce qu'elle comprend des quatrièmes moyens pour invalider les entrées de la table de correspondance (110) avant mise en oeuvre des dits deuxièmes moyens. 9. Machine selon la revendication 7 ou 8, caractérisée en ce qu'elle comprend deux tampons pour sauvegarder temporairement les données tracées, un tampon étant alternativement vidé vers une mémoire de masse pendant que l'autre tampon est rempli par les résultats de la fonction trace. 10. Machine selon la revendication 9, caractérisée en ce qu'une paire de tampons (81,82) différente est attribuée à chaque processeur pour éviter les accès concurrents aux tampons en cours de vidage et de remplissage. 11. Procédé selon l'une des revendications I à 6, caractérisé en ce qu'il est utilisé pour dupliquer ou faire migrer des pages mémoire, de façon à optimiser le fonctionnement de la machine à laquelle il est appliqué.