Vous êtes sur la page 1sur 87

Chapitre 2 (suite chapitre1)

Introduction au microprocesseur

1
1- Le processeur
1.1 Introduction
Un microprocesseur est constitué par un assemblage de circuits exécutant les
fonctions de l’unité centrale de traitement d’un micro-ordinateur.
En anglais : CPU = central processing unit.

Définition :
Un microprocesseur est un circuit logique capable, après identification d’une
séquence d’instructions, d’effectuer des traitements de l’information.

2
Ce que doit savoir faire un ordinateur :

Problème à résoudre Résolu par


acquisition des données périphériques : clavier, souris, CD, disque,
disquette, scanner, caméra ...

mémorisation des données, du mémoire centrale et registres,


programme à exécuter, des calculs éventuellement disque
intermédiaires ...

réalisation des calculs UAL = unité arithmétique et logique

échanges de données bus internes et externes, unité E/S

synchronisation des opérations horloge et unité de contrôle

coordination de toutes les activités microprocesseurs et contrôleurs dédiés


(calculs en cours, bon
fonctionnement, transferts avec les
périphériques ...)

3
Un microprocesseur est un circuit contenant les unités suivantes :
• unité de contrôle, de commande et de synchronisation ;
• unité arithmétique et logique
• mémoire et registres internes
• unité d’entrées/sorties
• bus internes

UAL

Mémoire interne
E/S
et registres

UC

4
1.2 Bus internes
Définition :
Un bus est un ensemble de fils qui transportent (en parallèle ou en série) une
information d’un composant à l’autre.

• Mode parallèle : autant de fils que le mot transporté contient de bits.


• Transporter mot sur un bus de taille inférieure : multiplexage
• 3 types de bus rencontrés :
• bus de données
• bus d’adresse
• bus de contrôle
• Les bus se distinguent par :
• largeur
• vitesse

5
1.3 UAL
• Circuits nécessaires pour les opérations arithmétiques et logiques

• En fonction de l’opération sélectionnée :


• fournit le résultat
• met à jour un registre d’état pour contrôler si
• résultat = 0
• résultat positif / négatif
• débordement
• retenue
•…

6
1.4 Mémoire et registres

• Le microprocesseur contient plusieurs registres et mémoire stockant données et


instructions

• La taille des registres est fonction du type de processeur

• Les registres permettent d’accélérer la vitesse de traitement

• Ils peuvent être synchronisés avec l’UAL

7
1.5 Entrées / sorties
• But : échanger des informations avec l’extérieur (nécessaire au fonctionnement du
CPU)

Bus de donnée
Unité d’entrées/
sorties (E/S) Bus d’adresse

Bus de commande

Intérieur du processeur Extérieur du processeur

• L’unité d’E/S assure les liaisons entre bus internes et bus externes
• Les bus d’adresse est unidirectionnel

8
1.6 Unité de commande
• « Chef d’orchestre » qui pilote et synchronise les unités du processeur

• Elle est pilotée par une horloge et permet de cadencer l’exécution des instructions
du programme :
• mise en service des circuits concernés (verrous)
• activation des communications (verrous + cellules de commutation)

Définition :
Un verrou est un circuit à n sorties, n entrées de données et une entrée de
contrôle. L’entrée de contrôle autorise ou interdit le transfert des données vers
les sorties.

• Il existe des verrous unidirectionnels (ei si) et des verrous bidirectionnels


(ei si)

9
• Exemple : verrou unidirectionnel simple 4 bits
e0 s0
e1 Transfert s0 s1 s2 s3
s1
e2 s2 0 0 0 0 0
e3 s3 1 e0 e1 e2 e3

transfert
• Exemple : transfert du contenu de 2 registres en parallèle :

Registre 0 Verrou Registre 1


e0 R0 R1
D D

e1
D D
transfert

transfert Schéma de principe


10
Définition :
Une cellule de commutation (simple) est un circuit à 2 sorties, 2 entrées de données
et une entrée de contrôle. L’entrée de contrôle modifie l’ordre de connexion des
entrées de données aux sorties.

Exemple : cellule de commutation simple 1 bit

e0 s0
c s0 s1

e1 s1 0 e1 e0
1 e0 e1
c

• Il existe des cellules unidirectionnels (ei si) et des cellules bidirectionnelles


(ei si)

11
1.7 Modèle de Von Neumann
En 1945 J. Von Neumann (1903-1957) définit les bases de l’architecture des
calculateurs modernes.

• unification des différentes représentations utilisées grâce au codage en binaire


(algèbre de Boole)
• mémorisation des résultats intermédiaires mais surtout des opérations elles-mêmes
• représentation des opérations élémentaires à effectuer (désignées par
« instructions »)
• ces instructions sont regroupées en « programmes »
• les programmes sont stockés en mémoire (plusieurs exécutions possibles)
• la rupture de séquence donne un « pouvoir de décision » à la machine en fonction
des résultats intermédiaires sans intervention humaine

12
1.7.1 Principe général de fonctionnement du microprocesseur

Pour exécuter un programme, le microprocesseur effectue cycliquement :


• lecture d’un code d’instruction en mémoire (fetch)
• reconnaissance de ce code, ou décodage (decode)
• exécution d’un ordre élémentaire (execute)
• positionnement sur le code de l’instruction suivante du programme
En plus de l’accumulateur il faut d’autres registres pour le fonctionnement du
microprocesseur :
• compteur ordinal (pointe sur l’instruction suivante immédiate)
• registre d’instruction
• registre d’état
• registre de sommet de pile (adresse de retour pour les sous-programmes)
• registres à usage plus général (adresse, donnée, buffer, …)

13
1.7.2 Séquencement des instructions
Une instruction est découpée en plusieurs micro-opérations / micro-commandes

