Arquitetura de Von Neumann: como funciona, na prática

A arquitetura de Von Neumann é o modelo de computador em que instruções e dados moram na mesma memória e trafegam pelo mesmo caminho até o processador. Descrita em 1945 no rascunho de relatório sobre o EDVAC, ela é a base conceitual de praticamente todo computador de uso geral que você usa hoje — do notebook ao celular.

CPUUnidade de ControleULA + registradoresMemória principalinstruções + dados juntosEntrada / Saídateclado, disco, rede, vídeoBARRAMENTO ÚNICOendereços · dados · controle

CPU, memória e E/S conversando pelo mesmo barramento.

O que é a arquitetura de Von Neumann

É um modelo de organização de computador com quatro partes essenciais: uma unidade de controle, uma unidade lógica e aritmética, uma memória principal e um subsistema de entrada e saída, todos ligados por um barramento. O traço que o define não é a existência dessas peças, e sim a decisão de guardar instruções e dados no mesmo espaço de memória.

Isso significa que o computador não é uma máquina construída para uma tarefa: ele é uma máquina que lê o que deve fazer. O mesmo hardware executa uma planilha, um jogo ou um compilador dependendo apenas do conteúdo que está na memória.

O conceito central: programa armazenado

Antes desse modelo, mudar o que uma máquina fazia significava reconfigurar fisicamente cabos e chaves. A ideia de programa armazenado inverte isso: o programa passa a ser apenas mais um conteúdo na memória, escrito com os mesmos bits usados para os dados.

A consequência é enorme e às vezes passa batido: se o programa é dado, então um programa pode ler, gerar e modificar outro programa. É por isso que existem compiladores, sistemas operacionais que carregam aplicativos e máquinas virtuais. Também é por isso que existe uma classe inteira de problemas de segurança em que dados de entrada acabam sendo executados como código.

  1. 1

    PROGRAMA

    escrito como uma sequência de instruções

  2. 2

    MEMÓRIA

    instruções e dados guardados lado a lado

  3. 3

    BUSCA DA INSTRUÇÃO

    o PC aponta o endereço; a instrução vai para a CPU

  4. 4

    DECODIFICAÇÃO

    a UC descobre a operação e os operandos

  5. 5

    EXECUÇÃO

    a ULA opera sobre registradores / memória

  6. 6

    RESULTADO

    gravado em registrador ou de volta na memória

Por que isso importa

O percurso ao lado é o mesmo para qualquer instrução, de qualquer programa. É essa uniformidade que permite ao mesmo processador executar software que ainda nem foi escrito.

Repare que “instrução” e “dado” não são categorias do hardware: são papéis. A memória guarda bits; quem decide o significado deles é o programa em execução.

Os blocos do modelo

CPU (processador)Unidade deControleinterpreta e comandaULAsoma, subtrai,compara, AND/ORRegistradoresPC · IR · acumulador · uso geralMemória principalmesmo espaço endereçável parainstruções e dadosEntrada e Saídateclado, disco, rede, vídeoBARRAMENTO COMPARTILHADObarramento de endereços · de dados · de controleinstrução → CPU → execução → resultado

Unidade de controle e ULA formam o que hoje chamamos de CPU. Elas conversam com memória e E/S por um barramento — um conjunto de vias para endereços, dados e sinais de controle. No modelo clássico, esse barramento é único e compartilhado, e é exatamente aí que nasce o problema descrito mais abaixo.

Programa armazenado

O programa fica na memória, escrito com os mesmos bits usados para os dados.

Função
Permite trocar o que a máquina faz sem alterar o hardware.
Relação
É a ideia que dá sentido a todos os outros blocos.

Memória principal

Conjunto de posições endereçáveis que guardam instruções e dados juntos.

Função
Fornece a instrução da vez e os operandos pedidos por ela.
Relação
Conversa com a CPU somente através do barramento.

Unidade de Controle (UC)

Bloco que lê a instrução e interpreta o que ela pede.

Função
Emite os sinais que colocam o restante do hardware em ação.
Relação
Comanda ULA, registradores, memória e E/S no ritmo do clock.

Unidade Lógica e Aritmética (ULA)

Circuito que realiza operações aritméticas e lógicas sobre operandos.

