Vous êtes sur la page 1sur 183

Architecture des ordinateurs

(INF155)

F. Pellegrini
Universit de Bordeaux

Ce document est copiable et distribuable librement et gratuitement la condition expresse que son contenu ne soit modifi en
aucune faon, et en particulier que le nom de son auteur et de son institution d'origine continuent y figurer, de mme que le
prsent texte.

2014,2016 F. Pellegrini

Ordinateur et logiciel
Les technologies numriques sont maintenant
omniprsentes
Elles sont le moteur et l'objet de ce qu'on appelle
la rvolution numrique

Elles sont bases sur l'interaction entre :


Des programmes, aussi appels logiciels,
dcrivant des processus de traitement de
l'information : biens immatriels
Des ordinateurs, capables d'excuter ces
programmes : biens matriels
2014,2016 F. Pellegrini

Reprsentation de l'information
L'information est reprsente au sein des
composants de l'ordinateur sous forme de
diffrents tats de la matire :
Trou ou pas trou sur la surface d'un
cdrom ou DVD
Orientation nord ou sud d'un matriau magntique
Lumire ou absence de lumire mise par un laser
Courant lectrique ou non

Ce sont souvent des reprsentations deux


tats, c'est--dire binaires
2014,2016 F. Pellegrini

Constituants lmentaires (1)


Presque tous les ordinateurs sont construits
base de circuits lectroniques
Les circuits lectroniques sont raliss au
moyen de transistors
Composant lmentaire, dont le courant de sortie
dpend de deux valeurs d'entre
Un transistor a donc trois pattes
Appeles : base, metteur et collecteur

Analogue un robinet lectricit : plus il


arrive de courant sur la base, plus le courant
circule de l' metteur vers le collecteur
2014,2016 F. Pellegrini

Constituants lmentaires (2)


Dans les ordinateurs, on utilise les transistors
en mode satur, c'est--dire tout ou rien
Fonctionnement analogue celui d'un interrupteur
Robinet ferm ou ouvert en grand
Soit le courant passe, soit il ne passe pas du tout

Reprsentation des valeurs binaires 0 et 1

En combinant plusieurs transistors, on peut


effectuer des calculs complexes
Sur la base de montages en srie ou en parallle

Regroupement
au
sein
de

circuits
intgrs

2014,2016 F. Pellegrini

Performance (1)
Les calculs des ordinateurs sont cadencs par
une horloge
Plus la frquence de l'horloge est leve, et plus
l'ordinateur pourra effectuer d'oprations par
seconde (s'il n'est pas ralenti par autre chose...)
On mesure la frquence d'une horloge en Hertz (Hz)
Nombre de battements par seconde
1 kHz (kilo-Hertz) = 103 Hz
1 MHz (mga-Hertz) = 106 Hz
1 GHz (giga-Hertz) = 109 Hz
1 THz (tra-Hertz) = 1012 Hz
2014,2016 F. Pellegrini

Performance (2)
En fait, ce qui importe aux usagers, c'est le
nombre d'oprations (plus gnralement,
d'instructions ) qu'un ordinateur est capable
d'effectuer par seconde
On la mesure en MIPS, pour millions
d'instructions par seconde

On pense souvent que la puissance d'un


ordinateur dpend de sa frquence de
fonctionnement
C'est loin d'tre toujours vrai !

http://en.wikipedia.org/wiki/Instructions_per_second

2014,2016 F. Pellegrini

volutions architecturales (1)


1946 : Ordinateur ENIAC
Architecture base de lampes et tubes vide : 30
tonnes, 170 m2 au sol, 5000 additions par seconde
0,005 MIPS, dirons-nous...

1947 : Invention du transistor


1958 : Invention du circuit intgr sur silicium
Multiples transistors agencs sur le mme substrat

2014,2016 F. Pellegrini

volutions architecturales (2)


1971 : Processeur Intel 4004
2300 transistors dans un unique circuit intgr
Frquence de 740 kHz, 0,092 MIPS

40 ans d'une histoire trs riche...


2011 : Processeur Intel Core i7 2600K
Plus de 1,4 milliards de transistors
Frquence de 3,4 GHz
4 curs, 8 threads
128300 MIPS
2014,2016 F. Pellegrini

http://en.wikipedia.org/wiki/Sandy_Bridge
9

volutions architecturales (3)


Entre le 4004 et le Core i7 2600K :
La frquence a t multiplie par 4600
La puissance en MIPS a t multiplie par 1,4 million

La puissance d'un ordinateur ne dpend


clairement pas que de sa frquence !
Intrt d'tudier l'architecture des ordinateurs
pour comprendre :
O les gains se sont oprs
Ce qu'on peut attendre dans le futur proche
2014,2016 F. Pellegrini

10

Barrire de la chaleur (1)


Plus on a de transistors par unit de surface,
plus on a d'nergie vacuer
La dissipation thermique volue de faon
proportionnelle V2*F
La tension de fonctionnement des circuits a t
abaisse
De 5V pour les premires gnrations 0,9V maintenant

Il n'est plus vraiment possible de la diminuer avec


les technologies actuelles
Le bruit thermique causerait trop d'erreurs
2014,2016 F. Pellegrini

11

Barrire de la chaleur (2)


La frquence ne peut raisonnablement
augmenter au del des 5 GHz
Barrire de la chaleur

La tendance est plutt la rduction


Green computing
On s'intresse maintenant maximiser le nombre
d'oprations par Watt
Mais on veut toujours plus de puissance de calcul !

2014,2016 F. Pellegrini

12

Barrire de la complexit (1)


surface constante, le nombre de transistors
double tous les 2 ans
Loi de Moore , du nom de Gordon Moore, cofondateur d'Intel, nonce en 1965
Diminution continuelle de la taille de gravage des
transistors et circuits sur les puces de silicium
On grave actuellement avec un pas de 14 nm

Limites atomiques bientt atteintes...


Donc plus possible d'intgrer plus
Mais on veut toujours plus de puissance de calcul !
2014,2016 F. Pellegrini

13

Barrire de la complexit (2)


Que faire de tous ces transistors ?
On ne voit plus trop comment utiliser ces transistors
pour amliorer individuellement les processeurs
Des processeurs trop complexes consomment trop
d'nergie sans aller beaucoup plus vite

Seule solution actuellement : faire plus de


processeurs sur la mme puce !
Processeurs bi-curs, quadri-coeurs, octo-curs,
dj jusqu' 128 curs !
Mais comment les programmer efficacement ?!
2014,2016 F. Pellegrini

14

Barrire de la complexit (3)


L'architecture des ordinateurs a t l'un des
secteurs de l'informatique qui a fait le plus de
progrs
Les ordinateurs d'aujourd'hui sont trs
complexes
Plus d'un milliard de transistors dans un processeur

Ncessit d'tudier leur fonctionnement


diffrents niveaux d'abstraction
Du composant au module, du module au systme
Multiples niveaux de hirarchie

2014,2016 F. Pellegrini

15

Structure d'un ordinateur (1)


Un ordinateur est une machine programmable
de traitement de l'information
Pour accomplir sa fonction, il doit pouvoir :
Acqurir de l'information de l'extrieur
Stocker en son sein ces informations
Combiner entre elles les informations sa
disposition
Restituer ces informations l'extrieur

2014,2016 F. Pellegrini

16

Structure d'un ordinateur (2)


L'ordinateur doit donc possder :
Une ou plusieurs units de stockage, pour
mmoriser le programme en cours d'excution
ainsi que les donnes qu'il manipule
Une unit de traitement permettant l'excution
des instructions du programme et des calculs sur
les donnes qu'elles spcifient
Diffrents dispositifs priphriques servant
interagir avec l'extrieur : clavier, cran, souris,
carte graphique, carte rseau, etc.
2014,2016 F. Pellegrini

17

Structure d'un ordinateur (3)


Les constituants de l'ordinateur sont relis
par un ou plusieurs bus, ensembles de fils
parallles servant la transmission des
adresses, des donnes, et des signaux de
Mmoire
contrle
graphique
Unit de
traitement
(processeur)

Mmoire
centrale

Contrleur
de disque
dur IDE/ATA

2014,2016 F. Pellegrini

Contrleur
de bus
PCI

Contrleur
de bus
AGP

Bus AGP

Contrleur
graphique

Bus local

Carte
d'extension

Carte
d'extension

Bus PCI
18

Unit de traitement (1)


L'unit de traitement (ou CPU, pour Central
Processing Unit ), aussi appele
processeur , est le cur de l'ordinateur
Elle excute les programmes chargs en
mmoire centrale en extrayant l'une aprs
l'autre leurs instructions, en les analysant, et
en les excutant

2014,2016 F. Pellegrini

19

Unit de traitement (2)


L'unit de traitement est compos de plusieurs
sous-ensembles distincts
L'unit de contrle, qui est responsable de la
recherche des instructions partir de la mmoire
centrale et du dcodage de leur type
L'unit arithmtique et logique (UAL), qui effectue
les oprations spcifies par les instructions
Un ensemble de registres, zones mmoires rapides
servant au stockage temporaire des donnes en
cours de traitement par l'unit centrale
2014,2016 F. Pellegrini

20

