FR2995705A1 - Procede de preparation d'une sequence d'execution d'un programme partitionne spatialement et temporellement utilisant un processeur muni d'une memoire cache. - Google Patents

Procede de preparation d'une sequence d'execution d'un programme partitionne spatialement et temporellement utilisant un processeur muni d'une memoire cache. Download PDF

Info

Publication number
FR2995705A1
FR2995705A1 FR1258644A FR1258644A FR2995705A1 FR 2995705 A1 FR2995705 A1 FR 2995705A1 FR 1258644 A FR1258644 A FR 1258644A FR 1258644 A FR1258644 A FR 1258644A FR 2995705 A1 FR2995705 A1 FR 2995705A1
Authority
FR
France
Prior art keywords
execution
task
tasks
time
sequence
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
FR1258644A
Other languages
English (en)
Other versions
FR2995705B1 (fr
Inventor
Julien Galizzi
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.)
Centre National dEtudes Spatiales CNES
Original Assignee
Centre National dEtudes Spatiales CNES
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 Centre National dEtudes Spatiales CNES filed Critical Centre National dEtudes Spatiales CNES
Priority to FR1258644A priority Critical patent/FR2995705B1/fr
Publication of FR2995705A1 publication Critical patent/FR2995705A1/fr
Application granted granted Critical
Publication of FR2995705B1 publication Critical patent/FR2995705B1/fr
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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Un procédé de préparation d'une séquence d'exécution d'un programme informatique de service par un calculateur de service ayant une mémoire cache, dans lequel la séquence d'exécution est définie par une trame temporelle et dans lequel le programme comprend un ensemble d'instructions réparties suivant un partitionnement temporel et spatial de tâches, comprend une étape d'ordonnancement 314 utilisant un algorithme d'optimisation prédéterminé. Le procédé comprend, pour au moins une boucle d'instructions BUCKLE2(i) formant à elle seule une tâche et pouvant être lors de son exécution segmentée et disposée librement dans la trame, un étape de détermination (312) d'un premier temps d'exécution pire cas mesuré WCETm1(i) et d'un deuxième temps d'exécution pire cas mesuré WCETm2(i) correspondant respectivement à une première série de mesures utiles M1 (i,k) de la durée d'exécution de la première itération de la séquence SB(i) avec la mémoire cache vide initialement et à l'écart entre une deuxième série de mesures directes M2dir(i,k) de la durée d'exécution des deux premières itérations de la séquence SB2(i) avec la mémoire cache vide initialement et la première série de mesures directes M1(i,k) et une étape d'injection des premier et deuxième temps d'exécution pire cas mesuré WCETm1(i), WCETm2(i) dans l'étape d'ordonnancement des différentes tâches au sein de la trame.

Description

