A máquina de von Neumann

As partes do EDVAC
Diz von Neumann no First Draft sobre seu EDVAC:
2.0 – PRINCIPAIS SUBDIVISÕES DO SISTEMA; 2.2 … uma parte aritmética central do dispositivo provavelmente terá que existir e constituirá a primeira parte específica: CA; 2.3 … controle central… formarão a segunda parte específica: CC; 2.5 …a memória total constitui a terceira parte específica do dispositivo, M; 2.7…Estes órgãos formam a entrada, a quarta parte específica I; 2.8 … a saída, a quinta parte específica O.
Então, de acordo com o que foi concebido por von Neumann, o EDVAC, a máquina descrita no First Draft, deveria ser constituída por cinco partes, ou componentes:
1) Unidade Aritmética, ou CA;
2) Unidade de Controle, ou CC;
3) Memória, ou M;
4) Unidade de entrada, ou I; e
5) Unidade de saída, ou O.
Agora dá para entender porque Andrew Tanenbaum, em seu livro “Organização Estruturada de Computadores”, editado pela Prentice Hall do Brasil, cuja capa da edição americana aparece na Figura 2, define “Máquina de von Neumann” (mas não “arquitetura de von Neumann”) como aquela que “possui cinco partes básicas: a memória, a unidade lógico-aritmética, a unidade de controle de programa e os equipamentos de entrada e saída“. Afinal, é exatamente assim que von Neumann subdivide o EDVAC em seu First Draft e o livro de Tanenbaum é sobre organização (não sobre arquitetura) de computadores.
Porém, voltando ao First Draft: em diversos pontos do documento, considerando que as finalidades de algumas partes se complementam ou suplementam, o próprio von Neumann afirma:
2.6 Estas três partes específicas, CA, CC (juntas, C) e M correspondem aos neurônios associativos de um sistema nervoso humano. Falta discutir o equivalente ao sistema sensorial, ou aferente, e os neurônios motores, ou eferentes. Estes são os órgãos de entrada e saída …
Ou seja: von Neumann admite considerar CA e CC como um componente único, assim como menciona como uma única parte os órgãos de entrada e saída.

Assim, considerando como componentes únicos a) o conjunto de unidades complementares CA e CC, que vieram a constituir essencialmente o que hoje é a Unidade Central de Processamento dos computadores modernos, e b) as unidades suplementares I e O, que, juntas, formam o componente de Entrada/Saída, também pode-se considerar lícito definir máquina de von Neumann como a que é constituída por apenas três unidades básicas, como fazem diversos outros autores, inclusive a própria Wikipedia na página acima citada (repare no esquema da Figura 3, em cuja legenda original consta claramente “Esquema da arquitetura de von Neumann. A Unidade de Controle e a Aritmética e lógica formam os principais componentes da Unidade Central de Processamento”):
1) Unidade de Processamento;
2) Memória;
3) Unidade de Entrada/Saída.
Esta subdivisão também é aceitável já que há, no próprio First Draft, indicações de que von Neumann achava razoável reagrupar assim as cinco “partes” em que originalmente subdividiu o EDVAC. E, de fato, diz Mário Monteiro em seu livro “Introdução à Organização de Computadores”, editora LTC, 5ª edição (inicialmente referindo-se ao ENIAC): “… o primeiro computador surgiu com os mesmos componentes necessários para se realizar com sucesso as etapas de processamento de dados: Processador e Sistema de Entrada e Saída“. E acrescenta: “Logo em seguida John von Neumann aperfeiçoou de forma considerável aquela arquitetura inicial, acrescentando um elemento (componente) fundamental: a memória“.
Há, no entanto, um problema: subdividir máquinas nas partes que a compõem é uma tarefa que cabe ao campo da organização, jamais ao da arquitetura computadores. O que ficou bem claro quando examinamos as definições de ambos os conceitos.
Portanto, é lícito chamar de “máquina de von Neumann” tanto um computador que possui as cinco partes listadas acima como o que se subdivide nas três listadas logo após. Mas não me parece correto basear nisto o conceito de “arquitetura de von Neumann”.
Isto porque, por mais que esta subdivisão tenha sido claramente estabelecida por von Neumann em seu First Draft, ela tem a ver com o conceito de “organização” e não de “arquitetura” dos computadores. Podemos mesmo estar de acordo que ela corresponde à organização dos computadores que aderem à arquitetura de von Neumann, mas definitivamente ela não pode ser usada para definir a arquitetura propriamente dita, que não tem a ver com subdivisões, mas com as funcionalidades de cada componente.
Em suma: tanto aquilo que é descrito acima como possuindo as cinco partes mencionadas como o que é logo após citado como sendo constituído das três partes listadas pode definir o que vem a ser uma “máquina de von Neumann” mas, certamente, não define a “arquitetura de von Neumann“.
Isto posto e considerado, penso que estamos de acordo no que vem a ser uma “máquina de von Neumann”. Que, segundo o ponto de vista, tanto pode ser aquela constituída de cinco partes, a saber, Unidade Aritmética, ou CA; Unidade de Controle, ou CC; Memória, ou M; Unidade de entrada, ou I; e Unidade de saída, ou O ou então aquela formada por três partes, a saber: Unidade de Processamento; Memória; e Unidade de Entrada/Saída, podendo-se escolher uma ou outra a gosto do freguês, já que ambas estão de acordo com o que foi descrito no First Draft.
Mas então o que viria a ser a tal “arquitetura de von Neumann”?
Bem, isto veremos na próxima ? e, garanto, última ? coluna.
Que, prometo, fechará a série.
Até lá
B.Piropo