Registres
Chaque registre peut stocker une valeur
entire distincte, borne par la taille des
registres (nombre de bits)
Certains registres sont spcialiss, comme :
le compteur ordinal ( program counter ) qui
stocke l'adresse de la prochaine instruction
excuter
le registre d'instruction ( instruction register ),
qui stocke l'instruction en cours d'excution
l'accumulateur, registre rsultat de l'UAL, etc.
2014,2016 F. Pellegrini

21

Chemin de donnes (1)


Le chemin de donnes reprsente la structure
interne de l'unit de traitement
Comprend les registres, l'UAL, et un ensemble de
bus internes ddis
L'UAL peut possder ses propres registres destins
mmoriser les donnes d'entres afin de
stabiliser leurs signaux pendant que l'UAL calcule

Le chemin des donnes conditionne fortement


la puissance des machines
Pipe-line, superscalarit,
2014,2016 F. Pellegrini

22

Chemin de donnes (2)


Chemin de donnes d'une machine de type
Von Neumann
A+B

Registres gnraux

A
B

Registres
d'entre de l'UAL

UAL

A+B

2014,2016 F. Pellegrini

Registre de sortie
de l'UAL
23

Excution d'une instruction (1)


L'excution d'une instruction par l'unit
centrale s'effectue selon les tapes suivantes :
1

Charger la prochaine instruction excuter depuis


la mmoire vers le registre d'instruction

Dcoder (analyser) l'instruction venant d'tre lue

Faire pointer le compteur ordinal vers l'instruction


suivante (y compris dans le cas de branchements)

Localiser en mmoire les donnes ncessaires

Charger si ncessaire les donnes dans l'UAL

Excuter l'instruction, puis recommencer

2014,2016 F. Pellegrini

24

Architecture des ordinateurs


Les ordinateurs modernes sont conus
comme un ensemble de couches
Chaque couche reprsente une abstraction
diffrente, capable d'effectuer des oprations
et de manipuler des objets spcifiques
L'ensemble des types de donnes, des
oprations, et des fonctionnalits de chaque
couche est appele son architecture
L'tude de la conception de ces parties est
appele architecture des ordinateurs

2014,2016 F. Pellegrini

25

Machines multi-couches actuelles


5
4
3
2
1
0
2014,2016 F. Pellegrini

Langages d'application
Traduction (compilateur)
Langage d'assemblage
Traduction (assembleur)
Systme d'exploitation
Interprtation partielle (SE)
Jeu d'instructions
Interprtation ou excution
Microarchitecture
Matriel
Logique numrique
26

Couche logique numrique


Les objets considrs ce niveau sont les
portes logiques, chacune construite partir de
quelques transistors
Chaque porte prend en entre des signaux
numriques (0 ou 1) et calcule en sortie une
fonction logique simple (ET, OU, NON)
De petits assemblages de portes peuvent
servir raliser des fonctions logiques telles
que mmoire, additionneur, ainsi que la logique
de contrle de l'ordinateur
2014,2016 F. Pellegrini

27

Couche microarchitecture
On dispose ce niveau de plusieurs registres
mmoire et d'un circuit appel UAL (Unit
Arithmtique et Logique, ALU) capable de
raliser des oprations arithmtiques
lmentaires
Les registres sont relis l'UAL par un chemin
de donnes permettant d'effectuer des
oprations arithmtiques entre registres
Le contrle du chemin de donnes est soit
microprogramm, soit matriel
2014,2016 F. Pellegrini

28

Couche jeu d'instruction


La couche de l'architecture du jeu
d'instructions (Instruction Set Architecture,
ISA) est dfinie par le jeu des instructions
disponibles sur la machine
Ces instructions peuvent tre excutes par
microprogramme ou bien directement

2014,2016 F. Pellegrini

29

Couche systme d'exploitation


Cette couche permet de bnficier des
services offerts par le systme d'exploitation
Organisation mmoire, excution concurrente

La plupart des instructions disponibles ce


niveau sont directement traites par les
couches infrieures
Les instructions spcifiques au systme font
l'objet d'une interprtation partielle (appels
systme)
2014,2016 F. Pellegrini

30

Couche langage d'assemblage


Offre une forme symbolique aux langages
des couches infrieures
Permet des humains d'interagir avec les
couches infrieures

2014,2016 F. Pellegrini

31

Couche langages d'application


Met la disposition des programmeurs
d'applications un ensemble de langages
adapts leurs besoins
Langages dits de haut niveau

2014,2016 F. Pellegrini

32

Comment aborder tout cela ?


Approches courante : de bas en haut pour
les besoins, puis de haut en bas pour les
solutions
Travaux pratiques difficiles au dbut...

Par deux fronts la fois :


partir de la couche ISA
Programmation en langage machine : y86

partir des transistors et portes logiques


Construction de circuits sur papier
2014,2016 F. Pellegrini

33

Circuits logiques
Un circuit logique est un circuit qui ne
manipule que deux valeurs logiques : 0 et 1
l'intrieur des circuits, on reprsente
typiquement un tat 0 par un signal de basse
tension (proche de 0V) et un tat 1 par un
signal de haute tension (5V, 3,3V, 2,5V, 1,8V
ou 0,9V selon les technologies)
De minuscules dispositifs lectroniques,
appeles portes , peuvent calculer
diffrentes fonctions partir de ces signaux
2014,2016 F. Pellegrini

34

Transistors (1)
L'lectronique numrique repose sur le fait
qu'un transistor peut servir de commutateur
logique extrmement rapide
Deux technologies majeures :
Bipolaire : temps de commutation trs rapide
mais consommation leve
Registres, SRAM, circuits spcialiss

CMOS : temps de commutation moins rapide


mais consommation beaucoup moins leve
90 % des circuits sont raliss en CMOS
35

Transistors (2)
Avec un transistor bipolaire ou deux
transistors CMOS, on peut crer un premier
circuit combinatoire :
Grille

+Vcc
Source

+Vcc

Drain

Collecteur
VS

VA

VS

VA
Base
2014,2016 F. Pellegrini

Drain
metteur

Bipolaire

Source

Grille

CMOS

36

Transistors (3)
Quand VA est bas, VS est haut
+Vcc
+Vcc
VS

VA

VS

VA

2014,2016 F. Pellegrini

37

Transistors (4)
Quand VA est bas, VS est haut
Quand VA est haut, VS est bas
Ce circuit est un inverseur

+Vcc

+Vcc
VS

VA

VS

VA

2014,2016 F. Pellegrini

38

Transistors (5)
En combinant quatre
transistors CMOS, on
peut obtenir un circuit
tel que VS n'est dans
l'tat bas que quand
VA et VB sont tous les
deux dans l'tat haut

+Vcc

VA

VB

VS
VA
VB

2014,2016 F. Pellegrini

39

Transistors (6)
+Vcc

En combinant quatre
transistors CMOS, on
peut obtenir un circuit
tel que VS est dans
l'tat bas si VA ou VB,

VA
VB
VS

ou bien les deux, sont


dans l'tat haut
VA

2014,2016 F. Pellegrini

VB

40

Portes logiques (1)


En identifiant l'tat haut la valeur 1 et l'tat
bas la valeur 0, on peut exprimer la valeur
de sortie de ces trois circuits partir des
valeurs de leurs entres
A

A
0
1

S
1
0

NON
2014,2016 F. Pellegrini

A
B

A
0
0
1
1

B
0
1
0
1

NAND

S
1
1
1
0

A
B

A
0
0
1
1

B
0
1
0
1

S
1
0
0
0

NOR
41

Portes logiques (2)


Quelle que soit la technologie, les portes NAND
et NOR ncessitent moins de transistors que les
portes AND et OR, qui ncessitent un inverseur
en plus
Les circuits des ordinateurs sont donc plutt
construits avec des portes NAND et NOR
Ces portes ont parfois plus de deux entres, mais en
ont rarement plus de 8 (problme de fan-in/out )
Les portes NAND et NOR sont dites compltes ,
car tout circuit peut tre implant uniquement au
moyen de l'un de ces types de portes
2014,2016 F. Pellegrini
42

Algbre boolenne
Pour dcrire les circuits ralisables en
combinant des portes logiques, on a besoin
d'une algbre oprant sur les variables 0 et 1
Algbre boolenne
G. Boole : 1815 1864
Algbre binaire tudie par Leibniz ds 1703

2014,2016 F. Pellegrini

43

Fonctions boolennes (1)


Une fonction boolenne une ou plusieurs
variables est une fonction qui renvoie une
valeur ne dpendant que de ces variables
La fonction NON est ainsi dfinie comme :
f(A) = 1 si A = 0
f(A) = 0 si A = 1

2014,2016 F. Pellegrini

44

Fonctions boolennes (2)


Une fonction boolenne n variables a
seulement 2n combinaisons d'entres possibles
Elle peut tre compltement dcrite par une
table 2n lignes donnant la valeur de la fonction
pour chaque combinaison d'entres
Table de vrit de la fonction

Elle peut aussi tre dcrite par le nombre 2n


bits correspondant la lecture verticale de la
colonne de sortie de la table
NAND : 1110, NOR : 1000, AND : 0001, etc.

2014,2016 F. Pellegrini

45

Fonctions boolennes (3)


