Páginas

sábado, 4 de fevereiro de 2012

PCI Express: compatibilidade, linhas de dados e o PCIe 2.0

A característica fundamental do PCI Express é que ele é um barramento ponto a ponto, onde cada periférico possui um canal exclusivo de comunicação com o chipset. No PCI tradicional, o barramento é compartilhado por todos os periféricos ligados a ele, o que pode criar gargalos, como no caso das placas soquete 7.
Alguns puristas argumentam que o PCI Express não é um barramento no sentido estrito da palavra, já que o termo "barramento" surgiu para descrever um canal de comunicação compartilhado por vários dispositivos ou periféricos. Mas, sou da opinião de que esse tipo de preciosismo deve ser evitado. Os termos técnicos evoluem e são adaptados, assim como a tecnologia. Em toda a documentação é usado o termo "PCI Express bus", referindo-se ao PCI Express (e também ao USB, Firewire e outros) como "bus", ou seja, "barramento". A designação já foi adotada oficialmente.
O PCI Express é também um barramento serial e não um barramento paralelo, como o PCI. Antigamente, os circuitos eletrônicos eram muito lentos, por isso a solução para criar barramentos mais rápidos era adicionar mais trilhas e transmitir vários bits de cada vez. Exemplos de barramentos paralelos são as portas paralelas, usadas pelas impressoras antigas, as portas IDE e também o próprio barramento PCI.
Com o avanço da tecnologia, os projetistas começaram a encontrar dificuldades em criar barramentos paralelos mais rápidos, pois o grande número de trilhas operando a altas frequências criava ruído eletromagnético e problemas de sincronismo. A solução foi passar a investir em barramentos seriais, onde são usados apenas um ou dois pares de trilhas e controladores mais sofisticados, capazes de transmitir a frequências mais altas.
Com menos trilhas, o problema do ruído e interferência é eliminado e os dados podem ser transmitidos na frequência permitida pelos circuitos, sem problemas de sincronismo. Atualmente, acaba fazendo mais sentido usar um circuito controlador muito rápido, transmitindo um bit por vez, do que tentar criar um barramento complicado, que transmite 16 ou 32 bits por ciclo.
Enquanto os fabricantes enfrentaram dificuldades para manter o sincronismo dos sinais do PCI-X a apenas 133 MHz, os transmissores do barramento PCI Express podem operar a 2.5 GHz sem maiores problemas.
Exemplos de barramentos seriais, são o USB, o Serial ATA e o PCI Express. A diferença de desempenho entre estes barramentos atuais em relação aos barramentos antigos é brutal: uma porta paralela operando em modo EPP transmite a apenas 8 megabits por segundo, enquanto uma porta USB 2.0 atinge 480 megabits. Uma porta IDE ATA-133 transmite a 133 MB/s, enquanto o SATA 600 atinge 600 MB/s. O PCI oferece apenas 133 MB/s, compartilhados por todos os dispositivos, enquanto um slot PCI Express 2.0 x16 atinge incríveis 8 GB/s.
Começando do básico, existem 4 tipos de slots PCI Express, que vão do x1 ao x16. O número indica quantas linhas de dados são utilizadas pelo slot e, consequentemente, a banda disponível.
Existem duas versões do PCI Express em uso, o PCI Express 1.x e o PCI Express 2.0. O PCI Express 1.x é o padrão inicial (finalizado em 2002), enquanto o PCI Express 2.0 é a versão mais recente (finalizada em janeiro de 2007), que transmite ao dobro da velocidade. Apesar da diferença, os dois padrões são intercompatíveis: salvo raros casos de incompatibilidade, não existem problemas em instalar uma placa PCI Express 2.0 em um slot PCI Express 1.1, ou vice-versa, mas em ambos os casos a velocidade é limitada pelo mais lento.
Cada linha PCI Express utiliza 4 pinos de dados (dois para enviar e dois para receber), que operam em modo full-duplex (ou seja, são capazes de transmitir e receber dados simultaneamente). No PCI Express 1.x temos 250 MB/s em cada direção por linha de dados, enquanto no PCI Express 2.0 temos 500 MB/s por linha.
Devido à essa característica, é comum que os fabricantes divulguem que o PCI Express transmite a 500 MB/s no padrão 1.x e 1000 MB/s no padrão 2.0, mas estes são valores irreais, já que só ocorreria em situações em que grandes quantidades de dados precisassem ser transmitidos simultaneamente em ambas as direções.
Junto com o uso do barramento serial, outra grande inovação do PCI Express foi a de permitir combinar várias linhas de dados em um único slot, multiplicando a banda disponível. Com isso, temos, 250 MB/s de banda nos slots PCIe 1.1 x1, 1 GB/s nos slots x4, 2 GB/s nos slots x8 e 4 GB/s nos slots x16. No caso das placas com o PCIe 2.0, as velocidades dobram, com 500 MB/s para os slots x1, 2 GB/s nos slots x4, 4 GB/s nos slots x8 e incríveis 8 GB/s nos slots x16.
O padrão original também previa o uso de slots x2 e x32, mas eles nunca chegaram a ser implementados. Na prática, os slots 8x também são muito raros, de forma que você verá apenas slots 1x, 4x e 16x nas placas atuais.
Em todos os formatos, o slot é dividido em duas secções. A primeira contém os contatos de alimentação elétrica e é igual em todos os slots, enquanto a segunda inclui os contatos de dados, que aumentam em número de acordo com o número de linhas de dados:
Essa organização foi desenvolvida para que exista compatibilidade retroativa com todos os formatos menores. Graças a isso, os slots x16 são compatíveis também com as placas x1, x4 e x8 e os slots x4 são compatíveis também com as placas x1 (e com as hipotéticas placas x2).
Ao conectar uma placa x1 em um slot x16, por exemplo, os contatos adicionais ficam sem uso. Como pode imaginar, o controlador é esperto o suficiente para desativar as linhas de dados inativas. Se você souber o que está fazendo, é possível até mesmo cobrir parte dos contatos com fita adesiva para desativar parte das linhas de dados e assim medir o desempenho da placa caso usada em slots com apenas 8 ou 4 linhas (como feito em alguns reviews).
Existem também os casos de placas-mãe com slots x4 ou x8 "abertos". Eles não têm a borda do conector, permitindo que você encaixe placas maiores, deixando os contatos extras de fora:
Esta solução é usada em casos em que o fabricante deseja oferecer a possibilidade de usar duas placas de vídeo em CrossFire ou SLI, mesmo que o chipset ofereça apenas 4 linhas de dados para o segundo slot. Como pode imaginar, o uso de apenas 4 linhas criam um gargalo que reduz o desempenho da segunda placa, mas ao menos a possibilidade existe.
Também existe a possibilidade de criar slots "capados", onde temos um slot x16 com apenas 8 linhas de dados, ou um slot x4, com apenas uma linha, por exemplo. Estes slots se comportam exatamente da mesma forma que um slot x1 ou um slot x4 aberto, mudando apenas o encaixe físico. Como nestes casos muda apenas o uso das linhas de dados (e não as conexões elétricas), os slots continuam sendo perfeitamente compatíveis com todo tipo de placas; apenas o canal de dados passa a ser mais lento.
Graças a toda essa flexibilidade, temos alguns casos interessantes, como o desta Intel D975BX da foto a seguir. Ela possui três slots PCI Express 16x (um deles com 16 linhas de dados e o outro com apenas 8 linhas), dois slots PCI legacy e nenhum slot PCIe x1 ou x4 (você usaria um dos slots x16 caso precisasse instalar uma placa de expansão qualquer):
Concluindo, o PCI Express utiliza um sistema de codificação chamado 8b/10b, onde são incluídos dois bits adicionais para cada byte de dados transmitidos. Estes bits adicionais permitiram eliminar a necessidade do uso de pinos adicionais para enviar o sinal de sincronismo, o que simplificou bastante o design e melhorou a confiabilidade, mas em compensação reduziu o volume real de dados transmitidos.
É por causa dessa característica que os 2.5 gigabits (PCIe 1.x) ou 5.0 gigabits (no PCIe 2.0) de banda oferecidos por cada linha de dados equivalem a apenas 250 e 500 MB/s de dados e não a 312.5 e 625, que seriam o resultado da tradicional divisão por 8.

Hardware

0 comentários: