Hardware - PCI Express

Hardware - PCI Express

29/11/2017

| Escrito por:

   Olá leitor! Hoje vamos começar a desvendar as peças de uma placa-mãe de computador! E vamos começar pelo slot PCI Express, desenvolvido pela PCI-SIG no início deste século.

  A pós muitos outros padrões de barramentos lentos e que ficaram defasados em pouco tempo, como o ISA (Industry Standard Architecture ou Arquitetura Padrão da Indústria) , EISA (Extended Industry Standard Architecture ou Arquitetura Padrão da Indústria Estendida), entre outros, finalmente a Intel lança o barramento PCI (Peripheral Component Interconnect ou Interconexão de Componentes Periféricos).

  Logo depois várias outras fabricantes se uniram e formaram o grupo que é conhecido atualmente como PCI-SIG (PCI Special Interest Group, que significa Grupo de Interesse Especial PCI) para o desenvolvimento e aperfeiçoamento dos padrões de barramento. Com essa união, logo depois já foi criado o padrão PCI-X (Peripheral Component Interconnect eXtended - Interconexão de Componentes Periféricos Estendida), que era uma versão do slot PCI com clocks mais altos e maior largura do barramento.

  O slot PCI e PCI-X, quando foram lançados, acompanharam o desempenho do restante do hardware que era desenvolvido na época. Eles eram utilizados para vários fins (instalação de placas de áudio, rede, captura de vídeo, placas de vídeo, etc) mas, após alguns anos, quando os jogos de computador estavam começando a ficar mais bem trabalhados e populares, quando começaram a surgir interfaces de rede Ethernet de 1 Gbps e quando as outras peças evoluíram e ganharam mais desempenho, este barramento se mostrou lento e pouco proveitoso para instalação de "circuitos extras", e nesse período que foi lançado o padrão AGP (Accelerated Graphics Port - Porta Gráfica Acelerada), com clocks mais altos e slot completamente diferente do PCI e PCI-X.

  Para saber mais sobre o barramento AGP, clique aqui! Para saber mais sobre o barramento PCI e PCI-X, clique aqui!

  Com o tempo, o slot AGP se tornou ultrapassado também, então a PCI-SIG criou o famoso padrão PCI Express, chamado também de PCIe. A principal diferença entre o slot PCIe e os outros slot's mencionados aqui é que, como foi explicado no artigo sobre pares diferenciais de dados, o slot PCIe não é um barramento, e sim uma conexão ponto-a-ponto feita para ligar apenas 2 dispositivos de forma serial, abandonando as várias trilhas paralelas que podiam interligar mais de 2 dispositivos.

 

  O slot PCI Express é utilizado principalmente para conectar as famosas placas de vídeo off-board na placa-mãe do computador. Atualmente está sendo criado SSDs com interface PCIe x4 ou x8, placas de áudio, de rede (Ethernet ou Wi-fi), entre outros, que também aproveitam muito bem esta interface de comunicação.

  Se você quer saber ainda mais, acesse este link e veja mais sobre a interface SATA Express, que é uma adaptação do PCI Express original!

   O padrão PCIe trouxe o conceito de "lanes". Se você gosta de hardware, provavelmente já ouviu ou vai ouvir este termo um dia. Um lane é uma dupla de pares diferenciais, onde uma envia informações (TX) e a outra dupla recebe (RX). Ao juntar 16 lanes, por exemplo, temos o slot PCI Express x16, que dá um total de 64 trilhas.

  Uma placa que possua slot PCI Express x1, significa que este possui apenas 1 lane (4 trilhas). O mesmo acontece com o slot PCIe x2, x4, x8, e x32. Pode ser utilizado o termo "bit", já que cada par diferencial pode receber ou enviar 1 pulso elétrico e seu sinal invertido por cada lane, portanto se você ouvir que o slot PCI Express x16 transmite 16 bits, está correto. Veja mais sobre lanes e conexões ponto-a-ponto clicando aqui!

  Além destas versões, existe uma mais incomum, lançada por volta de 2007, utilizada normalmente em notebooks para conectar placas Wi-Fi, 3G, LTE e outros componentes. Esta versão é chamada de Express Mini. Veja a imagem de um dispositivo Express Mini abaixo:

  Este slot foi desenvolvido para cumprir o papel do slot Mini PCI, que estava desatualizado na época. O slot Express Mini possui apenas 1 lane, portanto ele é considerado x1.

 

  CURIOSIDADE: Atualmente, com a mineração de criptomoedas, se tornou comum ligar placas de vídeo com interface PCIe x16 em slot's PCIe x1. Para deixar as várias placas de vídeo alimentadas e bem fixadas, se utiliza uma extensão com cabo USB e placas adaptadoras. Isso se chama "PCIe over USB" e pode ser visto em detalhes CLICANDO AQUI (PDF).

   As empresas da aliança PCI-SIG sempre estão revisando o projeto e estudando melhorias. Abaixo você vê a tabela com as versões e revisões do slot PCI Express já lançadas no mercado:

   A cada pulso de clock é transmitido 1 dado (1 bit). No caso do slot PCIe x1 1.0, há apenas 1 lane transmitindo a 2,5 GHz (2,5 bilhões de pulsos por segundo), o que dá uma taxa de transferência de 250 Mega Bytes por segundo (MB/s).

 

  Para saber mais sobre clock, clique aqui!

 

  Devido ao sistema de codificação dos dados, a taxa de transferência é diferente do normal. Você verá mais abaixo os sistemas de codificação de dados do PCIe. Para a versão 1.0 e 2.0 era utilizada a codificação 8B/10B, onde cada conjunto de 8 bits é transformado em um pacote de 10 bits. Esses 2 bits extras não significam nada, são apenas utilizados para codificação, ocupando 20% da taxa de transferência.

  Numa conexão PCIe x1 1.0 por exemplo, em vez de ser 312,5 MB/s de taxa de transferência, como é perdido 20% com os dados da codificação, ele é padronizado com 250MB/s. Já a versão 3.0 utiliza a conexão 128B/130B e por este motivo foi possível dobrar a taxa de transferência de dados sem dobrar a frequência(GHz).

 

  Para calcular a taxa de transferência de dados, e se você não entende muito bem sobre bits, Bytes e clock, leia os artigos sobre estes assuntos para saber mais. Eles já estão disponíveis no site e para acessa-los, clique aqui!

 

  Os slots Express Mini utilizam as mesmas revisões do PCI Express comum. O padrão Express Mini prevê que a conexão PCI Express possa ser substituída pela interface USB em alguns dispositivos, facilitando assim o projeto do circuito. Mais abaixo você verá a pinagem do conector Express Mini e entenderá melhor onde entra a interface USB.

 

  CURIOSIDADE: A primeira placa de vídeo a utilizar o PCIe 3.0 foi a AMD Radeon HD 7970, lançada em janeiro de 2012.

