![](http://www.ic.unicamp.br/~celio/livrobd/imgs/logo-unicamp--100x100.gif) |
MC 404 - Ciclo de execução de uma instrução |
![](../../livrobd/imgs/logo-ic-100x100.gif) |
Prof. Célio Guimarães
Atualizado em 11 Mar 2010
Um computador digital executa instruções através um autômato que executa continuamente os passos elementares a seguir.
Tomaremos como exemplo o diagrama de blocos da CPU simples
visto em aula (onde deve-se ignorar o registrador ACC).
O ciclo de execução de uma instrução tem os seguintes passos elementares:
- Busca da instrução:
- MAR ← PC
- Ctl-rd (comando para ler da memória)
- Ctl-ready (resposta da memória após leitura)
- IR ← data bus (IR recebe o conteúdo da instrução a ser executada)
- PC ← PC +1 (PC toma o endereço da próxima instrução)
- Decodificação da instrução em IR:
- determina qual é a instrução a ser executada (analizando os bits no IR)
- Obtenção dos operandos (pode requerer acesso à memória)
- execução da instrução
- Volta ao passo 1
Vamos ilustrar a execução da instrução add X, Y , que soma ao registrador X o conteúdo do registrador Y.
Suporemos que o registrador PC (Program Counter) tem o endereço da memória onde se localiza esta instrução:
- Busca da instrução: como acima
- Decodificação da instrução em IR:
- determina qual é a instrução a ser executada : soma
- Obtenção dos operandos: são os registradores X e Y (codificados na instrução)
- execução da instrução: comanda a ULA a somar X e Y colocando o resultado em X
- Volta ao passo 1
Vamos agora exemplificar a execução da instrução LD X, end que carrega no registrador X o conteúdo da posição de memória
dada pelo endereço end. Vamos supor também que o tamanho da palavra é suficiente para conter o código da instrução e o endereço do operando (isto não é verdade para o caso do AVR):
- Busca da instrução: como acima
- Decodificação da instrução em IR:
- determina qual é a instrução a ser executada : LD
- Obtenção dos operandos: são o registradores X e um operando na memória
- Transfere os bits do endereço end para o MAR (observe que no diagrama falta um caminho do IR para o MAR)
- Ctl-rd (comando para ler da memória)
- Ctl-ready (resposta da memória após leitura)
- execução da instrução: X ← data bus (X recebe o conteúdo da memória colocado no data bus)
- Volta ao passo 1
Exercício:
- Descreva os passos da CPU simples para executar a instrução: ST end, X , que armazena o conteúdo do registrador X na posição de memória endereçada por end
- Descreva os passos da CPU simples para executar uma instrução que incrementa o valor de um operando localizado na memória:
INC [X] , onde X contém
o endereço do operando na memória e o seu valor deve ser incrementado de 1
(suponha a existencia de um registrador de rascunho TEMP e um comando para a ULA somar 1 a esse registrador)