Chapitre 2 Architecture du microprocesseur

2. Structure du microprocesseur

2.1 Aperçu du développement du microprocesseur

2.1.1 Historique du développement

première génération: A partir de 1971, microprocesseurs 4 bits et microprocesseurs 8 bits bas de gamme

deuxième génération: Depuis 1973, microprocesseur 8 bits

Troisième génération: Depuis 1978, microprocesseur 16 bits

Quatrième génération: Depuis 1981, microprocesseur 32 bits

2.2 Structure fonctionnelle du microprocesseur

insérez la description de l'image ici

Structure du microprocesseur

2.2.1 Composition de la structure du microprocesseur

① Unité arithmétique : y compris l'unité arithmétique et logique (ALU). Des opérations arithmétiques et logiques sont effectuées sur les données, et les caractéristiques des résultats d'opération sont stockées dans le registre d'indicateurs.

② Contrôleur : comprenant le registre d'instructions, le décodeur d'instructions, le circuit de synchronisation et de contrôle. Selon le résultat de décodage de l'instruction, un signal de décodage est émis à un certain moment pour commander l'exécution de l'instruction.

③ tableau de registres : comprenant un ensemble de registres à usage général et de registres à usage spécial. Registres à usage général - stockage temporaire des données impliquées dans les opérations ; registres spéciaux - généralement le pointeur d'instruction IP (ou le compteur de programme PC) et le pointeur de pile SP.

Le lien entre les trois

L'échange d'informations entre ces trois parties est réalisé à travers l'architecture du bus.
Bus : Chemin d'annonce pour la transmission d'informations entre composants. Le bus est ici appelé "bus interne" (ou "bus sur puce").L'utilisateur n'a aucun contrôle direct sur le fonctionnement du bus interne

2.2.2 Structure fonctionnelle du microprocesseur Inter 8086

insérez la description de l'image ici

Schéma de principe de la structure interne de la CPU 8086

2.2.2.1 Structure interne du processeur 8086

Unité d'interface de bus (BIU) :

Le composant d'interface entre la mémoire et le périphérique d'E/S est responsable du fonctionnement de toutes les broches.
Bus de données bidirectionnel 16 bits, bus d'adresse 20 bits, plusieurs bus de contrôle

Tâches spécifiques : responsable de la récupération des instructions de l'unité de mémoire et de leur envoi vers la mémoire tampon de la file d'instructions pour un stockage temporaire.

Lorsque le CPU exécute des instructions, l'unité de bus doit coopérer avec l'unité d'exécution pour extraire les données de l'unité de mémoire ou du port d'E/S désigné et les envoyer à l'unité d'exécution, ou transférer la structure de traitement de l'unité d'exécution vers l'unité de mémoire désignée. ou interface E/S.

Composition : additionneur d'adresses 20 bits, registres à 4 segments, IP de pointeur d'instructions 16 bits, tampon de file d'instructions et circuit logique de commande de bus.

Additionneur d'adresse : le registre 16 bits implémente l'adressage d'adresse 20 bits - l'additionneur d'adresse décale le contenu du registre de segment pertinent (l'adresse de début du segment) vers la gauche de 4 bits et l'ajoute à l'adresse de décalage pour former Adresse physique 20 bits.

Pointeur d'instruction 16 bits IP : (pointeur d'instruction) Il est utilisé pour stocker l'adresse de décalage de la prochaine instruction à exécuter dans le code, et combiné avec CS pour former une adresse physique pointant vers l'unité de stockage d'instructions.

File d'attente de tampon d'instructions : lorsque l'UE exécute des instructions et n'a pas besoin d'occuper le bus, le BIU prélève automatiquement les instructions et stocke les instructions obtenues dans un registre de file d'attente d'instructions de 6 octets dans l'ordre. Méthode "premier sorti", et récupérées dans l'UE en vue de l'exécution.

Circuit logique de contrôle du bus : La connexion du bus interne de la CPU 8086 au bus externe est le seul moyen pour la CPU 8086 d'échanger des données avec des unités de mémoire ou des ports d'E/S.
Comprend un bus de données 16 bits, un bus d'adresse 20 bits et plusieurs bus de contrôle.

Unité d'exécution UE :

Contient 1 unité arithmétique 16 bits ALU, 8 registres 16 bits, 1 registre flag 16 bits FLAGS, 1 registre de stockage temporaire de données et le circuit de contrôle de l'unité d'exécution

Unité arithmétique et logique (ALU) : il s'agit d'une unité arithmétique 16 bits, qui peut être utilisée pour les opérations arithmétiques et logiques binaires 8 bits et 16 bits, et peut également calculer le décalage 16 bits requis pour l'adressage de la mémoire en fonction de la mode d'adressage de la grandeur d'instruction.

Registre d'indicateurs (FLAGS): Il s'agit d'un registre 16 bits utilisé pour refléter les caractéristiques d'état des opérations du processeur et stocker certains indicateurs de contrôle.

Registre temporaire d'opération : Il assiste l'ALU pour terminer l'opération et stocke temporairement les données participant à l'opération.

