Barramentos da placa de CPU - parte 1/2

Autor: Laércio Vasconcelos
Setembro/2003
   

   

Conheça os detalhes técnicos sobre o funcionamento dos barramentos existentes em uma placa de CPU moderna: barramento local, barramento de memória, AGP, PCI, AMR, etc. Essas informações ajudarão você a entender mais a fundo o funcionamento de uma placa de CPU, e também do computador. 

Parte 2

Copyright (C)
Laércio Vasconcelos Computação

Nenhuma parte deste site pode ser reproduzida sem o consentimento do autor. Apenas usuários individuais estão autorizados a fazer download ou listar as páginas e figuras para estudo e uso próprio e individual, sem fins comerciais.

Barramentos internos e externos

Barramentos são conjuntos de sinais digitais através dos quais o processador transmite e recebe dados de circuitos externos. Alguns barramentos são usados para transmissões feitas entre placas, ou dentro de uma mesma placa. Existem vários barramentos nesta categoria:

Esses serão os barramentos estudados neste capítulo. Outros barramentos são usados para que o processador e a memória possam receber e transmitir dados para periféricos e dispositivos externos. Entre eles podemos citar os seguintes:

Figura 12.1

Principais barramentos de uma placa de CPU.

 

 

 

A figura 1 mostra o diagrama em blocos de uma placa de CPU. Nele podemos ver o processador, as memórias, os dois principais integrantes do chipset (North Bridge e South Bridge – ponte norte e ponte sul), a memória, os slots PCI e AGP, o barramento ISA, as interfaces IDE e USB, o chip Super I/O e suas interfaces. Neste capítulo estudarmos detalhadamente os seguintes barramentos indicados nesta figura:

1) Barramento do processador, barramento local ou barramento de sistema. É aquele através do qual o processador faz contato direto com o chipset, e a partir daí, com os demais barramentos. Especificamente este barramento é ligado ao chip chamado ponte norte, north bridge ou system controller.

2) Barramento da memória. Ligado diretamente na ponte norte, dá acesso aos soquetes nos quais são instalados os módulos de memória.

3) Barramento AGP. É usado para a instalação de uma placa de vídeo AGP.

4) Barramento PCI. Através deles podemos usar placas de expansão PCI. A maioria das placas de expansão atuais usam este barramento.

5) Barramento ISA. Usado na ligação com placas de expansão antigas que seguiam este padrão. Já existem placas de CPU que não apresentam mais o barramento ISA, mas no seu lugar utilizam um barramento interno chamado LPC, usado na comunicação com o BIOS e com o chip Super I/O.

O barramento do processador

Através deste barramento o processador faz a comunicação com o seu exterior. Nele trafegam os dados lidos da memória, escritos na memória, enviados para interfaces e recebidos de interfaces. Pode ser dividido em três grupos:

Figura 12.2

Barramento do processador.

 

 

 

Através do barramento de endereços o processador pode especificar qual a placa ou interface através da qual quer transmitir ou receber dados, e também especificar o endereço de memória no qual deseja ler ou armazenar dados. A maioria dos processadores modernos têm barramento de endereços com 36 bits, podendo assim endereçar até 64 GB de memória física. O barramento de dados tem 64 bits na maioria dos processadores modernos. O barramento de endereços é sempre unidirecional, ou seja, os bits são gerados pelo processador. O barramento de dados é bidirecional, ou seja, os dados são ora transmitidos, ora recebidos pelo processador.

O barramento de controle contém vários sinais que são necessários ao funcionamento do processador, bem como controlar o tráfego do barramento de dados. Alguns dos seus sinais são de saída, outros são de entrada, outros são bidirecionais. Existem sinais para indicação do tipo de operação (leitura ou escrita), sinais se especificação de destino/origem de dados (memória ou E/S), sinais de sincronismo, sinais de interrupção, sinais que permitem a outro dispositivo tomar o controle do barramento, sinais de clock, sinais de programação e diversos outros.

Na maioria dos casos, o barramento do processador é o mais veloz existente em uma placa de CPU, mas isto nem sempre ocorre. Por exemplo, uma placa de CPU pode ter o processador operando com barramento de 100 MHz e as memórias operando a 133 MHz. Ter a memória mais rápida é vantajoso no caso de placas com vídeo onboard, já que estaria sendo acessada, ora pelo processador, ora pelos circuitos de vídeo. Neste caso o barramento da memória seria o de tráfego mais intenso do computador.

