Title: Objectifs :
1Unité 5a Architecture du Pentium
- Objectifs
- À la fin de cette unité vous connaîtrez
l'architecture du Pentium du point de vue du
programmeur. Pour y arriver, vous devrez avoir
atteint les objectifs suivants - - énumérer les registres du Pentium accessibles
au programmeur. - - énumérer les indicateurs usuels et décrire leur
rôle.
2Unité 5a Architecture du Pentium
- Pourquoi lassembleur ?
- Rapide
- Compact
- Puissant
- Pour mieux comprendre et utiliser
- les langages de haut niveau
- - variables globales
- - variables locales et allocation dynamique
- - passage de paramètres et variables registres
- - déboguage
3Unité 5a Architecture du Pentium
- Pourquoi lassembleur ?
- Pour mieux comprendre et utiliser
- les compilateurs
- - édition de liens
- - génération de code
- La structure interne des processeurs
- La virgule flottante
- Les interruptions
- Pour mieux accéder aux périphériques
4Unité 5a Architecture du Pentium
- Pourquoi lassembleur ?
- Universellement utilisé
- Indispensable dans la programmation des
microcontrôleurs ou des systèmes embarqués - Finalement, parce que cest amusant!!
5Unité 5a Architecture du Pentium
- Inconvénients de lassembleur ?
- Plus long à programmer que les langages de haut
niveau - Pas de vérification de types
- Pas de structures de contrôle (if, while, etc.)
- Dépend du processeur
6Unité 5a Architecture du Pentium
- Architecture de von Neumann
7Unité 5a Architecture du Pentium
- Architecture de von Neumann
- Exécution séquentielle des instructions
- Chargement (fetch) de linstruction dans IR
- Décodage de linstruction
- Chargement des opérandes sil y a lieu
- Exécution
- Écriture du résultat
- Même avec une horloge de 500 MHz,
- un tel processeur serait plus lent que
- les processeurs daujourdhui.
- Pourquoi ?
8Unité 5a Architecture du Pentium
- Architecture de von Neumann
- Les registres nont que 8 bits
- Bus dadresses de 16 bits -gt 64 Ko max de RAM
- Même si on mettait tous les registres à 32 bits
et des bus de données et dadresses de 32 bits,
on naurait pas encore une performance élevée. - Les accès mémoire prennent de lordre de 100
ns. Le processeur a un temps de cycle de 2 ns à
500 MHz. - Il faudrait donc ajouter un cache de niveau 1
sur la puce et un cache de niveau 2. - Il manque encore la virgule flottante et la
mémoire virtuelle.
9Unité 5a Architecture du Pentium
- Architecture de von Neumann
- Même en ajoutant des instructions de virgule
flottante et la mémoire virtuelle, on naurait
pas encore une performance comparable à celle des
processeurs actuels. - En effet, il ny a quune unité dexécution.
Chaque instruction prend au moins quatre à six
cycles - - Chargement de linstruction
- - Décodage de linstruction
- - Exécution de linstruction
- - Écriture du résultat.
- Et, le cas échéant,
- - Chargement dun ou deux opérandes
10Unité 5a Architecture du Pentium
- Architecture de von Neumann
- Or les processeurs actuels effectuent en moyenne
plus dune instruction par cycle. - Comment y parviennent-ils ?
11Unité 5a Architecture du Pentium
- Amélioration de la performance
- Examinons différentes façons daméliorer la
performance dun proces-seur - 1. Augmenter la vitesse de lhorloge.
- Ceci implique généralement la réduction de la
géométrie sur la puce pour minimiser les délais
de propagation et la consommation de puissance.
La technologie en est aujourdhui à 0,15
microns (µm). Les vitesses dhorloge atteignent
présentement 1000 MHz.
12Unité 5a Architecture du Pentium
- Amélioration de la performance
- 2. Exécuter les différentes instructions de façon
combinatoire plutôt que séquentielle. - Multiplicateurs combinatoires, décaleurs à
barillet, retenue anticipée. - Viser à ce que la plupart des instructions
sexécutent en 1 cycle dhorloge. - 3. Introduire du parallélisme
- Pipeline.
- Plusieurs unités dexécution travaillant
simultanément - Processeurs superscalaires (plus dune
instruction par cycle dhorloge). - Prédiction de branchements.
13Unité 5a Architecture du Pentium
- Amélioration de la performance
- 4. Minimiser les accès à la mémoire
- Mémoire cache pour les données et les
instructions sur la puce du processeur lui-même. - Plus grand nombre de registres.
- 5. Augmenter la bande passante du bus
- Les processeurs modernes ont des bus de données
de plus en plus larges, ce qui augmente la
quantité dinformations (données et instructions)
lues lors de chaque accès à la mémoire. Par
exemple, le bus de données du Pentium est de 64
bits.
14Unité 5a Architecture du Pentium
15Unité 5a Architecture du Pentium
- Le Pentium II
- Le Pentium est un processeur CISC
- Nombre élevé dinstructions
- La plupart des instructions peuvent accéder à
la mémoire - Instructions de longueur très variable (8 à 108
bits) - Faible nombre de registres (4 registres
généraux) - On ne vise pas lexécution de chaque
instruction en 1 cycle - Il adopte cependant plusieurs des principes de la
technologie RISC - Pipeline
- Multiples unités dexécution
16Unité 5a Architecture du Pentium
17Unité 5a Architecture du Pentium
7
31
15
0
EAX AX
A
H
A
L
B
H
B
L
EBX BX
Registres généraux
ECX CX
C
H
C
L
D
H
D
L
EDX DX
Source index
ESI
SI
Destination index
DI
EDI
Base pointer
BP
EBP
Stack pointer
SP
ESP
Registres de Segment
Registres fantômes
15
0
Descriptor
CS
C
o
d
e
Descriptor
DS
D
a
t
a
Descriptor
S
t
a
c
k
SS
Descriptor
E
x
t
r
a
ES
Descriptor
FS
F
Descriptor
G
GS
Registres d'état et de contrôle
31
0
EFLAGS
FLAGS
31
0
EIP
IP
18Unité 5a Architecture du Pentium
- Registres généraux
- Accumulateur eax, ax, ah, al
- Registre de Base ebx, bx, bh, bl
- Registre de Comptage ecx, cx, ch, cl
- Registre de Données edx, dx, dh, dl
- Indice source esi,si
- Indice destination edi,di
- Pointeur de base ebp,bp
- Pointeur de pile (stack) esp, sp
19Unité 5a Architecture du Pentium
- Registres de segment
- Segment code CS
- Segment pile SS
- Segment données DS
- Segment extra ES
- Segment F FS
- Segment G GS
- Autres
- Compteur ordinal EIP
- Registre détat et de contrôle EFlags
20Unité 5a Architecture du Pentium
- Registres de virgule flottante
Registres de données
64 63
79 78
0
Signe
R0
Exposant
Mantisse
R1
R2
R3
R4
R5
R6
R7
15
47
0
0
Registre de
Pointeur d'instruction de FPU
contrôle
Registre
Pointeur d'opérande de FPU
d'état
10
0
Registre
Étiquette
Opcode
21Unité 5a Architecture du Pentium
- Registres MMX
- Il est à noter que ces 8 registres sont
physiquement les mêmes que les registres de
virgule flottante.
63
0
MM0
MM1
MM2
MM3
MM4
MM5
MM6
MM7
22Unité 5a Architecture du Pentium
- Registres SIMD
- Il est à noter que ces 8 registres sont
physiquement les mêmes que les registres de
virgule flottante.
127
0
XMM0
XMM1
XMM2
XMM3
XMM4
XMM5
XMM6
XMM7
23Unité 5a Architecture du Pentium
3
1
1
6
1
5
8
7
0
V
V
I
C
P
A
Z
S
T
I
D
O
N
R
I
O
V
A
I
I
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
F
F
F
F
F
F
F
F
F
T
F
P
L
M
C
D
F
P
CF Carry Flag PF Parity Flag AF Auxiliary
Carry Flag ZF Zero Flag SF Sign Flag TF
Trap Flag IF Interrupt Enable Flag DF
Direction Flag OF Overflow Flag IOPL I/O
Privilege Level
NT Nested Task Flag RF Resume Flag VM
Virtual 386 Mode AC Alignment Check VIF
Virtual Interrupt Flag VIP Virtual Interrupt
Pending ID Identification Flag
24Unité 5a Architecture du Pentium
- Autres registres
- CR0 à CR4 (mémoire virtuelle)
- Global Descriptor Table Register GDTR
- Interrupt Descriptor Table Register IDTR
- Local Descriptor Table Register LDTR
- Task Register TR
- Debug Registers DR0 à DR7
- Test Registers TR6 et TR7
- Time Stamp Counter TSC
25Unité 5a Architecture du Pentium
- Historique
- Lhistoire de la famille 80x86 dIntel commence
dans les années 70 avec le 8080, un processeur de
8 bits avec un bus dadresses de 16 bits, qui
pouvait adresser un total de 64 Ko. - Vers 1980, le 8086 et le 8088 font leur
apparition, ce dernier avec le premier PC dIBM.
Ce sont des processeurs de 16 bits avec un bus
d adresses de 20 bits, qui avaient une capacité
d adressage de 1 Mo. Le 8088 diffère du 8086 par
la largeur du bus de données externe qui est de 8
bits.
26Unité 5a Architecture du Pentium
- Historique
- Toutefois, même si le bus dadresses était de
20 bits, les registres internes dadresses
étaient toujours de 16 bits pour assurer la
compatibilité avec le 8080. Comment donc accéder
au reste de la mémoire? - Toute la complexité des processeurs Intel vient
de la solution adoptée à cette époque pour régler
ce problème.
27Unité 5a Architecture du Pentium
- Historique
- On décida que ladresse serait constituée des 16
bits des registres internes ajoutée à 16 fois le
contenu dun de quatre registres appelés
registres de segment.
Segment
0000
Offset 16 bits
Adresse 20 bits
Ces quatre registres étaient CS (Code Segment),
DS (Data Segment), SS (Stack Segment) et ES
(Extra Segment).
28Unité 5a Architecture du Pentium
- Historique
- On remarque que chaque segment a une taille de
64 Ko (offset 16 bits), et que la distance entre
chaque segment peut aller de 16 octets à 64 Ko. - La capacité totale d adressage est
- FFFF0 FFFF 10FFEF,
- qui dépasse légèrement 1 Mo (FFFFF).
- Le 80286 fait son apparition quelques années
plus tard avec un bus dadresses de 24 bits
(capacité de 16 Mo). Cest là que les choses se
compliquent.
29Unité 5a Architecture du Pentium
- Historique
- Jusqualors, les processeurs fonctionnaient en
ce quIntel appelle le mode réel . Les
systèmes dexploitation utilisés avec ces
processeurs étaient mono-tâches et mono-usagers.
Les registres de segment contenaient de vraies
adresses, et lutilisateur pouvait accéder sans
limite à toutes les ressources du système les
périphériques, les interruptions, etc. - Toutefois, les registres de segment demeuraient
de 16 bits. Comment donc accéder aux 16 Mo que
permettait le bus dadresses de 24 bits du 80286?
30Unité 5a Architecture du Pentium
- Historique
- Pour permettre lavènement de systèmes
dexploitation plus performants et une plus
grande capacité de mémoire, Intel introduisit
avec le 80286 le mode protégé . - Mais comme la plupart des applications roulant
sous MS-DOS, qui dominait le marché, étaient
incompatibles avec le mode protégé, on continua
pendant des années à fonctionner en mode réel
avec une capacité de mémoire de 1 Mo.
31Unité 5a Architecture du Pentium
- Historique
- Le 80286 fut donc longtemps considéré comme un
8086 rapide parce que personne ne savait comment
utiliser le mode protégé. Pourtant, ce processeur
offrait la mémoire virtuelle, des droits daccès
pour la sécurité, des niveaux de privilège
dexécution, etc. - Pendant ce temps, Motorola mettait en marché la
famille 68000, qui offrait des registres de 32
bits et, à partir de 1985 avec le 68020, une
capacité d adressage de 4 Go.
32Unité 5a Architecture du Pentium
- Historique
- En 1987, Intel met au point le 80386, puis le
80486, ensuite le Pentium, le Pentium II en 1997,
le Pentium III en 1999 et finalement le Pentium 4
en 2001. Les ordinateurs que nous utilisons pour
ce cours sont munis de Pentium III.
33Unité 5a Architecture du Pentium
- Historique
- Sélecteur
- Index index dans une table de descripteurs,
possibilité de 8 K segments (13 bits). - TI indice de table 0 GDT, 1 LDT
- RPL niveau de privilège demandé 0 à 3
34Unité 5a Architecture du Pentium
- Historique
- Descripteur de segment
- Base adresse de départ du segment
- Limit taille du segment 0 à 1 méga-unités
- G granularité unité 1 octet si G 0 ou 4
Ko si G 1
3
1
1
6
1
5
0
l
i
m
i
t
0
-
1
5
b
a
s
e
0
-
1
5
6
3
4
8
4
7
3
2
3
9
5
6
D
A
S
l
i
m
i
t
b
a
s
e
1
6
-
2
3
b
a
s
e
2
4
-
3
1
P
G
D
O
V
P
T
y
p
e
A
1
6
-
1
9
L
L
0
D
r
o
i
t
s
d
'
a
c
c
è
s
35Unité 5a Architecture du Pentium
- Environnement
- Les ordinateurs de nos laboratoires fonctionnent
tous sous Windows 2000. - Ceci crée des difficultés pour la programmation
en assembleur - Les accès aux interruptions logicielles et
matérielles (accès au BIOS) ainsi quaux
entrées/sorties sont interdits sauf si on exécute
le programme à partie de la fenêtre DOS. - Pour que les programmes fonctionnent normalement
sous Windows 2000, il faut utiliser un assembleur
32 bits et effectuer des appels système pour
accéder aux fonctions système et aux
périphériques.
36Unité 5a Architecture du Pentium
- Exemple
- En C
- void main()
- short i, j, k
- i 4
- j 6
- k i j 5
-
37Unité 5a Architecture du Pentium
- Exemple
- En assembleur
- .586 Pentium
- .model flat, stdcall mémoire 4 Go, appel de
fonctions normal - option casemapnone respecte la casse
- include \masm32\include\kernel32.inc librairie
pour ExitProcess - includelib \masm32\lib\kernel32.lib
- .data? variables globales non initialisées
- i dw ? word 16 bits short
- j dw ?
- k dw ?
38Unité 5a Architecture du Pentium
- Exemple
- En assembleur
- .code
- start début du programme principal
- mov ax, 4
- mov i, ax i 4
- mov bx, 6
- mov j, bx j 6
- add ax, bx
- add ax, 5 i j 5
- mov k, ax résultat dans k
- invoke ExitProcess, 0 retourner à Windows
- end start fin du programme