Capítulo 2 Arquitectura del microprocesador

2. Estructura del microprocesador

2.1 Descripción general del desarrollo de microprocesadores

2.1.1 Historial de desarrollo

primera generación: a partir de 1971, microprocesadores de 4 bits y microprocesadores de 8 bits de gama baja

segunda generación: Desde 1973, microprocesador de 8 bits

Tercera generación: Desde 1978, microprocesador de 16 bits

Cuarta generación: Desde 1981, microprocesador de 32 bits

2.2 Estructura funcional del microprocesador

inserte la descripción de la imagen aquí

Estructura del microprocesador

2.2.1 Composición de la estructura del microprocesador

① Unidad aritmética: incluida la unidad lógica aritmética (ALU). Las operaciones aritméticas y lógicas se realizan en los datos, y las características de los resultados de la operación se almacenan en el registro de bandera.

② Controlador: incluye registro de instrucciones, decodificador de instrucciones, circuito de temporización y control. Según el resultado de la decodificación de la instrucción, se emite una señal de decodificación en un tiempo determinado para controlar la ejecución de la instrucción.

③ matriz de registros: incluye un conjunto de registros de propósito general y registros de propósito especial. Registros de propósito general: almacenamiento temporal de datos involucrados en las operaciones; registros especiales: generalmente puntero de instrucción IP (o contador de programa PC) y puntero de pila SP.

La conexión entre los tres

El intercambio de información entre estas tres partes se realiza a través de la arquitectura del bus.
Bus : Ruta de anuncios para la transmisión de información entre componentes. El bus aquí se llama "bus interno" (o "bus en chip").El usuario no tiene control directo sobre el funcionamiento del bus interno

2.2.2 Estructura funcional del microprocesador Inter 8086

inserte la descripción de la imagen aquí

Diagrama esquemático de la estructura interna de la CPU 8086

2.2.2.1 Estructura interna de la CPU 8086

Unidad de interfaz de bus (BIU):

El componente de interfaz entre la memoria y el dispositivo de E/S es responsable del funcionamiento de todos los pines.
Bus de datos bidireccional de 16 bits, bus de direcciones de 20 bits, varios buses de control

Tareas específicas: responsable de obtener instrucciones de la unidad de memoria y enviarlas al búfer de cola de instrucciones para almacenamiento temporal.

Cuando la CPU ejecuta instrucciones, la unidad de bus debe cooperar con la unidad de ejecución para obtener datos de la unidad de memoria designada o del puerto de E/S y enviarlos a la unidad de ejecución, o transferir la estructura de procesamiento de la unidad de ejecución a la unidad de memoria designada. o interfaz de E/S.

Composición: sumador de direcciones de 20 bits, registros de 4 segmentos, IP de puntero de instrucciones de 16 bits, búfer de cola de instrucciones y circuito lógico de control de bus.

Sumador de direcciones: el registro de 16 bits implementa el direccionamiento de direcciones de 20 bits: el sumador de direcciones desplaza el contenido del registro de segmento relevante (la dirección inicial del segmento) hacia la izquierda en 4 bits y lo agrega a la dirección de desplazamiento para formar Dirección física de 20 bits.

Puntero de instrucción de 16 bits IP: (Puntero de instrucción) Se utiliza para almacenar la dirección de desplazamiento de la siguiente instrucción que se ejecutará en el código y se combina con CS para formar una dirección física que apunta a la unidad de almacenamiento de instrucciones.

Cola de búfer de instrucciones: cuando la UE ejecuta instrucciones y no necesita ocupar el bus, la BIU buscará automáticamente las instrucciones y almacenará las instrucciones obtenidas en un registro de cola de instrucciones de 6 bytes en orden. Método "Primero en salir" y se recuperará en la UE para su ejecución.

Circuito lógico de control de bus: conectar el bus interno de la CPU 8086 con el bus externo es la única forma en que la CPU 8086 puede intercambiar datos con unidades de memoria o puertos de E/S.
Incluye bus de datos de 16 bits, bus de direcciones de 20 bits y varios buses de control.

Unidad de ejecución UE:

Contiene 1 unidad aritmética ALU de 16 bits, 8 registros de 16 bits, 1 registro de bandera de 16 bits FLAGS, 1 registro de almacenamiento temporal de datos y el circuito de control de la unidad de ejecución

Unidad lógica aritmética (ALU): es una unidad aritmética de 16 bits, que se puede utilizar para operaciones aritméticas y lógicas binarias de 8 y 16 bits, y también puede calcular el desplazamiento de 16 bits requerido para direccionar la memoria según el modo de direccionamiento de la cantidad de instrucciones.

Registro de banderas (FLAGS): es un registro de 16 bits que se utiliza para reflejar las características de estado de las operaciones de la CPU y almacenar ciertas banderas de control.

Registro temporal de operaciones: Ayuda a la ALU a completar la operación y almacena temporalmente los datos que participan en la operación.

