10.07.2015 Views

Architecture de base d'un processeur embarqué - Moodle

Architecture de base d'un processeur embarqué - Moodle

Architecture de base d'un processeur embarqué - Moodle

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapitre 3 : Introduction auxarchitectures <strong>de</strong> systèmes embarqués1. <strong>Architecture</strong>s RISC et difficultés (rappel)2. Parallélisme d’instructions3. <strong>Architecture</strong>s pour ILP (superscalaire, SIMD etVLIW)4. Déroulement <strong>de</strong> boucles5. Prédiction <strong>de</strong> branchementINF3610 Systèmes embarqués1


<strong>Architecture</strong> RISC (rappel)• Cycle d'horloge court• Petit nombre <strong>de</strong> cycles/instruction• Efficacité du pipeline d'instruction• Comparaisons avec CISC (Complex Instruction-Set Computer):– Pour diminuer les accès mémoires autrefois dispendieuses (<strong>de</strong> plus, on neconnaissait pas encore la mémoire cache).– Pour simplifier la construction <strong>de</strong>s compilateurs.– Instruction complexe en langage assembleur pour simplifier le mappingavec un langage <strong>de</strong> programmation <strong>de</strong> haut niveau.– Pipeline difficile à réaliser donc Ncpi > 1.– N.B. Le CISC est réapparu avec le <strong>processeur</strong> configurable (RISC + DSP+VLIW + CISC)2INF3610 Systèmes embarqués


<strong>Architecture</strong> RISC (rappel)• DLX peut être réalisé avec 5 étapes du pipeline:• LI: lecture d'instruction• DI: décodage <strong>de</strong> l'instruction et lecture <strong>de</strong>s registres• EX: exécution et calcul <strong>de</strong> l'adresse effective (réalisation<strong>de</strong> l'opération indiquée par le co<strong>de</strong> d'opération ou additionpour accès mémoire ou addition pour branchement/saut)• MEM: accès mémoire ou fin <strong>de</strong> branchement (exécution<strong>de</strong> l'accès mémoire ou du branchement)• ER: écriture du résultat dans le banc <strong>de</strong> registres3INF3610 Systèmes embarqués


<strong>Architecture</strong> RISC (rappel)INF3610 Systèmes embarqués4


<strong>Architecture</strong> RISC (rappel)INF3610 Systèmes embarqués5


Adresse calculéeLe pipeline DLXCondition <strong>de</strong> branchementLI/DIDI/EXEX/MEMMEM/ERCP4ADDMUXRINCPRI[6:10]RI[11:15]RegistresMEM/ERABMUXMUXZéro?MémoireinstructionsBranchementprisUALDonnée à écrire enregistreMémoiredonnéesAdresseValeur chargée(DMC)MUXDonnée à écrireRI[16:31]ÉtendreImmRI[0:5] Instruction InstructionINF3610 Systèmes embarqués6Donnée à écrire enregistre


<strong>Architecture</strong> RISC (rappel)• Objectif du concepteur: équilibrer la taille <strong>de</strong>s étages du pipeline.• L'accélération liée au pipeline = nombre d'étages= 5• Remarques:– La difficulté principale <strong>de</strong> la technique du pipeline est ce qu'onappelle les aléas du pipeline, en effet il existe <strong>de</strong>s situations,appelées aléas <strong>de</strong> données, qui empêchent l'instruction suivante duflux d'instruction <strong>de</strong> s'exécuter au cycle d'horloge qui lui estaffecté.– 3 types aléas: structurels, données et <strong>de</strong> contrôle– Par conséquent, les aléas réduisent la performance du pipeline(accélération inférieure à 5)• Les aléas (ou dépendance) <strong>de</strong> données et <strong>de</strong> contrôle sont ceux quiaffectent l’accélération <strong>de</strong> 5 (typiquement entre 3.5 et 5 selon lastratégie)INF3610 Systèmes embarqués7


Regardons plus en détail ces dépendances•Dépendances <strong>de</strong> données•aléas <strong>de</strong> type LAE (ADD démarreavant que LD soit complété)LDADDDSDF0, 0(R1)F4, F0, F20(R1), F4•antidépendances•aléas <strong>de</strong> type EAL (à cause dudélai d’exécution <strong>de</strong> l’opérationDIV, LD est complété avant quele DIV soit complété).LDDIVSDLDDIVSDF0, 0(R1)F4, F0, F20(R1), F4F0, 0(R1)F4, F0, F20(R1), F4INF3610 Systèmes embarqués8


