FR2956913A1 - Procede de sequencement deterministe multitache - Google Patents

Procede de sequencement deterministe multitache Download PDF

Info

Publication number
FR2956913A1
FR2956913A1 FR1051428A FR1051428A FR2956913A1 FR 2956913 A1 FR2956913 A1 FR 2956913A1 FR 1051428 A FR1051428 A FR 1051428A FR 1051428 A FR1051428 A FR 1051428A FR 2956913 A1 FR2956913 A1 FR 2956913A1
Authority
FR
France
Prior art keywords
task
sequencing
execution
period
instance
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
FR1051428A
Other languages
English (en)
Other versions
FR2956913B1 (fr
Inventor
Jean-Louis Dufour
Michel Destelle
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.)
Safran Electronics and Defense SAS
Original Assignee
Sagem Defense Securite SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sagem Defense Securite SA filed Critical Sagem Defense Securite SA
Priority to FR1051428A priority Critical patent/FR2956913B1/fr
Priority to PCT/EP2011/052833 priority patent/WO2011107405A1/fr
Publication of FR2956913A1 publication Critical patent/FR2956913A1/fr
Application granted granted Critical
Publication of FR2956913B1 publication Critical patent/FR2956913B1/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

On s'intéresse aux procédés permettant une prédictibilité des durées d'exécution destinés aux systèmes utilisés dans des environnements où la sécurité est critique. On s'intéresse également à l'influence de la mémoire cache sur le fonctionnement de tels procédés de séquencement. Le procédé de séquencement des tâches est décrit dans un système multitâche préemptif où les moments de lancement des tâches sont déterminés. Avantageusement, ce procédé invalide la mémoire cache lors du basculement entre tâches mais permet toutefois le mode de fonctionnement write-back de cette mémoire cache selon certaines conditions. Ce procédé permet de rendre indépendante la durée d'exécution de chaque tâche tout en maintenant un niveau élevé de performance.

Description

