Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
MICROPROCESSOR EVENT SCHEDULER
Document Type and Number:
WIPO Patent Application WO/2020/178437
Kind Code:
A1
Abstract:
Method and system for temporal distribution of the events to be transmitted in an initial time window Ti=[t0, tmax], characterised in that it includes at least the following steps: - identifying at least two events E1, Ej to be executed by the first microprocessor (1), - identifying, for each event E1, Ej, its frequency of execution F1, Fj, according to frequencies that are multiples of two, and the duration T1, Tj of execution of an event, - inserting a first event E1 and calculating the time availability Ti remaining in the initial time window T, in order to determine the maximum size in time and the maximum permissible frequency of a future event Ej, - based on the time availability, the size of an event and its permissible frequency, calculating, 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 that t0+dt1(Ej), t0+dt2(Ej), t0+dt3(Ej),...t0+dtn(Ej) corresponding to the temporal position of the future event Ej relative to the start time t0 in the initial time window, - executing the event Ej and verifying whether the time of execution of the event Ej by the microprocessor, Tjmicro complies with the time of execution TJFPGA expected in the FPGA.

Inventors:
ANDRADE ALFONSECA DAMIAN (FR)
TEIXEIRA TONY (FR)
GUGUEN STÉPHANE (FR)
Application Number:
PCT/EP2020/056057
Publication Date:
September 10, 2020
Filing Date:
March 06, 2020
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
THALES SA (FR)
International Classes:
G06F9/48
Domestic Patent References:
WO2010092146A12010-08-19
WO2014170569A12014-10-23
Foreign References:
US20140089889A12014-03-27
EP3438821A12019-02-06
Attorney, Agent or Firm:
DUDOUIT, Isabelle et al. (FR)
Download PDF:
Claims:
REVENDICATIONS

1. 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 E-i, Ej, à exécuter par le premier microprocesseur,

- identifier pour chaque évènement E-i, Ej, sa fréquence d’exécution F-i, Fj, selon des fréquences multiples de deux et la durée T-i, Tj, d’exécution d’un évènement,

- insérer un premier évènement Ei et calculer la disponibilité temporelle Tr restante dans la fenêtre temporelle initiale T, 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+dti(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 to 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 dispositif programmable (2).

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.

3. Système pour répartir temporellement les évènements à transmettre dans une fenêtre temporelle initiale T i=[to, ] 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 T i=[t0, tmax], en prenant en compte la disponibilité temporelle Tr restante dans la fenêtre temporelle initiale T, aprè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, T2micro est 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).

4. 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.

5. Système selon l’une des revendications 3 ou 4 caractérisé en ce que le dispositif programmable est de type FPGA (Field Programmable Gâte Array).

6. Système selon l’une des revendications 3 à 5 caractérisé en ce qu’il comporte au moins un premier équipement EQ-i et au moins un deuxième équipement EQ2 synchronisés et s’échangeant des données.

Description:
ORDONNANCEUR D’EVENEMENTS POUR MICROPROCESSEUR.

[0001 ] L’invention concerne un ordonnanceur d’évènements ou de tâches ou « scheduler » d’un système d’exploitation ou OS (Operating System).

[0002] 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.

[0003] 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é.

[0004] 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.

[0005] 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.

[0006] 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.

[0007] 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 Gâte 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.

[0008] 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.

[0009] 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.

[0010] L’invention concerne un procédé pour répartir temporellement les évènements à transmettre dans une fenêtre temporelle initiale Ti=[t 0 , t max ], 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 E-i, E j , à exécuter par le premier microprocesseur,

- identifier pour chaque évènement E-i, E j , sa fréquence d’exécution F-i, F j , selon des fréquences multiples de deux, la durée T-i, T j , d’exécution d’un évènement,

- insérer un premier évènement E-i et calculer la disponibilité temporelle T r restante dans la fenêtre temporelle initiale T, afin de déterminer la taille maximale en temps et la fréquence maximale admissible d’un futur évènement E j ,

- à partir de la disponibilité temporelle, de la taille d’un évènement et de sa fréquence admissible, calculer pour chaque futur évènement E j à 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 to+dti(E j ), to+dt 2 (E j ), to+dt 3 (E j ), ...to+dt n (E j ) correspondant au positionnement temporel du futur évènement E j par rapport à l’instant de démarrage t 0 dans la fenêtre temporelle initiale, - exécuter l’évènement E j et vérifier si le temps d’exécution de l’évènement E j par le microprocesseur, T j micro est conforme au temps d’exécution 1 RQA attendu dans le FPGA.

[001 1 ] 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.

[0012] L’invention concerne aussi un système pour répartir temporellement les évènements à transmettre dans une fenêtre temporelle initiale Ti=[t 0 , t max ] 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 T i=[to, t ma x], en prenant en compte la disponibilité temporelle T r restante dans la fenêtre temporelle initiale T, aprè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 E 2 à exécuter une valeur de décalage temporel dt correspondant au positionnement temporel du futur évènement E 2 par rapport à l’instant de démarrage to dans la fenêtre temporelle initiale et à vérifier si le temps d’exécution de l’évènement E 2 par le microprocesseur, T2micro est conforme au temps d’exécution T 2 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.

[0013] 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.

