Mots clés : collecte de traces,
simulation .
Résumé :
La validation des nouvelles idées en architecture de
processeurs passe par la simulation la plus précise
possible du microprocesseur et de tout son environnement.
Cette simulation doit être faite cycle par cycle et doit
tenir compte de l'ensemble des interactions à l'intérieur
du processeur. De plus cette simulation doit être faite sur
des applications si possible représentatives de la charge
d'un processeur dans son environnement potentiel
d'utilisation.
Deux approches sont utilisées, la simulation dirigée
par l'exécution et la simulation dirigée par les traces.
Nous décrivons ici ces deux approches, leurs intérêts et
limitations réciproques.
Afin de valider, au niveau performance, les architectures
de processeurs, la simulation est le seul outil accepté aussi
bien par l'industrie que par la communauté de recherche.
Cette simulation doit être faite avant le début de la
conception matérielle.
Cette simulation doit être la plus précise possible et
tenir compte de l'ensemble des interactions à l'intérieur du
processeur. Deux approches peuvent être utilisées : la
simulation dirigée par les traces et la simulation dirigée
par l'exécution.
La simulation d'architecture dirigée par les traces
présente l'avantage de décorréler la simulation de
l'architecture de la collecte de traces [UM97].
Ainsi on pourra simuler une architecture en lui fournissant
la trace de l'exécution d'une application c'est-à-dire par
exemple la liste des instructions exécutées et des adresses
accédées en mémoire. Cette approche a été utilisée depuis
très longtemps en architecture de processeurs. Les traces
peuvent être collectées soit par matériel, soit par
logiciel.
La collecte de traces d'exécution par matériel (analyseur
logique) a été utilisée tant que les données et instructions
circulaient sur les pattes d'entrées/sorties des processeurs.
Sur les processeurs actuels, la collecte de traces ne peut
plus être faite de cette manière. Ce qui explique que la
collecte de traces par instrumentation logicielle soit la
plus utilisée par la recherche en architecture (et aussi par
l'industrie). Des outils adaptés à chaque jeu d'instructions
sont aujourd'hui disponibles (Pixie, Atom, spy,
EEL,...). Ces outils présentent le défaut de
ne pouvoir tracer qu'une seule application et ne permettent
pas en général de tracer l'activité système du processeur.
Enfin le ralentissement des applications tracées est
considérable (facteur 10-100) et ne permet pas d'envisager le
traÇage réaliste d'applications de grande taille (plusieurs
centaines de milliards d'instructions). Enfin, elle est
inappropriée pour la simulation réaliste de processeurs
permettant l'exécution spéculative (c'est-à-dire prédisant
les branchements et exécutant dans le désordre) :
l'exécution spéculative requiert l'accès (en lecture) aux
instructions de la fausse branche ainsi qu'aux données en
mémoire de l'application tracée.
La simulation dirigée par l'exécution nécessite
l'exécution par le simulateur de l'application tracée
elle-même. Cette approche permet contrairement à la
simulation dirigée par les traces de simuler l'impact des
instructions exécutées spéculativement. Cependant cette
approche peut s'avérer extrèmement lourde puisqu'il faut être
capable de simuler non seulement le code directement écrit
par le développeur, mais aussi les appels à des bibliothèques
dynamiques et les appels systèmes, c'est-à-dire toutes les
opérations susceptibles de modifier le contenu de la mémoire
associée à l'application tracée. Cette approche a été suivie
dans le simulateur SimOS. SimOS [RHWG95] est le simulateur complet d'une
station MIPS ``bootant'' le système Irix.
L'avantage de SimOS est ainsi
de permettre de simuler un processeur avec l'ensemble de son
système d'exploitation. Par contre, les performances de la
simulation restent très limitées et ne permettent pas
d'envisager la simulation des ``grosses'' applications
(plusieurs centaines de milliards d'instructions).
Le constat global est que la majeure partie des études
pour les architectures de demain sont faites sur des
traces d'applications dont on a souvent réduit le volume pour
permettre des temps de simulation acceptables. Ceci peut
conduire à des erreurs majeures pour le dimensionnement de
structures telles que prédicteurs de branchement, antémémoire
ou TLBs (cache de traduction d'adresses). Le
challenge en recherche pour la simulation réaliste
d'architectures de processeurs est en fait, aujourd'hui, de
parvenir à simuler le comportement des applications en vraie
grandeur et dans leur environnement système.