La calculadora automática de almacenamiento de retardo electrónico ( EDSAC ) fue una de las primeras computadoras británicas. [1] Inspirada en el seminal Primer borrador de un informe sobre el EDVAC de John von Neumann , la máquina fue construida por Maurice Wilkes y su equipo en el Laboratorio de Matemáticas de la Universidad de Cambridge en Inglaterra. La EDSAC fue la segunda computadora electrónica digital con programa almacenado , después de la Manchester Mark 1 , en entrar en servicio regular. [2]
Más tarde, el proyecto recibió el apoyo de J. Lyons & Co. Ltd. , con la intención de desarrollar un ordenador de aplicación comercial, lo que dio como resultado el desarrollo por parte de Lyons del LEO I , basado en el diseño de EDSAC. El trabajo en EDSAC comenzó durante 1947, [3] y ejecutó sus primeros programas el 6 de mayo de 1949, cuando calculó una tabla de números cuadrados [4] y una lista de números primos . [5] [6] EDSAC se cerró finalmente el 11 de julio de 1958, tras ser reemplazado por EDSAC 2 , que permaneció en uso hasta 1965. [7]
Tan pronto como EDSAC estuvo en funcionamiento, comenzó a atender las necesidades de investigación de la universidad. Utilizaba líneas de retardo de mercurio para la memoria y tubos de vacío desclasificados para la lógica. El consumo de energía era de 11 kW de electricidad. [8] [9] El tiempo de ciclo era de 1,5 ms para todas las instrucciones ordinarias, 6 ms para la multiplicación. La entrada se realizaba a través de una cinta perforada de cinco agujeros y la salida a través de un teleimpresor .
Inicialmente, los registros se limitaban a un acumulador y un registro multiplicador. En 1953, David Wheeler , al regresar de una estancia en la Universidad de Illinois , diseñó un registro de índice como extensión del hardware EDSAC original.
En 1952 se añadió una unidad de cinta magnética, pero nunca funcionó lo suficientemente bien como para ser realmente útil. [9]
Hasta 1952, la memoria principal disponible (instrucciones y datos) era de sólo 512 palabras de 18 bits, y no había almacenamiento de respaldo. [10] Las líneas de retardo (o "tanques") estaban dispuestas en dos baterías que proporcionaban 512 palabras cada una. La segunda batería entró en funcionamiento en 1952. [9]
El almacenamiento completo de líneas de retardo de 1024 palabras no estuvo disponible hasta 1955 o principios de 1956, [11] lo que hasta entonces limitaba los programas a unas 800 palabras.
John Lindley (estudiante de diploma entre 1958 y 1959) mencionó "la increíble dificultad que teníamos para producir una sola pieza correcta de cinta de papel con los rudimentarios y poco fiables equipos de perforación, impresión y verificación caseros disponibles a finales de los años 50". [12]
La memoria principal del EDSAC constaba de 1024 posiciones, aunque inicialmente solo se instalaron 512 posiciones. Cada una contenía 18 bits, pero el bit superior siempre estaba no disponible debido a problemas de sincronización, por lo que solo se utilizaban 17 bits. Una instrucción constaba de un código de instrucción de cinco bits, un bit de repuesto, un operando de 10 bits (normalmente una dirección de memoria) y un bit de longitud para controlar si la instrucción utilizaba un operando de 17 bits o de 35 bits (dos palabras consecutivas, little-endian ). Todos los códigos de instrucción estaban representados por diseño con una letra mnemotécnica, de modo que la instrucción Add , por ejemplo, utilizaba el código de carácter EDSAC para la letra A.
Internamente, el EDSAC utilizaba números binarios en complemento a dos . Los números tenían una longitud de 17 bits (una palabra) o 35 bits (dos palabras). De manera inusual, el multiplicador estaba diseñado para tratar los números como fracciones de punto fijo en el rango −1 ≤ x < 1, es decir, el punto binario estaba inmediatamente a la derecha del signo. El acumulador podía contener 71 bits, incluido el signo, lo que permitía multiplicar dos números largos (de 35 bits) sin perder precisión.
Las instrucciones disponibles eran:
No existía instrucción de división (pero se suministraban varias subrutinas de división) ni forma de cargar directamente un número en el acumulador (para ello era necesaria una instrucción de "Almacenar y poner a cero el acumulador" seguida de una instrucción de "Añadir"). No existía instrucción de salto incondicional ni instrucción de llamada a procedimiento (todavía no se había inventado).
Maurice Wilkes analizó los modos de direccionamiento relativo para el EDSAC en un artículo publicado en 1953. Hizo propuestas para facilitar el uso de subrutinas . [13]
Las órdenes iniciales se cableaban en un conjunto de interruptores uniselectores y se cargaban en las palabras bajas de la memoria al iniciarse. En mayo de 1949, las órdenes iniciales proporcionaban un ensamblador reubicable primitivo que aprovechaba el diseño mnemotécnico descrito anteriormente, todo en 31 palabras. Este fue el primer ensamblador del mundo y, posiblemente, el comienzo de la industria global del software. Hay una simulación de EDSAC disponible y una descripción completa de las órdenes iniciales y los primeros programas. [14]
El primer cálculo realizado por EDSAC fue un programa ejecutado el 6 de mayo de 1949 para calcular números cuadrados . [15] El programa fue escrito por Beatrice Worsley , quien había viajado desde Canadá para estudiar la máquina. [16] [15]
La máquina fue utilizada por otros miembros de la universidad para resolver problemas reales y se desarrollaron muchas de las primeras técnicas que ahora están incluidas en los sistemas operativos.
Los usuarios preparaban sus programas introduciéndolos (en ensamblador) en una cinta de papel. Pronto se volvieron expertos en sostener la cinta de papel a la luz y leer los códigos. Cuando un programa estaba listo, se colgaba de un trozo de cuerda tendida cerca del lector de cinta de papel. Los operadores de la máquina, que estaban presentes durante el día, seleccionaban la siguiente cinta de la cuerda y la cargaban en EDSAC. Esto es, por supuesto, lo que hoy conocemos como colas de trabajos. Si imprimía algo, entonces la cinta y la impresión se devolvían al usuario; de lo contrario, se le informaba en qué ubicación de memoria se había detenido. Los depuradores tardaron un tiempo en aparecer, pero se podía configurar una pantalla de tubo de rayos catódicos para que mostrara el contenido de una parte particular de la memoria. Esto se utilizaba para ver si un número convergía, por ejemplo. Se conectaba un altavoz al bit de signo del acumulador; los usuarios experimentados conocían los sonidos saludables y no saludables de los programas, en particular los programas "colgados" en un bucle.
Después del horario de oficina, a ciertos "usuarios autorizados" se les permitía hacer funcionar la máquina por sí mismos, lo que continuaba hasta altas horas de la noche hasta que una válvula explotaba, lo que generalmente sucedía según uno de esos usuarios. [17] Fred Hoyle alude a esto en su novela The Black Cloud .
Los primeros programadores tuvieron que hacer uso de técnicas que hoy están mal vistas, en particular, el uso de código automodificable . Como no existía ningún registro de índice hasta mucho después, la única forma de acceder a una matriz era modificar la ubicación de memoria a la que hacía referencia una instrucción en particular.
David Wheeler , que obtuvo el primer doctorado en Ciencias de la Computación del mundo trabajando en el proyecto, es reconocido por inventar el concepto de subrutina. Los usuarios escribían programas que llamaban a una rutina saltando al inicio de la subrutina con la dirección de retorno (es decir, la ubicación más uno del salto en sí) en el acumulador (un Wheeler Jump ). Por convención, la subrutina esperaba esto, y lo primero que hizo fue modificar su instrucción de salto final a esa dirección de retorno. Se podían llamar subrutinas múltiples y anidadas siempre que el usuario supiera la longitud de cada una para calcular la ubicación a la que saltar; las llamadas recursivas estaban prohibidas. Luego, el usuario copiaba el código de la subrutina desde una cinta maestra a su propia cinta después del final de su propio programa. (Sin embargo, Alan Turing discutió las subrutinas en un artículo de 1945 sobre propuestas de diseño para el NPL ACE , llegando tan lejos como para inventar el concepto de una pila de direcciones de retorno, que habría permitido la recursión. [19] )
La falta de un registro de índice también planteaba un problema para el escritor de una subrutina, ya que no podía saber de antemano en qué parte de la memoria se cargaría la subrutina y, por lo tanto, no podía saber cómo abordar las regiones del código que se utilizaban para el almacenamiento de datos (las llamadas "pseudoórdenes"). Esto se solucionaba mediante el uso de una rutina de entrada inicial, que era responsable de cargar subrutinas desde una cinta perforada a la memoria. Al cargar una subrutina, anotaba la posición de inicio e incrementaba las referencias de memoria interna según fuera necesario. Por lo tanto, como escribió Wilkes, "el código utilizado para representar órdenes fuera de la máquina difiere del utilizado dentro, y las diferencias están dictadas por los diferentes requisitos del programador por un lado, y de los circuitos de control de la máquina por el otro". [20]
Los programadores de EDSAC utilizaban técnicas especiales para aprovechar al máximo la limitada memoria disponible. Por ejemplo, en el momento de cargar una subrutina desde una cinta perforada a la memoria, podía ocurrir que se tuviera que calcular una constante particular, una constante que posteriormente no necesitaría recálculo. En esta situación, la constante se calcularía en un "interludio". El código necesario para calcular la constante se proporcionaría junto con la subrutina completa. Después de que la rutina de entrada inicial hubiera cargado el código de cálculo, transferiría el control a este código. Una vez que la constante se hubiera calculado y escrito en la memoria, el control volvería a la rutina de entrada inicial, que continuaría escribiendo el resto de la subrutina en la memoria, pero primero ajustando su punto de partida para sobrescribir el código que había calculado la constante. Esto permitía realizar ajustes bastante complicados a una subrutina de propósito general sin que su huella final en la memoria fuera mayor que si se hubiera adaptado a una circunstancia específica. [21]
El concepto de subrutina condujo a la disponibilidad de una biblioteca de subrutinas sustancial. En 1951, 87 subrutinas en las siguientes categorías estaban disponibles para uso general: aritmética de punto flotante ; operaciones aritméticas con números complejos ; verificación; división; exponenciación ; rutinas relacionadas con funciones; ecuaciones diferenciales ; funciones especiales; series de potencias ; logaritmos ; miscelánea; impresión y diseño; cuadratura ; lectura (entrada); raíz n - ésima; funciones trigonométricas ; operaciones de conteo (simulando bucles de repetición hasta , bucles mientras y bucles para ); vectores ; y matrices .
El primer lenguaje ensamblador apareció para el EDSAC e inspiró varios otros lenguajes ensambladores:
EDSAC fue diseñado específicamente para formar parte del servicio de soporte del Laboratorio de Matemáticas para el cálculo. [22] El primer artículo científico que se publicó utilizando una computadora para cálculos fue el de Ronald Fisher . [ cita requerida ] Wilkes y Wheeler habían utilizado EDSAC para resolver una ecuación diferencial relacionada con frecuencias genéticas para él. [23] En 1951, Miller y Wheeler utilizaron la máquina para descubrir un primo de 79 dígitos [24] , el más grande conocido en ese momento.
Los ganadores de tres premios Nobel –John Kendrew y Max Perutz (Química, 1962), Andrew Huxley (Medicina, 1963) y Martin Ryle (Física, 1974)– se beneficiaron de la revolucionaria capacidad informática de EDSAC. En sus discursos de aceptación del premio, todos ellos reconocieron el papel que EDSAC había desempeñado en sus investigaciones.
A principios de la década de 1960, Peter Swinnerton-Dyer utilizó la computadora EDSAC para calcular el número de puntos módulo p (denotado por N p ) para un gran número de primos p en curvas elípticas cuyo rango era conocido. Basándose en estos resultados numéricos, Birch y Swinnerton-Dyer (1965) conjeturaron que N p para una curva E con rango r obedece a una ley asintótica, la conjetura de Birch y Swinnerton-Dyer , considerada uno de los principales problemas sin resolver en matemáticas a partir de 2024.
Es posible que algún día el "cerebro" [el ordenador] llegue a nuestro nivel [el de la gente común] y nos ayude con los cálculos de impuestos y contabilidad, pero esto es pura especulación y, hasta ahora, no hay señales de que vaya a ocurrir.
— El periódico británico The Star en un artículo de noticias de junio de 1949 sobre la computadora EDSAC, mucho antes de la era de las computadoras personales. [25]
En 1952, Sandy Douglas desarrolló OXO , una versión del tres en raya (tic-tac-toe) para la EDSAC, con salida gráfica a un tubo de rayos catódicos VCR97 de 6" . Este bien pudo haber sido el primer videojuego del mundo . [26] [27]
Otro videojuego fue creado por Stanley Gill e implicaba que un punto (llamado oveja) se acercara a una línea en la que se podía abrir una de dos puertas. [28] El juego de Stanley Gill se controlaba a través del haz de luz del lector de cinta de papel del EDSAC. [28] Al interrumpirlo (por ejemplo, si el jugador colocaba su mano sobre él), se abría la puerta superior. [28] Si se dejaba el haz intacto, se abría la puerta inferior. [28]
El sucesor del EDSAC, el EDSAC 2 , entró en servicio en 1958.
En 1961, David Hartley desarrolló una versión EDSAC 2 de Autocode , un lenguaje de programación de alto nivel similar a ALGOL para científicos e ingenieros .
A mediados de la década de 1960, se planeó un sucesor del EDSAC 2, pero en su lugar se optó por el Titan , un prototipo Atlas 2 desarrollado a partir del Atlas Computer de la Universidad de Manchester , Ferranti y Plessey .
El 13 de enero de 2011, la Computer Conservation Society anunció que planeaba construir una réplica funcional de EDSAC en el Museo Nacional de Computación (TNMoC) en Bletchley Park, supervisada por Andrew Herbert , quien estudió con Maurice Wilkes. [29] Las primeras partes de la réplica se encendieron en noviembre de 2014. [30] [31] Los circuitos lógicos de EDSAC se reconstruyeron meticulosamente mediante el desarrollo de un simulador y la reexaminación de algunos esquemas originales redescubiertos. Esta documentación se ha publicado bajo una licencia Creative Commons. [32] El proyecto en curso está abierto a los visitantes del museo. En 2016, dos operadoras originales de EDSAC, Margaret Marrs y Joyce Wheeler, visitaron el museo para ayudar al proyecto. [33] En noviembre de 2016, se estimó que la puesta en servicio de la réplica en estado totalmente terminado y operativo se produciría en el otoño de 2017. [34] Sin embargo, retrasos imprevistos en el proyecto han dado lugar a una fecha desconocida para la finalización y pleno funcionamiento de la máquina.
{{cite journal}}
: CS1 maint: others (link){{cite web}}
: CS1 maint: archived copy as title (link)