Toute fonction peut tre dcrite en spcifiant
lesquelles des combinaisons d'entre
donnent 1
On peut donc reprsenter une fonction
logique comme le ou logique (OR) d'un
ensemble de conditions et (AND) sur les
combinaisons d'entre

2014,2016 F. Pellegrini

46

Fonctions boolennes (4)


En notant :
A le NOT de A
A + B le OR de A et B
A.B ou AB le AND de A et B

on peut reprsenter une fonction comme


somme logique de produits logiques
Par exemple :
ABC vaut 1 seulement si A = 1 et B = 0 et C = 1
AB + BC vaut 1 si et seulement si (A = 1 et B = 0)
ou bien (B = 1 et C = 0)
2014,2016 F. Pellegrini

47

Fonctions boolennes (5)


Exemple : la fonction majorit M
A B C

A
0
0
0
0
1
1
1
1

B
0
0
1
1
0
0
1
1

C
0
1
0
1
0
1
0
1

2014,2016 F. Pellegrini

M
0
0
0
1
0
1
1
1

A B C

48

Fonctions boolennes (6)


Toute fonction logique de n variables peut donc
tre dcrite sous la forme d'une somme logique
d'au plus 2n produits de termes
Par exemple : M = ABC + ABC + ABC + ABC

Cette formulation fournit une mthode directe


pour implanter n'importe quelle fonction
boolenne

2014,2016 F. Pellegrini

49

Simplification de l'implantation (1)


Deux fonctions sont quivalentes si et
seulement si leurs tables de vrit sont
identiques
Il est intressant d'implanter une fonction
avec le moins de portes possible
conomie de place sur le processeur
Rduction de la consommation lectrique
Rduction du temps de parcours du signal

L'algbre boolenne peut tre un outil efficace


pour simplifier les fonctions
2014,2016 F. Pellegrini

50

Simplification de l'implantation (2)


La plupart des rgles de l'algbre ordinaire
restent valides pour l'algbre boolenne
Exemple : AB + AC = A (B + C)
On passe de trois portes deux
Le nombre de niveaux de portes reste le mme

2014,2016 F. Pellegrini

51

Simplification de l'implantation (3)


Pour rduire la complexit des fonctions
boolennes, on essaye d'appliquer des
identits simplificatrices la fonction initiale
Besoin d'identits remarquables pour
l'algbre boolenne

2014,2016 F. Pellegrini

52

Identits boolennes (1)


Nom

Forme AND

Forme OR

Identit

1A = A

0+A=A

Nul

0A = 0

1+A=1

Idempotence

AA = A

A+A=A

Inverse

AA = 0

A+A=1

AB = BA

A+B=B+A

Associativit

(AB)C = A(BC)

(A + B) + C = A + (B + C)

Distributivit

A + BC = (A + B)(A + C)

A(B + C) = AB + AC

Absorbtion

A(A + B) = A

A + AB = A

De Morgan

AB = A + B

A+B=AB

Commutativit

2014,2016 F. Pellegrini

53

Identits boolennes (2)


Chaque loi a deux formes, qui sont duales si
on change les rles respectifs de AND et
OR et de 0 et 1
La loi de De Morgan peut tre tendue plus
de deux termes
ABC = A + B + C
Notation alternative des portes logiques :
Une porte OR avec ses deux entres inverses est
quivalente une porte NAND
Une porte NOR peut tre dessine comme une porte
AND avec ses deux entres inverses
2014,2016 F. Pellegrini

54

Porte XOR (1)


Grce aux identits, il est facile de convertir
la reprsentation en somme de produits en
une forme purement NAND ou NOR
Exemple : la fonction ou exclusif ou XOR
XOR = AB + AB
A
B

2014,2016 F. Pellegrini

A
0
0
1
1

B
0
1
0
1

XOR

X
0
1
1
0
55

Porte XOR (2)


A
B

A XOR B

A
B
A
B

A XOR B

A
B
A
B
A
B
2014,2016 F. Pellegrini

A XOR B

56

Fonctions logiques lmentaires


Pour raliser des circuits logiques complexes,
on ne part pas des portes logiques ellesmmes mais de sous-ensembles fonctionnels
tels que :
Fonctions combinatoires et arithmtiques
Horloges

L'implantation elle-mme peut se faire


diffrents niveaux d'intgration
PLD, SRAM, ASICs, FPGAs, ...
2014,2016 F. Pellegrini

57

Fonctions combinatoires
Une fonction combinatoire est une fonction
possdant des entres et des sorties multiples,
telles que les valeurs des sorties ne dpendent
que des valeurs d'entre
Cette classe comprend les fonctions telles que :
Dcodeurs
Multiplexeurs
Comparateurs
...
2014,2016 F. Pellegrini

58

Dcodeur (1)
Un dcodeur est une fonction qui prend un
nombre binaire C n bits en entre et se sert
de celui-ci pour slectionner l'une de ses 2n
sorties Si

2014,2016 F. Pellegrini

59

Dcodeur (2)
S0
S1
S2
C2

S3
S4

C1

S5
S6

C0

2014,2016 F. Pellegrini

S7

60

Multiplexeur (1)
Un multiplexeur est une fonction possdant
2n entres de donnes Di, une unique sortie
et n entres de contrle Cj servant
slectionner l'une des entres
La valeur de l'entre slectionne est
rpercute (route) sur la sortie
Les n entres de contrle codent un nombre
binaire n bits C spcifiant le numro de
l'entre slectionne
2014,2016 F. Pellegrini

61

Multiplexeur (2)
D0
D1
D2
D3
F

D4
D5
D6
D7

2014,2016 F. Pellegrini

C2

C2

C1

C1

C0

C0

62

Multiplexeur (3)
Implantation d'un multiplexeur partir d'un
dcodeur
S
0

S1
S2
S3
S4
S5
S6
S7

2014,2016 F. Pellegrini

C2

C1

C0

D0
D1
D2
D3

D4
D5
D6
D7

63

Multiplexeur (4)
Utilisation d'un multiplexeur pour implanter la
fonction majorit
D
0

D1
D2
D3
F

D4
D5
D6
D7
VCC
2014,2016 F. Pellegrini

C2

C1

C0

64

Comparateur (1)
Un comparateur est une fonction qui
compare deux mots et qui produit 1 s'ils sont
gaux bit bit ou 0 sinon
On le construit partir de portes XOR, qui
produisent 1 si deux bits en regard sont
diffrents

2014,2016 F. Pellegrini

65

Comparateur (2)
A0
B0
A1
B1

A=B

A2
B2
A3
B3

2014,2016 F. Pellegrini

66

Fonctions arithmtiques
Les fonctions arithmtiques sont des
fonctions logiques reprsentant des
oprations arithmtiques simples telles que :
Additionneur
Dcaleur
Unit arithmtique et logique

2014,2016 F. Pellegrini

67

Additionneur (1)
Tous les processeurs disposent d'un ou
plusieurs circuits additionneurs
Ces additionneurs sont implants partir de
fonctions appeles demi-additionneurs
A
0
0
1
1

B
0
1
0
1

C
0
0
0
1

S
0
1
1
0

A
B

S
C

S : Somme
C : Retenue ( carry )
2014,2016 F. Pellegrini

68

Additionneur (2)
En fait, pour additionner deux bits situs au
milieu d'un mot, il faut aussi prendre en compte
la retenue provenant de l'addition du bit
prcdent et propager sa retenue au bit suivant
1 1
1 0 0 1 1 0 1 0
+

0 1 0 1 1 0 0 1
1 1 1 1 0 0 1 1

2014,2016 F. Pellegrini

69

Additionneur (3)
On utilise donc deux demi-additionneurs pour
raliser une tranche d'additionneur complet
A
0
0
1
1
0
0
1
1

B
0
1
0
1
0
1
0
1

Cin Cout S
0 0 0
0 0 1
0 0 1
0 1 0
1 0 1
1 1 0
1 1 0
1 1 1

2014,2016 F. Pellegrini

Cin
A
B

Cout

70

Unit arithmtique et logique (1)


La plupart des ordinateurs combinent au sein
d'un mme circuit les fonctions arithmtiques
et logiques permettant de calculer l'addition, la
soustraction, le AND ou le OU de deux mots
machines : c'est l'Unit Arithmtique et
Logique
Le type de la fonction a calculer est dtermin
par des entres de contrle

2014,2016 F. Pellegrini

71

Unit arithmtique et logique (2)


Cin

AB

INVA
A

A+B

ENA
B

_
B

ENB
Unit
logique

...Multiplexeur

F0

F1
Additionneur
Dcodeur d'un...
2014,2016 F. Pellegrini

Cout
72

Unit arithmtique et logique (2)


Pour oprer sur des mots de n bits, l'UAL est
constitue de la mise en srie de n tranches
d'UAL de 1 bit
Pour l'addition, on chane les retenues et on
injecte un 0 dans l'additionneur de poids faible
Ripple Carry Adder , en fait peu efficace
F0-1 A5 B5

2014,2016 F. Pellegrini

A4 B4

A3 B3

A2 B2

A1 B1

A0 B0

UAL
1 bit

UAL
1 bit

UAL
1 bit

UAL
1 bit

UAL
1 bit

UAL
1 bit

X5

X4

X3

X2

X1

X0

73

