Vous êtes sur la page 1sur 21

P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr.

METIDJI

Chapitre 1 : Architecture d’un Microprocesseur

1- Historique des microprocesseurs :

- Premier microprocesseur : Intel, 1971, microprocesseur 4004, puis 8008, premier microordinateur :
le Micral, 1973, France, puis l’Altair, 1975, Etats-Unis.
- Autres microprocesseurs : 8080 et 8085 d’Intel, 6800 de Motorola, Z80 de Zilog : microprocesseurs
8 bits, 1974.
- Microprocesseurs 16 bits : 8086/8088 (1978-1979) d’Intel, 68000 de Motorola.
- Microprocesseurs 32 bits en 1986 : 80386 d’Intel et 68020 de Motorola.
- Ordinateurs de plus en plus puissants, basés sur des microprocesseurs performants : Pentium
d’Intel, PowerPC d’IBM 1993,
- Systèmes embarqués : microcontrôleurs, processeurs de traitement de signal (DSP), ...

2- Concepts de base :
Quand un problème est posé, on essaie normalement de trouver une solution. L’expression de cette
solution sous la forme d’une procédure à suivre pas à pas s’appelle un algorithme.
Une fois que la solution d’un problème a été exprimée sous la forme d’un algorithme, il faut traduire
celui-ci en langage compréhensible par l’ordinateur. Seul un dérivé bien défini de la langue naturelle, appelé
langage de programmation, peut être compris par l’ordinateur. On appelle programmation la conversion
d’un algorithme en une séquence d’instruction appartenant à un langage de programmation. La phase de
traduction de l’algorithme en langage de programmation s’appelle un codage.
2-1 Représentation interne de l’information :
Dans un système microprogrammé à base de microprocesseurs et/ou de microcontrôleurs, toute
information (nombre ou texte alphanumérique) est stockée sous forme de groupe de bits. En effet ces
systèmes électroniques ne savent distinguer qu’entre deux niveaux : présence ou absence de tension ! Pour
représenter deux niveaux logiques (niveau haut de tension et niveau bas) il est donc obligatoire d’utiliser un
système de numération à base de deux : le système binaire qui utilise deux chiffres, le 0 et le 1 pour
représenter n’importe quel nombre sous formes d’une série de 0 et de 1. Chaque chiffre est appelé Bit
(BInary uniT en anglais) et un ensemble de huit bits est un Octet (Byte en anglais).
Exp : B’1001=1×20+0×21+0×22+1×23=9.
2-2 Représentation externe de l’information :
La représentation externe de l’information est la manière dont l’information apparaît à l’utilisateur. Elle
est représentée essentiellement sous trois formes : binaire, octal ou hexadécimal et symbolique.
Quelque fois il est souhaitable d’afficher l’information interne directement sous forme binaire en
utilisant des diodes électroluminescente (LED), une telle représentation peut être nécessaire pour mise au
point détaillé d’un programme complexe, mais elle est bien sûr très délicate à l’échelle humaine.

1
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

Ecrire des nombres en binaire par une succession de 1 et de 0 sur une taille élevée (plusieurs bits) n’est
pas facile à gérer et peut même être une source d’erreur d’écriture. Pour y remédier à ça, des représentations
plus commodes ont été inventées (octal et hexadécimal) qui facilite la communication homme/machine.
En octal : 000 100 111 soit donc 047 en octal.
En hexadécimal : 1010 0001 soit donc A1 en hexadécimal.
La représentation symbolique désigne la représentation externe de l’information dans sa forme
symbolique proprement dit. Les nombres décimaux sont représentés comme des nombre décimaux et non
comme suite de symboles hexadécimaux ou bits. De même les textes sont représentés en clair.
La représentation symbolique est la plus pratique pour l’utilisateur. Cependant, elle nécessite une
interface sous forme d’un clavier alphanumérique, plus une imprimante ou un terminal à écran CRT.

3- Structure basique d’un calculateur :


L’élément de base d’un calculateur est constitué par l’unité centrale de traitement (UCT, CPU :
Central Processing Unit) ou le microprocesseur.

Figure 1: Architecture de base d'un calculateur

