bebê Manchester -Manchester Baby

bebê Manchester
Uma série de sete altos racks de metal cheios de equipamentos eletrônicos em frente a uma parede de tijolos.  Sinais acima de cada rack descrevem as funções executadas pela eletrônica que eles contêm.  Três visitantes leem dos estandes de informações à esquerda da imagem
Réplica do bebê no Museu da Ciência e Indústria em Castlefield , Manchester
Também conhecido como Máquina Experimental de Pequena Escala
Desenvolvedor Frederic Calland Williams
Tom Kilburn
Geoff Tootill
Produto familiar Computadores Manchester
Data de lançamento 21 de junho de 1948 ; 74 anos atrás ( 21-06-1948 )
Memória 1 kilobit (1.024 bits)
Sucessor Manchester Mark 1

O Manchester Baby , também conhecido desde seu projeto de replicação como Small-Scale Experimental Machine ( SSEM ), foi o primeiro computador eletrônico de programa armazenado . Foi construído na Universidade de Manchester por Frederic C. Williams , Tom Kilburn e Geoff Tootill , e teve seu primeiro programa em 21 de junho de 1948.

O Baby não foi concebido para ser um mecanismo de computação prático, mas foi projetado como um teste para o tubo Williams , a primeira memória de acesso verdadeiramente aleatório . Descrita como "pequena e primitiva" 50 anos após sua criação, foi a primeira máquina em funcionamento a conter todos os elementos essenciais a um computador digital eletrônico moderno. Assim que o Baby demonstrou a viabilidade de seu projeto, foi iniciado um projeto na universidade para transformá-lo em uma máquina operacional em escala real, o Manchester Mark 1 . O Mark 1, por sua vez, rapidamente se tornou o protótipo do Ferranti Mark 1 , o primeiro computador de uso geral comercialmente disponível.

O Bebê tinha um comprimento de palavra de 32 bits e uma memória de 32 palavras (1 kilobit (1.024 bits)). Como ele foi projetado para ser o computador de programa armazenado mais simples possível, as únicas operações aritméticas implementadas em hardware eram subtração e negação ; outras operações aritméticas foram implementadas em software. O primeiro dos três programas escritos para a máquina calculou o maior divisor próprio de 2 18 (262.144) testando cada inteiro de 2 18 para baixo. Esse algoritmo levaria muito tempo para ser executado - e assim provar a confiabilidade do computador, já que a divisão foi implementada pela subtração repetida do divisor. O programa consistia em 17 instruções e funcionou por cerca de 52 minutos antes de atingir a resposta correta de 131.072, após o Baby ter realizado cerca de 3,5 milhões de operações (para uma velocidade efetiva da CPU de cerca de 1100 instruções por segundo ).

Fundo

Representação artística de uma máquina de Turing

O primeiro projeto para um computador controlado por programa foi o Analytical Engine de Charles Babbage na década de 1830, com Ada Lovelace concebendo a ideia do primeiro programa teórico para calcular números de Bernoulli. Um século depois, em 1936, o matemático Alan Turing publicou sua descrição do que ficou conhecido como máquina de Turing , um conceito teórico destinado a explorar os limites da computação mecânica. Turing não estava imaginando uma máquina física, mas uma pessoa que ele chamava de "computador", que agia de acordo com as instruções fornecidas por uma fita na qual os símbolos podiam ser lidos e escritos sequencialmente à medida que a fita se movia sob uma cabeça de fita. Turing provou que se um algoritmo pode ser escrito para resolver um problema matemático, então uma máquina de Turing pode executar esse algoritmo.

O Z3 de Konrad Zuse foi o primeiro computador programável e totalmente automático do mundo, com lógica aritmética digital binária, mas faltava-lhe a ramificação condicional de uma máquina de Turing. Em 12 de maio de 1941, o Z3 foi apresentado com sucesso a uma audiência de cientistas do Deutsche Versuchsanstalt für Luftfahrt ("Laboratório Alemão de Aviação") em Berlim . O Z3 armazenava seu programa em uma fita externa, mas era eletromecânico e não eletrônico. O Colossus de 1943 foi o primeiro dispositivo de computação eletrônica, mas não era uma máquina de uso geral.

O ENIAC (1946) foi o primeiro computador automático que era eletrônico e de uso geral. Era Turing completo , com ramificação condicional e programável para resolver uma ampla gama de problemas, mas seu programa era mantido no estado de switches em patch cords, em vez de memória alterável por máquina, e poderia levar vários dias para reprogramar. Pesquisadores como Turing e Zuse investigaram a ideia de usar a memória do computador para armazenar o programa, bem como os dados em que estava trabalhando, e foi o matemático John von Neumann quem escreveu um artigo amplamente distribuído descrevendo essa arquitetura de computador, ainda usada em quase todos os computadores.