Procédé de préparation d'une séquence d'exécution d'un programme partitionné spatialement et temporellement utilisant un processeur muni d'une mémoire cache La présente invention concerne un procédé de préparation d'une séquence d'exécution d'un programme informatique de service, destiné à être exécuté par un processeur de service muni d'une mémoire cache pour accélérer l'exécution du programme, et destiné à gérer le fonctionnement d'un système complexe, notamment de type aérospatial, avec des contraintes de criticité d'exécution de temps réel. La présente invention concerne également un système de préparation d'une séquence d'exécution d'un programme suivant le procédé de préparation.
La présente invention concerne également un programme d'ordinateur de mise en oeuvre du procédé de préparation d'une séquence du programme informatique par le système de préparation. La présente invention concerne également un système spatial complexe, comportant une unité centrale raccordée à plusieurs périphériques, et piloté par le programme informatique obtenu par le procédé de préparation. Dans le domaine de l'avionique des systèmes aéronautiques, il est connu de réaliser des systèmes avioniques, modulaires et intégrés, qui utilisent un partitionnement temporel et spatial ségrégatif robuste TSP (en anglais Time and Space Partitionning), un tel partitionnement étant défini par la norme libre ARINC 653.
Un tel partitionnement permet de gérer efficacement les ressources informatiques en diminuant en même temps l'encombrement, la masse et l'énergie consommée du système. En effet le partitionnement remplace efficacement plusieurs systèmes autonomes interconnectés qui réaliseraient les mêmes fonctions dans une architecture fédérative.
Un tel partitionnement permet également d'héberger sur une même plateforme matérielle des applications ou tâches de niveaux de sûreté différents selon un mécanisme d'isolation dénommé ségrégation stricte. Dans ce cas, les applications ou tâches exécutables sont totalement indépendantes les unes des autres, et il est garanti qu'une fois la qualification sécuritaire d'une application séparée acquise, la qualification n'est pas remise en question par l'adjonction d'autres applications ou tâches, hébergées sur la même plateforme matérielle. La mise en oeuvre du partitionnement et de l'exécution du programme d'ensemble contenant les applications est réalisée par une séquence d'exécution des applications. La séquence d'exécution est définie par une trame temporelle ayant une durée fixée et une structure interne de découpe en tranches de temps. Chaque tranche de temps est attribuée à l'exécution totale d'une application et la trame temporelle est répétée en permanence. En raison d'un volume important de fabrication en série des systèmes avioniques pour les programmes commerciaux aéronautiques, un composant spécifique voire une petite variété de composants spécifiques, dédiés à la gestion des entrées et sorties d'un bouquet de périphériques ont été développés. Pour le processeur central de gestion du système avionique, cela a pour conséquence d'éviter la contrainte de devoir gérer fréquemment, soit de manière asynchrone avec des interruptions, soit de manière synchrone, les acquisitions des données de sorties et la fourniture de données d'entrées en provenance des et aux nombreux périphériques. Cela permet ainsi pour le système avionique de proposer une trame temporelle définissant la séquence d'exécution de partitions avec un nombre limité de tranches temporelles, typiquement un nombre inférieur ou égal à 20, et de ne pas faire interrompre trop souvent une de ces tranches temporelles par un nombre variable et non maîtrisé d'autres tranches temporelles consacrées aux entrées/sorties. En effet, l'interruption de l'exécution d'une partition, c'est à dire l'interruption d'une tranche temporelle par une autre tranche, a pour effet direct de pénaliser et de rendre complexe la maîtrise du temps d'exécution de la partition au travers de l'effet cache d'une mémoire cache dont sont classiquement dotés les processeurs performants utilisé dans ce type de plateforme. Ainsi, dans les systèmes avioniques de l'aéronautique, les applications et les partitions sont séquencées sans la prise en compte de l'effet cache du processeur. Dans le domaine spatial pour certains programmes en cours de développement, il est prévu que le système d'avionique d'une plateforme satellite, soit géré à l'instar d'un système avionique d'un avion, décrit ci-dessus, par une plateforme matérielle, comprenant un processeur équipé d'une mémoire cache et intégrant diverses fonctions de la plateforme au travers d'un partitionnement temporel et spatial ségrégatif robuste TSP Mais à l'inverse du domaine aéronautique, il n'est pas encore prévu dans le domaine spatial de disposer d'un composant spécifique dédié à la gestion des entrées et sorties du bouquet de périphériques du système spatial, le développement d'un tel composant n'étant pas justifié en raison de son coût élevé et de sa faible capacité d'amortissement. Il en résulte pour le processeur central de gestion du système avionique de la plateforme spatiale la contrainte d'avoir à gérer fréquemment de manière synchrone les acquisitions des données de sorties et la fourniture des données d'entrées en provenance des et aux nombreux périphériques. Cela a pour conséquence un morcellement des applications ou partitions du programme informatique de gestion en portions de tâches et une augmentation du nombre des tranches de temps associés aux portions de tâches par rapport au nombre de tranches d'une trame temporelle de même durée d'un système avionique. Dans ce cas, l'interruption d'une tranche de temps un nombre indéterminé de fois pour une partition considérée va avoir un effet pénalisant en termes d'augmentation du temps d'exécution de la partition mais surtout sera difficile à maîtriser en termes d'impact de ces interruptions vis à vis de l'effet cache. Il peut donc devenir intéressant de prendre en compte l'impact de ces interruptions vis-à-vis de l'effet cache sur la définition de la séquence d'exécution. Ainsi, la maîtrise de l'effet cache est recherchée au travers de la prévision globale des durées de réinitialisation de la mémoire cache.
Jusqu'à présent, les outils d'analyse de codes complexes de programmes informatiques ne permettent pas de déterminer finement la variabilité des temps d'exécution, liée à la présence d'une mémoire cache, dans les logiciels de vol complets exécutés par un calculateur d'architecture donnée, et ne permettent donc pas de déterminer les temps d'exécution « pire cas », liés à la présence d'une mémoire cache.
Le problème technique est donc de trouver un procédé de préparation fiable d'une séquence d'exécution d'un programme informatique exécuté par un processeur de service muni d'une mémoire cache, respectant la mise en oeuvre d'un partitionnement temporel et spatial ségrégatif strict, respectant la contrainte d'existence d'une répétition fréquente d'au moins une tâche, et maîtrisant les gains liées à l'effet cache.
De manière connexe, un autre problème technique est de trouver une séquence d'exécution du programme soumis aux contraintes définies ci-dessus qui rende minimale les pertes liées aux interruptions et qui alloue le temps strictement nécessaire aux tâches concernées pour maximiser l'effet cache sans maximiser le temps alloué aux tâches.. A cet effet, l'invention a pour objet un procédé de préparation d'une séquence d'exécution d'un programme informatique de service, destiné à gérer le fonctionnement d'un système complexe, notamment de type spatial, et destiné à être exécuté par un processeur de service muni d'une mémoire cache pour accélérer l'exécution du programme, le programme informatique consistant en un ensemble d'instructions réparties en au moins deux tâches distinctes et séparées, sans lien entre elles, au moins une première tâche Task1(j) d'un premier type étant constituée par une première boucle BUCKLE(j) d'instructions, prévue pour répéter dans la séquence d'exécution un nombre ftask1(j) de fois un premier motif séquentiel atomique SB1(j) correspondant d'instructions, et au moins une deuxième tâche Task2(i) d'un deuxième type étant constituée par une deuxième boucle d'instructions BUCKLE2(i), prévue pour répéter un nombre total d'itérations de fois Nit(i) un deuxième motif séquentiel SB2(i) correspondant d'instructions, l'exécution de la deuxième boucle BUCKLE2(i) pouvant être morcelée en des emplacements quelconques, la séquence d'exécution du programme étant définie par une trame temporelle ayant une durée fixée Ttrame, consistant en une ou des suites S(j) d'intervalles de temps T(j,w) de même durée égale à la durée de la trame temporelle divisée par le nombre de répétitions ftask1(j) du premier motif, et comprenant une suite de tranches de temps, chaque premier motif séquentiel atomique étant contraint d'être exécuté sans interruption dans un intervalle de temps différent associé de la trame temporelle, le nombre des tâches, les nombres d'instructions des tâches, et le(s) fréquences de répétition du (des) premier(s) motifs étant suffisamment grands pour imposer au moins une interruption lors de l'exécution de la deuxième tâche de deuxième type, des tâches restantes ayant un type différent des premier et deuxième types lorsqu'elles existent consistant chacune en un certain nombre de sous-tâches atomiques organisées entre selon un graphe associé et une fenêtre temporelle associée dans laquelle la tâche doit être exécutée complètement, chaque sous-tâche atomique ayant un temps d'exécution pire cas mesuré, caractérisé en ce que le procédé comprend les étapes consistant à : parmi l'ensemble des tâches du programme à exécuter, recenser l'ensemble des deuxièmes tâches Task2(i) de deuxième type, Ntask2 étant le nombre total de deuxièmes tâches Task2(i) de deuxième type et i étant un indice d'identification de la deuxième tâche variant entre 1 et Ntask2(i) pour chaque boucle BUCKLE2(i) d'une tâche recensée Task2(i), effectuer un nombre Nstat(i) de fois sur le processeur de service une première mesure utile M1(i,k) de la durée d'exécution du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement et une deuxième mesure utile M2(i,k) de la durée d'exécution du deuxième motif séquentiel SB2(i) avec un cache favorable correspondant à l'exécution d'une itération succédant à l'exécution d'une itération non interrompue avec la mémoire cache vide initialement, k étant un indice courant de mesure variant entre 1 et Nstat(i), puis déterminer un premier temps d'exécution pire cas mesuré WCETm1(i) comme étant la plus grande des premières mesures utiles Ml(i,k) avec k variant de 1 à Nstat(i), et un deuxième temps d'exécution pire cas mesuré WCETm2(i) comme étant la plus grande des deuxièmes mesures utiles M2(i,k) avec k variant de 1 à Nstat(i), à partir de la durée de la trame temporelle, des premiers temps d'exécution pire cas mesuré WCETm1(i) et deuxièmes temps d'exécution pire cas mesurés WCETm1(i) des tâches recensées Task(i), des intervalles temporels réguliers associées aux premières tâches, des temps d'exécution pire cas des premières séquences SB1(j), du ou des graphes associés et de la ou des fenêtre temporelles associée(s) aux tâche restantes lorsqu'elles existent et des temps d'exécution pire cas mesurés des sous-tâches atomiques des tâches restantes, déterminer une structure interne de la trame temporelle définissant la séquence d'exécution du programme en découpant les deuxièmes tâches Task2(i) en portions de tâches, et en affectant des tranches de temps aux portions de tâches, aux premières séquences atomiques, et aux sous-tâches atomiques, de sorte que chaque tâche du programme soit exécutée dans la durée de la trame temporelle de la séquence d'exécution sans conflit temporel avec une autre tâche. Suivant des modes de réalisation particulière, le procédé comporte l'une ou plusieurs des caractéristiques suivantes : - pour chaque deuxième boucle BUCKLE2(i) d'une tâche recensée Task2(i), déterminer une première durée maximale T1(i) d'exécution de la tâche Task2(i) égale à la somme du premier temps d'exécution pire cas mesuré WCETm1(i) et d'une première marge marg1(i), et une deuxième durée maximale T2(i) d'exécution de la tâche Task2(i) égale à la somme du deuxième temps d'exécution pire cas mesuré WCETm2(i) et d'une première marge marg2(i) ; puis, à partir de la durée de la trame temporelle, des premières durées maximales T1(i) et des deuxièmes durées maximales T2(i) des tâches recensées Task2(i), des intervalles temporels réguliers associées aux premières tâches, des temps d'exécution pire cas des premières séquences SB1(j), du ou des graphes associés et de la fenêtre ou des fenêtres temporelles associée(s) aux tâches restantes lorsqu'elles existent, et des temps d'exécution pire cas mesurés des sous-tâches atomiques des tâches restantes, déterminer une structure interne de la trame temporelle définissant la séquence d'exécution du programme en découpant les deuxièmes tâches recensées en portions de tâches, et en affectant des tranches de temps aux portions de tâches, aux premières séquences atomiques et aux sous-tâches atomiques, de sorte que chaque tâche du programme soit exécutée dans la durée de la trame temporelle de la séquence d'exécution sans conflit temporel avec une autre tâche ; - pour chaque deuxième boucle BUCKLE2(i), la première mesure utile M1(i,k) est une première mesure directe de la durée d'exécution d'une première itération initiale du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement, la deuxième mesure utile M2(i,k) est une mesure indirecte obtenue à partir d'une deuxième mesure directe M2dir(i,k) de la durée d'exécution de deux itérations consécutives du deuxième motif SB2(i) avec la mémoire cache vide initialement, la deuxième mesure utile M2(i,k) vérifiant la relation : M 2(i, k) = M 2dir (i ,k) -M1(i,k) - les première et deuxième mesures directes M1(i,k), M2dir(i,k)) sont mises en oeuvre à partir soit de deux séquences d'exécution différentes d'une itérations et de itérations successives de la deuxième séquence SB2(i) sans interruption par une autre tâche, soit à partir d'une séquence unique de deux itérations consécutives de la deuxième séquence SB2(i) sans interruption par une autre tâche ; - l'étape de mesure comprend en outre une étape consistant à, pour chaque boucle BUCKLE2(i) d'une deuxième tâche recensée Task2(i), effectuer un nombre Nstat(i) de fois sur le processeur de service une troisième mesure utile M3(i,k) de la durée d'exécution du deuxième motif séquentiel SB2(i) avec un cache favorable correspondant à l'exécution d'une itération succédant à l'exécution de deux itérations non interrompues par une autre tâche avec la mémoire cache vide initialement, k étant un indice courant de mesure variant entre 1 et Nstat(i), puis une étape consistant à déterminer un troisième temps d'exécution pire cas mesuré WCETm3(i) comme étant la plus grande des troisièmes mesures M3(i,k) avec k variant de 1 à Nstat(i), et dans lequel à partir de la durée de la trame temporelle, des premiers temps d'exécution pire cas mesuré WCETm1(i), des deuxièmes temps d'exécution pire cas mesurés WCETm2(i), et des troisièmes temps d'exécution pire cas mesurés WCETm3(i) des tâches recensées Task(i), des intervalles temporels réguliers associées aux premières tâches, des temps d'exécution pire cas des premières séquences SB1(j), du ou des graphes associés et de la ou des fenêtre temporelles associée(s) aux tâche restantes lorsqu'elles existent et des temps d'exécution pire cas mesurés des sous-tâches atomiques des tâches restantes, une structure interne de la trame temporelle définissant la séquence d'exécution du programme est déterminé en découpant les deuxièmes tâches Task2(i) en portions de tâches, et en affectant des tranches de temps aux portions de tâches, aux premières séquences atomiques, et aux sous-tâches atomiques, de sorte que chaque tâche du programme soit exécutée dans la durée de la trame temporelle de la séquence d'exécution sans conflit temporel avec une autre tâche ; - parmi les au moins une structure interne de la trame temporelle déterminées, sélectionner la structure interne de la trame temporelle pour laquelle la durée séparant le début de la trame et l'instant d'achèvement de toutes les tâches est la plus petite ; - le programme informatique comprend une unique tâche de premier type et/ou le nombre de répétitions d'un premier motif séquentiel dans la trame est supérieur ou égal à 10. L'invention a également pour objet un système de préparation d'une séquence d'exécution d'un programme d'informatique de service, destiné à gérer le fonctionnement d'un système complexe notamment de type spatial, comprenant un premier calculateur de service ayant un processeur de service et une mémoire cache pour accélérer l'exécution du programme informatique de service, et un deuxième calculateur de préparation d'une séquence d'exécution du programme, le programme informatique de service consistant en un ensemble d'instructions réparties en au moins deux tâches distinctes et séparées, sans lien entre elles, et au moins une première tâche Task(j) d'un premier type étant constituée par une première boucle d'instructions BUCKLE1(j), prévue pour répéter dans la séquence d'exécution un nombre entier ftask(j) de fois un premier motif séquentiel atomique correspondant SB1(j) d'instructions, et au moins une deuxième tâche Task2(i) d'un deuxième type étant constituée par une deuxième boucle d'instructions BUCKLE2(i), prévue pour répéter un nombre total d'itérations de fois Nit(i) un deuxième motif séquentiel SB2(i) correspondant d'instructions, l'exécution de la deuxième boucle BUCKLE2(i) pouvant être morcelée en des emplacements quelconques, la séquence d'exécution du programme étant définie par une trame temporelle ayant une durée fixée Ttrame, consistant en une ou des suites S(j) d'intervalles de temps T(j,w) de même durée égale à la durée de la trame temporelle divisée par le nombre de répétitions ftask1(j) correspondant, et comprenant une suite de tranche de temps, chaque premier motif séquentiel atomique SB1(j) associé à une première tâche task1(j) étant contraint d'être exécuté sans interruption dans un intervalle de temps T(j,w) différent associé de la trame temporelle, le nombre de tâches, les nombres d'instructions des tâches et le(s) fréquence(s) de répétition du (des) premier(s) motif(s) SB1(j) étant suffisamment grands pour imposer au mois une interruption lors de l'exécution d'une deuxième tâche de deuxième type, des tâches restantes ayant un type différent des premier et deuxième types lorsqu'elles existent, consistant chacune en un certain nombre de sous-tâches atomiques organisées selon un graphe associé et une fenêtre temporelle associée dans laquelle la tâche doit être exécutée complètement, chaque sous-tâche atomique ayant un temps d'exécution pire cas mesuré, caractérisé en ce que le premier calculateur de service est configuré pour chaque deuxième boucle BUCKLE2(i) d'une tâche de deuxième type recensée Task2(i), i étant un entier variant de 1 à Ntask2, effectuer un nombre Nstat(i) de fois une première mesure utile M1(i,k)) de la durée d'exécution en une seule traite du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement, et effectuer un nombre Nstat(i) de fois une deuxième mesure directe M2dir(i,k)) de la durée d'exécution de deux itérations consécutives du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement, et le deuxième calculateur de préparation est configuré pour chaque deuxième boucle BUCKLE2(i), i variant de 1 à Ntask2, et chaque entier I variant de 1 à Nstat(i) déterminer des deuxième mesures utiles indirectes M2(i,k) comme vérifiant les relations : M 2(i, k) = M 2dir (i ,k) -M1(i,k) et, le deuxième calculateur de préparation est configuré pour déterminer un premier temps d'exécution pire cas mesuré WCETm1(i) comme étant la plus grande des premières mesures utiles M1(i,k) avec k variant de 1 à Nstat(i), et un deuxième temps d'exécution pire cas mesuré WCETm2(i) comme étant la plus grande des deuxièmes mesures utiles M2(i,k) avec k variant de 1 à Nstat(i), et à partir de la durée de la trame temporelle, des premiers temps d'exécution pire cas mesuré WCETm1(i) et deuxièmes temps d'exécution pire cas mesurés WCETm1(i) des tâches recensées Task2(i), des intervalles temporels réguliers associées aux premières tâches, du ou des graphes associés et de la ou des fenêtre temporelles associée(s) aux tâche restantes lorsqu'elles existent et des temps d'exécution pire cas mesurés des sous-tâches atomiques des tâches restantes, déterminer une structure interne de la trame temporelle définissant la séquence d'exécution du programme en découpant les deuxièmes tâches Task2(i) en portions de tâches, et en affectant des tranches de temps aux portions de tâches, aux premières séquences atomiques, et aux sous-tâches atomiques, de sorte que chaque tâche du programme soit exécutée dans la durée de la trame temporelle de la séquence d'exécution sans conflit temporel avec une autre tâche. Suivant des modes de réalisation particulière, le système de préparation comporte l'une ou plusieurs des caractéristiques suivantes : le deuxième calculateur de préparation est relié au calculateur de service par un lien de communication, et configuré pour envoyer des commandes et à recevoir des états de fonctionnement vers et depuis le premier calculateur de service, et le deuxième calculateur de préparation est configuré pour faire exécuter par le premier calculateur de service pour chaque deuxième boucle BUCKLE2(i), i variant de 1 à Ntask2, l'étape consistant à effectuer un nombre Nstat(i) de fois une première mesure utile Ml (i,k)) de la durée d'exécution en une seule traite d'une itérations du deuxième motif séquentiel SB2(i) avec la mémoire cache initialement vide, et effectuer un nombre Nstat(i) de fois une deuxième mesure directe M2dir(i,k)) de la durée d'exécution de deux itérations consécutives du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement, et le deuxième calculateur de préparation est configuré pour recevoir les premières mesures utiles M1(i,k)) et les deuxièmes mesures directes M2dir(i,k), i variant de 1 à Ntask2 et k variant entre 1 et Nstat(i). L'invention a également pour objet un programme d'ordinateur de mise en oeuvre des étapes du procédé de préparation comprenant des instructions de programme stockées dans un système de préparation tel que défini ci-dessus et qui lorsqu'elles sont exécutées par le système de préparation mettent en oeuvre les étapes de procédé de préparation d'une séquence d'exécution d'un programme de service tel que défini ci-dessus.
L'invention a également pour objet un système spatial complexe compris dans l'ensemble formé par les satellites, les plateformes, les charges utiles, comprenant un ou plusieurs sous-systèmes périphériques munis de circuits d'interface correspondants, un calculateur ayant un processeur, une mémoire cache pour accélérer l'exécution du programme informatique de service, et un moyen de mise en oeuvre d'une séquence d'exécution du programme informatique de service suivant une trame temporelle de structure fixe répétée de manière permanente, le programme informatique consistant en un ensemble d'instructions réparties en au moins deux tâches distinctes et séparées, sans lien entre elles, au moins une première tâche Task1(j) d'un premier type étant constituée par une première boucle BUCKLE(j) d'instructions, prévue pour répéter dans la séquence d'exécution un nombre ftask1(j) de fois un premier motif séquentiel atomique SB1(j) correspondant d'instructions, et au moins une deuxième tâche Task2(i) d'un deuxième type étant constituée par une deuxième boucle d'instructions BUCKLE2(i), prévue pour répéter un nombre total d'itérations de fois Nit(i) un deuxième motif séquentiel SB2(i) correspondant d'instructions, l'exécution de la deuxième boucle BUCKLE2(i) pouvant être morcelée en des emplacements quelconques, la séquence d'exécution du programme étant définie par une trame temporelle ayant une durée fixée Ttrame, consistant en une succession d'intervalles de temps de même durée égale à la durée de la trame temporelle divisée par le nombre de répétitions du premier motif, et comprenant une suite de tranches de temps, chaque premier motif séquentiel atomique étant contraint d'être exécuté sans interruption dans un intervalle de temps différent associé de la trame temporelle, le nombre des tâches, les nombres d'instructions des tâches, et le(s) fréquences de répétition du (des) premier(s) motifs étant suffisamment grands pour imposer au moins une interruption lors de l'exécution de la deuxième tâche de deuxième type, des tâches restantes ayant un type différent des premier et deuxième type lorsqu'elles existent consistant chacune en un certain nombre de sous-tâches atomiques organisées entre selon un graphe associé et une fenêtre temporelle associée dans laquelle la tâche doit être exécutée complètement, chaque sous-tâche atomique ayant un temps d'exécution pire cas mesuré, caractérisé en ce que la trame temporelle d'exécution du programme de service est le produit obtenu par le procédé défini ci-dessus. L'invention sera mieux comprise à la lecture de la description de plusieurs formes de réalisation qui va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins sur lesquels : - la Figure 1 est une vue d'un système de préparation d'une séquence d'exécution d'un programme informatique de service destiné à être exécuté par un calculateur de service ; - la Figure 2 est une vue d'un chronogramme d'exécution d'instructions mises en parallèle selon un pipeline à cinq étages du processeur de service décrit à la Figure 1 ; - la Figure 3 est une vue d'une tâche A de premier type du programme informatique de service, décrite à la Figure 1 ; - la Figure 4 est une vue de la tâche B du programme informatique de service, décrite à la Figure 1, formant une tâche de deuxième type ; - la Figure 5 est une vue de la tâche C du programme informatique de service, décrite à la Figure 1, formant une tâche de deuxième type ; - la Figure 6 est une vue de la tâche D du programme informatique de service, décrite à la Figure 1, formant une tâche restante ayant un type différent des premier et deuxième types ; - la Figure 7 est une vue d'un exemple de trame temporelle définissant la séquence d'exécution remplissant les contraintes temporelles fixées par des tâches de premier type ; - la Figure 8 est un ordinogramme d'un premier mode de réalisation d'un procédé de préparation d'une séquence d'exécution d'un programme informatique de service mis en oeuvre par le système de la Figure 1 ; - la Figure 9 est ordinogramme d'un deuxième mode de réalisation d'un procédé de préparation d'une séquence d'exécution d'un programme informatique de service mis en oeuvre par le système de la Figure 1; - la Figure 10 est une vue d'un ensemble de durées mesurées d'exécution d'un nombre d'itérations consécutives d'une boucle d'une tâche de deuxième type des Figures 4 ou 5, sans vidage de la mémoire cache et sans interruption après le début de l'exécution des itérations de la boucle, en fonction du nombre d'itérations dans lequel est mis en évidence que les mesures des durées de la première itération et la deuxième itération sont suffisantes ; - la Figure 11 est la vue d'un système physique complexe ayant des criticités de temps réel mettant en oeuvre le programme de service et la séquence d'exécution obtenue par le procédé des Figures 8 ou 9. Suivant la Figure 1, un système 10 de préparation d'une séquence d'exécution d'un programme informatique de service comprend un premier calculateur 12, désigné par la suite par calculateur de service, et un deuxième calculateur 14, désigné par la suite par calculateur de préparation de la séquence d'exécution. Le calculateur de service 12 comprend un processeur de service 16 dénommé en anglais Central Processing Unit CPU, une mémoire cache 18, une mémoire centrale de service 20, et une unité de communication externe de service 22. La mémoire cache 18 dont le temps d'accès est inférieur à celui de la mémoire centrale de service 20 est connectée entre un premier interface d'entrée/sortie 24 du processeur de service 16 et un deuxième interface d'entrée/sortie 26 de la mémoire centrale de service 20 au travers d'une première liaison bidirectionnelle 28 et d'une deuxième liaison bidirectionnelle 30.
L'unité de communication externe de service 22 est connectée entre une troisième interface d'entrée/sortie 32 du processeur de service 16 et le calculateur de préparation 14. La mémoire centrale de service 20 est partitionnée en zones de mémoire distinctes et séparées entre elles de manière stricte dans lesquelles sont enregistrées sous forme d'exécutables les applications ou tâches constituant le programme de service et une séquence temporelle d'exécution par tranches de temps d'une partie d'une tâche, d'une tâche complète ou de plusieurs tâches. Ici à titre d'exemple, la mémoire centrale de service 20 comprend des première, seconde, troisième, quatrième et cinquième zones de mémoire 34, 36, 38, 40, 42 dans lesquelles sont respectivement enregistrées les applications notées A, B, C, D et la séquence d'exécution. Le calculateur de service 12 est un calculateur utilisant un processeur au sens large 46, c'est-à-dire intégrant le processeur 16 au sens strict et la mémoire cache 18, de type LEON2 développé pour les applications aérospatiales et dont le gain des performances, obtenu par l'utilisation de la mémoire cache 18, est non négligeable. Le processeur LEON2 est un processeur 32-bit RISC (Reduced Instruction Set Computing) basé sur une architecture SPARC V8 (Scalable Processor Architecture). Ce processeur 46 comprend un pipeline 48 de cinq étages 50, 52, 54, 56, 58, représentés sur la Figure 2, et la mémoire cache 18. Suivant la Figure 2, le pipeline 48 est de manière connue un mécanisme qui permet d'exécuter plusieurs instructions en un cycle de processeur. Pour accomplir une instruction RISC, suivant la Figure 2 le processeur 16 passe par les étapes suivantes pour une même instruction : l'étape de chargement 60 de l'instruction, désignée par IF (en anglais Instruction Fetch) l'étape de décodage 62 de l'instruction, désignée par ID (en anglais Instruction Decode), l'étape d'exécution 64 de l'instruction, désignée par EX (en anglais EXecute), l'étape d'accès en mémoire 66 désignée par MEM (en anglais MEMory) (cas des instructions LOAD (chargement ou lecture) et STORE (sauvegarde ou écriture) l'étape de stockage du résultat 68 dans un registre, désignée par WB (en anglais Write Back). Les instructions sont ainsi mises en parallèle puisque chacune des instructions se trouve à une étape différente dans le pipeline 48 à un moment donné.
Comme le processeur 16 doit attendre la fin du chargement de l'instruction et/ou de la donnée en mémoire avant de pouvoir poursuivre son exécution, la rapidité d'accès à la mémoire cache 18 permet de diminuer le nombre de cycles durant lequel le processeur 16 reste bloqué. Le nombre de cycles CPU (Central Processing Unit) nécessaires à l'exécution de l'instruction est conditionné par l'étape qui requiert le plus de cycles CPU. Ainsi, en réduisant les temps d'accès à la mémoire (étapes FE et ME) au maximum, le pipeline 48 permet de les absorber et ce sera l'exécution de l'instruction qui limitera alors la durée d'exécution de l'instruction. En d'autres termes, si le nombre de cycles requis pour le chargement de l'instruction ou l'accès aux données est inférieur au nombre de cycles requis pour l'exécution de l'instruction, le processeur 16 pourra fonctionner à plein régime (le pipeline ne sera jamais paralysé). La mémoire cache 18 est de manière connue une mémoire à accès rapide placée entre le processeur CPU 16 et la mémoire centrale 20. Basée sur une technologie SRAM (Static Random Access Memory), la mémoire cache 18 permet de réduire le temps d'accès aux données et aux instructions de la mémoire centrale 20. Le processus mis en oeuvre au cours de l'utilisation de la mémoire cache 18 est le suivant. Dans une première étape, le processeur 16 demande une information (instruction ou donnée).
Dans une deuxième étape la mémoire cache 18 vérifie si elle possède l'information. Si elle la possède, elle la transmet au processeur 16 (succès de cache, ou cache hit). Si elle ne la possède pas, la mémoire cache 18 la demande à la mémoire centrale 20 (défaut de cache, ou cache miss) qui la transmet au processeur 16. Dans une troisième étape, la mémoire cache 18 stocke l'information. Ici, la mémoire cache 18 du calculateur 12 de type LEON2 est subdivisée en deux mémoires cache distinctes non représentées sur la Figure 1 : - une mémoire cache de données (ou cache DO) - une mémoire cache d'instruction (ou cache I). Il est à remarquer que dans le cas des opérations d'écriture dans la mémoire cache de données (cache DO), il est nécessaire de tenir la mémoire centrale 20 à jour afin qu'elle soit toujours cohérente avec la mémoire cache 18 (et inversement). Ainsi lorsqu'une donnée est modifiée localement, le processeur 16 dispose de deux politiques de gestion des écritures.
Dans une première politique, dite le « write-through with no allocate » la donnée mise à jour dans le cache est également systématiquement recopiée dans la mémoire centrale 20 (temps c'accès plus long). Dans une deuxième politique, dite le « snooping », les données transitant sur le bus de données sont espionnées afin de détecter si un accès à un bloc de la mémoire centrale 20 dont une copie se trouve en mémoire cache est effectué (cas des transferts de type DMA Dynamic Memory Acess). Dans ce cas, le bloc en mémoire cache est invalidé pour qu'il soit mis à jour. Les évictions de cache, dénommés en anglais « flush », qui permettent le vidage de la mémoire cache sont les évènements qui correspondent aux perturbations les plus défavorables de la mémoire cache 18, ce qui se traduit en termes de dégradation de la vitesse d'exécution ou d'augmentation du temps d'exécution du programme de service. Ainsi la gestion des fréquences de vidage de la mémoire cache 18 lors de l'exécution du programme de service doit elle être adaptée et diminuée autant faire que se peut dans le respect des contraintes de criticité temps réel de l'exécution du programme de service. Suivant la Figure 1, le programme de service, dont l'exécutable est sauvegardé dans les zones de mémoire 34, 36, 38, 40 de la mémoire centrale 20, comprend un ensemble d'instructions réparties en tâches distinctes et séparées, sans lien entre elles, A, B, C et D. Le programme de service est prévu ici pour être exécuté périodiquement par le calculateur de service 12 selon une séquence d'exécution définie par une trame temporelle, répétée de manière permanente, ayant une durée fixée Ttrame, et destinée à gérer le fonctionnement d'un système complexe, notamment de type aérospatial ou spatial. Ici, l'ensemble des tâches du programme est formé par les tâches A, B, C, et D. De manière générale et selon une première contrainte concernant l'exécution du programme, et donc la structure interne de la trame, toutes les tâches doivent être exécutées pendant la durée fixée de la trame temporelle.
Ici, toutes les tâches A, B, C et D. doivent être exécutées pendant la durée fixée de la trame temporelle. De manière générale et selon une deuxième contrainte, parmi les tâches du programme de service, au moins une tâche, désignée par la suite par première tâche de premier type, est constituée par une première boucle d'instructions, prévue pour répéter dans la séquence d'exécution de la trame un nombre prédéterminé de fois un premier motif séquentiel atomique correspondant d'instructions.
La trame temporelle de la séquence d'exécution et de durée fixe Ttrame, consiste en une ou des suites d'intervalles de temps de même durée égale à la durée de la trame temporelle divisée par le nombre de répétitions correspondant au premier motif. Chaque premier motif séquentiel atomique est contraint d'être exécuté sans interruption dans un intervalle de temps différent associé de la trame temporelle. Ici, on suppose que seule la tâche A est une première tâche de premier type régie par la deuxième contrainte. De manière générale et selon une troisième contrainte, parmi les tâches du programme de service au moins une tâche, désignée par la suite par deuxième tâche de deuxième type, est constituée par une deuxième boucle d'instructions, prévue pour répéter un nombre total d'itérations de fois un deuxième motif séquentiel correspondant d'instructions, l'exécution de la deuxième boucle pouvant être morcelée en des emplacements quelconques. Ici, on suppose que les deux tâches B et C sont des deuxièmes tâches de deuxième type régies par la troisième contrainte. De manière générale et selon une quatrième contrainte, le nombre des tâches, les nombres d'instructions des tâches, et le(s) fréquences de répétition du (des) premier(s) motifs sont suffisamment grands pour imposer au moins une interruption lors de l'exécution de la deuxième tâche de deuxième type.
De manière générale, lorsque des tâches restantes ayant un type différent des premier et deuxième types existent, elles consistent chacune en un certain nombre de sous-tâches atomiques, organisées entre elles selon un graphe associé et une fenêtre temporelle associée dans laquelle la tâche doit être exécutée complètement, chaque sous-tâche atomique ayant un temps d'exécution pire cas mesuré, Ici, on suppose que la tâche D est une tâche restante ayant un type différent des premier et deuxième types. Le calculateur 14 de préparation de la séquence d'exécution comprend un processeur de préparation classique 74 dénommé CPU (en anglais Central Processing Unit) de préparation, une mémoire centrale de préparation 76, et une unité de communication externe de préparation 78. L'unité de communication externe de préparation 78 est connectée entre une quatrième interface d'entrée/sortie 80 du processeur de préparation 74 et l'unité de communication externe de service 22 du calculateur de service 12. La mémoire centrale de préparation 76 est partitionnée en plusieurs zones de mémoire distinctes et séparées, comprend une première zone de mémoire 82 et une deuxième zone de mémoire 84 configurées pour sauvegarder respectivement un programme Pprep de préparation d'une séquence d'exécution du programme de service et une séquence de service en tant que résultat final du programme de préparation. Le calculateur de préparation 14 est configuré pour envoyer des commandes et pour recevoir des états de fonctionnement vers et depuis le calculateur de service 12.
Ici, le calculateur de préparation 14 est configuré au travers du programme de préparation pour recenser, parmi l'ensemble des tâches à effectuer A, B, C, et D, les deuxièmes tâches B et C de deuxième type qui se présentent sous la forme de boucles d'instructions, et dont la seule contrainte est le fait que les boucles B et C doivent être exécutées chacune dans la trame temporelle d'exécution du programme, chaque boucle des tâches recensées B et C comportant un motif séquentiel associé d'instructions SB, SC correspondant à une itération et comportant un nombre total associé d'itérations Nit(B), Nit(C), supérieur ou égal à 2. Pour chaque boucle d'une deuxième tâche recensée B, C, le calculateur de préparation 14 est configuré pour faire exécuter par le premier calculateur de service 12 pour chaque deuxième boucle BUCKLEB, BUCKLEC correspondant à la deuxième tâche B, C, une étape de mesures directes de durées d'exécution de portions de début de boucle. L'étape de mesure directe consiste précisément à effectuer un nombre de fois NstatB pour la deuxième tâche B, NstatC pour la deuxième tâche C, une première mesure directe et utile M1(B,k)), M1(C, k) de la durée d'exécution en une seule traite d'une itération du deuxième motif séquentiel SB, SC avec la mémoire cache vide initialement, et effectuer un nombre NstatB, NstatC de fois une deuxième mesure directe M2dir(B,k)), M2dir(C,k)) de la durée d'exécution de deux itérations consécutives du deuxième motif séquentiel SB, SC avec la mémoire cache vide initialement.
Le deuxième calculateur de préparation 14 est configuré pour recevoir les première et deuxième mesures directes M1(B,k), M2dir(B,k), M1(C,k), M2dir(C,k), et k variant respectivement entre 1 et NstatB, et entre 1 et NstatC. Pour chaque boucle BUCKLEB, BUCKLEC d'une tâche recensée, B, C, et pour chaque entier k variant de 1 à NstatB, de 1 à NstatC respectivement, le calculateur de préparation 14 est configuré pour déterminer des deuxièmes mesures utiles et indirectes M2(B,k), M2(C,kl) vérifiant les relations : M 2(B ,k) = M 2dir (B , k) - Ml(B ,k) , et M 2(C ,k) = M 2dir (C ,k) - M 1(C ,k) . Le deuxième calculateur de préparation 14 est configuré pour déterminer pour chaque tâche B, C un premier temps d'exécution pire cas mesuré WCETm1B, WCETm1C comme étant la plus grande des premières mesures utiles M1(B,k), M1(C,k) avec k variant de 1 à NstatB, de 1 à NstatC respectivement, et un deuxième temps d'exécution pire cas mesuré WCETm2B, WCETm2C comme respectivement la plus grande des deuxièmes mesures utiles indirectes M2(B,k), M2(C,k) avec k variant de 1 à NstatB, de 1 à NstatC respectivement.
Le deuxième calculateur de préparation 14 est configuré pour, à partir de la durée de la trame temporelle, des premiers temps d'exécution pire cas mesurés WCETm1B, WCETm1C et des deuxièmes temps d'exécution pire cas mesurés WCETm2B, WCETm2C des deuxièmes tâches recensées B, C, des intervalles temporels réguliers associées aux premières tâches de premier type, du ou des graphes associés et de la ou des fenêtres temporelles associée(s) aux tâches restantes lorsqu'elles existent, et des temps d'exécution pire cas mesurés des sous-tâches atomiques des tâches restantes, déterminer une structure interne de la trame temporelle définissant la séquence d'exécution du programme en découpant les deuxièmes tâches B, C en portions de tâches, et en affectant des tranches de temps aux portions de tâches, aux premières séquences atomiques, et aux sous-tâches atomiques, de sorte que chaque tâche du programme soit exécutée dans la durée de la trame temporelle de la séquence d'exécution sans conflit temporel avec une autre tâche. De manière générale, Ntask2 étant le nombre cardinal de l'ensemble des tâches Task2(i) de deuxième type préalablement recensées, le premier calculateur de service 12 est configuré pour chaque deuxième boucle BUCKLE2(i) associée à un deuxième tâche de deuxième type Task2(i), avec i variant de 1 à Ntask2, effectuer un nombre Nstat(i) de fois une première mesure directe utile Ml (i,k)) de la durée d'exécution en une seule traite d'une itération du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement, et effectuer un nombre Nstat(i) de fois une deuxième mesure directe M2dir(i,k) de la durée d'exécution de deux itérations consécutives du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement. Le deuxième calculateur de préparation 14 est configuré pour chaque deuxième boucle BUCKLE2(i), i variant de 1 à Ntask2, et chaque entier k variant de 1 à Nstat(i) déterminer des deuxième mesures utiles indirectes M2(i,k) comme vérifiant la relation : M 2(i , k) = M 2dir (i,k) -M1(i,k) . Le deuxième calculateur de préparation 14 est configuré pour déterminer un premier temps d'exécution pire cas mesuré WCETm1(i) comme étant la plus grande des premières mesures utiles M1(i,k) avec k variant de 1 à Nstat(i), et un deuxième temps d'exécution pire cas mesuré WCETm2(i) comme étant la plus grande des deuxièmes mesures utiles indirectes M2(i,k) avec k variant de 1 à Nstat(i).
Le deuxième calculateur de préparation 14 est configuré pour, à partir de la durée de la trame temporelle, des premiers temps d'exécution pire cas mesuré WCETm1(i) et deuxièmes temps d'exécution pire cas mesurés WCETm1(i) des tâches recensées Task2(i), des intervalles temporels réguliers associées aux premières tâches, du ou des graphes associés et de la ou des fenêtre temporelles associée(s) aux tâche restantes lorsqu'elles existent et des temps d'exécution pire cas mesurés des sous-tâches atomiques des tâches restantes, déterminer une structure interne de la trame temporelle définissant la séquence d'exécution du programme en découpant les deuxièmes tâches Task2(i) en portions de tâches, et en affectant des tranches de temps aux portions de tâches, aux premières séquences atomiques, et aux sous-tâches atomiques, de sorte que chaque tâche du programme soit exécutée dans la durée de la trame temporelle de la séquence d'exécution sans conflit temporel avec une autre tâche. Suivant la Figure 3, la tâche A en tant que première tâche de premier type est un ensemble 102 d'instructions 104 structurées en une boucle 106 d'instructions de répétition d'un motif séquentiel 108 atomique, désigné par SA, un nombre prédéterminé fA de fois. Cette boucle est régie selon la deuxième contrainte qui impose l'exécution une fois et sans interruption du premier motif séquentiel atomique dans chaque intervalle de temps ITA différent de la trame temporelle associé à la tâche A. Les intervalles de temps ITA de la trame temporelle associés à la tâche A forme une suite d'intervalles de temps de même durée TA égale à la durée de la trame temporelle divisée par le nombre de répétitions correspondant fA du premier motif SA. L'ensemble 132 est stocké dans la première zone de mémoire 34. De manière avantageuse pour l'invention, le nombre de répétitions du motif séquentiel SA de la tâche A est supérieur ou égal à 10.
Suivant la Figure 4, la tâche B en tant qu'une deuxième tâche de deuxième type est un ensemble 112 d'instructions 114 structurées en une boucle 116 de répétition d'un motif séquentiel 118 désigné par SB un nombre total de fois ou d'itérations noté Nit(B). La tâche B est soumise aux première et troisième règles de contrainte. L'exécution de la deuxième boucle 116 doit être accomplie dans la durée de la trame temporelle mais elle peut être morcelée en des emplacements quelconques de la boucle 116. L'ensemble 112 est stocké dans la deuxième zone de mémoire 36. Suivant la Figure 5, la tâche C en tant qu'une autre tâche de deuxième type est un ensemble 122 d'instructions 124 structurées en une boucle 126 de répétition d'un motif séquentiel 128 désigné par SC un nombre total de fois ou d'itérations noté Nit(C).
A l'instar de la tâche B, la tâche C est soumise aux première et troisième règles de contrainte.
L'ensemble 122 est stocké dans la troisième zone de mémoire 38. Suivant la Figure 6, la tâche D en tant qu'une tâche restante ayant un type différent des premier et deuxième types est un ensemble 132 d'instructions 134 enchaînées selon un motif 136 désigné par SD. L'ensemble 132 comporte un certain nombre de sous-tâches atomiques, organisées entre selon un graphe associé et une fenêtre temporelle associée dans laquelle la tâche D doit être exécutée complètement, chaque sous-tâche atomique ayant un temps d'exécution pire cas prédéterminé mesuré. L'ensemble 102 est stocké dans la première zone de mémoire 40. Suivant la Figure 7, une structure 202 de trame temporelle est représentée en termes de première et de deuxième contraintes, un axe d'abscisse 204 temporel encodant l'évolution temporelle de la trame. La fixation d'une durée de la trame temporelle Ttrame correspond à une criticité d'exécution de temps réel selon laquelle les durées d'exécution de toutes les applications A, B, C, D doivent être inférieures à la durée de la trame. Il convient de noter que la durée d'exécution d'une application doit être interprétée comme étant la durée séparant le début de lancement d'une l'application jusqu'à l'achèvement de la même application. Ainsi doivent être prises en compte des durées intermédiaires au cours desquelles l'exécution de l'application a été interrompue à la faveur d'autres applications. Ainsi la durée d'exécution d'une application dans un environnement multitâche doit elle être distinguée de la durée d'exécution de l'application sans interruption. La trame temporelle de la séquence d'exécution et de durée fixe Ttrame comporte ici vis-à-vis de la contrainte d'exécution de la tâche A une suite S(A) d'intervalles de temps de même durée TA égale à la durée de la trame temporelle divisée par le nombre de répétitions fA correspondant au premier motif SA.
Chaque premier motif séquentiel atomique SA est contraint d'être exécuté sans interruption dans un intervalle de temps différent associé de la trame temporelle. Il est à remarquer que l'exécution du premier motif d'une première tâche de premier type, n'est pas en général périodique. Ce cas général est illustré par un exemple possible de l'exécution de la tâche A dans la trame.
Suivant la Figure 8, un mode de réalisation préféré du procédé de préparation d'une séquence d'exécution d'un programme informatique tel que décrit aux Figures 1, 3, 4, 5, 6 comprend un ensemble d'étapes 304, 306, 308, 310, 312, 314. Le programme informatique de service est destiné ici à être exécuté de manière répétée et permanente par le calculateur de service 12 selon une même séquence d'exécution définie par une trame temporelle ayant une durée d'exécution ou une période d'exécution, noté Ttrame et fixée au préalable par des contraintes physiques prédéterminées du système physique. Le programme informatique de service est destiné à gérer le fonctionnement d'un système complexe, notamment de type spatial, et comprend un ensemble d'instructions réparties en tâches distinctes et séparées. Au moins une première tâche d'un premier type Task1(j) est constituée par une première boucle d'instructions BUCKLE1(j) prévue pour répéter dans la séquence d'exécution un nombre ftask1(j) de fois un premier motif séquentiel atomique SB1(j) correspondant d'instructions.
La trame temporelle de la séquence d'exécution de durée fixe Ttrame consiste en une ou des suites S(j) d'intervalles de temps T(j,w) de même durée égale à la durée de la trame temporelle divisée par le nombre de répétitions ftask1(j) du premier motif SB1(j), et chaque premier motif séquentiel atomique SB1(j) est contraint d'être exécuté sans interruption dans un intervalle de temps différent associé de la trame temporelle. w désigne l'indice de parcours des intervalles de temps T(j,w) compris entre 1 et ftask1(j) pour la première tâche Task1(j) de premier type identifiée par le paramètre j. En prenant l'exemple du programme informatique décrit à la Figure 1, le programme informatique comprend ici une seule première tâche de premier type, la tâche A, décrite à la Figure 3. Dans cet exemple, Ntaskl est égal à 1 et Task1(1) désigne la tâche A. Au moins une deuxième tâche de deuxième type Task2(i) est constituée par une boucle d'instructions BUCKLE2(j) dont la seule contrainte est qu'elle soit exécutée ou qu'elles soient exécutées dans la même trame temporelle du programme. En prenant l'exemple du programme informatique décrit à la Figure 1, il s'agit ici des tâches B et C.
Par la suite ces tâches seront représentées par le vecteur Task2(i), avec i variant de 1 à 2, Task2(1) désignant la tâche B et Task2(2) désignant la tâche C. Si Ntask2 désigne ici le nombre total des deuxièmes tâches ou tâches de deuxième type, les deuxièmes tâches étant ici les tâches B et C, ce nombre Ntask2 est ici égal à 2. L'étape 304 est une étape de fourniture des tâches indépendantes formant le programme informatique de service, c'est-à-dire ici les tâches A, B, C, D. L'étape suivante 306 est une étape de fourniture des contraintes temporelles ou fréquentielles régissant le programme et les tâches du programme et. Il s'agit des intervalles temporels associés aux premières tâches de premier type, des temps d'exécution pire cas mesurés au préalable des premières séquences SB1(j), du ou des graphes associés et de la ou des fenêtres temporelles associée(s) aux tâches restantes lorsqu'elles existent et des temps d'exécution pire cas mesurés des sous-tâches atomiques des tâches restantes. Dans l'exemple du programme de la Figure 1, il s'agit des intervalles temporels de durée TA de la première tâche A, du temps d'exécution pire cas de la première séquence atomique SA, du graphe associé et de la fenêtre temporelle associée à la tâche restante D et des temps d'exécution pire cas mesurés au préalable des sous-tâches atomiques de la tâche restante D. L'étape suivante 308 est une étape de recensement de la ou des deuxièmes tâches Task2(i) qui se présentent sous la forme de deuxièmes boucles d'instructions BUCKLE2(i) et dont la seule contrainte est qu'elle soit exécutée ou qu'elles soient exécutées dans la durée Ttrame de la trame temporelle du programme. Chaque boucle BUCKLE2(i) d'une deuxième tâche recensée Task2(i) comportant un deuxième motif séquentiel SB2(i) d'instructions correspondant à une itération et comportant un nombre total d'itérations, désigné par Nit(i) et supérieur ou égal à 2.
L'étape 310 est la succession d'une étape d'initialisation 320 d'un compteur de l'indice i de parcours et d'identification des deuxièmes tâches recensées Task2(i) et d'une première boucle 322 d'étapes paramétrée par l'indice i. La première boucle 322 comprend des étapes 324, 326, 328 et une deuxième boucle 330 d'étapes imbriquées dans la première boucle 322.
Dans l'étape d'initialisation 324 pour l'indice courant i, toutes les composantes d'un premier vecteur d'une première mesure utile M1(i,k) et d'un deuxième vecteur d'une deuxième mesure directe M2dir(i, k) sont mises à zéro pour k indice de parcours des mesures de la statistique des mesures relatives à la deuxième tâche Task2(i) variant entre 1 et Nstat(i), Nstat(i) désignant la taille de la statistique.
Puis, dans la même étape d'initialisation 324, l'indice entier k de parcours de la statistique des mesures relatives à la deuxième tâche Task2(i) est mis à 1. Ensuite, la deuxième boucle d'étapes 330 qui comprend des étapes 338, 340, 342, 344 est exécutée. Dans la première étape 338, une première mesure directe utile M1(i,k)) de la durée d'exécution en une seule traite d'une itération du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement est effectuée, et une deuxième mesure directe M2dir(i,k) de la durée d'exécution de deux itérations consécutives du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement est effectuée. Dans l'étape suivante 340 de la deuxième boucle 340, la première mesure utile M1(i,k) et la deuxième mesure directe M2dir(i, k) correspondant à l'indice de boucle i et au rang de statistique k, sont lues et transférées depuis le calculateur de service 12 vers le calculateur de préparation 14 dans le tableau de la mémoire centrale de travail 76 pour y être sauvegardées. Dans l'étape 342, l'indice de parcours k de la statistique de mesures est comparé à la taille de la statistique Nstat(i) prévue pour la deuxième tâche de deuxième type recensée Task2(i). Lorsque l'indice courant k de parcours de la statistique de mesures est égal à la taille Nstat(i )de la statistique concernant la deuxième tâche courante Task2(i), l'étape suivante 326 est exécutée. Lorsque l'indice courant k de parcours de la statistique de mesures est strictement inférieur à la taille Nstat(i) de la statistique concernant la deuxième tâche courante Task2(i), l'indice k est incrémenté d'une unité dans l'étape 344, et les étapes 338, 340, 342 sont exécutées. Dans l'étape 326, l'indice courant i de parcours des deuxièmes boucles BUCKLE2(i) ou des deuxièmes tâches recensées Task2(i) est comparé au nombre total Ntask2 de deuxièmes tâches recensées. Lorsque l'indice courant i du rang de boucle recensée BUCKLE2(i) ou de deuxième tâche recensée Task2(i) est strictement inférieur au nombre total Ntask2 de deuxièmes tâches recensées, l'indice i est incrémenté d'une unité dans l'étape 328 de la première boucle 322, puis, l'étape 324, les étapes 338, 340, 342, 344 de la deuxième boucle 326, et l'étape 326 sont exécutées. Dans l'étape suivante 312, le deuxième calculateur de préparation 14 détermine pour chaque deuxième boucle BUCKLE2(i), i variant de 1 à Ntask2, et chaque entier k variant de 1 à Nstat(i) des deuxième mesures utiles indirectes M2(i,k) comme vérifiant la relation : M 2(i , k) = M 2dir (i,k) -M1(i,k) . Dans la même étape 312, le deuxième calculateur de préparation 14 détermine un premier temps d'exécution pire cas mesuré WCETm1(i) comme étant la plus grande des premières mesures utiles M1(i,k) avec k variant de 1 à Nstat(i), et un deuxième temps d'exécution pire cas mesuré WCETm2(i) comme étant la plus grande des deuxièmes mesures utiles indirectes M2(i,k) avec k variant de 1 à Nstat(i). Dans l'étape 314, le deuxième calculateur de préparation 14 est configuré pour, à partir de la durée de la trame temporelle, des premiers temps d'exécution pire cas mesurés WCETm1(i) et deuxièmes temps d'exécution pire cas mesurés WCETm2(i) des tâches recensées Task2(i), des temps d'exécution pire cas des premières séquences SB1(j), des intervalles temporels réguliers associées aux premières tâches, du ou des graphes associés et de la ou des fenêtre temporelles associée(s) aux tâche restantes lorsqu'elles existent, et des temps d'exécution pire cas mesurés des sous-tâches atomiques des tâches restantes, déterminer une structure interne de la trame temporelle définissant la séquence d'exécution du programme en découpant les deuxièmes tâches Task2(i) en portions de tâches, et en affectant des tranches de temps aux portions de tâches, aux premières séquences atomiques, et aux sous-tâches atomiques, de sorte que chaque tâche du programme soit exécutée dans la durée de la trame temporelle de la séquence d'exécution sans conflit temporel avec une autre tâche. Il est à remarquer que de manière connue, la mise en oeuvre de l'optimisation décrite dans l'étape 314 est fondée sur l'utilisation d'un un ou plusieurs algorithmes classiques connus, développés dans le cadre des techniques d'ordonnancement et de la théorie des graphes, en particulier les algorithmes d'ordonnancement de type EDF (dénomation anglaise pour Eearliest Deadline First). En pratique, i étant fixé, lorsqu'une portion d'une deuxième tâche Task2(i), exécutée sans interruption par une autre tâche, a une taille inférieure ou égale à une itération, le temps d'exécution pire cas WCET(i) pris en compte dans l'algorithme d'ordonnancement est égal au premier temps d'exécution pire cas mesuré WCETm1(i). Lorsqu'une portion d'une deuxième tâche Task2(i), exécutée sans interruption par une autre tâche, a une taille inférieure ou égale à un entier K d'itérations et strictement supérieur à K-1, K étant supérieur ou égal à 2, le temps d'exécution pire cas WCET(i) pris en compte dans l'algorithme d'ordonnancement de l'étape 314 est égal à la somme du premier temps d'exécution pire cas mesuré WCETm1(i) et de K moins une fois le deuxième temps d'exécution pire cas mesuré WCETm2(i), c'est-à-dire WCETm1(i) + (K-1) WCETm2(i). Ainsi, la connaissance des premiers temps d'exécution pire cas mesurés WCETm1(i) et deuxièmes temps d'exécution pire cas mesurés WCETm2(i) des tâches recensées Task2(i) permet d'affecter à une portion quelconque d'une deuxième tâche de deuxième tâche un temps d'exécution pire cas maîtrisé par rapport à l'effet cache et moins surestimé par rapport au cas d'une prise en compte par le logiciel d'ordonnancement d'un seul temps d'exécution pire cas mesurés WCETm1(i).
Ainsi, le temps d'exécution pire cas (Worst Case Execution Time) du logiciel informatique, ici constitué des tâches A, B, C, D, satisfait les exigences de criticité de temps réel d'exécution du logiciel en prenant en compte de manière fine, fiable et maîtrisée les pertes de temps d'exécution du programme liés à l'effet cache du couple formé par le processeur et la mémoire cache.
Suivant la Figure 9, le procédé de préparation 402 est un deuxième mode de réalisation dérivé du premier mode de réalisation 302 décrit à la Figure 8.
Le procédé de préparation 402 comprend un ensemble d'étapes 304, 306, 308 identiques aux étapes du procédé décrit à la Figure 8 et des étapes 410, 412, 414 remplaçant les étapes 310, 312, et 314 de la Figure 8. L'étape 410 est la succession de étape d'initialisation 320 du compteur de l'indice i de parcours et d'identification des deuxièmes tâches recensées Task2(i) décrite dans la Figure 8 et d'une première boucle 422 d'étapes paramétrée par l'indice i. La première boucle 422 est fondée sur la première boucle 322 de la Figure 8 dans laquelle les étapes 326, 328 de la Figure 8 sont conservées, l'étape 324 est remplacée par l'étape 424, et la deuxième boucle 330 est remplacée par la deuxième boucle 430. L'étape d'initialisation 424 diffère de l'étape d'initialisation 324 en ce qu'elle comprend une étape supplémentaire consistant en ce que pour l'indice courant i, toutes les composantes d'un troisième vecteur d'une troisième mesure directe M3dir(i, k) sont mises à zéro pour k indice de parcours des mesures de la statistique des mesures relatives à la deuxième tâche Task2(i) variant entre 1 et Nstat(i), Nstat(i) désignant la taille de la statistique. La deuxième boucle d'étapes 430 est fondée sur la deuxième boucle 330 de la Figure 8 dans laquelle les étapes de 342, 344 sont conservées et les étapes 333, 340 sont remplacées respectivement par des étapes 438, 440.
La première étape 438 de la deuxième boucle 430 diffère de la première étape 338 de la Figure 8 en ce qu'en plus d'une première mesure directe utile M1(i,k)), d'une deuxième mesure directe M2dir(i,k), une troisième mesure directe M3dir(i,k) de la durée d'exécution de trois itérations consécutives du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement est effectuée.
L'étape suivante 440 de la deuxième boucle 430 diffère de l'étape 340 de la Figure 8 en qu'en plus de la lecture et du transfert de la première mesure utile M1(i,k) et de la deuxième mesure directe M2dir(i, k), la troisième mesure directe M3dir(i,k) d'indice de boucle i et de rang de statistique k est lue et transférée depuis le calculateur de service 12 vers le calculateur de préparation 14 dans le tableau de la mémoire centrale de travail 76 pour y être sauvegardée. L'étape 412 est fondée sur l'étape 312 et en diffère en ce que le deuxième calculateur de préparation 14 détermine en outre pour chaque deuxième boucle BUCKLE2(i), i variant de 1 à Ntask2, et chaque entier k variant de 1 à Nstat(i) des troisième mesures utiles indirectes M3(i,k) comme vérifiant la relation : M 3(i , k) = M 3dir (i ,k) - M 2dir(i,k) .
L'étape 412 diffère également de l'étape 312 en ce que le deuxième calculateur de préparation 14 détermine en plus d'un premier temps d'exécution pire cas mesuré WCETm1(i) et un deuxième temps d'exécution pire cas mesuré WCETm2(i), un troisième temps d'exécution pire cas mesuré WCETm3(i) comme étant la plus grande des troisièmes mesures utiles indirectes M3(i,k) avec k variant de 1 à Nstat(i). Dans l'étape 414, le deuxième calculateur de préparation 14 détermine, à partir de la durée de la trame temporelle, des premiers temps d'exécution pire cas mesurés WCETm1(i), des deuxièmes temps d'exécution pire cas mesurés WCETm2(i) et des troisièmes temps d'exécution pire cas mesurés WCETm3(i) des tâches recensées Task2(i), des intervalles temporels réguliers associées aux premières tâches, du ou des graphes associés et de la ou des fenêtre temporelles associée(s) aux tâche restantes lorsqu'elles existent et des temps d'exécution pire cas mesurés des sous-tâches atomiques des tâches restantes, une structure interne de la trame temporelle définissant la séquence d'exécution du programme en découpant les deuxièmes tâches Task2(i) en portions de tâches, et en affectant des tranches de temps aux portions de tâches, aux premières séquences atomiques, et aux sous-tâches atomiques, de sorte que chaque tâche du programme soit exécutée dans la durée de la trame temporelle de la séquence d'exécution sans conflit temporel avec une autre tâche. En pratique, i étant fixé, lorsqu'une portion d'une deuxième tâche Task2(i), exécutée sans interruption par une autre tâche, a une taille inférieure ou égale à une itération, le temps d'exécution pire cas WCET(i) pris en compte dans l'algorithme d'ordonnancement est égal au premier temps d'exécution pire cas mesuré WCETm1(i). Lorsqu'une portion d'une deuxième tâche Task2(i), exécutée sans interruption par une autre tâche, a une taille inférieure ou égale à un entier 2 d'itérations et strictement supérieur à 1,le temps d'exécution pire cas WCET(i) pris en compte dans l'algorithme d'ordonnancement de l'étape 314 est égal à la somme du premier temps d'exécution pire cas mesuré WCETm1(i) et du deuxième temps d'exécution pire cas mesuré WCETm2(i), c'est-à-dire WCETm1(i) + WCETm2(i). Lorsqu'une portion d'une deuxième tâche Task2(i), exécutée sans interruption par une autre tâche, a une taille inférieure ou égale à un entier K d'itérations et strictement supérieur à K-1, K étant supérieur ou égal à 3, le temps d'exécution pire cas WCET(i) pris en compte dans l'algorithme d'ordonnancement de l'étape 314 est égal à la somme des premier et deuxième temps d'exécution pire cas mesuré WCETm1(i), WCETm2(i) et de K moins une fois le troisième temps d'exécution pire cas mesuré WCETm3(i), c'est-à-dire WCETm1(i) + WCETm2(i) + (K-2) WCETm3(i).
Ainsi, la connaissance des premiers temps d'exécution pire cas mesurés WCETm1(i), des deuxièmes temps d'exécution pire cas mesurés WCETm2(i) et des troisièmes temps d'exécution pire cas mesurés WCETm3(i) des tâches recensées Task2(i) permet d'affecter à une portion quelconque d'une deuxième tâche de deuxième type un temps d'exécution pire cas maîtrisé par rapport à l'effet cache et d'améliorer les performances d'estimation du logiciel d'ordonnancement par rapport au premier mode de réalisation de la Figure 8. Cependant la mise en oeuvre du deuxième mode de réalisation est plus complexe que celle du premier mode de réalisation.
En variante des modes de réalisation des Figures 8 et 9, pour chaque deuxième boucle BUCKLE2(i) d'une tâche recensée Task2(i), le premier temps d'exécution pire cas mesuré WCETm1(i), le deuxième temps d'exécution pire cas mesuré WCETm2(i), et le troisième temps d'exécution pire cas mesuré WCETm3(i) sont respectivement remplacés par une première durée maximale T1(i) d'exécution, une deuxième durée maximale T2(i) d'exécution et troisième durée maximale T3(i) d'exécution. Les première, deuxième, troisième durées maximales d'exécution T1(i), T2(i), T3(i) sont définies respectivement par les relations suivantes : T1(i) = WCETm1(i) + marg 1 (i), T2(i) = WCETm2(i) + marg2(i), T3(i) = WCETm3(i) + marg3(i), dans lesquels marg1(i), marg2(i), marg3(i) désignent des marges de sécurité de bornage respectif des premier, deuxième, troisième temps d'exécution pire cas mesurés WCETm1(i), WCETm2(i), WCETm3(i). En variante, le procédé décrit aux Figures 8 et 9 comprend une étape supplémentaire consistant à, parmi les au moins une structure internes de la trame temporelle déterminées, sélectionner la structure interne de la trame temporelle pour laquelle la durée séparant le début de la trame et l'instant d'achèvement de toutes les tâches est le plus petit. En variante, les première, deuxième, troisième mesures directes M1(i,k), M2dir(i,k)), M3dir(i,k) sont mises en oeuvre à partir soit de plusieurs séquences d'exécution différentes correspondant à un nombre différent d'itérations successives de la deuxième séquence SB2(i) sans interruption par une autre tâche, soit à partir d'une séquence unique de deux ou trois itérations consécutives de la deuxième séquence SB2(i) sans interruption par une autre tâche, ave vidage de la mémoire cache initialement.
En variante, le nombre NW de temps d'exécution pire cas mesurés WCETmI(i) correspondant chacun à un rang I d'itérations croissant unitairement est strictement supérieur à 3, I étant un entier variant de 1 à NW. En variante, le lien de communication entre le premier calculateur de service 12 et le deuxième calculateur de préparation 14 est supprimé, le transfert des mesures est effectué au travers d'une mémoire intermédiaire ne faisant partie ni du premier calculateur 12, ni du deuxième calculateur 14. Le pilotage du premier calculateur de service 12 est assuré par un opérateur. Les données de mesure sont fournies au deuxième calculateur 14 au travers d'une intervention de l'opérateur. Une fois la séquence d'exécution de la trame déterminée par le deuxième calculateur de préparation 14, cette séquence est chargée dans le premier calculateur 12 au travers d'une intervention supplémentaire de l'opérateur. Un programme informatique de préparation, destiné à être chargée et/ou exécuté par le calculateur de préparation 14 et/ou le calculateur de service, comprend un ensemble d'instructions de mise en oeuvre des étapes d'un des procédés décrits aux Figures 8 et 9. Suivant la Figure 10, un exemple de mesures Mes(i,1) de durées d'exécution en une seule fois d'un nombre entier I d'itérations consécutives d'une tâche de deuxième type Task(i) montre six mesures M(i,1) réellement effectuées de temps d'exécution d'un nombre entier I d'itérations consécutives de la deuxième boucle BUCLE2(i) sans interruption par une autre tâche, avec vidage de la mémoire cache initialement pour I égal à 1, 2, 3, 10, 50 et 60. Les durées d'exécution sont égales 5, 7, 7.5, 10, 24, 25 millisecondes et correspondent respectivement au nombre d'itérationsl, 2, 3, 10, 50 et 60. Les points des mesures réelles Mes(i,1) sont représentés dans un repère cartésien 502 ayant pour axe des abscisses 504 le nombre d'itérations sans interruption et vidage de la mémoire cache et pour axe des ordonnées 506 la durée d'exécution des instructions Les points de mesure Mes(i,1), désignés par les références 512, 514, 516, 517, 518, 520, ont pour coordonnées respectives (1, 5), (2, 7), (3, 7.5), (10, 10), (50, 24), (60,25). Une courbe d'interpolation 522, d'allure linéaire sur une première section, logarithmique sur une deuxième section, interpole les six points M(i,1) et permet de déterminer des points intermédiaires N(i,1) de mesures interpolés.
A titre d'exemple, deux points de mesures interpolés sont représentés, désignés par les références 524 et 526, et ayant pour coordonnées respectives (20, 13) et (40, 20).
Suivant cette Figure 10, et en supposant que la variation collective des mesures suit une loi d'évolution similaire, une zone linéaire apparaît sur la courbe 522 pour I compris entre 3 et 50. La pente le long de la courbe 552 décroît lorsque I augmente. Une variation de pente nette a lieu entre le point 512 et 514 et une variation de pente est perceptible mais à un degré beaucoup plus faible entre les points 514 et 516. Suivant la Figure 11, un exemple de système physique complexe, ici une plateforme 702 de satellite, comporte le calculateur de service 12 décrit à la Figure 1, et un ensemble 712 de un ou plusieurs sous-systèmes périphériques 704, 706, 708 munis de circuits d'interface correspondants. Chaque sous-système périphérique 704, 706, 708 est raccordé au processeur de service 16 au travers de l'unité de communication externe de service 22 par un tronçon respectif 714, 716, 718 de bus commun. La calculateur de service 12, muni de son processeur de service 16 et de la mémoire cache 18 pour accélérer l'exécution du programme informatique de service, comprend un moyen de mise en oeuvre de la séquence d'exécution du programme informatique de service obtenu par l'un des procédés décrit aux Figures 8 et 9. Ce moyen est par exemple un séquenceur programmé selon la séquence temporelle obtenue par le calculateur de préparation. La séquence d'activation du séquenceur est la séquence préparée et obtenue par le calculateur de préparation 12, chargée dans la cinquième zone de mémoire 42 et désignée sur la Figure 12 par SEQ. Ici, le programme informatique comprend une seule première tâche de premier type qui concerne par exemple une tâche de gestion d'entrée et de sorties des sous-systèmes périphériques.
En variante, le système physique complexe est compris dans l'ensemble formé par les satellites, les plateformes, les charges utiles, des engins aéroportés. En variante, le programme informatique comprend une seule première tâche. En variante, au moins une première tâche du programme informatique concerne une tâche de gestion d'entrée et de sorties de plusieurs périphériques.30