3-1 Le Microprocesseur :
Le microprocesseur ( M.P.U. : MicroProcessor Unit ; C.P.U. : Central Processing Unit) est un circuit
intégré complexe (ensemble de millions de transistors) capable d'effectuer séquentiellement et
automatiquement des suites d'opérations élémentaires (programme). Le microprocesseur remplit deux
fonctions essentielles : le traitement des données et le contrôle du système.
L’unité centrale de traitement (UCT, CPU : Central Processing Unit) est constituée d’une unité de
calcule et une unité de contrôle.

2
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

3-1-1 L’unité de calcule :


Concerne la manipulation des données sous formes de transfert (déplacement), opérations arithmétiques,
opérations logiques. Elle est constituée de l’Unité Arithmétique et logique UAL et d’un certain nombre de
registres.

L’UAL est constituée d'un circuit logique combinatoire qui reçoit deux opérandes A (An...A1 A0) et B
(Bn . . . B1 B0) et produit le résultat S (Sm . . . S1 S0) selon l'indication appliquée sur l'entrée C (Ck… C1
C0). Les opérations réalisées peuvent être soit arithmétiques, S=A+B, S=A-B, S=AxB … ou
logiques S=A OU B, S=A ET B, S= A XOR B …

Figure 2: L’UAL

Deux registres sont associés à l'UAL : l'accumulateur et le registre d'état.


3-1-3 L’unité de contrôle :
Elle permet de "séquencer" le déroulement des instructions. Elle effectue la recherche en mémoire de
l'instruction, le décodage, l'exécution et la préparation de l'instruction suivante. L'unité de commande
élabore tous les signaux de synchronisation internes ou externes (bus des commandes) au microprocesseur.
3-1-2 Les registres :
Il y’a les registres d'usage général, les registres d'adresses (pointeurs), le registre d’instruction et le
registre d’état.
Les registres d'usage général :
Ce sont des mémoires rapides, à l'intérieur du microprocesseur, qui permettent à l'UAL de manipuler
des données à vitesse élevée. Ils sont connectés au bus de données interne au microprocesseur. L'adresse
d'un registre est associée à son nom (on donne généralement comme nom une lettre) A, B,C...
Les registres d'adresses (pointeurs) :
Ce sont des registres connectés sur le bus d’adresses. On peut citer comme registre :

3
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

- Le compteur ordinal (pointeur de programme PC ou IP) ;


- Le pointeur de pile (stack pointer SP) ;
- Les registres d'index (index source SI et index destination DI)

Le registre d'état (Flags : F) :


A chaque opération, le microprocesseur positionne un certain nombre de bascules d'état. Ces bascules
sont appelées aussi indicateurs d'état ou drapeaux (status, flags). Par exemple, si une soustraction donne un
résultat nul, l'indicateur de zéro (Z) sera mis à 1. Ces bascules sont regroupées dans le registre d'état.
Le registre d'instruction RI :
C'est là où le CPU stocke l'instruction en cours d'exécution.

3-2 L’Horloge :
C'est l'horloge qui génère les signaux qui permettent le cadencement et la synchronisation de toutes les
opérations. C'est un signal carré qui a une fréquence fixe (3 Ghz par exemple), à chaque coup (front)
d'horloge, le microprocesseur réalise une tâche élémentaire. L'exécution d'une instruction nécessite
plusieurs coups d'horloges.

3-3 la mémoire centrale :


La mémoire centrale contient :
• le programme à exécuter : suite d’instructions élémentaires (ROM);
• les données à traiter (RAM).

L’unité d’entrées/sorties (E/S) est un intermédiaire entre le calculateur et le monde extérieur.

L’unité de transfert est le support matériel de la circulation des données.

Un microprocesseur consiste en une unité centrale de traitement (UAL + registres + unité de contrôle)
entièrement contenue dans un seul circuit intégré. L’ensemble microprocesseur, mémoire, unité E/S et
périphériques constitue un microcalculateur ou un microordinateur.

3-4 Circulation de l’information dans un calculateur :


La réalisation matérielle des ordinateurs est généralement basée sur l’architecture de Von
Neumann :

4
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

Figure 3: Le transfert de l'information dans un calculateur

Le microprocesseur échange des informations avec la mémoire et l’unité d’E/S, sous forme de mots
binaires, au moyen d’un ensemble de connexions appelé bus. On appelle Bus, en informatique, un ensemble
de liaisons physiques (câbles, pistes de circuits imprimés, ...) pouvant être exploitées en commun par
plusieurs éléments matériels afin de communiquer. Un bus permet de transférer des données sous forme
parallèle, c’est-à-dire en faisant circuler n bits simultanément.

