El Intel 386 , lanzado originalmente como 80386 y posteriormente rebautizado como i386 , es un microprocesador de 32 bits introducido en 1985. [a] Las primeras versiones tenían 275.000 transistores [2] y eran la unidad central de procesamiento (CPU) de muchas estaciones de trabajo y de alta fin de los ordenadores personales de la época.
La versión de 20 MHz funciona a 4-5 MIPS . También realiza entre 8.000 y 9.000 Dhrystones por segundo. [4] La versión 386 de 25 MHz tenía capacidad para 7 MIPS. [5] Según se informó, se midió que un 80386 de 33 MHz funcionaba a aproximadamente 11,4 MIPS. [6] A esa misma velocidad, tiene el rendimiento de 8 VAX MIPS . [7] Estos procesadores ejecutaban alrededor de 4,4 relojes por instrucción. [8]
El desarrollo de la tecnología i386 comenzó en 1982 bajo el nombre interno de P3. [9] La grabación del desarrollo del 80386 finalizó en julio de 1985. [9] El 80386 se introdujo como muestras de preproducción para estaciones de trabajo de desarrollo de software en octubre de 1985. [10] La fabricación de los chips en cantidades significativas comenzó en junio 1986, [11] [12] junto con el primer dispositivo enchufable que permitió actualizar las computadoras existentes basadas en 80286 al 386, el Translator 386 de American Computer and Peripheral . [13] [14] Las placas base para sistemas informáticos basados en 80386 eran engorrosas y costosas 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 ; [15] Esta fue la primera vez que una empresa distinta de IBM actualizó un componente fundamental del estándar de facto compatible con IBM PC .
En mayo de 2006, Intel anunció que la producción del i386 se detendría a finales de septiembre de 2007. [16] Aunque hacía tiempo que estaba obsoleto como CPU de computadora personal , Intel y otros habían continuado fabricando el chip para sistemas integrados . Estos sistemas que utilizan un i386 o uno de 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 utilizaron (posteriormente variantes CMOS totalmente estáticas ) el procesador i386, como el BlackBerry 950 [17] y el Nokia 9000 Communicator . Linux continuó admitiendo procesadores i386 hasta el 11 de diciembre de 2012, cuando el kernel eliminó instrucciones específicas de 386 en la versión 3.8. [18]
El i386 de 32 bits puede ejecutar correctamente la mayor parte del código destinado a los procesadores anteriores de 16 bits, como el 8086 y el 80286, que eran omnipresentes en las primeras PC . Como implementación original de la extensión de 32 bits de la arquitectura 80286 , [b] el conjunto de instrucciones i386, el modelo de programación y las codificaciones binarias 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 varios cientos de veces más rápidas que el 80386 original (y miles de veces más rápidas que el 8086). [C]
El procesador supuso una evolución significativa en la arquitectura x86 y amplió 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 gestión de memoria basado en segmentos . El 80386 agregó un canal de instrucciones de tres etapas que lleva a un total de canal de instrucciones de 6 etapas, amplió la arquitectura de 16 bits a 32 bits y agregó una unidad de administración de memoria en el chip . [19] Esta unidad de traducción de paginación hizo mucho más fácil la implementación de sistemas operativos que usaban memoria virtual . También ofrecía soporte para la 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 incorporación de un sistema de direccionamiento segmentado, puede ampliar hasta 64 terabytes de memoria virtual. [20] El nuevo modo virtual 8086 (o VM86 ) hacía 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 palanca de cambios de barril de 64 bits. [21]
La capacidad de configurar un 386 para que actúe como si tuviera un modelo de memoria plana en modo protegido a pesar 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 agregaron dos nuevos registros de segmento (FS y GS) para programas de uso general; una sola palabra de estado de la máquina de 286 creció hasta convertirse en ocho registros de control CR0–CR7. Se agregaron registros de depuración DR0–DR7 para puntos de interrupción de hardware. Para acceder a ellos se utilizan nuevas formas de instrucción MOV.
El arquitecto jefe en el desarrollo del 80386 fue John H. Crawford . [22] Fue responsable de ampliar la arquitectura 80286 y el conjunto de instrucciones 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 directamente compatibles y, por lo tanto, implementados por una o más instrucciones de máquina i386 ; Estos tipos de datos se describen brevemente aquí. [23] :
El siguiente código fuente del ensamblador i386 es para una subrutina denominada que copia una cadena de caracteres ASCIIZ_strtolower
terminada en nulo 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 utilizado por lenguajes similares a Algol desde finales de los años cincuenta. En un modelo de memoria plana se supone, específicamente, que los segmentos DS y ES se dirigen a la misma región de memoria.
La primera PC basada en Intel 80386 fue la 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 de PC. A IBM se le ofreció el uso del 80386, pero tenía los derechos de fabricación del 80286 anterior . Por lo tanto, IBM optó por confiar en ese procesador durante un par de años más. El éxito inicial del Compaq Deskpro 386 jugó un papel importante a la hora de legitimar la industria de los "clones" de PC y restar importancia al papel de IBM dentro de ella. El primer sistema informático vendido con el 386SX fue el Compaq Deskpro 386S , lanzado en julio de 1988. [25]
Antes del 386, la dificultad de fabricar microchips y la incertidumbre sobre un suministro confiable hacían deseable que cualquier semiconductor para el mercado masivo fuera de origen múltiple, es decir, fabricado por dos o más fabricantes, siendo el segundo y siguientes las empresas que fabricaban bajo licencia del fabricante. empresa originaria. El 386 estuvo durante un tiempo (4,7 años) sólo disponible en Intel, ya que Andy Grove , el CEO de Intel en ese momento, tomó la decisión de no alentar a otros fabricantes a producir el procesador como segunda fuente . En última instancia, esta decisión fue crucial para el éxito de Intel en el mercado. [ cita necesaria ] El 386 fue el primer microprocesador importante de un solo proveedor . El abastecimiento único del 386 permitió a Intel un mayor control sobre su desarrollo y ganancias sustancialmente mayores en los años posteriores.
AMD presentó su procesador compatible Am386 en marzo de 1991 después de superar obstáculos legales, poniendo así fin al monopolio de 4,7 años de Intel sobre los procesadores compatibles con 386. Desde 1991, IBM también fabricó 386 chips bajo licencia para su uso únicamente en PC y placas base de IBM.
Intel originalmente tenía la intención de que el 80386 debutara a 16 MHz. Sin embargo, debido a los bajos rendimientos, se introdujo a 12,5 MHz. [26]
Al principio de la producción, Intel descubrió un circuito marginal que podía provocar que un sistema arrojara resultados incorrectos en operaciones de multiplicación de 32 bits. No todos los procesadores ya fabricados se vieron afectados, por lo que Intel probó su inventario. Los procesadores que no tenían errores se marcaron con un doble sigma (ΣΣ) y los procesadores afectados se marcaron como "SOLO S/W DE 16 BITS". [27] Estos últimos procesadores se vendieron como piezas buenas, ya que en ese momento la capacidad de 32 bits no era relevante para la mayoría de los usuarios. [28]
El coprocesador matemático i387 no estaba listo a tiempo para la introducción del 80386, por lo que muchas de las primeras placas base 80386 proporcionaron un zócalo y una lógica de hardware para hacer uso de un 80287 . En esta configuración, la FPU funcionaba de forma asíncrona con la CPU, normalmente con una frecuencia de reloj de 10 MHz. El Compaq Deskpro 386 original es un ejemplo de dicho diseño. Sin embargo, esto fue una molestia para quienes dependían del rendimiento de punto flotante, ya que las ventajas de rendimiento del 80387 sobre el 80287 eran significativas. [ cita necesaria ]
Posteriormente, Intel ofreció 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 fue un par de chips que reemplazaron 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 sirvió para muy poco. 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.
Los terceros ofrecieron una amplia gama de actualizaciones, tanto para sistemas SX como DX. Los más populares se basaron en el núcleo Cyrix 486DLC/SLC, que normalmente ofrecía una mejora sustancial de la velocidad debido a su canal de instrucciones más eficiente y su caché SRAM L1 interna . El caché solía ser de 1 KB o, a veces, de 8 KB en la variante TI. Algunos de estos chips de actualización (como el 486DRx2/SRx2) fueron comercializados por la propia Cyrix, pero se encontraban más comúnmente en kits ofrecidos por especialistas en actualización como Kingston, Evergreen Technologies y Improvement-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 de 386 se anunciaban como reemplazos simples, pero a menudo requerían software complicado para controlar el 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, era muy difícil configurar las actualizaciones para producir los resultados anunciados en el paquete y, a menudo, las actualizaciones 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. [29] La versión de 20 MHz estaba disponible por 599 dólares estadounidenses en cantidades de 100. [4] La versión de 33 Mhz estuvo disponible en abril 10, 1989. [7]
La versión militar se fabricó utilizando la tecnología de proceso CHMOS III. Fue fabricado para soportar 105 Rads (Si) o más. Estaba disponible por 945 dólares cada uno en cantidades de 100. [31]
En 1988, Intel presentó el 80386SX , más comúnmente conocido como 386SX , una versión reducida del 80386 con un bus de datos de 16 bits, destinada principalmente a PC de bajo costo destinadas al hogar, la educación y las pequeñas empresas. mercados, mientras que el 386DX siguió siendo la variante de gama alta utilizada en estaciones de trabajo, servidores y otras tareas exigentes. La CPU permaneció internamente en 32 bits, pero el bus de 16 bits estaba destinado a simplificar el diseño de la placa de circuito y reducir el costo total. [d] El bus de 16 bits simplificó los diseños pero obstaculizó el rendimiento. Sólo se conectaron 24 pines al bus de direcciones, por lo que se limitaba el direccionamiento a 16 MB , [e] pero esto no era una restricción crítica en ese momento. Las diferencias de rendimiento se debieron no sólo a los diferentes anchos de bus de datos, sino también a las memorias caché que mejoran el rendimiento y que a menudo se emplean en placas que utilizan el chip original.
Posteriormente, el 80386 original pasó a llamarse 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 80387 compatible con el 386SX (es decir, con un bus de datos de 16 bits). El 386SX estaba empaquetado en un QFP de montaje en superficie y, en ocasiones, 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 165 dólares en cantidades de 1000. También tiene un rendimiento de 2,5 a 3 MIPS. [5] 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. [7]
El 80386SL se presentó como una versión de bajo consumo 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 . [32] También contenía soporte para un caché externo 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 por primera vez con una velocidad de reloj de 20 MHz, [33] y luego se agregó el modelo de 25 MHz. [34]
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 del sistema. Este dado contiene el núcleo de 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 una micra. Estaba disponible por 176 dólares estadounidenses en cantidades de 1.000 unidades. [3]
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.
Gestión del sistema y de la energía y funciones periféricas y de soporte integradas: 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. Utilizable con FPU 80387SX o i387SL.
Modo de administración de energía transparente, entradas compatibles con MMU y TTL integradas (solo 386SXSA). Utilizable con FPU i387SX o i387SL.
Modo de gestión de energía transparente y MMU integrada . Utilizable con FPU i387SX o i387SL.
Windows 95 fue la única entrada en la serie Windows 9x que admitía oficialmente el 386, requiriendo al menos un 386DX, aunque se recomendaba un 486 o mejor; [35] Windows 98 requiere un 486DX o superior. [36] En la familia Windows NT , Windows NT 3.51 fue la última versión con soporte 386. [37] [38]
Debian GNU/Linux eliminó el soporte 386 con el lanzamiento de 3.1 ( Sarge ) en 2005 y eliminó completamente el soporte en 2007 con 4.0 ( Etch ). [39] [40] Citando la carga de mantenimiento en torno a las primitivas SMP , los desarrolladores del kernel de Linux eliminaron el soporte del código base de desarrollo en diciembre de 2012, que luego se lanzó como versión del kernel 3.8. [18]
Entre los BSD , las versiones 5.x de FreeBSD fueron las últimas en soportar el 386; el soporte para 386SX se eliminó con la versión 5.2, [41] mientras que el soporte restante para 386 se eliminó con la versión 6.0 en 2005. [42] OpenBSD eliminó el soporte para 386 con la versión 4.2 (2007), [43] DragonFly BSD con la versión 1.12 ( 2008), [44] y NetBSD con la versión 5.0 (2009). [45]