1. Lire l’instruction
2. Calculer l’adresse de la prochaine instruction, incrémenter le CO
3. Décoder l’opération
4. Calculer les adresses des opérandes si nécessaire
5. Lire les opérandes éventuelles depuis la mémoire
6. Exécuter l’instruction
7. Calculer l’adresse du résultat
8. Ranger le résultat en mémoire

14
1.7.3 Instruction
Définition :
Une instruction est un ordre élémentaire exécutable par un microprocesseur donné
(en un certain nombre de cycle d’horloge).

Définition :
Ces instructions sont spécifique à un microprocesseur et leur nombre est limité.
Leur ensemble constitue le jeu d’instruction du microprocesseur.

Classification des instructions :


• instructions de transfert
• instructions arithmétiques
• instructions logiques
• instructions de commande
• instructions d’entrée/sortie

15
Les instructions peuvent affecter ou utiliser le contenu d’un ou plusieurs mot-
mémoire, un ou plusieurs registres, ou aucun d’entre-eux.

Définition :
Un opérande est un élément de la mémoire concerné par l’exécution d’une
instruction donnée.

On distingue 3 principaux types d’instruction :


• sans opérandes
• monadiques (un opérande)
• dyadiques (deux opérandes)

Un code est associé à chaque instruction d’un programme (code-instruction).


En général on a :

code opération opérande 1 opérande 2

16
Définition :
Un mnémonique est une abréviation permettant de se rappeler du code et de la
fonction d’une instruction. Le langage assembleur est directement basé sur ces
mnémoniques.

Définition :
Un programme est une liste de codes-instructions implantés en mémoire et
permettant de résoudre un problème prédéterminé.

17
1.8 Réalisation d'une unité de commande
1.8.1 UC micro-programmée
Les différentes phases (chargement, exécution ...) correspondent à des micro-
opérations déclenchées pour exécuter l'instruction.
code-instruction séquence de micro-opérations
déclenche

Idée : mémoire non-volatile (nanomémoire)


code-instruction adresse séquence de micro-opérations
décodage
Avantages :
• changer le micro-programme = changer les possibilités du microprocesseur
• ajout, correction, custom-design facile (pas de modification des circuits)

Inconvénients :
• nécessite un séquenceur de micro-inst. + accès mémoire : ralentissement

18
1.8.2 UC câblée
L'UC est entièrement réalisée sous forme d'un seul circuit logique séquentiel.

Avantages :
• + rapide que l'UC micro-programmée
• + simple à réaliser et moins de place sur la puce SI jeu d'instruction pas trop
important

Inconvénients :
• circuit rapidement complexe quand le jeu d'instruction augmente
• ajout, modification, suppression d'une instruction : modification complète du
circuit logique

19
UC micro-programmée UC câblée
lente rapide
évolutive non évolutive
jeu d'instructions important jeu d'instruction réduit
pas (trop) de problème de réalisation sinon réalisation = usine à gaz

micro-processeurs lents micro-processeurs (très) rapides


disposant d'un jeu d'instruction complet disposant d'un jeu d'instruction réduit
contenant éventuellement des instructions contenant des instructions simples
complexes et peu nombreuses

processeurs CISC processeurs RISC


Complex Instruction Set Computer Reduced Instruction Set Computer

20
Les processeurs construits par Intel et AMD utilisent un compromis
• micro-noyau RISC : très compact, très performant, stable dans le temps
• + unité de contrôle micro-programmée utilisant non pas la nanomémoire, mais
le(s) micro-noyau(x)
• cette solution cumule les avantages sans (trop de) perte de vitesse d'horloge

• schéma de principe d'une UC simple :


Registre
code opération opérande 1 opérande 2
instruction

décodeur d'instructions horloge


externe

séquenceur cablé, µprogrammé ou hybride

Microcommandes : UAL, verrous, cellules de commutation


21
1.8.3 Rôle de l'UC / échanges sur un bus

• Communication sur un bus : 1 seul émetteur et 1 seul récepteur connectés


Les autres composants ne doivent pas accéder au bus.

• l'UC bloque l'accès au bus aux composants non concernés à l'aide de verrous ... mais
composants internes ET externes

• l'UC agit sur des verrous externes au travers de l'unité E/S

• donc l'UC pilote à la fois l'accès aux bus internes au microprocesseur mais
également aux bus externes

22
1.9 Critères de puissance d'un microprocesseur
• vitesses d'horloge interne et externe (sur les bus externes)

• largeur du bus de donnée : taille des mots manipulés en une instruction


• largeur du bus d'adresse : taille de la mémoire gérée
• nombre de registres et de mémoires internes (caches, buffers, ...) qui réduisent le
nombre d'accès en mémoire centrale
• nombre d'instructions et complexité du jeu d'instructions
• nombre de microcommandes exécutées en séquence : + il y en a + il faut de
cycles pour exécuter une instruction, mais une UC simple supporte une fréquence
rapide donc compromis.
• nombre de microcommandes déclenchées en parallèle : duplication d'unités
fonctionnelles pouvant travailler en même temps ... + complexe mais + performant
• ...

23
2 La mémoire
2.1 Définitions
• La mémoire centrale est un ensemble de registres dotés d'une structure d'accès
permettant l'échange entre les registres et les organes extérieurs.

• La capacité d'une mémoire est le nombre de bits que l'on peut mémoriser dans
cette mémoire.
• Le temps d'accès mémoire est le délai qui s'écoule entre une requête de lecture et
la disponibilité de l'information correspondante.
• On appelle emplacement accessible Ei (ou zone de stockage accessible)
l'emplacement unique sur lequel une opération de lecture ou d'écriture est possible
à l'instant t.

24
2.2 Types de mémoire

Un premier mode de classification des mémoires peut se faire selon la structure


d'accès dont elles sont dotées.

Il existe 3 familles de structures :


• mémoires séquentielles (ruban perforé, bande magnétique, ...)
• mémoires adressables (mémoire centrale, ...)
• mémoires associatives (sélection par le contenu / prédicat, ...)