Regardons plus en détail ces dépendances•dépendances <strong>de</strong> sortie•aléas <strong>de</strong> type EAE(ADD termine avant DIV)LDDIVSDLDADDSDF0, 0(R1)F4, F0, F20(R1), F4F0, 0(R1)F4, F0, F20(R1), F4INF3610 Systèmes embarqués9


Regardons plus en détail ces dépendances• LAE (lecture après écriture): j essaie <strong>de</strong> lire la sourceavant que i ne l'ait écrite: j obtient alors l'anciennevaleur. C'est l'aléas le plus fréquent.• EAL (écriture après lecture): j essaie d'écrire dans une<strong>de</strong>stination avant qu'elle ne soit lue par i. i obtient alorspar erreur la nouvelle valeur.• EAE (écriture après écriture): j essaie d'écrire uneopéran<strong>de</strong> avant qu'il ne soit écrit par i. L'écriture se faitalors dans le mauvais ordre, et laisse dans la <strong>de</strong>stinationla valeur écrite par i plutôt que celle écrite par j.INF3610 Systèmes embarqués10


Regardons plus en détail ces dépendances•Dépendances <strong>de</strong> contrôleinstruction1 possè<strong>de</strong> une dépendance<strong>de</strong> contrôle par rapport condition1instruction2 possè<strong>de</strong> une dépendance<strong>de</strong> contrôle par rapport condition1if (condition1)instruction1;elseinstruction2;if (condition3)instruction3;instruction3 possè<strong>de</strong> une dépendance<strong>de</strong> contrôle par rapport condition3•Le compilateur doit analyser ces dépendancesINF3610 Systèmes embarqués11


Regardons plus en détail ces dépendances•Dépendances <strong>de</strong> contrôleinstruction1 possè<strong>de</strong> une dépendance<strong>de</strong> contrôle par rapport condition1instruction2 possè<strong>de</strong> une dépendance<strong>de</strong> contrôle par rapport condition1instruction3 possè<strong>de</strong> une dépendance<strong>de</strong> contrôle par rapport condition3sortie...SUBIBEQZ•Le compilateur doit analyser ces dépendancesLDADDDSDSUBIBEQZ...R1,R1,#8R1, sortieF6,0(R1)F8,F6,F20(R1),F8R1,R1,#8R1, sortieINF3610 Systèmes embarqués12


Technique d’optimisation pour le point flottant (suite)Co<strong>de</strong> DLX sans optimisationB: LD F0, 0(R1) ; chargement element vecteurADDD F4, F0, F2 ; x[i] = x[i] + s;SD 0(R1), F4 ; rangerSUBI R1, R1, #8 ; pointeur (double-mot)BNEZ R1, B ; R1 0AnalyseB: LD F0, 0(R1) 1suspension 2ADDD F4, F0, F2 3suspension 4suspension 5SD 0(R1), F4 6SUBI R1, R1, #8 7BNEZ R1, B 8suspension 91 itération = 9 cycles1000 itérations = 9000 cyclesINF3610 Systèmes embarqués14


Technique d’optimisation pour le point flottant (suite)• On a donc un modèle pipeline avec une seule unité EXqui peut jouer le rôle d’entier ou <strong>de</strong> flottante. Lorsqu’onfait un ADDD (addition sur un double mot), ça <strong>de</strong>man<strong>de</strong>4 cycles dans l’unité EX alors que si on fait un ADD(addition sur un entier) ça <strong>de</strong>man<strong>de</strong> 1 cycle seulement.INF3610 Systèmes embarqués15


Technique d’optimisation pour le point flottant (suite)• Notez également que les 3 étages du ADDD peut êtrepipelinées si il n’y a pas <strong>de</strong> dépendances <strong>de</strong> données:Exemple 1: ADDD et SD aux cycles 5 et 6 (pageprécé<strong>de</strong>nte)Exemple 2: Deux ADDD consécutifs (ADDD et ADDD auxcycles 5, 6, 7, 8 et 9 <strong>de</strong> la page suivante)INF3610 Systèmes embarqués16


