FIREWIRE,
ESTÁNDAR IEEE 1394
INTRODUCCIÓN
El estándar
IEEE 1394-1995 o bus HPSB (High Performance Serial Bus) describe un bus serie
Plug&Play de alta velocidad utilizable tanto sobre placa (para interconexión
de tarjetas sobre el mismo panel posterior) como sobre cable (para interconexión
de tarjetas en distinto panel posterior o entre periféricos externos). Este
estándar está a su vez basado en el estándar ISO/IEC 13213:1994 (ANSI/IEEE
1212), que describe una arquitectura de comunicación entre buses de sistemas
microcomputadores a través de Registros de Comando y Estado (CSR).
El bus 1394
está basado en un bus original de Apple denominado FireWire, término utilizado
todavía por muchos fabricantes, mientras que otros han adoptado el nombre
i.Link, que es marca registrada de Sony Corp.
IEEE1394
permite la conexión tanto de dispositivos digitales multimedia de altas prestaciones,
como grabadoras de vídeo, televisores, equipos de música, consolas de mezclas,
etc, como de dispositivos tradicionales de PC como discos duros, CD-ROMs,
impresoras, escáneres, etc. A diferencia de otros buses donde la comunicación
depende de un control centralizado (por ejemplo, en un PC), IEEE 1394 soporta
un modelo peer-to-peer, en la que cualquier dispositivo puede comunicarse
directamente con cualquier otro, siempre que utilicen los mismos protocolos.
arriba
TOPOLOGÍA
- Cada bus soporta hasta
63 dispositivos y se puede configurar en cadena y/o árbol. Esto quiere decir
que de cada dispositivo pueden conectarse uno (cadena) o más (árbol) dispositivos
(red no cíclica, no pueden crear bucles).
- La conexión física
es punto a punto, con un espaciado de hasta 4.5 metros como máximo
entre dispositivos.
- Pueden haber hasta
16 tramos de cable (conexiones) entre Nodos (saltos finitos), lo que permite
la conexión directa de hasta 16 Nodos en Cadena (hasta 72 metros de cable
en total).
- De cada Nodo pueden
conectarse varias ramas (conexión en árbol). Los dispositivos típicos
dispondrán de 3 conectores, aunque el estándar prevé desde 1 hasta un máximo
de 16. Para poder
establecer una cadena, es necesario que los dispositivos dispongan por lo
menos de 2 conectores, mientras que para establecer una conexión en árbol,
el dispositivo debe tener al menos 3 conectores. También pueden haber dispositivos
con un sólo conector, por lo que sólo pueden conectarse como final de cadena.
- Los Bridges se utilizan
para interconectar buses iguales o distintos:
- Un controlador
1394 PCI es un Bridge entre los buses 1394 y PCI, que soporta por tanto
hasta 63 nodos (dispositivos).
- Se pueden utilizar
Bridges entre buses 1394 y SCSI o entre buses 1394-cable y 1394-backpanel,
etc.
- Se pueden mezclar dispositivos
de distintas velocidades, aunque la velocidad del bus será la del dispositivo
más lento. Se establecen 3 opciones de velocidad, a 98.304, 196.608 y 393.216
Mbps respectivamente. Estas velocidades se redondean, respectivamente, a
100, 200 y 400 Mbps, y el estándar los denomina oficialmente S100, S200
y S400. Actualmente está en desarrollo un nuevo estándar a 800 Mbps, y en
un futuro está previsto superar el Gbps.
- Algunos controladores
pueden soportar funciones de Mapa de Topología y de Velocidad, para permitir
transferencias a distintas velocidades entre distintas parejas de dispositivos.
- Los enlaces punto-a-punto,
la transmisión diferencial, la codificación Data-Strobe y la resincronización
de señales en cada nodo hacen de 1394 un bus muy robusto a nivel de integridad
de señal, lo que hace posible alcanzar fiablemente altas velocidades de
transmisión.
- En cuanto a cables
y conectores, inicialmente se definió la conexión a 6 hilos, y posteriormente
(IEEE-1394a) se ha definido una conexión adicional a 4 hilos que pueden
utilizar dispositivos que no se alimentan desde el propio bus. Los cables
establecidos para cada caso son:
- El cable apantallado
de 4 conductores (2 pares twisteados y apantallados para señal).
- El cable apantallado
de 6 conductores (2 pares twisteados y apantallados para señal + 1 par
twisteado para alimentación y masa). Los dispositivos con aislamiento
galvánico pueden alimentarse a través de estos hilos de alimentación
del bus.

