2.5 Caractérisation du comportement mémoire d’une tâche
Nous nous intéressons ici aux métriques disponibles pour caractériser le comportement
d’une tâche vis-à-vis des caches. Dans la partie qui suit, nous verrons que certaines de
ces métriques peuvent être utilisées par des ordonnanceurs pour utiliser au mieux les
caches. Ces métriques servent également d’entrée pour des modèles statistiques que nous
détaillerons dans le chapitre 6. Ces modèles permettent d’évaluer la durée d’exécution des
tâches en fonction des caches disponibles sur un système. La plupart des informations
présentées ci-dessous peuvent être recueillies lors de la phase de compilation [CDRPR00],
par simulation [BLMT12, HE07] ou en exécutant le programme seul dans le système
[SDR02, BH04].
Dans les métriques présentées ci-dessous, un accès au cache peut concerner l’accès à une
instruction ou à une donnée. En conséquence, en fonction du type de cache considéré
(données, instructions, ou les deux), ceci peut nous amener à ne pas prendre en compte
les mêmes accès au cache dans le calcul de la métrique.
2.5.1 Working Set Size
Le modèle le plus simple pour définir une métrique d’observation du comportement du
cache est leWorking Set Size (WSS), ou Working Set, d’un programme. Ce modèle a été
introduit par Denning pour étudier les accès aux pages mémoires [Den68]. Il définit le
WSS d’un processus comme étant une fonction W(t, T) qui a instant t donne le nombre
de pages distinctes auxquelles il a accédé au cours des T dernière références. Cette
va-leur est un indicateur pour estimer la « localité » d’un processus, c’est-à-dire sa capacité
pour travailler efficacement avec une portion réduite de mémoire à un instant donné. De
nombreux travaux se sont attachés à proposer des modèles pour cette métrique ainsi qu’à
l’utiliser pour optimiser l’attribution de la mémoire aux processus [SD72, BV13].
L’utilisation du WSS pour qualifier l’utilisation des mémoires caches a été proposée par
Agarwal et al.[AHH89]. Pour cela, les auteurs modélisent les accès à un cache associatif
en utilisant un WSS moyen. La définition introduite du WSS est le nombre moyen de blocs
du cache différents auxquels un processus a accédé sur un intervalle de temps. Les travaux
menés sur ce modèle indiquent clairement que le WSS est sensible à l’instant de la mesure
à cause des phases dans l’exécution d’un programme (chargement des données, calcul,
etc.). Cette métrique est donc un indicateur moyen du comportement d’un programme,
mais ne permet pas de complètement le qualifier.
La compréhension de cette métrique est relativement intuitive : si la somme desworking
set sizesdes tâches composant un système est inférieure à la taille du cache partagé, alors
les tâches se perturberont peu
3. A l’inverse, le WSS peut être un indicateur simple (mais
imprécis) sur les perturbations que subiront les tâches si la taille du cache est insuffisante.
Des travaux utilisent cet aspect afin de déterminer quelles tâches peuvent s’exécuter en
parallèle afin de limiter leur interférence [ACD06].
2.5.2 Nombre de cycles par instruction
Le nombre de cycles par instruction (CPI) pour un programme correspond au nombre
moyen de cycles processeur nécessaires à l’exécution d’une instruction. Ce CPI sert
d’in-3. Des perturbations pourront persister au niveau des ensembles de lignes dans le cas de caches asso-ciatifs par ensembles
dicateur de performance : plus le CPI est faible et plus le programme est efficace [MB91].
Le CPI d’une tâche s’exécutant seule dans un système est égal au rapport de sa durée
d’exécution en cycles par le nombre d’instructions exécutées [HP12].
Le CPI est directement affecté par les défauts de cache car les délais supplémentaires pour
accéder aux lignes non présentes dans le cache ralentissent l’exécution d’un programme.
Nous utiliserons plusieurs CPI par la suite :
•
cpi_alone : le CPI de la tâche lorsqu’elle s’exécute seule ;
•
base_cpi : le CPI de la tâche sans les pénalités liées aux accès mémoire ;
•
cpi : le CPI de la tâche dans le système en tenant compte du partage éventuel des
caches et/ou des context switch misses.
2.5.3 Fréquence d’accès au cache
Le nombre moyen d’accès au cache par instruction (abrégé en AP I, mais parfois appelé
mix en fonction des auteurs) correspond au rapport entre le nombre d’accès au cache par
rapport au nombre total d’instructions.
AP I = Nombre accès cache
Nombre d’instructions (IC) (2.1)
En couplant l’API au CPI, on peut également en déduire la fréquence d’accès au cache
d’une tâche x [CGKS05] :
Af
x= AP I
xcpi
x(2.2)
Cette métrique est donc un indicateur de l’usage du ou des caches par une tâche.
2.5.4 Stack distance
a) Définition
Un programme effectue un ensemble séquentiel d’accès à la mémoire aux travers des accès
au cache. Une ligne est présente dans un cache LRU associatif si le nombre de lignes de
cache distinctes accédées depuis le dernier accès à cette ligne est inférieur à la capacité
du cache. Mattson et al.ont introduit la mesure de Stack Distance afin de déterminer le
nombre de lignes différentes accédées entre deux accès consécutifs à une même ligne de
cache [MGST70].
La figure 2.15 illustre cette notion de stack distance. Par exemple, lastack distance entre
les deux accès à la ligne A est de 4 (accès aux lignes B, C, D et E).
b) Prise en compte de l’associativité
La mesure de stack distance peut prendre en compte les ensembles d’un cache, il suffit
dans ce cas de ne considérer que les accès à des lignes du même ensemble dans le calcul
de la distance (figure 2.15).
2.5. Caractérisation du comportement mémoire d’une tâche 55
A B C B B E D A D E C 4 1 0 12 4 tFigure 2.15 – Exemple destack distances, les nombres correspondent aux distances.
A B C B B E D A D E C t A B B B A 1 0 0 t C E D D E C 2 0 1 t Ensemble 0 Ensemble 1
Figure2.16 – Exemple destack distancesavec deux ensembles, les nombres correspondent
aux distances.
c) Stack Distance Profile
La distribution de l’ensemble desstack distancesforme leStack Distance Profile(SDP). La
figure 2.17 montre l’exemple d’une telle distribution sous la forme d’un histogramme. Le
SDP contient de l’information sur la localité des accès mémoire d’un programme,
c’est-à-dire sa propension à réutiliser une ligne de cache. La zone hachurée sur la figure représente
les accès à une distance supérieure à l’associativité du cache et qui provoqueront un défaut
de cache avec une politique LRU.
Nb acc`es `a cette distance Nb acc`es total Stack distance 1 2 3 4 5 6 7 8 9 0.1 0.2 0.3 0.4 0.5
Figure 2.17 –Stack Distance Profile représenté sous la forme d’un histogramme.
Remarques : La mesure de SDP est complexe ce qui peut empêcher de le calculer pour
des programmes trop longs [BK75, ACP02]. C’est pour cette raison que certains chercheurs
se sont intéressés à la reuse distancequi est présentée ci-dessous.
Remarquons aussi que sur l’exemple de la figure 2.15, le nombre de distances est inférieur
au nombre d’accès au cache. La différence correspond au nombre de lignes différentes
accédées et qui provoqueront donc un cold miss lors du premier accès. Ainsi, la somme
des valeurs du SDP ne fait pas 1.
2.5.5 Reuse distance
Suite à la remarque précédente, Berg et al. proposent de mesurer le nombre d’accès se
faisant entre deux accès mémoire correspondant à une même ligne du cache. Ceci est plus
rapide à calculer puisqu’il n’est alors plus nécessaire de maintenir une pile des adresses
accédées et il suffit de mémoriser pour chaque ligne différente la date (exprimée en nombre
d’accès depuis le début) du dernier accès.
Cette mesure est appeléereuse distance [BH04]. La figure 2.18 montre un exemple d’accès
mémoire aux lignes de cache A, B, C, D et E ainsi que lesreuse distances.
A B C B B E D A D E C
6
1 0 13
7
t
Figure 2.18 – Exemple dereuse distances, les nombres correspondent aux distances.
Il existe une technique statistique qui permet de calculer la distribution destack distances
à partir d’une distribution de reuse distances et qui donne selon les auteurs de très bons
résultats [EH10].
2.5.6 Récapitulatif
Le tableau 2.2 résume les métriques servant à caractériser le comportement mémoire d’une
tâche qui viennent d’être présentées.
Working Set Size Nombre de lignes de caches nécessaires pour assurer une
(W SS) bonne vitesse d’exécution à une tâche.
AP I Nombre d’accès à la mémoire par instruction.
CP I Nombre de cycles nécessaires en moyenne pour exécuter une
instruction.
base_cpi CPI sans les pénalités d’accès au cache.
cpi_alone CPI pour une exécution seule.
cpi CPI en tenant compte de l’impact des autres tâches.
Stack Distance Nombre de lignes de cache différentes accédées depuis le dernier
accès à la même ligne.
Stack Distance Profile Distribution normalisée de Stack Distances.
(SDP)
Reuse Distance Nombre de lignes de cache accédées depuis le dernier accès à la
même ligne.
Tableau2.2 – Tableau récapitulatif des métriques.
2.6 Prise en compte des caches dans les systèmes
Dans le document
Étude et évaluation des politiques d'ordonnancement temps réel multiprocesseur
(Page 64-67)