Additionneur - Soustracteur (1)


En notation complment deux , l'oppos
d'un nombre est obtenu :
En complmentant tous les bits de ce nombre
En ajoutant 1 au rsultat

Soustraire A B revient calculer B+(-A), ce


qui peut se faire :
En ajoutant B au complment de A
En ajoutant 1 au rsultat

2014,2016 F. Pellegrini

74

Additionneur - Soustracteur (2)


L'unit arithmtique et logique dispose dj
de toute la circuiterie ncessaire !
La broche INVA permet d'effectuer la
complmentation des bits de A avant l'addition
Il suffit d'injecter un 1 au lieu d'un 0 dans la
retenue de l'additionneur de poids faible
F0-1 A5 B5

2014,2016 F. Pellegrini

A4 B4

A3 B3

A2 B2

A1 B1

A0 B0

UAL
1 bit

UAL
1 bit

UAL
1 bit

UAL
1 bit

UAL
1 bit

UAL
1 bit

X5

X4

X3

X2

X1

X0

75

Horloge (1)
Dans de nombreux circuits numriques, il est
essentiel de pouvoir garantir l'ordre dans
lequel certains vnements se produisent
Deux vnements doivent absolument avoir lieu
en mme temps
Deux vnements doivent absolument se produire
l'un aprs l'autre
98 % des circuits numriques sont synchrones

Ncessit de disposer d'une horloge pour


synchroniser les vnements entre eux
2014,2016 F. Pellegrini

76

Horloge (2)
Une horloge est un circuit qui met de faon
continue une srie d'impulsions caractrises
par :
La longueur de l'impulsion
L'intervalle entre deux pulsations successives,
appel temps de cycle de l'horloge
Longueur d'impulsion

Temps de cycle
2014,2016 F. Pellegrini

77

Cycles et sous-cycles (1)


Dans un ordinateur, de nombreux vnements
ont se produire au cours d'un cycle d'horloge
Si ces vnements doivent tre squencs
dans un ordre prcis, le cycle d'horloge doit
tre dcompos en sous-cycles
Un moyen classique pour cela consiste
retarder la copie d'un signal d'horloge primaire
afin d'obtenir un signal secondaire dcal en
phase
C1
Retard
2014,2016 F. Pellegrini

C2
78

Cycles et sous-cycles (2)


On dispose alors de quatre bases de temps
au lieu de deux
Fronts montant et descendant de C1
Fronts montant et descendant de C2
C1
C2

2014,2016 F. Pellegrini

79

Cycles et sous-cycles (3)


Pour certaines fonctions, on s'intressera
plutt aux intervalles qu' des instants prcis
Action possible seulement lorsque C1 est haut

On peut alors construire des sous-intervalles


en s'appuyant sur les signaux original et
retard
C1
C2
__
__
C3 = C1C2 + C1C2
2014,2016 F. Pellegrini

80

Mmoire (1)
La mmoire principale sert au stockage des
programmes et de leurs donnes
L'unit lmentaire de mmoire est le bit,
pour binary digit ( chiffre binaire ),
prenant deux valeurs, 0 ou 1
Le stockage physique des bits dpend des
technologies employes : diffrentiels de
tension, moments magntiques, cuvettes ou
surfaces planes, mission de photons ou
non, etc.
2014,2016 F. Pellegrini

81

Mmoire (2)
Pour stocker les informations, il faut un circuit
capable de se souvenir de la dernire valeur
d'entre qui lui a t fournie
la diffrence d'une fonction combinatoire, sa
valeur ne dpend donc pas que de ses valeurs
d'entre courantes
Prsence de boucles de rtroaction pour prserver
l'tat courant

On peut construire un tel circuit partir de deux


portes NAND ou deux portes NOR reboucles
2014,2016 F. Pellegrini

82

Bascule SR
Une bascule SR est une fonction qui a deux
entres et deux sorties
Une entre S pour positionner la bascule
Une entre R pour rinitialiser la bascule
Deux sorties Q et Q complmentaires l'une de
l'autre
S
Q

R
2014,2016 F. Pellegrini

Q
83

Bascule SR tat 0
Si S et R valent 0, et que Q vaut 0, alors :
Q vaut 1
Les deux entres de la porte du bas sont 0 et 1,
donc Q vaut 0

Cette configuration est cohrente et stable


S

0
0

1
R
2014,2016 F. Pellegrini

Q
84

Bascule SR tat 1
Si S et R valent 0, et que Q vaut 1, alors :
Q vaut 0
Les deux entres de la porte du bas sont 0 et 0,
donc Q vaut 1

Cette configuration est cohrente et stable


S

0
1

0
R
2014,2016 F. Pellegrini

Q
85

Bascule SR tats stables


Lorsque S et R valent 0 :
On ne peut avoir simultanment Q 0 et Q 0
On ne peut avoir simultanment Q 1 et Q 1
La bascule possde deux tats stables, tels
que Q = 0 ou Q = 1
S

R
2014,2016 F. Pellegrini

0
Q

Q
86

Bascule SR Mise 1
Lorsque S vaut 1, que Q vaille 0 ou 1 :
La sortie de la porte du haut vaut 0, donc Q vaut 0
La sortie de la porte du bas vaut 1, donc Q vaut 1
Cet tat est stable

Mme lorsque S repasse 0, Q reste 1


1

1
0

2014,2016 F. Pellegrini

1
1

0
Q

Q
87

Bascule SR Mise 0
Lorsque R vaut 1, que Q vaille 0 ou 1 :
La sortie de la porte du bas vaut 0, donc Q vaut 0
La sortie de la porte du haut vaut 1, donc Q vaut 1
Cet tat est stable

Mme lorsque R repasse 0, Q reste 0


S

0
0

1
R

2014,2016 F. Pellegrini

0
1

Q
88

Bascule SR Rsum (1)


Lorsque S vaut temporairement 1, la bascule
se stabilise dans l'tat Q = 1, quel que soit
son tat antrieur
Lorsque R vaut temporairement 1, la bascule
se stabilise dans l'tat Q = 0, quel que soit
son tat antrieur
La fonction mmorise laquelle des entres S
ou R a t active en dernier
Cette fonction peut servir de base la
cration de mmoires

2014,2016 F. Pellegrini

89

Bascule SR Rsum (2)


Cependant, l'tat de la bascule peut tre
indtermin
Lorsque S et R sont simultanment 1, on est
dans un tat stable dans lequel Q et Q valent 0
Lorsque S et R repassent simultanment 0,
l'tat final de la bascule est non prvisible
S

0
2014,2016 F. Pellegrini

Q
90

Bascule D (1)
Pour viter cela, on n'a qu'un seul signal D
Destin l'entre S, et que l'on inverse pour R
On commande la bascule par un signal d'activation

On a une mmoire 1 bit


D
Q
CK
Q
2014,2016 F. Pellegrini

91

Bascule D (2)
Pour que l'on soit sr que la valeur conserve
en mmoire soit bien celle prsente en dbut
de cycle d'criture, il faudrait n'autoriser
l'criture qu'au dbut du cycle, sur le front
montant du signal d'criture
a
b
CK

b
c

c
d

2014,2016 F. Pellegrini

92

Bascule D (3)
Il existe ainsi plusieurs types de bascules D :
Active par CK l'tat haut

_
CK Q

Active par CK l'tat bas

_
CK Q

Active sur front montant

_
CK Q

Active sur front descendant

_
CK Q

2014,2016 F. Pellegrini

93

Adressage mmoire (1)


Les mmoires informatiques sont organises
comme un ensemble de cellules pouvant
chacune stocker une valeur numrique
Chaque cellule possde un numro unique,
appel adresse, auquel les programmes
peuvent se rfrer
Toutes les cellules d'une mmoire
contiennent le mme nombre de bits
n

Une cellule de n bits peut stocker 2 valeurs


numriques diffrentes

2014,2016 F. Pellegrini

94

Adressage mmoire (2)


Deux cellules mmoire adjacentes ont des
adresses mmoires conscutives
Les ordinateurs, bass sur le systme
binaire, reprsentent galement les adresses
sous forme binaire
Une adresse sur m bits peut adresser 2m
cellules distinctes, indpendamment du
nombre de bits contenus dans chaque cellule

2014,2016 F. Pellegrini

95

Adressage mmoire (3)


La cellule est la plus petite unit mmoire
pouvant tre adresse
Il y a maintenant consensus autour d'une cellule
8 bits, appele octet ( byte en anglais)

Afin d'tre plus efficaces, les units de


traitement ne manipulent plus des octets
individuels mais des mots de plusieurs octets
4 octets par mot pour une machine 32 bits

La plupart des mmoires travaillent aussi par


mots
2014,2016 F. Pellegrini

96

Principe d'un circuit mmoire (1)


I0-I2

A0

D Q

DQ

DQ

CK

CK

CK

D Q

D Q

D Q

CK

CK

CK

D Q

D Q

D Q

CK

CK

CK

D Q

D Q

D Q

CK

CK

CK

A1

CS
RD
OE
2014,2016 F. Pellegrini

O0-O2
97

Principe d'un circuit mmoire (2)


