Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
02/09/1996
< Memórias VI: >
< Clocked Logic >

Na semana passada vimos que enquanto o circuito de refresh está cumprindo suas funções a memória não pode ser acessada. O resultado disto é que, ao contrário das memórias estáticas (SRAM), que por serem dispositivos biestáveis dispensam o refresh, as memórias dinâmicas (DRAM) precisam esperar que o circuito de refresh cumpra sua faina para efetuar um novo acesso. O que criou o conceito de "tempo de acesso" à memória, definido como o intervalo mínimo entre dois acessos sucessivos.

Note que até aqui o conceito de tempo não havia sequer entrado em nossas discussões. Vínhamos nos limitando a abordar as relações lógicas entre os componentes de nossos micros como se eles fizessem parte de um universo estático. No entanto a noção de tempo é crucial para o entendimento destas relações, já que elas integram um tipo de lógica muito particular denominada "clocked logic", ou lógica temporizada.

Para conceituarmos corretamente o que vem a ser a lógica temporizada devemos nos lembrar que todas as ações que são levadas a cabo no interior de nossos micros dependem da alteração ao longo do tempo do estado de grandezas elétricas. Tome como exemplo a própria memória RAM que estamos discutindo: sua característica mais importante é justamente a possibilidade de alterar o valor que armazena. Ou seja: uma dada posição de memória pode conter um valor agora e um valor diferente daqui a um instante. Ora, mas para alterar este valor é necessário modificar o estado de alguns dos oito capacitores elementares que constituem esta posição de memória. E ninguém pode garantir que estas modificações ocorram de forma rigorosamente simultânea, já que por mais cuidadosa que seja a técnica de fabricação, alguns destes capacitores podem demorar um pouco mais para se carregarem que outros (note que falamos aqui de intervalos de tempo da ordem de bilionésimos de segundo). Pois imagine que se fizesse uma leitura do conteúdo da posição de memória enquanto o novo valor estivesse sendo escrito, em um instante em que o estado de alguns capacitores já houvesse sido alterado e outros ainda não. O resultado seria a leitura de um valor errado, algo absolutamente intolerável. Pois a lógica temporizada visa evitar justamente situações como estas. E consegue de uma forma simples e engenhosa.

Imagine que você e um amigo que mora em um prédio afastado do seu, porém cujas varandas são mutuamente visíveis, decidissem se comunicar hasteando oito bandeiras nas varandas através de um código no qual uma bandeira branca corresponderia ao dígito "um" e uma bandeira preta ao dígito "zero". Combinando as oito bandeiras para formar bytes vocês poderiam trocar mensagens usando os 256 caracteres do código ASCII (o mesmo usado pelos nossos micros para manejar arquivos texto, no qual cada byte corresponde a um caractere), enviando um caractere após outro. Mas, é claro, enfrentariam um problema semelhante ao acima descrito: depois de "ler" um byte anotando a combinação de bandeiras brancas e pretas, como saber se o amigo na outra varanda já terminou de ajustar todas as oito bandeiras para formar o próximo byte?

Bem, há diversas soluções simples. Mas vamos escolher uma complicada: imagine que vocês dois contratassem um daqueles parrudíssimos feitores dos filmes onde escravos remam antigas galeras, aquele biltre gordo que aparece dando formidáveis bordoadas em um tambor para marcar o ritmo das remadas. E colocassem o mequetrefe à meia distância entre os dois prédios, de modo que o tambor pudesse ser ouvido de ambas as varandas. Enquanto vocês estivessem se comunicando, o pilantra bateria o tambor lenta e metodicamente, mantendo sempre o mesmo ritmo. E vocês combinariam anotar as posições das bandeiras imediatamente após cada batida.

O método que vocês escolheram para se comunicar pode até não ser muito prático. Mas, com ele, vocês acabaram de inventar a lógica temporizada.

Nossos micros funcionam exatamente assim. Ou quase: para forjar uma imagem mais condizente com o ambiente, substituamos o pilantra batuqueiro por um elegante maestro que com sua batuta comanda o ritmo interno de nossas máquinas.

Este maestro é um relógio constituído por um cristal de quartzo, um tipo de rocha que apresenta uma curiosa propriedade: quando a ela se aplica uma corrente elétrica, vibra em uma freqüência absolutamente constante (chamada freqüência de ressonância) que depende das dimensões e da forma do cristal. Quando se necessita marcar tempos com grande precisão em circuitos eletrônicos, aplica-se uma corrente elétrica a um cristal lapidado de forma a manter uma freqüência de ressonância exata. Contando-se as vibrações, determina-se os tempos (por exemplo: se o cristal oscilar mil vezes por segundo, basta contar mil oscilações para obter um segundo; a freqüência de oscilação é tão regular que as imprecisões andam na ordem de poucos segundos por mês).

Pois o maestro de nossos micros é um cristal destes: cada oscilação corresponde a um ciclo de máquina. E pautar ações em intervalos regulados por ciclos de máquina (ou por números inteiros de ciclos de máquina) é a base da lógica temporizada.

 

B. Piropo