primera clase microprocesadores

44
HISTORIA DE LA FAMILIA 80X86

Upload: fernandoquisaguano

Post on 08-Jul-2016

215 views

Category:

Documents


0 download

DESCRIPTION

Clase de microprocesadores parte 1

TRANSCRIPT

Page 1: Primera Clase microprocesadores

HISTORIA DE LA FAMILIA 80X86

Page 2: Primera Clase microprocesadores

Arquitectura de Von Newman

Page 3: Primera Clase microprocesadores

Evolución de los uP x86Producto 8080 8085 8086 8088 80286 80386 80486

CLK(MHz) 2 a 3 3 a 8 5 a 10 5 a 8 6 a 16 16 a 33 25 a 50

Memoria Física 64k 64k 1M 1M 16M 4G 4G

Bus de datos interno 8 8 16 16 16 32 32

Bus de datos externo 8 8 16 8 16 32 32

Bus de Direcciones 16 16 20 20 24 32 32

Tipo de datos (bits) 8 8 8, 16 8, 16 8, 16 8, 16, 32 8, 16, 32

Page 4: Primera Clase microprocesadores

80X86Motivos para escoger un 80x86/88:

Ofrece un mejor costo de implementación.Mejor desempeño y mayor espacio de direccionamiento.En 1980 IBM comienza con el desarrollo de su propia computadora personal.

Arquitectura abierta para que otras empresas pudiesen hacer sus modelos compatibles con los de IBM.Optaron por el microprocesador de Intel 8088 de 16bits, a 4.77MHz con 16K de RAM ampliable a 256K gracias a sus 5 ranuras de expansión

Ser la única elección en relación a las implementaciones de la competencia, ( la IBM quería ser la líder del mercado).

Page 5: Primera Clase microprocesadores

Arquitectura del 8086/8088

El 8086

Page 6: Primera Clase microprocesadores

Arquitectura en pipelineLos procesadores antecesores al 8086, estaban limitados en su desempeño debido a la necesidad de realizar dos pasos principales de ejecución.

Fetch/Execute, en forma secuencial. Es decir, no se puede ejecutar una instrucción hasta que se traiga de memoria (Fetch); y no podían traerse instrucciones de memoria mientras se ejecutaba una instrucción, pues el procesador estaba ocupado.

Resumiendo, un alto porcentaje del tiempo, el procesador estaba ocupado haciendo Fetch, cuando su función debiera ser ejecutar las instrucciones. La capacidad de ejecutar instrucciones sólo se ocupaba en un bajo porcentaje.

El 8086

Page 7: Primera Clase microprocesadores

Para solucionar esto, Intel desarrolló la arquitectura en pipeline del Fetch/Execute, en la cual simplemente se divide la tarea en dos secciones:

Una encargada del Fetch (BIU) y otra del Execute (EU).

De esta manera, existen circuitos separados para cada función, los cuales trabajan en paralelo. Si bien el proceso aún es secuencial, solamente al principio se requiere desperdiciar tiempo en el Fetch. A partir de ahí, Fetch va adelante del Execute, y trae instrucciones al procesador mientras este ejecuta las anteriores.

El 8086

Page 8: Primera Clase microprocesadores

El 8086

Estos microprocesadores tienen 2 procesadores conectados internamente, estos procesadores son: EU: Unidad de ejecución (Execution Unit). BIU: Unidad de interfaz con el Bus (Bus Interface Unit).

Diagrama de bloques interno del 8088/86

Page 9: Primera Clase microprocesadores

UNIDAD DE EJECUCIÓN (EU)

La unidad de ejecución (EU) se encarga de realizar las operaciones aritméticas y lógicas, además de proporcionar las direcciones lógicas al BIU, una dirección lógica estáformada de dos direcciones, la primera indica el segmento en el cual se está trabajando y la otra indica el offset, o desplazamiento, de este segmento; esto es segment:offset

La EU tiene una unidad aritmética lógica (ALU) de 16 bits, un registro de banderas y un conjunto de registros de propósito general. El registro de banderas contiene 6 banderas de estado (que la EU manipula para indicar el estado del resultado de una operación lógica o aritmética) y 3 banderas de control que se pueden manipular por los programas para alterar las operaciones del procesador .

El 8086

Page 10: Primera Clase microprocesadores

Unidad de Interfase con el Bus (BIU)