Velocidade do barramento do processador

Os barramentos de todos os processadores modernos operam de forma síncrona, ou seja, os eventos são sincronizados com um sinal de clock. Nos processadores antigos, cada operação era feita em dois, três ou mais períodos de clock. Nos processadores modernos, cada operação pode ser feita em um só período de clock. Infelizmente nem sempre as memórias e outros dispositivos são tão velozes a ponto de acompanhar esta velocidade, e assim são feitas prorrogações chamadas de wait states. Por exemplo, um Pentium III operando com 64 bits (8 bytes) e clock de 100 MHz externos, oferece uma taxa de transferência máxima de 800 MB/s (100 MHz x 8). Na prática este valor não é alcançado, pois nem todas as transferências podem ser feitas em um único ciclo. Por exemplo, todas as memórias modernas podem transferir dados a cada período de clock, porém o primeiro dado demora mais estar pronto, é o que chamamos de latência. Devido às latências das memórias e de outros dispositivos mais lentos, a taxa de transferência máxima nunca é obtida na prática.

A velocidade máxima teórica de um barramento é um ponto bastante importante, por isso vamos discutir o assunto com mais detalhes. Tanto é assim que ao lançar novos processadores (como o caso do Athlon/Duron e do Pentium 4 e Itanium), a Intel e AMD se preocuparam em oferecer taxas de transferência bem elevadas. Para calcular a taxa de transferência, basta multiplicar o clock externo do processador pelo número de bytes do seu barramento de dados. No caso de processadores que operam com DDR (Athlon e Duron) o clock deve ainda ser multiplicado por 2, e para processadores que operam com QDR (Quad Data Rate, como é o caso do Pentium 4 e do Xeon), o clock deve ser multiplicado por 4. A tabela a seguir mostra a taxa de transferência máxima teórica dos principais processadores produzidos nos últimos anos.

Processador

Clock externo

Transferências por ciclo

Taxa de transferência máxima teórica

Pentium / Pentium MMX

66 MHz

1

533 MB/s

K6-2 / K6-III

100 MHz

1

800 MB/s

Pentium II / Celeron

66 MHz

1

533 MB/s

Pentium II 350+

100 MHz

1

800 MB/s

Pentium III, Celeron-800+

100 MHz

1

800 MB/s

Pentium IIIB

133 MHz

1

1066 MB/s

Atlhlon / Duron

100 MHz

2

1600 MB/s

thlon / Duron

133 MHz

2

2133 MB/s

Pentium 4, Xeon

100 MHz

4

3200 MB/s

As latências das memórais impedem que essas taxas sejam obtidas na prática. Um outro fator pode ainda fazer com que a taxa real seja ainda menor. Por exemplo, se um processador Athlon ou Duron operando com barramento de 100 MHz (200 MHz efetivos usando DDR) for ligado a memórias PC133, o desempenho do seu barramento será menor que o de um processador que use barramento de 133 MHz, e não de 200 MHz.

Exemplo de barramento: Pentium MMX e Socket 7

Sempre encontramos nos manuais dos processadores, disponíveis no sites dos seus fabricantes, especificações detalhadas sobre seus barramentos. Apenas como ilustração, mostraremos a seguir algumas informações sobre o barramento do processador Pentium MMX, compatível com os utilizados por outros processadores para o Socket 7. A figura 3 mostra a numeração dos pinos do processador, bem como os nomes recebidos por cada um desses pinos.

Figura 12.3

Pinagem do Pentium MMX.

 

 

 

Observe que vários pinos têm as indicações VSS, VCC2 e VCC3. Os 53 pinos VSS são ligados ao terra da placa de CPU (tensão de 0 volts). Os 28 pinos de VCC3 são para a tensão externa do processador, com 3,3 volts. Os 25 pinos de VCC2 recebem no caso do Pentium MMX, uma alimentação de 2,8 volts, porém em outros processadores esta alimentação tem valores diferentes, e normalmente menores. Esta tensão alimenta o núcleo do processador. O uso de vários pinos de alimentação serve para garantir uma melhor distribuição de correntes dentro do chip e ao longo da placa de CPU.

