Micro Cosmo
Volte
01/04/96

< CMOS >


O “relógio eletrônico” que a IBM incorporou à placa-mãe do AT era o chip MC146818 da Motorola. Que, além do dispositivo temporizador propriamente dito (o “real time clock”), continha um alarme e dispunha ainda de uma certa quantidade de memória RAM - mais especificamente, 64 posições de memória contendo um byte cada. Sete destas posições eram usadas (e continuamente atualizadas pelo temporizador) para armazenar os dados relativos ao relógio propriamente dito, ou seja: ano, mês, dia do mês, dia da semana, hora, minuto e segundo correntes. Outras sete posições eram usadas para armazenar hora, minuto e segundo do alarme (e quando as do relógio se igualavam a elas, o alarme era acionado), além de quatro bytes com informações sobre o estado do relógio. Sobravam então quarenta bytes de memória RAM que poderiam armazenar quaisquer outros dados.

Como vimos semana passada, a placa-mãe do AT incorporava uma bateria para manter o relógio funcionando (e preservar o conteúdo dos 64 bytes de memória RAM a ele associados) enquanto o micro estivesse desligado. Portanto, o consumo de energia do relógio e de sua memória não poderia ser elevado, caso contrário a bateria se descarregaria logo. Por isto o chip MC146818 escolhido pela IBM utilizava uma tecnologia nova para a época: seus transistores internos eram do tipo Complementary Metal Oxide Semiconductor, mais caros porém de baixíssimo consumo de energia. Este tipo de circuito integrado era conhecido por seu acrônimo CMOS. Razão pela qual aqueles 40 bytes remanescentes de memória (aparentemente sem serventia, mas que como logo veremos, foram muito bem empregados) até hoje são conhecidos por CMOS.

Neste ponto, recapitulemos o que foi discutido até agora. Vimos que o PC e o XT usavam dip switches na placa-mãe para armazenar determinadas informações sobre a configuração da máquina, informações que o micro precisava “conhecer” durante o boot. Vimos ainda que dip switches estavam longe de ser o meio ideal para preservar tais informações. Vimos que o AT, por ser uma máquina mais complexa que seus antecessores, necessitava de uma forma mais conveniente de armazenar seus dados de configuração interna, uma forma capaz de preservar uma quantidade maior de informações mas que permitisse alterá-las quando a configuração fosse modificada. Vimos também que para poupar o usuário do trabalho de “acertar” o relógio interno do micro toda a vez que ligasse a máquina, a IBM incorporou um relógio alimentado por bateria à placa-mãe do AT. E, finalmente, vimos que na memória usada por este relógio, cujo conteúdo era preservado pela bateria, “sobravam” 40 bytes que poderiam armazenar qualquer tipo de informação.

Evidentemente, sabendo de tudo isto, um cara esperto como você já descobriu o fim que a IBM deu ao trecho de memória disponível no chip CMOS: guardar as informações sobre a configuração da máquina, é claro.

E nem foi preciso usar todos os 40 bytes livres: no AT original ainda sobraram 22. (note que estamos falando de bytes, não bits; um dip switch ligado ou desligado corresponde apenas a um bit de informação). Veja lá: cinco bytes foram usados para preservar informações sobre o status da máquina. Um para o tipo e número de drives de disquete. Mais um para discos rígidos. Dois para a quantidade de memória instalada na placa-mãe, mais quatro para a quantidade de memória instalada em placas de expansão e um para sinalizadores internos (“information flags”). Mais um para o tipo de micro (sim, a IBM foi previdente...), outro para o século corrente (bota previdente nisso: ainda faltavam dezesseis anos para a virada do século...) e, finalmente, dois bytes adicionais apenas para garantir que as informações armazenadas não foram corrompidas. Estes dois bytes preservam a “chechsum”, uma espécie de “prova dos nove”. Quando a soma do conteúdo dos demais bytes da memória CMOS não confere com estes dois bytes (em geral porque a bateria descarregou-se), aparece na tela a desagradável mensagem “CMOS checksum failure” indicando que o teste falhou e que é preciso reconstituir os dados.

Armazenar as informações de configuração em posições de memória com conteúdo preservado por bateria foi uma solução muito mais elegante e mais “limpa” que os dip switches usados na placa-mãe do PC e do XT. Mas trouxe um complicador: como atualizar estas informações quando por alguma razão a configuração era alterada?

Ora, da mesma maneira usada para alterar o conteúdo de quaisquer outras posições de memória: com um programa, naturalmente.

Um programa denominado “Setup” que discutiremos semana que vem.

B. Piropo