Primeira Minuta de Relatório sobre o EDVAC -First Draft of a Report on the EDVAC

O primeiro rascunho de um relatório sobre o EDVAC (comumente abreviado para Primeiro rascunho ) é um documento incompleto de 101 páginas escrito por John von Neumann e distribuído em 30 de junho de 1945 por Herman Goldstine , oficial de segurança do projeto ENIAC classificado . Ele contém a primeira descrição publicada do projeto lógico de um computador usando o conceito de programa armazenado, que é controversamente conhecido como a arquitetura de von Neumann .

História

Página de rosto do Primeiro Rascunho , cópia pertencente a Samuel N. Alexander , que desenvolveu o computador SEAC com base no relatório.

Von Neumann escreveu o relatório à mão enquanto viajava de trem para Los Alamos, Novo México, e enviou as notas manuscritas de volta para a Filadélfia . Goldstine mandou digitar e duplicar o relatório. Embora a data do relatório digitado seja 30 de junho, 24 cópias do Primeiro Rascunho foram distribuídas a pessoas intimamente ligadas ao projeto EDVAC cinco dias antes, em 25 de junho. O interesse pelo relatório fez com que fosse enviado para todo o mundo; Maurice Wilkes, da Universidade de Cambridge, citou sua empolgação com o conteúdo do relatório como o ímpeto para sua decisão de viajar aos Estados Unidos para as palestras da Moore School no verão de 1946.

Sinopse

Von Neumann descreve um projeto detalhado de um "sistema de computação digital automático de altíssima velocidade". Ele o divide em seis subdivisões principais: uma parte aritmética central, CA, uma parte de controle central, CC, memória, M, entrada, I, saída, O e memória externa (lenta), R, como cartões perfurados , fita de teletipo , ou fio magnético ou fita de aço .

O CA executará adição, subtração, multiplicação, divisão e raiz quadrada. Outras operações matemáticas, como logaritmos e funções trigonométricas, devem ser feitas com pesquisa de tabela e interpolação , possivelmente biquadrática . Ele observa que a multiplicação e a divisão podem ser feitas com tabelas de logaritmo, mas para manter as tabelas pequenas o suficiente, a interpolação seria necessária e isso, por sua vez, requer a multiplicação, embora talvez com menos precisão.

Os números devem ser representados em notação binária . Ele estima que 27 dígitos binários (ele não usou o termo " bit " , que foi cunhado por Claude Shannon em 1948) seriam suficientes (resultando em precisão de 8 casas decimais), mas arredondou para números de 30 bits com um bit de sinal e um bit para distinguir números de ordens, resultando em uma palavra de 32 bits que ele chama de ciclo menor. A aritmética do complemento de dois deve ser usada, simplificando a subtração. Para multiplicação e divisão, ele propõe colocar o ponto binário após o bit de sinal, o que significa que todos os números são tratados como estando entre -1 e +1 e, portanto, os problemas de computação devem ser escalados de acordo.

Projeto de circuito

Tubos de vácuo devem ser usados ​​em vez de relés devido à capacidade dos tubos operarem em um microssegundo contra 10 milissegundos para relés.

Von Neumann sugere (Seção 5.6) manter o computador o mais simples possível, evitando qualquer tentativa de melhorar o desempenho por operações sobrepostas. As operações aritméticas devem ser realizadas um dígito binário de cada vez. Ele estima adição de dois dígitos binários como tomar um microssegundo e que, portanto, a 30-bit multiplicação deve levar cerca de 30 2 microssegundos ou cerca de um milésimo de segundo, muito mais rápido do que qualquer dispositivo de computação disponíveis no momento.

O projeto de Von Neumann é construído usando o que ele chama de "elementos E", que são baseados no neurônio biológico como modelo, mas são dispositivos digitais que ele diz podem ser construídos usando um ou dois tubos de vácuo. Em termos modernos, seu elemento E mais simples é uma porta AND de duas entradas com uma entrada invertida (a entrada de inibição). Elementos E com mais entradas têm um limite associado e produzem uma saída quando o número de sinais de entrada positivos atinge ou excede o limite, desde que a (única) linha de inibição não seja pulsada. Ele afirma que os elementos E com mais entradas podem ser construídos a partir da versão mais simples, mas sugere que eles sejam construídos diretamente como circuitos de válvula a vácuo, pois menos válvulas serão necessárias.

Blocos de função mais complexos devem ser construídos a partir desses elementos E. Ele mostra como usar esses elementos E para construir circuitos de adição, subtração, multiplicação, divisão e raiz quadrada, bem como dois blocos de memória de estado e circuitos de controle. Ele não usa a terminologia lógica booleana .

Os circuitos devem ser sincronizados com um relógio do sistema mestre derivado de um oscilador de tubo de vácuo , possivelmente controlado por cristal . Seus diagramas lógicos incluem um símbolo de ponta de seta para denotar um atraso de tempo unitário, já que os atrasos de tempo devem ser contabilizados em um projeto síncrono. Ele aponta que em um microssegundo um pulso elétrico se move 300 metros de forma que até que velocidades de clock muito maiores sejam alcançadas, por exemplo, 10 8 ciclos por segundo (100 MHz), o comprimento do fio não seria um problema.

