la interfaz ata/ide

Anuncio
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
Descargar