La présente invention concerne le domaine des procédés de séquencement des tâches dans un système d'information multitâche. Plus particulièrement, on s'intéresse aux procédés permettant une prédictibilité des durées d'exécution destinés aux systèmes utilisés dans des environnements où la sécurité est critique. De tels environnements sont par exemple le domaine des logiciels embarqués dans les avions, les centrales nucléaires ou les systèmes militaires. On s'intéresse également à l'influence de la mémoire cache sur le fonctionnement de tels procédés de séquencement. Le fonctionnement d'un processeur peut se schématiser en cycles consistant en une première étape de transfert d'une instruction et de données de la mémoire vers des registres du processeur, une seconde étape exécutant l'instruction sur ces registres et une troisième étape transférant le résultat des registres vers la mémoire. On appelle tâche, une fonction logicielle s'exécutant sur un processeur et typiquement constituée d'une succession de tels cycles de calcul.
Les mémoires cache sont des blocs de mémoire rapide servant d'intermédiaire entre le processeur et la mémoire principale contenant les instructions et les données. La mémoire cache se caractérise par un temps d'accès d'un ou de deux ordres de grandeur inférieurs à un accès à la mémoire principale. Typiquement, au démarrage d'une tâche, cette mémoire cache est vide et les accès mémoire s'effectuent en mémoire principale. Les instructions et données lues en mémoire principale restent mémorisées dans la mémoire cache. Un nouvel accès à ces instructions ou données provoque leur lecture dans la mémoire cache, donc beaucoup plus rapide, et non dans la mémoire principale. Des processus connus sous les noms de write-through et writeback sont deux politiques bien connues de gestion de la cohérence entre le contenu de la mémoire cache et celui de la mémoire principale. Ces politiques de cohérences seront détaillées par la suite. On comprend aisément que l'utilisation de mémoire cache influence grandement la durée d'exécution d'une tâche donnée. Lorsque l'on désire effectuer plusieurs tâches de manière concurrente sur un même processeur, ces tâches doivent être exécutées par segments successifs avec des basculements entre chaque segment. En effet, un processeur est fondamentalement mono tâche. Pour gérer cette exécution entrelacée, il faut mettre en oeuvre un séquenceur qui, lorsqu'il est lancé, décide, en fonction de sa politique de séquencement, s'il interrompt la tâche courante et dans ce cas quelle tâche parmi celles qui sont en attente va devenir la tâche courante. Chaque basculement entraîne un changement de contexte où le compteur ordinal, le pointeur sur l'instruction suivante à exécuter, et les registres du processeur sont sauvegardés avant le basculement pour être restaurés lorsque la tâche redevient active. On distingue plusieurs modes de fonctionnement multitâche. Historiquement, le premier mode apparu est le mode de fonctionnement coopératif. L'appel au séquenceur s'effectue à l'occasion des appels au système, en particulier lors de la fin de tâche, et doit donc être prévu dans le code de chaque tâche. Ce mode possède l'inconvénient qu'il n'est pas possible d'assurer l'équité de l'accès au processeur pour les différentes tâches. Un problème logiciel provoquant une boucle infinie, par exemple, interdit l'accès aux autres tâches. Un second mode de fonctionnement multitâche consiste en un mode dit préemptif. Dans ce mode de fonctionnement, le séquenceur est lancé également sur occurrence d'événement(s) extérieur(s) à la tâche courante. Un séquenceur préemptif périodique provoque le basculement d'une tâche active vers une autre tâche à l'échéance de chaque période de séquencement et à la fin de l'exécution d'une instance d'une tâche. Il est alors possible, lorsque c'est désiré, d'assurer l'équité d'accès au processeur ou d'implémenter toute politique de séquencement souhaitée. Celle-ci peut tenir compte de la disponibilité d'autres ressources ou de niveau de priorité entre les tâches. C'est le mode de fonctionnement des systèmes multitâches les plus répandus actuellement. Le moment du basculement entre deux tâches lors du fonctionnement d'un séquenceur multitâche préemptif influe sur la durée totale d'exécution de la tâche du fait de l'utilisation de la mémoire cache. En effet, lors de l'exécution d'une tâche, le taux de remplissage en données utiles de la mémoire cache évolue. Lors du basculement, les données utiles à une tâche sont généralement inutiles à la nouvelle. Si ce basculement a lieu à un moment où le cache est presque vide en données utiles, elle est peu pénalisante. Tandis que lorsque le basculement a lieu alors que la mémoire cache est remplie de données utiles, elle est pénalisante, car on perd ces données utiles qui devront être rechargées depuis la mémoire principale lorsque la tâche redevient active. Dans un contexte où le système d'information doit répondre à des contraintes de sécurité critiques, il est demandé de garantir un majorant sur la durée d'exécution de chaque tâche. Dans ce contexte, il est avantageux de garantir à chaque tâche un temps d'exécution qui ne dépend que de la tâche considérée et n'est pas influencé par le déroulement des autres tâches. L'invention vise à atteindre l'objectif d'indépendance précédent en proposant un procédé de séquencement des tâches dans un système multitâche préemptif où les moments de lancement des tâches sont déterminés. Avantageusement, ce procédé invalide la mémoire cache lors du basculement entre tâches mais permet toutefois le mode de fonctionnement retardé (write-back en anglais) de cette mémoire cache selon certaines conditions. Ce procédé permet de rendre indépendant la durée d'exécution de chaque tâche tout en maintenant un niveau élevé de performance.
L'invention concerne un procédé de séquencement d'un ensemble de tâches périodiques sur un processeur de traitement de l'information, chaque tâche ayant une période propre, le séquencement étant périodique et préemptif, signifiant que le séquencement provoque le basculement d'une tâche active vers une autre tâche à l'échéance de chaque période de séquencement et à la fin de l'exécution d'une instance d'une tâche, qui comporte les étapes suivantes : - pour chaque tâche, la détermination d'une limite de durée allouée à l'exécution d'une instance de cette tâche ; - lorsque l'exécution d'une instance d'une tâche s'achève est introduite une étape d'attente que la limite de durée allouée à ladite tâche s'écoule avant de 20 provoquer le basculement. - lors d'un basculement, la mémoire cache est invalidée. Selon un mode particulier de réalisation de l'invention, le processeur possédant une mémoire cache pouvant fonctionner dans un mode transparent et dans un mode retardé, le procédé comporte en outre lors du basculement d'une tâche active vers une 25 nouvelle tâche : - une étape consistant à forcer le mode transparent de la nouvelle tâche active si ce n'est pas son segment final. Selon un mode particulier de réalisation de l'invention, le procédé comprend en outre : 30 - lors de la préemption d'une tâche en mode retardé vers une nouvelle tâche, une étape de mise en cohérence du cache en un temps constant, avant l'étape d'invalidation ; et - sur des segments non-finaux choisis, l'omission de l'étape consistant à forcer le mode transparent de la nouvelle tâche active.
L'invention concerne également un dispositif de traitement de l'information qui comporte au moins un processeur capable d'exécuter des tâches ; un moyen de séquencement périodique et préemptif signifiant que le séquencement provoque le basculement d'une tâche active vers une autre tâche à l'échéance de chaque période de séquencement et à la fin de l'exécution d'une instance d'une tâche, pour le séquencement d'un ensemble de tâches périodiques, chaque tâche ayant une période propre ; et qui dispose en outre de moyens de prise en compte pour chaque tâche d'une limite de durée allouée à l'exécution d'une instance de cette tâche ; de moyens d'introduire une étape d'attente que la limite de durée allouée à une tâche s'écoule avant de provoquer le basculement lorsqu'une instance de ladite tâche s'achève et de moyens d'invalider la mémoire cache lors d'un basculement. Les caractéristiques de l'invention mentionnées ci-dessus, ainsi que d'autres, apparaîtront plus clairement à la lecture de la description suivante d'un exemple de réalisation, ladite description étant faite en relation avec les dessins joints, parmi lesquels : La Fig. 1 illustre un exemple de découpage de tâche à la conception dans un séquenceur périodique non-préemptif, La Fig. 2 illustre le même exemple de découpage de tâche à l'exécution dans un séquenceur périodique préemptif, La Fig. 3 illustre l'influence sur les autres tâches que peut avoir un vol de temps par une tâche, La Fig. 4 illustre le fonctionnement du séquenceur selon un exemple de réalisation de l'invention. L'invention se place dans le cadre de l'exécution périodique de tâches sur un processeur dans un système de traitement de l'information. On cherche à pouvoir garantir le fonctionnement de chaque tâche et à en maîtriser la consommation en temps processeur. Pour cela, il faut déterminer une durée maximale de fonctionnement de chaque tâche selon un scénario de pire cas. Quand on a fait cela, la sécurité vient de mécanismes empêchant qu'un dysfonctionnement d'une tâche puisse se répercuter sur le fonctionnement des autres tâches. Pour illustrer la plus-value d'un séquencement préemptif, un exemple de découpage de tâche dans un séquenceur périodique non-préemptif est donné Fig. 1. Sur cette figure, la période est marquée par des tirets verticaux numérotés de 0 à 6. Dans cet exemple, nous avons deux tâches TO et Tl, toutes deux périodiques, qui doivent s'exécuter. La tâche TO a une durée inférieure à la durée de la période et doit s'exécuter toutes les périodes. La tâche Tl a une durée supérieure à la durée de la période et s'exécute toutes les deux périodes. La période de base du séquenceur correspond avantageusement à la période de la tâche dont la période est la plus courte.
Cet exemple peut s'étendre naturellement à un nombre quelconque de tâches périodiques dont la période est un multiple de la période de base. Dans le séquencement illustré par la Fig. 1, la tâche Tl est divisée en deux tâches Tl 1 et T12 par le concepteur. Lors d'une première période, la tâche TO est lancée. Lorsqu'elle se termine, le séquenceur effectue un basculement vers la tâche Ti 1. Lorsque celle-ci se termine, il n'y a plus de tâche pour la période courante, le processeur est inactif jusqu'à la période suivante. Au début de la période suivante, la tâche TO est relancée. Lorsqu'elle se termine, le séquenceur effectue un basculement vers la seconde tâche T12. Ce fonctionnement se répète. La Fig. 2 illustre le fonctionnement d'un séquenceur préemptif pour les deux mêmes tâches TO et Tl. Dans ce second exemple, le concepteur n'a plus à diviser la tâche Tl en deux tâches T11 et T12. Le séquenceur laisse tourner la tâche Tl, nommée par facilité Ti 1 jusqu'à la fin de la première période. Ce n'est qu'à la fin de la première période que le séquenceur préempte la tâche Tl pour effectuer un basculement vers la tâche TO. Cette interruption nécessite typiquement la sauvegarde du contexte de la tâche Tl pour permettre sa restauration ultérieure. Lors de la seconde période et lorsque la tâche TO est terminée, le séquenceur effectue le basculement sur la tâche Tl, il restaure celle-ci et la relance. Le fonctionnement diffère du précédent en ce que c'est la fin de la période qui détermine la division de la tâche Tl en deux segments temporels T11 et T12. Ces segments vont différer d'une période à une autre du fait de la variabilité du temps d'exécution de TO. En effet, la durée d'exécution d'une tâche n'est pas fixe. Elle varie en fonction de plusieurs facteurs, le principal étant qu'elle dépend des données effectivement traitées qui varient typiquement d'une instance d'exécution à une autre. Par exemple, une branche du code sera empruntée ou non selon la valeur d'une donnée externe. La durée précise de la tâche TO est donc variable. De ce fait, le moment de lancement de la tâche Tl est également variable, et le traitement effectué dans Tl à la fin de la période qui déclenche l'interruption de la tâche Tl est donc variable lui aussi. Pour pouvoir garantir le bon fonctionnement du système, il est obligatoire d'éviter qu'un dysfonctionnement d'une tâche soit perçu comme un dysfonctionnement d'une autre tâche, car cela pourrait déclencher des modes dégradés inappropriés. La Fig. 3 illustre un tel problème. On se place dans le cas d'un séquenceur fonctionnant selon le mode illustré par la Fig. 2. On regarde plus précisément ce qui se passe entre l'instant 2 et l'instant 4. On voit que l'instance d'exécution de la tâche TO démarrée à l'instant 2 et référencée TOc se prolonge de manière inhabituelle presque jusqu'à la fin de la période. Elle se termine tout de même et le séquenceur effectue le basculement sur la tâche Tl qui est presque aussitôt interrompue à l'instant 3. A la période suivante, on constate l'exécution normale d'une instance de la tâche TO puis le basculement normal vers la tâche Tl ici référencée T12c. Cette tâche va rencontrer un problème à l'instant 4, car elle n'est pas terminée du fait du temps volé par TOc lors de la période précédente. On voit que ce vol de temps par TO n'influe pas négativement le fonctionnement de TO, mais provoque un dysfonctionnement de Tl lors de la période suivante. Tl qui dispose de deux périodes pour s'exécuter se trouve interrompue une nouvelle fois et n'a pas le temps de se terminer. Pour résoudre ce problème, l'état de l'Art se base sur la détermination d'une limite de durée pour l'exécution des traitements d'une tâche appelée «deadline ». Cette limite de durée est allouée pour chaque instance d'exécution de cette tâche, et si elle est atteinte, c'est le signe d'un dysfonctionnement et le séquenceur lance alors la tâche suivante. Elle est déterminée à l'aide de l'estimation d'un déroulement d'un pire cas. Le mode particulier de détermination est en dehors de la description de ce document. L'invention ajoute à cet état de l'Art le fait de rendre constante la durée d'exécution des tâches : elles ont alors comme durée leur propre deadline. Le séquenceur est alors programmé pour n'effectuer le basculement entre deux tâches qu'une fois la limite de durée associée à une tâche donnée écoulée et non pas dès la fin d'exécution des traitements de la tâche. On rend ainsi déterministe le moment de basculement entre les tâches. La Fig. 4 illustre un tel fonctionnement. La limite de durée associée à l'exécution de la tâche TO est appelée DO. Celle qui est associée à la tâche Tl est appelée Dl. La Fig. 4 ne montre que les deux premières périodes de fonctionnement du séquenceur, ce fonctionnement se répète à l'identique ensuite. La tâche TO est lancée à l'instant 0, DO indiquant la fin de sa limite de durée. Ses traitements se terminent effectivement un peu avant DO. Le séquenceur n'effectue pas de basculement vers la tâche Tl avant DO. Il introduit une période d'attente LO pour que la limite de durée allouée à la tâche s'écoule avant de déclencher le basculement. Le fonctionnement du processeur entre la fin des traitements de la tâche TO et la limite de durée DO est libre. Par exemple, on peut le mettre en sommeil, effectuer une boucle d'attente ou effectuer des auto-tests jusqu'à la limite de durée DO. Lorsque cette limite est atteinte, le séquenceur provoque le basculement vers la tâche Tl. L'exécution de Tl ou plus précisément du premier segment Tl 1 de Tl est interrompue par la fin de la période à l'instant 1. Le séquenceur provoque alors le basculement vers une nouvelle occurrence d'exécution de la tâche TO. Sur la figure, cette occurrence dure moins longtemps que la première. Elle se prolonge par une période d'attente LO jusqu'à la limite de durée DO liée à cette nouvelle occurrence. Le séquenceur provoque alors un nouveau basculement vers la tâche Tl précédemment interrompue et lance le second segment T12 de la tâche Tl. Celui-ci se prolonge par une période d'attente L1 pour attendre la limite de durée Dl associée à la tâche Tl.
On constate que dans ce mode de fonctionnement, un dysfonctionnement de la tâche TO qui viendrait prolonger de manière anormale la durée de fonctionnement d'une occurrence de la tâche provoquerait une interruption anormale de cette dernière lorsque la limite de durée DO associée expire. La tâche Tl est lancée en tout état de cause à l'instant DO sans être influencée par le dysfonctionnement de TO. Les moments où le séquenceur provoque un basculement entre les tâches sont ici déterministes. Lorsque l'on s'intéresse au fonctionnement d'un tel système lorsque le processeur dispose d'une mémoire cache, on constate que la politique de séquencement précédente, bien qu'assurant des instants de commutation déterministes, ne suffit pas à assurer l'indépendance d'exécution des tâches : l'existence même des caches et le mécanisme de gestion du cache de données vont entraîner dans certains cas une influence du fonctionnement d'une tâche sur la vitesse d'exécution d'une autre tâche. Par exemple, sur la Fig. 4, au début de la seconde exécution de TO, l'état des caches en ce qui concerne les instructions et données utiles à TO est complètement dépendant des traitements qu'aura effectué le segment T11. Il existe deux modes de fonctionnement d'une mémoire cache. Un premier mode est appelé write-through en anglais, nous l'appellerons mode transparent dans ce document. Dans ce mode, une donnée est écrite en même temps dans la mémoire cache et dans la mémoire principale. Le contenu de la mémoire cache est toujours cohérent avec celui de la mémoire principale. Ce mode transparent de gestion a l'avantage de faciliter le fonctionnement des architectures multi-processeurs, car il résout les problèmes de cohérence, mais il est en général moins rapide que l'autre mode, en particulier en cas d'écritures en rafale, car les données sont systématiquement écrites dans la mémoire principale. Un second mode de fonctionnement est appelé write-back en anglais, nous l'appellerons mode retardé dans ce document. Dans ce mode, les données sont écrites uniquement dans la mémoire cache. A chaque emplacement de la mémoire cache est associé un bit de cohérence (dirty bit en anglais) qui est mis à un lors de l'écriture. Ce bit marque que la donnée mémorisée n'est pas cohérente avec la mémoire principale et doit être recopiée en mémoire principale. Cette recopie s'effectue lorsque le processeur a besoin de récupérer un emplacement dans le cache. Cette recopie assure la mise en cohérence de la mémoire cache et de la mémoire principale, le bit de cohérence est alors remis à zéro. Ce mode de fonctionnement est plus rapide du fait que la recopie effective des données du cache en mémoire n'a lieu que lorsqu'elle est vraiment nécessaire. C'est pour cette raison qu'il est appelé mode retardé dans ce document, l'écriture en mémoire étant retardée. I1 existe une opération de gestion de la mémoire cache particulière qui se nomme invalidation du cache. Elle consiste en une réinitialisation complète et instantanée du cache qui revient dans l'état où il était à la mise sous tension, c'est-à-dire qu'il ne contient plus aucune information. Elle permet de vider la mémoire cache de manière rapide lorsque l'on est sûr que les données qu'elle contient sont obsolètes et ne nécessitent pas de recopie en mémoire. En effet, l'invalidation du cache provoque la perte des données qui n'ont pas été recopiées en mémoire.
Avantageusement, le séquenceur introduit une étape d'invalidation de la mémoire cache lors d'une opération de basculement entre deux tâches. Cette opération rend indépendante des autres tâches l'exécution de la tâche, car chaque segment démarre sur un cache vide. Par contre, du fait de cette invalidation, il est nécessaire d'assurer la cohérence entre la mémoire cache et la mémoire principale lorsque le séquenceur reprend le contrôle. Cette mise en cohérence, contrairement à l'invalidation qui est instantanée, prend un temps non négligeable proportionnel au nombre d'emplacements non cohérents (dirty en anglais) du cache. Elle est facile à réaliser en fin de traitement pour une tâche non interrompue. Par contre, une tâche interruptible, lors de son exécution, ne sait pas facilement anticiper l'instant d'interruption. En pratique, cela implique un choix entre deux stratégies : soit les tâches interruptibles doivent fonctionner en mode transparent, soit le séquenceur doit, avant l'invalidation, mettre en cohérence le cache lorsqu'il préempte une tâche qui utilise le mode retardé. Ces deux stratégies posent chacune un problème d'efficacité.
En ce qui concerne la première stratégie, le problème est le mode transparent lui-même qui est pénalisant en temps d'exécution. Or, comme les basculements entre tâches ont été rendus déterministes par l'introduction des limites de durée imposées à chaque tâche, il est facile de déterminer lorsque l'on lance une tâche si on lance le dernier segment de cette tâche ou pas : il suffit de constater que la limite de durée de la tâche est dans la période courante ou pas. Si la nouvelle tâche active est amenée à se terminer avant l'échéance de la période de séquencement courante, le séquenceur autorise avantageusement le mode retardé, sinon il force le mode transparent. Si l'on se réfère à la Fig. 4, on constate que lorsqu'on lance la tache Tl dans la première période entre l'instant 0 et l'instant 1, on lance le segment Tl 1, la limite de durée Dl n'appartient pas à la période courante. On ne lance donc pas le dernier segment de la tâche : le mode transparent est forcé. Par contre, dans la seconde période, entre l'instant 1 et l'instant 2, la limite de durée Dl appartient à la période courante. On sait donc que lorsqu'on lance le segment T12 de la tâche Tl on lance le dernier segment : le mode retardé est autorisé et sera donc appliqué si la tâche est configurée en mode retardé. Bien sûr, lorsque les traitements de la tâche sont terminés, la tâche doit mettre en cohérence la mémoire cache avec la mémoire principale. A cette condition, on est sûr que cette mémoire cache est propre au prochain basculement. De ce fait, on autorise avantageusement un mode retardé de gestion du cache lorsque l'on lance le dernier segment d'une tâche.
En ce qui concerne la seconde stratégie, le problème est la forte variabilité du temps de mise en cohérence du cache, lorsque cette mise en cohérence est exécutée par le séquenceur. On notera que lorsqu'elle est exécutée en fin de tâche, elle ne pose pas problème car sa variabilité sera intégrée dans le temps d'exécution de la tâche, et donc masquée par la limite de durée. Par contre, dans le séquenceur, cela va entraîner une variabilité significative des instants de commutation ultérieurs, donc la perte du séquencement déterministe. Avantageusement, le séquenceur effectue donc une mise en cohérence à durée constante, donc à durée maximale. Autrement dit, on pourrait la considérer comme une mini-tâche avec sa propre limite de durée.
Cette durée constante de mise en cohérence est contrebalancée par le gain généré par l'exécution du segment précédent en mode retardé, sauf lorsque ce segment est court : dans ce cas, l'effet peut être très néfaste. Or, le séquenceur connaît la durée et le numéro du segment qu'il lance. Avantageusement, il peut donc forcer le mode transparent sur un segment non-final jugé trop court, ou selon un choix prédéfini fonction du numéro, et ainsi, lorsque ultérieurement il le préemptera, il n'aura pas à mettre le cache en cohérence. On voit que la seconde stratégie est en fait une extension de la première : la première autorise le mode retardé sur les segments finaux, la seconde l'autorise en plus sur des segments non-finaux choisis. La seconde permet une utilisation maximale du mode retardé tout en assurant l'indépendance de l'exécution des tâches. Le fonctionnement du séquenceur ici décrit pour le séquencement de deux tâches pour des raisons de clarté s'étend naturellement à un nombre quelconque de tâches.

