# Bus ISA

Industry Standard Architecture (ISA) désigne le système de connexion interne de 16 bits utilisé dans les IBM PC/AT et des ordinateurs similaires qui ont utilisé les processeurs Intel 80286 et leurs successeurs pendant les années 1980. Ce bus, un peu comme un réseau de routes à l'intérieur de l'ordinateur, permet aux différentes parties de l'ordinateur, comme le processeur, la mémoire et les périphériques, de communiquer entre elles. Il a été spécialement conçu pour être compatible avec le bus de 8 bits des premiers IBM PC équipés de processeurs 8088, comme l'IBM PC/XT, ainsi que les ordinateurs compatibles avec les IBM PC..
Appelé à l'origine bus PC (8 bits) ou bus AT (16 bits), il a également été appelé I/O Channel par IBM. Le terme ISA a été repris par les fabricants de clones d'IBM PC à la fin des années 1980 ou au début des années 1990, en réaction aux tentatives d'IBM de remplacer le bus AT par sa nouvelle et incompatible architecture Micro Channel.
Le bus ISA 16 bits a également été utilisé avec des processeurs 32 bits pendant plusieurs années. Une tentative d'extension à 32 bits, appelée Extended Industry Standard Architecture (EISA), n'a cependant pas été couronnée de succès. Des bus ultérieurs tels que le bus local VESA et le PCI ont été utilisés à la place, souvent en même temps que les emplacements ISA sur la même carte mère. Des dérivés de la structure du bus AT ont été et sont encore utilisés dans ATA/IDE, la norme PCMCIA, CompactFlash, le bus PC/104 et en interne dans les puces Super I/O.
Bien que l'ISA ait disparu des ordinateurs de bureau grand public il y a de nombreuses années, elle est encore utilisée dans les PC industriels, où l'on utilise certaines cartes d'extension spécialisées qui n'ont jamais fait la transition vers PCI et PCI Express.

## Histoire

