EDSAC
La Calculadora automática de almacenamiento de retardo electrónico (EDSAC) fue una de las primeras computadoras británicas. Inspirándose en el 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. EDSAC fue la segunda computadora electrónica digital con programa almacenado en entrar en servicio regular.
Más tarde, el proyecto fue apoyado por J. Lyons & Co. Ltd., con la intención de desarrollar una computadora aplicada comercialmente y teniendo éxito en Lyons' desarrollo de LEO I, basado en el diseño de EDSAC. El trabajo en EDSAC comenzó durante 1947 y ejecutó sus primeros programas el 6 de mayo de 1949, cuando calculó una tabla de números cuadrados y una lista de números primos. EDSAC finalmente se cerró el 11 de julio de 1958, después de haber sido reemplazado por EDSAC 2, que permaneció en uso hasta 1965.
Resumen técnico
Componentes físicos
Tan pronto como EDSAC estuvo en funcionamiento, comenzó a atender las necesidades de investigación de la universidad. Usó líneas de retardo de mercurio para la memoria y tubos de vacío reducidos para la lógica. El consumo de energía fue de 11 kW de electricidad. El tiempo de ciclo fue de 1,5 ms para todas las instrucciones ordinarias, 6 ms para la multiplicación. La entrada se realizó a través de una cinta perforada de cinco orificios y la salida se realizó a través de una teleimpresora.
Inicialmente, los registros estaban limitados 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 una extensión del hardware EDSAC original.
En 1952 se agregó una unidad de cinta magnética, pero nunca funcionó lo suficientemente bien como para ser de utilidad real.
Hasta 1952, la memoria principal disponible (instrucciones y datos) era de solo 512 palabras de 18 bits y no había almacenamiento de respaldo. Las líneas de retardo (o 'tanques') se organizaron en dos baterías de 512 palabras cada una. La segunda batería entró en funcionamiento en 1952.
La memoria de línea de retardo completa de 1024 palabras no estuvo disponible hasta 1955 o principios de 1956, lo que limitaba los programas a unas 800 palabras hasta entonces.
John Lindley (estudiante de diplomado 1958–1959) mencionó "la increíble dificultad que tuvimos para producir una sola pieza correcta de cinta de papel con el tosco y poco confiable equipo casero de perforación, impresión y verificación disponible a finales 50s".
Memoria e instrucciones
La memoria principal de EDSAC constaba de 1024 ubicaciones, aunque inicialmente solo se instalaron 512 ubicaciones. Cada uno contenía 18 bits, pero el bit superior siempre no estaba disponible debido a problemas de tiempo, por lo que solo se usaron 17 bits. Una instrucción constaba de un código de instrucción de 5 bits, 1 bit de reserva, un operando de 10 bits (generalmente una dirección de memoria) y 1 bit de longitud para controlar si la instrucción usaba un operando de 17 bits o de 35 bits (dos operandos consecutivos). palabras, 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 Añadir, por ejemplo, usaba el código de carácter EDSAC para la letra A.
Internamente, el EDSAC utilizó números binarios en complemento a dos. Los números tenían 17 bits (una palabra) o 35 bits (dos palabras) de largo. Inusualmente, el multiplicador fue diseñado para tratar 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 (35 bits) sin perder precisión.
Las instrucciones disponibles eran:
- Añadir
- Subtract
- Multiply-and-add
- Y-y-add (llamado "Collate")
- Cambio izquierdo
- Cambio Aritmético derecho
- Registro de multiplicador de carga
- Recopilador (y opcionalmente claro)
- Caucho condicional
- Grabación de entrada
- Carácter de impresión
- Acumulador redondo
- No-op
- Para.
No había ninguna instrucción de división (pero se proporcionaron varias subrutinas de división) y no había manera de cargar directamente un número en el acumulador (una instrucción "almacenar y cero acumulador" seguida de "Agregar" 34; fueron necesarias instrucciones para ello). No había una instrucción de salto incondicional, ni una instrucción de llamada de procedimiento, aún no se había inventado.
Maurice Wilkes discutió los modos de direccionamiento relativo para EDSAC en un artículo publicado en 1953. Estaba haciendo las propuestas para facilitar el uso de subrutinas.
Software del sistema
Las órdenes iniciales estaban cableadas en un conjunto de interruptores uniselector y cargadas en las palabras bajas de la memoria al inicio. En mayo de 1949, los pedidos iniciales proporcionaron un ensamblador de reubicación 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 los pedidos iniciales y los primeros programas.
El primer cálculo realizado por EDSAC fue un programa de números cuadrados ejecutado el 6 de mayo de 1949. El programa fue escrito por Beatrice Worsley, que había venido de Canadá para estudiar la máquina.
Otros miembros de la universidad utilizaron la máquina para resolver problemas reales y se desarrollaron muchas de las primeras técnicas que ahora se incluyen en los sistemas operativos.
Los usuarios preparaban sus programas golpeándolos (en ensamblador) en una cinta de papel. Pronto se volvieron buenos para sostener la cinta de papel contra la luz y leer los códigos. Cuando un programa estaba listo, se colgaba de un trozo de cuerda cerca del lector de cintas de papel. Los operadores de la máquina, que estuvieron presentes durante el día, seleccionaron la siguiente cinta de la línea y la cargaron en EDSAC. Por supuesto, esto es bien conocido hoy en día como colas de trabajo. Si imprimía algo, la cinta y la copia impresa se devolvían al usuario; de lo contrario, se les informaba en qué ubicación de la memoria se había detenido. Los depuradores estaban lejos, pero se podía configurar una pantalla CRT para mostrar el contenido de una parte particular de la memoria. Esto se usó para ver si un número estaba convergiendo, por ejemplo. Se conectó un altavoz al bit de señal del acumulador; los usuarios experimentados conocían los sonidos saludables y nocivos de los programas, particularmente los programas "colgados" en un bucle
Después del horario de oficina, ciertos "usuarios autorizados" se les permitió operar la máquina por sí mismos, lo que continuó hasta altas horas de la noche hasta que explotó una válvula, lo que generalmente sucedió según uno de esos usuarios. Fred Hoyle alude a esto en su novela The Black Cloud.
Técnica de programación
Los primeros programadores tuvieron que hacer uso de técnicas mal vistas hoy en día, en particular, el uso de código automodificable. Como no hubo un registro de índice hasta mucho más tarde, la única forma de acceder a una matriz era alterar a qué ubicación de memoria hacía referencia una instrucción en particular.
A David Wheeler, quien obtuvo el primer doctorado en informática del mundo trabajando en el proyecto, se le atribuye la invención del concepto de subrutina. Los usuarios escribieron programas que llamaron 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 pueden llamar subrutinas múltiples y anidadas siempre que el usuario conozca la longitud de cada una para calcular la ubicación a la que saltar; las llamadas recursivas estaban prohibidas. Luego, el usuario copió el código de la subrutina de una cinta maestra en su propia cinta después del final de su propio programa. (Sin embargo, Turing discutió las subrutinas en un artículo de 1945 sobre propuestas de diseño para NPL ACE, llegando incluso a inventar el concepto de una pila de dirección de retorno, que habría permitido la recursividad).
La falta de un registro de índice también planteó un problema al escritor de una subrutina, ya que no podía saber de antemano en qué lugar de la memoria se cargaría la subrutina y, por lo tanto, no podía saber cómo abordar ninguna región del código. que se utilizaron para el almacenamiento de datos (los llamados "pseudo-pedidos"). Esto se resolvió mediante el uso de una rutina de entrada inicial, que se encargaba de cargar las subrutinas de la cinta perforada en la memoria. Al cargar una subrutina, anotaría la ubicación de inicio e incrementaría las referencias de memoria interna según sea necesario. Así, como escribió Wilkes, "el código que se usa para representar órdenes fuera de la máquina difiere del que se usa adentro, 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 otro". el otro".
Los programadores de EDSAC utilizaron técnicas especiales para aprovechar al máximo la limitada memoria disponible. Por ejemplo, en el momento de cargar una subrutina de una cinta perforada en la memoria, podría suceder que se tuviera que calcular una constante particular, una constante que posteriormente no necesitaría volver a calcularse. En esta situación, la constante se calcularía en un "interludio". El código requerido 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 había sido calculada y escrita 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 permitió realizar ajustes bastante complicados en una subrutina de propósito general sin hacer que su huella final en la memoria fuera más grande que si se hubiera adaptado a una circunstancia específica.
Software de aplicación
El concepto de subrutina condujo a la disponibilidad de una importante biblioteca de subrutinas. Para 1951, 87 subrutinas en las siguientes categorías estaban disponibles para uso general: aritmética de coma flotante; operaciones aritméticas con números complejos; comprobación; división; exponenciación; rutinas relacionadas con funciones; ecuaciones diferenciales; funciones especiales; serie de potencias; logaritmos; misceláneas; impresión y maquetación; cuadratura; leer (entrada); raíz nésima; funciones trigonométricas; operaciones de conteo (simulación de repetición hasta bucles, bucles while y bucles for); vectores; y matrices.
El primer lenguaje ensamblador apareció para EDSAC e inspiró a varios otros lenguajes ensambladores:
Año | Nombre | Chief developer, company |
---|---|---|
1951 | Idioma regional de la Asamblea | Maurice Wilkes |
1951 | Whirlwind assembler | Charles Adams y Jack Gilmore en el MIT |
1951 | Rochester ensamblador | Nat Rochester |
Aplicaciones de EDSAC
EDSAC fue diseñado específicamente para formar parte del servicio de apoyo al cálculo del Laboratorio de Matemáticas. El primer artículo científico que se publicó utilizando una computadora para realizar cálculos fue el de Ronald Fisher. Wilkes y Wheeler habían utilizado EDSAC para resolver una ecuación diferencial relacionada con las frecuencias de los genes para él. En 1951, Miller y Wheeler usaron la máquina para descubrir un número primo de 79 dígitos, 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 del revolucionario poder informático de EDSAC. En sus discursos de aceptación del premio, cada uno reconoció el papel que había jugado EDSAC en su investigación.
A principios de la década de 1960, Peter Swinnerton-Dyer usó la computadora EDSAC para calcular el número de puntos módulo p (indicado por Np) para un gran número de números primos p en curvas elípticas cuyo rango era conocido. Con base en estos resultados numéricos, Birch & Swinnerton-Dyer (1965) conjeturó que Np 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 2022.
El "cerebro" [computer] puede un día bajar a nuestro nivel [de la gente común] y ayudar con nuestros cálculos de impuestos y contabilidad. Pero esto es especulación y no hay señales de ello hasta ahora.
—Periódico británico La estrella en un artículo de noticias de junio de 1949 sobre el ordenador EDSAC, mucho antes de la era de los ordenadores personales.
Juegos
En 1952, Sandy Douglas desarrolló OXO, una versión de tres en raya (tres en raya) para EDSAC, con salida gráfica a un VCR97 de 6" tubo de rayos catódicos. Este bien podría haber sido el primer videojuego del mundo.
Stanley Gill creó otro videojuego e involucraba un punto (llamado oveja) que se acercaba a una línea en la que se podía abrir una de las dos puertas. El juego de Stanley Gill se controlaba a través del haz de luz del lector de cintas de papel de EDSAC. Interrumpirlo (por ejemplo, si el jugador coloca su mano en él) abriría la puerta superior. Dejar el haz intacto daría como resultado la apertura de la puerta inferior.
Otros desarrollos
El sucesor de EDSAC, EDSAC 2, se puso 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 cambió al Titan, un prototipo de Atlas 2 desarrollado a partir de Atlas Computer de la Universidad de Manchester, Ferranti y Plessey.
Proyecto Réplica EDSAC
El 13 de enero de 2011, Computer Conservation Society anunció que planeaba construir una réplica funcional de EDSAC en el Museo Nacional de Informática (TNMoC) en Bletchley Park supervisada por Andrew Herbert, quien estudió con Maurice Wilkes. Las primeras partes de la réplica se encendieron en noviembre de 2014. El proyecto en curso está abierto a los visitantes del museo. En 2016, dos operadores originales de EDSAC, Margaret Marrs y Joyce Wheeler, visitaron el museo para ayudar en el proyecto. A partir de noviembre de 2016, se estimó que la puesta en marcha del estado operativo y completamente completado de la réplica sería en otoño de 2017. Sin embargo, los retrasos imprevistos del proyecto han resultado en una fecha desconocida para una máquina completa y completamente operativa.
Contenido relacionado
Instituto SANS
Equipo terminal de datos
Memoria de acceso directo