Lógica Temporizada


Conforme vimos ao analisar a comunicação entre UCP e memória, as instruções, os dados e os endereços "trafegam" no computador através dos barramentos (de dados, de endereços e de controle), sob a forma de bits representados por sinais elétricos: uma tensão positiva alta ("high" - geralmente no entorno de 3 volts) significando "1" e uma tensão baixa ("low" - próxima de zero) significando "0". Mas os dados no computador não ficam estáticos; pelo contrário, a cada ciclo (cada "estado") dos circuitos, os sinais variam, de forma a representar novas instruções, dados e endereços. Ou seja, os sinais ficam estáticos apenas por um curto espaço de tempo, necessário e suficiente para os circuitos poderem detetar os sinais presentes no barramento naquele instante e reagir de forma apropriada. Assim, periodicamente, uma nova configuração de bits é colocada nos circuitos, e tudo isso só faz sentido se pudermos de alguma forma organizar e sincronizar essas variações, de forma a que, num dado instante, os diversos circuitos do computador possam "congelar" uma configuração de bits e processá-las. Para isso, é preciso que exista um outro elemento, que fornece uma base de tempo para que os circuitos e os sinais se sincronizem. Este circuito é chamado clock - o relógio interno do computador. Cada um dos estados diferentes que os circuitos assumem, limitados pelo sinal do clock, é chamado um ciclo de operação.

Clock


A Unidade de Controle da UCP envia a todos os componentes do computador um sinal elétrico regular - o pulso de "clock" - que fornece uma referência de tempo para todas as atividades e permite o sincronismo das operações internas. O clock é um pulso alternado de sinais de tensão, gerado pelos circuitos de relógio (composto de um cristal oscilador e circuitos auxiliares).

Ciclo de Operação


Cada um destes intervalos regulares de tempo é delimitado pelo início da descida do sinal, equivalendo um ciclo à excursão do sinal por um "low"e um "high" do pulso.

O tempo do ciclo equivale ao período da oscilação. A física diz que período é o inverso da freqüência. Ou seja,
P = 1 / f.
A freqüência f do clock é medida em hertz. Inversamente, a duração de cada ciclo é chamada de período, definido por P=1/f (o período é o inverso da freqüência).

Por exemplo, se f = 10 hz logo P = 1/10 = 0,1 s.

1 Mhz (1 megahertz) equivale a um milhão de ciclos por segundo. Sendo a freqüência de um processador medida em megahertz, o período será então medido em nanosegundos, como vemos no exemplo abaixo:
f = 10 Mhz = 10 x 10
6 hz
P = 10 / 10
6 = 100 ns (1 nanosegundo).

Sempre que se fala sobre máquinas velozes, citamos números em megahertz. Para um melhor entendimento sobre o que ocorre na máquina, em vez de falar sobre a freqüência do clock seria mais ilustrativo discutirmos uma outra grandeza: o período (isto é, o tempo de duração de cada ciclo ou simplesmente tempo de ciclo).

Quando se diz que um processador é de 200 Mhz, está-se definindo a freqüência de operação de seu processador (seu clock), significando que o processador pode alternar seus estados internos 166 milhões de vezes por segundo. Isto acarreta que cada ciclo (equivalente a um estado lógico) de operação dura
1 / 200.000.000 s = 5 x 10
-9 s ou seja, 5 nanosegundos.

Como podemos ver pelo exemplo a seguir, o processador com o clock ilustrado em (B) teria um tempo de ciclo cinco vezes menor que o (A) e portanto teria (teoricamente) condições de fazer cinco vezes mais operações no mesmo tempo.

Quando analisamos os números de clock de um processador ou barramento, pode ficar uma impressão que esses números não fazem sentido: 133 MHz, 166 MHz ... Vejamos como ficam seus períodos, e como esses números apresentam um padrão regular:

Freqüência (MHz) Período (ns)
25 40
33 30
40 25
50 20
66 15
100 10
133 7.5
166 6
200 5
266 3.75

 

