• Aucun résultat trouvé

Chapitre I : Contexte et Etat de l’art

III.1.2 Présentation générale

Le processeur LEON3 est un processeur 32 bits qui est fondé sur le jeu d’instructions SPARC V8 [SPA92]. Le code source est disponible sous licence GNU GPL. Il est configurable à

93

l’aide de paramètres génériques VHDL. Il est ainsi possible d’implanter plusieurs configurations de mémoire cache.

Figure III-1 : Schéma du processeur cible LEON3

La Figure III-1 illustre l’architecture du LEON3, qui possède les caractéristiques suivantes : - un pipeline entier constitué de 7 étages,

- une architecture Harvard : un cache de données et un cache d’instructions séparés, de tailles configurables,

- un multiplieur et un diviseur matériels (optionnels), - une unité de débogage intégrée,

- une extension multiprocesseur.

Le LEON3 dispose un système de mémoires configurables. Le cache L1 de données et le cache L1 d’instructions peuvent être paramétrés en nombre de pages (1 à 4), taille de page (1 à 256 KB), nombre de mots par ligne (4 ou 8), et politiques de remplacement des lignes (LRU, aléatoire …).

Par ailleurs, les mémoires cache sont configurées par défaut en mode « write-through » et il n’y a pas d’allocation en mémoire cache de données lors d’une écriture avec un cache miss. La MMU et les buffers de translation TLB n’ont pas été activés pour le système implanté.

3- Port Register File LEON3 7- Stage Integer Pipeline Trace Buffer Debug port Interrupt port IEEE-754 FPU Co-Processor HW MUL/DIV Local DRAM Local IRAM I-Cache D-Cache

ITLB SRMMU DTLB

AHB I/F

Debug support unit Interrupt controller

94 III.2 Application de la méthodologie

Le simulateur associé à ce processeur est le simulateur cycle-accurate TSIM. Il est disponible en version d’évaluation mais est limité et ne permet pas d’appliquer la méthodologie proposée [TSI13]. En effet, ce simulateur ne dispose pas de signaux de performance accessibles dans sa version d’évaluation. Ainsi, le simulateur ModelSIM a été préféré pour appliquer la méthodologie. Celui-ci ne dispose pas de signaux de performance, mais il offre la possibilité de simuler tous les signaux du processeur LEON3 et donc de disposer des signaux relatifs aux accès en mémoire cache. Les signaux de performance et d’accès en cache ont été créés à partir de la lecture des différents signaux du LEON3 ; cette méthode présente l’avantage d’être non intrusive.

Figure III-2 : Schéma de la méthode appliquée au processeur LEON3

L’application de la méthodologie proposée pour un processeur LEON3 consiste à exécuter une application dans le simulateur MODELSIM puis, à partir des signaux accessibles du LEON3, de recréer des informations de profilage. Ces informations sont ensuite envoyées à l’analyseur de cache pour calculer le facteur de décote de l’application (Figure III-2).

III.2.1 Identification des signaux de performance et d’accès en cache

Pour appliquer la méthodologie présentée dans le chapitre précédent, il est nécessaire de contrôler, durant l’exécution d’un programme, les signaux de performance « cache hit » et « cache miss », qui indiquent si la donnée sollicitée par le CPU est présente ou non dans le cache. Pour le cache de données, les signaux d’accès sont surveillés pour indiquer le type d’accès (lecture ou écriture) afin d’identifier la criticité de la donnée. L’adresse et la taille de la donnée sont aussi des paramètres à prendre en compte.

Le cache d’instructions n’étant accessible qu’en lecture seule, le compteur de programme est le principal élément à analyser.

Simulateur ModelSIM Analyseur de cache Facteur de décote

Temps d’accès Taille de donnée Type d’accès Adresse

Cache hit/cache miss

LEON3 L1 donnée L1 Instruction Identification des signaux pour l’analyseur Calcul d’adresse Identification de phases critique Calcul de temps critique Configuration cache πAPPLI ICacheVF DCacheVF

95

Afin de retrouver les principaux éléments, une étude détaillée du comportement des mémoires cache du processeur LEON3 a été réalisée et est présentée ci-dessous.

Tout d’abord, il est important d’identifier l’étage du pipeline où les mémoires caches sont sollicitées.

Figure III-3 : Pipeline du LEON3 avec accès aux mémoires caches

Le pipeline du LEON3 est composé de 7 étages : Fetch, Decode, Accès aux registres, Exécution, Accès mémoire (« Memory »), Exception et Complétion (« write-back »). Les accès en mémoire cache d’instructions se font uniquement à l’étage « Fetch » et les accès en mémoire cache de données à l’étage « Memory ». De ce fait, l’identification des signaux nécessaires à l’élaboration de la méthode proposée se concentrera uniquement sur ces deux étages.

La Figure III-4 illustre le fonctionnement simplifié de la mémoire cache d'instructions du LEON3. À l’étage « Fetch » du pipeline, une requête au contrôleur de cache est effectuée. Pour l’analyse du cache, les signaux en sortie de l’étage « Fetch » du pipeline correspondant au compteur de programme PC, sont utilisés pour identifier l’adresse de l’instruction recherchée en mémoire cache. La machine d’états au sein du contrôleur de cache permet d’indiquer le résultat de la requête.

96

Figure III-4 : Schéma simplifié d'accès au cache d'instructions

Figure III-5 : Schéma simplifié d'accès au cache de données

La Figure III-5 montre les signaux du LEON3 qui permettent d’écrire ou de lire en mémoire cache de données. Comme pour le cache d’instructions, les signaux de la machine d’états du contrôleur de cache sont utilisés pour identifier les accès « cache hit » et « cache miss ». Par ailleurs, les signaux indiquant s’il s’agit d’un chargement ou d’un stockage sont aussi nécessaires pour identifier la criticité d’une donnée.