Computadores XX: Busca e execução – Primeiro passo
A6 – Texto 5
http://www.bpiropo.com.br/fpc20060116.htm
Sítio Fórum PCs /Colunas
Coluna: B. Piropo – Publicada em 16/01/2006
Autor: B.Piropo
Por mais que os leigos insistam em considerar que os computadores são máquinas
inteligentes, a realidade é bastante diferente. Computadores são máquinas como
quaisquer outras que nada mais fazem senão aquilo que foram concebidas para fazer.
Isso não quer dizer, naturalmente, que computadores sejam máquinas “inferiores”.
Pelo contrário: se programadas corretamente, são capazes de executar tarefas
extraordinariamente complexas com enorme rapidez e precisão quase inacreditável.
Mas o ponto crucial reside justamente na expressão “se programadas corretamente”.
Ou seja: computadores, sem a intervenção humana, são máquinas imprestáveis. Eles
nada fazem sozinhos.
Ou quase nada. Para ser preciso, há apenas uma ação que os computadores executam
“sozinhos”, ou seja, automaticamente, sem qualquer intervenção humana. É claro que
só fazem isso porque foram concebidos para agir assim pelos humanos. Mas o fato é
que fazem. Esta ação chama-se “ciclo de busca e execução” (em inglês, “fetch and
execute cycle”). Desde o momento em que um computador é ligado até o momento
em que a alimentação elétrica é interrompida, computadores nada mais fazem do que
executar sucessiva, incansável e incessantemente um ciclo de busca e execução após
outro. Mesmo quando, aparentemente, o computador está inerte, sem nada fazer,
aguardando uma entrada de dados, ainda assim ele continua executando ciclos de
busca e execução sucessivos, milhões de vezes por segundo. É por meio destes ciclos
que os computadores conseguem executar programas. Porque quem leu a coluna <
http://www.forumpcs.com.br/viewtopic.php?t=138084 > “O que é uma UCP” sabe
que um programa nada mais é que um conjunto encadeado de instruções com um
propósito determinado. E o ciclo de busca e execução serve justamente para buscar
uma instrução na memória principal e executá-la. Vamos ver como isso funciona.
Instruções, como sabemos, são números que o microprocessador interpreta como
ordens (ou comandos) para executar determinadas ações que, em conjunto, constituem
um programa. Para que possam ser introduzidas no microprocessador as instruções
devem estar armazenadas em algum lugar. Esse lugar é obrigatoriamente a memória
principal, ou MP (e este ponto é importante: por razões que veremos mais tarde, uma
instrução só poderá ser executada se, antes, tiver sido armazenada na MP). Portanto,
para que um programa seja executado, é preciso que as instruções que o compõem
tenham sido previamente copiadas em um trecho da memória principal. Esta ação
denomina-se “carregar o programa” e, na maioria dos casos, consiste em ler em um
arquivo do disco rígido as instruções que formam o programa e copiá-las na MP (isso
ocorre quando, por exemplo, se executa um clique duplo no ícone que representa o
programa em um sistema operacional que usa interface gráfica, como Windows).
Como isso é feito não nos interessa no momento. Interessa apenas o fato de que, para
que um programa seja executado, as instruções que o compõem precisam estar
ocupando um trecho da memória principal.
O ciclo de busca e execução é então um conjunto de ações que envolve apenas a UCP,
a MP e o trecho do FSB (ou barramento frontal) que as une. Veja, na Figura 1, um
diagrama esquemático destes componentes. Trata-se de um esquema de uma placamãe elementar cuja MP é constituída por apenas 256 posições de memória de oito
células cada (8bits, ou um byte), identificadas por seus endereços que vão de zero a
255 (números em branco, mostrados tanto em decimal quanto em binário à esquerda
da representação da MP). Os registradores da UCP por sua vez também são de oito
bits. Por isso, tanto o barramento de dados quanto o de endereços têm apenas oito
linhas cada. É uma placa-mãe tão simples que, com sua memória de apenas 256
posições, pode fazer muito pouco. Mas é o bastante para que possamos entender como
funciona o ciclo de busca e execução. Afinal, do ponto de vista lógico, a sucessão de
ações que descreveremos a seguir e que configuram o ciclo de busca e execução é
rigorosamente a mesma seja nesta UCP elementar, seja na mais complexa UCP
moderna. Então vamos a ela.
Figura 1: Diagrama esquemático mostrando UCP, MP e FSB.
O ciclo de busca e execução consiste de três passos que são executados
seqüencialmente e repetidos à exaustão. Vamos examiná-los um a um. Mas antes
preparemos o cenário.
Imaginemos que, no momento em que começa a nossa observação há um programa
sendo executado e a situação da UCP e MP seja a mostrada na Figura 2. O programa
que está sendo executado já foi previamente carregado na memória principal e ocupa
o trecho que abrange os endereços 246 e superiores. O conteúdo das posições de
memória e dos registradores que nos interessam é exibido sob a forma de números
binários. Repare especificamente no registrador denominado “Ponteiro de Instrução”
(PI). Ele armazena o valor binário “11110111” (correspondente ao decimal “247”). E
note que a posição da MP cujo endereço é 247 armazena o valor “00010111” (que
deve ser uma instrução, já que está no trecho da MP ocupado pelo programa). As
posições da memória principal situadas imediatamente acima desta contêm os valores
mostrados na Figura 2 e que certamente serão as demais instruções do programa. O
conteúdo das outras posições da MP, assim como dos demais registradores da UCP,
não são relevantes para nossa discussão e podem ser quaisquer, por isso estão
representados por “XXXXXXXX”.
Figura 2: Estado inicial
Antes de prosseguirmos, uma observação importante. A única coisa que pode ser
armazenada em uma posição de memória, esteja ela na MP ou nos registradores, é um
número expresso no sistema binário (no exemplo, números de oito bits, ou um byte).
Esse número, no entanto, pode ter diversos significados ou funções, dependendo de
como seja interpretado.
Senão vejamos: todos os dados processados pelo computador são expressos sob a
forma de números (ou seja, são digitalizados; veja as colunas anteriores sobre
digitalização de <
http://www.forumpcs.com.br/viewtopic.php?t=122348&sid=2bac69bfc92f7bb5a4364
7586fdd914d > imagens e <
http://www.forumpcs.com.br/viewtopic.php?t=123744&sid=2bac69bfc92f7bb5a4364
7586fdd914d > sons). Portanto, um número contido em uma posição de memória
pode representar um dado.
Por outro lado, como acima mencionado, as instruções que o microprocessador
decodifica e executa também são números. Nos primórdios da era dos computadores
havia uma memória específica para conter instruções e uma outra, independente,
apenas para conter dados. Porém, durante o final da primeira metade do século
passado, um genial matemático nascido na Hungria e naturalizado americano, John
von Neumann (pronuncia-se “fón nóiman”), percebeu que isso complicava
desnecessariamente a “arquitetura” (ou organização interna) dos computadores e
sugeriu que tanto os dados quanto as instruções passassem a ser armazenadas em um
único conjunto de posições de memória. Esse conjunto é a MP. Essa concepção deu
origem à chamada “arquitetura de von Neumann”. Hoje em dia, todos os
computadores modernos são “máquinas de von Neumann”, ou seja, máquinas que
adotam a arquitetura de Von Newmann, armazenando tanto dados quanto instruções
no mesmo espaço de endereçamento de memória.
Portanto, um número contido em uma posição de memória também pode representar
uma instrução.
Finalmente, como se pode perceber examinando as figuras anteriores, endereços de
posições da memória principal também são números. E quando se deseja referenciar
uma determinada posição da MP (ou seja, “apontar” para ela), armazena-se seu
endereço em outra posição de memória. Posições de memória, quando utilizadas para
armazenar endereços de posições de memória, recebem a designação genérica de
“Ponteiro”.
Portanto, um número contido em uma posição de memória também pode representar
um endereço.
Em suma: um número armazenado em uma posição de memória pode representar um
dado, uma instrução ou um endereço, dependendo da forma pela qual for interpretado
e utilizado.
Como sabemos que posições de memória que armazenam endereços de outras
posições de memória recebem a designação genérica de “Ponteiro” fica fácil concluir
que o registrador denominado “Ponteiro de instruções”, ou PI, contém um endereço.
Mais especificamente: contém o endereço da posição da MP que armazena a próxima
instrução a ser executada.
Então, o primeiro passo do ciclo de busca e execução consiste meramente em ir
buscar esta instrução na MP. O que é feito através de uma operação de leitura da
memória como a que examinamos na coluna anterior, <
http://www.forumpcs.com.br/viewtopic.php?t=145565&sid=2bac69bfc92f7bb5a4364
7586fdd914d > “Leitura e escrita na MP”. O primeiro passo então simplesmente
busca a instrução armazenada na memória principal e a transcreve no registrador
denominado “Registrador de Instruções”, ou RI. É o passo da “busca”.
Uma operação de leitura da MP, como sabemos, começa escrevendo no Registrador
de Endereços da Memória (REM) o endereço da posição de memória cujo conteúdo
deverá ser lido. Em seguida transfere este endereço para o controlador da memória
através do barramento de endereços, “aponta” os circuitos internos para a posição de
memória correspondente e finalmente transfere seu conteúdo para o Registrador de
Dados da Memória (RDM) de onde será copiado para o Registrador de Instruções
(RI). Acompanhe o passo da busca da instrução no diagrama esquemático da Figura 3
seguindo as setas azul (que “aponta” o controlador da memória para a posição da MP
cujo endereço está contido no PI através do REM) e verde (que transfere o conteúdo
desta posição de memória para o RI através do RDM).
Figura 3: Primeiro passo: busca da instrução
Ao final deste passo, a instrução que estava na memória foi transferida para o
Registrador de instruções.
Examinaremos os demais passos na próxima coluna.
Download

Computadores XX: Busca e execução – Primeiro