Technique d’optimisation pour le point flottant (suite)• En résumé on aura:Instruction produisantle résultatINF3610 Systèmes embarquésInstructionutilisant le résultatLatence en cyclesd’horlogeADDD ADDD 3ADDD SD 2LD sur un double ADDD 1LD sur un double SD sur un double 017


Technique d’optimisation pour le point flottant (suite)• Schématiquement on aura:INF3610 Systèmes embarqués18


Technique d’optimisation pour le point flottant (suite)Autres modèles possibles:• Modèle pipeline sauf pour EX qui supporte à la fois lesopérations entières et flottantes.• Modèle pipeline sauf pour EX qui supporte <strong>de</strong>sopérations entières et flottantes distinctes.Réf.: Computer <strong>Architecture</strong>, A Quantitative Approach, H&P, 1996. p228-251INF3610 Systèmes embarqués19


Technique d’optimisation pour le point flottant (suite)OrdonnancementB: LD F0, 0(R1) 1suspension 2ADDD F4, F0, F2 3SUBI R1, R1, #8 4BNEZ R1, B 5SD 8(R1), F4 61 itération = 6 cycles1000 itérations = 6000 cyclesA = 9000/6000 = 1.5Réf.: Computer <strong>Architecture</strong>, A Quantitative Approach, H&P, 1996. p228-251INF3610 Systèmes embarqués20


Technique d’optimisation pour le point flottant (suite)Déroulage <strong>de</strong> la boucle pour 4 itérationsB: LD F0, 0(R1)ADDD F4, F0, F2SD 0(R1), F4LD F6, -8(R1) ; retrait <strong>de</strong>s SUBI etADDD F8, F6, F2 ; BNEZ à chaqueSD -8(R1), F8 ; itérationLDADDDSDLDADDDSDF10, -16(R1)F12, F10, F2-16(R1), F12F14, -24(R1)F16, F14, F2-24(R1), F16SUBI R1, R1, #32BNEZ R1, B1 itération = 27 cycles250 itérations = 6750 cyclesA = 9000/6750 = 1.33Réf.: Computer <strong>Architecture</strong>, A Quantitative Approach, H&P, 1996. p228-251INF3610 Systèmes embarqués21


Technique d’optimisation pour le point flottant (suite)Déroulage + OrdonnancementB: LD F0, 0(R1)LD F6, -8(R1)LD F10, -16(R1)LD F14, -24(R1)ADDD F4, F0, F2ADDD F8, F6, F2ADDD F12, F10, F2ADDD F16, F14, F21 itération = 14 cycles250 itérations = 3500 cyclesA = 9000/3500 = 2.57SD 0(R1), F4SD -8(R1), F8SD -16(R1), F12; SD -24(R1), F16SUBI R1, R1, #32BNEZ R1, BSD 8(R1), F16 ; 8 - 32 = -24Réf.: Computer <strong>Architecture</strong>, A Quantitative Approach, H&P, 1996. p228-251INF3610 Systèmes embarqués22


<strong>Architecture</strong>s pour ILP(Superscalaire, SIMD, VLIW)Idée: Exécuter plus d’une instruction par cycleImpact: CPI < 1 !Solutions:<strong>Architecture</strong> superscalaireplusieurs pipelines travaillent en parallèle surplusieurs instructions<strong>Architecture</strong> VLIW (Very Long Instr. Word)Une seule instruction effectue plusieurs traitementsINF3610 Systèmes embarqués23


Exemple <strong>de</strong> superscalaire (ARM Cortex A8)INF3610 Systèmes embarqués24


<strong>Architecture</strong> superscalairePlusieurs pipelines en parallèle•Ordonnancement dynamique selon le cours <strong>de</strong> l’exécutionExemple 1:INF3610 Systèmes embarqués25


<strong>Architecture</strong> superscalairePlusieurs pipelines en parallèle•Ordonnancement dynamique selon le cours <strong>de</strong> l’exécutionPour 2 pipelines on aura:INSTRUCTIONENTIÈRE LI DI EX ME ERFLOTTANT LI DI E1 E2 E3 … En ME ERENTIÈRE LI DI EX ME ERFLOTTANT LI DI E1 E2 E3 … En ME ERENTIÈRE LI DI EX ME ERFLOTTANT LI DI E1 E2 E3 … En ME ERINF3610 Systèmes embarqués26


