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.