Conjunto de registros de propósito general: incluye cuatro registros de datos de 16 bitsAX, BX, CX, DXy cuatro registros de puntero e índice de 16 bitsSP, BP, SI, DI

Circuito de control de la UE: responsable de obtener instrucciones del búfer de la cola de instrucciones de la BIU, decodificar las instrucciones y enviar comandos de control a los componentes internos de la UE de acuerdo con los requisitos de las instrucciones, para completar las funciones especificadas por cada instrucción.

La ejecución de instrucciones de la UE comienza con el código de operación de búsqueda de instrucción

Si se trata de una operación, los datos de la operación se envían a la ALU a través del registro temporal de la operación, y el resultado de la operación se envía al registro correspondiente a través del bus de datos de la ALU, y el registro de bandera FLAGS cambia de estado de acuerdo con el resultado de la operación.

2.2.2.2 Registros internos de la CPU 8086

Incluye 14 registros de 16 bits
inserte la descripción de la imagen aquí

8086 registros internos de la CPU

registro de propósito general

Se denomina registro de datos, que se puede utilizar como un registro de datos de 16 bits o como dos registros de datos de 8 bits.Cuando se usa como 16 bits, se llama AX, BX, CX, DX. Cuando se usa como 8 bits, AH, BH, CH, DH almacenan el byte alto, AL, BL, CL, DL almacenan el byte bajo y se pueden direccionar de forma independiente.

registro de segmento

El cálculo de la dirección física se lleva a cabo en la BIU, primero desplaza la dirección del segmento 4 bits hacia la izquierda y luego la suma al valor de desplazamiento de 16 bits.

Hay 4 registros de segmento (CS, DS, SS, ES).

CS (registro de segmento de código): el código de instrucción utilizado actualmente se puede obtener del segmento de memoria especificado por el registro de segmento, y la IP proporciona el valor de compensación correspondiente.
SS (Registro de segmento de pila): especifica la dirección inicial de la pila actual.
DS (Registro de segmento de datos): Indica la dirección de inicio del segmento donde se almacenan los datos utilizados por el programa actual.
ES (Registro de segmento adicional): Indica la posición de inicio de la dirección de segmento adicional utilizada por el programa actual, que generalmente se utiliza para almacenar datos originales o resultados de operaciones.

Punteros de dirección y registros de índice

El puntero de dirección y el registro de índice son registros de 16 bits, que generalmente se utilizan para almacenar el desplazamiento de la dirección (es decir, la distancia relativa a la dirección de inicio del segmento).

El puntero de pila SP se usa para señalar la dirección de la parte superior actual de la pila en el segmento de pila. Las instrucciones push (PUSH) y pop (POP) reciben la dirección de desplazamiento de la parte superior de la pila mediante SP .
El puntero de dirección base BP señala la dirección base de los datos que se procesarán en el segmento de la pila, por lo que se denomina registro de puntero de dirección base.
Los registros de índice SI y DI se utilizan para almacenar el desplazamiento de una determinada unidad en el segmento de datos actual.

Puntero de instrucción y registro de banderas

Durante el funcionamiento normal, la IP del puntero de instrucciones almacena la dirección de desplazamiento de la siguiente instrucción que debe buscar la BIU.
Tiene la función de agregar automáticamente 1. Cada vez que se realiza una operación de búsqueda de instrucciones, agregará automáticamente 1 para que apunte a la siguiente unidad de memoria que se va a buscar. Después de buscar cada byte, el contenido de IP se incrementa en 1, y después de buscar una palabra, la IP agrega 2 al contenido.

El registro de bandera FLAGS es un registro de 16 bits y el 8086 utiliza un total de 9 bits efectivos. 6 bits son bits de bandera de estado y 3 bits son bits de bandera de control.

6 banderas de estado

CF (bandera de transporte)- Llevar bit de bandera. CF es 1 cuando se realiza una operación de suma (o resta) para generar un acarreo (o préstamo) del bit más alto; de lo contrario, es 0.
PF (Bandera de paridad) - bandera de paridad. Esta bandera refleja si el número de unos en el resultado de la operación es par o impar. Cuando los 8 bits inferiores del resultado de la ejecución de la instrucción contienen un número par de 1, PF=1; en caso contrario, PF=0.
AF (Bandera de acarreo auxiliar) ——Bandera de acarreo auxiliar. Al realizar una operación de suma (o resta) para que los 4 bits inferiores del resultado tengan un acarreo (o préstamo) a los 4 bits superiores, AF=1; en caso contrario, AF=0.
ZF (bandera cero)- Bandera cero. Si el resultado de la operación actual es cero, ZF=1; de lo contrario, ZF=0.
SF(Bandera de signo) ——bit de bandera de signo. Es lo mismo que el bit más significativo del resultado de la operación.
OF (Indicador de desbordamiento)- bandera de desbordamiento. Cuando hay desbordamiento en la operación del código complemento, OF=1, en caso contrario OF=0.

