InsidePCV5BANCADA DE ARQUITETURA DE COMPUTADORES
MÁQUINA IPC-8 CLK0
Laboratório de arquitetura

Um computador de verdade,
aberto e em câmera lenta.

O InsidePC não anima um diagrama: ele monta e executa programas reais em uma CPU didática de 8 bits. Cada brilho na placa corresponde a um ciclo de barramento que aconteceu de fato — busca, decodificação, operação da ALU, acerto de cache, interrupção.

  • 44códigos de operação
  • 8experimentos guiados
  • 0dependências externas
EXECUÇÃO AO VIVO · LAB 01 BUSCA
ENTRADAteclado · $01
ROMfirmware
CPU IPC-8
PC0000 IR00 A00
RAM$0000
DISPLAY—
PASSO 01Iniciando a máquina…

A CPU está saindo do estado de reset.

—

Esta miniatura roda o mesmo motor da bancada: o traço exibido é produzido pela execução real do programa do LAB 01.

Especificação da máquina

IPC-8 — a arquitetura que você vai operar

Um conjunto de instruções pequeno o bastante para caber na cabeça e completo o bastante para escrever programas de verdade: laços, sub-rotinas, pilha, entrada e saída e tratamento de interrupção.

ORGANIZAÇÃOAcumulador · 8 bitsVon Neumann: código e dados no mesmo espaço
BARRAMENTO DE DADOS8 linhasum byte por ciclo de transferência
BARRAMENTO DE ENDEREÇOS16 linhas64 KB endereçáveis ($0000–$FFFF)
REGISTRADORESPC · IR · MAR · MDR · A · B · SPmais as flags Z, C, N e V
CONJUNTO DE INSTRUÇÕES44 opcodes5 modos de endereçamento
CACHE L132 B · mapeamento direto8 linhas × 4 bytes, write-through
PILHADescendente em $01FFusada por CALL, RET e interrupções
INTERRUPÇÕESIRQ mascarávelvetor em $FFFE, retorno com IRET
ENTRADA E SAÍDAMapeada em portasteclado, display, NVMe, POST e buzzer
FIRMWAREROM $F000–$FFFFvetores NMI $FFFA · RESET $FFFC · IRQ $FFFE
BASE DE TEMPO1 MHz didático1 ciclo de clock = 1 µs simulado
FERRAMENTASMontador integradorótulos, diretivas e mensagens de erro
O ritual de toda máquina

Busca → Decodifica → Executa → Escreve

Passe o mouse por uma etapa para ver o que acontece nos registradores e nos barramentos. É esse laço, repetido milhões de vezes por segundo, que faz um computador parecer inteligente.

T1 – T3

Busca

O PC entrega o endereço ao MAR, a memória devolve um byte pelo MDR e o PC avança. A CPU ainda não faz ideia do que aquele byte significa.

MAR ← PC · MDR ← M[MAR] · PC ← PC+1
T4

Decodificação

O byte vai para o IR. A unidade de controle interpreta o opcode, descobre o modo de endereçamento e liga os sinais internos necessários.

IR ← MDR · sinais de controle
T5 – T6

Execução

Aqui a ALU soma, compara ou desloca; ou a interface de memória faz mais um acesso; ou o PC é alterado por um desvio.

ALU · acesso à memória · desvio
T7

Escrita

O resultado volta para um registrador ou para a memória, e as flags Z, C, N e V passam a descrever o que acabou de acontecer.

A ← resultado · flags ← ALU
Trilha de experimentos

Oito laboratórios, do byte à inicialização

Cada laboratório é um programa real, montado na hora. Você pode editar o código-fonte de qualquer um deles dentro da bancada e ver o efeito imediatamente.

LAB 01

Tecla → RAM → CPU → Display

Um caractere atravessa a máquina inteira sem que um único bit mude. Polling, buffer do controlador e latch de saída.

E/SpollingASCII
abrir experimento →
LAB 02

Somar dois números na ALU

Os operandos vão para a memória, voltam para o acumulador e a ALU produz o resultado — junto com as flags que ninguém pediu, mas todo desvio usa.

ALUflagsLOAD/STORE
abrir experimento →
LAB 03

BOOT: do POWER GOOD ao bootloader

