Académique Documents
Professionnel Documents
Culture Documents
Systèmes à Microprocesseurs
--Cas du Microprocesseur Intel 8086--
Pr. A. AIT MADI
RST(S6)-ENSA -KENITRA 1
Plan
RST(S6)-ENSA -KENITRA 2
Chronologie des microprocesseurs
L'histoire des microprocesseurs est intimement liée à celle de la technologie des semi-
conducteurs dont voici les principales étapes :
1947: Invention du transistor
1958: TEXAS INSTRUMENTS produit le 1er circuit intégré (CI)
1961: Mise au point des technologies bipolaires TTL et ECL
1964: Intégration à petite échelle (SSI de 1 à 10 transistors)
1965: Intégration à moyenne échelle (MSI de 10 à 500 transistors)
1970: Mise au point de la technologie MOS
1971: Intégration à grande échelle (LSI de 500 à 20 000 transistors)
1985: Intégration à très grande échelle (VLSI plus de 20 000 transistors)
RST(S6)-ENSA -KENITRA 3
Chronologie des microprocesseurs
RST(S6)-ENSA -KENITRA 4
Chronologie des microprocesseurs
Années 1970
RST(S6)-ENSA -KENITRA 5
Chronologie des microprocesseurs
Années 1980
RST(S6)-ENSA -KENITRA 6
Chronologie des microprocesseurs
Années 1990
Dans les
années 1990 les
microprocesseu
rs traitent des
mots de 32 bits.
La fréquence du
bus ne peut
plus suivre celle
du
microprocesseur
. Apparaissent
donc deux
horloges : une
externe et une
interne, plus
rapide.
RST(S6)-ENSA -KENITRA 7
Chronologie des microprocesseurs
Années 1990
RST(S6)-ENSA -KENITRA 8
Chronologie des microprocesseurs
Années 2000
Dans les années
2000, la
progression de la
fréquence ralentit
sensiblement à
cause de
l'augmentation
rapide de la
dissipation
thermique, et ce
malgré les
diminutions
successives de la
finesse de gravure.
Des processeurs
multi-cœur font
peu à peu leur
apparition.
RST(S6)-ENSA -KENITRA 9
Chronologie des microprocesseurs
Année 2000
RST(S6)-ENSA -KENITRA 10
Chronologie des microprocesseurs
Année 2010
Dans les années 2010, la fréquence de l'horloge est stable. Le nombre de cœurs
augmente peu à peu
RST(S6)-ENSA -KENITRA 11
Rappels
Architecture d'un système à base de microprocesseur :
RST(S6)-ENSA -KENITRA 12
Rappels
Architecture d'un CPU:
Une CPU est formée par les trois éléments fonctionnels interconnectés suivants :
Registres (élément de mémorisation interne au processeur et contenant une
valeur)
UAL (ALU en anglais) : Unité arithmétique et logique. (opération arithmétiques
et logiques)
Unité de contrôle (lecture en mémoire et décodage de l’instruction)
RST(S6)-ENSA -KENITRA 13
Rappels
Ecriture en mémoire:
Pour écrire une donnée dans la mémoire le microprocesseur doit:
placer l'adresse de la donnée sur le bus d'adresses (son emplacement dans la
mémoire)
puis placer la donnée sur le bus de données
et enfin générer le signal WRITE (ordre d'écriture dans la mémoire).
RST(S6)-ENSA -KENITRA 14
Rappels
Lecture d’une mémoire:
Pour lire une donnée de la mémoire le microprocesseur doit:
connaître son emplacement, en effet déposer son adresse sur le bus d'adresses
puis générer le signal READ (demande une opération de lecture de la mémoire)
recevoir la donnée acheminée à travers le bus de données. La donnée sera
stockée dans un registre dans le microprocesseur.
RST(S6)-ENSA -KENITRA 15
Pourquoi 8086 ?
L'Intel 8086 (également appelé iAPX 86) est un microprocesseur CISC 16 bits
fabriqué par Intel à partir de 1978
C'est le premier processeur de la famille Intel x86 (8086, 80186, 80286, 80386,
80486, Pentium, ...),
qui est devenue l'architecture de processeur la plus répandue dans le monde des
ordinateurs personnels, stations de travail et serveurs informatiques.
RST(S6)-ENSA -KENITRA 16
Brochage du 8086
RST(S6)-ENSA -KENITRA 17
Brochage du 8086
Schéma fonctionnel
RST(S6)-ENSA -KENITRA 18
Brochage du 8086
Le 8086 se présente sous la forme d’un boitier de 40 broches
Il dispose de 20 lignes pour le bus d’adresse A19..A16AD15..AD0
Un Bus de donnée de 16 lignes
Il peut adresser une mémoire de 1Mo
Vcc et GND: assurent l’alimentation du microprocesseur
CLK (Clock): entrée destinée à recevoir les signaux de l’horloge système
RST(S6)-ENSA -KENITRA 19
Brochage du 8086
READY: entrée de synchronisation avec la mémoire
/TEST: entrée de mise en attente du microprocesseur d’un événement
extérieur
MN//MX: Entrée de choix du mode de fonctionnement du microprocesseur:
• Mode minimum(MN//MX=1): le 8086 fonctionne de manière autonome, il
génère lui-même le bus de commande (/RD,/WR,….)
• Mode maximum (MN//MX=0): ces signaux de commandes sont produits par
un contrôleur de bus, le 8288. ce mode permet de réaliser des systèmes
multiprocesseurs
NMI et INTR : entrées de demande d’interruption. INTR : interruption normale,
NMI (Non Maskable Interrupt) : interruption prioritaire.
/INTA : (Interrupt Acknowledge), indique que le microprocesseur accepte
l’interruption.
HOLD et HLDA : signaux de demande d’accord d’accès direct à la mémoire
(DMA).
S0 à S7 : signaux d’état indiquant le type d’opération en cours sur le bus.
A16/S3 `a A19/S6 : 4 bits de poids fort du bus d’adresses, multiplexés avec 4
bits d ’état
RST(S6)-ENSA -KENITRA 20
Brochage du 8086
ALE(Adress Latch Enable): commande de la mémorisation de l’adresse
générée par le microprocesseur. La mémorisation se fait dans une bascule
Verrou (Latch)
Circuit de démultiplexage du bus AD
Les signaux de contrôle /RD et /WR ne sont générés que lorsque les
données sont présentes sur le bus ADi
RST(S6)-ENSA -KENITRA 22
Brochage du 8086
M//IO (Memory Input/Output): indique si le 8086 adresse une mémoire
(M//IO =1) ou une interface d’entrée/sortie (M//IO =0)
/DNE (Data Enable): indique que des données sont en train de circuler sur le
bus AD (équivalent de ALE pour les adresses)
RST(S6)-ENSA -KENITRA 23
Brochage du 8086
/BHE(Bus High Enable): signal de lecture de l’octet de poids fort du bus de
données.
• Le 8086 possède un bus d’adresses sur 20 bits, d’où la capacité d’adressage
de 1 Mo ou 512 Kmots de 16 bits (bus de données sur 16 bits)
• Le méga-octet adressable est divisé en deux banques de 512 Ko chacune : la
banque inférieure (impaire) et la banque supérieure (paire) Ces deux banques
sont sélectionnées par :
A0 : pour la banque paire qui contient les octets de poids faible
/BHE : pour la banque impaire qui contient les octets de poids fort
RST(S6)-ENSA -KENITRA 24
Brochage du 8086
RST(S6)-ENSA -KENITRA 25
Générateur Système minimum Exemple de buffers:
d’horloge 2 transmetteurs
3 Latchs 8 bits
bidirectionnels 8 bits
chacun
RST(S6)-ENSA -KENITRA 26
Architecture du 8086
RST(S6)-ENSA -KENITRA 27
Architecture du 8086
On distingue deux unités internes:
Unité d’Interfaçage de Bus (UIB) qui a pour rôle de:
• récupérer et stocker les informations à traiter
• établir les transmissions avec les bus du système
Unité d’Exécution (UE) qui a pour rôle de:
• exécuter les instructions qui lui sont transmises par l'UIB
RST(S6)-ENSA -KENITRA 28
Registres du 8086
Le microprocesseur 8086 dispose de 14 registres
RST(S6)-ENSA -KENITRA 29
Registres du 8086
4 registres généraux (AX, BX, CX, DX) de 16 bits
• Ils peuvent être utilisés dans toutes les opérations arithmétiques et logiques
• chaque registre est divisé en deux registres distincts de 8 bits
• on peut utiliser une partie du registre si on veut y stocker une valeur n'excédant
pas 8 bits
• Si la valeur qu’on désire ranger dans ce type de registre excède 8 bits, on
utilise le registre complet
RST(S6)-ENSA -KENITRA 30
Registres du 8086
• Registre AX (Accumulateur): avec ce registre se font:
Toutes les opérations de transfert de données avec les entrées/sorties
Toutes les opérations de traitement des chaines de caractères
Toutes les opérations arithmétiques et logiques
• Registre BX (registre de base)
Utilisé pour l’adressage de données dans une zone mémoire différente de
la zone code
• Registre CX (registre compteur)
Sert comme compteur avec des instructions de boucles, pour compter le
nombre d’itérations
Remarque: le compteur CL sert en tant que compteur de nombre de
décalage et de rotation (à droite ou à gauche) de bits
• Registre DX (registre de données)
Utilisé lors des opérations de multiplication et de division
RST(S6)-ENSA -KENITRA 31
Registres du 8086
RST(S6)-ENSA -KENITRA 32
Registres du 8086
1 registre d’état de 16 bits:
• Le registre d'état sert à contenir l'état de certaines opérations effectuées par le
processeur
• L’état d’une opération est donné par 9 drapeaux (Flags) ou indicateurs
RST(S6)-ENSA -KENITRA 33
Registres du 8086
PF (Parity Flag) :
o Mis à 1 lorsque le résultat de l’opération contient un nombre pair de 1
o Sinon il est mis à 0
AF (Auxiliary Carry Flag) :
o Ce flag est à 1 lorsqu’un débordement non signé a lieu sur les 4 bits de
poids faible
ZF (Zero Flag)
o Ce flag est à 1 lorsque le résultat est nul
SF(Sign Flag)
o Ce flag est positionné à 1 si le bit du poids fort du résultat d’une addition ou
soustraction est 1
RST(S6)-ENSA -KENITRA 34
Registres du 8086
OF (Overflow Flag) :
o Indique un dépassement de capacité quand on travaille avec des nombres
signés. Comme par exemple si la somme de 2 nombres positifs donne un
nombre négatif ou inversement. (40h + 40h = 80h et OF=1)
DF (Direction Flag) :
o Ce flag est utilisé par quelques instructions pour traiter les chaines de
caractères
o Lorsque ce flag est placé à 0, la chaine est traitée octet par octet en
incrémentant les registres d’indexe SI et DI
o Lorsque ce flag est placé à 1, la chaine est traité octet par octet en
décrémentant les registres d’indexe SI et DI
RST(S6)-ENSA -KENITRA 35
Registres du 8086
IF (Interrupt Flag)
o IF=1: les interruptions, générées par des dispositifs externes, sont
autorisées
o IF=0: ces interruptions sont masquées
TF (Trap Flag) :
o Mis à 1 pour que le microprocesseur exécute le programme pas à pas,
pour faciliter la recherche des erreurs d’exécution
RST(S6)-ENSA -KENITRA 36
Registres du 8086
4 Registres pointeurs et indexes (SP, BP, SI et DI) de 16 bits
• Ces registres sont plus spécialement adaptés au traitement des
éléments dans la mémoire
• Ils sont en général munis de propriétés d'incrémentation et de
décrémentation
RST(S6)-ENSA -KENITRA 37
Registres du 8086
RST(S6)-ENSA -KENITRA 38
Registres du 8086
RST(S6)-ENSA -KENITRA 39
Segmentation de la mémoire
• Il y a 4 segments de mémoire:
1 segment de code ( le programme)
2 segments de données (les variables)
1 segment pour la pile (voir plus loin)
RST(S6)-ENSA -KENITRA 40
Segmentation de la mémoire
RST(S6)-ENSA -KENITRA 41
Segmentation de la mémoire
• Les segments peuvent être superposés (Overlap): les segments ne sont pas
nécessairement distincts les uns des autres, ils peuvent se chevaucher ou se
recouvrir complétement.
RST(S6)-ENSA -KENITRA 42
Calcul de l’adresse
• Adresse logique
• L’adresse logique d’un emplacement mémoire dans un segment est:
Segment:Offset
Segment=Contenu d’un registre segment
Offset = Déplacement par rapport à Segment
RST(S6)-ENSA -KENITRA 43
Calcul de l’adresse
RST(S6)-ENSA -KENITRA 44
Calcul de l’adresse
• Adresse physique
Le bus d’adresse du 8086 possède 20 bits
Chaque adresse de 20 bits est formée par la juxtaposition d'un registre
segment (16 bits de poids fort) et d'un déplacement (offset, 16 bits de
poids faible)
Adresse physique= Segment * 16+ offset
RST(S6)-ENSA -KENITRA 45
Exercices
• Exercice 1
On donne le découpage mémoire suivant:
RST(S6)-ENSA -KENITRA 46
Exercices
• Exercice 2
De combien s’incrémente une adresse physique si on incrémente le segment
de 100 ? (1600)
• Exercice 3
Soit l’adresse mémoire physique suivante CCB01h
o Choisir 4 adresses sous la forme Segment:Offset correspondantes?
(C000:CB01, C001:CAF1, C002:CAE1, C003:CAD1)
o Calculer le segment, si l’offset est égale à FFF1h ? (BCB1)
o Calculer l’Offset, si le segment est égale à BFFFh ? (CB11)
RST(S6)-ENSA -KENITRA 47
Exercices
• Exercice 4
Pour initialiser le microprocesseur le signal de contrôle RESET doit être
maintenu à 1 pendant au moins 4 périodes d’horloge. Après RESET les
registres segments CS, ES, DS et SS ainsi que le pointeur d’instruction IP
sont initialisés comme suit:
RST(S6)-ENSA -KENITRA 48
Exercices
• Exercice 4 (corrigé)
L’adresse logique est donnée par l’association:
CS:IP=FFFFh:0000h
L’adresse physique (adresse de BootStrap) est donnée par:
CS*16+IP=FFFF0h
L’instruction se trouvant à l’adresse FFFF0h est généralement un saut vers le
programme principal qui initialise ensuite les autres registres de segment.
RST(S6)-ENSA -KENITRA 49
Exercices
• Exercice 5
La pile est une zone mémoire gérée d’une façon particulière. Elle est
organisée comme une pile d’assiettes. On pose et on retire les assiettes
toujours sur le haut de la pile
Un seul registre d’adresse suffit donc pour la gérer, c’est le stack pointer SP.
On dit que c’est une pile LIFO (Last IN, First Out).
Empiler une donnée : sauvegarder une donnée sur (le sommet) de la pile
Dépiler une donnée : retirer une donnée (du sommet) de la pile
RST(S6)-ENSA -KENITRA 50
Exercices
À partir des trois figures, expliquer le principe de l’empilement et le dépilement
d’une pile ?
RST(S6)-ENSA -KENITRA 51
Exercices
• Exercice 5 (corrigé)
Le registre segment de la pile SS contient 1050
Etat initial: (voir figure de gauche): le registre pointeur (Offset) SP contient
0008h. Il pointe sur le sommet de la pile (TOS: Top of Stack)
Principe de l’empilement: (voir figure du milieu)
o On demande de sauvegarder (PUSH AX) le registre AX (16 bits) dans la pile
On décrémente d’abord le pointeur SP de 2 (SP=SP-2) SP contient 0006h
On écrit les deux octets de AX dans le nouveau TOS (12 et 34)
Principe de dépilement : (voir la figure de droite)
o On demande de restituer (POP AX) le registre AX de la pile
On retire d’abord les deux octets de donnée 12 et 34 vers le registre AX
On incrémente le pointeur SP de 2 (SP=SP+2: SP=0058)
o On demande de mettre (POP BX) dans le registre le contenu pointé par le
nouveau TOS
On retire les deux octets AA et BB vers le registre BX
On incrémente le pointeur SP de 2 (SP=005Ah)
RST(S6)-ENSA -KENITRA 52