Parallel ATA

La norme  (PATA) décrit une interface de connexion pour mémoires de masse (disque dur, lecteur de CD-ROM...). Elle a été conçue à l'origine par Western Digital sous le nom   ou IDE. Elle est gérée par le comité T13 d'INCITS. Cette norme utilise les normes ATA () et ATAPI (). En pratique, l'ATAPI qui étend ce standard de communication à des périphériques différents des disques durs, sert à faire passer des commandes SCSI sur la couche physique de l'ATA. 

La norme  SATA (Serial ATA), qui l'a remplacée, utilise un bus série, permettant un câble plus fin et plus flexible tout en permettant des débits supérieurs.

Présentation 

Les périphériques (disques, lecteurs de CD) sont reliés à la carte mère par une nappe souple comportant des connecteurs , parfois munis d'un détrompeur. Ces nappes étaient par le passé munies de , mais depuis l'apparition de l’, les nappes à  deviennent monnaie courante. La largeur standard des nappes est de .
 Ces connecteurs sont identiques pour le contrôleur et les périphériques, (voir illustration).
 Les cartes mères étaient le plus souvent équipées de deux ports IDE, parfois de quatre. Chaque port permet de brancher deux périphériques : un maître, un esclave. Une carte mère disposant de deux ports IDE permet donc de brancher quatre périphériques de stockage ; on parlera alors sur le premier port de maître primaire et d'esclave primaire et sur le second port de maître secondaire et d'esclave secondaire. Le passage progressif à la norme SATA a conduit dans une phase de transition à l'apparition de cartes mères équipées d'un seul port IDE ; elles formaient la très grande majorité du marché en 2009. En 2012, la plupart des cartes mères n'utilisent plus du tout ce système.
 La distinction maître/esclave permet de séparer logiquement les unités de stockage connectées physiquement en parallèle sur le contrôleur, mais n'indique pas une supériorité d'un périphérique sur l'autre, telle qu'un meilleur temps d'accès ou un meilleur débit, qui eux sont similaires.
 Pour effectuer cette distinction  /  (ou maître / esclave en français), on positionne un cavalier sur le sélecteur incorporé au périphérique, en général sur la tranche entre le connecteur destiné à la nappe et celui qui est destiné à l'alimentation électrique. Il existe aussi une position CS (, en français « sélection par le câble ») qui permet (si on positionne les deux périphériques en CS) de déterminer automatiquement lequel est maître et lequel est esclave, en fonction de la position sur le câble. Dans ce cas, le fonctionnement standard suppose que le dernier connecteur de la nappe accueille le périphérique maître (utilisé par exemple pour le disque dur contenant le système d'exploitation) tandis que le connecteur intermédiaire permet le branchement du périphérique esclave.

ATA et ATAPI 

La connexion IDE tire parti des protocoles ATA/ATAPI. ATAPI (ATA with Packet Interface extension) est une extension de ATA (AT Attachement). Ce dernier est le protocole utilisé par les disques durs IDE tandis qu'ATAPI est plutôt utilisé par les lecteurs et graveurs de CD-ROM et DVD-ROM ainsi que par quelques lecteurs de disquettes spéciales de type ZIP par exemple.

La principale différence entre les deux protocoles réside dans l'existence, dans ATAPI, de l'extension Packet Interface qui implémente le jeu d'instructions Packet, mais interdit de nombreuses commandes ATA.

Les commandes réservées à ATA ou à ATAPI sont indiquées dans les sections suivantes. Les commandes communes aux deux protocoles ne porteront pas de mention spéciale.

Les différents standards

Jeu d'instructions Packet 

Ce jeu d'instructions constitue la principale différence entre ATA et ATAPI. Il implémente les deux commandes suivantes :
 Obtention d'informations : une commande du même type existe dans le protocole ATA mais fournit des informations différentes. Ces deux commandes sont décrites plus bas.
 Envoi d'une commande Packet : cette commande permet l'envoi de commandes Packet dans un format spécial par le biais du port de données. Ces commandes permettent d'envoyer plus d'informations que les commandes ATA normales. Cette commande est également décrite plus bas.

