Arquitetura de Von Neumann: Conceito e História
Classificado em Tecnologia
Escrito em em português com um tamanho de 7,42 KB.
Arquitetura de Von Neumann
A Arquitetura de von Neumann, criada por John von Neumann (pronuncia-se Nóimann), é uma arquitetura de computador que se caracteriza pela capacidade de uma máquina digital armazenar seus programas no mesmo espaço de memória que os dados, podendo assim manipular tais programas. Esta arquitetura é um projeto modelo de um computador digital de programa armazenado que utiliza uma unidade de processamento (CPU) e uma unidade de armazenamento ("memória") para comportar, respectivamente, instruções e dados.
A máquina proposta por Von Neumann reúne os seguintes componentes:
- Uma memória;
- Uma unidade aritmética e lógica (ALU);
- Uma unidade central de processamento (CPU), composta por diversos registradores;
- Uma Unidade de Controle (CU), cuja função é a mesma da tabela de controle da Máquina de Turing universal: buscar um programa na memória, instrução por instrução, e executá-lo sobre os dados de entrada.
Todos os elementos dessa arquitetura são alinhados com a estrutura de hardware da CPU. Assim, o sistema pode realizar todas as suas atividades sem apresentar erros no desempenho. A arquitetura de Von Neumann é continuamente influenciada pela evolução tecnológica, tendo peças mais modernas inseridas. Cada um dos elementos apresentados é realizado à custa de componentes físicos independentes, cuja implementação tem variado ao longo do tempo, consoante a evolução das tecnologias de fabricação, desde os relés eletromagnéticos, os tubos de vácuo (ou válvulas), até aos semicondutores, abrangendo os transistores e os circuitos eletrônicos integrados, com média, alta ou muito alta densidade de integração (MSI - medium scale, LSI - large scale, ou VLSI - very large scale integration), medida em termos de milhões de transistores por pastilha de silício.
Evolução dos Programas de Computador
As primeiras máquinas de computação tinham programas fixos. Alguns computadores muito simples ainda usam este projeto, quer para fins de simplicidade ou de formação. Por exemplo, uma calculadora de mesa (em princípio) é um programa de computador fixo. Ela pode fazer matemática básica, mas não pode ser usada como um processador de texto ou um emulador de console de videogame. Alterar o programa de uma máquina de programa fixo exige religação, reestruturação ou um novo projeto da máquina. Os primeiros computadores não eram tão "programados", pois eles eram "desenhados". Era um processo trabalhoso, começando com fluxogramas e cédulas de papel, seguido de desenhos detalhados de engenharia e, em seguida, o processo muitas vezes penoso fisicamente de religação e reconstrução da máquina. Podendo levar três semanas para criar um programa no ENIAC e começar a trabalhar.
O Impacto do Computador de Programa Armazenado
A ideia do computador de programa armazenado mudou tudo isso: um computador que, pelo projeto, inclui um conjunto de instruções e pode armazenar na memória um conjunto de instruções (programa) que detalha o cálculo. Um projeto de programa armazenado também permite que os programas possam se modificar durante a execução. Uma motivação precoce para uma instalação desse tipo foi a necessidade de um programa para incrementar ou modificar a porção do endereço das instruções, o que tinha que ser feito manualmente em projetos adiantados. Isto tornou-se menos importante quando registradores de índice e endereçamento indireto foram as características usuais da arquitetura da máquina. O código de automodificação foi amplamente caído em desuso, já que normalmente é difícil de entender e depurar, bem como sendo ineficiente em pipelining de processador moderno e esquemas de cache.
Aplicações e Limitações
Em grande escala, a capacidade de tratar as instruções como os dados é o que faz montadores, compiladores e outras ferramentas de programação automatizada possíveis. Pode-se "escrever programas que escrevem programas". Em uma escala menor, instruções de I/O da máquina intensiva, como o BitBlt, primitivos usados para modificar imagens em um display bitmap, foram mostrados posteriormente que estas instruções podem ser implementadas de forma eficiente por "na compilação fly" ("just-in-time de compilação") de tecnologia, por exemplo, geração de código de programas, uma forma de código de automodificação que se manteve popular.
Há desvantagens para a concepção de von Neumann. Além do gargalo de von Neumann descrito abaixo, alterar o programa pode ser bastante prejudicial, quer por acidente ou design. Em alguns projetos simples de computador de programa armazenado, um programa com defeito pode danificar outros programas, ou o sistema operacional, possivelmente levando a uma pane no computador. Proteção de memória e outras formas de controle de acesso podem ajudar a evitar esses problemas.
Contribuições de Turing e Outros
O matemático Alan Turing, que tinha sido alertado para um problema de lógica matemática pelas palestras de Max Newman na Universidade de Cambridge, escreveu um artigo em 1936 intitulado On Computable Numbers, com um aplicativo para o Entscheidungsproblem, que foi publicado nos Anais da Sociedade Matemática de Londres. Nele, ele descreveu uma máquina hipotética que ele chamou de "máquina de computação universal", e que agora é conhecida como a "Máquina de Turing universal". A máquina hipotética tinha um armazenamento infinito (memória, na terminologia de hoje instruções e dados). O engenheiro alemão Konrad Zuse, independentemente, escreveu sobre este conceito em 1936. John von Neumann tornou-se familiarizado com Turing quando ele era professor visitante na Universidade de Cambridge em 1935 e também durante o ano que Turing passou na Universidade de Princeton, em 1936-1937.
O Projeto Manhattan e o EDVAC
Von Neumann estava envolvido no Projeto Manhattan no Los Alamos National Laboratory, que exigiu enormes quantidades de cálculo. Isso o levou para o projeto ENIAC, no verão de 1944. Lá, ele se juntou ao debate em curso sobre a concepção deste computador de programa armazenado, o EDVAC. Como parte desse grupo, ele se ofereceu para escrever uma descrição do mesmo. O termo "arquitetura de von Neumann" surgiu a partir de uma publicação de von Neumann, o primeiro esboço de um relatório sobre o EDVAC datado de 30 de junho de 1945, que incluía ideias de Eckert e Mauchly. O esboço estava inacabado quando seu colega Herman Goldstine o circulou somente com o nome de von Neumann sobre ele, para a consternação de Eckert e Mauchly. O documento foi lido por dezenas de colegas de von Neumann nos Estados Unidos e Europa, influenciando a próxima rodada de modelos de computador.
Legado e Controvérsias
Ambas as publicações de von Neumann e Turing descreveram um programa armazenado para computadores, mas a publicação de von Neumann alcançou maior circulação e a arquitetura do computador que ele expôs ficou conhecida como a "arquitetura de von Neumann". Von Neumann foi, então, o criador da arquitetura de programa armazenado, mas Jack Copeland considera que é "historicamente inadequado" referir-se a eletrônica de programa armazenado e computadores digitais como "máquinas de von Neumann".