Claims (11)

  1. REVENDICATIONS1.- Procédé de préparation d'une séquence d'exécution d'un programme informatique de service, destiné à gérer le fonctionnement d'un système complexe, notamment de type spatial, et destiné à être exécuté par un processeur de service (16) muni d'une mémoire cache (18) pour accélérer l'exécution du programme, le programme informatique consistant en un ensemble d'instructions réparties en au moins deux tâches distinctes et séparées, sans lien entre elles, au moins une première tâche Task1(j) d'un premier type étant constituée par une première boucle BUCKLE(j) d'instructions, prévue pour répéter dans la séquence d'exécution un nombre ftask1(j) de fois un premier motif séquentiel atomique SB1(j) correspondant d'instructions, et au moins une deuxième tâche Task2(i) d'un deuxième type étant constituée par une deuxième boucle d'instructions BUCKLE2(i), prévue pour répéter un nombre total d'itérations de fois Nit(i) un deuxième motif séquentiel SB2(i) correspondant d'instructions, l'exécution de la deuxième boucle BUCKLE2(i) pouvant être morcelée en des emplacements quelconques, la séquence d'exécution du programme étant définie par une trame temporelle ayant une durée fixée Ttrame, consistant en une ou des suites S(j) d'intervalles de temps T(j,w) de même durée égale à la durée de la trame temporelle divisée par le nombre de répétitions ftask1(j) du premier motif, et comprenant une suite de tranches de temps, chaque premier motif séquentiel atomique étant contraint d'être exécuté sans interruption dans un intervalle de temps différent associé de la trame temporelle, le nombre des tâches, les nombres d'instructions des tâches, et le(s) fréquences de répétition du (des) premier(s) motifs étant suffisamment grands pour imposer au moins une interruption lors de l'exécution de la deuxième tâche de deuxième type, des tâches restantes ayant un type différent des premier et deuxième types lorsqu'elles existent consistant chacune en un certain nombre de sous-tâches atomiques organisées entre selon un graphe associé et une fenêtre temporelle associée dans laquelle la tâche doit être exécutée complètement, chaque sous-tâche atomique ayant un temps d'exécution pire cas mesuré, caractérisé en ce que le procédé comprend les étapes consistant à : parmi l'ensemble des tâches du programme à exécuter, recenser (304) l'ensemble des deuxièmes tâches Task2(i) de deuxième type, Ntask2 étant le nombre total de deuxièmes tâches Task2(i) de deuxième type et i étant un indice d'identification de la deuxième tâche variant entre 1 et Ntask2(i) pour chaque boucle BUCKLE2(i) d'une tâche recensée Task2(i),effectuer (330, 430) un nombre Nstat(i) de fois sur le processeur de service (16) une première mesure utile M1(i,k) de la durée d'exécution du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement et une deuxième mesure utile M2(i,k) de la durée d'exécution du deuxième motif séquentiel SB2(i) avec un cache favorable correspondant à l'exécution d'une itération succédant à l'exécution d'une itération non interrompue avec la mémoire cache vide initialement, k étant un indice courant de mesure variant entre 1 et Nstat(i), puis déterminer (312, 412) un premier temps d'exécution pire cas mesuré WCETm1(i) comme étant la plus grande des premières mesures utiles M1(i,k) avec k variant de 1 à Nstat(i), et un deuxième temps d'exécution pire cas mesuré WCETm2(i) comme étant la plus grande des deuxièmes mesures utiles M2(i,k) avec k variant de 1 à Nstat(i), à partir de la durée de la trame temporelle, des premiers temps d'exécution pire cas mesuré WCETm1(i) et deuxièmes temps d'exécution pire cas mesurés WCETm1(i) des tâches recensées Task(i), des intervalles temporels réguliers associées aux premières tâches, des temps d'exécution pire cas des premières séquences SB1(j), du ou des graphes associés et de la ou des fenêtre temporelles associée(s) aux tâche restantes lorsqu'elles existent et des temps d'exécution pire cas mesurés des sous-tâches atomiques des tâches restantes, déterminer (314, 414) une structure interne de la trame temporelle définissant la séquence d'exécution du programme en découpant les deuxièmes tâches Task2(i) en portions de tâches, et en affectant des tranches de temps aux portions de tâches, aux premières séquences atomiques, et aux sous-tâches atomiques, de sorte que chaque tâche du programme soit exécutée dans la durée de la trame temporelle de la séquence d'exécution sans conflit temporel avec une autre tâche.
  2. 2. Procédé de préparation d'une séquence d'exécution d'un programme informatique selon la revendication 1 comprenant en outre une étape consistant à pour chaque deuxième boucle BUCKLE2(i) d'une tâche recensée Task2(i), déterminer (414) une première durée maximale T1(i) d'exécution de la tâche Task2(i) égale à la somme du premier temps d'exécution pire cas mesuré WCETm1(i) et d'une première marge margl(i), et une deuxième durée maximale T2(i) d'exécution de la tâche Task2(i) égale à la somme du deuxième temps d'exécution pire cas mesuré WCETm2(i) et d'une première marge marg2(i) ; puis, à partir de la durée de la trame temporelle, des premières durées maximales T1(i) et des deuxièmes durées maximales T2(i) des tâches recensées Task2(i), des intervalles temporels réguliers associées aux premières tâches, des temps d'exécution pire cas des premières séquences SB1(j), du ou des graphes associés et de la fenêtre ou des fenêtres temporelles associée(s) aux tâches restantes lorsqu'elles existent, et des tempsd'exécution pire cas mesurés des sous-tâches atomiques des tâches restantes, déterminer une structure interne de la trame temporelle définissant la séquence d'exécution du programme en découpant les deuxièmes tâches recensées en portions de tâches, et en affectant des tranches de temps aux portions de tâches, aux premières séquences atomiques et aux sous-tâches atomiques, de sorte que chaque tâche du programme soit exécutée dans la durée de la trame temporelle de la séquence d'exécution sans conflit temporel avec une autre tâche.
  3. 3. Procédé de préparation d'une séquence d'exécution d'un programme informatique selon l'une quelconque des revendications 1 à 2 dans lequel pour chaque deuxième boucle BUCKLE2(i), la première mesure utile M1(i,k) est une première mesure directe de la durée d'exécution d'une première itération initiale du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement, la deuxième mesure utile M2(i,k) est une mesure indirecte obtenue à partir d'une deuxième mesure directe M2dir(i,k) de la durée d'exécution de deux itérations consécutives du deuxième motif SB2(i) avec la mémoire cache vide initialement, la deuxième mesure utile M2(i,k) vérifiant la relation : M 2(i , k) = M 2dir (i,k) -M1(i,k)
  4. 4. Procédé de préparation d'une séquence d'exécution d'un programme informatique selon la revendication 3, dans lequel Les première et deuxième mesures directes M1(i,k), M2dir(i,k)) sont mises en oeuvre à partir soit de deux séquences d'exécution différentes d'une itérations et de itérations successives de la deuxième séquence SB2(i) sans interruption par une autre tâche, soit à partir d'une séquence unique de deux itérations consécutives de la deuxième séquence SB2(i) sans interruption par une autre tâche,.
  5. 5. Procédé de préparation d'une séquence d'exécution d'un programme informatique selon l'une quelconque des revendications 1 à 4, dans lequel l'étape de mesure (430) comprend en outre une étape consistant à, pour chaque boucle BUCKLE2(i) d'une deuxième tâche recensée Task2(i), effectuer un nombre Nstat(i) de fois sur le processeur de service (16) une troisième mesure utile M3(i,k) de la durée d'exécution du deuxième motif séquentiel SB2(i) avec un cache favorable correspondant à l'exécution d'une itération succédant à l'exécution de deux itérations non interrompues par une autre tâche avec la mémoire cache vide initialement, k étant un indice courant de mesure variant entre 1 et Nstat(i), puisune étape consistant à déterminer un troisième temps d'exécution pire cas mesuré WCETm3(i) comme étant la plus grande des troisièmes mesures M3(i,k) avec k variant de 1 à Nstat(i), et dans lequel à partir de la durée de la trame temporelle, des premiers temps d'exécution pire cas mesuré WCETm1(i), des deuxièmes temps d'exécution pire cas mesurés WCETm2(i), et des troisièmes temps d'exécution pire cas mesurés WCETm3(i) des tâches recensées Task(i), des intervalles temporels réguliers associées aux premières tâches, des temps d'exécution pire cas des premières séquences SB1(j), du ou des graphes associés et de la ou des fenêtre temporelles associée(s) aux tâche restantes lorsqu'elles existent et des temps d'exécution pire cas mesurés des sous-tâches atomiques des tâches restantes, une structure interne de la trame temporelle définissant la séquence d'exécution du programme est déterminé en découpant les deuxièmes tâches Task2(i) en portions de tâches, et en affectant des tranches de temps aux portions de tâches, aux premières séquences atomiques, et aux sous-tâches atomiques, de sorte que chaque tâche du programme soit exécutée dans la durée de la trame temporelle de la séquence d'exécution sans conflit temporel avec une autre tâche.
  6. 6. Procédé de préparation d'une séquence d'exécution d'un programme informatique selon l'une quelconque des revendications 1 à 2 comprenant en outre une étape consistant à parmi les au moins une structure interne de la trame temporelle déterminées, sélectionner la structure interne de la trame temporelle pour laquelle la durée séparant le début de la trame et l'instant d'achèvement de toutes les tâches est la plus petite.
  7. 7. Procédé de préparation d'une séquence d'exécution d'un programme informatique selon l'une quelconque des revendications 1 à 6, dans lequel le programme informatique comprend une unique tâche de premier type et/ou le nombre de répétitions d'un premier motif séquentiel dans la trame est supérieur ou égal à 10.
  8. 8. Système de préparation d'une séquence d'exécution d'un programme informatique de service, destiné à gérer le fonctionnement d'un système complexe notamment de type spatial, comprenant un premier calculateur de service (12) ayant un processeur de service (16) et une mémoire cache (18) pour accélérer l'exécution du programme informatique de service, et un deuxième calculateur de préparation (14) d'une séquence d'exécution du programme, le programme informatique de service consistant en un ensemble d'instructions réparties en au moins deux tâches distinctes et séparées, sans lien entre elles, etau moins une première tâche Task(j) d'un premier type étant constituée par une première boucle d'instructions BUCKLE1(j), prévue pour répéter dans la séquence d'exécution un nombre entier ftask(j) de fois un premier motif séquentiel atomique correspondant SB1(j) d'instructions, et au moins une deuxième tâche Task2(i) d'un deuxième type étant constituée par une deuxième boucle d'instructions BUCKLE2(i), prévue pour répéter un nombre total d'itérations de fois Nit(i) un deuxième motif séquentiel SB2(i) correspondant d'instructions, l'exécution de la deuxième boucle BUCKLE2(i) pouvant être morcelée en des emplacements quelconques, la séquence d'exécution du programme étant définie par une trame temporelle ayant une durée fixée Ttrame, consistant en une ou des suites S(j) d'intervalles de temps T(j,w) de même durée égale à la durée de la trame temporelle divisée par le nombre de répétitions ftask1(j) correspondant, et comprenant une suite de tranche de temps, chaque premier motif séquentiel atomique SB1(j) associé à une première tâche task1(j) étant contraint d'être exécuté sans interruption dans un intervalle de temps T(j,w) différent associé de la trame temporelle, le nombre de tâches, les nombres d'instructions des tâches et le(s) fréquence(s) de répétition du (des) premier(s) motif(s) SB1(j) étant suffisamment grands pour imposer au mois une interruption lors de l'exécution d'une deuxième tâche de deuxième type., des tâches restantes ayant un type différent des premier et deuxième types lorsqu'elles existent, consistant chacune en un certain nombre de sous-tâches atomiques organisées selon un graphe associé et une fenêtre temporelle associée dans laquelle la tâche doit être exécutée complètement, chaque sous-tâche atomique ayant un temps d'exécution pire cas mesuré, caractérisé en ce que le premier calculateur de service (12) est configuré pour chaque deuxième boucle BUCKLE2(i) d'une tâche de deuxième type recensée Task2(i), i étant un entier variant de 1 à Ntask2, effectuer un nombre Nstat(i) de fois une première mesure utile Ml(i,k)) de la durée d'exécution en une seule traite du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement, et effectuer un nombre Nstat(i) de fois une deuxième mesure directe M2dir(i,k)) de la durée d'exécution de deux itérations consécutives du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement, et le deuxième calculateur de préparation (14) est configurépour chaque deuxième boucle BUCKLE2(i), i variant de 1 à Ntask2, et chaque entier I variant de 1 à Nstat(i) déterminer des deuxième mesures utiles indirectes M2(i,k) comme vérifiant les relations : M 2(i, k) = M 2dir (i ,k) -M1(i,k) et, le deuxième calculateur de préparation (14) est configuré pour déterminer (412) un premier temps d'exécution pire cas mesuré WCETm1(i) comme étant la plus grande des premières mesures utiles M1(i,k) avec k variant de 1 à Nstat(i), et un deuxième temps d'exécution pire cas mesuré WCETm2(i) comme étant la plus grande des deuxièmes mesures utiles M2(i,k) avec k variant de 1 à Nstat(i), et à partir de la durée de la trame temporelle, des premiers temps d'exécution pire cas mesuré WCETm1(i) et deuxièmes temps d'exécution pire cas mesurés WCETm1(i) des tâches recensées Task2(i), des intervalles temporels réguliers associées aux premières tâches, du ou des graphes associés et de la ou des fenêtre temporelles associée(s) aux tâche restantes lorsqu'elles existent et des temps d'exécution pire cas mesurés des sous-tâches atomiques des tâches restantes, déterminer (414) une structure interne de la trame temporelle définissant la séquence d'exécution du programme en découpant les deuxièmes tâches Task2(i) en portions de tâches, et en affectant des tranches de temps aux portions de tâches, aux premières séquences atomiques, et aux sous-tâches atomiques, de sorte que chaque tâche du programme soit exécutée dans la durée de la trame temporelle de la séquence d'exécution sans conflit temporel avec une autre tâche.
  9. 9. Système de préparation d'une séquence d'exécution d'un programme informatique de service selon la revendication 8, dans lequel le deuxième calculateur de préparation (14) est relié au calculateur de service par un lien de communication, et configuré pour envoyer des commandes et à recevoir des états de fonctionnement vers et depuis le premier calculateur de service, et dans lequel le deuxième calculateur de préparation (14) est configuré pour faire exécuter par le premier calculateur de service (12) pour chaque deuxième boucle BUCKLE2(i), i variant de 1 à Ntask2, l'étape consistant à effectuer un nombre Nstat(i) de fois une première mesure utile Ml (i,k)) de la durée d'exécution en une seule traite d'une itérations du deuxième motif séquentiel SB2(i) avec la mémoire cache initialement vide, et effectuer un nombre Nstat(i) de fois une deuxième mesure directe M2dir(i,k)) de la durée d'exécution de deux itérations consécutives du deuxième motif séquentiel SB2(i) avec la mémoire cache vide initialement, etle deuxième calculateur de préparation (14) est configuré pour recevoir les premières mesures utiles Ml(i,k)) et les deuxièmes mesures directes M2dir(i,k), i variant de 1 à Ntask2 et k variant entre 1 et Nstat(i).
  10. 10. Produit programme d'ordinateur comprenant des instructions de programme stockées dans un système de préparation selon l'une quelconque des revendications 8 et 9 qui lorsqu'elles sont exécutées par le système de préparation mettent en oeuvre les étapes de procédé de préparation d'une séquence d'exécution d'un programme de service selon l'une quelconque des revendications 1 à 7.
  11. 11. Système spatial compris dans l'ensemble formé par les satellites, les plateformes, les charges utiles, comprenant un ou plusieurs sous-systèmes périphériques (704, 706, 708) munis de circuits d'interface correspondants, un calculateur (12) ayant un processeur (16), une mémoire cache (18) pour accélérer l'exécution du programme informatique de service, et un moyen de mise en oeuvre d'une séquence d'exécution du programme informatique de service suivant une trame temporelle de structure fixe répétée de manière permanente, le programme informatique consistant en un ensemble d'instructions réparties en au moins deux tâches distinctes et séparées, sans lien entre elles, au moins une première tâche Task1(j) d'un premier type étant constituée par une première boucle BUCKLE(j) d'instructions, prévue pour répéter dans la séquence d'exécution un nombre ftask1(j) de fois un premier motif séquentiel atomique SB1(j) correspondant d'instructions, et au moins une deuxième tâche Task2(i) d'un deuxième type étant constituée par une deuxième boucle d'instructions BUCKLE2(i), prévue pour répéter un nombre total d'itérations de fois Nit(i) un deuxième motif séquentiel SB2(i) correspondant d'instructions, l'exécution de la deuxième boucle BUCKLE2(i) pouvant être morcelée en des emplacements quelconques, la séquence d'exécution du programme étant définie par une trame temporelle ayant une durée fixée Ttrame, consistant en une succession d'intervalles de temps de même durée égale à la durée de la trame temporelle divisée par le nombre de répétitions du premier motif, et comprenant une suite de tranches de temps, chaque premier motif séquentiel atomique étant contraint d'être exécuté sans interruption dans un intervalle de temps différent associé de la trame temporelle, le nombre des tâches, les nombres d'instructions des tâches, et le(s) fréquences de répétition du (des) premier(s) motifs étant suffisamment grands pour imposer au moins une interruption lors de l'exécution de la deuxième tâche de deuxième type,des tâches restantes ayant un type différent des premier et deuxième type lorsqu'elles existent consistant chacune en un certain nombre de sous-tâches atomiques organisées entre selon un graphe associé et une fenêtre temporelle associée dans laquelle la tâche doit être exécutée complètement, chaque sous-tâche atomique ayant un temps d'exécution pire cas mesuré, caractérisé en ce que la trame temporelle d'exécution du programme de service est le produit obtenu par le procédé défini selon l'une des revendications 1 à 7.10