Les microprocesseurs peuvent être classés selon la longueur maximale des mots binaires
qu’ils peuvent échanger avec la mémoire et les E/S : microprocesseurs 8 bits, 16 bits, 32 bits, ...
Le bus peut être décomposé en trois bus distincts :

• le bus d’adresses :
Permet au microprocesseur de spécifier l’adresse de la case mémoire ou l’adresse d’un port d’E/S à
lire ou à écrire.
• le bus de données :
Il permet de véhiculer des données du microprocesseur vers un composant (mémoire, E/S,..) ou d'un
composant vers le microprocesseur. Il est donc bidirectionnel. Le nombre de fils de ce bus varie suivant les
microprocesseurs (8 / 16 / 32 / 64 bits). Dans la littérature, les différents fils de ce bus sont appelés D0, D1,
..., Dp-1, si le bus a "p" fils.
• le bus de commande :
Le bus des commandes est constitué d'un ensemble de fils de "commandes", permettant la
synchronisation et bien sûr la commande des boîtiers mémoires et les entrées/sorties par le microprocesseur.
Par exemple une cellule mémoire doit savoir à quel instant elle doit mettre son contenu sur le bus de données.
Pour cela, le microprocesseur possède une broche appelée Read (𝑅𝐷 ̅̅̅̅ ) qu'il met à 0 (0v) lorsque la cellule
doit agir. De même, lors d'une écriture du microprocesseur vers la cellule, il met sa broche Write (𝑊𝑅̅̅̅̅̅ ) à 0
(0V). Les signaux RD et WR sont des signaux de synchronisation, de contrôle et de commande. Ils sont
reliés aux autres composants par un bus : le bus des commandes. Celui-ci comporte d'autres signaux de
commandes.

4- Le microprocesseur Intel 8086 :


Le microprocesseur Intel 8086 est un microprocesseur 16 bits, apparu en 1978. C’est le premier
microprocesseur de la famille Intel.

5
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

Le processeur 8086 d'Intel est à la base des processeurs Pentium actuels. Les processeurs successifs (de
PC) se sont en effet construits petit à petit en ajoutant à chaque processeur des instructions et des
fonctionnalités supplémentaires, mais en conservant à chaque fois les spécificités du processeur précédent.
4-1 Description externe du 8086 :
Le 8086 se présente sous la forme d’un boîtier DIP (Dual In-line Package) à 40 broches comme la
montre la figure suivante :

Figure 4: Le circuit intégré du 8086

6
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

Figure 5: Le schémas fonctionnelle du 8086

4-2 Description des signaux du 8086 :


CLK : entrée du signal d’horloge qui cadence le fonctionnement du microprocesseur. Ce signal provient
d’un générateur d’horloge : le 8284.

RESET : entrée de remise à zéro du microprocesseur. Lorsque cette entrée est mise à l’état haut pendant au
moins 4 périodes d’horloge, le microprocesseur est réinitialisé : il va exécuter l’instruction se trouvant à
l’adresse FFFF0H de la mémoire centrale. Le signal de RESET est fourni par le générateur d’horloge.
READY : entrée de synchronisation avec la mémoire. Ce signal provient également du générateur
d’horloge.
̅̅̅̅̅̅̅̅
𝐓𝐄𝐒𝐓: entrée de mise en attente du microprocesseur d’un évènement extérieur.
MN/ ̅̅̅̅̅
𝐌𝐗: entrée de choix du mode de fonctionnement du microprocesseur :

7
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

