Fonctionnement des Unités de Traitement

Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

Le Nom L’adjectif Le verbe Objectif: Orthogram
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
GEF 435 Principes des systèmes d’exploitation
Électronique de base du processeur
Le Concept du programme enregistré
Architecture de machines Le microprocesseur
Distance inter-locuteur
Fonctionnement de l'unité centrale (rappels ? de 1ère Année)
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Les numéros 70 –
Les numéros
Les identités remarquables
Plan du cours : 2ème Partie
Jacques Lonchamp IUT Nancy Charlemagne – DUT Informatique 1A
Interface Matériel/logiciel
Performances 1 Évolution : Performance. Performances 2 Évolution : Mémoire.
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
Objectifs Identifier l’interface entre le logiciel de plus bas niveau et le matériel Comprendre la problématique de l’architecture du jeu d’instruction.
Interface Matériel/logiciel
Objectifs Nous allons concevoir une mise en œuvre contenant un noyau de jeu d’instructions. Nous verrons comment l’architecture de jeu d’instructions.
Le Concept du programme enregistré
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Architecture Systèmes
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.
Les microprocesseurs A. Objectifs de la séquence:
Architecture de machines Le microprocesseur
Système d’exploitation : Assembleur
1 7 Langues niveaux débutant à avancé. 2 Allemand.
Système d’exploitation : Assembleur
Chapitre 8 : L’architecture de base des ordinateurs
ARCHITECTURE GLOBALE CAPTAGE Traitement DES des données GRANDEURS
Architecture et technologie des ordinateurs II
Architecture de base d’un ordinateur
Gestion des Périphériques
Le soccer & les turbans Sondage mené par lAssociation détudes canadiennes 14 juin 2013.
Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE
Architecture et technologie des ordinateurs II
Présentation générale
Architecture des Ordinateurs
Titre : Implémentation des éléments finis sous Matlab
LES NOMBRES PREMIERS ET COMPOSÉS
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
Logiciel gratuit à télécharger à cette adresse :
Les chiffres & les nombres
LES SYSTEMES AUTOMATISES
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
Architecture et technologie des ordinateurs II
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
1 INETOP
Aire d’une figure par encadrement
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
L'Unité centrale (CPU) Le CPU doit être rapide (mesuré en temps de CPU) UNITE DE CONTROLE Générer les signaux de control/temps Contrôler le décodage/exécution.
Lycée ELKHAWARIZMI De SAFI
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
LES PILES ET FILES.
1 Mise en œuvre d'un outil d'aide au développement d'une JVM modulaire pour système embarqué Rodolphe Loué Projet SOLIDOR.
Architecture Des Ordinateurs Microprocesseur Et Mémoire
Cours de Structure et Technologie des composants d’ordinateurs
Architecture d'un ordinateur
3-Présentation d’un µP simple
Les Machines RAM.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Patricia Renault UPMC 2005/2006
Chapitre 3 L’accès aux données.
Architecture des ordinateurs
Architecture d’un ordinateur
ARCHITECTURE MATERIELLE D’UN SYSTEME A MICROPROCESSEUR
Transcription de la présentation:

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

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

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

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

1) Fonctionnement des Processeurs Structure Programmation Instructions Cycles

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

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

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

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

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

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

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

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

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

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 80386 (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

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 68000 (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

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

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

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

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 00000010 Chaque champ est codé en binaire 0000 001 00001100 0110 000 000 001 Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs

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

load R0,2 Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs

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

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

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

add R0,R0,R1 Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs

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

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

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

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

load R0,(R2) Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs

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

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

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

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

store (R2),R3 Fonctionnement des Unités de Traitement - 1) Fonctionnement des Processeurs

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

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

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

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

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

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

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

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

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

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

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

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

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

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

68000 - Modèle de programmation 31 16 15 8 7 0 31 16 15 8 7 0 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

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

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

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

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

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

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

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

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

MIPS R3000 - Modèle de programmation 31 16 15 8 7 0 R0 31 16 15 8 7 0 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

R3000 - 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

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

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

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

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 + 4 + 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

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

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