25
2.2.1 Mémoires séquentielles
Définition :
Une mémoire séquentielle est une mémoire telle que si l'accès à l'instant t à porté
sur l'emplacement Ei alors l'accès à l'instant t+1 porte obligatoirement sur
l'emplacement Ei+1 ou Ei-1 (notion d'accès séquentiel).

Définition :
Une pile est une mémoire séquentielle dont les déplacements
(Ei Ei+1 ou Ei Ei-1) sont liés respectivement à la commande d'écriture ou de
lecture.

écrire (empiler) lire (dépiler)


Ei Ei Ei+1 Ei lire dans Ei
écrire dans Ei+1 Ei Ei-1

occupé vide occupé vide

26
Application au microprocesseur :
Le microprocesseur utilise une pile pour mémoriser les adresses de retour lors
d’appels à des sous-programmes ou à des routines d’interruption.

vide

sommet de pile

occupé

fond de pile

27
2.2.2 Mémoires adressables
Définition :
Une mémoire adressable (appelée également à accès direct, à accès aléatoire -
RAM, ou à accès sélectif) est un ensemble de zones de stockage complété par un
mécanisme de sélection capable d’établir l’accès sur chacune d’elles en un temps
indépendant de la position.

• l’accès nécessite de désigner la position sélectionné par une adresse

• le microprocesseur agit sur le contenu de la mémoire par 2 opérations :


• écriture en mémoire : transfère un mot binaire dans un mot mémoire
d’adresse i. La valeur précédemment stockée à l’adresse i est perdue,
« écrasée » par la nouvelle valeur
• lecture en mémoire : délivre une copie du mot binaire stocké à l’adresse i. La
lecture ne modifie pas la valeur du mot en mémoire.

28
ROM / RAM :
• ROM (Read Only Memory) ou MEM (Mémoire Morte) : mémoire à lecture seule

• RAM (Random Access Memory) ou MEV (Mémoire Vive) : mémoire à accès


aléatoire (lecture / écriture)
Les mémoire RAM sont dites « volatiles » car l’information stockée disparaît
lorsque l’on coupe l’alimentation.
On peut également distinguer :
• UVPROM, EEPROM : programmable par l’utilisateur
• PROM à fusibles / jonctions : programmable une seule fois
• RAM série : à accès série
• RAM statique / dynamique : selon le type de rafraîchissement
• ROM + masque : programmable en usine
•…

29
Familles et sous-familles de mémoires adressables :

Principales mémoires
adressables

Mémoires mortes Mémoires vives

ROM masque PROM utilisateur RAM RAM Associatives


statiques dynamiques (caches)

PROM fusibles EPROM ou PROM OTPROM ou EPROM


effaçable programmable une fois

UVPROM ou PROM EEPROM ou PROM effaçable EEPROM flash effaçable


effaçable aux UV électriquement électriquement par bloc
par octet
30
Espace d'adressage :
• la taille des mots binaires représentant les adresses limite le nombre de mots
auxquels le microprocesseur peut accéder. Si les adresses sont codées sur m bits
alors "l'espace d'adressage" est de 2m mots-mémoire

• dans cet espace d'adressage il faut prévoir non seulement l'accès à la RAM, mais
aussi à la ROM et aux E/S
• exemple : espace d'adressage d'une RAM de M mots, d'une ROM de N mots et
d'un espace mémoire réservé aux entrées sorties

0 mot 0
1 mot 1 RAM
... ...
M-1 mot M-1
M mot M
... ...
adresses ... ... ROM
M+N-1 mot M+N-1
M+N ...
... ...
2m-1 ... E/S

31
• il existe deux méthodes principales pour désigner une adresse :
• linéaire : mots numérotés de 0 à 2m-1
• segmentée : adresse = < n° segment , déplacement >

• pour réaliser cet espace d'adressage il est nécessaire d'utiliser tout un ensemble de
circuits déjà étudiés :
• décodeurs
• multiplexeurs
• démultiplexeurs
• ...

32
Aspect matériel :
• le temps d’accès à ces mémoires varie de quelques nanosecondes à quelques
dizaines de nanosecondes

• la mémoire se présente sous forme de boîtiers de différentes capacités et adressant


une certaine taille de mots (1K mots de 1 bit, 256K mots de 8 bits, 1M mots de 32
bits, …)

• chaque boîtier dispose (en général) des broches suivantes :


• une broche de sélection : CS (chip select)
• une broche de lecture/écriture : R/W (read/write) pour les RAM
• broches d0, …, d7, … pour les données
• broches a0, …, a7, … pour les adresses
• éventuellement une broche OE (output enable) de connexion (logique 3 états)
des sorties vers l’extérieur (bus de donnée)
• 2 broches pour l’alimentation électrique

33
2.2.3 Mémoires associatives :
• la mémoire cache est une mémoire associative présente dans tous les ordinateurs
personnels qui a pour but d’accélérer l’accès aux données (pour tout type de
mémoire)

• son principe repose sur un certain nombre de remarques :


1. Les accès mémoire freinent les microprocesseurs : pendant le temps que dure un
accès en lecture à la mémoire centrale, celui-ci pourrait exécuter plusieurs
instructions
2. Le temps d'accès à la mémoire est fonction de sa technologie et de sa capacité (à
cause du décodage des adresses)
3. Le coût de la mémoire est inversement corrélé à sa vitesse
4. Pendant l'exécution d'un programme, de nombreux accès mémoire concernent un
petit nombre d'adresses, au moins pendant un certain temps (variables, boucles, ...)

34
Idée de la mémoire cache :
• si l'on arrive à accélérer l'accès à ses quelques adresses utilisées de manière
répétitive on va du même coup accélérer l'exécution du programme

