Processeur mu0

Download Report

Transcript Processeur mu0

3-Présentation d’un µP simple

• • Microprocesseur avec un bus de données sur 16 bits et un bus d’adresses sur 12 bits (soit 4096 mots adressables).

Le chemin de données doit comprendre au minimum : – un registre

compteur programme

(PC) : un registre stockant l’adresse de la prochaine instruction à exécuter.

– un registre

accumulateur

(ACC) : un registre stockant la donnée sur laquelle on travaille.

– une

UAL

ET/OU/OUX logique)… qui permet d’exécuter des opérations arithmétiques et logiques de base (addition, soustraction,

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Codage des Instructions

Chaque instruction est codée sur 16 bits et comprend : – – le champ

code opération

il s’agit (add, …).

: indique le type d’instruction dont le champ

code opérande

: adresse de la donnée.

• Une instruction d’addition, par exemple, utilise la donnée stockée à l’adresse spécifiée, ainsi que le registre accumulateur comme opérande implicite, puis stocke le résultat dans l’accumulateur. L’action réalisée est : ACC ¬ ACC + mem16 [addr]. On parle de machine

une adresse

car une seule opérande est définie explicitement dans le codage de l’instruction. Les instructions sont lues depuis la mémoire à partir de l’adresse 0, à des adresses consécutives.

www.enib.fr

Microprocesseurs : Systèmes à Microprocesseurs

Jeu d’Instructions

• • La programmation d’un programme complet directement en code machine binaire devient très rapidement fastidieuse :on définit un langage symbolique nommé

langage d’assemblage

permettant de représenter les instructions par des mnémoniques.

On délègue la traduction du

programme source

en code binaire exécutable à un programme : l’assembleur.

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Chemin de données

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Chemin de données

Les éléments du chemin de donnés sont : • • • • • • • l’

UAL

, le

registre accumulateur

ou nulle).

