Aula 08 - Professor Diovani

Propaganda
Arquitetura e organização de
computadores
Ciclo de instrução
Aula 08
Prof. Diovani Milhorim
Ciclo de instrução
CICLO DE INSTRUÇÃO
Para se executar um programa, primeiramente ele precisa
ser carregado (armazenado) na MP, o que é feito pelo
Sistema Operacional, que também se encarrega de
informar à UCP onde o programa começa.
O Sistema Operacional faz isto "setando" o Contador de
Instruções (isto é, colocando no CI o endereço da MP
onde está localizada a primeira instrução daquele
programa).
Ciclo de instrução
CICLO DE INSTRUÇÃO
A partir do carregamento do programa se realiza o
processamento automático, executando-se as
instruções seqüencialmente uma a uma, o que é
obtido através do incremento automático do CI.
Obs: Se o programa inclui uma instrução de
desvio, o fluxo seqüencial pode ser alterado.
Ciclo de instrução
CICLO DE INSTRUÇÃO
A UCP não diferencia um dado de uma instrução.
A UCP não "executa" dados devido ao conteúdo
do CI, que é incrementado pelo tamanho da
instrução e fica sempre apontando para a
próxima instrução. Mas se em um programa
houver uma instrução de desvio para um
endereço em que esteja contido um dado, a
UCP interpretaria o valor binário do dado como
se fosse o código de uma instrução, tentaria
executar e o resultado seria imprevisível.
Ciclo de instrução
Ciclo de instrução
Ciclo de Instrução
Primeiro passo
A UCP busca o código de operação na MP e
armazena no Registrador de Instrução da UC
Fase: Busca da instrução - (Instruction Fetch) ciclo de busca
RI <--- (CI)
Ciclo de instrução
Ciclo de Instrução – Busca de instrução
Micro-operações:
- a UC lê o conteúdo do CI (endereço da próxima
instrução ) e coloca o endereço no REM;
- a UC envia um sinal à memória de operação de leitura
(memory read), via barramento de controle;
- a memória lê o endereço que está no REM, via
barramento de endereços, e busca o conteúdo da célula
referenciada;
- a memória coloca no RDM, via barramento de dados, o
conteúdo da célula lida;
- a memória envia à UC, via barramento de controle, um
sinal de "leitura concluída";
- a UC transfere o código de operação (o conteúdo do
RDM) ao RI.
Ciclo de instrução
Ciclo de Instrução
Segundo passo
A UC (decodificador de instruções)
decodifica o Código de Operação.
Fase: Busca da instrução - (Instruction
Fetch) - ciclo de busca
Ciclo de instrução
Ciclo de Instrução
Segundo passo
Micro-operações:
- o Decodificador de Instruções decodifica o opcode;
- o Decodificador de Instruções determina quantas
células a instrução ocupa;
- a UC incrementa o CI para apontar para a próxima
instrução: CI <--- (CI + n), onde n = nº de células que a
instrução ocupa.
- a UC incrementa o REM para apontar para o
operando: REM <--- (REM + 1);
Ciclo de instrução
Ciclo de Instrução
Terceiro passo
A UC busca (se houver) o(s) operando(s).
Fase: Busca de operandos (Operand Fetch)
- ciclo de execução
RI <--- (Op)
Ciclo de instrução
Ciclo de Instrução
Terceiro passo
Micro-operações:
- a UC envia um sinal à memória de operação de leitura
(memory read), via barramento de controle;
- a memória lê o endereço que está no REM, via
barramento de endereços, e busca o conteúdo da célula
referenciada;
- a memória coloca no RDM, via barramento de dados, o
conteúdo da célula lida;
- a memória envia à UC, via barramento de controle, um
sinal de "leitura concluída";
Ciclo de instrução
Ciclo de Instrução
Terceiro passo
Micro-operações:
- a UC transfere o operando (o conteúdo do RDM) ao RI.
* Se o operando é o próprio dado:
-- a UC transfere o dado (o conteúdo do RDM) ao ACC.
-- vai para operação 4;
caso contrário:
(continua)
Ciclo de instrução
Ciclo de Instrução
Terceiro passo
Micro-operações:
caso contrário:
* Se o operando é um ponteiro para onde o dado está
armazenado:
-- a UC coloca no REM o endereço de onde o dado está
armazenado;
-- Repete-se o processo de leitura da memória.
-- a UC transfere o dado (o conteúdo do RDM) ao ACC;
-- vai para operação 4.
Ciclo de instrução
Ciclo de Instrução
Quarto passo
A UC comanda a execução da instrução (a
operação é executada sobre o dado).
Fase: Execução da instrução - ciclo de
execução
- UAL executa a instrução.
Ciclo de instrução
Ciclo de Instrução
Quinto passo
Se o programa tiver terminado, Para;
senão, volta ao passo 1.
Ciclo de instrução
Ciclo de Instrução
Exemplo 1:
Observe o formato da instrução e o
conteúdo da memória principal na
máquina hipotética a seguir:
Ciclo de instrução
Ciclo de Instrução
Exemplo 1: formato de instrução:
Ciclo de instrução
Ciclo de Instrução
Exemplo 1: Conteúdo da memória principal
Ciclo de instrução
Ciclo de Instrução
Exemplo 1:
Solução:
O CI tem 8 bits porque o operando tem 8 bits; o mapa de memória
também mostra isso, com os endereços ocupando 2 dígitos
hexadecimais (cada dígito hexadecimal requer 4 bits).
A célula de memória tem 8 bits, conforme vemos pelo mapa de
memória, em que os conteúdos das células ocupam 2 dígitos
hexadecimais.
O RI tem 16 bits porque a instrução tem 16 bits.
ACC - não daria para assegurar porque depende do tamanho da
palavra; vamos assumir 8 bits, de vez que como o operando,
o opcode e a célula têm 8 bits, o RDM e o Acumulador
provavelmente também terão 8 bits
A instrução ocupará 2 células, logo o incremento do CI = n = 2
Ciclo de instrução
Ciclo de Instrução
Exemplo 1:
Nesta máquina, considere que o código de
operação 2A significa
LDA Op ==> ACC <--- (Op)
Obs.: A instrução do exercício LDA Op (LDA é
um mnemônico para "load accumulator")
significa "carrega no acumulador o conteúdo da
posição de memória indicada no operando".
Ciclo de instrução
Ciclo de Instrução
Exemplo 1:
Vamos acompanhar o processamento da instrução:
LOAD (2A neste exemplo) => colocar o conteúdo do
endereço indicado pelo operando no ACC (carrega dado
no acumulador);
T0, T1 e T2 representam os diversos estados dos
registradores (nos respectivos tempos do ciclo de busca
da instrução).
n=2 (2 acessos à MP para buscar instrução)
Ciclo de instrução
Ciclo de Instrução
Exemplo 1:
Ciclo de instrução
Ciclo de Instrução
Exemplo 2:
Considerando a mesma máquina do exemplo anterior, qual
seria o processamento da instrução:
LDIA Op ==> ACC <--- ((Op))
Obs.: A instrução do exercício LDIA Op (LDIA é um
mnemônico para "load accumulator indirect") significa
"carrega no acumulador o conteúdo da posição de
memória apontada pela posição indicada no operando".
Portanto, a posição de memória indicada pelo Operando
é um ponteiro para a posição onde está o dado e existe
uma indireção.
Ciclo de instrução
Ciclo de Instrução
Exemplo 2:
Download