Instituto Tecnológico de Veracruz
Nombre: Ivan Mariscal Sanchez (E07020894) Materia: Lenguaje Ensamblador Maestro: Genaro Méndez López Horario: 7:00-8:00 pm H. Veracruz, Ver; a 05 de Septiembre del 2011
1
Sistema basados en 8086 Vamos a estudiar un sistema computador basado en el 8086 de Intel. Se trata de una serie de procesadores que van desde 8088 hasta los Pentium actuales, que respetan una serie de características que permiten que cualquier software desarrollado para uno de ellos siga siendo funcional en las generaciones siguientes. A esto es a lo que se le llama compatibilidad. Gracias a la compatibilidad podemos seguir desarrollando programas para el 8086 con la plena certeza de que funcionarán en cualquier máquina que disponga de un procesador de Intel de la familia 8086. Para proporcionar compatibilidad no solo se desea que el código se ejecute bien dentro del procesador. También se espera que la relación del procesador con el entorno también se respete en cierta medida. De ahí que el conjunto de controladores que presentamos, que de hecho son obsoletos, mantienen la misma funcionalidad que podemos encontrar hoy en computadores basados en Pentium. PROCESADORES 8086 CPU de 16 bits 8087 NDP Numeric Data Processor 8089 IOP Procesador de entradas/salidas CONTROLADORES DE BUS 8288 Controlador de Bus 8282 Latch de direcciones octal 8286 Transceptor de datos octal CONTROLADORES DE SISTEMA 8259 Controlador programable de interrupciones 8237 Controlador programable de DMA CONTROLADORES DE PERIFÉRICOS 8251 Controlador programable de Interfaz serie 8255 Controlador programable de Interfaz paralelo 8275 Controlador programable de C.R.T. 8272 Controlador programable de discos flexibles 8086 5MHz..10MHz -Registros de datos de 16 bits -Bus de datos de 16 bits (Distribuido en Byte par y Byte impar, según la dirección de acceso. Todo acceso a byte sobre una dirección par interactúa sobre el Byte par y lo correspondiente para los accesos a direcciones impares. Los accesos a palabras en dirección par interactúan con ambos. Los accesos a palabra con dirección impar implican dos accesos reales)
-Bus de direcciones de 10 bits (Está multiplexado con el bus de datos + cuatro líneas de dirección separadas. Se distingue entre espacio de direcciones de memoria y espacio de direcciones de entrada salida)
-Esquema de direccionamiento segmentado. Segmento+Desplazamiento (El segmento es una sección de memoria de 65536 bytes que comienza en la localización especificada por el registro de segmento correspondiente. El usuario puede manejar 4 registros de segmento: CS,DS,ES,SS)
2
80186 (10MHz..12MHz) Incluye funciones extra en el chip, que en los sistemas 8086 eran realizadas por controladores separados. -
Generador de señal de reloj 2 canales de DMA (con bus de direcciones de 20 bits) 3 contadores programables de 16 bits Controlador de interrupciones (hasta 128 externas) Generador programable de estados de espera Unidad programable de decodificación de direcciones (para activar el chip select) 16 nuevas instrucciones
3
80286 100.000 transistores -
(6MHz..12MHz)
Separación física del bus de datos y el bus de direcciones (este de 24 líneas y aquel de 16) Reducción del ciclo de bus a 2 periodos de reloj Introducción de lógica de manejo de memoria virtual Modo Real (el modo compatible 8086) El bus de direcciones se limita a 20 líneas (las otras 4 permanecen a cero -salvo en el momento de arranque que están a 1 durante la ejecución de la primera instrucción) Modo Protegido ( uso completo de las 24 líneas del bus de direcciones, gestión de protección de memoria) (El procesador arranca en modo real y es conmutable a modo protegido, pero luego es necesario resetearlo para volver al modo real) Uso del bit A20 de direcciones. Cuando el registro de segmento tiene un valor máximo y al sumársele el desplazamiento se genera un acarreo, la dirección resultante tiene el bit 20 a 1. En el procesador 8086, puesto que no existe el bit 20 en el bus de direcciones la dirección resultante sería en realidad el módulo 220 de la dirección correcta. Pero a partir de el 80286 ya existe la línea física A20. Por medio de una lógica controlada por el programador (A20 gate) estos pueden decidir si en el modo real se va a permitir la activación de ese bit o no (única y exclusivamente el A20). Esto proporciona, en el caso de que se opte por permitir la activación de este bit en el modo real, un conjunto extra de direcciones accesibles (100000h-10FFEFh).
4
80386
(16MHz..33MHz)
-
Bus de datos de 32 bits Tamaño de palabra (registros) de 32 bits Bus de direcciones de 32 bits Segmentación y paginado virtual Nuevo modo de direccionamiento (indice escalado) Nuevas instrucciones (sobre todo de manejo de bits) Permite la conmutación entre el modo real y el modo protegido en caliente Introduce el modo virtual (el modo real en una partición de 1M de memoria)
Modo Real. Es el modo 8086 con registros de 32 bits. No obstante los registros son multicara: EAX (registro de 32 bits) AX (registro de 16 bits) AH, AL (registros de 8 bits) Admite nuevos modos de dirección en los que cualquier registro de 32 bits puede ser utilizado como registro base o registro índice. Introduce un nuevo modo de direccionamiento que es el índice escalado: Es posible multiplicar un registro por un escalar en la especificación de una dirección imaginar las dos instrucciones siguientes en un bucle: MOV AX, [EBX*2] INC EBX
Modo protegido. Lo único que distingue al modo real del modo protegido es el direccionamiento a memoria que tiene en cuenta la segmentación y el paginado. En el 80286 la memoria virtual se basa únicamente en la segmentación. El esquema de paginado es una incorporación opcional (activable o desactivable) del 80386. La diferencia entre segmentación y paginado es que los segmentos son secciones de memoria de longitud variable, mientras que las páginas tienen tamaño fijo. Las direcciones se siguen especificando con dos figuras, el segmento y el offset. El segmento sigue especificándose con 16 bits mientras que el offset utiliza 32. El offset es lo que se denomina la 'dirección efectiva'. El registro de segmento es un índice para localizar en una tabla el 'descriptor de segmento'. Este descriptor contiene la dirección base de memoria del segmento (32 bits) , su tamaño (32 bits -16 en 80286) e información sobre derechos de acceso: (entre otros) G: (0) el límite viene especificado en bytes, (1) el límite viene especificado en páginas de 4K A: (1) que el la información ha sido accedida (0) que la información o ha sido accedida R/W: permite la protección de lectura/escritura de la información contenida E: (1) se trata de código (0) se trata de datos DPL: descriptor de niveles de privilegio (00) máximo privilegio, (11) mínimo privilegio P: bit de presencia en memoria física. La dirección base del segmento concatenada con la dirección efectiva forma la dirección de memoria (virtual). La tabla de descriptores de segmento reside en memoria. Para no tener que acceder a memoria cada vez que se desea calcular una dirección, asociado al registro de segmento existe una sección escondida que alberga el descriptor del segmento activo en cada momento. Las tablas de descriptores son construidas por el sistema operativo. Las direcciones de estas tablas están localizadas en los registros de tabla de
5
SEGMENTO(16..0)
0FFSET(31..0)
Tabla de segmentos
Descriptor
dirección de segmento +
offset
dirección virtual? (efectiva?) DIR TABL OFFSET
CR3
pagina
offset
descriptores y existen tres de estos registros: LRDT (local), GRDT (global), IRDT (interrupciones). Dentro del propio registro de segmento se encuentra codificado (TI; bit 2) a qué tabla de descriptores se accederá para obtener el descriptor de segmento Paginado Si se activa el paginado, la dirección obtenida a partir del la dirección base del segmento y el desplazamiento es aún una dirección de memoria virtual. El esquema de paginado se encarga de traducir ésta a una dirección de memoria física. La dirección virtual compone de tres secciones: directorio, tabla y offset. Los 10 bits que forman la sección directorio constituyen un índice a un Directorio de páginas (cuya dirección en memoria está contenida en un registro, C3). Cada una de las entradas de este directorio es un Descriptor de tabla de páginas, que apunta a dicha tabla, la cual contiene las direcciones físicas de un conjunto de páginas. La sección tabla (10 bits) de la dirección virtual nos permite seleccionar una de estas páginas y comprobar si está activa y con residencia en la memoria, en cuyo defecto ha de realizarse un proceso de sustitución. Activa la página, el descriptor de página contiene los 20 bits de más significativos que concatenados a la sección offset (12) nos da la dirección de memoria física en la que está ubicada la página. Los demás bits contenidos en los descriptores (tanto de tabla de páginas como de página) codifican información de acceso: (entre otros) P: bit de presencia en memoria D: bit de página modificada R/W: derechos de acceso lectura/escritura U/S: bit de usuario/supervisor (equivaldrían a los privilegios de segmentación: usuario:11, supervisor 00,01,10) Con objeto de eludir todo este farragoso proceso de traducción hasta donde sea posible, se ha creado dentro del procesador una TLB (32 entradas), es decir, una tabla con las direcciones físicas de las páginas más accedidas. Con la dirección virtual se explora esta tabla por si
6
tuviérase la suerte de encontrarse ya traducida, en cuyo caso el ahorro de tiempo en el acceso a memoria es considerable.
7
80486 1 millón de transistores (16MHz..33MHz) -
-
Se mantienen los tamaños de registros y ancho de buses del 386 Se introduce la ejecución segmentada de las instrucciones (5 etapas de ejecución dando un periodo por instrucción) Se introduce memoria caché dentro del chip. (En 386 era externa). (8k bytes 2-way associative 8k bytes para datos y para instrucciones) Se introduce el coprocesador matemático dentro del chip (pero no como unidad funcional sino como coprocesador, como dos chips en uno) Se añaden los pins de paridad (4) (uno por vía de datos de 8 bits) Se incorpora el ciclo burst en las lecturas: puede realizar cuatro ciclos de lectura de memoria en tan sólo cinco periodo (2-1-1-1) cuando teóricamente se necesitan 8 (2-2-2-2) (Esta modalidad de acceso sólo está prevista para cuatro accesos consecutivos) Se añaden 6 nuevas instrucciones Se aumenta la frecuencia de reloj al doble Control de A20 mediante un pin de entrada activo a nivel bajo
8
Pentium 3.1 millones de transistores (60MHz..200MHz) -
-
-
Se introduce la técnica super escalar. (2 pipelines de cinco etapas cada uno -seguidos del pipeline de la unidad fp con tres etapas más) Uno de los cauces, V, ejecuta instrucciones simples (INC DEC ADD SUB MUL...) y está cableado, el otro, U, ejecuta las instrucciones complejas (REP STOW...) y está microprogramado. Bus de datos de 64 bits. Mantiene el uso de las señal A20Mask, para habilitar el uso de A20. 2 caché internas Una para datos y otra para instrucciones, esta última de sólo lectura El coprocesador interno se ha acelarado al incorporar la segmentación (10 veces el del 486) Lógica de predicción de saltos Permite trabajar con páginas de 4k (manteniendo la compatibilidad con 386 y 486) o con páginas de 4M. Incorpora 2 conjuntos de TLB, uno para código y otro para datos. La TLB de datos tiene 64 entradas para páginas de 4k o 8 para páginas de 4M. La TLB de instrucciones tiene32 entradas para páginas de 4K. (386/486 tenían una única tabla de 32 entradas para datos y código simultáneamente) Es posible realizar ciclos burst de escritura de memoria, además de lectura. Contiene la lógica para trabajar con otro procesador en un entorno multiprocesador. Contiene la lógica para trabajar con una caché externa como segundo nivel de cache L2
(Definición:Tecnologia overdrive: permitir que el procesador trabaje a mayor frecuencia de la que le correspondería según la placa madre en la que está insertado)
9
Pentium pro. 5.5 millones de transistores. (150MHz..200MHz) -
-
introduce el concepto de dual cavity: Incluye la L2 en el mismo empaquetamiento físico, aunque técnicamente está separada del procesador. 256Kb. Manteniendo la caché internas (8k+8k). Se aproxima en concepto a los procesadores RISC: Las instrucciones tradicionales 8086 se decodifican en subinstrucciones internas que son las que realmente se ejecutan en los cauces de segmentación. Todas las instrucciones internas tienen un formato triádico lo que conlleva la introducción de una gran cantidad de registros internos en los que mantener los datos con los que trabajan estas instrucciones. Es un procesador supersegmentado porque los cauces se desarrollan en 12 ( frente a las cinco hasta ahora) etapas Es un procesador superescalar porque contiene varias unidades de ejecución simultánea. Admite ejecución fuera de orden (especulativa), aunque no en accesos de escritura a memoria. Gestiona la predicción de los saltos.
Tecnología MMX. (multimedia extensión) Se refiere a una posible extensión de las capacidades de los procesadores para adaptarse mejor a entornos multimedia. Ello se logra incorporando funciones propias de un DSP (Proceso digital de señales) Cuando la tienen incorporada, la sección mmx del procesador comparte los registros con la unidad de punto flotante (o coprocesador matemático). -
Register aliasing: Utiliza los mismos registros que el coprocesador. Cuando la instrucción es del tipo mmx la batería de registros es aludida con una referencia y cuando la instrucción es de tipo fp, el mismo conjunto de registros es aludido con otro nombre. Es por ello necesario que no se mezclen ambos tipos de instrucciones sin un previo vaciado del conjunto de registros.
-
Maneja 4 tipos de datos sobre un registro de 64 bits. Cuádruple palabra 64 bits Doble palabra empaquetada 2x32 bits Palabra empaquetada 4*16 bits Byte empaquetado 8x8 bits
-
Incorpora hasta 57 nuevas instrucciones específicas mmx.
Ref: The 8086 IBMPC and compatible computers (vol II) Design and interfacing of the IBMPC, PS and compatibles. Third edition. Prentice Hall Muhamad Ali Mazidi Janice Gillispie Mazidi
10