PCI Express

  Veja agora o vídeo abaixo com o diagrama e imagens do slot PCI Express, com toda a sua pinagem:

  Como você pode ver, do pino A1/B1 ao A11/B11 é especialmente para a alimentação elétrica e controle da placa conectada. Por padrão, o slot PCIe pode oferecer 75 Watts para a placa de expansão. A partir da divisória, todos os outros pinos são os pares de transmissão e recebimento de dados, linhas de identificação da placa conectada, linhas de sinal de sincronismo, linhas negativas e alguns pinos que não são conectados. O padrão PCIe x2 foi destacado no vídeo, mas ele é muito pouco utilizado. Perceba que para o slot x1, há um identificador (pino B17), para o PCIe x4 há outro identificador (B31) e assim por diante.

  É importante falar que, se você conectar uma placa PCIe x1 por exemplo, num slot x4, x8 ou x16, ela vai funcionar normalmente. Ao contrário também vai funcionar: por exemplo, se você conectar uma placa PCIe x16 num slot x4, esta placa irá funcionar normalmente, mas limitada pela taxa de transferência de dados do slot PCIe x4.

  As placas e slots são totalmente compatíveis entre as revisões: uma placa-mãe com slot PCIe 1.0 ou 2.0 vai funcionar com uma placa expansível PCIe 3.0, só que esta conexão será limitada pela taxa de transferência das versões anteriores. Resumindo: você pode conectar qualquer placa PCIe, independente da revisão em qualquer placa-mãe que tenha slot PCIe de qualquer revisão, o único detalhe é a limitação da taxa de transferência. A versão 3.0 já inclui o sistema de codificação 128B/130B (padrão da versão) e também o 8B/10B das versões anteriores.

 

  Abaixo, separamos um esquema elétrico de slot PCIe para você entender melhor o que está escrito nesse texto. O diagrama é da fabricante Gigabyte.

