©pierre marchand, 2001 24 objectifs : À la fin de cette unité vous connaîtrez...

38
©Pierre Marchand, 2001 1 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. Unité 5a: Architecture du Pentium

Upload: gisbert-villeneuve

Post on 04-Apr-2015

104 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 1

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.

Unité 5a: Architecture du Pentium

Page 2: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 2

Pourquoi l’assembleur ?• 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

Unité 5a: Architecture du Pentium

Page 3: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 3

Pourquoi l’assembleur ?• 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

Unité 5a: Architecture du Pentium

Page 4: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 4

Pourquoi l’assembleur ?• Universellement utilisé

• Indispensable dans la programmation des microcontrôleurs ou des systèmes embarqués

• Finalement, parce que c’est amusant!!

Unité 5a: Architecture du Pentium

Page 5: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 5

Inconvénients de l’assembleur ?• 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

Unité 5a: Architecture du Pentium

Page 6: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 6

Architecture de von Neumann

Unité 5a: Architecture du Pentium

0

nF

816

PC

R1

R2

R3

R4

R5

Acc1

Acc2

Tampon

Tampon

ALU

DécaleurSS

01

F

Décodeur

Micropro-gramme

IR

Tampon

L 0L 1Verrou Verrou

BUS DE DONNÉES

CCR

BUS DE CONTRÔLE

BUS D'ADRESSES

Page 7: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 7

Architecture de von NeumannExécution séquentielle des instructions

• Chargement (fetch) de l’instruction dans IR

• Décodage de l’instruction

• Chargement des opérandes s’il 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 d’aujourd’hui.

Pourquoi ?

Unité 5a: Architecture du Pentium

Page 8: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 8

Architecture de von Neumann• Les registres n’ont que 8 bits

• Bus d’adresses de 16 bits -> 64 Ko max de RAM

• Même si on mettait tous les registres à 32 bits et des bus de données et d’adresses de 32 bits, on n’aurait pas encore une performance élevée.

• Les accès mémoire prennent de l’ordre 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.

Unité 5a: Architecture du Pentium

Page 9: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 9

Architecture de von Neumann• Même en ajoutant des instructions de virgule flottante et la mémoire

virtuelle, on n’aurait pas encore une performance comparable à celle des processeurs actuels.

• En effet, il n’y a qu’une unité d’exécution. Chaque instruction prend au moins quatre à six cycles :

- Chargement de l’instruction

- Décodage de l’instruction

- Exécution de l’instruction

- Écriture du résultat.

• Et, le cas échéant,

- Chargement d’un ou deux opérandes

Unité 5a: Architecture du Pentium

Page 10: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 10

Architecture de von NeumannOr les processeurs actuels effectuent en moyenne plus d’une instruction par cycle.

Comment y parviennent-ils ?

Unité 5a: Architecture du Pentium

Page 11: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 11

Amélioration de la performanceExaminons différentes façons d’améliorer la performance d’un proces-seur :

1. Augmenter la vitesse de l’horloge.

• 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 aujourd’hui à ~ 0,15 microns (µm). Les vitesses d’horloge atteignent présentement ~1000 MHz.

Unité 5a: Architecture du Pentium

Page 12: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 12

Amélioration de la performance2. 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 s’exécutent en 1 cycle

d’horloge.

3. Introduire du parallélisme

• Pipeline.

• Plusieurs unités d’exécution travaillant simultanément :

Processeurs superscalaires (plus d’une instruction par cycle d’horloge).

• Prédiction de branchements.

Unité 5a: Architecture du Pentium

Page 13: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 13