arriba
ARQUITECTURA
Capa
física:
- El bus aparece como
un mapa de memoria, con cada nodo ocupando un rango de direcciones.
- La configuración automática
se realiza cada vez que se añade un dispositivo, cambiando el mapa de memoria.
- Los dispositivos y
sus recursos internos se selección anmediante un direccionamiento directo
y jerárquico con 64 bits: estándar de direccionamiento IEEE1212.
- 64 bits: 16 ExaBytes
de espacio de memoria
- Node ID (identificador
de nodo): 16 bits:
- Bus ID (dirección
de bus): 10 bits = 1024 buses en un sistema.
- Physical ID
(dirección de nodo): 6 bits = 64 nodos por bus.
- Node OFFSET (espacio
de nodo): 48 bits = 256 Terabytes de espacio por nodo. Direcciona mediante
los 48 bits menos significativos de la dirección total de 64 bits. Este
espacio se divide en:
- Espacio Inicial
de Memoria.
- Espacio Privado.
- Espacio Inicial
de Registro.
- Espacio Inicial
de Unidad.
- De ellos, el Espacio
Inicial de Registro es un espacio de 2 KB con dirección base FFFF F000
0000 hex, que está reservado para aquellos recursos que deben estar
accesibles inmediatamente después de una inicialización (reset) del
bus.
Node ID, Bus ID, Physical
ID: Los 16 bits más significativos de la dirección total de 64 bits identifican
un único nodo de entre todos los nodos que forman parte de los distintos buses
del sistema. Los 10 bits más significativos de esta dirección son los mismos
para todos los nodos pertenecientes a un mismo bus, cuyo valor se denomina
Bus ID, mientras que los 6 bits menos significativos identifican un único
nodo perteneciente a dicho bus, y se denomina Physical ID. Esta dirección
Physical ID se asigna a cada nodo como parte del proceso de inicialización
del bus (los nodos no se configuran manualmente).
La existencia de varios
buses en un mismo sistema precisa de unos elementos (Bridges) para controlar
y gestionar el flujo de información entre los mismos. Se pueden utilizar Bridges
para aumentar el número de nodos más allá de 64, o para dividir el tráfico
del bus en varios segmentos independientes, lo que permite utilizar más eficientemente
el ancho de banda disponible.
En el caso habitual, una
controladora PCI es un Bridge que podrá soportar por lo tanto hasta 64 dispositivos
directamente, sin necesidad de hubs intermedios.
Asignación de dirección
física (Physical ID): Cada vez que se enciende o se reinicia un bridge, y
cada vez que se añade o se quita un nodo del bus, bien sea por conexión/desconexión
física o por encendido/apagado del mismo, se asignan direcciones físicas a
cada nodo. Los dispositivos no disponen de conmutadores de configuración,
y además se soporta la conexión en caliente (hot-plug). La parte física que
gestiona el interfaz 1394 en los dispositivos se denomina PHY, los cuales
implementan la función de Configuración Automática de la Red que entre otras
cosas gestiona el protocolo de asignación de direcciones físicas
Capa
de enlace:
Transmisión
de paquetes. Dos tipos de tansmisión:
- Transferencias isócronas:
se garantiza una velocidad de transmisión predeterminada y garantizada mediante
el envío de paquetes de duración 125 µs (ciclo), que se desglosan en un
máximo de 64 canales -uno por dispositivo-. Un Canal Isócrono es una relación
entre nodos que forman un grupo, en el que hay Transmisores (Talkers) y
Receptores (Listeners). Cada grupo (canal) se identifica por un número entre
0 y 63. No se requiere confirmación. Se envía una cantidad arbitraria de
datos a intervalos regulares a un nodo destino.
- Son transferencias
que tiene garantizada una tasa de transferencia de hasta el 80% del
ancho disponible.
- Hay un nodo especial
que es el controlador de recursos isócronos (isochronous resource manager)
que puede ser o no el nodo raíz.
- El ancho de banda
que un dispositivo isócrono puede obtener está sólo limitado por el
ancho de banda ya ocupado por otros dispositivos isócronos.
- Pueden ser transferencias
de difusión (broadcast).
- No incluyen corrección
de errores.
- Transferencias asíncronas:
En modo asíncrono, los datos y la información de la capa de transacción
se envía a una determinada dirección y posteriormente se recibe un mensaje
de reconocimiento que confirma que la información ha llegado a su destino.
Sin ancho de banda garantizado y que se producen tras una competición limpia
por el bus.
- Incluyen diversos
tamaños de paquetes, en función de la velocidad del cable.
- Incluyen confirmación
de recepción y corrección de errores.