(ACC) : il contient la donnée sur laquelle on travaille. Il renvoie des informations vers la machine d’état (valeur nulle et valeur positive le

compteur programme

(PC : Program Counter) : il contient à tout instant l’adresse de la prochaine instruction à exécuter.

le

registre d’instruction

(IR : Instruction Register) : il contient l’instruction qui est en train d’être exécutée.

des

multiplexeurs

(MUXA et MUXB) qui permettent d’aiguiller les données.

une porte 3 états qui permet d’amener le contenu du registre accumulateur sur le bus de données, et de déconnecter l’accumulateur du bus de données quand la mémoire est en lecture.

Les registres disposent d’une commande de chargement et de remise à zéro synchrone (non représentée). l’UAL reçoit, en plus de ses entrées et sortie, un code permettant d’identifier la fonction UAL sélectionnée.

www.enib.fr

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs

Séquencement des Instructions

• La machine d’état récupère des informations en provenance de la partie traitement (opcode, accZ, acc15) et génère des commandes internes pour contrôler l’activation du chemin de données adéquat pour réaliser l’instruction en train d’être exécutée et des commandes externes pour assurer le dialogue du microprocesseur avec la mémoire. Le séquencement des différentes actions est cadencé par l’horloge clk.

• L’exécution d’un programme entier consiste à répéter l’exécution de l’instruction pointée par le PC jusqu’à la dernière instruction.

• L’exécution d’une instruction peut être réalisée en deux phases : –

phase d’acquisition (fetch)

: on lit en mémoire l’instruction pointée par le PC et on la transfère dans le registre d’instruction RI. On incrémente le compteur programme pour qu’il pointe sur l’instruction suivante. Dès que l’instruction est dans le registre d’instruction, elle est décodée.

phase d’exécution (execute)

ACC.

: l’opérande est lue en mémoire (si nécessaire). L’opération UAL est exécutée, et le résultat est rangé dans l’accumulateur

www.enib.fr

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs

Séquencement des Instructions

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Exemple de Programme

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Phase d’acquisition (Fetch)

B+1 LDA var1 LDA var1 ADD var2 STO res STOP Var1=1 Var2=2 res

0

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Phase d’exécution

0x004 B 0x004 LDA var1 0x001 LDA var1 ADD var2 STO res STOP Var1=1 Var2=2 res [email protected]

0x001 Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Phase d’acquisition (Fetch)

ADD var2 LDA var1 ADD var2 STO res STOP Var1=1 Var2=2 res Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Phase d’exécution

0x005 LDA var1 ADD var2 STO res STOP Var1=1 Var2=2 res 0x001 0x003 [email protected]

Microprocesseurs : Systèmes à Microprocesseurs 0x002 www.enib.fr

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Instructions de Saut JMP Addr : Fetch

JMP 0X004 JMP 0x004

0

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

JMP Addr : Exécution

0X004 0X004 JMP 0X004 Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

JSR Addr : Fetch

JSR 0x004 JSR 0x004

0

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

JSR Addr : Exécution

0x004

1 1

0x004 0x004 Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

6 7

RET : Fetch

RET JSR 0x004

6

RET Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

RET : Exécution

Actions réalisées : PC  SPC 1 1

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

4-Structure de la machine d’état Machine d’Etat Microprogrammée

• • Concept introduit par Wilkes en 1951, mais appliqué par IBM qu’à partir de 1964.

Les valeurs des signaux pour les différentes instructions sont stockées dans une mémoire dite de microprogrammation interne au microprocesseur. Chaque mot de la mémoire peut être adressé en fonction des entrées de la machine d’état (opcode et drapeaux).

www.enib.fr

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs

Machine d’Etat Microprogrammée

• • • • Pour exécuter une instruction, il suffit de lire deux lignes de la mémoire (fetch + exec) pour affecter les signaux de contrôle appropriés. Chaque ligne de la mémoire forme une

micro instruction

.

La lecture de la mémoire est séquencée par une machine d’état de microprogrammation relativement simple à mettre en oeuvre.

Intérêt : l’ajout de nouvelles instructions consiste simplement à ajouter des lignes dans la mémoire.

En ajoutant au micro-instructions un champ permettant d’identifier la prochaine instruction à exécuter, il est possible d’obtenir un langage de microprogrammation. Ce langage permet de réaliser des microprogrammes (

firmware

) pour synthétiser des instructions complexes (ex multiplication) sur une architecture sans les ressources matérielle pour le faire.

www.enib.fr

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs

Machine d’Etat Microprogrammée

Cette technique a un coût : 70 cycles pour une multiplication, 140 cycles pour une division contre 4 cycles pour une addition sur un Motorola (Freescale) 68000.

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Machine d’Etat Câblée

Machine d’état cablée

: elle est synthétisée pour fournir les signaux de commande aux éléments du chemin de données interne ou externe au microprocesseur. Elle enchaîne les phases de chargement et d’exécution des instructions en tenant compte des informations provenant de la partie traitement. Plus le nombre d’instructions devient important et plus la réalisation de cette machine d’état devient complexe.

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

3- Caractéristiques des jeux d’instructions Introduction

• Le microprocesseur est caractérisé par son

architecture de jeu d’instructions

(ISA – Instruction Set Achitecture), qui est souvent commune à toute une famille de processeurs. l’ISA définit l’interface entre le microprocesseur et le programmeur (codage des instructions, registres disponibles …). l’ISA est en général détaillée dans le “User’s Manual” de la famille de microprocesseurs.

www.enib.fr

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs

Codage des Instructions

• • • Le codage d’une instruction doit permettre de rendre compte de la fonction réalisée (opcode) et de la localisation des opérandes.

Quelques exemples avec une instruction typique d’addition: Machine 3 adresses • Machine 2 adresses • Machine 1adresse (ou à accumulateur) • La manière dont sont codées les instructions a une influence sur leur pouvoir d’expression : pour réaliser l’opération d = op1 + op2 avec une machine à accumulateur, il faut réaliser : LDA op1 ; acc=op1 ADD op2 ; acc=acc+op2 STO d ; d=acc

www.enib.fr

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs

Les Registres

• • Les

registres

sont des emplacements de mémorisation à accès très rapides. On trouve : des registres d’usage général, avec parfois des spécificités : registres de données, d’adresses, pour les opérations en flottants.

des registres à usage spécifique : compteur programme (PC), pointeur de pile, registre de segment, mot d’état, registre de configuration,…

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Modes d’Adressage

Les modes d’adressage font référence aux manières de spécifier une opérande (et d’utiliser les bits de codage des champs opérande) : – – – –

mode d’adressage immédiat

: on spécifie la valeur de la donnée dans le codage de l’instruction, int a = 2 + 3;

mode d’adressage direct ou absolu

l’instruction, : on spécifie l’adresse mémoire de la donnée dans le codage de int op1=2, op2=3, d; d = op1 + op2;

mode d’adressage direct registre

codage de l’instruction, : on spécifie le numéro du registre qui contient la donnée dans le register int r1, r2, r3; r3 = r1 + r2;

mode d’adressage indirect

pointeur vers la donnée, : on spécifie, dans le codage de l’instruction, un registre qui sert de int a, *p=0x00FF1143; a=*p; Des variantes permettent de spécifier en plus un offset par rapport à l’adresse de base, ou un index défini dans un autre registre.

mode d’adressage implicite

: l’instruction s’exécute sur une donnée spécifiée de manière implicite.

add op1 ; le registre acc est modifié, mais pas référencé dans le codage de l’instruction goto addr ; le registre pc est modifié • Les modes d’adressage disponible doivent permettre de supporter les structures de données des langages de haut niveau.

www.enib.fr

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs

Types d’Instruction

• Les instructions classiquement proposées par les jeux d’instructions des microprocesseurs sont : – instructions de transfert de données, – instructions arithmétiques et logiques • opérations sur des entiers et des réels, • • • • instructions logiques bit à bit, instructions de manipulation de bits, instructions de décalage et rotation, instructions de manipulation de chaînes de caractères, – – – instructions de contrôle : branchement conditionnel ou inconditionnel, instructions d’appel et de retour de sous-programme, manipulation du contexte (passage de paramètre, gestion des variables locales), instructions privilégiées orientées vers le support de systèmes d’exploitation.

• La programmation au niveau assembleur est laborieuse (mais instructive).On fait appel à des langages de plus haut niveau (C,C++, Java, …) possédant un niveau d’abstraction plus important. L’écart entre un langage de haut niveau et les instructions machine est complété par un programme chargé de la traduction : le

compilateur

.

• Le jeu d’instruction doit fournir le matériel nécessaire pour exprimer les concepts utilisés par les langages de haut niveau.

www.enib.fr

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs

Jeux d’Instructions CISC

Caractéristiques des processeurs CISC

• • • • • • CISC = Complex Instruction Set Computer Dans les années 1970, la mémoire vive était chère et les compilateurs peu performants.

Les jeux d’instructions CISC supportent au maximum les langages de haut niveau – En offrant des instructions évoluées permettant une traduction quasi-directe des programmes source vers l’assembleur.

– En offrant des modes d’adressage orientés vers la manipulation de structure de données complexes (tableau, enregistrement, liste, …).

Avantages : – L’écriture des compilateurs est plus facile puisque le microprocesseur apporte un support évolué, – Les instructions permettent d’avoir un code compact, qui économise l’utilisation de la mémoire.

Conséquences : – Le codage des instructions est de longueur variable (2 à 10 octets pour un Motorola 68000).

– La complexité des instructions et des modes d’adressage impose l’utilisation d’un séquenceur micro-programmé.

La durée d’exécution d’un programme est donnée par

TP

= Σ(

Ni

×

NC/ i

×

TC)

avec

TC

la durée d’un cycle d’horloge,

NC/ i

le nombre de cycles pour exécuter une instruction particulière et

Ni

le nombre d’occurrence de cette instruction. Les processeurs CISC essaient d’agir sur le nombre d’instructions pour obtenir la performance voulue.

www.enib.fr

32 [email protected]

Microprocesseurs : Systèmes à Microprocesseurs

Jeux d’Instructions CISC

Limite de l’architecture CISC classique

Constats sur les processeurs CISC des années 1970-1980 : • La vitesse de traitement des processeurs augmente plus rapidement que le temps de réponse des mémoires ne décroît. Les accès mémoire deviennent pénalisants.

• Le grand nombre de modes d’adressage implique la réalisation de séquenceurs micro-programmés. La mémoire de micro-programmation peut utiliser jusqu’à 60% de la surface de silicium de la puce.

• Fréquence d’utilisation des modes d’adressage (68000)

[email protected]

moyenne sur 500 millions d’instructions (Electronic Design

Microprocesseurs : Systèmes à Microprocesseurs www.enib.fr

Jeux d’Instructions CISC

Exemple :

► MOVE.W 2(A0,D1), D2: l’opérande en mémoire Avant :

A0

31

00 00

16

D1

31

00 00

16 @++↓ $1FFC $1FFE $2000 $2002 $2004 Après :

D2

31

45 6E

16

Opérande source Opérande destination

15

1F

15

00 .. $23 $11 $55 $3F

15

3F FE 04 .. 1A

0 0

$14 $22 $44 $1A

0 : 2(A0,D1) = permet de calculer l’adresse effective de : D2 $1FFD $1FFF $2001 $2003 $2005

www.enib.fr

Microprocesseurs : Systèmes à Microprocesseurs

Jeux d’Instructions CISC

Application : accès aux champs d’un tableau d’enregistrement en C struct

individu { TAILLE EQU 0

short int

taille;

short int

poids;

short int

age; POIDS EQU 2 AGE EQU 4 } equipe[5] ; equipe[2].taille=170; equipe[2].poids=60; equipe[2].age=20; EQUIPE DS.W 3*5 * tableau LEA.L EQUIPE, A0 * Adresse de base MOVE.L #12, D1 * Index (2*6 octets) MOVE.W #170, TAILLE(A0, D1.L) MOVE.W #60, POIDS(A0, D1.L) MOVE.W #20, AGE(A0, D1.L)

A0

31

00 03

16 15

1F FC

0

D1

31

00 00

16 15

00 0C

0 @++↓ $31FFC $31FFE $32000 $32002 $32004 $32006 $32008

$00 $AA

$31FFD $31FFF $32001 $32003 $32005 $32007 $32009

[email protected]

www.enib.fr

Jeux d’Instructions CISC

Dans 80% des cas, le code généré par les compilateurs ne fait appel qu’à 20% des instructions disponibles dans le jeu d’instruction des microprocesseurs.

• Les types d’instructions les plus fréquemment exécutées sont : – Les affectations de variables (40%) : dans 75% des cas, il s’agit d’affectations de variables scalaires, et dans 25% de mouvement de données sur des tableaux ou des structures.

– Les structures de contrôle : test et boucles (50%) – Les appels de sous-programmes (10%) : ils représentent cependant 45% du temps d’exécution des instructions machine. Le nombre de paramètres passés à la fonction est inférieur à 6 dans 98% des cas. 92% des fonctions appelées ont moins de 6 variables locales scalaires. La profondeur d’appels successifs est en moyenne de 5.

Conclusions:

• Une partie seulement des modes d’adressage et du jeu d’instruction est vraiment très utilisée.

• Les appels de fonction et le passage des paramètres nécessitent des accès mémoire qui sont pénalisants.

www.enib.fr

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs

Jeux d’Instructions RISC

Introduction

• • Les premières recherches entreprises par IBM au milieu des années 1970, puis poursuivies aux universités de Berkeley (en 1980) et de Stanford (en 1981) débouchent sur les principaux modèles architecturaux des RISC.

– 1. Les accès mémoire ne doivent se faire que via des instructions du type LOAD/STORE.Les autres instructions fonctionnent de registre à registre. Il faut donc beaucoup de registres. Le jeu d’instruction ne doit contenir que ce qui est utile, le reste peut être émulé. Les modes d’adressage doivent être peu nombreux.

RISC

= Reduced Instruction Set Computer.

– 2. Toutes les instructions doivent s’exécuter en un cycle. Le format des instructions doit être fixe (32 bits), de largeur égale ou plus petite à la largeur du bus de données.

– 3. Le séquenceur doit être cablé.

Quelques repères : – L’équipe de David Patterson, à l’université de Berkeley, produit le RISC I (44420 transistors, 32 instructions) en 1982 avec des performances qui surpassent les CISC de l’époque, puis le RISC II (40760 transistors, 39 instructions) en 1983.

– L’équipe de John Henessy, à l’université de Stanford, produit le MIPS au début des années 1980.

www.enib.fr

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs

• Du fait de la simplicité des instructions et de leur format, la conception des processeurs RISC est plus simple que celle des CISC. Pour atteindre les niveaux de performance voulu, les processeurs RISC font appel à des améliorations d’ordre architectural.

• La durée d’exécution d’un programme est donnée par

TP

= Σ(

Ni

×

NC/ i

×

TC)

avec

TC

la durée d’un cycle d’horloge,

NC/ i

le nombre de cycles pour exécuter une instruction particulière et

Ni

le nombre d’occurence de cette instruction. Les processeurs RISC essaient d’agir sur le nombre de cycle par instruction pour obtenir la performance voulue.

• Après une période de méfiance de la part de l’industrie, le marché du RISC se développe à la fin des années 1980.

• Deux modèles de processeurs RISC développés à Berkeley et à Stanford sont à l’origine de la plupart des processeurs RISC actuels. Ils diffèrent principalement par le nombre de registres qu’ils comportent.

www.enib.fr

[email protected]

Microprocesseurs : Systèmes à Microprocesseurs