Projeto da arquitetura von Neumann (1947)

A construção de um computador von Neumann dependia da disponibilidade de um dispositivo de memória adequado para armazenar o programa. Durante a Segunda Guerra Mundial, pesquisadores trabalhando no problema de remover a desordem dos sinais de radar desenvolveram uma forma de memória de linha de atraso , cuja primeira aplicação prática foi a linha de atraso de mercúrio, desenvolvida por J. Presper Eckert . Os transmissores de radar enviam pulsos breves regulares de energia de rádio, cujos reflexos são exibidos em uma tela CRT. Como os operadores geralmente estão interessados ​​apenas em alvos em movimento, era desejável filtrar quaisquer reflexões de distração de objetos estacionários. A filtragem foi feita comparando cada pulso recebido com o pulso anterior e rejeitando ambos se fossem idênticos, deixando um sinal contendo apenas as imagens de quaisquer objetos em movimento. Para armazenar cada pulso recebido para comparação posterior, ele passava por uma linha de transmissão, atrasando-o exatamente no tempo entre os pulsos transmitidos.

Turing ingressou no National Physical Laboratory (NPL) em outubro de 1945, quando cientistas do Ministério do Abastecimento concluíram que a Grã-Bretanha precisava de um National Mathematical Laboratory para coordenar a computação auxiliada por máquina. Uma Divisão de Matemática foi criada na NPL e, em 19 de fevereiro de 1946, Alan Turing apresentou um artigo descrevendo seu projeto para um computador eletrônico de programa armazenado a ser conhecido como Automatic Computing Engine (ACE). Este foi um dos vários projetos criados nos anos que se seguiram à Segunda Guerra Mundial com o objetivo de construir um computador de programa armazenado. Mais ou menos na mesma época, o EDVAC estava em desenvolvimento na Moore School of Electrical Engineering da Universidade da Pensilvânia , e o Laboratório de Matemática da Universidade de Cambridge estava trabalhando no EDSAC .

A NPL não tinha experiência para construir uma máquina como a ACE, então eles contataram Tommy Flowers no Laboratório de Pesquisa Dollis Hill do General Post Office (GPO) . Flowers, o designer do Colossus, o primeiro computador eletrônico programável do mundo, foi contratado em outro lugar e não pôde participar do projeto, embora sua equipe tenha construído algumas linhas de atraso de mercúrio para o ACE. O Estabelecimento de Pesquisa de Telecomunicações (TRE) também foi abordado para assistência, assim como Maurice Wilkes , do Laboratório de Matemática da Universidade de Cambridge.

O departamento governamental responsável pelo NPL decidiu que, de todo o trabalho realizado pelo TRE em seu nome, o ACE deveria ter prioridade máxima. A decisão do NPL levou à visita do superintendente da Divisão de Física do TRE em 22 de novembro de 1946, acompanhado por Frederic C. Williams e AM Uttley, também do TRE. Williams liderou um grupo de desenvolvimento de TRE trabalhando em lojas CRT para aplicações de radar, como uma alternativa para linhas de atraso. Williams não estava disponível para trabalhar no ACE porque já havia aceitado uma cátedra na Universidade de Manchester , e a maioria de seus técnicos de circuito estava em processo de transferência para o Departamento de Energia Atômica. O TRE concordou em destacar um pequeno número de técnicos para trabalhar sob a direção de Williams na universidade e apoiar outro pequeno grupo trabalhando com Uttley no TRE.

Tubo Williams-Kilburn

Embora alguns computadores antigos, como o EDSAC, inspirados no design do EDVAC, mais tarde fizessem uso bem-sucedido da memória de linha de atraso de mercúrio , a tecnologia tinha várias desvantagens: era pesada, cara e não permitia que os dados fossem acessados ​​aleatoriamente. . Além disso, como os dados eram armazenados como uma sequência de ondas acústicas propagadas por uma coluna de mercúrio , a temperatura do aparelho precisava ser controlada com muito cuidado, pois a velocidade do som em um meio variava com sua temperatura. Williams tinha visto um experimento no Bell Labs demonstrando a eficácia dos tubos de raios catódicos (CRT) como uma alternativa à linha de atraso para remover os ecos do solo dos sinais de radar. Enquanto trabalhava no TRE, pouco antes de ingressar na Universidade de Manchester em dezembro de 1946, ele e Tom Kilburn desenvolveram uma forma de memória eletrônica conhecida como tubo Williams ou tubo Williams-Kilburn, baseado em um CRT padrão: o primeiro -acessar dispositivo de armazenamento digital. O Baby foi projetado para mostrar que era um dispositivo de armazenamento prático, demonstrando que os dados contidos nele podiam ser lidos e escritos de forma confiável em uma velocidade adequada para uso em um computador.