3 bits de bandera de control

DF (Bandera de dirección) —— bit de bandera de dirección. Se utiliza para especificar la dirección del procesamiento de la cadena.Cuando este bit es "1", la cadena se procesa en orden descendente, es decir, la dirección desciende de mayor a menor. De lo contrario, se procesan en orden ascendente.
IF (Indicador de habilitación de interrupción) ——Bit de indicador de habilitación de interrupción. Se utiliza para controlar si el 8086 puede recibir solicitudes de interrupción externas. Si IF=1, 8086 puede responder a interrupciones externas, de lo contrario no responderá a interrupciones externas.
El estado de IF no afecta las solicitudes de interrupción no enmascarables (NMI) ni las solicitudes de interrupción interna de la CPU.
TF (Bandera de trampa) - Bandera de seguimiento. Es un conjunto de bits de control de trampa para programas de depuración. Cuando este bit es "1", la CPU 8086 está en un estado de un solo paso. En este momento, la CPU generará automáticamente una interrupción interna cada vez que ejecute una instrucción. Cuando se restablece este bit, la CPU reanuda el funcionamiento normal.

2.2.2.3 Memoria y puerto de memoria de 8086CPU

8086 CPU puede abordar1 MBLa unidad de almacenamiento en este espacio de almacenamiento se clasifica y almacena con 8 bits como un orden de bytes.
Cada byte se identifica mediante un código de dirección único, que es un número entero sin signo con un rango de direcciones de 0 a 220-1, pero se acostumbra usar números hexadecimales para representar, es decir00000H~FFFFFH.
El método para organizar el espacio de memoria en el orden de los números de dirección de bytes se llama == "direccionamiento de bytes" ==.
Se estipula que los bytes de 8 bits altos de la palabra se almacenan en la unidad de dirección alta, y los bytes de 8 bits bajos de la palabra se almacenan en la unidad de dirección baja.
La dirección del byte inferior se utiliza como dirección de esta palabra.

Los datos de palabra siempre se encuentran en una dirección par, es decir, la dirección par corresponde al byte bajo y la dirección impar corresponde al byte alto. Los datos de palabra almacenados de acuerdo con esta regla se denominan "palabra regular " .

La estructura de segmentación de la memoria y la formación de la dirección física.

El espacio de almacenamiento de 1 MB se divide en varios segmentos lógicos, y las direcciones base de los 4 segmentos lógicos actuales se establecen en los 4 registros de segmento en la CPU, a saber, el registro de segmento de código CS, el registro de segmento de datos DS, el registro de segmento de pila SS y el registro de segmento adicional ES .

Las direcciones lógicas son direcciones utilizadas por los programas.
La dirección física se refiere a la dirección realmente utilizada por la CPU y la memoria para el intercambio de datos. Consta de dos partes:Dirección base del segmento (dirección de inicio del segmento de 16 bits altos) y dirección de compensación.
El primero viene dado por el registro del segmento, y el segundo se refiere a la distancia de compensación entre la ubicación de la unidad de almacenamiento y la dirección inicial del segmento. Cuando la CPU se dirige a una unidad de almacenamiento, primero desplace el contenido del registro de segmento hacia la izquierda en 4 bits y luego agregue la dirección de desplazamiento de 16 bits proporcionada en la instrucción para formar una dirección física de 20 bits.
Al obtener instrucciones, la CPU selecciona automáticamente el registro de segmento de código CS, después de desplazar 4 bits a la izquierda, agregue la dirección de desplazamiento de 16 bits proporcionada por la instrucción para calcular la dirección física de la instrucción que se va a buscar.
Durante la operación de pila, la CPU selecciona automáticamente el registro de segmento de pila SS, desplace su contenido a la izquierda en 4 bits, agregue la dirección de desplazamiento de 16 bits proporcionada por la instrucción y calcule la dirección física de la unidad superior de la pila.
Cada vez que se accede a un operando, la CPU selecciona automáticamente el registro de segmento de datos (o el registro de segmento adicional ES), desplace el valor base del segmento a la izquierda en 4 bits y agregue una dirección de desplazamiento de 16 bits para obtener la dirección física del operando en la memoria.

Puertos de E/S del 8086

Cada interfaz de E/S tiene un puerto o varios puertos. En el sistema de microcomputadora, se asigna una dirección a cada puerto, que se denomina dirección de puerto.
La CPU 8086 utiliza el bus de direcciones16 bits inferioresComo línea de direccionamiento para puertos de E/S de 8 bits, hay como máximo ==65 536 (64 KB)== puertos de E/S de 8 bits a los que accede el sistema 8086.
Para facilitar el equilibrio de carga del bus de datos, el número de dispositivos conectados a los 8 bits superiores ya los 8 bits inferiores es preferiblemente igual.

Supongo que te gusta

Origin blog.csdn.net/William__Ma/article/details/128164763
Recomendado
Clasificación