FR2767938A1 - Memory allocation method in multiprocessor computer system - Google Patents

Memory allocation method in multiprocessor computer system Download PDF

Info

Publication number
FR2767938A1
FR2767938A1 FR9711025A FR9711025A FR2767938A1 FR 2767938 A1 FR2767938 A1 FR 2767938A1 FR 9711025 A FR9711025 A FR 9711025A FR 9711025 A FR9711025 A FR 9711025A FR 2767938 A1 FR2767938 A1 FR 2767938A1
Authority
FR
France
Prior art keywords
memory
allocation
applix
rule
rules
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
FR9711025A
Other languages
French (fr)
Other versions
FR2767938B1 (en
Inventor
Jean Dominique Sorace
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 FR9711025A priority Critical patent/FR2767938B1/en
Priority to FR9808058A priority patent/FR2767939B1/en
Priority to BR9806150-0A priority patent/BR9806150A/en
Priority to AU90793/98A priority patent/AU9079398A/en
Priority to PCT/FR1998/001855 priority patent/WO1999012099A1/en
Priority to CN98801271A priority patent/CN1237252A/en
Priority to JP11516373A priority patent/JP2000506659A/en
Priority to EP98942788A priority patent/EP0935781A1/en
Priority to US09/145,642 priority patent/US6272612B1/en
Publication of FR2767938A1 publication Critical patent/FR2767938A1/en
Application granted granted Critical
Publication of FR2767938B1 publication Critical patent/FR2767938B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

The memory allocation method makes use of a set of predefined memory allocation rules (Rg) that are linked to application programs (Applix). When there is no entry for a virtual address in the address correspondence table, a page fault (Fp) is generated. The allocation of locations (z1-zn) in physical memory (Mem) is then effected under one of the predefined rules as a function of the application and of the type of page fault.

Description

1 27679381 2767938

PROCEDE D'ALLOCATION DE MEMOIRE DANS UN SYSTEME DE  MEMORY ALLOCATION METHOD IN A SYSTEM OF

TRAITEMENT DE L'INFORMATION MULTIPROCESSEUR  MULTIPROCESSOR INFORMATION PROCESSING

La présente invention concerne un procédé d'allocation de mémoire dans un système de traitement de l'information multiprocesseur, plus particulièrement un procédé d'allocation d'une mémoire à accès non uniforme. Dans le cadre de l'invention, le terme "non uniforme" s'entend dans un sens temporel, comme il va l'être montré. De même, le terme "une mémoire" s'entend dans un sens général.10 Il peut signifier une mémoire distribuée, une hiérarchie de mémoire (par exemple comprenant des bancs de mémoires à temps  The present invention relates to a memory allocation method in a multiprocessor information processing system, more particularly to a memory allocation method with non-uniform access. In the context of the invention, the term "non-uniform" is understood in a temporal sense, as will be shown. Similarly, the term "a memory" is understood in a general sense.10 It can mean a distributed memory, a memory hierarchy (for example comprising banks of memories in time

d'accès différents), ou un ensemble de mémoires de types différents.  access points), or a set of memories of different types.

Comme il est bien connu dans le domaine informatique,  As is well known in the IT field,

il est possible d'augmenter la puissance d'une machine en augmentant le nombre de processeurs dont elle est composée.  it is possible to increase the power of a machine by increasing the number of processors of which it is composed.

Un type de machine connu sous le nom "SMP" (de l'anglo-saxon "Symetrical MultiProcessor" ou multiprocesseur Symétrique) 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  A type of machine known as "SMP" (from the Anglo-Saxon "Symetrical MultiProcessor" or multiprocessor Symmetric) allows different processors of the same machine to access its memory symmetrically by means of a bus system. These are machines with uniform access memory

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.  insofar as the access time to the memory is substantially the same for all the data accessed.

Pour cette raison, l'architecture est dite "UMA" (de  For this reason, the architecture is called "UMA" (from

l'anglo-saxon "Uniform Memory Access" ou accès uniforme à la mémoire).  the Anglo-Saxon "Uniform Memory Access".

La figure 1 annexée à la présente description illustre schématiquement un exemple d'architecture du type  Figure 1 appended to this description schematically illustrates an example of architecture of the type

"UMA"."AMU".

Le système de traitement de l'information 1, que l'on appellera ci- après module "SMP", comprend un certain nombre d'unités centrales ou processeurs ou encore "CPU" selon la  The information processing system 1, which will hereinafter be called the "SMP" module, comprises a certain number of central units or processors or even "CPU" depending on the

2 27679382 2767938

terminologie anglo-saxonne. On a représenté quatre unités  Anglo-Saxon terminology. We have represented four units

centrales dans l'exemple de la figure 1: 10 à 13. On associe à ces unités centrales 10 à 13, une mémoire centrale 14 accessible par tous.  in the example of FIG. 1: 10 to 13. These central units 10 to 13 are associated with a central memory 14 accessible by all.

Puisque tous les accès s'effectuent à l'intérieur du module 1, c'est-àdire en local, et si l'espace mémoire total disponible présente une homogénéité quant au temps d'accès (ce qui constitue l'hypothèse de départ, puisqu'il s'agit d'une architecture "UMA"), le temps d'accès reste sensiblement le même, quelle que soit l'unité centrale 10 à  Since all the accesses are made inside module 1, that is to say locally, and if the total available memory space presents a homogeneity as for the access time (which constitutes the starting hypothesis, since it is a "UMA" architecture), the access time remains substantially the same, whatever the central unit 10 to

13, qui effectue une requête.13, which makes a request.

Bien que, sur la figure 1, il ait été représenté quatre unités centrales 10 à 13, il doit être clair que ce nombre est tout à fait arbitraire. Il peut être augmenté ou15 diminué. Cependant, la courbe de performances de telles machines ne croît pas de façon linéaire en fonction du nombre de processeurs. Un nombre élevé de processeurs fait que le système consomme plus de temps pour des problèmes d'accessibilité à ses ressources qu'il n'en dispose pour20 exécuter des applications. Ceci a pour conséquence d'infléchir considérablement la courbe de performances  Although, in FIG. 1, four central units 10 to 13 have been represented, it should be clear that this number is entirely arbitrary. It can be increased or decreased. However, the performance curve of such machines does not increase linearly as a function of the number of processors. A high number of processors means that the system consumes more time for problems of accessibility to its resources than it has to run applications. This has the consequence of considerably bending the performance curve

lorsque le nombre de processeurs dépasse une valeur optimale souvent estimée à quatre environ. L'état de la technique propose différentes solutions à ce problème.  when the number of processors exceeds an optimal value often estimated at around four. The state of the art offers various solutions to this problem.

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 de processeurs, par exemple quatre, et son propre système d'exploitation. Elle établit une communication avec30 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 volumineuses35 telles que, par exemple, les applications réparties qui  A known solution consists in grouping several machines into clusters so as to make them communicate with each other by means of a network. Each machine has an optimal number of processors, for example four, and its own operating system. It establishes communication with another machine whenever it processes data held up to date by this other machine. The time required for these communications and the need to work on consistent data pose latency problems for large applications35 such as, for example, distributed applications which

3 27679383 2767938

demandent de nombreuses communications. La latence est la  require many communications. Latency is there

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.  duration which separates the instant of transmission of a memory access request and the instant at which the response to this request is received.

Une autre solution connue est celle des machines à architecture de type dit "NUMA" (de l'anglo-saxon "Non Uniform Memory Access"). Ce sont des machines avec mémoire à accès non uniforme, dans la mesure o le temps d'accès à la mémoire varie selon la localisation des données accédées. Une10 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 et plus rapidement à une15 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 bus20 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ême25 module que le processeur, et les accès à une partie de mémoire distante, située physiquement sur un ou plusieurs  Another known solution is that of machines with a so-called "NUMA" type architecture (from the Anglo-Saxon "Non Uniform Memory Access"). These are machines with non-uniform access memory, insofar as the access time to the memory varies according to the location of the data accessed. A machine of the "NUMA" type consists of several modules, each module comprising an optimal number of processors and a physical part of the total memory of the machine. Such a machine has non-uniform memory access because a module generally has easier and faster access to a physical part of the memory which it does not share with another module than to a part which it shares. Although each module has a private system bus connecting its processors and its physical memory, an operating system common to all the modules makes it possible to consider all the private system buses20 as a single system bus of the machine. Logical addressing assigns a place of residence to a determined physical memory location of a module. For a processor considered, a distinction is made between accesses to a part of local memory, physically located on the same module as the processor, and accesses to a part of remote memory, physically located on one or more

autres modules que celui o est situé le processeur.  other modules than the one where the processor is located.

La figure 2 annexée à la présente description  Figure 2 appended to this description

illustre schématiquement un exemple d'architecture de ce type, c'est-àdire une architecture "NUMA". Pour simplifier le dessin, on a supposé que le système de traitement de l'information 1' comprend seulement deux modules, Ma et Mb, du type "SMP" précité, et que les deux modules étaient identiques. Il doit cependant être bien compris que le système de traitement de l'information 1' peut comporter un  schematically illustrates an example of architecture of this type, that is to say an architecture "NUMA". To simplify the drawing, it has been assumed that the information processing system 1 ′ comprises only two modules, Ma and Mb, of the aforementioned "SMP" type, and that the two modules are identical. It should however be clearly understood that the information processing system 1 ′ may include a

4 27679384 2767938

plus grand nombre de modules et que les modules Ma et Mb,  greater number of modules and than the Ma and Mb modules,

peuvent être différents (notamment en ce qui concerne le nombre d'unités centrales).  may be different (particularly with regard to the number of central processing units).

Le module Ma comprend donc quatre unités centrales 10a à 13a, et une mémoire centrale 14a. De même, le module Mb comprend quatre unités centrales 10b à 13b, et une mémoire centrale 14b. Les deux mémoires 14a et 14b, (et de façon plus générale les n mémoires centrales) communiquent entre elles à l'aide de ce qui est appelé un "lien" 2, généralement via des10 antémémoires (dites memory cache en anglais) dites éloignées a et 15b, respectivement. Le lien 2 ne se résume pas à de simples liaisons physiques mais comprend des circuits  The module Ma therefore comprises four central units 10a to 13a, and a central memory 14a. Similarly, the module Mb includes four central units 10b to 13b, and a central memory 14b. The two memories 14a and 14b, (and more generally the n central memories) communicate with each other using what is called a "link" 2, generally via cache memories (called memory cache in English) said to be distant a and 15b, respectively. Link 2 is not just about physical links but includes circuits

électroniques divers classiques (circuits de commande, d'interface, etc.), qu'il est inutile de décrire plus avant.  various conventional electronics (control circuits, interfaces, etc.), which it is unnecessary to describe further.

On comprend aisément que, dans une telle architecture, si une application s'exécute dans le module Ma, par exemple, le temps d'accès à la mémoire "proche" 14a (accès en local) est, a priori, inférieur au temps d'accès à la mémoire "éloignée" 14b située dans le module Mb, ce quelle que soit l'unité centrale 10a à 13a, concernée. Il est notamment nécessaire de passer par le lien 2, lorsque les  It is easy to understand that, in such an architecture, if an application is executed in the module Ma, for example, the access time to the "near" memory 14a (local access) is, a priori, less than the time d access to the “remote” memory 14b located in the module Mb, whatever the central unit 10a to 13a, concerned. It is particularly necessary to go through link 2, when the

données sont physiquement stockées dans un autre module, ce qui augmente sensiblement le temps de transfert.  data is physically stored in another module, which significantly increases the transfer time.

Dans les systèmes de traitement de l'information  In information processing systems

modernes, l'allocation de la mémoire pour une application donnée s'effectue sur la base d'un espace mémoire virtuel.  Modern memory allocation for a given application is based on virtual memory space.

Cette allocation est placée sous la commande du système d'exploitation ou "OS" (de l'anglo-saxon "Operating System"). On effectue ensuite une correspondance dynamique entre30 l'espace mémoire virtuel et la mémoire physique. Pour ce faire, on utilise classiquement des tables de correspondance d'adresses. On parle de "mapping" dynamique, selon l'expression anglo-saxonne couramment utilisée. Différents types de configurations de mémoires ont été proposés: organisation par régions ou par segments. Pour fixer les  This allocation is placed under the control of the operating system or "OS" (from the Anglo-Saxon "Operating System"). We then perform a dynamic correspondence between the virtual memory space and the physical memory. To do this, address correspondence tables are conventionally used. We speak of dynamic "mapping", according to the Anglo-Saxon expression commonly used. Different types of memory configurations have been proposed: organization by regions or by segments. To fix the

27679382767938

idées, dans ce qui suit, sans en limiter en quoi que ce soit  ideas, in what follows, without limiting anything

la portée de l'invention, on se placera dans le cas d'une configuration du type "segment".  the scope of the invention, we will place ourselves in the case of a configuration of the "segment" type.

De façon plus précise, dans l'art connu, la correspondance dynamique précitée ou "mapping" s'effectue selon des règles communes à toutes les applications quels qu'en soient leurs types, sans tenir compte de la localisation de la mémoire physique. De façon pratique, si un processus veut accéder à une adresse virtuelle et qu'aucune10 entrée dans la table de correspondance d'adresses n'est trouvée, il y a génération d'une exception qui se formalise par la détection d'un défaut de page. Le terme "page" peut être défini de façon plus générale comme étant une "plage d'adresses contiguës". Cependant, pour des raisons de simplification, le terme "page" sera utilisé dans ce qui suit. Un dispositif appelé gestionnaire attribue alors de la  More precisely, in the known art, the aforementioned dynamic correspondence or "mapping" is carried out according to rules common to all the applications whatever their types, without taking into account the location of the physical memory. In practice, if a process wants to access a virtual address and no entry in the address correspondence table is found, an exception is generated which is formalized by the detection of a fault in page. The term "page" can be defined more generally as a "range of contiguous addresses". However, for reasons of simplification, the term "page" will be used in the following. A device called manager then allocates

mémoire physique suite à cette détection, ce selon les règles communes précitées. Cette méthode d'allocation simple est tout à fait adaptée pour les machines classiques "SMP" du20 type "UMA" précité, puisque le temps moyen d'accès à la mémoire est uniforme.  physical memory following this detection, according to the aforementioned common rules. This simple allocation method is entirely suitable for conventional "SMP" machines of the aforementioned "UMA" type, since the average time of access to the memory is uniform.

Par contre, lorsqu'il s'agit d'une architecture du type "NUMA", telle que décrite en regard de la figure 2, pour laquelle le temps d'accès n'est plus uniforme, le besoin se25 fait sentir de disposer d'un procédé d'allocation de mémoire qui minimise l'impact négatif sur les performances du système. Dans l'art connu, des procédés ont été proposés en ce sens. A titre d'exemple, on a proposé de modifier les règles d'allocation de mémoire en vue d'obtenir une optimisation, mais les règles une fois modifiées restent identiques pour toutes les applications. En outre, ce procédé présente des inconvénients supplémentaires. Les règles modifiées peuvent s'avérer avantageuses pour une application donnée, mais35 inappropriées, voire dangereuses pour une autre. On a  On the other hand, when it is an architecture of the "NUMA" type, as described with reference to FIG. 2, for which the access time is no longer uniform, the need arises for having 'a memory allocation process that minimizes the negative impact on system performance. In the known art, methods have been proposed in this sense. As an example, it has been proposed to modify the memory allocation rules in order to obtain an optimization, but the rules once modified remain identical for all the applications. In addition, this method has additional drawbacks. The modified rules may prove advantageous for one application, but35 inappropriate, even dangerous for another. We have

6 27679386 2767938

également proposé des "API" particuliers (de l'anglo-saxon "Application programmable Interface" ou interface programmable pour application) adaptées pour définir un algorithme particulier associé à une application donnée, en5 vue d'effectuer la correspondance ("mapping") entre l'espace mémoire virtuel et la mémoire physique, mais il est alors nécessaire de modifier, à la fois, les applications correspondantes et la partie résidente du système d'exploitation ("kernel"). Cette méthode ne peut donc pas10 s'appliquer, notamment, aux programmes existants. En tout  also proposed specific "APIs" (from the Anglo-Saxon "Application Programmable Interface" or programmable interface for application) adapted to define a particular algorithm associated with a given application, in order to carry out the correspondence ("mapping") between virtual memory space and physical memory, but it is then necessary to modify both the corresponding applications and the resident part of the operating system ("kernel"). This method cannot therefore be applied10, in particular, to existing programs. In all

état de cause, elle manque de souplesse et son efficacité est limitée.  However, it lacks flexibility and its effectiveness is limited.

L'invention se fixe donc pour objet un procédé d'allocation de mémoire pour un système de traitement de l'information à accès non uniforme de la mémoire centrale, notamment du type "NUMA" précité, qui vise à répondre aux  The subject of the invention is therefore a method of allocating memory for an information processing system with non-uniform access to the central memory, in particular of the aforementioned "NUMA" type, which aims to respond to the

besoins qui se font sentir pour cette architecture particulière et qui ne présentent pas les inconvénients des procédés de l'art connu. En particulier, il n'est pas20 nécessaire de modifier les applications existantes.  needs which are felt for this particular architecture and which do not have the drawbacks of the processes of the known art. In particular, there is no need to modify existing applications.

Pour ce faire, l'allocation de mémoire s'effectue en fonction du profil propre à chaque application, c'est-à-dire  To do this, memory allocation is made according to the profile specific to each application, that is to say

en mettant en oeuvre un jeu de règles d'allocation tenant compte de ce profil.  by implementing a set of allocation rules taking this profile into account.

Dans un mode de réalisation préféré, l'allocation de mémoire s'effectue en outre en tenant compte du type de  In a preferred embodiment, the memory allocation is also carried out taking into account the type of

défaut de page. En effet, lors de son exécution, une application se subdivise en différents objets tels que du texte, des données, de la mémoire partagée, etc., qui30 utilisent l'espace global de mémoire du système différemment.  page fault. Indeed, during its execution, an application is subdivided into different objects such as text, data, shared memory, etc., which use the global memory space of the system differently.

L'invention permet donc d'optimiser également les accès  The invention therefore also makes it possible to optimize access

mémoire en fonction de ce paramètre.  memory according to this parameter.

L'invention a donc pour objet un procédé d'allocation d'emplacements de mémoire physique par mise en correspondance  The subject of the invention is therefore a method of allocating physical memory locations by mapping

7 27679387 2767938

avec au moins une plage d'adresses contiguës de mémoire dans un espace d'adressage virtuel associée à une application logicielle déterminée, l'application étant en cours d'exécution dans un système de traitement de l'information5 comprenant une unité de mémoire à accès non uniforme et utilisant plusieurs types de mémoire virtuelle, ladite mise en correspondance s'effectuant par scrutation d'une table de correspondance d'adresses, caractérisé en ce qu'il comprend une étape consistant à lier ladite application logicielle10 déterminée à des règles d'allocation de mémoire choisies parmi un jeu de règles prédéfinies, et en ce que, lorsque ladite table de correspondance d'adresses ne comporte pas d'entrée pour une plage d'adresses contiguës de mémoire d'adresse virtuelle associée à ladite application logicielle15 déterminée, il comprend une étape de génération d'une exception et une étape subséquente d'allocation d'un  with at least one range of contiguous memory addresses in a virtual address space associated with a given software application, the application being running in an information processing system5 comprising an access memory unit non-uniform and using several types of virtual memory, said matching being effected by scanning an address correspondence table, characterized in that it comprises a step consisting in linking said determined software application10 to rules for memory allocation chosen from a set of predefined rules, and in that, when said address correspondence table does not include an entry for a range of contiguous addresses of virtual address memory associated with said determined software application15, it includes a step of generating an exception and a subsequent step of allocating a

emplacement de mémoire physique selon une desdites règles d'allocation de mémoire, le choix de la règle étant assujetti a un profil desdits types de mémoire virtuelle utilisés par20 l'application logicielle déterminée.  location of physical memory according to one of said memory allocation rules, the choice of the rule being subject to a profile of said types of virtual memory used by the determined software application.

L'invention sera mieux comprise et d'autres caractéristiques et avantages apparaîtront à la lecture de la  The invention will be better understood and other characteristics and advantages will appear on reading the

description qui suit en référence aux figures annexées, parmi lesquelles:  description which follows with reference to the appended figures, among which:

- la figure 1 illustre schématiquement une architecture de système de traitement de l'information à accès de mémoire uniforme dite "UMA"; - la figure 2 illustre schématiquement une architecture de système de traitement de l'information à accès de mémoire non uniforme dite "NUMA"; les figures 3a et 3b illustrent schématiquement les accès à la mémoire pour deux exemples d'applications logicielles; - la figure 4 illustre un exemple de subdivision d'une application logicielle; - la figure 5 illustre schématiquement l'allocation d'un emplacement de mémoire selon l'art connu, lors de la génération d'un défaut de page; - et les figures 6a et 6b illustrent schématiquement l'allocation d'un emplacement de mémoire selon l'invention, lors de la génération d'un défaut de page. Pour fixer les idées, sans en limiter en quoi que ce soit la portée, on se placera dans le contexte d'un système  - Figure 1 schematically illustrates an information processing system architecture with uniform memory access called "UMA"; - Figure 2 schematically illustrates an information processing system architecture with non-uniform memory access called "NUMA"; FIGS. 3a and 3b schematically illustrate the accesses to the memory for two examples of software applications; - Figure 4 illustrates an example of subdivision of a software application; - Figure 5 schematically illustrates the allocation of a memory location according to the known art, when generating a page fault; - And Figures 6a and 6b schematically illustrate the allocation of a memory location according to the invention, when generating a page fault. To fix ideas, without limiting their scope in any way, we will place ourselves in the context of a system

de traitement de l'information dont le système d'exploitation10 est du type "UNIX" (marque déposée) ou similaire, sauf mention contraire.  information processing whose operating system10 is of the "UNIX" (registered trademark) or similar type, unless otherwise stated.

Pour les applications fonctionnant sous cet environnement, l'espace d'adressage virtuel peut être divisé en différents types et notamment les types suivants: - le texte ou le texte programme (code exécutable) - les données initialisées; - les données modifiées; - les "stacks" ou piles; le "heap", c'est-à-dire l'allocation dynamique (tables, etc.); - la mémoire partagée;  For applications operating in this environment, the virtual address space can be divided into different types and in particular the following types: - text or program text (executable code) - initialized data; - the modified data; - "stacks" or batteries; "heap", that is to say dynamic allocation (tables, etc.); - shared memory;

- les bibliothèques partagées.- shared libraries.

Lors du déroulement d'une application, celle-ci utilise les différents types de mémoire du système également  During the course of an application, it uses the different types of system memory also

de façon différente. L'ensemble des types de mémoire virtuelle utilisés définit un profil propre à l'application.  In a different way. The set of virtual memory types used defines an application-specific profile.

En outre, une application ou une nouvelle instance de la même application peut s'exécuter dans l'un ou l'autre des modules Ma ou Mb, du système de la figure 2. Ce qui est vrai pour une30 même application, l'est encore plus pour deux applications de profils différents.  In addition, an application or a new instance of the same application can run in either of the modules Ma or Mb, of the system of FIG. 2. What is true for the same application, is even more for two applications with different profiles.

9 27679389 2767938

Les figures 3a et 3b illustrent schématiquement deux types d'applications, à savoir une "mini-base de données"  Figures 3a and 3b schematically illustrate two types of applications, namely a "mini-database"

("minidatabase") et une base de données plus traditionnelle.  ("minidatabase") and a more traditional database.

On a représenté sur ces deux figures la mémoire globale du système par la référence unique Mem. Dans le premier cas, illustré par la figure 3a, lors d'une période d'initialisation, les accès sont cantonnés à un espace d'adressage représenté symboliquement par la zone Zini, située arbitrairement sur la gauche de la figure 3a.10 Puis, les accès s'effectuent dans un espace d'adressage, symbolisé par une zone Zf, également d'étendue restreinte et  These two figures show the overall memory of the system by the unique reference Mem. In the first case, illustrated by FIG. 3a, during an initialization period, the accesses are confined to an address space symbolically represented by the Zini zone, located arbitrarily on the left of FIG. 3a.10 Then, the accesses are made in an address space, symbolized by a zone Zf, also of restricted extent and

supposée connexe à la zone Zini, dans l'exemple décrit sur la figure 3a. Les emplacements de mémoire physique, pour cette application particulière, peuvent donc être cantonnés dans un15 seul module, et plus précisément en local.  assumed to be related to the Zini zone, in the example described in FIG. 3a. The physical memory locations, for this particular application, can therefore be confined in a single module, and more precisely locally.

Ce n'est généralement pas le cas pour une base de données classique, comme illustré par la figure 3b. Les accès  This is generally not the case for a conventional database, as illustrated in Figure 3b. The accesses

peuvent s'étendre à tout l'espace mémoire, comme le symbolisent les flèches représentées sur la figure 3b. Il20 s'ensuit que les emplacements de la mémoire physique occupée sont généralement distribués sur deux modules ou plus.  can extend to the entire memory space, as symbolized by the arrows shown in Figure 3b. It follows that the locations of the occupied physical memory are generally distributed over two or more modules.

En outre, comme il a été indiqué, pour une même application, l'espace mémoire virtuel se subdivise en différents types de segments: texte, données, etc. A titre d'exemple non limitatif, lorsqu'une application donnée Appli s'exécute, ses différents composants sont partitionnés en segments d'espace virtuels: Texte T, Données Da (de différents types), piles St, mémoire partagée Shm, fichiers Fi, etc., comme illustré par la figure 4.30 Classiquement, un dispositif gestionnaire H, (ou "handler" selon la terminologie anglo- saxonne couramment utilisée),  In addition, as indicated, for the same application, the virtual memory space is subdivided into different types of segments: text, data, etc. By way of nonlimiting example, when a given application Appli is executed, its various components are partitioned into virtual space segments: Text T, Data Da (of different types), Stacks, shared memory Shm, Fi files , etc., as illustrated in FIG. 4.30 Conventionally, a manager device H, (or "handler" according to the English terminology commonly used),

attribue à ces segments de mémoire virtuels des emplacements dans la mémoire physique globale Mem du système.  allocates to these virtual memory segments locations in the global physical memory Mem of the system.

On va maintenant décrire le mécanisme d'allocation de mémoire physique sur détection d'un défaut de page.  We will now describe the physical memory allocation mechanism on detection of a page fault.

On a indiqué précédemment qu'une application en cours d'exécution utilise les différents type de mémoire de façon également différente. De même, une application qui se déroule initialement dans un module donné (par exemple figure 2: Ma)  It was previously indicated that a running application uses the different types of memory equally. Similarly, an application that runs initially in a given module (for example Figure 2: Ma)

peut se continuer dans un autre (par exemple figure 2: Mb), ou une instance supplémentaire de cette application peut se créer et s'exécuter dans un module différent.  can continue in another one (for example figure 2: Mb), or an additional instance of this application can be created and run in a different module.

Si on suppose qu'un applicatif tente d'effectuer une instruction particulière, par exemple une instruction de chargement, ou "lload", à une adresse virtuelle déterminée, par exemple l'adresse arbitraire "10x 2000", l'unité centrale (par exemple figure 2: 10a) dans laquelle se déroule le  If it is assumed that an application is trying to carry out a particular instruction, for example a loading instruction, or "lload", at a determined virtual address, for example the arbitrary address "10x 2000", the central processing unit (for example figure 2: 10a) in which the

processus en cours décode l'instruction et une table de correspondance d'adresses (non représentée) va être scrutée.  current process decodes the instruction and an address mapping table (not shown) will be scanned.

Si l'entrée recherchée ne s'y trouve pas, il y a émission d'une exception qui se traduit par un défaut de page détecté par le gestionnaire H. Il est donc nécessaire, dans ces20 circonstances, d'attribuer un emplacement de mémoire physique pour l'adresse virtuelle "10x 2000" ci-dessus.  If the entry sought is not found there, an exception is thrown which results in a page fault detected by the H manager. It is therefore necessary, in these circumstances, to allocate a memory location physical for the virtual address "10x 2000" above.

Dans l'art connu, il n'existe qu'un seul type d'allocation. En d'autres termes, les règles utilisées sont uniques quel que soit le profil propre à l'application et le25 type de segment. Le gestionnaire H affecte donc un emplacement de mémoire physique conformément aux règles d'allocation utilisées par le système. Par exemple, conformément à ces règles, l'allocation s'effectue systématiquement dans la mémoire physique locale, c'est-à- 30 dire dans la mémoire 14a, si le processus se déroulait dans le module Ma sous la conduite d'une des unités centrales 10a à 13a. Cette règle peut s'avérer intéressante pour un segment de type texte, mais non optimisée pour d'autres types de segments.  In the known art, there is only one type of allocation. In other words, the rules used are unique regardless of the profile specific to the application and the type of segment. The manager H therefore assigns a physical memory location in accordance with the allocation rules used by the system. For example, in accordance with these rules, the allocation is systematically carried out in the local physical memory, that is to say in the memory 14a, if the process took place in the module Ma under the supervision of one of the central processing units 10a to 13a. This rule can be interesting for a text type segment, but not optimized for other types of segments.

11 276793811 2767938

Le mécanisme ci-dessus est illustré par la figure 5. L'applicatif Appli génère un défaut de page Fp et le  The above mechanism is illustrated in Figure 5. The Appli application generates an Fp page fault and the

gestionnaire H attribue un emplacement de la mémoire physique Mem (dont les partitions, Zl à Zn, ont été symbolisées par5 des traits en pointillé sur la figure 5), selon des règles prédéfinies.  manager H assigns a location of the physical memory Mem (whose partitions, Zl to Zn, have been symbolized by 5 dashed lines in FIG. 5), according to predefined rules.

Comme il a été indiqué également, ces règles peuvent  As noted above, these rules may

être modifiées, mais elles restent les mêmes pour toutes les applications et tous les types de segments.  be modified, but they remain the same for all applications and all types of segments.

Tout au contraire, selon l'invention, l'allocation de la mémoire physique Mem va être réalisée conformément à un  On the contrary, according to the invention, the allocation of the physical memory Mem will be carried out in accordance with a

jeu de règles qui tiennent compte, d'une part, du profil propre à l'application, et d'autre part, dans un mode de réalisation préféré, du type de défaut de page.  set of rules which take into account, on the one hand, the profile specific to the application, and on the other hand, in a preferred embodiment, the type of page fault.

Les figures 6a et 6b illustrent le mécanisme d'allocation de la mémoire physique selon l'invention.  Figures 6a and 6b illustrate the allocation mechanism of the physical memory according to the invention.

Selon une caractéristique principale du procédé selon l'invention, on lie chaque application à un jeu de règles d'allocation prédéfinies. Pour ce faire, il est nécessaire20 d'associer chaque application Applix (x étant un indice arbitraire) à un profil particulier. Cette association s'effectue sous la conduite du système d'exploitation, ou "OS", qui le mémorise. La figure 6a illustre schématiquement le mécanisme de l'association. On a représenté, sur cette figure 6a, une application particulière Applix. Comme il a été indiqué, cette application Applix utilise divers types de mémoire: texte, données, etc. Sur la figure 6a, on a représenté six types de mémoire que l'on a référencé tyMl à tyM6. On lie chaque type de mémoire, tyMl à tyM6, à une règle30 d'allocation, parmi un jeu de règles prédéfinies que l'on précisera ci-après. Ces règles ont été référencées R1 à R6, étant entendu qu'il ne s'agit pas forcément d'un jeu de règles disjointes. En d'autres termes, à titre d'exemple, les règles R2 et R3 pourraient être identiques, même si les types  According to a main characteristic of the method according to the invention, each application is linked to a set of predefined allocation rules. To do this, it is necessary20 to associate each Applix application (x being an arbitrary index) with a particular profile. This association is carried out under the guidance of the operating system, or "OS", which stores it. Figure 6a schematically illustrates the mechanism of the association. This FIG. 6a shows a particular Applix application. As mentioned, this Applix application uses various types of memory: text, data, etc. In FIG. 6a, six types of memory have been represented which have been referenced tyM1 to tyM6. Each type of memory, tyM1 to tyM6, is linked to an allocation rule30, from a set of predefined rules which will be specified below. These rules have been referenced R1 to R6, it being understood that this is not necessarily a set of disjoint rules. In other words, for example, the rules R2 and R3 could be identical, even if the types

12 276793812 2767938

de mémoire tyM2 et tyM3 sont eux distincts. Le profil  memory tyM2 and tyM3 are separate. The profile

d'allocation de mémoire Pax qui vient d'être défini est lié par une association Ax à une application particulière Applix. Le profil Pax est donc une table à deux entrées: types de5 mémoire tyMi et règles Rj choisies parmi un jeu de règles prédéfinies, i et j étant des indices arbitraires.  memory allocation Pax which has just been defined is linked by an Ax association to a particular Applix application. The Pax profile is therefore a table with two entries: types of memory tyMi and rules Rj chosen from a set of predefined rules, i and j being arbitrary indices.

De façon générale, on peut définir une fonction association comme suit:  In general, an association function can be defined as follows:

Association_pa(Applix, Pax).Association_pa (Applix, Pax).

Le profil d'allocation de mémoire lié à une application donnée peut être défini à l'initialisation de  The memory allocation profile linked to a given application can be defined when initializing

l'exécution de cette application ou, de façon dynamique, redéfini à tout moment pendant l'exécution, ce qui augmente la souplesse du procédé.  the execution of this application or, dynamically, redefined at any time during execution, which increases the flexibility of the process.

Sur la figure 6b, les règles d'allocation prédéfinies ont été repérées sous la référence générale Rg. Lors de l'apparition d'une exception qui se traduit par un défaut de page, Fp, c'est-à-dire lorsque la table de correspondance d'adresses ne contient pas d'entrée pour une adresse20 virtuelle, le gestionnaire H recherche le profil Pax propre à l'application Applix tel qu'il vient d'être défini. Il détermine aussi, dans un mode de réalisation préféré, le type de défaut de page Fp. A partir de ces deux paramètres, il attribue des emplacements en mémoire physique, Zl à Zn, soit25 locaux (dans le même module), soit distants (dans un autre module), soit encore répartis sur l'ensemble de la mémoire Mem. Cette répartition, dépendant du profil Pax de l'application Applix et du type de défaut de page Fp, est symbolisée, sur la figure 6b, par des flèches multiples30 (contrairement à la flèche unique du procédé selon l'art  In FIG. 6b, the predefined allocation rules have been identified under the general reference Rg. When an exception occurs which results in a page fault, Fp, that is to say when the address correspondence table does not contain any entry for a virtual address, the manager H searches the Pax profile specific to the Applix application as it has just been defined. It also determines, in a preferred embodiment, the type of page fault Fp. From these two parameters, it allocates locations in physical memory, Zl to Zn, either 25 local (in the same module), or remote (in another module), or even distributed over the whole of the memory Mem. This distribution, depending on the Pax profile of the Applix application and the type of page fault Fp, is symbolized, in FIG. 6b, by multiple arrows30 (unlike the single arrow of the method according to the art

connu représenté sur la figure 5).  known shown in Figure 5).

La fonction d'adressage Fad peut donc se formaliser de la façon suivante:  The Fad addressing function can therefore be formalized as follows:

Fad = F(Pax, Type Fp).Fad = F (Pax, Type Fp).

13 276793813 2767938

Le choix de la règle à appliquer pour l'allocation de mémoire est donc le résultat de la combinaison de deux paramètres. De façon plus précise, une application donnée Applix spécifie quelles règles d'allocation elle requière pour chaque type de segment de mémoire virtuel, parmi un jeu de  The choice of the rule to apply for memory allocation is therefore the result of the combination of two parameters. More precisely, a given Applix application specifies which allocation rules it requires for each type of virtual memory segment, from among a set of

règles prédéfinies. A titre d'exemple, les types de segments suivants sont couramment utilisés: segments "clients", segments de "mapping", segments "permanents", segments de10 "mémoire de travail" et segments de "bibliothèques partagées".  predefined rules. For example, the following types of segments are commonly used: "customer" segments, "mapping" segments, "permanent" segments, "working memory" segments and "shared library" segments.

Pour fixer les idées et sans que cela soit limitatif en quoi que ce soit de la portée de l'invention, on peut définir le jeu de règles suivant, que l'on repère par les15 codes précisés ci-dessous: - "P STRIPE": allocation en bandes parmi tout l'espace mémoire physique formant la ressource d'une application donnée, réparties dans la mémoire locale (même module) ou distante (modules différents); - "PLOCAL": la mémoire physique allouée est dans le même module que l'unité centrale ayant provoqué le défaut de page; - "P RANDOM": l'allocation de mémoire physique s'effectue au hasard parmi l'espace mémoire possible, à l'aide d'une fonction stochastique; - "P NONE" ou "PDEFAULT": il n'y a pas de règle d'allocation de mémoire physique spécifique, on utilise alors  To fix the ideas and without this being limiting in any way of the scope of the invention, the following set of rules can be defined, which are identified by the codes specified below: - "P STRIPE" : allocation in bands among all the physical memory space forming the resource of a given application, distributed in the local memory (same module) or remote (different modules); - "PLOCAL": the allocated physical memory is in the same module as the central unit which caused the page fault; - "P RANDOM": the allocation of physical memory is carried out at random among the possible memory space, using a stochastic function; - "P NONE" or "PDEFAULT": there is no specific physical memory allocation rule, we then use

des règles par défaut propres au système.  system-specific default rules.

A titre d'exemple, l'allocation du type "P_STRIPE", définie ci-dessus, convient a priori pour des segments de type "mémoire partagée", alors que l'allocation de type "P LOCAL" convient a priori pour des segments du type  By way of example, the allocation of the "P_STRIPE" type, defined above, is suitable a priori for segments of the "shared memory" type, while the allocation of the "P LOCAL" type is suitable a priori for segments like

"mémoire de travail"."working memory".

14 276793814 2767938

Si l'on se reporte de nouveau à la figure 6a, et si l'on suppose que les types de mémoires utilisés par une application particulière Applix sont les suivants: "texte", "données", "heap", "mémoire partagée", "stack" et "bibliothèque partagée", le profil d'allocation de mémoire associé à l'application Applix sera décrit, par exemple, par  If we refer again to Figure 6a, and if we suppose that the types of memories used by a particular Applix application are the following: "text", "data", "heap", "shared memory" , "stack" and "shared library", the memory allocation profile associated with the Applix application will be described, for example, by

la "TABLE I" placée en fin de la présente description.  "TABLE I" placed at the end of this description.

Le procédé selon l'invention permet ainsi d'optimiser au mieux les allocations de mémoires physiques aux besoins réels des applications, plus précisément des profils particuliers des applications. Les performances du système de traitement de l'information s'en trouvent améliorées, car les temps d'accès à la ressource mémoire sont optimisés, pour le moins si l'on raisonne en temps moyens d'accès. Un autre15 avantage est la possibilité de lier une application quelconque au jeu de règles d'allocation de mémoire  The method according to the invention thus makes it possible to optimize the allocation of physical memories to the real needs of the applications, more precisely the particular profiles of the applications. The performance of the information processing system is improved, because the access times to the memory resource are optimized, at least if we reason in terms of average access times. Another advantage is the possibility of linking any application to the memory allocation rule set.

prédéfinies sans qu'il soit nécessaire de la modifier ou de la recompiler, comme ce serait le cas si on utilisait une nouvelle "API", ainsi qu'il a été indiqué.  predefined without the need to modify or recompile it, as would be the case if we used a new "API", as indicated.

En outre, le procédé présente une grande souplesse. Il permet notamment de fonctionner selon l'art connu. Par exemple, si des règles d'allocation ne sont pas spécifiées ou requises par une application donnée, les règles par défaut peuvent être utilisées ("PNONE" ou "P_DEFAULT"). D'autre25 part, une application "fille" peut "hériter" des règles d'allocation de mémoire associée à l'application "mère" qui  In addition, the process has great flexibility. It allows in particular to operate according to the known art. For example, if allocation rules are not specified or required by a given application, the default rules can be used ("PNONE" or "P_DEFAULT"). On the other hand, a "daughter" application can "inherit" the memory allocation rules associated with the "mother" application which

l'a créée. Il peut en être de même d'une instance supplémentaire d'une application, qui se déroule par exemple dans un module différent.  created it. It can be the same for an additional instance of an application, which takes place for example in a different module.

A la lecture de ce qui précède, on constate aisément  On reading the above, we can easily see

que l'invention atteint bien les buts qu'elle s'est fixés.  that the invention does achieve the goals it has set for itself.

Elle permet notamment d'adapter au mieux l'utilisation de l'espace mémoire aux besoins réels des applications, c'est-à-dire en tenant compte de leurs profils  In particular, it makes it possible to best adapt the use of memory space to the real needs of applications, that is to say taking into account their profiles.

27679382767938

spécifiques et des différents types de mémoire qu'elles utilisent. Il doit être clair cependant que l'invention n'est pas limitée aux seuls exemples de réalisations explicitement décrits. Notamment, le procédé ne saurait se limiter au seul jeu de règles prédéfinies d'allocation de mémoire explicité  specific types of memory they use. It should be clear, however, that the invention is not limited to only the examples of embodiments explicitly described. In particular, the method cannot be limited to the sole set of predefined memory allocation rules explained.

dans la description.in the description.

Il doit être clair aussi que, bien que particulièrement adaptée pour des architectures multiprocesseurs de type "NUMA" précité, on ne saurait cantonner l'invention à ce seul type d'applications. Le  It should also be clear that, although particularly suitable for multiprocessor architectures of the aforementioned "NUMA" type, the invention cannot be confined to this single type of application. The

procédé de l'invention s'applique avantageusement à tout système de traitement de l'information dont les accès à la mémoire physique ne s'effectuent pas de façon uniforme, que15 cette mémoire soit distribuée ou non entre plusieurs machines ou modules.  The method of the invention advantageously applies to any information processing system whose accesses to the physical memory are not carried out uniformly, whether this memory is distributed or not between several machines or modules.

Enfin, bien que particulièrement adapté à un système d'exploitation du type "UNIX" ou similaire, il est clair que  Finally, although particularly suitable for an operating system of the "UNIX" type or similar, it is clear that

l'on ne peut cantonner le procédé de l'invention à ce seul20 environnement.  the process of the invention cannot be confined to this environment alone.

16 276793816 2767938

TABLE ITABLE I

Types de mémoire Règles texte "P STRIPE" données "P LOCAL" "heap" "P LOCAL" mémoire partagée "PSTRIPE" "stack" "P LOCAL" bibliothèque partagée "PRANDOM"  Memory types Text rules "P STRIPE" data "P LOCAL" "heap" "P LOCAL" shared memory "PSTRIPE" "stack" "P LOCAL" shared library "PRANDOM"

17 276793817 2767938

Claims (7)

REVENDICATIONS 1. Procédé d'allocation d'emplacements de mémoire physique par mise en correspondance avec au moins une plage d'adresses contiguës de mémoire dans un espace d'adressage virtuel associée à une application logicielle déterminée (Applix), l'application (Applix) étant en cours d'exécution dans un système de traitement de l'information (1') comprenant une unité de mémoire à accès non uniforme (Mem)  1. Method for allocating physical memory locations by mapping to at least one range of contiguous memory addresses in a virtual address space associated with a specific software application (Applix), the application (Applix) being running in an information processing system (1 ') comprising a non-uniform access memory unit (Mem) et utilisant plusieurs types de mémoire virtuelle (tyM1-  and using several types of virtual memory (tyM1- tyM6), ladite mise en correspondance s'effectuant par scrutation d'une table de correspondance d'adresses, caractérisé en ce qu'il comprend une étape consistant à lier ladite application logicielle déterminée (Applix) à des règles d'allocation de mémoire (Rg) choisies parmi un jeu de règles prédéfinies, et en ce que, lorsque ladite table de correspondance d'adresses ne comporte pas d'entrée pour une plage d'adresses contiguës de mémoire d'adresse virtuelle associée à ladite application logicielle déterminée (Applix), il comprend une étape de génération d'une exception (Fp) et une étape subséquente d'allocation d'un emplacement (Zl-Zn) de mémoire physique selon une desdites règles d'allocation de mémoire (Rg), le choix de la règle étant assujetti à un profil desdits types de mémoire virtuelle utilisés (tyMl- tyM6) par l'application  tyM6), said mapping being carried out by scanning an address mapping table, characterized in that it comprises a step consisting in linking said determined software application (Applix) to memory allocation rules ( Rg) chosen from a set of predefined rules, and in that, when said address correspondence table does not include an entry for a range of contiguous addresses of virtual address memory associated with said determined software application (Applix ), it comprises a step of generating an exception (Fp) and a subsequent step of allocating a location (Zl-Zn) of physical memory according to one of said memory allocation rules (Rg), the choice of the rule being subject to a profile of said types of virtual memory used (tyMl- tyM6) by the application logicielle déterminée (Applix).determined software (Applix). 2. Procédé selon la revendication 1, caractérisé en ce que lesdites plages d'adresses contiguës de mémoire virtuelle se subdivisant en plusieurs catégories provoquant des types d'exception (Fp) distincts, il comprend une étape supplémentaire consistant à déterminer ledit type d'exception (Fp), et en ce que ladite règle d'allocation de mémoire est une fonction de la combinaison dudit profil et  2. Method according to claim 1, characterized in that said contiguous address ranges of virtual memory being subdivided into several categories causing distinct types of exception (Fp), it comprises an additional step consisting in determining said type of exception (Fp), and in that said memory allocation rule is a function of the combination of said profile and dudit type exception (Fp).said exception type (Fp). 18 276793818 2767938 3. Procédé selon les revendications 1 ou 2,  3. Method according to claims 1 or 2, caractérisé en ce que ledit espace d'adressage virtuel est  characterized in that said virtual address space is organisé en segments.organized into segments. 4. Procédé selon l'une quelconque des revendications  4. Method according to any one of the claims 1 à 3, caractérisé en ce que ledit système de traitement de l'information (1') étant constitué d'au moins deux modules distincts (Ma, Mb), comprenant chacun au moins un processeur (10a-13a, lOb-13b) et une unité de mémoire physique dite locale (14a, 14b), les unités de mémoire situées en dehors d'un module étant dites éloignées, ledit jeu de règles prédéfinies (Rg) comprend au moins les règles d'allocation de mémoire spécifiques suivantes, sur la génération d'une exception (Fp): - une première règle allouant un emplacement de mémoire exclusivement dans ladite unité de mémoire locale; - une deuxième règle allouant un emplacement de mémoire par distribution, selon des tranches, dans ladite unité de mémoire locale et lesdites unités éloignées; - et une troisième règle allouant un emplacement de mémoire, au hasard, dans ladite unité de mémoire locale  1 to 3, characterized in that said information processing system (1 ') consisting of at least two separate modules (Ma, Mb), each comprising at least one processor (10a-13a, lOb-13b) and a so-called local physical memory unit (14a, 14b), the memory units located outside a module being said to be remote, said set of predefined rules (Rg) comprises at least the following specific memory allocation rules, on the generation of an exception (Fp): - a first rule allocating a memory location exclusively in said local memory unit; - a second rule allocating a memory location by distribution, according to slices, in said local memory unit and said remote units; - and a third rule allocating a memory location, at random, in said local memory unit et lesdites unités éloignées.and said remote units. 5. Procédé selon la revendication 4, caractérisé en ce qu'il comprend au moins une règle supplémentaire d'allocation de mémoire prédéterminée, dite par défaut, de manière à ce que, lorsque ladite application logicielle déterminée (Applix) ayant provoqué une exception (Fp) n'est liée à aucune desdites règles spécifiques, l'allocation de  5. Method according to claim 4, characterized in that it comprises at least one additional rule for allocating predetermined memory, known as by default, so that, when said determined software application (Applix) having caused an exception ( Fp) is not linked to any of these specific rules, the allocation of mémoire s'effectue selon ladite règle par défaut.  memory is performed according to said default rule. 6. Procédé selon la revendication 4, caractérisé en ce que ladite application logicielle déterminée (Applix)  6. Method according to claim 4, characterized in that said determined software application (Applix) 19 276793819 2767938 comportant au moins un segment de mémoire partagée avec d'autres applications, accédé de façon sensiblement égale par l'ensemble desdits modules (Ma, Mb), ladite étape subséquente d'allocation d'un emplacement de mémoire physique (Mem) s'effectue conformément à ladite deuxième règle, l'allocation étant effectuée par distribution sur  comprising at least one segment of memory shared with other applications, accessed substantially equally by all of said modules (Ma, Mb), said subsequent step of allocating a physical memory location (Mem) is carried out in accordance with said second rule, the allocation being made by distribution over lesdites unités de mémoire locale et éloignées (14a, 14b).  said local and remote memory units (14a, 14b). 7. Procédé selon la revendication 4, caractérisé en ce que ladite application logicielle déterminée (Applix) comportant au moins un segment de mémoire de travail, accédé en local dans l'un desdits modules (Ma, Mb), ladite étape subséquente d'allocation d'un emplacement de mémoire physique (Mem) s'effectue conformément à ladite première règle, l'allocation étant effectuée exclusivement dans  7. Method according to claim 4, characterized in that said determined software application (Applix) comprising at least one working memory segment, accessed locally in one of said modules (Ma, Mb), said subsequent allocation step of a physical memory location (Mem) is carried out in accordance with said first rule, the allocation being carried out exclusively in ladite unité de mémoire locale (14a ou 14b).  said local memory unit (14a or 14b).
FR9711025A 1997-09-04 1997-09-04 MEMORY ALLOCATION METHOD IN A MULTIPROCESSOR INFORMATION PROCESSING SYSTEM Expired - Fee Related FR2767938B1 (en)

Priority Applications (9)

Application Number Priority Date Filing Date Title
FR9711025A FR2767938B1 (en) 1997-09-04 1997-09-04 MEMORY ALLOCATION METHOD IN A MULTIPROCESSOR INFORMATION PROCESSING SYSTEM
FR9808058A FR2767939B1 (en) 1997-09-04 1998-06-25 MEMORY ALLOCATION METHOD IN A MULTIPROCESSOR INFORMATION PROCESSING SYSTEM
AU90793/98A AU9079398A (en) 1997-09-04 1998-08-26 Method for allocating memory in a multiprocessor data processing system
PCT/FR1998/001855 WO1999012099A1 (en) 1997-09-04 1998-08-26 Method for allocating memory in a multiprocessor data processing system
BR9806150-0A BR9806150A (en) 1997-09-04 1998-08-26 Process for allocating memory in a multiprocessor data processing system
CN98801271A CN1237252A (en) 1997-09-04 1998-08-26 Method for allocating memory in multiprocessor data processing system
JP11516373A JP2000506659A (en) 1997-09-04 1998-08-26 Method of allocating memory in a multiprocessor data processing system
EP98942788A EP0935781A1 (en) 1997-09-04 1998-08-26 Method for allocating memory in a multiprocessor data processing system
US09/145,642 US6272612B1 (en) 1997-09-04 1998-09-02 Process for allocating memory in a multiprocessor data processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9711025A FR2767938B1 (en) 1997-09-04 1997-09-04 MEMORY ALLOCATION METHOD IN A MULTIPROCESSOR INFORMATION PROCESSING SYSTEM

Publications (2)

Publication Number Publication Date
FR2767938A1 true FR2767938A1 (en) 1999-03-05
FR2767938B1 FR2767938B1 (en) 2001-08-24

Family

ID=9510770

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9711025A Expired - Fee Related FR2767938B1 (en) 1997-09-04 1997-09-04 MEMORY ALLOCATION METHOD IN A MULTIPROCESSOR INFORMATION PROCESSING SYSTEM

Country Status (1)

Country Link
FR (1) FR2767938B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0750255A2 (en) * 1995-06-23 1996-12-27 Data General Corporation Operating system for a non-uniform memory access multiprocessor system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0750255A2 (en) * 1995-06-23 1996-12-27 Data General Corporation Operating system for a non-uniform memory access multiprocessor system

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JAYASHREE RAMANATHAN ET AL: "CRITICAL FACTORS IN NUMA MEMORY MANAGEMENT *", INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING SYSTEMS, ARLINGTON, TEXAS, MAY 20 - 24, 1991, no. CONF. 11, 20 May 1991 (1991-05-20), INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS, pages 500 - 507, XP000221890 *
KRUEGER K ET AL: "TOOLS FOR THE DEVELOPMENT OF APPLICATION-SPECIFIC VIRTUAL MEMORY MANAGEMENT", ACM SIGPLAN NOTICES, vol. 28, no. 10, 1 October 1993 (1993-10-01), pages 48 - 64, XP000411717 *
LAROWE JR R P ET AL: "PAGE PLACEMENT POLICIES FOR NUMA MULTIPROCESSORS", JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING, vol. 11, no. 2, 1 February 1991 (1991-02-01), pages 112 - 129, XP000201935 *

Also Published As

Publication number Publication date
FR2767938B1 (en) 2001-08-24

Similar Documents

Publication Publication Date Title
FR2767939A1 (en) MEMORY ALLOCATION METHOD IN A MULTIPROCESSOR INFORMATION PROCESSING SYSTEM
FR2910985A1 (en) Client physical address translating apparatus i.e. bare platform hardware, for partitioning information processing system e.g. personal computer, has logics translating two addresses to other addresses in partitions, respectively
EP2259181A1 (en) Methods and systems for providing a level of access to a computing device
WO2010111151A2 (en) Virtual non-uniform memory architecture for virtual machines
EP2350836A1 (en) Device for managing data buffers in a memory space divided into a plurality of memory elements
US20190384638A1 (en) Method, device and computer program product for data processing
EP0604310B1 (en) Information system and method for cache memory management
FR2786288A1 (en) Resource allocation in computer systems with multiple resources
Ghazimirsaeed et al. Communication‐aware message matching in MPI
FR2683061A1 (en) MEMORY SEGMENTATION SYSTEM.
EP0251861B1 (en) Memory management unit
FR2767938A1 (en) Memory allocation method in multiprocessor computer system
Mohapatra Authentication of sub-numa clustering effect on intel skylake for memory latency and bandwidth
EP1344137A1 (en) Method and device for making secure data processing
FR2609195A1 (en) METHOD FOR MANAGING ANEMEMOIRES ASSOCIATED WITH PROCESSORS IN A SINGLE-BUS MULTIPROCESSOR ARCHITECTURE AND DATA PROCESSING SYSTEM OPERATING IN SUCH A METHOD
CN116450966A (en) Cache access method and device, equipment and storage medium
US7299467B2 (en) Method and system for minimizing memory access latency in a computer system
FR3048525A1 (en) MEMORY MANAGEMENT METHOD WITHIN A SET OF INFORMATION PROCESSING DEVICES
EP2666092A1 (en) Multi-core system and method of data consistency
FR3129499A1 (en) Dynamic management of a memory firewall
EP1155389B1 (en) Device for secure access to a chip card applications
FR2952731A1 (en) METHOD AND DEVICE FOR OPTIMIZING THE EXECUTION OF SOFTWARE APPLICATIONS IN A MULTIPROCESSOR ARCHITECTURE COMPRISING SEVERAL INPUT / OUTPUT CONTROLLERS AND SECONDARY CALCULATION UNITS
EP1585028A1 (en) Method and apparatus for computing addresses of a program stored in segmented memory
EP2652624B1 (en) Method, computer program, and device for managing memory access in a numa multiprocessor architecture
EP3256948B1 (en) Method of executing a request to exchange data between first and second disjoint physical addressing spaces of chip or card circuits

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20160531