En cada uno de estos modos
de desarrolla a su vez tres fases distintas: secuencia de arbitraje, transmisión
del paquete de datos y reconocimiento. Durante la secuencia de arbitraje un
dispositivo que desee transmitir datos envía una petición de acceso al bus
a la capa física. Durante la fase de transmisión el dispositivo fuente transmite
un paquete de datos que contiene información de formato y transacción, la
dirección de los dispositivos fuente y destino y los datos. La fase de reconocimiento
consiste en el envío de un código de confirmación por parte del dispositivo
destino indicando que los datos fueron correctamente recibidos.
Más interesante resulta
la propuesta de FireWire de establecer asimismo comunicaciones en modo síncrono,
ya que de esta forma se garantiza una velocidad de transmisión predeterminada
y garantizada. Ello permite afrontar aplicaciones en el entorno multimedia,
en las cuales es preciso efectuar la transmisión en tiempo real, lo que a
su vez elimina la necesidad de instalar etapas de buffer.
Capa
de transacción:
- Operaciones de lectura
y escritura.
- Bloqeo de transferencias
asíncornas.

arriba
ARBITRAGE
- El tiempo de bus se
divide en ciclos de 125ms de periodo.
- El nodo raíz es el
maestro de ciclo.
- Un ciclo se inicia
con un paquete de inicio de ciclo que se difunde a todo el bus.
- Inmediatamente se
inician las transacciones isócronas (tiempo dividido en canales isócronos).
- Un dispositivo isócrono
debe estar autorizado por el manejador de recursos isócronos.
- Un dispositivo isócrono
puede tener asignado uno o más canales isócronos.
- Los dispositivos que
desean utilizar los recursos isócronos arbitran por el bus ->notifican a
su nodo padre que quieren el bus.
- Los dispositivos más
cercanos al nodo raíz conseguirán ganar el bus.
- Un dispositivo que
haya ganado un canal isócrono no competirá hasta el próximo ciclo por los
canales isócronos.
- Tras las transferencias
isócronas se inician las transferencias asíncronas con un mecanismo similar.


tramas
asíncronas a), b) y isíncronas c)
1394 utiliza
una señalización denominada "Data-Strobe", técnica patentada por STMicroelectronics,
que evita la necesidad de trasmisión de señal de reloj. La transmisión de
cada bit involucra un cambio en la línea de Data o en la de Strobe, pero nunca
en ambas, con lo que el reloj se recupera fácilmente mediante la función XOR
de ambas señales. Este sistema soporta a su vez la detección automática de
velocidad.
La transmisión
es diferencial y Semi-Duplex. Se utiliza un par twisteado para transmisión
de Dato y recepción de Strobe, y el otro par se usa para recepción de Dato
y transmisión de Strobe. Ambos pares son por tanto bidireccionales.

arriba
GESTIÓN
DEL BUS - CONFIGURACIÓN
- Reset del bus e inicialización:
- Ocurre cuando se
añade/elimina un nodo del bus.
- El nodo que detecta
la variación en la topología fija en TPA y TPB de todos sus puertos
un '1' lógico.
- Todos los nodos
lo transmiten y pasan a estado de inactividad.
- La inicialización
elimina la información de la topología del árbol.
- Identificación del
árbol
- El nodo hijo acepta
y desactiva Parent_Notify.
- Los nodos rama
envían un Parent_Notify a los puertos de los que no lo han recibido.
- Si hay contención
se reintenta un tiempo (aleatorio) después si es necesario.
- El nodo raíz será
el nodo que sólo tenga hijos.
- Identificación del
árbol: Ejemplo
- Un nodo puede forzar
ser raíz retrasando su petición Parent_Notify.

- Autoidentificación:
- El nodo raíz envía
una señal Arbitration_Grant a su puerto menos significativo con un nodo
hijo.
- Si el nodo hijo
es una rama repite el proceso. Si es una hoja se asigna a sí mismo el
ID 0 y transmite a su padre un paquete Self_ID.
- El paquete se transmite
a lo largo del bus. Cada nodo incrementa su contador ID.
- El nodo que se
ha configurado señala un Self_ID_done a su padre ya que no tiene nodos
hijo por configurar.
- El nodo raíz continua
enviando Arbitration_Grant a sus puertos de manera descendente.
- Cuando un nodo
recibe Self_ID_Done de todos sus puertos se configurará en el próximo
Arbitration_Grant del nodo raíz.
- El nodo raíz tendrá
ID mayor del bus.

- En el paquete Self_ID
se transmite la velocidad de transmisión de cada nodo.
- Al final de la
autoidentificación cada nodo conoce la topología del bus y la velocidad
de cada nodo.
- La velocidad de
transmisión de datos entre dos nodos será la menor de los nodos intermedios.
- Todos los nodos
que desean ser manejador de recursos isócronos (Isochronous Resource
Manager) se identifican en el paquete Self_ID.
- El número con mayor
ID pasa a ser el IRM.
arriba
