Ciclo de busca, decodificação e execução – por dentro de uma CPU simples

ComputaçãoComputadores e hardwareIdades 16–17

Carregando…

Uma 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

  1. Por que o contador de programa é incrementado na etapa de busca, antes de a instrução ser executada?
  2. Quantos ciclos de clock ADD e BRA precisam neste modelo, e por que são diferentes?
  3. No programa de contagem regressiva, como o total de ciclos muda quando A aumenta 1?