Os primeiros computadores tinham um único sinal de clock geral, válido para UCP, memória, barramentos de E/S (entrada / saída), etc. À medida que a tecnologia foi se aperfeiçoando, a freqüência de clock de operação dos processadores (e, em menor escala, também a das memórias) aumentou em uma escala muito maior que a dos demais componentes. Desta forma, foi necessário criar diferentes pulsos de clock para acomodar as freqüências de operação dos diferentes componentes. A placa-mãe de um PC utiliza uma freqüência-mestra (hoje em geral de 66 Mhz, equivalente a um período de 15 ns, estando em prancheta placas para 100 MHz) para seu barramento (ciclo de barramento), a qual é multiplicada ou dividida para ser utilizada pelos demais componentes:
· o processador tem essa freqüência multiplicada por 2 (133 Mhz) a 4 (266 MHz),
· o barramento PCI usa freqüências reduzidas pela metade (33 Mhz),
· as memórias (ciclos da ordem de 60 ns) usam freqüências reduzidas a um quarto e
· as cache secundárias (ciclos entre 10 e 20 ns) usam a própria freqüência da placa-mãe.
As memórias cache primárias são hoje construídas como parte do processador e usam o mesmo clock do processador.

O efeito prático (econômico$$$$) do aumento da freqüência de operação é que a precisão de fabricação dos circuitos tem que ser também maior. O tamanho de cada junção de transistor fica menor (hoje são construídos chips com 0,35 microns e uma nova geração com 0,25 microns está em gestação). Uma junção menor requer menor potência para sua operação, menos elétrons para operar uma transição de estados, menor tempo de propagação do sinal, menor potência dissipada.

Em conseqüência da grande precisão exigida, apenas uma pequena parcela dos processadores fabricados (cerca de 5%) consegue operar na máxima freqüência para a qual foram projetados, e a maioria é certificada para operar a freqüências mais baixas. Isto acarreta que, embora todos os processadores de um tipo sejam fabricados pelos mesmos processos e nas mesmas máquinas, apenas alguns serão certificados para a máxima freqüência prevista, o que obriga que o preço dos processadores de clock máximo seja muito mais caro que o dos muitos outros que não obtiveram certificação para aquele elevado clock e serão vendidos com "tags" de 166 ou 133 Mhz, a preços reduzidos.

Instruções por ciclo


Qual a real importância e significado da freqüência do processador?

Quando se faz uma soma em uma calculadora, basta teclar cada um dos algarismos do 1º número, teclar o sinal de mais, depois teclamos os algarismos do segundo número e teclamos o sinal de igual.

É comum pensar que nos computadores as coisas se passam mais ou menos do mesmo jeito. No entanto, a soma propriamente dita é a menor das tarefas que um computador executa quando soma dois números. Neste exemplo, o computador precisaria localizar a instrução de soma na memória e movê-la para a UCP. Esta instrução estaria codificada na forma de dígitos binários e teria que ser decodificada para determinar a operação a ser realizada (no caso, ADD), o tamanho dos dados (quantas células eles ocupam), determinar a localização e buscar cada um dos números na memória, e só então, finalmente, fazer a soma. Para o computador, a soma é realmente a parte mais simples e mais rápida de toda a operação, já que decodificar a instrução e principalmente obter os dados tomam a maior parte do tempo (este assunto será discutido no Capítulo sobre
Representação de Instruções).

Cada nova geração de processadores tem sido capaz de executar as operações relativas ao processamento de uma instrução em menor número de ciclos do clock (ver seção sobre Pipeline em
Tópicos Avançados de Arquitetura). Por exemplo, na família Intel x86:
- 386 - mínimo de 6 ciclos por instrução de soma de 2 números
- 486 - em geral, 2 ciclos por instrução de soma de 2 números
- Pentium - 1 ciclo por instrução de soma de 2 números
- Pentium Pro - 1 ciclo por instrução de soma de 3 números; na soma de mais números, quando um dos números está em memória de baixa velocidade, o Pentium Pro é capaz de "pular" este número e, enquanto busca o número que falta, seguir adiante, buscando e somando os demais números para finalmente incluir o número que faltava na soma.

Usando uma analogia com um automóvel, para andar mais rápido geralmente é mais eficaz trocar de marcha do que acelerar. Comparativamente, um processador de 66 Mhz hoje equivaleria a uma pequena pressão no acelerador e um de 300 Mhz ao acelerador pressionado até o fundo (pé na tábua!). Mas, se um 8088 fosse a 1ª marcha, um Pentium II seria equivalente à 5ª marcha e seria certamente muito mais rápido, mesmo que fosse possível "acelerar" o 8088 ao mesmo clock do Pentium. Se compararmos um 486 DX4-100 (100 Mhz) com um Pentium também de 100 Mhz, veremos que o Pentium 100 será substancialmente mais rápido, o que se deve à sua arquitetura e não ao clock.

É portanto um engano comparar apenas a freqüência do clock: o desempenho do processador deve ser avaliado por um conjunto de características da arquitetura, do qual a freqüência do clock é apenas um deles - e não o mais importante (mais detalhes serão apresentados no capítulo anterior