El Manchester Baby , también llamado Small-Scale Experimental Machine ( SSEM ), [1] fue el primer ordenador electrónico con programa almacenado . Fue construido en la Universidad de Manchester por Frederic C. Williams , Tom Kilburn y Geoff Tootill , y ejecutó su primer programa el 21 de junio de 1948. [2]
El Baby no fue concebido como un motor de computación práctico, sino que fue diseñado como un banco de pruebas para el tubo Williams , la primera memoria de acceso aleatorio verdaderamente . Descrito como "pequeño y primitivo" 50 años después de su creación, fue la primera máquina funcional que contenía todos los elementos esenciales para una computadora digital electrónica moderna. [3] Tan pronto como el Baby demostró la viabilidad de su diseño, se inició un proyecto en la universidad para desarrollarlo en una máquina operativa a gran escala, el Manchester Mark 1. El Mark 1 a su vez se convirtió rápidamente en el prototipo del Ferranti Mark 1 , la primera computadora de propósito general disponible comercialmente del mundo. [4] [5]
El Baby tenía una longitud de palabra de 32 bits y una memoria de 32 palabras (1 kilobit , 1.024 bits). Como fue diseñado para ser el ordenador de programa almacenado más simple posible, las únicas operaciones aritméticas implementadas en hardware eran la resta y la negación ; las demás operaciones aritméticas se implementaron en software. El primero de los tres programas escritos para la máquina calculó el divisor propio más alto de 2 18 (262.144), probando todos los números enteros desde 2 18 hacia abajo. Este algoritmo tardaría mucho tiempo en ejecutarse, y así probaría la fiabilidad del ordenador, ya que la división se implementaba mediante la resta repetida del divisor. El programa constaba de 17 instrucciones y se ejecutó durante unos 52 minutos antes de llegar a la respuesta correcta de 131.072, después de que el Baby hubiera realizado alrededor de 3,5 millones de operaciones (para una velocidad de CPU efectiva de unas 1100 instrucciones por segundo ). [2]
El primer diseño de una computadora controlada por un programa fue la máquina analítica de Charles Babbage en la década de 1830, con Ada Lovelace concibiendo la idea del primer programa teórico para calcular los números de Bernoulli . Un siglo después, en 1936, el matemático Alan Turing publicó su descripción de lo que se conocería como máquina de Turing , un concepto teórico destinado a explorar los límites de la computación mecánica. Turing no estaba imaginando una máquina física, sino una persona a la que llamó "computadora", que actuaba de acuerdo con las instrucciones proporcionadas por una cinta en la que se podían leer y escribir símbolos secuencialmente a medida que la cinta se movía bajo un cabezal de cinta. Turing demostró que si se puede escribir un algoritmo para resolver un problema matemático, entonces una máquina de Turing puede ejecutar ese algoritmo. [6]
El Z3 de Konrad Zuse fue el primer ordenador programable y completamente automático del mundo , con lógica aritmética digital binaria, pero carecía de la ramificación condicional de una máquina de Turing. El 12 de mayo de 1941, el Z3 fue presentado con éxito ante una audiencia de científicos del Deutsche Versuchsanstalt für Luftfahrt ("Laboratorio Alemán de Aviación") en Berlín . [7] El Z3 almacenaba su programa en una cinta externa, pero era electromecánico en lugar de electrónico. Los primeros dispositivos informáticos electrónicos fueron el ordenador Atanasoff-Berry (ABC), que se probó con éxito en 1942, y el Colossus de 1943, pero ninguno de ellos era una máquina de programa almacenado. [8] [9]
El ENIAC (1946) fue el primer ordenador automático que era a la vez electrónico y de propósito general. Era un ordenador Turing completo , con ramificaciones condicionales y programable para resolver una amplia gama de problemas, pero su programa se almacenaba en el estado de interruptores en cables de conexión, en lugar de en una memoria modificable por la máquina, y podía llevar varios días reprogramarlo. [3] Investigadores como Turing y Zuse investigaron la idea de utilizar la memoria del ordenador para almacenar el programa, así como los datos con los que trabajaba, [10] y fue el matemático John von Neumann quien escribió un artículo ampliamente distribuido que describía esa arquitectura informática, que todavía se utiliza en casi todos los ordenadores. [11]
La construcción de un ordenador de von Neumann dependía de la disponibilidad de un dispositivo de memoria adecuado en el que almacenar el programa. Durante la Segunda Guerra Mundial, los investigadores que trabajaban en el problema de eliminar el desorden de las señales de radar habían desarrollado una forma de memoria de línea de retardo , cuya primera aplicación práctica fue la línea de retardo de mercurio, [12] desarrollada por J. Presper Eckert . Los transmisores de radar envían pulsos breves y regulares de energía de radio, cuyos reflejos se muestran en una pantalla CRT. Como los operadores suelen estar interesados solo en objetivos en movimiento, era deseable filtrar cualquier reflejo distractor de objetos estacionarios. El filtrado se logró comparando cada pulso recibido con el pulso anterior y rechazando ambos si eran idénticos, dejando una señal que contenía solo las imágenes de cualquier objeto en movimiento. Para almacenar cada pulso recibido para una comparación posterior, se pasó a través de una línea de transmisión, retrasándolo exactamente el tiempo entre los pulsos transmitidos. [13]
Turing se unió al Laboratorio Nacional de Física (NPL) en octubre de 1945, [14] momento en el que los científicos del Ministerio de Abastecimiento habían llegado a la conclusión de que Gran Bretaña necesitaba un Laboratorio Nacional de Matemáticas para coordinar la computación asistida por máquinas. [15] Se creó una División de Matemáticas en el NPL, y el 19 de febrero de 1946 Turing presentó un documento que describía su diseño para una computadora electrónica de programa almacenado que se conocería como Motor de Cálculo Automático (ACE). [15] Este fue uno de los varios proyectos establecidos en los años posteriores a la Segunda Guerra Mundial con el objetivo de construir una computadora de programa almacenado. Casi al mismo tiempo, EDVAC estaba en desarrollo en la Escuela Moore de Ingeniería Eléctrica de la Universidad de Pensilvania , y el Laboratorio de Matemáticas de la Universidad de Cambridge estaba trabajando en EDSAC . [16]
El NPL no tenía la experiencia necesaria para construir una máquina como ACE, por lo que se puso en contacto con Tommy Flowers en el Laboratorio de Investigación Dollis Hill de la Oficina General de Correos (GPO) . Flowers, el diseñador de Colossus, la primera computadora electrónica programable del mundo, estaba comprometido con otro proyecto y no pudo participar en él, aunque su equipo construyó algunas líneas de retardo de mercurio para ACE. [15] También se contactó al Telecommunications Research Establishment (TRE) para solicitar ayuda, al igual que a Maurice Wilkes en el Laboratorio de Matemáticas de la Universidad de Cambridge. [15]
El departamento gubernamental responsable del NPL decidió que, de todo el trabajo que estaba realizando el TRE en su nombre, el ACE debía tener la máxima prioridad. [15] La decisión del NPL condujo a una visita del superintendente de la División de Física del TRE el 22 de noviembre de 1946, acompañado por Frederic C. Williams y A. M. Uttley, también del TRE. [15] Williams dirigió un grupo de desarrollo del TRE que trabajaba en almacenes de CRT para aplicaciones de radar, como alternativa a las líneas de retardo. [17] Williams no estaba disponible para trabajar en el ACE porque ya había aceptado una cátedra en la Universidad de Manchester , y la mayoría de sus técnicos de circuitos estaban en proceso de ser transferidos al Departamento de Energía Atómica. [15] El TRE acordó enviar un pequeño número de técnicos para trabajar bajo la dirección de Williams en la universidad, y apoyar a otro pequeño grupo que trabajaba con Uttley en el TRE. [15]
Aunque algunos de los primeros ordenadores, como el EDSAC, inspirado en el diseño del EDVAC, hicieron uso posteriormente con éxito de la memoria de línea de retardo de mercurio , [18] la tecnología tenía varios inconvenientes: era pesada, era cara y no permitía acceder a los datos de forma aleatoria. Además, como los datos se almacenaban como una secuencia de ondas acústicas propagadas a través de una columna de mercurio , la temperatura del dispositivo tenía que controlarse con mucho cuidado, ya que la velocidad del sonido a través de un medio varía con su temperatura. Williams había visto un experimento en Bell Labs que demostraba la eficacia de los tubos de rayos catódicos (TRC) como alternativa a la línea de retardo para eliminar los ecos terrestres de las señales de radar. Mientras trabajaba en el TRE, poco antes de incorporarse a la Universidad de Manchester en diciembre de 1946, él y Tom Kilburn habían desarrollado una forma de memoria electrónica conocida como tubo Williams o tubo Williams-Kilburn, basada en un TRC estándar: el primer dispositivo electrónico de almacenamiento digital de acceso aleatorio. [19] El Baby fue diseñado para demostrar que era un dispositivo de almacenamiento práctico al demostrar que los datos que contenía podían leerse y escribirse de manera confiable a una velocidad adecuada para su uso en una computadora. [20]
Para su uso en un ordenador digital binario , el tubo tenía que ser capaz de almacenar uno de dos estados en cada una de sus posiciones de memoria, correspondientes a los dígitos binarios ( bits ) 0 y 1. Explotaba la carga eléctrica positiva o negativa generada al mostrar un guión o un punto en cualquier posición de la pantalla del CRT, un fenómeno conocido como emisión secundaria . Un guión generaba una carga positiva y un punto una carga negativa, cualquiera de las cuales podía ser captada por una placa detectora situada delante de la pantalla; una carga negativa representaba 0 y una carga positiva 1. La carga se disipaba en unos 0,2 segundos, pero podía refrescarse automáticamente a partir de los datos captados por el detector. [21]
El tubo Williams utilizado en Baby se basó en el CV1131, un CRT de 12 pulgadas (300 mm) de diámetro disponible comercialmente, pero en el Mark I se utilizó un tubo más pequeño de 6 pulgadas (150 mm), el CV1097. [22]
Después de desarrollar el ordenador Colossus para descifrar códigos en Bletchley Park durante la Segunda Guerra Mundial, Max Newman se dedicó al desarrollo de un ordenador que incorporara tanto los conceptos matemáticos de Alan Turing como el concepto de programa almacenado que había sido descrito por John von Neumann . En 1945, fue designado para la Cátedra Fielden de Matemáticas Puras en la Universidad de Manchester; llevó a sus colegas del proyecto Colossus, Jack Good y David Rees, a Manchester con él, y allí reclutaron a FC Williams para que fuera el "hombre del circuito" para un nuevo proyecto informático para el que había conseguido financiación de la Royal Society . [23]
Tras conseguir el apoyo de la universidad, obtener financiación de la Royal Society y reunir un equipo de primer nivel de matemáticos e ingenieros, Newman ya tenía todos los elementos de su plan de construcción de computadoras en marcha. Adoptando el enfoque que había utilizado con tanta eficacia en Bletchley Park, Newman dejó a su gente a su aire para que trabajara en los detalles mientras él se concentraba en orquestar la iniciativa.
— David Anderson, historiador [23]
Tras su nombramiento como catedrático de ingeniería eléctrica en la Universidad de Manchester, Williams contrató a su colega de TRE, Tom Kilburn, en comisión de servicio. En otoño de 1947, ambos habían aumentado la capacidad de almacenamiento del tubo Williams de un bit a 2048, dispuestos en una matriz de 64 por 32 bits, [24] y demostraron que era capaz de almacenar esos bits durante cuatro horas. [25] El ingeniero Geoff Tootill se unió al equipo en calidad de préstamo de TRE en septiembre de 1947 y permaneció en comisión de servicio hasta abril de 1949. [26]
Ahora bien, seamos claros antes de continuar: ni Tom Kilburn ni yo sabíamos nada sobre computadoras cuando llegamos a la Universidad de Manchester... Newman nos explicó todo el funcionamiento de una computadora".
—Frederic Calland Williams [9]
A Kilburn le resultó difícil recordar las influencias en el diseño de su máquina:
En esa época, de una forma u otra, sabía lo que era una computadora digital... No tengo idea de dónde saqué ese conocimiento.
—Tom Kilburn [27]
Jack Copeland explica que el primer diseño de Kilburn (pre-Baby) sin acumuladores (descentralizado, en la nomenclatura de Jack Good) se basaba en las aportaciones de Turing, pero que más tarde cambió a una máquina basada en acumuladores (centralizada) del tipo defendido por von Neumann, tal como lo escribieron y le enseñaron Jack Good y Max Newman. [27]
El conjunto de instrucciones de siete operaciones del Baby era aproximadamente un subconjunto del conjunto de instrucciones de doce operaciones propuesto en 1947 por Jack Good, en el primer documento conocido que utiliza el término "Baby" para esta máquina. [28] Good no incluía una instrucción de "detención", y su instrucción de salto condicional propuesta era más complicada que la que implementó el Baby. [27]
Aunque Newman no jugó ningún papel de ingeniería en el desarrollo del Baby ni de ninguna de las computadoras Manchester posteriores , en general apoyó y se mostró entusiasmado con el proyecto y organizó la adquisición de suministros excedentes de guerra para su construcción, incluidos bastidores de metal GPO [29] y "... el material de dos Colossi completos" [30] de Bletchley.
En junio de 1948, el Baby ya estaba construido y en funcionamiento. [24] Tenía 5,2 m de largo, 2,24 m de alto y pesaba casi 1 tonelada larga . La máquina contenía 550 válvulas (tubos de vacío) —300 diodos y 250 pentodos— y tenía un consumo de energía de 3500 vatios. [31] La unidad aritmética se construyó utilizando válvulas de pentodo EF50 , que se habían utilizado ampliamente durante la guerra. [25] El Baby utilizaba un tubo Williams para proporcionar 32 palabras de 32 bits de memoria de acceso aleatorio (RAM), un segundo para albergar un acumulador de 32 bits en el que se podían almacenar temporalmente los resultados intermedios de un cálculo y un tercero para almacenar la instrucción del programa actual junto con su dirección en la memoria. Se utilizó un cuarto CRT, sin la electrónica de almacenamiento de los otros tres, como dispositivo de salida, capaz de mostrar el patrón de bits de cualquier tubo de almacenamiento seleccionado. [32]
Cada palabra de 32 bits de la RAM podía contener una instrucción de programa o datos. En una instrucción de programa, los bits 0 a 12 representaban la dirección de memoria del operando que se iba a utilizar, y los bits 13 a 15 especificaban la operación que se iba a ejecutar, como almacenar un número en la memoria; los 16 bits restantes no se utilizaban. [32] La arquitectura de un solo operando de Baby significaba que el segundo operando de cualquier operación era implícito: el acumulador o el contador de programa (dirección de instrucción); las instrucciones de programa especificaban solo la dirección de los datos en la memoria.
Una palabra en la memoria de la computadora podía ser leída, escrita o actualizada en 360 microsegundos. Una instrucción tardaba cuatro veces más en ejecutarse que acceder a una palabra de la memoria, lo que daba una tasa de ejecución de aproximadamente 700 instrucciones por segundo. El almacenamiento principal se actualizaba continuamente, un proceso que tardaba 20 milisegundos en completarse, ya que cada una de las 32 palabras del Baby tenía que ser leída y luego actualizada en secuencia. [24]
El Baby representaba los números negativos mediante el complemento a dos , [33] como lo hacen todavía la mayoría de las computadoras. En esa representación, el valor del bit más significativo denota el signo de un número; los números positivos tienen un cero en esa posición y los negativos un uno. Por lo tanto, el rango de números que se podían almacenar en cada palabra de 32 bits era de −2 31 a +2 31 − 1 (decimal: −2.147.483.648 a +2.147.483.647).
El formato de instrucciones del Baby tenía un campo de código de operación de tres bits , que permitía un máximo de ocho (2 3 ) instrucciones diferentes. A diferencia de la convención moderna, el almacenamiento de la máquina se describía con los dígitos menos significativos a la izquierda; por lo tanto, un uno se representaba en tres bits como "100", en lugar del más convencional "001". [33]
Las operaciones negativas incómodas eran consecuencia de la falta de hardware del Baby para realizar operaciones aritméticas excepto la resta y la negación . Se consideró innecesario construir un sumador antes de que pudieran comenzar las pruebas, ya que la suma se puede implementar fácilmente mediante la resta, [32] es decir , x + y se puede calcular como −(− x − y ). Por lo tanto, sumar dos números, X e Y, requería cuatro instrucciones: [34]
LDN X // carga X negativa en el acumuladorSUB Y // resta Y del valor en el acumuladorSTO S // almacena el resultado en SLDN S // carga el valor negativo en S en el acumulador
Los programas se ingresaban en forma binaria recorriendo cada palabra de la memoria por turno y usando un conjunto de 32 botones e interruptores conocidos como el dispositivo de entrada para establecer el valor de cada bit de cada palabra en 0 o 1. El Baby no tenía lector de cinta de papel ni perforadora . [35] [36] [37]
Se escribieron tres programas para la computadora. El primero, que constaba de 17 instrucciones, fue escrito por Kilburn y, hasta donde se puede determinar, se ejecutó por primera vez el 21 de junio de 1948. [38] Fue diseñado para encontrar el factor propio más alto de 2 18 (262,144) probando cada entero desde 2 18 − 1 hacia abajo. Las divisiones se implementaron mediante restas repetidas del divisor. El Baby necesitó 3,5 millones de operaciones y 52 minutos para producir la respuesta (131,072). El programa utilizó ocho palabras de memoria de trabajo además de sus 17 palabras de instrucciones, lo que dio un tamaño de programa de 25 palabras. [39]
Geoff Tootill escribió una versión modificada del programa el mes siguiente y, a mediados de julio, Alan Turing —que había sido designado lector en el departamento de matemáticas de la Universidad de Manchester en septiembre de 1948— presentó el tercer programa, para realizar divisiones largas . Para entonces, Turing había sido designado para el puesto nominal de subdirector del Laboratorio de Máquinas de Computación de la universidad, [38] aunque el laboratorio no se convirtió en una realidad física hasta 1951. [40]
Williams y Kilburn informaron sobre el Baby en una carta a la revista Nature , publicada en septiembre de 1948. [41] La exitosa demostración de la máquina condujo rápidamente a la construcción de una computadora más práctica, la Manchester Mark 1 , cuyo trabajo comenzó en agosto de 1948. La primera versión estuvo operativa en abril de 1949, [40] y a su vez condujo directamente al desarrollo de la Ferranti Mark 1 , la primera computadora de propósito general disponible comercialmente del mundo. [4]
En 1998, se construyó una réplica funcional del Baby, que ahora se exhibe en el Museo de Ciencia e Industria de Manchester , para celebrar el 50 aniversario del funcionamiento de su primer programa. En el museo se realizan demostraciones periódicas de la máquina en funcionamiento. [42]
En 2008, se descubrió en la Universidad de Manchester una fotografía panorámica original de toda la máquina. La fotografía, tomada el 15 de diciembre de 1948 por un estudiante de investigación, Alec Robinson, había sido reproducida en The Illustrated London News en junio de 1949. [43] [44]