Mmoire 4 mots de 3 bits
Ce circuit possde trois broches de commande
CS ( chip select ) : actif pour slectionner ce
circuit mmoire
RD ( read ) : positionn 1 si l'on souhaite raliser
une lecture, et 0 si l'on souhaite une criture
OE ( output enable ) : positionn 1 pour activer
les lignes de sortie
Utilise des interrupteurs trois tats (0, 1, dconnect)
Permet de connecter I0-I2 et O0-O2 sur les mmes lignes
2014,2016 F. Pellegrini
de donnes
98

Types de mmoire
Plusieurs critres caractrisent les mmoires
Type d'accs
Accs alatoire : RAM R/W, (((E)E)P)ROM, Flash
FIFO : registres dcalage

Possibilit d'criture
Pas : ROM
Unique : PROM
Multiple : RAM R/W, (E)EPROM, Flash

Volatilit
Les donnes stockes ne sont conserves que tant que
la mmoire est alimente lectriquement
2014,2016 F. Pellegrini
99

Mmoire RAM (1)


Random Access Memory
Les mots de la mmoire peuvent tre accds sur
demande dans n'importe quel ordre

Cette catgorie comprend en thorie toutes


les mmoires accs alatoire telles que
mmoires volatiles, (((E)E)P)ROM, Flash, etc.
Dans le langage courant ce terme est utilis
pour dsigner uniquement la mmoire volatile

2014,2016 F. Pellegrini

100

Mmoire RAM (2)


Varits principales de RAM R/W volatiles
RAM statique
Circuits actifs base de portes logiques reboucles
Conservent leurs valeurs sans intervention particulire

RAM dynamique
Base sur des petits condensateurs, moins gourmands
en place et en consommation lectrique
Ncessite un rafrachissement rgulier des charges

Varits principales de RAM R/W non volatiles


EEPROM, Flash : Stockage par charges lectriques
101

Mmoire ROM
Read Only Memory ( Mmoire morte )
Les donnes stockes perdurent mme quand la
mmoire n'est pas alimente
Le contenu, fig la fabrication, ne peut plus tre
modifi d'aucune faon
Analogue l'implantation d'une fonction
boolenne dpendant des valeurs d'adresses
fournies

Coteuse du fait de la fabrication en petite


srie
2014,2016 F. Pellegrini

102

Mmoire PROM
Programmable ROM
Les ROMs sont trop longues faire fabriquer
par rapport aux cycles de dveloppement des
quipements
La PROM, livre vierge (tous bits 1), peut
tre programme avec un quipement adapt
Destruction de mini-fusibles par surtension
Une seule criture possible

2014,2016 F. Pellegrini

103

Mmoire EPROM
Les mmoires PROM sont encore trop chres
Grande consommation lors des phases de
dveloppement

Les mmoires EPROM peuvent tre rutilises


en les rinitialisant par exposition aux rayons
ultra-violets
Petite fentre en mica sur le botier (mais pastille
adhsive pour viter les UV des tubes fluorescents)

Les mmoires EEPROM et Flash sont


effaables lectriquement
2014,2016 F. Pellegrini

104

Hirarchie mmoire (1)


La mmoire rapide est trs chre, consomme
beaucoup et est donc de taille limite
On rsout ce problme au moyen d'une
hirarchie mmoire

2014,2016 F. Pellegrini

105

Hirarchie mmoire (2)


La hirarchie mmoire fonctionne grce aux
principes de localit :
Localit temporelle : plus un mot mmoire a t
accd rcemment, plus il est probable qu'il soit
r-accd nouveau
Localit spatiale : plus un mot mmoire est
proche du dernier mot mmoire accd, plus il
est probable qu'il soit accd

Les caches tirent parti de ce principe


Sauvegardent les informations les plus
rcemment accdes, en cas de r-accs
2014,2016 F. Pellegrini

106

Paradigmes architecturaux
L'augmentation continuelle de la vitesse de
traitement du cycle du chemin de donnes
provient de la mise en oeuvre d'un ensemble
de principes gnraux de conception efficaces
Simplification des jeux d'instructions
Utilisation du paralllisme au niveau des
instructions ( Instruction-Level Parallelism , ou
ILP)
Apparition des architectures multi-curs
2014,2016 F. Pellegrini

107

RISC et CISC (1)


Plus les instructions sont simples dcoder,
plus elles pourront tre excutes rapidement
Aprs une tendance la complexification des
jeux d'instructions ( Complex Instruction Set
Computer , ou CISC), pour conomiser la
mmoire, on a conu nouveau des
processeurs au jeu d'instructions moins
expressif mais pouvant s'excuter beaucoup
plus rapidement ( Reduced Instruction Set
Computer , ou RISC)
2014,2016 F. Pellegrini

108

RISC et CISC (2)


Les architectures RISC se distinguent par un
certain nombre de choix de conception
Toute instruction est traite directement par des
composants matriels (pas de micro-code)
Le format des instructions est simple (mme taille,
peu de types diffrents)
Seules les instructions de chargement et de
sauvegarde peuvent accder la mmoire
Prsence d'un grand nombre de registres
Architecture orthogonale : toute instruction peut
utiliser tout registre : que des registres gnralistes109
2014,2016 F. Pellegrini

Micro-architecture (1)
La couche micro-architecture implmente le jeu
d'instructions spcifi par la couche
d'architecture du jeu d'instructions (ISA) en
s'appuyant sur la couche la logique numrique
La conception de la micro-architecture dpend
du jeu d'instruction implmenter, mais aussi
du cot et des performances souhaits
Jeux d'instructions plus ou moins complexes
(RISC/CISC)
Utilisation de l'ILP ( Instruction-Level Parallelism )
2014,2016 F. Pellegrini

110

Micro-architecture (2)
L'excution d'une instruction peut se
dcomposer en plusieurs sous-tapes
Recherche ( Fetch )
tant donn l'adresse de la prochaine instruction
excuter, rcupration de l'instruction

Decodage ( Decode )
Dtermination du type et de la nature des oprandes

Excution ( Execute )
Mise en oeuvre des units fonctionnelles

Terminaison ( Complete )
111

Micro-architecture (3)
On peut imaginer la conception du niveau
micro-architecture comme un problme de
programmation
Chaque instruction du niveau ISA est une fonction
Le programme matre (micro-programme) est une
boucle infinie qui dtermine chaque tour la bonne
fonction appeler et l'excute
Le micro-programme dispose de variables d'tat
accessibles par chacune des fonctions, et modifies
spcifiquement selon la nature de la fonction
Compteur ordinal, registres gnraux, etc.

2014,2016 F. Pellegrini

112

Schma d'un processeur lmentaire


Compteur ordinal
Suivant

Registre d'instruction

Mmoire du
micro-code
(implmentation
en un seul cycle)

2014,2016 F. Pellegrini

Chemin de
donnes

Mmoire

(implmentation
en un seul cycle)
113

Instructions (1)
Chaque instruction est compose d'un ou
plusieurs champs
Le premier, appel opcode , code le type
d'opration ralise par l'instruction
Opration arithmtique, branchement, etc.

Les autres champs, optionnels, spcifient les


oprandes de l'instruction
Registres source et destination des donnes
traiter
Adresse
mmoire
des
donnes

lire
ou
crire,
etc.
2014,2016 F. Pellegrini
114

Instructions (2)
Exemple : format des instructions RISC MIPS
Type R (registre)
31

26 25

opcode

21 20

rs

16 15

rt

11 10

rd

6 5

shamt

Type I (donne immdiate)


31
26 25
21 20
16 15
31

26 25

opcode

21 20

rs

immediate

Type J (branchement)
31
26 25
31

26 25

opcode
2014,2016 F. Pellegrini

func

16 15

rt

adresse
115

Contrle du chemin de donnes (1)


5

Xra
Clk
Zdi

Imm value
tendue 32b

Yra

Zwa

Registres
32 registres
32 bits

_
r/w

msel

32

Xdo
32

Ydo

Adresses
32

ALS
32

st enable

imm enable

wr enable

B
UAL

LF
4

ST

Mmoire

SD
_
a/s

32

Donnes

00
01
10
11

ALS
: Arithmtique
: Logique
: Dcalage
: Desactive

2014,2016 F. Pellegrini

LF
0001 : AND
0011 : A
0101 : B
0110 : XOR
0111 : OR

00
01
10
11

ST
: Pas de dcalage
: Arithmtique
: Logique
: Rotation

ld enable
SD
0 : Dcalage gauche
1 : Dcalage droite

a/s
0 : Ajoute
1 : Soustrait
116

Contrle du chemin de donnes (2)


La logique de contrle du micro-code associe
chaque (micro-)instruction un mot binaire
commandant le chemin de donnes
Exemple : mise zro des mots mmoire situs
aux adresses 0x0100 et 0x0104
Signaux de contrle du chemin de donnes
""

"" # $

" $

$
!

2014,2016 F. Pellegrini

117

Interprtation du micro-code (1)


Dans le cas d'un jeu d'instructions de type CISC,
une instruction ISA doit tre traduite en plusieurs
micro-instructions
Cas des instructions

des x86

Chaque micro-instruction
S'excute en un cycle lmentaire
Spcifie exactement les signaux de contrle des
diffrentes units fonctionnelles

Ncessit d'un squenceur de micro-instructions


118

Interprtation du micro-code (2)