Esquema elétrico da GBT GA-M55S Rev.: 2.02

 

  Agora, separamos dois esquemas elétricos das saídas e entradas do controlador PCI Express no chipset da placa-mãe. Os diagramas escolhidos também são da fabricante Gigabyte. Observe:

 Esquema elétrico da GBT GA-M59SLI Rev.: 1.01 (Controlador PCIe do chipset nVidia MCP55)

 

 Esquema elétrico da GBT GA-M61PM Rev.: 1.00 (Controlador PCIe do chipset nVidia MCP61)

 

  Para que você entenda melhor, como foi dito, 1 lane possui dois pares de trilhas: um para enviar e outro para receber informações, portanto eles são chamados de TX (Transceiver) e RX (Receiver). Lembrando que há também o sinal diferencial (pares diferenciais ou pares de cancelamento), portanto temos as linhas denominadas TX "P" e TX "N", RX "P" e RX "N": o P significa que pela trilha passa uma tensão positiva e o "N" significa que pela trilha passa uma tensão negativa.

 

  Há placas mãe que possuem, por exemplo, 2 slot's PCIe do tamanho x16, mas se duas placas de vídeo forem conectadas, eles vão funcionar em modo x8. Você deve observar isso ao comprar uma placa com vários slot's PCIe x16, pois as vezes, a placa-mãe possui suporte à tecnologia nVidia SLI ou AMD CrossFire, mas não há tantos lanes disponíveis no chipset, fazendo com que a fabricante distribua os disponíveis em dois ou mais slot's x16. Nestas placas pode haver chip's chaveadores que ao ser detectado duas placas de vídeo, automaticamente distribuem 8 lanes para cada uma. Veja abaixo a imagem de duas placas com os CI's chaveadores:

  Na imagem acima, uma DFI LANPARTY e uma Asus A8N-SLI Premium com CI's chaveadores.

  Selecionei um diagrama com os chips chaveadores para que se entenda melhor. 8 lanes foram ligados diretamente nos primeiro slot x16 e os outros 8 lanes são ligados aos CI's chaveadores. É necessário dois CI's para cada lane, pois como foi dito, em um lane há um par de trilhas para enviar (TX) e outro para receber (RX) dados.

  Existem técnicas mais baratas para distribuir os lanes entre os slot's PCIe. Pode se utilizar conjuntos de jumpers entre os slot's, ou o famoso cartão SLI Selector (que já é algo do passado) ou um cartão terminador (utilizado principalmente em placas-mãe com suporte ao CrossFire). Atualmente é comum apenas a ultilização dos CI's chaveadores.

  Para ver mais sobre os jumpers, o Cartão Terminador, o SLI Selector e os CI's chaveadores, CLIQUE AQUI!

 

  Mas qual o motivo das fabricantes não colocarem slot's do tamanho x16 com conexão x16? Como foi dito acima, cada lane possui 4 trilhas, ou seja, um slot x16 possui 64 trilhas, e isso requer muito espaço na placa. 2 slots x16 requerem 128 trilhas.

  Os controladores PCIe também não estão preparados. O chipset nVidia 650i SLI, por exemplo, suporta no máximo 18 lanes, sendo que 16 deles devem ser direcionados à um slot PCIe x16 ou dois slot's PCIe x16 com conexão x8. Esse é o motivo pelo qual as fabricantes colocam slot's PCIe com tamanho x16, mas que trabalham no modo x8.

  Atualmente, CPU's como as da linha Intel Core i, tem em média 40 lanes, tornando possível a colocação de dois slot's x16 com conexão x16. O chipset AMD 990FX, para CPU's da série FX, também suporta dois slot's x16 com conexão x16, só que as placas que utilizam este chipset ou as placas que utilizam todos os lanes dos processadores mais modernos da Intel são bem mais caras. A quantidade de slot's PCIe x16 e x8 depende do chipset utilizado e da fabricante querer aproveitar a maioria dos lanes para implementar a tecnologia nVidia SLI ou AMD CrossFire.

 

