• Aucun résultat trouvé

Caractérisation du comportement mémoire d’une tâche

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

x

cpi

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 t

Figure 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