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
106 hz
P = 10 /
106 = 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