Le bus PC original a été développé par une équipe dirigée par Mark Dean chez IBM dans le cadre du projet IBM PC en 1981. Il s'agissait d'un bus 8 bits basé sur le bus E/S du système IBM System/23 Datamaster - il utilisait le même connecteur physique, ainsi qu'un protocole de signal et un brochage similaires.
Une version 16 bits, le bus IBM AT, a été introduite avec la sortie de l'IBM PC/AT en 1984$^,$. Le bus AT était une extension essentiellement rétro compatible du bus PC - le connecteur du bus AT était un sur ensemble du connecteur. En 1988, la norme EISA 32 bits a été proposée par le groupe « Gang of Nine » de fabricants de PC compatibles, dont Compaq$^,$$^,$. Compaq a créé le terme « Industry Standard Architecture » (ISA) pour remplacer « compatible PC » et a renommé rétroactivement le bus AT en "ISA" pour éviter d'enfreindre la marque déposée d'IBM sur ses systèmes PC et PC/AT$^,$.
IBM a conçu la version 8 bits comme une interface tamponnée avec les bus de la carte mère du processeur Intel 8088 (16/8 bits) dans les PC et PC/XT d'IBM, avec des interruptions prioritaires et des canaux DMA. La version 16 bits était une mise à niveau pour les bus de carte mère de l'unité centrale Intel 80286 (et des fonctions d'interruption et de DMA étendues) utilisées dans l'IBM AT, avec une meilleure prise en charge de la maîtrise du bus. Le bus ISA était donc synchrone avec l'horloge du CPU, jusqu'à ce que des méthodes sophistiquées de mise en mémoire tampon soient mises en œuvre par les chipsets pour interfacer l'ISA avec des CPU beaucoup plus rapides.
L'ISA a été conçu pour connecter des cartes périphériques à la carte mère et permet la maîtrise du bus. Seuls les 16 premiers Mo de la mémoire principale sont adressables. Le bus 8 bits d'origine fonctionnait à partir de l'horloge de 4,77 MHz de l'unité centrale 8088 dans les PC et PC/XT d'IBM. Le bus 16 bits d'origine fonctionnait à partir de l'horloge du CPU 80286 dans les ordinateurs IBM PC/AT, qui était de 6 MHz dans les premiers modèles et de 8 MHz dans les modèles ultérieurs. L'IBM RT PC utilisait également le bus 16 bits. L'ISA a également été utilisé dans certaines machines non compatibles IBM, telles que les stations de travail Apollo (68020) et Amiga 3000 (68030) basées sur la technologie 68k de Motorola$^,$, l'éphémère AT&T Hobbit et la BeBox basée sur le PowerPC.
Des sociétés comme Dell ont amélioré les performances du bus AT, mais en 1987, IBM a remplacé le bus AT par son architecture propriétaire Micro Channel Architecture (MCA). La MCA a surmonté bon nombre des limitations alors apparentes de l'ISA, mais a également constitué un effort de la part d'IBM pour reprendre le contrôle de l'architecture et du marché des PC. La MCA était beaucoup plus avancée que l'ISA et présentait de nombreuses caractéristiques qui apparaîtraient plus tard dans le PCI. Cependant, le MCA était également une norme fermée, alors qu'IBM avait publié des spécifications complètes et des schémas de circuits pour l'ISA. Les fabricants d'ordinateurs ont réagi au MCA en développant l'EISA (Extended Industry Standard Architecture) et, plus tard, le VLB (VESA Local Bus). Le VLB a utilisé certaines pièces électroniques initialement prévues pour le MCA, car les fabricants de composants étaient déjà équipés pour les fabriquer. L'EISA et le VLB étaient des extensions rétro compatibles du bus AT (ISA).
Les utilisateurs de machines basées sur la norme ISA devaient posséder des informations spécifiques sur le matériel qu'ils ajoutaient au système. Bien qu'un petit nombre de périphériques soient essentiellement "prêts à l'emploi", cela était rare. Les utilisateurs devaient souvent configurer des paramètres lors de l'ajout d'un nouveau périphérique, tels que la ligne IRQ, l'adresse E/S ou le canal DMA. Le MCA avait éliminé cette complication et le PCI a en fait incorporé de nombreuses idées explorées pour la première fois avec le MCA, bien qu'il soit plus directement issu de l'EISA.
Ces problèmes de configuration ont finalement conduit à la création de l'ISA PnP, un système plug-n-play qui utilisait une combinaison de modifications du matériel, du BIOS du système et du système d'exploitation pour gérer automatiquement les allocations de ressources. En réalité, l'ISA PnP pouvait poser des problèmes et n'a bénéficié d'un bon soutien que lorsque l'architecture a vécu ses derniers jours.
Les emplacements PCI ont été les premiers ports d'extension à évincer directement l'ISA de la carte mère en raison de leur incompatibilité physique. Au début, les cartes mères étaient principalement équipées de connecteurs ISA, avec seulement quelques emplacements PCI. Au milieu des années 1990, les deux types d'emplacements étaient à peu près équilibrés, et les emplacements ISA sont rapidement devenus minoritaires dans les systèmes grand public. La spécification PC-99 de Microsoft recommandait la suppression totale des emplacements ISA$^,$, bien que l'architecture du système exigeait toujours la présence d'ISA d'une manière ou d'une autre en interne pour gérer le lecteur de disquettes, les ports série, etc. Les emplacements ISA sont restés en place pendant quelques années encore et, vers la fin du siècle, il était courant de voir des systèmes dotés d'un port graphique accéléré (AGP) près de l'unité centrale, d'un ensemble d'emplacements PCI et d'un ou deux emplacements ISA à l'extrémité du système. Fin 2008, même les lecteurs de disquettes et les ports série disparaissaient, et l'extinction de l'ISA vestigial (à l'époque le bus LPC) des chipsets se profilait à l'horizon.
L'interface de disque dur AT Attachment (ATA) est directement issue de l'ISA 16 bits du PC/AT$^,$$^,$. L'ATA trouve son origine dans l'adaptateur de disque fixe et de disquette d'IBM PC$^,$,le contrôleur de disque fixe de cette carte mettait en œuvre le jeu de registres et le jeu de commandes de base qui sont devenus la base de l'interface ATA (et qui différaient grandement de l'interface de la carte de contrôleur de disque fixe d'IBM pour le PC XT).

## Architecture du bus ISA