A figura 4 mostra os barramentos de dados e de endereços. São ao todo 29 pinos de endereços (A3 a A31), com os quais podem ser endereçadas 512 M células de 64 bits, totalizando 4 MB. Como cada célula de 64 bits pode ter seus bytes endereçados individualmente, este processador tem mais 8 sinais de controle (BE0-BE7) que fazem este endereçamento adicional. Por exemplo, o processador pode especificifar uma célula de 64 bits qualquer e através dos sinais BE0-BE7, acessar apenas o valor de 8 bits armazenado no 3o byte desta célula, ou o valor de 16 bits armazenado no 5o e no 6o, bytes, ou ainda acessar o valor de 32 bits encontrado no 2o, 3o, 4o e 5o byte. Pode ainda usar a célula inteira como um valor de 64 bits, ou então obter esses 64 bits, parte da célula atual e parte da célula seguinte. A figura 4 mostra anda os 64 pinos que formam o barramento de dados (D0 a D63).

Figura 12.4

Barramentos de dados e de endereços do Pentium MMX.

 

 

 

O mais complexo barramento do processador é o do controle, onde encontramos  uma grande miscelânea de sinais (figura 5). Alguns são de fácil entendimento, bastando ter conhecimentos básicos sobre o funcionamento externo de um processador. Vamos apresentar alguns desses sinais, apenas para fins ilustrativos. Para obter mais detalhes específicos sobre o funcionamento de cada um desses sinais, é preciso fazer o download do manual do processador de interesse. Esses manuais são encontrados nos sites dos fabricantes, como Intel, AMD e VIA.

Figura 12.5

Sinais de controle do Pentium MMX.

 

 

 

Aqui vão portanto as descrições de alguns desses sinais:

Sinal

Descrição

A20M

Usado para dar acesso à chamada memória HMA, que consiste nos primeiros 64 kB localizados após o endereço 1M. É usado quando o processador opera no Modo Real, ou seja, o mesmo utilizado pelo MS-DOS.

ADS

Address Strobe. Indica que o processador está iniciando um novo ciclo. Os ciclos podem ser de leitura da memória, escrita na memória, leitura de I/O, escrita em I/O, etc.

AP e EADS

Usados para geração e checagem de paridade no barramento de endereços.

BF0 e BF1

Indica o multiplicador usado para definir o clock interno, em função do clock extenro (2x, 2,5x, 3x e 3,5x, no caso do Pentium MMX). Processadores como o K6-2 possuem ainda um pino adicional BF2 para a definição de multiplicadores maiores. Esses pinos são ligados aos jumpers da placa de CPU que fazem a programção dos multiplicadores.

BRDY

Indica ao processador se a atual transferência em modo burst já está finalizada ou se devem ser usados wait states.

CLK

Através desta entrada o processador recebe o seu clock externo.

CPUTYP

Usado para distinguir entre processador primário e secundário, em placas equipadas com mais de um processador.

D/C

Data/Code. Através deste sinal o processador indica se está fazendo um acesso a dados ou a instruções de programas.

DP0-DP7

Usados para geração e controle de paridade no barramento de dados. Cada um desses 8 sinais representa a paridade de 8 bits do barramento de dados.

FERR

Floating Point Erros. Usado para indicar a ocorrência de um erro de ponto flutuante, resultante de uma operação matemática inválida feita pela unidade de ponto flutuante, como uma divisão por zero ou raiz quadrada de um número negativo.

HOLD

Por esta entrada o processador recebe uma requisição para que entre em alta impedância (tristate), possibilitando que outro chip tome o controle do barramento. É usado em transferências de DMA e Bus Mastering.

HLDA

HOLD Acknowledge. O processador informa que está entrando em modo de tristante. A partir daí o barramento pode ser usado por outros chips.

M/IO

O processador indica se está acessando uma posição de memória ou uma interface de I/O (entrada e saída).

R/W

O processador indica se está realizando uma operação de leitura ou escrita.

RESET

Ao receber um comando nesta entrada, o processador realiza seu processo de RESET interno. Este sinal deve ser ativado mediante o botão RESET do gabinete, e também quando o computador é ligado (Power-on RESET).

Esses são apenas alguns dos sinais de controle deste processador, que são encontrados também nos processadores mais modernos. Nossa intenção aqui não foi descrever detalhadamente todos os sinais, mas apenas dar ao leitor uma idéia do tipo de função realizada por esses sinais.

O barramento das memórias

Nas placas de CPU antigas, as memórias eram ligadas diretamente ao barramento do processador, através de chips chamados buffers bidirecionais. Esses chips tinham como único objetivo amplificar a corrente vinda do processador, permitindo que o barramento de dados fosse ligado a um número grande de chips de memória. Portanto a velocidade do barramento do processador era igual à velocidade do barramento das memórias.