[0014] L’ordonnanceur selon l’invention peut être utilisé pour répartir les tâches exécutées par au moins un premier équipement EQi et au moins un deuxième équipement EQ 2 synchronisés et qui échangent des données. [0015] D’autres caractéristiques et avantages de l’invention apparaîtront à la lecture de la description d’exemples de réalisation donnés à titre ilustratif et nullement limitatif annexé des figures représentant :

[0016] [Fig.1 ] un schéma d’une architecture parallèle pour la mise en oeuvre de l’invention,

[0017] [Fig.2] un schéma illustrant les échanges entre les éléments de la figure 1 ,

[0018] [Fig.3] illustre l’étape de configuration des tâches et des messages de communication,

[0019] [Fig.4] illustre l’étape de planification suivant l’étape de configuration,

[0020] [Fig.5] illustre un système mettant en oeuvre le procédé selon l’invention.

[0021 ] Le principe mis en oeuvre 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.

[0022] 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.

[0023] 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. [0024] 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.

[0025] La figure 2 illustre des échanges entre le microprocesseur et le FPGA.

[0026] 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.

[0027] 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 T t de la tâche ou la durée T m du 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 T micro du microprocesseur 1 est activé, en même temps le timer TFPGA du 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.

[0028] 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 (T 0 à T max ), ceci est par exemple illustré avec le quatrième évènement exécuté quatre fois dans la fenêtre temporelle initiale [To, T max ] 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 t 0 +dti (E 4 ), t 0 +dt 2 (E 4 ), t 0 +dt 3 (E 4 ), t 0 +dt 4 (E 4 ). 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 to+dt-i (Ej), to+dt 2 (Ej), to+dt 3 (Ej), ...to+dt n (Ej).

[0029] 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é.

[0030] 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 f min de l’ensemble des tâches et messages considérés. Cette fréquence (f n) détermine le cycle de répétition des évènements ainsi que la fenêtre temporelle maximale (T 0 à T max ) , T 0 est l’instant où le processeur commence à exécuter un évènement, T max la borne supérieure. Puis il détermine une valeur de décalage temporel (t x ) ou offset pour un évènement (tâche ou message) qui doit être exécuté (To + t x ). Sur la figure 4, les décalages temporels ou offsets conduisent à un ordre d’exécution avec : le premier message transmis à t 0 =0, le cinquième évènement exécuté à t= t 0 +100ms, le deuxième évènement exécuté à t= to+125ms, le troisième évènement exécuté à t= to+175ms, le quatrième message est transmis à t= to+200ms. Sur chaque nouveau cycle, les offsets temporels se répètent.

[0031 ] 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= (to+200ms + taille en ms de l’évènement) + (t 0 +n * 200ms)] où n correspond au nombre de fois où le quatrième évènement apparaît dans la fenêtre temporelle.

[0032] 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.

[0033] 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.

[0034] 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.

[00351 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 oeuvre 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,

[0036] 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),

[0037] 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é.

[0038] La figure 4 est utilisée pour illustrer un exemple de mise en oeuvre du procédé selon l’invention dans le cas où l’ordonnanceur selon l’invention est utilisé dans un système comprenant plusieurs équipements, synchronisés entre eux et s’échangeant des données ou des informations. L’ordonnanceur va distribuer l’exécution des tâches sur les différents équipements. Les évènements illustrés à la figure 4 peuvent être attribués à des équipements différents, distants les uns des autres et interconnectés. Ces évènements sont cadencés avec des multiples de deux par rapport à une fréquence F 0 . Dans l’exemple, l’évènement T 2 est exécuté à la fréquence T 0 = 8Hz et tous les autres évènements sont multiples de cette fréquence, soit 4 Hz, 2 Hz et 1 Hz. Etant donné que les évènements ne peuvent pas être exécutés en même temps, ce mécanisme permet l’exécution des évènements de manière parfaitement déterministe. On connaît de manière précise la fin et le début d’un évènement à tout instant quelque soit la fréquence d’exécution, ceci sous conditions que l’évènement soit un multiple de 2 par rapport à F 0 , et la durée de l’évènement.

[0039] Dans un système comportant plusieurs équipements, il peut y avoir plusieurs interactions entre les équipements qui nécessitent d’être synchronisés et exécutés à des moments précis. Prenons l’exemple de deux équipements EQ-i et EQ 2 qui ont besoin de s’échanger des informations. Le premier équipement EQ1 requiert un certain nombre d’informations provenant du deuxième équipement EQ2 pour effectuer ses calculs, et inversement. Sur la figure 4, les actions 1 , 2 et 3 correspondent au premier équipement EQ-i et les actions 4 et 5 correspondent au deuxième équipement EQ 2 . Dans l’ordre des priorités, on voit que la tâche T3 doit être exécutée après l’émission du message M-i. Donc, l’ordonnanceur va faire en sorte que dans le temps, l’exécution des tâches est la suivante :

[0040] La transmission du message M-i du premier équipement EQ-i vers le deuxième équipement EQ 2 , ensuite EQ-i peut exécuter les tâches Ti et T 2 ,

[0041 ] Le deuxième équipement EQ 2 peut envoyer des informations vers le premier équipement EQ1 et finalement le deuxième équipement EQ 2 va exécuter la tâche T3. L’ordonnanceur selon l’invention permet donc la planification des évènements de plusieurs équipements interconnectés et interdépendants.

[0042] 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.