Es la responsable de la comunicación externa del procesador. Esta unidad de proceso se encarga de traducir las direcciones lógicas a direcciones físicas de la memoria con ayuda de los registros de segmento DS, SS, ES, CS e IP.

Para convertir una dirección lógica en una dirección física el BIU corre el valor del registro de segmento 4 posiciones a la izquierda (que es equivalente a multiplicar por 16h) y suma el valor del offset para obtener un valor de 20 bits necesarios

El 8086

Page 11: Primera Clase microprocesadores

MODELO DE MODELO DE PROGRAMACIPROGRAMACIÓÓN DEL N DEL 8086.8086.

El 8086

Page 12: Primera Clase microprocesadores

MODELO DE PROGRAMACIÓN 8086El 8086

Page 13: Primera Clase microprocesadores

Registros del 8088/86 por categoría:

CATEGORÍA BITS NOMBRE

General 168

AX, BX, CX, DXAH, AL, BH, BL, CH, CL, DH, DL

Punteros 16 SP, BP

Indexado 16 SI, DI

Segmentos 16 CS, DS, SS, ES

Instrucción 16 IP

Banderas 16 FR

Page 14: Primera Clase microprocesadores

Registros de datos o de propósito generalAX, BX, CX, DX: pueden utilizarse bien como registros de 16 bits o como dos registros separados de 8 bits (byte superior e inferior) cambiando la X por H o L según queramos referirnos a la parte alta o baja respectivamente. Por ejemplo, AX se descompone en AH (parte alta) y AL (parte baja). Evidentemente, cualquier cambio sobre AH o AL altera AX.y

AX = Acumulador Primario.Todas las operaciones de I/O son realizadas con el apoyo de esteregistrador.Operaciones que utilizan datos inmediatos necesitan de menos memoria cuando son hechas a través de AX.Algunas operaciones con strings e instrucciones aritméticas piden el uso de este registrador.Generalmente, es usado, por los compiladores, para guardar valoresretornados de subrutinas.

El 8086

Page 15: Primera Clase microprocesadores

Registros de propósito generalEl 8086

BX = Base.Es el único registro de propósito general que puede ser utilizado en el cálculo de direccionamiento de memoria.Todas las referencias a la memoria que usa este registro en el cálculo de direccionamiento toman el registro de segmento DS como segmento padrón. De esta manera, no es preciso indicar una posición de memoria fija, sino la número BX (así, haciendo avanzar de unidad en unidad a BX).

CX = Contador.Es decrementado durante las operaciones con loops y strings.Es usado para controlar el número de repeticiones de una instrucción antecedida por el prefijo REP.Es usado para controlar rotaciones y desplazamientos de varios bits.

Page 16: Primera Clase microprocesadores

Registros de propósito generalEl 8086

DX = Direccionador de I/O y registro de Datos.

Es el único registro en el cual se guarda la dirección de los puertos de I/O.

Utilizado en operaciones aritméticas, incluyendo multiplicación y división.

Puede ser usado por compiladores, juntamente con AX, para guardarvalores retornados de subrutinas.

Page 17: Primera Clase microprocesadores

Registros de propósito generalEl 8086

Las operaciones pueden ser realizadas en apenas 8 bits de estos registros afectando el conjunto de 16 bits:

mov ax, 2155h AX = 2155hmov ah, 43h AX = 4355h

Operaciones que operan con una parte de 8 bits, no afectarán la otra parte del registro de 16 bits:

mov dx, 21FFh DX = 21FFhinc dl DX = 2100h

Page 18: Primera Clase microprocesadores

Registros de segmento:El 8086

• Cuando se proyectó el 8086, la Intel se preocupó en facilitar el acesso y el gerenciamento de memoria de la CPU que podría llegar a 1 MByte. Por eso, decidió dividir esa memoria en segmentos de 64 K (16 bits). Todo acesso a la memoria del 8086 es realizado direccionando segmentos de 64 K.

• Los registros de Segmento funcionan como seleccionadoresde estos segmentos de direccionamiento. Cada registro especifica el inicio de un segmento de 64 K direccionados consecutivamente.

• El acceso a direcciones dentro de un segmento es hecho a través de um desplazamiento (offset) a partir de la dirección-base.Son 4 tipos de segmentos considerados: CÓDIGO, DATOS, PILA yEXTRA

Page 19: Primera Clase microprocesadores

Registros de segmento:

SS = Registro de segmento de pila (stack segment). Segmento de pila.