Jeu de registres à usage général : comprenant quatre registres de données 16 bitsAX, BX, CX, DXet quatre registres de pointeur et d'index 16 bitsSP、BP与SI、DI

Circuit de contrôle de l'UE : responsable de la récupération des instructions de la mémoire tampon de la file d'attente d'instructions du BIU, du décodage des instructions et de l'envoi de commandes de contrôle aux composants internes de l'UE selon les exigences de l'instruction, afin de compléter les fonctions spécifiées par chaque instruction.

L'exécution des instructions par l'UE commence par l'opcode de récupération d'instructions

S'il s'agit d'une opération, les données d'opération sont envoyées à l'ALU via le registre temporaire d'opération, et le résultat de l'opération est envoyé au registre correspondant via le bus de données ALU, et le registre d'indicateur FLAGS change d'état en fonction du résultat de l'opération.

2.2.2.2 Registres internes du 8086CPU

Comprend 14 registres 16 bits
insérez la description de l'image ici

Registres internes du processeur 8086

registre à usage général

C'est ce qu'on appelle un registre de données, qui peut être utilisé comme registre de données 16 bits ou comme deux registres de données 8 bits.Lorsqu'il est utilisé en 16 bits, il est appelé AX, BX, CX, DX. Lorsqu'ils sont utilisés comme 8 bits, AH, BH, CH, DH stockent l'octet de poids fort, AL, BL, CL, DL stockent l'octet de poids faible et peuvent être adressés indépendamment.

registre de segments

Le calcul de l'adresse physique est effectué dans la BIU, elle décale d'abord l'adresse du segment vers la gauche de 4 bits, puis l'ajoute à la valeur d'offset de 16 bits.

Il existe 4 registres de segments (CS, DS, SS, ES).

CS (registre de segment de code) : le code d'instruction actuellement utilisé peut être obtenu à partir du segment de mémoire spécifié par le registre de segment, et la valeur de décalage correspondante est fournie par l'IP.
SS (Stack Segment Register) : spécifie l'adresse de début de la pile actuelle.
DS (Data Segment Register) : Indique l'adresse de début du segment où sont stockées les données utilisées par le programme en cours.
ES (Additional Segment Register): Indique la position de départ de l'adresse de segment supplémentaire utilisée par le programme en cours, qui est généralement utilisée pour stocker les données d'origine ou les résultats des opérations.

Pointeurs d'adresse et registres d'index

Le pointeur d'adresse et le registre d'index sont tous deux des registres de 16 bits, qui sont généralement utilisés pour stocker le décalage de l'adresse (c'est-à-dire la distance par rapport à l'adresse de début du segment).

Le pointeur de pile SP est utilisé pour indiquer l'adresse du sommet actuel de la pile dans le segment de pile. Les instructions push (PUSH) et pop (POP) reçoivent l'adresse de décalage du haut de la pile par SP .
Le pointeur d'adresse de base BP indique l'adresse de base des données à traiter dans le segment de pile, il est donc appelé registre de pointeur d'adresse de base.
Les registres d'index SI et DI sont utilisés pour stocker le décalage d'une certaine unité dans le segment de données actuel.

Pointeur d'instruction et registre des drapeaux

En fonctionnement normal, le pointeur d'instruction IP mémorise l'adresse de décalage de la prochaine instruction à extraire par la BIU.
Il a pour fonction d'ajouter automatiquement 1. Chaque fois qu'une opération de récupération d'instruction est effectuée, il ajoutera automatiquement 1 pour le faire pointer vers la prochaine unité de mémoire à récupérer. Après chaque octet récupéré, le contenu IP est incrémenté de 1, et après avoir récupéré un mot, l'IP Add 2 au contenu.

Le registre de drapeau FLAGS est un registre de 16 bits et le 8086 utilise un total de 9 bits effectifs. 6 bits sont des bits d'indicateur d'état et 3 bits sont des bits d'indicateur de contrôle.

6 drapeaux d'état

CF (porter le drapeau)- Portez le mors du drapeau. CF vaut 1 lorsqu'une opération d'addition (ou de soustraction) est effectuée pour générer un report (ou un emprunt) à partir du bit le plus élevé ; sinon, c'est 0.
PF (drapeau de parité) - drapeau de parité. Cet indicateur indique si le nombre de 1 dans le résultat de l'opération est pair ou impair. Lorsque les 8 bits inférieurs du résultat d'exécution de l'instruction contiennent un nombre pair de 1, PF=1 ; sinon, PF=0.
AF (drapeau de portage auxiliaire) ——drapeau de portage auxiliaire. Lors de l'exécution d'une opération d'addition (ou de soustraction) de sorte que les 4 bits inférieurs du résultat aient un report (ou un emprunt) vers les 4 bits supérieurs, AF=1 ; sinon, AF=0.
ZF (drapeau zéro)- Drapeau zéro. Si le résultat de l'opération en cours est zéro, ZF=1 ; sinon ZF=0.
SF (indicateur de signe) —— bit d'indicateur de signe. C'est la même chose que le bit le plus significatif du résultat de l'opération.
OF (drapeau de débordement)- indicateur de débordement. Lorsqu'il y a débordement dans l'opération de code complément, OF=1 ; sinon OF=0.