Função
Executa somas, subtrações, comparações e operações bit a bit.
Relação
Recebe operandos dos registradores e devolve o resultado a eles.

Registradores

Pequenas posições de armazenamento dentro do próprio processador.

Função
Guardam operandos, resultados, o endereço da próxima instrução (PC) e a instrução atual (IR).
Relação
São a área de trabalho imediata da ULA e da unidade de controle.

Barramento

Conjunto de vias que liga CPU, memória e entrada/saída.

Função
Transporta endereços, dados e sinais de controle.
Relação
No modelo clássico é único e compartilhado — origem do gargalo de Von Neumann.

Os três barramentos

Falar em “um barramento” é uma simplificação útil: na prática, esse caminho se divide em três funções bem distintas, que andam juntas em cada acesso à memória.

CPUUC · ULA · registradoresMemóriainstruções + dadosEntrada / Saídaperiféricosbarramento de endereços →barramento de dados ↔barramento de controle →
  • Endereçosunidirecional — a CPU indica a posição
  • Dadosbidirecional — leitura e escrita
  • Controleler, escrever, sincronizar, interromper
Funções dos barramentos de endereços, dados e controle
BarramentoO que transportaSentido
EndereçosA posição de memória ou o dispositivo que será acessadoDa CPU para memória e E/S
DadosO conteúdo lido ou escrito (instrução ou dado)Bidirecional
ControleSinais como leitura, escrita, sincronização e interrupçãoPrincipalmente da CPU, com respostas dos dispositivos

Como a memória é vista pela CPU

Para o processador, a memória é uma lista numerada de posições. Ele pede uma posição pelo endereço e recebe o conteúdo — sem nenhuma indicação embutida de que aquilo é código ou informação.

Memória endereçávela CPU acessa cada posição pelo endereço
  • [0000]LOAD R1, [0011]instrução
  • [0001]ADD R1, R2instrução
  • [0010]STORE R1, [0100]instrução
  • [0011]0000 0111dado
  • [0100]0000 0000dado

Nada no hardware marca uma posição como “instrução” ou “dado”: os bits são iguais. O papel de cada posição vem de como o programa a utiliza — é exatamente isso que o programa armazenado permite.

O ciclo de instrução, passo a passo

O processador não faz nada de misterioso: ele repete, milhões de vezes por segundo, o mesmo ciclo de quatro passos. Toque em cada etapa para ver o componente envolvido, a entrada, o processamento e a saída.

CPU (processador)Unidade deControleinterpreta e comandaULAsoma, subtrai,compara, AND/ORRegistradoresPC · IR · acumulador · uso geralMemória principalmesmo espaço endereçável parainstruções e dadosEntrada e Saídateclado, disco, rede, vídeoBARRAMENTO COMPARTILHADObarramento de endereços · de dados · de controleinstrução → CPU → execução → resultado

Em destaque: Unidade de Controle + memória

Busca (fetch)

Entrada
Endereço vindo do contador de programa (PC)
Processamento
A instrução guardada nesse endereço é lida da memória e trazida pelo barramento até o registrador de instrução (IR).
Saída
Instrução dentro da CPU, pronta para ser interpretada
Resumo das quatro etapas do ciclo de instrução
EtapaOnde aconteceO que acontece
1. Busca (fetch)UC + memóriaA instrução do endereço apontado pelo PC é trazida para a CPU.
2. Decodificação (decode)Unidade de ControleA operação e os operandos são identificados.
3. Execução (execute)ULA / unidade de memóriaA operação é realizada sobre os operandos.
4. Escrita (write-back)Registradores / memóriaO resultado é gravado e o PC avança.

Repare que os passos 1 e 3 podem precisar da memória ao mesmo tempo: buscar a próxima instrução e ler um dado são dois pedidos para o mesmo barramento.

O caminho que um dado percorre

Juntando tudo, o trajeto de um valor dentro da máquina é sempre uma variação desta sequência:

  1. 01

    Memória

    instrução ou dado no endereço pedido

  2. 02

    Barramento

    transporte de endereços, dados e controle

  3. 03

    Registradores

    armazenamento imediato dentro da CPU

  4. 04

    ULA

    operação aritmética ou lógica

  5. 05

    Registradores

    resultado retorna e fica disponível

  6. 06

    Memória / E-S

    gravação final ou envio ao mundo externo

