A arquitetura de von Neumann

Armazenamento de instruções
O que diz o First Draft sobre isto? Vamos ver, ainda citando apenas os trechos que me pareceram pertinentes. Começando já pelo item 1.0-Definições:
1.2 Um sistema de computação automática é um … dispositivo que pode executar instruções para efetuar cálculos de uma ordem considerável de complexidade … Estas instruções devem ser fornecidas de alguma forma que o dispositivo possa reconhecê-las … Uma vez fornecidas as instruções, o dispositivo deve executá-las completamente e sem qualquer necessidade de posterior intervenção humana inteligente…. 2.3 Se o dispositivo for concebido para ser … de uso genérico, então deve-se distinguir entre as instruções específicas destinadas a resolver … um problema particular e aquelas que serão levadas a efeito pelos órgãos de controle geral … As primeiras devem ser armazenadas de alguma maneira … 2.4 [o] dispositivo … deve ter uma memória considerável. Pelo menos as seguintes fases de sua operação requererão uma memória: … As instruções que governam um problema complicado …
Note que segundo o descrito, as instruções que constituem um programa devem ser fornecidas ao computador e executadas sem qualquer interferência posterior do usuário. E em uma máquina de uso geral (ou seja, uma que não tenha sido concebida para resolver um problema específico como o Colossus, destinado a decifrar códigos, e o ENIAC, a efetuar cálculos balísticos) as instruções que constituem um programa devem ser armazenadas na memória, um conceito absolutamente revolucionário para a época já que, até então, em todo artefato programável, incluindo o Harward Mark I (mostrado na Figura 2, obtida na Wilipedia), Colossus e ENIAC, as instruções faziam parte do hardware.

É verdade que o conceito de armazenar programas na própria memória do computador não parece ter sido da lavra de von Neumann. A própria Wikipedia, no artigo sobre Arquitetura de von Neumann, menciona que Alan Turing já havia publicado em 1936 nos “Proceedings of the London Mathematical Society” seu famoso trabalho intitulado “On Computable Numbers, with an Application to the Entscheidungsproblem” no qual descrevia aquilo que ele chamou de “universal computing machine” (hoje conhecida como “Máquina de Turing”), uma máquina hipotética que dispunha de uma memória infinita capaz de armazenar tanto dados quanto instruções. O mesmo artigo afirma que von Neumann e Turing mantiveram contato tanto em Cambridge, onde o primeiro lecionava, quanto em Princeton, onde Turing viveu de 1936 a 1937, alguns anos antes da redação do FirstDraft e, por conseguinte, é provável que von Neumann tivesse conhecimento do trabalho de Turing. Mais que isso: em dezembro de 1943 John Mauchly e Presper Eckert escreveram (sobre o próprio EDVAC que então planejavam) que a máquina armazenaria “dados e programas” em sua memória (a Wikipedia afirma que esta foi a primeira proposição prática para a construção de uma “máquina de programa armazenado” ou “stored program computer“, cuja definição estabelecemos na coluna anterior).
Mas o fato é que von Neumann jamais disputou esta primazia. Nem nunca se arvorou em criador de uma arquitetura que levasse seu nome. Pelo contrário: a expressão “arquitetura de von Neumann”, cujo uso só se disseminou após sua morte quando se reconheceu seu papel seminal na concepção do projeto do EDVAC, jamais foi mencionada por ele (e, com certeza absoluta, não consta do First Draft). O que ele fez ao elaborar o First Draft foi, mais uma vez, aquilo que sabia fazer como ninguém: juntar ideias esparsas e conceitos ainda mal estabelecidos (lembre que a máquina de Turing era hipotética) e formular algo absolutamente coerente e funcional com base naquelas e em suas próprias ideias. E quem se dispuser a ler o First Draft com a atenção merecida perceberá claramente que, embora ainda incompleto (afinal, trazia bem no título, a qualidade de First Draft, ou “rascunho preliminar”), descrevia de forma primorosa tudo o que era preciso para se construir a primeira máquina digna de merecer o nome de “computador”.
Mas voltando à questão da arquitetura: o fato de armazenar instruções na memória, por mais revolucionário que fosse, não bastava para definir uma arquitetura. Era preciso mais.
E tudo o que era preciso constava do First Draft. Senão vejamos.
