Ir para o conteúdo principal
Bethemesh
ReferênciaHistória da informáticaIniciante

A arquitetura de von Neumann: o programa colocado na memória

Compreenda o modelo de von Neumann, as unidades de cálculo, controlo, memória e entrada/saída e o princípio do programa armazenado.

Publicado 31 de julho de 2026Atualizado 7 de agosto de 2026Leitura : 7 minPor Yann Bastien
Esquema editorial da arquitetura de von Neumann ligando processador, memória e entrada/saída
Mostrar índice
  1. Antes do programa armazenado
  2. O projeto EDVAC e o relatório de 1945
  3. Uma invenção coletiva
  4. As cinco grandes funções
  5. A ideia decisiva: instruções e dados na memória
  6. Fetch, decode, execute
  7. Registos: memória junto do cálculo
  8. O estrangulamento de von Neumann
  9. As caches aproximam os dados do processador
  10. Arquitetura von Neumann e Harvard
  11. Os processadores modernos são muito mais complexos
  12. Um programa pode tornar-se dados
  13. Do hardware especializado à máquina universal
  14. Porque é que a arquitetura de von Neumann continua importante
  15. Perguntas frequentes
  16. John von Neumann inventou esta arquitetura sozinho?
  17. Qual é a principal ideia da arquitetura de von Neumann?
  18. Qual é a diferença entre as arquiteturas von Neumann e Harvard?
  19. O que é o estrangulamento de von Neumann?
  20. Os computadores modernos ainda usam a arquitetura de von Neumann?

A arquitetura de von Neumann é um dos modelos fundamentais da informática moderna. Formalizada em meados da década de 1940, no contexto dos primeiros computadores eletrónicos, assenta numa ideia hoje quase evidente: as instruções de um programa podem ser armazenadas na memória, tal como os dados que manipulam.

Este princípio do programa armazenado transformou profundamente a conceção dos computadores. A mesma máquina podia realizar tarefas muito diferentes simplesmente carregando um novo programa, sem ser necessário alterar fisicamente a cablagem.

Mais de oitenta anos depois dos primeiros trabalhos sobre o EDVAC, os processadores tornaram-se incomparavelmente mais complexos. Ainda assim, memória, cálculo, controlo e entrada/saída continuam no centro do seu funcionamento.

Antes do programa armazenado

As primeiras máquinas automáticas de cálculo não eram necessariamente programadas como os computadores atuais. Em algumas, mudar o cálculo exigia alterar ligações, deslocar cabos, configurar interruptores ou preparar novos suportes físicos. O ENIAC, desenvolvido nos Estados Unidos durante a Segunda Guerra Mundial, é um exemplo célebre.

Surgiu então uma pergunta essencial: e se as instruções que dizem à máquina o que fazer fossem elas próprias guardadas na memória? O programa deixaria de ser apenas uma configuração física e passaria a ser informação que o computador pode carregar e ler.

O projeto EDVAC e o relatório de 1945

Em 1945, os projetistas do ENIAC já trabalhavam no sucessor, o EDVAC (Electronic Discrete Variable Automatic Computer). John von Neumann participou nas discussões e escreveu o célebre First Draft of a Report on the EDVAC.

O relatório descrevia uma máquina eletrónica organizada em torno de cálculo, controlo, memória e comunicação com o exterior. Sobretudo, apresentava o princípio de que as instruções podiam ser representadas numericamente e armazenadas na memória. A ampla circulação do documento ajudou decisivamente a difundir esta forma de conceber um computador.

Uma invenção coletiva

Apresentar John von Neumann como único inventor desta arquitetura seria enganador. J. Presper Eckert, John Mauchly e outros investigadores e engenheiros contribuíram diretamente para os projetos ENIAC e EDVAC.

Von Neumann teve, contudo, um papel decisivo na formalização e sobretudo na divulgação destas ideias. Por isso, a designação histórica “arquitetura de von Neumann” permaneceu.

As cinco grandes funções

Numa representação simplificada, uma máquina do tipo von Neumann inclui:

  • uma unidade aritmética e lógica (ALU);
  • uma unidade de controlo;
  • memória;
  • dispositivos de entrada;
  • dispositivos de saída.

Nos computadores modernos, a ALU e a unidade de controlo fazem parte do processador. A memória conserva tanto os dados como as instruções do programa. Entrada e saída permitem comunicar com o exterior através de teclado, ecrã, armazenamento, rede, sensores e muitos outros periféricos.

A ideia decisiva: instruções e dados na memória

Numa arquitetura de von Neumann clássica, dados e instruções podem partilhar a mesma memória. Num programa simples de adição, a memória pode conter os dois números, a instrução de adição, a indicação de onde guardar o resultado e depois o próprio resultado.

Uma instrução é, portanto, também informação numérica. Para alterar o comportamento da máquina basta carregar novas instruções. O mesmo hardware pode realizar contabilidade, cálculos científicos, executar um jogo ou editar texto.

Fetch, decode, execute

A execução de um programa pode ser representada pelo ciclo fetch-decode-execute. Um registo chamado program counter contém o endereço da próxima instrução. O processador vai buscá-la à memória, a unidade de controlo descodifica-a, a operação é executada e o resultado pode ser colocado num registo, escrito na memória ou enviado a outro componente.

Os processadores modernos realizam milhares de milhões destes ciclos por segundo.

Registos: memória junto do cálculo

