Intel 80286 80386 y 80486

23
Intel 80286

Transcript of Intel 80286 80386 y 80486

Page 1: Intel 80286 80386 y 80486

Intel 80286

Page 2: Intel 80286 80386 y 80486

EL REVOLUCIONARIO PROCESADOR 80286

El 286 era un CPU pensado por y para la multitarea, debido a una serie de características internas que lo hacían idóneo para ello. En primer lugar, era más rápido que sus antecesores, y no sólo en tiempo de ejecución de instrucciones, sino también en el reloj del sistema. Los 286 comenzaron a verse a velocidades de reloj de 6, 8, 12, 16 y 20MHz.

Hay que hacer notar que los CPU’s a 16 y 20MHz no los fabricaba Intel: Por aquel entonces comenzaba a despuntar la casa AMD, la cual ha dado al mundo versiones muy buenas de los CPU’s de Intel. Debemos recordar al lector que Intel no había terminado de atar los cabos de las patentes, de manera que cualquiera podía basarse en sus diseños para crear un CPU. 

También entró en escena otro fabricante: HARRIS. Si bien las CPU’s de Harris eran las más rápidas que jamás se habían visto, (¡20 MHz!), también es cierto que quiso incorporar ciertas mejoras al 286 que provocaron una serie de problemas de compatibilidad con el software, de manera que los CPU’s de Harris siempre tuvieron fama de ser problemáticos.

Page 3: Intel 80286 80386 y 80486

Las características del 286 eran:

Bus de datos de 16Bits. Direccionamiento ampliado de 24Bits. Optimización del tiempo de ejecución de instrucciones. Dos modos de trabajo: Real y Protegido. Con 24Bits de bus de direcciones, el 286 permitía la ampliación de memoria hasta

valores inimaginados: 16MB de RAM.

A pesar de esto, era raro el 286 que tenía más de 4MB de RAM, pues el precio de la memoria en aquellos tiempos era muy costoso: Llegó a ser de hasta 10.000 Ptas el MB.

Antes hemos dicho que el 286 tenía dos modos de trabajo: Real y Protegido. El modo real de trabajo es el estándar del 8088/8086, con la limitación de 1MB de RAM. Este modo se implantó para tener la compatibilidad con los sistemas antiguos.

El modo Protegido se implantó para la integración del 286 en los sistemas multiusuario y multiprocesador de aquella época, que eran las primitivas versiones de OS/2 y UNIX. En este modo se pueden utilizar la máxima memoria de la que se disponga, mediante la carga de un driver en el CONFIG.SYS de la máquina, ya sea en MS-DOS ó DR-DOS.

Page 4: Intel 80286 80386 y 80486

Para conseguir la “multitarea” de los sistemas anteriormente reseñados, al 286 “no se le puede dejar solo” con la memoria. Es por ello por lo que el 286 incorpora una especie de “coprocesador” encargado de las colas de instrucciones y el manejo de la memoria, conceptos estos que provocan una especie de “modo de supervisión” del trabajo realizado, concepto ya desarrollado por Motorola en su serie 68000.

Sin embargo, con el 286 comenzaron los errores de Intel, ya que había un error en el modo de trabajo virtual: En determinadas circunstancias, no se podía volver al modo real, quedando el ordenador colgado. Este fue uno de las motivos que impidió el avance del DOS. Por aquella época, se estaba preparando la versión 4.0 del MS-DOS. Esta versión incluía una serie de órdenes que permitían el trabajo en modo protegido en DOS, lo cual hubiera acabado en posteriores versiones en una especie de DOS multitarea. Lamentablemente, el fallo del 286 truncó esa esperanza, de manera que el MS-DOS 4.0 acabó con una serie de funciones y órdenes que no están documentadas en ningún sitio para que no se usen, que utilizaban las prestaciones avanzadas del 286.

Esto hubiera supuesto la muerte de la compatibilidad, ya que también se habría acabado con la barrera de los 640KB. Aún así, como opinión personal, creo que al final hubiera sido mejor para todos. Por supuesto, también apareció el coprocesador de turno, denominado 80287, con una serie de mejoras en el cálculo y en velocidad de ejecución.

