O Clock e a Lógica Temporizada
Este foi o termo que encontrámos em Português para nos referirmos a Clocked Logic, responsável pela sincronização do que se passa no computador. Nos circuitos que vamos analisar de seguida, vamos falar frequentemente de pulsos de tensão e de ciclos de clock. Por isso entendemos ser agora a ocasião de abordarmos o tema, para podermos prosseguir com um melhor conhecimento sobre esse dito clock.
Então o que é o clock?
Quando uma voltagem é aplicada sobre um cristal de quartzo ele emite pulsos de tensão a uma certa frequência. Esta frequência depende da configuração (tamanho e forma) do dito cristal. Por isso, cada cristal de quartzo vibra a uma frequência muito precisa e constante. Esta vibração é medida em Hertz (Hz). Um Hertz corresponde a um ciclo por segundo.
Por exemplo, um cristal de quartzo a vibrar a uma frequência de 1,000 ciclos por segundo (1,000 Hz ou 1kHz) diz-nos, com uma precisão exata que, por cada mil pulsos um segundo passou. A lógica por detrás dos relógios de quartzo é precisamente esta. Após cada número específico de pulsos um contador sinaliza que um segundo passou. Referimos aqui o contador binário, um circuito que vamos analisar mais à frente.
É precisamente um cristal deste tipo que sincroniza toda a lógica de um computar, onde estas frequências são chamadas de clock.
Quando dizemos que um processador tem uma velocidade (??) de 3 GHz, na verdade o que queremos dizer é que o processador opera com uma frequência de clock de 3 mil milhões de pulsos (ou ciclos) por segundo. Esta característica não é velocidade, mas sim a frequência do clock.
E para que serve este clock?
Os bits, andam em grupos de 8, 16, 32 ou 64, conforme a capacidade dos registadores e do barramento do processador em questão for de 8, 16, 32 ou 64 bits, a executar as tarefas que a CPU lhes entrega.
Como vimos no circuito que criámos para a multiplicação, cada um dos bits envolvidos no processo tem tarefas diferentes. Uns cumprem-nas de imediato e os restantes vão-nas cumprindo uns após os outros levando mais tempo, porque todos têm caminhos diferentes a percorrer.
Imaginemos agora que o nosso grupo de bits tem que entregar uma mensagem, uma Palavra p. e., e que cada bit é responsável por encontrar e entregar uma Letra dessa Palavra.
Como é que nós conseguimos saber quando é o fim, isto é, quando todos os bits do grupo podem ser lidos com a Letra correta, para que possamos estar certos de ter a Palavra correta da mensagem?
Bom, para que isso seja possível é necessário estabelecer uma barreira, assim como que uma linha de chegada de uma corrida, onde cada um vá chegando com a Letra que transporta, a sua contribuição para o resultado.
Certo! E como é que determinamos o local exato onde todos se vão encontrar com as Letras que compõem a Palavra, para que esta possa ser lida?
Provavelmente o melhor é criar um local onde os bits mais apressados esperam pelos mais atrasados, para que uma vez todos juntos mostrem em conjunto as suas partes da informação.
Mas eles não vão ficar à espera para sempre. É preciso estabelecer um intervalo de tempo para que todos lá cheguem.
Pois é precisamente aqui que entra a temporização da lógica. Todas as tarefas têm um intervalo de tempo para serem executadas, concedido pela CPU aos seus bits. Até ao fim desse intervalo de tempo todos têm que cumprir a sua função.
E esse intervalo de tempo é regulado precisamente pelo ciclo de clock, que vai ter um papel de sincronização de toda atividade na CPU e no computador.
Os bits sabem que só podem executar uma tarefa em cada ciclo. Por isso param e esperam pelos outros para iniciarem nova função em novo ciclo.
E como é que eles sabem onde esperar?
Ora aí está uma boa questão. Não é certamente no ponto do seu percurso onde concluem a tarefa que lhes diz respeito. Assim cada qual ficaria num local indefinido e como faria depois a CPU para os ver a todos juntos.
Essa paragem é feita em circuitos específicos de que já iremos falar a seguir, p. e. as Básculas, que são assim como umas estalagens que ficam nos caminhos dos bits.
Essas estalagens têm nas suas entradas uma agradável hospedagem para os bits que vão chegando, cansados de um dia de intensa atividade. Uma vez chegados, instalam-se e ficam à espera dos restantes bits do grupo. Depois de todos juntos e de mostrarem as suas Letras para que a Palavra da mensagem possa ser lida, estão prontos para iniciar novo dia de atividade.
A lógica temporizada é precisamente a ferramenta de que a CPU dispõe para poder assegurar-se de poder organizar e sincronizar as informações que circulam num circuito do computador, para que num dado instante possa congelar uma determinada configuração de bits e processá-la.
Para isso dispõe de uma base de tempo para que os circuitos e os sinais se sincronizem. Essa base de tempo é fornecida pelo clock.
Mas então, como é que o processador se entende com os outros componentes do computador que não conhecem esse dito clock ?
Nos primeiros processadores a frequência de clock era de alguns MHz, isto é, milhões de pulsos por segundo, sendo o comportamento dos componentes do computador regulada por esse clock, igual para todos.
Com a evolução da tecnologia de construção da CPU, baixaram-se as tensões de trabalho e atingiram-se frequências de vibração da ordem dos 3 GHz, ou seja, 3 mil milhões de ciclos de operações por segundo.
Ora, a CPU comunica com a memória e com outros componentes do computador através das linhas de cobre que constituem o circuito impresso das placas mãe.
Com o crescimento das frequências do processador, a partir de determinado valor, essas linhas convertiam-se em antenas e geravam ou captavam ruído (interferência eletromagnética) que podia deturpar os sinais emitidos.
As frequências de vibração dos diversos componentes do computador foram evoluindo de forma diferente da CPU.
As diferentes dimensões das linhas percorridas por cada um dos bits gerou um fenómeno com o nome de “timing skew“.
Timing Skew é um fenómeno que tem a ver com limitações impostas pela velocidade de propagação de um sinal elétrico num fio condutor. Quando a frequência de clock sobe a tal ponto que, devido à diferença do comprimento entre linhas, algum bit da mesma palavra não chega ao seu destino antes do novo ciclo de clock, a informação que fica no destino será errada.
Este corresponde ao caso em que alguns bits não conseguiram chegar à meta dentro do tempo que lhes foi concedido pela CPU. O resultado ficou corrompido porque lhe faltaram partes.
Concluindo, com a evolução diferente e condicionada do valor do clock nos diversos componentes do computador mas continuando a ser necessário sincronizá-los todos entre si, teve que se encontrar forma de, gerando um sinal de clock único, fazê-lo chegar aos diversos componentes com o valor próprio de cada um.
O gerador de frequências, o cristal de quartzo, é um componente da Placa Mãe, circuito impresso ao qual todos os componentes do computador se ligam e pelo qual se interligam.
A Placa Mãe dispõe do Chip PLL (Phase Locked Loop) responsável pela correção da frequência do clock gerado para o valor de cada componente e de Chips que conhecem a frequência de clock de todos os componentes permitindo a sua sincronização.
Ao valor de clock atribuído à CPU chama-se Clock interno da CPU. Ao valor de clock dos barramentos da Placa Mãe chama-se Clock externo da CPU.
Esperamos ter deixado claro o conceito de clock e o seu importante contributo para a sincronização de todas as atividades dentro do computador. Não vamos para já avançar mais com este tema nem falar sobre questões ligadas às frequências de clock dos barramentos, das memórias e outros componentes. Falaremos desta questão quando abordarmos o tema Placa Mãe, pois para já só vinham confundir.
Estamos a desenvolver o nosso trabalho num computador com um processador elementar de 8 bits e com um barramento de 8 bits. As frequências de clock, porque baixas, são as mesmas para todos os componentes. É neste pressuposto que vamos evoluir.
O ciclo de clock, é dividido em quatro fases, como se pode ver na Figura 1. Essas 4 fases são:
- a subida, ou flanco ascendente
- o período estável e com tensão (em 1).
- a descida, ou flanco descendente
- o período estável e sem tensão (em 0).
Embora a definição de fases num período de tempo ínfimo nos seja muito difícil de entender, porque a nossa escala de tempo é muito diferente, para o computador é uma realidade.
Em certas situações, principalmente quando a saída de um circuito é tratada noutros circuitos e retorna à entrada do primeiro, é muito provável que isso se passe ainda dentro do mesmo ciclo de clock.
Admitamos que a eletricidade se desloca no meio condutor a cerca de 300.000 Km/s, ou seja, 0,3 metros em um nanossegundo. Um circuito com a frequência de clock de 3 GHz, repete o ciclo 3 vezes em cada nanossegundo,isto é, o clock repete-se a cada 1/3 de nanossegundo. Durante esse período, um bit pode percorrer 1/3 x 0,3 =0,10 metros ou ainda, 100.000.000 de nanómetros.
Mesmo dando os descontos dos atrasos em transístores e outros componentes, até mesmo na propagação no meio condutor, como se pode ver, para a máquina a duração do pulso é uma infinidade de tempo, durante a qual a subida e descida de tensão são entidades mensuráveis e significativas.
Este último parágrafo demonstra bem a importância das investigações que a eletrónica tem feito no campo dos tempos e atrasos de propagação em nano circuitos.
Por exemplo, num chip com 2 milhares de milhões de transístores em cerca de 1 cm2, quantos transístores tem que atravessar o bit que tem o seu percurso no circuito mais longo?
São valores que parecem insignificantes, mas que condicionam a frequência do processador, perante a qual já não são insignificantes.
Então os circuitos do computador funcionam por partes? Isto é, umas vezes estão desligados e outras não, conforme o clock está em alta ou em baixa?
Os circuitos do computador são alimentados por corrente contínua. Uma informação em circulação pelos seus circuitos estaria em permanente movimento até que a alimentação fosse desligada se não fosse parada algures.
É o sinal de clock que lança os bits com a informação no circuito, colocando-os na saída das básculas. Mas para analisarmos esta questão temos que falar de circuitos que ainda não analisámos, as Básculas.
Portanto, antes de prosseguirmos sugerimos que vão ao artigo Circuitos de Memorização deste Capítulo e leiam o que lá se diz sob re Básculas D.
Mas então qual é o papel da Lógica Temporizada no meio de toda esta confusão de movimentos permanentes?
Relembramos a definição que há pouco mencionámos:
A lógica temporizada é a ferramenta de que a CPU dispõe para poder assegurar-se de poder organizar e sincronizar as informações que circulam num circuito do computador, para que num dado instante possa congelar uma determinada configuração de bits e processá-la.
Pois é exatamente este o papel do clock ajudado pelas Básculas, estrategicamente colocadas ao longo dos circuitos. O clock, quando se levanta ou quando se deita, lança os bits num determinado circuito, quando os coloca nas saídas das Básculas.
A partir daí eles vão percorrer livremente e pelo tempo que lhes foi definido pelo clock o circuito que lhes está destinado, no qual vão acionar portas de transístores e atravessar outros, até chegarem a outra Báscula colocada no circuito.
Aí vão ficar de novo dependentes do clock, presos na sala de entrada à espera que ele, ao acordar ou ao deitar-se, os liberte de novo para a saída da mesma, onde iniciarão nova tarefa percorrendo o circuito.
Então as Básculas, são a ferramenta de que a Lógica Temporizada dispõe, para congelar uma determinada configuração de bits e processá-la. E o Clock é a ferramenta de que a Lógica Temporizada dispõe para acionar as Básculas e para determinar o tempo máximo que os bits têm para executar uma tarefa.
Portanto, as informações (os bits) propagam-se permanentemente num circuito de um computador, durante o dia e a noite do clock, pois o circuito é alimentado com corrente contínua.
Nesses circuitos são criados obstáculos (as Básculas) à sua propagação que retém os bits de um determinado grupo até os terem todos juntos (congelar uma determinada configuração de bits).
Chega então a vez do Clock, que interrompe o seu descanso, dá indicação para o seu processamento em conjunto (e processá-la) e os lança em nova tarefa (acionar as Básculas) com determinada duração (determinar o tempo).
Esperamos ter aqui deixado esta questão da Lógica Temporizada devidamente clarificada. Mas não ficamos por aqui. Durante este trabalho vão-lhe ser feitas constantes referências, como verão.