Académique Documents
Professionnel Documents
Culture Documents
MIC2-MIC
Séance 1
Objectifs, évaluation et introduction
Crédit photo
Objectifs, évaluation et introduction Objectifs du cours
Objectifs du cours
Comprendre le microprocesseur :
I Ce qu’on y trouve ;
I Comment il fonctionne ;
I Son évolution.
Supports et ressources
I pas de livre ;
I mais ....
I des slides, des liens, des documents. . . sur poÉSI ;
MIC2
z }| {
MIC - MICL
Séance 2
Ouvrons le PC
Carte Mère
Carte Multiprocesseur
Carte Multiprocesseur
La Mémoire cache
La mémoire cache (également appelée antémémoire ou
mémoire tampon) est une mémoire rapide permettant de
réduire les délais d’attente des informations stockées en
mémoire vive.
En effet, la mémoire centrale de l’ordinateur possède une
vitesse bien moins importante que le processeur. Il existe
néanmoins des mémoires beaucoup plus rapides, mais dont
le coût est très élevé.
La solution consiste donc à inclure ce type de mémoire
rapide à proximité du processeur et d’y stocker
temporairement les principales données devant être
traitées par le processeur.
(HE2B - ÉSI) Microprocesseurs 2020 – 2021 16 / 290
Ouvrons le PC La Mémoire Cache
La Mémoire cache
La Mémoire cache
Séance 3
Microprocesseurs : Fonctionnement
Autres composants :
I Horloge
I Bus de données
I Bus d’adresses ;
I Mémoire (RAM)
Fonctionnement : Introduction
MOV EAX, 33
ADD EAX,ECX
Code machine : B82100000001C8
Exemple1 : B82100000001C8
Exemple1 : B82100000001C8
I DECODE :
(3) : Le décodeur (couplé avec le registre d’instruction
RI) décode l’instruction. Il s’agit d’un MOV sur 5 bytes.
Les portes (3) s’ouvrent ; RIP s’incrémente de 5 bytes et
vaut (0x10...89).
I EXECUTE : L’instruction est une affectation de 33
dans le registre EAX.
(4) : Les portes (4) s’ouvrent ; la donnée 33 circule dans
le bus de données vers l’ALU et le contenu du registre
EAX est écrasé par la valeur 33.
(5) : Fin de la première instruction.
Exemple1 : B82100000001C8
Exemple1 : B82100000001C8
I DECODE :
(8) : Le décodeur (couplé avec le registre d’instruction
RI) décode l’instruction. Il s’agit d’un ADD sur 2 bytes.
Les portes (3) s’ouvrent ; RIP s’incrémente de 2 bytes et
vaut (0x10...8B).
I EXECUTE : L’instruction est une addition du
contenu de ECX avec et dans celui de EAX.
(9) : Les portes (4) s’ouvrent ; la donnée (qui ici est une
instruction) circule dans le bus de données vers l’ALU qui
effectue l’addition. Le contenu du registre EAX est
écrasé par la valeur du résultat de l’opération EAX+ECX
c’est-à-dire 48.
(10) : Fin de la deuxième instruction et du processus.
La notion d’interruption.
Séance 4
Interruptions
Sommaire :
I Présentation
I Définition
I Vecteur d’interruptions (x86)
I INTR et Contrôleur d’interruptions (PIC)
I Déroulement d’une interruption
I Table d’interruptions
I Handler d’interruption
I Le registre RFLAGS
Présentation du problème
souris, . . . )
I une erreur d’exécution ? (instruction inconnue,
division par 0, . . . )
I du dialogue avec le système ? (appel système,
scheduling de processus, . . . )
Présentation : Polling(scrutation)
Présentation : Polling(scrutation)
Types d’interruptions
Exemples :
I Frappe sur le clavier ;
I ...
Définition : Exceptions
Exemples :
I Division par 0 ;
I Instruction inconnue ;
I ...
Définition : Appels-Système
Exemples :
I Demande de lecture sur fichier ;
I Demande d’écriture sur fichier ;
I Demande de modification des droits d’accès sur un
fichier ;
I Demande de fermeture d’un fichier ouvert ;
I ...
La broche INTR
La broche INTR
I INTR = INTerrupt Request ;
I Signale au processeur l’arrivée d’une interruption
matérielle.
Le contrôleur d’interruptions
I La broche INTR est unique.
Le contrôleur d’interruptions
I La broche INTR est unique ;
I Or plusieurs sources potentielles d’interruptions ;
Le contrôleur d’interruptions
I La broche INTR est unique ;
I Or plusieurs sources potentielles d’interruptions ;
I Il faut sérialiser les interruptions ;
Le contrôleur d’interruptions
Le contrôleur d’interruptions
Le contrôleur d’interruptions
Le contrôleur d’interruptions
Le contrôleur d’interruptions
Table d’interruptions
I Traiter l’interruption ;
I IRET.
Séance 5
Mode réel et mode protégé
Exemple
;cli.asm
global main
section .text
main :
cli
;fin
mov rax , 60
mov rdi , 0
syscall
Le mode réel
Le mode réel
mémoire centrale.
Segmentation
Segmentation
Exemple :
I MOV [10], AX signifie mettre le contenu de AX à
linéaire.
Pagination
I La pagination est un deuxième mécanisme de gestion
de la mémoire offerts par le processeur x86 à partir
de la version Intel 80386 ;
I Il consiste à découper les programmes en morceaux
de taille égale appelés des pages ;
I Chaque page du programme sera ensuite placée en
mémoire à un endroit différent.
I Ainsi, un même segment peut être divisé en plusieurs
pages, situées à des endroits différents de la mémoire.
I Les adresses linéaires doivent donc elles-mêmes être
traduites pour retrouver les adresses physiques !
(HE2B - ÉSI) Microprocesseurs 2020 – 2021 112 / 290
Mode réel et mode protégé Mode protégé
Pagination (suite)
mov AX , 0xB800
mov ES , AX
mov AL , ’h’
mov AH , 10010111b
mov [ES : 0xA0] , AX
On donne la valeur B800 au registre de segment ES on
donne une valeur arbitraire à AX que l’on place aux
positions B80A0 et B80A1 en memoire.
Mode et interruptions
Interruption : Résumé
Lors d’une interruption,
I le processeur termine l’instruction en cours ;
pile ;
I il remplace RIP par une valeur située en mémoire,
Interruption : Résumé
mode protégé.
Séance 6
Langage d’assemblage
Sommaire :
I au compilateur.
I Intel.
Différences :
I ordre des opérateurs ;
I spécifications de taille ;
I ...
Exemple1 :
I Intel : mov eax, 5
Exemple2 :
I Intel : mov ax, 5
Exemple3 :
I Intel : mov al, 5
Séance 7
Les modes d’adressage
Sommaire
I ...
0xB8A0.
I MOV RAX, [0xB8A0] ; direct. RAX reçoit la valeur (8
Exemple :
I MOV AX, [0xB8A0] ; direct. AX reçoit la valeur (2
l’adresse label1.
I MOV RAX, [label1] ; direct. RAX reçoit la valeur (8
) à l’adresse label1.
RISC vs CISC
RISC
I Signification : Reduced Instruction Set Computer ;
CISC
I Signification : Complex Instruction Set Compute ;
RISC vs CISC
I tab[4] <— 3
I tab[4].unChamp <— 6
I MOV RBX, 3
Remarques
noms ;
I Il existe encore d’autres modes d’adressages ;
Séance 8
Le codage des instructions assembleur x86 64 bits
Objectifs
Sommaire :
I Format général d’une instruction assembleur x86 64
bits ;
I Les préfixes : présentation générale ;
I Code machine x86 64 bits : Le code opératoire ;
I Code machine x86 64 bits : Le code des registres ;
I Code machine sur un byte fixe ;
I Code machine sur un byte ;
I Code machine avec valeur immédiate ;
I Le byte ModeR/M ;
I Le byte SIB ;
I Les préfixes : cas d’utilisation.
(HE2B - ÉSI) Microprocesseurs 2020 – 2021 159 / 290
Le codage des instructions assembleur x86 64 bits
https://software.intel.com/content/www/us/
en/develop/articles/intel-sdm.html ;
I Il faut apprendre à lire ces références car ce n’est pas
du tout évident ;
I Sur poEsi vous trouverez la documentation utile en
format PDF ;
I Exemple pour DEC et INCC.
I Mode réel ;
32 bits ;
I L’utilisation du préfixe REX sous la forme de REX.R
Op code
Exemple : CLC
CLC =⇒ F8
|{z}
op code
Le byte ModR/M
Utilisé pour les modes d’adressages complexes
ModR/M
|{z} | {z } | {z }
Mod divers R/M
Op code : 01
Mode adressage : 11
Registre : EBX = 011
Mémoire : EAX = 000
d’où : ADD EAX, EBX =⇒ 01 D8
Op code : 01
Mode adressage : 00
Registre : ESI = 110
Mémoire : EBP = 101
Déplacement en little endian : 0x34120000
d’où : ADD [0x1234], ESI =⇒ 01 35 34120000
ModR/M - récapitulatif
Le byte SIB
I Utilisé en complément au ModR/M
I Pour les modes d’adressages indexés (B + S × I )
SIB
|{z} | {z } | {z }
S I B
Le byte SIB
=⇒ A4
I REP MOVSB
=⇒ F3 A4
I ...
Préfixe de taille
I Le programmeur fixe la taille des registres à l’aide de
la macro [BITS 16],[BITS 32] ou [BITS 64] ;
I Un bit D qui se trouve dans le descripteur de
segment précise au processeur s’il doit utiliser les
registres 16 bits (D=0) ou 32 bits (D=1) ;
I Pour une instruction, on peut changer cette taille par
défaut à l’aide du préfixe 0x66 pour les opérandes et
0x67 pour les adresses.
66 : Instruction en 32 bits.
I MOV ECX, [EBP] =⇒ 67 66 8B 4D 00
I Opcode = 0x8B
précedents)
I SIB :
S : facteur multiplicateur (scale) = 01b car c’est 21
I : registre d’index = RDX = 010b
B : registre base = R9 = 001b
=⇒ SIB = 01010001b = 0x51
(HE2B - ÉSI) Microprocesseurs 2020 – 2021 219 / 290
Le codage des instructions assembleur x86 64 bits
Séance 9
Cartographie de la mémoire en mode réel
Sommaire :
I Accès à la ROM . . . ;
I Accès à la RAM . . . ;
I Accès aux périphériques . . . ;
I Cartographie de la mémoire . . . ;
I Exemples d’accès à un périphérique . . . .
La ROM
I Les bus de données et d’adresse permettent au
processeur de communiquer avec la mémoire.
I Une partie de cette mémoire est de la ROM (Read
Only Memory) non volatile.
I Les premières instructions exécutées au démarrage du
PC sont mémorisées en ROM.
I À cet endroit, vous trouvez un premier S.E. appelé le
BIOS (Basic Input Output System).
I Aujourd’hui, cette ROM est reprogrammable à l’aide
de logiciels. On dit "flasher" la ROM.
On parle de flasher, car aux premiers temps des ROM
programmables, on les effaçait en les éclairant avec une
lampe U.V. ou encore en les exposant au soleil.
(HE2B - ÉSI) Microprocesseurs 2020 – 2021 225 / 290
Cartographie de la mémoire en mode réel
La RAM
IN/OUT
MOV
Séance 10
Démarrage d’un ordinateur
Sommaire :
Séance 11
Coprocesseur mathématique
Sommaire :
I Introduction ;
I Intérêt et Format des données ;
I Les registres de données ;
I Les registres spéciaux ;
I La pile du x87 ;
I Les familles d’instructions ;
I Exemples de codes sources utilisant FPU
I Références.
La pile du x87
I Les 8 registres ST0 à ST7 du x87 sont accessibles
essentiellement comme une pile ;
I On peut dénombrer essentiellent 4 actions sur la pile
x87 :
L’initialisation de la pile (FINIT) ;
Le chargement d’une valeur au sommet de la pile avec
décalage dans la pile (FLD) ;
Le déchargement d’une valeur du sommet de la pile avec
décalage dans la pile (FST) ;
Les calculs effectués sur le ou les éléments au sommet
(exemple : FADD).
I Le x87 fonctionne en notation polonaise inversée
(NPI ou RPN).
(HE2B - ÉSI) Microprocesseurs 2020 – 2021 258 / 290
Coprocesseur mathématique
(INTEGER) ;
I P : shift de la pile vers le bas (POP) ;
SQRT, . . .
Références
Séance 12
Évolution des microprocesseurs
Sommaire :
I Historique ;
I Loi de Moore ;
I Co-processeurs ;
I Processeurs pipe-line ;
I classement SISD, SIMD ;
I Jeu d’instruction MMX ;
I Jeu d’instruction SSE ;
I Processeurs 64 bits ;
I Processeurs à plusieurs cores ;
Historique
Historique
I 1978 : processeurs à 16 bits et segmentation ; le 8086
et le 8088.
Le 8086 a des registres de 16 bits ;
il a des bus externes de données de 16 bits ;
il a 20 bits d’adressage qui donne 1Mb d’espace
adressable ;
Le 8088 est similaire au 8086 sauf qu’il a un bus de 8
bits de données externe ;
Le 8086 et 8088 introduisent la segmentation.
I 1982 : processeur x286.
Le x286 introduit le mode protégé dans l’architecture
IA-32.
Historique
I 1985 : processeurs x386.
Le x386 est le premier processeur 32 bits dans la famille
de l’architecture IA-32 ;
Introduction des registres 32 bits pour les opérandes et
l’adressage ;
La partie basse de chaque registre 32 bits offre les
propriétés des registres 16 bits des générations
précédentes ;
Le processeur offre un mode virtuel 8086 ;
Bus adresse 32 bits qui supporte 4Gb de mémoire
physique ;
Mémoire segmentée et modèle mémoire plat ;
Pagination avec une taille de 4Kb par page ;
Support pour les étapes parallèles.
(HE2B - ÉSI) Microprocesseurs 2020 – 2021 267 / 290
Évolution des microprocesseurs
Historique
Historique
I 1995 à . . . : processeurs Pentium.
Le processeur P6 était basé sur une micro-architecture
superscalaire ;
Utilisation des techniques de calcul parallèle ;
Pentium II, ajoute la technologie MMX à la famille P6 ;
Pentium III, introduit le Streaming SIMD Extensions
(SSE) à l’architecture IA-32 ;
SSE extensions offre un nouvel ensemble de registres 128
bits et la possibilité de réaliser des opérations SIMD sur
des packets de valeurs à virgule flottante simple
précision ;
Pentium 4, introduit le Streaming SIMD Extension2
(SEE2) ;
Pentium MMX (MultiMedia eXtension)
(HE2B - ÉSI) Microprocesseurs 2020 – 2021 269 / 290
Évolution des microprocesseurs
Historique
Historique
Loi de Moore
Loi de Moore
Co-processeurs
I le co-processeur Mathématique ;
I le co-processeur D.M.A. ;
I le co-processeur Graphique ;
I ...
I Exécution de l’instruction ;
3DNow !
Processeurs 64 bits
I Conjointement à ces nouveaux jeux d’instructions, les
registres classiques augmentent de taille.
I Les registres EAX, EBX, . . . sont étendus à 64 bits et
s’appelle RAX, RBX, . . .
I Augmentation du nombre de registres classiques
étendus à 64 bits.
I Les adresses sont sur 64 bits, ce qui offre un espace
adressable de ≈ 16.1018 bytes.
I Les bus d’adresses des processeurs actuels sont
cependant limités à 40, 42 ou 44 fils.
Crédits
Ces slides sont le support pour la présentation orale de l’activité
d’apprentissage MIC2-MIC à HE2B-ÉSI
Crédits
Les distributions Ubuntu et/ou debian
du système d’exploitation GNU Linux.
LaTeX/Beamer comme système d’édition.
Git et GitHub pour la gestion des versions et le suivi.
GNU make, rubber, pdfnup, . . . pour les petites tâches.
Images et icônes
deviantart, flickr, The Noun Project