A necessidade de detecção e correção de erros é mencionada, mas não elaborada.

Design de memória

Um conceito-chave de design enunciado, e mais tarde denominado arquitetura Von Neumann , é uma memória uniforme contendo números (dados) e ordens (instruções).

"O dispositivo requer uma memória considerável. Embora pareça que várias partes desta memória têm que executar funções que diferem um pouco em sua natureza e consideravelmente em sua finalidade, é, no entanto, tentador tratar toda a memória como um órgão, e ter seu partes tão intercambiáveis ​​quanto possível para as várias funções enumeradas acima. " (Seção 2.5)

"As encomendas que são recebidas pelo CC vêm de M, ou seja, do mesmo local onde está armazenado o material numérico." (Seção 14.0)

Von Neumann estima a quantidade de memória necessária com base em várias classes de problemas matemáticos, incluindo equações diferenciais ordinárias e parciais , classificação e experimentos de probabilidade . Destes, as equações diferenciais parciais em duas dimensões espaciais mais tempo exigirão mais memória, com três dimensões mais tempo estando além do que pode ser feito usando a tecnologia que estava disponível. Ele conclui que a memória será a maior subdivisão do sistema e propõe 8.192 ciclos menores (palavras) de 32 bits como objetivo do projeto, com 2.048 ciclos menores ainda sendo úteis. Ele estima que algumas centenas de ciclos menores serão suficientes para armazenar o programa.

Ele propõe dois tipos de memória rápida, linha de atraso e tubo de iconoscópio . Cada ciclo secundário deve ser tratado como uma unidade (endereçamento de palavras, Seção 12.8). As instruções devem ser executadas sequencialmente, com uma instrução especial para mudar para um ponto diferente na memória (ou seja, uma instrução de salto).

Os dígitos binários em uma memória de linha de retardo passam pela linha e são retornados ao início. O acesso aos dados em uma linha de retardo impõe uma penalidade de tempo enquanto espera que os dados desejados voltem. Depois de analisar essas questões de tempo, ele propõe organizar a memória da linha de retardo em 256 "órgãos" (DLAs) de linha de retardo, cada um armazenando 1024 bits, ou 32 ciclos menores, chamados de ciclo principal. Um acesso à memória primeiro seleciona o DLA (8 bits) e, em seguida, o ciclo menor dentro do DLA (5 bits), para um total de 13 bits de endereço.

Para a memória do iconoscópio , ele reconhece que cada ponto de varredura na face do tubo é um capacitor e que um capacitor pode armazenar um bit. Será necessária uma varredura de altíssima precisão e a memória durará pouco tempo, talvez tão pouco quanto um segundo e, portanto, precisará ser recopiada ( atualizada ) periodicamente .

Pedidos (instruções)

Na Seção 14.1, von Neumann propõe o formato dos pedidos, que ele chama de código. Tipos de ordem incluem as operações aritméticas básicas, movendo-se os ciclos de menores entre CA e M (carga palavra e armazenar em termos modernos), um pedido ( s ) que selecciona um dos dois números com base no sinal da operação anterior, de entrada e de saída e de transferência CC para um local de memória em outro lugar (um salto). Ele determina o número de bits necessários para os diferentes tipos de ordem, sugere ordens imediatas onde a palavra seguinte é o operando e discute a conveniência de deixar bits sobressalentes no formato de ordem para permitir memória mais endereçável no futuro, bem como outras não especificadas finalidades. A possibilidade de armazenar mais de um pedido em um ciclo menor é discutida, com pouco entusiasmo por essa abordagem. Uma tabela de pedidos é fornecida, mas nenhuma discussão sobre as instruções de entrada e saída foi incluída no Primeiro Rascunho.

Controvérsia

O tratamento do relatório preliminar como uma publicação (no sentido legal) foi a fonte de amarga acrimônia entre as facções da equipe de design do EDVAC por duas razões. Em primeiro lugar, a publicação representou uma divulgação pública que impediu o EDVAC de ser patenteado; segundo, alguns na equipe de projeto do EDVAC argumentaram que o conceito de programa armazenado evoluiu de reuniões na Escola de Engenharia Elétrica Moore da Universidade da Pensilvânia , anteriores à atividade de von Neumann como consultor lá, e que muito do trabalho representado no O primeiro rascunho não era mais do que uma tradução dos conceitos discutidos para a linguagem da lógica formal na qual von Neumann era fluente. Conseqüentemente, o fracasso de von Neumann e Goldstine em listar outros como autores no Primeiro Rascunho levou o crédito a ser atribuído apenas a von Neumann. (Veja o efeito de Mateus e a lei de Stigler .)

Veja também

Referências

Bibliografia

links externos