LA INTERFAZ ATA/IDE II–PEI 09/10 ______________________________________________________________________ TRABAJO 4.1 – LA INTERFAZ ATA/IDE Gabriel Fernández Díaz y Rafael Casanova Morera En este documento se describirá la interfaz ATA/IDE, incluyendo su evolución más reciente el Serial ATA y la conexión de varios discos en RAID. 1. Introducción En la mayoría de los PC’s actuales, se hace uso de la interfaz ATA para el intercambio de información entre las unidades de disco y el resto del sistema, lo que hace al conocimiento de esta interfaz imprescindible para los profesionales de las ciencias de la información. 2. Origen y actualidad de la interfaz ATA La interfaz ATA (Advanced Technology Attachment) se diseñó originalmente como una extensión del bus ISA, presente en los ordenadores IBM AT y compatibles. Se suele usar también el término IDE (Integrated Drive Electronics) para referirse a la interfaz ATA, debido a que el controlador hardware del dispositivo ATA se encuentra situado en el propio dispositivo, en vez de en la placa base. A día de hoy, el comité encargado de sacar nuevas revisiones del estándar ATA es un grupo formado por representantes de los principales fabricantes de ordenadores, discos y otros componentes, llamado Technical Committee T13, que forma parte del International Committee on Information Technology Standards (INCITS). Hasta la fecha se han publicado siete revisiones del estándar (ATA-1, ATA-2, etc.) y se está trabajando en la octava. Cada una de ellas es una ampliación de la anterior (manteniendo la retrocompatibilidad) en la que se ha mejorado fundamentalmente los siguientes aspectos: Un canal secundario de dos dispositivos, mayor cantidad de espacio direccionable, mayor velocidad de transmisión, soporte de DMA (Direct Memory Access), mayor seguridad, mayor fiabilidad, la inclusión del juego de comandos ATAPI (ATA Packet Interface) y la especificación del Serial ATA. 3. Características de la interfaz ATA 3.1. General Aunque existen varias conexiones físicas diferentes (ATA, SATA, ATA para portátiles), la interfaz presentada al software es prácticamente la misma. Algunas de las características de las interfaces ATA son: Comandos ATA: El ATA tiene un ancho de datos de 16 bits (aparte de las líneas de control, estado y de dirección de registro), aunque ya en los primeros estándares ATA una sola dirección de disco tiene 28 bits. Para solventar esto, existe una serie de registros de 8 bits que pueden ser direccionados, leídos y alterados por el ordenador para preparar el comando ATA antes de su ejecución. Típicamente, un comando ATA estará formado por: varias escrituras en registros para inicializar el comando; la escritura del código de instrucción en el registro COMMAND para lanzar la ejecución de la instrucción; un periodo de espera a que el dispositivo lleve a cabo la instrucción y LA INTERFAZ ATA/IDE II–PEI 09/10 ______________________________________________________________________ lance una interrupción; y la lectura de otros registros (y memoria si fue una instrucción DMA) para ver el resultado del comando. Direccionamiento: Un dispositivo ATA funciona como un array de bloques de 512 bytes. Para acceder a uno en concreto, existen 3 métodos de direccionamiento diferentes: CHS (Cilinder-Head-Sector), LBA (Logical Block Address) de 28 bits y LBA de 48 bits. El direccionamiento CHS es el más antiguo de los tres y se basa en la estructura física de los primeros discos duros. En él, la dirección del bloque consta de tres coordenadas: el número de cilindro, el número de cabeza lectora y el sector. El método de direccionamiento LBA trata al disco duro directamente como un array de bloques de datos, de modo de en teoría con direcciones de 28 bits era posible direccionar hasta 228 bloques de 512 bytes (128 GB), máximo que durante mucho tiempo no se pudo aprovechar porque la BIOS trabajaban con el dispositivo siempre con direcciones CHS aún cuando recibiera una dirección LBA (y permitiendo el método de conversión un máximo de 7'84GB direccionables). Cuando los discos duros fueron a sobrepasar esa barrera, los fabricantes de BIOS extendieron la interfaz de las interrupciones de manejo de disco de forma de que ahora se permite direccionar hasta 264 bloques (aproximadamente 8'6x109 TB de información). Cuando los discos duros iban a llegar a la barrera de los 128 GB, la revisión de la interfaz ATA-6 incluyó el direccionamiento LBA de 48 bits, de modo que actualmente es posible direccionar hasta 128 PB de información. ATAPI: El ATAPI o AT Attachment Packet Interface es un juego de comandos extendido creado para soportar que dispositivos tales como unidades de CD-ROMs y otros tipos de lectores de medios de almacenamiento externo. Debemos tener claro que los dispositivos que soportan ATAPI funcionan de una manera bastante diferente al de los dispositivos ATA. En los dispositivos que soportan ATAPI la mayoría de las operaciones se hace mediante el comando PACKET, el cual indica al dispositivo que se le va a pasar un paquete de datos que contiene el comando a ejecutar. En cambio, la mayoría de comandos ATA están prohibidos para estos dispositivos, de igual manera de que el comando PACKET está prohibido para los dispositivos ATA. Los comandos que se envían mediante PACKET son comandos SCSI, y no quedan definidos en el estándar ATA. Seguridad ATA: Con la revisión ATA-3 del estándar se incluyeron comandos específicos de seguridad para los dispositivos ATA. Mediante estos comandos, se puede establecer una contraseña de usuario que permite bloquear y desbloquear el disco y una contraseña maestra (pensada para administradores de equipos) que permite desbloquearlo. Una vez establecida, la contraseña ha de ser enviada al dispositivo antes que los comandos de acceso y modificación de la información contenida en él. En el estándar queda especificado que si se producen 5 intentos fallidos de desbloquear el disco, será necesario reiniciar el hardware antes de permitir nuevos intentos. En algunos sistemas, al introducir una contraseña en la BIOS para el arranque del ordenador, la BIOS se encarga de establecerla también como la contraseña de los discos duros, de manera que no será posible acceder a ellos sin contraseña incluso cambiándolos de ordenador. Host Protected Area: Con el estándar ATA-4 se incluyó la posibilidad de establecer un máximo a las direcciones a las que se permite acceder mediante los comandos LA INTERFAZ ATA/IDE II–PEI 09/10 ______________________________________________________________________ normales de acceso y modificación de la información almacenada en el dispositivo. Esto permite crear una "partición" segura en las direcciones más altas de la unidad de disco a la que sólo es posible acceder mediante un juego de comandos llamado PARTIES (Protected Area Run Time Interface Extension Services). La idea detrás de todo esto es permitir a los fabricantes de ordenadores incluir en el propio disco la información necesaria para restaurar el sistema al estado en el que estaba al ser recién comprado, de manera que sea posible recuperar el ordenador desde la BIOS. Es posible conocer las características de un dispositivo ATA mediante el comando IDENTIFY DRIVE, a la que el dispositivo responde aportando información como el número de bloques LBA direccionables, el número físico y lógico de cilindros, discos y sectores, los modos y velocidades de transferencia soportados, el fabricante, el número de modelo, el número de firmware, el número de serie, el tamaño y tipo de buffer, etc. Algunos de estos datos son críticos para el funcionamiento del dispositivo. Las BIOS actuales hacen uso de este comando para auto configurarse cuando detectan un dispositivo ATA. 3.2. Parallel ATA El ATA paralelo o PATA (Parallel-ATA) fue la primera interfaz física ATA disponible. En él, los dispositivos presentan una disposición de 40 pines (realmente 39, salvo excepciones, pues el pin 20 suele estar quitado para evitar que el cable se conecte al revés) que se conectan a una disposición de pines análoga en la placa base mediante un cable de 40 conductores. Con cada cable se pueden conectar hasta 2 dispositivos ATA, asumiendo uno el rol de maestro (o dispositivo 0) y otro el de esclavo (o dispositivo 1). Cuando se prepara una instrucción quedan modificados los registros de comando de ambos, pero solo el seleccionado ejecutará la instrucción. Por esto es necesario de que el dispositivo conozca su rol, ya sea mediante un jumper o mediante la selección por cable. En la selección por cable el maestro recibe una señal por el pin 28, que no recibe el esclavo porque en los conectores modernos se elimina el cable conductor de dicho pin entre el maestro y el esclavo. Por tanto sólo puede operar un dispositivo cada vez, por lo que es buena idea conectar los dispositivos en cables diferentes si es posible hacerlo. Al tener el cable conector una gran cantidad de conductores, estos se vuelven bastante sensibles al ruido eléctrico y podrían llegar a interferir unos sobre otros. Esto fue un problema para los modos de alta velocidad de transferencia de datos, por lo que se hizo obligatorio el uso de un nuevo cable para dispositivos que soportasen DMA/66 o superior. Este cable según el estándar es de 80 conductores y sitúa una conexión a tierra entre cada uno de los conductores de señal, de manera que reduce la interferencia mutua. Además tiene la conexión con el pin 20 bloqueada, elimina el conductor del pin 28 entre el maestro y el esclavo; y tiene un código de colores que indica la orientación del pin 1 y los conectores que van a la placa base, al maestro y al esclavo. Los disco duros de 2'5 pulgadas utilizan un cable de 44 pines en la cual se le envía la electricidad necesaria al disco a través de los pines 41, 42 y 43 en vez de con un cable aparte. La velocidad máxima soportada por el ATA paralelo es DMA/133 (133 MB/s). LA INTERFAZ ATA/IDE II–PEI 09/10 ______________________________________________________________________ 3.3. Serial ATA Como a medida que se incrementaba la velocidad se hacía más difícil transmitir las señales por el cable paralelo, se diseño una nueva interfaz, Serial ATA o SATA, donde los datos se van enviando bit a bit. Aunque cada transmisión es de menor ancho de datos, se puede realizar a una velocidad mucho mayor debido al uso de un par de cables para transmitir un bit de manera diferencial, de forma que si un cable está a un voltaje v, su par se encontrará a un voltaje -v; a los bajos voltajes de operación (±0.25 V); y al sistema de codificación 8b/10b usado que balancea la cantidad de 0 y 1 enviados mejorando la fiabilidad. La interfaz SATA tiene 7 pines, un par para el dispositivo, otro para el host (la placa base) y tres tierras, una entre cada par de cables de señal. Sólo se conecta un dispositivo por cable, cuyos extremos se podrán enchufar indistintamente al dispositivo o a la placa base. También se define un nuevo estándar para el cable de alimentación, proporcionando éste más voltajes diferentes. El diseño de ambos cables y donde van conectados es tal que lo primero que se conectan son las tomas de tierra, de forma que se pueden conectar con el ordenador en funcionamiento (Hot-Plugging). Si bien la interfaz SATA es físicamente diferente a la PATA, es compatible a nivel de software, de manera de que el controlador en el dispositivo y el adaptador en el host han de ser capaces de emular el funcionamiento de un dispositivo ATA-5. Incluso se pueden usar adaptadores especiales que permiten conectar un dispositivo PATA en un terminal SATA y otros que permiten lo opuesto. Asimismo en la interfaz SATA se contempla una nueva interfaz software llamada AHCI (Advanced Host Controller Interface) que se aleja de los protocolos del bus ISA para permitir mejoras como el hot plugging, control de energía, NCQ (Native Command Queuing), etcétera; siempre y cuando estén soportadas a su vez por el chipset de la placa base. Actualmente hay contempladas tres velocidades, SATA 1.5 Gbit/s (también conocido como SATA-150, por su velocidad de transferencia de 150MB/s), SATA 3 Gbit/s (SATA- 300 o SATA II, a 300MB/s) y SATA 6 Gbit/s (SATA-600, 600MB/s). En 2004 se lanzó el estándar eSATA (external SATA), fijando las especificaciones para el uso de SATA 300 como interfaz para conectar dispositivos externos, a través de un nuevo cable. 4. RAID Un RAID (Redundant Array of Independent/Inexpensive disks) es un conjunto de discos controlados de tal forma que parezcan uno solo. Esta técnica fue desarrollada en la universidad de Berkeley con el fin de poder usar un montón de discos baratos como uno solo de mayor tamaño y velocidad. El problema inicial de este sistema reside en que si un disco falla el sistema entero se corrompe, y como cada disco tiene una probabilidad de fallo, ergo la probabilidad de fallo del sistema RAID será bastante mayor. Como solución se propuso los siguientes sistemas de RAID con diversos grados de seguridad, capacidad y velocidad: • RAID0 (Striping): Se unen dos o más discos de los que se lee y se escribe a la vez repartiendo la información entre ellos, lo cual nos ofrece un disco virtualmente más grande y rápido. Este modo de RAID no tiene ninguna protección contra fallos extras, por lo tanto si un disco falla todo el sistema se daña. LA INTERFAZ ATA/IDE II–PEI 09/10 ______________________________________________________________________ • RAID1 (Mirroring): La misma información se escribe en dos o más discos, lo cual nos da la capacidad de un solo disco a cambio de mucha seguridad, ya que a menos que fallen todas las unidades a la vez no se perderá información. • RAID2 (Bit-level ECC): La información se divide bit a bit en varios discos mientras que en otros se escribe un código corrector de errores ECC. Un ejemplo seria escribir datos en dos discos y usar otro para guardar redundancia, por la tanto si falla uno de los primeros se usaría la redundancia del tercero y el superviviente para regenerar al caído; o si falla el disco de redundancia se puede volver a generar de nuevo. • RAID3 (Striped with parity): La información se divide al igual que el RAID0 pero usa discos extras para almacenar paridad, requiriendo como mínimo 3 discos. Esto mejora la integridad de los datos y la tolerancia a errores a costa de espacio. • RAID4 (Blocked data with parity): Este sistema funciona igual que el RAID3, pero guarda la información en bloques más largos, lo que permite una velocidad de lectura mayor. • RAID5 (Blocked data with distributed parity): Similar al RAID4, pero divide las listas de paridad por una serie de discos. • RAID6 Blocked data with double distributed parity): Similar al RAID5, pero usa dos algoritmos distintos para guardad la información de paridad en dos discos distintos, por lo tanto se necesitan 4 discos como mínimo. Los RAID son creados y administrados normalmente a nivel de hardware, lo cual presenta a los usuarios y programadores la ilusión de un solo disco. Actualmente la gran mayoría de las placas madres para PC suelen dar soporte para RAID 0 y 1 como mínimo, pero en el caso de que la placa madre no soporte el RAID deseado hay tarjetas especiales para ello. Por otra parte, se puede componer un RAID mediante software pero no es recomendable. 5. Conclusiones El formato ATA alcanzado la superioridad en el mercado por su alta compatibilidad con la mayoría de los dispositivos, inclusive los pasados, a la vez de que se ha ido actualizando según lo requería el aumento de las prestaciones de los medios de almacenamiento. Además, su cercanía con la arquitectura del bus permite unos costes de desarrollo y producción relativamente bajos. Por tanto es de suponer que mientras se mantengan los trabajos de actualización de la interfaz, ésta seguirá siendo la preferida por los fabricantes de componentes para ordenadores personales. A su vez los sistemas RAID también son útiles ya que ofrecen mayor espacio del almacenamiento, velocidad de acceso y seguridad a un precio menor que un solo disco de las mismas características. 6. Bibliografía Scott Mueller. Upgrading and Reparing PCs. Editorial Que. http://t13.org/Documents/UploadedDocuments/project/d1410r3b-ATA-ATAPI-6.pdf http://en.wikipedia.org/wiki/Parallel_ATA http://en.wikipedia.org/wiki/Serial_ATA http://wiki.osdev.org/ATA_PIO_Mode http://en.wikipedia.org/wiki/8b/10b_encoding http://en.wikipedia.org/wiki/Native_command_queuing