Express Mini

  Abaixo, você vê a imagem de um conector Express Mini (também chamamos de mini PCIe):

   Agora, a tabela de pinos do slot Express Mini:

 

  Quando um placa de rede de internet móvel é conectada, o chip da operadora se comunica com o sistema pelos pinos P8, P10, P12, P14 e P16 e o pino 42 (LED WWAN#) sinaliza a conexão com a internet. Os pinos P37, P39, P41, P43, P45, P47, P49 e P51 são reservados para a adição de outro lane PCIe. Os pinos SM Bus servem para a placa MiniPCIe enviar informações sobre ela à placa-mãe. Os pinos RefClk servem para sincronizar os controladores PCIe e o pino ClkREQ# requisita este sinal quando a placa é ativada.

  Os pinos P42, P44 e P46 quando utilizados, informam a ausência ou não da conexão de internet através de um LED. A interface USB não pode ser utilizada junto da PCIe: quando uma placa MiniPCIe é projetada, o(s) engenheiro(s) decide(m) qual interface utilizar, já que as duas funcionam de forma completamente diferente uma da outra. A alimentação elétrica do slot é feita por linhas de 1,5 e 3,3 Volts.

   Se você observou o diagrama da pinagem mostrada no vídeo acima, observou que há uns pinos chamados JTAG. Eles são uma interface de teste e programação de hardware presentes em vários dispositivos. JTAG significa "Joint Test Access Group" padronizada pela IEEE 1.149,1. O hardware é acessado através de cinco trilhas. Cada uma é explicada no vídeo, na parte da tabela com a pinagem. Será feito um artigo futuramente detalhando melhor o JTAG. No caso do slot PCIe, na maioria das placas-mãe esta interface não é conectada.

 

  Os pinos SMBus são utilizados para monitoramento e transferências de informações relacionadas ao hardware. O barramento SMBus é derivado do I²C e utilizado apenas para comunicação com largura de banda estreita. O SMBus "Data" e "Clock" estão ligados ao BIOS e aos sistemas de controle da placa conectada. Futuramente será feito um artigo detalhando o funcionamento do BIOS. O SMBus é a interface que, neste caso, serve para mandar dados de identificação, como por exemplo reconhecimento dos circuitos, isto é, tipo de dispositivo, revisão de interface de comunicação, etc e também a interface de configuração, feita pelo driver do dispositivo (programa instalado no Sistema Operacional) que se comunica com o firmware(BIOS) da placa conectada pelo SM Bus;

 

  O pino Power Good é para monitoramento de tensão. assim como as fontes de alimentação e as placas-mãe, a conexão PCIe também tem esta tecnologia para evitar danos relacionados com excessos de energia.

 

  O sensor de Hot-plug serve para identificação da placa, já o identificador de Hot-plug, reconhece a "largura" da conexão. Perceba que ao final do slot x1 há um identificador, ao final do slot x4, x8 e x16 também. É assim que o sistema verifica se a placa conectada é x1, x4, x8 ou x16.

 

  O par diferencial de clock faz a frequência necessária para sincronizar a transferência de dados entre dispositivos. No caso do PCIe revisão 1.0 é 2.5 GHz, na revisão 2.0 é 5 GHz e na versão 3.0 é 8 GHz. No Setup do BIOS de todas as placas mãe do mercado há uma opção, quase sempre nomeada com "PCI Express Frequency" e esta opção é sempre configurada em 100 MHz. Mas se o PCIe é sempre 2,5 GHz, 5 GHz ou 8 GHz, qual o motivo de no BIOS estar marcado 0,1 GHz? 100 MHz é o clock base para o Circuito PLL do controlador PCIe multiplicar.

  No caso do PCIe 1.0, o multiplicador é de 25 vezes, já que 25 vezes 100 MHz é igual a 2,5 GHz. No PCIe 2.0 o multiplicador é de 50 vezes e no PCIe 3.0 é 80 vezes. Mas o que é PLL? Fique ligado que futuramente explicarei isso em um artigo! Leia os artigos sobre eletrônica para saber mais sobre frequência.

 

  Os pinos Ground são os aterramentos entre dos pares diferenciais. Para cada polo positivo há um polo negativo. No padrão PCIe, para cada par diferencial há um par de aterramento.

 

  Há o pino "ativar dispositivo". Quando a placa-mãe manda um sinal por esta trilha, a placa passa a receber energia, ser testada e funcionar.

 

  As linhas de tensão 12 Volts e 3.3 Volts fornecem energia para a placa conectada à uma potência máxima de 75 Watts (no caso de slots x16), até 10 Watts para slots x1 e até 25 Watts para o x2, x4 e x8.

 

  Observe a imagem abaixo. É na parte circulada em amarelo que ficam os pinos de distribuição elétrica, ativação de dispositivo, sensor de hot-plug, pinos Power Good, interface SMBus e JTAG. Depois da "chave mecânica" que divide a primeira da segunda parte do slot, há o par diferencial de clock.

   Em placas de vídeo, a potência fornecida pelo slot normalmente não é o suficiente e muitas vezes nem é utilizada. Para estas placas se usa um conector de alimentação próprio que também é chamado de PCIe. Veja seu diagrama abaixo:

   Fontes de alimentação mais potentes já vem com este conector. Existem também adaptadores de cabo SATA(utilizados em HDs) para PCIe 8 pinos ou 6 pinos.

  Os conectores de 6 pinos fornecem 75 Watts e os de 8 pinos fornecem 150 Watts. Observe que na versão de 8 pinos foi adicionado dois polos negativos extras, pois não era necessário mais tensão, e sim, mais corrente elétrica para a placa PCIe. Placas PCIe podem ter um, dois ou mais conectores deste tipo, pois cada modelo pode exigir mais energia.

 

  Outro detalhe é que, se você já observou uma placa-mãe, viu que logo acima do slot PCIe há alguns componentes SMD. Veja a imagem abaixo para entender melhor:

Placa-mãe Gigabyte GA-8i915G MF

 

  Os componentes circulados em amarelo são capacitores SMD, pequenas peças que fazem uma simples filtragem no sinal transmitido pelas trilhas TX dos lanes. Abaixo, você vê o diagrama de duas placas-mãe, também da marca Gigabyte, mostrando a posição e a numeração destes capacitores no circuito do slot PCIe. Observe:

Esquema elétrico da GBT GA-M59SLI S4 Ver.: 1.00

 

Esquema elétrico da GBT GA-M61PM S2 Ver.: 1.00

 

  Estes capacitores não possuem características padronizadas, isto é, o modelo de componente pode variar de placa para placa, apenas a capacitância que é sempre na faixa dos 0,1 microFarad.

  Outro detalhe é que, se você viu bem os dois diagramas, apenas as trilhas de TX (Transceiver) possuem capacitores SMD, as trilhas RX (Receiver) não possuem capacitores! Mas porque? Porque a placa que será conectada ao slot virá com os capacitores SMD para RX. Pode analisar uma placa de vídeo ou qualquer outra placa compatível com PCIe. Todas elas vem com capacitores das linhas RX próximos dos contatos do conector! Observe as imagens abaixo:

Placa de vídeo EVGA nVidia GT730 (interface PCIe x8)

 

Placa de vídeo GeForce 6200CT(interface PCIe x16)

 

  Lembrando que, estes capacitores nas linhas TX e RX dos lanes são organizados desta forma em todas as placas-mãe e todos os circuitos que podem ser conectados ao PCIe, ou seja, placas de áudio, vídeo, rede, captura, entre várias outras. Capacitores das linhas RX também trabalham na mesma faixa de capacitância dos capacitores para as linhas TX.

   O padrão PCI Express possui uma arquitetura que é dividida em quatro camadas. Elas serão explicadas a seguir:

 

PHYSICAL (CAMADA FÍSICA)

  São os grupos de trilhas de comunicação, conhecidas como lanes e o circuito controlador PCI Express. Mais abaixo você vê o diagrama do controlador PCI Express. É só continuar lendo.

 

DATA LINK (CAMADA DE LIGAÇÃO)

  Esta camada garante o envio e recebimento de dados através de protocolos de comunicação. Um desses protocolos é o Flow Control Protocol que faz com que os pacotes de dados sejam enviados se no buffer (pequena quantidade de memória RAM) do receptor tiver espaço.

 

SOFTWARE

  Nesta camada está o driver que se comunica com o firmware da placa conectada através do SM Bus e faz a comunicação com o sistema operacional. Assim é possível detectar e configurar a placa conectada da melhor maneira possível, pois o sistema sabe onde a placa está conectada e consegue utilizar todas as funções e configurações que ela possui. Também é possível otimizar a comunicação do sistema operacional com a placa conectada (já que o SO controla todos os dados que circulam sobre os circuitos).

 

CAMADA DE TRANSAÇÃO

  Esta camada é a responsável por tratar as solicitações feitas pelo sistema operacional e pela camada de ligação. Nesta camada os dados podem receber atributos que otimizam a transmissão. Por exemplo, a um pacote de dados pode ser atribuído prioridade, assim ele será enviado o quanto antes.

 

  Cada camada pode trabalhar de forma individual, se interferir na outra. O PCI Express consegue dividir a camada física em até 8 canais de comunicação (chamados de Virtual Channels - Canais Virtuais) e prioriza os dados a serem transmitidos para que aplicações em tempo real, como jogos não sejam prejudicadas.

  Vale lembrar que o PCIe também utiliza o modelo OSI, o mesmo utilizado na rede mundial de computadores para efetuar a comunicação entre emissor e receptor de dados. O modelo OSI consiste em 7 camadas de protocolos (neste caso, os protocolos são específicos para o PCIe). Estas 7 camadas são divididas entre as cinco camadas da arquitetura, onde a camada 1 do modelo OSI é a mais baixa, ou seja, a camada física e a camada 7 a mais alta, ou seja, a camada de software.

   Como foi dito no primeiro tópico sobre a arquitetura do PCI Express, agora teremos o texto sobre o controlador desta conexão. Observe o diagrama abaixo:

   Mas o que significa esses blocos? Como eles são organizados internamente? É o que você verá agora!

 

 > Packet e Flow Control : "Packet" é processador de pacotes, isto é, as sequências de dados que chegam ao controlador PCI Express. Já o "Flow Control" é um circuito de controle de distribuição de pacotes entre os lanes. Cada conjunto de lanes possui um Processador e Controlador de Pacotes, por exemplo, um slot PCIe x16 possui um Packet e Flow Control. O agrupamento de lanes depende da fabricante do chip, por exemplo, se o chip possui 40 lanes a fabricante pode colocar dois grupos x16 e o restante x1 ou um grupo x16, dois grupos x8 e o restante x1;

 

 > TX / RX FIFO : Tanto no hardware quanto no software existem sistemas de enfileiramento de processos. O FIFO, sigla para First In, First Out que em português significa "Primeiro Entrar, Primeiro Sair" é um buffer, ou seja, uma memória RAM do tipo cache (formada por flip-flops), que permite enfileirar pacotes (sequências de dados) para que os dados fiquem armazenados temporariamente enquanto outros dados estão sendo tratados pelos circuitos. Para o receptor (RX) do lane há um FIFO e para o transceptor (TX) do lane há outro, já que, um recebe e outro envia informações;

 

 > PCIe Link Layer : É a camada de ligação entre o Packet e Flow Control e os circuitos seguintes do lane. Nele que são executados os protocolos de comunicação. Um desses protocolos é o Flow Control Protocol que faz com que os pacotes de dados sejam enviados se no buffer do receptor tiver espaço;

 

 > PCIe Transaction: Para cada lane há o circuito que prepara os dados para serem enviados pelo lane (é uma espécie de controlador dentro do controlador). Esta camada é a responsável por tratar as solicitações feitas pelo sistema operacional e pela camada de ligação. Neste circuito os dados podem receber atributos que otimizam a transmissão. Por exemplo, a um pacote de dados pode ser atribuído prioridade, assim ele será enviado o quanto antes;

 

 > MAC Layer : assim como nas redes de internet, os dispositivos precisam ter endereços físicos para que o receptor saiba de que link veio o dado;

 

 > PCIe PHY: PHY é a abreviação de Physical, que é a camada física, a parte do circuito responsável pela preparação dos dados para serem enviados pelo meio analógico, ou seja, as trilhas da placa-mãe. Este processo de preparação é a modulação ou codificação. No caso do padrão PCIe é codificação, que como já foi dito, nas revisões 1.0 e 2.0 é a 8B/10B e na revisão 3.0 é a 128B/130B (mantendo a compatibilidade com a 8B/10B). Abaixo você vê a lógica usada na codificação dos dados no circuito PHY;

 

 > O PLL (Phase Locked Loop) você já deve saber, se leu o artigo sobre clock. O clock base do PCI Express, que é por padrão 100 MHz, é recebido pelo PLL e ele faz a multiplicação deste sinal por 25 vezes (revisão 1.0), 50 vezes (revisão 2.0) ou 80 vezes (revisão 3.0) para sincronizar o emissor com o receptor de dados, além de gerar o sinal de sincronismo dos circuitos internos do controlador PCIe. Futuramente você verá mais detalhes sobre um circuito PLL.

 

  Para fazer com que todos estes circuitos se relacionem e funcionem há o firmware, conjunto de instruções que faz o hardware funcionar. No caso do PCI Express, não temos acesso ao firmware, a prova disso é que não podemos alterar o multiplicador de clock do PLL. Em algumas placas só temos acesso ao PLL externo (da placa-mãe) que gera o clock base do PLL do controlador PCIe, que como foi dito mais acima, é setado em 100 Mhz.

  O slot PCIe, como já foi dito, é uma conexão ponto-a-ponto. Esta conexão é responsável por ligar o circuito controlador PCIe que está presente no chipset da placa-mãe, ou no caso das placas mais novas, o controlador que está dentro da CPU. Para que o controlador envie e receba informações da placa que está conectada ao(s) slot(s) PCIe, estas informações devem estar codificadas.

  No caso da revisão 1.0 e 2.0 do padrão PCIe, era utilizada a codificação 8B/10B, e na revisão 3.0 é utilizada a codificação 128B/130B. Mas, o que significa 8B/10B e 128B/130B?

  Codificação 8B/10B: A cada 8 bits enviados, são acrescentados mais 2 bits, fazendo com que sequência tenha 10 bits no total. Para que esta codificação aconteça, tanto o controlador presente no chipset da placa-mãe ou na CPU, quanto o controlador da placa que está conectada no slot tem que dividir o pacote de dados a ser enviado (os 8 bits) em dois grupos: um de 5 bits (os bits menos significativos) para aplicar a codificação 5B/6B, e outro grupo de 3 bits (os bits mais significativos) para aplicar a codificação 3B/4B.

  A fórmula para o resultado desta codificação é:

  Calma! Não é multiplicação, nem nada. Esta é a maneira de explicar o resultado da codificação. "D" significa o dado (o pacote de 8 bits), "x" é o valor decimal do resultado da codificação 5B/6B, que é os 5 bits, e o "y" é o valor decimal do resultado da codificação 3B/4B, que é os 3 bits.

  Tem mais um quesito: não é só aplicar mais um bit em cada grupo. O total de 10 bits deve ter a mesma quantidade de 0 e 1 e deve respeitar uma determinada sequência padronizada, para que não fiquem longas sequências de zeros ou uns, fazendo com que o controlador possa errar. Para que o controlador faça a codificação é utilizado 3 tabelas.

  Veja a primeira tabela abaixo. Esta tabela se chama tabela de disparidade e o sistema a usa para saber se falta 1 bit(-1) ou não(+1) na sequência de 8 bits, para daí ser aplicado os 2 bits adicionais. Também é utilizada a disparidade do pacote de dados anterior para se saber qual coluna das outras duas tabelas vai ser utilizada:

   A segunda tabela mostra os valores de "Dx" para disparidade de "-1" e "+1" bit. Veja só:

   Veja agora a tabela para os valores de "y":

 EXEMPLO 1:

 

  Temos o código binário 00101010 para ser enviado. Sua codificação será:

  O código 00101010 será transmitido pelas trilhas da conexão PCIe na sequência 1101001001.

  Lembrando que este é só um exemplo. Para saber a codificação utilizada deve-se utilizar a tabela de disparidade para saber a disparidade do dado anterior e do dado a ser enviado.

   Esta é a codificação 8B/10B. É meio complexo entender esta explicação mas, é só para você ter uma ideia de como funciona a transferência de dados na realidade.

 

  Codificação 128B/130B: funciona da mesma forma que a codificação 8B/10B. A diferença é que se perde menos na taxa de transferência, já que apenas 2 bits extras são utilizados para codificar 128 bits, diferente do 8B/10B que para cada 8 bits era somado mais 2, ocupando 20% da largura de banda.

  Os 48 bits mais significativos utilizam uma tabela e os 80 bits menos significativos utilizam outra tabela. São milhares e milhares de combinações de zeros e uns, o que tornaria muito extenso e sem sentido mostra-las aqui, já que esse sistema funciona de forma similar ao 8B/10B.

  Este é o funcionamento da conexão PCI Express. O que achou do artigo? Faltou alguma coisa? Ficou com alguma dúvida? Mande suas dúvidas, sugestões e reclamações para hardwarecentrallr@gmail.com. Não se esqueça de curtir, comentar e compartilhar! Ajude a divulgar o site!

REFERÊNCIAS e CRÉDITOS

 

Fotos, diagramas, texto e animação: Leonardo Ritter

Referências: Livro de Redes de computadores de Gabriel Torres (codificação 8B/10B); Guia do Hardware; Clube do Hardware; Pinouts.ru; Biblioteca de diagramas do Hardware Central; Trabalho de engenharia reversa feito pelo autor deste texto.

 

Última atualização: 30 de Outubro de 2018.

Please reload

© 2019 Hardware Central Tecnologia Entretenimento e Comunicação do Brasil Ltda. Todos os direitos reservados.

Wix Editor / Revisão da web page: 3.0/2019 (07/10/19)