Architecture Avancée des Processeurs - Cours 2022/2023 PDF
Document Details
Université de Carthage, Faculté des Sciences de Bizerte
2022
Emna Ben Salem
Tags
Summary
Ce document est un cours sur l'architecture avancée des processeurs, couvrant des concepts comme l'évolution, les processeurs multi-coeurs, les processeurs graphiques, etc. Le document est un support de cours de l'Université de Carthage.
Full Transcript
Université de Carthage Département Informatique Faculté des Sciences de Bizerte SEIoT Architecture Avancée des Processeurs Licence SEIoT 2 Année Universitaire...
Université de Carthage Département Informatique Faculté des Sciences de Bizerte SEIoT Architecture Avancée des Processeurs Licence SEIoT 2 Année Universitaire 2022/2023 Emna Ben Salem [email protected] Plan du cours Chapitre 1. Architecture et évolution des processeurs Chapitre 2. Processeurs Multi-cores Chapitre 3. Processeurs graphiques (GPU) Chapitre 4. Processeurs de traitement numérique du signal (DSP) Chapitre 5. Circuits logiques programmables (FPGA) Architecture avancée des processeurs 2 Chapitre 1 : Architecture et Evolution des processeurs Architecture avancée des processeurs Architecture simple d’un processeur Un processeur est un circuit logique capable d’effectuer des traitements sur une séquence d’instructions. Il contient : Unité de contrôle, de commande et de synchronisation Unité arithmétique et logique Mémoire et registres internes Unité d’entrées/sorties Bus internes Bus Unité de Unité de contrôle traitement Mémoires et Entrées/Sorties Registres Architecture avancée des processeurs 4 Architecture simple d’un processeur Registre Compteur d’instruction ordinal Registres Accumulateur généraux Bus interne Décodeur Séquenceur Registre UAL Horloge d’état Unité de contrôle Unité de traitement Processeur central Architecture avancée des processeurs 5 Bus interne Un bus est un système de transfert de données entre plusieurs unités fonctionnelles de traitement. En plus de l'aspect physique permettant de faire transiter les informations, un bus informatique est constitué des circuits d’interfaces et du protocole qui définit la manière dont les signaux doivent se comporter pour réaliser ce transfert. Trois types de bus rencontrés : - bus de données (Data Bus) : est bidirectionnel puisque le processeur l'utilise pour lire et pour écrire en mémoire à travers les registres. - bus d’adresse (Address Bus) : permet d'identifier les composants qui partagent les données. - bus de contrôle (Control Bus) : un ensemble de signaux identifiant le type d'action (lecture ou écriture, taille du message, etc). Les bus se distinguent par leur largeur (nombre de bits) et leur vitesse (nombre de bits/seconde). Architecture avancée des processeurs 6 Unité de traitement Elle est chargée d’effectuer les traitements des opérations de types arithmétiques ou booléennes. Elle est composée au minimum : des registres généraux RG, d’un accumulateur ACC , d’une unité arithmétique et logique : UAL. Unité Arithmétique et Logique L’unité arithmétique logique (UAL) est un circuit logique combinatoire formé de portes logiques prenant deux nombres en entrée et générant un nombre en sortie en fonction de signaux de commande indiquant l’opération, arithmétique ou logique, à effectuer. En fonction de l’opération sélectionnée : - Fournit le résultat. - Met à jour un registre d’état pour contrôler si le résultat = 0, résultat positif / négatif, débordement ou retenue. Architecture avancée des processeurs 7 Unité de traitement Registres généraux et Accumulateur Les registres sont une zone de stockage temporaire des données située dans le processeur. Ils sont construits à l’aide des bascules. Leur intérêt est de pouvoir accéder plus rapidement aux données. La fonction des registres généraux (regroupés dans un banc de registres) est de contenir les données transitant entre l’unité de traitement et l’extérieur. La fonction de l’accumulateur est principalement de contenir les opérandes ou les résultats des opérations de l’UAL. Architecture avancée des processeurs 8 Unité de contrôle Une unité de contrôle est un circuit logique séquentiel qui réalise un automate fini. Elle est chargée de commander et de gérer tous les différents constituants de l’ordinateur : - contrôler les échanges, - gérer l’enchaînement des différentes instructions, etc... Elle est composée au minimum de : - Un registre d’instruction RI - Un compteur ordinal CO - Un séquenceur - Un décodeur de codes d’opérations - Un registre d’état - Une horloge L’unité de contrôle est pilotée par une horloge qui permet de cadencer l’exécution des instructions du programme : - Mise en service des circuits concernés - Activation des communications Architecture avancée des processeurs 9 Registres de l’unité de contrôle Registre d’instruction Il contient l’instruction récupérée de la mémoire pour qu’elle soit exécutée par l’unité de traitement. Compteur Ordinal Pour exécuter une instruction : 1. le processeur commence par envoyer un ordre de lecture mémoire associé à la valeur de l’adresse contenue dans le CO, 2. le processeur incrémente alors CO. Séquenceur Le séquenceur est un automate qui a la responsabilité de générer les signaux de commande nécessaires pour actionner et contrôler les unités participant à l’exécution d’une instruction. Deux types de séquenceur : Séquenceur câblé : un circuit séquentiel complexe qui fait correspondre à chaque instruction un sous-circuit capable de commander son déroulement. Séquenceur microprogrammé : un microprogramme stocké dans la mémoire est capable de générer une suite de signaux de commande équivalent à celle produite par un séquenceur câblé. Architecture avancée des processeurs 10 Unité de contrôle Registre d’état - Le registre d’état contient un ensemble d’indicateurs (flags) sur l’état du processeur. - La condition liée à un branchement conditionnel consiste en un test d’une valeur particulière d’un ou plusieurs bits conditions, positionnés par l’instruction précédente. - Exemple : Le bit Z (Zero). Il est mis à 1 si le résultat de l’instruction est nul sinon il est à 0. Le bit C (Carry). Il est mis à 1 si l’instruction génère une retenue finale, sinon il est mis à 0. Le bit N (Negative). Il est mis à 1 si le résultat de l’instruction est négatif, sinon il est mis à 0 ; c’est la recopie du bit de poids fort du résultat. Le bit V (oVerflow). Il est mis à 1 si l’instruction génère un débordement arithmétique, sinon il est mis à 0. Registre pointeur de pile Dans un exemple de l’appel de fonction le programme est dérouté pour exécuter la fonction puis il reprend normalement là où il s’était arrêté. L’adresse de la première instruction de la fonction est contenue dans le registre pointeur de pile. Architecture avancée des processeurs 11 Mémoire cache Le cache contient en permanence un sous-ensemble (une copie) des instructions ou données stockées en mémoire principale. Il permet de réduire les cycles d’attentes dus à l’accès à la mémoire centrale (RAM). Lorsque le processeur effectue une lecture mémoire, il cherche d’abord si l’information (donnée ou instruction) est dans le cache, si le cache ne contient qu’une partie des informations, il va charger l’autre de la mémoire principale. Plus la capacité du cache est importante, plus le processeur a de chance d’y trouver l’information qu’il souhaite. Différents niveaux de cache : niveau 1 (L1) : toujours interne au processeur (même fréquence) niveaux 2 et 3 (L2, L3) : interne ou externe au processeur (fréquence moindre) Architecture avancée des processeurs 12 Mémoire cache Tant que L1 n’est pas plein : fonctionnement du cache unique CPU Quand L1 est plein, L2 entre en action : l’algorithme LRU (Last Recently Used) sélectionne une ligne de L1 qui est copiée dans L2 afin de libérer de la place pour la nouvelle donnée. Quand L2 est plein, une de ses lignes choisie par l’algorithme LRU est effacée (sauf s’il y a un niveau 3, L3). Le cache de niveau 3 (L3) est une mémoire spécialisée qui améliore les performances des mémoires L1 et L2. Elle est plus lente que ces dernières, mais le plus souvent elle est deux fois plus rapide que la RAM. Architecture avancée des processeurs 13 Fonctionnement du processeur Modèle de Von Neumann : Unification des différentes représentations utilisées grâce au codage en binaire (algèbre de Boole) Mémorisation des résultats intermédiaires mais surtout des opérations elles mêmes. Représentation des opérations élémentaires à effectuer: instruction. Ces instructions sont regroupées en programmes. Les programmes sont stockés en mémoire (plusieurs exécutions possibles). La rupture de séquence donne un pouvoir de décision à la machine en fonction des résultats intermédiaires sans intervention humaine. Les instructions peuvent affecter ou utiliser le contenu d’un ou plusieurs mot- mémoire, un ou plusieurs registres, ou aucun d’entre eux. Architecture avancée des processeurs 14 Cycle d’instruction On distingue trois principaux types d’instruction : sans opérandes, monadiques (un opérande) et dyadiques (deux opérandes). Un opérande est un élément de la mémoire concerné par l’exécution d’une instruction donnée. Pour exécuter un programme, le processeur effectue cycliquement : - Récupération de l’instruction et mise à jour de PC (fetch1). - Reconnaissance de ce code, ou décodage (decode). - Récupération des données (fetch2). - Exécution d’un ordre élémentaire (execute). - Ecriture du résultat et modification des bits conditions (Write). - Positionnement sur le code de l’instruction suivante du programme. Chaque étape est gérée par le séquenceur et transformée en ordres internes. Architecture avancée des processeurs 15 Cycle d’instruction Exemple de l’exécution en interne de l’instruction ADD r3,r2,r1 Transférer CO dans l’interface bus d’adresse Envoyer un signal de lecture mémoire (bus de contrôle) Fetch1 Récupérer l’instruction depuis l’interface Bus de données et la mettre dans le registre RI Additionner la taille de l’instruction à CO pour pointer sur l’instruction suivante Decode Décoder l’instruction et les données o Envoyer un signal de lecture aux registres pour transférer r2 à l’entrée de l’UAL Fetch2 o Envoyer un signal de lecture aux registres pour transférer r3 à l’entrée de l’UAL Execute Envoyer un ordre d’addition à l’UAL Envoyer un signal d’écriture aux registres pour transférer le résultat sortant de l’UAL dans r1 Write En fonction de ce résultat modifier les bits du registre d’état RE Architecture avancée des processeurs 16 Architecture RISC contre CISC Dans une architecture CISC (Complex Instruction Set Computer) une instruction peut designer plusieurs opérations élémentaires. - Grandes variations de taille et de temps d’exécution pour les Instructions. - Un code compact mais complexe à générer. Dans l’architecture RISC (Reduced Instruction Set Computer) des petites instructions simples, toutes de même taille, ayant toutes (presque) le même temps d’exécution. - Introduire pipeline (entre 3 et 7 étages de pipeline pour une instruction) permettant une augmentation de la vitesse d’exécution. - Code plus simple à générer permettant de simplifier le séquenceur (revenir à un séquenceur câblé). Tous les microprocesseurs modernes utilisent l’architecture RISC: SPARC, MIPS, ARM, PowerPC, etc. Architecture avancée des processeurs 17 Jeu d’instructions Ensemble des instructions machine (et donc assembleur) qu'un processeur sait exécuter. Exemple: Intel x86. Jeu Instructions Intel x86 : Données sur 16 bits, 8 registres généraux de 16 bits, Adresses mémoire sur 20 bits : 1 Mo adressable. Instructions arithmétiques et logiques - ADD : addition - ADC : addition avec retenue de 1 ajoutée si CF = 1 - SUB : soustraction - SBB : soustraction avec retenue de -1 ajoutée si CF = 1 - IMUL : multiplication avec entiers signés (résultat sur taille double) - MUL : multiplication avec entiers non signés (résultat sur taille double) - IDIV : division entière signée - DIV : division entière non signée - INC : incrémentation de 1 - DEC : décrémentation de 1 - CMP : comparaison sous forme de soustraction sans stockage résultat - AND : Et logique - OR : OU logique - XOR : XOR logique - NOT : inverse les bits Architecture avancée des processeurs 18 Jeu d’instructions Instructions de copie : mov Instructions de décalage et rotations : - SAR : décalage arithmétiques droite - SHR : décalage logique droite - SAL : décalage arithmétique gauche - SHL : décalage logique gauche - ROL : rotation gauche - ROR : rotation droite - RCL : rotation gauche de la donnée + la retenue - RCR: rotation droite de la donnée + la retenue Instructions de saut : Jump Instructions de saut conditionnels : - JE : saut si égal - JZ : saut si résultat est zéro - JG : saut si plus grand - JEG : saut si plus grand ou égal - JNGA : saut si pas égal ou pas plus grand - JL : saut si plus petit - JC : saut si retenue - JO : saut si débordement Architecture avancée des processeurs 19 Modes d’adressage Mnémonique : traitement à effectuer, mais il faut préciser quel est le type des données (valeurs, adresses, registres...) Exemple : transfert d'un mot mémoire (MOVE) 1. Charger le registre R1 avec la valeur 05 MOVE #05, R1 R1 05 2. Charger la case mémoire d'adresse (8000)16 avec le contenu de R2 MOVE R2, $8000 M (R2) 3. Additionner la valeur 05 au contenu de R1, le résultat est dans R1 ADD #05, R1 R1 (R1) + 05 Les traitements et les modes d'adressages sont liés à la structure matérielle du processeur (UAL, nombre et taille des registres,...). Architecture avancée des processeurs 20 Modes d’adressage Processeurs modernes : nombreux modes d'adressage dont on cite : Adressage registre : le registre adressé est précisé dans l'instruction. ex : mise à zéro du registre R1, CLR1 R1 0 Adressage immédiat : l'opérande est inclus dans l'instruction ex : addition de la valeur 34 avec R2. ADD #34, R2 R2 (R2) + 34 Adressage direct : l'adresse de l'opérande est inclus dans l'instruction ex : transfert du contenu de la mémoire à l'adresse (87FF)16 dans R1. MOVE $87FF, R1 R1 (M[87FF]) Adressage indirect : le contenu d'un registre ou d'un mot mémoire représente l'adresse de l'opérande. ex 1 : MOVE R1, *R2 M[R2] (R1) ex 2 : MOVE *$7AF2, R1 R1 (M[M[7AF2]]) Adressages composés : l'adresse effective de l'opérande est obtenue par un calcul, généralement de type base + déplacement, où la base est le contenu d'un registre. Architecture avancée des processeurs 21 Pipeline Chaque étape de l’exécution d’une instruction nécessite des circuits différents. Ces derniers restent inactifs lorsque l’instruction n’est pas à l’étape concernée. Le traitement pipeline consiste à ne pas attendre la fin de l’exécution d’une instruction pour lancer la suivante, un circuit effectue une étape d’exécution et enchaîne immédiatement la même étape avec l’instruction suivante pendant que la première avance dans la chaîne de traitement. Fetch1 1 2 3 4 Decode 1 2 3 4 Fetch2 1 2 3 4 Execute 1 2 3 4 Write 1 2 3 4 Fin inst. 1 Fin inst. 2 temps Architecture avancée des processeurs 22 Processeur superscalaire Un pipeline permet de traiter plus d’instructions par cycle mais chacune d’elles se trouve à une étape de traitement différente. Pour pouvoir traiter plusieurs instructions en même temps (on parle alors d’exécution parallèle), les processeurs superscalaires ont été dotés de multiples unités d’exécution dans leur pipeline. L’objectif de ces processeurs consiste alors à alimenter, à chaque cycle, chaque unité d’exécution. Dans ces conditions, le processeur délivre le maximum de sa puissance puisque aucune unité d’exécution ne reste inoccupée durant les cycles. Execute Fetch1 Decode Fetch2 Execute Write Execute Architecture avancée des processeurs 23 Parallélisme des processeurs Exécuter plusieurs threads simultanément (augmenter le nombre de threads qu'un processeur peut exécuter en parallèle). Les deux méthodologies principales employées sont le multiprocessing au niveau circuit (Chip-level Multi Processing, CMP) et le multithreading simultané (Simultaneous Multi Threading, SMT). Dans le cas du CMP, plusieurs cœurs (cores) de processeurs sont intégrés dans le même boîtier, parfois même dans le même circuit intégré. Plutôt que de dupliquer un processeur complet, la conception SMT ne duplique que les parties nécessaires pour la recherche (fetch), l'interprétation (decode) et l’exécution des instructions (execute) ainsi que les registres non spécialisés. La mise en œuvre du SMT ressemble à une architecture superscalaire. Cette dernière exécute des instructions en provenance du même thread alors qu’un processeur SMT permet de maintenir ses unités d'exécution occupées plus souvent, en leur fournissant des instructions en provenance de deux threads différents. Architecture avancée des processeurs 24 Evolution des processeurs Intégration des transistors : Loi de Moore qui prédit que le nombre de transistors intégrés sur une surface donnée double tous les 18 mois. Le niveau d'intégration est dépendant de la taille de gravure du silicium Pentium II, K6-II, K6-III, Athlon (Pluto) 0,25 µm Pentium III, Pentium 4 (Willamette), Athlon (Orion), MIII 0,18 µm P4 (Northwood), Athlon, Athlon64 (Newcastle, Clawhammer) 0,13 µm P4 (Prescott, Smithfield), Athlon64 (Winchester, San Diego) 90 nm Core 2 duo (Wolfdale) et Core 2 Quad (Yorkfield) 45 nm Intel Core i3/i5/i7 (sandy Bridge 2011) 32 nm Intel Core i3/i5/i7 (cannonlake 2018) 10 nm AMD Ryzan 7 (2020) 7 nm Graver plus finement pour diminuer la chaleur dissipée et augmenter la fréquence de fonctionnement. Architecture avancée des processeurs 25 Evolution des processeurs La puissance d’un processeur dépend de : Vitesses d'horloge interne et externe (sur les bus externes) : également appelée fréquence d'horloge est l'une des plus importantes façon de mesure de performances d’un processeur. Largeur du bus de donnée : taille des mots manipulés en une instruction. Largeur du bus d'adresse : taille d’un mot mémoire. Nombre et taille des registres et des mémoires caches qui réduisent le nombre d'accès en mémoire centrale. Nombre d'instructions et complexité du jeu d'instructions. Nombre de microcommandes exécutées en séquence : plus il y en a plus il faut de cycles pour exécuter une instruction. Nombre de microcommandes déclenchées en parallèle : duplication d'unités fonctionnelles pouvant travailler en même temps. Architecture avancée des processeurs 26 Vitesse de l’horloge Le travail du processeur est cadencé par le rythme de l’horloge de la carte mère auquel est appliqué un multiplicateur. La fréquence ne donne qu’une idée très approximative de la vitesse de travail du processeur à cause du nombre de microcommandes par instruction. Une instruction nécessitant 10 microcycles d’horloge (cycle élémentaire durant lequel une microcommande est exécutée) avec un processeur cadencé à 2 GHz durera 10 x 0,5ns = 5ns Unités de mesure un peu plus fiable : MIPS (Millions d’Instructions traitées Par Seconde. MFLOPS, GFLOPS (millions ou milliards d’opérations sur des réels effectuées par seconde). Processeur Multiplicateur Fréquence Pentium 1à4 60-233 Mhz Athlon 5 à 11 500-1800 Mhz Pentium 4 13 à 26 1,3-3,8 GHz Athlon64 10 à 13 2-2,6 GHz Intel Core i3/i5/i7 ? 3-4 GHz Razen’3, 5, 7 ? 3,6 -4,4GHz Architecture avancée des processeurs 27 Taille et nombre des registres internes Taille des registres Elle correspond à la taille des mots traités par le processeur. La taille des registres du processeur définit le type du processeur - 8086 au 80286 : processeurs 16 bits - 80386DX au Pentium 4, Athlon XP : processeurs 32 bits/64 bits - Athlon64, Core 2 duo et Core 2 Quad : processeurs 64 bits - Intel i3/i5/i7, AMD Ryzen’3, 5, 7: processeurs 64 bits Pour des calculs précis en flottants 32 bits est un minimum. Les processeurs actuels incluent des registres de taille supérieure à la taille des mots standard traitées (128 bits pour les processeurs MMX, 3Dnow!, SSE, SSE2, SSE3, SSE4). Les processeurs MMX (MultiMedia eXtensions) et SSE (Streaming SIMD Extensions) contiennent un jeu d'instructions SIMD qui permet d'accélérer des opérations de traitement d'image, du son et des communications. Architecture avancée des processeurs 28 Taille et nombre des registres internes Nombre de registres Le nombre de registres internes influence fortement les performances d'un processeur car il réduit le nombre d'accès mémoire nécessaires au stockage des résultats intermédiaires lors des calculs complexes. Les registres utilisable par le programmeur sont les : GPR (General Purpose Registers) – utilisation libre FPR (Floating Point Registers) – calcul en flottant Registres SIMD – pour les instructions MMX, 3Dnow!, SSE, … Processeurs et registres : - 8086 au 80486SX : 8 GPRs 16 bits + 8 FPRs 80 bits - 80386DX au Pentium MMX : 8 GPRs 32 bits + 8 FPRs 80 bits - Pentium II au P4 D et Athlon XP : 8 GPRs 32 bits + 8 registres SSE 128 bits - Athlon64, Core 2 Duo et Core 2 Quad : ? Architecture avancée des processeurs 29 Bus Bus d’adresse : L'augmentation de la largeur du bus d'adresse découle de la nécessité de traiter de plus en plus d'information et donc de disposer de plus en plus de mémoire : Processeurs Largeur Espace adressable 80386, 80486, Pentium, Athlon 32 bits 4 Gmots Pentium PII, PIII, P4 36 bits 68 Gmots Athlon64, Core 2 Duo, i3, i7 … 64 bits 18.106 Tmots Bus de données : Il s’appelle aussi bus frontal – FSB : Front Side Bus. Permet de véhiculer les données, sa taille est égale ou supérieure à la taille des mots standard du processeur selon les composants reliés. Fréquence de fonctionnement est celle de la fréquence de la carte mère ensuite augmentation avec les mémoires et périphériques de plus en plus rapides. P4 : QDR (Quad Data Rate) fréquence carte mère inchangée mais fréquence FSB quadruplée. Architecture avancée des processeurs 30 Bus Fréquences de Processeur Année FSB fonctionnement Intel 8086 1978 4,77 puis 10 MHz 16 bits Intel 286 1981 6, 12 à 20 MHz Intel 386DX 1985 16, 33 à 40 MHz 32 bits Intel 486 1989 16 à 50 MHz Intel Pentium 1992 50 - 60 - 66 MHz Intel Pentium II 1997 66 – 100 - 133 MHz AMD K6 1997 66 - 95 - 100 MHz AMD Athlon 1999 2 x (100 - 133 – 166) MHz 64 bits Pentium 4, Core 2 2000 4 x (100 - 133 – 200 – 266) MHz AMD Athlon 64 2003 4 x 200 MHz Intel Core i3,i5,i7 2018 4 x 211 MHz Ryzen 5 2019 1066 MHz Architecture avancée des processeurs 31 Mémoire cache La taille et la fréquence de la mémoire cache constituent un indice important de performance des processeurs. processeur L1 L2 Fréquence L2 L3 Pentium II 16 ko + 16 ko 512 ko FSB / Pentium III 16 ko + 16 ko 256/512 ko ½ processeur / Pentium 4 12 ko + 8 ko 128 à 2048 ko processeur 2048 ko (P4EE) Xeon 12 ko + 8 ko 256 à 512 ko processeur 1024 à 6144 ko Athlon 64 ko + 64 ko 256 à 512 ko processeur / Athlon64 64 ko + 64 ko 512 à 1024 ko processeur / Core 2 32 ko + 32 ko 4096 ko processeur / Intel Core i3,i5,i7 3-6-8 Mo 12 Mo processeur 4-12 Mo Ryzen 3,5,7 16 Mo-32 Mo 3Mo processeur 4-32 Mo Architecture avancée des processeurs 32 Chapitre 2 : Processeurs multicœur Architecture avancée des processeurs Caractéristiques des processeurs Nombre de transistors: plus il contient de transistors, plus il est capable d’exécuter d’instructions /seconde. Nombre de bits pouvant être traités en une instruction. Fréquence maximale de l’horloge augmente, plus le processeur exécute d’instructions par seconde. La fréquence d’horloge est fonction de la technologie des semi-conducteurs, le packaging, les circuits... Les limites technologiques : - La consommation en énergie électrique et la dissipation thermique d’un processeur sont en fonction de sa fréquence d’horloge. - Le nombre de cycles d’horloge pour les interruptions, le « cache miss » ou mauvaise prédiction de branchement augmente. Comment augmenter la performance du processeur ? - Parallélisme interne des instructions et des données - Parallélisme des processus - Architecture multicœur - Architecture avec des cœurs hétérogènes (CPU + GPU) Architecture avancée des processeurs 34 Comment augmenter la performance? Instruction Level Parallelism (ILP) permet l’exécution simultanée de plusieurs instructions : - Pipelining : Les différentes étapes d’une opération s’exécutent simultanément sur des données distinctes (parallélisme d’instructions). - Instruction superscalaire : duplication de composants (FMA, FPU) et exécution simultanée de plusieurs instructions : problèmes de dépendances entre instructions (Partage des ressources, dépendances des données entre instructions, dépendances des contrôles). Mode Single Instruction Multiple Data (SIMD) permet d’appliquer la même instruction simultanément à plusieurs données (stockées dans un registre) pour produire plusieurs résultats. - Exemples de jeux d’instructions SIMD : MMX, SSE2,SSE3, SSE4, SSE5, 3DNow : jeu d’instructions multimédia développé par AMD, AVX Advanced Vector Extensions : jeu d’instructions développé par Intel - Certaines architectures disposent d’instructions vectorielles : l’instruction vectorielle est décodée une seule fois, les éléments du vecteur sont ensuite soumis un à un à l’unité de traitement Architecture avancée des processeurs 35 Comment augmenter la performance? Une des limites du parallélisme d’instruction : Pour extraire le parallélisme, le compilateur « sérialise » le code, dont le parallélisme intrinsèque doit être redécouvert dynamiquement par le processeur. Les architectures VLIW (Very Long Instruction Word) et EPIC (Explicitly Parallel Instruction Set Computing) permettent de traiter des instructions longues, des agrégations d’instructions courtes indépendantes, pour les exécuter explicitement en parallèle. VLIW : le compilateur a la charge d’organiser correctement les instructions, tout en respectant les types de dépendances habituelles qui sont normalement gérées au niveau matériel sur les architectures classiques. EPIC : architecture utilisée notamment dans les Itaniums. Le parallélisme est exprimé de manière indépendante de la mise en œuvre du processeur. Disparition du ré ordonnancement à l’exécution : les instructions sont exécutées dans l’ordre exact dans lequel le compilateur les a mis. Architecture avancée des processeurs 36 Comment augmenter la performance? Thread Level Parallelism (TLP) - L’exploitation du ILP est l’exécution en parallèle des instructions d’un thread unique. - L’exploitation du TLP est l’exécution en parallèle des instructions de processus ou threads différents. - Idée : mixer deux flux d’instructions arrivant au processeur pour optimiser l’utilisation simultanée de toutes les ressources. - Le SMT (Simultaneous MultiThreading) partage du pipeline du processeur entre plusieurs threads (d’un même programme ou de deux programmes différents). - Les registres et les caches sont aussi partagés. - Permet de limiter les pertes de temps lorsqu’un thread est bloqué (lorsque l’instruction désirée n’est pas dans la cache par exemple). - Permet une utilisation plus optimale des unités d’exécution. - Les performances d’un processeur TLP sont augmentées de 20% Architecture avancée des processeurs 37 ILP vs. TLP ILP Fetch1 Decode Fetch2 Stall Execute Write TLP Fetch1 Decode Fetch2 Execute Write Temps Architecture avancée des processeurs 38 Processeur multicœur Un processeur multicœur est un processeur qui combine deux processeurs indépendants ou plus dans un seul chipset (circuit intégré IC). Pourquoi le multicoeur? Difficile de rendre les fréquences d'horloge monocœur encore plus élevées. De nombreuses nouvelles applications sont multithread. Limite des architectures monocoeur vis-à-vis l’évolution des processeurs vers plus de parallélisme (Pipeline, superscalaire, SMT). - Le serveur peut servir chaque client dans un thread distinct (serveur Web, serveur de base de données). - Un jeu vidéo peut faire de l'IA, des graphiques et de la physique dans trois threads distincts. - Les processeurs superscalaires monocœur ne peuvent pas exploiter pleinement TLP (les architectures multicoeurs peuvent exploiter explicitement TLP). Plus de complexité nécessite plus d’intégration de logique Architecture avancée des processeurs 39 Architecture standard du processeur IFU : Instruction Fetch Unit IFU DEC ALU FPU DEC : décodeur d’instruction ALU : Unité Arithmétique et logique Pipeline Registres FPU : floating-point unit est une partie spécialement Cache L1 Cache L1 conçue pour effectuer des Instructions Données opérations sur des nombres réels Pipeline : est l’unité dans Cache L2 laquelle l’exécution des instructions est découpée en plusieurs étapes Mémoire centrale Architecture avancée des processeurs 40 Exemple d’architecture multicœur Quadruple cœur d’Intel : Chaque deux cœurs sont réunis dans un Die (puce de Silicium) et les deux sont contenus à l'intérieur d'un boîtier désigné Multi-Chip Module. Processeur Die 1 Die 2 Cœur 1 Cœur 2 Cœur 3 Cœur 4 IFU DEC ALU FPU IFU DEC ALU FPU IFU DEC ALU FPU IFU DEC ALU FPU Pipeline Registres Pipeline Registres Pipeline Registres Pipeline Registres Cache L1 Cache L1 Cache L1 Cache L1 Cache L1 Cache L1 Cache L1 Cache L1 Instructions Données Instructions Données Instructions Données Instructions Données Cache L2 Cache L2 Mémoire centrale Architecture avancée des processeurs 41 Architecture multicœur Les cœurs appartiennent à un seul socket de processeur: également appelé CMP (Chip Multi-Processor). Les cœurs fonctionnent en parallèle. Dans chaque cœur, les threads sont découpés en tranches de temps (comme sur un processeur monocœur). Les processeurs multicœurs sont MIMD: différents cœurs exécutent différents threads (Multiple Instructions), fonctionnant sur différentes parties de la mémoire (Multiple Data). Tous les cœurs partagent la même mémoire centrale. Les données partagées par plusieurs cœurs ne sont pas répliquées au niveau du cache. Chaque cœur est doté d’un cache L1 dédié. Le cache L2 peut être dédié ou partagé. Le L2 dédié permet à chaque cœur un accès plus rapide. Le cache L3 partagé peut également améliorer les performances. Protocole de cohérence de cache : il permet de répercuter les écritures faites par chaque cœur aux autres, en modifiant ou en invalidant les lignes de cache communes. Architecture avancée des processeurs 42 Organisations des processeurs multicœur Nombre de cœurs sur la puce Nombre de niveaux de cache sur la puce ARM11 MPCore AMD Opteron Quantité de cache partagé Intel Core Duo Intel Core i7 Architecture avancée des processeurs 43 Organisation de Intel Core Duo Deux familles : 65 nm (2006) et 45 nm (2008). Plusieurs Architectures : Allendale (série E4x00), Conroe (série E6xx0), Conroe-CL (série E6x05), Wolfdale (U8xx0)… Cache L1 dédié (2 × 64 Ko pour L1-Instructions et L1-Données). Cache L2 de 2 Mo partagés (Dynamic allocation). Unité de controle de temperature dans chaque Coeur. Contrôleur d’interruptions : Advanced Programmable Interrupt Controlled (APIC) qui gère les interruptions des différents coeurs. Unité de gestion de puissance : Power Management Logic pour ajuster le voltage et la consummation en énergie électrique. Front Interface Bus : 800 MT/s (Conroe, Allendale,…) jusqu’à 1333 MT/s (Wolfdale, Yorkfield,…) Architecture avancée des processeurs 44 Organisation de Intel Core i7 Première apparition november 2008 avec plusieurs gammes (gamme bureau, gamme mobile). Plusieurs familles d’architecture : Nehalem avec 732 M transistors, gravure en 45 nm, une puce de 263 mm2, Westmere en 32 nm, Sandy Bridge en 32 ou 22 nm... La gamme bureau Westmere : 6 coeurs SMT, chacun supporte 12 threads. Cache L2 dédié, cache L3 partagé : - Cache L1 : 6 * 64 ko (1 kio = 1,024 ko) - Cache L2 : 6 * 256 ko - Cache L3 partagé 12 Mo on chip Contrôleur mémoire triple canal intégré : DDR3 Memory controller (DDR3) intégré dans le chip (trois canaux de 8 octets (192 bits) donnant 1,333 GT/s). Bus système et inter-processeur QuickPath Interconnect QPI (6.4 G transferts par second, 16 bits par transfert). Contrôleur graphique intégré (sur certains modèles) Instructions SSE4 Architecture avancée des processeurs 45 Organisation de Intel Core i7 Architecture avancée des processeurs 46 Organisation de AMD Opteron Opteron multicoeur : Mars 2006 Plusieurs architectures : Denmark et Egypt 2 coeurs en 90 nm Shanghaï et Istanbul 6 cœurs en 45 nm, Valencia 8 cœurs en 32 nm, Interlagos 16 cœurs (utilise deux Dies Valencia) Core 1 Core 2 Cache L1 et Cache L2 dédiés L1 Cache L1 Cache ◦ 6 * 128 Ko pour le cache L1 (Données + Instructions). L2 Cache L2 Cache ◦ 6 * 512 Ko pour le cache L2 Cache L3 de 6 Mo partagé Crossbar Switch : un commutateur permettant à chaque cœur de communiquer directement avec la mémoire ou les E/S aussi efficacement que possible. Les Opteron disposent d'un contrôleur mémoire intégré et du bus HyperTransport. HyperTransport technology avec trois canaux de 16 bits travaillant à 1000 MHz chacun. Architecture avancée des processeurs 47 Organisation de ARM11 MPCore Quatre processeurs chacun avec son propre cache L1-Instructions et L1-Données (16, 32 ou 64 ko). Contrôleur d'interruption distribué centralise toutes les sources d'interruption pour le processeur ARM11 MPCore avant d'envoyer les plus prioritaires à chaque processeur. Claque processeur est équipé d’un temporisateur (Timer) et d’un chien de garde (Watchdog). Un Watchdog ◦ Alertes d'avertissement pour les pannes logicielles ◦ Compte à rebours à partir de valeurs prédéterminées Unité à virgule flottante vectorielle VFP (Vector Floating-point Unit). Unité de contrôle de cohérence de cache L1-Données : Snoop Control Unit. Bus de données-instructions de 64 bits et un bus pour le contrôle de cohérence. Instructions RISC Architecture avancée des processeurs 48 Organisation de ARM11 MPCore Architecture avancée des processeurs 49 Autres processeurs multicœur Les dernières versions de nombreuses architectures utilisent le multicœur: PA-RISC (PA-8800), IBM POWER (POWER7), SPARC (UltraSPARC IV) et des divers processeurs d'Intel et d'AMD. Controverse : Est-ce que plusieurs cœurs sur une puce sont la même chose que plusieurs processeurs. Les principaux fournisseurs de technologie sont divisés sur cette question. IBM considère ses processeurs dual-core POWER4 et POWER5 comme deux processeurs, juste emballés ensemble. Sun Microsystems, en revanche, considère son UltraSPARC IV comme une puce multithread plutôt que multiprocesseur. Intel et AMD considère ses conceptions multicœurs comme un seul processeur. Les logiciels sont souvent plus chers lorsqu'ils sont licenciés pour plus de processeurs. Microsoft, Red Hat Linux, Suse Linux octroieront une licence à leur système d'exploitation par puce et non pas par cœur Architecture avancée des processeurs 50 Le pour et le contre du multicœur Avantages Les circuits de cohérence du cache peuvent fonctionner à une fréquence d'horloge beaucoup plus élevée que ce qui est possible si les signaux doivent voyager hors puce. Les signaux entre différents processeurs parcourent des distances plus courtes, ces signaux se dégradent moins. Un processeur double cœur utilise un peu moins d'énergie que deux processeurs monocœur couplés. Inconvénients La plupart des jeux vidéo actuels fonctionnent plus rapidement sur un processeur monocœur 3 GHz que sur un processeur double cœur 2 GHz (de la même architecture. Deux cœurs de traitement partageant le même bus système et la même bande passante mémoire limitent les performances globales. Architecture avancée des processeurs 51 Chapitre 3 : Processeurs Graphiques : Graphic Processor Unit (GPU) Architecture avancée des processeurs 52 Processeurs Graphiques Un processeur graphique, ou GPU (Graphics Processing Unit) est une unité de calcul, pouvant être présent sous forme de circuit intégré sur une carte graphique ou carte mère ou encore intégré (IGP Integrated Graphic Processor) au même circuit intégré que le processeur. Le GPU a été utilisé initialement pour libérer le CPU des fonctions de calcul d'images et de leurs traitement et des fonctions d’affichage à l'écran. Actuellement il est utilisé dans tous les domaines de calcul complexe et lourd. Cette division des tâches entre les deux processeurs libère le processeur central de l’ordinateur et en augmente d’autant la puissance apparente. Le processeur graphique est très souvent muni de son propre radiateur ou ventilateur pour évacuer la chaleur qu’il produit. Les processeurs graphiques sont des architectures massivement parallèles à savoir qu'elles sont capables de faire un très grand nombre de calculs simultanés durant le même cycle d'horloge. Architecture avancée des processeurs 53 Domaines d’applications des GPU Principalement : Synthèse d'Images Applications généralistes : – Traitement d'images – Data Mining (Fouille de données) et analyse de données – Simulation et création de design – Algèbre linéaire, optimisation – Algorithmes de trie, de recherche – Intélligence Artificielle et Deep learning Architecture avancée des processeurs 54 Processeurs Graphiques Il existe deux types de processeur graphique : ceux de la carte graphique dédiée et les processeurs graphiques intégrés: Les GPU dédiées, placées sur la carte mère ou sur une carte graphique, sont plus puissants et ils possèdent leur propre mémoire vive. Les IGP intégrés directement dans le processeur central CPU. Ils utilisent sa mémoire vive ou plus rarement une faible quantité de mémoire dédiée. Architecture avancée des processeurs 55 Comparaison entre CPU et GPU Pour gérer des tâches en parallèle un CPU dispose d’un nombre limité des unités de calcul (UAL), d'un cache volumineux et d'une unité de contrôle importante. Pour calculer de façon massivement parallèle le rendu des éléments indépendants d’une image tout en ayant un débit important de données traitées, un GPU dispose d'un nombre important d’UAL qui disposent de peu de cache et de faibles unités de contrôle. UC UC UC UC UC UC UC ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU Unité de ALU ALU ALU ALU ALU ALU ALU contrôle ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU Caches ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU ALU Cache Cache Cache Cache Cache Cache Cache DDRAM DDRAM Architecture avancée des processeurs 56 Comparaison entre CPU et GPU Les CPU sont désignés pour le parallélisme des instructions et des threads alors que les GPU sont parfaits dans le parallélisme des données. Consommation d’énergie importante pour le GPU par rapport au CPU. Exemple de temps de traitement de différents dimensions d’images : Dimension GPU CUDA CPU 64x64 0.417465 ms 18.0876 ms 128x128 0.41691 ms 18.3007 ms 256x256 2.146367 ms 145.6302 ms 512x512 8.093004 ms 1494.7275 ms 1024x1024 52.42811 ms 66097.1688 ms 2048x2048 407.648 ms infinie 4096x4096 3.1 seconds infinie Architecture avancée des processeurs 57 Evolution des processeurs graphiques 1981 : La première carte graphique réalisée par IBM. La carte utilise un mode graphique CGA (Color Graphic Adapter) qui ore une résolution graphique de 320x200 points en 4 couleurs ou 640x200 points en 2 couleurs. 1987 : IBM lance le VGA (Video Graphics Array) autant q’un standard d’affichage amélioré des standards CGA. 1999 : Les premiers GPU (Graphics Processing Unit) sont arrivés pour Nvidia avec la carte GeForce cadencée à 120 MHz avec 64 Mo de mémoire DDR. 2000 : ATI (acheté par AMD après) lance son premier GPU R100 avec les cartes Radeon cadencée à 166 MHz avec 32 Mo de mémoire DDR. 2007 : Lancement de la carte graphique GeForce 8 (par Nvidia) compatible CUDA (Compute Unified Device Architecture) avec le processeur GPU G80. 2010 : Intel HD Graphics sont une gamme de IGP processeur graphique intégré. 2019 : Radeon Rx Navi possède un GPU de 1.9 GHz et une GDDR de 16 Go. Intel UHD Graphics intègre un IGP de 1.15 GHz. Août 2020, les cartes GeForce 30 de Nvidia contiennent 10900 cœurs CUDA, la fréquence de base du GPU est 1.395 GHz avec 24 Go de mémoire GDDR6X. Architecture avancée des processeurs 58 Fonctionnement d’un GPU Un GPU a de nombreux composants, mais les deux les plus importants sont le vertex pipeline et le pixel pipeline. L’un se charge des vertices et le second s’occupe des pixels. Le vertex pipeline sert dans le cas d’image en 3D. Quand vous faites un travail en trois dimensions vous travaillez avec des polyèdres (vertex en anglais), qui sont des points reliés par des arrêtes afin de créer un objet multidimensionnel. Le processeur les calcules, tout en éliminant les sommets invisibles afin d’accélérer le processus, pour créer l’image en 3D. Le pixel pipeline concerne tout ce qui est texturation de l’objet. Le processeur applique les textures qui sont choisies directement dans les données du disque dur. Le processeur traite ensuite des données sur l’éclairage des polygones, que celui-ci se charge de mettre en œuvre pour éclairer la scène. Ensuite, la puce graphique applique à l’image les divers filtres et envoie le résultat à la fenêtre d’affichage sur l’écran. Architecture avancée des processeurs 59 Fonctionnement d’un GPU Vertex shader Vertex Pipeline Tessellation Rasterization Pixel Pipeline Texture/Coloring Architecture avancée des processeurs 60 Unités de base du GPU Le GPU contient des super blocs appelés Graphic Processing Caches L1/Buffers Cluster (GPC). SP Le GPC contient plusieurs Streaming Multiprocessors (SM) Les unités de base d’un GPU sont communes à toutes les architectures : - Stream Processors (Cuda cores) - Raster Engines - Texture Mapping Units TMU - Render OutPut Units - Polymorph Engines Interconnection network ROP ROP ROP ROP Architecture avancée des processeurs 61 Unités de base du GPU Architecture avancée des processeurs 62 Unités de base du GPU PolyMorph Engine Il contrôle toutes les étapes successives du vertex pipeline qui comporte les étapes de fonctionnement suivantes: - Vertex Fetch : récupérer les sommets des triangles. Ils contiennent un certain nombre d’informations comme les coordonnées de chaque vertex, leurs couleurs, la coordonnée de textures … - Tessellation : augmenter la finesse de l’image en générant des vertices (multiplier le nombre des triangles sur une surface donnée). - Viewport Transform : détermine la projection perspective du fenêtre à afficher. - Attribute Setup et Stream Output : permet d’enregistrer en mémoire les données géométriques traitées. Les résultats de chaque étape sont transférés vers les processeurs (Stream processors). Ces derniers renvoient les données pour la prochaine étape de fonctionnement de PolyMorph Engine. Une fois toutes les étapes terminées, les résultats sont transférés vers les unités Raster Engines Architecture avancée des processeurs 63 Unités de base du GPU Stream Processor : Les Stream Processors (processeurs de flux) sont les éléments les plus connus d’une carte graphique (Nvidia les nomme CUDA Cores). Ce sont des unités capables de faire du calcul sur des flottants. Plus les SP sont nombreux, plus le calcul de données mathématique s’effectue rapidement. Beaucoup de calcul matriciel dans un jeu vidéo : les mouvements, les effets de particules, la direction de la lumière, les ombres, les reflets … Les SP calculent sur des floats en 32 bits : un nombre avec 32 chiffres binaires après la virgule (certains SP sont capables de calculer des floats en 64 bits, pour être plus précis). Raster Engine : Ces unités reçoivent un pré-pixel et des informations spécifiques pour construire un pixel complet : la pixellisation. Ils génèrent trois tests : Un test alpha permet d’éliminer les pixels qui sont trop transparents. Le test de profondeur lui sert a éliminer les pixels non visibles. Le test brouillons pour faire les ombres ou d’autres effets. Architecture avancée des processeurs 64 Unités de base du GPU Texture Mapping Units (TMU) Unités qui appliquent des textures aux vertices générés. Exemple : un monstre sous forme de vertices et sa copie texturée. Augmenter les détails des textures dans le jeu fait travailler les TMU. Render OutPut Unit (ROP) Unités chargées du traitement de l’image. l’anti-aliasing sert à adoucir les contours. D’autres traitements (comme le lightning) viennent à la fin pour améliorer les performances ou effectuer un effet sur toutes la scène. Architecture avancée des processeurs 65 Puissance de calcul du GPU Les unités spécialisées font partie intégrante des puissances de calcul théoriques des cartes graphiques. Le principe général est de multiplier le nombre d’unités valides par la fréquence du GPU. Puissance de Calcul FP32 (en GFLOP) = nombre de SP 32 x fréquence (GHz) Puissance de Calcul FP64 (en GFLOP) = nombre de SP 64 x fréquence (GHz) Débit de triangle (en GTriangle/s) = nombre de Raster Engine x fréquence (GHz) Débit de filtrage (en GTexel/s) = nombre de TMU x fréquence (en GHz) Débit de pixel (en GPixel/s) = nombre de ROP x fréquence (en GHz) Carte R9 280X GTX 770 Nombre de transistors 4310 M 3540M Gravure 28 nm 28 nm TDP 250 w 230 w Fréquence GPU 1000 MHz 1048 MHz Nombre SP 2048 1538 Nombre RE 2 4 Nombre TMU 128 128 Mémoire G-DDR5 3072 Mo 3072 Mo Architecture avancée des processeurs 66 Acronymes inséparables du GPU GPGPU Computing (General Purpose GPU) : se sont des GPU qui font rassembler le traitement graphique et le computing. Ils traitent la plupart des opérations lourdes en calcul comme les simulations physiques, le rendu hors-ligne pour les films, les calculs de risques pour les institutions financières, la prévision météorologique, l’encodage de fichier vidéo et son, etc. OpenGL : La technologie graphique libre OpenGL (Open Graphics Library) est un environnement de développement définissant l'utilisation d'une API (Application Programming Interface) en 2D et en 3D, à partir d'une bibliothèque de fonctions. Devenu un standard utilisé dans le domaine des jeux vidéo. DirectX : un ensemble d’interfaces de programmation multimedia , plus particulièrement de jeux ou de programmes faisant intervenir de la vidéo, sur les plates-formes Microsoft. CUDA (Compute Unified Device Architecture): une plateforme (software environment) pour la programmation des GPGPU. CUDA permet de programmer des GPU en C. Elle est développée par Nvidia, initialement pour ses cartes graphiques GeForce 8. Architecture avancée des processeurs 67 Chapitre 4 : Digital Signal Processor DSP Architecture avancée des processeurs 68 Traitement Numérique des Signaux Traitement Numérique des Signaux TNS : plusieurs domaines d’applications. Exemples d’algorithmes de TNS : – filtrage – transformées (Fourier…) – corrélation – codage/décodage – reconnaissance de la parole – synthèse spectrale de signaux – élimination d’écho – estimation spectrale… Contraintes pour le TNS : 1. Calculs rapides 2. Contraintes temps réel (entrées/sorties à débit fixe) 3. Contraintes systèmes embarqués (taille limitée, faible consommation d’énergie, faible dissipation de chaleur…) 4. Contraintes de coût : production de masse Les DSP ont une architecture matérielle et logicielle permettant de répondre à ces besoins. Architecture avancée des processeurs 69 Exemples de produits utilisant les DSP Communications Divers Instruments o Modems o Exploration séismiques o Smartphone cellulaire o Analyseurs de spectre o PBXs numériques o Oscilloscopes numériques o GPS … o Caméra numérique o Lecteur codes à barres Appareils Médicaux o Equipements ultrasons Application audio numérique o Outils de diagnostiques o Encodeur MPEG Audio o IRM o Smartphone Audio o Imagerie médicale… o Console de mixage numérique o Amplificateur Home Cinéma… Applications militaires o Détecteurs radar o Processeurs sonar o Equipements de navigation… Architecture avancée des processeurs 70 Carte réseau à DSP multicœurs Carte pour la communication numérique (Ethernet) DSP à 8 cœurs TMS320C6678 Architecture avancée des processeurs 71 Architecture générale d’un DSP DSP Processor DSP Core Mémoire Générateur Générateur DSP Instructions Timers d’adresse d’adresse Core (ROM) MD MI Séquenceur Mémoire cache d’instructions DMA Registres de données Accumulateur Mémoire CAN Ports Données (RAM) E/S Multi- UAL Shifter plieur FPU CNA Architecture avancée des processeurs 72 Principaux composants d’un DSP CAN : Convertisseur Analogique/Numérique ses caractéristiques: nombre de bits, loi de conversion, fréquence d’échantillonnage. CNA Convertisseur Numérique/Analogique ses caractéristiques: nombre de bits, loi de conversion, fréquence d’échantillonnage. ROM: Mémoire morte contenant les programmes de contrôle du système et les programmes de traitement numérique des signaux. RAM: Mémoire vive contenant les données en entrée, en sortie et en cours de traitement. Ports I/O : Organe de communication avec un éventuel système externe. Horloge, Timers : horloge du processeur, horloge d’acquisition, horloge de communication et temporisateurs. DMA : un mécanisme qui permet des transferts de données sans passer par le processeur permettant ainsi d’accélérer l’accès à la mémoire. DSP Core : Organe de calcul dont l’architecture est adaptée au traitement du signal Architecture avancée des processeurs 73 Architecture du DSP Core Principaux composants d’un cœur DSP : Générateur d’adresses : Calculs d’adresse effectués dans une unité particulière - Adress Generation Unit (AGU) - Data Adress Generation (DAG) Séquenceur Mémoire cache UAL ou FPU : Opérations entières ou en virgules flottantes (+/ -, inc, et, ou, xor...) Multiplieur : Rôle central dans un DSP Plus de 50% des instructions. Accumulateurs : pour additionner plusieurs valeurs en sortie des multiplieurs en limitant le risque de dépassement de capacité (Overflow). Shifter : Registre à décalage pour éviter les dépassements de capacité (Overflow). Bus d’adresses de programmes et de données Bus de données et de programmes Architecture avancée des processeurs 74 Spécificités des DSP Organisation de la mémoire : Architecture Harvard Read Write Processeur Memory Méthodes d’adressage préprogrammées Mémoire Données - Adressage direct, indirect et immédiat Read Only - Adressage pré et post Incrémentation Mémoire Programme Memory - Adressage circulaire (pour le filtrage) - Incrémentation bit-reverse (pour la FFT) Jeu d’instructions MAC en un seul cycle d’horloge : Multiplieur -Pour réduire le temps de calcul la multiplication et l’accumulation (addition) s’exécutent durant le même cycle d’horloge. -Un format de calcul étendu pour éviter les UAL dépassements. Ports d’entrées sorties (Ports I/O) intégrés dans le Accumulateur même chipset avec le processeur. Architecture avancée des processeurs 75 Représentation des nombres Deux grandes catégories de DSP : Format virgule fixe ◦ 16, 20, 24 bits ◦ Hardware plus simple, coût réduit, consommation énergétique réduite ◦ Programmation complexe pour les traitements nécessitant une bonne précision ◦ Tailles opérandes/résultats : n bits x n bits = 2 n bits ◦ Troncature du résultat à n bits souvent indispensable (calculs enchainés) ◦ Mise à l’échelle (scaling) est nécessaire (perte de précision, perte de temps) Format virgule flottante : pour les fonctions spécialisées (Division, racine carrée, conversion de format...) ◦ 32 bits (mantisse 24 bits, exposant 8 bits) ◦ Calcul en virgule fixe généralement possible ◦ Hardware plus complexe, coût élevé ◦ Consommation énergétique élevée ◦ Programmation simplifiée Architecture avancée des processeurs 76 Nombre en virgule fixe Représentation d’un nombre en virgule fixe 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 s 21 22 2 3 24 25 26 27 28 29 210 211 212 213 214 215 d15 d14 d13 d12 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 14 X d i 2i 15 i 0 S est le signe du nombre il est 0 si positif et 1 si négatif. La somme fractionnaire est toujours