INTERFACES DE ENTRADA/SALIDA II–PEI 09/10 ______________________________________________________________________ 5.1 – INTERFACES DE ENTRADA/SALIDA Borja Brisson Vega, Jonán Cruz Martín Estudiaremos qué son las interfaces de entrada/salida y para qué sirven. Veremos su importancia y algunos factores que determinan su diseño. Revisaremos brevemente el USB y el IEEE 1394, y los puertos paralelo y serie (hoy en día en desuso). 1. Introducción Con la evolución de los computadores, se usa cada vez más dispositivos externos, y por ello hay que diseñar formas de conectarlos. Existen dos tipos de conexiones, serie y paralelo (si se transmite un bit o varios bits al mismo tiempo, respectivamente). Hay puertos que se conocen por estos nombres, el puerto serie y el puerto paralelo, pero han caído en desuso. La tendencia ha sido desarrollar interfaces seriales de altas prestaciones, que proporcionen alta velocidad y características de Plug & Play. Las dos interfaces seriales de altas prestaciones más extendidas son el USB y el IEEE 1394, cuyo funcionamiento se detallará más adelante. El desarrollo de estas nuevas interfaces de altas prestaciones viene motivado por la creciente necesidad de unificar los puertos existentes en los computadores, eliminando la gran diversidad de puertos existente en el pasado; así como permitir la conexión de dispositivos en caliente (hot-swapping), sin necesidad de apagar la máquina, y con capacidades Plug & Play. Un último motivo es el deseo de mayores velocidades de transferencia, que son proporcionadas gracias al diseño de interfaces seriales y al incremento de la frecuencia de sus buses. 2. Generalidades sobre los puertos de entrada/salida La mayoría de los computadores actuales hacen un uso intensivo de dispositivos periféricos. Para poder conectar los periféricos, los computadores disponen de conexiones, llamadas puertos, que conectan el periférico con la circuitería de la palaca base, permitiendo la comunicación. En este ámbito, por “interfaz de E/S1” se denomina al conjunto de puertos, buses y protocolos de bus que permiten la conexión de periféricos al computador. Nótese que se hace referencia a la conexión entre el periférico y el computador, y al bus que usa esta conexión, pero no a los buses internos de la placa que conectan el puerto de E/S con otros chips de la placa. A este nivel, se distingue dos clases de interfaz: interfaces paralelas e interfaces en 2 serie . Las interfaces paralelas son aquéllas en las que varias líneas conectan el periférico al computador, y se transmite información por todas las líneas simultáneamente, es decir, “en paralelo”. Por contra, las interfaces en serie sólo disponen de una línea de transmisión de datos, y los bits se transmiten de uno en uno. Por ejemplo, una interfaz paralela de 8 líneas transmitiría 8 bits simultáneamente, mientras que una interfaz serie tendría que transmitir cada bit individualmente. 3. Estándar de puertos serie y paralelo A lo largo de la historia la mayoría de los puertos de comunicación de los PCs han sido los puertos serie y paralelo, teniendo aún un papel importante en ellos aunque estén siendo sustituidos por otros diseños recientes. Los puertos seriales, también conocimos como puerto COM o communication, fueron diseñados para permitir la comunicación bidireccional entre el computador y los dispositivos. 1 2 Entrada/salida. A veces llamadas “interfaces seriales” a causa del anglicismo “serial interface”. 1 INTERFACES DE ENTRADA/SALIDA II–PEI 09/10 ______________________________________________________________________ Los nuevos estándar de os puertos paralelos permiten una comunicación bidireccional a alta velocidad. 3.1. Puerto serie Los puertos seriales están formados por una interfaz asíncrona diseñada principalmente para la comunicación entre sistemas. La transmisión de los caracteres se realiza mediante el estándar start-and-stop, en el cual los bytes son enmarcados entre bits de comprobación. Toda transferencia comienza con un bit 0, llamado start bit, indicando el comienzo de la misma. Una vez enviados los 8 bits del carácter, les sigue 1 ó 2 bits confirmando el fin del carácter. Al tratarse de un método asíncrono necesita de estos bits extra que proporcionan un incremento del 20%. Para la realización de esta transmisión-codificación es necesario que se divida los bytes a transmitir en los 8 bits que lo componen y una vez transmitidos los vuelva a formar el byte. Este proceso lo realiza el UART (Universal Asynchronous Receiver/Transmitter) considerado el núcleo de los puertos seriales. Otra de las funciones del UART es la de manejar las interrupciones de los dispositivos. Los puertos de alta velocidad se lograron con la incorporación al puerto de búferes. Desde la mitad de 1990 la funcionalidad de los UART se encuentra en un único chip situado en la placa base llamado Super I/O. Este componente contenía los UARTs de los puertos series, como los controladores para los puerto paralelos multimodos, los controladores del teclado, etc. Este chip emulaba como si todas sus funcionalidades se encontrasen en tarjetas de expansión, como era hasta entonces, lo que permitía la reutilización del software. Con el desarrollo de la capacidad de integración el chip Super I/O formó parte del puerto Sur de la placa, lo que no implicó ningún cambio para el software del sistema. 3.2. Puerto paralelo Los puertos paralelos están formados por 8 líneas por las cuales se trasmiten 8 bits simultáneamente. Aunque en un principio fueron diseñados para la conexión con impresoras, a día de hoy pueden encontrarse en cualquier sistema de transmisión de datos, eso sí de corto alcance. Los puertos paralelos se rigen por el estándar IEEE 1284, publicado en 1994, el cual define todo los aspectos físicos del puerto: especificación de los modos de transferencia y las especificaciones físicas como eléctricas. Inicialmente este estándar únicamente trataba al hardware y a las líneas de control de este, por lo que se tuvo que añadir una rama que definiese la interfaz software del puerto. Esta interfaz fue construida por el comité 1284.3, creado únicamente para este fin. Además de todo ello, el estándar incluye la especificación de los conectores del puerto, como la definición de cuatro tipos de puertos y cinco modos de funcionamiento. Los tipos de puertos paralelos: • SPP (Standard Parallel Port): Se trata del primer tipo de Puerto el cual era capaz de enviar 8 bits y de recibir únicamente 4 bits. • Bidireccional: Con este puerto se logró enviar y recibir 8 bits mediante la definición de una nueva línea que marcaba el sentido de la transmisión. • EPP (Enhanced Parallel Port): fueron creados en 1991 por Intel, Xircom y Zenith, y permiten la transferencia de muchos más datos por segundo. Fueron diseñados específicamente para dispositivos que no fueran impresoras. 2 INTERFACES DE ENTRADA/SALIDA II–PEI 09/10 ______________________________________________________________________ • ECP (Enhanced Capabilities Port): Creado por Microsoft y Hewlett está orientado a mejorar la funcionalidad y velocidad de las impresoras mediante el uso de canales de DMA. Para la comunicación entre puertos ECP/EPP es necesario la utilización de cables especiales para poder aprovechar el ratio máximo de transferencia. 4. Comparación entre paralelo y serie A primera vista, un puerto paralelo puede parecer más rápido que un puerto serie, ya que es capaz de transmitir más información en menos tiempo, gracias al uso de múltiples líneas de datos. Y ciertamente una conexión paralela es más rápida que una conexión en serie a igual frecuencia de reloj. Las conexiones paralelas sufren de varios problemas, especialmente el sesgo de señal (signal skew) y la fluctuación de la señal (signal jitter). El sesgo de señal consiste en que las señales no llegan todas al mismo tiempo, y la fluctuación de la señal es la tendencia de la señal a fluctuar arriba y abajo por un periodo corto de tiempo antes de estabilizarse en el voltaje emitido. Por esto, los cables paralelos se restringen a cables cortos y no muy altas frecuencias, mientras que la frecuencia de los seriales se puede incrementar más. Además, a altas frecuencias de reloj, las señales en una conexión paralela interfieren entre sí. Esto hace que las conexiones paralelas sean más caras, no sólo porque hacen falta más cables, sino porque deben estar protegidos de interferencias. Por ello, tanto la aparición de interferencias como el elevado coste hacen que sea más factible incrementar la frecuencia de una interfaz serie que de una paralela. 5. Motivación para las interfaces IEEE 1394 y USB Antiguamente, gran parte de los periféricos usaban una interfaz específica y diferente, por lo que era necesario disponer de muchos tipos de puerto distintos en un computador. Además, la necesidad de Plug & Play para poder usar dispositivos sin tener que configurarlos previamente era creciente. Por estos motivos se desarrollaron interfaces seriales de altas prestaciones, como el USB y el IEEE 1394, que proporcionaran altas velocidades y Plug & Play en una interfaz universal3. Estas interfaces son seriales por la necesidad de alta velocidad. 6. Conceptos y funcionamiento de la interfaz USB La interfaz USB (Universal Serial Bus) es una interfaz serial con 4 líneas de conexión, 2 para transmisión de datos y las otras 2 para alimentación y tierra. Hay dos especificaciones, la 1.x (con 1.0 y 1.1) y la 2.0. La 1.1 consiste en una revisión de la 1.0 en lo referente a los hubs4 y algunos otros aspectos. La especificación 2.0 sí introduce grandes cambios respecto a la 1.1, pero todavía permite retrocompatibilidad con dispositivos 1.x. La mayor diferencia entre 1.x y 2.0 es la velocidad de transferencia: de 12 Mbps a 480 Mbps, respectivamente. Además, la 1.x requería un PC como intermediario en las transferencias, y la 2.0 elimina esa necesidad, pudiendo transmitir de dispositivo a dispositivo. La transmisión de datos se realiza mediante las líneas D+ y D-, las cuales implementan la sincronización del dispositivo mediante la codificación NRZI, Non Return to Zero Inverted. Esta codificación mantiene el nivel de voltaje cuando se transmite un 1 y cambia de polaridad cuando transmitimos un 0. Unas de las imposibilidades que impone es la aparición de seis 3 Que es igual para todos los dispositivos y todos los computadores. Un hub, o acumulador, es un aparato que permite conectar varios dispositivos USB a un único puerto. Se pueden conectar hubs en cascada (conectar hubs a otros hubs). 4 3 INTERFACES DE ENTRADA/SALIDA II–PEI 09/10 ______________________________________________________________________ ceros seguidos, para evitar problemas de sincronización. En la transferencia se crean canales de comunicación virtuales (pipes) creados por el host ocupando cada uno una parte del ancho de banda disponible. Todos los pipes poseen un punto de final que puede encontrarse en un mismo dispositivo. El bus USB permite hasta 127 dispositivos USB conectados a un único puerto, para lo cual se deberán usar hubs. Sin embargo, deberán compartir el ancho de banda y la potencia de alimentación entre todos los dispositivos. En estos casos conviene usar hubs con adaptador de corriente propio (si no, podría no tener corriente suficiente para todos los dispositivos, lo que causaría un mal funcionamiento). La conexión de dispositvos sigue un esquema encadenado, que establece la prioridad entre ellos. El hub proporciona la interfaz con el exterior y además se encarga de distribuir/controlar el tráfico entre el host y los dispositivos. Todo hub, al igual que los dispositivos, ha de ser configurados y poseer una dirección propia. El USB identifica automáticamente el tipo de dispositivo y es hot-swappable. Para el soporte Plug & Play se definen clases de dispositivos que permiten identificarlo y elegir un controlador genérico para el dispositivo. También se puede cargar un driver específico del fabricante para disponer de más funciones, pero siempre se tiene un driver genérico. También hay diferentes tipos de conectores, aunque todos poseen 4 líneas: Series-A, Series-B, Mini-A y Mini-B. Normalmente, el tipo A es el conector usado para la conexión con el ordenador y el tipo B se utiliza para la conexión con el dispositivo. Los conectores mini son iguales, pero se distinguen en el color del conector y del socket, y la máquina los distingue por una señal de ID. 7. Conceptos y funcionamiento de la interfaz IEEE 1394 El estándar IEEE 13945 es otra interfaz de alta velocidad, con 3 revisiones: 1394 (original), 1394a y 1394b. El 1394a resuelve problemas de compatibilidad e interoperabilidad, pero mantiene la velocidad de hasta 400 Mbps. El 1394a usa 6 pines: 4 para datos y 2 para alimentación. Por su parte, el 1394b usa 9 pines y alcanza a lo sumo 800 Mbps. Usa cables de cobre, pero también permite fibra óptica y añade otras mejoras respecto al 1394a. Para 1394b hay dos tipos de conectores: beta (sólo 1394b) y conectores bilingües (soporte para dispositivos 1394a y 1394b). El FireWire especifica un conjunto de protocolos formado por tres capas para estandarizar la comunicación entre el computador y los periféricos conectados. • Capa física: Define los medios de transmisión permitidos al igual que las señales y las características eléctricas de cada. Esta capa se encarga de todo el aspecto físico, transformar las señales binarias en eléctricas, la velocidad de transmisión, conectores, arbitraje, etc. El arbitraje del FireWire está basado en la estructura tipo árbol con la que están organizados los distintos adaptadores. Esta capa determinará a un nodo como nodo raíz del árbol el cual actuará como árbitro central, procesando las distintas solicitudes de acceso al bus. Este arbitraje persigue una política equitativa evitando el monopolio de los dispositivos de mayor prioridad, para ello divide el tiempo de bus en intervalos. Al comienzo de un intervalo, cada nodo activa un bit de autorización de arbitraje, siendo los dispositivos que tengan activado este bit los que competirán por el bus. Cuando un nodo gana el acceso al bus el bit de este se desactivará y no volverá a activarse hasta que acabe el intervalo, evitando así acaparamiento del bus. Para completa el arbitraje, el 1394 implementa un arbitraje urgente que permite a un nodo acceder más de una vez en un mismo intervalo de forma limitada, es decir, como máximo podrá hacer uso del 75% del tiempo de intervalo. 5 También se le llama comercialmente i.LINK (acuñado por Sony) o FireWire (acuñado por Apple). 4 INTERFACES DE ENTRADA/SALIDA II–PEI 09/10 ______________________________________________________________________ • Capa de enlace: describe la transmisión de datos por medio de paquetes. El estándar 1394 estipula dos tipos de transmisión, asíncrona e isócrona. Asíncrono: se utiliza para datos que no necesitan una velocidad de transferencia fija. Isócrono: se utiliza con los dispositivos que generan datos de manera regular para garantizar cierta velocidad. • Capa de transacción: define un protocolo solicitud-respuesta que oculta los detalles de las capas inferiores. El 1394 permite hasta 63 dispositivos. Además, es Plug & Play y hot-swappable. Desde la primera versión, el 1394 no requiere un PC como intermediario para las transferencias. El 1394 es usado en dispositivos de alto ancho de banda, especialmente en aplicaciones de vídeo, sonido e imagen. Sin embargo, sigue sin estar tan extendido como el USB. Aun así, se encuentra gran variedad de dispositivos con 1394, especialmente discos duros. 8. Conclusiones La conexión de dispositivos externos a un computador se realiza mediante interfaces de E/S externas. Antiguamente existía gran variedad de puertos, pero la tendencia ha sido crear interfaces universales que sean usadas por todos los dispositivos. Esto elimina la necesidad de tener un tipo de interfaz para cada dispositivo distinto que se conecte. Además, el uso de interfaces seriales ha perdido incrementar la frecuencia de los buses drásticamente, ya que las interfaces seriales no presentan los problemas de las paralelas (deterioro de la señal). USB y IEEE 1394 son interfaces universales para dispositivos, y hoy en día todos los dispositivos se pueden conectar mediante alguna de estas dos interfaces. Ambas interfaces proporcionan velocidades de transferencia similares (en torno a los 400 Mbps), aunque nuevos estándares están en desarrollo. Tanto USB como IEEE 1394 proporcionan Plug & Play y hotswapping, de manera que se pueden conectar y desconectar dispositivos sin apagar la máquina, y el dispositivo será detectado automáticamente. USB tiene dos especificaciones, la 1.x, que es más antigua y lenta, y la 2.0. Hoy en día la mayor parte de los dispositivos, excepto algunos ratones y teclados, se conectan por 2.0. Además, los puertos USB 2.0 son compatibles con 1.x, sólo que no podrán alcanzar la velocidad del 1.x. De manera similar, IEEE 1394 tiene dos especificaciones, la 1394a y la 1394b. Aunque ambas usan puertos diferentes, existe un tipo de puerto para la revisión 1394b que permite la conexión de dispositivos 1394a (socket bilingüe). Bibliografía [1] William Stallings. Organización y arquitectura de computadores. Pearson Educación, 2005 (7ª ed.). 5