O firmware da ROM testa a memória, publica códigos POST no display de diagnóstico, lê o setor 0 do NVMe para $7C00 e entrega o controle ao código carregado.

firmwarePOSTvetor de reset
abrir experimento →
LAB 04

Cache L1: falta, preenchimento e acerto

O primeiro acesso custa 4 ciclos; o segundo custa 1. E o byte vizinho, que ninguém pediu, também fica barato. Localidade explicada por medição.

hit/misstag · índicelocalidade
abrir experimento →
LAB 05

Interrupção de teclado (IRQ)

Um laço é interrompido por um evento assíncrono. Contexto para a pilha, vetor em $FFFE, ISR executada, IRET — e o programa continua sem perceber nada.

IRQcontextoISR
abrir experimento →
LAB 06

Laço e desvio condicional

“Repetir” não existe como instrução. Existe uma flag Z produzida pela ALU e um JNZ que decide, a cada volta, se o PC retrocede.

JNZflag Zcontador
abrir experimento →
LAB 07

Sub-rotina, pilha e multiplicação

Multiplicar sem instrução de multiplicação: somas sucessivas em uma sub-rotina, com o endereço de retorno guardado e recuperado da pilha a cada chamada.

CALL/RETpilhaSP
abrir experimento →
LAB 08

Programa livre — escreva o seu

Editor de assembly com montador de duas passagens, rótulos, diretivas e mensagens de erro por linha. Escreveu, montou, executou nesta mesma placa.

montadoreditorseu código
abrir editor →
Por que não é mais um diagrama animado

A simulação é consequência, não roteiro

Execução verdadeira

Um montador transforma o texto em bytes; a CPU busca esses bytes da memória e os interpreta. Se você trocar um opcode, o comportamento muda — porque não há animação pré-gravada.

Instrumentos reais

Analisador lógico com CLK, ALE, RD, WR e IRQ; barramentos com os bits individuais; contagem de ciclos, CPI e tempo simulado. A máquina é medida, não descrita.

Placa que respira

VRM pulsando por fase, ventoinha acelerando com a temperatura, refresh de DRAM, trilhos de alimentação oscilando e o display de código POST — como em uma placa de verdade.

Depurador de bancada

Avance por microoperação ou por instrução, marque pontos de parada na listagem, inspecione a memória em hexadecimal e acompanhe cada linha da cache.

Dois níveis de leitura

O modo básico narra em português claro o que acabou de acontecer. O modo engenharia mostra a mesma coisa em notação RTL, com sinais e endereços.

Funciona em qualquer lugar

HTML, CSS e JavaScript puro. Sem servidor, sem build, sem biblioteca. Abra o arquivo local em sala de aula, mesmo sem internet.

Perguntas frequentes

Antes de abrir a bancada

Isso emula um PC moderno?

Não, e essa é uma escolha deliberada. A IPC-8 é uma máquina didática coerente: tudo o que ela faz, faz de verdade e de forma consistente, mas ela omite pipeline, execução fora de ordem, múltiplos núcleos, MMU, memória virtual e interconexões seriais. Esses assuntos estão explicados na documentação, na seção de limitações do modelo.

Preciso saber programar para usar?

Não. Os sete primeiros laboratórios já vêm com o programa pronto e uma narração em linguagem simples a cada passo. O editor de assembly do LAB 08 existe para quem quiser ir além.

Por que 8 bits, se os computadores atuais são de 64?

Porque em 8 bits você consegue ver o byte inteiro na tela e acompanhar cada linha do barramento acender. Os conceitos — ciclo de instrução, hierarquia de memória, interrupções, localidade — são exatamente os mesmos em 64 bits, apenas com mais fios.

Posso usar em aula ou em uma apresentação?

Sim. O projeto é feito para isso: roda offline, tem modo básico para turmas iniciantes e modo engenharia para cursos técnicos e superiores, e permite exportar um relatório com todos os passos executados.

Onde vejo o programa que está rodando?

Na bancada, aba Código. Ali estão a listagem montada (endereço, bytes gerados e mnemônico) e o código-fonte editável. Clique em uma linha da listagem para marcar um ponto de parada.

Abra a máquina e execute o primeiro byte.

Comece pelo LAB 01: uma tecla, quatro componentes e cerca de sessenta microoperações até a letra aparecer no display.

Começar pelo LAB 01