|
Em 2006 o mercado da tecnologia foi agitado por uma notícia bombástica: depois de um bocado de negociações, idas e vindas, a gigante AMD, grande rival e concorrente da Intel, conseguiu adquirir, pela bagatela de 5,4 bilhões de dólares americanos, a não menos gigantesca ATI que, se não era a maior, era sem dúvida uma das duas maiores empresas especializadas em processadores gráficos (a outra era – e ainda é – a NVidia).
Não se pode dizer que foi uma “briga de cachorro grande” porque briga, mesmo, não houve: a aquisição foi feita com a aquiescência de ambas as partes. Mas que eram animais de porte respeitável, ninguém pode negar. Por isso a notícia repercutiu tanto.
E agora a AMD anuncia que, graças ao domínio da tecnologia de processamento gráfico haurida da ATI, acabou de lançar no mercado o primeiro membro da família Fusion, uma classe de processadores que funciona tanto como unidade central de processamento para dados como, graças à sua capacidade gráfica, dispensa o uso de coprocessador para este mister.
Mas por que cargas d´água uma empresa especializada na fabricação de processadores de dados teria interesse em desenvolver um chip também capaz de processamento gráfico?
Por estranho que pareça, isto nada mais é que uma consequência direta da evolução da tecnologia, principalmente aquela usada no desenvolvimento de barramentos rápidos e no aumento da capacidade de processamento das UCPs modernas.
Mais especificamente a evolução paralela de dois ramos distintos, o que levou à substituição da transmissão paralela pela transmissão serial de dados nos barramentos de alto desempenho e aquele que levou ao desenvolvimento de microprocessadores multinucleares.
Nesta coluna veremos porque um barramento de alta capacidade de transmissão de dados é importante neste contexto.
Paralelo e serial
Nos albores da informática, no coração do velho PC, os dados moviam-se de duas formas: transmissão paralela e serial.
Mas como dados podem ser “movidos”? Dados, no interior de um computador, nada mais são que uma imensa coleção de números expressos no sistema numérico binário, com seus dígitos (ou bits, de “binary digits”) agrupados de oito em oito formando bytes. Como “mover” um treco destes?
Ora, simples: usa-se pulsos elétricos. Um pulso de uma determinada tensão representa o bit “um”. A ausência do pulso no momento em que ele é esperado (o que corresponde a um “pulso” de tensão nula), representa o bit zero. E assim, agrupando-se bits um e zero, movem-se os bytes – e portanto os dados.
É claro que a coisa é um pouco mais complicada que isto (se você desejar uma explicação mais detalhada, consulte a coluna “Computadores XVIII: Lógica temporizada”). Mas você já percebeu que, como nas boas escolas de samba, é tudo uma questão de ritmo. O mestre da bateria (no caso dos barramentos, um cristal de quartzo que vibra em uma frequência rigorosamente controlada) comanda o ritmo e os bits seguem acompanhando a batida: em cada compasso, ou ciclo, segue um bit.
|
Figura 1: mantendo o compasso |
Na transmissão paralela, há diversos condutores – paralelos, naturalmente – seja desenhados em um circuito impresso, seja formando um único cabo que leva o nome de “cabo chato”, que conduzem um bit cada um. Para transmitir um byte por ciclo, usam-se oito condutores. Os barramentos PCI e AGP que vimos na coluna anterior, com suas 32 linhas paralelas, cada uma transportando um bit, transmitem quatro bytes por ciclo (os padrões mais novos do AGP transmitem mais que isto porque conseguem transferir mais de um bit por ciclo em cada linha, mas explicar como isto é possível está fora do escopo desta coluna).
Já na transmissão serial os bytes são “desmontados” na origem da transmissão e seus bits são enfileirados e enviados um após o outro pelo mesmo condutor elétrico, juntamente com alguns bits extras usados para controlar a transmissão (o “start bit” e o “stop bit”, por exemplo, para assinalar o início e o final da transmissão de um byte). Ao serem recebidos no destino são “remontados”, ou seja, seus bits são reagrupados de oito em oito e os bytes reconstituídos.
Agora, pense um pouco nas duas formas de transmissão e diga-me lá: qual delas é a mais rápida? Qual delas tem potencial para transmitir mais dados no mesmo intervalo de tempo?
O raciocínio puro dirá que, evidentemente, é a transmissão paralela. Afinal, mantendo-se o mesmo ritmo, a serial precisa de no mínimo oito ciclos para enviar um byte (se estranhou o “no mínimo”, não esqueça os bits de controle) enquanto, dependendo de sua “largura” (número de condutores paralelos, ou de “linhas”) a transmissão paralela pode enviar diversos bytes em um único ciclo.
E de fato assim é. Ou, pelo menos, assim foi durante um bom tempo.
Até as coisas mudarem no final do século passado e os barramentos seriais passarem a reinar soberanos sobre os paralelos.
Como é que pode?
O triunfo da transmissão serial
Bem, a chave do problema está na expressão “mantendo-se o mesmo ritmo” alguns parágrafos acima. Quer dizer: se a frequência de operação de dois barramentos, um paralelo e um serial, for a mesma, o barramento paralelo será no mínimo tantas vezes mais rápido quantos forem seus condutores.
E assim foi por um bom tempo, na medida em que cresciam as frequências de operação tanto dos barramentos paralelos quanto dos seriais.
O problema é que as frequências de operação dos barramentos cresceram desmesuradamente nestes últimos anos. Lembre-se da coluna passada: enquanto o barramento de E/S do velho PC operava em uma frequência de 5 MHz, o PCI chegou a 33 MHz e o AGP começou em 66 MHz e foi até oito vezes isso. E quanto mais aumenta a frequência, maior é a dificuldade de manter a sincronia dos pulsos. Ou, ainda recorrendo à analogia com a escola de samba: quando o samba acelera demais, a bateria acaba “atravessando”.
Pense um pouco.
|
Figura 2: “barramento paralelo” de seis pistas |
Imagine que o barramento PCI, com suas 32 linhas, seja uma larga autoestrada de 32 pistas. Alinhe no início dela certo número de carros. Em cada pista onde deve circular um bit “um”, ponha um carro. Deixe vazias as pistas correspondentes aos bits “zero”. E dê o sinal de partida.
Note que não se trata de uma corrida, muito pelo contrário: os veículos devem manter a sincronia, ou seja, manterem-se emparelhados durante todo o percurso, posto que devem chegar ao destino exatamente ao mesmo tempo não importando quantas curvas ou irregularidades encontrem no caminho. Pois, exatamente no momento em que chegarem ao destino serão aferidos e computados os bits “um” nas pistas em que há um carro e bits “zero” nas que não há.
Repita o processo em cada ciclo, ciclo após ciclo, deixando um intervalo de, digamos, dez minutos entre cada grupo de carros. Em dez minutos dá para tirar das pistas os carros que chegaram ao destino, dá para alinhar com calma os que seguirão na próxima leva – quer dizer, no próximo ciclo – e tudo transcorrerá na mais perfeita ordem. Quer dizer: enquanto o intervalo entre ciclos for grande (o mesmo que dizer “enquanto a frequência for pequena”) é fácil manter a sincronia.
Agora imagine que a frequência de seu barramento imaginário aumente pouco a pouco, o que fará o intervalo entre cada leva de carros reduzir-se paulatinamente. E continue aumentando. Percebeu? Quando as levas de carros começarem a chegar a intervalos cada vez mais curtos, se um carro de uma leva adiantar ou atrasar um bocadinho que seja, acabará chegando junto com os carros da leva anterior ou seguinte. Resultado: pelo menos dois bytes errados (um em cada leva, pois uma recebe um bit “um” indevido e a outra deixa de recebê-lo). Quer dizer: quanto maior a frequência, maior a probabilidade de os bits se “embaralharem”.
Chega-se então a um ponto, quando a frequência de operação de um barramento paralelo aumenta muito, em que fica praticamente impossível manter a sincronia. Os bits se “atropelam”, a bateria atravessa e lá se vai o samba por água abaixo.
Acelerando o ritmo sem atravessar o samba
Já com o barramento serial a dificuldade é outra. Não há problema de sincronia, porque como os bits estão enfileirados, chega sempre um de cada vez por mais que se aumente a frequência do barramento. Por outro lado, quanto maior a frequência, maior a quantidade de bits a chegar no mesmo intervalo de tempo, o que exige uma capacidade de processamento cada vez maior tanto na origem, onde os bytes são desmontados, quanto no destino, onde serão remontados. Mas jamais o bit de um byte será confundido com o bit de outro.
O problema da sincronia nos barramentos paralelos não há como resolver: quanto maior a frequência, maior o risco de se “embaralharem” os bits e, como pulsos elétricos percorrem condutores com uma velocidade muito próxima da velocidade da luz, pequeníssimas diferenças nos comprimentos dos condutores, levíssimas interferências eletromagnéticas, perturbações quase imperceptíveis, podem fazer uma enorme diferença nas altas frequências de operação.
Já nos barramentos seriais, a dificuldade é contornada ao se aumentar o poder de processamento. Uma façanha que a indústria aprendeu a cumprir com o pé nas costas.
|
Figura 3: Conectores do painel traseiro de um PC |
Resultado: enquanto aumentar a frequência de operação nos barramentos paralelos tornou-se um problema intransponível, fazer o mesmo nos seriais tornou-se uma brincadeira de criança. A consequência disto é que o avanço tecnológico fez com que a transmissão de dados em série desbancasse a paralela.
É por isso que, de repente, o termo “Serial” meteu-se em tudo quanto é nome de tecnologia de transferência de dados. O USB – ou “universal SERIAL bus” acabou com as conexões paralelas de impressora. O padrão de discos rígidos da moda é o SATA - de “SERIAL AT Attachment”. Em suma: onde havia uma transferência de dados em paralelo, hoje há uma em série.
Repare, na Figura 3 que mostra os conectores do painel traseiro de um computador moderno da linha PC. Não sobrou conector paralelo nem para remédio...
Então por que não adotar a mesma tecnologia nos barramentos de vídeo?
Pois é isto que veremos na próxima coluna.
B.
Piropo