1 B. Goossens Autrans Présentation de sim-outorder B. Goossens Dali Université de Perpignan Via Domitia.

Slides:



Advertisements
Présentations similaires
Les carrés et les racines carrées
Advertisements

1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
Produit Gammes Nomenclatures Modules Techniques Prix de Revient Prix de Vente Modules Techniques Client Marges Mise en route Temps Unitaire Prix (Ex:
17 B. Goossens D. Defour17 B. Goossens D. Defour Prédiction des retours Le prédicteur adresse une pile (mémoire à 2 ports)
Présentation du Stage en Entreprise
Architecture de machines Le microprocesseur
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Le mécanisme des exceptions
Classe : …………… Nom : …………………………………… Date : ………………..
Introduction à l’Algorithmique
Les Prepositions.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Formation Technique 6èmepartie.
Jacques Lonchamp IUT Nancy Charlemagne – DUT Informatique 1A
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Présentation de l’application « Livret personnel de compétences »
Performances 1 Évolution : Performance. Performances 2 Évolution : Mémoire.
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
Objectifs Nous allons concevoir une mise en œuvre contenant un noyau de jeu d’instructions. Nous verrons comment l’architecture de jeu d’instructions.
Les éléments de mémorisation
Introduction Par définition, dans un modèle à cycle unique, le cycle d’horloge doit avoir la même durée pour toutes les instructions. Le cycle d’horloge.
1 B. Goossens Autrans Présentation de sim-outorder B. Goossens Dali Université de Perpignan Via Domitia.
Exécution en ordre partiel Une fois les instructions renommées, les seules dépendances qui subsistent entre instructions registre-registre sont les dépendances.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Améliorer les performances du chiffrage à flot SYND
ARCHITECTURE GLOBALE CAPTAGE Traitement DES des données GRANDEURS
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
OCaml - Les listes L3 MI.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Gestion des Périphériques
Analyse lexicale Généralités Expressions rationnelles Automates finis
Serveurs Partagés Oracle
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
La Saint-Valentin Par Matt Maxwell.
Développer en C avec Eclipse Introduction Création d'un projet Ajout de fichiers Compilation Exécution Utiliser le débogueur Département dinformatique.
Louis la grenouille Paroles et musique: Matt Maxwell.
CSI2520, Hiver 2007 Python Un langage de programmation par scripting et plus…
Parallélisme des instructions
Notre calendrier français MARS 2014
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 8 Structure de contrôle.
Partie II Sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Java, les objets : tout de suite ! Rassembler, grouper les objets
C'est pour bientôt.....
Veuillez trouver ci-joint
Équipe 2626 Octobre 2011 Jean Lavoie ing. M.Sc.A.
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
L'Unité centrale (CPU) Le CPU doit être rapide (mesuré en temps de CPU) UNITE DE CONTROLE Générer les signaux de control/temps Contrôler le décodage/exécution.
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
CALENDRIER-PLAYBOY 2020.
1. Présentation générale du système
LES PILES ET FILES.
KIWAPP IS A B2B FULL-STACK APP-MANAGEMENT TOOL KIWAPP EN QUELQUES ETAPES Octobre 2014.
Médiathèque de Chauffailles du 3 au 28 mars 2009.
Relevez le numéro de votre logo préféré et adressez-le à : En cas d’hésitation, vous pouvez choisir jusqu’à 3 logos. Seront pris.
André Seznec Caps Team IRISA/INRIA 1 Processeurs Hautes Performances Panorama et Nouveaux Défis André Seznec IRISA/INRIA
Présentation Finale Spirit 07 / 03 / 2011 Groupe Vert 1 Equipe Verte.
Un survol du language C.
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Étude de cas Maintenant qu’on a vu les pipelines, le superscalaire, le VLIW, la gestion des.
Architecture et technologie des ordinateurs II
CST 101 : Conception des systèmes de télécommunication
Transcription de la présentation:

1 B. Goossens Autrans Présentation de sim-outorder B. Goossens Dali Université de Perpignan Via Domitia

2 B. Goossens Autrans Plan de l'exposé A quoi sert sim-outorder? La structure de sim-outorder. Le pipeline de sim-outorder. Utiliser sim-outorder. Adapter sim-outorder. Conclusion.

3 B. Goossens Autrans Quand utiliser sim-outorder? Micro-architecture. Architecture (nouvelle instruction). Profilage (chemin hors trace). Enseigner l'assembleur (avec Dlite!).

4 B. Goossens Autrans Quand ne pas utiliser sim-outorder? Statistiques sur benchmarks (sim-profile). Performance de la hiérarchie mémoire (sim-cache, sim-cheetah). Performance de la prédiction de sauts (sim-bpred).

5 B. Goossens Autrans Composants du simulateur Un pipeline à 5 étages (f,d,i,(x),w,c) Une hiérarchie mémoire à 3 niveaux + tlb Un prédicteur de sauts paramétrable Des stations de réservation (# paramétrable) Une file des chargements/rangements

6 B. Goossens Autrans Architecture simulée Pisa (Portable ISA) et Alpha Pisa: instructions sur 64 bits MIPS IV-like 32 registres entiers, 32 registres flottants Appels systèmes par instruction SYSCALL

7 B. Goossens Autrans Architecture simulée

Micro-architecture simulée 8 B. Goossens Autrans

9 B. Goossens Autrans La hiérarchie mémoire nom:#set:#asso:remplacement nom: il1, il2, dl1, dl2, itlb, dtlb Remplacement: lru, fifo, random Caches L2 séparés ou cache L2 unifié Latences des caches L1, L2 et TLB Latence mémoire premier mot et suivants Largeur du bus mémoire

10 B. Goossens Autrans Prédicteur de sauts Préditeur parfait Prédiction toujours pris Prédiction toujours non pris Prédiction bimodale compteurs 2 bits Prédiction à deux niveaux (histo + compteurs) GAg: 1 histo de w bits, 2^w compteurs 2 bits PAg: n histos de w bits, 2^w compteurs 2 bits Prédiction hybride (McFarling)

11 B. Goossens Autrans Prédicteur de sauts Le prédicteur est combiné avec le BTB et la RAS Il est consulté dans l'étage d'extraction Il peut être mis à jour en ordre ou spéculativement Mise à jour dans l'étage de validation Mise à jour dans l'étage d'écriture

12 B. Goossens Autrans Les stations de réservation La structure RUU est une file Les instructions entrent à l'extraction Les instructions sortent à la validation Sert de banc de registre de renommage Sert de point d'attente des sources Les registres architecturaux sont séparés

13 B. Goossens Autrans La file des chargements/rangements Les ld/st allouent une entrée en RUU (adresse) Les ld/st allouent une entrée en LSQ (donnée) Un chargement attend les rangements antérieurs Les rangements sont propagés à la LSQ La propagation se fait dans le cycle du rangement

14 B. Goossens Autrans Le pipeline while (1) { commit(); writeback(); /* execute(); */ issue(); dispatch(); if (!fetch_issue_delay) fetch(); }

15 B. Goossens Autrans L'étage d'extraction (fetch) for (i=0; i<decode_width * fetch_speed && nb_fetched < ruu_size && !branch_fetched; i++) { fetch_inst(inst, mem, pc); if (fetch_issue_delay=imh_access(pc)) break; pred_npc=bpred_lookup(pc,inst); fetch_queue[tail]={inst,pc,pred_npc}; }

16 B. Goossens Autrans L'étage de distribution (dispatch) while (i<decode_width * fetch_speed && nb_decoded < ruu_size && ls_dec < ls_size && nb_fetched!=0) { {inst,pc,pred_npc}=fetch_queue[head]; MD_SET_OPCODE(op,inst); if (op&F_TRAP) break; set_rw_regs(op);/* DEFINST */ run(op);/* spec run SYMCAT(OP,_IMPL)*/ if (mis_predicted_target) fetch_issue_delay = branch_penalty;

17 B. Goossens Autrans rs={inst,op,pc,npc,ppc}; if (MD_OP_FLAGS(op) & F_MEM) { lsq={inst,op,pc,npc,ppc,addr}; set_dependency(o_rs,i_lsq); } set_dependency(o_head_create_vector,i_rs); if (bpred_spec_update == dispatch) bpred_update(pc,npc,op); L'étage de distribution (dispatch)

18 B. Goossens Autrans if (pred_dir != branch_dir) { spec_mode = TRUE; rs->recover = TRUE; recover_PC = npc; } } /* dispatch next i */ L'étage de distribution (dispatch)

19 B. Goossens Autrans L'étage de lancement (issue) for (i=0; node && i<issue_width; next_node) { /* node: from ready queue */ /* ready queue: no more dependent insts */ if (get_fu(rs->op)) { rs->issued = TRUE; fix_result_latency(rs->op); /* op/mem */ i++; }

20 B. Goossens Autrans L'étage d'écriture (writeback) while (rs=completed_event) { /* list of completed ops */ rs->completed = TRUE; if (rs->recover) { ruu_recover(); /* free rs */ fetch_recover(); /* squash fetch */ pc = recover_pc; spec_mode = FALSE; stack_recover(); fetch_issue_delay = branch_penalty; }

21 B. Goossens Autrans L'étage d'écriture (writeback) if (bpred_spec_update == writeback) bpred_update(rs->pc,rs->npc,rs->op); if (spec_mode) broadcast_result(spec_create_vector); else broadcast_result(create_vector); update_ready_queue(); } /* next completed inst */

22 B. Goossens Autrans L'étage de validation (commit) while (committed<commit_width) { if (!rs->completed) break; if (rs->op == ST) { if (!get_store_port()) break; dcache_write(); /* hidden mem lat */ } if (bpred_spec_update == commit) bpred_update(rs->pc,rs->npc,rs->op); committed++; rs++; }

23 B. Goossens Autrans Sim-outorder: la mise en oeuvre Installation: vi Makefile (choisir machine/système) make config-pisa (ou config-alpha) make make sim-tests (teste tous les simulateurs) Binaires exécutables: sslittle-na-sstrix-gcc -g -O -o foo foo.c -lm (ssbig ou sslittle) (little sur PC) (gcc ou f77) Simulations: sim-outorder -config f.cfg bench [args]

24 B. Goossens Autrans Sim-outorder: la mise en oeuvre Editer un fichier.cfg dans le répertoire config Exemple: default.cfg Taille des files Latence des sauts et des caches Type et taille du prédicteur Nombre d'unités fonctionnelles Nombre de ports dcache

25 B. Goossens Autrans Sim-outorder: la mise en oeuvre./sim-outorder -config config/default.cfg tests/bin.little/test-fmath > sortie-test 2> mesure Résultats sur la sortie erreur standard récapitulatif de la configuration sim_num_xxx (catégorie xxx validées) sim_total_xxx (catégorie xxx exécutées) IPC, caches, bpred

26 B. Goossens Autrans Sim-outorder: la mise en oeuvre./sim-outorder -config config/default.cfg -ptrace trace.trc 100:500 tests/bin.little/test-fmath > sortie-test 2> mesure./pipeview.pl trace.trc | more Trace des 593 xy = '0x409a20: lui r8,0x7efe' [IF] [DA] [EX] [WB] [CT] xy

27 B. Goossens Autrans Adapter sim-outorder: ajouter des options On peut ajouter des options de configuration opt_reg_type(odb, -mon:option, emploi, &opt, valeur_init_type, TRUE, NULL); A placer dans la fonction sim_reg_options Déclarer static type opt dans simulator options Apparait en tête de la sortie Exemple: opt_reg_int(odb, -mon:option, emploi, &opt, 0, TRUE, NULL); -mon:option 0 # emploi

28 B. Goossens Autrans Adapter sim-outorder: ajouter des compteurs On peut ajouter des compteurs stat_reg_counter(sdb, compteur, emploi, &mon_cpt, valeur_init, NULL); stat_reg_formula(sdb, ma_formule, emploi, v1/v2*v3, NULL); A placer dans la fonction sim_reg_stats Déclarer static counter_t mon_cpt; dans simulator stats Apparait en sortie compteur 8631 # emploi

29 B. Goossens Autrans Adapter sim-outorder: ajouter des instructions On peut ajouter des instructions annotées asm(mul.s/a %0,%1,%2:=f(c):f(b),f(a)); On modifie sim-outorder pour traiter séparément les instructions annotées if (!(inst.a & 0xffff0000)) /* traitement normal */ else /* new_id, new_od, new_sem */

30 B. Goossens Autrans Utiliser sim-outorder: exécution pas à pas On peut exécuter en mode de déboguage./sim-outorder -i bench Exécution pas à pas step, cont [a], break a, print [m] e, stats, regs, fregs, dump a [n], dis a [n]

31 B. Goossens Autrans Conclusion Sim-outorder est un outil fiable Sim-outorder est très utilisé en recherche Mais Adapter sim-outorder est difficile Les adaptations sont peu fiables Adapter l'architecture est très difficile