Velocidade do barramento das memórias

Atualmente as memórias são ligadas ao processador através do chipset. A função do chipset nesta conexão não é de apenas aplificar corrente. A maioria dos chipsets possui registradores que permitem que a memória opere de forma assíncrona ao processador, ou seja, com um clock diferente. Alguns chipsets podem ter o processador operando a 100 MHz e as memórias a 66, ou 133 MHz. Outros podem ter o processador operando a 200 MHz e as memórias a 133. Existem vários outros exemplos de clocks diferentes. Nesses casos dizemos que a memória está operando de forma assíncrona ao processador.

Podemos encontrar barramentos de memória operando com diversas velocidades:

Tipo de memória

Clock

Transferências por ciclo

Taxa de transferência máxima teórica

FPM, EDO

66 MHz

1/3

176 MB/s (*)

SDRAM PC66

66 MHz

1

533 MB/s

SDRAM PC100

100 MHz

1

800 MB/s

SDRAM PC133

133 MHz

1

1067 MB/s

DDR200

100 MHz

2

1600 MB/s

DDR266

133 MHz

2

2133 MB/s

DDR300

150 MHz

2

2400 MB/s

DDR333

166 MHz

2

2666 MB/s

DDR400

200 MHz

2

3200 MB/s

RDRAM

100 MHz

4

3200 MB/s (**)

(*) Memórias FPM e EDO gastam de 2 a 4 ciclos em Page Mode para fazer cada transferência, por isso consideramos uma média de 3 ciclos para cada transferência, ou 1/3 de transferência a cada ciclo.

(**) Um módulo RDRAM opera com 1600 MB/s, porém são usados aos pares, resultando em 3200 MB/s. Note ainda que a DDR SDRAM mais veloz indicada na tabela é a DDR400, porém na época em que a RDRAM oferecia 3200 MB/s, a DDR mais veloz era a DDR266. Juntamente com a chegada de chips DDR mais velozes, chegarão tambem ao mercado chips RDRAM também com maior velocidade.

As taxas de transferência mostradas na tabela acima são meros limites teóricos, e nunca são obtidos na prática. São taxas momentâneas que vigoram apenas quando a transferência se dá em modo burst. Essas taxas não são sustentadas por períodos significativos, já que a cada 3 transferências em que usam um só ciclo, é exigida uma transferência inicial que dura 2 ou 3 ciclos (latência 2 ou 3), resultando em temporizações como 2-1-1-1 ou 3-1-1-1, o que resulta em 0,8 e 0,75 transferências por ciclo, em média. Mais tempo é perdido antes de cada transferência, ao serem usados os comandos de leitura e gravação, onde mostramos como são as formas de onda dos acessos aos vários tipos de memória). Finalmente um outro fator contribui para reduzir ainda mais o desempenho, que é a atuação da cache. A maioria dos acessos à memória passam pelas caches do processador, mas certos ciclos podem ser feitos no modo uncached. O processador estaria neste caso fazendo leituras e escritas diretamente na memória, e sem usar o modo burst (transferências da cache são feitas em grupos de 4 acessos consecutivos).

Os sinais de um barramento de memória

Existem algumas diferenças, principalmente no número de bits do barramento de dados e de endereços dos chips de memória. Já o barramento de memória não admite variações. Existe um padrão que deve ser seguido por todos os fabricantes. Por exemplo, os barramentos dos módulos SDRAM DIMM/168 devem ter sempre 64 ou 72 bits. Diferenças podem existir nos barramentos de endereços, já que módulos de maior capacidade exigem mais bits para seu endereçamento. Entretanto, no mesmo soquete onde instalamos um módulo de 512 MB, também precisam ser suportados módulos de menores capacidades, o que resulta em variações no número de bits de endereços. Essas diferenças não são uma despadronização. O que ocorre é que o barramento deve ser compatível com módulos de diferentes capacidades. Outros sinais são padronizados em módulos de qualquer capacidade. Por exemplo, os sinais RAS e CAS dos módulos SDRAM DIMM/168 devem sempre ocupar os pinos 115 e 111, respecticamente. A figura 6 mostra a utilização de todos os pinos do barramento utilizado pelas memórias SDRAM DIMM/168.

Figura 12.6

Pinagem de um barramento de memória SDRAM DIMM/168.

 

 

 

A seguir apresentamos uma breve descrição dos mais importantes sinais de um barramento de SDRAM DIMM/168.

