Barramento Firewire (IEEE 1394)
Por Ricardo Zelenovsky e Alexandre Mendonça em 07 de junho de 2000

Introdução

Neste artigo, iremos abordar o que de mais moderno existe sobre barramentos: o Firewire. O Firewire é um barramento serial de altíssimo desempenho que proporciona a conexão de diversos equipamentos, utilizando uma topologia flexível e proporcionando uma relação custo-benefício bastante atraente. Nosso objetivo é passar uma idéia a respeito das características inovadoras do Firewire, como os conceitos de portais, pontes, nós, conexão virtual, etc.. Pedimos desculpas se deixarmos alguma lacuna, mas colocamos como justificativa a dificuldade de obtermos dados técnicos sobre o assunto. Boa parte dos documentos disponíveis tinham acesso controlado, o que não nos permitiu um estudo mais aprofundado.

O barramento Firewire, criado pela Apple no início da década de 90, foi adaptado, em 1995, e padronizado pela norma IEEE 1394. Sua capacidade de comunicação pode atingir até 30 vezes a velocidade do USB (Universal Serial Bus, leia artigo sobre o assunto). Sua idéia é parecida com a do USB: possui uma interface simples capaz de receber até 63 dispositivos, como drives de discos, câmeras digitais, televisão digital, computadores, etc., como mostrado na Figura 1.


clique para ampliar
Figura 1: Exemplo de arranjo de equipamentos com o Firewire.

A Sony, Panasonic, Sharp, Canon e JVC foram as primeiras companhias a lançarem produtos com o Firewire (cerca de 7 milhões de codificadores de vídeo digital - MPEG). O mercado de computadores também já está abastecido com modelos da Apple, Compaq, Sony e NEC. Aguarda-se também a oferta de outros modelos de outras companhias líderes. Atualmente, a Castlewood Systems desenvolve um drive de disco que recebe diretamente a massa de dados de uma câmera digital, que promete eliminar o uso de fitas num estúdio de vídeo de alta qualidade.

Como pode ser observado, o Firewire não é um barramento exclusivo para computadores, visto que as aplicações de vídeo foram as primeiras a serem beneficiadas. Contudo, as companhias têm gradualmente adicionado, nos modelos mais novos, conectores Firewire em computadores, como é feito para o USB. Como no USB, não é necessário inicializar a máquina para detectar os dispositicos Firewire conectados, já que os mesmos são também detectados no ato de sua conexão física, em tempo de execução de aplicativos. Para recordar este processo, aconselha-se uma leitura do nosso artigo sobre o barramento USB.

Os produtos Firewire atuais podem operar a uma taxa de 400 Mbps (50MB/s), contra 12 Mbps (1,5 MB/s) do USB. Apesar de revisões da especificação USB já permitirem taxas maiores (USB 2.0 operando a 480Mbps ou 60MB/s), o Firewire não parará por aí: deverá atingir brevemente, com o auxílio de fibras especiais ou comunicação sem fio ("wireless"), velocidades de 800 a 3.200 Mbps. Para falar a verdade, pode operar a 800Mbps (100MB/s) sob a nova especificação IEEE1394b.

Firewire é, então, um apelido para um barramento serial especificado pelo IEEE, recebendo o nome oficial de IEEE 1394. A exemplo do PCI, dois ou mais barramentos Firewire isolados eletricamente podem ser conectados via um circuito especial, chamado de ponte. Historicamente, seu nascimento se deu em 1995 e foi apresentado à sociedade em fevereiro de 1996, quando Peter Johansson, da Congruent Software, expôs o trabalho intitulado "Serial Bus to Serial Bus Bridges" para um grupo de representantes das grandes empresas líderes de mercado, como Philips, Apple, NEC, Seagate, Sony, Sun, Samsung e Texas. Este acontecimento deu origem a uma série de reuniões para a discussão de questões técnicas para não só a definição do padrão IEEE 1394-1 (ponte entre barramentos Firewire), mas também para a especificação de pontes responsáveis pela interface do barramento em estudo com outros barramentos. Estas reuniões passaram a contar posteriormente também com representantes da Intel, Microsoft, Canon, Compaq e Panasonic, dentre outras. Embora tais especificações ainda não estejam finalizadas, o grupo mantém sempre um "draft" da situação no site http://grouper.ieee.org/groups/1394/1. Sendo assim, alguns detalhes expostos neste texto estão sujeitos a posteriores revisões.

