110 likes | 209 Views
Génération de simulateurs de jeux d’instructions compilés. Ronan AMICEL IRISA / Equipe CAPS. Motivation. Offrir un outil permettant : le choix des paramètres principaux d’un processeur jeu d’instructions, taille des caches, etc. la validation d’un compilateur
E N D
Génération de simulateurs de jeux d’instructions compilés Ronan AMICEL IRISA / Equipe CAPS
Motivation • Offrir un outil permettant : • le choix des paramètres principaux d’un processeur • jeu d’instructions, • taille des caches, etc. • la validation d’un compilateur • l'écriture et la validation des applications
Approche • Programmes assembleur en entrée • pas de codage binaire à définir • Simulation compilée • hautes performances • permettre des benchmarks conséquents
Vue d’ensemble Source C tmcc Assembleur TriMedia Description de l’architecture générateur tmas Source C++ Binaire TriMedia gcc/ld tmsim simulateur compilé
Description del’architecture • Description SALTO • syntaxe assembleur • tables de réservation • Il faut la sémantique des instructions • effet sur les registres et la mémoire • effet sur le flot de contrôle
Description de la sémantique • Exemple 1 • modulo add : iadd r,s -> d • sémantique : $3=add($1,$2) • Exemple 2 • load 2 bytes : uld16r r,s -> d • sém. : $3=zx(mem(add($1,$2),2),32)
Simulation compilée • Génération du code C/C++ à partir du source assembleur • Spécialisation par rapport au code d ’une application • élimine le surcoût de l’interprétation • Possibilités d’optimisations statiques
Optimisation du code généré (1/2) • Différent de l’optimisation du code simulé • Sémantique : simplification de la représentation intermédiaire • évaluation partielle des opérateurs : • r1-> r8 = addsu( 255, r4 ); • r8 = 255; • suppression du code inutile : • r6 = 0; r6 = r12; • r6 = r12;
Optimisation du code généré (2/2) • Nombre de cycles nécessaires • calcul statique au niveau du bloc de base • Usage des ressources • non implémenté
Etat d’avancement • Description de l’architecture TriMedia • Prototype de générateur • simulation fonctionnelle • calcul du nombre de cycles • performances