Claims (1)

  1. REVENDICATIONS1/ Procédé de séquencement d'un ensemble de tâches périodiques sur un processeur de traitement de l'information, chaque tâche ayant une période propre, le séquencement étant périodique et préemptif, signifiant que le séquencement provoque le basculement d'une tâche active vers une autre tâche à l'échéance de chaque période de séquencement et à la fin de l'exécution d'une instance d'une tâche, caractérisé en ce qu'il comporte les étapes suivantes : - pour chaque tâche la détermination d'une limite de durée allouée à l'exécution 10 d'une instance de cette tâche ; - lorsque l'exécution d'une instance d'une tâche s'achève est introduite une étape d'attente que la limite de durée allouée à ladite tâche s'écoule avant de provoquer le basculement. - lors d'un basculement, la mémoire cache est invalidée. 15 2/ Procédé de séquencement selon la revendication 1, caractérisé en ce que le processeur possédant une mémoire cache pouvant fonctionner dans un mode transparent et dans un mode retardé, le procédé comporte en outre lors du basculement d'une tâche active vers une nouvelle tâche : 20 - une étape consistant à forcer le mode transparent de la nouvelle tâche active si ce n'est pas son segment final. 3/ Procédé de séquencement selon la revendication 2, caractérisé en ce qu'il comprend en outre : 25 - lors de la préemption d'une tâche en mode retardé vers une nouvelle tâche, une étape de mise en cohérence du cache en un temps constant, avant l'étape d'invalidation ; et - sur des segments non-finaux choisis, l'omission de l'étape consistant à forcer le mode transparent de la nouvelle tâche active. 30 4/ Dispositif de traitement de l'information comportant : - au moins un processeur capable d'exécuter des tâches ; - un moyen de séquencement périodique et préemptif signifiant que le séquencement provoque le basculement d'une tâche active vers une autre tâche àl'échéance de chaque période de séquencement et à la fin de l'exécution d'une instance d'une tâche, pour le séquencement d'un ensemble de tâches périodiques, chaque tâche ayant une période propre ; caractérisé en ce qu'il dispose en outre : - de moyens de prise en compte pour chaque tâche d'une limite de durée allouée à l'exécution d'une instance de cette tâche ; - de moyens d'introduire une étape d'attente que la limite de durée allouée à une tâche s'écoule avant de provoquer le basculement lorsqu'une instance de ladite tâche s'achève ; - de moyens d'invalider la mémoire cache lors d'un basculement.