Exemple figuratif de micro-codage pour
l'instruction
du processeur 8086
Code machine 0x50 + n du registre sur 3 bits
Le code de

est 0x58
Registre
interne X

Opcode

2014,2016 F. Pellegrini

tat initial
Adresse de la premire
instruction dans la
mmoire du micro-code

Bit de fin
Signaux de contrle d'instruction
ST [RSP],R[X]
ADDI SP,2

0
1

SUBI SP,2
LD R[X],[RSP]

0
1

Mmoire du micro-code

119

Interprtation du micro-code (3)


Mmoire du
micro-code
(ROM ou PLA)
Logique
combinatoire

Registre d'instruction

Registre d'tat

Lignes de contrle
du chemin de donnes

Pas besoin de boucle


ni de registre d'tat si
toutes les instructions
terminent en un
(micro-)cycle
Instruction suivante

2014,2016 F. Pellegrini

120

Pile (1)
Presque tous les langages de programmation
incluent le concept de procdure disposant de
paramtres d'appel et de variables locales
Ces variables peuvent tre accdes pendant
l'excution de la procdure mais pas depuis la
procdure appelante
Elles ne peuvent rsider une adresse absolue en
mmoire, car cela empcherait la rentrance

Ncessit de crer dynamiquement des


instances de ces variables lors des appels de
procdures et de les supprimer la fin
2014,2016 F. Pellegrini

121

Pile (2)
Une pile est une zone de la mmoire que l'on
n'accde jamais de faon absolue mais
toujours relativement un registre
Gre au moyen d'un registre ddi, le
pointeur de pile ( Stack Pointer , ou SP)
Pointe sur le dernier mot mmoire allou
Instructions ddies l'empilage et au dpilage :
De donnes : push/pop
D'adresses de retour : call/ret
2014,2016 F. Pellegrini

122

Architecture du jeu d'instructions (1)


La couche ISA ( Instruction Set Architecture )
dfinit l'architecture fonctionnelle de l'ordinateur
Sert d'interface entre les couches logicielles et
le matriel sous-jacent
Dfinit le jeu d'instructions utilisable pour coder
les programmes, qui peut tre :
Directement implment de faon matrielle
Pas de registre d'tat interne servant de compteur ordinal
pour l'excution des micro-instructions

Implment sous forme micro-programme


2014,2016 F. Pellegrini

123

Architecture du jeu d'instructions (2)


Le jeu d'instructions est indpendant de
considrations d'implmentation telles que
superscalarit, pipe-lining, etc.
Libert d'implmentation en fonction des cots de
conception et de fabrication, de la complexit de
ralisation, et donc du cot souhait
Dfinition de familles de processeurs en fonction des
applications vises (du tlphone portable au supercalculateur)

Ncessit pour le compilateur de connatre


l'implmentation de la machine cible pour gnrer
du code efficace
2014,2016 F. Pellegrini
124

Types de donnes (1)


Le niveau ISA dfinit les types de donnes
grs nativement par le jeu d'instructions
Autorise l'implmentation matrielle des types
considrs
Dfinit la nature (entier, flottant, caractre) et la
prcision des types supports

Le programmeur n'est pas libre de choisir le


format de ses donnes s'il veut bnficier du
support matriel offert par la couche ISA
2014,2016 F. Pellegrini

125

Types de donnes (2)


Les types de donnes les plus couramment
implments dans les jeux d'instructions sont :
Type entier
Type flottant
Type caractre

2014,2016 F. Pellegrini

126

Types de donnes entiers (1)


Le type entier est toujours disponible
Sert au fonctionnement de la couche microarchitecture

Toutes les architectures disposent de types


entiers signs
Presque toujours cods en complment deux
Il existe aussi souvent des types non signs

Disponibles en plusieurs tailles


Quelques unes choisies parmi les tailles classiques
de 8, 16, 32, 64 bits (jamais de type boolen)
2014,2016 F. Pellegrini
127

Types de donnes entiers (2)


Les types entiers non supports :
Soit doivent tre muls de faon logicielle
Cas du type caractre (8 bits) sur le CRAY-1 (mots de
64 bits) au moyen de dcalages et masquages de bits
Lecture

Dcalage

Masquage
OU logique

criture

Soit font l'objet d'un support partiel par le matriel


Cas des instructions ADD/ADC ( add with carry ) sur
le 8080 pour faire des additions sur plus d'un octet
ADC

+
2014,2016 F. Pellegrini

ADC

ADC

ADD

+
128

Types de donnes flottants


Les types flottants sont trs souvent
disponibles
Sauf sur les processeurs bas de gamme, o les
nombres flottants sont muls logiciellement

Disponibles en plusieurs tailles


32, 64, 80, ou 128 bits

Souvent grs par des registres spars


Cas des 8 registres flottants de l'architecture
x86, organiss sous forme de pile
2014,2016 F. Pellegrini

129

Types de donnes caractres


La plupart des ordinateurs sont utiliss pour des
tches de bureautique ou de gestion de bases
de donnes manipulant des donnes textuelles
Quelques jeux d'instructions proposent des
instructions de manipulation de suites de
caractres
Caractres muls par des octets (ASCII), des mots
de 16 bits (Unicode), voire de 32 bits
Cas de l'architecture x86 avec les instructions
micro-codes CMPS, SCAS, STOS, etc. utilisables
avec les prfixes REP, REPZ, REPNZ
2014,2016 F. Pellegrini
130

Type de donnes boolen


Il n'existe pas de type boolen natif sur les
processeurs
Pas de possibilit d'adressage en mmoire

Le type boolen est gnralement mul par


un type entier (octet ou mot)
Valeur fausse si la valeur entire est zro
Valeur vraie sinon
Cas de l'instruction
et
du
jeu d'instructions MIPS, compatibles avec cette
convention de codage
2014,2016 F. Pellegrini

131

Type de donnes rfrence


Une rfrence est un pointeur sur une adresse
Elle est mule par un type de donnes entier
Soit registres entiers gnralistes
Soit registres entiers spcifiques d'adresses
Cas du CRAY-1 : 8 registres d'adresses sur 24 bits et 8
registres entiers sur 64 bits

Utilisation de ces registres pour accder aux


donnes en mmoire, en fonction des modes
d'adressage disponibles
Cas des registres SP et BP de gestion de la pile

2014,2016 F. Pellegrini

132

Format des instructions (1)


Chaque instruction est compose d'un ou
plusieurs champs
Le premier, appel opcode , code le type
d'opration ralise par l'instruction
Opration arithmtique, branchement, etc.

Les autres champs, optionnels, qui spcifient


o rechercher les oprandes de l'instruction,
sont appels adresses
Les instructions ont toujours de zro trois
adresses
2014,2016 F. Pellegrini

133

Format des instructions (2)


Diffrentes faons de concevoir l'adressage
Architecture trois adresses : on a deux adresses
source et une adresse destination, qui peut tre
quivalente l'une des adresses source
Cas de l'architecture MIPS : instruction
pouvant tre utilise en

Architecture deux adresses : on a toujours une


adresse source, non modifie, et une adresse
destination, modifie ou mise jour selon que
l'opration fait ou non intervenir son ancienne valeur
Cas de l'architecture x86 : instructions
2014,2016 F. Pellegrini

ou
134

Format des instructions (3)


Diffrentes faons de concevoir l'adressage
Architecture une adresse : toutes les instructions
de calcul oprent entre une adresse et un registre
unique, appel accumulateur
Anciennes architectures de type 8008
Trop de transferts entre l'accumulateur et la mmoire

Architecture zro adresses : les adresses des


oprandes sont implicites, situes au sommet
d'une pile d'oprandes, o seront placs les
rsultats
Cas de l'architecture JVM
2014,2016 F. Pellegrini

135

Format des instructions (4)


Les instructions peuvent soit toutes tre de la
mme taille, soit tre de tailles diffrentes
Avoir toutes les instructions de mme taille facilite
le dcodage mais consomme plus de mmoire

La taille des instructions peut tre plus petite,


plus grande, ou de longueur quivalente
celle du mot mmoire
1 mot
1 mot
1 mot
Instruction
Instruction
Instruction
Instruction
MIPS (32 bits)
2014,2016 F. Pellegrini

Instr.
Instr.
Instr.
Instr.

Instr.
Instr.
Instr.
Instr.

Instr.
Instr.
Instr.
Instr.

IA-64 (64 bits)

Instruction
Instr. Ins. Ins.
Instruction
X86 (32 bits : IA-32)
136

Format des instructions (5)


Un jeu d'instructions est dit orthogonal si,
quand une instruction opre sur un registre,
elle peut oprer sur l'ensemble des registres
de mme type (registres entiers, registres
flottants)
Facilite le dcodage des instructions
Implment naturellement au sein des
architectures de type RISC

2014,2016 F. Pellegrini

137

Modes d'adressage
Les modes d'adressage sont les diffrentes
manires dont on peut accder aux oprandes
des instructions
Adressage immdiat
Adressage direct
Adressage registre
Adressage indirect par registre
Adressage index
Adressage bas index
2014,2016 F. Pellegrini

138

Adressage immdiat
Le plus simple pour une instruction est que sa
partie d'adresse contienne directement la valeur
de l'oprande
Rserv aux constantes
Aucun accs mmoire supplmentaire ncessaire

