FR2778761A1 - Control of execution of programs in computer using internal events in the processor running real-time preemptive multitasking - Google Patents
Control of execution of programs in computer using internal events in the processor running real-time preemptive multitasking Download PDFInfo
- Publication number
- FR2778761A1 FR2778761A1 FR9805945A FR9805945A FR2778761A1 FR 2778761 A1 FR2778761 A1 FR 2778761A1 FR 9805945 A FR9805945 A FR 9805945A FR 9805945 A FR9805945 A FR 9805945A FR 2778761 A1 FR2778761 A1 FR 2778761A1
- Authority
- FR
- France
- Prior art keywords
- counter
- processor
- execution
- program
- event
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
La présente invention concerne un dispositif et un procédé deThe present invention relates to a device and a method for
gestions de conditions d'exécution de programme d'ordinateur. management of computer program execution conditions.
Elle s'applique, en particulier, aux programmes multitâches temps réel. Actuellement, les systèmes d'exploitation (appelés "operating systems" ou "OS", en anglais) temps réel, programmes de base permettant de faire cohabiter plusieurs applications dans une même machine et de faciliter leur communication avec les différents périphériques, fournissent un mécanisme d'ordonnancement préemptif permettant de définir une unité ou quantum de temps de processeur (aussi appelé "Central Processing Unit" ou "CPU" en anglais) pour chaque processus ou tâche (appelé "thread", "task" ou It applies, in particular, to real-time multitasking programs. Currently, real-time operating systems (called "operating systems" or "OS"), basic programs allowing several applications to coexist on the same machine and to facilitate their communication with the various peripherals, provide a mechanism preemptive scheduling to define a unit or quantum of processor time (also called "Central Processing Unit" or "CPU" in English) for each process or task (called "thread", "task" or
"process" en anglais) actif dans le système. "process" in English) active in the system.
Par quantum de temps, on entend durée pendant laquelle un processus est exécuté par le processeur. A chaque processus peut être associé un quantum dont la durée dépend de l'ordonnancement du système d'exploitation et des paramètres d'exécution du processus (l'ordonnancement est fonction de priorités temps-réel, de niveaux de privilège, de contextes d'exécution...). En régime périodique, le processeur consacre donc un temps By quantum of time is meant the duration during which a process is executed by the processor. A quantum can be associated with each process, the duration of which depends on the scheduling of the operating system and the execution parameters of the process (scheduling is a function of real-time priorities, privilege levels, contexts of execution...). In periodic mode, the processor therefore devotes a time
égal à ce quantum pour un processus donné. equal to this quantum for a given process.
Ce mécanisme permet de garantir une distribution de la ressource du processeur aux différents processus, sans monopolisation par l'un d'entre eux. La mise en oeuvre (ou "implémentation") habituelle de cette partition du temps en quanta de temps repose sur l'utilisation d'une base de temps disponible sur la machine, telle qu'un compteur, ou diviseur, de fréquence d'horloge (appelée "timer" en anglais) du système informatique qui This mechanism makes it possible to guarantee a distribution of the resource of the processor to the various processes, without monopolization by one of them. The usual implementation (or "implementation") of this partition of time in quanta of time is based on the use of a time base available on the machine, such as a counter, or divider, of clock frequency (called "timer" in English) of the computer system which
n'effectuent que la division ou le décompte d'unité élémentaires de temps. perform only the division or the counting of elementary time units.
Cette division est programmable et l'horloge ainsi que le diviseur sont externes au processeur. La fréquence en sortie de ce diviseur définit le quantum de temps minimum ou "grain" du quantum de temps, chaque quantum étant donc This division is programmable and the clock and the divider are external to the processor. The frequency at the output of this divider defines the minimum quantum of time or "grain" of the quantum of time, each quantum therefore being
un multiple entier de ce grain.an integer multiple of this grain.
Lorsque le compteur/diviseur atteint la valeur nulle, une interruption du processeur est déclenchée, et le système d'exploitation prend connaissance de l'échéance de la période programmée. La survenance de l'interruption permet au système d'exploitation de suspendre le processus en When the counter / divider reaches the zero value, an interruption of the processor is triggered, and the operating system becomes aware of the expiration of the programmed period. The occurrence of the interrupt allows the operating system to suspend the process by
cours et de passer à l'exécution d'un autre processus. course and move on to running another process.
Un problème apparaît lorsque l'on désire attribuer des quanta de temps différents à différents processus, et lorsque l'on désire monter à une A problem arises when we want to assign different quanta of time to different processes, and when we want to go up to a
fréquence d'ordonnancement relativement élevée. relatively high scheduling frequency.
Une première solution consiste à fixer définitivement la période du diviseur de fréquence d'horloge telle qu'elle définisse un très petit grain de quantum. Alors, un processus peut se voir attribuer un quantum de temps constitué de dix périodes de sortie du diviseur, alors qu'un autre processus s'en verra attribuer quinze. En effet, I'ordonnanceur peut ne changer de processus qu'après dix interruptions pour le premier processus et après quinze A first solution consists in definitively fixing the period of the clock frequency divider such that it defines a very small grain of quantum. Then, a process can be allocated a quantum of time made up of ten periods of exit from the divisor, while another process will be allocated fifteen. In fact, the scheduler can change the process only after ten interruptions for the first process and after fifteen
interruptions pour le deuxième.interruptions for the second.
Un problème de surcoût apparaît alors: lorsque le quantum de temps est composé de plusieurs périodes de base du diviseur de fréquence d'horloge, c'est-à-dire de plusieurs grains, seule la dernière interruption active effectivement l'ordonnancement. Toutes les interruptions précédentes n'occupent le processeur que pour comptabiliser le nombre total de grains accumulés. Même si le temps de traitement de l'interruption reste faible devant le grain, ce temps est de toute façon du gaspillage qui nuit à l'efficacité du A problem of additional cost then appears: when the quantum of time is composed of several basic periods of the clock frequency divider, that is to say of several grains, only the last interruption effectively activates the scheduling. All previous interrupts occupy the processor only to count the total number of grains accumulated. Even if the processing time of the interruption remains low in front of the grain, this time is in any case a waste which affects the efficiency of the
système informatique.computer system.
Deux autres problèmes exclusifs apparaissent ensuite À si la période de sortie du diviseur est trop élevée, un processus peut se voir attribuer un quantum beaucoup trop grand vis-à-vis de la période à laquelle le système doit répondre aux événements extérieurs, mais si la période est trop faible, le coût du temps d'interruption (appelé "interrupt overhead" en anglais) n'est plus négligeable Two other exclusive problems then appear. If the exit period of the divider is too high, a process may be assigned a much too large quantum with respect to the period to which the system must respond to external events, but if the period is too low, the cost of interrupt time (called "interrupt overhead" in English) is no longer negligible
devant la période de sortie du diviseur. before the exit period of the divider.
Une deuxième solution consiste à modifier la période de sortie du diviseur à chaque ordonnancement d'un processus. Cette méthode permet d'avoir un grain aussi fin que ce que permet la période de base du diviseur. De plus, un processus n'est plus interrompu inutilement. Elle ne l'est qu'à l'échéance du diviseur et le problème du coût du temps d'interruption n'existe plus. Mais, compte tenu du nombre restreint de diviseurs de fréquences d'horloge sur une carte mère, celui qui sert à l'ordonnancement des processus A second solution consists in modifying the exit period of the divider each time a process is scheduled. This method makes it possible to have a grain as fine as what the base period of the divider allows. In addition, a process is no longer interrupted unnecessarily. It is not until the expiration of the divider and the problem of the cost of downtime no longer exists. But, given the limited number of clock frequency dividers on a motherboard, the one used for process scheduling
est utilisé conjointement pour mettre à jour une "horloge absolue". is used together to update an "absolute clock".
Cette dernière est référencée à chaque service du système d'exploitation relatif au temps, tel qu'une demande de délai... La modification de la fréquence de sortie de ce diviseur à chaque changement de processus, sans perturbation de l'ensemble du système rend cette solution très complexe, The latter is referenced to each service of the operating system relating to time, such as a delay request ... The modification of the output frequency of this divider at each change of process, without disturbing the entire system makes this solution very complex,
voire impraticable.even impractical.
On connaît le document US 5,657,253 (Intel Corp.) qui présente des compteurs de performance intégrés à un processeur. Ces compteurs sont destinés à être utilisés par les programmeurs pour analyser le fonctionnement d'un logiciel en cours de développement, pour que le programmeur puisse modifier le code source du logiciel en fonction de l'observation autorisée par ces compteurs. L'utilisation de ces compteurs n'est donc pas envisagée en dehors de la phase de développement de logiciel. On connaît des méthodes assurant une adaptation continuelle Document US Pat. No. 5,657,253 is known (Intel Corp.) which presents performance counters integrated into a processor. These counters are intended to be used by programmers to analyze the operation of a software being developed, so that the programmer can modify the source code of the software according to the observation authorized by these counters. The use of these counters is therefore not envisaged outside of the software development phase. Methods are known which ensure continuous adaptation
d'un programme en prenant en compte des mesures de sa performance. of a program taking into account performance measures.
Dans une première approche, un système "adaptatif" consiste en deux entités distinctes: (1) le programme à adapter et (2) un "adaptateur", surveillant et modifiant le programme afin d'améliorer sa performance. Par exemple, dans l'optimisation dirigée par les traces ("profile-driven optimization" en anglais) le rôle de l'adaptateur est joué par un compilateur qui prend en entrée non seulement le programme à compiler, mais aussi des traces de ses exécutions précédentes. Ce type de compilateur a déjà été proposé: - par DEC (marque déposée de Digital Equipment Corporation, aux Etats-Unis d'Amérique) dans le document "continuous profiling: where as ail the cycles gone ?" de Anderson et al., DEC Systems Research Center and Western Research Lab, Proceedings of the 17th ACM Symposium on Operating Systems Principles, Decembre 1997, pages 1 à 14, et - par l'article de Jeremy Brown, Andre DeHon, lan Eslick, Michelle Goldberg, Ahmed Shah, et Massimiliano Poletto "The C/ever Compiler: Proposai for a First-Cut Smart Compile/', Transit Note 101, MIT Artificial In a first approach, an "adaptive" system consists of two distinct entities: (1) the program to be adapted and (2) an "adapter", monitoring and modifying the program in order to improve its performance. For example, in profile-driven optimization the role of the adapter is played by a compiler which takes as input not only the program to be compiled, but also traces of its executions previous. This type of compiler has already been proposed: - by DEC (registered trademark of Digital Equipment Corporation, in the United States of America) in the document "continuous profiling: where as ail the cycles gone?" de Anderson et al., DEC Systems Research Center and Western Research Lab, Proceedings of the 17th ACM Symposium on Operating Systems Principles, December 1997, pages 1 to 14, and - by article by Jeremy Brown, Andre DeHon, lan Eslick, Michelle Goldberg, Ahmed Shah, and Massimiliano Poletto "The C / ever Compiler: Proposai for a First-Cut Smart Compile / ', Transit Note 101, MIT Artificial
Intelligence Laboratory, Janvier 1994. Intelligence Laboratory, January 1994.
Dans le document DEC, les traces des exécutions passées peuvent contenir y compris des informations provenant des compteurs de performance tels que dans la proposition courante. Par contre, une limitation de principe de cette approche est que le flot d'informations passe dans un seul In the DEC document, traces of past executions may contain including information from performance counters as in the current proposal. On the other hand, a principle limitation of this approach is that the flow of information passes in a single
sens, de l'application vers l'adaptateur. direction, from application to adapter.
Ainsi, basé sur les informations des traces, le compilateur prend la décision de réécrire le code de l'application, sans que cette dernière ne soit au courant. L'avantage en est la transparence par rapport à l'application; en revanche, une limitation essentielle en est que l'adaptateur ne peut avoir qu'une compréhension limitée de l'application et de ses intentions, donc de la Thus, based on the trace information, the compiler makes the decision to rewrite the code of the application, without the latter being aware of it. The advantage is transparency compared to the application; on the other hand, an essential limitation is that the adapter can only have a limited understanding of the application and its intentions, therefore of the
manière d'améliorer son comportement. way to improve his behavior.
Dans une deuxième approche, une application "adaptative" joue à la fois le rôle du programme à adapter et de son propre adaptateur. Le cycle d'adaptation d'une telle application consiste en trois étapes: introspection, prise de décision et action. Dans l'étape d'introspection, I'application adaptative ramasse de l'information sur son propre contexte d'exécution ou sur son efficacité. Dans l'étape de prise de décision, cette information est analysée pour déterminer un changement éventuel de comportement, permettant de mieux l'adapter au nouveau contexte. L'étape d'action consiste à appliquer le changement de comportement à travers une "action" sur l'application. Les actions peuvent concerner un changement des paramètres de l'application, un changement de politique de gestion de ressources, ou même la modification du code de l'application, elle-même. Parmi les nombreux travaux existants, citons le système adaptatif de gestion de fichiers décrit par S.B. Lim, dans "Adaptative caching in a distributed file system" Technical Report 1936, Department of Computer Sciences, University of Illinois at Urbana, Champaign, Urbana, In a second approach, an "adaptive" application plays both the role of the program to be adapted and of its own adapter. The adaptation cycle of such an application consists of three stages: introspection, decision-making and action. In the introspection stage, the adaptive application collects information on its own execution context or on its effectiveness. In the decision-making stage, this information is analyzed to determine a possible change in behavior, allowing it to be better adapted to the new context. The action step consists in applying the behavior change through an "action" on the application. Actions can involve changing the application settings, changing the resource management policy, or even modifying the application code itself. Among the many existing works, let us quote the adaptive file management system described by S.B. Lim, in "Adaptive caching in a distributed file system" Technical Report 1936, Department of Computer Sciences, University of Illinois at Urbana, Champaign, Urbana,
Illinois, 1995.Illinois, 1995.
Cependant, à notre connaissance il n'existe pas d'applications However, to our knowledge there are no applications
adaptatives qui exploitent des informations internes au processeur. adaptive that use information internal to the processor.
L'application n'est donc pas consciente de l'utilisation des ressources au plus bas niveau da la machine cible. La conception d'applications adaptées au plus The application is therefore not aware of the use of resources at the lowest level of the target machine. The design of applications adapted to the most
près à un matériel particulier n'y est donc pas décrit. close to a particular material is therefore not described there.
L'invention entend améliorer ces différentes limitations de l'art antérieur. A cet effet, la présente invention vise, selon un premier aspect, un procédé, caractérisé en ce qu'il comporte: - une opération de préchargement d'au moins un compteur, par une première valeur prédéterminée, - une opération de décompte, par chaque dit compteur, d'occurrences d'un événement prédéterminé interne audit processeur, - une opération de comparaison de la valeur de chaque dit compteur avec une deuxième valeur prédéterminée associée audit compteur, et, lorsque l'un desdits compteurs atteint ladite deuxième valeur prédéterminée qui lui est associée, une opération de modification immédiate The invention intends to improve these various limitations of the prior art. To this end, the present invention aims, according to a first aspect, a method, characterized in that it comprises: - an operation of preloading at least one counter, by a first predetermined value, - a counting operation, by each said counter, of occurrences of a predetermined event internal to said processor, - an operation of comparing the value of each said counter with a second predetermined value associated with said counter, and, when one of said counters reaches said second predetermined value associated with it, an immediate modification operation
d'exécution de programme.program execution.
On observe ici que l'opération de modification d'exécution de programme d'ordinateur concerne aussi bien: - un changement de contexte de l'exécution du programme, - un changement de programme (ou de processus) exécuté, et It is observed here that the operation for modifying the execution of a computer program concerns as well: a change in the context of the execution of the program, a change in the program (or process) executed, and
- une modification du code de ce programme. - a modification of the code of this program.
Grâce à ces dispositions, I'exécution du programme peut s'adapter immédiatement au nombre et à la nature d'événements internes décomptés. Non seulement parmi les événements se trouvent, d'une part, le cycle de processeur mais aussi, d'autre part, d'autres événements internes au processeur. Selon des caractéristiques particulières, au cours de l'opération de comparaison de la valeur de chaque dit compteur avec une deuxième valeur prédéterminée associée audit compteur, la deuxième valeur prédéterminée est égale à "0". Comme le retour à zéro du compteur est généralement l'objet d'un signal particulier de la part d'un compteur intégré dans un circuit intégré, le passage dudit compteur à ladite deuxième valeur prédéterminée est facile à détecter. Selon des caractéristiques particulières, au cours de l'opération de décompte d'occurrences d'événements prédéterminés, I'un desdits compteurs décompte des impulsions d'horloges. Grâce à ces dispositions, une durée avant un changement d'exécution de programme, peut être prédéterminée. Selon d'autres caractéristiques particulières, au cours de l'opération de décompte d'occurrences d'événements prédéterminés, on décompte des événements susceptibles de retarder l'exécution d'un programme, puis, en fonction du résultat d'une ou plusieurs opérations de décompte, on effectue, de manière différée, une modification du contexte interne ou externe dudit programme. Grâce à ces dispositions, la survenance Thanks to these provisions, the execution of the program can immediately adapt to the number and nature of internal events counted. Not only among the events are, on the one hand, the processor cycle but also, on the other hand, other events internal to the processor. According to particular characteristics, during the operation of comparing the value of each said counter with a second predetermined value associated with said counter, the second predetermined value is equal to "0". As the return to zero of the counter is generally the subject of a particular signal from a counter integrated in an integrated circuit, the transition from said counter to said second predetermined value is easy to detect. According to particular characteristics, during the operation for counting occurrences of predetermined events, one of said counters counts clock pulses. Thanks to these provisions, a period before a change in program execution can be predetermined. According to other particular characteristics, during the counting operation of occurrences of predetermined events, counting events likely to delay the execution of a program, then, depending on the result of one or more operations counting, we carry out, in a deferred manner, a modification of the internal or external context of said program. Thanks to these provisions, the occurrence
de tels événements peut être surveillée et peut être corrigée. such events can be monitored and can be corrected.
Selon d'autres caractéristiques particulières, au cours de l'opération de préchargement d'un compteur, un dit compteur est un compteur According to other particular characteristics, during the operation of preloading a counter, a said counter is a counter
de performance interne à un processeur. internal processor performance.
Grâce à ces dispositions, des compteurs déjà intégrés dans des processeurs de type connu sont utilisés et sont donc d'une mise en oeuvre Thanks to these provisions, counters already integrated in known type processors are used and are therefore of implementation
simple et bon marché.simple and inexpensive.
Selon d'autres caractéristiques particulières, au cours de I'opération de préchargement, la première valeur prédéterminée dépend du processus, de manière prédéterminée. Grâce à ces dispositions, chaque processus peut obtenir un nombre différents d'occurrences d'événement, par exemple une durée d'exécution différente, ce qui permet de tenir compte du According to other particular characteristics, during the preloading operation, the first predetermined value depends on the process, in a predetermined manner. Thanks to these provisions, each process can obtain a different number of event occurrences, for example a different execution time, which makes it possible to take account of the
besoin de ressource dudit processus. need resource of said process.
Selon d'autres caractéristiques particulières, au cours de l'opération de préchargement, la première valeur prédéterminée dépend d'une valeur donnée au cours de l'exécution dudit programme. Grâce à ces dispositions, chaque processus peut obtenir un nombre d'occurrences d'événement, par exemple une durée d'exécution différente, qui tienne compte de ses besoins immédiats, ce qui permet de tenir compte, pratiquement en According to other particular characteristics, during the preloading operation, the first predetermined value depends on a value given during the execution of said program. Thanks to these provisions, each process can obtain a number of event occurrences, for example a different execution time, which takes account of its immediate needs, which makes it possible to take account, practically in
temps réel, de l'évolution du besoin de ressource dudit processus. in real time, of the evolution of the resource requirement of said process.
Selon d'autres caractéristiques particulières - au cours de l'opération de préchargement d'au moins un compteur, par une première valeur prédéterminée, on précharge au moins deux compteurs avec des premières valeurs prédéterminées, et - au cours de l'opération de décompte, chaque compteur décompte des occurrences d'un événement prédéterminé interne audit According to other particular characteristics - during the preloading operation of at least one counter, with a first predetermined value, at least two counters are preloaded with first predetermined values, and - during the counting operation , each counter counts the occurrences of a predetermined internal audit event
processeur, événement associé audit compteur. processor, event associated with said counter.
Grâce à ces dispositions, plusieurs nombres d'occurrences d'événements peuvent être simultanément surveillés pour modifier l'exécution Thanks to these provisions, several numbers of occurrences of events can be simultaneously monitored to modify the execution.
de programmes.of programs.
Selon d'autres caractéristiques particulières, ledit procédé comporte, préliminairement aux opérations de préchargement, de décompte, de comparaison et de modification, une opération de sélection d'événement au cours de laquelle on associe à chaque dit compteur un événement interne audit processeur. Grâce à ces dispositions, chaque type d'événement dont le nombre occurrences est surveillé peut être prédéfini en fonction de l'application According to other particular characteristics, said method comprises, preliminary to the preloading, counting, comparison and modification operations, an event selection operation during which an event internal to said processor is associated with each said counter. Thanks to these provisions, each type of event whose number of occurrences is monitored can be predefined depending on the application.
mise en oeuvre.Implementation.
Selon des caractéristiques particulières, au moins un compteur décompte le nombre d'occurrences d'impulsions d'horloge simultanées à un autre événement interne audit processeur. Grâce à ces dispositions, la durée dudit événement est surveillée pour déclencher un changement d'exécution de programme. Selon un deuxième aspect, la présente invention vise un dispositif de gestion de conditions d'exécution de programme d'ordinateur, caractérisé en ce qu'il comporte: - au moins un compteur d'occurrences d'au moins un événement interne, adapté à être préchargé par ledit processeur, à une première valeur prédéterminée, - au moins un moyen de détection qu'un dit compteur atteint une deuxième valeur prédéterminée, et - un processeur adapté à modifier immédiatement l'exécution de programme qu'il effectue, lorsque ledit moyen de détection détecte que ledit compteur atteint la deuxième valeur prédéterminée. L'invention vise aussi un ordinateur, une caméra, un télécopieur, un appareil photographique, un téléviseur, une imprimante, un scanner et un lecteur audio/vidéo, caractérisés en ce qu'ils comportent un dispositif tel que According to particular characteristics, at least one counter counts the number of occurrences of clock pulses simultaneous with another event internal to said processor. Thanks to these provisions, the duration of said event is monitored to trigger a change in program execution. According to a second aspect, the present invention relates to a device for managing conditions of execution of a computer program, characterized in that it comprises: - at least one occurrence counter of at least one internal event, adapted to be preloaded by said processor, to a first predetermined value, - at least one means for detecting that a said counter reaches a second predetermined value, and - a processor adapted to immediately modify the execution of the program which it performs, when said detection means detects that said counter reaches the second predetermined value. The invention also relates to a computer, a camera, a fax machine, a camera, a television set, a printer, a scanner and an audio / video player, characterized in that they comprise a device such as
succinctement exposé ci-dessus.succinctly set out above.
L'invention vise aussi: - un moyen de stockage d'informations lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique caractérisé en ce qu'il permet la mise en oeuvre du procédé de l'invention telle que succinctement exposée ci-dessus, et - un moyen de stockage d'informations amovible, partiellement ou totalement, et lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique caractérisé en ce qu'il permet la mise The invention also relates to: - a means of storing information readable by a computer or a microprocessor retaining instructions of a computer program characterized in that it allows the implementation of the method of the invention as briefly described above, and - a removable information storage means, partially or totally, and readable by a computer or a microprocessor keeping instructions of a computer program characterized in that it allows the setting
en oeuvre du procédé de l'invention telle que succinctement exposée ci- implementing the process of the invention as succinctly set out below
dessus. Les caractéristiques préférentielles ou particulières, et les avantages de ce dispositif, de cet ordinateur, de cette caméra, de ce télécopieur, de cet appareil photographique, de ce téléviseur, de cette imprimante, de ce scanner, de ce lecteur audio/vidéo et de ces moyens de stockage d'information étant identiques à ceux du procédé tel que above. The preferential or particular characteristics, and the advantages of this device, this computer, this camera, this fax machine, this photographic device, this television set, this printer, this scanner, this audio / video player and these information storage means being identical to those of the method such as
succinctement exposé ci-dessus, ces avantages ne sont pas rappelés ici. succinctly explained above, these advantages are not recalled here.
L'invention sera mieux comprise à la lecture de la description qui The invention will be better understood on reading the description which
va suivre, faite en regard des dessins annexés dans lesquels: - la figure 1 représente schématiquement un dispositif selon la présente invention, la figure 2 représente schématiquement une partie de la structure interne d'un processeur incorporé dans le dispositif illustré en figure 1, et - la figure 3 représente un organigramme schématique de fonctionnement du dispositif illustré en figures 1 et 2. En figure 1, un dispositif conforme à la présente invention est illustré sous forme de schéma synoptique et représenté sous référence générale 10. Il comporte, reliés entre eux par un bus d'adresses et de données 102: - un processeur Intel Pentium P6 (marques déposées) 106; - un diviseur de fréquence d'horloges 109 - une mémoire vive RAM 104; - une mémoire morte ROM 105; - un port d'entrée/sortie 103 servant à émettre et à recevoir des signaux à destination ou en provenance, respectivement, d'un réseau 107; - un écran de visualisation 108; - un clavier 101 fournissant des octets représentatifs des touches de clavier successivement utilisées; et - une mémoire de masse 110, par exemple constituée d'un disque will follow, made with reference to the appended drawings in which: - Figure 1 shows schematically a device according to the present invention, Figure 2 shows schematically a part of the internal structure of a processor incorporated in the device illustrated in Figure 1, and - Figure 3 shows a schematic flowchart of operation of the device illustrated in Figures 1 and 2. In Figure 1, a device according to the present invention is illustrated as a block diagram and shown under general reference 10. It comprises, interconnected by an address and data bus 102: - an Intel Pentium P6 processor (registered trademarks) 106; - a clock frequency divider 109 - a random access memory RAM 104; - ROM 105; an input / output port 103 used to transmit and receive signals to or from, respectively, a network 107; - a display screen 108; a keyboard 101 providing bytes representative of the keyboard keys successively used; and a mass memory 110, for example consisting of a disk
dur.hard.
Chacun des éléments illustrés en figure 1 est bien connu de l'homme du métier des systèmes de transmission et, plus généralement, des systèmes de traitement de l'information. Ces éléments ne sont donc pas décrits ici. Each of the elements illustrated in Figure 1 is well known to those skilled in the art of transmission systems and, more generally, information processing systems. These elements are therefore not described here.
On observe ici que les mots "segment de mémoire" utilisés ci- We observe here that the words "memory segment" used above
dessous désignent, dans chacune des mémoires, aussi bien une zone mémoire de faible capacité (ne conservant que quelques données binaires) qu'une zone mémoire de grande capacité (permettant de stocker un below designate, in each of the memories, both a low-capacity memory zone (keeping only a few binary data) and a large-capacity memory zone (used to store a
programme entier).whole program).
La mémoire vive 104 conserve des données, des variables et des résultats intermédiaires de traitement, dans des segments de mémoire portant, The random access memory 104 stores data, variables and intermediate processing results, in memory segments carrying,
dans la suite de la description, les mêmes noms que les données dont ils in the following description, the same names as the data they
conservent les valeurs. La mémoire vive 104 comporte notamment: - un segment de mémoire "pile A "dans lequel est conservé un contexte d'exécution d'une tâche référencée "A", - un segment de mémoire "pile B "dans lequel est conservé un contexte d'exécution d'une tâche référencée "B", - un segment de mémoire "code " dans lequel est conservé le keep the values. The random access memory 104 comprises in particular: - a memory segment "stack A" in which a context for executing a task referenced "A" is kept, - a memory segment "stack B" in which a context d execution of a task referenced "B", - a segment of memory "code" in which the
code du programme mis en oeuvre par le processeur 106. code of the program implemented by the processor 106.
La mémoire vive 104 constitue un moyen de stockage d'informations lisible par un ordinateur ou un microprocesseur. Elle conserve des instructions d'un programme informatique qui permet la mise en oeuvre du The RAM 104 constitutes a means of storing information readable by a computer or a microprocessor. It retains instructions from a computer program that allows the implementation of the
procédé de codage objet de l'invention. coding method object of the invention.
Selon une variante, la mémoire vive 104 est amovible, partiellement ou totalement, et comporte, par exemple une bande magnétique, According to a variant, the random access memory 104 is removable, partially or totally, and comprises, for example a magnetic strip,
une disquette ou un compact disque réinscriptible. a rewritable floppy or compact disc.
La mémoire morte 105 conserve un logiciel permettant le The read-only memory 105 retains software allowing the
démarrage correct du dispositif.device started correctly.
La figure 2 représente une partie de la structure interne d'un processeur 106 connu à la date de la présente invention, le processeur Intel FIG. 2 represents a part of the internal structure of a processor 106 known at the date of the present invention, the Intel processor
Pentium P6 (marques déposées).Pentium P6 (registered trademarks).
DESCRIPTION SUCCINCTE DU MODE DE REALISATION BRIEF DESCRIPTION OF THE EMBODIMENT
Dans ce processeur 106, il existe deux compteurs 201 et 202 qui peuvent mémoriser le nombre d'occurrences de certains événements. Parmi ceux-ci, il existe, par exemple: - un événement relatif aux cycles machines. Contrairement à tous les autres événements, celui-ci est une variable directement proportionnelle au temps puisque le compteur associé est incrémenté à chaque cycle d'horloge; - un événement correspondant au nombre d'instructions exécutées, qui n'est pas proportionnel au temps écoulé, puisque le processeur 106 peut exécuter plusieurs instructions en un cycle d'horloge comme il peut prendre plusieurs cycles d'horloges pour exécuter une seule instruction, suivant la complexité de cette instruction; - un événement correspondant à une prédiction de saut conditionnel qui a échoué ("miss predicted branches" en anglais); et - un événement correspondant à un accès à une donnée absente In this processor 106, there are two counters 201 and 202 which can store the number of occurrences of certain events. Among these, there are, for example: - an event relating to machine cycles. Unlike all other events, this one is a variable directly proportional to time since the associated counter is incremented at each clock cycle; an event corresponding to the number of instructions executed, which is not proportional to the time elapsed, since the processor 106 can execute several instructions in a clock cycle as it can take several clock cycles to execute a single instruction, depending on the complexity of this instruction; - an event corresponding to a conditional jump prediction which failed ("miss predicted branches" in English); and - an event corresponding to access to missing data
du cache ("cache miss" en anglais).of the cache ("cache miss" in English).
De plus, il est possible de contrôler l'incrémentation de chaque compteur en fonction du contexte d'exécution du processeur 106. En effet, chaque compteur peut être paramétré de telle manière qu'il ne soit incrémenté que pendant, d'une part, I'exécution du code utilisateur, et, d'autre part, l'exécution du code relatif à du code utilisateur. Cette technique permet de ne pas comptabiliser, sur le quantum de temps d'un processus, le temps In addition, it is possible to control the incrementation of each counter as a function of the execution context of the processor 106. Indeed, each counter can be configured in such a way that it is only incremented during, on the one hand, The execution of the user code, and, on the other hand, the execution of the code relating to the user code. This technique makes it possible not to count, on the quantum of time of a process, the time
d'exécution des interruptions indépendantes de ce processus. execution of independent interrupts of this process.
Ensuite, un compteur peut générer une interruption lorsqu'il repasse à zéro (passage à zéro connu de l'homme du métier sous le nom anglais de "overflow", qui signifie "dépassement de capacité"). Cette interruption est prise en compte par un contrôleur d'interruption programmable interne 203 (appelé "APIC" pour "Advanced Programmable Interrupt Controler", Then, a counter can generate an interrupt when it returns to zero (zero crossing known to those skilled in the art under the English name of "overflow", which means "overflow"). This interruption is taken into account by an internal programmable interrupt controller 203 (called "APIC" for "Advanced Programmable Interrupt Controler",
en anglais) qui provoque une interruption du processeur 106. in English) which causes an interruption of the processor 106.
Initialement destiné à faciliter la communication entre les différents processeurs dans une architecture multiprocesseurs, le contrôleur interne APIC 203 intègre, en plus, un contrôleur d'interruptions externes et quelques fonctionnalités vis-à-vis des événements internes (interruptions Initially intended to facilitate communication between the various processors in a multiprocessor architecture, the internal controller APIC 203 integrates, in addition, an external interrupt controller and some functionalities vis-à-vis internal events (interruptions
d'erreurs de communication avec un autre APIC,...). communication errors with another APIC, ...).
Comme chaque compteur, 201 ou 202, peut être initialisé avec une première valeur prédéterminée, il est possible de définir le nombre d'occurrences de l'événement avant la génération de l'interruption, ce nombre étant le complémentaire de la première valeur prédéterminée à une deuxième As each counter, 201 or 202, can be initialized with a first predetermined value, it is possible to define the number of occurrences of the event before the generation of the interrupt, this number being the complement of the first predetermined value to a second
valeur prédéterminée, ici égale à 232. predetermined value, here equal to 232.
Dans le mode de réalisation décrit et représenté, I'invention consiste à utiliser ce type de compteur interne en tant que compteur de cycle d'horloge et une génération d'interruption interne lors de la remise à zéro du compteur 201, pour obtenir un système: * à quantum variable: il suffit d'écrire différentes valeurs dans le compteur avant d'ordonnancer pour définir différents quanta attribués aux processus ordonnancés, * sans surcharge d'interruptions: une seule interruption est générée pour déclencher l'ordonnancement, avec un coût d'interruption d'ordonnancement minimal: l'interruption reste interne au processeur 106, * sans perturber le reste du système: la période de sortie du diviseur de fréquence d'horloge de la carte mère n'est pas altérée. Grâce aux différents événements gérés par le processeur Pentium, cette technique d'ordonnancement préemptif, communément basée In the embodiment described and shown, the invention consists in using this type of internal counter as a clock cycle counter and an internal interrupt generation when the counter 201 is reset to zero, to obtain a system : * with variable quantum: it is enough to write different values in the counter before scheduling to define different quanta attributed to the scheduled processes, * without overload of interruptions: a single interruption is generated to trigger the scheduling, with a cost minimum scheduling interruption: the interruption remains internal to processor 106, * without disturbing the rest of the system: the output period of the motherboard clock frequency divider is not altered. Thanks to the various events managed by the Pentium processor, this preemptive scheduling technique, commonly based
sur un quantum de temps, peut être étendue à d'autres critères de préemption. over a period of time, can be extended to other pre-emption criteria.
Par exemple, le système d'exploitation peut utiliser le deuxième compteur pour comptabiliser le nombre de cycles pendant lesquels les interruptions sont inhibées et qu'une interruption est en attente. Ainsi, le processus ne sera pas forcément préempté pour cause de fin de quantum temporel, mais parce qu'il a abusé du temps de blocage des interruptions alors qu'un périphérique attendait For example, the operating system can use the second counter to count the number of cycles during which interrupts are inhibited and an interrupt is pending. Thus, the process will not necessarily be preempted because of the end of the temporal quantum, but because it has abused the time for blocking interruptions while a device was waiting
d'être servi.to be served.
DESCRIPTION DETAILLEE DU MODE DE REALISATION DETAILED DESCRIPTION OF THE EMBODIMENT
Le processeur Intel Pentium P6 (marques déposées) contient deux compteurs 201 et 202 respectivement appelés "PerfCtrO" "PerfCtrl" et deux registres 204 et 205 de contrôle de ces compteurs, registres appelés "EvntSeIO" et "EvntSeil", résidant dans les registres spécifiques de machine (appelés "MSRs" pour "Machine Specific Registers", en anglais). Propres à l'architecture Intel, ces registres sont définis pour une version particulière d'un The Intel Pentium P6 processor (registered trademarks) contains two counters 201 and 202 respectively called "PerfCtrO" "PerfCtrl" and two registers 204 and 205 for controlling these counters, registers called "EvntSeIO" and "EvntSeil", residing in the specific registers machine (called "MSRs" for "Machine Specific Registers", in English). Specific to Intel architecture, these registers are defined for a particular version of a
processeur Pentium.Pentium processor.
Les adresses de ces registres sont données dans le tableau suivant: Registre Adresses 201 EvntSe0l 0x186 202: EvntSeil 0x187 204: PerfCtr0 0xC1 205: PerfCtrl 0xC2 Pour mesurer le temps d'exécution avec le compteur 201 "EvntSelO", le processeur écrit donc le numéro "0x79" dans le registre 204 "PerfCtrO", puisque l'événement permettant de mesurer le temps d'exécution est le numéro "0x79", défini dans la documentation Intel comme le nombre de The addresses of these registers are given in the following table: Address Register 201 EvntSe0l 0x186 202: EvntSeil 0x187 204: PerfCtr0 0xC1 205: PerfCtrl 0xC2 To measure the execution time with the counter 201 "EvntSelO", the processor therefore writes the number "0x79" in register 204 "PerfCtrO", since the event used to measure the execution time is the number "0x79", defined in the Intel documentation as the number of
cycles au cours duquel le processeur n'est pas arrêté. cycles during which the processor is not stopped.
Or, le processeur 106 est dans l'état "arrêté" lorsqu'une instruction "HLT" est exécutée. Lorsque le processeur 106 rencontre cette instruction, il s'arrête jusqu'à ce qu'une interruption externe (si elles ne sont pas masquées), une interruption non masquable ("NMI" pour "No Maskable Interrupt" en anglais) ou une remise à zéro ("RESET" en anglais) apparaisse. De plus, cette instruction "HLT" fait partie des instructions privilégiées, c'est-à-dire que seul le système d'exploitation peut l'exécuter sans générer d'exception de protection générale. En conclusion, cette instruction "HLT" est introuvable dans du code utilisateur et donc celui-ci ne peut arrêter le processeur. On peut donc considérer que l'événement "0x79" correspond donc exactement au nombre de However, the processor 106 is in the "stopped" state when an "HLT" instruction is executed. When processor 106 encounters this instruction, it stops until an external interrupt (if they are not masked), a non maskable interrupt ("NMI" for "No Maskable Interrupt" in English) or a reset to zero ("RESET" in English) appears. In addition, this "HLT" instruction is part of the privileged instructions, that is to say that only the operating system can execute it without generating a general protection exception. In conclusion, this "HLT" instruction cannot be found in user code and therefore this code cannot stop the processor. We can therefore consider that the event "0x79" therefore corresponds exactly to the number of
cycles consommés par le code utilisateur. cycles consumed by the user code.
Le niveau de privilège courant ("CPL" pour "Current Privilege Level") est une notion propre à l'architecture Intel, elle fixe le niveau de protection dans lequel du code s'exécute. Bien qu'il existe quatre niveaux, de 0 (niveau dans lequel le code a le plus de privilège, donc a le droit de faire le plus de choses) à 3 (niveau le moins privilégié), le niveau 0 est généralement appelé niveau superviseur ou noyau, et les niveaux 1 à 3 les niveaux utilisateurs. Cette architecture permet d'exécuter le noyau du système The current privilege level ("CPL" for "Current Privilege Level") is a concept specific to the Intel architecture, it fixes the level of protection in which code is executed. Although there are four levels, from 0 (level in which the code has the most privilege, therefore has the right to do the most things) to 3 (least privileged level), level 0 is generally called supervisor level or core, and levels 1 to 3 the user levels. This architecture allows to run the system kernel
d'exploitation au niveau 0, et les différentes applications au niveau utilisateur. operating level 0, and the various applications at user level.
Les registres de contrôle 204 et 205 permettent notamment de spécifier: l 'événement à mesurer par chaque compteur, si cet événement doit être pris en compte lors de l'exécution du code non superviseur ("CPL" compris entre 1 et 3), si cet événement doit être pris en compte lors de l'exécution du code superviseur ("CPL" égal à 0), si une interruption doit être générée lorsque le compteur The control registers 204 and 205 make it possible in particular to specify: the event to be measured by each counter, if this event must be taken into account during the execution of the non-supervisor code ("CPL" between 1 and 3), if this event must be taken into account when executing the supervisor code ("CPL" equal to 0), if an interrupt must be generated when the counter
repasse à zéro.goes back to zero.
Dans le cas d'un système d'exploitation dans lequel: - les routines de service pour l'utilisateur sont au niveau de privilège 1 ou 2, et - les routines asynchrones à l'exécution du code utilisateur ("user" en anglais) (dont l'ordonnanceur) au niveau 0, il est possible de compter encore plus facilement la durée d'exécution d'un processus: il suffit de spécifier que l'incrémentation du compteur n'a lieu que In the case of an operating system in which: - the service routines for the user are at privilege level 1 or 2, and - the routines asynchronous to the execution of the user code ("user" in English) (including the scheduler) at level 0, it is possible to count even more easily the duration of execution of a process: it suffices to specify that the incrementation of the counter only takes place
lorsque le code exécuté n'est pas au niveau 0. when the code executed is not at level 0.
Le composant 207 "LOGIC" comporte des composants de logique combinatoire bien connus, tels que des portes logiques, qui sélectionnent pour Component 207 "LOGIC" includes well-known combinational logic components, such as logic gates, which select for
chaque compteur les valeurs de CPL à considérer. each counter the CPL values to consider.
Le composant 208 multiplexeur sélectionne, pour chaque compteur, I'événement à considérer. Le processeur 106 est programmé pour mettre en oeuvre l'organigramme illustré en figure 3. D'abord, le processeur 106 effectue une opération d'initialisation 301, qui comporte: -la mise en place du système d'exploitation, de manière connue, -le démarrage du logiciel, de manière bien connue, et - la sélection de l'événement interne qui va être décompté par le The multiplexer component 208 selects, for each counter, the event to be considered. The processor 106 is programmed to implement the flow diagram illustrated in FIG. 3. First, the processor 106 performs an initialization operation 301, which comprises: the establishment of the operating system, in a known manner, -the start of the software, in a well known manner, and - the selection of the internal event which will be counted by the
compteur 201, comme indiqué ci-dessus. counter 201, as indicated above.
Cet événement est, dans l'exemple décrit et représenté, la This event is, in the example described and represented, the
survenance d'un cycle de processeur. occurrence of a processor cycle.
Ensuite, le processeur 106 effectue une opération 302 de préchargement du compteur 201 avec une valeur telle que le complémentaire de ce nombre à 232 soit égal au nombre d'occurrences de l'événement interne considéré, que l'on souhaite dénombrer avant de changer de processus ou decontexte de processus. Then, the processor 106 performs an operation 302 of preloading the counter 201 with a value such that the complement of this number to 232 is equal to the number of occurrences of the internal event considered, which one wishes to count before changing process or process context.
Ensuite, au cours d'une opération 303, un processus est exécuté et le compteur 201 décompte le nombre d'occurrences de l'événement qui lui a été associé, c'est-à-dire qu'à chaque occurrence de cet événement associé, il incrémente sa valeur de 1. Puis, au cours d'une opération 304, une interruption est déclenchée par l'APIC 203, dès que le compteur 201 repasse à la valeur "0". Dès que l'interruption est reçue, le processeur change de processus en cours d'exécution ou change de contexte du processus en cours d'exécution, Then, during an operation 303, a process is executed and the counter 201 counts the number of occurrences of the event which has been associated with it, that is to say at each occurrence of this associated event , it increments its value by 1. Then, during an operation 304, an interruption is triggered by the APIC 203, as soon as the counter 201 returns to the value "0". As soon as the interrupt is received, the processor changes the running process or changes the context of the running process,
au cours d'une opération 305.during an operation 305.
Ensuite, l'opération 302 est réitérée. Then, operation 302 is repeated.
On observe ici qu'un événement décompté peut aussi bien être I'un des événements présentés dans la documentation du processeur considéré, qu'une combinaison logique de ces événements (avec des fonctions logiques telles que "et",...). Ainsi, chaque cycle d'horloge survenant pendant un événement interne au processeur constitue un nouvel événement interne au processeur. On observe aussi que la présence de deux compteurs permet d'assigner à chaque compteur un événement particulier, au cours de l'initialisation 301, chaque compteur étant alors préchargé individuellement avec une première valeur prédéterminée particulière au cours de l'opération It is observed here that a counted event may as well be one of the events presented in the documentation of the processor considered, as a logical combination of these events (with logical functions such as "and", ...). Thus, each clock cycle occurring during an event internal to the processor constitutes a new event internal to the processor. It is also observed that the presence of two counters makes it possible to assign to each counter a particular event, during initialization 301, each counter then being preloaded individually with a first particular predetermined value during the operation.
302 et le premier compteur repassant à zéro déclenchant l'interruption 304. 302 and the first counter going back to zero triggering the interruption 304.
Selon une variante non représentée, à chaque processus est associée une première valeur prédéterminée qui lui est particulière. Dans cette variante, au cours de l'opération 302, le processeur précharge le compteur 201 à une première valeur prédéterminée qui dépend du processus qui va être exécuté au cours de l'opération 303. Plus généralement, tous les modes d'ordonnancement connus antérieurement à la présente invention et qui modifient dynamiquement les quanta attribués à chaque processus, bénéficient de la présente invention, puisqu'il n'est, grâce à elle, plus nécessaire de multiplier les interruptions correspondant au grain de ces quanta pour mesurer According to a variant not shown, each process is associated with a first predetermined value which is specific to it. In this variant, during operation 302, the processor preloads the counter 201 to a first predetermined value which depends on the process which will be executed during operation 303. More generally, all the scheduling modes known previously to the present invention and which dynamically modify the quanta allocated to each process, benefit from the present invention, since it is no longer necessary thanks to it to multiply the interruptions corresponding to the grain of these quanta to measure
leur durée.their duration.
Selon une autre variante non représentée, à chaque processus est associée une première valeur prédéterminée qui lui est particulière, en fonction des besoins exprimés par le processus. Par exemple, un processus qui sait qu'il va avoir besoin d'une grande partie de la ressource du processeur indique, à une adresse prédéterminée de la mémoire vive 104, une première valeur prédéterminée dite "requise" qui correspond à son besoin. Au cours de l'opération 302, le processeur 106 effectue alors un préchargement du compteur 201 avec cette première valeur prédéterminée requise, ou avec une première valeur qui en dépend, en fonction des besoins des autres processus, According to another variant not shown, each process is associated with a first predetermined value which is specific to it, according to the needs expressed by the process. For example, a process which knows that it will need a large part of the processor resource indicates, at a predetermined address of the random access memory 104, a first predetermined value called "required" which corresponds to its need. During the operation 302, the processor 106 then performs a preloading of the counter 201 with this first required predetermined value, or with a first value which depends on it, according to the needs of the other processes,
et des qualités de service qui leur sont attribuées. and the qualities of service attributed to them.
Selon une autre variante non représentée: - au cours de l'opération d'initialisation 301, les événements décomptés par le compteur 201 sont d'autres événements que des impulsions d'horloge et - I'opération 305 comporte d'autres étapes que le changement de processus ou le changement de contexte. Ainsi, par exemple, si l'événement considéré est relatif à une opération prédéterminée coûteuse en temps de traitement, comme l'accès systématique à une adresse dont la donnée n'est pas dans la mémoire cache, l'opération de modification immédiate d'exécution de programme peut comporter une opération de correction de ce défaut par exemple par préchargement de zones de mémoire destinées à être utilisées par ladite opération. En variante, I'homme du métier utilise l'accès aux événements internes que lui permet l'invention pour améliorer, de manière connue en soi, la According to another variant not shown: - during the initialization operation 301, the events counted by the counter 201 are other events than clock pulses and - the operation 305 comprises other steps than the change of process or change of context. Thus, for example, if the event considered relates to a predetermined operation which is costly in processing time, such as systematic access to an address whose data is not in the cache memory, the operation for immediate modification of program execution may include an operation to correct this defect, for example by preloading memory areas intended to be used by said operation. Alternatively, a person skilled in the art uses the access to internal events that the invention allows him to improve, in a manner known per se, the
programmation adaptative décrite ci-dessus. adaptive programming described above.
Plus généralement, I'opération 305 comporte une modification immédiate d'exécution de programme, et comporte, par exemple comporte: - au moins un changement de contexte de l'exécution du programme, - au moins un changement de processus exécuté et/ou More generally, the operation 305 comprises an immediate modification of program execution, and comprises, for example comprises: - at least one change of context for the execution of the program, - at least one change of process executed and / or
- au moins une modification du code de ce programme. - at least one modification of the code for this program.
Selon une variante, la deuxième valeur prédéterminée qui déclenche la modification immédiate d'exécution de programme est initialisée au cours de l'opération de préchargement 302, dans un comparateur qui effectue en permanence la comparaison de la valeur du compteur avec la deuxième valeur prédéterminée et déclenche la modification immédiate d'exécution du programme dès que ces valeurs sont égales, au cours de According to a variant, the second predetermined value which triggers the immediate modification of program execution is initialized during the preloading operation 302, in a comparator which continuously performs the comparison of the value of the counter with the second predetermined value and triggers the immediate modification of program execution as soon as these values are equal, during
l'opération 304.operation 304.
Claims (34)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9805945A FR2778761B1 (en) | 1998-05-12 | 1998-05-12 | DEVICE AND METHOD FOR PROVIDING COMPUTER PROGRAM EXECUTION TO EVENTS INTERNAL TO A PROCESSOR |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9805945A FR2778761B1 (en) | 1998-05-12 | 1998-05-12 | DEVICE AND METHOD FOR PROVIDING COMPUTER PROGRAM EXECUTION TO EVENTS INTERNAL TO A PROCESSOR |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2778761A1 true FR2778761A1 (en) | 1999-11-19 |
FR2778761B1 FR2778761B1 (en) | 2001-08-03 |
Family
ID=9526245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR9805945A Expired - Fee Related FR2778761B1 (en) | 1998-05-12 | 1998-05-12 | DEVICE AND METHOD FOR PROVIDING COMPUTER PROGRAM EXECUTION TO EVENTS INTERNAL TO A PROCESSOR |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR2778761B1 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0395281A2 (en) * | 1989-04-27 | 1990-10-31 | Digital Equipment Corporation | Method and apparatus for relating diagnostic information to specific computer instructions |
EP0689141A2 (en) * | 1994-06-20 | 1995-12-27 | AT&T Corp. | Interrupt-based hardware support for profiling system performance |
US5657253A (en) * | 1992-05-15 | 1997-08-12 | Intel Corporation | Apparatus for monitoring the performance of a microprocessor |
-
1998
- 1998-05-12 FR FR9805945A patent/FR2778761B1/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0395281A2 (en) * | 1989-04-27 | 1990-10-31 | Digital Equipment Corporation | Method and apparatus for relating diagnostic information to specific computer instructions |
US5657253A (en) * | 1992-05-15 | 1997-08-12 | Intel Corporation | Apparatus for monitoring the performance of a microprocessor |
EP0689141A2 (en) * | 1994-06-20 | 1995-12-27 | AT&T Corp. | Interrupt-based hardware support for profiling system performance |
Non-Patent Citations (1)
Title |
---|
"PROCESSOR PERFORMANCE MONITORING WITH DEPICTION OF THE EFFICIENCY OF BUS UTILIZATION AND MEMORY ACCESSES OF SUPERSCALAR MICROPROCESSOR", IBM TECHNICAL DISCLOSURE BULLETIN, vol. 40, no. 1, January 1997 (1997-01-01), pages 67 - 69, XP000686104 * |
Also Published As
Publication number | Publication date |
---|---|
FR2778761B1 (en) | 2001-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1337919B1 (en) | Security method making deterministic real time execution of multitask applications of control and command type with error confinement | |
EP1043658B1 (en) | Method for improving the performance of a multiprocessor system including a tasks waiting list and system architecture thereof | |
US8468532B2 (en) | Adjusting CPU time allocated to next thread based on gathered data in heterogeneous processor system having plurality of different instruction set architectures | |
EP2480969B1 (en) | System and method for managing interleaved execution of command threads | |
US6446029B1 (en) | Method and system for providing temporal threshold support during performance monitoring of a pipelined processor | |
EP2257876B1 (en) | Method for preloading configurations of a reconfigurable heterogeneous system for information processing into a memory hierarchy | |
US7757214B1 (en) | Automated concurrency configuration of multi-threaded programs | |
JP2022511177A (en) | Enhancement of Function As Service (FaaS) System | |
FR2881239A1 (en) | METHOD FOR MANAGING ACCESS TO SHARED RESOURCES IN A MULTI-PROCESSOR ENVIRONMENT | |
FR2818769A1 (en) | METHOD AND SYSTEM FOR REAL-TIME MULTITASTIC OPERATION | |
EP3123344B1 (en) | Method for data transfer between real-time tasks using a dma memory controller | |
KR20170131366A (en) | Shared resource access control method and apparatus | |
Ryu et al. | Resource policing to support fine-grain cycle stealing in networks of workstations | |
FR2881241A1 (en) | METHOD FOR OPTIMIZING JOURNALIZATION AND MULTI-TASK APPLICATION REJECTION IN A MONO-PROCESSOR OR MULTI-PROCESSOR COMPUTER SYSTEM | |
US9734204B2 (en) | Managed runtime cache analysis | |
Evans et al. | Optimizing Java: practical techniques for improving JVM application performance | |
FR2778761A1 (en) | Control of execution of programs in computer using internal events in the processor running real-time preemptive multitasking | |
Zeng et al. | Argus: A Multi-tenancy NoSQL store with workload-aware resource reservation | |
WO2011047823A1 (en) | Electronic control unit having a real-time core managing partitioning | |
FR2980611A1 (en) | CIRCUIT FOR PLANNING THE PROCESS OF DATA PROCESSING | |
US20210157632A1 (en) | Controlling calls to kernels | |
FR3012896A1 (en) | METHOD FOR VALIDATION OF AN APPLICATION RESPONSE TIME, METHOD FOR DEPLOYING AN APPLICATION COMPRISING SUCH A VALIDATION METHOD, COMPUTER PROGRAM AND CORRESPONDING DEVICES | |
Kirkbride et al. | System Monitoring | |
Wang | Improving Cloud Efficiency with Online Learning | |
Shan et al. | APLE: Addressing lock holder preemption problem with high efficiency |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ST | Notification of lapse |
Effective date: 20140131 |