3 bits de drapeau de contrôle

DF (indicateur de direction) —— bit d'indicateur de direction. Il est utilisé pour spécifier le sens de traitement de la chaîne. Lorsque ce bit est à "1", la chaîne est traitée dans l'ordre décroissant, c'est-à-dire que l'adresse est décroissante de haut en bas. Sinon, ils sont traités par ordre croissant.
IF (drapeau d'activation d'interruption) ——Bit d'indicateur d'activation d'interruption. Il est utilisé pour contrôler si le 8086 est autorisé à recevoir des demandes d'interruption externes. Si IF=1, le 8086 peut répondre aux interruptions externes, sinon il ne répondra pas aux interruptions externes.
L'état de IF n'affecte pas les requêtes d'interruption non masquables (NMI) et les requêtes d'interruption internes de la CPU.
TF (Trap Flag) - Drapeau de suivi. Il s'agit d'un bit de contrôle d'interruption défini pour le débogage des programmes. Lorsque ce bit est à "1", la CPU 8086 est dans un état pas à pas. A ce moment, la CPU génère automatiquement une interruption interne chaque fois qu'elle exécute une instruction. Lorsque ce bit est réinitialisé, la CPU reprend son fonctionnement normal.

2.2.2.3 Mémoire et port mémoire du 8086CPU

8086 CPU peut adresser1 MoL'unité de stockage dans cet espace de stockage est triée et stockée avec 8 bits dans l'ordre des octets.
Chaque octet est identifié par un code d'adresse unique, qui est un entier non signé avec une plage d'adresses de 0 à 220-1, mais il est d'usage d'utiliser des nombres hexadécimaux pour représenter, c'est-à-dire00000H~FFFFFH.
La méthode d'organisation de l'espace mémoire dans l'ordre des numéros d'adresse d'octet est appelée == "adressage d'octet" ==.
Il est stipulé que les octets de poids fort du mot sont stockés dans l'unité d'adresse haute, et les octets de poids faible du mot sont stockés dans l'unité d'adresse basse.
L'adresse de l'octet inférieur est utilisée comme adresse de ce mot.

Une donnée de mot est toujours située à une adresse paire, c'est-à-dire que l'adresse paire correspond à l'octet de poids faible et l'adresse impaire correspond à l'octet de poids fort. La donnée de mot stockée conformément à cette règle est appelée "mot régulier " .

La structure de segmentation de la mémoire et la formation de l'adresse physique

L'espace de stockage de 1 Mo est divisé en plusieurs segments logiques, et les adresses de base des 4 segments logiques actuels sont définies dans les 4 registres de segment de la CPU, à savoir le registre de segment de code CS, le registre de segment de données DS, le registre de segment de pile SS et le segment supplémentaire Registre ES .

Les adresses logiques sont des adresses utilisées par les programmes.
L'adresse physique fait référence à l'adresse réellement utilisée par la CPU et la mémoire pour l'échange de données. Se compose de deux parties :Adresse de base du segment (adresse de début de segment de 16 bits de haut) et adresse de décalage.
Le premier est donné par le registre de segment, et le second fait référence à la distance de décalage entre l'emplacement de l'unité de stockage et l'adresse de début du segment. Lorsque la CPU adresse une unité de stockage, commencez par décaler le contenu du registre de segment vers la gauche de 4 bits, puis ajoutez l'adresse de décalage de 16 bits fournie dans l'instruction pour former une adresse physique de 20 bits.
Lors de la récupération des instructions, la CPU sélectionne automatiquement le registre de segment de code CS, après un décalage de 4 bits vers la gauche, ajouter l'adresse de décalage de 16 bits fournie par l'instruction pour calculer l'adresse physique de l'instruction à récupérer.
Pendant le fonctionnement de la pile, la CPU sélectionne automatiquement le registre de segment de pile SS, décale son contenu vers la gauche de 4 bits, ajoute l'adresse de décalage de 16 bits fournie par l'instruction et calcule l'adresse physique de l'unité supérieure de la pile.
Chaque fois qu'un opérande est accédé, la CPU sélectionne automatiquement le registre de segment de données (ou registre de segment supplémentaire ES), décalez la valeur de base du segment vers la gauche de 4 bits et ajoutez une adresse de décalage de 16 bits pour obtenir l'adresse physique de l'opérande en mémoire.

Ports d'E/S du 8086

Chaque interface d'E/S possède un port ou plusieurs ports. Dans le système de micro-ordinateur, une adresse est attribuée à chaque port, appelée adresse de port.
La CPU 8086 utilise le bus d'adresse16 bits inférieursEn tant que ligne d'adressage pour les ports d'E/S 8 bits, il existe au plus ==65 536 (64 Ko)== ports d'E/S 8 bits auxquels le système 8086 accède.
Afin de faciliter l'équilibrage de charge du bus de données, le nombre de dispositifs connectés aux 8 bits supérieurs et aux 8 bits inférieurs est de préférence égal.

Je suppose que tu aimes

Origine blog.csdn.net/William__Ma/article/details/128164763
conseillé
Classement