La arquitectura estándar de la industria ( ISA ) es el bus interno de 16 bits del IBM PC/AT y computadoras similares basadas en Intel 80286 y sus sucesores inmediatos durante la década de 1980. El bus era (en gran medida) compatible con versiones anteriores del bus de 8 bits del IBM PC basado en 8088 , incluido el IBM PC/XT y los IBM PC compatibles .
Originalmente denominado bus de PC (8 bits) o bus AT (16 bits), IBM también lo denominó canal de E/S . El término ISA fue acuñado como retrónimo por los fabricantes de clones de IBM PC a fines de la década de 1980 o principios de la de 1990 como reacción a los intentos de IBM de reemplazar el bus AT con su nueva e incompatible arquitectura de microcanal .
El bus ISA de 16 bits también se utilizó con procesadores de 32 bits durante varios años. Sin embargo, un intento de ampliarlo a 32 bits, llamado Extended Industry Standard Architecture (EISA), no tuvo mucho éxito. En su lugar, se utilizaron buses posteriores como VESA Local Bus y PCI , a menudo junto con ranuras ISA en la misma placa base . Los derivados de la estructura del bus AT se utilizaron y todavía se utilizan en ATA/IDE , el estándar PCMCIA , CompactFlash , el bus PC/104 y, internamente, en los chips Super I/O .
Aunque ISA desapareció de los ordenadores de escritorio hace muchos años, todavía se utiliza en PC industriales , donde se utilizan ciertas tarjetas de expansión especializadas que nunca pasaron a PCI y PCI Express.
El bus de PC original fue desarrollado por un equipo dirigido por Mark Dean en IBM como parte del proyecto IBM PC en 1981. [2] Era un bus de 8 bits basado en el bus de E/S del sistema IBM System/23 Datamaster : utilizaba el mismo conector físico y un protocolo de señal y distribución de pines similares. [3] Una versión de 16 bits, el bus IBM AT , se introdujo con el lanzamiento del IBM PC/AT en 1984. El bus AT era una extensión en su mayoría compatible con versiones anteriores del bus de PC: el conector de bus AT era un superconjunto del conector de bus de PC. En 1988, el estándar EISA de 32 bits fue propuesto por el grupo "Gang of Nine" de fabricantes compatibles con PC que incluía a Compaq. Compaq creó el término "Arquitectura estándar de la industria" (ISA) para reemplazar " compatible con PC ". [4] En el proceso, cambiaron retroactivamente el nombre del bus AT a "ISA" para evitar infringir la marca registrada de IBM en sus sistemas PC y PC/AT (y para evitar darle publicidad gratuita a su principal competidor, IBM).
IBM diseñó la versión de 8 bits como una interfaz con buffer para los buses de la placa base de la CPU Intel 8088 (16/8 bits) en el IBM PC y PC/XT, aumentada con interrupciones priorizadas y canales DMA. La versión de 16 bits fue una actualización para los buses de la placa base de la CPU Intel 80286 (y facilidades de interrupción y DMA expandidas) utilizadas en el IBM AT, con soporte mejorado para el control de bus. Por lo tanto, el bus ISA estaba sincronizado con el reloj de la CPU, hasta que los chipsets implementaron métodos de buffering sofisticados para interconectar ISA con CPU mucho más rápidas.
ISA fue diseñado para conectar tarjetas periféricas a la placa base y permite el control del bus . Solo los primeros 16 MB de la memoria principal son direccionables. El bus original de 8 bits funcionaba con el reloj de 4,77 MHz de la CPU 8088 en IBM PC y PC/XT. El bus original de 16 bits funcionaba con el reloj de la CPU 80286 en las computadoras IBM PC/AT, que era de 6 MHz en los primeros modelos y de 8 MHz en los modelos posteriores. La IBM RT PC también usaba el bus de 16 bits. ISA también se usó en algunas máquinas no compatibles con IBM, como las estaciones de trabajo Apollo (68020) y Amiga 3000 (68030) basadas en Motorola 68k , la efímera AT&T Hobbit y la posterior BeBox basada en PowerPC .
Empresas como Dell mejoraron el rendimiento del bus AT [5] pero en 1987 IBM reemplazó el bus AT con su arquitectura de microcanal (MCA) patentada. MCA superó muchas de las limitaciones que entonces eran evidentes en ISA, pero también fue un esfuerzo de IBM por recuperar el control de la arquitectura de PC y el mercado de PC. MCA era mucho más avanzado que ISA y tenía muchas características que luego aparecerían en PCI. Sin embargo, MCA también era un estándar cerrado, mientras que IBM había publicado especificaciones completas y esquemas de circuitos para ISA. Los fabricantes de computadoras respondieron a MCA desarrollando la arquitectura estándar industrial extendida (EISA) y el posterior bus local VESA (VLB). VLB utilizó algunas piezas electrónicas originalmente pensadas para MCA porque los fabricantes de componentes ya estaban equipados para fabricarlas. Tanto EISA como VLB eran expansiones compatibles con versiones anteriores del bus AT (ISA).
Los usuarios de máquinas basadas en ISA debían conocer información especial sobre el hardware que estaban agregando al sistema. Si bien un puñado de dispositivos eran esencialmente " plug-n-play ", esto era poco común. Los usuarios frecuentemente tenían que configurar parámetros al agregar un nuevo dispositivo, como la línea IRQ , la dirección de E/S o el canal DMA . MCA había eliminado esta complicación y PCI en realidad incorporó muchas de las ideas exploradas por primera vez con MCA, aunque descendía más directamente de EISA.
Este problema con la configuración finalmente llevó a la creación de ISA PnP , un sistema plug-n-play que utilizaba una combinación de modificaciones en el hardware, el BIOS del sistema y el software del sistema operativo para administrar automáticamente las asignaciones de recursos. En realidad, ISA PnP podía ser problemático y no recibió un buen soporte hasta que la arquitectura estaba en sus últimos días.
Un dispositivo PnP ISA, EISA o VLB puede tener un ID EISA de 5 bytes (ID del fabricante de 3 bytes + número hexadecimal de 2 bytes) para identificar el dispositivo. Por ejemplo, CTL0044 corresponde a Creative Sound Blaster 16 / 32 PnP .
Las ranuras PCI fueron los primeros puertos de expansión físicamente incompatibles que expulsaron directamente a ISA de la placa base. Al principio, las placas base eran en gran parte ISA, incluidas unas pocas ranuras PCI. A mediados de la década de 1990, los dos tipos de ranuras estaban aproximadamente equilibrados y las ranuras ISA pronto se convirtieron en una minoría de los sistemas de consumo. La especificación PC-99 de Microsoft recomendaba que las ranuras ISA se eliminaran por completo, aunque la arquitectura del sistema aún requería que ISA estuviera presente de alguna manera vestigial internamente para manejar la unidad de disquete , los puertos serie , etc., por lo que se creó el bus LPC compatible con software . Las ranuras ISA permanecieron durante algunos años más y, hacia el cambio de siglo, era común ver sistemas con un puerto de gráficos acelerados (AGP) ubicado cerca de la unidad central de procesamiento , una matriz de ranuras PCI y una o dos ranuras ISA cerca del final. A finales de 2008, incluso las unidades de disquete y los puertos seriales estaban desapareciendo, y la extinción del ISA vestigial (en ese entonces el bus LPC) de los chipsets estaba en el horizonte.
Las ranuras PCI están "rotadas" en comparación con sus contrapartes ISA: las tarjetas PCI se insertaban básicamente "al revés", lo que permitía que los conectores ISA y PCI se apretaran juntos en la placa base. Solo se puede usar uno de los dos conectores en cada ranura a la vez, pero esto permitió una mayor flexibilidad.
La interfaz de disco duro AT Attachment (ATA) desciende directamente de la ISA de 16 bits de la PC/AT. ATA tiene su origen en el IBM Personal Computer Fixed Disk and Diskette Adapter, la tarjeta controladora de disco duro y disquete de doble función estándar para la IBM PC AT; el controlador de disco fijo de esta tarjeta implementó el conjunto de registros y el conjunto de comandos básicos que se convirtieron en la base de la interfaz ATA (y que diferían en gran medida de la interfaz de la tarjeta controladora de disco fijo de IBM para la PC XT). Los precursores directos de ATA fueron las tarjetas duras ISA de terceros que integraban una unidad de disco duro (HDD) y un controlador de disco duro (HDC) en una tarjeta. Esto era, en el mejor de los casos, incómodo y, en el peor, dañino para la placa base, ya que las ranuras ISA no estaban diseñadas para admitir dispositivos tan pesados como los HDD. La siguiente generación de unidades de electrónica de unidad integrada trasladó tanto la unidad como el controlador a una bahía de unidad y utilizó un cable plano y una placa de interfaz muy simple para conectarlo a una ranura ISA. ATA es básicamente una estandarización de esta disposición más una estructura de comandos uniforme para que el software interactúe con el HDC dentro de la unidad. Desde entonces, ATA se ha separado del bus ISA y se ha conectado directamente al bus local, generalmente mediante la integración en el chipset, para lograr velocidades de reloj y un rendimiento de datos mucho más altos de los que ISA podía soportar. ATA tiene características claras de ISA de 16 bits, como un tamaño de transferencia de 16 bits, sincronización de señales en los modos PIO y los mecanismos de interrupción y DMA.
El bus PC/XT es un bus ISA de ocho bits utilizado por los sistemas Intel 8086 e Intel 8088 en el IBM PC y el IBM PC XT en la década de 1980. Entre sus 62 pines se encontraban versiones demultiplexadas y con buffer eléctrico de las 8 líneas de datos y 20 líneas de dirección del procesador 8088, junto con líneas de alimentación, relojes, luces estroboscópicas de lectura/escritura, líneas de interrupción, etc. Las líneas de alimentación incluían −5 V y ±12 V para soportar directamente circuitos pMOS y nMOS en modo de mejora, como RAM dinámicas, entre otras cosas. La arquitectura del bus XT utiliza un único PIC Intel 8259 , que proporciona ocho líneas de interrupción vectorizadas y priorizadas. Tiene cuatro canales DMA proporcionados originalmente por el Intel 8237. Tres de los canales DMA se llevan a las ranuras de expansión del bus XT; de estos, 2 normalmente ya están asignados a funciones de la máquina (unidad de disquete y controlador de disco duro):
El bus PC/AT , una versión de 16 bits (o 80286) del bus PC/XT, se introdujo con el IBM PC/AT . Este bus fue denominado oficialmente canal de E/S por IBM. [ cita requerida ] Amplía el bus XT añadiendo un segundo conector de borde más corto en línea con el conector de bus XT de ocho bits, que no ha cambiado, manteniendo la compatibilidad con la mayoría de las tarjetas de 8 bits. El segundo conector añade cuatro líneas de dirección adicionales para un total de 24, y 8 líneas de datos adicionales para un total de 16. También añade nuevas líneas de interrupción conectadas a un segundo PIC 8259 (conectado a una de las líneas del primero) y 4 canales DMA de 16 bits, así como líneas de control para seleccionar transferencias de 8 o 16 bits.
La ranura de bus AT de 16 bits originalmente utilizaba dos conectores de borde estándar en las primeras máquinas IBM PC/AT. Sin embargo, con la popularidad de la arquitectura AT y el bus ISA de 16 bits, los fabricantes introdujeron conectores especializados de 98 pines que integraban los dos conectores en una sola unidad. Estos se pueden encontrar en casi todas las PC de clase AT fabricadas después de mediados de la década de 1980. El conector de la ranura ISA suele ser negro (lo que lo distingue de los conectores EISA marrones y los conectores PCI blancos).
Los dispositivos de la placa base tienen IRQ dedicados (no presentes en las ranuras). Los dispositivos de 16 bits pueden utilizar IRQ de bus PC o de bus PC/AT. Por lo tanto, es posible conectar hasta 6 dispositivos que utilicen un IRQ de 8 bits cada uno y hasta 5 dispositivos que utilicen un IRQ de 16 bits cada uno. Al mismo tiempo, hasta 4 dispositivos pueden utilizar un canal DMA de 8 bits cada uno, mientras que hasta 3 dispositivos pueden utilizar un canal DMA de 16 bits cada uno.
Originalmente, el reloj del bus estaba sincronizado con el reloj de la CPU, lo que daba como resultado frecuencias de reloj de bus variables entre los muchos "clones" de IBM diferentes en el mercado (a veces tan altas como 16 o 20 MHz), lo que provocaba problemas de sincronización eléctrica o de software para ciertas tarjetas ISA a velocidades de bus para las que no estaban diseñadas. Las placas base o los chipsets integrados posteriores usaban un generador de reloj independiente o un divisor de reloj que fijaba la frecuencia del bus ISA a 4, 6 u 8 MHz [6] o permitía al usuario ajustar la frecuencia a través de la configuración del BIOS . Cuando se usaban a una frecuencia de bus más alta, algunas tarjetas ISA (ciertas tarjetas de video compatibles con Hercules , por ejemplo) podían mostrar mejoras significativas en el rendimiento.
La decodificación de direcciones de memoria para la selección del modo de transferencia de 8 o 16 bits estaba limitada a secciones de 128 KiB, lo que generaba problemas al combinar tarjetas de 8 y 16 bits, ya que no podían coexistir en la misma área de 128 KiB. Esto se debe a que la línea MEMCS16 debe configurarse únicamente en función del valor de LA17-23.
Hoy en día, la tecnología ISA se sigue utilizando para fines industriales especializados. En 2008, IEI Technologies lanzó una placa base moderna para procesadores Intel Core 2 Duo que, además de otras características de E/S especiales, está equipada con dos ranuras ISA. Se comercializó para usuarios industriales y militares que habían invertido en costosos adaptadores de bus ISA especializados, que no estaban disponibles en las versiones con bus PCI . [7]
De manera similar, ADEK Industrial Computers lanzó una placa base moderna a principios de 2013 para procesadores Intel Core i3/i5/i7, que contiene una ranura ISA (no DMA). [8] Además, MSI lanzó una placa base moderna con una ranura ISA en 2020. [9]
El bus PC/104 , utilizado en aplicaciones industriales e integradas, es un derivado del bus ISA, que utiliza las mismas líneas de señal con conectores diferentes. El bus LPC ha sustituido al bus ISA como conexión a los dispositivos de E/S heredados de las placas base actuales; aunque físicamente es bastante diferente, el bus LPC se parece al bus ISA en el software, por lo que es probable que las peculiaridades del bus ISA, como el límite de 16 MiB de DMA (que corresponde al espacio de direcciones completo de la CPU Intel 80286 utilizada en el IBM AT original) se mantengan durante un tiempo.
Como se explica en la sección Historia , ISA fue la base para el desarrollo de la interfaz ATA , utilizada para discos duros ATA (también conocidos como IDE). Físicamente, ATA es esencialmente un subconjunto simple de ISA, con 16 bits de datos, soporte para exactamente un canal IRQ y un canal DMA, y 3 bits de dirección. A este subconjunto de ISA, ATA agrega dos líneas de selección de dirección IDE ("selección de chip") (es decir, decodificaciones de dirección, efectivamente equivalentes a bits de dirección) y algunas líneas de señal únicas específicas para discos duros ATA/IDE (como la línea Cable Select/Spindle Sync). Además del canal de interfaz física, ATA va más allá y mucho más allá del alcance de ISA al especificar también un conjunto de registros de dispositivo físico que se implementarán en cada unidad ATA (IDE) y un conjunto completo de protocolos y comandos de dispositivo para controlar unidades de disco fijas utilizando estos registros. Los registros de dispositivos ATA se acceden mediante los bits de dirección y las señales de selección de dirección en el canal de interfaz física ATA, y todas las operaciones de los discos duros ATA se realizan mediante los protocolos especificados por ATA a través del conjunto de comandos ATA. Las primeras versiones del estándar ATA presentaban unos pocos protocolos simples y un conjunto de comandos básico comparable a los conjuntos de comandos de los controladores MFM y RLL (que precedieron a los controladores ATA), pero los estándares ATA más recientes tienen protocolos y conjuntos de instrucciones mucho más complejos que incluyen comandos opcionales y protocolos que proporcionan características avanzadas de uso opcional como áreas de almacenamiento del sistema ocultas de gran tamaño, bloqueo de seguridad con contraseña y traducción de geometría programable.
A mediados de la década de 1990, el controlador de host ATA (generalmente integrado en el chipset) se trasladó a la forma PCI . [10] Una desviación adicional entre ISA y ATA es que, mientras que el bus ISA permaneció bloqueado en una única velocidad de reloj estándar (para compatibilidad con hardware anterior), la interfaz ATA ofrecía muchos modos de velocidad diferentes, podía seleccionar entre ellos para que coincidieran con la velocidad máxima admitida por las unidades conectadas y seguía añadiendo velocidades más rápidas con versiones posteriores del estándar ATA (hasta 133 MB/s para ATA-6, el último). En la mayoría de las formas, ATA funcionaba mucho más rápido que ISA, siempre que estuviera conectado directamente a un bus local (por ejemplo, interfaces IDE integradas en el puente sur) más rápido que el bus ISA.
Antes de la interfaz ATA/IDE de 16 bits , existía una interfaz XT-IDE de 8 bits (también conocida como XTA) para discos duros. No era tan popular como lo ha sido la ATA y ahora es bastante difícil encontrar hardware XT-IDE. Algunos adaptadores XT-IDE estaban disponibles como tarjetas ISA de 8 bits y los conectores XTA también estaban presentes en las placas base de los clones XT posteriores de Amstrad , así como en una línea de unidades Philips de corta duración . La distribución de pines de XTA era muy similar a la de ATA, pero solo se utilizaban ocho líneas de datos y dos líneas de dirección, y los registros de dispositivos físicos tenían significados completamente diferentes. Algunos discos duros (como el Seagate ST351A/X) podían admitir cualquiera de los dos tipos de interfaz, que se seleccionaban con un puente.
Muchas placas base AT posteriores (y sus sucesoras) no tenían una interfaz de disco duro integrada, sino que dependían de una interfaz de disco duro independiente conectada a una ranura ISA/EISA/VLB. Incluso hubo algunas unidades basadas en 80486 que se entregaban con interfaces y unidades MFM/RLL en lugar de las cada vez más comunes AT-IDE.
Commodore construyó la unidad de expansión de memoria/disco duro periférico basada en XT-IDE A590 para sus computadoras Amiga 500 y 500+ que también admitían una unidad SCSI . Los modelos posteriores (la serie A600 , A1200 y Amiga 4000 ) utilizan unidades AT-IDE.
La especificación PCMCIA puede considerarse un superconjunto de ATA. El estándar para interfaces de disco duro PCMCIA, que incluye las unidades flash PCMCIA, permite la configuración mutua del puerto y la unidad en un modo ATA. Como extensión de facto, la mayoría de las unidades flash PCMCIA permiten además un modo ATA simple que se habilita al poner un solo pin en modo bajo, de modo que no se necesita hardware ni firmware PCMCIA para utilizarlas como una unidad ATA conectada a un puerto ATA. Los adaptadores de unidad flash PCMCIA a ATA son, por lo tanto, simples y económicos, pero no se garantiza que funcionen con todas y cada una de las unidades flash PCMCIA estándar. Además, dichos adaptadores no se pueden utilizar como puertos PCMCIA genéricos, ya que la interfaz PCMCIA es mucho más compleja que ATA.
Aunque la mayoría de las computadoras modernas no tienen buses ISA físicos, casi todas las PC ( IA-32 y x86-64 ) tienen buses ISA asignados en el espacio de direcciones físicas. Algunos puentes sur y algunas CPU brindan servicios como monitoreo de temperatura y lecturas de voltaje a través de buses ISA como dispositivos ISA. [ cita requerida ]
En 1985, el IEEE inició una estandarización del bus ISA, denominada especificación P996. Sin embargo, a pesar de que se publicaron libros sobre la especificación P996, nunca pasó oficialmente del estado de borrador. [11]
Todavía existe una base de usuarios con ordenadores antiguos, por lo que todavía se fabrican algunas tarjetas ISA, por ejemplo, con puertos USB [12] o ordenadores de placa única completos basados en procesadores modernos, USB 3.0 y SATA . [13]