Todo esse percurso acontece sobre o mesmo barramento: por isso ele é o recurso mais disputado do modelo clássico.

Registradores e ULA: onde a conta acontece

A ULA não busca nada sozinha: ela recebe operandos já posicionados em registradores, aplica a operação pedida pela unidade de controle e devolve o resultado. Escolha uma operação para ver o percurso:

Registrador ARegistrador BULAADDResultadovolta a um registrador

ADD: soma os dois operandos. Exemplo conceitual em 4 bits — 0111 + 0010 = 1001.

Um exemplo completo, do começo ao fim

O trecho abaixo usa as mesmas posições de memória mostradas antes. Ele conecta todos os blocos explicados até aqui.

  1. 1
    LOAD R1, [0011]

    A UC busca a instrução no endereço apontado pelo PC e a decodifica: é uma leitura de memória para o registrador R1.

  2. 2
    Memória

    O endereço 0011 vai pelo barramento de endereços; o conteúdo dessa posição volta pelo barramento de dados.

  3. 3
    Registrador

    O valor lido é guardado em R1, dentro da CPU.

  4. 4
    ULA

    Na instrução seguinte (ADD R1, R2), a ULA recebe os valores de R1 e R2 e realiza a soma.

  5. 5
    Resultado

    O resultado volta a um registrador e, com STORE, pode ser gravado de novo na memória — fechando o percurso.

O gargalo de Von Neumann

Como instruções e dados dividem o mesmo caminho, o processador não consegue buscar instrução e acessar dado no mesmo instante: um dos dois espera. Somado a isso, a memória evoluiu muito mais devagar do que a lógica do processador, então a CPU frequentemente fica ociosa aguardando bytes chegarem. Esse desequilíbrio é o gargalo de Von Neumann.

O problema

  • Instruções e dados usam o mesmo barramento.
  • Buscar a próxima instrução e ler um operando competem pelo mesmo caminho.

A consequência

  • Um dos acessos espera: a CPU fica ociosa aguardando a memória.
  • A lógica do processador evoluiu mais rápido que a latência da memória, ampliando a diferença.

As respostas modernas

  • Hierarquia de caches (L1, L2, L3).
  • Pré-busca (prefetch) e previsão de desvios.
  • Pipeline e execução fora de ordem.
  • Caches separados de instrução e dado (Harvard modificado).

Quase tudo que existe de sofisticado em um processador moderno é uma resposta a esse gargalo: hierarquia de caches (L1, L2, L3), pipeline, previsão de desvios, execução fora de ordem, pré-busca de dados e barramentos separados internamente para instrução e dado. O modelo continua o mesmo; o que mudou foi a engenharia em volta dele.

Von Neumann x Harvard

CPUMemóriainstr. + dados1 caminho
Von Neumann: uma memória, um caminho.
CPUMem. instruçõesMem. dados2 caminhos
Harvard: memórias e caminhos independentes.
Comparação entre as arquiteturas Von Neumann e Harvard
AspectoVon NeumannHarvard
MemóriaUma só, para instruções e dadosSeparadas para instruções e dados
InstruçõesMesmo espaço endereçável dos dadosEspaço próprio, independente
DadosMesmo espaço endereçável das instruçõesEspaço próprio, independente
Caminho (barramento)CompartilhadoIndependentes, acesso simultâneo
FlexibilidadeAlta: código é dado, fácil de carregar e trocarMenor: código costuma ficar em área fixa
Custo e complexidadeMenor, menos vias de hardwareMaior, hardware duplicado
Onde apareceComputadores de uso geralMicrocontroladores e processadores de sinal

Na prática, os dois modelos se misturam: um processador de PC é Von Neumann visto de fora, mas usa caches separados de instrução e dado internamente — o chamado Harvard modificado.

Vantagens e limitações do modelo

