WO2011107405A1 - Procédé de séquencement déterministe multitâche - Google Patents

Procédé de séquencement déterministe multitâche Download PDF

Info

Publication number
WO2011107405A1
WO2011107405A1 PCT/EP2011/052833 EP2011052833W WO2011107405A1 WO 2011107405 A1 WO2011107405 A1 WO 2011107405A1 EP 2011052833 W EP2011052833 W EP 2011052833W WO 2011107405 A1 WO2011107405 A1 WO 2011107405A1
Authority
WO
WIPO (PCT)
Prior art keywords
task
sequencing
execution
tasks
period
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.)
Ceased
Application number
PCT/EP2011/052833
Other languages
English (en)
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
Publication of WO2011107405A1 publication Critical patent/WO2011107405A1/fr
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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

Definitions

  • the present invention relates to the field of methods of sequencing tasks in a multitasking information system.
  • methods for predictability of execution times for systems used in environments where security is critical are for example the field of embedded software in aircraft, nuclear power plants or military systems.
  • the operation of a processor may be schematized in cycles consisting of a first step of transferring an instruction and data from the memory to registers of the processor, a second step executing the instruction on these registers and a third step transferring the result of the registers to the memory.
  • a task is called a software function that executes on a processor and typically consists of a succession of such computation cycles.
  • the cache memories are blocks of fast memory serving as an intermediary between the processor and the main memory containing the instructions and the data.
  • the cache memory is characterized by an access time of one or two orders of magnitude less than access to the main memory.
  • this cache memory is empty and the memory accesses are made in main memory.
  • the instructions and data read from the main memory remain stored in the cache memory.
  • a new access to these instructions or data causes them to be read in the cache, so much faster, and not in the main memory.
  • Processes known as write-through and write-back are two well-known policies for managing the consistency between the contents of the cache memory and that of the main memory. These consistency policies will be detailed later. It is easy to understand that the use of cache memory greatly influences the execution time of a given task.
  • a processor is basically single task.
  • a sequencer which, when it is launched, decides, according to its sequencing policy, if it interrupts the current task and in this case which one of those which are waiting will become the current task.
  • Each failover causes a context switch where the ordinal counter, the pointer to the next instruction to be executed, and the processor registers are saved before failover to be restored when the task becomes active again.
  • the first mode appeared is the cooperative mode of operation.
  • the call to the sequencer is made during the calls to the system, especially at the end of the task, and must be provided in the code of each task.
  • This mode has the disadvantage that it is not possible to ensure fair access to the processor for the different tasks.
  • a second multitasking mode of operation consists of a so-called preemptive mode.
  • the sequencer is also started on occurrence of event (s) external (s) to the current task.
  • a periodic preemptive sequencer causes the switching of an active task to another task at the end of each sequencing period and at the end of the execution of an instance of a task. It is then possible, when desired, to ensure fairness access to the processor or implement any desired sequencing policy. This can take into account the availability of other resources or the level of priority between tasks. This is the mode of operation of the most common multitasking systems currently.
  • the timing of the switch between two tasks when operating a preemptive multitasking sequencer affects the total amount of time that the task will run due to the use of the cache memory. Indeed, during the execution of a task, the filling rate of useful data of the cache memory evolves. When switching, the data that is useful to a task is usually useless for the new one. If this switchover takes place at a time when the cache is almost empty in useful data, it is hardly penalizing. While when the failover takes place while the cache is full of useful data, it is penalizing because we lose this useful data that will need to be reloaded from the main memory when the task becomes active again.
  • the invention aims to achieve the above goal of independence by providing a method of sequencing tasks in a preemptive multitasking system where the launch times of the tasks are determined.
  • this method invalidates the cache memory during the switchover between tasks but allows however the operating mode delayed (write-back in English) of this cache memory under certain conditions.
  • This method makes the execution time of each task independent while maintaining a high level of performance.
  • the invention relates to a method of sequencing a set of periodic tasks on an information processing processor, each task having its own period, the sequencing being periodic and preemptive, meaning that the sequencing causes the switching of a task activates to another task at the end of each sequencing period and at the end of the execution of an instance of a task, which includes the following steps:
  • the cache memory is disabled.
  • the processor having a cache memory capable of operating in a transparent mode and in a delayed mode, the method furthermore comprises when switching from an active task to a new task:
  • the method furthermore comprises:
  • the invention also relates to an information processing device which comprises at least one processor capable of performing tasks; periodic and preemptive sequencing means signifying that the sequencing causes the switching of an active task to another task at the end of each sequencing period and at the end of the execution of an instance of a task, for the sequencing of a set of periodic tasks, each task having a specific period; and which furthermore has means for taking into account for each task a time limit allocated to the execution of an instance of this task; means for introducing a waiting step that the duration limit allocated to a task elapses before causing the switchover when an instance of said task is completed and means for invalidating the cache memory during a failover.
  • Fig. 1 illustrates an example of task splitting at design in a non-preemptive periodic sequencer
  • Fig. 2 illustrates the same example of splitting task at runtime in a preemptive periodic sequencer
  • Fig. Figure 3 illustrates the influence on other tasks that a task may have when stealing time.
  • Fig. 4 illustrates the operation of the sequencer according to an exemplary embodiment of the invention.
  • the invention is in the context of the periodic execution of tasks on a processor in an information processing system. We try to be able to guarantee the operation of each task and to control its consumption in processor time. To do this, it is necessary to determine a maximum duration of operation of each task according to a scenario of worst case. When we do that, security comes from mechanisms that prevent a malfunction of a task from affecting the operation of other tasks.
  • the period is marked by vertical dashes numbered from 0 to 6.
  • T0 has a duration less than the duration of the period and must run all periods.
  • the task Tl has a duration greater than the duration of the period and runs every two periods.
  • the basic period of the sequencer advantageously corresponds to the period of the task whose period is the shortest. This example can naturally extend to any number of periodic tasks whose period is a multiple of the base period.
  • the task T1 is divided into two tasks TU and T12 by the designer.
  • the task T0 is started. When it finishes, the sequencer performs a switchover to the TH task. When this ends, there is no more task for the current period, the processor is inactive until the next period. At the beginning of the next period, task T0 is restarted. When it ends, the sequencer switches to the second task T12. This operation is repeated.
  • Fig. 2 illustrates the operation of a preemptive sequencer for the same two tasks T0 and Tl.
  • the designer no longer has to divide the task Tl into two tasks TU and T12.
  • the sequencer allows the task T1, named by facility Tl 1, to rotate until the end of the first period. It is only at the end of the first period that the sequencer preempts the task T1 to perform a switch to the TO task. This interruption typically requires the backup of the context of the task T1 to allow its subsequent restoration.
  • the sequencer performs the switchover on the task T1, it restores it and the restart.
  • the operation differs from the previous one in that it is the end of the period which determines the division of the task T1 into two temporal segments TU and T12. These segments will differ from one period to another because of the variability of the TO execution time.
  • the duration of execution of a task is not fixed. It varies according to several factors, the main one being that it depends on the data actually processed which typically vary from one execution instance to another. For example, a branch of the code will be borrowed or not depending on the value of an external data.
  • the precise duration of the TO task is therefore variable.
  • the start time of the task T1 is also variable, and the processing carried out in T1 at the end of the period that triggers the interruption of the task T1 is therefore variable as well.
  • Fig. 3 illustrates such a problem.
  • a sequencer operating in the mode illustrated in FIG. 2. One looks more precisely what happens between the moment 2 and the moment 4.
  • the execution instance of the task T0 started at time 2 and referenced TOc is prolonged in an unusual way almost until 'at the end of the period. It ends all the same and the sequencer performs the switchover on the task Tl which is almost immediately interrupted at time 3.
  • the normal execution of an instance of the task T0 then the normal switchover to the task Tl here referenced T12c.
  • the state of the art is based on the determination of a time limit for the execution of the processing of a task called "deadline". This time limit is allocated for each instance of execution of this task, and if it is reached, it is a sign of a malfunction and the sequencer then launches the next task. It is determined using the estimation of a course of worst case. The particular mode of determination is outside the description of this document.
  • the invention adds to this state of the art the fact of making constant the duration of execution of the tasks: they then have as duration their own deadline.
  • the sequencer is then programmed to switch between two tasks once the duration limit associated with a given task has elapsed and not after the completion of the processing of the task. The moment of switching between the tasks is rendered deterministic.
  • Fig. 4 illustrates such operation.
  • the time limit associated with the execution of the TO task is called DO.
  • the one associated with the task T1 is called D1.
  • Fig. 4 shows only the first two periods of operation of the sequencer, this operation is then repeated identically.
  • the task TO is started at time 0, D0 indicating the end of its duration limit. His treatments actually end a little before D0.
  • the sequencer does not switch to the task Tl before D0. It introduces a L0 waiting period for the task's time limit to elapse before triggering the switchover.
  • the operation of the processor between the end of the processing of the task T0 and the duration limit D0 is free. For example, it can be put to sleep, queued, or self-powered up to the D0 time limit.
  • the sequencer When this limit is reached, the sequencer causes the switchover to the task T1.
  • the execution of T1 or more precisely of the first segment T1 of T1 is interrupted by the end of the period at time 1.
  • the sequencer then causes the switchover to a new execution instance of the task T0. In the figure, this occurrence lasts less than the first. It is extended by a waiting period L0 to the duration limit D0 linked to this new occurrence.
  • the sequencer then causes a new switch to the previously interrupted task T1 and starts the second segment T12 of the task T1. This is extended by a waiting period L1 to wait for the duration limit D1 associated with the task T1.
  • a first mode is called write-through in English, we will call it transparent mode in this document.
  • data is written at the same time in the cache memory and in the main memory.
  • the content of the cache memory is always consistent with that of the main memory.
  • This transparent management mode has the advantage of facilitating the operation of the multi-processor architectures, because it solves the problems of coherence, but it is generally slower than the other mode, in particular in case of burst writings, because the data is systematically written in the main memory.
  • a second mode of operation is called write-back in English, we will call it delayed mode in this document.
  • the data is written to the cache memory only.
  • Each location of the cache memory is associated with a bit of consistency ⁇ dirty bit in English) that is set to one when writing. This bit indicates that the stored data is not coherent with the main memory and must be copied to main memory. This copying is done when the processor needs to recover a location in the cache. This copy ensures the consistency of the cache memory and the main memory, the coherence bit is then reset.
  • This mode of operation is faster because the effective copying of the memory cache data takes place only when it is really necessary. It is for this reason that it is called delayed mode in this document, the writing in memory being delayed.
  • cache invalidation There is a particular cache management operation that is called cache invalidation. It consists of a complete and instantaneous reset of the cache which returns to the state where it was at power-up, that is to say that it no longer contains any information. It makes it possible to empty the cache memory quickly when one is sure that the data which it contains is obsolete and does not need to copy in memory. In fact, the invalidation of the cache causes the loss of data that has not been copied to memory.
  • the sequencer introduces a step of invalidating the cache memory during a toggling operation between two tasks.
  • This operation makes the execution of the task independent of other tasks because each segment starts on an empty cache.
  • this invalidation it is necessary to ensure coherence between the cache memory and the main memory when the sequencer regains control.
  • This consistency unlike invalidation which is instantaneous, takes a significant amount of time proportional to the number of non-coherent ⁇ dirty in English) locations of the cache. It is easy to perform at the end of treatment for an uninterrupted task. On the other hand, an interruptible task, during its execution, can not easily anticipate the moment of interruption.
  • the problem is the transparent mode itself which is penalizing in execution time.
  • switching between tasks has been made deterministic by introducing the time limits imposed on each task, it is easy to determine when a task is launched if the last segment of this task is launched or not: to find that the duration limit of the task is in the current period or not. If the new active task is brought to an end before the expiry of the current sequencing period, the sequencer advantageously authorizes the delayed mode, otherwise it forces the transparent mode.
  • FIG. 4 it can be seen that when the task Tl is started in the first period between the instant 0 and the instant 1, the segment TU is started, the duration limit D1 does not belong to the current period.
  • the transparent mode is forced.
  • the duration limit D1 belongs to the current period.
  • the last segment is started: the delayed mode is authorized and will therefore be applied if the task is configured in delayed mode.
  • the task must make the cache memory coherent with the main memory. With this condition, we are sure that this cache is specific to the next switchover. As a result, a delayed mode of cache management is advantageously authorized when the last segment of a task is started.
  • the problem is the high variability of the cache coherence time, when this coherence is executed by the sequencer.
  • the sequencer when executed at the end of the task, it is not a problem because its variability will be integrated in the execution time of the task, and thus masked by the duration limit.
  • the sequencer this will cause a significant variability of the subsequent switching instants, thus the loss of the deterministic sequencing.
  • the sequencer therefore performs coherence at constant duration, and therefore at maximum duration. In other words, it could be considered a mini-task with its own duration limit.
  • This constant duration of coherence is counterbalanced by the gain generated by the execution of the previous segment in delayed mode, except when this segment is short: in this case, the effect can be very harmful.
  • the sequencer knows the duration and the number of the segment that it launches.
  • it can therefore force the transparent mode on a non-final segment deemed too short, or according to a predefined choice depending on the number, and so, when later it will preempt it, it will not have to put the cache in coherence.
  • the second strategy is in fact an extension of the first one: the first authorizes the delayed mode on the final segments, the second authorizes moreover on selected non-final segments.
  • the second allows maximum use of the delayed mode while ensuring the independence of the execution of the tasks.

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

