Le Microprocesseur Intel 8086

Ce document présente une étude détaillée du microprocesseur Intel 8086, destiné aux étudiants en informatique et électronique souhaitant comprendre son architecture, ses signaux, son organisation interne et sa gestion de la mémoire. Il s'agit d'un matériel de référence pour l'apprentissage des microprocesseurs 16 bits et de la programmation bas niveau.

D'après le document Le Microprocesseur Intel 8086

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source

Le Microprocesseur Intel 8086

Microprocessors, Computer Architecture · PDF · 21 pages · 1978

Afficher l'aperçu du document

Consulter le document original →

Ce document présente une étude détaillée du microprocesseur Intel 8086, destiné aux étudiants en informatique et électronique souhaitant comprendre son architecture, ses signaux, son organisation interne et sa gestion de la mémoire. Il s'agit d'un matériel de référence pour l'apprentissage des microprocesseurs 16 bits et de la programmation bas niveau.

Présentation physique et architecture générale du 8086

Le microprocesseur Intel 8086 est un processeur 16 bits apparu en 1978. Il est le premier de la famille Intel 80x86 (8086, 80186, 80286, 80386, 80486, Pentium, etc.). Il se présente sous la forme d’un boîtier DIP (Dual In-line Package) à 40 broches.

Le 8086 possède une architecture divisée en deux unités fonctionnant en parallèle :

  • Unité d’exécution (EU - Execution Unit) : exécute les instructions contenues dans une file d’attente.
  • Unité d’interface de bus (BIU - Bus Interface Unit) : récupère les instructions en mémoire et les place dans la file d’attente.

Cette organisation permet d’accélérer l’exécution des programmes en superposant le chargement des instructions et leur exécution.

Signaux et bus du microprocesseur 8086

Le 8086 utilise plusieurs signaux essentiels pour son fonctionnement :

  • CLK : signal d’horloge qui cadence le microprocesseur, fourni par le générateur d’horloge 8284.
  • RESET : remise à zéro du microprocesseur. Lorsque ce signal est à l’état haut pendant au moins 4 périodes d’horloge, le 8086 exécute l’instruction à l’adresse FFFF0H (bootstrap).
  • READY : synchronisation avec la mémoire.
  • TEST : mise en attente du microprocesseur en attente d’un événement extérieur.
  • INTA : indication que le microprocesseur accepte une interruption.
  • HOLD et HLDA : demande et accord d’accès direct à la mémoire (DMA).
  • NMI et INTR : entrées d’interruptions, NMI étant non masquable (prioritaire), INTR une interruption normale.
  • S0 à S7 : signaux d’état indiquant le type d’opération sur le bus.

Bus d’adresses et de données multiplexés

Le bus d’adresses et de données est multiplexé temporellement :

  • AD0 à AD15 : 16 bits multiplexés entre adresses (poids faible) et données.
  • A16/S3 à A19/S6 : 4 bits de poids fort du bus d’adresses multiplexés avec des bits d’état.

Le 8086 dispose d’un bus d’adresses de 20 bits, ce qui lui permet d’adresser 2^20 = 1 Mo de mémoire.

Le démultiplexage des signaux AD0-AD15 est réalisé à l’aide d’un verrou (latch) commandé par le signal ALE (Address Latch Enable) :

  • Si ALE = 1, le verrou est transparent (Q = D).
  • Si ALE = 0, la dernière valeur est mémorisée sur les sorties Q.

Les signaux de lecture (RD) et d’écriture (WR) sont activés uniquement lorsque les données sont présentes sur le bus.

Signaux complémentaires du bus

  • RD : signal de lecture.
  • WR : signal d’écriture.
  • M/IO : indique si l’adresse concerne la mémoire (1) ou les entrées/sorties (0).
  • DEN : Data Enable, indique que des données circulent sur le bus.
  • DT/R : sens du transfert des données (1 = émission, 0 = réception).
  • BHE : Bus High Enable, sélectionne l’octet de poids fort du bus de données.

Les signaux DEN et DT/R commandent des tampons de bus (buffers) bidirectionnels, comme les circuits 8286 ou 74245, pour amplifier le courant sur le bus.

Organisation des banques mémoire

Le 8086 divise la mémoire adressable (1 Mo) en deux banques de 512 Ko chacune :

  • Banque inférieure (paire) : sélectionnée par A0, contient les octets de poids faible.
  • Banque supérieure (impaire) : sélectionnée par BHE, contient les octets de poids fort.

Le microprocesseur peut lire ou écrire des données sur 8 bits ou 16 bits. La lecture d’un mot 16 bits en une seule opération nécessite un alignement correct : l’octet de poids fort doit être à une adresse impaire, l’octet de poids faible à une adresse paire. Sinon, la lecture se fait en deux opérations successives, ce qui ralentit le transfert.

Organisation interne et registres du 8086

Le 8086 contient 14 registres répartis en quatre groupes :

Registres généraux (16 bits et 8 bits)

  • AX = (AH, AL)
  • BX = (BH, BL)
  • CX = (CH, CL)
  • DX = (DH, DL)

Ces registres servent à contenir temporairement des données et peuvent être utilisés pour des opérations spécifiques, par exemple AX comme accumulateur et CX comme compteur.