Le bus PC/XT est un bus ISA 8-bits utilisé par les systèmes Intel 8086 et Intel 8088 dans l'IBM PC et l'IBM PC XT dans les années 1980$^,$. Parmi ses 62 broches se trouvaient des versions démultiplexées et électriquement tamponnées des 8 lignes de données et des 20 lignes d'adresse du processeur 8088, ainsi que des lignes d'alimentation, des horloges, des stroboscopes de lecture/écriture, des lignes d'interruption, etc. Les lignes d'alimentation comprennent -5 V et ±12 V afin de supporter directement les circuits pMOS et nMOS en mode d'amélioration, tels que les RAM dynamiques, entre autres. L'architecture du bus XT utilise un seul PIC Intel 8259, offrant huit lignes d'interruption vectorisées et priorisées. Il dispose de quatre canaux DMA fournis à l'origine par l'Intel 8237. Trois des canaux DMA sont amenés vers les slots d'extension du bus XT ; parmi ceux-ci, deux sont normalement déjà alloués à des fonctions de la machine (lecteur de disquette et contrôleur de disque dur) .
Le bus PC/AT, une version 16 bits (ou 80286) du bus PC/XT, a été introduit avec le PC/AT d'IBM. Ce bus a été officiellement appelé I/O Channel par IBM$^,$. Il étend le bus XT en ajoutant un deuxième connecteur plus court en ligne avec le connecteur XT-bus 8-bits, qui est inchangé, conservant la compatibilité avec la plupart des cartes 8 bits. Le second connecteur ajoute quatre lignes d'adresse supplémentaires pour un total de 24, et 8 lignes de données supplémentaires pour un total de 16. Il ajoute également de nouvelles lignes d'interruption connectées à un second PIC 8259 (connecté à l'une des lignes du premier) et 4 canaux DMA 16 bits, ainsi que des lignes de contrôle pour sélectionner les transferts 8 ou 16 bits.
Brochage 16-bit :
| Broche | Nom | Description |
| A1 | I/O CH CK | I/O channel check; active low=parity error |
| A2 | D7 | Bit de donnée 7 |
| A3 | D6 | Bit de donnée 6 |
| A4 | D5 | Bit de donnée 5 |
| A5 | D4 | Bit de donnée 4 |
| A6 | D3 | Bit de donnée 3 |
| A7 | D2 | Bit de donnée 2 |
| A8 | D1 | Bit de donnée 1 |
| A9 | D0 | Bit de donnée 0 |
| A10 | I/O CH RDY | I/O Channel ready, pulled low to lengthen memory cycles |
| A11 | AEN | Address enable; active high when DMA controls bus |
| A12 | A19 | Bit d'adresse 19 |
| A13 | A18 | Bit d'adresse 18 |
| A14 | A17 | Bit d'adresse 17 |
| A15 | A16 | Bit d'adresse 16 |
| A16 | A15 | Bit d'adresse 15 |
| A17 | A14 | Bit d'adresse 14 |
| A18 | A13 | Bit d'adresse 13 |
| A19 | A12 | Bit d'adresse 12 |
| A20 | A11 | Bit d'adresse 11 |
| A21 | A10 | Bit d'adresse 10 |
| A22 | A9 | Bit d'adresse 9 |
| A23 | A8 | Bit d'adresse 8 |
| A24 | A7 | Bit d'adresse 7 |
| A25 | A6 | Bit d'adresse 6 |
| A26 | A5 | Bit d'adresse 5 |
| A27 | A4 | Bit d'adresse 4 |
| A28 | A3 | Bit d'adresse 3 |
| A29 | A2 | Bit d'adresse 2 |
| A30 | A1 | Bit d'adresse 1 |
| A31 | A0 | Bit d'adresse 0 |
| B1 | GND | Masse |
| B2 | RESET | Active high to reset or initialize system logic |
| B3 | +5V | +5 VDC |
| B4 | IRQ2 | Requête d'interruption 2 |
| B5 | -5VDC | -5 VDC |
| B6 | DRQ2 | Requête DMA 2 |
| B7 | -12VDC | -12 VDC |
| B8 | /NOWS | No WaitState |
| B9 | +12VDC | +12 VDC |
| B10 | GND | Masse |
| B11 | /SMEMW | System Memory Write |
| B12 | /SMEMR | System Memory Read |
| B13 | /IOW | I/O Write |
| B14 | /IOR | I/O Read |
| B15 | /DACK3 | DMA Acknowledge 3 |
| B16 | DRQ3 | Requête DMA 3 |
| B17 | /DACK1 | Quittance DMA 1 |
| B18 | DRQ1 | Requête DMA 1 |
| B19 | /REFRESH | Rafraîchissement |
| B20 | CLOCK | Horloge système (67 ns, 8-8.33 MHz, 50% duty cycle) |
| B21 | IRQ7 | Requête d'interruption 7 |
| B22 | IRQ6 | Requête d'interruption 6 |
| B23 | IRQ5 | Requête d'interruption 5 |
| B24 | IRQ4 | Requête d'interruption 4 |
| B25 | IRQ3 | Requête d'interruption 3 |
| B26 | /DACK2 | Quittance DMA 2 |
| B27 | T/C | Terminal count; pulses high when DMA term. count reached |
| B28 | ALE | Address Latch Enable |
| B29 | +5V | +5 VDC |
| B30 | OSC | Horloge haute vitesse (70 ns, 14,31818 MHz, 50% duty cycle) |
| B31 | GND | Masse |
| C1 | SBHE | System bus high enable (data available on SD8-15) |
| C2 | LA23 | Bit d'adresse 23 |
| C3 | LA22 | Bit d'adresse 22 |
| C4 | LA21 | Bit d'adresse 21 |
| C5 | LA20 | Bit d'adresse 20 |
| C6 | LA18 | Bit d'adresse 19 |
| C7 | LA17 | Bit d'adresse 18 |
| C8 | LA16 | Bit d'adresse 17 |
| C9 | /MEMR | Memory Read (Active on all memory read cycles) |
| C10 | /MEMW | Memory Write (Active on all memory write cycles) |
| C11 | SD08 | Bit de donnée 8 |
| C12 | SD09 | Bit de donnée 9 |
| C13 | SD10 | Bit de donnée 10 |
| C14 | SD11 | Bit de donnée 11 |
| C15 | SD12 | Bit de donnée 12 |
| C16 | SD13 | Bit de donnée 13 |
| C17 | SD14 | Bit de donnée 14 |
| C18 | SD15 | Bit de donnée 15 |
| D1 | /MEMCS16 | Memory 16-bit chip select (1 wait, 16-bit memory cycle) |
| D2 | /IOCS16 | I/O 16-bit chip select (1 wait, 16-bit I/O cycle) |
| D3 | IRQ10 | Requête d'interruption 10 |
| D4 | IRQ11 | Requête d'interruption 11 |
| D5 | IRQ12 | Requête d'interruption 12 |
| D6 | IRQ15 | Requête d'interruption 15 |
| D7 | IRQ14 | Requête d'interruption 14 |
| D8 | /DACK0 | Quittance DMA 0 |
| D9 | DRQ0 | Requête DMA 0 |
| D10 | /DACK5 | Quittance DMA 5 |
| D11 | DRQ5 | Requête DMA 5 |
| D12 | /DACK6 | Quittance DMA 6 |
| D13 | DRQ6 | Requête DMA 6 |
| D14 | /DACK7 | Quittance DMA 7 |
| D15 | DRQ7 | Requête DMA 7 |
| D16 | +5 V | +5 VDC |
| D17 | /MASTER | Used with DRQ to gain control of system |
| D18 | GND | Masse |