Page 5: Intel 80286 80386 y 80486

Esto hubiera supuesto la muerte de la compatibilidad, ya que también se habría acabado con la barrera de los 640KB. Aún así, como opinión personal, creo que al final hubiera sido mejor para todos. Por supuesto, también apareció el coprocesador de turno, denominado 80287, con una serie de mejoras en el cálculo y en velocidad de ejecución.

Page 6: Intel 80286 80386 y 80486

Intel 80386

Page 7: Intel 80286 80386 y 80486

El Intel 80386 (i386, 386) es un microprocesador CISC con arquitectura x86. Durante su diseño se lo llamó 'P3', debido a que era el prototipo de la tercera generación x86. El i386 fue empleado como la unidad central de proceso de muchos ordenadores personales desde mediados de los años 80 hasta principios de los 90.

Fabricado y diseñado por Intel, el procesador i386 fue lanzado al mercado el 16 de octubre de1985. Intel estuvo en contra de fabricarlo antes de esa fecha debido a que los costes de producción lo hubieran hecho poco rentable. Los primeros procesadores fueron enviados a los clientes en 1986. Del mismo modo, las placas base para ordenadores basados en el i386 eran al principio muy elaboradas y caras, pero con el tiempo su diseño se racionalizó.

En mayo de 2006 Intel anunció que la fabricación del 386 finalizaría a finales de septiembre de 2007. Aunque ha quedado obsoleto como CPU de ordenador personal, Intel ha seguido fabricando el chip para sistemas embebidos y tecnología aeroespacial.

El procesador i386 fue una evolución importante en el mundo de la línea de procesadores que se remonta al Intel 8008. El predecesor del i386 fue el Intel 80286, un procesador de 16 bits con un sistema de memoria segmentada. El i386 añadió una arquitectura de 32 bits y una unidad de traslación de páginas, lo que hizo mucho más sencillo implementar sistemas operativos que emplearan memoria virtual.

Page 8: Intel 80286 80386 y 80486

Intel introdujo posteriormente el i486, pero ni éste ni sus sucesores han introducido tantos cambios en la arquitectura x86 como el i386 con su sistema de direccionamiento plano de 32 bits. Otros microprocesadores, como el Motorola 68000 tenían direccionamiento plano desde mucho antes.

La mayoría de las aplicaciones diseñadas para ordenadores personales con un procesador i486 posterior al i386 funcionarán en un i386, debido a que los cambios del conjunto de instrucciones desde el i386 ha sido mínimo. Además el uso de las nuevas instrucciones puede ser evitado fácilmente. Adaptar un programa para el i286 es mucho más difícil.

Debido al alto grado de compatibilidad, la arquitectura del conjunto de procesadores compatibles con el i386 suele ser llamada arquitectura i386. El conjunto de instrucciones para dicha arquitectura se conoce actualmente como IA-32.

Page 9: Intel 80286 80386 y 80486

80386SX Después de que comenzara la producción del 80386, Intel introdujo el Intel

80386SX. El i386SX fue diseñado como una versión económica del i386 para competir con la versión del 286 producida por AMD, (el Am286). Los i386SX, como todos los i386, tienen una arquitectura de 32 bits, pero se comunican con el exterior mediante un bus externo de 16 bits (una situación parecida a la del Intel 8086 y el Intel 8088 en los primeros PC), y tiene un bus de direcciones de 24 bits, por lo que sólo puede direccionar 16 MiB. Esto hace que sean el doble de lentos al acceder al exterior, pero por el contrario el diseño de los circuitos auxiliares del microprocesador es mucho más sencillo. El i386 original fue renombrado a Intel 80386DX para evitar la confusión. Además, aprovechando el diseño del i386SX, Intel sacó al mercado una versión del i386SX llamada SX Now! que era compatible pin a pin con el i286, haciendo que los poseedores de ordenadores con el i286 pudieran actualizarse al i386SX sin cambiar de placa base.

