Micro Cosmo
Volte
06/03/95

< Um Chipe Inteligente >


Neste ponto já temos uma idéia bastante razoável dos componentes de nossas máquinas. Sabemos que o coração do sistema, o maestro que rege toda a sinfonia digital, é o microprocessador ou CPU. Que é um “chip”, ou circuito integrado engastado na placa-mãe, uma grande placa de circuito impresso que, além da CPU, contém a memória RAM, alguns circuitos auxiliares e um conjunto de fendas, ou “slots”, onde encaixam-se outras placas de circuito impresso. Estas últimas são as “placas controladoras”, que têm esse nome porque controlam os periféricos, dispositivos auxiliares que servem basicamente para introduzir dados brutos no sistema e devolver os resultados do processamento, ou seja, funcionam como dispositivos de “entrada/saída”. Os dispositivos de entrada mais conhecidos são teclado e mouse. Os de saída, vídeo e impressora. Mas há muitos outros, inclusive os discos rígidos e flexíveis, que servem para armazenar dados e, evidentemente, são um tipo especial de dispositivos de entrada/saída, já que funcionam como dispositivo de saída quando os dados são neles gravados e como dispositivos de entrada, quando são lidos (se isso lhe parece confuso, lembre-se que a referência é sempre a placa-mãe: dados gravados no disco “saem” da memória RAM, que está na placa-mãe, e dados lidos no disco “entram” na memória RAM). E dados, sejam lá de que tipo ou natureza forem, são armazenados e manejados pelo sistema sob a forma de bytes, ou conjuntos de oito bits. E um bit nada mais é que um algarismo de um número expresso na base dois, ou seja, no sistema binário. Que, por isso mesmo, só pode assumir os valores “zero” ou “um”.

Pronto: aí está, resumido em um único parágrafo, quase todo o nosso conhecimento duramente adquirido até agora. Parece pouco, mas é tudo o que precisamos para seguir adiante e entender como funciona essa maldita parafernália que é nosso micro.

Do que foi dito aí em cima, dá para perceber que a atriz principal desse elenco é a CPU. Então, vamos gastar algum tempo examinando essa pequena e supreendente jóia da eletrônica digital. Mas desde já um aviso: vamos nos ater apenas ao que é essencial para destrinchar seu funcionamento em linhas gerais, já que a CPU em si mesma é um negócio brutalmente complexo (o Pentium, a mais avançada CPU da Intel, é uma pastilha de silício do tamanho de uma bolacha creme cracker e contém mais de três milhões de transistores).

Uma CPU, essencialmente, é um conjunto de posições de memória chamadas “registradores” (bastante semelhantes às que examinamos aqui quando discutimos memória RAM) conjugado a um outro conjunto de circuitos auxiliares capazes de executar algumas operações elementares com os valores armazenados na memória RAM e nos registradores. De uma forma bastante simplificada, podemos considerar que uma CPU é um circuito integrado “inteligente”, ou seja, capaz de obedecer a certas instruções.

Que instruções serão essas e o que fazem? Bem, depende da CPU (cada uma “entende” um conjunto específico de instruções, chamado “instruction set”). Mas são coisas do tipo: “copie no primeiro registrador o byte armazenado na posição de memória cujo endereço está no quinto registrador”. Ou: “pegue o byte armazenado no primeiro registrador e some (ou subtraia, multiplique ou divida) com o byte armazenado no terceiro”. Ou até coisas razoavelmente complexas como: “copie o byte contido na posição de memória cujo endereço está armazenado no quinto registrador para a posição de memória cujo endereço está no sexto registrador. Depois, passe para os endereços seguintes e repita a operação tantas vezes quanto for a quantidade armazenada no terceiro registrador” (essa instrução é capaz de copiar o conteúdo de trechos enormes de memória de um lugar para outro num piscar de olhos). Parece inacreditável, mas é apenas através de instruções como essas que nossos micros são capazes de fazer as maravilhas que nos encantam.

Mas como as instruções são “passadas” para a CPU? Ora, da única maneira que a CPU as entende: codificadas sob a forma de bytes. Que se chamam, por isso mesmo, “códigos de operação”, ou “op-codes”. Por exemplo: para a CPU, o byte de valor 172 (que, em binário, assume a forma “10101100”) representa a primeira instrução que demos como exemplo, e faz com que a CPU procure na memória RAM o valor do byte contido em um dado endereço e o copie em um de seus registradores internos. E toda a vez que ela recebe esta “instrução”, ou seja, toda a vez que o byte “10101100” lhe é passado, ela obedientemente cumpre suas funções e faz o que lhe é pedido.

Talvez agora você tenha ficado confuso. Afinal, quando discutimos bytes, não ficou acertado que eles representam dados? Como é que agora são instruções? E que diabo estaria eu querendo dizer quando afirmo que uma instrução “é passada” para a CPU?

Pois fique tranqüilo, que a coisa é muitíssimo mais fácil do que parece. Semana que vem você vai ver porque eu disse lá em cima que a CPU é um chip inteligente. E vai se admirar como coisas tão complexas podem ser executadas com meios tão simples...

B. Piropo