Procédé de séquencement déterministe multitâche
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 write- back 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 œuvre 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 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 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 :
- 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 T0 et Tl, toutes deux périodiques, qui doivent s'exécuter. La tâche T0 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 TU et T12 par le concepteur. Lors d'une première période, la tâche T0 est lancée. Lorsqu'elle se termine, le séquenceur effectue un basculement vers la tâche TH . 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 T0 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 T0 et Tl . Dans ce second exemple, le concepteur n'a plus à diviser la tâche Tl en deux tâches TU et T12. Le séquenceur laisse tourner la tâche Tl, nommée par facilité Tl 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 TU 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 T0 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 T0 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 T0 n'influe pas négativement le fonctionnement de T0, 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, D0 indiquant la fin de sa limite de durée. Ses traitements se terminent effectivement un peu avant D0. Le séquenceur n'effectue pas de basculement vers la tâche Tl avant D0. Il introduit une période d'attente L0 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 T0 et la limite de durée D0 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 D0. 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 T0. Sur la figure, cette occurrence dure moins longtemps que la première. Elle se prolonge par une période d'attente L0 jusqu'à la limite de durée D0 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 Ll 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 T0 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 Tl 1.
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. Il 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 TU, 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

REVENDICATIONS
1/ 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 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.
21 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 :
- 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 :
- 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.
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.
PCT/EP2011/052833 2010-03-01 2011-02-25 Procédé de séquencement déterministe multitâche Ceased WO2011107405A1 (fr)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
WO2011107405A1 true WO2011107405A1 (fr) 2011-09-09