FR1258644A 2012-09-14 2012-09-14 Procede de preparation d'une sequence d'execution d'un programme partitionne spatialement et temporellement utilisant un processeur muni d'une memoire cache. Active FR2995705B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1258644A FR2995705B1 (fr) 2012-09-14 2012-09-14 Procede de preparation d'une sequence d'execution d'un programme partitionne spatialement et temporellement utilisant un processeur muni d'une memoire cache.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1258644A FR2995705B1 (fr) 2012-09-14 2012-09-14 Procede de preparation d'une sequence d'execution d'un programme partitionne spatialement et temporellement utilisant un processeur muni d'une memoire cache.

Publications (2)

Publication Number Publication Date
FR2995705A1 true FR2995705A1 (fr) 2014-03-21
FR2995705B1 FR2995705B1 (fr) 2015-12-11

Family

ID=47989053

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1258644A Active FR2995705B1 (fr) 2012-09-14 2012-09-14 Procede de preparation d'une sequence d'execution d'un programme partitionne spatialement et temporellement utilisant un processeur muni d'une memoire cache.

Country Status (1)

Country Link
FR (1) FR2995705B1 (fr)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3336708A1 (fr) * 2016-12-16 2018-06-20 Hamilton Sundstrand Corporation Évaluation temporelle déterministe
US10089233B2 (en) 2016-05-11 2018-10-02 Ge Aviation Systems, Llc Method of partitioning a set-associative cache in a computing platform
CN110737255A (zh) * 2019-10-31 2020-01-31 共享智能铸造产业创新中心有限公司 一种多工位乱序工艺路径的自动化处理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5628013A (en) * 1992-09-30 1997-05-06 Apple Computer, Inc. Apparatus and method for allocating processing time in a frame-based computer system
US20020120663A1 (en) * 2000-06-02 2002-08-29 Binns Pamela A. Method and apparatus for slack stealing with dynamic threads
WO2005116830A1 (fr) * 2004-05-27 2005-12-08 Koninklijke Philips Electronics N.V. Appareil de traitement du signal

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5628013A (en) * 1992-09-30 1997-05-06 Apple Computer, Inc. Apparatus and method for allocating processing time in a frame-based computer system
US20020120663A1 (en) * 2000-06-02 2002-08-29 Binns Pamela A. Method and apparatus for slack stealing with dynamic threads
WO2005116830A1 (fr) * 2004-05-27 2005-12-08 Koninklijke Philips Electronics N.V. Appareil de traitement du signal

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
GOPINATH P ET AL: "Applying compiler techniques to scheduling in real-time systems", PROCEEDINGS OF THE REAL TIME SYSTEMS SYMPOSIUM. LAKE BUENA VISTA, DEC. 5 - 7, 1990; [PROCEEDINGS OF THE REAL TIME SYSTEMS SYMPOSIUM], WASHINGTON, IEEE. COMP. SOC. PRESS, US, vol. SYMP. 11, 5 December 1990 (1990-12-05), pages 247 - 256, XP010022055, ISBN: 978-0-8186-2112-3, DOI: 10.1109/REAL.1990.128755 *
KELVIN D NILSEN ET AL: "Worst-Case Execution Time Analysis on Modern Processors", WORST-CASE EXECUTION TIME ANALYSIS ON MODERN PROCESSORS, 21 June 1995 (1995-06-21), New York, NY, USA, pages 20 - 30, XP055077638, DOI: 10.1145/216636.216650 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10089233B2 (en) 2016-05-11 2018-10-02 Ge Aviation Systems, Llc Method of partitioning a set-associative cache in a computing platform
EP3336708A1 (fr) * 2016-12-16 2018-06-20 Hamilton Sundstrand Corporation Évaluation temporelle déterministe
CN110737255A (zh) * 2019-10-31 2020-01-31 共享智能铸造产业创新中心有限公司 一种多工位乱序工艺路径的自动化处理方法

