• Aucun résultat trouvé

Chapitre 3 – Calcul standard du temps d'exécution pire cas

3.4. Analyses des systèmes multi-tâches

3.4.3. Analyse Tan & Mooney

[74] et [75] proposent une approche pour l'analyse temporelle des systèmes temps-réel préemptifs multi-tâches. L'approche se concentre sur le rechargement du cache suite aux préemptions. Le WCRT de chaque tâche est estimé en tenant compte du rechargement du cache. Après avoir obtenu le WCRT de chaque tâche, on peut analyser l'ordonnançabilité du système. Elle cible les systèmes temps-réel mono-processeur, multi-tâches préemptifs avec mémoire cache et utilise aussi un algorithme d'ordonnancement à priorité fixe tel que le RMA

(Rate Monotonic Algorithm).

On considère un système de n tâches représentées par T0 , T1 , ..., Tn-1. Chaque tâche Ti

possède une priorité fixe pi. Les tâches sont ordonnées dans l’ordre descendant de leurs

priorités p0 < p1 < ...< pn-1. Si pa< pb, Ta a une priorité plus grande que Tb. Les tâches

s’exécutent périodiquement. Chaque tâche possède un période Pi. Ti arrive au début de sa

période et doit être complétée avant la fin de sa période. Le WCET de Ti est noté par Ci,

estimé avec un outil d’analyse du WCET existants SYMTA [67]. Ti,j représente la jième

exécution de la tâche Ti. Le WCET d’une tâche est le temps d’exécution dans le cas pire sans

interruption, ni préemption. Le WCRT d’une tâche est le temps mis par la tâche depuis le début jusqu’à la fin de son exécution dans le cas pire. On note le WCRT par Ri.

Dans un système multi-tâches préemptif, une tâche ayant une priorité réduite peut être préemptée par une tâche de priorité plus grande. Durant la préemption, la tâche qui préempte peut évacuer des lignes de cache utilisées par la tâche préemptée. Quand cette dernière reprend son exécution et désire accéder à ces lignes de cache, elle doit les recharger à partir de la mémoire principale. Ce rechargement dû aux évictions inter-tâche augmente le temps de réponse de la tâche préemptée.

Il faut tenir compte de deux types de préemptions : préemption directe et préemption indirecte.

Chapitre 3- Calcul standard du temps d'exécution pire cas 3.Méthodes statiques

Pour mieux comprendre la différence, considérons un système de trois tâches T1, T2 et T3 [53, 75]. T1 est une application de contrôle d'un

robot mobile (RM). Le robot met à jour son comportement toutes les 3.5 ms. La tâche T2 est invoquée toutes les 6.5ms pour analyser les images

des obstacles détectés par le robot. La tâche T3 communique avec les

autres robots toutes les 40ms. La figure 3.25 montre cet exemple où les trois tâches sont activées à la date t = 0. Cependant la tâche T3 ne

peut s'exécuter qu'après l'exécution des instances T1.1 et T2.1 des tâches

T1 et T2 respectivement. T3 peut être préemptée par T1 et T2. La

préemption de T3.1 par T2.2 est directe tandis que la préemption de T3.1

par T1.3 est indirecte vue que cette préemption est engendrée par la

préemption de T2.2 par T1.3. Notons que les rectangles noirs indiquent le

coup de la préemption.

On effectue l’analyse du chemin pour la tâche préemptée et celle qui préempte pour analyser l'impact de la préemption sur le comportement de la tâche préemptée dans le cache. L’analyse du chemin est basée sur la représentation d'une tâche par un graphe de flot de contrôle ayant pour noeuds les SFP-PrS (Définition 13).

Définition 14 (Blocs utiles) – Un bloc mémoire est dit utile pour une tâche T préemptée par

une tâche T ' si ce bloc est évacué du cache par la tâche T ' et doit être rechargé dans le cache par ce qu'il est utilisé par T après la préemption.

L'approche comporte quatre étapes:

1. On dérive la trace mémoire de chaque tâche avec la méthode de simulation de SYMTA. On suppose qu’il n’y a pas d’allocations dynamiques de données dans les tâches et que les adresses des structures de données sont fixes.

2. On effectue l’analyse intra-tâche de l’accès au cache pour la tâche préemptée pour trouver l’ensemble des blocs utiles accédés par cette tâche.

3. On utilise cet ensemble de blocs de la tâche préemptée pour effectuer l’analyse inter-tâche de l’éviction du cache avec les tâches qui la préemptent (c.à.d toutes les tâches de priorité supérieures). Une analyse du chemin est appliquée à chacune de ces tâches pour réduire l’estimation du chargement du cache à cette étape. Dans cette étape, on obtient un nombre estimé des lignes de cache qui nécessitent d’être rechargées après la préemption.

4. On effectue l’analyse du WCRT pour toutes les tâches en se basant sur les résultats de la troisième étape.

L'approche applique la formule récursive suivante pour évaluer le WCRT de chaque tâche.

Formule 3.6 - Calcul récursif du WCRT d'une tâche Ti

Rik =C

i

j ∈hp i 

Rik −1

Chapitre 3 - Calcul standard du temps d'exécution pire cas 3.Méthodes statiques où hp(i) – ensemble des tâches de priorité supérieure à Ti ; Ccs – coût de changement de

contexte (supposé constant); Ci , Cj – WCET(Ti) , WCET(Tj) respectivement; Pj – période de

Tj.

L'itération de cette formule se termine s'il y a une convergence Rik =Rik−1 pour une

itération k. On compare ensuite la valeur Ri obtenue à l'échéance Di de la tâche. Si Ri < Di

donc les tâches sont ordonnançables sinon elles ne sont pas ordonnançables. On a besoin d'effectuer ce calcul pour toutes les tâches du système à l'exception de la tâche qui possède la plus grande priorité. Ainsi le problème a une complexité proportionnelle au nombre de tâches du système.

Le WCRT est calculé suite à une analyse intra- et inter- tâche du cache d'instructions qui exigent le calcul d'une liste d'ensembles de L-blocs pour chaque instance des tâches dans l'ordonnancement. Ces ensembles sont utilisés dans la phase finale pour le calcul du WCRT d'une manière itérative. Cette méthode est testée sur des configurations simples de tâches qui 1) ne représentent pas les caractéristiques d'une application temps-réel complète et 2) ne fournissent aucune preuve que cette méthode peut être appliquée aux systèmes réels plus complexes vu la complexité du calcul effectué. Cette approche est applicable pour des caches d'instructions à accès direct ou associatif, mais pour l'appliquer aux caches de données les références lecture / écriture doivent être statiques pour connaître à l'avance leurs adresses. La connaissance de l'adresse des instructions et des données est une hypothèse nécessaire pour l'application de cette approche.

Documents relatifs