Amélioration de la performance4. 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é d’informations (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.

Unité 5a: Architecture du Pentium

Page 14: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 14

Le Pentium II

Unité 5a: Architecture du Pentium

Page 15: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 15

Le Pentium IILe Pentium est un processeur CISC :

• Nombre élevé d’instructions

• 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 l’exécution de chaque instruction en 1 cycle

Il adopte cependant plusieurs des principes de la technologie RISC :

• Pipeline

• Multiples unités d’exécution

Unité 5a: Architecture du Pentium

Page 16: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 16

Le Pentium II

Unité 5a: Architecture du Pentium

Cache deniveau 2(512 Ko)

Bus système

Bus du cache

Unité d'interface de bus

Cache d'instruc-tions (16 Ko)

Cache de données(16 Ko)

Recherche Chargement Stockage

Registres

Bassind'instructions

Unité de recher-che/décodage

Unité de lance-ment/exécution

Unité decomplétion

Page 17: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 17

Registres de base

Unité 5a: Architecture du Pentium

AH AL

BH BL

CH CL

DH DL

Registres généraux

31 15 7 0

SI

DI

BP

SP

EAX AX

EBX BX

ECX CX

EDX DX

ESI

EDI

EBP

ESP

Registres de Segment

CS

DS

SS

ES

FS

GS

15 0

Registres d'état et de contrôle31 0

EFLAGS

EIP

31 0

Registres fantômes

Code

Data

Stack

Extra

F

G

Source indexDestination indexBase pointerStack pointer

Descriptor

Descriptor

Descriptor

Descriptor

Descriptor

Descriptor

FLAGS

IP

Page 18: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 18

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

Unité 5a: Architecture du Pentium

Page 19: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 19

Registres de segmentSegment code CS

Segment pile SS

Segment données DS

Segment extra ES

Segment F FS

Segment G GS

AutresCompteur ordinal EIP

Registre d’état et de contrôle EFlags

Unité 5a: Architecture du Pentium

Page 20: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 20

Registres de virgule flottante

Unité 5a: Architecture du Pentium

Opcode

Registres de données

MantisseExposant

79 78 64 63 0

R7

R6

R5

R4

R3

R2

R1

R0

Signe

Pointeur d'instruction de FPU

Pointeur d'opérande de FPU

Registre decontrôle

Registred'état

RegistreÉtiquette

15 0 47 0

10 0

Page 21: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 21

Registres MMXIl est à noter que ces 8 registres sont physiquement les mêmes que les registres de virgule flottante.

Unité 5a: Architecture du Pentium

MM7

63 0

MM6

MM5

MM4

MM3

MM2

MM1

MM0

Page 22: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 22

Registres SIMDIl est à noter que ces 8 registres sont physiquement les mêmes que les registres de virgule flottante.

Unité 5a: Architecture du Pentium

XMM7

127 0

XMM6

XMM5

XMM4

XMM3

XMM2

XMM1

XMM0

Page 23: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 23

Le registre EFLAGS

Unité 5a: Architecture du Pentium

CF = Carry FlagPF = Parity FlagAF = Auxiliary Carry FlagZF = Zero FlagSF = Sign FlagTF = Trap FlagIF = Interrupt Enable FlagDF = Direction FlagOF = Overflow FlagIOPL = I/O Privilege Level

NT = Nested Task FlagRF = Resume FlagVM = Virtual 386 ModeAC = Alignment CheckVIF = Virtual Interrupt FlagVIP = Virtual Interrupt PendingID = Identification Flag

31 16 15 8 7 0

CF

PF

AF

ZF

SF

TF

IF

DF

OF

NT

RF

IOPL

VM

AC

VIF

VIP

ID 0 1000 0 0 0 0 0 0 0 0 00

Page 24: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 24

Autres registres

CR0 à CR4 (mémoire virtuelle)

Global Descriptor Table Register GDTR

Interrupt Descriptor Table Register IDTR

Local Descriptor Table Register LDTR

Task Register TRDebug Registers DR0 à DR7

Test Registers TR6 et TR7

Time Stamp Counter TSC

Unité 5a: Architecture du Pentium

Page 25: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 25

Historique

• L’histoire de la famille 80x86 d’Intel commence dans les années 70 avec le 8080, un processeur de 8 bits avec un bus d’adresses 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 d’IBM. 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.

Unité 5a: Architecture du Pentium

Page 26: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 26

Historique

• Toutefois, même si le bus d’adresses était de 20 bits, les registres internes d’adresses é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.

Unité 5a: Architecture du Pentium

Page 27: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 27

Historique

On décida que l’adresse serait constituée des 16 bits des registres internes ajoutée à 16 fois le contenu d’un de quatre registres appelés registres de segment.

Unité 5a: Architecture du Pentium

Adresse 20 bits

Offset 16 bits+

0000Segment

Ces quatre registres étaient CS (Code Segment), DS (Data Segment),SS (Stack Segment) et ES (Extra Segment).

Page 28: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 28

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 d’adresses de 24 bits (capacité de 16 Mo). C’est là que les choses se compliquent.

Unité 5a: Architecture du Pentium

Page 29: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 29

Historique

• Jusqu’alors, les processeurs fonctionnaient en ce qu’Intel appelle le « mode réel ». Les systèmes d’exploitation utilisés avec ces processeurs étaient mono-tâches et mono-usagers. Les registres de segment contenaient de vraies adresses, et l’utilisateur 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 d’adresses de 24 bits du 80286?

Unité 5a: Architecture du Pentium

Page 30: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 30

Historique

• Pour permettre l’avènement de systèmes d’exploitation 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.

Unité 5a: Architecture du Pentium

Page 31: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 31

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 d’accès pour la sécurité, des niveaux de privilège d’exé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.

Unité 5a: Architecture du Pentium

Page 32: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 32

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.

Unité 5a: Architecture du Pentium

Page 33: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 33

HistoriqueSé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

Unité 5a: Architecture du Pentium

I n d e x T I R P L

2 1 01 5

Page 34: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 34

HistoriqueDescripteur 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

Unité 5a: Architecture du Pentium

31 16 15 0

limit 0-15base 0-15

63 48 47 32

base 16-23base 24-31DPL

G D O limit16-19

AVL

39

PS=0

AType

Droitsd'accès

56

Page 35: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 35

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 qu’aux 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.

Unité 5a: Architecture du Pentium

Page 36: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 36

Exemple :

En Cvoid main() {

short i, j, k;

i = 4;

j = 6;

k = i + j + 5;

}

Unité 5a: Architecture du Pentium

Page 37: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 37

Exemple :

En assembleur.586 ; Pentium

.model flat, stdcall ; mémoire 4 Go, appel de fonctions normal

option casemap:none ; 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 ?

Unité 5a: Architecture du Pentium

Page 38: ©Pierre Marchand, 2001 24 Objectifs : À la fin de cette unité vous connaîtrez l'architecture du Pentium du point de vue du programmeur. Pour y arriver,

©Pierre Marchand, 2001 38

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

Unité 5a: Architecture du Pentium