Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
15/06/1998

< Portas Seriais III: Portas Físicas >


Uma "porta" é uma posição de memória de endereço conhecido, usada para armazenar temporariamente os dados trocados pela CPU com os dispositivos externos. Quem leu a Trilha Zero semana passada sabe que esta definição é exata. O problema é que ela não condiz com a noção corrente do que seja uma porta. Afinal, mesmo quem não tem nenhuma idéia dos aspectos técnicos da questão, sabe que um mouse ou uma impressora devem ser conectados fisicamente a uma "porta serial" ou uma "porta paralela". Como encaixar este conceito naquela definição?

A aparente discrepância deve-se ao fato de que a definição exprime o que é "porta" desde o ponto de vista lógico. E a noção corrente conceitua "porta" desde o ponto de vista físico. Coisas bastante diferentes. Senão, vejamos.

Tomemos como exemplo a ação de enviar um dado para um dispositivo qualquer. Como vimos semana passada, para executá-la a CPU deposita o dado no endereço de memória correspondente ("porta" lógica) onde o dispositivo o lê. Ora, nada mais simples para a CPU que depositar um byte em uma posição de memória: é parte de sua faina habitual e ela faz isto com um pé nas costas. Mas e o dispositivo? Como fazê-lo "ler" uma posição de memória?

Não sei se vocês se deram conta da dificuldade. A variedade de dispositivos é enorme: mouses, escaners, impressoras, modems, o diabo. Dotá-los da capacidade de cumprir suas funções já é um negócio suficientemente complexo. Acrescentar a cada um deles a capacidade de ler e escrever em posições de memória iria complicar ainda mais as coisas. Por que não padronizar os circuitos necessários para este fim e integrá-los ao computador, não ao dispositivo? A coisa funcionaria mais ou menos como as "tomadas" da rede elétrica, uma conexão padronizada onde qualquer aparelho elétrico pode ser "ligado".

A idéia, então, seria agrupar os circuitos e componentes eletrônicos capazes de ler/escrever na memória em conjuntos dotados de conectores padronizados e incluir estes conjuntos nos próprios computadores. Quando fosse necessário agregar um dispositivo ao computador, bastaria conectá-lo àquele conjunto, que funcionaria como canal entre o dispositivo e a memória. E, em se tratando de algo cuja função é permitir que dados entrem e saiam dos computadores, não é difícil adivinhar o nome que este conjunto de circuitos e componentes recebeu: "porta", é claro...

Então, agora, temos dois entes distintos usando o mesmo nome: a "porta" lógica, ou a posição de memória usada como "caixa postal" para troca de dados entre CPU e dispositivos, e a "porta" física, ou o conjunto de circuitos eletrônicos capaz de ler/escrever dados naquela mesma posição memória. É à porta física que nos referimos quando usamos os termos porta "serial" ou "paralela", pois dois tipos de conexões foram padronizadas. A diferença entre elas é a forma pela qual os dados transitam entre a posição de memória (porta lógica) e o dispositivo - já que entre a CPU e a porta lógica a transferência sempre direta, pois a CPU é capaz de ler/escrever dados diretamente na memória.

Os bits que formam um byte são transportados através do cabo que liga a porta física ao dispositivo sob a forma de impulsos elétricos. Uma "porta paralela" transporta um byte transferindo simultaneamente (ou "em paralelo") seus oito bits. Como eles são transmitidos na forma de pulsos de corrente que percorrem o cabo ao mesmo tempo, uma porta paralela exige um cabo formado por no mínimo nove condutores (ou "fios") paralelos: um para cada bit e mais um para aterramento. Na prática o número é maior devido aos condutores adicionais usados para transportar sinais de controle.

Já uma "porta serial" transporta bytes entre o dispositivo e a porta lógica transferindo os oito bits sucessivamente, um após o outro, por um único condutor. Portanto uma porta serial exige um cabo formado por apenas dois condutores, um para transportar os bits e outro para terra (também neste caso, na prática o número é maior devido aos condutores adicionais usados para transportar sinais de controle). O nome deriva do fato dos bits percorrerem o cabo seqüencialmente, em uma série de impulsos elétricos.

A distinção entre portas lógicas e físicas, aparentemente um complicador, na verdade simplifica as coisas, dividindo as tarefas. Quando é necessário trocar dados com um dispositivo qualquer, a CPU lida apenas com o conceito de porta lógica e simplesmente lê ou deposita o byte no endereço da posição de memória associada àquele dispositivo. Se os oito bits lá chegam (ou de lá saem) simultânea ou sucessivamente, pouco importa. Quem trata destes detalhes é o conjunto de circuitos que constitui a porta física. Ou seja: para a CPU, é indiferente se a porta (física) é paralela ou serial. Na verdade, ela ignora o conceito de porta física: o que lhe interessa é apenas a porta lógica (o endereço da posição de memória) correspondente ao dispositivo com o qual pretende se comunicar. O que torna as coisas muito mais simples para o microprocessador.

B. Piropo