FR2962567A1 - METHOD FOR OPTIMIZING MEMORY ACCESS, WHEN RE-EXECUTING AN APPLICATION, IN A MICROPROCESSOR COMPRISING SEVERAL LOGICAL HEARTS AND COMPUTER PROGRAM USING SUCH A METHOD - Google Patents

METHOD FOR OPTIMIZING MEMORY ACCESS, WHEN RE-EXECUTING AN APPLICATION, IN A MICROPROCESSOR COMPRISING SEVERAL LOGICAL HEARTS AND COMPUTER PROGRAM USING SUCH A METHOD Download PDF

Info

Publication number
FR2962567A1
FR2962567A1 FR1055681A FR1055681A FR2962567A1 FR 2962567 A1 FR2962567 A1 FR 2962567A1 FR 1055681 A FR1055681 A FR 1055681A FR 1055681 A FR1055681 A FR 1055681A FR 2962567 A1 FR2962567 A1 FR 2962567A1
Authority
FR
France
Prior art keywords
execution
memory
application
main application
data
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
FR1055681A
Other languages
French (fr)
Other versions
FR2962567B1 (en
Inventor
Philippe Couvee
Yann Kalemkarian
Benoit Welterlen
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 Fr
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Bull SA
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
Priority to FR1055681A priority Critical patent/FR2962567B1/en
Application filed by Bull SA filed Critical Bull SA
Priority to PCT/FR2011/051616 priority patent/WO2012007675A1/en
Priority to EP11743309.4A priority patent/EP2593872B1/en
Priority to US13/581,279 priority patent/US10025633B2/en
Priority to JP2013515950A priority patent/JP2013534670A/en
Priority to BR112012017426A priority patent/BR112012017426A2/en
Publication of FR2962567A1 publication Critical patent/FR2962567A1/en
Application granted granted Critical
Publication of FR2962567B1 publication Critical patent/FR2962567B1/en
Priority to US16/026,520 priority patent/US10838768B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/461Saving or restoring of program or task context
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code

Landscapes

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

Abstract

L'invention a notamment pour objet l'optimisation d'accès mémoire, lors de la reprise d'exécution d'une application principale, dans un microprocesseur comprenant plusieurs cœurs logiques et permettant l'exécution simultanée d'au moins deux processus dans un environnement comprenant une mémoire partagée organisée de façon hiérarchique comprenant des parties haute et basse, une donnée étant copiée de la partie basse vers la haute pour être traitée par l'application. L'ordinateur est adapté à interrompre l'exécution de l'application principale. Lors d'une interruption de l'exécution de cette application, une référence à une donnée mémorisée dans une partie haute de la mémoire est mémorisée, cette donnée devant être utilisée pour permettre l'exécution de l'application. Après une programmation d'une reprise d'exécution de l'application et avant sa reprise, cette donnée est accédée dans une partie basse de la mémoire selon la référence pour être mémorisée dans une partie haute de la mémoire.The invention particularly relates to the optimization of memory access, when the execution of a main application is resumed, in a microprocessor comprising several logical cores and allowing the simultaneous execution of at least two processes in an environment comprising a hierarchically organized shared memory comprising high and low portions, data being copied from the bottom to the high for processing by the application. The computer is adapted to interrupt the execution of the main application. During an interruption of the execution of this application, a reference to a data stored in an upper part of the memory is stored, this data to be used to allow the execution of the application. After programming a restart execution of the application and before its recovery, this data is accessed in a lower part of the memory according to the reference to be stored in a high part of the memory.

Description

La présente invention concerne les accès mémoire dans des microprocesseurs et plus particulièrement un procédé d'optimisation d'accès mémoire, lors de la reprise d'exécution d'une application, dans un microprocesseur comprenant plusieurs coeurs logiques, par exemple un microprocesseur mettant en oeuvre une technologie connue sous le nom de simultaneous multi-threading, notamment dans le contexte du calcul haute performance, ainsi qu'un programme d'ordinateur mettant en oeuvre un tel procédé. Le calcul haute performance, aussi appelé HPC (sigle de High Performance Computing en terminologie anglo-saxonne) se développe pour la recherche universitaire comme pour l'industrie, notamment dans des domaines techniques tels que l'aéronautique, l'énergie, la climatologie et les sciences de la vie. La modélisation et la simulation permettent en particulier de réduire les coûts de développement, d'accélérer la mise sur le marché de produits innovants, plus fiables et moins consommateurs d'énergie. Pour les chercheurs, le calcul haute performance est devenu un moyen d'investigation indispensable. Ces calculs sont généralement mis en oeuvre sur des systèmes de traitement de données appelés clusters. Un cluster comprend typiquement un ensemble de noeuds interconnectés. Certains noeuds sont utilisés pour effectuer des tâches de calcul (noeuds de calcul), d'autres pour stocker des données (noeuds de stockage) et un ou plusieurs autres gèrent le cluster (noeuds d'administration). Chaque noeud est par exemple un serveur mettant en oeuvre un système d'exploitation tel que Linux (Linux est une marque). La connexion entre les noeuds est, par exemple, réalisée à l'aide de liens Ethernet ou Infiniband (Ethernet et Infiniband sont des marques). The present invention relates to memory accesses in microprocessors and more particularly to a memory access optimization method, when the execution of an application is resumed, in a microprocessor comprising a plurality of logical cores, for example a microprocessor implementing a technology known as simultaneous multi-threading, especially in the context of high performance computing, and a computer program implementing such a method. High Performance Computing, also known as High Performance Computing (HPC), is developing for both academic research and industry, particularly in technical fields such as aeronautics, energy, climatology and the sciences of life. In particular, modeling and simulation make it possible to reduce development costs and speed up the launch of innovative, more reliable and less energy-consuming products. For researchers, high performance computing has become an indispensable means of investigation. These calculations are generally implemented on data processing systems called clusters. A cluster typically comprises a set of interconnected nodes. Some nodes are used to perform compute tasks (compute nodes), others to store data (storage nodes), and one or more others manage the cluster (administrative nodes). Each node is for example a server implementing an operating system such as Linux (Linux is a brand). The connection between the nodes is, for example, made using Ethernet or Infiniband links (Ethernet and Infiniband are trademarks).