Ces commandes servent d'interface à un jeu d'instructions spéciales spécifiques au type de périphérique (CD-ROM, CD-R/RW, DVD…). Ces commandes ne sont pas définies par le protocole ATAPI.

Dans le cas des CD-ROM et des DVD, ces commandes sont définies par le T10 (Technical Committee T10, dépendant de NCITS (National Committee for Information and Technology Standards) chargé de SCSI) dans les MMC (Multimedia Commands 1, 2 et 3 actuellement).
Note : Ces commandes étaient, pour les CD-ROM, définies dans le document SFF-8020i, maintenant obsolète.

Tout système digne de ce nom doit impérativement supporter un protocole soit par le biais d'un pilote soit par celui du BIOS qui fournit déjà des fonctions d'accès aux disques durs (interruption 13h) mais ces fonctions sont limitées, lentes, et parfois buguées. Se baser sur le BIOS ne permet donc pas d'avoir un système fiable sans compter qu'en mode protégé, cela est impossible. C'est pourquoi il faut réécrire les routines d'accès aux disques pour avoir un pilote satisfaisant.

Quelques-unes des commandes de base sont décrites dans ce document

Fonctions plus avancées

(LBA)

Présentation 
Le mode CHS permet d'adresser un secteur du disque en indiquant son numéro de secteur, le numéro du cylindre où il se trouve ainsi que le numéro de la tête. Malheureusement, ce mode ne permet d'adresser que ,  et  soit octets, un peu moins de , ce qui est peu de nos jours (quoique certains disques supportent des adresses CHS supérieures à cette limite).

Au contraire, le mode LBA utilise une adresse logique sur  : le 1e secteur a l'adresse 0, le  l'adresse 62, le 1e secteur du  cylindre l'adresse 63 (s’il y a 63 secteurs par cylindres) et ainsi de suite. Le mode LBA permet donc d'adresser 2^28*512=137438953472 octets soit 128 Go.

Utilisation, différences par rapport au mode CHS 
L'utilisation du mode LBA n'est pas beaucoup plus compliquée que le mode CHS, les différences peuvent être résumées de la manière suivante :

Pour le reste, tout est identique.

Conversion d'une adresse CHS en adresse LBA et inversement 
adresse logique = (numéro de secteur - 1) + (numéro de tête * nombre de secteurs par cylindre) + (numéro de cylindre * nombre de secteurs par cylindre * nombre de têtes)

 secteur CHS = entier(1 + reste de (adresse logique / nombre de secteurs par pistes))
 tête CHS = entier(reste de ((adresse logique / nombre de secteurs par pistes) / nombre de têtes))
 piste CHS = entier(adresse logique / (nombre de secteurs par cylindre * nombre de faces))

Considérons lba l'adresse logique, c le cylindre, h la tête, s le secteur, H le nombre de têtes et S le nombre de secteurs par cylindre, voici les mêmes formules dans une syntaxe de style C (types entiers) :

 lba = (s - 1) + (h * S) + (c * S * H);
 s = 1 + (lba% S);
 h = (lba / S)% H;
 c = lba / (S * H);

Évolution du standard 
Depuis 2003, le standard d'interface de connexion des mémoires de masse évolue peu à peu de l'IDE vers le Serial ATA aussi appelé S-ATA ou SATA.

Notes et références

Bibliographie 
 Programmation d'ATA/ATAPI
 
 .
 standard ATA-ATAPI

 Codes sources
 .
 ATADRVR v14C, Hale Landis, le webmaster de ATA-ATAPI.com

 LBA
 T13 Standard ATA/ATAPI.
 T10 standard SCSI et MMC

Voir aussi

Articles connexes 
 S-ATA
 ATAPI
 Commande SCSI

Liens externes 
 Détail des brochages des connecteurs IDE
 explication détaillée du standard ATA

Périphérique (informatique)
Connectique
Bus informatique