|
MC 404 - Ciclo de execução de uma instrução no ARM |
|
Prof. Célio Guimarães
Atualizado em 26 Nov 2014
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 do ARM
visto em aula.
O ciclo de execução de uma instrução tem os seguintes passos elementares:
- Busca da instrução:
- MAR ← PC
- Ctl-rd (sinal para ler da memória - não aparece no diagrama)
- Ctl-ready (sinal de resposta da memória após leitura: deposita palavra lida no MBR)
- IR ← MBR (IR recebe o conteúdo da instrução a ser executada)
- PC ← PC + 4 (PC toma o endereço da próxima instrução)
- Decodificação da instrução no IR:
- determina qual é a instrução a ser executada (analizando os bits no IR)
- obtenção dos operandos (pode requerer acesso adicional à memória)
- execução da instrução
- Volta ao passo 1
Vamos ilustrar a execução da instrução add r0, r1 , que soma ao registrador r0 o conteúdo do registrador r1.
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 no IR:
- determina qual é a instrução a ser executada : soma
- obtenção dos operandos: são os registradores r0 e r1 (codificados na instrução)
- execução da instrução: comanda a ALU (Arithmetic Logic Unit) a somar r0 e r1 colocando o resultado em r0.
- Volta ao passo 1
Vamos agora exemplificar a execução da instrução ldr r0, [r1] que carrega no registrador r0 o conteúdo
das 4 posições de memória cujo endereço inicial está em r1.
- Busca da instrução: como acima
- Decodificação da instrução no IR:
- determina qual é a instrução a ser executada: mover para registrador via apontador em registrador
- obtenção dos operandos: r0 e um valor de 32 bits na memória cujo endereço está em r1:
- Transfere o conteúdo de r1 para o MAR
- Ctl-rd (sinaliza para ler da memória)
- Ctl-ready (sinal de resposta da memória após leitura: MBR recebe os 4 bytes a partir do endereço no MAR)
- execução da instrução: r0 ← MBR (r0 recebe o valor colocado no MBR)
- Volta ao passo 1
Exercício:
Descreva os passos para execução da instrução str r0, [r1], para armazenar o conteúdo de r0
nas posições de memória apontadas por r1.