<strong>Architecture</strong> superscalaireExemple: Paralléliser: B:LD F0,0(R1)ADDD F4,F1,F2SD 0(R1), F4SUBI R1, R1, #8BNEZ R1, BProblème:Le micro<strong>processeur</strong> ne peut pas résoudre tous les aléas<strong>de</strong> données.Solution:Trouver un ordonnancement déroulé sans délai nisuspension qu’on peut séparer sur 2 pipelines.INF3610 Systèmes embarqués27


<strong>Architecture</strong> superscalaireLe calcul <strong>de</strong> l’addition se faiten 3 cyclesAu moins 3 itérations doiventêtre déroulées …Pour 1000 éléments(ou 200 itérations)1 itération = 17 cycles200 itérations = 3400 cyclesA = 9000/3400 = 2.65B:LD F0,0(R1)LD F6,-8(R1)LD F10,-16(R1)LD F14,-24(R1)LD F18,-32(R1)ADDD F4,F0,F2ADDD F8,F6,F2ADDD F12,F10,F2ADDD F16,F14,F2ADDD F20,F18,F2SD 0(R1),F4SD -8(R1),F8SD -16(R1),F12SD -24(R1),F16SUBI R1, R1, #40BNEZ R1, BSD 8(R1),F16INF3610 Systèmes embarqués28


<strong>Architecture</strong> superscalairePIPELINE ENTIERB:LD F0,0(R1)LD F6,-8(R1)LD F10,-16(R1)LD F14,-24(R1)LD F18,-32(R1)SD 0(R1),F4SD -8(R1),F8SD -16(R1),F12SD -24(R1),F16SUBI R1, R1, #40BNEZ R1, BSD 8(R1),F16PIPELINE FLOTTANTB:ADDDADDDADDDADDDADDDF4,F0,F2F8,F6,F2F12,F10,F2F16,F14,F2F20,F18,F21 itération = 12 cycles200 itérations = 2400 cyclesA = 9000/2400 = 3.75INF3610 Systèmes embarqués29


En résumé:4 modèles possibles pour une architecture (super) scalaire:1. Modèle pipeline avec une seule unité EX (elle aussipipelinable) qui supporte à la fois les opérations entièreset flottantes (ref sli<strong>de</strong> 15 à 18).2. Modèle pipeline sauf pour EX (non pipelinable) quisupporte à la fois les opérations entières et flottantes (refsli<strong>de</strong> 19).3. Modèle pipeline sauf pour EX (non pipelinable) quisupporte <strong>de</strong>s opérations entières et flottantes distinctes(ref sli<strong>de</strong> 19).4. Modèle pipeline avec pour EX plusieurs pipelines enparallèle (ref sli<strong>de</strong> 25).INF3610 Systèmes embarqués30


<strong>Architecture</strong> VLIWINF3610 Systèmes embarqués31


<strong>Architecture</strong> VLIW• Une architecture VLIW utilisent plusieurs unitésfonctionnelles indépendantes.• Plutôt que d’essayer <strong>de</strong> lancer plusieurs instructionsindépendantes vers les unités, une VLIW met plusieursopérations dans une seule instruction très longue, d’oùson nom.INF3610 Systèmes embarqués32


VLIW• Voir aussi:http://marcel.<strong>de</strong>veloppez.com/cours/systeme/architectureordinateur/html/no<strong>de</strong>222.html33INF3610 Systèmes embarqués


<strong>Architecture</strong> VLIWOrdonnancement statiquele compilateur cherche plusieursinstructions indépendantes et les enco<strong>de</strong> enune seuleExemple:Des unités spéciales exécutent chaqued’instructionLD F0,0(R1) || LD F6,-8(R1) || ADDD F10,F12,F16 ||ADDD F11,F13,F17 || bnez r1,b || sub r2,r2,#1INF3610 Systèmes embarqués34


