arpo

Download ARPO

If you can't read please download the document

Upload: katen

Post on 19-Mar-2016

37 views

Category:

Documents


0 download

DESCRIPTION

ARPO. Architectures des processeurs superscalaires, VLIW et optimisations. L’interface logiciel / matériel. langage. logiciel. compilateur. jeu d’instructions (ISA). micro-architecture. matériel. transistor. Différents contextes. Processeurs à usage général - PowerPoint PPT Presentation

TRANSCRIPT

  • ARPOArchitectures des processeurs superscalaires, VLIW et optimisations

  • Linterface logiciel / matriel transistormicro-architecturejeu dinstructions (ISA)compilateurlangagelogicielmatriel

  • Diffrents contextesProcesseurs usage gnralserveurs, ordinateurs de bureau, ordinateurs de poche ...excute tous types dapplicationsProcesseurs enfouistlphone, tlvision, voiture ...application spcifiqueprocesseur spcialis ou driv dun processeur usage gnral

  • Besoins en performancesPerformance: amliorer le temps de rponse => interactivitapplications scientifiquesbases de donnestraitement du signalmultimdia...

  • Comment amliorer la performance ? transistormicro-architecturejeu dinstructions (ISA)compilateurlangagecrire un meilleur algorithmeoptimisations du compilateuramliorer lISAmeilleure micro-architecturenouvelle technologie

  • O doit porter leffort ?compilateurISAmicro-architectureprocesseur usage gnralprocesseur enfoui+ +++ + ++ ++ + ++ +Processeur usage gnralen gnral, on hrite dun ISA existant (exemple: Intel x86)compatibilit binaire: la nouvelle gnration de processeur doit pouvoir excuter les codes excutables sur les anciennes gnrationsProcesseur enfouiattention au cot du processeurcompromis performance / consommation lectrique

  • Plan du coursPerformancesArchitecture des processeursjeu dinstructions (ISA: Instruction Set Architecture)micro-architectureCompilateuroptimisations de code

  • Amliorer la performance ?Ca dpend du point de vueDbit dexcution: faire plus de travail utile pendant un temps donnserveursenvironnement multiprogrammTemps dexcution : faire un travail donn dans un temps plus courtpoint de vue de lutilisateurRem: diminuer le temps dexcution augmente le dbit

  • AcclrationExemple: Un programme compil avec le compilateur A sexcute en 10 ms Avec le compilateur B, sexcute en 5 ms105acclration B/A = = 2 Le compilateur B est 2 fois plus performant que le compilateur A

  • Acclration locale / globaleExemple: supposons quun programme passe 50% du temps dexcution dans du calcul en virgule flottante, et supposons quon multiplie par 2 les performances du calcul en virgule flottante. Quelle est lacclration globale ?

  • Loi dAmdahl

  • ExempleExemple: supposons que 50% du temps dexcution provienne du CPU, les 50% restant des entres/sorties. On multiplie par 5 les performances du CPU. Quelle est lacclration globale ?Il faut optimiser dabord le cas le plus frquent

  • temps CPU / temps reltemps dexcutiontemps rel (E/S, temps partag )temps CPU = temps utilisateur + systmeExemple: processeur fix, on travaille sur le compilateurOn peut utiliser le temps CPU utilisateur pour mesurer la performance

  • Frquence / cycle / IPCFrquence CPU f : frquence de lhorloge interne du processeurdpend (entre autres) de lchelle de gravure des transistorsCycle CPU: T = 1 / fExemple: f= 500 MHz T= 2 nsNombre moyen dinstructions excutes par cycle

  • MIPS / megaflopsMIPS = Exemple: ISA et compilateur fixs , on travaille sur la micro-architecture utiliser les MIPS pour mesurer la performanceSi on travaille a frquence CPU fixe, on peut utiliser lIPCnombre moyen de millions doprations virgule flottante par secondeUtilis pour le calcul numrique intensifmegaflops = nombre moyen de millions dinstructions excutes par seconde

  • Comparer des machines diffrentesSolution 1 : temps CPU Les MIPS nont aucune signification ici car les ISA sont diffrents Solution 2 : utiliser une machine de rfrenceExemple: VAX MIPS

  • Programmes de testProgrammes standards (benchmarks)exemple 1 : SPEC CPU2000SPEC int : compression de donnes, compilateur, interprteur, synthse dimage, analyseur grammatical, jeu dchec, conception de circuits ...SPEC fp : physique, maths, chimie, mto ... Exemple 2 : TPC (Transaction Processing Performance)base de donnes multi-utilisateurssollicite les entres-sortiesProgrammes spcifiquesIl faut choisir les programmes de test appropris au cas tudi ...

  • valuer / analyser les performancesMesures de temps dexcution Instrumentationexemple: quelle partie du code contribue le plus au temps dexcution ?code instrument = code original + code supplmentaire permettant de rcuprer de linformation lexcution (exemple: adresses mmoire)exemples doutils: Prof, Pixie, Salto, EEL, Atom, Utilisation des compteurs matriels du processeurcompte certains vnements (exemple: nombre dinstructions excutes)quand un compteur atteint sa valeur maximum, gnre une interruptionSimulationon simule lexcution au lieu dexcuter rellementlISA simul peut ne pas tre celui de la machine sur laquelle on simuleExemples de simulateurs: Simplescalar, Shade, SimOS, Impact ...

  • Jeu dinstructions (ISA)

    Cest linterface matriel / logicielExemplesIntel x86 (1979)MIPS , SPARC (milieu annes 80)Alpha (dbut annes 90)Les ISA voluent lentement, par ajouts successifsil faut avoir de bonnes raisons pour lancer un nouveau jeu dinstructionsplus de raisons pour les processeurs enfouis : applications spcifiques, densit du code, consommation lectrique, ...

  • Types dISACISC (Complex Instruction Set Computer)ex. Intel x86, VAX, IBM 360, ...taille dinstruction variableplusieurs modes dadressage (absolu, bas, index, indirect)instructions registres-mmoireinstructions itrativesRISC (Reduced Instruction Set Computer)ex. Alpha, Sparc, MIPS, PowerPC ...taille dinstruction constante (en gnral 32 bits)architecture load / storemodes dadressage simples (bas, index)instructions simples registre-registreVLIW (Very Long Instruction Word)1 instruction VLIW = plusieurs oprations indpendantes

  • CISC : exempleadd r4, 10 (r5, r6)r4 = r4 + mem[r5+r6+10]quivalent RISC:add r7, r5, r6load r7, 10 (r7)add r4, r4, r7r7 = r5 + r6r7 = mem[r7+10]r4 = r4 + r73 additions

  • RISC contre CISCCISCcode plus dense, prend moins de place en mmoireRISCdcodage plus rapideprocesseur plus simplele compilateur peut optimiser le codecur RISCdcodeCISCRISCRemarque: lIntel P6 traduit la vole les instructions x86 en micro-oprations RISC

  • Jeu dinstructions RISC typiqueinstructions sur 32 bits32 registres entiers32 registres flottantsoprsrtimmdiat65516oprsrdfonc655511Format IFormat RFormat Jload / store (bas)rt = rs op immbranchementsaut registrertrd = rs fonc rtload / store (index)saut

  • RISC : remarquesArchitecture 32 ou 64 bits ?cest la taille des adresses virtuelles (= adresses logiques)Intel x86 : architecture 32 bitsAlpha, Sparc, MIPS : architectures 64 bitsen gnral, correspond la taille des registres entiersVirgule flottanteadd, mul, div, sqrt, mult-addbanc de registres flottants spar des registres entiersregistres 64 bits (double prcision)Accs mmoiresplusieurs grains daccs: octet, demi-mot (2 octets), mot (4 octets), double-mot (8 octets)accs aligns = quand on accde un groupe de N octets, les log2(N) bits de poids faible de ladresse sont nuls

  • tapes dexcution (RISC)Gnrer ladresse de linstructionincrmenter le compteur de programme: PC = PC + 4Lire linstruction en mmoireDcoder linstructiontype dinstruction (ALU, flottant, load, store, branchement, ?) prciser (add, mul, shift, and, or, adressage bas, index, ?)registres sources, registre destination Lire les registres sourcesExcuter loprationcrire le rsultat dans le registre destinationrem: pour un saut ou un branchement pris, le registre destination implicite est le compteur de programme

  • Quelques donnes technologiquesLe temps de traverse dune porte logique nest pas nulPositionner une tension sur une connexion, ca prend du tempsTemps de cycle des processeurs rapides (2000): ~1 nsDure dune addition entire 64 bits: ~1 cycleDure dune addition / multiplication flottante: ~3-4 cyclesLecture / criture registres: ~1 cycle (dpend du nombre de registres et du nombre de ports)Accs mmoire: de < 1 cycle plusieurs centaines de cycles suivant le type et la taille de la mmoireIl faut plusieurs cycles pour excuter compltement une instruction

  • La technique du pipelineDcouper le traitement dune instruction en plusieurs tagesmise jour PC, chargement instruction, dcodage et lecture registres, excution, criture registreA un instant donn, chaque tage travaille sur une instruction diffrenteen dbut de cycle, chaque tage envoie son instruction ltage suivantPC = PC+4chargementdcodage / lecture registresexcutioncriture registrecycle Ncycle N+1Inst 1Inst 2Inst 3Inst 4Inst 5Inst 6Inst 5Inst 4Inst 3Inst 2Inst 7Inst 6Inst 5Inst 4Inst 3cycle N+2

  • Pipeline: remarquesLe pipeline ne rduit pas le temps dexcution dune instruction en fait, a lallonge mme un peu cause des verrous quon rajoute entre les tagesPermet un dbit dune instruction par cycleen thorie, pas en pratique (cf. transparents suivants)Banc de registres 3 ports : 2 ports de lecture et 1 port dcritureRem: si lISA autorise ladressage index (Sparc, PowerPC), il faut un troisime port de lecture pour les stores

  • Alas structurelssupposons quau cycle N, une instruction load se trouve ltage dexcution et essaie daccder la mmoireau mme instant, une autre instruction se trouve ltage de chargement dinstructions: on doit galement accder la mmoireproblme: sil ny a quun seul port daccs la mmoire, conflit de ressource1re solution: donner la priorit au load, et diffrer dun cycle linstruction ltage de chargement: cest un ala structurel2me solution: 2 ports daccs la mmoire

  • Dpendances de donnesSoit 2 instructions I1 et I2 (I2 aprs I1) 3 types de dpendances de donnesdpendance RAW (Read After Write)le rsultat de I1 est utilis par I2aussi appele dpendance vraiedpendance WAR (Write After Read)I2 crit dans un registre lu par I1aussi appele anti-dpendancedpendance WAW (Write After Write)I2 crit dans le mme registre que I1aussi appel dpendance de sortieI1: r1 = r1+1I2: load r2, 0(r1)I1: load r2, 0(r1)I2: r1 = r1+1I1: load r2, 0(r1) jump I3 if r5=0I2: load r2, 0(r3)

  • Alas de donnesPour respecter les dpendances RAW, WAR et WAW, on peut tre amen introduire des bulles dans le pipelinebulle: la partie amont du pipeline est gele, seule la partie aval du pipeline progresseAlas de donnesRAWWAW: pas de problme si les instructions passent par ltage dcriture dans lordre du programmeWAR : pas de problme si on lit les registres dans lordre du programme et toujours au mme tage du pipelineLes alas de donnes, comme les alas structurels, diminuent les performances

  • Ala RAWPC = PC+4chargementdcodage / lecture registresexcutioncriture registreI2: r1=r1+1I1: r1=r2+r3Dpendance RAW entre I1 et I2: au moment ou I2 essaie de lire r1, I1 na pas encore crit dedans I2 doit attendre ...Cycle NI2I1Cycle N+1bulleI2Cycle N+2bullebulleCycle N+3I2bulleOn attend 2 cycles avant de lancer I22 cycles perdus

  • Mcanisme de bypassMUXMUXBanc de registresEnlve lala RAW entre I1 et I2PC = PC+4chargementdcodage / lecture registresexcutioncriture registre

  • Plus dalas de donnes ? presque ...

    Plus dalas RAW entre instructions registre-registreA priori, il ny a pas dalas WAR ou WAW

    Mais certaines instructions ncessitent plusieurs cycles dexcutionload / storedivision et multiplication entireoprations virgule flottante

  • Cas des load / storeOn supposera pour linstant que laccs la mmoire se fait en 1 cyclePour excuter un load / store1 cycle pour calculer ladresse daccs (addition)1 cycle pour accder la mmoiretotal = 2 cycles ltage dexcutionSolution: diviser en 2 tagestage dexcution: utiliser lALU pour calculer ladressetage daccs mmoire

  • Nombre dtages variable ?PC = PC+4chargementdcodage / lecture registresexcutioncriture registreaccs mmoirePour les load / store, pipeline 6 tagesPour les autres instructions, pipeline 5 tagesI2: r3=r4+r5I1: load r1,0(r2)Ala structurel: au cycle suivant, I1 et I2 vont essayer dcrire en mme temps dans le banc de registre, or il ny a quun seul port dcriture.

  • Nombre dtages fixePC = PC+4chargementdcodage / lecture registresexcutioncriture registreaccs mmoirePipeline 6 tages pour toutes les instructionsSi linstruction nest pas un load / store, ltage accs mmoire ne fait rienI2: r3=r4+r5I1: load r1,0(r2)I1 et I2 criront dans les registres des cycles diffrents: plus dala structurelGrce au bypass, pas de problme

  • Il reste des alas RAW: load-usePC = PC+4chargementdcodage / lecture registresexcutioncriture registreaccs mmoireI2: r1=r1+1I1: load r1,0(r2)Cycle NI1bulleCycle N+1I2I2I1bulleCycle N+2Un cycle de pnalit load-use: Le compilateur doit essayer dordonner les instructions de manire insrer une instruction entre I1 et I2 qui nutilise pas le rsultat de I1

  • ExercicePC = PC+4chargementdcodage / lecture registresexcutioncriture registreaccs mmoirea=a+1 ;b=b+1 ;load r2, 0(r1) ;aadd r2, r2, 1store r2, 0(r1)load r2, 4(r1) ;badd r2, r2, 1store r2, 4(r1)Combien de bulles sont gnres sur cette squence ?Transformer le code de manire liminer ces bulles

  • ExercicePC = PC+4chargementdcodage / lecture registresexcutioncriture registreaccs mmoire1) Quel est lIPC moyen si la probabilit quune instruction dpende de linstruction prcdente vaut 1/2 ?

    2) On suppose quen ordonnant les instructions, le compilateur est capable de placer une instruction indpendante derrire 75% des load. Quel est lIPC moyen ?Hypothse : 1 instruction sur 5 est un load

  • ExercicePC = PC+4chargementdcodage / lecture registrescalcul adressecriture registreexcution / memOn modifie le pipeline: on insre un tage calcul dadresse spcifique avant ltage dexcution. Les accs mmoire se font ltage dexcution. (ltage calcul dadresse ne fait rien pour les instructions qui ne sont pas des load / store)Combien de bulles sur une dpendance load-use ?Cette structure de pipeline a-telle le mme cot matriel que la structure prcdente ?Que doit faire le compilateur pour tirer partie de cette structure de pipeline ?

  • Instructions longuesInstructions longues sur lAlpha 21264 (1998)multiplication entire: 7 cycles, compltement pipelinedivision flottante: 12 cycles SP, 15 cycles DP, non pipelineracine carre: 18 cycles SP, 33 cycles DP, non pipeline Les oprations non pipelines gnrent des alas structurelsAttention aux alas WAW Problme des interruptions prcisessi une interruption se produit entre I1 et I2, il faut maintenir un tat cohrent des registresil ne faut pas que I2 crivent dans les registres avant dtre sr que I1 ne gnrera pas dexception

  • Dpendances WAWExemple de pipeline virgule flottantePCcharg.dc/lect.critureI1: fmul f1,f1,f1I2: fadd f1,f2,f3 N N+5 N+1 N+4 fadd 3 cycles fmul 5 cyclesSolutions possiblesretarder le lancement de I2 (bulles)masquer lcriture de I1rajouter 2 tages vides aprs ladditionneur flottant...cycle de lancementcycle dcritureproblme ...

  • Interruptions prcisesNcessaire lorsquon veut redmarrer un programme interrompu par une exceptionpar exemple, on peut muler par logiciel certaines instructionsFaire les critures registre dans lordre du programmePipeline de mme longueur pour (presque) toutes les instructionsProblme: augmente le nombre de niveaux de bypass Solution: utiliser 2 copies du banc de registresbanc de travail: les critures peuvent tre faites dans le dsordrebanc architectural : mis jour dans lordre du programme au commit (dernier tage du pipeline)en cas dinterruption, on recopie le contenu du banc architectural dans le banc de travail

  • Cas des sauts: alas de contrlePC = adresse de sautPCchargementdcodage / lecture registresexcutioncriture registreaccs mmoireI1: jump @I35Cycle NCycle N+1I2I3I35bulleCycle N+2I35bulleI1bulleI35bulleI1I36Les instructions I2 et I3 sont annules2 cycles de pnalit de sautI36

  • Impact des alas de contrleLa pnalit de saut sera dautant plus grande que les sauts et branchements seront excuts tard dans le pipelineEn moyenne, 1 saut excut pour 7 instructionsExercice:on suppose pas dalas de donne ou structurelsquel est limpact des alas de contrle sur les performances ?PC = PC+4chargementdcodage / lecture registresexcutioncriture registreaccs mmoire

  • Quelles solutions ?Branchement diffr (MIPS, Sparc )le saut ne se fait pas tout de suite, mais avec un dlaiexemple: le programme excute I1, puis I2, puis I5permet denlever une bulle sur un sautle compilateur doit trouver une instruction utile mettre dans le dlai du branchement ( dfaut, mettre un NOP)annes 80, excution des branchements au 3me tage, aucune pnalit de saut grce cette techniquePrdiction de branchementsolution utilise dans les processeurs dusage gnral des annes 90cf. plus loin dans le coursI1: jump @I5I2: add r1,r1,1I3:I4:I5:

  • Exemple: lUltrasparc-3 (2000)pred.PCcharg. 1charg. 2decod. 1decod. 2dispatchexec. load 2load 1 lit fpcommit exec. 1exec. 2exec. 3exec. 4lit intPipeline flottantLes loads 4/8 octets sont termins load 1, les loads 1/2 octets sont termins load 2.Pipeline entiercriture registre ou mmoire

  • ExerciceSur lUltrasparc-3donner le nombre de bulles lorsqueune instruction de calcul entier dpend dun load 4 ou 2 octets2 instructions de calcul flottant sont dpendantesune instruction de calcul flottant dpend dun loadltage vide en dbut du pipeline flottant vous parat-il plutt utile ou plutt pnalisant ?quel type de mcanisme peut-on imaginer pour rsoudre le cas dun load dpendant dun store rcent ?

  • RemarquesOptimiser le cas frquentles oprations trs longues (ex. division) sont traites cot du pipeline, en dehors du chemin critique dexcutionCertains processeurs dcouplent les pipelines entier et flottantexemple: MIPS R8000 (1994)les oprations de calcul flottant sont insres dans une file dattente et traites sparmentavantage: les dpendances entres instructions de calcul flottant nintroduisent pas de bullesinconvnient: pas dinterruption prcise sur les instructions de calcul flottantLes processeurs enfouis ont gnralement un pipeline court (5-6 tages) alors que le pipeline dun processeur usage gnral peut faire entre 10 et 20 tagespipeline long = haute frquence et haute consommation lectrique

  • La mmoirePlus une mmoire est grande, plus son temps daccs est long3 types de mmoirebanc de registrespeu dentres, temps daccs court (< 1 cycle), plusieurs portsmmoire dynamique (DRAM)mmorisation dune charge sur une capacit, 1 transistor par bitgrande densit dintgration (16-64 Mbits)temps daccs long: 50-100 nsutilis comme mmoire principalemmoire statique (SRAM)mmorisation par bouclage de 2 portes: 1-4 Mbits chertemps daccs court: 5-10 ns

  • Latence mmoireLa latence mmoire nest pas seulement constitue par le temps daccs DRAMtranslation dadressetraverser les broches du processeur et le bus externemultiplexage si plusieurs bancs mmoiresLatence mmoire principale: 100-200 ns 1 GHz, a fait 100 200 cycles CPUproblme !!

  • Les cachesutiliser de la SRAM pour maintenir des copies des instructions et des donnes utilises souventsi possible, intgrer cette mmoire cache sur le processeurlatence moindreles donnes et instructions stockes dans le cache sont tiquetes avec leur adresse afin de pouvoir les identifier sans ambigutquand on veut charger une instruction ou une donne, on regarde si elle se trouve dans le cache ou passi oui (hit), latence mmoire = latence cache = 1 10 cyclessi non, cest un dfaut de cache (miss), on va chercher la donne en mmoire principale, et on la recopie dans le cachele cache est transparent lutilisateur, tout est automatiqueactuellement, cache de donnes et cache dinstructions distinctspermet de lire dans le mme cycle une donne et une instruction

  • Les caches: pourquoi ca marcheLocalit temporelledes donnes ou des instructions dj accdes dans le pass sont souvent rutilises dans un futur procheLocalit spatialedes donnes ou des instructions qui sont des adresses proches ont tendance tre accdes dans des temps rapprochssur un dfaut de cache, on ne chargera pas une seule donne ou une seule instruction, mais un bloc de plusieurs instructions ou donnes bloc = ligne de cachetaille dune ligne de cache: 16-64 octets

  • ExercicePC = PC+4chargementdcodage / lecture registresexcutioncriture registreaccs mmoireOn suppose que le chargement dinstructions se fait en 1 cycle (pas de dfauts de cache dinstructions) , quil ny a pas dalas de contrle, structurels, WAW ou load-useOn suppose que lorsque la donne se trouve dans le cache de donnes, un load / store passe un seul cycle dans ltage daccs mmoireSur un dfaut de cache, le pipeline est gel en amont de ltage daccs mmoire en attendant que la donne arriveEnviron 40% des instructions sont des load/storeQuel est le dbit en IPC du pipeline si un dfaut de cache prend 50 cycles se rsoudre et si cela se produit sur 10% des load/store ?Quelle est la latence moyenne dun load/store ?

  • Caches: remarquesMme un faible pourcentage de dfauts de cache est pnalisantGros travail doptimisation faire sur les cachesLa hirarchie mmoire est constitue de plusieurs niveaux de cache sur les processeurs actuelscaches primaires (L1)cache dinstructions et cache de donnes8 64 Kotemps daccs: 1-2 cyclescache secondaire (L2)unifi (instructions et donnes)si externe, 512 ko 4 Mode plus en plus, intgr sur le processeur (256 Ko on-chip)latence: 5-10 cycles(cache tertiaire: externe)

  • Caches: remarquesSur un dfaut de cache primaire, on va chercher la ligne manquante dans le cache secondaireSi dfaut de cache secondaire, on va chercher la ligne manquante en mmoire principale (ou dans le cache tertiaire sil y en a un)La plus grande partie du budget en transistors des processeurs actuels est utilise dans les cachesExemple: le PA-8500 dHP (1999)130 millions de transistors, 1.5 Mo de cache on-chip

  • Cache: principe de mise en uvrelignes de cachetiquette (tag) = identificateur de ligneLoad &ASi ladresse de la ligne contenant A se trouve dans la table des tiquettes, la donne est dans le cache Espace mmoireA

  • Diffrents types de cacheCompromis entre la complexit du cache et sa capacit retenir un maximum de lignesCache correspondance directe (direct-mapped)une ligne na quun seul emplacement possible dans le cacheconflits entre diffrentes lignesCache compltement associatif (fully-associative)une ligne peut tre nimporte quel emplacement dans le cachelespace du cache est mieux utilisAssociatif par ensembles de N lignes (N-way set-associative)intermdiaire entre direct-mapped et fully-associative

  • Cache direct-mappedExemple: cache de 4 Ko, lignes de 16 octets, adresses 32 bitstiquette (tag)index cacheoffset ligne4 bits8 bits20 bits 256 lignes de cache de 16 octets256 tags de 20 bits=?Si tags gaux, la donne est dans le cache. Sinon, dfaut de cache.202084ligneadresse daccs

  • ExerciceCombien de lignes contient le cache ?Quelle est la taille dune tiquette en nombre de bits ?Si on compte la table des tiquettes, quelle est la quantit de mmoire rellement occupe par le cache ?Montrer que, lorsque deux adresses sont spares par une distance infrieure 64 Ko, elles ne sont pas en conflit dans le cache. La rciproque est-elle vraie ?On considre une architecture 64 bits (adresses sur 64 bits).Soit un cache direct-mapped pouvant contenir 64 Ko de donnes, la taille de ligne tant de 32 octets.

  • ExerciceCache direct-mapped 4 Ko, ligne 16 octets#define _8k 8192char a[_8k];register int i,x = 0;for (i=0;i=0;i--) x=x+a[i];Programme AProgramme BCombien de dfauts de cache sont gnrs sur la deuxime boucle du programme A ?Mme question sur le programme B#define _8k 8192int a[_8k];register int i,x = 0;for (i=0;i=0;i--) x=x+a[i];

  • ExerciceSoit un cache direct-mapped de N octets avec des lignes de L octetsQuelle est la probabilit (fonction de N et L) pour que deux adresses alatoires soient en conflit dans le cache ? Quelle conclusion en tirez-vous ?

    Soit deux tableaux de K octets chacun, commenant aux adresses respectives A et B (les donnes dun tableau sont ranges des adresses contigus en mmoire). On suppose que les adresses A et B sont alignes sur des frontires de ligne et que chaque tableau fait un nombre entier de lignes. Quelle est la probabilit pour que ces deux tableaux soient en conflit dans le cache ?

  • Cache N-way set-associatifExemple: cache 2-way SA de 4 Ko, lignes de 16 octets, adresses 32 bitstiquette (tag)index cacheoffset ligne4 bits7 bits21 bits 128 lignes de 16 octets128 tags 21 bits 128 lignes de 16 octets128 tags 21 bitsbanc 0banc 1banc 0banc 1=?=?ouLa ligne est-elle prsente ?Slectionner la bonne ligne

  • Cache N-way SAChaque ensemble est compos de N lignes rparties sur N bancs et ayant le mme index de cacheTemps daccs plus lev quun cache direct-mappedpour accder la donne, on doit avoir lu les tags et effectu la comparaisonSi le nombre de bancs dun cache SA est gal au nombre total de lignes dans le cache, on obtient un cache FAPolitique de remplacement: en cas de dfaut de cache, on a le choix entre N emplacements pour stocker la nouvelle lignerandomremplacer une ligne au hasard parmi les NLRU (least recently used)remplacer la ligne la moins rcemment utilisemeilleur que random

  • LRU: exempleCache 4-way set-associatifSupposons que les lignes A,B,C,D,E aient le mme index cacheCache avantHit / miss ?Ligne vinceCache aprsLigne accdeA DBCA hit ADBC B ADBC hit BADC C BADC hit CBAD D CBAD hit DCBA E DCBA miss A EDCB A EDCB miss B AEDC E AEDC hit EADC B EADC miss C BEAD

  • Mise en uvre matrielle du LRUCache 2-way SAassocier un bit B chaque ensemblece bit contient le numro du dernier banc accd (0 ou 1) dans lensemble considr quand on doit vincer une ligne, choisir le banc NON(B)Cache N-way SAassocier une matrice de bits A[i,j] chaque ensemble du cacheA[i,j]=1 signifie que le banc i a t accd plus rcemment que le banc j dans lensemble considrcomme A[i,j] = NON(A[j,i]), prendre la partie triangulaire sans la diagonaleN(N-1)/2 bitslorsque le banc k est accd, mettre la ligne k 1 et la colonne k 0le banc le moins rcemment accd est celui dont la ligne ne contient que des 0 et la colonne que des 1bonne approximation du LRU: utiliser une structure en arbreexemple 4-way : 3 bits (1 pour chaque paire de bancs + 1 global)

  • Distance de rutilisation: dfinitionDun point de vue algorithmique, on peut maintenir lordre LRU par une liste chanechaque ligne accde est place en tte de listela ligne en queue de liste est la moins rcemment utiliseplusieurs listes chanesles lignes qui ont le mme index cache sont dans la mme listesi cache FA, une seule liste globaleDistance de rutilisation D dune ligne = distance par rapport la tte de listeD=0 pour la ligne en tte de listeD peut tre globale (une seule liste) ou locale (plusieurs listes)Sur un cache N-way SA LRU, si D < N cest un hit, sinon cest un miss

  • Distance de rutilisation: utilitLa distance de rutilisation globale dune ligne donne une ide de sa localit temporelleSur un cache FA LRU comportant N lignessi D < N cest un hit, sinon cest un missSur un cache direct-mapped comportant N lignessoit une ligne A et soit D sa distance de rutilisation globaleD lignes distinctes ont t accdes depuis la dernire utilisationsi on nglige la localit spatiale, la probabilit que ces D lignes aient toutes un index diffrent de A vaut la probabilit davoir un miss sur A vaut

    La probabilit de miss augmente avec la distance de rutilisation

  • Exercice: multiplication de matrices

    register int i, j, k ;for (i= 0; i < N; i++) for (j= 0; j < N; j++) for (k= 0; k < N; k++) C[i][j] + = A[i][k] * B[k][j] ; Combien de fois utilise-t-on un mme lment de A, B et C ?On suppose 1 ligne = 1 donne. Quelle est la distance de rutilisation globale dun lment de A, B et C sur chacun des 3 programmes ? Conclusion ?On suppose 1 ligne = plusieurs donnes. Entre les programmes 1 et 2, lequel des deux est votre avis le plus performant ? on supposera &(X[i][j]) = &X + i N + j

    for (jj= 0; jj < N; jj=jj+N/2) for (i= 0; i < N; i++) for (j= jj; j < jj+N/2; j++) for (k= 0; k < N; k++) C[i][j] + = A[i][k] * B[k][j] ;

    for (i= 0; i < N; i++) for (k= 0; k < N; k++) for (j= 0; j < N; j++) C[i][j] + = A[i][k] * B[k][j] ; 132

  • Direct-mapped / set-associatifDirect-mappedaccs rapideon na pas besoin dattendre la lecture des tags et la comparaison pour savoir ou se trouve la donneSet-associatifen gnral, 2-way ou 4-wayle temps daccs augmente avec lassociativitmoins de cache missrgle empirique: un cache 2-way SA de taille N a grosso-modo le mme taux de miss quun cache DM de taille 2N

  • La bande passanteBande passante = dbit maximum de transit des donnes sur le bus entre deux niveaux de cache ou vers la mmoireBande passante limite par la frquence et la largeur du bus exemple: bus 128 bits 500 MHz, bande passante maximale = 8 Giga-octets par secondeUne bande passante trop petite augmente la latence apparente des accs mmoireLa localit spatiale permet de bien utiliser la bande passante disponible

  • ExempleSoit un tableau de N entiers accd pour la premire fois. On suppose que les accs se font dans lordre 1,2,3,4,5, ...Les lignes font 64 octets et la bande passante du bus est de 8 octets par cycle. La latence mmoire est de 10 cycles.Frquence des miss: 1 miss pour 16 accsLatence moyenne dun load = (15*1 + 1*10)/16 = 1.56 cycles ? FAUX !Un miss ne met pas 10 cycles se rsoudre, mais 9 + 64/8 = 17 cyclesLatence moyenne dun load = (15*1+1*17)/16 = 2 cyclesEt si on prend des lignes plus petites, par ex. 16 octets ? Frquence des miss: 1 miss pour 4 accs. Temps de rsolution dun miss = 9 + 16/8 = 11 cyclesLatence moyenne dun load = (3*1+1*11)/4 = 3.5 cycles

  • Quelle taille de ligne ?Petites lignes ?on ne charge sur le bus et dans le cache que des donnes utilesla place occupe par les tags augmenteGrandes lignes ? bonne localit spatiale ? effet de prchargement bnfiqueon peut avoir un bus plus largelocalit spatiale mdiocre ?espace du cache mal utilis (beaucoup de trous dans les lignes)risque de conflits entre lignesbande passante gaspilleCompromistaille de ligne typique: 64 octets

  • Les critures dans le cacheLes critures posent moins un problme de latence que de bande passantele problme de latence est rsolu avec un tampon dcritures en attenteles critures peuvent se faire lorsque la bande passante nest pas utilise par les lectures ou lorsque le tampon est pleinCache write-throughlorsquune donne est crite dans le cache, elle est crite en mme temps dans le niveau de cache suivant ou en mmoire principalesi le niveau de cache suivant est write-through, on propage lcriture de la mme faonen cas de miss sur criture, on se contente gnralement de ne faire lcriture quen mmoire, on ne va pas chercher la ligne manquantefacilite le maintient de la cohrence mmoire sur machine multi-processeurCache write-backles critures se font uniquement dans le cache. Lorsquune ligne est vince du cache et quelle a t modifie, elle est recopie automatiquement en mmoirewrite-allocate: en cas de miss sur criture, on va chercher la ligne manquantemeilleur utilisation de la bande passante et dbit dcriture moindre

  • Mmoire virtuelleLes adresses logiques (ou virtuelles, c.a.d celles vues par le logiciel) ne sont pas forcment celles qui sont utilises par le matriel pour adresser la DRAM (adresses physiques)avantage: permet de voir un espace dadressage plus grand que celui offert par la quantit de DRAM disponible (et le nombre de broches)On utilise un mcanisme de translation dadresse pour convertir les adresses logiques en adresses physiquesen gnral, combinaison de techniques matrielles et logicielleslunit de mmoire sur laquelle on travaille = page mmoire mcanisme de paginationles pages quon ne peut pas stocker en DRAM sont stockes sur disqueon utilise une table des pages pour faire la translation page logique / physiquepour accder une page qui se trouve sur disque, on la recopie en DRAM et on met jour la table des pages

  • PaginationTaille de page typique: 4 KoTable des page indexe avec le numro de page logique, fournit un numro de page physiqueLa table des pages est stocke en DRAM, dans une zone ne ncessitant pas de translationexemple: espace logique sur 32 bits, pages 4 Ko (12 bits doffset), soit 220 pages logiques Si on devait consulter la table des pages pour chaque accs mmoire, le temps de translation serait beaucoup trop longOn utilise un TLB (translation look-aside buffer)TLB = cache de translation dadresse intgr sur le processeurcontient un sous-ensemble de la table des pagestypique: 64/128 entres, full-associative

  • TLBExemple: adresses logiques 32 bits, pages de 4 Ko, TLB 64 entres numro de page logiqueoffset page12 bits20 bits 64 numros de pages physiques + qq bits de statut64 tags = numros de page logiqueadresse logiquenumro de page physiqueoffset pageadresse physique12 bitsTLB

  • Dfauts de TLBSur un dfaut de TLB, une exception est gnrele systme consulte la table des pages en DRAMsi la page est prsente en DRAM, le systme met le TLB jour puis rend la main au programmelatence: quelques dizaines quelques centaines de cyclessi la page nest pas prsente cest un dfaut de pagelatence: centaines de milliers de cycles (accs disque)

  • Mmoire virtuelle et cachesStocke-t-on dans le cache des adresses logiques ou physiques ?Adresse logiqueproblme des synonymes sur les pages accessibles en crituredes pages logiques distinctes projetes sur la mme page physiqueplusieurs copies de la mme donnes dans le cache Adresse physiqueil faut accder au TLB avant daccder au cache, a augmente le temps daccsEn gnralcache L1 donnes: index logique/tag physiquecache L1 instructions: adresses logiques ou index logique/tag physique cache L2: adresses physiques

  • Index logique / tags physiquesSi la somme du nombre de bits dindex cache et du nombre de bits doffset ligne ne dpasse pas le nombre de bits doffset page, lindex de ladresse physique est gal lindex de ladresse logiqueon peut commencer indexer le cache avec ladresse logique, sans attendre que laccs TLB soit terminlaccs TLB se fait en parallle avec lindexage du cache, il ne cote rienla comparaison sur les tags seffectue avec ladresse physiqueSi les pages sont trop petites, on peutaugmenter lassociativit du cache pour rduire le nombre de bits dindeximposer au systme de ne pas altrer les bits qui dpassent lors de la translation dadresse

  • En rsum ... Les caches permettent de masquer la latence daccs la mmoire principalelorsque la localit des rfrences est bonne, la majorit des load et des store sexcutent en 1 ou 2 cyclesUn cache permet de filtrer les requtes vers les niveaux de cache suivant: on conomise de la bande passantesi on a un bus mmoire avec une faible bande passante, on a intrt avoir un gros cacheTechnique complmentaire: le prchargementprchargement matrielexemple: sur un cache miss, charger la ligne manquante dans le cache et charger les lignes suivantes dans un tampon de prchargement daccs rapidefonctionne bien pour les instructions et les accs aux tableauxprchargement logiciel: instructions fetch (plupart des ISA RISC)il faut de la bande passante !

  • Que peut faire le compilateur ?Amliorer la localit temporellerarranger les bouclesexemple: multiplication de matrice Amliorer la localit spatiale: bien utiliser les lignes de cachelire les tableaux 2D dans le bon sens viter de faire des accs par pas suprieur 1Utiliser les registres chaque fois que cest possiblePrchargement logiciel

  • Le problme des sautsEn moyenne, un saut se produit toutes les 7 instructionsPipeline de plus en plus long: actuellement > 10 tages (Intel P6, Ultrasparc 3, AMD Athlon ), bientt ~20 tages (Intel Pentium 4)inst / cycleIPC = N= tage auquel les sauts sont excuts

    Graph2

    1

    0.875

    0.778

    0.7

    0.636

    0.583

    0.538

    0.5

    N

    IPC

    Feuil1

    12345678

    10.8750.7780.70.6360.5830.5380.5

    Feuil1

    0

    0

    0

    0

    0

    0

    0

    0

    N

    IPC

    Feuil2

    Feuil3

  • La prdiction de branchementsPC = PC+4chargementdcodage excutioncriture registreaccs cacheprdiction PCchargementdcodageexcutioncriture registreaccs cachesautcorrection si mal prditAnnes 80Annes 90Branchements prdits non prisOn essaie de prdire les sauts

  • Prdiction de branchement: principesIl faut minimiser le nombre de mauvaises prdictionssur un branchement mal prdit, on retrouve le problme des alas de contrle (bulles)Utiliser le comportement pass des branchementsla majorit du temps dexcution est pass dans des boucles: lorsquon rencontre un branchement, on a de bonnes chances de lavoir dj rencontr dans le passle comportement des branchements nest pas alatoire, il est biais: on peut prdire le comportement futur du branchement en regardant son comportement passStocker linformation sur le comportement pass de chaque branchement dans une table de prdictionstable daccs rapide index avec le PC du branchementpremier tage du pipeline

  • Types de branchementsBranchement inconditionnelle saut est systmatiquesaut relatifadresse de saut statique, connue la compilationexemple: PC du branchement + offset immdiatsaut indirectadresse de saut dynamique, lue dans un registreretours de fonction, appels de fonctions, switch case, pointeurs de fonctions Branchement conditionneldpend de lvaluation dune condition: le branchement peut tre pris (on saute) ou non pris (on passe linstruction suivante)comparaison entre 2 registres ou comparaison dun registre avec 0en gnral, adresse de saut statiqueboucles, ifthenelse, switch case, ...

  • Quelques statistiques ...En moyenne 1 instruction sur 5 est un branchement (conditionnel ou inconditionnel)les blocs de base sont petits (certains font 1 ou 2 instructions)il est souhaitable de pouvoir prdire un branchement par cycle75 % des branchements sont conditionnelsil est important de bien prdire les branchements conditionnels40 % des branchements conditionnels sont non prisprdire toujours non pris 60 % de mauvaises prdictions 10 % des branchements sont des retours de fonction0 10 % des branchements sont des appels de fonction indirectsplus nombreux dans les codes orients objetRestant = branchements inconditionnels relatifs

  • Les branchements dans le pipelineAdresse de saut relatifBranchement conditionnel excutSaut indirect excutprdictionchargementdcodageexcutioncriture registreaccs cacheBranchement identifi

  • Les tapes de la prdictionPrdire qu ladresse indique par le compteur de programme se trouve une instruction de branchementIdentifier le branchementbranchement conditionnel ou inconditionnel ?appel de fonction ?retour de fonction ?Prdire ladresse de sautPour les branchements conditionnels, prdire si le branchement est pris (1) ou non pris (0)En cas de mauvaise prdiction, profiter du temps de rparation du pipeline pour corriger la table de prdiction

  • Table de prdictionsprdictionchargementdcodageexcutioncriture registreaccs cacheEst-ce un branchement ?Si oui : info table= (type, 0/1,adresse saut) PC
  • Cache de branchements ou BTB (Branch Target Buffer)tiquettesciblesPC= ?Un branchement est dtect, il est prdit prisadresse de saut

  • Utilisation du BTBOn stocke dans le BTB les sauts inconditionnels et les branchements prisLa prsence dune entre dans le BTB entrane un saut ladresse indique par le BTBEn labsence dune entre BTB, on suppose que linstruction nest pas un branchement ou est un branchement non prisEn cas de mauvaise prdiction, corriger le BTBsi on a manqu un saut, rajouter lentre manquante si on a prdit un branchement pris alors quen ralit il est non pris, enlever lentre du BTBsi on a saut une mauvaise adresse, corriger ladresse de saut dans le BTB

  • BTB: remarquesAussi appel BTAC (branch target address cache)Utilis sur les processeurs Intel P6, AMD Athlon, IBM Power3, HP PA-8500 ...Taille: 32-2048 entresAssociativit: 2/4Prdiction comme la dernire fois ( = on prdit le mme comportement que la dernire fois)fonctionne bien pour les inconditionnels relatifsle comportement est toujours le mmepas optimal pour les branchements conditionnels et les retours de fonctionle comportement nest pas toujours le mme20 % de mauvaises prdictions sur les conditionnels

  • Prdiction comme la dernire foisfor (i=0;i
  • ExerciceOn considre un branchement conditionnel ayant une probabilit p dtre pris. En prdisant comme la dernire fois, quel taux de mauvaises prdictions obtient-on sur ce branchement ?Quel taux de mauvaises prdictions obtiendrait-on si on prdisait ce branchement toujours pris ? Est-ce mieux que comme la dernire fois ?

  • Le compteur 2 bits012300001111prdit 0prdit 14 tats 2 bitsla prdiction est obtenue en lisant le bit de poids fort du compteuril faut 2 mauvaises prdictions conscutives pour changer la prdiction en partant dun tat fort (0 ou 3)

  • Efficacit du compteur 2 bitsfor (i=0;i
  • Compteur 2 bits : mise en uvrePremire possibilit : rajouter un compteur 2 bits dans chaque entre du BTBon bnficie de lassociativit du BTBsi un branchement est prdit pris mais quen ralit il est non pris, on dcrmente le compteur et on laisse lentre dans le BTBDeuxime possibilit : stocker les compteurs 2 bits dans une table spcifique, la BHT (branch history table)MIPS R10000, IBM Power3, PowerPC, AMD Athlon, HP PA-8500 pas de tags, juste 2 bits dans chaque entrela BHT peut comporter plus dentres que le BTB taille: 256 2k entresquand le compteur passe de ltat 2 ltat 1, lentre dans le BTB nest plus ncessaire

  • BHTpoids fortspoids faibles BHT 2n compteurs 2 bitsn bitsPC du branchement conditionnelLe bit de poids fort du compteur donne la prdictionRem: comme il ny a pas de tags, on ne peut pas avoir dassociativit. Interfrences entre branchements. Problme analogue aux conflits dans un cache direct mapped.

  • Prdire les retours de fonctionUtiliser une pile dadresses de retourpour chaque call excut, on empile ladresse de retourpour prdire un retour, au lieu dutiliser ladresse fournie par le BTB, dpiler ladresse au sommet de la pile et sauter cette adressePeut tre utilis aussi pour prdire les retours dinterruptions et dexceptionsSi pile suffisamment profonde, 100 % de bonnes prdictionsUltraSparc-3 (8 entres), AMD Athlon (12 entr.), Alpha 21264 (32 entr.)ne pas abuser de la rcursivitPrincipale difficult: identifier les appels et les retoursutiliser le code-op (ex. appel = saut avec lien)le compilateur peut aider le processeurexemple: hint (Alpha), jr $31 (MIPS) ...

  • BTB / BHTProcesseurs ayant la fois un BTB et une BHTle BTB permet didentifier les branchements avant dcodage (conditionnel/inconditionnel/appel/retour) et fournit ladresse de saut (sauf pour les retours)la BHT prdit la direction des conditionnelsProcesseurs ayant une BHT mais pas de BTBla prdiction se fait ltage de dcodagesi prdit non pris, pas de pnalitexemple MIPS R10000 : 1 bulle sur chaque branchement prispas viable sur les processeurs CISC (dcodage tardif dans le pipeline)

  • Mauvaises prdictions: 10 % cest tropLes processeurs actuels sont superscalaireschaque tage du pipeline peut traiter plusieurs instructions simultanmentLe pipeline dinstructions est longExemple4 instructions par cyclesIPCidal = 47 cycles de pnalit si branchement mal prdit1 conditionnel pour ~ 6.5 instructions, soit 65 instructions par mauvaise prdictionIPCmaxi = 65 / (65/4 + 7) = 2.8On sait faire mieux: la prdiction 2 niveaux dhistorique

  • Inter-corrlationsB1: SI cond1 ET cond2 B2: SI cond1 Supposons les 4 cas quiprobables. La probabilit de bien prdire B2 en se basant sur son comportement pass vaut 50 %cond1cond2cond1 ET cond2FFVVFVFVFFFVSupposons maintenant quon connaisse le rsultat de B1 au moment de prdire B2Si cond1 ET cond2 vrai (probabilit 1/4), prdire cond1 vrai 100 % de succsSi cond1 ET cond2 faux (probabilit 3/4), prdire cond1 faux 66 % de succsOn peut prdire B2 avec un taux de succs de 1/4 + 3/4 * 2/3 = 75 %Remarque: si on permute B1 et B2, cest moins bien ...

  • Auto-corrlationfor (i=0; i
  • Prdicteur 2 niveaux dhistoriquePremier niveau dhistorique historique global pour dtecter les inter-corrlationsun seul registre dcalage de L bits contient les directions prises par les L derniers branchements rencontrs historique local pour dtecter les auto-corrlationsun registre dcalage de L bits pour chaque branchementcontient les L dernires directions prises par ce branchementprdit bien les boucles faisant au plus L itrationsDeuxime niveau dhistoriquechaque branchement utilise plusieurs compteurs 2 bits, stocks dans une PHT (pattern history table)utiliser la valeur dhistorique local ou global pour slectionner le compteur dans la PHT

  • Prdicteur historique globalPC du branchement conditionnel PHT 2n compteurs 2 bitshisto L bitsn bitsxorprdiction 0/1Prdiction insre dans lhistorique pour prdire le branchement suivantAppliquer une fonction de hachage entre ladresse et lhistorique (par ex. OU exclusif bit bit)

  • Prdicteur historique local 2m historiques locaux de L bits PHT 2n compteurs 2 bitshisto L bitsPrdiction 0/1NB: temps daccs plus long (2 accs chans)PC du branchement conditionnelm bits

  • RemarquesSi lhistorique est de longueur nulle, la PHT est une BHTLongueur dhistoriqueun historique long permet de capter plus de corrlation, mais a augmente les interfrences entre branchements et le temps de chauffe aprs un changement de contexteentre 4 et 16 bitsExemples de processeurs:Intel P6512 historiques locaux de 4 bits (en fait, dans le BTB)PHT de 8k compteurs 2 bitsUltraSparc-3un historique global de 12 bitsPHT de 16k compteurs 2 bits

  • Hors contraintes matrielles ...Les prdicteurs deux niveaux permettent de diviser par 2-3 le nombre de mauvaises prdictionstypique: 5 % de mauvaises prdictionsvoire moins sur les codes flottantsHistorique global efficace sur les codes entiersHistorique local plus efficace sur les codes flottants beaucoup de boucles, comportement rgulier

  • En pratique ...Beaucoup dinterfrences de conflits dans la PHTparadoxe de lanniversaire:soit une classe de 23 lves, la probabilit davoir 2 lves qui ftent leur anniversaire le mme jour est de 50 %lespace de la PHT est trs mal utilis Quelle longueur dhistorique ?sur les grosses applications, trop dinterfrences de capacit, on prfre un historique court (voire une BHT)sur les petites applications, on prfre un historique longHistorique local ou historique global ?a dpend de lapplication

  • Prdicteurs hybrides : principePrdicteur 1Prdicteur 2Prdicteur NMta-prdicteurPC du branchement PrdictionQuelles taient les prdictions correctes ?

  • Un hybride intressantXORBHTmtahistorique global adresseprdictionBHTBHTPHTPHTbp mpmpbp bp mpbp mpbp mpmpbp mpbp mpbp Quand les prdictions sont toutes les deux bonnes ou toutes les deux fausses, la mta-prdiction ne change pasPHT

  • AvantagesQuand lapplication est grosse , la BHT subit moins dinterfrences que la PHTOn peut se permettre de prendre un historique longConflits vits grce au mta-prdicteurLa BHT se rchauffe plus vite sur un changement de contexte

  • Le prdicteur de lAlpha 21264PHT 4k compteurs 2 bits1k historiques locaux de 10 bitsPHT 1k compteurs 3 bitsMta 4k compteurs 2 bits historique global 12 bits PC du branchementprdictiontotal: 29 Kbits

  • Que peut faire le compilateur ?Rendre les branchements plus faciles prdireExploiter les corrlationsExcution conditionnelle : transformer les dpendances de contrle en dpendances de donnemove conditionnelprdicationUtiliser des hints = information passe dans le code de linstruction

  • Excution conditionnellesaute SUITE si (r1 >= r2)r4 = mem(a)r4 = r4 + 1mem(a) = r4SUITE: r3 = r1 - r2r4 = mem(a)r5 = r4+1r4 = r5 si (r331)&1) ;code initial, avec un branchementmove conditionnelprdicationif (x
  • Utilisation du hintLe compilateur gnre une prdiction statique pour chaque branchementproblme 1 : fiabilitle biais de certains branchements dpend des donnes en entresi on se trompe sur le biais, ~ 100 % de mauvaises prdictionsproblme 2 : branchements qui changent de biais en cours dexcutionAutre utilisationmta-prdictiontransformer les interfrences destructives en interfrences neutres

  • Interfrences destructives / neutresbranchement Abranchement Binterfrence destructiveinterfrence neutrebranchement Abranchement BBranchements de biais oppossBranchements de mme biaisGnre des mauvaises prdictions

  • Le agree-predictorSi la probabilit davoir un biais pris vaut p, la probabilit davoir une interfrence destructive vaut pd= 2p(1-p)problme: p est gnralement proche de 50 % pd = 50 %Agree-predictor: transformer les interfrences destructives en interfrences neutresle compilateur fait des prdictions statiques via le hintle processeur dispose dune BHT ou dune PHTau lieu de prdire la direction des branchements, la BHT prdit si la direction est conforme ou pas la prdiction statiquemme si la prdiction statique est fausse 100 %, on sait prdiresi la prdiction statique est correcte 90 %, pd =20 %si la prdiction statique est fausse 50 %, ce nest pas pire que sans le hintUtilis sur le processeur HP PA-8500

  • En rsum ...Le prdicteur de branchement donne souvent des prdictions correctes plus de 90 % 50 -100 instructions entre 2 mauvaises prdictionsCompilateurpetites boucles ? a dpend du type de prdicteurprdicteur 2 niveaux dhistoriques ? local ou global ? quelle longueur ?la prdication peut enlever les branchements difficiles prdire, mais attention au surcot en instructionsExercice. Un branchement est mal prdit 40 %. Chaque mauvaise prdiction cote 5 cycles. On dcide denlever le branchement par prdication. Le surcot en instructions entrane une pnalit de P cycles. Question: quelle est la valeur maximum de P pour que la transformation soit intressante ?

  • Processeurs superscalairesAcclrer lexcution en excutant plusieurs instructions par cycleexploiter le paralllisme dinstructions existant de manire naturelle dans la plupart des codes squentiels1990: IBM POWER1jusqu 4 instructions excutes simultanment2000: tous les processeurs utiliss dans les PC et stations de travail sont superscalaires

  • Loi de Moore

    Le nombre de transistors sur un micro-processeur double tous les 18 mois1972: 2000 transistors (Intel 4004)1979: 30000 transistors (Intel 8086)1989: 1 M transistors (Intel 80486)1999: 130 M transistors (HP PA-8500)

  • Utilisation des transistors: volutionannes 70toffer lISA pour diminuer le nombre dinstructions excutes+ + + de mmoire on-chip (cache,registres) pour diminuer les accs externesannes 80+ + annes 90+ + ++ Excution superscalaire+ + +RISC8 => 16 => 32 bits calcul flottant32 => 64 bits multimdia+

  • Le plus simple: in-order degr 2Doubler la largeur du pipelinechargement: charger 2 instructions (PC=PC+8)dcodage: dcoder 2 instructions (il faut 2 dcodeurs)lecture registres: 4 ports de lecturesexcution: dupliquer lALUcache: 2 ports de lectures, 2 ports dcrituresrem: idem pour le TLB donnescriture registre: 2 ports dcritureExemples: Intel P5, Alpha 21064

  • Dpendance RAW: scinder le groupeSi A et B sont charges ensemble, et si, au dcodage, on trouve que B dpend de A, on retarde le lancement de B et on gle lestages avant dcodageA BC DChargementExcutionAccs cachecriture registreDcodageAC D BAC D Bcycle ncycle n+1cycle n+2E FSupposons une probabilit p =1/2 quune instruction dpende de linstruction prcdenteEn moyenne, (1+p) cycles par groupe de 2 instructionsIPCmaxi = 2 / (1+p) = 1.33cache miss, load-use, branchements mal prdits, etc...

  • Dcaler les groupements A BC DChargementExcutionAccs cachecriture registreDcodageAD E B Ccycle ncycle n+1cycle n+2AD E B CF Si B dpend de A, et si C ne dpend pas de B, lancer B et C ensembleIPCmaxi = p + 2 (1- p) = 1.5La probabilit de lancer 2 instructions dans un cycle vaut (1- p)Supposons une probabilit p =1/2 quune instruction dpende de linstruction prcdente

  • Utiliser un tampon de chargementCchargementdcodagea--A b B--c C d D e E excutioncachecriturebBaAcCbABaABabBcdDAabcCDdDBcAbCdeE

  • In-order degr 2 en pratique ...Dupliquer le dcodeur et les ports registresLa deuxime ALU na pas besoin dtre compltepas besoin dun 2me dcaleur ni dun 2me multiplieurUn seul port sur le cache de donnes2 ports seraient mieux (40 % des inst. sont des load/store), mais cela augmente la complexit du cacheEn cas de conflit sur le port du cache ou sur un oprateur, le lancement de la 2me instruction est diffr dun cycleOn peut charger plus de 2 instructions par cycle (agrandir le tampon de chargement)permet damortir les BTB miss ou les miss du cache dinstructionLe compilateur doit essayer de maximiser le paralllismesi 2 instructions conscutives sont dpendantes ou ont un conflit de ressource, essayer dintercaler une instructions indpendante

  • In-order de degr 4Exemple: alpha 21164, UltraSparc-3Degr = largeur de dcodage = 4 instructionsRegistres: 8 ports lecture, 4 ports critureTypique: 2 ALU, 1 unit de branchement, 1 ou 2 units load/store, 1 FP add, 1 FP mul1 ou 2 ports sur le cache de donnes L1sur lAlpha 21164, double-port obtenu en dupliquant le cache L1 (rem: les critures doivent tre faites dans les 2 copies)Gros travail du compilateur dpendances RAW, dont load-useconflits de ressourcesEn pratique, IPC < 2

  • Processeur out-of-order (OOO)Les instructions sont toujours charges et dcodes dans lordre squentiel, mais peuvent tre lances dans le dsordre sur les units dexcutioninstructions A, B, C: si B dpend de A et si est C indpendant de A et B, lancer A et C ensembleDcoupler le dcodage et le lancement via un tampon = fentre dinstructionsaprs dcodage, les instructions sont mises en attente dexcution dans la fentre dinstructions chaque cycle, on regarde dans la fentre dinstructions quelles sont les instructions prtes tre lances

  • Graphe data-flowOn peut former un graphe data-flow partir des instructions dans la fentre du processeurchaque instruction dans la fentre est un nud du graphe2 instructions sont relies sil y a une dpendance vraie entre elles lune utilise le rsultat de lautreUne instruction peut sexcuter ds que les instructions dont elle dpend ont t excutesChemin critique = plus longue chane de dpendances de donnesdtermine le temps dexcution minimum

  • Exemplefor (i=0;i=0 I1I2I3I4I5I6I1I2I3I4I5I6Chemin critique Dbit maxi = 1 itration / cycleLa boucle est droule dans la fentre dinstructions

  • Renommage de registres (1)Permet au processeur de se construire une reprsentation du graphe data-flowRegistre logique / registre physiqueregistre logique = celui manipul par le programmeurregistre physique = lendroit dans le processeur o la valeur est physiquement stockeRenommage de registre : chaque instruction dans la fentre crit dans un registre physique distinctPlusieurs instructions dans la fentre dinstructions peuvent crire dans le mme registre logique, mais elles crivent dans des registres physiques distinctsPlus de problmes de dpendances WAR et WAW, on ne conserve que les dpendances vraies (RAW)

  • Renommage: exempledbut: I1: r5 = mem(r2+r1) I2: r6 = mem(r3+r1) I3: r5 = r5 + r6 I4: mem(r4+r1) = r5 I5: r1 = r1 - 8 I6: saute dbut si r1>=0 I1: p10 = mem(p2+p1)I2: p11 = mem(p3+p1)I3: p12 = p10 + p11I4: mem(p4+p1) = p12I5: p13 = p1 - 8I6: saute boucle si p13>=0I1: p14 = mem(p2+p13)I2: p15 = mem(p3+p13)I3: p16 = p14 + p15I4: mem(p4+p13) = p16I5: p17 = p13 - 8I6: saute dbut si p17>=0. . .Boucle droule dans la fentre dinstructionsChaque instruction de la fentre crit dans un registre physique distinct.

  • Renommage de registres (2)Une fois les instructions renommes, on peut les excuter dans le dsordreattention aux load/store cependant (cf. plus loin dans le cours)Utiliser une table de renommage, consulte et mise jour au dcodagemaintient la correspondance entre registres logiques et physiquespour les oprandes: on prsente devant la table les numros de registres logiques, et elle renvoie les numros de registres physiques correspondantla table est mise jour sur chaque instruction crivant dans un registreon affecte un registre physique libre au registre logique destination de linstructionen cas de branchement mal prdit ou dexception, on rpare la table de renommage

  • Mise en uvre OOO Des structures invisiblesreorder buffer (tampon de rordonnancement)table de renommagepoints de reprisescoreboardtampon damorageQuestions prcisercomment rparer ltat du processeur en cas de branchement mal prdit ou dexception ?quand un registre physique devient-il libre ?Comment savoir quand une instruction est prte tre lance ?comment traiter le cas des load/store ?

  • Excution spculativeBranchements mal prditsun ou plusieurs branchements peuvent tre en attente dexcution dans la fentreune instruction peut sexcuter avant un branchement antrieur: elle sexcute spculativementsi le branchement est mal prdit, cest une mauvaise spculationExceptionstant quune instruction susceptible de gnrer une exception est en attente dexcution, les instructions plus rcentes sexcutent spculativementsi une exception se produit, cest une mauvaise spculationSur une mauvaise spculation, il faut annuler les instructions qui se sont excutes spculativement

  • Reorder buffer (ROB)Reorder buffer = tampon matrialisant la fentre dinstructionspeut tre mis en uvre comme une file circulaireLe ROB maintient lordre des instructionsvue de lextrieur du processeur, lexcution doit paratre squentielleLes instructions sont insres dans le ROB au dcodage, dans lordre squentiel, et sont retires du ROB aprs lexcution, dans lordre squentiel la fin du pipeline, il y a un (ou plusieurs) tage de retirement pour traiter ce qui doit tre fait dans lordre et/ou non spculativementdtection des exceptionscritures mmoireaccs en mmoire non-cachables (E/S)pour pouvoir tre retire, une instruction doit attendre que toutes les instructions plus anciennes quelle soient excutes et retires

  • Exemple de pipeline OOOprdictionchargementdispatchexcutioncriture registre / retirementdcodage / renommageOn identifie la location physique des oprandes, et on affecte un registre physique libre linstructionInstruction insre dans le ROBAttente si oprandes ou ressources pas disponiblesaccs cacheLes instructions sont retires du ROB dans lordre squentielEn cas de branchement mal prdit, vider la fentre dinstructionslecture registres

  • Renommage permanentMIPS R10000, Alpha 212641 banc de registres physiques (en fait 2: 1 entier + 1 flottant)on affecte un registre physique libre chaque nouvelle instruction crivant dans un registreTaille du banc de registres = nombre de registres logiques + nombres dentres du ROBex. MIPS R10000: ROB 32 entres, 32 registres logiques entiers, 64 registres physiques entiers (pareil pour les flottants)Un registre physique P associ au registre logique R est libr lorsquune nouvelle instruction I crit dans R et que cette instruction est retire du ROBlorsque I est renomme, le registre P est mis en attente de libration dans le ROBlorsque I est retire, on est sr quon naura plus besoin de la valeur, et on peut en toute scurit librer P, qui pourra tre rutilis par une autre instruction

  • Cycle des registres physiquesNumro de registre actifEn attente de librationNumro de registre libretable de renommage reorder bufferfile de registres libresancien registre physiquenouveau registre physique

  • Variante: renommage temporaireIntel P6, HP PA-8500, AMD Athlon, IBM Power 3, 1 banc de registres logiques + 1 banc de registres temporairesle nombre de registres temporaires est gal au nombre dentres du ROBen gnral, registres temporaires et ROB sont fusionns: 1 registre temporaire dans chaque entre du ROBtant que linstruction est dans le ROB, registre physique = registre temporaire lexcution, lcriture registre se fait dans le registre temporairequand linstruction est retire du ROB, registre physique = registre logiquela valeur stocke dans le registre temporaire est recopie dans le banc de registres logiques, et le registre temporaire est librune criture associative dans le ROB est ncessaire si la lecture des registres est faite avant lentre dans le ROB, il faut, lexcution, propager la valeur aux autres instructions dans le ROBsi la lecture des registres est faite au lancement, il faut, au retirement, indiquer aux instructions dans le ROB que la valeur est dsormais dans le banc de registres logiques

  • Rparation sur exceptionLes exceptions sont dclenches au retirementLa table de renommage doit retrouver ltat quelle avait avant que linstruction fautive soit dcodeRenommage permanent: plusieurs solutionsdpiler les registres physique du ROB et les remettre dans la tableutilis sur le MIPS R10000: prend plusieurs cyclesmaintenir une copie non-spculative de la table au retirementpoints de reprise sur chaque instruction (voir plus loin)Renommage temporaireltat non spculatif est contenu dans le banc de registres logiques Effacer les instructions spculatives (en particulier, vider le ROB), librer les registres physiques spculativement allous, puis passer la main au systme

  • Rparation sur branchement mal prditRemettre la table de renommage dans ltat o elle tait avant quon dcode le branchement et effacer les instructions spculatives du processeurSolution 1: rparer la mauvaise prdiction au retirement du branchement, comme pour les exceptionsentre lexcution dun branchement et son retirement, il peut scouler plusieurs cycles, ce qui rallonge la pnalit de mauvaise prdictionSolution 2: rparer la mauvaise prdiction ds que le branchement est excutintressant condition dtre capable de rparer la mauvaise prdiction rapidementsolution: tablir des points de reprise

  • Points de reprisePoint de reprise = photographie de ltat du processeur avant de dcoder un nouveau branchementen particulier, tat de la table de renommage Si le branchement est mal prdit, le point de reprise associ est utilis pour restaurer ltat du processeurLe nombre de branchements dans le ROB est limit par le nombre de points de repriseex. MIPS R10000: ROB 32 entres, 4 points de reprisequand il ny a plus de points de reprise disponibles pour un nouveau branchement, on gle le dcodage et on attend quun branchement soit retir et libre un point de reprise

  • Table de renommage directeMapping (correspondance) des registres logiques vers les registres physiquesRAM possdant autant dentres quil y a de registres logiques, chaque entre contenant un numro de registre physiquePour tablir un point de reprise, on recopie le mapping dans une table de sauvegardepermet de restaurer le mapping sur mauvaise prdictionles tables de sauvegarde et la table de renommage sont imbriques, afin que la restauration du mapping soit instantaneExemple: MIPS R1000032 registres logiques entiers, 64 registres physiques entiers, 4 points de reprise. Total table = 32*6 + 4*32*6 = 960 bitstable de renommage des registres flottants identique

  • Table de renommage inverseMapping des registres physiques vers les registres logiquesCAM (content addressable memory) possdant autant dentres quil y a de registres physiques, chaque entre comprenant un numro de registre logique, et un bit de validit pour marquer les registres actifsPour obtenir le numro de registre physique associ un registre logique, on fait une lecture associative. sil y a plusieurs entres candidates, cest celle dont le bit de validit est positionn qui est slectionnepour changer le mapping, invalider lancienne entre et valider la nouvelleUtilis sur lAlpha 21264 et le HAL Sparc64Point de reprise: sauvegarder seulement les bits de validitla sauvegarde prend peu de place, on peut tablir un point de reprise pas seulement sur les branchements, mais sur toutes les instructions dans le ROBex. Alpha 21264: 32 registres logiques entiers, 80 registres physiques entiers, ROB 80 entres (80 points de reprise). Total table = 80*5+80*80 = 6800 bits

  • ScoreboardScoreboard = table contenant autant dentres que de registres physiques dans le processeur, avec 1 bit dans chaque entre indiquant si la valeur dans le registre physique est disponible ou pasEn mme que linstruction est insre dans le ROB, le bit correspondant au registre physique destination de linstruction est mis 0Quand linstruction est excute, le bit est mis 1Pour savoir si les oprandes dune instruction sont disponibles, on consulte le scoreboard

  • Tampon damorageEn mme temps que linstruction est insre dans le ROB, une version excutable de linstruction est insre dans un tampon damorageLinstruction attend dans le tampon jusqu ce que ses oprandes et les ressources dexcution ncessaires soient disponiblesle tampon damorage rveille les instructions dont les oprandes sont prts et dcide quelle instruction doit tre lance sur quelle unitarbitrage entre instructions en cas de conflitUne fois excute, linstruction est retire du tampon rem: le tampon damorage peut tre plus petit que le ROB car il ne contient pas les instructions dj excutes et en attente de retirement

  • Partition du tampon damorageTampon damorage unifiUn seul tampon damorage dans le processeurIntel P6 : un tampon damorage de 20 entresTampon damorage distribu1 tampon par type dinstructions: entier, flottant, load/storesolution la plus utiliseex. MIPS R10000, 3 tampons damorage: tampon entier, tampon flottant et tampon load/store de 16 entres chacun (total: 48)1 tampon par unit dexcution arbitrage plus simpleutilis sur les PowerPC et IBM Powerex. PowerPC 604 : 6 tampons de 2 entres chacun aussi appel station de rservation

  • Cas des load/storeUne instruction load/store est divise en deux sous-instructionsune sous-instruction qui calcule ladresse daccsune sous-instruction qui accde au cache une fois ladresse calculeSous-instruction daccs au cacheinsre dans le tampon dadresses (tampon load/store)dpendante de la sous-instruction de calcul dadresseSous-instruction de calcul dadressesimilaire une instruction entire, sauf quau lieu dcrire le rsultat dans le banc de registres, on lcrit dans lentre de la sous-instruction correspondante dans le tampon dadressespeut sexcuter sur une ALU ou sur un additionneur ddi

  • Tampon dadressesLes load/store sont insres dans le tampon dadresses dans lordre squentiel, et ne le quittent que lorsque linstruction est retire du ROBtampon dadresses parfois appel address reorder bufferRletamponner les stores : un store na le droit dcrire en mmoire que lorsque quil est retir du ROBbypass mmoire: si un load essaye de lire une donne alors que le store qui crit cette donne est encore dans le tampon, possibilit dobtenir la valeur directement sans attendre quelle soit crite en mmoirele tampon dadresse doit vrifier que les dpendances load / store sont bien respectes

  • Dpendances load/storePour rsoudre les dpendances entre loads et stores, on a besoin de maintenir lordre squentielLe MIPS R10000 utilise une file circulaire de 16 entres, commune aux loads et aux storesLAlpha 21264 divise le tampon dadresses en une file de loads et une file de stores de 32 entres chacune. Lordre entre les loads et les stores est connu grce un numro de squence sur 8 bits.Deux solutions pour maintenir les dpendancesSolution simple : ne lancer un load que lorsque les adresses de tous les stores antrieurs au load sont connueson fait attendre certains loads plus que ncessaireAutre solution : loads spculatifs avec mcanisme de rparationutilise sur lAlpha 21264

  • Caches non bloquantsSur un cache miss, le chargement dinstructions continue, le ROB continue se remplir, et les instructions qui nutilisent pas la donne manquante peuvent continuer sexcuteren particulier, les cache hit peuvent continuer tre servisLa plupart des processeurs superscalaires OOO autorisent plusieurs dfauts de cache en cours de rsolutionsi plusieurs dfauts de cache concernent la mme ligne, on les fusionneen gnral, les miss sont pipelins afin dexploiter la bande passante au maximumIntel P6: 4 miss L1, Alpha 21264: 8 miss L1,

  • Un exemple: lAlpha 21264

    COMPAQ / DECDisponible depuis 1999Quelques caractristiques technologiquestransistors : 15 Millions (6 M logique, 9 M caches)frquence : 700 MHz (0.25 microns)puissance dissipe : 75 W (2 V)March visstations de travail, serveurs

  • 21264: caractristiques gnralesadresses logiques sur 64 bitspipeline de 7 tages pour les instructions de calcul entierprocesseur superscalaire out-of-order de degr 4 cache de donnes 64 Ko 2-way SA write-back (ligne 64 octets)cache dinstructions 64 Ko 2-way SA (ligne 64 octet)TLB donnes et TLB instructions de 128 entres chacunebus cache secondaire 128 bitsbus systme 64 bits4 ALU et 2 units flottantes2 des ALU peuvent calculer les adresses load/store, et 2 load/store peuvent accder au cache par cycleau maximum 6 instructions peuvent sexcuter simultanment

  • 21264: disposition sur siliciumcache dinstructions et prdicteur de lignecache de donnesD-TLB (dupliqu)contrle cache donnesgn. PCprd brdiv/sqrtfp addreg fpfp mulfp mapinterface L2tampon load /storeI-TLBtampon amor fpALUALUALUALUROBtampon amor intint mapreg intreg intbus load/store

  • Le pipeline du 21264charg.extraitrenom.lancelit regexeccrit intlit regadressecache 1cache 2lit regFP 1FP 2FP 3FP 4PCrparecrit intcrit fppnalit mini si branch mal prdit: 7 cyclesattente ventuellecalcul entierload/storecalcul flottantlecture ligneextrait bloc / transitinsert dans fentre1234567567895678910load-use: +2 cycleson peut lancer ?crit fp10transitload-use: +3 cycles

  • 21264: chargement dinstructionsLes lignes de cache font 64 octets (1 tag pour 64 octets)Sur un dfaut de cache dinstructions, le processeur charge dans le cache la ligne manquante et prcharge les lignes en squencemaximum de 4 lignes de 64 octets pr-charges dans le cacheLe chargement travaille en fait sur des quarts de lignes1 quart de ligne = 4 instructionspar commodit, dans la suite, on dira ligne pour quart de ligneLes lignes de cache comporte des bits de pr-dcodageune partie du dcodage est effectu sur un dfaut de cachebits de pr-dcodage utiliss pour la prdiction de branchement

  • 21264: prdiction et chargementtage 0: prdiction de ligne chaque ligne du cache dinstructions comporte un pointeur vers la prochaine ligne de cache (index et prdiction de banc 0/1) (accs < 1 cycle)on commence la prdiction de branchementrem: prdicteur hybride pour les conditionnels (cf. transparent 115)tage 1: chargement et gnration PCon charge la ligne prdite ltage prcdent et les 2 tags ayant le mme index que la ligne (cache 2-way SA)la prdiction de branchement commence au cycle prcdent est utilise pour gnrer le PC (complet) du bloc en cours de chargementcomparaison dindex: si dsaccord entre tages 0 et 1, cest le prdicteur de branchement qui gagne: on recharge la ligne (bulle dans le pipeline)sauf pour les sauts indirect qui ne sont pas des retourstage 2: comparaison du PC avec les 2 tags chargs ltage prcdent 2 bulles si mauvaise prdiction de bancdtection ventuelle dun cache miss

  • 21264: prdiction et chargement Cache 2-way SA prd. lignegnration PCcompare indexbloc dinstructions tags bancs 0 et 1 prd hybprd. ligne tags compare tags PCBloc BBloc Aprd. br. Bloc Ctage 0tage 1tage 2

  • 21264: remarquesEn pratique, dbit de chargement moyen infrieur 4 tous les blocs de base ne commencent pas sur un dbut de ligne et ne se terminent pas sur une fin de lignele compilateur doit essayer de faire commencer les fonctions et les petites boucles sur des frontires de ligne (insrer des NOP si ncessaire)Une prdiction de ligne pour 4 instructionsle compilateur doit essayer de mettre les call en fin de lignesinon, il y aura 2 successeurs pour la ligne (fonction et retour)Le 21264 ne prdit quun branchement par cyclele chargement est gel autant de cycles quil y a de branchements prdits non pris dans une ligne

  • ExerciceSoit un processeur capable de prdire un branchement par cycle et de charger une ligne de 4 instructions par cycle (dit autrement, le bloc courant sarrte soit sur le prochain branchement, soit sur la fin de ligne)On a en moyenne un branchement pour 5 instructions. Quel est le dbit moyen de chargement en instructions par cycle ?on supposera une prdiction parfaite, et on supposera que la disposition des blocs de base est indpendante des frontires de ligneConclusion ?Indication: essayer dabord de rpondre la question en supposant une taille de ligne infinie

  • 21264: lancement OOOReorder buffer de 80 entres80 registres physiques entiers72 registres physiques flottantsgrosso-modo, le ROB est plein quand il y a 40 instructions de calcul entier et 40 instructions de calcul flottant en attente de retirement2 tables de renommage inverses1 pour le calcul entier, 1 pour le calcul flottantun point de reprise pour chaque instruction du ROB, soit 80 points de repriseTampons damorageun tampon de 20 instructions pour les instructions de calcul entier (rem: comprenant le calcul dadresse pour les load/store)un tampon de 15 entres pour les instructions de calcul flottantles instructions sont maintenues dans lordre squentielpolitique damorage: en cas de conflit de ressource, priorit aux plus anciennesune instruction excute est retire du tampon, et le tampon est compress pour boucher le trou tout en maintenant lordre squentiel

  • 21264: clusters dALU4 instructions de calcul entier et 2 load peuvent sexcuter simultanmentCe quon aimerait avoir banc de 80 registres physiques entiers avec 8 ports de lecture et 6 ports dcriturerseau de bypass 6 vers 8Problme: impact sur le cycle dhorloge du processeurSur le 21264 : 2 clusters2 units de calcul entier par clusterbanc de registres entiers dupliqu sur chacun des clusters4 ports de lecture et 6 ports dcriture1 rseau de bypass local chaque cluster: +0 cycle1 rseau de bypass entre les cluster: +1 cycleLa logique damorage tend envoyer des instructions dpendantes sur le mme cluster

  • Clusters du 2126480 registres physiques (int)ALU 1ALU 280 registres physiques (int)ALU 3ALU 4+1 cycle

  • 21264: tampons dadressesEn fait, spar en 2 tampons: un tampon de load et un tampon de store de 32 entres chacunLes instructions dans chaque tampon sont ordonnesquand un load/store est insr dans le ROB et le tampon damorage entier, une entre lui est alloue dans le tampon dadresses correspondantun load/store retir du ROB retire aussi son entre dans le tampon dadressesLe tampon de store comporte galement les donnes crireles store peuvent sexcuter OOO mais crivent dans le tampon de storeles donnes du tampon sont recopies dans le cache au retirement, dans lordre squentielUn numro de squence sur 8 bits affect chaque instruction dans le processeur permet (entre autre) de dterminer lordre entre les load et les store

  • 21264: excuter les load sans attendreLes load peuvent sexcuter dans le dsordre vis-a-vis des autres load, et aussi vis vis des storeQuand un load accde au cache, on consulte en parallle le tampon de storesi un store plus ancien a crit la mme adresse, cest la donne dans le tampon de store qui est mise sur le bus et qui est envoye au loadSi un store sexcute et quon trouve quun load plus rcent a dj accd la mme adresse, le load et les instructions suivantes sont effaces du processeur puis rechargescomme une mauvaise prdiction de branchement: on essaie dviterune table de 1k * 1 bits, indexe avec le PC du load, permet de prdire si le load dpend dun store ou passi on prdit quil sera dpendant, on attend que tous les store antrieurs au load soient excuts

  • 21264: prdiction de hit/missPnalit load-use de 2 cycles (pipeline de calcul entier)Cela suppose quil y a un hit dans le cache si on veut que la pnalit load-use soit vraiment de 2 cycles, on doit lancer linstruction dpendante 3 cycles aprs le lancement du load, au moment o celui-ci est dans le premier tage daccs cache or, ce moment, le tampon damorage ne sait pas sil y aura un hit ou un miss: il ne le saura qu la fin du deuxime tage daccs cache: entre temps, 2 cycles de lancement auront eu lieuen cas de miss, les instructions qui ont t lances pendant les 2 cycles dincertitude sont arrtes et sont remises dans le tampon damorageen fait elles nont pas encore quitt le tampon: il suffit de les ractiverinconvnient: 2 cycles pendant lesquels aucun travail utile na t effectuPrdiction de hit/miss: utilisation dun compteur 4 bits (partag)incrment de 1 sur hit, dcrment de 2 sur miss, prdiction = bit poids fortsi zone avec beaucoup de miss, pnalit load-use de 4 cycles sur hit

  • 21264: dfauts de cache8 dfauts de cache de donnes peuvent tre en cours de rsolution8 requtes sur des lignes de 64 octets distinctesplusieurs load peuvent tre en attente dune mme requtemiss peut tre sur cache L2 ou sur DRAMLes requtes peuvent tre servies dans le dsordreSur un miss, la ligne remplace (si modifie depuis quelle est dans le cache) est mise dans un tampon de 8 lignes en attente dcriture vers le cache L2miss L1 / hit L2:latence minimum de rsolution = 12 cycles (latence pure SRAM 6 cycles + 4 cycles de remplissage + 2 cycles rservs aux load/store)bande passante bus: 16 octets pour 1.5 cycles CPUmiss L2latence typique: 160 ns (DRAM 60 ns)96 cycles CPU 600 MHzbande passante bus systme: 8 octets pour 1.5 cycles CPU

  • ExerciceEn supposant une bande passante illimite, quel est, en fonction de N et L, le dbit mmoire maximum en nombre de lignes par cycles ? Si on a une bande passante de 1 ligne pour 12 cycles et une latence de rsolution de 96 cycles par dfaut de cache, quelle valeur de N permet dexploiter au maximum la bande passante ?Supposons que le programme effectue un parcourt de liste et quune requte ne puisse pas tre mise avant que le dfaut de cache prcdent soit rsolu. Comment sexprime le dbit mmoire en fonction de L ?Soit un processeur pouvant avoir des dfauts de cache sur N lignes distinctes simultanment en cours de rsolution. On suppose que la latence de rsolution dun dfaut de cache est de L cycles et que les requtes sont servies dans lordre dmission.

  • Processeurs OOO: bilan (1)Matriel plus complexe que in-order Une mauvaise prdiction de branchement est plus pnalisante sur un processeur OOO que sur un processeur in-orderpipeline OOO en gnral plus longparalllisme dinstructions: loi empirique en racine carresoit N le nombre dinstructions entre 2 branchements mal prdits conscutifsmodle empirique: la longueur L (en cycles) du chemin critique du graphe data-flow est proportionnelle la racine carre de NN1N2N1+N2si on enlve la mauvaise prdiction ... si N1=N2,

  • Processeur OOO: bilan (2)Que peut faire le compilateur ?en principe, ordonnancement dinstructions moins critique que pour in-order permet nanmoins de mieux utiliser la fentre dinstructions du processeurpar exemple, si plusieurs cache miss sont suffisamment rapprochs pour pouvoir se trouver simultanment dans la fentre du processeur, les latences daccs peuvent se recouvrirsur un processeur OOO, certains miss sont moins coteux que dautres optimisations classiquesdiminuer le nombre dinstructions excutesune valeur sre amliorer la localit dans les caches

  • Superscalaire: processeurs enfouis ?si on na pas besoin dune grande performance, un processeur scalaire (=degr 1) pipelin fait laffairevoire un simple micro-contrleur 8 bits lorsquon a besoin dune haute performance avec une basse consommation lectrique, un processeur superscalaire peut tre une bonne solutiondu point de vue de la consommation lectrique, il est plus intressant dexcuter 2 instructions par cycle que de doubler la frquence CPUplutt in-order (voire VLIW, cf. cours sur les optimisations de code)certains processeurs OOO sont dclins en version low-powerex. PowerPC

  • Quelques directions nouvelles ... Processeur SMT (simultaneous multithreading)lorsquun seul flot dinstruction sexcute sur un processeur superscalaire, les ressources matrielles (units dexcution, registres physiques, caches, bande passante, ) ne sont gnralement pas utilises 100 %ide: plusieurs flots dinstructions (indpendants ou pas) se partagent les ressources dun seul processeur superscalairebut: utiliser les ressources au maximumlAlpha 21464 sera SMT (sortie prvue pour 2002)Multiprocesseur intgrplusieurs processeurs sur une mme puce (ex. IBM Power 4 = 2 processeurs)mulation / compilation de binaire binairela compatibilit binaire est une contrainte dont on aimerait saffranchiride: ISA simul via un logiciel dmulationTransmeta Crusoe : processeur VLIW + logiciel dmulation + optimisation dynamique du code VLIW gnr + supports matriels spcifiques