Para uso em um computador digital binário , o tubo tinha que ser capaz de armazenar qualquer um dos dois estados em cada uma de suas posições de memória, correspondendo aos dígitos binários ( bits ) 0 e 1. Ele explorava a carga elétrica positiva ou negativa gerada por exibindo um traço ou um ponto em qualquer posição na tela CRT, um fenômeno conhecido como emissão secundária . Um traço gerava uma carga positiva e um ponto uma carga negativa, qualquer uma das quais podia ser captada por uma placa detectora na frente da tela; uma carga negativa representava 0 e uma carga positiva 1. A carga se dissipou em cerca de 0,2 segundos, mas poderia ser atualizada automaticamente a partir dos dados coletados pelo detector.

O tubo Williams usado no Baby foi baseado no CV1131, um CRT de 12 polegadas (300 mm) de diâmetro disponível comercialmente, mas um tubo menor de 6 polegadas (150 mm), o CV1097, foi usado no Mark I.

Gênese do projeto

Uma placa em homenagem a Williams e Kilburn na Universidade de Manchester

Depois de desenvolver o computador Colossus para quebra de código em Bletchley Park durante a Segunda Guerra Mundial, Max Newman estava comprometido com o desenvolvimento de um computador que incorporasse os conceitos matemáticos de Alan Turing e o conceito de programa armazenado que havia sido descrito por John von Neumann . Em 1945, foi nomeado para a Cátedra Fielden de Matemática Pura na Universidade de Manchester; ele levou seus colegas do projeto Colossus Jack Good e David Rees para Manchester com ele, e lá eles recrutaram FC Williams para ser o "homem do circuito" para um novo projeto de computador para o qual ele conseguiu financiamento da Royal Society .

"Tendo garantido o apoio da universidade, obtido financiamento da Royal Society e reunido uma equipe de matemáticos e engenheiros de primeira linha, Newman agora tinha todos os elementos de seu plano de construção de computadores. Adotando a abordagem que ele havia usado com tanta eficácia em Bletchley Park, Newman soltou seu pessoal no trabalho detalhado enquanto se concentrava em orquestrar o empreendimento."

—  David Anderson, historiador

Após sua nomeação para a cadeira de engenharia elétrica na Universidade de Manchester, Williams recrutou seu colega do TRE, Tom Kilburn , em destacamento. No outono de 1947, a dupla aumentou a capacidade de armazenamento do tubo Williams de um bit para 2.048, organizado em uma matriz de 64 por 32 bits, e demonstrou que era capaz de armazenar esses bits por quatro horas. O engenheiro Geoff Tootill juntou-se à equipe por empréstimo do TRE em setembro de 1947 e permaneceu destacado até abril de 1949.

"Agora vamos deixar claro antes de prosseguirmos que nem Tom Kilburn nem eu sabíamos a primeira coisa sobre computadores quando chegamos à Universidade de Manchester... Newman explicou todo o negócio de como um computador funciona para nós."

Kilburn teve dificuldade em lembrar as influências no projeto de sua máquina:

"[N]esse período, de uma forma ou de outra eu sabia o que era um computador digital... de onde tirei esse conhecimento, não faço ideia."

—  Tom Kilburn

Jack Copeland explica que o primeiro projeto de Kilburn (pré-Baby) sem acumulador (descentralizado, na nomenclatura de Jack Good) foi baseado em entradas de Turing, mas que mais tarde ele mudou para uma máquina baseada em acumulador (centralizada) do tipo defendido por von Neumann, conforme escrito e ensinado a ele por Jack Good e Max Newman.

O conjunto de sete instruções de operação do bebê era aproximadamente um subconjunto do conjunto de doze instruções de operação proposto em 1947 por Jack Good, no primeiro documento conhecido a usar o termo "Baby" para esta máquina. Good não incluiu uma instrução de "parada", e sua instrução de salto condicional proposta era mais complicada do que o que o Bebê implementou.

Desenvolvimento e projeto

Esquema arquitetônico mostrando como os quatro tubos de raios catódicos (mostrados em verde) foram implantados