<strong>Architecture</strong> VLIWUNITÉ TRANSFERT 1LD F0,0(R1)LD F10,-16(R1)LD F18,-32(R1)SD 0(R1),F4SD -16(R1),F12SD -32(R1),F20UNITÉ TRANSFERT 2LD F6,-8(R1)LD F14,-24(R1)SD -8(R1),F8SD -24(R1),F16UNITÉ EXÉCUTION 1 UNITÉ EXÉCUTION 2ADDD F4,F0,F2ADDD F12,F10,F2ADDD F20,F18,F2ADDD F8,F6,F2ADDD F16,F14,F2UNITÉ ENTIÈRESUBI R1, R1, #40BNEZ R1, Bsuspension1 itération = 10 cycles200 itérations = 2000 cyclesA = 9000/2000 = 4.5INF3610 Systèmes embarqués35


Exemple <strong>de</strong>VLIW(TMS320C6472)INF3610 Systèmes embarqués36


Attention il y a une limite à dérouler les boucles et àvouloir tout paralléliser: parallélisme <strong>de</strong> boucleL’itération 1 indépendante <strong>de</strong>l’itération 2for (i=1; i


Il y aussi les dépendances <strong>de</strong> données à traversles itérations <strong>de</strong> boucle: parallélisme <strong>de</strong> boucleB[i] <strong>de</strong> l’itération 2 dépend <strong>de</strong>B[i+1] <strong>de</strong> l’itération 1Sauf qu’il n’y a pas <strong>de</strong> dépendancecirculaire…for (i=1; i


Prédiction <strong>de</strong> branchement• Prédiction statique• Prédiction dynamique• Délai <strong>de</strong> branchement39INF3610 Systèmes embarqués


Prédiction statique• Hennessy et Patterson on amassé suffisamment <strong>de</strong>statistiques pour affirmer que tous les <strong>processeur</strong>s ont unefréquence d'instructions <strong>de</strong> branchement conditionnel <strong>de</strong>11% à 17%, alors que la fréquence <strong>de</strong>s instructions <strong>de</strong>branchement inconditionnelles varie entre 2% et 8%.• La plupart <strong>de</strong>s branchements à partir du test <strong>de</strong> bit ne sontpas effectués (trivial sur 32 ou 64 bits)• Pour le DLX ils ont trouvé que:– 53% <strong>de</strong>s branchements cond. sont effectués.– 75% <strong>de</strong>s branchements exécutés sont <strong>de</strong>s branchements avantINF3610 Systèmes embarqués40


Prédiction statique• Par conséquent, à l'ai<strong>de</strong> <strong>de</strong> ce genre <strong>de</strong> prédictions,<strong>de</strong>ux actions sont possibles:1. Considérer que le branchement n'est pas effectué ou2. Considérer que le branchement est effectué. L'adresse<strong>de</strong> la <strong>de</strong>stination doit être connue avant le résultat dubranchement.• Remarque: dans les <strong>de</strong>ux cas, si la prédictions'avère fausse, on "flush" le pipeline et on doit toutremettre comme avant (dangereux si on fait <strong>de</strong>sécritures en mémoire).INF3610 Systèmes embarqués41


Prédiction dynamique (matérielle)• On utilise un tampon <strong>de</strong> prédiction <strong>de</strong> branchement, c’està-direune petite cache auquel on accè<strong>de</strong> par l'adresse <strong>de</strong>l'instruction à l'étage LI du pipeline ou par 2 bits attachés àchaque bloc du cache instruction et lu avec l'instruction.INF3610 Systèmes embarqués42


Délai <strong>de</strong> branchement• Soit un délai <strong>de</strong> branchement <strong>de</strong> n cycles :Instruction <strong>de</strong> branchementsuccesseur 1 suivantsuccesseur 2 suivant...successeur n suivant<strong>de</strong>st du branch si effectué#on ajoute un ordonnancement <strong>de</strong> n#instructions non dommageables• où les successeurs sont dans les délais <strong>de</strong> branchement. Ce sont <strong>de</strong>sinstructions non dommageables et autant que possible utile, sinon onpeut utiliser <strong>de</strong>s NOP (No Operation).43INF3610 Systèmes embarqués


Délai <strong>de</strong> branchement• Il existe au moins 3 façons d'ordonnancerun délai:1. Avant le branchement2. À partir <strong>de</strong> la cible3. Après le branchement44INF3610 Systèmes embarqués


Délai <strong>de</strong> branchementINF3610 Systèmes embarqués45

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!