Page 10: Intel 80286 80386 y 80486

386SL El 386SL se introdujo como un procesador alternativo para portátiles. Ofrece varias

opciones de ahorro de energía (por ej., SMM), además de varios modos "sleep" (reposo) para conservar la batería. Viene con soporte para una caché externa de 16 a 64 KiB. Las funciones extra causan que esta variante tenga 3 veces más transistores que el 386DX. El 386SL estuvo disponible inicialmente a 20 MHz de reloj, al que se añadió el modelo de 25 MHz posteriormente

Page 11: Intel 80286 80386 y 80486

El primer fabricante de PC en diseñar y manufacturar un PC basado en el 386 fue Compaq, adelantando a IBM, que había sido la compañía dominante hasta entonces. IBM recibió ofertas para usar el procesador, pero prefirió seguir usando procesadores anteriores sobre los que tenía derechos de fabricación. El éxito del Compaq Deskpro 386 jugó un papel importante en la creación de la industria de clones PC, y estableció a Intel (y Microsoft) como el proveedor central de componentes.

Desde un punto de vista comercial, el i386 fue importante debido a que fue el primer microprocesador disponible desde una única fuente. Anteriormente, la dificultad de producir loscircuitos integrados y la poca fiabilidad para producir una cantidad suficiente hacían que necesariamente hubiera más de un fabricante de los circuitos de más éxito comercial, que licenciaban la tecnología al diseñador original. El hecho de que Intel no licenciara el diseño del i386 hizo que tuviera más control sobre su desarrollo y que tuviera mayores beneficios. De todos modos, AMD introdujo su procesador AMD Am386 compatible con el i386 en marzo de 1991, después de solventar varios obstáculos legales. Esto rompió el monopolio de Intel sobre la arquitectura i386. Posteriormente Cyrix ofrecería los procesadores Cx486SLC y Cx486DLC, compatibles pin a pin con el 80386SX y 80386DX respectivamente.

Page 12: Intel 80286 80386 y 80486

Intel 80486

Page 13: Intel 80286 80386 y 80486

Los Intel 80486 (i486, 486) son una familia de microprocesadores de 32 bits con arquitecturax86 diseñados por Intel Corporation.

Los i486 son muy similares a sus predecesores, los Intel 80386. La diferencias principales son que los i486 tienen un conjunto de instrucciones optimizado, una unidad de coma flotante y un caché unificado integrados en el propio circuito integrado del microprocesador y una unidad de interfaz de bus mejorada. Estas mejoras hacen que los i486 sean el doble de rápidos que un i386 e i387 a la misma frecuencia de reloj. De todos modos, algunos i486 de gama baja son más lentos que los i386 más rápidos.

Este microprocesador es básicamente un 80386 con el agregado de una unidad de punto flotante compatible con el 80387 y un caché de memoria de 8 KBytes. Por lo tanto los bloques que componen el 80486 son los siguientes:

Unidad de ejecución: Incluye los registros de uso general de 32 bits, la unidad lógico-matemática y un barrel shifter de 64 bits. La unidad de ejecución está mejorada con lo que se necesita un sólo ciclo de reloj para las instrucciones más frecuentes.

Page 14: Intel 80286 80386 y 80486

Unidad de segmentación: Incluye los registros de segmento, los cachés de información de descriptores y la lógica de protección. No tiene diferencias con respecto al 80386.

Unidad de paginación: Es la encargada de traducir las direcciones lineales (generadas por la unidad anterior) en direcciones físicas. Incluye el buffer de conversión por búsqueda (TLB). Los últimos modelos (DX4, algunos DX2) soportan páginas de 4MB aparte de las de 4KB del 80386.