Vantagens e limitações da arquitetura de Von Neumann
AspectoVantagemLimitação
FlexibilidadeCódigo é dado: carregar, trocar e gerar programas é simples.Dados de entrada podem acabar sendo tratados como código.
HardwareMenos vias e menos duplicação, projeto mais simples e barato.Um único caminho concentra todo o tráfego.
DesempenhoUso uniforme da memória facilita gerenciar espaço livre.Instrução e dado disputam o barramento: um dos acessos espera.
Uso típicoBase dos computadores de uso geral.Em cenários de tempo real muito estrito, arquiteturas separadas podem ser preferidas.

Linha do tempo

  1. 1945

    First Draft of a Report on the EDVAC

    O rascunho circulado por John von Neumann descreve, em texto, uma máquina de programa armazenado com unidade de controle, unidade aritmética, memória e entrada/saída.

  2. 1948

    Manchester Baby (SSEM)

    Em 21 de junho de 1948 a máquina experimental da Universidade de Manchester executa o primeiro programa guardado em memória eletrônica.

  3. 1949

    EDSAC

    Em Cambridge, o EDSAC entra em operação como um dos primeiros computadores de programa armazenado usados regularmente para cálculos reais.

  4. 1951

    EDVAC em operação

    O próprio EDVAC, projeto que originou o relatório de 1945, passa a operar; no mesmo ano o UNIVAC I é entregue, levando o modelo ao uso comercial.

  5. Hoje

    Influência nas arquiteturas modernas

    Computadores, servidores e celulares continuam sendo máquinas de programa armazenado — com camadas de otimização construídas em volta do modelo.

Como isso chegou ao computador de hoje?

Uma CPU moderna não é uma implementação literal do desenho de 1945. O modelo continua sendo a base — programa armazenado, memória endereçável, ciclo de instrução — mas em volta dele foram acrescentadas camadas cuja única razão de existir é reduzir a espera pela memória.

  1. 01

    Von Neumann

    programa armazenado, memória única

  2. 02

    CPU clássica

    UC, ULA e registradores executando um ciclo por vez

  3. 03

    Memória

    grande, endereçável e mais lenta que a lógica

  4. 04

    Cache

    cópias próximas da CPU para reduzir a espera

  5. 05

    Pipeline

    etapas do ciclo sobrepostas em instruções diferentes

  6. 06

    Arquiteturas modernas

    execução fora de ordem, previsão de desvios, múltiplos núcleos

Por isso a leitura correta é: arquiteturas modernas incorporam o modelo de Von Neumann e o cercam de otimizações. Entender o modelo clássico é o que torna possível entender por que essas otimizações existem.

Perguntas frequentes

O que é a arquitetura de Von Neumann em uma frase?

É o modelo de computador com programa armazenado, em que instruções e dados ocupam a mesma memória e são acessados pelo mesmo barramento, sob comando de uma unidade de controle.

O que é programa armazenado?

É a ideia de guardar o programa na memória, no mesmo formato dos dados, em vez de fixá-lo na fiação da máquina. Trocar o programa passa a ser trocar o conteúdo da memória.

Por que instruções e dados compartilharem memória pode ser um problema?

Porque os dois competem pelo mesmo caminho de acesso: buscar a próxima instrução e ler um operando não acontecem no mesmo instante. Além disso, se dados de entrada forem interpretados como código, surgem falhas de segurança.

O que é o gargalo de Von Neumann?

É o desequilíbrio entre a velocidade do processador e o acesso à memória através de um caminho compartilhado: a CPU frequentemente fica esperando bytes chegarem em vez de calcular.

Von Neumann ainda é utilizado?

Sim. Computadores, servidores e celulares seguem o modelo de programa armazenado. As otimizações internas (caches, pipeline, execução fora de ordem) não substituem o modelo: elas escondem sua principal limitação.

Qual a diferença entre Von Neumann e Harvard?

Harvard separa memória e barramento de instruções dos de dados, permitindo acesso simultâneo; Von Neumann compartilha os dois, ganhando simplicidade e flexibilidade em troca de disputa por acesso.

Como isso se relaciona com CPUs modernas?

Um processador de PC é Von Neumann visto de fora — mesma memória para código e dados — mas internamente usa caches separados de instrução e dado, o chamado Harvard modificado, além de pipeline e pré-busca.

Quais são os componentes principais?

Unidade de controle, unidade lógica e aritmética (com os registradores), memória principal e subsistema de entrada e saída, interligados pelo barramento.