Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Fonctionnement des Unités de Traitement
Cours DESS « Systèmes Multimédia Communicants » François Verdier www-etis.ensea.fr/~verdier/ Université de Cergy-Pontoise Laboratoire ETIS - UMR CNRS 8051
2
ADEQUATION APPLICATION/ARCHITECTURE
Contexte La conception d’objets intelligents repose sur une architecture de traitement de l’information associant (au moins) : un (des) (micro)processeur(s) : ARM, MIPS, PPC, DSP..., des unités de calcul dédiées (ASIPs), des périphériques d’entrée/sortie de données : Télécom, capteurs.., des blocs matériels spécifiques (MPEG, Viterbi, FFT...). Les contraintes des applications sont fortes : Degré d’intégration maximum, Très grands débits, Temps-réel, La performance d’une application repose sur l’optimisation de chacun des sous-ensembles et passe principalement par une adéquation fine entre le(s) processeur(s) et le contexte. ADEQUATION APPLICATION/ARCHITECTURE Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
3
Objectifs du cours Comprendre le fonctionnement dynamique des unités de traitement (processeurs, micro-processeurs, micro-contrôleurs, DSP) Comprendre la difficulté que représente l’optimisation de code pour ces unités de traitement Aborder l’architecture interne et la programmation (en assembleur) des processeurs DSP : exemple du processeur Analog Devices SHARC Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
4
Plan 1) Fonctionnement des Processeurs
Structure d’un processeur (rappel) La programmation en assembleur Le jeu d’instruction d’un processeur Les cycles et les modes d’adressage 68000 / MIPS R3000 2) Les processeurs de Traitement du Signal Performance des processeurs Spécificités des DSP Architecture du DSP SHARC Programmation des DSP Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
5
1) Fonctionnement des Processeurs
Structure Programmation Instructions Cycles
6
1.1) Structure des processeurs (rappels ?)
Le processeur est l’organe central d’un système de traitement de l’information. Il est chargé de l’exécution des programmes (les instructions) et de la manipulation des données. Son rôle principal est d’effectuer des calculs (entiers/flottants) sur des données (stockées en mémoire/venant d’un canal de communication). Sa structure se décompose généralement en plusieurs unités spécifiques : Les registres internes (banc(s) de registres), Le(s) unité(s) de calcul (entiers / flottants), L’unité de contrôle (recherche et décodage des instructions), L’unité d’adressage (recherche des données), L’unité de gestion des mémoires cache, L’unité de gestion des interruptions, L ’unité de gestion de la mémoire virtuelle, ... Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
7
Architecture de base d’un processeur (architecture Von Neumann)
@ Unité(s) de calcul Registres Unité de décodage Unité d’adressage d’exécution données Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
8
Architecture étendue d’un processeur
@ Unité(s) de calcul Registres Unité de décodage Unité d’adressage d’exécution données gestion des caches mémoire cache instructions MMU mémoire(s) centrale(s) gestion des interruptions Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
9
Architecture d’un système sur puce (SoC)
@ Unité(s) de calcul Registres Unité de décodage Unité d’adressage d’exécution données gestion des caches mémoire cache instructions MMU mémoire(s) centrale(s) gestion des interruptions canal de comm. interface(s) de bus I/O bus spécifique IP IP IP Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
10
1.2) Les systèmes de traitement de l’information
Les processeurs sont au cœur des systèmes intelligents de traitement de l’information ou de communication. Les performances des systèmes bâtis autour des processeurs dépendent en grande partie des performances des processeurs eux-mêmes. Les performances des processeurs dépendent de facteurs incluant : dimensionnement du système (mémoires, bus, entrées/sorties), adéquation des langages et des outils de compilation, adéquation de l’architecture interne du processeur vis-à-vis des applications envisagées : choix du type de processeur ! performances du jeu d’instructions (??), optimisation de la programmation (??), Maîtrise de l’architecture du processeur et de sa programmation Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
11
1.3) La programmation des processeurs
Un ordinateur (ou tout autre structure à base de micro-processeur) exécute des programmes qui sont des suites d’ordres élémentaires (les instructions). Le langage constitue la grammaire suivant laquelle sont écrites les instructions d’un programme. Plus le langage est évolué, plus la sémantique des programme est complexe. Il existe de nombreux langages, adaptés aux différents formalismes de résolution des problèmes : langage C, C++, Fortran, Lisp, Cobol, Java, Pascal, Basic... Tous ces langages nécessitent d’être compilés (interprétés) en un langage élémentaire compréhensible par le processeur : le langage assembleur Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
12
Compilateur Assembleur
Programme en langage de haut niveau La programmation d’une machine de traitement nécessite une série d’étapes de traduction avant l’exécution d’un programme par la machine. Les instructions du plus bas niveau (instructions élémentaires) sont codées en binaire et sont les seules que la machine peut interpréter et exécuter. Elles font référence à la structure interne de l’unité de traitement et constituent le jeu d’instruction de la machine. Compilateur Programme en langage assembleur Assembleur Programme en code machine Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
13
Langage assembleur Langage C Complexité Taille du programme
Compilateur C Bibliothèque de fonctions debut: bsr $3520 ldaa $1000 bsr $2024 pusha Langage assembleur Complexité int a,b; scanf(« %d »,&b); a = sqrt(b); printf(« %d »,a); Langage C Taille du programme Assembleur . . . $40 $37 $F0 $35 $20 $32 $10 $00 $F0 $20 $24 $3B Code machine Micro Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
14
1.4) Le Jeu d’instructions Assembleur
Les instructions du langage assembleur d’une unité de traitement se classent généralement en différentes catégories. Le nombre et la taille de ces catégories permettent de distinguer la famille architecturale d’un processeur : Nombreuses catégories et/ou beaucoup d’instructions par catégories = processeur de type CISC (Complex Instruction Set Computer) = architecture complexe Peu de catégories et peu d’instructions par catégories = processeur RISC (Reduced Instruction Set Computer) = architecture simplifiée Exemples de catégories : instructions de chargement / déchargement de registres instructions arithmétiques instructions de rupture de séquence (tests, boucles) instructions d’appel / retour de procédures instructions de gestion du processeur instructions spécifiques CISC (MMX) ... Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
15
Jeu d’instruction du 80286 (Intel) :
instructions de transfert de données (16) instructions de chaînes de données (10) instructions arithmétiques (20) instructions logiques (13) instructions de rupture de séquence (11) instructions de contrôle du processeur (28) instructions de haut niveau (3) Jeu d’instruction du (Intel) : instructions de transfert de données (11) instructions de contrôle des registres de segment (5) instructions de contrôle des indicateurs (14) instructions de chaînes de données (10) instructions arithmétiques (24) instructions logiques (21) instructions de rupture de séquence (12) instructions de contrôle du processeur (6) instructions de contrôle de protection (15) instructions de haut niveau (2) Jeu d’instruction du 68HC16 (Motorola CPU16) : instructions de transfert de données (18) instructions arithmétiques (49) instructions logiques (66) instructions de rupture de séquence (11) instructions de gestion de l’adressage (49) instructions de gestion de la pile (16) instructions de gestion du code condition (6) instructions DSP (16) instructions de contrôle du processeur (6) Jeu d’instruction du MIPS R3000 : instructions de transfert de données (3 + 2) instructions arithmétiques (7 + 12) instructions logiques (6) instructions de rupture de séquence (9) Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
16
Jeu d’instruction du PPC405 (IBM) :
instructions de transfert de données (38) instructions arithmétiques (50) instructions logiques (24) instructions de rupture de séquence (6) instructions du registre de condition (12) instructions de contrôle du processeur (12) instructions de gestion du processeur (18) instructions de synchronisation (5) Jeu d’instruction du (Motorola) : instructions de transfert de données (10) instructions arithmétiques (18) instructions logiques (16) instructions de rupture de séquence (9) instruction du registre de code condition (5) instructions de contrôle du processeur (11) Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
17
Modèle de programmation d’un processeur
ALU R0 R1 registres d’usage général ... R7 3 opérandes : Ra,Rb,Rc 4 opérations : add, sub, or, and PC compteur ordinal RI registre d’instruction @ Unité(s) de calcul Registres Unité de décodage Unité d’adressage d’exécution données Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
18
Exemple (simple) compilateur
/* exemple en C */ int a,b; a = 2; b = 12; a = a + b; ... /* code assembleur */ /* a:R0 b:R1 */ load R0,2; load R1,12; add R0,R0,R1; compilateur Le rôle du compilateur consiste principalement, ici, à effectuer une allocation des variables du programme (a et b) aux registres disponibles dans le processeur et à traduire les opérations arithmétiques en instructions assembleur. Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
19
Exemple (simple) compilateur assembleur load R0 2 load R1 12 add R0 R0
/* exemple en C */ int a,b; a = 2; b = 12; a = a + b; ... /* code assembleur */ /* a:R0 b:R1 */ load R0,2; load R1,12; add R0,R0,R1; compilateur champ du code opération assembleur champ du registre destination champ du registre source n°1 champ du registre source n°2 Les instructions en code machine comportent des « champs » fixes contenant les informations nécessaires à la recherche des opérandes et à l’exécution de l’instruction champ de la valeur immédiate load R0 2 load R1 12 add R0 R0 R1 Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
20
Exemple (simple) compilateur assembleur 0000 000 00000010 0000 001
/* exemple en C */ int a,b; a = 2; b = 12; a = a + b; /* code assembleur */ /* a:R0 b:R1 */ load R0,2; load R1,12; add R0,R0,R1; compilateur assembleur 0000 000 Chaque champ est codé en binaire 0000 001 0110 000 000 001 Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
21
Exécution du programme
RI unité de décodage banc de registres ALU unité d’adressage R0 R1 PC Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
22
load R0,2 Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
23
Phase de recherche de l’instruction (I-Fetch)
ALU banc de registres unité d’adressage R0 R1 PC+1 PC load R0, 2 RI unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
24
Phase de décodage de l’instruction (Decode)
ALU banc de registres unité d’adressage R0 R1 PC+1 load R0, 2 ? unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
25
Phase d’exécution de l’instruction (Execute)
ALU banc de registres unité d’adressage R0 R1 PC+1 load R0, 2 unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
26
add R0,R0,R1 Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
27
Phase de recherche de l’instruction (I-Fetch)
RI unité de décodage banc de registres ALU unité d’adressage R0 R1 PC PC+1 add R0, R0, R1 Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
28
Phase de décodage de l’instruction (Decode)
ALU banc de registres unité d’adressage R0 R1 PC+1 add R0, R0, R1 ? unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
29
Phase d’exécution de l’instruction (Execute)
ALU banc de registres unité d’adressage R0 add R1 PC+1 add R0, R0, R1 unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
30
Cas des accès en mémoire
/* exemple en C */ int Tab[100]; a = Tab[0]; b = 12; Tab[12] = a + b; /* code assembleur */ /* a:R0 b:R1 Tab:R2 */ load R2,Tab; load R0,(R2); load R1,12; add R3,R0,R1; store (R2),R3; compilateur Le compilateur doit effectuer une allocation d’espace mémoire aux structures de données (statiques) utilisées dans le programme. En fonction des cas (espaces mémoire dédiés, mémoires multiples), le code compilé peut être différent. Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
31
load R0,(R2) Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
32
Phase de recherche de l’instruction (I-Fetch)
ALU banc de registres unité d’adressage R0 R1 PC+1 PC R2 load R0, (R2) RI unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
33
Phase de décodage de l’instruction (Decode)
ALU banc de registres unité d’adressage R0 R1 PC+1 R2 load R0, (R2) ? unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
34
Phase d’exécution de l’instruction (Execute)
ALU banc de registres unité d’adressage R0 R1 PC+1 R2 load R0, (R2) unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
35
Phase d’écriture du résultat (ReadBack)
ALU banc de registres unité d’adressage R0 R1 PC+1 R2 load R0, (R2) unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
36
store (R2),R3 Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
37
Phase de recherche de l’instruction (I-Fetch)
ALU banc de registres unité d’adressage R2 PC+1 PC R3 store (R2), R3 RI unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
38
Phase de décodage de l’instruction (Decode)
ALU banc de registres unité d’adressage R2 PC+1 R3 store (R2), R3 ? unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
39
Phase d’exécution de l’instruction (Execute)
ALU banc de registres unité d’adressage R2 PC+1 R3 store (R2), R0 unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
40
Cas des branchements conditionnels
/* exemple en C */ int a,b,c; if (a!=b) c = 12; /* code assembleur */ /* a:R0 b:R1 c:R2 */ test: beq R0,R1,suite; load R2,12; suite: compilateur Ici, le compilateur introduit des « étiquettes » dans le programme permettant de localiser les suites d’instructions exécutées de manière conditionnelle. De plus, le compilateur traduit le code en remplaçant la condition : (a!=b) devient beq (branch if equal) Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
41
Phase de recherche de l’instruction (I-Fetch)
ALU banc de registres unité d’adressage R0 R1 PC+1 PC R2 beq R0,R1,etiq RI unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
42
Phase de décodage de l’instruction (Decode)
ALU banc de registres unité d’adressage R0 R1 PC+1 R2 etiq beq R0,R1,etiq ? unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
43
Phase d’exécution de l’instruction (Execute)
ALU banc de registres unité d’adressage R0 sub R1 etiq R2 etiq si la condition est vraie beq R0,R1,etiq unité de décodage Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
44
1.5) Les cycles du processeur
L’exécution d’une instruction par un processeur nécessite généralement plusieurs étapes (les cycles du processeur) : Recherche de l’instruction en mémoire (I-Fetch) Décodage de l’instruction (Decode) Recherche des opérandes en mémoire (D-Fetch) Exécution de l’opération (Execute) Ecriture du résultat (Store) Dans les architectures complexes (CISC) le nombre de cycle peut être très variable en fonction des instructions. Le format des instructions peut également être très variable. Dans les machines RISC, on standardise au maximum les cycles des instructions. Les instructions sont toutes codées selon le même format. Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
45
Exemple : add [reg3],reg1,reg2
Lecture de l’instruction en mémoire, mise à jour du compteur ordinal (incrémentation) I-Fetch Interprétation de l’instruction Decode Accès aux deux registres de source (reg1 et reg2) D-Fetch Execute Addition des registres dans l’UAL Store Ecriture du résultat en mémoire Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
46
Exemple : ld reg2,[reg1] I-Fetch Decode D-Fetch Execute
Lecture de l’instruction en mémoire, mise à jour du compteur ordinal (incrémentation) I-Fetch Interprétation de l’instruction, calcul de l’adresse de l’opérande Decode D-Fetch Lecture de la mémoire Execute Chargement du registre reg2 Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
47
Exemple : beq reg1,reg2,etiquette
Lecture de l’instruction en mémoire, mise à jour du compteur ordinal (incrémentation) I-Fetch Interprétation de l’instruction, calcul de l’adresse de branchement Decode Execute Chargement du compteur ordinal Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
48
Calcul des performances : CPI (Clock Per Instr.)
Cycles des instructions du processeur RISC MIPS : instructions de chargement : 5 cycles instructions d’écriture : 4 cycles instructions arithmétiques : 4 cycles branchement et sauts : 3 cycles Fréquence des instructions (source GCC [Patterson, Hennessy]): chargement : 22% écriture : 11% arithmétiques : 49% branchements : 16% sauts : 2% ©Molecular ExpressionTM Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
49
1.6) Les modes d’adressage
Les modes d’adressage constituent les différentes manières dont le processeur peut localiser les opérandes des instructions. Les choix architecturaux de la structure du processeur influencent les modes d’adressages possibles. La diversité des modes d’adressage influence la structure (et la performance) du processeur. Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
50
1.7) Etude de cas Processeur Motorola 68000 (1979) :
Architecture CISC 16/32 bits 8 registres de données (8/16/32 bits) 8 registres d’adresses (16/32 bits) Bus de données 16 bits Bus d’adresses 24 bits Processeur MIPS R3000 (1988) : Architecture RISC 32 bits (load/store) 32 registres généraux 32 bits pipeline 5 étages Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
51
68000 - Modèle de programmation
D0 A0 D1 A1 D2 A2 7 registres d'adresses D3 8 registres de données A3 D4 A4 D5 A5 D6 A6 D7 USP A7 Pointeurs de pile SSP Compteur programme PC 14 modes d’adressage, 57 instructions, Modes «Superviseur» / «Utilisateur» 7 niveaux d’interruptions auto-vectorisées 191 interruptions non-vectorisées Instructions à deux opérandes (source, destination) ETAT Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
52
68000 - Modes d’adressage Le mode d’adressage absolu (court et long)
L’adressage direct (registres de données, d’adresse, d’état) L’adressage immédiat (simple et rapide) L’adressage indirect de registres (simple, postincrémenté, prédécrémenté, avec déplacement et indexé avec déplacement) L’adressage relatif au compteur de programme (avec déplacement et indexé) Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
53
Le mode d’adressage absolu (court ou long) références mémoire
NOT.L $2000 L’adresse est un mot de 16 bits 1 octet parmi 64 Ko L’adresse physique est l’extension du mot de 16 bits sur 32 bits Adressage absolu court NOT.B $10FE00 L’adresse est indiquée sur 24 (32) bits 1 octet parmi 16 Mo Adressage absolu long Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
54
Le mode d’adressage direct de registres
NOT.L D0 adressage direct d’un registre de données MOVE.L $10FF00, A4 adressage direct d’un registre d’adresses ANDI #$0040, SR adressage direct du registre d’état (instructions privilégiées) Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
55
Le mode d’adressage immédiat (simple et rapide)
MOVE.W #$FED0 , D2 L’opérande est codée dans l’instruction L’opérande est une valeur sur 16 bits Adressage immédiat simple MOVEQ #$17 , D1 L’opérande est codée sur 8 bits Adressage immédiat rapide Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
56
Le mode d’adressage indirect de registres (1)
MOVE.W (A0) , D2 L’opérande est contenue à une adresse précisée par un registre : le registre se comporte comme un pointeur Adressage indirect simple ADD.L D4, (A1)+ Le registre qui contient l’adresse de l’opérande est incrémenté après l’opération (de 1 pour un octet, 2 pour un mot et 4 pour un mot long) Adressage indirect avec postincrémentation Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
57
Le mode d’adressage indirect de registres (2)
AND.W D0, -(A6) Le registre est décrémenté avant l’opération (de 1 pour un octet, 2 pour un mot et 4 pour un mot long) Adressage indirect avec prédécrémentation MOVE.W $300(A0) , $1000 L’adresse de l’opérande est le contenu d’un registre ajouté à un déplacement Adressage indirect avec déplacement Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
58
Le mode d’adressage indirect de registres (3)
MOVE.B 2(A1, D0) , $2000 L’adresse de l’opérande est la somme du contenu du registre d’adresses, du registre d’index et d’un déplacement Adressage indirect indexé avec déplacement Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
59
Le mode d’adressage relatif au PC
MOVE.B LABEL , D1 L’adresse de l’opérande est calculée en fonction de la localisation du programme Adressage relatif au PC MOVE.B LABEL(A0) , D1 Le déplacement relatif est ajouté à un index Adressage indexé relatif au PC Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
60
MIPS R3000 - Modèle de programmation
R0 Compteur programme R1 PC R2 ETAT R3 R4 .. .. .. 32 registres généraux .. R25 R26 R27 4 modes d’adressage gestion des co-processeurs pipeline 5 niveaux formats d’instruction fixes (32 bits) R28 R29 R30 R31 Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
61
R Modes d’adressage Le mode d’adressage par référence de registres L’adressage indexé L’adressage immédiat L’adressage relatif au compteur de programme (avec déplacement) Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
62
Le mode d’adressage par référence de registres
ADD %reg1, %reg2, %reg3 Les opérandes sont les contenus des registres Adressage par référence de registres Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
63
Le mode d’adressage indexé
ADD %reg1, 100(%reg2) L’adresse de l’opérande est la somme du contenu d’un registre et d’un déplacement (codé sur 16 bits) Adressage indexé (avec déplacement) Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
64
Le mode d’adressage immédiat
ADD %reg1, %reg2, 5 L’opérande est une valeur constante (16 bits) codée dans l’instruction Adressage immédiat Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
65
Le mode d’adressage relatif au compteur de programme
BEQ %reg1, %reg2, 1000 L’adresse du saut est calculée à partir de la valeur du compteur ordinal : PC déplacement (16 bits) Adressage relatif au PC J 2000 L’adresse du saut est l’adresse fournie en paramètre Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
66
Conclusion Il existe de très nombreux processeurs sur le marché ayant des architectures internes très variées. La programmation efficace de chacun de ces processeurs dépend de l’architecture du processeur, de son jeu d’instruction, de ses modes d’adressages etc.. Les philosophies CISC, RISC, superscalaires, VLIW, imposent des modes de programmation radicalement différents et s’adaptent à des contextes applicatifs souvent très différents. La construction moderne de systèmes intelligents, embarqués, intégrés ne repose plus aujourd’hui sur la programmation d’une machine « standard » mais plutôt sur la construction d’une architecture ad hoc (SoCs) : la plupart des processeurs sont disponibles sous forme de cœurs « paramétrables » qu’il convient de choisir judicieusement... Les (micro)processeurs sont nos amis, il faut bien les connaître pour bien les apprécier ! Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
67
canal de comm. interface(s) de bus I/O IP IP IP bus spécifique
mémoire cache données mémoire(s) centrale(s) @ Unité(s) de calcul Registres Unité de décodage Unité d’adressage d’exécution données gestion des caches MMU mémoire cache instructions canal de comm. gestion des interruptions interface(s) de bus I/O bus spécifique IP IP IP Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.