FR1051428A 2010-03-01 2010-03-01 Procede de sequencement deterministe multitache Active FR2956913B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1051428A FR2956913B1 (fr) 2010-03-01 2010-03-01 Procede de sequencement deterministe multitache
PCT/EP2011/052833 WO2011107405A1 (fr) 2010-03-01 2011-02-25 Procédé de séquencement déterministe multitâche

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1051428A FR2956913B1 (fr) 2010-03-01 2010-03-01 Procede de sequencement deterministe multitache

Publications (2)

Publication Number Publication Date
FR2956913A1 true FR2956913A1 (fr) 2011-09-02
FR2956913B1 FR2956913B1 (fr) 2012-04-20

Family

ID=42937056

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1051428A Active FR2956913B1 (fr) 2010-03-01 2010-03-01 Procede de sequencement deterministe multitache

Country Status (2)

Country Link
FR (1) FR2956913B1 (fr)
WO (1) WO2011107405A1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023180265A1 (fr) * 2022-03-24 2023-09-28 Vitesco Technologies GmbH Procédé de gestion d'exécution d'une pluralité de fonctions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4954948A (en) * 1986-12-29 1990-09-04 Motorola, Inc. Microprocessor operating system for sequentially executing subtasks
EP1030243A1 (fr) * 1999-02-18 2000-08-23 Texas Instruments France Fonction optimisée matérielle de nettoyage pour antémémoire de données à index et étiquettes virtuelles
WO2008125664A1 (fr) * 2007-04-13 2008-10-23 Wavecom Procede et dispositif de gestion de l'utilisation d'un processeur par plusieurs applications, produit programme d'ordinateur et moyen de stockage correspondants.

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4954948A (en) * 1986-12-29 1990-09-04 Motorola, Inc. Microprocessor operating system for sequentially executing subtasks
EP1030243A1 (fr) * 1999-02-18 2000-08-23 Texas Instruments France Fonction optimisée matérielle de nettoyage pour antémémoire de données à index et étiquettes virtuelles
WO2008125664A1 (fr) * 2007-04-13 2008-10-23 Wavecom Procede et dispositif de gestion de l'utilisation d'un processeur par plusieurs applications, produit programme d'ordinateur et moyen de stockage correspondants.

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A. MARTI CAMPOY, A. PERLES IVARS, J. V. BUSQUETS-MATAIX: "DYNAMIC USE OF LOCKING CACHES IN MULTITASK, PREEMPTIVE REAL-TIME SYSTEMS", 15TH TRIENNIAL WORLD CONGRESS OF THE INTERNATIONAL FEDERATION OF AUTOMATIC CONTROL, BARCELONA 21-26 JULY 2002, 21 July 2002 (2002-07-21), pages 1 - 6, XP007915961, Retrieved from the Internet <URL:http://www.nt.ntnu.no/users/skoge/prost/proceedings/ifac2002/data/content/02254/2254.pdf> [retrieved on 20101122] *
BUSQUETS-MATAIX J V ET AL: "Using harmonic task-sets to increase the schedulable utilization of cache-based preemptive real-time systems", REAL-TIME COMPUTING SYSTEMS AND APPLICATIONS, 1996. PROCEEDINGS., THIR D INTERNATIONAL WORKSHOP ON SEOUL, SOUTH KOREA 30 OCT.-1 NOV. 1996, LOS ALAMITOS, CA, USA,IEEE COMPUTER. SOC, US, 30 October 1996 (1996-10-30), pages 195 - 202, XP010202973, ISBN: 978-0-8186-7626-0, DOI: DOI:10.1109/RTCSA.1996.554977 *
SEBEK FILIP: "Cache Memories and Real-Time Systems", MRTC TECHNICAL REPORT 01/37, October 2001 (2001-10-01), , DEPARTMENT OF COMPUTER ENGINEERING, MÄLARDALEN UNIVERSITY, VÄSTERÅS, SWEDEN, pages I-IV,1 - 42, XP007915957, Retrieved from the Internet <URL:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.5430&rep=rep1&type=pdf> [retrieved on 20101122] *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023180265A1 (fr) * 2022-03-24 2023-09-28 Vitesco Technologies GmbH Procédé de gestion d'exécution d'une pluralité de fonctions
FR3133934A1 (fr) * 2022-03-24 2023-09-29 Vitesco Technologies Procédé de gestion d’exécution d’une pluralité de fonctions