Todos los accesos a datos que utilizan los registros SP o BP toman como referencia este registro.

ES = Registro de segmento extra (extra segment). Segmento de ampliación para zona de datos:Operaciones con strings que usan DI para calcular el direccionamiento son hechas usando el registro ES para definir el segmento.

Es extraordinariamente útil actuando en conjunción con DS: con ambos se puede definir dos zonas de 64 Kb, tan alejadas como se desee en el espacio de direcciones, entre las que se pueden intercambiar datos.

El 8086

Page 20: Primera Clase microprocesadores

Registros de segmento:CS = Registro de segmento de código (code segment).

Contiene la dirección del segmento con las instrucciones del programa. Los programas de más de 64 Kb requieren cambiar CS periódicamente.

Todos los acessos al código de programa toman este registro como selector. El “offset” es el registro IP.

DS – Segmento de Datos (“Data Segment”): Todo acesso a datos usa este registro como referencia, pero hay 3 excepciones:Direcciones para acceso a una pila que usan el registro SS.Direcciones para acceso a datos que usan el BP y son calculados apartir de SS.Operaciones con strings, que usan DI en el cálculo de la dirección, sonhechas usando ES.

El 8086

Page 21: Primera Clase microprocesadores

Registros punteros de pila

Una pila es particularmente importante en lo que se refiere al uso de subrutinas. Cuando una instrucción llama a una subrutina, es preciso marcar cual instrucción del programa debe ser ejecutada luego de terminar la subrutina.

Otra aplicación para una pila es la posibilidad de la ubicación dinámica de variables. Las variables ubicadas en la pila son accesadas con el auxilio de BP.

El 8086

Page 22: Primera Clase microprocesadores

Registros punteros de pilaSP = Puntero de pila (stack pointer). Apunta al inicio de la pila. Utilizado en las instrucciones de manejo de la pila.

Almacena el offset del direccionamiento del tope de la pila, controlando la localización dinámica de variables y el apilamiento de direcciones de retorno de subrutinas.Todas las referencias al SP, por definición, usan el registro SS.

BP = Puntero base (base pointer).

Es un puntero de base, que permite accesar datos localizados en la pila, dedicada al almacenamiento de datos (variables locales y parámetros de las funciones en los programas compilados).Permite accesar a parámetros que fueron pasados por la pila para una determinada subrutina.

El 8086

Page 23: Primera Clase microprocesadores

Puntero de instrucciones o contador de programa

El 8086

IP= Puntero de instrucción (instruction pointer) (IP):

•Marca el desplazamiento de la instrucción en curso dentro del segmento de código. Es automáticamente modificado con la lectura de una instrucción.

• El puntero de instrucción (IP) y el registro CS, juntos, son responsables por marcar la dirección de la próxima instrucción a ser ejecutada.

Page 24: Primera Clase microprocesadores

Registros índices:El 8086

Son usados para accesar datos en la memoria de datos.Son usados en las operaciones con strings.Pueden ser usados como operandos en las operaciones lógicas y aritméticas de 16 bits.

SI = Índice fuente (source index). Utilizado como registro de índice en ciertos modos de direccionamiento indirecto, también se emplea para guardar un valor de desplazamiento en operaciones de cadenas.

DI = Índice destino (destination index). Se usa en determinados modos de direccionamiento indirecto y para almacenar un desplazamiento en operaciones con cadenas.

Page 25: Primera Clase microprocesadores

Registro de estado o de indicadores (flags)El 8086

Es un registro de 16 bits de los cuales 9 son utilizados para indicar diversas situaciones durante la ejecución de un programa.Los bits 0, 2, 4, 6, 7 y 11 son indicadores de condición, que reflejan los resultados de operaciones del programaLos bits del 8 al 10 son indicadores de control y el resto no seutilizan. Estos indicadores pueden ser comprobados por las instrucciones de salto condicional, lo que permite variar el flujo secuencial del programa según el resultado de las operaciones.

Page 26: Primera Clase microprocesadores

Bit