Embora Newman não tenha desempenhado nenhum papel de engenharia no desenvolvimento do Baby, ou de qualquer um dos computadores subsequentes de Manchester , ele geralmente apoiou e entusiasmou o projeto e providenciou a aquisição de suprimentos excedentes de guerra para sua construção, incluindo racks de metal GPO e "…o material de dois Colossos completos" de Bletchley.

Em junho de 1948, o Baby havia sido construído e estava funcionando. Tinha 17 pés (5,2 m) de comprimento, 7 pés e 4 polegadas (2,24 m) de altura e pesava quase 1 tonelada (1,0 t). A máquina continha 550  válvulas (tubos de vácuo) — 300 diodos e 250  pentodos  e tinha um consumo de energia de 3500 watts. A unidade aritmética foi construída usando válvulas pentodo EF50 , que foram amplamente utilizadas durante a guerra. O bebê usou um tubo de Williams para fornecer palavras de 32 por 32 bits de memória de acesso aleatório (RAM), um segundo para armazenar um acumulador de 32 bits no qual os resultados intermediários de um cálculo poderiam ser armazenados temporariamente e um terceiro para armazenar a instrução do programa atual junto com seu endereço na memória. Um quarto CRT, sem a eletrônica de armazenamento dos outros três, foi usado como dispositivo de saída, capaz de exibir o padrão de bits de qualquer tubo de armazenamento selecionado.

Três racks altos contendo placas de circuito eletrônico
O CRT de saída está imediatamente acima do dispositivo de entrada, ladeado pelo monitor e pela eletrônica de controle.

Cada palavra de 32 bits de RAM pode conter uma instrução de programa ou dados. Em uma instrução de programa, os bits 0–12 representavam o endereço de memória do operando a ser usado e os bits 13–15 especificavam a operação a ser executada, como armazenar um número na memória; os 16 bits restantes não foram utilizados. A arquitetura do conjunto de instruções de operandos 0 do Baby |single operando significava que o segundo operando de qualquer operação era implícito: o acumulador ou o contador de programa (endereço de instrução); as instruções do programa especificavam apenas o endereço dos dados na memória.

Uma palavra na memória do computador pode ser lida, escrita ou atualizada em 360 microssegundos. Uma instrução demorava quatro vezes mais para ser executada do que acessar uma palavra da memória, dando uma taxa de execução de instruções de cerca de 700 por segundo. A loja principal foi atualizada continuamente, um processo que levou 20 milissegundos para ser concluído, pois cada uma das 32 palavras do Bebê precisava ser lida e atualizada em sequência.

O Baby representava números negativos usando o complemento de dois , como a maioria dos computadores ainda faz. Nessa representação, o valor do bit mais significativo denota o sinal de um número; os números positivos têm um zero nessa posição e os números negativos um um. Assim, o intervalo de números que poderia ser mantido em cada palavra de 32 bits era −2 31 a +2 31  − 1 (decimal: −2.147.483.648 a +2.147.483.647).

Programação

O formato de instrução do Bebê tinha um campo de código de operação de três bits , o que permitia no máximo oito (2 3 ) instruções diferentes. Em contraste com a convenção moderna, o armazenamento da máquina foi descrito com os dígitos menos significativos à esquerda; assim, um foi representado em três bits como "100", em vez do mais convencional "001".

Conjunto de instruções do bebê
Código binário Notação original Mnemônico moderno Operação
000 S, Cl JMP S Salta para a instrução no endereço obtido do endereço de memória S especificado (salto incondicional absoluto)
100 Adicione S, Cl JRP S Salta para a instrução no contador de programa mais (+) o valor relativo obtido do endereço de memória especificado S (salto incondicional relativo)
010 -S, C LDN S Pegue o número do endereço de memória especificado S, negue-o e carregue-o no acumulador
110 c, S STO S Armazene o número no acumulador no endereço de memória especificado S
001 ou
101
SUBS SUBS Subtraia o número no endereço de memória especificado S do valor no acumulador e armazene o resultado no acumulador
011 Teste CMP Pule a próxima instrução se o acumulador contiver um valor negativo
111 Pare STP Pare

As desajeitadas operações negativas eram consequência da falta de hardware do Bebê para realizar quaisquer operações aritméticas, exceto subtração e negação . Foi considerado desnecessário construir um somador antes que o teste pudesse começar, pois a adição pode ser facilmente implementada por subtração, ou seja, x + y pode ser calculado como −(− xy ). Portanto, somar dois números, X e Y, exigia quatro instruções:

LDN X // load negative X into the accumulator
SUB Y // subtract Y from the value in the accumulator
STO S // store the result at S
LDN S // load negative value at S into the accumulator

Os programas eram inseridos em forma binária percorrendo cada palavra da memória por sua vez e usando um conjunto de 32 botões e interruptores conhecidos como dispositivo de entrada para definir o valor de cada bit de cada palavra para 0 ou 1. leitor de fita de papel ou perfurador .

Primeiros programas

Tubo de raios catódicos pequeno em uma armação de metal enferrujada
Saída CRT

Três programas foram escritos para o computador. O primeiro, consistindo de 17 instruções, foi escrito por Kilburn e, até onde se pode verificar, foi executado pela primeira vez em 21 de junho de 1948. Ele foi projetado para encontrar o fator próprio mais alto de 2 18 (262.144) tentando todos os inteiros de 2 18  − 1 para baixo. As divisões foram implementadas por subtrações repetidas do divisor. O Bebê levou 3,5 milhões de operações e 52 minutos para produzir a resposta (131.072). O programa usou oito palavras de armazenamento de trabalho além de suas 17 palavras de instruções, dando um tamanho de programa de 25 palavras.

Geoff Tootill escreveu uma versão alterada do programa no mês seguinte e, em meados de julho, Alan Turing – que havia sido indicado como leitor no departamento de matemática da Universidade de Manchester em setembro de 1948 – apresentou o terceiro programa, para realizar a divisão longa. Turing já havia sido nomeado para o cargo nominal de vice-diretor do Laboratório de Máquinas de Computação da universidade, embora o laboratório não tenha se tornado uma realidade física até 1951.

Desenvolvimentos posteriores

A BrewDog nomeou sua microcervejaria em Manchester como Máquina Experimental de Cerveja de Pequena Escala em homenagem à Máquina Experimental de Pequena Escala (SSEM)

Williams e Kilburn relataram sobre o bebê em uma carta ao Journal Nature , publicada em setembro de 1948. A demonstração bem-sucedida da máquina rapidamente levou à construção de um computador mais prático, o Manchester Mark 1 , cujo trabalho começou em agosto de 1948. O primeiro A versão estava operacional em abril de 1949 e, por sua vez, levou diretamente ao desenvolvimento do Ferranti Mark 1 , o primeiro computador de uso geral comercialmente disponível.

Em 1998, uma réplica funcional do Bebê, agora em exibição no Museu da Ciência e Indústria em Manchester , foi construída para comemorar o 50º aniversário da execução de seu primeiro programa. Demonstrações da máquina em operação são realizadas regularmente no museu. Em 2008, uma fotografia panorâmica original de toda a máquina foi descoberta na Universidade de Manchester. A fotografia, tirada em 15 de dezembro de 1948 por um estudante de pesquisa, Alec Robinson, foi reproduzida no The Illustrated London News em junho de 1949.

Referências

Notas

Citações

Bibliografia

  • Anderson, David (2010), "Histórias contestadas: desmitificando a história inicial da computação britânica moderna", History of Computing. Aprendendo com o Passado , Springer, pp. 58–67
  • Brown, Louis (1999), A Radar History of World War II: Technical and Military Imperatives , CRC Press, ISBN 978-0-7503-0659-1
  • Copeland, Jack (2010), "Colossus and the Rise of the Modern Computer", em Copeland, B. Jack (ed.), Colossus The Secrets of Bletchley Park's Codebreaking Computers , Oxford University Press, ISBN 978-0-19-957814-6
  • Copeland, Jack (2011), "The Manchester Computer: A Revised History - Part 2: The Baby Computer", IEEE Annals of the History of Computing , 33 (janeiro-março de 2011): 22-37, doi : 10.1109/MAHC. 2010.2 , S2CID  9522437
  • Lavington, Simon (1980), Early British Computers: The Story of Vintage Computers and the People que os construiu (1ª ed.), Manchester University Press Society, ISBN 978-0-7190-0803-0
  • Lavington, Simon (1998), A History of Manchester Computers (2ª ed.), Swindon: The British Computer Society, ISBN 978-1-902505-01-5
  • Lavington, Simon H. (2019), Early Computing in Britain: Ferranti Ltd. e financiamento do governo, 1948–1958 , Springer, ISBN 9783030151034
  • Napper, RBE (2000), "The Manchester Mark 1 Computers", em Rojas, Raúl; Hashagen, Ulf (eds.), The First Computers: History and Architectures , MIT Press, pp. 356–377, ISBN 978-0-262-68137-7

Leitura adicional

links externos