Ciclo de busca, decodificação e execução – por dentro de uma CPU simples
ComputaçãoComputadores e hardwareIdades 16–17
Carregando…
Entre para usarUma CPU minúscula com PC, MAR, MDR, CIR, ACC, ULA e unidade de controle, ligada a 16 ou 32 células de memória pelos barramentos de endereços, de dados e de controle. Carregue um programa de exemplo escrito em uma linguagem assembly simples (LDA, ADD, SUB, STA, BRZ, BRP, BRA, OUT, HLT) e avance ciclo de clock por ciclo para ver os dados percorrendo os barramentos nas etapas de busca, decodificação e execução; mude a velocidade do clock e conte os ciclos.
Aula: Por dentro do computador: a CPU, os registradores, os barramentos e o ciclo de busca, decodificação e execução
O que mostra
Um computador de programa armazenado guarda instruções e dados como números na memória principal. A CPU repete sempre o mesmo ciclo: busca a instrução no endereço indicado pelo contador de programa, decodifica-a na unidade de controle e a executa, movendo valores entre os registradores, a ULA e a memória pelos barramentos de endereços, dados e controle. O modelo funciona como o Little Man Computer: códigos decimais de três dígitos, o primeiro é o código da operação e os dois últimos o endereço, com uma transferência entre registradores por ciclo de clock.
Como usar
Escolha um Programa de exemplo e ajuste o Valor A e o Valor B. Clique em Passo (1 ciclo) para avançar um ciclo de clock e leia no topo a transferência entre registradores, como MAR ← PC; clique em Instrução inteira para concluir a instrução atual, ou em Executar para que a Velocidade do clock conduza a CPU. Alterne a Exibição da memória entre assembly e código de máquina e clique em uma célula para ver como a CPU a leria.
Parâmetros que você pode mudar
- Programa de exemplo Somar dois números (A + B), Contagem regressiva de A até 0 (laço), O maior entre A e B
- Valor A 0–50
- Valor B 0–50
- Velocidade do clock 0,5–20 Hz
- Células de memória 16 células, 32 células
- Exibição da memória Assembly (LDA 13…), Código de máquina (513…)
Perguntas para explorar
- Por que o contador de programa é incrementado na etapa de busca, antes de a instrução ser executada?
- Quantos ciclos de clock ADD e BRA precisam neste modelo, e por que são diferentes?
- No programa de contagem regressiva, como o total de ciclos muda quando A aumenta 1?