• puisqu'il n'y a que quelques adresses concernées, on peut utiliser une mémoire de
faible capacité mais à faible temps d'accès pour les stocker.
• Même si le coût de ce type de mémoire est élevé, si on l'utilise en petite quantité,
le coût de la machine va augmenter peu mais le rapport efficacité/prix va lui
augmenter fortement
• important : à ces mémoires caches sont associés des algorithmes chargés de gérer
son contenu de manière efficace

• hiérarchie des mémoires rencontrées dans un ordinateur :

Type O(capacité) O(temps d'accès) en ns


registre Octets 1
cache Ko/Mo <5
primaire Mo/Go 10
secondaire Go/To 8000

35
2.3 RAM dynamique et RAM statique
Définition :
Une RAM est dite statique (SRAM) si l’information est conservée en l’absence de
signaux de commandes.

• la cellule élémentaire d’une SRAM est constituée de 4 transistor MOS formant


une sorte de bascule RS (différente de la bascule D)

Définition :
Une RAM est dite dynamique (DRAM) si l’information ne peut être conservée que
par l’application répétée de signaux de commande (rafraîchissement de la mémoire)

• la cellule élémentaire d’une DRAM est constituée d’un seul transistor MOS jouant
le rôle de condensateur : la donnée est stockée sous forme de charge dans une
capacité. Mais le courant de fuite entraîne la nécessité de recharger le condensateur :
rafraîchissement (toutes les 2-4 ms)

36
Avantages des SRAM Avantages des DRAM
très rapide très dense
faible consommation moins chère
moins sensible aux bruits et radiations capacités élevées

Dynamique ou statique ?
• Mémoires caches : SRAM
• Mémoires centrales : DRAM

SDRAM ?
• Synchronous DRAM

37
2.4 Caractéristiques des mémoires RAM actuelles
2.4.1 Particularités
• DDR SDRAM (Double Data Rate SDRAM)
utilisation des 2 fronts pour transférer les données
• DDRII SDRAM
fréquence accrue + plus faible consommation
• QBM (Quad Band Memory)
utilisation de 2 canaux de 64 bits alternativement
• RDRAM (Rambus DRAM)
concept de mémoire série à 1 ou plusieurs canaux + fréquence élevée
• QDR SDRAM (Quad Data Rate SDRAM)
transfert 2 ou 4 mots en 1 cycle + lectures et écritures simultanées possible
• QDRII SDRAM
fréquences accrues

38
1.4.2 Performances théoriques

DDR DDR RDRAM RDRAM


SDRAM QDR
SDRAM SDRAM SDRAM 4 canaux 4 canaux
PC133 SDRAM
PC2100 PC4000 PC800 PC1066
Largeur bus
64 64 64 64 16 16 2x64
données
Fréquence en
66 133 133 250 800 1 066 1 500
MHz

Débit en Mo/s 508 1 017 2 034 3 814 6 103 8 132 22 888

39
2.4.3 Supports physiques

• barette SIMM 32 bits (Single Inline Memory Module)

72 broches – FPM, FPM EDO

détrompeur

40
• barette DIMM 64 bits (Double Inline Memory Module)

168 broches - SDRAM

détrompeurs

184 broches – DDR-SDRAM, DDRII-SDRAM, QDR-SDRAM

208 broches - QBM

41
• barette RDRAM 16 bits (Rambus DRAM)

184 broches

détrompeurs

42
3 Architecture d'un processeur
simple : la petite machine
3.1 Positionnement du problème
Pour réaliser ce processeur, il faut définir :
• la nature des traitements qu'il sera capable d'effectuer

• la taille et/ou le format des opérandes


• la capacité de transfert de données avec l'extérieur
Ces 3 points aboutissent à l'établissement
• du jeu d'instruction du processeur
• de la structure matérielle de la partie opérative
• de la structure matérielle de dialogue avec les circuits extérieurs

43
Le processeur est constitué de deux ensembles :
• la partie opérative
• la partie contrôle (séquenceur)

PROCESSEUR

Partie contrôle séquenceur RI

unité de gestion
unité de de la mémoire
Partie opérative
traitement Structures d'échange
(BUS)

44
3.2 Jeu d'instruction
3.2.1 Modes d'adressage
• mnémonique traitement à effectuer, mais il faut préciser quel est le type des
données (valeurs, adresses, registres ...)
il faut préciser "quoi" (traitement) et "où" (mode d'adressage)

• exemple : transfert d'un mot mémoire (MOVE)


1. Charger le registre R1 avec la valeur 05
MOVE #05, R1 R1 05
2. Charger la case mémoire d'adresse (8000)16 avec le contenu de R2
MOVE R2, $8000 M[8000] (R2)
3. Additionner la valeur 05 au contenu de R1, le résultat est dans R1
ADD #05, R1 R1 (R1) + 05

• instruction : ensemble de µcommandes dépendant du mode d'adressage

45
• les traitements et les modes d'adressages sont liés à la structure matérielle du
processeur (possibilités de l'UAL, nombre et taille des registres, ...)
• microprocesseurs 8 bits : destination généralement incluse dans le mnémonique
(ex : ADDA #05)

• microprocesseurs modernes : nombreux modes d'adressage dont


• adressage registre : le registre adressé est précisé dans l'instruction
ex : mise à zéro du registre R1, CLR1 R1 0

• adressage immédiat : l'opérande est inclus dans l'instruction


ex : addition de la valeur 34 avec R2
ADD #34, R2 R2 (R2) + 34

• adressage direct : l'adresse de l'opérande est inclus dans l'instruction


ex : transfert du contenu de la mémoire à l'adresse (87FF)16 dans R1
MOVE $87FF, R1 R1 (M[87FF])

46
• adressage indirect : le contenu d'un registre ou d'un mot mémoire
représente l'adresse de l'opérande
ex 1 : MOVE R1, *R2 M[R2] (R1)
ex 2 : MOVE *$7AF2, R1 R1 (M[M[7AF2]])

• adressages composés : l'adresse effective de l'opérande est obtenue par un


calcul, généralement de type base + déplacement, où la base est le contenu
d'un registre

3.2.2 Jeu d'instruction de la petite machine


Celui-ci est volontairement réduit dans un but de simplicité, il comprend un total
de 19 instructions (seul le registre A est utilisable pour les calculs)
• 5 instructions de calcul
• ADD : addition du registre A avec un opérande
• SUB : soustraction de A avec un opérande
• AND : et bit à bit de A avec un opérande

47
• OR : ou bit à bit de A avec un opérande
• EOR : ou exclusif bit à bit de A avec un opérande

• 4 instructions de transfert :
• LD : chargement de A avec un opérande
• ST : stockage du contenu de A en mémoire
• PUSHA : empilement du contenu de A
• POPA : dépilement de A

• 5 instructions de rupture de séquence :


• BRA : saut inconditionnel à une adresse donnée
• BSZ : saut si résultat nul
• BSC : saut si retenue
• BSV : saut si dépassement de capacité
• BSN : saut si résultat négatif

48
• 5 instructions de haut niveau :
• CALL : branchement à un sous-programme
• RET : retour d'un sous-programme
• ENTER : gestion des paramètres et des variables locales
• LEAVE : libère les paramètres et les variables locales
• END : termine le programme

• Les instructions ont toutes un opérande au plus noté $n ($ pour hexa)

• Le processeur dispose de 4 modes d'adressage :


• mode implicite : pas d'opérande (ex : END)
• mode immédiat : symbole # devant l'opérande (ex : ADD #$05)
• mode direct : aucun symbole devant l'opérande (ex : ADD $05)
• mode basé indexé : noté [RX + $dd] (ex : ADD [RX + $05])

49
• Les instructions, les opérandes et les adresses : 8 bits
• Les transferts processeur / mémoire : bus de 8 bits
• Remarque : une adresse de 8 bits ne code que 256 mots mémoire !

3.2.3 Structure des instructions :


• codées sur 2 octets :
• le premier contient le code opération ET le mode d'adressage (destiné à RI)
• le second précise, selon le mode d'adressage, une valeur, une adresse
(destinée à TA) ou un index (pour faire RX+...)

adresses

i-2 i-1
une instruction i code op. opérande i+1
i+2 i+3

1 mot mémoire = 1 octet


50
Les instructions sont classées en 4 groupes fonctionnels :
• instructions de calcul selon le mode :
immédiat : ADD #$dd A A + dd
direct : ADD $dd A A + M[dd]
basé-indexé : ADD [RX+$dd] A A + M[(RX)+dd]

• instructions de transfert selon le mode :


immédiat : LD #$dd A dd
direct : LD $dd A M[dd]
basé-indexé : LD [RX+$dd] A M[(RX)+dd]
ST n'a pas de mode immédiat ! ST #$dd

• instructions de branchement (séquencement) selon le mode :


immédiat : BRA #$dd CP dd
direct : BRA $dd CP M[dd]
basé-indexé : BRA [RX+$dd] CP M[(RX)+dd]

• les instructions de haut niveau et la gestion de la pile sont détaillées plus loin

51
3.2.4 Codage des instructions
• Le premier octet d'une instruction peut être divisé en 2 champs :

7 6 5 4 3 2 1 0

champ opération
INST<6:1> champ d'adressage
INST<7+0>

7 6 5 4 3 2 1 0

instruction groupe

52
mode d’adressage

7 6 5 4 3 2 1 0

instruction groupe

Bits 7 et 0 : 00 mode immédiat


01 mode direct
10 mode basé indexé
11 mode implicite

Bits 2 et 1 : 00 instruction de haut niveau


01 instruction de calcul
10 instruction de transfert
11 instruction de rupture de séquence

53
Bits 6 à 3 : 0001 ADD
0010 SUB
0100 AND
1000 OR
0011 EOR
0001 LD
0010 ST
0100 PUSHA
1000 POPA
0001 BRA
0010 BSC
0100 BSZ
1000 BSV
0011 BSN
0001 CALL
0010 RET
0100 ENTER
1000 LEAVE
0011 END

54
Exemple : ADD #$05
• adressage immédiat : bits 7 et 0 : 00
• instruction de calcul : bits 2 et 1 : 01
• addition : bits 6 à 3 : 0001

mode d’adressage

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1

instruction groupe

Codage final : 0A 05

55
Exemple : BRA [RX+$2A]
• adressage basé-indexé : bits 7 et 0 : 10
• instruction de rupture de séquence : bits 2 et 1 : 11
• saut inconditionnel : bits 6 à 3 : 0001

mode d’adressage

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
1 0 0 0 1 1 1 0 0 0 1 0 1 0 1 0

instruction groupe

Codage final : 8E 2A

56
Implicite Immédiat Direct Basé-indexé
ADD -- 0A 0B 8A
SUB -- 12 13 92
AND -- 22 23 A2
OR -- 42 43 C2
EOR -- 1A 1B 9A
LD -- 0C 0D 8C
ST -- -- 15 94
PUSHA A5 -- -- --
POPA C5 -- -- --
BRA -- 0E 0F 8E
BSC -- 16 17 96
BSZ -- 26 27 A6
BSV -- 46 47 C6
BSN -- 1E 1F 9E
CALL -- 08 09 88
RET 91 -- -- --
ENTER -- 20 -- --
LEAVE C1 -- -- --
END 99 -- -- --
57
3.4.1.1 L'unité de traitement
• C'est une UAL associée à plusieurs registres stockant
• les opérandes
• les résultats (intermédiaire, final)
• les indicateurs (flags) regroupés dans un registre d'état

• fonctionnement de cet ensemble :


• signaux de commandes lecture/écriture des registres
• codes opérations de l'UAL

• Plusieurs solutions possible pour réaliser cet unité de traitement


• La petite machine : structure à registre "accumulateur" et bus interne
(architecture proposée par Von Neumann)

58
3.4.2 Structure de la partie contrôle
• La partie contrôle comprend le séquenceur et le registre d'instruction
• RI contient le code de l'instruction en cours d'exécution

PROCESSEUR

Partie contrôle séquenceur RI

unité de gestion
unité de de la mémoire
traitement

59
3.4.2.1 Le séquenceur :
• il active les microcommandes au rythme de l'horloge interne
• il se réfère au cycle de Von Neumann définit dans le chapitre précédent

3.5 Limites de la petite machine


• Elle ne dispose que d'un registre utilisateur : A
• toutes les opérations passent par ce registre
• de nombreuses opérations de transfert supplémentaires nécessaires

• Les opérations de l'UAL sont limitées


• pas de multiplication / division
• pas de gestion des nombres réels
• travail sur des données de 8 bits

60
• Mais la principale limite est le mode indirect qui n'est pas géré :

• Mode immédiat : valeur 3 utilisée par l’instruction


mémoire
ADD #$03 A A + 03
00 ...
variable i (d’adresse 3)
• Mode direct : 01 ...
contenant la valeur 7
02 ...
ADD $03 A A + M[03]
i 03 07
exemple : A A + 07 04 ...
05 ...
Le mode direct permet de gérer des variables 06 ...
variable i (d’adresse 3) contenant 07 2C
j 08 ...
• Mode indirect : l’adresse de la variable j (d’adresse 7)
contenant la valeur 2C 09 ...
ADD *$03 A A + M[M[03]] 0A ...
exemple : A A + M[07] : A A + 2C

La variable se trouvant à l'adresse 03 contient une adresse :


cette variable est un pointeur
61
• Utilité du mode indirect :
• permet d'effectuer des calculs sur des adresses mémoire, c'est à dire des
pointeurs

• grâce au mode indirect il devient possible de gérer des tableaux, des listes
chaînées …

exemple : additionner les nombres d'un tableau de 10 entiers situés


entre les adresses $81 et $8A (le résultat est stocké à l'adresse $8B)

somme = 0 00 LD #$00 12 LD *$78


pour i de 1 à 10 faire 02 ST $8B 14 ADD $8B
somme = somme + tab[i] 04 LD #$0A 16 ST $8B
fin pour 06 ST $79 18 LD $79
08 ADD #$00 1A SUB #$01
0A BSZ #$20 1C ST $79
3 variables :
0C LD #$80 1E BRA #$0A
$8B = somme
0E ADD $79 20 END
$79 = compteur (i)
10 ST $78
$78 = adresse de l'élément de tab
62
4 Évolution des microprocesseurs
4.1 Introduction

• Dans ce chapitre l'évolution des microprocesseurs va être examinée au travers de


l'évolution de leur fabrication, de leur différents composants interne et de leur
organisation

• Plusieurs exemples seront donnés en prenant comme référence les


microprocesseurs les plus répandus dans le domaine des compatibles PC

63
4.2 Intégration des transistors
• Loi de Moore : loi empirique énoncée par Gordon Moore (co-fondateur d'Intel) en
1965 qui prédit que le nombre de transistors intégrés sur une surface donnée double
tous les 18 mois.

Millions de transistors
700
Core 2 quadro
600

500
Pentium D
400

300
Pentium 4 EE Core 2 duo
200
Pentium 4 .18
100 Athlon64 X2
Pentium III Athlon64
Pentium II
Pentium 4 .13
0
1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007

64
• Le niveau d'intégration est dépendant de la taille de gravure du silicium
Pentium II, K6-II, K6-III, Athlon (Pluto) 0,25µm
Pentium III, Pentium 4 (Willamette), Athlon (Orion), MIII 0,18µm
P4 (Northwood), Athlon, Athlon64 (Newcastle, Clawhammer) 0,13µm
P4 (Prescott, Smithfield), Athlon64 (Winchester, San Diego) 0,09µm = 90nm
P4 (Cedar Mill, Presler), Core 2 duo (Conroe) et quadro (Kentsfield) 65nm
 2007 45nm
 2009 32nm
 2011 22nm

• Pourquoi graver plus finement ?


• Diminuer la chaleur dissipée
• Augmenter la fréquence de fonctionnement

• Mais la finesse de gravure est limitée par la technologie actuelle (type de laser),
aussi la loi de Moore risque un jour de ne plus être valable ...

65
4.3 Registres internes
4.3.1 Taille des registres
• Elle correspond à la taille des mots traités par le microprocesseur
• La taille de mots standards traités définit le type de processeur
du 8086 au 80286 : microprocesseurs 16 bits
du 80386DX au Pentium 4, Athlon XP : microprocesseurs 32 bits
Athlon64, P4 EM64T, Core 2 duo et quadro : µp 64 bits

• Pour des calculs précis en flottants 32 bits est un minimum


Microprocesseur taille d’un mot Entiers Préc. Réels
8086 au 80286 16 -32 768 à 32 767 1,5.10-5
80386DX au P4, Athlon 32 -2 147 483 648 à 2,3.10-10
Athlon64, P4 EM64T, Core 2 64 -9,223.1019 à 5,4.10-20

66
• Les processeurs n'ayant pas ces caractéristiques utilisaient des co-processeurs
arithmétiques 40bits : 8087, 80187, 80287, 80387, 80487
• Les processeurs actuels incluent des registres de taille supérieure à la taille des
mots standard traitées (MMX, 3Dnow!, SSE, SSE2, SSE3, SSE4)

4.3.2 Nombre de registres


• Le nombre de registres internes influence fortement les performances d'un
microprocesseur car il réduit le nombre d'accès mémoire nécessaires au stockage des
résultats intermédiaires lors de calculs complexes
• De plus les registres sont beaucoup plus rapides que les mémoires externes
• Les registres utilisable par le programmeur sont les :
• GPR (General Purpose Registers) – utilisation libre
• FPR (Floating Point Registers) – calcul en flottant instructions x87
• registres SIMD – pour les instructions MMX, 3Dnow!, SSE, …

67
• 8086 au 80486SX : 8 GPRs 16bits + 8 FPRs 80bits si co-processeur x87
• 80386DX au Pentium MMX : 8 GPRs 32bits + 8 FPRs 80bits
• Pentium II au P4HT et Athlon XP : idem + 8 registres SSE 128bits
• Athlon64, P4 EM64T et Core 2 :

• instructions x87 (donc registres FPUs) appelées à disparaître


• gain de performance associé à un OS 64bits + programmation 64bits
68
4.4 Bus
4.4.1 Bus d'adresses
• L'augmentation de la largeur du bus d'adresse découle de la nécessité de traiter de
plus en plus d'information et donc de disposer de plus en plus de mémoire :
Microprocesseurs Largeur Espace d'adr. Mémoire adr.
80386, 80486, Pentium, Athlon 32bits 4Gmots 4Go
Pentium pro, PII, PIII, P4 36bits 68Gmots 64Go
Itanium 44bits 17Tmots 16To
Athlon64, P4 EM64T, Core 2 64bits 18.106Tmots 256To , 1To

69
4.4.2 Bus de données (ou bus frontal – FSB : Front Side Bus)

• Permet de véhiculer les données, sa taille est égale ou supérieure à la taille des
mots standard du µp selon les composants reliés

• Fréquence de fonctionnement :

• pendant longtemps = fréquence carte mère

• augmentation avec les mémoires et périphériques de + en + rapides

• 1999 : Athlon – bus EBV6 = DDR (Double Data Rate)


fréquence CM inchangée mais fréquence FSB doublée

• 2000 : P4 – Netburst = QDR (Quad Data Rate)


fréquence CM inchangée mais fréquence FSB quadruplée

• 2003 : Athlon64 – Hypertransport : 2 communications uni-directionnelles


point à point à largeur variable + contrôleur mémoire dans le µp

70
bus Fréquences de
Processeur Année
de données fonctionnement
Intel 8086 1978 4,77 puis 10 MHz
16 bits
Intel 286 1981 6, 12 et jusque 20 MHz

Intel 386DX 1985 16, 33 et jusque 40 Mhz


32 bits
Intel 486 1989 16 à 50 MHz

Intel Pentium 1992 50 - 60 - 66 MHz

Intel Pentium II 1997 66 – 100 - 133 Mhz

AMD K6 1997 66 - 95 - 100 MHz


64 bits
AMD Athlon 1999 2 x (100 - 133 – 166) MHz

Pentium 4, Core 2 2000 4 x (100 - 133 – 200 – 266) MHz

AMD Athlon 64 2003 4 x 200 Mhz


71
4.5 Vitesse de l’horloge
• Le travail du microprocesseur est cadencé par le rythme de l’horloge de la carte
mère auquel est appliqué un multiplicateur

• La fréquence ne donne qu’une idée très approximative de la vitesse de travail du


µprocesseur à cause du nombre de µcycles/instr :
Une instruction nécessitant 10 µcycles d’horloge (cycle élémentaire durant
lequel une µinstruction est exécutée) avec un processeur cadencé à 2Ghz
durera 10 x 0,5ns = 5ns

• Unités de mesure un peu plus fiable :


• MIPS, obtenu à partir du nombre de cycles moyen des instructions et de la
fréquence, mais il n’est pas comparable entre µp à jeu d’instructions complexes
et réduits.
• MFLOPS, GFLOPS (millions ou milliards d’opérations sur des réels effectuées
par seconde) mais le nombre de cycles d’attente pour accéder à la mémoire entre
aussi en compte …

72
µprocesseur Multiplicateur Fréquence en Mhz
Pentium 1à4 60-233 Mhz
K6 2,5 à 5,5 166-550 Mhz
Pentium II 3,5 à 5 233-450 Mhz
Pentium III 4 à 11 450-1400 Mhz
Athlon 5 à 11 500-1800 Mhz
Pentium 4 13 à 26 1,3-3,8 GHz
Athlon64 10 à 13 2-2,6 GHz
Pentium M 10 à 16 1,5-2,13 GHz
Core 2 6 à 11 1,6-2,93GHz

73
4.6 Mémoires caches
• Permettent d’atténuer les cycles d’attentes dus aux accès mémoire
• Différents niveaux de cache :
• niveau 1 (L1) : toujours interne au µp (même fréquence)
• niveaux 2 et 3 (L2, L3) : interne ou externe au µp (fréquence moindre)

4.6.1 Un seul niveau de cache


• Une requête de lecture du µp entraîne 2 possibilités :
1) La donnée est dans le cache : 2) La donnée n’est pas dans le cache :
succès (cache success) échec (cache miss)
cache libre cache plein

74
• Lignes de cache entières manipulées :
P4 : L1 64octets et L2 128octets par ligne
Athlon 64 : L1 et L2 64 octets par ligne

• Pb : si les variables utilisées de manière répétitive ne tiennent pas dans le cache


celui-ci ne sert à rien.
• Idée 1 : augmenter le cache de niveau 1 (cher)
• Idée 2 : inclure un deuxième niveau de cache utilisant une mémoire un peu moins
rapide (donc moins cher) pour stocker temporairement les lignes effacées du cache
de niveau 1 par l’algo LRU.

• différentes possibilités suite à une requête de lecture du µp :


• donnée dans L1 : L1 success
• donnée pas dans L1 mais dans L2 : L1 miss, L2 success
• donnée pas dans L1 ni L2 : L1 et L2 miss

• 2 modes de fonctionnement : inclusif et exclusif

75
4.6.2 Deux niveaux de cache exclusifs
• Tant que L1 n’est pas plein : fonctionnement du cache unique

• Quand L1 est plein, L2 entre en action :


l’algo LRU (Last Recently Used) sélectionne
une ligne de L1 qui est copiée dans L2 afin
de libérer de la place pour la nouvelle donnée

• Quand L2 est plein, une de ses lignes


choisie par l’algo LRU est effacée
(sauf s’il y a un niveau 3 – L3)

76
• L1 miss, L2 success : la ligne correspondante est déplacée dans L1 pour pouvoir
être accessible rapidement par la suite (une ligne de L1 est donc déplacée dans L2
auparavant)

• Dans tous les cas les lignes de données de L1 et


L2 sont différentes : caches exclusifs
• Taille totale de cache utile :
capacité de L1 + capacité de L2
• Pas de dépendance entre les tailles des caches
(on peut avoir L1 > L2)
• Performances moyennes de L2 car copie de L1
vers L2 avant copie de L2 vers L1
• difficile de gérer efficacement des niveaux de
cache supplémentaires (multiples copie entre les
niveaux)

77
4.6.3 Deux niveaux de cache inclusifs

• Tant que L1 n’est pas plein : si la donnée n’est pas


dans L1 alors lecture de la donnée en RAM et copie
dans L1 ET L2

• Quand L1 est plein, copie également dans L1 et


L2 (une ligne de L1 est effaçée par LRU)

• Quand L2 est plein également, copie dans L1 et


L2 (une ligne de L1 et de L2 sont effaçées par
LRU)

78
• L1 miss, L2 success : la ligne correspondante est
copiée de L2 dans L1
• Choix de la ligne de L1 par LRU, mais non perdue
car dans L2

• Dans tous les cas L1  L2 : caches inclusifs

• Permet d’économiser une écriture de L1 vers L2 en cas de L1 miss, L2 success


par rapport aux caches exclusifs :
• L2 plus performant
• niveau de cache supplémentaires faciles à incorporer

• L2 > L1 impérativement et L2 >> L1 pour de bonnes performances

• Taille de cache utile : L1 + (L2 – L1) = L2 seulement (car L1  L2 )

79
Caches exclusifs Caches inclusifs

+ pas de contrainte sur L2 + performance L2


+ taille utile = L1 + L2 + niveaux de cache supplémentaires
- performance L2 - contrainte sur L2 (L2 >> L1)
- niveaux de cache supplémentaires - taille utile = L2

AMD : Athlon, Athlon64 INTEL : Pentium 4, Core 2


grand L1, L2 moyen petit L1, grand L2 ou L2 moy + L3

µp L1 inst+données L2 Fréq. L2 L3
Pentium II 16ko + 16ko 512ko FSB /
Pentium III 16ko + 16ko 256/512ko ½ µp /
Pentium 4 12kµop + 8ko 128 à 2048ko µp 2048ko (P4EE)
Xeon 12kµop + 8ko 256 à 512ko µp 1024 à 6144ko
Athlon 64ko + 64ko 256 à 512ko µp /
Athlon64 64ko + 64ko 512 à 1024ko µp /
Core 2 32ko + 32ko 4096ko µp /
80
4.7 Pipeline
• L’idée du pipeline est de découper une opération en opérations élémentaires
appelées étages, de façon à pouvoir traiter plusieurs opérations simultanément

• pipeline = principe de la chaîne de montage : la cadence de traitement des


instructions est imposée par l’étage le plus lent

• Exemple : pipeline à 3 étages

chargement décodage exécution


instant t
instruction 1

chargement décodage exécution


instant t+1
instruction 2 instruction 1

chargement décodage exécution


instant t+2
instruction 3 instruction 2 instruction 1

81
• Plus le nombre d’étage est grand, plus le débit des instructions est important (idée
de base de l’architecture Netburst du Pentium 4) et plus la fréquence de
fonctionnement peut être élevée

• Tant que les instructions se suivent, pas de problème, mais si un branchement


(saut) est effectué dans le programme alors il faut vider le pipeline et recommencer
d’où utilisation de méthodes de prédiction de branchement

µprocesseur Étages du pipeline


Pentium III 10
Pentium 4 20 puis 31 (prescott)
Pentium M 12
Athlon 11
Athlon 64 6 + (4 (entiers) / 9 (réels))
Core 2 14
82
4.8 Parallélisme
• Multiplier le nombre d’unités fonctionnelles pour effectuer plusieurs traitements
simultanément

Pentium 4 Athlon64 Pentium M Core 2


Lecture instr. 4 4 4 5
Décodage instr. 3 3 3 4
ALU 2 doubles
(calcul entier)
3 2 3
1 simple
FPU
(calcul réel)
1+1 (différentes) 2+1 (diff.) 2 2+1 (diff.)
SIMD
(entier + réel)
1 2 2 3

• µp multi-cores = plusieurs µp dans une puce


2005 : 2 cores (Athlon64 X2, Pentium D)
2006 : 2 et 4 cores (Core 2 duo, Core 2 Quadro)
+ prototype Intel 80 cores de calcul
2007 : 4 cores (AMD)

83
4.9 Complexité des processeurs actuels
4.9.1 AMD Athlon64

84
4.9.2 Intel Pentium 4

85
4.10 Benchs de quelques µp grand public à l'aide de Spec-2000
4000
3800
3500

3000 2930
2800
2500
2200 2260
2000
INT
1500 FP
1400
Mhz
1000

500

0
Pentium III Athlon XP Pentium M Pentium 4 Athlon64 Core 2
86
4.11 Benchs de quelques µp station de travail à l'aide de Spec-2000
4000
3800
3500

3000 2930
2800
2500
2300
2160 INT
2000
FP
1600 Mhz
1500
1300
1000

500

0
Alpha Pentium 4 Athlon64 Core 2 Intel Sun IBM
21364 Itanium 2 SPARC64 POWER5
V 87

Vous aimerez peut-être aussi