Download Diapositiva 1

Document related concepts
no text concepts found
Transcript
MICROPROCESADORES Y
CONTROL DE PERIFÉRICOS
MICROPROCESADOR 8086
Prof. Juan Álvarez
CONTENIDO
•
•
•
•
•
Arquitectura del microprocesador 8086.
Diagramas de bloques.
Registros.
Memoria Segmentada.
Operación en Modo Real.
PROCESADOR INTEL 8086
En 1978, Intel presentó el microprocesador
8086 y un año después, el 8088. Ambos
microprocesadores son de 16 bits y ejecutan
instrucciones en 400 nanosegundos (2.5
MIPs). Podían direccionar una memoria de
hasta 1 MB. El número de instrucciones que
era de 246 en el 8085, se incrementó a más
de 20000 variantes.
En la siguiente figura se ilustra el diagrama
de bloques del microprocesador 8086.
PROCESADOR INTEL 8086
Está constituido por dos unidades:
• La Unidad de Ejecución (EU).
• La Unidad de Interfaz de Bus (BIU).
Además, este procesador presenta el trabajo
con memoria segmentada que se conoce
como trabajo en modo real.
PROCESADOR INTEL 8086
La Unidad de Ejecución se encarga solamente
de ejecutar instrucciones. Recibe la
instrucción decodificada de la cola de
instrucciones, la guarda en el registro de
instrucciones, controla de ejecución
secuencial de las micro-operaciones.
• Para ello, la Unidad de Control y Secuencia
tiene comando sobre cada una de los
elementos internos de la EU.
PROCESADOR INTEL 8086
• En esta unidad se distingue la Unidad
Aritmética y Lógica (ALU), el Registro de
Estado y los registros de propósito general.
La Unidad de Interfaz de Bus (BIU) tiene tres
tareas básicas:
• Leer y decodificar instrucciones.
• Calcular las direcciones de memoria.
• Controlar la entrada y salida de datos a
través de los buses.
PROCESADOR INTEL 8086
• La instrucción capturada por el Control de
Bus es decodificada y depositada en la cola
de instrucciones en espera de ser ejecutada.
Si entretanto la Unidad de Ejecución se
encuentra ocupada y no puede aún ejecutar
esta instrucción, el procesador puede leer
una siguiente instrucción y acumularla en la
cola de instrucciones. La BIU puede leer y
decodificar varias instrucciones.
PROCESADOR INTEL 8086
Un importante aporte de este procesador ha
sido el de la incorporación de la cola de
instrucciones que se convierte en el
precursor de la memoria caché. Se posibilita
así la disponibilidad por anticipado de
instrucciones decodificadas listas para ser
ejecutadas.
PROCESADOR INTEL 8086
• Al observar el proceso lecturadecodificación-ejecución en el 8085, se
encuentra que cualquiera de las tres
acciones debe realizarse sola. Es decir,
mientras se lee, no se decodifica ni se
ejecuta. Mientras se decodifica, no se
efectúan las otras dos. Mientras se ejecuta,
no se puede leer ni decodificar. Cuando un
bloque trabajaba, los demás permanecían
ociosos.
PROCESADOR INTEL 8086
PROCESADOR INTEL 8086
• En el 8086 en cambio, las acciones de
lectura-decodificación son independientes
de la de ejecución. Ello hace más rápido el
procesador.
• La cola de instrucciones se convierte así en
una estación de espera y permite que la BIU
y la EU puedan trabajar sin detenerse.
• Por otro lado, la BIU cuenta con una unidad
de cálculo de direcciones S y registros de
segmento que le permiten determinar las
direcciones de memoria de acuerdo a las
reglas de la memoria segmentada.
PROCESADOR INTEL 8086
• La comunicación externa a través de los
buses se controla con la Unidad de Control
de Bus.
• El Bus interno de Datos es de 16 bits, lo
mismo que los registros. En el 8086 el bus de
datos externo es de 16 bits, pero en el 8088
es de 8 bits.
• El bus de direcciones es de 20 bits.
El la siguiente figura se ilustra el conjunto de
registros de este procesador.
REGISTROS
REGISTROS
Todos los registros de este procesador son de
16 bits y están agrupados en la figura de
acuerdo al uso que se les asigna en las
instrucciones y en la memoria segmentada:
• Registros de propósito general
• Registros punteros e índice
• Registros de segmento
• Registro de Estado
REGISTROS
Registros de Propósito General:
• Registro Acumulador (AX= AH, AL) Este
registro suele guardar el resultado de una
operación aritmética o lógica. Inicialmente
el registro AX contiene las partes menos
significativas de un producto o de una
división.
• Registro Base (BX= BH, BL) Este registro
guarda la dirección base (desplazamiento)
de los datos que hay en la memoria o la
dirección base que hay en la tabla de datos
referidos por la instrucción XLAT.
REGISTROS
• Registro Contador (CX= CH, CL) Este
registro guarda la cuenta de ciertas
instrucciones. Para las operaciones de
desplazamiento del contenido de un
registro, así como en las operaciones de
rotación se emplea el registro CL; en las
operaciones de bucle o LOOP se utiliza el
registro CX.
REGISTROS
• Registro de Datos (DX= DH, DL) Este
registro guarda la parte más significativa de
un producto, luego de una operación de
multiplicación; de igual manera en una
operación de división, retiene el residuo;
también guarda la dirección de un puerto de
Entrada /Salida.
REGISTROS
Los Registro Punteros e Indice direccionan la
posición de memoria donde se almacenan
los datos del operando de muchas
instrucciones.
• Puntero de Pila (SP) Es un registro que se
utiliza para direccionar datos en una pila de
memoria LIFO (último en entrar y primero
en salir). Se le emplea con las instrucciones
PUSH y POP, CALL y RET.
REGISTROS
• Puntero de Base (BP) Es un registro que
permite direccionar una tabla de datos en
una pila de memoria.
• Indice Fuente (SI) Es un registro que se
utiliza para direccionar datos fuente, en
forma indirecta; trabaja también con las
instrucciones de cadena o arreglos.
• Indice Destino (DI) Es un registro que se
utiliza para direccionar el destino de datos
en forma indirecta con las instrucciones de
cadena o arreglos.
REGISTROS
• Puntero de Instrucciones (IP) Es un registro
que apunta siempre a la posición de
memoria de la instrucción a ejecutarse.
Los Registros de Segmento permiten
segmentar la memoria principal indicando
la posición de los segmentos.
• Registro Segmento de Código (CS) Permite
localizar el segmento de memoria donde se
encuentran los programas y procedimientos.
En el modo de operación REAL define el
inicio del segmento en la memoria con una
longitud de 64 KB.
REGISTROS
• Registro Segmento de Datos (DS). Identifica
el segmento de memoria principal de
longitud igual a 64 KB donde se almacenan
datos en general.
• Registro Segmento Extra (ES). También
localiza un segmento de memoria donde se
almacenan datos de cadena.
• Registro Segmento de Pila (SS). Inicia el
segmento de memoria utilizada por la pila.
REGISTROS
El Registro de Banderas (F) contiene
información adicional de una operación
aritmética o lógica y también indica la
condición en que queda el microprocesador
luego de una operación. El 8086 consta de 9
banderas o señalizadores y su número se
incrementa con la aparición de nuevas
versiones de procesadores.
MODO REAL: MEMORIA SEGMENTADA
• El modo real está constituido por el
conjunto de reglas que permite direccionar
o posicionar la memoria.
• El modo real permite que el software de
aplicación se trabaje en 1 MByte de la
memoria.
• La memoria segmentada está formada por
cuatro espacios de memoria perfectamente
definidos para usos específicos.
MODO REAL: MEMORIA SEGMENTADA
Cada segmento ocupa un
espacio no mayor de 64KB.
Se distinguen:
•El segmento de códigos donde
sólo se almacenan programas.
•El segmento de datos permite
almacenar datos en general.
•El segmento extra se destina
para almacenar datos en
general y datos de cadena en
particular.
MODO REAL: MEMORIA SEGMENTADA
• El segmento de pila sirve para almacenar
datos de pila, es decir datos que estuvieron
previamente en registros internos y que se
perderían al ser utilizados los registros, a
menos que previamente se metan en la pila.
• Es importante subrayar que el uso que se le
da a cada segmento es único. Por ejemplo,
no se pueden ejecutar instrucciones que
están almacenadas en un segmento para
datos. Tampoco se guardan datos el
segmento de códigos.
MODO REAL: MEMORIA SEGMENTADA
• Para posicionar una celda de memoria se
apunta primero al inicio de un segmento y
se agrega luego un desplazamiento.
Por ejemplo: en el segmento de códigos se
apunta al inicio del segmento de códigos con
el registro CSx10h. Luego se agrega el
contenido del registro IP para obtener la
dirección donde empieza la instrucción que
se va a ejecutar.
Instrucción = CSx10h + IP
MODO REAL: MEMORIA SEGMENTADA
MODO REAL: MEMORIA SEGMENTADA
• Cada uno de los segmentos tiene su fórmula
para poder alcanzar una celda de memoria
dentro del segmento.
• Otro ejemplo: en el segmento de pila, el
inicio del segmento se calcula mediante
SSx10h y a esa dirección se le agrega el
contenido de SP para apuntar al último dato
almacenado en la pila.
dato de pila = SSx10h + SP
MODO REAL: MEMORIA SEGMENTADA
• Cada segmento se inicia con el registro de
segmento y tiene también sus punteros
específicos. Por ejemplo en el segmento
extra, el puntero es DI.
• En cambio en el segmento de datos, la
fórmula para apuntar a una celda es algo
más compleja.
En la siguiente figura se ilustran estas
fórmulas.
MODO REAL: MEMORIA SEGMENTADA
MODO REAL: MEMORIA SEGMENTADA
• El modo real impone un orden en el uso de
la memoria al poder establecer cuatro zonas
distintas de 64KB para usos distintos, sin
que la información de cada segmento se
traslape.
• Aún cuando los segmentos de memoria
pueden tocarse o traslaparse a propósito,
ellos son como ventanas y se pueden mover
en cualquier superficie de la memoria.
DIAGRAMA DE PATILLAS
• En la siguiente figura se muestra el
diagrama de patillas del 8086. El chip
estaba limitado a 40 patillas y, dado el
número de líneas de control, el fabricante
optó por compartir funciones para cada una
de ellas. Es así que todas las patillas para el
bus de datos, AD0, AD1, …, AD15, se
multiplexan para conectarse al bus de
direcciones.
DIAGRAMA DE PATILLAS
Aparecen líneas de control similares a las del
8085, con algunas pequeñas diferencias. En
general se encuentran líneas de control de
reloj, de estado, de interrupciones, de
reinicialización, de control de bus, de
entrada y salida de datos y de lectura y
escritura.