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