FR2774788A1 - Procede de controle d'acces memoire sur une machine avec memoire a acces non uniforme et machine pour mettre en oeuvre ce procede - Google Patents

Procede de controle d'acces memoire sur une machine avec memoire a acces non uniforme et machine pour mettre en oeuvre ce procede Download PDF

Info

Publication number
FR2774788A1
FR2774788A1 FR9801701A FR9801701A FR2774788A1 FR 2774788 A1 FR2774788 A1 FR 2774788A1 FR 9801701 A FR9801701 A FR 9801701A FR 9801701 A FR9801701 A FR 9801701A FR 2774788 A1 FR2774788 A1 FR 2774788A1
Authority
FR
France
Prior art keywords
memory
machine
physical
access
page number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9801701A
Other languages
English (en)
Other versions
FR2774788B1 (fr
Inventor
Nadia Bouraoui
Jean Pascal Mazzilli
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull SAS
Original Assignee
Bull SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bull SAS filed Critical Bull SAS
Priority to FR9801701A priority Critical patent/FR2774788B1/fr
Priority to US09/243,119 priority patent/US6473848B2/en
Priority to IT1999MI000250A priority patent/IT1309544B1/it
Priority to DE19905541A priority patent/DE19905541B4/de
Priority to GB9903120A priority patent/GB2337614B/en
Publication of FR2774788A1 publication Critical patent/FR2774788A1/fr
Application granted granted Critical
Publication of FR2774788B1 publication Critical patent/FR2774788B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Sur une machine (17) avec mémoire (8, 9) à accès non uniforme répartie sur plusieurs modules (14, 15), chaque module comprend 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 la mémoire (8, 9) au moyen d'une table de correspondance (110). Une génération de numéro de page logique LPN provoque 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). Le procédé 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.

Description

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.

Claims (11)

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é.
FR9801701A 1998-02-12 1998-02-12 Procede de controle d'acces memoire sur une machine avec memoire a acces non uniforme et machine pour mettre en oeuvre ce procede Expired - Fee Related FR2774788B1 (fr)

Priority Applications (5)

Application Number Priority Date Filing Date Title
FR9801701A FR2774788B1 (fr) 1998-02-12 1998-02-12 Procede de controle d'acces memoire sur une machine avec memoire a acces non uniforme et machine pour mettre en oeuvre ce procede
US09/243,119 US6473848B2 (en) 1998-02-12 1999-02-03 Method for controlling memory access on a machine with non-uniform memory access and machine for implementing such a method
IT1999MI000250A IT1309544B1 (it) 1998-02-12 1999-02-09 Procedimento di controllo di accesso in memoria su una macchina conmemoria ad accesso non uniforme e macchina che consente di mettere in
DE19905541A DE19905541B4 (de) 1998-02-12 1999-02-10 Verfahren zum Steuern des Speicherzugriffs in einer Maschine mit einem Speicher mit ungleichmäßigem Zugriff und Maschine zur Ausführung eines solchen Verfahrens
GB9903120A GB2337614B (en) 1998-02-12 1999-02-11 Method for controlling memory access on a machine with non-uniform memory access and machine for implementing such a method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9801701A FR2774788B1 (fr) 1998-02-12 1998-02-12 Procede de controle d'acces memoire sur une machine avec memoire a acces non uniforme et machine pour mettre en oeuvre ce procede

Publications (2)

Publication Number Publication Date
FR2774788A1 true FR2774788A1 (fr) 1999-08-13
FR2774788B1 FR2774788B1 (fr) 2000-03-24

Family

ID=9522906

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9801701A Expired - Fee Related FR2774788B1 (fr) 1998-02-12 1998-02-12 Procede de controle d'acces memoire sur une machine avec memoire a acces non uniforme et machine pour mettre en oeuvre ce procede

Country Status (5)

Country Link
US (1) US6473848B2 (fr)
DE (1) DE19905541B4 (fr)
FR (1) FR2774788B1 (fr)
GB (1) GB2337614B (fr)
IT (1) IT1309544B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477634B1 (en) 1999-06-21 2002-11-05 Bull S.A. Physical pages de-allocation method for virtual addressing machine

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100628201B1 (ko) * 2000-10-16 2006-09-26 엘지전자 주식회사 터보 디코딩 방법
US7313734B2 (en) * 2002-01-14 2007-12-25 International Business Machines Corporation Method and system for instruction tracing with enhanced interrupt avoidance
JP4028444B2 (ja) * 2003-06-27 2007-12-26 株式会社東芝 スケジューリング方法およびリアルタイム処理システム
CN102043594A (zh) * 2010-12-31 2011-05-04 中科海量存储技术(北京)有限公司 分布式环境下实现输入输出踪迹收集回放的***和方法
DE102014116865B4 (de) * 2014-11-18 2020-08-13 Phoenix Contact Gmbh & Co. Kg Analysevorrichtung zur Analyse und Manipulation einer Kommunikationssequenz
US11275721B2 (en) * 2015-07-17 2022-03-15 Sap Se Adaptive table placement in NUMA architectures
KR20180009217A (ko) * 2016-07-18 2018-01-26 삼성전자주식회사 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
US10642751B2 (en) * 2017-07-20 2020-05-05 Vmware, Inc. Hardware-assisted guest address space scanning in a virtualized computing system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4279014A (en) * 1977-08-17 1981-07-14 Compagnie Internationale pour 1'Informatique CII-Honeywell Bull (Societe Anonyme) Arrangement for converting virtual addresses into physical addresses in a data processing system
GB2297402A (en) * 1995-01-30 1996-07-31 Hewlett Packard Co Determining a process's actual working set and relating same to high level data structures

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IN169636B (fr) * 1987-07-01 1991-11-23 Digital Equipment Corp
JP2625385B2 (ja) 1994-06-30 1997-07-02 日本電気株式会社 マルチプロセッサシステム
US5787476A (en) * 1995-05-05 1998-07-28 Silicon Graphics, Inc. System and method for maintaining coherency of virtual-to-physical memory translations in a multiprocessor computer
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
US5897664A (en) * 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessor system having mapping table in each node to map global physical addresses to local physical addresses of page copies
FR2767939B1 (fr) 1997-09-04 2001-11-02 Bull Sa Procede d'allocation de memoire dans un systeme de traitement de l'information multiprocesseur

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4279014A (en) * 1977-08-17 1981-07-14 Compagnie Internationale pour 1'Informatique CII-Honeywell Bull (Societe Anonyme) Arrangement for converting virtual addresses into physical addresses in a data processing system
GB2297402A (en) * 1995-01-30 1996-07-31 Hewlett Packard Co Determining a process's actual working set and relating same to high level data structures

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ABROSSIMOV V ET AL: "GENERIC VIRTUAL MEMORY MANAGEMENT FOR OPERATING SYSTEM KERNELS", OPERATING SYSTEMS REVIEW (SIGOPS), vol. 23, no. 5, 1 January 1989 (1989-01-01), pages 123 - 136, XP000115493 *
LAROWE JR R P ET AL: "THE ROBUSTNESS OF NUMA MEMORY MANAGEMENT", PROCEEDINGS OF THE SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES, PACIFIC GROVE, OCT. 13 - 16, 1991, no. SYMP. 13, 13 October 1991 (1991-10-13), ASSOCIATION FOR COMPUTING MACHINERY, pages 137 - 151, XP000313825 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477634B1 (en) 1999-06-21 2002-11-05 Bull S.A. Physical pages de-allocation method for virtual addressing machine

Also Published As

Publication number Publication date
FR2774788B1 (fr) 2000-03-24
GB9903120D0 (en) 1999-04-07
US6473848B2 (en) 2002-10-29
IT1309544B1 (it) 2002-01-23
GB2337614B (en) 2002-08-14
ITMI990250A1 (it) 2000-08-09
US20020062432A1 (en) 2002-05-23
DE19905541A1 (de) 1999-08-19
GB2337614A (en) 1999-11-24
DE19905541B4 (de) 2005-12-22

Similar Documents

Publication Publication Date Title
RU2764173C1 (ru) Регистрация входящих потоков кэша по запросу в кэш более высокого уровня
US8230179B2 (en) Administering non-cacheable memory load instructions
US11734192B2 (en) Identifying location of data granules in global virtual address space
US11947458B2 (en) Using cache coherent FPGAS to track dirty cache lines
US6049853A (en) Data replication across nodes of a multiprocessor computer system
US11200168B2 (en) Caching data from remote memories
US10496537B2 (en) Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache
EP0881579B1 (fr) Compteurs de remplacement pour machine avec mémoire à accès non uniforme.
WO1998022874A1 (fr) Systeme de reseau d'ordinateurs a memoire partagee
FR2774788A1 (fr) Procede de controle d'acces memoire sur une machine avec memoire a acces non uniforme et machine pour mettre en oeuvre ce procede
KR20220000415A (ko) 서비스로서의 메모리에 기초한 분산 컴퓨팅
US10860485B2 (en) Leveraging existing logic paths during bit-accurate processor tracing
CN111727425A (zh) 通过日志记录对上层共享缓存的流入量以及下层缓存之间的缓存一致性协议转换来进行跟踪记录
FR2763712A1 (fr) Dispositif d'instrumentation pour machine avec memoire a acces non uniforme
US6256711B1 (en) Method for purging unused data from a cache memory
CA2228061C (fr) Coherence des caches de microprocesseur
FR2609195A1 (fr) Procede de gestion d'antememoires associees a des processeurs dans une architecture multiprocesseur a bus unique et systeme de traitement de donnees fonctionnant suivant ce procede
EP3506110B1 (fr) Accès multiples à un fichier de données stocké dans un système de stockage de données associé à un espace mémoire tampon
US11016908B2 (en) Distributed directory of named data elements in coordination namespace
US20230342282A1 (en) Memory page markings as logging cues for processor-based execution tracing
US20240037038A1 (en) Coherency Domain Cacheline State Tracking
RU2773437C2 (ru) Запись трассировки посредством регистрации входящих потоков в кэш нижнего уровня на основе элементов в кэше верхнего уровня
CN116868172A (zh) 将主存储器视为跟踪日志记录的标记高速缓存行的集合
WO2022177698A1 (fr) Traitement de mémoire principale en tant que collection de lignes de mémoire cache étiquetées pour une journalisation de trace
US20200183904A1 (en) Communication in coordination namespace

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 18

ST Notification of lapse

Effective date: 20161028