Com as novas revisões do Firewire propondo-o a ser um barramento serial com um desempenho cada vez melhor, a taxa de comunicação implementada por uma ponte é flexivelmente programável para estar entre S100 (100 Mb/s) a até S3200 (3200 Mb/s), a um custo acessível, tanto para conectar periféricos de computadores quanto eletro-domésticos. Segundo o comitê 1394, outras aplicações, como transmissão digital de vídeo, ainda estão limitadas por uma arquitetura e uma definição de protocolo para pontes hoje incompletas. Na verdade, a especificação física do barramento foi bem simples. O mais complexo é definir os padrões de ponte, o que está sendo feito pela proposta IEEE 1394-1.

Para começar uma descrição da proposta 1394-1, serão colocadas algumas definições.

  • Ponte: é o circuito capaz de permitir a comunicação entre dois ou mais barramentos seriais com operações independentes.
  • Identificador de barramento (Bus_ID): é um número de 10 bits que identifica, de forma única, um dos barramentos seriais em uma topologia de rede composta por vários barramentos.
  • Portal: é o circuito que conecta fisicamente uma ponte Firewire com um barramento. Cada ponte deve implementar pelo menos 2 portais, ou seja, permitir a comunicação entre 2 barramentos. Numa rede genérica, uma ponte pode implementar N portais, N<256, identificados por 0, 1, ..., N-1.
  • Rede: é um grupo de barramentos e nós interconectados, capazes de serem mutuamente endereçados por transações envolvendo pacotes de dados.
  • Nó Local: Dois nós são ditos locais se eles estiverem conectados ao mesmo barramento, ou seja, com um mesmo identificador (Bus_ID).
  • Identificador de Nó Local: é um número de 16 bits que representa um endereço para o nó (periférico) conectado ao barramento.
  • Mestre para Ciclo de Rede: é o circuito eleito para ser o responsável por fornecer o sinal de relógio que vai sincronizar a rede. Desta forma, vários eventos na rede poderão ser realizados de forma isócrona, ou seja, sincronizados por um único relógio. Porém, o padrão IEEE 1394-1 prevê também a comunicação assíncrona.
  • Identificador físico: é um número de 6 bits associado a cada nó, via processo de auto-identificação que sucede à inicialização do barramento.
  • Nó Remoto: Um nó é dito remoto em relação a outro se estão conectados a barramentos com diferentes identificadores.
  • Nó Virtual: Um nó genérico.
  • Identificador Virtual: é um número de 6 bits que representa um endereço de um nó local conectado. A associação destes identificadores é feita pelo portal que gerou o barramento local.
  • Identificador de Nó Virtual: é um número de 16 bits que representa um endereço para um nó genérico que, para transacionar pacotes com um determinado portal, deve percorrer pelo menos uma ponte.

Ponte Firewire


Ponte Firewire

A Figura 2 ilustra um modelo bem simples de ponte. Como pode ser observado, os 2 portais nela representados podem trocar informações de forma isócrona (observar relógio de sincronismo e as filas isócronas) ou de forma assíncrona (observar as filas de requisição e de resposta). Também, pela Figura 2, é evidente que as transações de pacotes podem ocorrer bidirecionalmente, ou seja, do portal 0 para o portal 1 ou vice-versa. A escolha do tipo de comunicação (isócrona ou assíncrona), bem como a da taxa de comunicação, é feita por estruturas de dados contidas na Tabela de Controle de Roteamento.