• 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 commande 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.
̅̅̅̅̅̅̅
𝐈𝐍𝐓𝐀 : Interrupt Acknowledge, indique que le microprocesseur accepte l’interruption.
HOLD et HLDA : signaux de demande d’accord d’accès au bus de D/A en cas de mode de fonctionnent
max.
S0 à S7 : signaux d’état indiquant le type d’opération en cours sur le bus.
A16/S3 à A19/S6 : 4 bits de poids fort du bus d’adresses, multiplexés avec 4 bits d’état.
AD0 à AD15 : 16 bits de poids faible du bus d’adresses, multiplexés avec 16 bits de données. Le bus A/D
est multiplexé (multiplexage temporel) d’où la nécessité d’un démultiplexage pour obtenir séparément les
bus d’adresses et de données :
• 16 bits de données (microprocesseur 16 bits) ;
• 20 bits d’adresses, d’où 220 = 1 Mo d’espace mémoire adressable par le 8086.
Le démultiplexage des signaux AD0 à AD15 (ou A16/S3 à A19/S6) se fait en mémorisant l’adresse lorsque
celle-ci est présente sur le bus A/D, à l’aide d’un verrou (latch), ensemble de bascules D. La commande de
mémorisation de l’adresse est générée par le microprocesseur : c’est le signal ALE, Address Latch Enable.
Circuit de démultiplexage A/D :

Fonctionnement :
• si ALE = 1, le verrou est transparent (Q = D) ;
• si ALE = 0, mémorisation de la dernière valeur de D sur les sorties Q ;

8
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

• les signaux de lecture (RD) ou d’écriture (WR) ne sont générés par le microprocesseur que lorsque les
données sont présentes sur le bus A/D.
̅̅̅̅
𝐑𝐃: Read, signal de lecture d’une donnée.
̅̅̅̅̅
𝐖𝐑: Write, signal d’écriture d’une donnée.

Chronogramme du bus A/D :

M/𝐈𝐎̅̅̅ : Memory/Input-Output, indique si le 8086 adresse la mémoire (M/IO ̅̅̅ = 1) ou les entrées/sorties
(M/IO̅̅̅ = 0).
̅̅̅̅̅̅
𝐃𝐄𝐍 : Data Enable, indique que des données sont en train de circuler sur le bus A/D (équivalent de ALE
pour les données).
DT/𝐑 ̅ : Data Transmit/Receive, indique le sens de transfert des données :
• DT/R ̅ = 1 : données émises par le microprocesseur (écriture) ;
• DT/R ̅ = 0 : données reçues par le microprocesseur (lecture).

9
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

̅̅̅̅̅̅ et DT/R
Les signaux DEN ̅ sont utilisés pour la commande de tampons de bus (buffers). Exemples de
tampons de bus : circuits transmetteurs bidirectionnels 8286 ou 74245.

Figure 6: tampons de bus

̅̅̅̅̅̅ : 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 (ou
paire) et la banque supérieure (ou impaire). Ces deux banques sont sélectionnées par :
10
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

• A0 pour la banque paire qui contient les octets de poids faible ;


•̅̅̅̅̅̅
BHE pour la banque impaire qui contient les octets de poids fort.

Figure 7: organisation de la mémoire par le 8086

Seuls les bits A1 à A19 servent à désigner une case mémoire dans chaque banque de 512 Ko. Le
microprocesseur peut ainsi lire et écrire des données sur 8 bits ou sur 16 bits :

11
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

Réalisation des deux banques avec plusieurs boitiers mémoire :

Figure 8: adressage de la mémoire par le 8086

12
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

Création du bus système du 8086 :

13
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

4-3 Description interne du 8086 :


Le 8086 est constitué de deux unités internes distinctes fonctionnent en parallèle : l'UE (Unité d'Exécution)
et l'UIB (Unité d'Interfaçage avec le Bus).

14
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

• l’unité d’interface de bus (BIU) : Le rôle de l'UIB est de chercher les instructions en mémoire, les
stocker dans une file d’attente, et d'établir les transmissions avec les bus du système.

• l’unité d’exécution (EU) : exécute les instructions contenues dans la file d’attente.
Les deux unités fonctionnent simultanément, d’où une accélération du processus d’exécution d’un
programme (fonctionnement selon le principe du pipe-line).
La figure ci-dessus résume les notions présentées ici.

Le microprocesseur 8086 contient 14 registres répartis en 4 groupes :

Tous les registres et le bus interne du 8086 sont structurés en 16 bits.


