FR3093579A1 - MICROPROCESSOR EVENT ORDER - Google Patents

MICROPROCESSOR EVENT ORDER Download PDF

Info

Publication number
FR3093579A1
FR3093579A1 FR1902266A FR1902266A FR3093579A1 FR 3093579 A1 FR3093579 A1 FR 3093579A1 FR 1902266 A FR1902266 A FR 1902266A FR 1902266 A FR1902266 A FR 1902266A FR 3093579 A1 FR3093579 A1 FR 3093579A1
Authority
FR
France
Prior art keywords
event
time
execution
microprocessor
events
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1902266A
Other languages
French (fr)
Other versions
FR3093579B1 (en
Inventor
Damian ANDRADE ALFONSECA
Tony TEIXEIRA
Stéphane GUGUEN
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Thales SA
Original Assignee
Thales SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Thales SA filed Critical Thales SA
Priority to FR1902266A priority Critical patent/FR3093579B1/en
Priority to PCT/EP2020/056057 priority patent/WO2020178437A1/en
Publication of FR3093579A1 publication Critical patent/FR3093579A1/en
Application granted granted Critical
Publication of FR3093579B1 publication Critical patent/FR3093579B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Procédé et système pour répartir temporellement les évènements à transmettre dans une fenêtre temporelle initiale Ti=[t0, tmax], caractérisé en ce qu’il comporte au moins les étapes suivantes : - identifier au moins deux évènements E1, Ej, à exécuter par le premier microprocesseur (1), - identifier pour chaque évènement E1, Ej, sa fréquence d’exécution F1, Fj, selon des fréquences multiples de deux, la durée T1, Tj, d’exécution d’un évènement, - insérer un premier évènement E1 et calculer la disponibilité temporelle Tr restante dans la fenêtre temporelle initiale Ti afin de déterminer la taille maximale en temps et la fréquence maximale admissible d’un futur évènement Ej, - à partir de la disponibilité temporelle, de la taille d’un évènement et de sa fréquence admissible, calculer pour chaque futur évènement Ej à exécuter et pour chacune des n occurrences dudit évènement dans la fenêtre temporelle initiale, une valeur de décalage temporel dt tels que t0+dt1(Ej), t0+dt2(Ej), t0+dt3(Ej), …t0+dtn(Ej) correspondant au positionnement temporel du futur évènement Ej par rapport à l’instant de démarrage t0 dans la fenêtre temporelle initiale, - exécuter l’évènement Ej et vérifier si le temps d’exécution de l’évènement Ej par le microprocesseur, Tjmicro est conforme au temps d’exécution TjFPGA attendu dans le FPGA. Figure pour l’abrégé : Fig. 1Method and system for temporally distributing the events to be transmitted in an initial time window Ti = [t0, tmax], characterized in that it comprises at least the following steps: - identifying at least two events E1, Ej, to be executed by the first microprocessor (1), - identify for each event E1, Ej, its execution frequency F1, Fj, according to frequencies multiple of two, the duration T1, Tj, of execution of an event, - insert a first event E1 and calculate the time availability Tr remaining in the initial time window Ti in order to determine the maximum size in time and the maximum admissible frequency of a future event Ej, - from the time availability, the size of an event and of its admissible frequency, calculate for each future event Ej to be executed and for each of the n occurrences of said event in the initial time window, a time offset value dt such as t0 + dt1 (Ej), t0 + dt2 (Ej), t0 + dt3 (Ej), … T0 + dtn (Ej) corresponding to the temporal positioning of the future event Ej with respect to the start time t0 in the initial time window, - execute the event Ej and check whether the execution time of the event Ej by the microprocessor, Tjmicro conforms to the expected TjFPGA execution time in the FPGA. Figure for the abstract: Fig. 1

Description

Ordonnanceur d’évènements pour microprocesseur.Event scheduler for microprocessor.

L’invention concerne un ordonnanceur d’évènements ou de tâches ou « scheduler » d’un système d’exploitation ou OS (Operating System).The invention relates to an event or task scheduler or “scheduler” of an operating system or OS (Operating System).

Les systèmes d’exploitation gèrent les priorités et les interruptions des tâches. Le temps d’occupation du microprocesseur est utilisé pour faire des sauvegardes de contexte lorsqu’une interruption arrive. De ce fait, le temps d’occupation du microprocesseur ne peut pas être utilisé à 100%, car des marges doivent être prises pour le système d’exploitation.Operating systems manage task priorities and interrupts. The CPU busy time is used to make context saves when an interrupt occurs. Because of this, the CPU busy time cannot be 100% utilized, as margins have to be taken for the operating system.

Lorsqu’un bus de communication est partagé par plusieurs équipements, une marge pour le remplissage de la bande passante est prise afin de gérer d’éventuelles collisions entre les tâches. La capacité de traitement d’informations par un bus n’est donc pas exploitée dans sa totalité.When a communication bus is shared by several devices, a margin for the filling of the bandwidth is taken in order to manage possible collisions between the tasks. The information processing capacity of a bus is therefore not fully exploited.

Pour augmenter le temps de calcul outil d’un microprocesseur, i.e., temps disponible uniquement pour le calcul, une solution est d’utiliser des dispositifs pour fonctionner plus rapidement afin de pouvoir tenir le temps réel avec le système d’exploitation et les fonctions de l’utilisateur.To increase the tool calculation time of a microprocessor, ie, time available only for calculation, one solution is to use devices to operate faster in order to be able to hold the real time with the operating system and the functions of the user.

Au niveau des communications entre plusieurs équipements, l’art antérieur a donc tendance à augmenter le nombre de connexions ou encore à augmenter la bande passante afin de garantir le traitement de toutes les demandes par le bus.At the level of communications between several pieces of equipment, the prior art therefore tends to increase the number of connections or else to increase the bandwidth in order to guarantee the processing of all requests by the bus.

Les solutions connues par le demandeur conduisent donc à l’utilisation de composants plus performants, plus coûteux et à une augmentation de connexions dans le cas d’une communication.The solutions known by the applicant therefore lead to the use of more efficient, more expensive components and to an increase in connections in the case of communication.

Sur un microprocesseur, lorsque de nombreuses tâches doivent être exécutées simultanément, un système d’exploitation doit être implémenté pour gérer l’accès aux unités de calcul, car les opérations se font en série. Si les contraintes temps réel sont importantes, la vitesse de calcul doit être incrémentée pour arriver à exécuter toutes les opérations nécessaires et pour assurer la gestion des entrées et des sorties au niveau du microprocesseur. La gestion des entrées et des sorties, l’interruption de tâches avec leur sauvegarde de contexte et d’autres opérations font qu’il n’est pas possible d’utiliser de manière optimale les capacités de calcul du microprocesseur. Sur un composant programmable de type FPGA (Field Programmation Gate Array), il est possible d’implémenter de manière simultanée plusieurs opérations et d’optimiser ainsi les calculs. La gestion des entrées/sorties peut aussi se faire sans contraindre les calculs. Le débogage des algorithmes est difficile à réaliser et l’implémentation des algorithmes nécessite des ressources importantes ce qui conduit à une augmentation de la taille et du coût d’un FPGA.On a microprocessor, when many tasks must be executed simultaneously, an operating system must be implemented to manage the access to the calculation units, because the operations are done in series. If the real-time constraints are significant, the calculation speed must be increased in order to be able to execute all the necessary operations and to ensure the management of the inputs and outputs at the microprocessor level. The management of inputs and outputs, the interruption of tasks with their context saving and other operations make it impossible to make optimal use of the computing capacities of the microprocessor. On a programmable component of the FPGA (Field Programming Gate Array) type, it is possible to implement several operations simultaneously and thus optimize the calculations. The management of inputs/outputs can also be done without constraining the calculations. The debugging of the algorithms is difficult to achieve and the implementation of the algorithms requires significant resources which leads to an increase in the size and the cost of an FPGA.

L’idée de la présente demande de brevet repose notamment sur une pré planification des évènements au niveau d’un microprocesseur et les communications de manière déterministe, sans avoir recours à une gestion des priorités des interruptions. Les évènements sont exécutés dans un ordre précis de façon à ne jamais avoir deux évènements qui s’exécutent à la fois et sans interrompre l’exécution d’un évènement.The idea of the present patent application is based in particular on a pre-planning of events at the level of a microprocessor and communications in a deterministic manner, without resorting to interrupt priority management. The events are executed in a precise order so as to never have two events executing at the same time and without interrupting the execution of an event.

Dans la suite de la description, le mot « évènement » désigne indifféremment des tâches à exécuter par un processeur ou un système d’exploitation, des messages, ou tout autre évènement ou toute autre action exécuté par un microprocesseur.In the rest of the description, the word "event" designates either tasks to be executed by a processor or an operating system, messages, or any other event or any other action executed by a microprocessor.

L’invention concerne un procédé pour répartir temporellement les évènements à transmettre dans une fenêtre temporelle initiale Ti=[t0, tmax], lesdits évènements étant exécutés par un premier microprocesseur, la répartition temporelle étant réalisée par un dispositif programmable caractérisé en ce qu’il comporte au moins les étapes suivantes :
- identifier au moins deux évènements E1, Ej, à exécuter par le premier microprocesseur,
- identifier pour chaque évènement E1, Ej, sa fréquence d’exécution F1, Fj, selon des fréquences multiples de deux, la durée T1, Tj, d’exécution d’un évènement,
- insérer un premier évènement E1 et calculer la disponibilité temporelle Trrestante dans la fenêtre temporelle initiale Tiafin de déterminer la taille maximale en temps et la fréquence maximale admissible d’un futur évènement Ej,
- à partir de la disponibilité temporelle, de la taille d’un évènement et de sa fréquence admissible, calculer pour chaque futur évènement Ej à exécuter et pour chacune des n occurrences dudit évènement dans la fenêtre temporelle initiale, une valeur de décalage temporel dt tels que t0+dt1(Ej), t0+dt2(Ej), t0+dt3(Ej), …t0+dtn(Ej) correspondant au positionnement temporel du futur évènement Ej par rapport à l’instant de démarrage t0 dans la fenêtre temporelle initiale,
- exécuter l’évènement Ej et vérifier si le temps d’exécution de l’évènement Ej par le microprocesseur, Tj microest conforme au temps d’exécution TjFPGAattendu dans le FPGA.
The invention relates to a method for temporally distributing the events to be transmitted in an initial time window TI=[t0, tmax], said events being executed by a first microprocessor, the time distribution being carried out by a programmable device characterized in that it comprises at least the following steps:
- identify at least two events E1, EI, to be executed by the first microprocessor,
- identify for each event E1, EI, its execution frequency F1, FI, according to frequencies that are multiples of two, the duration T1, TI, execution of an event,
- insert a first event E1 and calculate the time availability Trremaining in the initial time window TIin order to determine the maximum size in time and the maximum allowable frequency of a future event EI,
- from the temporal availability, the size of an event and its acceptable frequency, calculate for each future event EI to be executed and for each of the n occurrences of said event in the initial time window, a time offset value dt such that t0+dt1(EI), t0+dt2(EI), t0+dt3(EI), …t0+dtnot(EI) corresponding to the temporal positioning of the future event EI relative to the start time t0 in the initial time window,
- execute event EI and check if the execution time of the event EI by the microprocessor, TI microphoneconforms to the running time TjFPGAexpected in the FPGA.

Le procédé peut tenir compte de la priorité associée aux évènements à exécuter dans une fenêtre temporelle pour déterminer les instants d’exécution de chacun de ces évènements.The method can take into account the priority associated with the events to be executed in a time window to determine the instants of execution of each of these events.

L’invention concerne aussi un système pour répartir temporellement les évènements à transmettre dans une fenêtre temporelle initiale Ti=[t0, tmax] caractérisé en ce qu’il comprend au moins les éléments suivants :
- un dispositif comprenant une mémoire partagée et un ordonnanceur d’évènements,
- ledit ordonnanceur est adapté à :
déterminer les instants d’exécution d’au moins deux évènements dans la fenêtre temporelle initiale Ti=[t0, tmax], en prenant en compte la disponibilité temporelle Trrestante dans la fenêtre temporelle initiale Tiaprès l’insertion d’un premier évènement, à partir de la disponibilité temporelle, de la taille d’un futur évènement et de sa fréquence admissible, à calculer pour chaque futur évènement E2 à exécuter une valeur de décalage temporel dt correspondant au positionnement temporel du futur évènement E2 par rapport à l’instant de démarrage t0 dans la fenêtre temporelle initiale et à vérifier si le temps d’exécution de l’évènement E2 par le microprocesseur, T2microest conforme au temps d’exécution T2 FPGA,
- exécuter l’évènement et vérifier si le temps d’exécution de l’évènement est conforme au temps d’exécution attendu,
- un premier microprocesseur configuré pour exécuter les évènements mémorisés dans une mémoire partagée, sur réception d’un ordre d’interruption INT émis par ledit dispositif et pour transmettre le temps d’exécution d’un évènement à l’ordonnanceur.
The invention also relates to a system for temporally distributing the events to be transmitted in an initial time window TI=[t0, tmax] characterized in that it comprises at least the following elements:
- a device comprising a shared memory and an event scheduler,
- said scheduler is suitable for:
determine the execution instants of at least two events in the initial time window TI=[t0, tmax], taking into account the temporal availability Trremaining in the initial time window TIafter the insertion of a first event, from the temporal availability, the size of a future event and its admissible frequency, to be calculated for each future event E2 in executing a time shift value dt corresponding to the time positioning of the future event E2 relative to the start time t0 in the initial time window and to check if the execution time of the event E2 by the microprocessor, T2microphoneconforms to the running time T2 FPGAs,
- execute the event and check if the execution time of the event complies with the expected execution time,
- a first microprocessor configured to execute the events stored in a shared memory, on receipt of an INT interrupt order sent by said device and to transmit the execution time of an event to the scheduler.

L’ordonnanceur est, par exemple, configuré pour calculer la disponibilité temporelle restante dans chacune des n fenêtres générées par le positionnement de l’évènement exécuté n fois dans la fenêtre temporelle initiale.The scheduler is, for example, configured to calculate the remaining time availability in each of the n windows generated by the positioning of the event executed n times in the initial time window.

Les dessins annexés illustrent l’invention :The accompanying drawings illustrate the invention:

un schéma d’une architecture parallèle pour la mise en œuvre de l’invention, a diagram of a parallel architecture for implementing the invention,

un schéma illustrant les échanges entre les éléments de la figure 1, a diagram illustrating the exchanges between the elements of figure 1,

illustre l’étape de configuration des tâches et des messages de communication, illustrates the step for configuring communication tasks and messages,

illustre l’étape de planification suivant l’étape de configuration, illustrates the planning step following the configuration step,

illustre un système mettant en œuvre le procédé selon l’invention. illustrates a system implementing the method according to the invention.

Le principe mis en œuvre dans le procédé et le système selon l’invention reposent notamment sur une gestion des évènements traités par un microprocesseur et des communications de manière déterministe, sans avoir recours à une gestion des priorités des interruptions, en fonctionnement normal. Les tâches vont être exécutées dans un ordre précis, de façon à ne jamais avoir deux évènements qui s’exécutent à la fois et sans interrompre l’exécution d’un évènement. La communication et la gestion des évènements ou tâches sont organisées temporellement de manière à faire interagir tous les équipements du réseau de manière synchronisée et sans aucune interruption.The principle implemented in the method and the system according to the invention are based in particular on a management of the events processed by a microprocessor and of the communications in a deterministic manner, without having recourse to a management of the priorities of the interruptions, in normal operation. The tasks will be executed in a specific order, so as to never have two events executing at the same time and without interrupting the execution of an event. The communication and the management of events or tasks are organized temporally so as to make all the network equipment interact in a synchronized manner and without any interruption.

La figure 1 est un schéma représentant une architecture de bus parallèle et les échanges entre un premier microprocesseur 1 et le FPGA 2.FIG. 1 is a diagram representing a parallel bus architecture and the exchanges between a first microprocessor 1 and the FPGA 2.

Le microprocesseur 1 comprend un programme 4 et une mémoire partagée 3 avec une mémoire du FPGA. Ces éléments sont connus de l’homme du métier et ne seront pas détaillés, le partage des mémoires se faisant selon un principe connu de l’homme du métier. Le microprocesseur comprend un timer qui est activé lorsqu’une interruption d’exécution d’un évènement ou d’une tâche s’active. Lorsque l’exécution de la tâche est terminée, le timer s’arrête et le microprocesseur transmet le temps d’exécution de la tâche au FPGA qui va alors arrêter son timer, avant d’effectuer la vérification de temps d’exécution d’un évènement. L’enchaînement de ces étapes est illustré à la figure 2.The microprocessor 1 comprises a program 4 and a shared memory 3 with a memory of the FPGA. These elements are known to those skilled in the art and will not be detailed, the sharing of memories being done according to a principle known to those skilled in the art. The microprocessor includes a timer which is activated when an execution interruption of an event or a task is activated. When the execution of the task is finished, the timer stops and the microprocessor transmits the execution time of the task to the FPGA which will then stop its timer, before carrying out the verification of the execution time of a event. The sequence of these steps is illustrated in Figure 2.

Le dispositif programmable FPGA 2 comprend une mémoire partagée 5, un gestionnaire de données et de communication 6 et un ordonnanceur 7 objet de l’invention. Le gestionnaire de données et de communication échange des informations (des données) avec la mémoire partagée du microprocesseur. L’ordonnanceur 7 gère les interruptions au niveau du microprocesseur et va permettre l’exécution des évènements de façon déterministe et un par un comme il a été indiqué précédemment. C’est l’ordonnanceur qui détermine l’instant de positionnement d’un évènement à exécuter et qui va calculer comment positionner temporellement les différents évènements à exécuter dans la fenêtre temporelle. Le gestionnaire de données et de communication est par exemple un bus de communication partagé par plusieurs équipements.The FPGA programmable device 2 comprises a shared memory 5, a data and communication manager 6 and a scheduler 7 which is the subject of the invention. The data and communication manager exchanges information (data) with the shared memory of the microprocessor. The scheduler 7 manages the interrupts at the microprocessor level and will allow the execution of the events in a deterministic way and one by one as indicated previously. It is the scheduler which determines the instant of positioning of an event to be executed and which will calculate how to temporally position the different events to be executed in the time window. The data and communication manager is for example a communication bus shared by several devices.

La figure 2 illustre des échanges entre le microprocesseur et le FPGA.FIG. 2 illustrates exchanges between the microprocessor and the FPGA.

Le gestionnaire de données et communication du FPGA transmet un ordre d’écriture de données du FPGA vers la mémoire partagée 3 du microprocesseur 1, 21. En même temps, l’ordonnanceur 7 transmet un signal d’interruption INT vers le programme 4 implémenté sur le microprocesseur 1, 22. Le microprocesseur sur réception du signal d’interruption lit les données qui se trouvent dans sa mémoire partagée 3, 23. Les données lues sont transmises au programme 4 qui va sélectionner, 24, une application à exécuter selon le contenu des données et exécuter, 25, l’application sélectionnée. L’exécution de l’application génère des données qui vont être écrites dans la mémoire partagée 3 et qui vont ensuite être transmises dans la mémoire partagée 5 du FPGA. L’ordonnanceur 7 connaissant la durée d’exécution d’un évènement et son positionnement temporel dans une fenêtre temporelle va vérifier le temps d’exécution, 27, puis lire les données, 28.The data and communication manager of the FPGA transmits an order to write data from the FPGA to the shared memory 3 of the microprocessor 1, 21. At the same time, the scheduler 7 transmits an interrupt signal INT to the program 4 implemented on the microprocessor 1, 22. The microprocessor on reception of the interrupt signal reads the data which are in its shared memory 3, 23. The data read is transmitted to the program 4 which will select, 24, an application to be executed according to the content data and execute, 25, the selected application. The execution of the application generates data which will be written in the shared memory 3 and which will then be transmitted in the shared memory 5 of the FPGA. The scheduler 7 knowing the execution time of an event and its temporal positioning in a time window will check the execution time, 27, then read the data, 28.

La figure 3 illustre l’étape de planification réalisée par l’ordonnanceur selon l’invention, des tâches et des messages de communication à transmettre, dans l’exemple, trois tâches et deux messages. Les tâches et les messages à envoyer sont identifiés. Par défaut, les tâches et les messages sont empilés les uns derrière les autres au niveau d’une pile, non représentée sur la figure pour des raisons de simplification, selon la disponibilité temporelle restante dans une fenêtre temporelle. Pour chaque message et pour chaque tâche, le microprocesseur identifie sa fréquence d’exécution, selon des fréquences multiples de deux, la durée d’exécution Ttde la tâche ou la durée Tmdu message (espace temporel pris par la tâche ou le message), et éventuellement les messages et/ou les tâches qui précèdent. C’est l’évènement le plus lent qui détermine la vitesse de répétition du cycle, correspondant à une fenêtre temporelle. A chaque interruption d’exécution d’un évènement, le timer Tmicrodu microprocesseur 1 est activé, en même temps le timer TFPGAdu FPGA est activé. Ces deux timers permettent notamment de vérifier le temps d’exécution d’un évènement, au niveau du microprocesseur et dans le FPGA. A la fin de l’exécution de l’évènement, le timer du microprocesseur s’arrête et transmet le temps mesuré au FPGA, qui sur réception de cette information arrête son timer.FIG. 3 illustrates the step of planning carried out by the scheduler according to the invention, of the tasks and of the communication messages to be transmitted, in the example, three tasks and two messages. Tasks and messages to send are identified. By default, the tasks and the messages are stacked one behind the other at the level of a stack, not represented in the figure for reasons of simplification, according to the time availability remaining in a time window. For each message and for each task, the microprocessor identifies its execution frequency, according to frequencies that are multiples of two, the execution duration T t of the task or the duration T m of the message (temporal space taken up by the task or the message), and possibly the preceding messages and/or tasks. It is the slowest event which determines the cycle repetition speed, corresponding to a time window. Each time the execution of an event is interrupted, the timer T micro of the microprocessor 1 is activated, at the same time the timer T FPGA of the FPGA is activated. These two timers make it possible in particular to check the execution time of an event, at the level of the microprocessor and in the FPGA. At the end of the execution of the event, the microprocessor timer stops and transmits the measured time to the FPGA, which on reception of this information stops its timer.

Après insertion d’un nouvel évènement (tâche ou message), l’ordonnanceur recalcule la disponibilité temporelle d’utilisation des ressources du microprocesseur, dans la fenêtre temporelle. L’ordonnanceur va recalculer après chaque positionnement d’un évènement à exécuter, en tenant compte de la « taille temporelle d’exécution » de l’évènement, de l’intervalle de temps restant dans la fenêtre temporelle et disponible pour que le microprocesseur puisse exécuter d’autres évènements. Dans le cas où un évènement est exécuté n fois dans la fenêtre temporelle, l’ordonnanceur va effectuer le calcul de l’intervalle restant dans la fenêtre temporelle pour chaque occurrence de l’évènement. L’ordonnanceur va calculer l’intervalle de temps restant pour les n fenêtres temporelles ainsi générées dans la fenêtre temporelle (T0à Tmax), ceci est par exemple illustré avec le quatrième évènement exécuté quatre fois dans la fenêtre temporelle initiale [T0, Tmax] et donc conduira à quatre valeurs de décalage temporels à utiliser pour l’exécution des évènements, ce qui est illustré sur la figure par t0+dt1(E4), t0+dt2(E4), t0+dt3(E4), t0+dt4(E4). De manière générique pour un évènement j, avec un nombre d’occurrence n dans la fenêtre temporelle, si les conditions de disponibilité temporelle sont remplies, on aura n instants temporels de positionnement de l’évènement j, tels que t0+dt1(Ej), t0+dt2(Ej), t0+dt3(Ej), …t0+dtn(Ej).After inserting a new event (task or message), the scheduler recalculates the temporal availability of use of the resources of the microprocessor, in the temporal window. The scheduler will recalculate after each positioning of an event to be executed, taking into account the "execution time size" of the event, the time interval remaining in the time window and available for the microprocessor to run other events. In the case where an event is executed n times in the time window, the scheduler will perform the calculation of the interval remaining in the time window for each occurrence of the event. The scheduler will calculate the time interval remaining for the n time windows thus generated in the time window (T 0 to T max ), this is for example illustrated with the fourth event executed four times in the initial time window [T 0 , T max ] and therefore will lead to four time offset values to be used for the execution of events, which is illustrated in the figure by t 0 +dt 1 (E 4 ), t 0 +dt 2 (E 4 ), t 0 +dt 3 (E 4 ), t 0 +dt 4 (E 4 ). In a generic way for an event j, with a number of occurrence n in the time window, if the conditions of temporal availability are met, there will be n temporal instants of positioning of the event j, such that t 0 +dt 1 ( E j ), t 0 +dt 2 (E j ), t 0 +dt 3 (E j ), …t 0 +dt n (E j ).

Sur l’exemple de la figure 3, les messages et les tâches sont programmés selon un ordre d’exécution défini au préalable par un utilisateur ou une application donnée, l’ordre d’exécution est garanti si le champ « priorité ou previous », i.e. tâche ou message précédent est renseigné.On the example of figure 3, the messages and the tasks are programmed according to an order of execution defined beforehand by a user or a given application, the order of execution is guaranteed if the field “priority or previous”, ie previous task or message is filled in.

A partir des informations données lors de l’étape de planification, l’ordonnanceur va définir les instants d’exécution des tâches et/ou des évènements. Pour cela, l’ordonnanceur prend en compte la valeur de fréquence minimum fminde l’ensemble des tâches et messages considérés. Cette fréquence (fmin) détermine le cycle de répétition des évènements ainsi que la fenêtre temporelle maximale (T0à Tmax), T0est l’instant où le processeur commence à exécuter un évènement, Tmaxla borne supérieure. Puis il détermine une valeur de décalage temporel (tx) ou offset pour un évènement (tâche ou message) qui doit être exécuté (T0+ tx). Sur la figure 4, les décalages temporels ou offsets conduisent à un ordre d’exécution avec : le premier message transmis à t0=0, le cinquième évènement exécuté à t= t0+100ms, le deuxième évènement exécuté à t= t0+125ms, le troisième évènement exécuté à t= t0+175ms, le quatrième message est transmis à t= t0+200ms. Sur chaque nouveau cycle, les offsets temporels se répètent.From the information given during the planning step, the scheduler will define the instants of execution of the tasks and/or events. For this, the scheduler takes into account the minimum frequency value f min of all the tasks and messages considered. This frequency (f min ) determines the event repetition cycle as well as the maximum time window (T 0 to T max ), T 0 is the instant when the processor begins to execute an event, T max the upper limit. Then it determines a time lag value (t x ) or offset for an event (task or message) which must be executed (T 0 + t x ). In figure 4, the time lags or offsets lead to an execution order with: the first message transmitted at t 0 =0, the fifth event executed at t= t 0 +100ms, the second event executed at t= t 0 +125ms, the third event executed at t= t 0 +175ms, the fourth message is transmitted at t= t 0 +200ms. On each new cycle, the time offsets repeat.

Pour le calcul de la fenêtre temporelle restante, après avoir positionné le quatrième évènement par exemple, ce dernier étant exécuté n fois dans la fenêtre temporelle, l’ordonnanceur 7 calcule l’intervalle restant pour les fenêtres temporelles générées à chaque positionnement d’une occurrence du quatrième évènement, [t= (t0+200ms + taille en ms de l’évènement) + (t0+n*200ms)] où n correspond au nombre de fois où le quatrième évènement apparaît dans la fenêtre temporelle.For the calculation of the remaining time window, after having positioned the fourth event for example, the latter being executed n times in the time window, the scheduler 7 calculates the remaining interval for the time windows generated at each positioning of an occurrence of the fourth event, [t= (t 0 +200ms + event size in ms) + (t 0 +n*200ms)] where n is the number of times the fourth event occurs in the time window.

Le procédé selon l’invention garantit ainsi que tous les évènements planifiés seront exécutés un par un, sans jamais se croiser temporellement et en tenant compte de leur fréquence d’exécution. L’ordonnanceur 7 génère les informations servant à générer des interruptions afin d’exécuter tous les évènements, tous les messages et les tâches planifiés séquentiellement.The method according to the invention thus guarantees that all the planned events will be executed one by one, without ever crossing over time and taking into account their frequency of execution. The scheduler 7 generates the information used to generate interrupts in order to execute all the events, all the messages and the tasks planned sequentially.

A la fin de l’exécution d’un évènement, l’ordonnanceur d’évènements ou « scheduler » contrôle si le temps d’exécution correspond à l’attendu. Le temps mesuré d’exécution d’un évènement par le premier microprocesseur 1 est comparé avec le temps mesuré par le FPGA, selon un principe connu de l’homme du métier. Ceci permet notamment de vérifier que le microprocesseur ne s’est pas arrêté pendant l’exécution de l’évènement avec une erreur ou est resté bloqué dans une boucle infinie.At the end of the execution of an event, the event scheduler or “scheduler” checks whether the execution time corresponds to the expected one. The measured execution time of an event by the first microprocessor 1 is compared with the time measured by the FPGA, according to a principle known to those skilled in the art. This makes it possible in particular to check that the microprocessor has not stopped during the execution of the event with an error or has remained stuck in an infinite loop.

La figure 5 illustre un exemple d’implémentation de l’ordonnanceur d’évènements selon l’invention. Dans cette configuration, les tâches annexes sont laissées au FPGA. Un protocole de communication connu de l’homme du métier permet l’échange de données entre le premier microprocesseur 1 et le FPGA 2, ainsi que la vérification de la bonne exécution de la tâche de calcul souhaitée dans le créneau temporel prévu. La puissance de calcul du microprocesseur est ainsi optimisée.Figure 5 illustrates an example of implementation of the event scheduler according to the invention. In this configuration, the ancillary tasks are left to the FPGA. A communication protocol known to those skilled in the art allows the exchange of data between the first microprocessor 1 and the FPGA 2, as well as the verification of the proper execution of the desired calculation task in the planned time slot. The computing power of the microprocessor is thus optimized.

Paramétrage tâche:
- Le FPGA contient un ordonnanceur d’évènements selon l’invention où l’ordre d’exécution des évènements ou des tâches a été obtenu par la mise en œuvre du procédé selon l’invention décrit ci-dessus,
- Le FPGA écrit (WR) sur une mémoire DPRAM partagée avec le microprocesseur l’identifiant (ID) de la tâche à exécuter ainsi que les paramètres d’entrée (DATA IN),
- Le FPGA lance une interruption INT vers le premier microprocesseur 1 et démarre un temporisateur ou Timer FPGA,
Task settings :
- The FPGA contains an event scheduler according to the invention where the order of execution of the events or tasks has been obtained by implementing the method according to the invention described above,
- The FPGA writes (WR) on a DPRAM memory shared with the microprocessor the identifier (ID) of the task to be executed as well as the input parameters (DATA IN),
- The FPGA launches an INT interrupt to the first microprocessor 1 and starts a timer or Timer FPGA,

Exécution tâche ou évènement
- Le premier microprocesseur initialise un Timer microprocesseur,
Le premier microprocesseur 1 reçoit une interruption du FPGA et lit (RD) la mémoire d’échange DPRAM,
Le contenu de cette lecture (DATA IN) correspond à la tâche qui devra être exécutée ainsi que les paramètres d’entrée,
Le premier microprocesseur exécute la tâche correspondante,
Le premier microprocesseur lance une écriture de mémoire partagée DPRAM 3 et retourne le Timer microprocesseur, l’identifiant de la tâche qui vient d’être exécutée (ID) ainsi que les paramètres de sortie (DATA OUT),
Task or event execution
- The first microprocessor initializes a microprocessor Timer,
The first microprocessor 1 receives an interrupt from the FPGA and reads (RD) the exchange memory DPRAM,
The content of this reading (DATA IN) corresponds to the task that will have to be executed as well as the input parameters,
The first microprocessor performs the corresponding task,
The first microprocessor initiates a write of shared memory DPRAM 3 and returns the microprocessor Timer, the identifier of the task which has just been executed (ID) as well as the output parameters (DATA OUT),

Vérification tâche
- Le FPGA contrôle son Timer en comparant avec le Timer du premier microprocesseur, selon une méthode connue de l’homme du métier,
- Le FPGA peut utiliser les paramètres de sortie (DATA OUT),
- Un nouveau cycle peut être lancé.
Job Verification
- The FPGA checks its Timer by comparing it with the Timer of the first microprocessor, according to a method known to those skilled in the art,
- The FPGA can use output parameters (DATA OUT),
- A new cycle can be started.

L’ordonnanceur d’évènements selon l’invention présente notamment comme avantages :
- la gestion des tâches d’un microprocesseur et des communications de manière déterministe, sans avoir recours à une gestion des priorités des interruptions. Les tâches sont exécutées dans un ordre précis de façon à ne jamais avoir deux évènements qui s’exécutent à la fois et sans interrompre l’exécution d’un évènement ou d’une tâche,
- une utilisation à 100% de la bande passante est possible, en l’absence de marge à prévoir pour la gestion d’éventuelles collisions,
- le fonctionnement synchrone de plusieurs équipements permet l’utilisation de la totalité de la bande passante, car il n’y a pas de marge à prévoir pour la gestion des collisions, en fonctionnement normal du système,
- la communication et la gestion des tâches sont organisées temporellement de manière à faire interagir tous les équipements du réseau de manière synchronisée et sans aucune interruption.
The event scheduler according to the invention has in particular the following advantages:
- the management of the tasks of a microprocessor and of the communications in a deterministic manner, without having recourse to a management of the priorities of the interruptions. The tasks are executed in a specific order so as to never have two events running at the same time and without interrupting the execution of an event or a task,
- 100% use of the bandwidth is possible, in the absence of margin to provide for the management of possible collisions,
- the synchronous operation of several devices allows the use of the entire bandwidth, because there is no margin to be provided for the management of collisions, in normal operation of the system,
- the communication and the management of the tasks are organized temporally so as to make all the equipment of the network interact in a synchronized way and without any interruption.

Claims (5)

Procédé pour répartir temporellement les évènements à transmettre dans une fenêtre temporelle initiale Ti=[t0, tmax], lesdits évènements étant exécutés par un premier microprocesseur (1), la répartition temporelle étant réalisée par un dispositif programmable (2) caractérisé en ce qu’il comporte au moins les étapes suivantes :
- identifier au moins deux évènements E1, Ej, à exécuter par le premier microprocesseur,
- identifier pour chaque évènement E1, Ej, sa fréquence d’exécution F1, Fj, selon des fréquences multiples de deux et la durée T1, Tj, d’exécution d’un évènement,
- insérer un premier évènement E1et calculer la disponibilité temporelle Trrestante dans la fenêtre temporelle initiale Tiafin de déterminer la taille maximale en temps et la fréquence maximale admissible d’un futur évènement Ej,
- à partir de la disponibilité temporelle, de la taille d’un évènement et de sa fréquence admissible, calculer pour chaque futur évènement Ejà exécuter et pour chacune des n occurrences dudit évènement dans la fenêtre temporelle initiale, une valeur de décalage temporel dt tels que t0+dt1(Ej), t0+dt2(Ej), t0+dt3(Ej), …t0+dtn(Ej) correspondant au positionnement temporel du futur évènement Ejpar rapport à l’instant de démarrage t0dans la fenêtre temporelle initiale,
- exécuter l’évènement Ejet vérifier si le temps d’exécution de l’évènement Ejpar le microprocesseur, Tjmicroest conforme au temps d’exécution TjFPGAattendu dans le dispositif programmable (2).
Method for temporally distributing the events to be transmitted in an initial time window T i =[t 0 , t max ], said events being executed by a first microprocessor (1), the temporal distribution being carried out by a programmable device (2) characterized in that it includes at least the following steps:
- identify at least two events E 1 , E j , to be executed by the first microprocessor,
- identify for each event E 1 , E j , its execution frequency F 1 , F j , according to frequencies that are multiples of two and the duration T 1 , T j , of execution of an event,
- insert a first event E 1 and calculate the time availability T r remaining in the initial time window T i in order to determine the maximum size in time and the maximum admissible frequency of a future event E j ,
- from the time availability, the size of an event and its admissible frequency, calculate for each future event E j to be executed and for each of the n occurrences of said event in the initial time window, a time offset value dt such that t 0 +dt 1 (E j ), t 0 +dt 2 (E j ), t 0 +dt 3 (E j ), …t 0 +dt n (E j ) corresponding to the temporal positioning of the future event E j with respect to the start time t 0 in the initial time window,
- executing the event E j and checking whether the execution time of the event E j by the microprocessor, T jmicro conforms to the execution time T jFPGA expected in the programmable device (2).
Procédé selon la revendication 1 caractérisé en ce qu’il tient compte de la priorité associée aux évènements à exécuter dans une fenêtre temporelle pour déterminer les instants d’exécution de chacun de ces évènements.Method according to Claim 1, characterized in that it takes account of the priority associated with the events to be executed in a time window to determine the instants of execution of each of these events. Système pour répartir temporellement les évènements à transmettre dans une fenêtre temporelle initiale Ti=[t0, tmax] caractérisé en ce qu’il comprend au moins les éléments suivants :
- un dispositif programmable (2) comprenant une mémoire partagée (5) et un ordonnanceur d’évènements (7),
- ledit ordonnanceur (7) est adapté à
déterminer les instants d’exécution d’au moins deux évènements dans la fenêtre temporelle initiale Ti=[t0, tmax], en prenant en compte la disponibilité temporelle Trrestante dans la fenêtre temporelle initiale Tiaprès l’insertion d’un premier évènement, à partir de la disponibilité temporelle, de la taille d’un futur évènement et de sa fréquence admissible, à calculer pour chaque futur évènement E2à exécuter une valeur de décalage temporel dt correspondant au positionnement temporel du futur évènement E2par rapport à l’instant de démarrage t0dans la fenêtre temporelle initiale et à vérifier si le temps d’exécution de l’évènement E2par le microprocesseur, T2microest conforme au temps d’exécution T2FPGA,
- exécuter l’évènement et vérifier si le temps d’exécution de l’évènement est conforme au temps d’exécution attendu,
- un premier microprocesseur (1) configuré pour exécuter les évènements mémorisés dans une mémoire partagée (3), sur réception d’un ordre d’interruption INT émis par ledit dispositif (2) et pour transmettre le temps d’exécution d’un évènement à l’ordonnanceur (7).
System for temporally distributing the events to be transmitted in an initial time window T i =[t 0 , t max ] characterized in that it comprises at least the following elements:
- a programmable device (2) comprising a shared memory (5) and an event scheduler (7),
- said scheduler (7) is adapted to
determining the instants of execution of at least two events in the initial time window T i =[t 0 , t max ], taking into account the time availability T r remaining in the initial time window T i after the insertion d 'a first event, from the time availability, the size of a future event and its admissible frequency, to be calculated for each future event E 2 to execute a time offset value dt corresponding to the time positioning of the future event E 2 with respect to the start time t 0 in the initial time window and to check whether the execution time of the event E 2 by the microprocessor, T 2micro complies with the execution time T 2FPGA ,
- execute the event and check if the execution time of the event conforms to the expected execution time,
- a first microprocessor (1) configured to execute the events stored in a shared memory (3), upon receipt of an INT interrupt command transmitted by said device (2) and to transmit the execution time of an event to the scheduler (7).
Système selon la revendication 3 caractérisé en ce que l’ordonnanceur est configuré pour calculer la disponibilité temporelle restante dans chacune des n fenêtres générées par le positionnement de l’évènement exécuté n fois dans la fenêtre temporelle initiale.System according to Claim 3, characterized in that the scheduler is configured to calculate the time availability remaining in each of the n windows generated by the positioning of the event executed n times in the initial time window. Système selon l’une des revendications 3 ou 4 caractérisé en ce que le dispositif programmable est de type FPGA (Field Programmable Gate Array).System according to one of Claims 3 or 4, characterized in that the programmable device is of the FPGA (Field Programmable Gate Array) type.
FR1902266A 2019-03-07 2019-03-07 MICROPROCESSOR EVENT ORDER Active FR3093579B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1902266A FR3093579B1 (en) 2019-03-07 2019-03-07 MICROPROCESSOR EVENT ORDER
PCT/EP2020/056057 WO2020178437A1 (en) 2019-03-07 2020-03-06 Microprocessor event scheduler

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1902266 2019-03-07
FR1902266A FR3093579B1 (en) 2019-03-07 2019-03-07 MICROPROCESSOR EVENT ORDER

Publications (2)

Publication Number Publication Date
FR3093579A1 true FR3093579A1 (en) 2020-09-11
FR3093579B1 FR3093579B1 (en) 2021-07-30

Family

ID=67810695

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1902266A Active FR3093579B1 (en) 2019-03-07 2019-03-07 MICROPROCESSOR EVENT ORDER

Country Status (2)

Country Link
FR (1) FR3093579B1 (en)
WO (1) WO2020178437A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010092146A1 (en) * 2009-02-16 2010-08-19 Inchron Gmbh Method for analysing the real-time capability of a system
US20140089889A1 (en) * 2012-09-26 2014-03-27 The Mathworks, Inc. Behavior invariant optimization of maximum execution times for model simulation
WO2014170569A1 (en) * 2013-04-19 2014-10-23 Krono-Safe Task time allocation method allowing deterministic error recovery in real time
EP3438821A1 (en) * 2016-03-31 2019-02-06 Alibaba Group Holding Limited Task-resource scheduling method and device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010092146A1 (en) * 2009-02-16 2010-08-19 Inchron Gmbh Method for analysing the real-time capability of a system
US20140089889A1 (en) * 2012-09-26 2014-03-27 The Mathworks, Inc. Behavior invariant optimization of maximum execution times for model simulation
WO2014170569A1 (en) * 2013-04-19 2014-10-23 Krono-Safe Task time allocation method allowing deterministic error recovery in real time
EP3438821A1 (en) * 2016-03-31 2019-02-06 Alibaba Group Holding Limited Task-resource scheduling method and device

Also Published As

Publication number Publication date
WO2020178437A1 (en) 2020-09-10
FR3093579B1 (en) 2021-07-30

Similar Documents

Publication Publication Date Title
TWI761349B (en) Risk identification method, client device and risk identification system
US20210367984A1 (en) Meeting experience management
CN109064325A (en) A kind of intelligent contract implementation method and device based on block chain
US20160359910A1 (en) Handling out of order events
CN106844055A (en) A kind of execution method and apparatus of task
EP2894872A1 (en) Method for scheduling tasks in a power line carrier network
EP2709008B1 (en) Method and device for counting the offset time for a processing unit in an information processing system
FR3093579A1 (en) MICROPROCESSOR EVENT ORDER
WO2013171227A1 (en) Method for the management of task execution in a computer system
FR3037417A1 (en) METHOD AND SYSTEM FOR DETERMINING TARGET SERVER CONFIGURATION FOR DEPLOYING SOFTWARE APPLICATION
WO2023185042A1 (en) Method and apparatus for establishing direct-connection channel
US20180341314A1 (en) System and method for managing electric power consumption
EP3396553B1 (en) Method and device for processing data after restart of node
CN114817057A (en) Method and device for testing thread jamming, electronic equipment and storage medium
FR3031200A1 (en) METHOD FOR AUTOMATICALLY MANAGING THE ELECTRICAL CONSUMPTION OF A CLUSTER OF SERVERS
EP2996036A1 (en) Method for monitoring an application architecture comprising a plurality of services
EP3881515A1 (en) System for formally monitoring communications
CA2778576C (en) Process and device for optimized task treatment for a fws
FR2980007A1 (en) METHOD, DEVICE AND COMPUTER PROGRAM FOR DYNAMICALLY ALLOCATING RESOURCES OF A CLUSTER TO APPLICATION PROCESS EXECUTION
US11621919B2 (en) Dynamic load balancing in reactive systems
CN111784353B (en) Real-time feature calculation method, order risk prediction device and order system
EP4064628A1 (en) Method for interprocess communication between at least two processes
WO2023052730A1 (en) Method for supervising and supervisor of the control of a parallel processing operation distributed in a communication network, service provision device and program implementing same
US20240098179A1 (en) Method and system for estimating call durations for improved call queue management
EP4148569A1 (en) Method for scheduling a set of calculation tasks in a supercomputer

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20200911

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6