clique para ampliar
Figura 2: Modelo simplificado de Ponte Firewire, com apenas 2 portais.

Identificador de Nó Virtual


Identificador de Nó Virtual

Numa rede de barramentos Firewire, os idenificadores para os nós (dispositivos conectados) possuem alguns atributos interessantes. Um deles é a estabilidade a operações de "reset" nos barramentos e a estabilidade ao caminho (depende da topologia de conexão dos barramentos) percorrido pelo pacote de informação. Um e somente um portal (chamado de portal a) é o responsável por gerenciar a designação de identificadores de nós virtuais. O portal a é escolhido, durante uma fase de auto-identificação de barramentos (na inicialização da rede), como sendo, por simplicidade, aquele que tem o maior valor de identificador físico. O processo de auto-identificação funciona da seguinte forma: cada portal transmite pelo menos 2 pacotes com informações de si próprio para os outros portais, incluindo o identificador físico usado para a escolha de a.Assim, após este processo, todos os portais podem facilmente calcular a topologia da rede implementada e manter internamente registros de informação desta topologia.

Quando um nó é removido ou adicionado em algum barramento, automaticamente é iniciado um processo de "reset" de barramento, dando início a um novo procedimento de auto-identificação de barramentos e nós. Dispositivos conectados facilmente detectam a adição ou remoção de nós, bastando para isto comparar a topologia calculada após este "reset" com a topologia calculada após o "reset" anterior. Existe também uma operação periódica que serve para atualizar os identificadores topológicos, que é chamada de refresco ("refresh").

A Operação Assíncrona


A Operação Assíncrona

Pontes Firewire são consideradas portais "inbound", já que elas examinam o barramento para detectarem pacotes primários assíncronos (que iniciam o protocolo de uma comunicação) enviados por outros barramentos. Já o portal que transmite o pacote primário é chamado de portal "outbound". Basicamente, existem 6 tipos de pacotes primários:

  • Requisição de escrita;
  • Resposta a uma requisição de escrita;
  • Requisição de leitura;
  • Resposta a uma requisição de leitura;
  • Requisição de proteção do barramento;
  • Resposta à requisição de proteção do barramento.

Numa operação "inbound", as pontes ficam constantemente monitorando o barramento à procura de pacotes primários. No momento que encontra um pacote primário, a ponte examina o identificador de nó virtual, contido no pacote, e verifica, na topologia de rede calculada após o "reset", se o nó de destino na transação está "pendurado" num dos barramentos dos portais da ponte. Caso isto ocorra, o portal destino recebe o pacote e inicia uma operação outbound para retransmitir o pacote primário detectado para os barramentos hierarquicamente conectados a ele.

Como exemplo, toma-se como base a topologia mostrada na Figura 3. Nela, estão representados 5 portais, com as referências "a", "b", "c", "d" e "e". O portal "a" em questão é o "a". Supõe-se que um nó "N1", deseje comunicar-se com o nó "N2". Acompanhando a figura, conclui-se que os seguintes passos são realizados:

  • Nó "N1" transmite um pacote de requisição via Firewire do portal "b"
  • Portal "b", implementado na ponte "a-b", detecta requisição e verifica que é preciso retransmitir o pacote via portal "a" para que o mesmo possa atingir a seu destino (operação inbound);
  • Pacote trafega pela ponte "a-b" e chega ao portal "a";
  • Portal "a" retransmite o pacote via barramento Firewire que une "a" e "c" (operação outbound);
  • Portal "c", implementado na ponte "d-c-e", detecta requisição e verifica que é preciso retransmitir o pacote via portal "e", para que o mesmo possa atingir a seu destino (operação inbound);
  • Pacote trafega pela ponte "c-e" e chega ao portal "e";
  • Portal "e" retransmite o pacote via barramento Firewire, onde o nó "N2" está conectado (operação outbound);
  • Nó "N2" recebe pacote;
  • Nó "N2" inicia processo inverso, ou seja, envia pacote de resposta à requisição.


