• Nenhum resultado encontrado

Memória cache (escondida) É instrutivo considerar os registradores de

Passo 5. GUARDE na memória o conteúdo do terceiro registrador.

2.3 Execução de programas

Um computador efetua a execução de um programa armazenado em sua memória copiando, sem- pre que necessário, as instruções da memória para a unidade de controle. Uma vez na unidade de contro- le, cada instrução é decodificada e executada. A ordem em que as instruções são trazidas da memória corresponde à ordem na qual elas estão armazenadas na memória, exceto se algo em contrário for espe- cificado por meio de uma instrução JUMP de desvio.

Para compreender o funcionamento de todo o processo de execução, é necessário observar mais detalhadamente a unidade de controle, no interior da UCP. Nela, estão dois registradores de propósito específico: o contador de instruções* e o registrador de instruções (Figura 2.4). O contador de

instruções contém o endereço da próxima instrução a ser executada, servindo como instrumento para o computador manter-se informado sobre a posição do programa em que está ocorrendo a execução. O registrador de instruções é usado para manter a instrução que estiver sendo executada.

A unidade de controle executa seu trabalho repetindo, continuamente, um algoritmo, o ciclo de máquina, que consiste em três passos: busca, decodificação e execução (Figura 2.8). Durante o passo de busca, a unidade de controle solicita que a memória principal forneça a instrução armazenada no endereço indicado pelo contador de instruções. Uma vez que cada instrução da nossa máquina possui dois bytes, esse processo de busca inclui a transferência de duas células da memória principal. A unidade de controle guarda a instrução recebida da memória em seu registrador de instruções e então aumenta

?

dois o contador de instruções de modo que este passasse a conter o endereço da próxima instrução armazenada na memória. Assim, o contador de instruções estará pronto para ser usado durante a próxi- ma busca.

Agora, dispondo da instrução em seu registrador de instruções, a unidade de controle inicia a fase da decodificação, que envolve a separação dos componentes do campo de operando, de acordo com o código da operação.

A unidade de controle então executa a instrução, ativando os circuitos necessários para a realiza- ção da tarefa. Por exemplo, se a instrução solicitar que se carregue um registrador com um dado da memória, a unidade de controle ativará tal carregamento; se a instrução corresponder a uma operação aritmética, ela ativará o circuito apropriado da unidade aritmética/lógica, alimentando-o com os regis- tradores indicados como os operandos da instrução.

Quando a instrução tiver sido totalmente executada, a unidade de controle recomeçará o ciclo, partindo do passo de busca. Observe-se que, como o contador de instruções, foi incrementado ao término do passo de busca anterior, ele agora indicará novamente para a unidade de controle o endereço correto da próxima instrução a ser executada.

Um caso muito especial refere-se à execução de uma instrução de desvio (JUMP). Por exemplo, considere a instrução B258 (Figura 2.9) que

significa “Desvie para a instrução do endereço 58 se o conteúdo do registrador 2 for igual ao do registrador 0”. Neste caso, o passo de exe- cução do ciclo de máquina inicia com a com- paração dos conteúdos dos registradores 2 e 0. Se forem diferentes, o passo de execução ter- minará, e iniciar-se-á a próxima busca. Contu- do, se seus conteúdos forem iguais, a máquina colocará o valor 58 no contador de instruções durante o passo de execução. Nesse caso, en- tão, o próximo passo de busca encontrará 58 no contador de instruções; assim, a instrução contida nesse endereço será a próxima a ser buscada e executada.

Figura 2.8 O ciclo de máquina.

Note que se a instrução fosse B058, então a decisão de alterar o contador de instruções dependeria da igualdade de conteúdos entre o registrador 0 e o registrador 0. Todavia, esses são o mesmo registra- dor, portanto, devem ter o mesmo conteúdo. Logo, qualquer instrução na forma B0XY causará um desvio para a posição de memória com endereço XY.

Um exemplo de execução de programa

Sigamos o ciclo de máquina percorrido ao executar o programa apresentado na Figura 2.7, que toma dois valores da memória, computa a sua soma e armazena o total em outra célula de memória. Primeiro, colocamos o programa em alguma área da memória. No nosso exemplo, ele é armazenado em endereços sucessivos a partir do endereço hexadecimal A0. Com o programa armazenado desta forma, colocamos o endereço da primeira instrução (A0) no contador de instruções e acionamos a máquina (Figura 2.10).

A unidade de controle começa o passo de busca extraindo a instrução (156C) da posição A0 e colocando-a em seu registrador de instruções (Figura 2.11a). Note-se que, no nosso computador, as ins- truções possuem 16 bits (dois bytes). Logo, a instrução que está sendo buscada ocupa duas posições de memória, nos endereços A0 e A1. A unidade de controle deve estar projetada para aceitar tal situação. Desta forma, ela lê o conteúdo de tais posições de memória e o deposita adequadamente no registrador de instruções, de 16 bits. A seguir, a unidade de controle soma 2 ao conteúdo do contador de instruções, de forma que este passe a conter o endereço da próxima instrução a ser executada (Figura 2.11b). Ao término do passo de busca do primeiro ciclo de máquina, o contador e o registrador de instruções apre- sentam os seguintes dados:

Contador de instruções: A2 Registrador de instruções: 156C

Em seguida, a unidade de controle analisa a instrução existente no seu registrador de instruções e conclui que deve carregar no registrador 5 o conteúdo da posição de memória de endereço 6C. Este carrega- mento é executado durante o passo de execução, e então a unidade de controle inicia um novo ciclo.

Figura 2.10 Programa da Figura 2.7 armazenado na memória pronto para a execução.

Esse ciclo inicia buscando a instrução 166D nas posições de memória de endereços A2 e seguinte. A uni- dade de controle coloca esta instrução em seu registra- dor de instruções e incrementa o contador para A4. Os valores contidos no contador e no registrador de instru- ções serão:

Contador de instruções: A4 Registrador de instruções: 166D Agora, a unidade de controle decodificará a ins- trução 166D e determinará o carregamento, no registra- dor 6, do conteúdo da memória de endereço 6D. A se- guir, entrará no passo de execução, quando o registrador 6 será devidamente carregado.

Como o contador de instruções agora contém A4, a unidade de controle obterá a próxima instrução a par- tir de tal endereço. Como resultado, o número 5056 é depositado no registrador de instruções, sendo o conta- dor de instruções incrementado para A6. Em seguida, a Figura 2.11

Executando o passo de busca do ciclo de máquina.

Instruções de tamanho variável