Also Published As

Publication number Publication date
FR2995705B1 (fr) 2015-12-11

Similar Documents

Publication Publication Date Title
US9715408B2 (en) Data-aware workload scheduling and execution in heterogeneous environments
Harlap et al. Addressing the straggler problem for iterative convergent parallel ML
CN105593818B (zh) 用于调度分布式工作流程任务的装置和方法
US9477521B2 (en) Method and system for scheduling repetitive tasks in O(1)
Soualhia et al. Task scheduling in big data platforms: a systematic literature review
US9244751B2 (en) Estimating a performance parameter of a job having map and reduce tasks after a failure
US8943353B2 (en) Assigning nodes to jobs based on reliability factors
Manolache et al. Schedulability analysis of applications with stochastic task execution times
US9407573B2 (en) Bandwidth control in a controller area network (CAN)
US20140019987A1 (en) Scheduling map and reduce tasks for jobs execution according to performance goals
Ardagna et al. Performance prediction of cloud-based big data applications
US20130318538A1 (en) Estimating a performance characteristic of a job using a performance model
CN102609296A (zh) 虚拟机分支和并行执行
US9501313B2 (en) Resource management and allocation using history information stored in application's commit signature log
WO2012154177A1 (fr) Variation d'une caractéristique d'un profil de travail relative à des tâches de mappage et de réduction en fonction d'une dimension de données
FR2946442A1 (fr) Procede et dispositif de chargement et d'execution d'instructions a cycles deterministes dans un systeme avionique multi-coeurs ayant un bus dont le temps d'acces est non predictible
Belviranli et al. Cumas: Data transfer aware multi-application scheduling for shared gpus
US8458710B2 (en) Scheduling jobs for execution on a computer system
WO2021069626A1 (fr) Procédé de simulation parallèle reproductible de niveau système électronique mis en oeuvre au moyen d'un système informatique multi-coeurs de simulation à événements discrets
Wu et al. Irina: Accelerating DNN inference with efficient online scheduling
US20150331614A1 (en) Using queues corresponding to attribute values associated with units of work and sub-units of the unit of work to select the units of work and their sub-units to process
FR2995705A1 (fr) Procede de preparation d'une sequence d'execution d'un programme partitionne spatialement et temporellement utilisant un processeur muni d'une memoire cache.
Hammadeh et al. Weakly-hard real-time guarantees for earliest deadline first scheduling of independent tasks
Giannopoulou et al. DOL-BIP-Critical: a tool chain for rigorous design and implementation of mixed-criticality multi-core systems
US20180143851A1 (en) Workflow Job Distribution in a Data Processing System with Agent Time Window Constraints

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

PLFP Fee payment

Year of fee payment: 10

PLFP Fee payment

Year of fee payment: 11

PLFP Fee payment

Year of fee payment: 12