El Intel 80286 [4] (también comercializado como iAPX 286 [5] y a menudo llamado Intel 286 ) es un microprocesador de 16 bits que se presentó el 1 de febrero de 1982. Fue la primera CPU basada en 8086 con buses de datos y direcciones separados y no multiplexados y también la primera con gestión de memoria y amplias capacidades de protección. El 80286 utilizó aproximadamente 134.000 transistores en su encarnación nMOS ( HMOS ) original y, al igual que el 80186 contemporáneo , [6] puede ejecutar correctamente la mayoría del software escrito para los procesadores Intel 8086 y 8088 anteriores . [7]
El 80286 se empleó para el IBM PC/AT , presentado en 1984, y luego se usó ampliamente en la mayoría de las computadoras compatibles con PC/AT hasta principios de la década de 1990. En 1987, Intel envió su microprocesador 80286 número cinco millones. [8]
Los primeros chips 80286 de Intel se especificaron para una velocidad de reloj máxima de 5, 6 u 8 MHz y los lanzamientos posteriores para 12,5 MHz. AMD y Harris produjeron más tarde piezas de 16 MHz, 20 MHz y 25 MHz, respectivamente. Intel, Intersil y Fujitsu también diseñaron versiones CMOS completamente estáticas de la implementación nMOS de carga de agotamiento original de Intel , principalmente destinadas a dispositivos alimentados por batería. La versión CMOS de Intel del 80286 fue la 80C286.
En promedio, se decía que el 80286 tenía una velocidad de aproximadamente 0,21 instrucciones por ciclo de reloj en programas "típicos", [9] aunque podía ser significativamente más rápido en código optimizado y en bucles estrechos, ya que muchas instrucciones podían ejecutarse en 2 ciclos de reloj cada una. Se informó que los modelos de 6 MHz, 10 MHz y 12 MHz funcionaban a 0,9 MIPS, 1,5 MIPS y 2,66 MIPS respectivamente. [10]
El último nivel de E-stepping del 80286 no tenía varias erratas importantes que causaban problemas a los programadores y a los escritores de sistemas operativos en las CPU B-step y C-step anteriores (comunes en los clones AT y AT). Es posible que esta parte de E-2 stepping haya estado disponible a finales de 1986. [11]
Intel suministró este microprocesador a Fujitsu Limited en 1985 aproximadamente. [12]
Intel esperaba que el 286 se utilizara principalmente en automatización industrial, procesamiento de transacciones y telecomunicaciones, en lugar de en computadoras personales. [16]
La CPU fue diseñada para sistemas multiusuario con aplicaciones multitarea , incluyendo comunicaciones (como PBXs automatizadas ) y control de procesos en tiempo real . Tenía 134.000 transistores y constaba de cuatro unidades independientes: la unidad de dirección, la unidad de bus, la unidad de instrucción y la unidad de ejecución, organizadas en una tubería acoplada de forma flexible (con búfer) , al igual que en el 8086. Se produjo en un encapsulado de 68 pines, incluyendo encapsulados PLCC ( plastic leaded chip carrier ), LCC ( leadless chip carrier ) y PGA ( pin grid array ). [17]
El aumento de rendimiento del 80286 sobre el 8086 (o 8088) podía ser de más del 100% por ciclo de reloj en muchos programas (es decir, un rendimiento duplicado a la misma velocidad de reloj). Este fue un gran aumento, totalmente comparable a las mejoras de velocidad siete años después cuando se introdujeron el i486 (1989) o el Pentium original (1993). Esto se debió en parte a los buses de dirección y datos no multiplexados, pero principalmente al hecho de que los cálculos de dirección (como base+index ) eran menos costosos. Se realizaban mediante una unidad dedicada en el 80286, mientras que el 8086 más antiguo tenía que hacer un cálculo de dirección efectivo utilizando su ALU general , consumiendo varios ciclos de reloj adicionales en muchos casos. Además, el 80286 era más eficiente en la precarga de instrucciones, el almacenamiento en búfer, la ejecución de saltos y en operaciones numéricas microcodificadas complejas como MUL / DIV que su predecesor. [18]
El 80286 incluía, además de todas las instrucciones del 8086, todas las nuevas instrucciones del 80186: ENTER, LEAVE, BOUND, INS, OUTS, PUSHA, POPA, PUSH inmediata, IMUL inmediata y cambios y rotaciones inmediatas. El 80286 también añadía nuevas instrucciones para el modo protegido: ARPL, CLTS, LAR, LGDT, LIDT, LLDT, LMSW, LSL, LTR, SGDT, SIDT, SLDT, SMSW, STR, VERR y VERW. Algunas de las instrucciones para el modo protegido pueden (o deben) utilizarse en el modo real para configurar y cambiar al modo protegido, y unas pocas (como SMSW y LMSW) son útiles para el propio modo real.
El Intel 80286 tenía un bus de direcciones de 24 bits y, como tal, tenía un espacio de direcciones físicas de 16 MB , en comparación con el espacio de direcciones de 1 MB de los procesadores x86 anteriores. Fue el primer procesador x86 en admitir memoria virtual que admitía hasta 1 GB mediante segmentación. [19] Sin embargo, el costo de la memoria y la rareza inicial del software que usaba memoria por encima de 1 MB significaron que hasta finales de su producción, las computadoras 80286 rara vez se enviaban con más de 1 MB de RAM. [18] Además, había una penalización de rendimiento involucrada en el acceso a la memoria extendida desde el modo real como se indica a continuación.
El 286 fue el primero de la familia de CPU x86 en soportar el modo de dirección virtual protegida , comúnmente llamado " modo protegido ". Además, fue el primer microprocesador disponible comercialmente con capacidades de unidad de administración de memoria (MMU) en chip (los sistemas que usaban los Motorola 68010 y NS320xx contemporáneos podían estar equipados con un controlador MMU opcional). Esto permitiría a los compatibles de IBM tener sistemas operativos multitarea avanzados por primera vez y competir en el mercado de servidores / estaciones de trabajo dominado por Unix [ cita requerida ] .
Se introdujeron varias instrucciones adicionales en el modo protegido de 80286, que son útiles para sistemas operativos multitarea.
Otra característica importante de 80286 es la prevención del acceso no autorizado. Esto se logra mediante:
En 80286 (y en su coprocesador Intel 80287 ), se pueden realizar operaciones aritméticas con los siguientes tipos diferentes de números:
Por diseño, el 286 no podía volver del modo protegido al modo de dirección real compatible con el 8086 básico (" modo real ") sin un reinicio iniciado por hardware. En el PC/AT presentado en 1984, IBM agregó circuitos externos, así como código especializado en la BIOS ROM y el microcontrolador del teclado 8042 para permitir que el software provocara el reinicio, lo que permitía el reingreso al modo real mientras se retenía la memoria activa y se devolvía el control al programa que inició el reinicio. (La BIOS está necesariamente involucrada porque obtiene el control directamente cada vez que se reinicia la CPU). Aunque funcionaba correctamente, el método impuso una enorme penalización en el rendimiento.
En teoría, las aplicaciones en modo real se podían ejecutar directamente en modo protegido de 16 bits si se seguían ciertas reglas (propuestas recientemente con la introducción del 80286); sin embargo, como muchos programas DOS no se ajustaban a esas reglas, el modo protegido no se usó ampliamente hasta la aparición de su sucesor, el Intel 80386 de 32 bits , que fue diseñado para ir y venir entre modos fácilmente y para proporcionar una emulación del modo real dentro del modo protegido. Cuando Intel diseñó el 286, no fue diseñado para poder realizar múltiples tareas en aplicaciones en modo real; el modo real estaba destinado a ser una forma sencilla para que un cargador de arranque preparara el sistema y luego cambiara al modo protegido; En esencia, en modo protegido el 80286 fue diseñado para ser un nuevo procesador con muchas similitudes con sus predecesores, mientras que el modo real en el 80286 se ofreció para sistemas de menor escala que podrían beneficiarse de una versión más avanzada del núcleo de CPU 80186, con ventajas como velocidades de reloj más altas, ejecución de instrucciones más rápida (medida en ciclos de reloj) y buses no multiplexados, pero no el espacio de memoria de 24 bits (16 MB).
Para soportar el modo protegido, se han agregado nuevas instrucciones: ARPL, VERR, VERW, LAR, LSL, SMSW, SGDT, SIDT, SLDT, STR, LMSW, LGDT, LIDT, LLDT, LTR, CLTS. También hay nuevas excepciones (interrupciones internas): código de operación no válido, coprocesador no disponible, doble falla , desbordamiento de segmento del coprocesador, falla de pila, desbordamiento de segmento/falla de protección general y otras solo para el modo protegido.
El modo protegido del 80286 no se utilizó de forma rutinaria en aplicaciones de PC hasta muchos años después de su lanzamiento, en parte debido al alto coste de añadir memoria extendida a una PC, pero también debido a la necesidad de software para dar soporte a la gran base de usuarios de PC 8086. Por ejemplo, en 1986 el único programa que lo utilizaba era VDISK, un controlador de disco RAM incluido con PC DOS 3.0 y 3.1. Un DOS podía utilizar la RAM adicional disponible en modo protegido ( memoria extendida ) ya sea a través de una llamada BIOS (INT 15h, AH=87h), como un disco RAM , o como emulación de memoria expandida . [18] La dificultad residía en la incompatibilidad de los antiguos programas DOS en modo real con el modo protegido. Simplemente no podían ejecutarse de forma nativa en este nuevo modo sin modificaciones significativas. En el modo protegido, la gestión de la memoria y el manejo de las interrupciones se realizaban de forma diferente que en el modo real. Además, los programas DOS normalmente accedían directamente a segmentos de datos y código que no les pertenecían, como el modo real les permitía hacerlo sin restricciones; en contraste, la intención del diseño del modo protegido era evitar que los programas accedieran a segmentos que no fueran los suyos a menos que se permitiera explícitamente un acceso especial. Si bien era posible configurar un entorno de modo protegido que permitiera a todos los programas acceder a todos los segmentos (al colocar todos los descriptores de segmento en la Tabla de descriptores globales (GDT) y asignarles a todos el mismo nivel de privilegio), esto socavó casi todas las ventajas del modo protegido excepto el espacio de direcciones extendido (24 bits). La elección a la que se enfrentaban los desarrolladores de sistemas operativos era o bien empezar desde cero y crear un sistema operativo que no ejecutara la gran mayoría de los programas antiguos, o bien idear una versión de DOS que fuera lenta y fea (es decir, fea desde un punto de vista técnico interno) pero que aún así ejecutara la mayoría de los programas antiguos. El modo protegido tampoco proporcionaba una ventaja de rendimiento lo suficientemente significativa sobre el modo real compatible con 8086 como para justificar el soporte de sus capacidades; En realidad, a excepción de los cambios de tareas durante la multitarea, esto sólo produjo una desventaja en el rendimiento, al ralentizar muchas instrucciones mediante una letanía de comprobaciones de privilegios adicionales. En el modo protegido, los registros seguían siendo de 16 bits y el programador todavía se veía obligado a utilizar un mapa de memoria compuesto por segmentos de 64 kB, al igual que en el modo real. [20]
En enero de 1985, Digital Research presentó una vista previa del sistema operativo Concurrent DOS 286 1.0 desarrollado en cooperación con Intel . El producto funcionaría estrictamente como un sistema operativo 80286 en modo nativo (es decir, en modo protegido), lo que permitiría a los usuarios aprovechar al máximo el modo protegido para realizar operaciones multitarea y multiusuario mientras se ejecutaba la emulación 8086. [21] [22] [23] Esto funcionó en el paso de prototipo B-1 del chip, pero Digital Research descubrió problemas con la emulación en el paso de nivel de producción C-1 en mayo, lo que no permitiría que Concurrent DOS 286 ejecutara el software 8086 en modo protegido. El lanzamiento de Concurrent DOS 286 se retrasó hasta que Intel desarrollara una nueva versión del chip. [21] En agosto, después de realizar pruebas exhaustivas en muestras del paso E-1 del 80286, Digital Research reconoció que Intel había corregido todas las erratas documentadas del 286, pero afirmó que todavía había problemas de rendimiento del chip no documentados con la versión preliminar de Concurrent DOS 286 que se ejecutaba en el paso E-1. Intel afirmó que el enfoque que Digital Research deseaba adoptar para emular el software del 8086 en modo protegido difería de las especificaciones originales. Sin embargo, en el paso E-2, implementaron cambios menores en el microcódigo que permitirían a Digital Research ejecutar el modo de emulación mucho más rápido. [11] Denominado IBM 4680 OS , IBM originalmente eligió DR Concurrent DOS 286 como la base de su computadora IBM 4680 para productos IBM Plant System y terminales de punto de venta en 1986. [24] La versión 1.3 de FlexOS 286 de Digital Research , una derivación de Concurrent DOS 286, fue desarrollada en 1986, presentada en enero de 1987 y luego adoptada por IBM para su IBM 4690 OS , pero las mismas limitaciones la afectaron.
Los problemas llevaron a Bill Gates a referirse al 80286 como un chip "con daño cerebral", [25] ya que estaba claro que el nuevo entorno Microsoft Windows no podría ejecutar múltiples aplicaciones MS-DOS con el 286. Podría decirse que fue responsable de la división entre Microsoft e IBM, ya que IBM insistió en que OS/2 , originalmente una empresa conjunta entre IBM y Microsoft, se ejecutaría en un 286 (y en modo texto).
Otros sistemas operativos que utilizaban el modo protegido del 286 eran Microsoft Xenix (alrededor de 1984), [26] Coherent , [27] y Minix . [28] Estos se vieron menos afectados por las limitaciones del modo protegido del 80286 porque no tenían como objetivo ejecutar aplicaciones MS-DOS u otros programas en modo real. En su chip sucesor 80386 , Intel mejoró el modo protegido para abordar más memoria y también agregó el modo 8086 virtual separado , un modo dentro del modo protegido con una compatibilidad MS-DOS mucho mejor, con el fin de satisfacer las necesidades divergentes del mercado. [29]
Esta es una lista de componentes de la interfaz de bus que se conecta al microprocesador Intel 80286.