Exemples
Branchements : l'adresse (dplacement relatif ou
absolu) est spcifie dans le corps de l'instruction :
Chargement de registres :
2014,2016 F. Pellegrini

139

Adressage direct
Une mthode pour accder une valeur en
mmoire consiste donner son adresse pour
qu'on puisse y accder directement
On accdera toujours la mme zone mmoire
Rserv aux variables globales dont les
adresses sont connues la compilation

2014,2016 F. Pellegrini

140

Adressage registre
Conceptuellement quivalent l'adressage
direct, mais on spcifie un numro de registre
plutt qu'un numro de mot mmoire
Mode le plus couramment utilis
Les accs aux registres sont trs rapides
Les numros de registres se codent sur peu de bits
(compacit des instructions plusieurs adresses)

Une grande partie du travail des compilateurs


consiste dterminer quelles variables seront
places dans quels registres chaque instant, afin
de diminuer les temps d'accs et donc d'excution
2014,2016 F. Pellegrini

141

Adressage indirect par registre


L'oprande spcifi provient de la mmoire
ou y sera stocke, mais son adresse est
contenue dans un registre de numro donn
plutt que code explicitement dans le corps
de l'instruction
Le registre est un pointeur sur l'oprande
On peut rfrencer une zone mmoire sans
avoir coder son adresse dans l'instruction
On peut modifier dynamiquement l'adresse de la
zone mmoire rfrence en modifiant la valeur
du
registre
2014,2016 F. Pellegrini

142

Adressage index
Ce mode combine les caractristiques de
l'adressage direct et de l'adressage registre
L'oprande considr est localis une
distance fixe de l'adresse fournie par un registre
Les champs de l'instruction sont le numro du
registre ainsi que le dplacement relatif ( offset )
ajouter son contenu

Exemple : accs aux variables locales et


paramtres placs dans la pile, par rapport au
registre BP :
! "# $ %
2014,2016 F. Pellegrini

143

Adressage bas index


L'adresse mmoire de l'oprande est calcule
partir de la somme des valeurs de deux registres
(un registre de base et un registre d'index) ainsi
que d'une valeur de dplacement optionnelle
Exemple : accs aux champs des structures
contenues dans un tableau
Le registre de base est l'adresse de dbut du tableau
Le registre d'index rfrence l'adresse de dbut de la
bonne structure par rapport l'adresse du tableau
Le dplacement rfrence la position du dbut du
2014,2016 F. Pellegrini
champ par rapport au dbut de la structure

144

Types d'instructions
Les instructions de la couche ISA peuvent
tre groupes en une demi-douzaine de
classes, que l'on retrouve sur toutes les
architectures
Copie de donnes
Calcul
Branchements, branchements conditionnels et
comparaisons
Entres/sorties et interruptions
Gestion de la mmoire
2014,2016 F. Pellegrini

145

Instructions de copie de donnes


Les instructions de copie de donnes ont
deux usages principaux
Raliser l'affectation de valeurs des variables
Recopie de valeurs dans des variables temporaires
devant servir des calculs ultrieurs

Placer une copie de valeurs utiles l o elles


pourront tre accdes le plus efficacement
Utilisation des registres plutt que de la mmoire

On a toujours des instruction de copie entre


registres, ou entre registre et mmoire, mais
moins souvent de mmoire mmoire
2014,2016 F. Pellegrini

146

Instructions de calcul (1)


Ces instructions reprsentent les oprations
ralisables par l'unit arithmtique et logique,
mais sur des oprandes qui ne sont pas
ncessairement tous des registres
Calculs entre mmoire et registres (cas du x86)

Les instructions de calcul les plus


couramment utilises peuvent faire l'objet
d'un format abrg
Instruction &'
et
2014,2016 F. Pellegrini

remplaant la squence
, par exemple
147

Instructions de calcul (2)


Dans une architecture de type load/store ,
les seules instructions pouvant accder la
mmoire sont les instructions ( et (
de copie entre mmoire et registre
Les instructions de calcul ne prennent dans
ce cas que des oprandes registres
Simplifie le format et le dcodage des
instructions
Permet d'optimiser l'utilisation de l'unit
arithmtique et logique (pas de cycles d'attente
des oprandes mmoire)
2014,2016 F. Pellegrini

148

Instructions de branchement (1)


L'instruction de branchement inconditionnel
droute le flot d'excution du programme vers
une adresse donne
L'instruction d'appel de sous-programme
droute aussi le flot d'excution mais en plus
sauvegarde l'adresse situe aprs l'instruction
afin de permettre le retour la fonction
appelante
Sauvegarde dans un registre ou dans la pile
2014,2016 F. Pellegrini

149

Instructions de branchement (2)


Les instructions de comparaison et de
branchement conditionnel servent orienter le
flot d'excution en fonction du rsultat de
l'valuation d'expressions boolennes
Implmentation des tests
Implmentation des boucles

2014,2016 F. Pellegrini

150

Instructions de branchement (3)


Deux implmentations possibles :
Instructions de comparaison et de branchement
distinctes utilisant un registre d'tat du processeur
Cas de l'architecture x86 : instruction
mettant jour
les bits Z, S, O du mot d'tat programme PSW, et
instructions de branchement ) *, )' , )+ , etc. les
utilisant comme conditions de branchement

Instructions de branchement conditionnel prenant


en paramtres les noms de deux registres
compars la vole pour dcider du branchement
Cas des architecture MIPS et Power : avoir une seule
instruction facilite la rorganisation dynamique de code

2014,2016 F. Pellegrini

151

Instructions d'entre/sortie
Diffrent considrablement selon l'architecture
Mettent en uvre un ou plusieurs parmi trois
schmas d'E/S diffrents
E/S programmes avec attente de disponibilit
Trs coteux car le processeur ne fait rien en attendant
Cas des instructions IN et OUT de l'architecture x86

E/S par interruptions


Le priphrique avertit le processeur, au moyen d'une
interruption, chaque fois que son tat change (coteux)

E/S par DMA ( Direct Memory Access )

Instructions de gestion de priorit (1)


Les micro-architectures modernes
implmentent nativement des mcanismes
matriels permettant de distinguer entre deux
modes d'excution
Mode non privilgi : accs restreint la
mmoire, interdiction d'excuter les instructions
d'entres-sorties
Mode privilgi : accs tout l'espace
d'adressage et toutes les instructions

Instructions spcifiques de passage entre les


deux modes
2014,2016 F. Pellegrini

153

Instructions de gestion de priorit (2)


Servent isoler le systme d'exploitation des
programmes d'application
Les appels systme s'excutent en mode
privilgi, pour pouvoir accder l'ensemble des
ressources de la machine
Les programmes d'application s'excutent en
mode non privilgi, et ne peuvent donc accder
directement au matriel sans passer par les
routines de contrle d'accs du systme
Le passage du mode non privilgi au mode
privilgi ne peut se faire que de faon
2014,2016 F. Pellegrini
strictement contrle (traps et interruptions)

154

Instructions d'interruption (1)


Les interruptions sont des vnements qui,
une fois reus par le processeur, conduisent
l'excution d'une routine de traitement
adapte
L'excution du programme en cours est
suspendue pour excuter la routine de traitement
Analogue un appel de sous-programme, mais
de faon asynchrone

Il existe plusieurs types d'interruptions,


identifies par leur numro
Interrupt ReQuest )

155

Instructions d'interruption (2)


Les interruptions peuvent tre :
Asynchrones : interruptions matrielles reues
par le processeur par activation de certaines de ses
lignes de contrle
Gestion des priphriques

Synchrones : interruptions gnres par le


processeur lui-mme :
Par excution d'une instruction spcifique ( trap )
Exemple : l'instruction &', de l'architecture x86
Sert mettre en uvre les appels systme