La figure 1 illustre schématiquement un exemple d'une topologie 100 d'un cluster, de type fat-tree. Ce dernier comprend un ensemble de noeuds génériquement référencés 105. Les noeuds appartenant à l'ensemble 110 sont ici des noeuds de calcul tandis que les noeuds de l'ensemble 115 sont des noeuds de service (noeuds de stockage et noeuds d'administration). Les noeuds de calcul peuvent être regroupés en sous-ensembles 120 appelés îlots de calcul, l'ensemble 115 étant appelé îlot de service. Figure 1 schematically illustrates an example of a topology 100 of a cluster, type fat-tree. The latter comprises a set of generically referenced nodes 105. The nodes belonging to the set 110 are here computation nodes while the nodes of the set 115 are service nodes (storage nodes and administration nodes). The computing nodes can be grouped into subsets 120 called computing islands, the set 115 being called service island.

Les noeuds sont reliés les uns aux autres par des commutateurs (appelés switch en terminologie anglo-saxonne), par exemple de façon hiérarchique. Dans l'exemple illustré sur la figure 1, les noeuds sont connectés à des commutateurs 125 de premier niveau qui sont eux-mêmes reliés à des commutateurs 130 de deuxième niveau qui sont à leur tour reliés à des commutateurs 135 de troisième niveau. Comme illustré sur la figure 2, chaque noeud comprend généralement un ou plusieurs microprocesseurs, des mémoires locales ainsi qu'une interface de communication. Plus précisément, le noeud 200 comporte ici un bus de communication 202 auquel sont reliés : - des unités centrales de traitement ou microprocesseurs 204 (ou CPU, sigle de Central Processing Unit en terminologie anglo-saxonne) ; - des composants de mémoire vive 206 (RAM, acronyme de Random Access Memory en terminologie anglo-saxonne) comportant des registres adaptés à enregistrer des variables et paramètres créés et modifiés au cours de l'exécution de programmes (comme illustré, chaque composant de mémoire vive peut être associé à un microprocesseur) ; et, - des interfaces de communication 208 adaptées à transmettre et à recevoir des données. Le noeud 200 dispose en outre ici de moyens de stockage interne 25 210, tels que des disques durs, pouvant notamment comporter le code exécutable de programmes. Le bus de communication permet la communication et l'interopérabilité entre les différents éléments inclus dans le noeud 200 ou reliés à lui. Les microprocesseurs 204 commandent et dirigent l'exécution des 30 instructions ou portions de code logiciel du ou des programmes. Lors de la mise sous tension, le ou les programmes qui sont stockés dans une mémoire non volatile, par exemple un disque dur, sont transférés dans la mémoire vive 206. The nodes are connected to each other by switches (called switches in English terminology), for example hierarchically. In the example illustrated in FIG. 1, the nodes are connected to first level switches 125 which are themselves connected to second level switches 130 which are in turn connected to third level switches 135. As illustrated in FIG. 2, each node generally comprises one or more microprocessors, local memories as well as a communication interface. More specifically, the node 200 here comprises a communication bus 202 to which are connected: central processing units or microprocessors 204 (or CPU, acronym for Central Processing Unit in English terminology); components of RAM 206 (Random Access Memory in English) with registers adapted to record variables and parameters created and modified during the execution of programs (as illustrated, each memory component alive can be associated with a microprocessor); and, communication interfaces 208 adapted to transmit and receive data. In this case, the node 200 also has internal storage means 210, such as hard disks, which can in particular comprise the executable code of programs. The communication bus allows communication and interoperability between the various elements included in the node 200 or connected to it. The microprocessors 204 control and direct the execution of the instructions or portions of software code or programs. When powering up, the program or programs that are stored in a non-volatile memory, for example a hard disk, are transferred into the RAM 206.

Pour améliorer les performances de chaque noeud, les microprocesseurs utilisés sont souvent des microprocesseurs mufti-coeurs, c'est-à-dire des microprocesseurs comprenant plusieurs coeurs pouvant être utilisés en parallèle. To improve the performance of each node, the microprocessors used are often multi-core microprocessors, that is to say microprocessors comprising several cores that can be used in parallel.

Par ailleurs, le temps d'exécution d'instructions dans un microprocesseur étant généralement plus court que le temps d'accès à des données en mémoire, des mémoires particulières, appelées mémoires caches sont généralement utilisées. Ainsi, typiquement, il existe une hiérarchie mémoire selon laquelle différentes mémoires sont organisées selon leur temps d'accès et leur coût et, par conséquent, leur taille. Une telle organisation est représentée sur la figure 3. La mémoire comprend ici six types de mémoires organisés de façon hiérarchique : une mémoire de masse, une mémoire centrale, une mémoire cache de niveau L3, une mémoire cache de niveau L2, une mémoire cache de niveau L1 et un registre. Comme illustré, plus le type de la mémoire est cher et rapide, plus la taille de la mémoire correspondante est limitée. Une optimisation possible de l'exécution d'une application consiste alors à faire remonter des données dans la hiérarchie mémoire au cours de l'exécution de l'application, d'une mémoire de bas niveau, par exemple une mémoire de masse, vers une mémoire cache de haut niveau, de préférence une mémoire cache de niveau L1, ou un registre, de telle sorte que les données devant être utilisées soient aussi proches que possible du microprocesseur lorsque ce dernier en a besoin. Une telle optimisation, connue sous le nom de prefetching en terminologie anglo-saxonne, peut être explicite et réalisée dans l'application elle-même à l'aide d'instructions correspondantes. Elle peut également être implicite et réalisée par un compilateur lors de la compilation de l'application ou par le microprocesseur lui-même lors de l'exécution de l'application. Cependant, alors que cette technologie permet d'améliorer significativement les performances d'un microprocesseur, sa mise en oeuvre peut être perturbée par l'exécution de programmes annexes. En effet, lors de l'exécution d'un programme principal, des interruptions sont souvent générées pour exécuter, notamment, des tâches annexes du système d'exploitation appelées démons. Suite à une interruption et lors de l'exécution d'un démon, les mémoires caches sont alors optimisées pour l'exécution de ce démon. Par conséquent, après l'exécution du démon et lorsque le microprocesseur exécute à nouveau l'application principale, les mémoires caches contiennent des données relatives au démon et il existe un temps de latence du à la remontée, dans la hiérarchie mémoire, de données liées à l'application principale. L'invention permet de résoudre au moins un des problèmes exposés précédemment. Moreover, since the execution time of instructions in a microprocessor is generally shorter than the access time to data in memory, particular memories, called cache memories, are generally used. Thus, typically, there is a memory hierarchy according to which different memories are organized according to their access time and cost and, consequently, their size. Such an organization is represented in FIG. 3. The memory here comprises six types of memories arranged in a hierarchical manner: a mass memory, a central memory, an L3 level cache, a L2 level cache, a cache memory of level L1 and a register. As illustrated, the more the type of the memory is expensive and fast, the more the size of the corresponding memory is limited. A possible optimization of the execution of an application then consists in putting data back in the memory hierarchy during the execution of the application, from a low-level memory, for example a mass memory, to a memory. high-level cache, preferably a L1 cache, or a register, so that the data to be used is as close as possible to the microprocessor when the latter needs it. Such an optimization, known as prefetching in English terminology, may be explicit and carried out in the application itself by means of corresponding instructions. It can also be implicit and performed by a compiler when compiling the application or by the microprocessor itself when running the application. However, while this technology significantly improves the performance of a microprocessor, its implementation can be disrupted by the execution of ancillary programs. Indeed, during the execution of a main program, interruptions are often generated to execute, in particular, ancillary tasks of the operating system called daemons. Following an interrupt and during the execution of a daemon, caches are then optimized for the execution of this daemon. Therefore, after the execution of the daemon and when the microprocessor executes the main application again, the cache memories contain data relating to the daemon and there is a latency from the ascent, in the memory hierarchy, of related data. to the main application. The invention solves at least one of the problems discussed above.

L'invention a ainsi pour objet un procédé pour ordinateur d'optimisation d'accès mémoire dans un microprocesseur dudit ordinateur lors de la reprise d'exécution d'une application principale, ledit microprocesseur permettant l'exécution simultanée d'au moins deux processus dans un environnement comprenant une mémoire partagée organisée de façon hiérarchique comprenant au moins une partie haute et une partie basse, au moins une donnée étant copiée de la partie basse vers la partie haute pour être traitée par ladite application principale, ledit ordinateur étant adapté à interrompre l'exécution de ladite application principale, ce procédé comprenant les étapes suivantes, - lors d'une interruption de l'exécution de ladite application principale, o mémorisation d'au moins une référence à au moins une donnée mémorisée dans une partie haute de ladite mémoire, ladite au moins une donnée devant être utilisée pour permettre l'exécution de ladite application principale ; - après une programmation d'une reprise d'exécution de ladite application principale et avant la reprise d'exécution de ladite application principale, o accès à ladite au moins une donnée dans une partie basse de ladite mémoire selon ladite au moins une référence ; et, o mémorisation de ladite au moins une donnée dans une partie haute de ladite mémoire. 30 Le procédé selon l'invention permet ainsi, par anticipation, d'accéder à des données devant être traitées par une application lors de sa reprise, réduisant ainsi le temps de cette reprise. Le procédé comprend en outre, de préférence, une étape d'accès à au moins un paramètre de configuration de ladite application principale, ladite étape d'accès à ladite au moins une donnée étant réalisée selon ledit au moins un paramètre. De façon avantageuse, le procédé comprend en outre une étape préliminaire de déclaration durant laquelle ladite au moins une application principale est déclarée privilégiée et une étape de définition dudit au moins paramètre. Une telle déclaration permet de déclencher le procédé d'optimisation d'accès mémoire de façon sélective selon les applications exécutées. Selon un mode de réalisation particulier, le procédé comprend en outre une étape de vérification dudit au moins un paramètre, ledit au moins un paramètre définissant une taille de bloc de données, ladite au moins une référence comprenant au moins une adresse mémoire. Le procédé permet ainsi d'éviter des erreurs d'accès mémoire. Toujours selon un mode de réalisation particulier, ledit processeur permet la mise en oeuvre d'au moins deux coeurs logiques, chacun desdits au moins deux processus pouvant être exécuté par un coeur logique, lesdits au moins deux coeurs logiques partageant ladite mémoire partagée, ladite application principale étant exécutée par l'un desdits au moins deux coeurs logiques, des instructions relatives à l'exécution desdites étapes d'accès et de mémorisation de ladite au moins une donnée étant transmises à l'autre desdits au moins deux coeurs logiques. Le procédé selon l'invention permet ainsi d'optimiser l'accès aux données nécessaire à la reprise d'exécution de l'application principale sans dégrader les performances d'exécution des applications. The invention thus relates to a method for computer optimization of memory access in a microprocessor of said computer when resuming execution of a main application, said microprocessor allowing the simultaneous execution of at least two processes in an environment comprising a hierarchically organized shared memory comprising at least an upper part and a lower part, at least one piece of data being copied from the bottom part to the top part to be processed by said main application, said computer being adapted to interrupt the execution of said main application, this method comprising the following steps, - during an interruption of the execution of said main application, storing at least one reference to at least one data item stored in an upper part of said memory , said at least one datum to be used to enable the execution of said application p principal; after scheduling a resumption of execution of said main application and before resuming execution of said main application, accessing said at least one datum in a lower part of said memory according to said at least one reference; and storing said at least one datum in an upper part of said memory. The method according to the invention thus makes it possible, in anticipation, to access data to be processed by an application during its recovery, thus reducing the time for this recovery. The method preferably further comprises a step of accessing at least one configuration parameter of said main application, said step of accessing said at least one data being performed according to said at least one parameter. Advantageously, the method further comprises a preliminary declaration step during which said at least one main application is declared privileged and a step of defining said at least one parameter. Such a declaration makes it possible to trigger the memory access optimization process selectively according to the applications executed. According to a particular embodiment, the method further comprises a step of verifying said at least one parameter, said at least one parameter defining a data block size, said at least one reference comprising at least one memory address. The method thus makes it possible to avoid memory access errors. Still according to a particular embodiment, said processor allows the implementation of at least two logical cores, each of said at least two processes being able to be executed by a logical core, said at least two logical cores sharing said shared memory, said application principal being executed by one of said at least two logical cores, instructions relating to the execution of said steps of access and storage of said at least one data being transmitted to the other of said at least two logical cores. The method according to the invention thus makes it possible to optimize the access to data necessary for the resumption of execution of the main application without degrading the performance of the applications.

Ledit microprocesseur est, de préférence, un microprocesseur mufti-coeurs, lesdits au moins deux coeurs logiques étant mis en oeuvre dans un même coeur physique de telle sorte qu'ils partagent une partie importante de la hiérarchie mémoire utilisée afin d'optimiser l'accès aux données et donc la reprise d'exécution d'une application principale. Selon un mode de réalisation particulier, lesdites instructions de mémorisation de ladite au moins une référence à ladite au moins une donnée et d'accès à ladite au moins une donnée sont initiées par une couche logique dudit ordinateur, par exemple une couche d'un système d'exploitation mis en oeuvre dans ledit ordinateur. Le procédé selon l'invention est ainsi facile à mettre en oeuvre et ne requiert que peu de modifications. L'invention a également pour objet un programme d'ordinateur comprenant des instructions adaptées à la mise en oeuvre de chacune des étapes du procédé décrit précédemment lorsque ledit programme est exécuté sur un ordinateur ainsi qu'un moyen de stockage d'informations, amovible ou non, partiellement ou totalement lisible par un ordinateur ou un microprocesseur comportant des instructions de code d'un programme d'ordinateur pour l'exécution de chacune des étapes du procédé décrit précédemment. Les avantages procurés par ce programme d'ordinateur et ce moyen de stockage sont similaires à ceux évoqués précédemment. D'autres avantages, buts et caractéristiques de la présente invention ressortent de la description détaillée qui suit, faite à titre d'exemple non limitatif, 20 au regard des dessins annexés dans lesquels : - la figure 1 illustre un exemple de topologie d'un cluster ; - la figure 2 illustre un exemple d'architecture d'un noeud d'un cluster ; - la figure 3 représente schématiquement l'organisation 25 hiérarchique de mémoires dans un système de traitement de données ; - la figure 4, comprenant les figures 4a et 4b, illustre le concept général de l'invention selon lequel des données sont préchargées de façon anticipée ; - la figure 5 illustre un exemple de séquences d'instructions dans un 30 coeur de processeur comprenant deux coeurs logiques mettant en oeuvre l'invention ; - la figure 6, comprenant les figures 6a à 6d, représente des extraits du contenu d'une mémoire cache de niveau L1 du coeur du microprocesseur décrit en référence à la figure 5, à différents instants ; - la figure 7, comprenant les figure 7a et 7b, illustre schématiquement certaines étapes d'un exemple d'algorithme mis en oeuvre dans un système d'exploitation pour offrir une fonction de memory feeding à une application principale ; - la figure 8 illustre certaines étapes d'un exemple d'algorithme mis en oeuvre par un processus fils de chargement mémoire permettant d'optimiser 10 la reprise d'exécution d'une application principale ; et, - la figure 9 représente de façon simplifiée l'architecture logique d'un microprocesseur d'un noeud appartenant à un cluster, le microprocesseur comprenant ici deux coeurs mettant en oeuvre chacun deux coeurs logiques. De façon générale, l'invention vise un mécanisme de chargement 15 anticipé de mémoire cache pour charger des données liées à l'exécution d'une première application, durant l'exécution d'une seconde application exécutée suite à une interruption de l'exécution de la première application, afin de permettre une reprise d'exécution optimale de la première application. Il est rappelé ici que certains microprocesseurs comprennent 20 plusieurs coeurs logiques. Lorsque ces microprocesseurs comprennent plusieurs coeurs physiques, chacun d'eux est généralement adapté à mettre en oeuvre plusieurs coeurs logiques. Cette technologie, appelée, en terminologie anglo-saxonne, simultaneous multi-threading (ou hyperthreading selon l'implémentation d'Intel, Intel est une marque), permet à plusieurs processus 25 élémentaires (appelés threads en terminologie anglo-saxonne) d'être exécutés en parallèle dans un coeur physique d'un microprocesseur. Un coeur physique mettant en oeuvre cette technologie est ainsi généralement perçu comme un double-coeur par la couche logique exploitant le coeur physique. Un coeur physique mettant en oeuvre cette technologie comprend 30 des ressources partagées entre les coeurs logiques et des ressources propres à chaque coeur logique. Les ressources partagées sont typiquement les unités d'exécution, les mémoires caches et les interfaces de bus. Les ressources propres sont notamment les registres de données et d'instructions du coeur logique, de segments et de contrôle ainsi que le contrôleur d'interruption (appelé APIC, sigle d'Advanced Programmable Interrupt Controller en terminologie anglo-saxonne). Said microprocessor is preferably a microprocessor mufti-cores, said at least two logical cores being implemented in the same physical core so that they share a large part of the memory hierarchy used to optimize access data and thus resume execution of a main application. According to a particular embodiment, said instructions for storing said at least one reference to said at least one datum and accessing said at least one datum are initiated by a logical layer of said computer, for example a layer of a system operating system implemented in said computer. The method according to the invention is thus easy to implement and requires only a few modifications. The invention also relates to a computer program comprising instructions adapted to the implementation of each of the steps of the method described above when said program is executed on a computer and a means of storing information, removable or no, partially or completely readable by a computer or a microprocessor comprising code instructions of a computer program for the execution of each of the steps of the method described above. The benefits provided by this computer program and storage means are similar to those mentioned above. Other advantages, aims and features of the present invention will become apparent from the detailed description which follows, given by way of non-limiting example, with reference to the appended drawings, in which: FIG. 1 illustrates an example of a topology of a cluster; FIG. 2 illustrates an exemplary architecture of a node of a cluster; FIG. 3 schematically represents the hierarchical organization of memories in a data processing system; FIG. 4, comprising FIGS. 4a and 4b, illustrates the general concept of the invention according to which data are preloaded in advance; FIG. 5 illustrates an example of instruction sequences in a processor core comprising two logical cores embodying the invention; FIG. 6, comprising FIGS. 6a to 6d, represents extracts from the contents of a level L1 cache memory of the microprocessor core described with reference to FIG. 5, at different times; FIG. 7, comprising FIGS. 7a and 7b, schematically illustrates certain steps of an exemplary algorithm implemented in an operating system to offer a memory feeding function to a main application; FIG. 8 illustrates certain steps of an exemplary algorithm implemented by a memory load son process making it possible to optimize the execution restart of a main application; and FIG. 9 is a simplified representation of the logic architecture of a microprocessor of a node belonging to a cluster, the microprocessor here comprising two cores each implementing two logical cores. In general, the invention aims at a mechanism for prefetching cache memory to load data related to the execution of a first application, during the execution of a second application executed following an interruption of execution. of the first application, to allow an optimal execution of the first application. It is recalled here that some microprocessors include several logical cores. When these microprocessors comprise several physical cores, each of them is generally adapted to implement several logical cores. This technology, called, in English terminology, simultaneous multi-threading (or hyperthreading according to the Intel implementation, Intel is a trademark), allows several elementary processes (called threads in English terminology) to be run in parallel in a physical core of a microprocessor. A physical heart implementing this technology is thus generally perceived as a double-core by the logical layer exploiting the physical heart. A physical heart implementing this technology includes shared resources between logical cores and resources specific to each logical core. Shared resources are typically threads, cache memories, and bus interfaces. The own resources include the registers of data and instructions of the logical core, segments and control as well as the interrupt controller (called APIC, acronym of Advanced Programmable Interrupt Controller in English terminology).

Cependant, alors que cette technologie permet d'améliorer significativement les performances d'un microprocesseur pour des applications particulières, notamment des applications de traitement d'images, il a été observé que ces performances n'étaient que peu améliorées, voir dégradées, pour d'autres applications, notamment des applications de calcul scientifique. However, while this technology can significantly improve the performance of a microprocessor for particular applications, including image processing applications, it has been observed that these performances were only slightly improved, or degraded, for a particular purpose. other applications, including scientific computing applications.

Elle est donc généralement désactivée dans les clusters utilisés pour du calcul haute performance. Néanmoins, cette technologie permettant l'exécution d'un nombre restreint d'instructions par un coeur logique sans perturber l'exécution d'une autre application exécutée par un autre coeur logique, l'invention l'utilise pour permettre le chargement anticipé d'une mémoire cache lorsqu'une application annexe est exécutée. Ainsi, à un instant donné, un premier coeur logique est associé à l'exécution de l'application annexe tandis qu'un second coeur logique est utilisé pour charger une mémoire cache avec des données relatives à une application principale (c'est-à-dire une application privilégiée), de façon anticipée. Ainsi, selon l'invention, un premier processus, par exemple un processus applicatif de type HPC, est assisté d'un second processus, appelé processus fils, qui a pour fonction de ramener en mémoire cache des données nécessaires à l'exécution du premier processus après que celle-ci ait été interrompue. Les données sont ramenées en avance de phase pour optimiser la reprise de l'exécution du premier processus. Ces processus sont avantageusement mis en oeuvre dans deux coeurs logiques d'un coeur physique pour optimiser les performances d'exécution du premier processus sans augmenter les coûts liés aux composants matériels utilisés. Un tel mécanisme, pouvant être considéré comme un prefetching de transition, est ici appelé memory feeding. It is therefore generally disabled in clusters used for high performance computing. Nevertheless, this technology allows the execution of a small number of instructions by a logical core without disturbing the execution of another application executed by another logical core, the invention uses it to allow the anticipated loading of a cache memory when an add-on application is running. Thus, at a given moment, a first logical heart is associated with the execution of the auxiliary application while a second logical core is used to load a cache memory with data relating to a main application (ie say a privileged application), in advance. Thus, according to the invention, a first process, for example an HPC type application process, is assisted by a second process, called a child process, whose function is to bring back in cache memory the data necessary for the execution of the first process. process after it has been interrupted. The data is brought back in advance to optimize the resumption of the execution of the first process. These processes are advantageously implemented in two logical cores of a physical core to optimize the execution performance of the first process without increasing the costs associated with the hardware components used. Such a mechanism, which can be considered as a transition prefetching, is here called memory feeding.

La figure 4, comprenant les figures 4a et 4b, illustre le concept général de l'invention. Plus précisément, la figure 4a représente un diagramme de séquence lors de la reprise d'exécution d'une tâche dans un microprocesseur permettant la mise en oeuvre de deux coeurs logiques dont un coeur logique n'est pas utilisé tandis que la figure 4b représente un diagramme de séquence lors de la reprise d'exécution d'une tâche dans ce même microprocesseur lorsque les deux coeurs logiques sont utilisés pour mettre en oeuvre l'invention. Le processeur utilisé pour exécuter une application principale comprend ici un coeur physique 400 mettant en oeuvre deux coeurs logiques 405-1 et 405-2. Les lignes placées à droites du coeur 400 représentent, de façon temporelle, les tâches exécutées par chacun des coeurs logiques. La référence 410 désigne ici la profondeur de la hiérarchie mémoire. La partie inférieure représente la partie basse de la hiérarchie, c'est-à-dire la mémoire de bas niveau (la mémoire la plus distante du microprocesseur), tandis que la partie supérieure représente la partie haute de la hiérarchie, c'est-à-dire la mémoire de haut niveau (la mémoire la plus proche du microprocesseur). Ainsi, pour traiter une donnée non présente dans une mémoire de haut niveau, une instruction d'accès à cette donnée doit descendre la chercher dans une mémoire de plus bas niveau puis la remonter. Comme illustré sur la figure 4a, lorsque le coeur logique 405-2 n'est pas utilisé, le coeur logique 405-1 exécute toutes les tâches. Il est admis ici que l'exécution de l'application principale est interrompue à un instant donné (non représenté) pour exécuter une application annexe dont fait partie, par exemple, la tâche 415. Durant l'exécution de cette tâche, les mémoires caches contenant des données relatives à l'application principale se vident au profit de données relatives à l'application annexe. Ainsi, lors de la reprise de l'exécution de l'application principale, à l'instant référencé 420, la tâche 425 de l'application principale est suspendue durant une période référencée 430 correspondant au temps d'accès aux données nécessaires à l'exécution de la tâche. Le temps d'accès à ces données est ici matérialisé par la flèche (descente et montante) traversant la profondeur de la hiérarchie mémoire. Comme indiqué par la référence 425', l'exécution de l'application principale reprend dès que les données sont disponibles. Si les données recherchées ne sont généralement plus dans la mémoire la plus proche du microprocesseur, elles ne sont pas non plus systématiquement dans la mémoire la plus éloignée. Ainsi, la période 430 a une durée variable liée à la position des données recherchées dans la hiérarchie mémoire. Lorsque deux coeurs logiques d'un coeur physique sont utilisés pour mettre en oeuvre l'invention, l'un des coeurs logiques, par exemple le coeur logique 405-1, est utilisé pour exécuter l'application principale ainsi que les applications annexes, notamment les démons, tandis que l'autre coeur logique, ici le coeur logique 405-2, est utilisé pour exécuter une application liée à l'application principale et permettant un prefetching de transition. Comme illustré sur la figure 4b, une tâche 415 d'une application annexe peut être exécutée par le coeur logique 405-1 suite à l'interruption de l'exécution du programme principale. Parallèlement, le coeur logique 405-2 est utilisé pour charger dans une mémoire proche du microprocesseur, typiquement une mémoire cache de niveau L1, des données qui seront nécessaires à l'exécution de l'application principale lors de sa reprise. Cette tâche d'accès aux données permettant la reprise de l'exécution de l'application principale est ici référencée 435. Ainsi, lors de la reprise de l'exécution de l'application principale, référencée 440, les données nécessaires à son exécution sont présentes dans une mémoire à proximité du microprocesseur qui peut alors exécuter une tâche 445 de l'application principale sans attendre la disponibilité de données. Le temps d'accès à ces données, référencé 130', est un temps masqué par l'exécution d'applications annexes. Il ne nuit donc pas à l'exécution de l'application principale. Il est observé ici que le mode de coopération entre une application principale exécutée par un coeur logique et une application secondaire, exécutée par un second coeur logique, ayant pour objet le chargement de données relatives à cette application principale, peut être strict ou lâche. Lorsque le mode de coopération est strict, une synchronisation explicite entre les applications est nécessaire tandis que s'il est lâche, ces applications sont exécutées indépendamment l'une de l'autre, l'application secondaire de chargement de données pouvant connaître les besoins en termes de mémoire de l'application principale. Des références mémoires sont avantageusement utilisées pour permettre à l'application secondaire d'anticiper les accès mémoires de l'application principale afin de lui raccourcir le temps d'accès mémoire correspondant lors de la reprise de son exécution. La cartographie mémoire peut être obtenue à partir d'une analyse statique réalisée à partir des données issues de la compilation de l'application principale. Cette cartographie permet de désigner des blocs de mémoires qui, associés avec un découpage du temps, permettent d'anticiper les accès mémoire de l'application principale. La cartographie peut aussi être dynamique, déduite à partir de lecture de traces de contexte mémoire laissées par, l'application elle-même, par le code du changement de contexte du système d'exploitation du matériel ou via des mécanismes inter-processus. La figure 5 illustre un exemple de séquences d'instructions dans un coeur de processeur comprenant deux coeurs logiques mettant en oeuvre l'invention. La figure 6, décrite parallèlement à la figure 5 et comprenant les figures 6a à 6d, représente des extraits du contenu d'une mémoire cache de niveau L1 du coeur du microprocesseur décrit en référence à la figure 5, à différents instants. Sur la figure 5, les références 500-1 et 500-2 désignent des séquences d'instructions d'un premier et d'un second moteurs d'instructions, correspondant à un premier et un second coeurs logiques, respectivement. Le premier moteur d'instructions est utilisé pour l'exécution de plusieurs applications dont une application principale de calcul HPC et de tâches annexes du système d'exploitation. Le second moteur d'instructions est dédié à l'exécution d'une application secondaire permettant le chargement de données liées à une application principale exécutée par le premier moteur d'instructions, ici une application de calcul HPC. Entre les instants to et t1, les instructions exécutées par le coeur logique correspondant à la séquence d'instructions 500-1 sont des instructions de l'application principale de calcul HPC, référencées 505-1. Entre les instants t1 et t2, les instructions exécutées par le coeur logique correspondant à la séquence d'instructions 500-1 sont des instructions d'une tâche du système d'exploitation, référencées 510-1. Figure 4, including Figures 4a and 4b, illustrates the general concept of the invention. More precisely, FIG. 4a shows a sequence diagram during the resumption of execution of a task in a microprocessor allowing the implementation of two logical cores whose logical core is not used whereas FIG. sequence diagram when resuming execution of a task in this same microprocessor when the two logical cores are used to implement the invention. The processor used to execute a main application here comprises a physical core 400 implementing two logic cores 405-1 and 405-2. The lines placed to the right of the heart 400 represent, temporally, the tasks performed by each of the logical cores. The reference 410 here designates the depth of the memory hierarchy. The lower part represents the lower part of the hierarchy, ie the low-level memory (the most distant memory of the microprocessor), while the upper part represents the upper part of the hierarchy, that is to say ie the high-level memory (the closest memory to the microprocessor). Thus, in order to process data that is not present in a high-level memory, an access instruction to this datum must go down to find it in a lower-level memory and then raise it. As illustrated in FIG. 4a, when the logic core 405-2 is not used, the logic core 405-1 performs all the tasks. It is admitted here that the execution of the main application is interrupted at a given moment (not shown) to execute an auxiliary application which includes, for example, the task 415. During the execution of this task, the cache memories containing main application data are discarded in favor of application-related data. Thus, when resuming the execution of the main application, at the time referenced 420, the task 425 of the main application is suspended during a period referenced 430 corresponding to the access time to the data necessary for the execution of the task. The access time to these data is here materialized by the arrow (downward and upward) crossing the depth of the memory hierarchy. As indicated by reference 425 ', execution of the main application resumes as soon as the data is available. If the data sought are generally no longer in the memory closest to the microprocessor, they are also not systematically in the most distant memory. Thus, the period 430 has a variable duration related to the position of the searched data in the memory hierarchy. When two logical cores of a physical core are used to implement the invention, one of the logical cores, for example the logical core 405-1, is used to execute the main application as well as the associated applications, in particular the demons, while the other logical heart, here the 405-2 logical core, is used to execute an application related to the main application and allowing a transition prefetching. As illustrated in FIG. 4b, a task 415 of an additional application can be executed by the logic core 405-1 following the interruption of the execution of the main program. At the same time, the logic core 405-2 is used to load in a memory close to the microprocessor, typically a L1 cache, data that will be needed to execute the main application when it is resumed. This data access task allowing the resumption of the execution of the main application is here referenced 435. Thus, when resuming the execution of the main application, referenced 440, the data necessary for its execution are present in a memory near the microprocessor which can then perform a task 445 of the main application without waiting for the availability of data. The access time to this data, referenced 130 ', is a time masked by the execution of ancillary applications. It does not affect the execution of the main application. It is observed here that the mode of cooperation between a main application executed by a logical core and a secondary application, executed by a second logical core, for the purpose of loading data relating to this main application, may be strict or loose. When the mode of cooperation is strict, an explicit synchronization between the applications is necessary whereas if it is cowardly, these applications are executed independently of one another, the secondary application of data loading being able to know the needs in terms of memory of the main application. Memory references are advantageously used to allow the secondary application to anticipate the memory accesses of the main application in order to shorten the corresponding memory access time when resuming its execution. The memory map can be obtained from a static analysis made from data from the compilation of the main application. This mapping makes it possible to designate blocks of memories which, associated with a division of time, make it possible to anticipate the memory accesses of the main application. The cartography can also be dynamic, deduced from reading memory context traces left by the application itself, by the code of the context switch of the hardware operating system or via inter-process mechanisms. FIG. 5 illustrates an example of instruction sequences in a processor core comprising two logical cores embodying the invention. FIG. 6, described in parallel with FIG. 5 and comprising FIGS. 6a to 6d, represents extracts from the contents of a level L1 cache memory of the microprocessor core described with reference to FIG. 5, at different times. In Fig. 5, references 500-1 and 500-2 denote instruction sequences of a first and a second instruction engine corresponding to first and second logic cores, respectively. The first statement engine is used to run multiple applications including a main HPC compute application and related operating system tasks. The second instruction engine is dedicated to the execution of a secondary application for loading data related to a main application executed by the first instruction engine, here an HPC calculation application. Between times t1 and t1, the instructions executed by the logic core corresponding to the sequence of instructions 500-1 are instructions from the main HPC calculation application, referenced 505-1. Between times t1 and t2, the instructions executed by the logical heart corresponding to the sequence of instructions 500-1 are instructions of an operating system task, referenced 510-1.

A l'instant t1, un mécanisme de prefetching est mis en oeuvre, de façon standard, pour précharger des données relatives aux instructions 510-1 afin d'optimiser l'exécution de ces instructions. La mémoire cache de niveau L1 du coeur du microprocesseur comprend alors essentiellement des données relatives à l'application principale de calcul HPC préalablement exécutée ainsi que quelques données relatives à la tâche exécutée du système d'exploitation, comme illustré sur la figure 6a. En outre, l'application principale de calcul HPC étant référencée comme application privilégiée, le contexte d'exécution est mémorisé lorsque l'exécution de cette application est interrompue. En d'autres termes, les adresses des données présentes en mémoire cache sont mémorisées pour permettre leur chargement ultérieur, avant la reprise de l'exécution de cette application principale. Entre les instants t2 et t3, les instructions exécutées par le coeur logique correspondant à la séquence d'instructions 500-1 sont des instructions d'une première application annexe, référencées 515. De même, entre les instants t3 et t4, les instructions exécutées par le coeur logique correspondant à la séquence d'instructions 500-1 sont des instructions de la tâche du système d'exploitation précédemment mentionnée, référencées 510-2. De façon similaire, entre les instants t4 et t5, les instructions exécutées par le coeur logique correspondant à la séquence d'instructions 500-1 sont des instructions d'une deuxième application annexe, référencées 520. Entre les instants t5 et t6, les instructions exécutées par le coeur logique correspondant à la séquence d'instructions 500-1 sont des instructions de la tâche du système d'exploitation précédemment mentionnée, référencées 510-3. De façon similaire, entre les instants t6 et t7, les instructions exécutées par le coeur logique correspondant à la séquence d'instructions 500-1 sont des instructions d'une troisième application annexe, référencées 525. La mémoire cache de niveau L1 du coeur du microprocesseur comprend alors des données relatives à la tâche du système d'exploitation exécutée ainsi qu'aux première, deuxième et troisième applications annexes, comme illustré sur la figure 6b. Entre les instants to et t7, le coeur logique correspondant à la séquence d'instructions 500-2 n'exécute aucune instruction. A l'instant t7, le mécanisme de memory feeding, permettant le chargement anticipé de données relatives à une application principale avant la reprise de son exécution est mis en oeuvre. A cet instant, le coeur logique correspondant à la séquence d'instructions 500-2 exécute alors des instructions, référencées 530, pour charger en mémoire cache les données dont les adresses ont été mémorisées lors de l'interruption du programme principal. Ainsi, entre les instants t7 et t8, les instructions exécutées par le coeur logique correspondant à la séquence d'instructions 500-1 sont des instructions de la tâche du système d'exploitation précédemment mentionnée, référencées 510-4, tandis que les instructions exécutées par le coeur logique correspondant à la séquence d'instructions 500-2 sont des instructions permettant le chargement en mémoire cache des données dont les adresses ont été mémorisées lors de l'interruption du programme principal. At time t1, a prefetching mechanism is implemented, as a standard, for pre-loading data relating to instructions 510-1 in order to optimize the execution of these instructions. The level L1 cache memory of the microprocessor core then essentially comprises data relating to the main HPC calculation application previously executed as well as some data relating to the executed task of the operating system, as illustrated in FIG. 6a. In addition, the HPC main calculation application being referenced as a privileged application, the execution context is stored when the execution of this application is interrupted. In other words, the addresses of the data present in the cache memory are stored for later loading, before resuming the execution of this main application. Between instants t2 and t3, the instructions executed by the logical heart corresponding to the sequence of instructions 500-1 are instructions of a first application attached, referenced 515. Similarly, between instants t3 and t4, the instructions executed by the logical heart corresponding to the sequence of instructions 500-1 are instructions of the aforementioned operating system task, referenced 510-2. Similarly, between times t4 and t5, the instructions executed by the logical heart corresponding to the sequence of instructions 500-1 are instructions of a second subsidiary application, referenced 520. Between times t5 and t6, the instructions executed by the logical heart corresponding to the sequence of instructions 500-1 are instructions of the aforementioned operating system task, referenced 510-3. Similarly, between times t6 and t7, the instructions executed by the logical heart corresponding to the sequence of instructions 500-1 are instructions of a third subsidiary application, referenced 525. The cache L1 level of the heart of the The microprocessor then comprises data relating to the task of the operating system executed as well as to the first, second and third subsidiary applications, as illustrated in FIG. 6b. Between times t0 and t7, the logic core corresponding to the sequence of instructions 500-2 does not execute any instructions. At time t7, the memory feeding mechanism, allowing the anticipated loading of data relating to a main application before resuming its execution is implemented. At this time, the logical heart corresponding to the sequence of instructions 500-2 then executes instructions, referenced 530, to cache the data whose addresses were stored during the interruption of the main program. Thus, between times t7 and t8, the instructions executed by the logical heart corresponding to the sequence of instructions 500-1 are instructions of the aforementioned operating system task, referenced 510-4, while the instructions executed by the logical heart corresponding to the sequence of instructions 500-2 are instructions allowing the cached loading of the data whose addresses were stored during the interruption of the main program.

A l'instant t8, la mémoire cache de niveau L1 du coeur du microprocesseur comprend alors des données relatives à la tâche du système d'exploitation exécutée, aux deuxième et troisième applications annexes, c'est-à-dire des données relatives aux dernières instructions exécutées, ainsi que des données relatives à l'application principale et permettant une reprise optimale de l'exécution de cette dernière, comme illustré sur la figure 6c. L'exécution du programme principale est reprise à cet instant comme illustré par la référence 505-2. Toujours à partir de cet instant, le coeur logique correspondant à la séquence d'instructions 500-2 n'exécute plus d'instruction. Comme illustré sur la figure 6d, la mémoire cache de niveau L1 du coeur du microprocesseur comprend, à l'instant t9, essentiellement des données relatives à l'application principale de calcul HPC ainsi que quelques données relatives à la tâche du système d'exploitation préalablement exécutée qui n'ont pas encore été remplacées par des données relatives à l'application principale de calcul HPC. Ainsi, l'application principale exécutée sur l'un des coeurs logiques est aidée par un processus fils exécuté sur un autre coeur logique du même coeur physique. Ce processus fils assume la tâche de ramener en mémoire les données nécessaires à l'application principale en avance de phase pour économiser des cycles d'attente que l'application principale devrait subir en attendant d'obtenir les données demandées. En d'autres termes, l'invention a notamment pour objet la mise en place d'un mécanisme coopératif entre le système d'exploitation utilisé et un processus de chargement mémoire exécuté par un coeur logique appartenant à un coeur physique dont un autre coeur logique exécute une application principale, les coeurs logiques partageant au moins une partie de la hiérarchie mémoire. At time t8, the memory cache L1 level of the core of the microprocessor then includes data relating to the task of the operating system executed, the second and third additional applications, that is to say, data relating to the last instructions executed, as well as data relating to the main application and allowing an optimal recovery of the execution of the latter, as illustrated in Figure 6c. The execution of the main program is resumed at this moment as illustrated by reference 505-2. Still from that moment, the logical heart corresponding to the sequence of instructions 500-2 no longer executes instructions. As illustrated in FIG. 6d, the level memory cache L1 of the microprocessor core comprises, at time t9, essentially data relating to the main HPC calculation application as well as some data relating to the task of the operating system previously executed that have not yet been replaced by data relating to the HPC main calculation application. Thus, the main application running on one of the logical cores is aided by a child process running on another logical heart of the same physical heart. This child process assumes the task of retrieving the data needed for the main application in advance to save waiting cycles that the main application should undergo while waiting for the requested data. In other words, the object of the invention is in particular to set up a cooperative mechanism between the operating system used and a memory loading process executed by a logical core belonging to a physical core of which another logical core executes a main application, the logical cores sharing at least part of the memory hierarchy.

Ainsi, typiquement, le système d'exploitation lance sur un coeur logique spécifié un processus fils permettant de mettre en oeuvre une fonction de memory feeding lorsqu'il est appelé ou sollicité. Ce processus fils ne peut être utilisé que pour des applications considérées comme principales c'est-à-dire, par exemple, déclarées avec un privilège particulier. Il est observé que lorsqu'une application a été déclarée avec un tel privilège, le système d'exploitation fait les vérifications nécessaires en termes de privilège et de paramétrage. Si, après vérification, l'autorisation est donnée, l'application principale peut accéder à la fonction de memory feeding lorsqu'elle est interrompue dans son exécution. Thus, typically, the operating system launches on a specified logical heart a child process for implementing a memory feeding function when called or solicited. This child process can only be used for applications considered to be main, ie, for example, declared with a particular privilege. It is observed that when an application has been declared with such a privilege, the operating system makes the necessary checks in terms of privilege and setting. If, after verification, the authorization is given, the main application can access the memory feeding function when it is interrupted in its execution.

Lorsque l'application principale est interrompue, le système d'exploitation mémorise des repères sur les zones mémoires utilisées par cette application avant son interruption. Après que ces repères aient été mémorisés, le système d'exploitation peut élire une nouvelle tâche non-privilégiée qui est alors exécutée par le coeur logique exécutant préalablement l'application principale. De tels repères sont, par exemple, des couples formés d'adresses et de longueurs, spécifiant des ensembles de données. When the main application is interrupted, the operating system stores markers on the memory areas used by this application before its interruption. After these pins have been stored, the operating system can elect a new non-privileged task which is then executed by the logical core executing the main application. Such markers are, for example, pairs of addresses and lengths specifying sets of data.

Lorsque le système d'exploitation détermine la reprise de l'exécution de l'application principale via son ordonnanceur, il commande la fonction de memory feeding auprès du processus fils. Ce dernier déclenche alors les lectures à partir des références de zones de mémoires que le système d'exploitation a conservé. Il va ainsi raccourcir la distance mémoire et faire gagner des cycles d'attente à chaque redémarrage de changement de contexte. De façon avantageuse, une application principale peut contrôler l'appel à la fonction de memory feeding en activant ou en désactivant le service auprès du système d'exploitation. Bien entendu, l'application principale et le processus fils doivent être exécutés dans des environnements dans lesquels au moins une partie de la hiérarchie mémoire est partagée. L'application principale et le processus fils sont ainsi, de préférence, exécutés par deux coeurs logiques d'un même coeur physique. Le standard OpenCL peut être utilisé pour mettre en oeuvre l'interface décrite précédemment entre une application principale et un processus fils de chargement mémoire permettant l'utilisation de la fonction de memory feeding. Les fonctions utilisées dans une telle interface sont, par exemple, les suivantes : - une fonction pour retourner les capacités de memory feeding du système d'exploitation utilisé à une application, et int clMFeedQuery( et MFeed *mf) où mf représente le paramètre de la fonction dont le type est et MFeed ; - une fonction permettant à une application de se déclarer comme application privilégiée auprès du système d'exploitation afin de bénéficier de la fonction de memory feeding, et int clMFeedDeclare( et MFeed mf, et MFeedParams *mfparams) où mf représente le paramètre de la fonction dont le type est et MFeed et mfparams représente le paramètre de la fonction dont le type est et MFeedParams ; De façon avantageuse, cette fonction modifie le paramétrage de l'application, notamment en termes de taille de blocs de données à prefetcher et de synchronisation avec le processus fils pour effectuer le memory feeding. Ces paramètres sont importants et doivent, de préférence, faire l'objet de contrôles car un mauvais paramétrage a pour effet d'accentuer les effets de pollution pour les autres processus exécutés ; et, - une fonction d'activation et une fonction de désactivation du service de memory feeding, et int clMFeedStart( et MFeed *mf) et int clMFeedStop( et MFeed *mf) où mf représente le paramètre de la fonction dont le type est et MFeed . La figure 7, comprenant les figures 7a et 7b, illustre schématiquement certaines étapes d'un exemple d'algorithme mis en oeuvre dans un système d'exploitation pour offrir une fonction de memory feeding à une application principale. La figure 7a vise essentiellement la phase liée à l'interruption de l'exécution d'une application principale tandis que la figure 7b est relative à sa reprise. Il est admis ici que l'application principale s'est préalablement déclarée comme privilégiée et que le système d'exploitation a contrôlé ses 25 paramètres de memory feeding. Une première étape (étape 700) a pour objet la détection d'une interruption. Si une interruption est détectée, une étape suivante (étape 705) consiste en un test pour déterminer si l'interruption vise la suspension de l'exécution d'une application principale ou non.When the operating system determines the resumption of execution of the main application via its scheduler, it controls the function of memory feeding with the child process. The latter then triggers the readings from the memory area references that the operating system has retained. It will thus shorten the memory distance and save waiting cycles with each restart of the context switch. Advantageously, a main application can control the call to the memory feeding function by enabling or disabling the service to the operating system. Of course, the main application and the child process must be executed in environments in which at least part of the memory hierarchy is shared. The main application and the child process are thus preferably executed by two logical cores of the same physical heart. The OpenCL standard can be used to implement the interface described above between a main application and a memory loading son process allowing the use of the memory feeding function. The functions used in such an interface are, for example, the following: - a function to return the memory feeding capabilities of the operating system used to an application, and int clMFeedQuery (and MFeed * mf) where mf represents the parameter of the function whose type is and MFeed; - a function allowing an application to declare itself as a privileged application to the operating system in order to benefit from the memory feeding function, and int clMFeedDeclare (and MFeed mf, and MFeedParams * mfparams) where mf represents the parameter of the function whose type is and MFeed and mfparams represents the parameter of the function whose type is and MFeedParams; Advantageously, this function modifies the parameterization of the application, particularly in terms of the size of data blocks to prefetcher and synchronization with the child process to perform the memory feeding. These parameters are important and should preferably be checked because a wrong parameterization has the effect of accentuating the pollution effects for the other processes performed; and, - an activation function and a function of deactivating the service of memory feeding, and int clMFeedStart (and MFeed * mf) and int clMFeedStop (and MFeed * mf) where mf represents the parameter of the function whose type is and MFeed. FIG. 7, comprising FIGS. 7a and 7b, schematically illustrates certain steps of an exemplary algorithm implemented in an operating system for providing a memory feeding function to a main application. Figure 7a is essentially the phase related to the interruption of the execution of a main application while Figure 7b relates to its recovery. It is admitted here that the main application has previously declared itself as privileged and that the operating system has controlled its 25 parameters of memory feeding. A first step (step 700) is to detect an interruption. If an interrupt is detected, a next step (step 705) consists of a test to determine whether the interrupt is for suspending the execution of a main application or not.

30 Si l'interruption vise la suspension de l'exécution d'une application principale, le contexte de l'exécution de cette application est mémorisé (étape 710). Comme indiqué précédemment, cette étape permet notamment de mémoriser des références mémoires en cours de l'application principale. Dans le cas contraire, si l'interruption ne vise pas la suspension de l'exécution d'une application principale, l'interruption est traitée de façon standard (étape 715). Tant qu'il n'est pas arrêté, cet algorithme se répète pour traiter toutes les interruptions. Parallèlement, comme illustré sur la figure 7b, lorsque la reprise de l'exécution d'un processus est planifiée par l'ordonnanceur (étape 720), un test est effectué pour déterminer si l'application correspondant au processus dont la reprise est programmée est une application principale ou non (étape 725). Si l'application correspondant au processus dont la reprise est programmée est une application principale, le processus fils de chargement mémoire est appelé pour mettre en oeuvre une fonction de memory feeding (étape 730). Cette étape vise à faire remonter en mémoire, dans la hiérarchie mémoire, des données dont les références ont été mémorisées lors de la mémorisation du contexte d'exécution de l'application principale selon les paramètres de cette dernière (fixés lors de la déclaration de l'application comme application principale). Il est rappelé ici que le processus fils est, de préférence, exécuté par un coeur logique appartenant à un coeur physique comprenant un autre coeur logique utilisé pour exécuter l'application principale de telle sorte que le processus fils et l'application principale partage au moins une partie de la hiérarchie mémoire. Il a pour objet d'aller chercher en mémoire des données à des adresses préalablement mémorisées selon des tailles de blocs liées à l'application principale. Tant qu'il n'est pas arrêté, cet algorithme se répète pour traiter toutes les reprises d'exécution d'applications. La figure 8 illustre certaines étapes d'un exemple d'algorithme mis en oeuvre par un processus fils de chargement mémoire permettant d'optimiser la reprise d'exécution d'une application principale. Après avoir été appelé, le processus fils de chargement mémoire accède (étape 800) aux références préalablement mémorisées lors de l'interruption de l'exécution de l'application principale ainsi qu'aux paramètres liés à cette application. Les références mémorisées comprennent notamment des adresses de données tandis que les paramètres comprennent, en particulier, des tailles de blocs de données à prefetcher ainsi que des informations de synchronisation. Comme décrit précédemment, en raison de l'exécution de processus distincts de l'application principale, les données devant être utilisées par l'application principale ne sont généralement plus mémorisées à proximité du microprocesseur, c'est-à-dire dans une partie haute de la hiérarchie mémoire, en particulier en mémoire cache de niveau L1, mais dans une partie inférieure. Les références accédées sont donc utilisées pour accéder, selon un mécanisme standard, à ces données (étape 805) qui se trouvent dans la hiérarchie mémoire. Selon ce mécanisme, un test est effectué sur un premier niveau de mémoire, par exemple une mémoire cache L1, pour déterminer si les données sont présentes à ce niveau. Dans l'affirmative, elles sont accédées selon des paramètres prédéterminés. Dans la négative, un autre test est effectué sur un second niveau de mémoire, inférieur au premier niveau de mémoire, par exemple une mémoire cache L2, pour déterminer si les données sont présentes à ce niveau. Ainsi, en testant la présence des données cherchées dans chaque niveau de mémoire, de proche en proche, les données sont retrouvées dans le niveau de mémoire le plus élevé. Les données accédées sont alors mémorisées dans une partie haute de la mémoire selon des paramètres prédéterminés (étape 810). Il est observé ici que, comme suggéré par l'utilisation de trait pointillé, cette étape n'est généralement pas mise en oeuvre de façon explicite par le processus fils. En effet, cette étape résulte de l'accès aux données. Elle est réalisée automatiquement par le microprocesseur lors de l'accès par le truchement des effets en cascade d'appels matériels. Comme indiqué précédemment, de nombreux microprocesseurs susceptibles d'être utilisés dans des noeuds de clusters mettent en oeuvre la technologie appelée simultaneous multi-threading (ou hyperthreading selon l'implémentation d'Intel, Intel est une marque) permettant de créer des coeurs logiques. Lors de l'utilisation de ces microprocesseurs, cette technologie peut être activée ou non. La figure 9 représente de façon simplifiée l'architecture logique d'un microprocesseur d'un noeud appartenant à un cluster, le microprocesseur comprenant ici deux coeurs physiques mettant en oeuvre chacun deux coeurs logiques, c'est-à-dire un microprocesseur dans lequel le simultaneous multithreading a été activé, lorsqu'une application de calcul haute performance est exécutée. Chaque coeur physique permet ici d'exécuter jusqu'à quatre instructions dans un même cycle en raison des différentes unités d'exécution implémentées dans chaque coeur physique. Ainsi, deux coeurs logiques peuvent exécuter chacun jusqu'à quatre instructions selon l'utilisation effectuée par l'autre coeur. Comme illustré, les coeurs physiques 900-1 et 900-2 sont reliés à un bus système 905 auquel peuvent notamment être connectés une interface de communication et une mémoire. Chaque coeur physique comprend des unités d'exécution partagées entre les coeurs logiques et un registre d'instructions propre à chaque coeur logique. Ainsi, le coeur physique 900-1 comprend un ensemble 910-1 d'unités d'exécution ainsi que le registre d'instructions 915-11 lié à un premier coeur logique du coeur physique 900-1 et le registre d'instructions 915-12 lié à un second coeur logique du coeur physique 900-1. De même, le coeur physique 900-2 comprend un ensemble 910-2 d'unités d'exécution ainsi que le registre d'instructions 915-21 lié à un premier coeur logique du coeur physique 900-2 et le registre d'instructions 915-22 lié à un second coeur logique du coeur physique 900-2. Les instructions exécutées par chacun des coeurs logiques sont ici représentées par les carrés noirs. Ainsi, comme illustré, les coeurs logiques associés aux registres d'instructions 915-11 et 915-21 sont en charge d'exécuter toutes les applications ainsi que le système d'exploitation, à l'exception des processus fils de gestion mémoire qui sont exécutés par les coeurs logiques associés aux registres mémoire 915-21 et 915-22 pour permettre une reprise rapide des applications principale exécutées par les coeurs logiques associés aux registres d'instructions 915-11 et 915-21. Naturellement, pour satisfaire des besoins spécifiques, une personne compétente dans le domaine de l'invention pourra appliquer des modifications dans la description précédente. If the interrupt aims to suspend the execution of a main application, the context of the execution of this application is stored (step 710). As indicated above, this step notably makes it possible to store memory references during the main application. Otherwise, if the interrupt is not aimed at suspending the execution of a main application, the interruption is processed in a standard way (step 715). As long as it is not stopped, this algorithm is repeated to process all interrupts. At the same time, as illustrated in FIG. 7b, when the resumption of the execution of a process is scheduled by the scheduler (step 720), a test is performed to determine whether the application corresponding to the process whose restart is programmed is a main application or not (step 725). If the application corresponding to the process whose resumption is programmed is a main application, the memory loading son process is called to implement a memory feeding function (step 730). This step aims to remount in the memory hierarchy, data whose references were stored during the storage of the execution context of the main application according to the parameters of the latter (set at the time of the declaration of the application as the main application). It is recalled here that the child process is preferably executed by a logical heart belonging to a physical heart comprising another logical heart used to execute the main application so that the child process and the main application share at least part of the memory hierarchy. Its purpose is to retrieve data from previously memorized addresses according to block sizes related to the main application. As long as it is not stopped, this algorithm repeats itself to handle all application runtimes. FIG. 8 illustrates certain steps of an exemplary algorithm implemented by a memory load son process making it possible to optimize the execution of a main application. After being called, the memory loading son process accesses (step 800) references previously stored during the interruption of the execution of the main application and the parameters related to this application. The stored references include in particular data addresses while the parameters include, in particular, data block sizes to prefetcher as well as synchronization information. As described above, due to the execution of separate processes of the main application, the data to be used by the main application is generally no longer stored near the microprocessor, that is to say in an upper part of the memory hierarchy, in particular in the L1 cache, but in a lower part. The references accessed are therefore used to access, according to a standard mechanism, these data (step 805) which are in the memory hierarchy. According to this mechanism, a test is performed on a first level of memory, for example an L1 cache, to determine if the data are present at this level. If so, they are accessed according to predetermined parameters. If not, another test is performed on a second memory level, lower than the first memory level, for example a L2 cache, to determine if the data is present at this level. Thus, by testing the presence of the data sought in each memory level, step by step, the data are found in the highest memory level. The accessed data is then stored in a high part of the memory according to predetermined parameters (step 810). It is observed here that, as suggested by the use of dashed line, this step is generally not implemented explicitly by the child process. Indeed, this step results from the access to the data. It is automatically performed by the microprocessor during access through the cascading effects of hardware calls. As indicated above, many microprocessors that can be used in cluster nodes implement the technology called simultaneous multi-threading (or hyperthreading according to the Intel implementation, Intel is a trademark) to create logical cores. When using these microprocessors, this technology can be activated or not. FIG. 9 schematically represents the logical architecture of a microprocessor of a node belonging to a cluster, the microprocessor here comprising two physical cores each implementing two logical cores, that is to say a microprocessor in which the simultaneous multithreading has been enabled, when a high performance computing application is running. Each physical heart allows here to execute up to four instructions in the same cycle because of the different execution units implemented in each physical heart. Thus, two logical cores can each execute up to four instructions depending on the use made by the other heart. As illustrated, the physical cores 900-1 and 900-2 are connected to a system bus 905 to which can be connected in particular a communication interface and a memory. Each physical core includes threads shared between logical cores and an instruction register specific to each logical heart. Thus, the physical heart 900-1 comprises a set 910-1 of execution units as well as the instruction register 915-11 linked to a first logical heart of the physical heart 900-1 and the instruction register 915- 12 linked to a second logical heart of the 900-1 physical heart. Similarly, the 900-2 physical core includes a set 910-2 of execution units as well as the instruction register 915-21 linked to a first logical core of the 900-2 physical heart and the instruction register 915. -22 linked to a second logical heart of the 900-2 physical heart. The instructions executed by each of the logical cores are here represented by the black squares. Thus, as illustrated, the logical cores associated with the instruction registers 915-11 and 915-21 are in charge of executing all the applications as well as the operating system, with the exception of memory management thread processes which are performed by the logical cores associated with memory registers 915-21 and 915-22 to allow fast recovery of the main applications executed by logical cores associated with instruction registers 915-11 and 915-21. Naturally, to meet specific needs, a person skilled in the field of the invention may apply modifications in the foregoing description.

Claims (10)

REVENDICATIONS1. Procédé pour ordinateur d'optimisation d'accès mémoire dans un microprocesseur dudit ordinateur lors de la reprise d'exécution d'une application principale, ledit microprocesseur permettant l'exécution simultanée d'au moins deux processus dans un environnement comprenant une mémoire partagée organisée de façon hiérarchique comprenant au moins une partie haute et une partie basse, au moins une donnée étant copiée de la partie basse vers la partie haute pour être traitée par ladite application principale, ledit ordinateur étant adapté à interrompre l'exécution de ladite application principale, ce procédé étant caractérisé en ce qu'il comprend les étapes suivantes, - lors d'une interruption de l'exécution de ladite application principale, o mémorisation (710) d'au moins une référence à au moins une donnée mémorisée dans une partie haute de ladite mémoire, ladite au moins une donnée devant être utilisée pour permettre l'exécution de ladite application principale ; - après une programmation d'une reprise d'exécution de ladite application principale et avant la reprise d'exécution de ladite application principale, o accès (805) à ladite au moins une donnée dans une partie basse de ladite mémoire selon ladite au moins une référence ; et, o mémorisation (810) de ladite au moins une donnée dans une partie haute de ladite mémoire. REVENDICATIONS1. A computer method for optimizing memory access in a microprocessor of said computer when resuming execution of a main application, said microprocessor enabling the simultaneous execution of at least two processes in an environment comprising an organized shared memory of a hierarchical manner comprising at least one upper part and one lower part, at least one piece of data being copied from the lower part to the top part to be processed by said main application, said computer being adapted to interrupt the execution of said main application, this method being characterized in that it comprises the following steps, - during an interruption of the execution of said main application, o storage (710) of at least one reference to at least one data item stored in an upper part of said memory, said at least one datum to be used to allow execution of said applicatio n main; after programming a resumption of execution of said main application and before resuming execution of said main application, access (805) to said at least one datum in a lower portion of said memory according to said at least one reference; and storing (810) said at least one datum in an upper portion of said memory. 2. Procédé selon la revendication précédente comprenant en outre une étape d'accès (800) à au moins un paramètre de configuration de ladite application principale, ladite étape d'accès à ladite au moins une donnée étant réalisée selon ledit au moins un paramètre. 2. Method according to the preceding claim further comprising a step of accessing (800) at least one configuration parameter of said main application, said step of accessing said at least one data being performed according to said at least one parameter. 3. Procédé selon la revendication précédente comprenant en outre une étape préliminaire de déclaration durant laquelle ladite au moins uneapplication principale est déclarée privilégiée et une étape de définition dudit au moins paramètre. 3. Method according to the preceding claim further comprising a preliminary declaration step during which said at least one main application is declared privileged and a step of defining said at least one parameter. 4. Procédé selon la revendication précédente comprenant en outre une étape de vérification dudit au moins un paramètre, ledit au moins un paramètre définissant une taille de bloc de données, ladite au moins une référence comprenant au moins une adresse mémoire. 4. Method according to the preceding claim further comprising a step of verifying said at least one parameter, said at least one parameter defining a data block size, said at least one reference comprising at least one memory address. 5. Procédé selon l'une quelconque des revendications précédentes selon lequel ledit processeur permet la mise en oeuvre d'au moins deux coeurs logiques, chacun desdits au moins deux processus pouvant être exécuté par un coeur logique, lesdits au moins deux coeurs logiques partageant ladite mémoire partagée, ladite application principale étant exécutée par l'un desdits au moins deux coeurs logiques, des instructions relatives à l'exécution desdites étapes d'accès et de mémorisation de ladite au moins une donnée étant transmises à l'autre desdits au moins deux coeurs logiques. 5. Method according to any one of the preceding claims wherein said processor allows the implementation of at least two logical cores, each of said at least two processes can be executed by a logical core, said at least two logical cores sharing said shared memory, said main application being executed by one of said at least two logical cores, instructions relating to the execution of said steps of access and storage of said at least one datum being transmitted to the other of said at least two logical hearts. 6. Procédé selon la revendication précédente selon lequel ledit microprocesseur est un microprocesseur multi-coeurs, lesdits au moins deux coeurs logiques étant mis en oeuvre dans un même coeur physique. 6. Method according to the preceding claim wherein said microprocessor is a multi-core microprocessor, said at least two logical cores being implemented in the same physical core. 7. Procédé selon l'une quelconque des revendications précédentes selon lequel lesdites instructions de mémorisation de ladite au moins une référence à ladite au moins une donnée et d'accès à ladite au moins une donnée sont initiées par une couche logique dudit ordinateur. 7. Method according to any one of the preceding claims, wherein said instructions for storing said at least one reference to said at least one datum and accessing said at least one datum are initiated by a logical layer of said computer. 8. Procédé selon la revendication précédente selon lequel ladite couche logique appartient à un système d'exploitation mis en oeuvre dans ledit ordinateur. 8. Method according to the preceding claim wherein said logic layer belongs to an operating system implemented in said computer. 9. Programme d'ordinateur comprenant des instructions adaptées à la mise en oeuvre de chacune des étapes du procédé selon l'une quelconque des revendications précédentes lorsque ledit programme est exécuté sur un ordinateur. 9. Computer program comprising instructions adapted to the implementation of each of the steps of the method according to any one of the preceding claims when said program is run on a computer. 10. Moyen de stockage d'informations, amovible ou non, partiellement ou totalement lisible par un ordinateur ou un microprocesseur comportant des instructions de code d'un programme d'ordinateur pourl'exécution de chacune des étapes du procédé selon l'une quelconque des revendications 1 à 8. 10. An information storage medium, removable or not, partially or completely readable by a computer or a microprocessor comprising code instructions of a computer program for the execution of each of the steps of the method according to any one of the Claims 1 to 8.
FR1055681A 2010-07-12 2010-07-12 METHOD FOR OPTIMIZING MEMORY ACCESS, WHEN RE-EXECUTING AN APPLICATION, IN A MICROPROCESSOR COMPRISING SEVERAL LOGICAL HEARTS AND COMPUTER PROGRAM USING SUCH A METHOD Active FR2962567B1 (en)

Priority Applications (7)

Application Number Priority Date Filing Date Title
FR1055681A FR2962567B1 (en) 2010-07-12 2010-07-12 METHOD FOR OPTIMIZING MEMORY ACCESS, WHEN RE-EXECUTING AN APPLICATION, IN A MICROPROCESSOR COMPRISING SEVERAL LOGICAL HEARTS AND COMPUTER PROGRAM USING SUCH A METHOD
EP11743309.4A EP2593872B1 (en) 2010-07-12 2011-07-07 Method for optimizing memory access in a microprocessor including several logic cores upon resumption of executing an application, and computer program implementing such a method
US13/581,279 US10025633B2 (en) 2010-07-12 2011-07-07 Method for optimizing memory access in a microprocessor including several logic cores upon resumption of executing an application, and computer implementing such a method
JP2013515950A JP2013534670A (en) 2010-07-12 2011-07-07 Memory access optimization method when resuming application execution in a microprocessor having a plurality of logical cores, and a computer program for executing the method
PCT/FR2011/051616 WO2012007675A1 (en) 2010-07-12 2011-07-07 Method for optimizing memory access in a microprocessor including several logic cores upon resumption of executing an application, and computer program implementing such a method
BR112012017426A BR112012017426A2 (en) 2010-07-12 2011-07-07 access memory optimization process when retrieving the execution of an application on a microprocessor comprising various logic cores and computer program in order to implement such a process
US16/026,520 US10838768B2 (en) 2010-07-12 2018-07-03 Method for optimizing memory access in a microprocessor including several logic cores upon resumption of executing an application, and computer implementing such a method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1055681A FR2962567B1 (en) 2010-07-12 2010-07-12 METHOD FOR OPTIMIZING MEMORY ACCESS, WHEN RE-EXECUTING AN APPLICATION, IN A MICROPROCESSOR COMPRISING SEVERAL LOGICAL HEARTS AND COMPUTER PROGRAM USING SUCH A METHOD

Publications (2)

Publication Number Publication Date
FR2962567A1 true FR2962567A1 (en) 2012-01-13
FR2962567B1 FR2962567B1 (en) 2013-04-26

Family

ID=43639110

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1055681A Active FR2962567B1 (en) 2010-07-12 2010-07-12 METHOD FOR OPTIMIZING MEMORY ACCESS, WHEN RE-EXECUTING AN APPLICATION, IN A MICROPROCESSOR COMPRISING SEVERAL LOGICAL HEARTS AND COMPUTER PROGRAM USING SUCH A METHOD

Country Status (6)

Country Link
US (2) US10025633B2 (en)
EP (1) EP2593872B1 (en)
JP (1) JP2013534670A (en)
BR (1) BR112012017426A2 (en)
FR (1) FR2962567B1 (en)
WO (1) WO2012007675A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9684685B2 (en) 2013-10-24 2017-06-20 Sap Se Using message-passing with procedural code in a database kernel
US9600551B2 (en) 2013-10-24 2017-03-21 Sap Se Coexistence of message-passing-like algorithms and procedural coding
FR3054902B1 (en) 2016-08-04 2019-06-21 Thales METHOD AND DEVICE FOR DISTRIBUTING SHEET MUSIC ON A MULTI-HEART PROCESSOR
US10824481B2 (en) * 2018-11-13 2020-11-03 International Business Machines Corporation Partial synchronization between compute tasks based on threshold specification in a computing system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040243765A1 (en) * 2003-06-02 2004-12-02 Infineon Technologies North America Corp. Multithreaded processor with multiple caches
US20050138628A1 (en) * 2003-12-18 2005-06-23 International Business Machines Corporation Context switch instruction prefetching in multithreaded computer
US20070277001A1 (en) * 2006-05-26 2007-11-29 Mevergnies Michael Neve De Apparatus and method for reducing information leakage between processes sharing a cache

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4761783A (en) * 1986-10-17 1988-08-02 Christensen Harold F Apparatus and method for reporting occurrences of errors in signals stored in a data processor
GB2234613B (en) * 1989-08-03 1993-07-07 Sun Microsystems Inc Method and apparatus for switching context of state elements in a microprocessor
US6026471A (en) 1996-11-19 2000-02-15 International Business Machines Corporation Anticipating cache memory loader and method
EP0856797B1 (en) * 1997-01-30 2003-05-21 STMicroelectronics Limited A cache system for concurrent processes
TW405090B (en) * 1997-04-04 2000-09-11 Ibm Predictive cache loading by program address discontinuity history
US8234477B2 (en) * 1998-07-31 2012-07-31 Kom Networks, Inc. Method and system for providing restricted access to a storage medium
US6420903B1 (en) * 2000-08-14 2002-07-16 Sun Microsystems, Inc. High speed multiple-bit flip-flop
CA2427354A1 (en) * 2000-10-31 2002-08-01 Michael Philip Kaufman System and method for generating automatic user interface for arbitrarily complex or large databases
US20030154349A1 (en) * 2002-01-24 2003-08-14 Berg Stefan G. Program-directed cache prefetching for media processors
JP2004157636A (en) * 2002-11-05 2004-06-03 Renesas Technology Corp Data processing apparatus
ATE444526T1 (en) * 2003-02-24 2009-10-15 Nxp Bv CACHE MEMORY TRASHING REDUCTION OF CERTAIN PIECES OF CODE
US7328433B2 (en) * 2003-10-02 2008-02-05 Intel Corporation Methods and apparatus for reducing memory latency in a software application
JP2008102623A (en) * 2006-10-17 2008-05-01 Matsushita Electric Ind Co Ltd Processor
JP4356028B2 (en) * 2007-05-17 2009-11-04 ソニー株式会社 Information processing apparatus and method
US20090248988A1 (en) * 2008-03-28 2009-10-01 Mips Technologies, Inc. Mechanism for maintaining consistency of data written by io devices
US9367462B2 (en) * 2009-12-29 2016-06-14 Empire Technology Development Llc Shared memories for energy efficient multi-core processors

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040243765A1 (en) * 2003-06-02 2004-12-02 Infineon Technologies North America Corp. Multithreaded processor with multiple caches
US20050138628A1 (en) * 2003-12-18 2005-06-23 International Business Machines Corporation Context switch instruction prefetching in multithreaded computer
US20070277001A1 (en) * 2006-05-26 2007-11-29 Mevergnies Michael Neve De Apparatus and method for reducing information leakage between processes sharing a cache

Also Published As

Publication number Publication date
EP2593872A1 (en) 2013-05-22
BR112012017426A2 (en) 2016-04-19
US20190087227A1 (en) 2019-03-21
JP2013534670A (en) 2013-09-05
FR2962567B1 (en) 2013-04-26
EP2593872B1 (en) 2021-09-01
US10838768B2 (en) 2020-11-17
US10025633B2 (en) 2018-07-17
US20130111152A1 (en) 2013-05-02
WO2012007675A1 (en) 2012-01-19

Similar Documents

Publication Publication Date Title
Harlap et al. Addressing the straggler problem for iterative convergent parallel ML
Wu et al. Energy-efficient hadoop for big data analytics and computing: A systematic review and research insights
Dahiphale et al. An advanced mapreduce: cloud mapreduce, enhancements and applications
FR2946442A1 (en) METHOD AND APPARATUS FOR LOADING AND EXECUTING DETERMINISTIC CYCLE INSTRUCTIONS IN A MULTI-HEART AVIONICS SYSTEM HAVING A BUS WHOSE ACCESS TIME IS NOT PREDICTIBLE
FR2884632A1 (en) DISTRIBUTED CALCULATION SYSTEMS BASED ON DISTRIBUTED STATE INFORMATION AND METHODS AND PROTOCOLS THEREOF
Sampé et al. Outsourcing data processing jobs with lithops
US10838768B2 (en) Method for optimizing memory access in a microprocessor including several logic cores upon resumption of executing an application, and computer implementing such a method
Pan et al. H-scheduler: Storage-aware task scheduling for heterogeneous-storage spark clusters
Bonner et al. Exploring the evolution of big data technologies
WO2021069626A1 (en) Method for reproducible parallel simulation at electronic system level implemented by means of a multi-core discrete-event simulation computer system
Es-Sabery et al. Big data solutions proposed for cluster computing systems challenges: A survey
EP2856323B1 (en) Method, device and computer program for dynamic monitoring of memory access distances in a numa type system
US10180801B2 (en) Systems and methods for load balancing backup data
FR2938091A1 (en) METHOD FOR REALIZING A CALL OF AN INSTANCE OF A FUNCTION, DEVICE, CORRESPONDING COMPUTER PROGRAM
WO2012110445A1 (en) Device for accelerating the execution of a c system simulation
Aach et al. Large scale performance analysis of distributed deep learning frameworks for convolutional neural networks
FR3071334B1 (en) METHOD FOR ENSURING DATA STABILITY OF A MULTICOAL PROCESSOR OF A MOTOR VEHICLE
Karau et al. Scaling Python with Ray
Harlap Improving ML applications in shared computing environments
US20230236837A1 (en) Elastically managing workers of multi-worker workloads on accelerator devices
Taifi et al. Performance and reliability effects of multi-tier bidding on mapreduce in auction-based clouds
US11256669B1 (en) Transaction pipeline materialization schemas
Mhembere Scalable Graph Analysis and Clustering on Commodity Hardware
EP2572253B1 (en) Method of optimizing standby management of a microprocessor allowing implementation of several logic cores and computer program implementing such a method
WO2023239707A1 (en) Latency reduction of flash-based devices using programming interrupts

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

PLFP Fee payment

Year of fee payment: 10

PLFP Fee payment

Year of fee payment: 11

PLFP Fee payment

Year of fee payment: 12

PLFP Fee payment

Year of fee payment: 13

TQ Partial transmission of property

Owner name: LE COMMISSARIAT A L'ENERGIE ATOMIQUE ET AUX EN, FR

Effective date: 20221031

Owner name: BULL SAS, FR

Effective date: 20221031

PLFP Fee payment

Year of fee payment: 14