Les processeurs à plusieurs niveaux de langage
Transcription
Les processeurs à plusieurs niveaux de langage
Les processeurs à plusieurs niveaux de langage Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole Polytechnique Fédérale de Lausanne Processeurs à plusieurs niveaux de langage ◆ Si l’on veut avoir un processeur non spécialisé, capable d’exécuter plusieurs tâches, à volonté de l’utilisateur, il faut un processeur avec un répertoire d’instructions. Chaque instruction réalise un certain traitement sur les données et il est possible de programmer l’algorithme à l’aide d’une suite d’instructions ◆ Chaque instruction est donc une tâche simple, réalisée comme une suite de micro-instructions ◆ Le répertoire d’instructions constitue le langage machine du processeur ou langage d’assemblage Page 2 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Pour faciliter l’écriture du programme, il est possible d’utiliser d’autres langages, à un plus grand niveau d’abstraction que le langage machine: ce sont les langages de haut niveau, tels que Pascal, C, etc ◆ Le programme écrit dans un langage de haut niveau est traduit en langage machine par un programme appelé compilateur ◆ Le programme en langage machine est stocké dans la mémoire de l’ordinateur et le processeur exécute (interprète) chaque instruction comme une suite de micro-instructions. Le nombre de micro-instructions par instruction est variable, selon la complexité de l’instruction Page 3 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Page 4 program toto; var A,B,C : array[1..1000] of integer; i : integer; begin • • for i:=1 to 1000 do C[i] := A[i] + B[i]; • • end. Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne COMPILATEUR MOVE.L MOVE.L MOVE.L START: ABCD MOVE.B TEST: CMPA BNE • • #2001,A0 #3001,A1 #4000,A2 -(A0),-(A1) (A1),(A2) #1001,A0 START • • INTERPRETEUR processeur microprogramme contrôle mémoire traitement ◆ Le processeur effectue sans arrêt une boucle composée de trois phases: ✸ recherche (fetch) de l’instruction: l’adresse en mémoire de l’instruction à exécuter est stockée en permanence dans un registre du processeur, appelé PC (Program Counter). L’instruction pointée par le PC est cherchée dans la mémoire et stockée dans un autre registre du proceesur: le IR (Instruction Register) ✸ décodage de l’instruction (decode): chaque instruction est identifiée, grâce à un code (opcode). En fonction de ce code, le processeur choisit la tâche à exécuter, c’est-à-dire la séquence de micro-instructions à exécuter ✸ exécution (execute) de l’instruction: à la fin de cette phase, on retourne à la première phase Page 5 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne initialisation initialisation lecture lecture de de l’instruction l’instruction décodage décodage ADD ADD Page 6 MOVE MOVE ••••• Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne LOAD LOAD STORE STORE Structure d’un ordinateur processeur contrôle traitement séquenceur séquenceur registres registres mémoire micromémoire micromémoire entrées/sorties opérateurs opérateurs bus d’adresse bus de données bus de contrôle Page 7 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne PC PC ← ← adresse adresse initiale initiale MAR MAR ← ← PC PC MDR MDR ← ← M[PC] M[PC] PC PC ← ← PC+1 PC+1 IR IR ← ← MDR MDR décodification décodification de de IR IR opérande opérande chercher chercher l’opérande l’opérande exécuter exécuter Page 8 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Instructions machine ◆ Chaque instruction machine (assembleur) doit avoir les éléments suivants: ✸ le code de l’opération (opcode): un code binaire identifiant l’opération à réaliser (addition, décalage, etc) ✸ la référence de l’opérande source: il peut y en avoir plusieurs ✸ la référence de l’opérande destination ✸ la référence à la prochaine instruction à exécuter: une indication d’où chercher la prochaine instruction. Dans la plupart de cas, cette référence est inutile, implicite ◆ Les opérandes, source et destination, peuvent être cherchés à trois endroits différents: ✸ la mémoire principale ✸ les registres internes ✸ les dispositifs d’entrée/sortie (périphériques) Page 9 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Représentation des instructions: Chaque instruction est stockée dans la mémoire comme une chaîne de bits. L’instruction est divisée en plusieurs champs, correspondant à ses différents éléments. L’organisation de ces différents champs est appelée le format de l’instruction. Il est possible, pour un même processeur, d’avoir plusieurs formats, de longueurs différentes. Pour faciliter la lecture des programmes en langages machine, on utilise une représentation symbolique, où les opcodes sont représentés par des abréviations appélées mnémoniques. Des exemples courants sont: ✸ ✸ ✸ ✸ Page 10 ADD SUB LOAD STORE addition soustraction chargement d’un registre interne à partir de la mémoire chargement de la mémoire à partir d’un registre interne Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Types d’instruction: Un processeur doit avoir un ensemble d’instructions machine (le répertoire d’instructions) qui lui permettent de réaliser n’importe quel traitement d’information. Vu d’une autre façon, le répertoire d’instructions d’un processeur doit être capable d’interpréter n’importe quelle instruction d’un langage de haut niveau. En général, on peut diviser les instructions d’un processeur en 4 classes: ✸ ✸ ✸ ✸ Page 11 traitement des données: instructions arithmétiques et logiques gestion de la mémoire mouvement des données contrôle: instructions de saut dans le programme Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Nombre d’opérandes: Le nombre d’opérandes, ainsi que leur emplacement, a une très grande importance, à cause de l’influence sur la taille des instructions et sur la vitesse d’exécution. Il est courant de trouver une classification des processeurs selon ce paramètre: ✸ processeurs à accumulateur ✸ processeurs à registres généraux ✸ processeurs à pile ◆ Types d’opérandes: Les principaux types de données traités directement par les processeurs sont: adresses, nombres, caractères et données logiques ◆ Modes d’adressage: Cést la façon de spécifier l’adresse des opérandes Page 12 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Processeurs à accumulateur ◆ Les résultats de toutes les opérations sont stockés dans un registre particulier, l’accumulateur ◆ Toutes les variables sont stockées dans la mémoire ◆ Exemples: DEC PDP-8, Intel 8080, Motorola 6800 ◆ Exemple de programme: x := y + z LOAD ADD STORE y z x ACC ← M[y] ACC ← ACC + M[z] M[x] ← ACC ◆ Le format d’une instruction doit utiliser deux champs: ✸ le code de l’opération (opcode) ✸ l’adresse de l’opérande (l’accumulateur est toujours un opérande par défaut) Page 13 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Processeurs à registres généraux ◆ Les variables utilisées le plus fréquemment sont stockées dans un ensemble de registres internes: ✸ les accès sont plus rapides ✸ les adresses sont plus courtes ◆ Exemples: IBM 360/370, DEC PDP-11, Intel x86, Motorola 68000 ◆ Les opérations peuvent avoir lieu seulement avec les registres (architecture LOAD/STORE), ou avec un, deux ou trois opérandes en mémoire. Exemples: ADD ADD ADD ADD ADD Page 14 Rx, Ry Rx, Ry, Rz Rx, y x, y x, y, z Rx ← Rx + Ry Rx ← Rx + Ry + Rz Rx ← Rx + M[y] M[x] ← M[x] + M[y] M[x] ← M[y] + M[z] Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Processeurs à pile ◆ Les opérandes se trouvent toujours au sommet d’une pile, dans la mémoire. Et le résultat est toujours stocké au sommet de la pile. En conséquence, une instruction typique ne contient pas d’adresse d’opérande ◆ Un registre particulier du processeur, le stack pointer (SP), pointe toujours au sommet de la pile ◆ Exemples: Burroughs B5000, HP 300 ◆ Les instructions de base sont: PUSH POP Page 15 x x M[SP] ← M[x] M[x] ← M[SP] Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Exemple de compilation ◆ Phrase en langage de haut niveau: P := (Q*R + S*T)*(U + V) ◆ Compilation pour un processeur à registres: LD MUL LD MUL ADD LD ADD MUL ST Page 16 R0, R0, R1, R1, R0, R1, R1, R0, R0, Q R S T R1 U V R1 P Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Compilation pour un processeur à pile: PUSH PUSH MUL PUSH PUSH MUL ADD PUSH PUSH ADD MUL POP Page 17 Q R S T U V P Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Modes d’adressage ◆ Le processeur peut trouver ses données à trois endroits différents: dans les instructions elles-mêmes, dans ses registres internes ou dans la mémoire externe ◆ L’instruction doit indiquer l’adresse de la donnée ou la façon de la calculer: c’est le mode d’adressage ◆ Immédiat ADD R1,#cte opcode Page 18 opérande instruction Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Direct Absolu: ADD R1,adr opcode adresse instruction opérande mémoire Page 19 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Direct Registre: ADD R1,R2 opcode adresse instruction opérande registres Page 20 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Indirect ADD R1,(adr) opcode adresse instruction adresse opérande mémoire Page 21 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Indirect ADD R1,(R2) opcode adresse instruction adresse opérande registres Page 22 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Relatif ADD R1,offset(PC) opcode PC offset instruction + opérande mémoire Page 23 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Relatif ADD R1,offset(R2) opcode adresse adresse offset + instruction opérande registres mémoire Page 24 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Auto-incrémenté ADD R1,(R2)+ opcode adresse instruction registres adresse opérande mémoire + taille de l’opérande Page 25 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Auto-décrémenté ADD opcode R1,-(R2) adresse instruction taille de l’opérande registres adresse opérande mémoire Page 26 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Organisation de la mémoire ◆ La plupart des processeurs adressent au niveau du byte, bien que permettant l’accès à des données de plus grande taille ◆ Un processeur est appelé n-bits lorsque la taille standard de ses opérandes est de n bits. Cela n’a rien à voir avec l’architecture du processeur, ni avec l’organisation de sa mémoire, ni avec la dimension de son bus de données ◆ Il existe deux façons d’organiser une donnée lorsque sa taille est supérieure à un byte: ✸ little-endian: l’adresse de la donnée correspond à celle de son byte de poids faible. Exemples: VAX, x86 ✸ big-endian: l’adresse de la donnée corespond à celle de son byte de poids fort. Exemples: IBM360, 68000 Page 27 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne ◆ Exemple 12 donnée 34 big-endian Page 28 56 78 little-endian 12 0 78 0 34 1 56 1 56 2 34 2 78 3 12 3 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne Processeurs RISC et CISC ◆ La performance d’un processeur est inversement proportionnel au temps d’exécution d’un programme. Et ce temps d’exécution dépend de trois facteurs: le nombre d’instructions machine exécutées, le nombre moyen de cycles d’horloge par instruction machine et la période d’horloge ◆ Il existe deux types de processeurs, selon le paramètre optimisé: ✸ processeurs CISC (Complex Instruction Set Computer) ✸ processeurs RISC (Reduced Instruction Set Computer ) Temps = 1/ performance = (nombre d’instructions) x (nombre de cycles par instruction) x (période d’horloge) CISC Page 29 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne RISC Mesure de performance: SPEC95 ◆ Performance en entiers: 8 programmes écrits en C (3 anciens, modifiés). 33% plus grand ◆ Performance en virgule flottante: 10 programmes écrits en Fortran (4 moins qu’en 92, avec 5 anciens modifiés) ◆ Remplacement du Vax 11/780 comme ordinateur de base par une SparcStation 10/40 (SuperSparc à 40MHz, sans cache L2 et 64M de RAM) ◆ La valeur baseline est calculée avec un maximum de 4 flags de compilation, les mêmes pour tous les programmes Page 30 Eduardo Sanchez Ecole Polytechnique Fédérale de Lausanne