O processador possui pequenas áreas de armazenamento extremamente rápidas chamadas registos. Podem conter valores usados num cálculo, endereços de memória, resultados intermédios, a instrução atual ou o endereço da próxima instrução.

A sua capacidade é mínima comparada com a memória principal, mas a proximidade das unidades de cálculo torna-os muito mais rápidos. Esta diferença ilustra um problema persistente: o cálculo pode tornar-se mais rápido do que o acesso aos dados necessários.

O estrangulamento de von Neumann

No modelo clássico, instruções e dados partilham a memória e os caminhos de comunicação com o processador. Mesmo um processador extremamente rápido pode ser limitado pela velocidade com que a informação circula entre a memória e as unidades de cálculo.

Este fenómeno é conhecido como estrangulamento de von Neumann. A expressão foi popularizada por John Backus na década de 1970. A diferença de desempenho entre processadores e memória continua a ser um desafio central da arquitetura de computadores.

As caches aproximam os dados do processador

Uma resposta consiste em acrescentar vários níveis de memória cache. Uma cache é muito menor do que a memória principal, mas também muito mais rápida, e tenta manter perto do processador os dados e instruções que provavelmente serão utilizados em breve.

Os processadores modernos têm normalmente caches L1, L2 e L3, com diferentes capacidades e velocidades. O objetivo é evitar tanto quanto possível a espera pela memória principal.

Arquitetura von Neumann e Harvard

Numa arquitetura Harvard estrita, instruções e dados utilizam memórias separadas e podem dispor de caminhos de comunicação distintos. Isto pode permitir obter simultaneamente uma instrução e um dado.

De forma simples: von Neumann = espaço de memória partilhado; Harvard = memórias separadas. Na prática, muitos processadores modernos combinam os dois modelos: apresentam ao software um espaço unificado, mas usam internamente caches distintas para instruções e dados. É a chamada arquitetura Harvard modificada.

Os processadores modernos são muito mais complexos

O ciclo fetch-decode-execute é um excelente modelo pedagógico, mas um processador moderno não trabalha rigidamente instrução após instrução. O pipelining sobrepõe etapas, várias unidades de execução podem trabalhar em paralelo, algumas instruções são reorganizadas internamente e a execução especulativa antecipa cálculos antes de se saber se serão necessários.

Os processadores atuais possuem também vários núcleos e unidades especializadas. Ao nível do software, porém, mantém-se a ideia fundamental: instruções armazenadas dirigem uma máquina de uso geral que manipula dados.

Um programa pode tornar-se dados

Como um programa é representado numericamente na memória, um programa pode manipular outro programa. Um compilador lê código-fonte e produz um executável. Um sistema operativo carrega programas na memória. Um editor modifica ficheiros de código. Um programa pode até gerar novas instruções.

A fronteira entre “programa” e “dados” depende assim também da interpretação da informação. Esta propriedade foi essencial para sistemas operativos, compiladores, linguagens de programação e para a indústria do software.

Do hardware especializado à máquina universal

O programa armazenado contribuiu para a passagem de uma máquina diferente para cada problema para uma máquina de uso geral, cujo comportamento é alterado através do software.

Existe uma forte ligação conceptual com Alan Turing. A máquina de Turing é um modelo matemático, enquanto a arquitetura de von Neumann descreve a organização prática de computadores eletrónicos. Ainda assim, ambos pertencem à mesma revolução: o comportamento de uma máquina pode ser determinado pela informação que recebe.

Porque é que a arquitetura de von Neumann continua importante

Os computadores atuais incluem GPUs, vários núcleos, hierarquias complexas de cache, controladores e aceleradores especializados. Chamá-los simplesmente “máquinas de von Neumann” seria demasiado redutor.

O modelo continua, porém, extremamente útil histórica e pedagogicamente. Ajuda a explicar porque um computador tem memória e processador, como um programa é executado, porque os dados circulam entre componentes e porque a velocidade da memória afeta o desempenho.

O princípio do programa armazenado ajudou a transformar o computador numa máquina versátil definida tanto pelo software como pelo hardware.

Perguntas frequentes

John von Neumann inventou esta arquitetura sozinho?

Não. Von Neumann desempenhou um papel importante na formalização e divulgação, em particular através do First Draft of a Report on the EDVAC de 1945. As ideias resultaram, porém, de trabalho coletivo que envolveu, entre outros, J. Presper Eckert e John Mauchly.

Qual é a principal ideia da arquitetura de von Neumann?

O programa armazenado: as instruções podem ser representadas numericamente e guardadas na memória, permitindo que a mesma máquina execute programas diferentes.

Qual é a diferença entre as arquiteturas von Neumann e Harvard?

No modelo clássico de von Neumann, instruções e dados partilham a memória. Numa arquitetura Harvard, utilizam memórias ou caminhos separados. Muitos processadores modernos usam organizações híbridas.

O que é o estrangulamento de von Neumann?

É a limitação de desempenho provocada pela comunicação entre processador e memória. Um processador muito rápido pode ter de esperar pelas instruções ou pelos dados de que necessita.

Os computadores modernos ainda usam a arquitetura de von Neumann?

Não na sua forma histórica simples. Caches, vários núcleos, execução paralela e unidades especializadas ampliam muito o modelo, mas o princípio do programa armazenado continua fundamental.

Este artigo foi útil?

Fontes e referências