## Utilisation passée et actuelle

L'ISA est encore utilisée aujourd'hui à des fins industrielles spécialisées. En 2008, IEI Technologies a lancé une carte mère moderne pour les processeurs Intel Core 2 Duo qui, en plus d'autres caractéristiques d'E/S spéciales, est équipée de deux emplacements ISA. Elle est destinée aux utilisateurs industriels et militaires qui ont investi dans des adaptateurs de bus ISA spécialisés et coûteux, qui ne sont pas disponibles en version bus PCI.
De même, ADEK Industrial Computers sortira début 2013 une carte mère pour les processeurs Intel Core i3/i5/i7, qui contient un emplacement ISA (non DMA).

### XT-IDE

Avant l'interface ATA/IDE 16 bits, il existait une interface XT-IDE (également connue sous le nom de XTA) 8 bits pour les disques durs. Elle n'était pas aussi populaire que l'ATA et le matériel XT-IDE est aujourd'hui assez difficile à trouver. Certains adaptateurs XT-IDE étaient disponibles sous forme de cartes ISA 8 bits, et des prises XTA étaient également présentes sur les cartes mères des derniers clones XT d'Amstrad, ainsi que sur une ligne éphémère d'unités Philips. Le brochage de XTA était très similaire à celui de l'ATA, mais seules huit lignes de données et deux lignes d'adresse étaient utilisées, et les registres physiques des périphériques avaient des significations complètement différentes. Quelques disques durs (comme le Seagate ST351A/X) pouvaient prendre en charge l'un ou l'autre type d'interface, sélectionné à l'aide d'un cavalier$^,$.

## Émulation par des puces intégrées

Bien que la plupart des ordinateurs modernes n'aient pas de bus ISA physiques, presque tous les PC - IA-32 et x86-64 - ont des bus ISA alloués dans l'espace d'adressage physique. Certains Southbridges et certains CPU fournissent eux-mêmes des services tels que la surveillance de la température et la lecture de la tension par l'intermédiaire des bus ISA en tant que dispositifs ISA.

## Standardisation

L'IEEE a commencé à normaliser le bus ISA en 1985, sous le nom de spécification P996. Cependant, malgré la publication de livres sur la spécification P996, celle-ci n'a jamais dépassé officiellement le statut de projet.

## Cartes ISA modernes

Il existe toujours une base d'utilisateurs d'anciens ordinateurs, c'est pourquoi certaines cartes ISA sont encore fabriquées, par exemple avec des ports USB ou des ordinateurs à carte unique basés sur des processeurs modernes, USB 3.0 et SATA$^,$$^,$.