Also Published As

Publication number Publication date
FR2956913B1 (fr) 2012-04-20
WO2011107405A1 (fr) 2011-09-09

Similar Documents

Publication Publication Date Title
EP1337919B1 (fr) Procede de securisation rendant deterministe l&#39;execution en temps reel d&#39;applications multitaches du type controle-commande avec confinement d&#39;erreur
CN101334721B (zh) 线程活锁单元
FR2881239A1 (fr) Procede de gestion d&#39;acces a des ressources partagees dans un environnement multi-processeurs
EP2987081B1 (fr) Procédé d&#39;allocation temporelle de tâches permettant une récupération d&#39;erreur deterministe en temps réel
FR2950714A1 (fr) Systeme et procede de gestion de l&#39;execution entrelacee de fils d&#39;instructions
FR2972545A1 (fr) Controle de flux d&#39;instruction commande par des instructions de programme
EP3123344B1 (fr) Procede de transfert de donnees entre taches temps reel utilisant un controleur memoire dma
EP3182292B1 (fr) Procédé de prédiction d&#39;une donnée a précharger dans une mémoire cache
FR3047821A1 (fr) Procede et dispositif de gestion d&#39;un appareil de commande
EP2498184A1 (fr) Dispositif pour l&#39;amélioration de la tolérance aux fautes d&#39;un processeur
EP4042277A1 (fr) Procédé de simulation parallèle reproductible de niveau système électronique mis en oeuvre au moyen d&#39;un système informatique multi-coeurs de simulation à événements discrets
EP1715438A1 (fr) Procédé de traitement d&#39;interruptions non sécurisées par un processeur opérant dans le mode sécurisé, processeur associé
EP2850520B1 (fr) Procede de gestion d&#39;une execution de taches dans un systeme informatique
FR2956913A1 (fr) Procede de sequencement deterministe multitache
EP0435718A1 (fr) Processeur à plusieurs unités microprogrammées avec mécanisme d&#39;exécution anticipée des instructions
EP1596286A2 (fr) Dispositif et procédé de gestion d&#39;un état d&#39;attente d&#39;un microprocesseur
FR2980611A1 (fr) Circuit pour planifier le deroulement d&#39;un traitement de donnees
EP1098525A2 (fr) Décodeur MPEG utilisant une mémoire partagée
WO2020016511A1 (fr) Procédé d&#39;accéleration de l&#39;exécution d&#39;un programme à chemin unique par exécution en parallèle de séquences conditionnellement concurrentes
EP2572253B1 (fr) Procede d&#39;optimisation de gestion de veille d&#39;un microprocesseur permettant la mise en oeuvre de plusieurs coeurs logiques et programme d&#39;ordinateur mettant en oeuvre un tel procede
Garg et al. Extended Batch Sessions and Three-Phase Debugging: Using DMTCP to Enhance the Batch Environment
FR3014215A1 (fr) Procede de gestion des ressources de calcul d&#39;applications logicielles
FR3140969A1 (fr) Procédé de gestion d’un appel système et produit programme d’ordinateur associé
EP2907029B1 (fr) Circuit de verification de l&#39; execution de logiciels critiques
CN117311925A (zh) 使用中断延迟指令同步并发任务

Legal Events

Date Code Title Description
CA Change of address

Effective date: 20150106

PLFP Fee payment

Year of fee payment: 7

CD Change of name or company name

Owner name: SAFRAN ELECTRONICS & DEFENSE SAS, FR

Effective date: 20161208

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

PLFP Fee payment

Year of fee payment: 11

PLFP Fee payment

Year of fee payment: 12

PLFP Fee payment

Year of fee payment: 13

PLFP Fee payment

Year of fee payment: 14

PLFP Fee payment

Year of fee payment: 15