Unidad de caché: La evolución de las memorias hizo que el tiempo de acceso de las mismas decrecieran lentamente, mientras que la velocidad de los microprocesadores aumentaba exponencialmente. Por lo tanto, el acceso a memoria representaba el cuello de botella. La idea del caché es tener una memoria relativamente pequeña con la velocidad del microprocesador. La mayoría del código que se ejecuta lo hace dentro de ciclos, con lo que, si se tiene el ciclo completo dentro del caché, no sería necesario acceder a la memoria externa. Con los datos pasa algo similar: también ocurre un efecto de localidad. El caché se carga rápidamente mediante un proceso conocido como "ráfaga", con el que se pueden transferir cuatro bytes por ciclo de reloj. Más abajo se da información más detallada de esta unidad.

Page 15: Intel 80286 80386 y 80486

Interfaz con el bus: Incluye los manejadores del bus de direcciones (con salidas de A31-A2 y BE0# a BE3# (mediante esto último cada byte del bus de datos se habilita por separado)), bus de datos de 32 bits y bus de control.

Unidad de instrucciones: Incluye la unidad de prebúsqueda que le pide los bytes de instrucciones al caché (ambos se comunican mediante un bus interno de 128 bits), una cola de instrucciones de 32 bytes, la unidad de decodificación, la unidad de control, y la ROM de control (que indica lo que deben hacer las instrucciones).

Unidad de punto flotante: Incluye ocho registros de punto flotante de 80 bits y la lógica necesaria para realizar operaciones básicas, raíz cuadrada y trascendentes de punto flotante. Es tres o cuatro veces más rápido que un 386DX y 387DX a la misma frecuencia de reloj. Esta unidad no está incluida en el modelo 486SX.

Page 16: Intel 80286 80386 y 80486

Unidad de caché

Estos procesadores tienen un caché interno que almacena 8KB de instrucciones y datos excepto el DX4 y el Write-back enhanced DX4 que tienen 16KB de caché interno.

El caché aumenta el rendimiento del sistema ya que las lecturas se realizan más rápido desde el caché que desde la memoria externa. Esto también reduce el uso del bus externo por parte del procesador. Éste es un caché de primer nivel (también llamado L1).El procesador 80486 puede usar un caché de segundo nivel (también llamado L2) fuera del chip para aumentar aún más el rendimiento general del sistema.

Si bien la operación de estos cachés internos y externos son transparentes a la ejecución de los programas, el conocimiento de su funcionamiento puede servir para optimizar el software.

El caché está disponible en todos los modos de funcionamiento del procesador: modo real, modo protegido y modo de manejo del sistema.

Page 17: Intel 80286 80386 y 80486

Funcionamiento El caché es una memoria especial, llamada memoria asociativa. Dicha memoria

tiene, asociado a cada unidad de memoria, un tag, que almacena la dirección de memoria que contiene los datos que están en la unidad de memoria. Cuando se desea leer una posición de memoria mediante esta memoria asociativa, se comparan todos los tags con esta dirección.

Si algún tag tiene esta dirección, se dice que hubo un acierto (cache hit en inglés) con lo que se puede leer la información asociada a ese tag. En caso contrario hay un fallo (cache miss en inglés), con lo que hay que perder un ciclo de bus para leer el dato que está en memoria externa.

En el caso del 80486, cada unidad de memoria son 16 bytes. Esta cantidad es una línea del caché. Las líneas pueden ser válidas (cuando contienen datos de la memoria principal) o inválidas (en este caso la línea no contiene información útil). Como el caché se llena por líneas completas (comenzando por direcciones múltiplos de 16), hay que tratar de no leer posiciones aleatorias de la memoria, ya que en este caso, si se leen bytes en posiciones alejadas unas de otras, el procesador usará cuatro ciclos de bus para leer 16 bytes (para llenar una línea) por cada byte que deseamos leer. Esto no es problema para el código o la pila (stack) ya que éstos se acceden generalmente de manera secuencial.

Page 18: Intel 80286 80386 y 80486

Hay dos clases de cachés:

write-through y write-back (retroescritura)(implementado solamente en los modelos write-back enhanced DX2 y write-back enhanced DX4). La diferencia entre las dos radica en el momento de escritura. Las primeras siempre escriben en la memoria principal, mientras que las otras sólo escriben cuando se llena el caché y hay que desocupar una línea. Esto último aumenta el rendimiento del sistema.

Hay dos nuevos bits del registro de control CR0 que controlan el funcionamiento del caché: 

CD (Cache Disable, bit 30) y NW (Not write-through, bit 29). Cuando CD = 1, el 80486 no leerá memoria externa si hay una copia en el caché, si NW = 1, el 80486 no escribirá en la memoria externa si hay datos en el caché (sólo se escribirá en el caché). La operatoria normal (caché habilitado) es CD = NW = 0. Nótese que si CD = NW = 1 se puede utilizar el caché como una RAM rápida (no hay ciclos externos de bus ni para lectura ni para escritura si hay acierto en el caché). Para deshabilitar completamente el caché deberá poner CD = NW = 1 y luego ejecutar una de las instrucciones para vaciar el caché.

Existen dos instrucciones para vaciar el caché: INVD y WBINVD.

Page 19: Intel 80286 80386 y 80486

Versiones del 80486

80486 DX: En abril de 1989 la compañía Intel presentó su nuevo microprocesador: el 80486 DX, con 1.200.000 transistores a bordo, el doble de la velocidad del 80386 y 100% de compatibilidad con los microprocesadores anteriores. El consumo máximo del 486DX de 50 MHz es de 5 watt.

80486 SX: En abril de 1991 introdujo el 80486 SX, un producto de menor costo que el anterior sin el coprocesador matemático que posee el 80486 DX (bajando la cantidad de transistores a 1.185.000).

80486 DX2: En marzo de 1992 apareció el 80486 DX2, que posee un duplicador de frecuencia interno, con lo que las distintas funciones en el interior del chip se ejecutan al doble de velocidad, manteniendo constante el tiempo de acceso a memoria. Esto permite casi duplicar el rendimiento del microprocesador, ya que la mayoría de las instrucciones que deben acceder a memoria en realidad acceden al caché interno de 8 KBytes del chip.

Page 20: Intel 80286 80386 y 80486

80486 SL: En el mismo año apareció el 80486 SL con características especiales de ahorro de energía.

80486 DX4: Siguiendo con la filosofía del DX2, en 1994 apareció el 80486 DX4, que triplica la frecuencia de reloj y aumenta el tamaño del caché interno a 16 KBytes.

Page 21: Intel 80286 80386 y 80486

Nuevas instrucciones del 80486

BSWAP reg32 (Byte Swap): Cambia el orden de los bytes. Si antes de BSWAP el orden era B0, B1, B2, B3, después de BSWAP el orden será B3, B2, B1, B0.CMPXCHG dest, src (Compare and Exchange): Compara el acumulador (AL o EAX) con dest. Si es igual, dest se carga con el valor de src, en caso contrario, el acumulador se carga con el valor de dest.

INVD (Invalidate Cache): Vacía el caché interno. Realiza un ciclo de bus especial que indica que deben vaciarse los cachés externos. Los datos en el caché que deben escribirse en la memoria se pierden.

INVLPG (Invalidate Translation Look-Aside Buffer Entry): Invalida una entrada de página en el buffer de conversión por búsqueda (TLB). Esta instrucción puede ser implementada de forma diferente en microprocesadores futuros.

WBINVD (Write Before Invalidate Data Cache): Realiza los cambios indicados en el caché en la memoria externa y luego lo invalida.

Page 22: Intel 80286 80386 y 80486

XADD dest, src (Exchange and Add): Suma los operandos fuente y destino poniendo el resultado en el destino. El valor original del destino se mueve a la fuente. La instrucción cambia los indicadores de acuerdo al resultado de la suma.

Además de las instrucciones mencionadas, todos los modelos del 486 excepto el SX incluyen todas las instrucciones del coprocesador matemático 80387.

Los últimos modelos (486DX4, SL) incluyen la instrucción CPUID, que se introdujo con el procesador Pentium. Además en el SL se incluye la instrucción RSM(sirve para volver del modo de manejo de energía).

Page 23: Intel 80286 80386 y 80486

Gracias por su atención

Fin