Sur erreur logicielle (erreur d'accs mmoire, de calcul ...)


2014,2016 F. Pellegrini

Sert mettre en uvre les exceptions

156

Instructions d'interruption (3)


Lorsque le processeur accepte d'excuter une
interruption :
Il sauvegarde dans la pile l'adresse de la
prochaine instruction excuter dans le cadre du
droulement normal
Il se sert du numro de l'interruption pour indexer
une table contenant les adresses des diffrentes
routines de traitement ( vecteur d'interruptions )
Il se droute cette adresse
Passage en mode privilgi si le processeur en dispose
2014,2016 F. Pellegrini

157

Instructions d'interruption (4)


Au niveau du jeu d'instructions, on trouve
donc des instructions
Pour gnrer des interruptions logicielles
Pour autoriser ou non l'acceptation des
interruptions
Ces instructions ne doivent pas tre excutables par
les programmes d'application
Excutables seulement en mode privilgi

La modification du vecteur d'interruptions ne


peut se faire qu'en mode privilgi
158

Espace d'adressage
La plupart des couches ISA considrent la
mmoire comme un espace linaire et continu
commenant de l'adresse 0 l'adresse 232-1
64
ou 2 -1
En pratique, on n'utilise pas plus de 44 fils
d'adresses (adressage de 16 TraMots)

2014,2016 F. Pellegrini

159

Architecture ISA du Pentium II (1)


Architecture appele IA-32 (ou x86)
Est le rsultat d'une volution continue depuis
le processeur 8 bits 8080
Maintien d'une compatibilit ascendente
permettant encore l'excution de programmes
crits pour le processeur 16 bits 8086 :
Mode rel : le processeur se comporte comme un
8086
Mode virtuel : le processeur simule un 8086
Mode
protg
:
utilise
l'ensemble
du
processeur
2014,2016 F. Pellegrini

160

Architecture ISA du Pentium II (2)


Enrichissement continu du jeu d'instructions :
Passage une architecture 32 bits avec le 80386
Ajout des instructions MMX ( MultiMedia
eXtension ) par Intel
Ajout des instructions 3D Now! (par AMD) et
SSE ( Streaming SIMD Extension , par Intel)
Passage une architecture 64 bits avec l'Opteron
d'AMD (architecture appele x86-64 par AMD ou
EM64T par Intel)
2014,2016 F. Pellegrini

161

Architecture ISA du Pentium II (3)


Architecture deux adresses, non orthogonale
Registres gnraux spcialiss
AX

CS

AH

AL

EAX

DS

BX
BH
BL

EBX

ES

CX
CH
CL

ECX

FS

DX
DH
DL

EDX

GS

ESI

SS

EDI

EIP

EBP

EFLAGS

ESP

32

Mmoire organise en 16384 segments de 2


octets
2014,2016 F. Pellegrini

162

Architecture ISA du Pentium II (4)


La structure des instructions est complexe et
irrgulire
Code opration expansif
Octets

Bits

0-5
Prfixe

6
Instruction

1-2
Opcode

0-1
Mode

0-1
SIB

1 1

0-4
Dplacement

2
Scale

3
Index

0-4
Immdiat

3
Base

Quel est l'oprande source ?


Octets/mots

2
Mod
2014,2016 F. Pellegrini

3
Reg

3
R/M
163

Circuits synchrones (1)


En l'absence de synchronisation, les rsultats
des calculs des circuits avec boucle de
rtroaction seraient inexploitables car faux

Il faut mettre en place des barrires


pour empcher les rsultats du tour courant
de dborder sur le tour suivant
2014,2016 F. Pellegrini

164

Circuits synchrones (2)


On peut raliser ces barrires au moyen de
bascules D faisant verrou ( latch )
D Q

D Q

D Q

CK
D Q

CK
D Q

CK
D Q

CK
D Q

CK
D Q

CK
D Q

CK
D Q

CK
D Q

CK
D Q

CK

CK

CK

Les bascules doivent tre pilotes par une


horloge
2014,2016 F. Pellegrini

165

Circuits synchrones (3)


La frquence de l'horloge doit tre choisie de
telle sorte que :
Le temps de cycle permette au circuit de se
stabiliser
Dpend de la longueur du chemin critique du circuit

Le temps d'impulsion soit suffisamment court pour


viter toute interfrence entre phases de calcul
Dpend de la longueur du plus court chemin
Impulsion la plus courte possible pour viter tout
problme
2014,2016 F. Pellegrini

166

Circuits synchrones (3)


La frquence de l'horloge doit tre choisie de
telle sorte que :
Le temps de cycle permette au circuit de se
stabiliser
Dpend de la longueur du chemin critique du circuit

Le temps d'impulsion soit suffisamment court pour


viter toute interfrence entre phases de calcul
Dpend de la longueur du plus court chemin
Impulsion la plus courte possible pour viter tout
problme
2014,2016 F. Pellegrini

167

Pipe-line (1)
Lorsqu'un mme traitement se rpte dans le
temps, et peut tre dcoup en sous-tches
lmentaires, on peut mettre en place une
chane de traitement appele pipe-line
Le nombre de sous-units fonctionnelles est
appel nombre d'tages du pipe-line
Unit fonctionnelle non pipeline

Unit fonctionnelle pipeline 4 tages


2014,2016 F. Pellegrini

168

Pipe-line (2)
Exemple : le lavomatique
Lavage : 30 minutes

Schage : 40 minutes

Pliage : 20 minutes
L
L

S
S
L

2014,2016 F. Pellegrini

P
P

S
L

S
P

S
L

P
P

169

Pipe-line (3)
Trois conditions sont ncessaires la bonne
mise en uvre d'un pile-line :
Une mme opration doit tre rpte dans le
temps
Cette opration doit pouvoir tre dcompose en
tapes ( stages , improprement traduit en
tages ) indpendantes
La dure de ces tages doit tre peu prs la
mme

2014,2016 F. Pellegrini

170

Pipe-line (4)
Un pipe-line p tages sort son premier
rsultat aprs p cycles lmentaires, puis un
rsultat par cycle lmentaire
N'est utile que si l'opration se rpte !

2014,2016 F. Pellegrini

171

Pipe-line (5)
Pour isoler les diffrents tages du pipe-line,
on utilise des latches
La frquence de cadencement est limite par
la dure de l'tage le plus long
Il faut y ajouter cette dure le temps de
traverse du latch associ

2014,2016 F. Pellegrini

172

Pipe-line (6)
Soient :
T le temps de traverse du circuit non pipe-lin
p la profondeur du pipe-line (nombre d'tages)
Le temps de traverse d'un latch

Si le pipe-line est idalement quilibr, le


circuit pipe-lin excute n instructions en
(p + n 1) tapes de temps unitaire (T / p + )
Le circuit non pipe-lin excute n instructions
en n.T tapes
2014,2016 F. Pellegrini

173

Pipe-line (7)
L'efficacit du pipe-line est donc gale :
n.T / ((n + p - 1)(T / p + ))
L'efficacit maximale thorique d'un pipe-line
quilibr de profondeur p :
Est strictement infrieure p
Intrt d'augmenter p pour augmenter l'efficacit du
pipe-line
Revient augmenter le degr de paralllisme du circuit

Tend vers p quand n tend vers +


En supposant
2014,2016 F. Pellegrini

petit devant T / p
174

Pipe-line d'instruction (1)


La tche la plus rptitive qu'un processeur ait
effectuer est la boucle de traitement des
instructions
Il faut pouvoir dcomposer le traitement d'une
instruction en sous-tapes de dure peu
prs quivalente

2014,2016 F. Pellegrini

175

Pipe-line d'instruction (2)


tapes classiques du traitement des
instructions :
Fetch : Rcupration de la prochaine instruction
excuter
Decode : Dcodage de l'instruction
Read : Lecture des oprandes (registre ou
mmoire)
Execute : Calcul, branchement, etc...
Write : criture du rsultat (registre ou mmoire)

Elles-mmes dcoupables en sous-tapes


2014,2016 F. Pellegrini

176

Pipe-line d'instruction (3)


La cration des pipe-lines d'instructions et
l'augmentation de leur profondeur a t un
facteur dterminant de l'amlioration de la
performance des processeurs :
5 tages pour le Pentium
12 tages pour les Pentium II et III
20 tages pour le Pentium IV

2014,2016 F. Pellegrini

177

Pipe-line d'instruction (4)


Pourquoi ne pas continuer augmenter la
profondeur des pipe-lines d'instructions ?
Problme de taille des niveaux
Le surcot des latches augmente en proportion

Problme d'quilibrage des niveaux


Plus la granularit souhaite est fine, plus il est difficile
de sparer les fonctions logiques en blocs quilibrs

Problme de dpendances entre instructions

2014,2016 F. Pellegrini

178

Dpendances d'instructions (1)


Les instructions excutes en squence sont
rarement indpendantes
On identifie classiquement quatre types de
dpendances
Certaines sont relles, et refltent le schma
d'excution
D'autres sont de fausses dpendances :
Accidents dans la gnration du code
Manque d'informations sur le schma d'excution
2014,2016 F. Pellegrini

179

Dpendances d'instructions (2)


Dpendance relle
mov [A],r1

add r1,r2,r4

...

add r1,r2,r3

mov [A],r1

Dpendance de
rsultat

Dpendance de
contrle

add r2,r3,r1

bz r4,etiq

div r1,r4,r1

mov [A],r1
2014,2016 F. Pellegrini

Anti-dpendance

etiq:

...
180

Dpendances d'instructions (3)


Lorsque le processeur n'est pas pipe-lin, des
instructions dpendantes peuvent tre
excutes l'une aprs l'autre sans problme
Le rsultat de l'instruction prcdente est connu
au moment o on en a besoin pour la suivante
add r2,r3,r1
add r4,r1,r4

2014,2016 F. Pellegrini

M WB
F

M WB

181

Dpendances d'instructions (4)


Lorsque le processeur est pipe-lin,
squencer deux instructions dpendantes
peut conduire des incohrences
La valeur d'un registre est lue dans la banque de
registres avant que l'instruction prcdente l'y ait
place
add r2,r3,r1
add r4,r1,r4

M WB

M WB

De multiples techniques existent pour


amoindrir les effets de ce problme
2014,2016 F. Pellegrini

182

Superscalarit
Afin d'augmenter le nombre d'instructions
traites par unit de temps, on fait en sorte
que le processeur puisse lire et excuter
plusieurs instructions en mme temps
Problmes de dpendances entre instructions
Entrelacement de code effectu par le
compilateur
Rordonnancement dynamique des instructions
par le processeur (excution out of order )
2014,2016 F. Pellegrini

183