Vu de l'utilisateur, le 8086 comprend 3 groupes de 4 registres de 16 bits, un registre d'état de 9 bits et
un compteur programme de 16 bits non accessibles par l'utilisateur. Certains registres sont découpés en
deux et on peut accéder séparément à la partie haute et à la partie basse.
4-3-1 Les registres généraux : 4 registres de 16bits.
Les registres généraux participent aux opérations arithmétiques et logiques ainsi qu'à l'adressage.
Chaque demi-registre est accessible comme registre de 8 bits.
AX : Accumulateur
• Usage général (opérations AL, stocker temporairement des données),
• Obligatoire pour la multiplication et la division,
• Ne peut pas servir pour l'adressage
BX : Base
• Usage général, (opérations AL, stocker temporairement des données),
• Adressage, (Par défaut, son offset est relatif au segment DS)
CX : Comptage et calcul
• Usage général, (opérations AL, stocker temporairement des données),
• Utilisé par certaines instruction comme compteur.
• Ne peut pas servir pour l'adressage
DX : Data
• Usage général, (opérations AL, stocker temporairement des données),

15
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

• Dans la multiplication et la division 16 bits, il sert comme extension au registre AX


pour contenir un nombre 32 bits,
• Ne peut pas servir pour l'adressage

4-3-2 Les registres de pointeurs et d’index (registres d’adressages) : 4 registres de 16 bits.


Ces registres de 16 bits permettent l'adressage d'un opérande à l'intérieur d'un segment de 64 ko (216
positions mémoires). Les pointeurs et les index contiennent des adresses de cases mémoire.
Pointeurs :
SP : Stack Pointer, pointeur de pile (la pile est une zone de sauvegarde de données en cours d’exécution
d’un programme) :
• Utilisé pour l'accès à la pile. Pointe sur la tête de la pile,
• Par défaut, son offset est relatif à SS.
BP : Base Pointer, pointeur de base, utilisé pour adresser des données sur la pile :
• Adressage comme registre de base, (Par défaut, son offset est relatif à SS),

Index :
SI : Registre d'index (source)
• Adressage comme registre d’index, (Par défaut, son offset est relatif à DS)
• Utilisé par instruction de déplacement de donnés comme index de l'opérande source.

DI : Registre d'index (destination)


• Adressage comme registre d’index, (par défaut, son offset est relatif à DS)
• Utilisé par instruction de déplacement de donnés comme index de l'opérande destination.
4-3-3 Pointeur d’instruction et indicateurs (flags) : 2 registres de 16 bits.
Pointeur d’instruction IP : on l’appelle aussi compteur de programme ou compteur ordinal, il contient
l’adresse de la prochaine instruction à exécuter.
Registre d’état ou indicateur (flags) : Six bits reflètent les résultats d'une opération arithmétique ou
logique et 3 participent au control du processeur.

C : (Carry) indique qu’il y a une retenue sur une opération 8 bits ou 16 bits. Ce flag peut être utilisé par
des instructions de saut conditionnel, des calculs arithmétiques en chaîne ou dans des opérations de
rotation.
P : (Parité) indique que le résultat est pair quand il est mis à1. Ce flag est utilisé avec certains sauts
conditionnels.

16
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

A : (retenue Arithmétique auxiliaire) indique une retenue auxiliaire sur les 4 bits (digit) de poids faible.
Z : (Zéro) Indique que le résultat d'une opération arithmétique ou logique est nul. Il est utilisé dans
plusieurs instructions de sauts conditionnels.
S : (Signe) reproduit le bit de poids fort d'une quantité signée sur 8 bits ou sur 16 bits. L'arithmétique
signée fonctionne en complément à 2. Ce flag sert lors de sauts conditionnels :
S=0 : positif,
S=1 : négatif.
T : (Trap) met le CPU en mode pas à pas pour faciliter la recherche des défauts d'exécution.
I : (Interruption) autorise ou non la reconnaissance des interruptions :
I = 0 → Interruptions autorisées
I = 1 → Interruptions non autorisées
D : (Direction) fixe la direction de l'auto-inc/décrémentation de SI et DI lors des instruction incrémentant
ou décimentant automatiquement les registes SI et DI :
D = 0 → Incrémentation des index
D = 1 → décrémentation des index
O : (Overflow) 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 O=1).
4-3-4 Registres de segments : 4 registres de 16 bits.
Ces registrent sont combiné avec les registres d’offset (pointeurs et index) pour former des adresses
permettant au processeur 8086 d’adresser l’ensemble de la mémoire. Une case mémoire est repérée par
une adresse de la forme RS :RO. Le registre segment est placé au début d’une zone mémoire de 64Ko,
ensuite on fait varier le registre d’offset qui précise l’adresse relative par rapport à cette position.
CS : Code Segment
Définit le début de la mémoire programme (l’adresse de la première instruction de programme). Les
adresses des différentes instructions du programme sont relatives à CS.
DS : Data Segment
Début de la mémoire de données (l’adresse de la première case mémoire de données) dans laquelle sont
stockées toutes les données traitées par le programme.
SS : Stack Segment
Début de la pile.
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.
ES : Extra Segment
Début d'un segment auxiliaire pour données.