Family

ID=42937056

Family Applications (1)

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

Country Status (2)

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

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3133934B1 (fr) * 2022-03-24 2024-08-09 Vitesco Technologies 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] *

Also Published As

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

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
EP2987081B1 (fr) Procédé d&#39;allocation temporelle de tâches permettant une récupération d&#39;erreur deterministe en temps réel
BE1007932A7 (fr) Procede et circuit de memorisation et de hierarchisation d&#39;ordres d&#39;effacement dans un dispositif de memoire.
TW200941340A (en) A method and apparatus for suspending execution of a thread until a specified memory access occurs
FR2972545A1 (fr) Controle de flux d&#39;instruction commande par des instructions de programme
WO2010133160A1 (fr) Procédé et dispositif de correction de programme dans un environnement multicoeur
EP2338109A2 (fr) Procede d&#39;execution deterministe et de synchronisation d&#39;un systeme de traitement de l&#39;information comportant plusieurs coeurs de traitement executant des taches systemes
FR3047821A1 (fr) Procede et dispositif de gestion d&#39;un appareil de commande
EP3182292B1 (fr) Procédé de prédiction d&#39;une donnée a précharger dans une mémoire cache
WO2021069626A1 (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
EP0919026A1 (fr) Procede de modification de sequences de code et dispositif associe
EP2498184A1 (fr) Dispositif pour l&#39;amélioration de la tolérance aux fautes d&#39;un processeur
WO2011107405A1 (fr) Procédé de séquencement déterministe multitâche
EP2850520B1 (fr) Procede de gestion d&#39;une execution de taches dans un systeme informatique
EP0435718A1 (fr) Processeur à plusieurs unités microprogrammées avec mécanisme d&#39;exécution anticipée des instructions
US10002077B2 (en) Persistent memory controller based atomicity assurance
CN105843680B (zh) 一种防止误操作多次启动同一个页面的方法及装置
EP1410178B1 (fr) Procede et systeme de gestion du temps dans un systeme temps reel
FR3140969A1 (fr) Procédé de gestion d’un appel système et produit programme d’ordinateur associé
EP3807757A1 (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
EP2907029B1 (fr) Circuit de verification de l&#39; execution de logiciels critiques
CN117909081A (zh) 任务处理方法、装置、电子设备、介质及程序产品
WO2013121148A1 (fr) Procédé et dispositif de gestion d&#39;exécution de processus dans un système informatique
WO2011144847A1 (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

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11705570

Country of ref document: EP

Kind code of ref document: A1

DPE1 Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101)
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11705570

Country of ref document: EP

Kind code of ref document: A1