Sinal

Descrição

RAS

Row Address Strobe. Ligado diretamente aos pinos de RAS dos chips de memória encontrados nos módulos DIMM/168.

CAS

Column Address Strobe. Ligado diretamente aos pinos de CAS dos chips de memória.

WE

Write Enable. Também ligado nos pinos de mesmo nome nas memórias, é usado para indicar se a atual operação é de leitura (bit 1) ou escrita (bit 0).

CK0-CK3

São sinais idênticos e transmitem aos chips do módulo, os sinais de clock necessários aos seu funcionamento. Em módulos PC133, este clock é de 133 MHz.

DQ0-DQ63

São os 64 bits do barramento de dados do módulo.

CB0-CB7

São 8 bits adicionais usados para checagem de erros (Paridade ou ECC)

A0-A12

Barramento de endereços, especifica a célula de memória a ser acessada.

BA0, BA1

Selecionamento de banco. Cada chip de SRAM possui 4 bancos internos. Esses dois bits são usados para o selecionamento do banco desejado. O mesmo selecionamento é enviado a todos os chips do módulo.

S0, S1, S2, S3

Selecionamento de banco dentro do módulo. Existem módulos de 1 e de dois bancos. Normalmente os de 1 banco usam chips de um só lado, enquanto os de 2 bancos possuem chips em ambos os lados. O primeiro banco é sempre ativado pelos sinais S0 e S2, enquanto o segundo banco, quando existe, é ativado pelos sinais S1 e S3.

DQMB0-DQMB7

Cada um desses 8 bits de controle ativa o bits consecutivos do barramento de dados do módulo. DQMB0 habilita os bits DQ0-DQ7; DQMB1 habilita os bits DQ8-DQ15, e assim por diante, até DQMB7 que habilita os bits DQ56-DQ63. Através desses controles, o chipset, mediante comando apropriado do processador, pode acessar grupos de 8, 16, 32 ou 64 bits na célula endereçada. Isso é útil, por exemplo, quando é preciso gravar um dado em um único byte, ou em outras porções menores que os 64 bits do barramento de dados do módulo.

VCC

Alimentação de +3,3 volts.

VSS

Ligados ao terra

Células de memória em um módulo DIMM têm 64 bits, ou seja, 8 bytes. É interessante observar como essas células são endereçadas. São usados 3 grupos de sinais:

Sinais

Funcionamento

S0, S1, S2 e S3

Esses sinais fazem a distinção entre módulos de face simples e de face dupla. Nos módulos de face simples, devem ser ativados simultaneamente os sinais S0 e S2. Nos módulos de face dupla, os sinais S0 e S2 ativam os chips de uma face, e os sinais S1 e S3 ativam os chips da outra face. Mais especificamente:

S0 ativa os bits DQ0-DQ31 da primeira face
S2 ativa os bits DQ32-DQ63 da primeira face
S1 ativa os bits DQ0-DQ31 da segunda face
S3 ativa os bits DQ32-DQ63 da segunda face
 

Portanto esses sinais podem representar até 2 combinações:

S0 e S2 ativos
S1 e S3 ativos

BA0, BA1

Esses sinais são enviados a todos os chips do módulo. Servem para selecionar um dos 4 bancos internos que um chip de SDRAM pode ter. Portanto esses sinais podem representar 4 combinações:

Banco 0: BA1=0 e BA0=0 
Banco 1: BA1=0 e BA0=1
Banco 2: BA1=1 e BA0=0
Banco 3: BA1=1 e BA0=1

A0-A11 ou

A0-A12

Dependendo da capacidade do módulo, podem existir 12 bits (A0-A11) ou 13 bits (A0-A12) de endereçamento. Este grupo de bits é usado duas vezes para indicar a linha e a coluna desejada, juntamente com os sinais RAS e CAS. Podem portanto fornecer nas duas etapas, 24 ou 26 bits de endereços. Desta forma é possível endereçar 16M (224) ou 64M (226) células.

Sendo assim, a capacidade de um módulo de memória depende obviamente do número e da capacidade dos chips, mas também deve estar de acordo com o número de faces e do número de bits de endereço. Por exemplo, para módulos com 12 bits de endereços e face dupla, a capacidade máxima permitida é de:

16M x 2 bancos por módulo x 4 bancos internos x 8 bytes por célula =
= 1024 MB

A tabela abaixo mostra as capacidades máximas dos módulos em função do número de bits de endereços e do número de faces:

Endereços