17
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

4-4 L’organisation de la mémoire (octet) par le 8086 :


Le 8086 possède 20 bits d'adresse, il peut donc adresser 220 octets soit 1 Mo. L'adresse de la première
case mémoire est 0000 0000 0000 0000 0000 celle de la dernière casse est 1111 1111 1111 1111 1111
1111. Soit en hexadécimal 00000 à FFFFF. Le problème qui se pose est comment représenter ces adresses
au sein du µP puisque les registres ne font que 16 bits soit 4 digits au maximum en hexadécimal. La
solution adoptée par Intel a été la suivante :
Puisqu’avec 16 bits en peut adresser 216 octets = 65535 octets = 64 ko, La mémoire totale adressable de 1
Mo est fractionnée en 16 pages de 64 ko appelés segments. Ainsi, une case mémoire est repérée par le
8086 au moyen de deux registres sur 16 bits :
• l’adresse d’un segment ;
• un déplacement ou offset (appelé aussi adresse effective) dans ce segment.
Cette méthode de gestion de la mémoire est appelée segmentation de la mémoire.
Une adresse se présente toujours sous la forme segment:offset est une adresse logique.
L’adresse d’une case mémoire donnée sous la forme d’une quantité sur 20 bits (5 digits hexa) est
appelée adresse physique car elle correspond à la valeur envoyée réellement sur le bus d’adresses A0 -
A19.

18
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

A titre d'exemple, procédons au découpage de la mémoire en 16 segments qui ne se chevauche pas.

Considérons la case mémoire d'adresse 20350h, appelée adresse absolue ou adresse linéaire ou adresse
physique. Cette case mémoire se situe dans le segment 2, son adresse relative à ce segment est 350, on peut
donc la référencer par le couple segment:offset = 20000:350, Se pose maintenant le problème de la
représentation de cette adresse au sein du CPU car les registres de 16 bits ne peuvent contenir que 4 digits.
S'il n'y a aucun problème pour représenter 350 dans un registre d'offset, mais on ne peut pas représenter
20000 dans un registre segment. La solution adoptée par Intel est la suivante :
- Dans le registre segment, on écrit l'adresse segment sans le chiffre (4 bits) de poids faible.
- Dans le registre d'adressage (d'offset) on écrit l'adresse relative dans le segment.
- Pour calculer l'adresse absolue qui sera envoyée sur le bus d'adresse de 20 bits, le CPU procède à
l'addition des deux registres après avoir décalé le registre segment d'un chiffre (4 bits) à gauche :

19
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

Dans notre exemple, l'adresse de la case mémoire considérée devient 2000:350 soit :
Segment = 2000
Offset = 350
L'adresse absolue (physique) est calculée ainsi :

On peut aussi calculer l’adresse physique l’expression suivante :


adresse physique = 16 × segment + offset
car le fait d’injecter 4 zéros en poids faible du segment revient à effectuer un décalage de 4 positions vers
la gauche, c’est à dire une multiplication par 24 = 16.
Le registre CS est associé au pointeur d’instruction IP, ainsi la prochaine instruction à exécuter se trouve à
l’adresse logique CS : IP. De même, les registres de segments DS et ES peuvent être associés à un registre
d’index DS : SI, ES : DI. Le registre de segment de pile peut être associé aux registres de pointeurs
SS : SP ou SS : BP.
Mémoire accessible par le 8086 à un instant donné :

20
P et C : Chapitre 1 : Architecture d’un Microprocesseur Dr. METIDJI

Figure 9: organisation de la mémoire par le 8086

Remarque :
une seule règle à respecter lors du choix de l’adresse d'un segment est que le digit de plus faible poids
soit nul. Nous pouvons donc commencer un segment tous les 16 octets.

21

Vous aimerez peut-être aussi