Manchester Baby

A Manchester Baby, tamén coñecida como Small-Scale Experimental Machine (SSEM), foi a primeira computadora electrónica de programa almacenado da historia. Construída na Universidade Victoria de Manchester (Inglaterra) por Frederic C. Williams, Tom Kilburn e Geoff Tootill, executou o seu primeiro programa o 21 de xuño de 1948.
A máquina non estaba deseñada para ser unha computadora práctica, sendo o seu obxectivo principal servir de banco de probas para o tubo Williams, a primeira memoria de acceso aleatorio. Malia estar considerado "pequeno e primitivo" aínda polos estándares da súa época, foi a primeira máquina funcional en conter tódolos elementos esenciais dos ordenadores modernos. En canto a Manchester Baby demostrou que o seu deseño era factible, na universidade iniciouse un proxecto para desenvolver unha computadora de maior funcionalidade, a Manchester Mark 1. A Mark 1 converteríase no prototipo da Ferranti Mark 1, a primeira computadora comercial de uso xenérico dispoñible de forma comercial.
A Manchester Baby tiña unha lonxitude de palabra de 32 bits, e unha memoria de 32 palabras (1 kilobit). Ao estar deseñada para ser a computadora de programa almacenado máis sinxela, as únicas operación aritméticas posibles no hardware eran a subtracción e a adición inversa, con outras operacións dispoñibles por medio de software. O primeiro dos tres programas que se escribiron para esta máquina servía para atopar o maior divisor propio de 218 (262144), un cálculo que se sabía que levaría un longo tempo para executarse, probando desta forma a fiabilidade da computadora, probando cada número enteiro en dirección decrecente dende 218, realizando divisións por medio da subtracción repetida do divisor. Este programa estaba composto por 17 instrucións e tiña un tempo de execución de 52 minutos antes de acadar a resposta correcta de 131072, tras realizar 3, 5 millóns de operacións cunha velocidade efectiva de procesamento de 1, 1 kIPS. Contexto
O primeiro deseño dunha computadora controlada por programas foi a Máquina Analítica de Charles Babbage dos anos 1830. Un século máis tarde, en 1936, o matemático Alan Turing publicou a súa descrición do que acabaría por coñecerse como máquina de Turing, un concepto teórico deseñado para explorar os límites da computación mecánica. Turing non tiña en mente unha máquina física, senón unha persoa a que el chamaba unha "computadora", que actuaba segundo as instrucións fornecidas por unha cinta na que se podían ler e escribir símbolos de forma secuencial mentres que se movía baixo un transdutor de cintas. Turing probou que se se podía escribir un algoritmo para resolver un problema matemático, entón habería unha máquina de Turing que podería executar ese algoritmo.
A computadora Z3 de Konrad Zuse foi a primeira computadora programable funcional e completamente automática, cunha lóxica aritmética dixital binaria, mais non posuía a capacidade de ramificación condicional dunha máquina de Turing. O 12 de maio de 1941 presentouse con éxito perante unha audiencia de científicos do Deutsche Versuchsanstalt für Luftfahrt ("Laboratorio Alemán para a Aviación") en Berlín. A Z3 almacenaba o seu programa nunha cinta externa, pero era electromecánica en lugar de puramente electrónica. Por outra banda, a computadora Colossus de 1943 foi o primeiro dispositivo computador electrónico, mais non era unha máquina de propósito xeral.
ENIAC (1946) foi a primeira máquina electrónica de propósito xeral. Era Turing completa, con ramificación condicional e programable para a solución dun amplo rango de problemas, pero a súa programación gardábase nos estados de interruptores de cables de conexión, non nunha memoria, e tardábase varios días en reprogramala. Os científicos como Turing e Zuse investigaron a idea da memoria de computadora para conter os programas ademais dos datos cos que traballarían as máquinas, sendo o matemático John von Neumann quen escribiu un artigo de ampla difusión describindo este tipo de arquitectura de computadoras, usado na maioría de computadoras da actualidade. A construción dunha computadora von Neumann dependía da dispoñibilidade dun dispositivo de memoria axeitado no que gardar o programa. Durante a segunda guerra mundial varios investigadores que traballaban sobre o problema da eliminación do ruído nos sinais de radar desenvolveron unha forma de memoria de liña de retardo, sendo a primeira aplicación práctica deste deseño a liña de retardo de mercurio desenvolvida por J. Presper Eckert.
Turing uniuse ó Laboratorio Nacional de Física do Reino Unido (NPL) en outubro de 1945, momento no que os científicos do Ministerio de Subministración chegaran á conclusión de que Gran Bretaña necesitaba dun Laboratorio Nacional de Matemáticas para coordinar a computación asistida por máquinas. Creouse entón unha División de Matemáticas no NPL, e o 19 de febreiro de 1946 Turing presentou un artigo no que describía o seu deseño para unha computadora electrónica de programa almacenado, que pasaría a ser coñecida co nome de Automatic Computing Engine (ACE). Este foi un dos varios proxectos que se puxeron en marcha durante os anos posteriores á segunda guerra mundial co obxectivo de construír unha computadora de programa almacenado. Case ó mesmo tempo a computadora EDVAC atopábase en proceso de desenvolvemento na Escola Moore de Enxeñaría Eléctrica da Universidade de Pensilvania, mentres que o Laboratorio Matemático da Universidade de Cambridge estaba a traballar no computador EDSAC.
O NPL non posuía a experiencia necesaria para construír unha máquina coma a ACE, polo que se puxo en contacto con Tommy Flowers do Laboratorio de Investigación Dollis Hill da General Post Office (GPO). Flowers, o deseñador do Colossus, estaba naquel entón envolto noutras cuestións e non podía tomar parte no proxecto, aínda que o seu equipo puido construír varias liñas de retardo de mercurio para a ACE. O NPL tamén se puxo en contacto co Telecommunications Research Establishment (TRE) e con Maurice Wilkes do Laboratorio Matemático da Universidade de Cambridge para solicitarlles asistencia con este proxecto.
O departamento gobernamental responsable do NPL decidiu que de tódalas tarefas que o TRE realizaba para eles, o traballo na ACE tería a maior prioridade. O superintendente da División de Física do TRE realizou unha visita ó NPL o 22 de novembro de 1946, acompañado por Frederic C. Williams e A. M. Uttley. Williams lideraba un grupo de desenvolvemento no TRE que estaba a traballar en almacenaxe en CRT para aplicacións de radar, como método alternativo ás liñas de retardo. Williams non estaba dispoñible para traballar na ACE xa que tiña aceptado un posto de profesor na Universidade de Manchester, e a maioría dos seus técnicos de circuítos estaban en proceso de ser transferidos ó Departamento de Enerxía Atómica. Porén, o TRE acordou que un segundo pequeno grupo de técnicos pasarían a traballar baixo a dirección de Williams na universidade, e daría o seu apoio a outro pequeno grupo que traballaría con Uttley no propio TRE. Tubo Williams–Kilburn
Malia que os primeiros computadores como o EDSAC usaban liñas de retardo de mercurio, esta tecnoloxía presentaba varios inconvenientes: era pesada, era cara e non permitía o acceso aleatorio ós datos. A maiores, debido a que os datos se almacenaban coma unha secuencia de ondas acústicas propagadas a través dunha columna de mercurio, a temperatura do dispositivo tiña que estar coidadosamente controlada, xa que a velocidade do son a través dun medio varía coa temperatura. Williams presenciara un experimento realizado en Bell Labs que demostraba a efectividade dos tubos de raios catódicos (CRT) como alternativa as liñas de retardo para eliminar os ecos terrestres dos sinais de radar. Cando Williams aínda estaba traballando no TRE, pouco antes de unirse á Universidade de Manchester en decembro de 1946, desenvolveu xunto a Tom Kilburn unha forma de memoria electrónica coñecida como tubo Williams ou tubo Williams–Kilburn, baseado nos CRT estándar, que sería o primeiro dispositivo de almacenaxe dixital de acceso aleatorio. A Manchester Baby foi deseñada para demostrar que o sistema era un dispositivo de almacenaxe práctico, probando que os datos que almacenaba podían lerse e escribirse á velocidade necesaria para unha computadora.
Para o seu uso nunha computadora dixital binaria, o tubo tiña que ser capaz de almacenar un dos dous estados posibles en cada unha das súas localizacións de memoria, correspondéndose cos díxitos binarios (bits) 0 e 1. Este dispositivo aproveitaba a carga eléctrica positiva ou negativa xerada amosando unha raia ou un punto en calquera posición da pantalla CRT, un fenómeno coñecido como emisión secundaria. Unha raia xeraba unha carga positiva, e un punto xeraba unha carga negativa. Unha placa detectora en fronte dunha pantalla podía tomar calquera destas cargas. Unha carga negativa representaba un 0, e unha positiva representaba un 1. A carga tardaba uns 0, 2 segundos en disiparse, mais podía refrescarse de forma automática tomando os datos recibidos polo detector. O tubo Williams usado na Manchester Baby estaba baseado no CV1131, un CRT de 12" (300 mm) de diámetro dispoñible de forma comercial, mentres que no Mark I utilizouse o CV1097, un tubo máis pequeno de 6" (150 mm). Xénese do proxecto
Tras desenvolver a computadora Colossus para o descifrado de códigos en Bletchley Park durante a segunda guerra mundial, Max Newman comprometeuse co desenvolvemento dunha computadora que incorporase os conceptos matemáticos de Alan Turing e o concepto de programa almacenado descrito por John von Neumann. En 1945 foi nomeado Profesor Fielden de Matemáticas Puras na Universidade de Manchester. Levou canda el ós seus colegas do proxecto Colossus Jack Good e David Rees, e recrutou a Williams para que fose o "home dos circuítos" no novo proxecto, para o que conseguira fondos procedentes da Royal Society. Tras ser nomeado Titular de Enxeñaría Eléctrica na Universidade de Manchseter, Williams arranxou o traslado do seu colega Tom Kilburn dende o TRE. No outono de 1947 os dous conseguiran incrementar a capacidade de almacenaxe do tubo Williams dende un bit ata 2048 bits, dispostos nunha matriz de 64 por 32 bits, e demostraron que era capaz de almacenar eses bits durante varias horas. O enxeñeiro Geoff Tootill uniuse ó seu equipo dende o TRE en setembro de 1947, permanecendo neste traslado ata abril de 1949. Desenvolvemento e deseño
Malia non xogar un papel activo no desenvolvemento da Manchester Baby, ou no de ningunha outra computadora de Manchester posterior, Newman apoiou e amosouse entusiasta polo proxecto, dispoñendo para este a adquisición de subministracións de guerra sobrantes para a súa construción, incluíndo racks metálicos da GPO e "o material de dous Colossus completos" dende Bletchley.
A Manchester Baby quedou rematada e funcional en xuño de 1948. Ocupaba 5, 2 m de largo, 2, 24 m de altura e pesaba case unha tonelada. A máquina contiña 550 válvulas (300 díodos e 250 péntodos), e tiña un consumo de 3500 watts. A unidade aritmética estaba construída con válvulas de péntodo EF50, amplamente utilizadas durante os tempos de guerra. A Manchester Baby usaba un tubo Williams para fornecer palabras de memoria de acceso aleatorio de 32 por 32 bits, un segundo tubo para conter un acumulador de 32 bits no que podían almacenarse temporalmente os resultados intermedios dun cálculo, e un terceiro tubo para conter as instrucións do programa xunto coas súas direccións en memoria. Un cuarto CRT, sen a electrónica de almacenaxe dos outros tres, utilizábase como dispositivo de saída capaz de representar o padrón de bits de calquera tubo de almacenaxe seleccionado. Cada palabra de RAM de 32 bits podía conter ben unha instrución de programa ou ben datos. Nunha instrución de programa, os bits do 0 ó 12 representaban a dirección de memoria do operando a utilizar, e os bits do 13 ó 15 especificaban o código de operación a executar, como por exemplo o código para a almacenaxe dun número en memoria. Os 16 bits restantes non se utilizaban. Cada palabra da memoria podía lerse, escribirse ou refrescarse en 360 microsegundos. A cada instrución leváballe catro veces máis tempo executarse que acceder unha palabra da memoria, dando como resultado unha velocidade de execución de instrucións de aproximadamente 700 por segundo. O almacenaxe principal refrescábase de forma continua, un proceso que tardaba 20 milisegundos en completarse, xa que cada unha das 32 palabras tiña que lerse e posteriormente refrescarse de forma secuencial.
A Manchester Baby representaba os números negativos usando o complemento a dous. Seguindo esta representación, o valor do bit máis significativo denota o signo dun número, cos números positivos tendo un 0 nesta posición e os números negativos un 1. Debido a isto, o rango de números que podía conter cada palabra de 32 bits ía dende −231 ata +231 − 1 (−2147483648 ata +2147483647). Programación
O conxunto de instrucións de tres bits da Manchester Baby permitían un máximo de oito (23) instrucións diferentes. En contraste coas convencións máis modernas, o almacenaxe da máquina definiuse cos díxitos menos significativos á esquerda. Isto significa que por exemplo o número un representábase en tres bits coma "100", en lugar do máis convencional "001". As complicadas operacións negativas eran unha consecuencia da falta de hardware para realizar calquera operación aritmética agás a subtracción e a adición inversa. Os deseñadores non consideraron necesario construír un sumador antes de comezar as probas xa que a suma podía realizarse de forma doada por medio da subtracción, computando por exemplo x+y como −(−x−y) Segundo isto, a suma de dous números X e Y requiría catro instrucións: LDN X // cargar -X no acumulador
SUB Y // subtraer Y do valor no acumulador
STO S // almacenar o resultado en S
LDN S // cargar o valor negativo de S no acumulador
Os programas introducíanse en formato binario saltando a través de cada palabra da memoria en orde, e usando un dispositivo de entrada composto por un conxunto de 32 botóns e interruptores, para definir o valor de cada bit de cada palabra ós valores 0 ou 1. A Manchester Baby non posuía un sistema de cinta perforada.
Primeiros programas
Escribíronse tres programas para esta computadora. O primeiro, composto por 17 instrucións e escrito por Kilburn, executouse por primeira vez o 21 de xuño de 1948. Estaba deseñado para atopar o maior factor propio de 218 (262144) probando cada enteiro entre 218 − 1 en dirección descendente. As divisións realizábanse por medio da subtracción repetida do divisor. A Manchester Baby realizou 3, 5 millóns de operacións e tardou 52 minutos para obter o resultado (131072). O programa usaba oito palabras de almacenaxe de traballo a maiores das súas propias 17 palabras de instrucións, resultando nun tamaño de programa de 25 palabras. Geoff Tootill escribiu unha versión modificada deste programa ó mes seguinte, e a mediados de xullo Alan Turing propuxo o terceiro programa, deseñado para realizar unha división longa. Desenvolvementos posteriores
Williams e Kilburn informaron sobre a Manchester Baby nunha carta para a revista Nature, publicada en setembro de 1948. A exitosa demostración da máquina deu lugar á construción dunha computadora máis práctica, a Manchester Mark 1, na que se comezou a traballar en agosto de 1948. A primeira versión desta estivo operativa en abril de 1949, e á súa vez esta deu lugar ó desenvolvemento da Ferranti Mark 1, a primeira computadora de propósito xeral dispoñible comercialmente.
En 1998 construíuse unha réplica da Manchester Baby para conmemorar o 50º aniversario da execución do seu primeiro programa. A réplica está exposta no Museo da Ciencia e Industria de Manchester, onde se realizan demostracións da operativa da máquina de forma regular. No ano 2008 descubriuse unha fotografía panorámica orixinal da máquina completa na Universidade de Manchester. Esta fotografía, tomada o 15 de decembro de 1948 polo entón estudante Alec Robinson, reproducírase no xornal The Illustrated London News en xuño de 1949.