les processeurs à plusieurs niveaux de langagelsl · mdr ← m[pc] pc ← pc+1 ir ← mdr mar ←...

30
Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole Polytechnique Fédérale de Lausanne Les processeurs à plusieurs niveaux de langage

Upload: others

Post on 23-Jul-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Laboratoire de Systèmes Logiques

Ecole Polytechnique Fédérale de Lausanne

Les processeurs à

plusieurs

niveaux de langage

Page 2: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 2

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 3: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 3

◆ 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 4: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Ed

ua

rdo

Sa

nc

he

z

Ec

ole

Po

lyt

ec

hn

iqu

e F

éd

éra

le d

e L

au

sa

nn

eP

ag

e 4 program toto;

varA,B,C : array [1..1000] of integer ;i : integer ;

begin••

for i:=1 to 1000 doC[i] := A[i] + B[i];

••

end.

••

MOVE.L #2001,A0MOVE.L #3001,A1MOVE.L #4000,A2

START: ABCD -(A0),-(A1)MOVE.B (A1),(A2)

TEST: CMPA #1001,A0BNE START

••

COMPILATEURCOMPILATEURCOMPILATEURCOMPILATEUR

mémoire

processeur

contrôle traitement

INTERPRETEURINTERPRETEURINTERPRETEURINTERPRETEUR

microprogramme

Page 5: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 5

◆ 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 6: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 6

lecture de l’instructionlecture de l’instruction

décodagedécodage

ADDADD MOVEMOVE LOADLOAD STORESTORE

initialisationinitialisation

•••••

Page 7: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 7

Structure d’un ordinateur

processeur

mémoire entrées/sorties

bus d’adresse

bus de données

bus de contrôle

séquenceurséquenceur

micromémoiremicromémoire

registresregistres

opérateursopérateurs

contrôle traitement

Page 8: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 8

MAR ← PCMDR← M[PC]

PC ← PC+1IR ← MDR

MAR ← PCMDR← M[PC]

PC ← PC+1IR ← MDR

chercher l’opérandechercher l’opérandeexécuterexécuter

PC ← adresse initialePC ← adresse initiale

décodification de IRdécodification de IR

opérandeopérande

Page 9: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 9

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 10: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 10

◆ 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:

✸ ADD addition

✸ SUB soustraction

✸ LOAD chargement d’un registre interne à partir de la mémoire

✸ STORE chargement de la mémoire à partir d’un registre interne

Page 11: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 11

◆ 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:

✸ 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

Page 12: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 12

◆ 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 13: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 13

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 + zLOAD y ACC ← M[y]ADD z ACC ← ACC + M[z]STORE x 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 14: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 14

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 Rx, Ry Rx ← Rx + Ry

ADD Rx, Ry, Rz Rx ← Rx + Ry + RzADD Rx, y Rx ← Rx + M[y]ADD x, y M[x] ← M[x] + M[y]ADD x, y, z M[x] ← M[y] + M[z]

Page 15: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 15

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 x M[SP] ← M[x]

POP x M[x] ← M[SP]

Page 16: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 16

Exemple de compilation

◆ Phrase en langage de haut niveau:

P := (Q*R + S*T)*(U + V)

◆ Compilation pour un processeur à registres:

LD R0, QMUL R0, RLD R1, SMUL R1, TADD R0, R1LD R1, UADD R1, VMUL R0, R1ST R0, P

Page 17: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 17

◆ Compilation pour un processeur à pile:

PUSH QPUSH RMULPUSH SPUSH TMULADDPUSH UPUSH VADDMULPOP P

Page 18: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 18

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 opérande instruction

Page 19: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 19

◆ Direct

Absolu: ADD R1,adr

opcode adresse

opérande

mémoire

instruction

Page 20: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 20

◆ Direct

Registre: ADD R1,R2

opcode adresse

opérande

registres

instruction

Page 21: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 21

◆ Indirect

ADD R1,( adr )

opcode adresse

adresse

mémoire

instruction

opérande

Page 22: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 22

◆ Indirect

ADD R1,( R2)

opcode adresse instruction

opérande

adresse

registres

Page 23: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 23

◆ Relatif

ADD R1,offset (PC)

opcode offset

mémoire

instruction

opérandePC +

Page 24: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 24

◆ Relatif

ADD R1,offset ( R2)

opcode offset

mémoire

instruction

opérande+

adresse

adresse

registres

Page 25: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 25

◆ Auto-incrémenté

ADD R1,( R2)+

opcode adresse

mémoire

instruction

opérandeadresse

registres

+

taille de l’opérande

Page 26: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 26

◆ Auto-décrémenté

ADD R1,-( R2)

opcode adresse

mémoire

instruction

opérande

adresse

registres

-

taille de l’opérande

Page 27: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 27

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 28: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 28

◆ ExempleExempleExempleExemple

12 34 56 78

12

34

56

78 12

34

56

780

1

2

3

0

1

2

3

donnée

big-endian little-endian

Page 29: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 29

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

RISC

Page 30: Les processeurs à plusieurs niveaux de langagelsl · MDR ← M[PC] PC ← PC+1 IR ← MDR MAR ← PC MDR ← M[PC] PC ← PC+1 ... Pour faciliter la lecture des programmes en langages

Eduardo Sanchez

Ecole Polytechnique Fédérale de LausannePage 30

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