El Intel 386 , lanzado originalmente como 80386 y luego renombrado i386 , es un microprocesador de 32 bits diseñado por Intel . Las primeras muestras de preproducción del 386 se lanzaron a desarrolladores selectos en 1985, mientras que la producción en masa comenzó en 1986. El procesador fue una evolución significativa en la arquitectura x86 , extendiendo una larga línea de procesadores que se remontaba al Intel 8008. El 386 era la unidad central de procesamiento (CPU) de muchas estaciones de trabajo y computadoras personales de alta gama de la época. El 386 comenzó a caer en desuso a partir del lanzamiento del procesador i486 en 1989, mientras que en los sistemas integrados el 386 siguió siendo de uso generalizado hasta que Intel finalmente lo discontinuó en 2007.
En comparación con su predecesor, el Intel 80286 , el 80386 agregó un flujo de instrucciones de tres etapas, lo que lo eleva a un total de 6 etapas, extendió la arquitectura de 16 bits a 32 bits y agregó una unidad de administración de memoria en chip . Esta unidad de traducción de paginación facilitó mucho la implementación de sistemas operativos que usaban memoria virtual . También ofrecía soporte para depuración de registros .
El 80386 ofrecía tres modos de funcionamiento: modo real, modo protegido y modo virtual. El modo protegido , que debutó en el 80286, se amplió para permitir que el 386 direccionara hasta 4 GB de memoria. Con la incorporación del sistema de direccionamiento segmentado, puede expandirse hasta 64 terabytes de memoria virtual. El nuevo modo virtual 8086 (o VM86 ) hizo posible ejecutar uno o más programas en modo real en un entorno protegido, aunque algunos programas no eran compatibles.
El i386 de 32 bits puede ejecutar correctamente la mayoría del código destinado a los procesadores de 16 bits anteriores, como el 8086 y el 80286, que eran omnipresentes en los primeros PC . Como implementación original de la extensión de 32 bits de la arquitectura 80286, [a] el conjunto de instrucciones, el modelo de programación y las codificaciones binarias del i386 siguen siendo el denominador común de todos los procesadores x86 de 32 bits, lo que se denomina arquitectura i386 , x86 o IA-32 , según el contexto. A lo largo de los años, las implementaciones sucesivamente más nuevas de la misma arquitectura se han vuelto cientos de veces más rápidas que el 80386 original (y miles de veces más rápidas que el 8086). [b]
El desarrollo de la tecnología i386 comenzó en 1982 bajo el nombre interno de P3. [4] La producción del desarrollo del 80386 finalizó en julio de 1985. [4] El 80386 se presentó como muestras de preproducción para estaciones de trabajo de desarrollo de software en octubre de 1985. [5] La fabricación de los chips en cantidades significativas comenzó en junio de 1986, [6] [7] junto con el primer dispositivo enchufable que permitió que las computadoras existentes basadas en 80286 se actualizaran al 386, el Translator 386 de American Computer and Peripheral . [8] [9] El hecho de que el 80386 fuera de origen único hizo que la CPU fuera muy cara. [10] Las placas base para los sistemas informáticos basados en 80386 eran engorrosas y caras al principio, pero la fabricación se justificó tras la adopción generalizada del 80386. La primera computadora personal que utilizó el 80386 fue la Deskpro 386 , diseñada y fabricada por Compaq ; [11] esto marcó la primera vez que un componente fundamental en el estándar de facto compatible con IBM PC fue actualizado por una compañía distinta a IBM .
Las primeras versiones del 386 tenían 275.000 transistores. [2] La versión de 20 MHz funciona a 4-5 MIPS . También realiza entre 8.000 y 9.000 Dhrystones por segundo. [12] La versión 386 de 25 MHz era capaz de 7 MIPS. [13] Se informó que un 80386 de 33 MHz operaba a aproximadamente 11,4 y 11,5 MIPS. [14] [15] A esa misma velocidad, tiene el rendimiento de 8 VAX MIPS . [16] Estos procesadores ejecutaban aproximadamente 4,4 relojes por instrucción. [17]
En mayo de 2006, Intel anunció que la producción del i386 se detendría a fines de septiembre de 2007. [18] Aunque había quedado obsoleto durante mucho tiempo como CPU de computadora personal , Intel y otros habían continuado fabricando el chip para sistemas integrados . Dichos sistemas que utilizan un i386 o uno de sus muchos derivados son comunes en la tecnología aeroespacial y en los instrumentos musicales electrónicos, entre otros. Algunos teléfonos móviles también usaban (más tarde variantes CMOS completamente estáticas ) el procesador i386, como el BlackBerry 950 [19] y el Nokia 9000 Communicator . Linux continuó admitiendo procesadores i386 hasta el 11 de diciembre de 2012, cuando el núcleo cortó las instrucciones específicas del 386 en la versión 3.8. [20]
El procesador fue una evolución significativa en la arquitectura x86 , y extendió una larga línea de procesadores que se remontaba al Intel 8008. El predecesor del 80386 fue el Intel 80286 , un procesador de 16 bits con un sistema de protección y administración de memoria basado en segmentos . El 80386 agregó una secuencia de instrucciones de tres etapas que elevó a un total de 6 etapas, extendió la arquitectura de 16 bits a 32 bits y agregó una unidad de administración de memoria en chip . [21] Esta unidad de traducción de paginación facilitó mucho la implementación de sistemas operativos que usaban memoria virtual . También ofrecía soporte para depuración de registros .
El 80386 presentaba tres modos de funcionamiento: modo real, modo protegido y modo virtual. El modo protegido , que debutó en el 286, se amplió para permitir que el 386 direccionara hasta 4 GB de memoria. Con la adición del sistema de direccionamiento segmentado, puede expandirse hasta 64 terabytes de memoria virtual. [22] El nuevo modo virtual 8086 (o VM86 ) hizo posible ejecutar uno o más programas en modo real en un entorno protegido, aunque algunos programas no eran compatibles. Cuenta con indexación escalada y un desplazador de barril de 64 bits. [23]
La capacidad de configurar un 386 para que actúe como si tuviera un modelo de memoria plana en modo protegido a pesar del hecho de que utiliza un modelo de memoria segmentada en todos los modos fue posiblemente el cambio de característica más importante para la familia de procesadores x86 hasta que AMD lanzó x86-64 en 2003.
Se han agregado varias instrucciones nuevas a 386: BSF, BSR, BT, BTS, BTR, BTC, CDQ, CWDE, LFS, LGS, LSS, MOVSX, MOVZX, SETcc, SHLD, SHRD.
Se han añadido dos nuevos registros de segmento (FS y GS) para programas de propósito general. La única palabra de estado de la máquina del 286 se ha convertido en ocho registros de control CR0–CR7. Se han añadido los registros de depuración DR0–DR7 para los puntos de interrupción del hardware. Se utilizan nuevas formas de la instrucción MOV para acceder a ellos.
El arquitecto principal en el desarrollo del 80386 fue John H. Crawford . [24] Fue responsable de ampliar la arquitectura y el conjunto de instrucciones del 80286 a 32 bits, y luego dirigió el desarrollo del microprograma para el chip 80386.
La línea de procesadores Pentium i486 y P5 eran descendientes del diseño i386.
Los siguientes tipos de datos son compatibles directamente y, por lo tanto, implementados por una o más instrucciones de máquina i386 ; estos tipos de datos se describen brevemente aquí. [25] :
El siguiente código fuente de ensamblaje i386 corresponde a una subrutina llamada que copia una cadena de caracteres ASCIIZ_strtolower
terminada en cero de una ubicación a otra, convirtiendo todos los caracteres alfabéticos a minúsculas. La cadena se copia un byte (carácter de 8 bits) a la vez.
El código de ejemplo utiliza el registro EBP (puntero base) para establecer un marco de llamada , un área en la pila que contiene todos los parámetros y variables locales para la ejecución de la subrutina. Este tipo de convención de llamada admite código reentrante y recursivo y ha sido utilizada por lenguajes similares a Algol desde fines de la década de 1950. Se supone un modelo de memoria plana, específicamente, que los segmentos DS y ES abordan la misma región de memoria.
El primer PC basado en el procesador Intel 80386 fue el Compaq Deskpro 386. Al ampliar el estándar IBM PC/AT de 16/24 bits a un entorno informático nativo de 32 bits, Compaq se convirtió en la primera empresa en diseñar y fabricar un avance técnico de hardware tan importante en la plataforma PC. A IBM se le ofreció el uso del 80386, pero tenía los derechos de fabricación del anterior 80286. Por lo tanto, IBM decidió confiar en ese procesador durante un par de años más. El éxito temprano del Compaq Deskpro 386 jugó un papel importante en la legitimación de la industria de los "clones" de PC y en restar importancia al papel de IBM en ella. El primer sistema informático vendido con el 386SX fue el Compaq Deskpro 386S , lanzado en julio de 1988. [27]
Antes del 386, la dificultad de fabricar microchips y la incertidumbre de un suministro fiable hacían deseable que cualquier semiconductor para el mercado masivo fuera de múltiples fuentes, es decir, fabricado por dos o más fabricantes, y la segunda y las siguientes empresas lo fabricaran bajo licencia de la empresa original. El 386 estuvo disponible durante un tiempo (4,7 años) solo en Intel, ya que Andy Grove , el director ejecutivo de Intel en ese momento, tomó la decisión de no alentar a otros fabricantes a producir el procesador como segundas fuentes . Esta decisión fue, en última instancia, crucial para el éxito de Intel en el mercado. [ cita requerida ] El 386 fue el primer microprocesador importante en ser de una sola fuente . La obtención de una sola fuente del 386 permitió a Intel un mayor control sobre su desarrollo y ganancias sustancialmente mayores en años posteriores.
AMD presentó su procesador compatible Am386 en marzo de 1991, tras superar obstáculos legales, poniendo fin así al monopolio de 4,7 años de Intel sobre los procesadores compatibles con 386. A partir de 1991, IBM también fabricó chips 386 bajo licencia para su uso exclusivo en PC y placas base IBM.
Intel originalmente tenía previsto que el 80386 debutara a 16 MHz. Sin embargo, debido a los bajos rendimientos, se introdujo en su lugar a 12,5 MHz. [30]
Al principio de la producción, Intel descubrió un circuito marginal que podía hacer que un sistema devolviera resultados incorrectos en operaciones de multiplicación de 32 bits. No todos los procesadores que ya se habían fabricado estaban afectados, por lo que Intel realizó pruebas en su inventario. Los procesadores que se consideraron libres de errores se marcaron con una doble sigma (ΣΣ) y los procesadores afectados se marcaron como "SOLO SOFTWARE DE 16 BITS". [31] Estos últimos procesadores se vendieron como piezas en buen estado, ya que en ese momento la capacidad de 32 bits no era relevante para la mayoría de los usuarios. [32]
El coprocesador matemático i387 no estuvo listo a tiempo para la introducción del 80386, por lo que muchas de las primeras placas base 80386 proporcionaron en su lugar un zócalo y lógica de hardware para hacer uso de un 80287. En esta configuración, la FPU operaba de forma asincrónica con respecto a la CPU, normalmente con una velocidad de reloj de 10 MHz. El Compaq Deskpro 386 original es un ejemplo de este tipo de diseño. Sin embargo, esto era una molestia para aquellos que dependían del rendimiento de punto flotante, ya que las ventajas de rendimiento del 80387 sobre el 80287 eran significativas. [ cita requerida ]
Intel ofreció más tarde una versión modificada de su 486DX en un paquete i386, con la marca Intel RapidCAD . Esto proporcionó una ruta de actualización para los usuarios con hardware compatible con i386. La actualización consistía en un par de chips que reemplazaban tanto al i386 como al i387. Dado que el diseño del 486DX contenía una FPU , el chip que reemplazó al i386 contenía la funcionalidad de punto flotante, y el chip que reemplazó al i387 tenía muy poca utilidad. Sin embargo, este último chip era necesario para proporcionar la señal FERR a la placa base y parecer funcionar como una unidad de punto flotante normal.
Terceras partes ofrecían una amplia gama de actualizaciones, tanto para sistemas SX como DX. Las más populares se basaban en el núcleo Cyrix 486DLC/SLC, que normalmente ofrecía una mejora sustancial de la velocidad debido a su flujo de instrucciones más eficiente y a su caché L1 SRAM interna. La caché era normalmente de 1 KB, o a veces de 8 KB en la variante TI. Algunos de estos chips de actualización (como el 486DRx2/SRx2) eran comercializados por la propia Cyrix, pero se encontraban más comúnmente en kits ofrecidos por especialistas en actualizaciones como Kingston, Evergreen Technologies y Improve-It Technologies. Algunos de los módulos de actualización de CPU más rápidos incluían la familia IBM SLC/DLC (notable por su caché L1 de 16 KB), o incluso el propio Intel 486. Muchos kits de actualización 386 se anunciaban como simples reemplazos directos, pero a menudo requerían un software complicado para controlar la caché o la duplicación del reloj. Parte del problema era que en la mayoría de las placas base 386, la línea A20 estaba controlada completamente por la placa base sin que la CPU lo supiera, lo que causaba problemas en las CPU con cachés internos.
En general, fue muy difícil configurar las actualizaciones para producir los resultados anunciados en el paquete, y las actualizaciones a menudo no eran muy estables o no eran totalmente compatibles.
Versión original, lanzada en octubre de 1985. La versión de 16 MHz estaba disponible por 299 USD en cantidades de 100. [33] La versión de 20 MHz estaba disponible por 599 USD en cantidades de 100. [12] La versión de 33 MHz estuvo disponible el 10 de abril de 1989. [16]
La versión militar se fabricó utilizando la tecnología de proceso CHMOS III. Fue diseñada para soportar 105 rads (Si) o más. Estaba disponible por 945 dólares estadounidenses cada una en cantidades de 100. [35]
En 1988, Intel presentó el 80386SX , más conocido como 386SX , una versión reducida del 80386 con un bus de datos de 16 bits, destinado principalmente a PC de menor costo destinados a los mercados domésticos, educativos y de pequeñas empresas, mientras que el 386DX siguió siendo la variante de gama alta utilizada en estaciones de trabajo, servidores y otras tareas exigentes. La CPU siguió siendo completamente de 32 bits internamente, pero el bus de 16 bits estaba destinado a simplificar el diseño de la placa de circuitos y reducir el costo total. [c] El bus de 16 bits simplificó los diseños pero obstaculizó el rendimiento. Solo se conectaron 24 pines al bus de direcciones, lo que limitó el direccionamiento a 16 MB , [d] pero esto no era una restricción crítica en ese momento. Las diferencias de rendimiento se debieron no solo a diferentes anchos de bus de datos, sino también a las memorias caché que mejoran el rendimiento que a menudo se emplean en las placas que usan el chip original. Esta versión puede ejecutar el software de aplicación de 32 bits entre un 70 y un 90 por ciento en comparación con la CPU Intel386 DX normal. [36]
El 80386 original fue posteriormente renombrado i386DX para evitar confusiones. Sin embargo, Intel utilizó posteriormente el sufijo "DX" para referirse a la capacidad de punto flotante del i486DX. El 387SX era una pieza del 80387 que era compatible con el 386SX (es decir, con un bus de datos de 16 bits). El 386SX se empaquetaba en un QFP de montaje superficial y, a veces, se ofrecía en un zócalo para permitir una actualización.
El 386SX de 16 MHz contiene el BQFP de 100 derivaciones. Estaba disponible por USD $165 en cantidades de 1000. Tiene un rendimiento de 2,5 a 3 MIPS también. [13] La versión de bajo consumo estuvo disponible el 10 de abril de 1989. Esta versión utiliza entre un 20 y un 30 por ciento menos de energía y tiene una temperatura de funcionamiento más alta, de hasta 100 °C, que la versión normal. [16]
El 80386SL se presentó como una versión de bajo consumo de energía para computadoras portátiles . El procesador ofrecía varias opciones de administración de energía (por ejemplo, SMM ), así como diferentes modos de "suspensión" para conservar la energía de la batería . [37] También contenía soporte para una caché externa de 16 a 64 KB . Las funciones adicionales y las técnicas de implementación de circuitos hicieron que esta variante tuviera más de 3 veces más transistores que el i386DX. El i386SL estuvo disponible primero a una velocidad de reloj de 20 MHz, [38] y luego se agregó el modelo de 25 MHz. [39] Con este sistema, se redujo hasta un 40% el espacio disponible en el piso en comparación con el sistema Intel386 SX. Eso se traduce en un sistema más liviano y más portátil y rentable. [40]
Dave Vannier, el arquitecto jefe, diseñó este microprocesador. Les llevó dos años completar este diseño, ya que utiliza la arquitectura 386 existente para implementarlo. Eso ayuda con herramientas avanzadas de diseño asistido por computadora que incluyen una simulación completa de la placa base. Esta matriz contiene el núcleo de la CPU 386, el controlador de bus AT, el controlador de memoria, el controlador de bus interno, la lógica de control de caché junto con la etiqueta de caché SRAM y el reloj. Esta CPU contiene 855.000 transistores que utilizan tecnología CHMOS IV de un micrón. Estaba disponible por USD $ 176 en cantidades de 1.000 unidades. [3] La versión de 25 MHz estaba disponible en muestras por USD $ 189 en cantidades de 1.000 piezas, pero esa versión estará disponible en producción a fines de 1991. [41] Admite hasta 32 megabytes de espacio de dirección física. [42] [43] Había una versión sin caché de 20 MHz del microprocesador Intel386 SL; en el momento de la publicación, había muestras de esta versión disponibles por USD $101 en cantidades de 1000 piezas. [44]
En mayo de 1991, Intel presentó una actualización para los sistemas IBM PS/2 Modelo 50 y 60 que contienen microprocesadores 80286, convirtiéndolos en sistemas de 32 bits completos. El módulo SnapIn 386 es una tarjeta secundaria con 386SX de 20 MHz y memoria caché SRAM mapeada directamente de 16 Kbytes. Se conecta directamente al zócalo 286 existente sin cables, puentes ni interruptores. En el invierno de 1992, se agregó un módulo adicional a este módulo para los sistemas IBM PS/2 Modelo 50 Z , 30 286 y 25 286. Ambos módulos estaban disponibles por USD $495. [45] [46]
Un Intel 486 DX especialmente empaquetado y una unidad de punto flotante (FPU) ficticia diseñada como reemplazos compatibles con pines para un procesador i386 y una FPU i387 .
Esta era una versión integrada del 80386SX que no admitía el modo real ni la paginación en la MMU.
Administración del sistema y de la energía, y funciones integradas de periféricos y soporte: Dos controladores de interrupción 82C59A; Temporizador, contador (3 canales); SIO asíncrono (2 canales); SIO síncrono (1 canal); Temporizador de vigilancia (hardware/software); PIO. Se puede utilizar con FPU 80387SX o i387SL.
Modo de administración de energía transparente, MMU integrada y entradas compatibles con TTL (solo 386SXSA). Se puede utilizar con FPU i387SX o i387SL.
Modo de administración de energía transparente y MMU integrada . Se puede utilizar con FPU i387SX o i387SL.
Windows 95 fue la única versión de la serie Windows 9x que admitió oficialmente el 386, requiriendo al menos un 386DX, aunque se recomendaba un 486 o superior; [47] Windows 98 requiere un 486DX o superior. [48] En la familia Windows NT , Windows NT 3.51 fue la última versión con soporte para el 386. [49] [50]
Debian GNU/Linux abandonó el soporte para 386 con el lanzamiento de la versión 3.1 ( Sarge ) en 2005 y eliminó completamente el soporte en 2007 con la versión 4.0 ( Etch ). [51] [52] Citando la carga de mantenimiento en torno a las primitivas SMP , los desarrolladores del kernel de Linux cortaron el soporte del código base de desarrollo en diciembre de 2012, publicado más tarde como la versión 3.8 del kernel. [20]
Entre los BSD , las versiones 5.x de FreeBSD fueron las últimas en soportar el 386; el soporte para el 386SX fue cortado con la versión 5.2, [53] mientras que el soporte restante para el 386 fue eliminado con la versión 6.0 en 2005. [54] OpenBSD eliminó el soporte para el 386 con la versión 4.2 (2007), [55] DragonFly BSD con la versión 1.12 (2008), [56] y NetBSD con la versión 5.0 (2009). [57]