Señala desbordamiento aritméticoDesbordamiento (Overflow Flag")OF

Determina si las operaciones con strings van a incrementar o decrementar los registros de indexación SI y DI

Dirección ("Direction Flag")DF

Este bit controla el estado del sistema de interrupciones enmascarables . Cuando está activo (1) permite las interrupciones; el estado inactivo (0) las deshabilita.

Interrupción ("Interrupt Flag")IF

Si está activo, el procesador genera automáticamente una interrupción después de la ejecución de cada instrucción, lo que permite controlar paso a paso la ejecución del programa. Este bit debe estar normalmente inactivo (a 0).

Detención ("Trap Flag")TF

Si está activo indica que el resultado de operación o de comparación son negativos.

Signo ("Sign Flag")SF

Está activo si el resultado de operación es cero o resultado de comparación igual.

Cero ("Zero Flag")ZF

Indicador de ajuste en operaciones aritméticas con cantidades BCD

Acarreo auxiliarAF

Si está activo indica un número par de bits activos (bits cuyo contenido es 1). Esta información es útil cuando el procesador controla transmisiones de datos.

Paridad ("Parity Flag")PF

Indicador de arrastre del bit de mayor orden, que puede ocurrir en las operaciones aritméticas suma y resta.

Acarreo ("Carry Flag")CF

UsoIndicador de:

Dirección ("Direction Flag")DF

Page 27: Primera Clase microprocesadores

NV ("No overflow")OV ("Overflow")DesbordamientoOF

UP incrementoDN ("Down") decrementoDirecciónDF

DI ("Disabled Interrupt") desactivadaEI ("Enabled Interrupt") activaInterrupciónIF

PL ("Plus") positivoNG ("Negative") negativoSignoSF

NZ ("No Zero")ZR ("Zero")CeroZF

NA ("No Auxiliar")AC ("Auxiliar Carry")Acarreo auxiliarAF

PO ("Parity Odd") paridad imparPE ("Parity Even") paridad parParidadPF

NC ("No Carry")CY ("Carry yes")AcarreoCF

Indicativo si bit 0Indicativo si bit 1Indicador de:Bit

El 8086

Page 28: Primera Clase microprocesadores

Registro de banderas en operaciones aritméticas:

Si tiene las siguientes instrucciones, identificar el estado de los bits del registro de banderas:MOV AX,34F5HADD AX,95EBHSolución:34F5 0011 0100 1111

+95EB 0101 1110 1011CAE0 1100 1010 1110CF=0, no existe acarreo del b15PF=0, el número de unos del resultado es imparAF=1, existe acarreo de b3ZF=0, el resultado obtenido es distinto de ceroSF=1, el b15 es 1

Page 29: Primera Clase microprocesadores

El 8086

SegmentaciSegmentacióón de la Memoria en el 8086 n de la Memoria en el 8086

Page 30: Primera Clase microprocesadores

SEGMENTACIÓNEl 8086

Dirección lógica

Registro de segmentoDesplaz amiento

Dirección de segmento

Dirección física

CPU

SEGMENTO

Memoria

0

FFFFF

Page 31: Primera Clase microprocesadores

Segmento de Memoria

Un segmento es un área continua de memoria que puede tener hasta 64K-bytes, que debe comenzar en una localidad de memoria cuya dirección sea límite de 16 bytes (cantidad denominada párrafo) y que puede traslaparse con otros segmentos.

SEGMENTO

Memoria

0

FFFFF

El 8086

Page 32: Primera Clase microprocesadores

El segmento de código (tiene como base el contenido del registro CS).En este segmento se encuentran las instrucciones que

forman el programa. Para acceder a los datos contenidos en él, se usa el registro IP como desplazamiento.

El segmento de datos (que tiene como base el registro DS). Contiene los datos que utiliza el programa (variables, etc.) Para acceder a los datos contenidos en él, se suele utilizar los registros SI y DI como desplazamiento.

El 8086

Segmentos de Memoria

Page 33: Primera Clase microprocesadores

Segmentos de Memoria

El segmento de pila (con SS como base).- En él se desarrolla la pila del programa, utilizada para

almacenar temporalmente datos, llamadas a funciones, etc. Debe estar presente en todos los programas EXE de forma obligada. Se utiliza el registro SP para acceder a los datos de este segmento.

El segmento extra (con ES como base).- Su uso es opcional, y en él se encuentra un segmento

definido por el usuario y que, regularmente, contiene datos adicionales. Al igual que ocurre con el segmento de datos, para acceder a los datos contenidos en él, se suelen utilizar los registros SI y DI.

El 8086

Page 34: Primera Clase microprocesadores

SEGMENTACIÓNEl 8086

CS

DS

SS

ES

STACK

SEGMENTO EXTRA DE DATOS

SEGMENTO DE DATOS

SEGMENTO DE CÓDIGO

CS

OTRO SEGMENTO

SEGMENTO DE CÓDIGO

PROGRAMA

MEMORIA MEMORIA

TRASLAPE DE SEGMENTOS

Page 35: Primera Clase microprocesadores

SEGMENTACIÓNEl 8086

02000

SEGMENTO DE CÓDIGO RELOCALIZADO

SEGMENTO DE CÓDIGO EN CURSO

PROGRAMA

MEMORIA

Relocalización de un programa usando el registro CS

PROGRAMA

600

1A300600

nuevo (CS)=1A30

Page 36: Primera Clase microprocesadores

El 8086

Cada localidad de memoria tiene dos tipos de direcciones: Dirección Física y Dirección Lógica o efectivaUna dirección Física es el valor único de 20 bits que identifica la localización de cada byte en el espacio de memoria de 1 Mbyte.Los programas tratan con dirección Lógicas mas que con la dirección Física.Para cualquier localidad de memoria, el valor base del segmento ubica el primer byte del contenido del segmento y el valor del offset es la distancia, en bytes , de la localización destino del principio del segmento.

Dirección Física y Dirección Lógica

Page 37: Primera Clase microprocesadores

Formación de una Dirección FísicaEl 8086

00000000

4 bitsDirección de segmento

Dirección efectiva, lógica u offset

Dirección física

EL REGISTRO DE SEGMENTO SE DESPLAZA 4 BITS HACIA LA IZQUIERDA (MULTIPLICACIÓN x16)

20 BITS

Siempre que una memoria es accesada, se genera una dirección física a partir de la dirección lógica.

Page 38: Primera Clase microprocesadores

DIRECCIÓN FÍSICA:

Ejemplo:

si DS=5000 y BX=1950, la dirección lógica es 5000:1950 y la dirección física es:

50000+195051950

Page 39: Primera Clase microprocesadores

Formación de una Dirección FísicaEl 8086

Page 40: Primera Clase microprocesadores

Formación de una Dirección FísicaEl 8086

Por EjemploPor Ejemplo:

Si la dirección base del segmento es 2915h, entonces las direcciones en este segmento inician en 2915:0000 y van hasta 2915:FFFF

Page 41: Primera Clase microprocesadores

SEGMENTO DE CÓDIGO:

Para ejecutar un programa el uP busca y decodifica las instrucciones del CS.Dirección Lógica: CS:IPEjemplo:Dir. LógicaOpcode Assembly L.1132:0100 B057 MOV AL,571132:0102 B686 MOV DH,861132:0104 B272 MOV DL,10110101b1132:0106 01D0 ADD AX,DX

Page 42: Primera Clase microprocesadores

SEGMENTO DE DATOS:

Para facilitar el manejo de datos el 8086 tiene asignada un área de memoria específica que se llama DS.

Dirección Lógica: el segmento de datos tiene como offset los registros BX, SI y DI.

Ejemplo: si DI=0200 y se desea almacenar los datos 25H, 12H y 25FFH; los datos se almacenan en las siguientes localidades de memoria:

DS:0200=25HDS:0201=12HDS:0202=FFHDS:0203=25H

Page 43: Primera Clase microprocesadores

SEGMENTO DE PILA:

Es una sección para leer y/o escribir en la RAM.La pila es de tipo LIFO, último en entrar, primero en salir.Los dos registros utilizados para manejar el SS son: SP y BP.La instrucción para almacenar en la pila es PUSH y para vaciar la pila es POP.

SS:1230 93

SS:1231 5F

SS:1232 C2 C2

SS:1233 85 85

SS:1234 B6 B6 B6

SS:1235 24 24 24

SS:1236

START PUSH AX PUSH BX PUSH DX

Ejemplo: si SP=1236, AX=24B6, BX=85C2, DX=5F93. Muestre el contenido de la pila con las siguientes instrucciones.

PUSH AX

PUSH BX

PUSH DX

Page 44: Primera Clase microprocesadores

SOBRELAPAMIENTO DE SEGMENTOS:

Dos segmentos están sobrepuestos cuando tienen la misma dirección física.El sistema operativo sobrepone los segmentos cuando considera necesario. (para no desperdiciar memoria)Ejemplo:

Dir. Lógica Dir. Física1000:5020 150201500:0020 150201302:2000 15020

64K

64K

DS:SI

CS:IP

DS:SI=1234:4321CS:IP=1665:0011Dir. F1=Dir. 

F2=16661H