WO2023180265A1 - Procédé de gestion d'exécution d'une pluralité de fonctions - Google Patents
Procédé de gestion d'exécution d'une pluralité de fonctions Download PDFInfo
- Publication number
- WO2023180265A1 WO2023180265A1 PCT/EP2023/057113 EP2023057113W WO2023180265A1 WO 2023180265 A1 WO2023180265 A1 WO 2023180265A1 EP 2023057113 W EP2023057113 W EP 2023057113W WO 2023180265 A1 WO2023180265 A1 WO 2023180265A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- task
- execution
- instruction
- function
- functions
- Prior art date
Links
- 230000006870 function Effects 0.000 title claims abstract description 169
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000001186 cumulative effect Effects 0.000 claims description 20
- 238000012795 verification Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 2
- 238000005259 measurement Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 6
- 239000000725 suspension Substances 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Definitions
- the invention relates to the field of methods for managing the execution of tasks by a processor for a motor vehicle.
- an electric, hybrid or thermal motor vehicle comprises a plurality of devices to be controlled, such as for example the elements constituting the vehicle's traction chain or the electrical equipment.
- the motor vehicle comprises a plurality of processors or CPUs for “central processing unit” in English.
- Each processor comprises a plurality of cores, and each core is configured to execute a plurality of tasks.
- Each task is made up of a succession of functions. Executing all the functions of a task makes it possible, for example, to determine the commands to issue to the various devices installed in the vehicle.
- each cooperative task is associated with a priority level and a cooperative task in progress can be interrupted at certain predefined times in order to execute a cooperative task of a higher priority level.
- tasks with a high priority level correspond to commands for elements constituting the vehicle's powertrain, and in particular the thermal engine or the electric machine.
- certain cooperative tasks may include at least one stopping function, called “point of schedule” in English by those skilled in the art.
- Each stop function is placed between two functions in the task's function sequence.
- a task stopping function is executed, it is used to check whether the execution of a cooperative task with a priority level higher than the priority level of the currently executing task is requested. In this case, the currently executing task is interrupted, in other words suspended, after the stop function in order to execute the higher priority task. If no higher priority level tasks are waiting to execute, then the currently executing task is not interrupted.
- the location of the stop functions in the sequence of functions of each task is predefined.
- the duration between two successive stop functions depends of the execution time of the functions to be executed between the two stop functions. In the case where this duration is relatively long, in particular when it is greater than 300 us, and a higher priority task is waiting for execution, this can generate a relatively large latency time between the execution request of a task of higher priority level and its execution. This can also generate a delay, non-responsiveness, in the determination and application of commands to the elements of the vehicle's powertrain.
- a solution to this problem may be to increase the number of stopping functions in each task.
- each time a task is interrupted it is necessary to save all of the parameters of the interrupted task at the stage where it was interrupted, so as to be able to resume the execution of this task after the execution of a second task of a higher priority level. This represents a waste of time and adds many steps in managing the execution of the functions of each task.
- the invention relates to a method for managing the execution of a plurality of tasks by a processor intended to be mounted in a vehicle, the vehicle comprising a plurality of devices, each task being associated with a priority level and comprising a sequence of predefined functions, said sequence comprising an alternation of instruction functions and so-called “preemption” functions, all of the instruction functions of a task allow, when they are carried out, the one after the other, to determine an instruction or a command to be issued to a device or to determine input or output values relating to a device, each instruction function is associated with an execution time, each function of preemption being configured to define the necessity of interrupting a task to execute a task of higher priority level than the priority level of the task being executed, following the execution of an instruction function of the task, the method comprises the steps: of executing the preemption function during which a predictive duration is determined by summing the value of the execution duration of the instruction function successive to the preemption function and the duration of all the instruction functions of the sequence already executed since
- the method makes it possible to interrupt the implementation of a sequence of instruction functions of a task only when a task of a higher priority level is awaiting execution. This allows the processor to be more responsive in performing higher priority tasks. Otherwise, the process lets the currently running task run.
- the tasks implemented in this method are commonly referred to as “cooperative” tasks, since they cooperate with each other during the execution of a preemption function, in order to execute the highest priority execution function.
- the method comprises the steps: a) interrupting the task being executed , b) execution of the higher priority level task.
- the predictive duration is between 200 and 400 us, preferably 300 us.
- the processor comprises a memory area in which a reference table is recorded, the reference table associating an execution duration with each function of the task, the method comprises, for each function currently being executed, a step of: a) determining the execution duration of the executed instruction function, b) updating the duration value associated with the executed instruction function in the reference table from the fixed duration of execution.
- the memory zone comprises a counter and a correspondence table, the correspondence table associating each task with the number of instruction functions that said task comprises, the method comprising the steps: a) initializing the value of the counter to zero, before the execution of the first function of the sequence of functions of a task, b) incrementing the counter during the execution of each instruction function of said sequence of functions, c) when the value of the counter is equal to the number of instruction functions associated with said task in the correspondence table, resetting the counter to the zero value.
- a cumulative duration value being equal to the execution duration of all the instruction functions of the sequence already executed, is recorded in the memory zone, the method comprising, during each execution of 'an instruction function of the sequence, a step of updating the cumulative duration recorded in the memory area, in which the measured execution duration of said executed instruction function is added to the value of the cumulative duration .
- the invention also relates to a computer program product characterized in that it comprises a set of program code instructions which, when executed by one or more processors, configure the processor(s) to put implement a process as described above.
- the invention also relates to a processor for a motor vehicle, the processor being able to implement a plurality of tasks, each task being associated with a priority level and comprising a sequence of predefined functions, said sequence comprising an alternation of instruction functions and preemption functions, all of the instruction functions of a task make it possible, when carried out one after the other, to determine an instruction or command to be issued to a device or to determine input or output values relating to a device, each instruction function is associated with an execution time, each preemption function being configured to define the need for interruption of a task to execute a level task of priority higher than the priority level of the task being executed, the processor being able to implement the method as described previously.
- the invention relates to a motor vehicle comprising at least one processor as described above.
- Figure 1 is an illustration of a processor core according to the invention
- FIG. 2 is an illustration of the method according to the invention. [Description of embodiments]
- a motor vehicle comprises a plurality of devices, and in particular various elements constituting the traction chain or electrical devices.
- the vehicle comprises at least one processor capable of determining and issuing instructions, in other words commands, to each of said devices.
- each processor includes at least one core.
- each core 10 of the processor comprises an execution module 11 and a management module 12.
- the management module 12 is able to receive each task to be executed.
- Each execution module 11 is able to implement a set of tasks, more precisely so-called “cooperative” tasks.
- Each task is associated with a priority level.
- a task associated with a higher priority level is called "priority" and concerns in particular the determination of instructions or commands to be issued to an element of the traction chain or the reading of measurements carried out by a sensor, or a set of calculations .
- Each task includes a plurality of functions and more precisely a sequence of functions.
- each task includes a succession of functions and more precisely an alternation of so-called “instruction” functions and so-called “pre-emption” functions.
- the execution of the succession of instruction functions of a task makes it possible to directly or indirectly define an instruction or command to be issued to the device relating to said task.
- Each core 10 of the processor also includes a memory area MEM in which the value of a counter, a reference table, a correspondence table and the value of a cumulative duration are recorded.
- the reference table associates an execution time with each instruction function of a task.
- the execution time of an instruction function may be predefined and correspond to a previously performed measurement of the execution time of the instruction function. If no measurement of the execution time has yet been carried out, the predefined execution time is in particular initialized to zero.
- the correspondence table associates each task with the number of instruction functions that said task includes.
- the cumulative duration represents, for a sequence of given instruction functions of a task, the actual execution duration of all the functions of the task already carried out since a predefined time.
- the predefined time is also called “scheduling time” and designates for example the time from which the first instruction function of the task is executed or the time from which an instruction function of the task is executed after an interruption of execution of said task.
- preemption or in other words “prescription” function between two instruction functions makes it possible to define whether the task currently being executed must be interrupted or not in order to execute another task with a higher priority. .
- the preemption function allows you to define the order of execution of tasks according to the priority level of each task.
- a preemption function when executed, it is configured to determine a so-called “predictive” duration by summing the value of the execution duration of the instruction function about to be executed ( and therefore the execution duration of the instruction function placed just after the preemption function in the sequence of functions) and the cumulative duration, in other words the value of the duration of all the instruction functions in the sequence already executed since the start of the task or since the last interruption of the task.
- the value of the execution time of the function about to be executed is notably retrieved from the reference table recorded in the MEM memory zone.
- the predictive duration therefore represents an estimate, in other words a prediction, of the execution time of all the instruction functions already executed and the instruction function about to be executed.
- the preemption function is configured to check whether a task with a priority level higher than the priority level of the task currently being executed is in progress. waiting for execution.
- the predefined time threshold corresponds in particular to a value between 200 and 400 us, preferably 300 us.
- each task includes a measurement function, configured to determine, and in particular measure, the execution time of each task instruction function.
- the measurement function is also capable of updating the reference table in particular by determining a new execution time value. According to a first example, each time an instruction function is executed, the execution time is measured and its value replaces the predefined duration associated with said instruction function and recorded in the memory area MEM.
- the new value is determined by repeatedly measuring the duration of execution of an instruction function then by determining the average of the different measurements carried out and by replacing the predefined duration associated with said function d instruction and recorded in the memory area MEM by the newly determined average.
- the measurement function is able to add, after each execution of an instruction function of the sequence, the measured execution duration of said instruction function executed at the value of the cumulative duration recorded in the MEM memory zone.
- the cumulative duration represents the execution time of all the instruction functions of the sequence already executed.
- a sequence of functions of a predefined task to be executed is considered.
- the execution time of each instruction function is recorded in the reference table in the MEM memory area and may or may not be predefined.
- the method is implemented from a predefined planning time.
- the method includes a step of initializing E01 of the value of the counter to the zero value.
- the method includes a step of initializing E02 to zero of the value of the cumulative duration recorded in the memory zone MEM.
- the method then comprises an execution step E1 of a task instruction function from said predefined planning instant.
- the method includes a step of incrementing AND the value of the counter.
- the method comprises a step E2 of determining the execution time of each instruction function executed. To do this, the execution time of said function is measured.
- the method then comprises a step E3 of updating the duration value associated with each instruction function executed in the reference table from the execution duration determined previously.
- a new execution duration value is determined and replaces the value associated with the instruction function in the reference table with the new determined duration value.
- the new duration value may correspond to the average between the value of the duration determined during determination step E2 and the value of the execution duration associated with the function in the reference table, or may correspond to the measurement of the execution time carried out during the determination step E2, or may correspond to the average between the measurement of the execution time of the function carried out during the determination step E2 and at least one other measurement duration of said function executed during another iteration of the determination step E2 of the method.
- the method then comprises a step E4 of updating the cumulative duration recorded in the memory zone MEM, in which the value of the measured execution duration of said executed instruction function is added to the value of the cumulative duration recorded in MEM memory area.
- the method also includes a step of executing the preemption function E5 during which a predictive duration is determined by summing the value of the stored execution duration of the instruction function to be executed after the preemption function, and the cumulative duration, in other words the duration of all the instruction functions of the sequence already executed since the planning instant.
- the method comprises a step E6 of verifying the request for execution by the execution module 11 of a task of a priority level higher than the priority level of the task being executed.
- the verification step E6 consists of checking whether the management module 12 has received a task to execute, the priority level of which is higher than the task being executed. Said task is then called “priority task” and is awaiting execution by the execution module 11.
- the method includes an interruption step E7, in other words suspension, of the execution of the task in progress. 'execution. More precisely, the preemption function asks the execution module 11 to temporarily stop executing said task. Following the interruption step E7, the method also includes a step of resetting the value of the cumulative duration to zero.
- the method includes an execution step E8 of the priority task.
- the priority task is executed by the execution module 11, but it is the management module 12 which asks the execution module 11 to execute said priority task.
- the method includes a step E9 of executing the task which was previously interrupted, and more precisely of executing the instruction function successive to the last instruction function.
- instruction of the task executed before the execution of the priority task.
- the management module 12 which asks the execution module 11 to execute said previously interrupted task.
- the instant from which the interrupted task is executed again is defined by the terms “second planning instant”, from which a new predictive duration value and a new cumulative duration value will be calculated.
- the method comprises an execution step E10 of the task currently being executed, and more precisely from the successive instruction function to the preemption function which has been executed.
- the method also includes an execution step E10 of the task being executed, and more precisely of the instruction function successive to the function preemption that has been executed. [0068] Following execution step E10 or execution step E9, during which an instruction function is executed, the AND incrementation steps of the method, and the following steps of the method, are repeated . In other words, for each execution of an instruction function of the sequence, the AND increment steps of the method, and the following steps of the method are repeated. So, for each instruction function executed, a preemption function is executed.
- the cumulative duration and the predictive duration are determined from the planning instant whereas, in the case where the process is reiterated after the execution step E9, the cumulative duration and the predictive duration are determined from the second planning instant.
- the method again comprises a step of initializing E01 of the value of the counter to the zero value.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
Abstract
L'invention concerne un procédé de gestion de l'exécution d'une pluralité de tâches, chaque tâche étant associée à un niveau de priorité et comprenant une séquence de fonctions comprenant une alternance de fonctions d'instruction et de fonctions dites « de préemption », suite à l'exécution d'une fonction d'instruction d'une tâche, le procédé comprend les étapes : d'exécution de la fonction de préemption (E5) lors de laquelle une durée prédictive est déterminée en sommant la durée d'exécution de la fonction d'instruction successive à la fonction de préemption et la durée de l'ensemble des fonctions d'instructions de la séquence déjà exécutées, si la durée prédictive est supérieure à un seuil prédéfini de temps, vérification (E6) de la réception d'une tâche de niveau de priorité supérieur au niveau de priorité de la tâche en cours d'exécution, sinon, exécution (E10) de la fonction d'instruction successive à la fonction de préemption.
Description
DESCRIPTION
Procédé de gestion d’exécution d’une pluralité de fonctions
[Domaine technique]
[0001] L’invention concerne le domaine des procédés de gestion d’exécution de tâches par un processeur pour véhicule automobile.
[Etat de la technique antérieure]
[0002] De manière connue, un véhicule automobile électrique, hybride ou thermique, comprend une pluralité de dispositifs à commander comme par exemple les éléments constituant la chaîne de traction du véhicule ou les équipements électriques. Afin de commander ces dispositifs, le véhicule automobile comprend une pluralité de processeurs ou CPU pour « central processing unit » en langue anglaise.
[0003] Chaque processeur comprend une pluralité de cœurs, et chaque cœur est configuré pour exécuter une pluralité de tâches. Chaque tâche est constituée d’une succession de fonctions. Exécuter l’ensemble des fonctions d’une tâche permet par exemple de déterminer les commandes à émettre aux divers dispositifs montés dans le véhicule.
[0004] Dans le cas d’un système dit « coopératif », chaque tâche coopérative est associée à un niveau de priorité et une tâche coopérative en cours d’exécution peut être interrompue à certains instants prédéfinis afin d’exécuter une tâche coopérative d’un niveau de priorité plus élevé. Par exemple, les tâches à niveau de priorité élevé correspondent à des commandes d’éléments constituants la chaîne de traction du véhicule, et notamment au moteur thermique ou à la machine électrique.
[0005] Pour cela, certaines tâches coopératives peuvent comprendre au moins une fonction d’arrêt, appelée « point of schedule » en langue anglaise par l’homme du métier. Chaque fonction d’arrêt est placée entre deux fonctions de la séquence de fonctions de la tâche. Lorsqu’une fonction d’arrêt d’une tâche est exécutée, cela permet de vérifier si l’exécution d’une tâche coopérative de niveau de priorité supérieur au niveau de priorité de la tâche en cours d’exécution est demandée. Auquel cas, la tâche en cours d’exécution est interrompue, autrement dit suspendue, après la fonction d’arrêt afin d’exécuter la tâche plus prioritaire. Si aucune tâche de niveau de priorité supérieur est en attente d’exécution, alors la tâche en cours d’exécution n’est pas interrompue.
[0006] L’emplacement des fonctions d’arrêt dans la séquence de fonctions de chaque tâche est prédéfini. Autrement dit, la durée entre deux fonctions d’arrêt successives dépend
du temps d’exécution des fonctions à exécuter entre les deux fonctions d’arrêt. Dans le cas où cette durée est relativement longue, notamment lorsqu’elle est supérieure à 300 us, et qu’une tâche plus prioritaire est en attente d’exécution, cela peut engendrer un temps de latence relativement important entre la demande d’exécution d’une tâche de niveau de priorité plus élevé et son exécution. Cela peut également générer un retard, une non- réactivité, dans la détermination et l’application de commandes aux éléments de la chaîne de traction du véhicule.
[0007] Une solution à ce problème peut être d’augmenter le nombre de fonctions d’arrêts dans chaque tâche. Cependant, à chaque interruption de tâches, il est nécessaire d’enregistrer l’ensemble des paramètres de la tâche interrompue au stade où elle a été interrompue, de sorte à pouvoir reprendre l’exécution de cette tâche après l’exécution d’une deuxième tâche d’un niveau de priorité plus élevé. Cela représente une perte de temps et ajoute de nombreuses étapes dans la gestion de l’exécution des fonctions de chaque tâche.
[0008] Il existe donc le besoin d’une solution permettant de remédier au moins en partie à ces inconvénients.
[Exposé de l’invention]
[0009] A cette fin, l’invention concerne un procédé de gestion de l’exécution d’une pluralité de tâches par un processeur destiné à être monté dans un véhicule, le véhicule comprenant une pluralité de dispositifs, chaque tâche étant associée à un niveau de priorité et comprenant une séquence de fonctions prédéfinies, ladite séquence comprenant une alternance de fonctions d’instruction et de fonctions dites « de préemption », l’ensemble des fonctions d’instruction d’une tâche permettent, lorsqu’elles sont réalisées les unes après les autres, de déterminer une instruction ou une commande à émettre à un dispositif ou de déterminer des valeurs d’entrée ou de sortie relatives à un dispositif, chaque fonction d’instruction est associée à une durée d’exécution, chaque fonction de préemption étant configurée pour définir la nécessité d’interruption d’une tâche pour exécuter une tâche de niveau de priorité plus élevé que le niveau de priorité de la tâche en cours d’exécution, suite à l’exécution d’une fonction d’instruction de la tâche, le procédé comprend les étapes : d’exécution de la fonction de préemption lors de laquelle une durée prédictive est déterminée en sommant la valeur de la durée d’exécution de la fonction d'instruction successive à la fonction de préemption et la durée de l’ensemble des fonctions d’instructions de la séquence déjà exécutées depuis un instant dit « de planification »,
si la durée prédictive est supérieure à un seuil prédéfini de temps, vérification (E6) de la réception par le processeur d’une tâche de niveau de priorité supérieur au niveau de priorité de la tâche en cours d’exécution, sinon, exécution de la fonction d’instruction successive à la fonction de préemption.
[0010] Ainsi, le procédé permet d’interrompre la mise en œuvre d’une séquence de fonctions d’instructions d’une tâche seulement lorsqu’une tâche de niveau de priorité plus élevé est en attente d’exécution. Cela permet au processeur d’être davantage réactif dans l’exécution de tâches de niveau de priorité plus élevé. Sinon, le procédé permet de laisser la tâche en cours d’exécution s’exécuter.
[0011] Les tâches mises en œuvre dans ce procédé sont communément désignées tâches « coopératives », puisqu’elles coopèrent entre elles lors de l’exécution d’une fonction de préemption, afin d’exécuter la fonction d’exécution la plus prioritaire.
[0012] De préférence, si le processeur a reçu une tâche de niveau de priorité supérieur au niveau de priorité de la tâche en cours d’exécution, le procédé comprend les étapes : a) d’interruption de la tâche en cours d’exécution, b) d’exécution de la tâche de niveau de priorité supérieur.
[0013] De préférence encore, la durée prédictive est comprise entre 200 et 400 us, de préférence 300 us.
[0014] Avantageusement, le processeur comprend une zone mémoire dans laquelle est enregistrée une table de référence, la table de référence associant à chaque fonction de la tâche une durée d’exécution, le procédé comprend, pour chaque fonction en cours d’exécution, une étape de : a) détermination de la durée d’exécution de la fonction d’instruction exécutée, b) mise-à-jour de la valeur de durée associée à la fonction d’instruction exécutée dans la table de référence à partir de la durée d’exécution déterminée.
[0015] Avantageusement encore, la zone mémoire comprend un compteur et une table de correspondance, la table de correspondance associant chaque tâche au nombre de fonctions d’instruction que ladite tâche comprend, le procédé comprenant les étapes : a) d’initialisation de la valeur du compteur à zéro, avant l’exécution de la première fonction de la séquence de fonctions d’une tâche, b) d’incrémentation du compteur lors de l’exécution de chaque fonction d’instruction de ladite séquence de fonctions,
c) lorsque la valeur du compteur est égale au nombre de fonctions d’instruction associé à ladite tâche dans la table de correspondance, réinitialisation du compteur à la valeur zéro.
[0016] De préférence, une valeur de durée cumulative étant égale à la durée d’exécution de l’ensemble des fonctions d’instruction de la séquence déjà exécutées, est enregistrée dans la zone mémoire, le procédé comprenant, lors de chaque exécution d’une fonction d’instruction de la séquence, une étape de mise à jour de la durée cumulative enregistrée dans la zone mémoire, dans laquelle la durée d’exécution mesurée de ladite fonction d’instruction exécutée est ajoutée à la valeur de la durée cumulative.
[0017] L’invention concerne également un produit programme d’ordinateur caractérisé en ce qu’il comporte un ensemble d’instructions de code de programme qui, lorsqu’elles sont exécutées par un ou plusieurs processeurs, configurent le ou les processeurs pour mettre en œuvre un procédé tel que décrit précédemment.
[0018] L’invention concerne encore un processeur pour véhicule automobile, le processeur étant apte à mettre en œuvre une pluralité de tâches, chaque tâche étant associée à un niveau de priorité et comprenant une séquence de fonctions prédéfinies, ladite séquence comprenant une alternance de fonctions d’instructions et de fonctions de préemption, l’ensemble des fonctions d’instruction d’une tâche permettent, lorsqu’elles sont réalisées les unes après les autres, de déterminer une instruction ou une commande à émettre à un dispositif ou de déterminer des valeurs d’entrée ou de sortie relatives à un dispositif, chaque fonction d’instruction est associée à une durée d’exécution, chaque fonction de préemption étant configurée pour définir la nécessité d’interruption d’une tâche pour exécuter une tâche de niveau de priorité plus élevé que le niveau de priorité de la tâche en cours d’exécution, le processeur étant apte à mettre en œuvre le procédé tel que décrit précédemment.
[0019] Enfin, l’invention concerne un véhicule automobile comprenant au moins un processeur tel que décrit précédemment.
[Description des dessins]
[0020] D’autres caractéristiques et avantages de l’invention apparaîtront encore à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit être lue en regard des dessins annexés sur lesquels :
[0021] La figure 1 est une illustration d’un cœur de processeur selon l’invention,
[0022] La figure 2 est une illustration du procédé selon l’invention.
[Description des modes de réalisation]
[0023] Véhicule
[0024] Un véhicule automobile comprend une pluralité de dispositifs, et notamment divers éléments constituants la chaîne de traction ou des dispositifs électriques.
[0025] Le véhicule comprend au moins un processeur apte à déterminer et émettre des instructions, autrement dit des commandes, à chacun desdits dispositifs.
[0026] Plus précisément, chaque processeur comprend au moins un cœur.
[0027] En référence à la figure 1 , chaque cœur 10 du processeur comprend un module d’exécution 11 et un module de gestion 12.
[0028] Le module de gestion 12 est apte à recevoir chaque tâche à exécuter.
[0029] Chaque module d’exécution 11 est apte à mettre en œuvre un ensemble de tâches, plus précisément de tâches dites « coopératives ».
[0030] Chaque tâche est associée à un niveau de priorité. Une tâche associée à un niveau de priorité plus élevé est dite « prioritaire » et concerne notamment la détermination d’instructions ou commandes à émettre à un élément de la chaîne de traction ou la lecture de mesures effectuées par un capteur, ou un ensemble de calculs.
[0031] Chaque tâche comprend une pluralité de fonctions et plus précisément une séquence de fonctions.
[0032] Plus précisément, chaque tâche comprend une succession de fonctions et plus précisément une alternance de fonctions dites « d’instruction » et de fonctions dites « de préemption ». L’exécution de la succession des fonctions d’instruction d’une tâche permet de définir directement ou indirectement une instruction ou commande à émettre au dispositif relatif à ladite tâche.
[0033] Chaque cœur 10 du processeur comprend également une zone mémoire MEM dans laquelle est enregistrée la valeur d’un compteur, une table de référence, une table de correspondance et la valeur d’une durée cumulative.
[0034] La table de référence associe à chaque fonction d’instruction d’une tâche, une durée d’exécution. La durée d’exécution d’une fonction d’instruction peut être prédéfinie et correspondre à une mesure préalablement réalisée de la durée d’exécution de la fonction d’instruction. Lorsqu’aucune mesure de la durée d’exécution n’a encore été réalisée, la durée d’exécution prédéfinie est notamment initialisée à zéro.
[0035] Par ailleurs, la table de correspondance associe chaque tâche au nombre de fonctions d’instruction que ladite tâche comprend.
[0036] La durée cumulative représente pour une séquence de fonctions d’instruction donnée d’une tâche, la durée d’exécution réelle de l’ensemble des fonctions de la tâche déjà réalisées depuis un instant prédéfini. L’instant prédéfini est aussi appelé « instant de planification » et désigne par exemple l’instant à partir duquel la première fonction d’instruction de la tâche est exécutée ou l’instant à partir duquel une fonction d’instruction de la tâche est exécutée après une interruption d’exécution de ladite tâche.
[0037] Chaque fonction dite « de préemption » ou autrement dit « d’ordonnance » entre deux fonctions d’instruction, permet de définir si la tâche en cours d’exécution doit être interrompue ou non afin d’exécuter une autre tâche plus prioritaire. Autrement dit, la fonction de préemption permet de définir l’ordre d’exécution des tâches en fonction du niveau de priorité de chaque tâche.
[0038] Plus précisément, lorsqu’une fonction de préemption est exécutée, elle est configurée pour déterminer une durée dite « prédictive » en sommant la valeur de la durée d’exécution de la fonction d’instruction sur le point d’être exécutée (et donc la durée d’exécution de la fonction d’instruction placée juste après la fonction de préemption dans la séquence de fonctions) et la durée cumulative, autrement dit la valeur de la durée de l’ensemble des fonctions d’instruction de la séquence déjà exécutées depuis le début de la tâche ou depuis la dernière interruption de la tâche. La valeur de la durée d’exécution de la fonction sur le point d’être exécutée est notamment récupérée dans la table de référence enregistrée en zone mémoire MEM. La durée prédictive représente donc une estimation, autrement dit une prédiction, de la durée d’exécution de l’ensemble des fonctions d’instructions déjà exécutées et de la fonction d’instruction sur le point d’être exécutée.
[0039] Lorsque la durée prédictive est supérieure à un seuil prédéfini de temps, alors la fonction de préemption est configurée pour vérifier si une tâche de niveau de priorité plus élevé que le niveau de priorité de la tâche en cours d’exécution, est en attente d’exécution.
[0040] Le seuil prédéfini de temps correspond notamment à une valeur comprise entre 200 et 400 us, de préférence 300 us.
[0041] De plus, chaque tâche comprend une fonction de mesure, configurée pour déterminer, et notamment mesurer, la durée d’exécution de chaque fonction d’instruction de tâche.
[0042] La fonction de mesure est également apte à mettre à jour la table de référence notamment en déterminant une nouvelle valeur de durée d’exécution.
[0043] Selon un premier exemple, chaque fois qu’une fonction d’instruction est exécutée, la durée d’exécution est mesurée et sa valeur remplace la durée prédéfinie associée à ladite fonction d’instruction et enregistrée dans la zone mémoire MEM.
[0044] Selon un deuxième exemple, la nouvelle valeur est déterminée en mesurant à plusieurs reprises la durée d’exécution d’une fonction d’instruction puis en déterminant la moyenne des différentes mesures réalisées et en remplaçant la durée prédéfinie associée à ladite fonction d’instruction et enregistrée dans la zone mémoire MEM par la moyenne nouvellement déterminée.
[0045] Ainsi, la mise à jour de la valeur de la durée d’exécution associée à chaque fonction d’instruction permet d’adapter la valeur de la durée d’exécution en fonction du temps d’application réel de chaque fonction par le module d’exécution 11.
[0046] De plus, pour une séquence de fonctions donnée, la fonction de mesure est apte à ajouter, après chaque exécution d’une fonction d’instruction de la séquence, la durée d’exécution mesurée de ladite fonction d’instruction exécutée à la valeur de la durée cumulative enregistrée en zone mémoire MEM. Ainsi, après chaque exécution d’une fonction d’instruction de la séquence, la durée cumulative représente la durée d’exécution de l’ensemble des fonctions d’instruction de la séquence déjà exécutées.
[0047] De plus, lorsqu’une séquence de fonctions d’instructions d’une tâche est exécutée entièrement, la valeur de la durée cumulative est réinitialisée à zéro.
[0048] Procédé
[0049] En référence à la figure 2, il va maintenant être décrit un mode de réalisation du procédé mis en œuvre par un cœur 10 du processeur. Le procédé peut être réitéré sur chacun des cœurs 10 du processeur.
[0050] Pour la mise en œuvre du procédé il est considéré une séquence de fonctions d’une tâche prédéfinie à exécuter. La durée d’exécution de chaque fonction d’instruction est enregistrée dans la table de référence en zone mémoire MEM et peut être prédéfinie ou non.
[0051] Le procédé est mis en œuvre à partir d’un instant de planification prédéfini.
[0052] Lorsqu’aucune fonction d’instruction de la tâche n’a encore été exécutée depuis l’instant de planification, le procédé comprend une étape d’initialisation E01 de la valeur du compteur à la valeur zéro.
[0053] Au moment de chaque instant de planification, le procédé comprend une étape d’initialisation E02 à zéro de la valeur de la durée cumulative enregistrée en zone mémoire MEM.
[0054] Le procédé comprend ensuite une étape d’exécution E1 d’une fonction d’instruction de la tâche à partir dudit instant de planification prédéfini.
[0055] De plus, à chaque fois qu’une fonction d’instruction de la séquence est exécutée, le procédé comprend une étape d’incrémentation ET de la valeur du compteur.
[0056] De plus, le procédé comprend une étape de détermination E2 de la durée d’exécution de chaque fonction d’instruction exécutée. Pour cela, il est mesuré la durée d’exécution de ladite fonction.
[0057] De plus, le procédé comprend ensuite une étape de mise à jour E3 de la valeur de durée associée à chaque fonction d’instruction exécutée dans la table de référence à partir de la durée d’exécution déterminée précédemment.
[0058] Pour cela, une nouvelle valeur de durée d’exécution est déterminée et remplace la valeur associée à la fonction d’instruction dans la table de référence par la nouvelle valeur de durée déterminée.
[0059] La nouvelle valeur de durée peut correspondre à la moyenne entre la valeur de la durée déterminée lors de l’étape de détermination E2 et la valeur de la durée d’exécution associée à la fonction dans la table de référence, ou peut correspondre à la mesure de la durée d’exécution réalisée pendant l’étape de détermination E2, ou peut correspondre à la moyenne entre la mesure de la durée d’exécution de la fonction effectuée pendant l’étape de détermination E2 et au moins une autre mesure de durée de ladite fonction exécutée lors d’une autre itération de l’étape de détermination E2 du procédé.
[0060] Le procédé comprend ensuite une étape de mise à jour E4 de la durée cumulative enregistrée dans la zone mémoire MEM, dans laquelle la valeur de la durée d’exécution mesurée de ladite fonction d’instruction exécutée est ajoutée à la valeur de la durée cumulative enregistrée en zone mémoire MEM.
[0061] De plus, le procédé comprend également une étape d’exécution de la fonction de préemption E5 lors de laquelle une durée prédictive est déterminée en sommant la valeur de la durée d’exécution mémorisée de la fonction d’instruction à exécuter après la fonction de préemption, et de la durée cumulative, autrement dit la durée de l’ensemble des fonctions d’instruction de la séquence déjà exécutées depuis l’instant de planification.
[0062] Si la durée prédictive est supérieure au seuil prédéfini de temps, le procédé comprend une étape de vérification E6 de la demande d’exécution par le module d’exécution 11 d’une tâche de niveau de priorité supérieur au niveau de priorité de la tâche en cours d’exécution. Autrement dit, l’étape de vérification E6 consiste à vérifier si le module de gestion 12 a reçu une tâche à exécuter, dont le niveau de priorité est plus élevé que la tâche en cours d’exécution. Ladite tâche est ensuite appelée « tâche prioritaire » et est en attente d’exécution par le module d’exécution 11.
[0063] Dans le cas où le processeur, et plus précisément le module de gestion 12, a reçu une tâche prioritaire, le procédé comprend une étape d’interruption E7, autrement dit de suspension, de l’exécution de la tâche en cours d’exécution. Plus précisément, la fonction de préemption demande au module d’exécution 11 d’arrêter provisoirement d’exécuter ladite tâche. Suite à l’étape d’interruption E7, le procédé comprend également une étape de réinitialisation à zéro de la valeur de la durée cumulative.
[0064] Suite à la suspension de la tâche, le procédé comprend une étape d’exécution E8 de la tâche prioritaire. La tâche prioritaire est exécutée par le module d’exécution 11 , mais c’est le module de gestion 12 qui demande au module d’exécution 11 d’exécuter ladite tâche prioritaire.
[0065] Une fois que la tâche prioritaire est complètement exécutée, le procédé comprend une étape d’exécution E9 de la tâche qui a été préalablement interrompue, et plus précisément d’exécution de la fonction d’instruction successive à la dernière fonction d’instruction de la tâche exécutée avant l’exécution de la tâche prioritaire. De même, c’est le module de gestion 12 qui demande au module d’exécution 11 d’exécuter ladite tâche précédemment interrompue. L’instant à partir duquel la tâche interrompue est de nouveau exécutée est défini par les termes « deuxième instant de planification », à partir duquel seront calculées une nouvelle valeur de durée prédictive et une nouvelle valeur de durée cumulative.
[0066] A l’inverse, lorsqu’à l’étape de vérification E6, aucune tâche prioritaire n’est en attente d’exécution, le procédé comprend une étape d’exécution E10 de la tâche en cours d’exécution, et plus précisément de la fonction d’instruction successive à la fonction de préemption qui a été exécutée.
[0067] De même, si la durée prédictive est inférieure au seuil prédéfini de temps, le procédé comprend également une étape d’exécution E10 de la tâche en cours d’exécution, et plus précisément de la fonction d’instruction successive à la fonction de préemption qui a été exécutée.
[0068] Suite à l’étape d’exécution E10 ou à l’étape d’exécution E9, lors desquelles une fonction d’instruction est exécutée, les étapes d’incrémentation ET du procédé, et les étapes suivantes du procédé, sont répétées. Autrement dit, pour chaque exécution d’une fonction d’instruction de la séquence, les étapes d’incrémentation ET du procédé, et les étapes suivantes du procédé sont répétées. Ainsi, pour chaque fonction d’instruction exécutée, une fonction de préemption est exécutée. Cependant, dans le cas où le procédé est réitéré après l’étape d’exécution E10, la durée cumulative et la durée prédictive sont déterminées à partir de l’instant de planification alors que, dans le cas où le procédé est réitéré après l’étape d’exécution E9, la durée cumulative et la durée prédictive sont déterminées à partir du deuxième instant de planification.
[0069] De plus, lorsque la valeur du compteur est égale au nombre de fonctions d’instructions associé à ladite tâche dans la table de correspondance, cela signifie que la séquence de fonctions de ladite tâche a été réalisée complètement, que la tâche est complètement exécutée et le procédé comprend de nouveau une étape d’initialisation E01 de la valeur du compteur à la valeur zéro.
Claims
[Revendication 1] Procédé de gestion de l’exécution d’une pluralité de tâches par un processeur destiné à être monté dans un véhicule, le véhicule comprenant une pluralité de dispositifs, chaque tâche étant associée à un niveau de priorité et comprenant une séquence de fonctions prédéfinies, ladite séquence comprenant une alternance de fonctions d’instruction et de fonctions dites « de préemption », l’ensemble des fonctions d’instruction d’une tâche permettent, lorsqu’elles sont réalisées les unes après les autres, de déterminer une instruction ou une commande à émettre à un dispositif ou de déterminer des valeurs d’entrée ou de sortie relatives à un dispositif, chaque fonction d’instruction est associée à une durée d’exécution, chaque fonction de préemption étant configurée pour définir la nécessité d’interruption d’une tâche pour exécuter une tâche de niveau de priorité plus élevé que le niveau de priorité de la tâche en cours d’exécution, suite à l’exécution d’une fonction d’instruction de la tâche, le procédé comprend les étapes : d’exécution de la fonction de préemption (E5) lors de laquelle une durée prédictive est déterminée en sommant la valeur de la durée d’exécution de la fonction d’instruction successive à la fonction de préemption et la durée de l’ensemble des fonctions d’instructions de la séquence déjà exécutées depuis un instant dit « de planification », si la durée prédictive est supérieure à un seuil prédéfini de temps, vérification (E6) de la réception par le processeur d’une tâche de niveau de priorité supérieur au niveau de priorité de la tâche en cours d’exécution, sinon, exécution (E10) de la fonction d’instruction successive à la fonction de préemption.
[Revendication 2] Procédé selon la revendication 1 , si le processeur a reçu une tâche de niveau de priorité supérieur au niveau de priorité de la tâche en cours d’exécution, le procédé comprend les étapes : a) d’interruption (E7) de la tâche en cours d’exécution, b) d’exécution (E8) de la tâche de niveau de priorité supérieur.
[Revendication 3] Procédé selon l’une quelconque des revendications précédentes, dans lequel la durée prédictive est comprise entre 200 et 400 us.
[Revendication 4] Procédé selon l’une quelconque des revendications précédentes, dans lequel le processeur comprend une zone mémoire (MEM) dans laquelle est enregistrée une table de référence, la table de référence associant à chaque fonction de la tâche une durée d’exécution, le procédé comprenant, pour chaque fonction en cours d’exécution, une étape de : a) détermination (E2) de la durée d’exécution de la fonction d’instruction exécutée,
b) mise-à-jour (E3) de la valeur de durée associée à la fonction d’instruction exécutée dans la table de référence à partir de la durée d’exécution déterminée.
[Revendication 5] Procédé selon l’une quelconque des revendications précédentes, la zone mémoire (MEM) comprend un compteur et une table de correspondance, la table de correspondance associant chaque tâche au nombre de fonctions d’instruction que ladite tâche comprend, le procédé comprenant les étapes : a) d’initialisation (E01) de la valeur du compteur à zéro, avant l’exécution de la première fonction de la séquence de fonctions d’une tâche, b) d’incrémentation (E1’) du compteur lors de l’exécution de chaque fonction d’instruction de ladite séquence de fonctions, c) lorsque la valeur du compteur est égale au nombre de fonctions d’instruction associé à ladite tâche dans la table de correspondance, réinitialisation du compteur à la valeur zéro.
[Revendication 6] Procédé selon l’une quelconque des revendications précédentes, une valeur de durée cumulative étant égale à la durée d’exécution de l’ensemble des fonctions d’instruction de la séquence déjà exécutées, est enregistrée dans la zone mémoire, le procédé comprenant, lors de chaque exécution d’une fonction d’instruction de la séquence, une étape de mise à jour (E4) de la durée cumulative enregistrée dans la zone mémoire (MEM), dans laquelle la durée d’exécution mesurée de ladite fonction d’instruction exécutée est ajoutée à la valeur de la durée cumulative.
[Revendication 7] Produit programme d’ordinateur caractérisé en ce qu’il comporte un ensemble d’instructions de code de programme qui, lorsqu’elles sont exécutées par un ou plusieurs processeurs, configurent le ou les processeurs pour mettre en œuvre un procédé selon l’une quelconques des revendications 1 à 6.
[Revendication 8] Processeur pour véhicule automobile, le processeur étant apte à mettre en œuvre une pluralité de tâches, chaque tâche étant associée à un niveau de priorité et comprenant une séquence de fonctions prédéfinies, ladite séquence comprenant une alternance de fonctions d’instructions et de fonctions de préemption, l’ensemble des fonctions d’instruction d’une tâche permettent, lorsqu’elles sont réalisées les unes après les autres, de déterminer une instruction ou une commande à émettre à un dispositif ou de déterminer des valeurs d’entrée ou de sortie relatives à un dispositif, chaque fonction d’instruction est associée à une durée d’exécution, chaque fonction de préemption étant configurée pour définir la nécessité d’interruption d’une tâche pour exécuter une tâche de niveau de priorité plus élevé que le niveau de priorité de la tâche en cours d’exécution, le
processeur étant apte à mettre en œuvre le procédé selon l’une quelconque des revendications 1 à 6.
[Revendication 9] Véhicule automobile comprenant au moins un processeur selon la revendication précédente.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FRFR2202599 | 2022-03-24 | ||
FR2202599A FR3133934B1 (fr) | 2022-03-24 | 2022-03-24 | Procédé de gestion d’exécution d’une pluralité de fonctions |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2023180265A1 true WO2023180265A1 (fr) | 2023-09-28 |
Family
ID=82196451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/EP2023/057113 WO2023180265A1 (fr) | 2022-03-24 | 2023-03-21 | Procédé de gestion d'exécution d'une pluralité de fonctions |
Country Status (2)
Country | Link |
---|---|
FR (1) | FR3133934B1 (fr) |
WO (1) | WO2023180265A1 (fr) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2923039A1 (fr) * | 2007-10-24 | 2009-05-01 | Centre Nat Rech Scient | Procede de gestion des preemptions dans un systeme d'exploitation en temps reel |
FR2956913A1 (fr) * | 2010-03-01 | 2011-09-02 | Sagem Defense Securite | Procede de sequencement deterministe multitache |
EP3799390A1 (fr) * | 2018-06-25 | 2021-03-31 | Transwarp Technology (Shanghai) Co., Ltd. | Procédé, système et dispositif d'utilisation de partage de ressources à base d'ordonnancement préemptif |
-
2022
- 2022-03-24 FR FR2202599A patent/FR3133934B1/fr active Active
-
2023
- 2023-03-21 WO PCT/EP2023/057113 patent/WO2023180265A1/fr unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2923039A1 (fr) * | 2007-10-24 | 2009-05-01 | Centre Nat Rech Scient | Procede de gestion des preemptions dans un systeme d'exploitation en temps reel |
FR2956913A1 (fr) * | 2010-03-01 | 2011-09-02 | Sagem Defense Securite | Procede de sequencement deterministe multitache |
EP3799390A1 (fr) * | 2018-06-25 | 2021-03-31 | Transwarp Technology (Shanghai) Co., Ltd. | Procédé, système et dispositif d'utilisation de partage de ressources à base d'ordonnancement préemptif |
Also Published As
Publication number | Publication date |
---|---|
FR3133934A1 (fr) | 2023-09-29 |
FR3133934B1 (fr) | 2024-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5523624B2 (ja) | 制御装置及び制御のための出力変数を計算する方法 | |
US7568028B2 (en) | Bottleneck detection system, measurement object server, bottleneck detection method and program | |
FR2959325A1 (fr) | Microcontroleur equipe d'une unite de calcul et d'un circuit logique, ainsi que procede de calcul pour la regulation de la commande d'un vehicule | |
US20150006940A1 (en) | Server power predicting apparatus and method using virtual machine | |
WO2011083123A1 (fr) | Procede pour selectionner une ressource parmi une pluralite de ressources de traitement, de sorte que les delais probables avant defaillance des ressources evoluent de maniere sensiblement identique | |
US10437589B2 (en) | Distributed processing control system and distributed processing control method | |
EP0567364B1 (fr) | Procédé d'exploitation d'un clavier tactile capacitif | |
EP2987081B1 (fr) | Procédé d'allocation temporelle de tâches permettant une récupération d'erreur deterministe en temps réel | |
FR3080477A1 (fr) | Procédés et systèmes de détermination et d'optimisation des performances d'un simulateur de réservoir dans un environnement informatique en nuage | |
WO2023180265A1 (fr) | Procédé de gestion d'exécution d'une pluralité de fonctions | |
JP2009289266A (ja) | リアルタイムでシミュレーションされるべき信号を計算するためのタスクを実施する方法 | |
WO2012049082A1 (fr) | Procédé et dispositif d'ordonnancement de tâches semi-périodiques dans un système multitâche temps réel | |
EP3009934B1 (fr) | Procede de determination d'une frequence de microprocesseur optimale pour l'execution d'une application logicielle | |
CN110696807B (zh) | 堵车工况发动机停机控制方法、车辆及存储介质 | |
JP2019125093A (ja) | 電子制御装置 | |
FR3075414A1 (fr) | Procede de gestion d'une pluralite de taches par un calculateur automobile multicœur | |
EP3559688B1 (fr) | Caractérisation perfectionnée d'un dispositif électrochimique en opération pour un pronostic de fonctionnement futur du dispositif | |
EP3343375B1 (fr) | Procédé et système de surveillance de traitements par lots d'applications exécutées dans une infrastructure informatique | |
FR3018556B1 (fr) | Methode de prediction de l'etat thermique d'un demarreur | |
FR3071334B1 (fr) | Procede pour assurer la stabilite des donnees d’un processeur multicoeur d’un vehicule automobile | |
US10346329B2 (en) | Timer placement optimization | |
EP0697638A1 (fr) | Procédé de détection des séquences complètes et des séquences d'échec dans un système de reconnaissance de situations | |
FR2681963A1 (fr) | Interruptions transparentes pour le systeme avec redemarrage automatique d'une sequence d'entree/sortie. | |
FR2871592A1 (fr) | Procede de recherche et de transmission des temps d'execution de programmes dans des systemes embarques | |
CN114212095B (zh) | 基于仿真的整车起步关键因子的确定方法、系统及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 23715426 Country of ref document: EP Kind code of ref document: A1 |