Un microprocesador es un circuito integrado con todas las funciones de una CPU, sin embargo, no se puede usar de forma independiente ya que, a diferencia de un microcontrolador, no tiene memoria ni periféricos .
8086 no tiene RAM ni ROM en su interior. Sin embargo, tiene registros internos para almacenar resultados intermedios y finales e interfaces con memoria ubicada fuera de él a través del System Bus.
En el caso del 8086, se trata de un procesador de enteros de 16 bits en un IC de paquete dual en línea de 40 pines.
El tamaño de los registros internos (presentes dentro del chip) indica la cantidad de información con la que el procesador puede operar a la vez ( en este caso, registros de 16 bits ) y cómo mueve los datos internamente dentro del chip, a veces también denominado el bus de datos interno.
8086 proporciona al programador 14 registros internos, cada uno de 16 bits o 2 bytes de ancho. La principal ventaja del microprocesador 8086 es que admite Pipelining.
- Para aumentar la velocidad de ejecución y la velocidad de recuperación, 8086 segmenta la memoria.
- Su bus de direcciones de 20 bits puede direccionar 1 MB de memoria, la segmenta en 16 segmentos de 64 kB.
- 8086 funciona solo con cuatro segmentos de 64 KB dentro de la memoria total de 1 MB.
La arquitectura interna de Intel 8086 se divide en 2 unidades: la unidad de interfaz de bus (BIU) y la unidad de ejecución (EU) . Estos se explican a continuación a continuación.
1. La unidad de interfaz de bus (BIU):
Proporciona la interfaz del 8086 a la memoria externa y los dispositivos de E/S a través del bus del sistema. Realiza varios ciclos de máquina, como lectura de memoria, lectura de E/S, etc. para transferir datos entre la memoria y los dispositivos de E/S.
BIU realiza las siguientes funciones-
- Genera la dirección física de 20 bits para el acceso a la memoria.
- Obtiene instrucciones de la memoria.
- Transfiere datos hacia y desde la memoria y la E/S.
- Mantiene la cola de instrucciones de captación previa de 6 bytes ( admite canalización ).
BIU contiene principalmente los registros de 4 segmentos , el puntero de instrucciones , una cola de búsqueda previa y un circuito de generación de direcciones .
Puntero de instrucción (IP):
- Es un registro de 16 bits . Mantiene el desplazamiento de las siguientes instrucciones en el segmento de código.
- La IP se incrementa después de que se obtiene cada byte de instrucción.
- IP obtiene un nuevo valor cada vez que ocurre una instrucción de bifurcación.
- CS se multiplica por 10H para dar la dirección física de 20 bits del segmento de código.
- La dirección de la siguiente instrucción se calcula como CS x 10H + IP.
Ejemplo:
CS = 4321H IP = 1000H then CS x 10H = 43210H + offset = 44210H Here Offset = Instruction Pointer(IP)
Esta es la dirección de la instrucción.
Registro de segmento de código: (registro de 16 bits)
CS contiene la dirección base para el segmento de código. Todos los programas se almacenan en el segmento de código y se accede a ellos a través de la IP.
Registro de segmento de datos: (registro de 16 bits)
DS contiene la dirección base para el segmento de datos.
Registro de segmento de pila: (registro de 16 bits)
SS contiene la dirección base para el segmento de pila.
Registro de segmento adicional: (registro de 16 bits)
ES contiene la dirección base para el segmento adicional.
Tenga en cuenta que los segmentos están presentes en la memoria y los registros de segmento están presentes en el microprocesador.
Los registros de segmento almacenan la dirección inicial de cada segmento en la memoria.
Circuito de generación de direcciones:
- La BIU tiene un circuito de generación de direcciones físicas.
- Genera la dirección física de 20 bits usando direcciones de Segmento y Compensación usando la fórmula:
- en el circuito de la Unidad de interfaz de bus (BIU) que se muestra con el símbolo Σ, es responsable de la unidad de cálculo que se utiliza para calcular la dirección física de una instrucción en la memoria.
Physical Address = Segment Address x 10H + Offset Address
Cola de búsqueda previa de 6 bytes:
- Es una cola de 6 bytes (FIFO).
- Obtener la siguiente instrucción (por BIU de CS) mientras se ejecuta la instrucción actual se denomina canalización.
- Se vacía cada vez que se produce una instrucción de bifurcación.
- La cola de búsqueda previa es de 6 bytes solo porque el tamaño máximo de instrucción que puede tener en 8086 es de 6 bytes. Por lo tanto, para cubrir todos los operandos y campos de datos de instrucción de tamaño máximo en el microprocesador 8086, hay una cola de búsqueda previa de 6 bytes.
- La cola de búsqueda previa está conectada con la unidad de control que es responsable de decodificar el código de operación y los operandos y decirle a la unidad de ejecución qué hacer con la ayuda de señales de control y sincronización.
- La cola de búsqueda previa es responsable de canalizar y debido a eso, el microprocesador 8086 se llama buscar, decodificar, ejecutar, ejecutar, .. tipo de microprocesador, porque siempre hay instrucciones presentes para decodificar y ejecutar en esta cola, por lo tanto, esta cola aumenta la velocidad de ejecución en el microprocesador.
- Cuando hay un espacio de 2 bytes en la cola de búsqueda previa de instrucciones, solo la siguiente instrucción se insertará en la cola ; de lo contrario, si solo hay un espacio libre de 1 byte, no habrá ninguna asignación en la cola. Esperará un espacio de 2 bytes en las operaciones de decodificación de cola subsiguientes.
- La cola de búsqueda previa de instrucciones funciona de manera secuencial, por lo que si hay alguna condición de bifurcación, en esa situación falla la cola de búsqueda previa. Por lo tanto, para evitar el caos, la cola de instrucciones se vacía cuando se produce cualquier rama o salto condicional.
2. La Unidad de Ejecución (UE):
Los componentes principales de la UE son los registros de propósito general, la ALU, los registros de propósito especial, el registro de instrucciones y el decodificador de instrucciones, y el registro de bandera/estado.
- Obtiene instrucciones de la cola en BIU, decodifica y ejecuta operaciones aritméticas y lógicas utilizando la ALU.
- Envía señales de control para operaciones internas de transferencia de datos dentro del microprocesador. (Unidad de control)
- Envía señales de solicitud a la BIU para acceder al módulo externo.
- Opera con respecto a estados T (ciclos de reloj) y no ciclos de máquina.
8086 tiene cuatro registros de uso general de 16 bits AX, BX, CX y DX. Almacenar valores intermedios durante la ejecución. Cada uno de estos tiene dos partes de 8 bits (superior e inferior).
- Registro AX: (Combinación de registros A L y AH )
Contiene operandos y resultados durante las operaciones de multiplicación y división. También un acumulador durante las operaciones de string.
- Registro BX: (Combinación de Registros B L y B H )
Mantiene la dirección de memoria (dirección de desplazamiento) en modos de direccionamiento indirecto.
- Registro CX: (Combinación de registros C L y C H )
Mantiene el conteo de instrucciones como operaciones de bucle, rotaciones, desplazamientos y strings.
- Registro DX: (Combinación de registros D L y D H )
Se utiliza con AX para almacenar valores de 32 bits durante la multiplicación y la división.
Unidad lógica aritmética (16 bits):
Realiza operaciones aritméticas y lógicas de 8 y 16 bits .
Registros de propósito especial (16 bits):
Los registros de propósito especial también se denominan registros de compensación. Que apunta a ubicaciones de memoria específicas debajo de cada segmento.
Podemos entender el concepto de segmentos como páginas de libros de texto. Supongamos que hay 10 capítulos en un libro de texto y cada capítulo ocupa exactamente 100 páginas. Así que el libro contendrá 1000 páginas en total. Ahora supongamos que queremos acceder a la página número 575 del libro, entonces 500 será la dirección base del segmento que puede ser cualquier cosa en el contexto de microprocesadores como Código, Datos, Pila y Segmento Extra. Entonces, 500 serán registros de segmento que están presentes en la Unidad de interfaz de bus (BIU). Y 500 + 75 se denomina registro de compensación a través del cual podemos llegar a un número de página específico en un segmento específico.
Por lo tanto, 500 es la dirección base del segmento y 75 es una dirección de desplazamiento o (Puntero de instrucción, Puntero de pila, Puntero base, Índice de origen, Índice de destino) cualquiera de los anteriores según la implementación de su segmento.
- Puntero de pila:
apunta a la parte superior de la pila. Stack está en Stack Segment, se usa durante instrucciones como PUSH, POP, CALL, RET, etc. - Puntero base:
BP puede contener las direcciones de desplazamiento de cualquier ubicación en el segmento de la pila. Se utiliza para acceder a ubicaciones aleatorias de la pila. - Índice de origen:
contiene la dirección de desplazamiento en el segmento de datos durante las operaciones de string. - Índice de destino:
contiene la dirección de desplazamiento en el segmento adicional durante las operaciones de string.
Registro de instrucciones y decodificador de instrucciones:
la UE obtiene un código de operación de la cola en el registro de instrucciones. El decodificador de instrucciones lo decodifica y envía la información al circuito de control para su ejecución.
Registro Flag/Status (16 bits) :
Posee 9 flags que ayudan a cambiar o reconocer el estado del microprocesador.
6 banderas de estado:
- Llevar bandera (CF)
- Indicador de paridad (PF)
- Bandera de acarreo auxiliar (AF)
- Bandera cero (Z)
- Firmar bandera(S)
- Indicador de desbordamiento (O)
Los indicadores de estado se actualizan después de cada operación aritmética y lógica.
3 banderas de control:
- Bandera de captura (TF)
- Indicador de interrupción (SI)
- Indicador de dirección (DF)
Estos indicadores se pueden configurar o restablecer mediante instrucciones de control como CLC, STC, CLD, STD, CLI, STI, etc.
Las banderas de control se utilizan para controlar ciertas operaciones.
Ejecución de toda la Arquitectura 8086:
- Todas las instrucciones se almacenan en la memoria, por lo tanto, para obtener cualquier instrucción, la primera tarea es obtener la dirección física de la instrucción que se va a buscar. Por lo tanto, esta tarea la realiza la Unidad de interfaz de bus (BIU) y los Registros de segmento. Supongamos que el segmento de Código tiene una dirección de Segmento y el puntero de Instrucción tiene alguna dirección de desplazamiento, entonces el circuito calculador de dirección física calcula la dirección física en la que se va a buscar nuestra instrucción.
- Después de que la instrucción de cálculo de dirección se obtiene de la memoria y pasa a través del C-Bus (Bus de datos) como se muestra en la figura, y de acuerdo con el tamaño de la instrucción, la cola de búsqueda previa de instrucciones se llena. Por ejemplo , MOV AX, BX es una instrucción de 1 byte, por lo que tomará solo el primer bloque de la cola, y MOV BX, 4050H es una instrucción de 3 bytes, por lo que tomará 3 bloques de la cola de búsqueda previa.
- Cuando nuestra instrucción está lista para su ejecución, de acuerdo con la propiedad FIFO de la cola, la instrucción ingresa al sistema de control o circuito de control que reside en la unidad de ejecución. Aquí tiene lugar la decodificación de instrucciones . El sistema de control de decodificación genera un código de operación que le dice a la unidad de microprocesador qué operación se debe realizar. Entonces, el sistema de control envía señales a todo el microprocesador sobre qué realizar y qué extraer de los registros de propósito general y especial.
- Por lo tanto, después de decodificar, el microprocesador obtiene datos de GPR y, de acuerdo con instrucciones como ADD, SUB, MUL y DIV, los datos que residen en GPR se obtienen y se colocan como entrada de ALU. y después de esa suma, multiplicación, división o resta, el cálculo que se deba realizar.
- De acuerdo con la aritmética, los valores del registro de banderas cambian dinámicamente.
- Mientras Instrucción estaba decodificando y ejecutando desde el paso 3 de nuestro algoritmo, la Unidad de interfaz de bus no permanece inactiva. obtiene continuamente una instrucción de la memoria y la coloca en una cola de búsqueda previa y se prepara para la ejecución en forma FIFO cada vez que llega el momento.
- Entonces, de esta manera, a diferencia del microprocesador 8085, aquí el proceso de obtención, decodificación y ejecución ocurre en forma paralela, no secuencial. Esto se denomina canalización y, debido a la cola de obtención previa de instrucciones, todos los procesos de obtención, decodificación y ejecución se realizan en paralelo. Por lo tanto, hay particiones en la arquitectura 8086 como la Unidad de interfaz de bus y la Unidad de ejecución para soportar los fenómenos de canalización.