clique para ampliar
Figura 3: Exemplo de topologia com barramentos Firewire, portais, pontes e nós.

Barramento 1394 Virtual


Barramento 1394 Virtual

Recentemente, em fevereiro de 1999, Subrata Banerjee, da Philips, apresentou um estudo sobre como conectar portais sem utilizar fios. Um Firewire com esta característica recebe a denominação "Wireless Firewire", Firewire Virtual ou IEEE 1394 Vrtual.

Primeiramente, o Firewire Virtual foi motivado pela limitação da especificação 1394-1, onde um barramento pode unir apenas 2 portais. Em sua configuração virtual, pode-se ter uma topologia com um barramento unindo múltiplos portais, como mostra a Figura 4.


clique para ampliar
Figura 4: Exemplo de topologia com um Firewire Virtual unindo os portais "a", "c" e "e".

Como características relevantes da operação do Firewire Virtual, citam-se:

  • É permitida a transmissão concorrente entre múltiplos pares de nós conectados a um Firewire Virtual, ou seja, é bem reduzida a característica de congestionamento de barramento, que muito limita a capacidade de uma rede de comunicação;
  • Nós não conectados ao Firewire virtual (exemplos: "N1" ou portal "d", na Figura 4) podem ou não ser enxergados pelos outro nós conectados;
  • Pacotes isócronos são enviados apenas para os nós que foram listados por dispositivos como possíveis fontes/destinos de pacotes;
  • A forma de roteamento de nós e portais num barramento virtual é bastante flexível; sendo assim, nem todos os nós conectados ao barramento virtual podem comunicar-se diretamente uns com os outros; às vezes será necessário o uso de um nó intermediário para armazenar temporariamente os pacotes para depois retransmiti-los;
  • Os pacotes comunicados num Firewire Virtual podem ser segmentados, se necessário;
  • Prevê-se a simulação de nós por software.

Além destas, ainda estão em estudo, dentre vários outros atributos:

  • A existência de portal a
  • Inclusão, numa ROM de configuração, de mapas de topologia e velocidade;
  • Garantia de precisão na distribuição da freqüência de relógio;
  • Transmissão de blocos assíncronos de, no mínimo, 512 bytes;
  • Suporte para tamanhos de pacotes que são permitidos em barramentos de 100 Mb/s ou mais;
  • Suporte para todos os tipos de pacotes de barramentos seriais.

Conclusões


Conclusões

Muita coisa se especula com relação ao Firewire. A primeira delas é a aceitabilidade dele no mercado. Na verdade, isto não é um ponto polêmico, já que praticamente seu nascimento se deu por "encomenda da indústria", principalmente as de eletro-domésticos e computadores de grande desempenho. Porém, quando se aborda a questão do uso do Firewire em PCs, lembra-se do exemplo do USB (Universal Serial Bus), que levou alguns anos até ser consolidado. Mesmo hoje, não é tão farta a oferta de periféricos USB, o que se faz concluir que há ainda uma grande resistência ao descarte de periféricos padrões e placas para conexões em slots embutidos. Além disso, em mais recente revisão, o USB apresenta características de desempenho bastante atraentes, se comparadas com o Firewire, o que dá vantagem ao USB, há mais tempo oferecido. Mas, nem por isto, deve-se fechar os olhos à grande inovação que veio junto com a especificação IEEE 1394.

Originalmente em http://www.clubedohardware.com.br/artigos/511

© 1996-2009, Clube do Hardware. Todos os direitos reservados.

É expressamente proibida a reprodução total ou parcial do conteúdo deste site e dos textos disponíveis, seja através de mídia eletrônica, impressa, ou qualquer outra forma de distribuição. Os infratores serão indiciados e punidos com base na lei nº 9.610 de 19/02/1998.

Não nos responsabilizamos por danos materiais e/ou morais de qualquer espécie promovidos pelo uso das informações contidas no Clube do Hardware.