Registres de pointeurs et d’index (16 bits)

  • Pointeurs : SP (Stack Pointer), BP (Base Pointer)
  • Index : SI (Source Index), DI (Destination Index)

Ils contiennent des adresses mémoire et sont utilisés pour gérer la pile et les transferts de chaînes d’octets entre zones mémoire.

Pointeur d’instruction et registres indicateurs (flags)

  • IP : contient l’adresse de la prochaine instruction à exécuter.
  • Flags : indicateurs d’état du processeur :
  • CF : retenue (carry)
  • PF : parité
  • AF : retenue auxiliaire
  • ZF : zéro
  • SF : signe
  • TF : exécution pas à pas (trap)
  • IF : autorisation d’interruption
  • DF : décrémentation
  • OF : dépassement (overflow)

Registres de segments (16 bits)

  • CS (Code Segment) : segment de code
  • DS (Data Segment) : segment de données
  • SS (Stack Segment) : segment de pile
  • ES (Extra Segment) : segment supplémentaire pour les données

Ces registres, associés aux pointeurs et index, permettent d’adresser l’ensemble de la mémoire via la segmentation.

Gestion de la mémoire et segmentation

Le 8086 adresse un espace mémoire de 1 Mo (2^20 octets) divisé en segments de 64 Ko chacun. Chaque segment est défini par une adresse de départ multiple de 16 (les 4 bits de poids faible sont à zéro). Ainsi, l’adresse d’un segment est représentée par 16 bits, les 4 bits de poids faible étant implicitement zéro.

Une case mémoire dans un segment est désignée par un offset (déplacement) de 16 bits. L’adresse logique est donc un couple (segment : offset).

Calcul de l’adresse physique

L’adresse physique réelle envoyée sur le bus d’adresses A0 - A19 est calculée par :

adresse physique = 16 × segment + offset

Ce calcul correspond à un décalage de 4 bits vers la gauche du segment (multiplication par 2^4 = 16) puis à l’addition de l’offset.

Segments accessibles simultanément

À un instant donné, le 8086 accède à quatre segments dont les adresses sont contenues dans les registres CS, DS, SS et ES :

  • CS : contient les instructions du programme (segment de code).
  • DS : contient les données manipulées (segment de données).
  • SS : contient la pile de sauvegarde (segment de pile).
  • ES : segment supplémentaire pour les données.

Le registre CS est associé au pointeur d’instruction IP, donc la prochaine instruction à exécuter se trouve à l’adresse logique CS : IP.

Les registres DS et ES peuvent être associés aux registres d’index SI et DI, tandis que SS est associé aux pointeurs SP et BP.

Exemple d’adressage logique et physique

Après un RESET, les registres contiennent :

  • IP = 0000H
  • CS = FFFFH
  • DS = 0000H
  • ES = 0000H
  • SS = 0000H

La première instruction exécutée se trouve donc à l’adresse logique FFFFH : 0000H, soit l’adresse physique :

adresse physique = 16 × FFFFH + 0000H = FFFF0H

C’est l’adresse de bootstrap, généralement un saut vers le programme principal qui initialise les autres registres de segment.

Glossaire des termes clés

  • 8086 : microprocesseur 16 bits de la famille Intel 80x86.
  • BIU (Bus Interface Unit) : unité chargée de récupérer les instructions en mémoire et de gérer le bus.
  • EU (Execution Unit) : unité qui exécute les instructions.
  • Bus multiplexé : bus où les lignes sont utilisées successivement pour transmettre des adresses puis des données.
  • Latch (verrou) : circuit qui mémorise une valeur numérique.
  • Segmentation : méthode de gestion de la mémoire divisant l’espace en segments de 64 Ko.
  • Adresse logique : adresse représentée par le couple (segment : offset).
  • Adresse physique : adresse réelle envoyée sur le bus, calculée par 16 × segment + offset.
  • Registres généraux : registres AX, BX, CX, DX utilisés pour stocker temporairement des données.
  • Registres de segments : CS, DS, SS, ES, définissant les segments mémoire.
  • Registres pointeurs et index : SP, BP, SI, DI, utilisés pour adresser la mémoire et gérer la pile.
  • Flags : indicateurs d’état du processeur (CF, ZF, OF, etc.).
  • Signal ALE : Address Latch Enable, commande le démultiplexage du bus adresse/données.
  • BHE : Bus High Enable, sélectionne l’octet de poids fort sur le bus de données.

Points clés à retenir

  • Le 8086 est un microprocesseur 16 bits avec un bus d’adresses de 20 bits, capable d’adresser 1 Mo de mémoire.
  • Le bus d’adresses et de données est multiplexé, nécessitant un démultiplexage via le signal ALE et un verrou.
  • La mémoire est organisée en segments de 64 Ko, accessibles via les registres de segments et un offset.
  • L’adresse physique est calculée par 16 × segment + offset.
  • Le microprocesseur fonctionne avec deux unités parallèles : BIU pour le bus et EU pour l’exécution.
  • Le 8086 utilise 14 registres répartis en registres généraux, pointeurs/index, pointeur d’instruction et flags, et registres de segments.
  • Le signal BHE permet de gérer la lecture/écriture sur les octets de poids fort ou faible, optimisant l’accès mémoire.
  • Un bon alignement des données en mémoire est nécessaire pour optimiser les lectures 16 bits.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions