EDSAC: El primer ordenador de programa almacenado 

Antonio Pérez Villaescusa

El EDSAC es un computador construido en Gran Bretaña, concretamente en la universidad de Cambridge, tras la segunda guerra mundial.

Gran Bretaña había desarrollado una gran experiencia computación debido al afán por descifrar los códigos secretos de los nazis.

Para ello, se habían establecido distintos centros de criptografía como el de Bletchley Park, donde trabajó el gran lan Turing.

Ya existía el interés por estas máquinas en la comunidad científica, y uno de los grandes interesados era Maurice Vicent Wilkes.

 

Wilkes era conocedor de que en la Moore School en Estados Unidos se estaba construyendo un computador electrónico. Tal era su interés, que cuando su amigo Williams regresó de un viaje a dicha escuela, le regaló el “EDVAC Report”, un informe redactado por John Von Neumann y en el que se describía
la creación de dicho computador.

Con la información extraída del documento anterior y su asistencia a unas conferencias en la Moore School, Wilkes estaba decidido a crear su propio computador electrónico. Para ello, reunió un grupo compuesto por gente de confianza, que a su vez eran grandes expertos en sus respectivos campos. En este equipo de trabajo
estaban, entre otros, Wheeler, Chamberlain, Gold…

Los distintos componentes tecnológicos que formaron el EDSAC fueron:

Tubos de vacío

Tubos de vacío: Los tubos de vacío o válvulas termoiónicas son unos dispositivos electrónicos que permiten regular el flujo de electrones que lo atraviesan. Consisten en una cápsula de vacío hecha de vidrio o acero y en su interior se encuentran compuestas de al menos tres elementos: un filamento que al conectarse a potencial eléctrico se calienta, una placa que rodea el filamento y se comporta como un cátodo (emisor de electrones) y otra placa llamada ánodo que rodea al cátodo y recoge los electrones que salen del cátodo. El cátodo se encuentra conectado a potencial negativo y por tanto está saturado de electrones, que serán emitidos y recogidos por el ánodo (conectado a potencial positivo respecto al cátodo). El cátodo se calienta para que sus electrones estén sobreexcitados y tengan propensión a abandonar sus respectivos átomos. Los electrones que salgan despedidos del cátodo atravesarán el vacío llegando al ánodo.

Memoria de línea de retardo: Este tipo de memorias retienen la información de la siguiente manera: las señales eléctricas se transforman a ondas sonoras y se introducen en los tubos, dichas ondas viajan a través del mercurio hasta que son utilizadas. Antes de salir completamente del tubo de nuevo, son convertidas en señales eléctricas. Esta conversión de señales eléctricas a ondas acústicas y viceversa, la realiza un cristal de cuarzo que se coloca en cada uno de los extremos, para así realizar la conversión pertinente. Era común agrupar diversas líneas de retardo para formar lo que se conoce como batería o tanque de líneas de retardo.

Aquí un vídeo para entender mejor el funcionamiento de esta memoria.

Pantalla de inicio
Pantalla CRT

Pantalla de rayos catódicos: Era posible visualizar el contenido de las memorias de línea de retardo en un tubo de rayos catódicos (CRT). El contenido se mostraba en forma binaria. Los CRT eran muy importantes ya que ayudaban a observar el desarrollo de los programas y a depurarlos. En un inicio habían cinco tubos CRT en los que se podía observar el ”Order Tank” ( el cual contenía la instrucción actual ), el ”Accumulator”, dos registro de multiplicación, el contenido del contador, el Control Secuencial de Registro y las 32 palabras.

Lector de cintas perforadas: Para introducir los programas a la máquina se utilizaba un lector de cintas que estaba conectado a la memoria. En él, se introducían las cintas en las que el programa había sido previamente perforado. El EDSAC contaba con una batería de 5 lectores de cintas que operaban a una velocidad de 50 caracteres por segundo.

Lector de cintas
Teleprinter

Teletipo: Era junto a la pantalla de rayos catódicos, la salida del EDSAC, se trataba de un dispositivo telegráfico de transmisión de datos. El teletipo utilizado inicialmente tenía una velocidad de escritura aproximada de seis caracteres.

Para controlar la máquina, el operario disponía de un panel de control con los siguientes botones:

  • Start: Carga las ”initial orders” y a continuación, lee la cinta donde está el programa.
  • Clear: Al presionar este botón, todos los bits almacenados en la memoria pasaban a ser cero, lo que aseguraba la consistencia de los resultados.
  • Stop: Para la ejecución del programa.
  • Single Step: Si se pulsa este botón cuando la máquina se encuentra parada ejecuta las instrucciones una a una.
  • Reset: Reinicia la máquina después de que la máquina esté en estado de parada, ya sea provocado por el programa o de forma manual.

El computador estaba ya montado y funcionaba de la siguiente forma: (aunque creo que será mejor que os lo explique
su creador.)

¿Y los programas?

El EDSAC como computador dirigido a la comunidad científica, dispuso de una serie de programas enfocados a dicho ámbito, programas que realizan el cálculo de raíces, números primos, el cuadrado de un número...

En esta imagen podemos observar el clásico programa "Hello World" en su versión para EDSAC

Este programa nos calcula la raíz cuadrada de un número.

El algoritmo que implementa dicho código fue desarrollado por Wilkes y Wheeler especialmente para el EDSAC.

Y aquí uno más complejo, el cual hace uso de la subrutina P6 para imprimir los 300 primeros números primos.

Programemos el EDSAC

Si los programas existentes no te gustan, no hay problema, nosotros mismos podemos hacer los programas que deseemos.

En primer lugar, debemos conocer las instrucciones que utiliza el EDSAC para así poder programar.

  • A n: Suma el número almacenado en ”n” al ”acumulador” y lo almacena ahí.
  • S n: Resta el número almacenado en ”n” al ”acumulador” y lo almacena ahí.
  • H n: Copia el número que hay en la dirección ''n'' y lo almacena en el multiplicador.
  • V n: Multiplica el número que hay en la dirección ''n'' con el que hay en el multiplicador y el resultado se suma con el número almacenado en el acumulador y se guarda ahí.
  • N n: Multiplica el número que hay en la dirección ''n'' con el que hay en el multiplicador y el resultado se resta con el número almacenado en el acumulador y se guarda ahí.
  • T n: Transfiere el contenido del acumulador a la posición de memoria ''n'' y borra lo que había en el acumulador.
  • U n: Transfiere el contenido del acumulador a la posición de memoria ''n'' pero no borra lo que había en el acumulador.
  • C n: Aplica la operación lógica ''and'' a lo que hay en la posición n con lo que hay en el acumulador y el resultado es sumado y almacenado en el acumulador.
  • R 2n-2: Desplaza el número del acumulador ''n'' posiciones a la derecha.
  • L 2n-2: Desplaza el número del acumulador ''n'' posiciones a la izquierda.
  • E n: Si el número del acumulador es positivo, salta a la posición ''n''; sino sigue ejecutando el programa en el mismo orden.
  • G n: Si el número del acumulador es negativo , salta a la posición ''n''; sino sigue ejecutando el programa en el mismo orden.
  • O n: Imprime en la salida el carácter representado por los 5 bits más representativos de la posición de memoria ''n''.

Y ¿por dónde empiezo?

Como comprarse un EDSAC a día de hoy puede resultar algo caro y complicado, mejor usamos un simulador, ¿no?

Por fortuna, contamos con un simulador del EDSAC que podemos descargar aquí. Además junto a la descarga del simulador
encontramos un completo manual que nos será de gran utilidad para iniciarnos.

Los programas se cargan en el simulador como archivos de texto, por lo que no necesitamos ningún editor especial.
Además, para darnos una mayor sensación de realismo, se incorpora el panel de control, un tubo CRT donde vemos la memoria principal, el dial y una serie de registros que nos serán de gran utilidad.

Panel de control disponible en el simulador.

Cuando tengamos experiencia y hacer un simple Hello World nos parezca poca cosa, siempre podemos probar a hacernos nuestro propio 3 en raya o usar el que ya está hecho.

Además del 3 en raya , en la misma página donde nos hemos descargado el simulador, dentro de la sección "programs" encontramos una serie de programas que nos serán útiles para analizar su código y comprender mejor el funcionamiento del EDSAC:

  • Torres de Hanoi.
  • Juego de la vida de Conway
  • Space Invaders
  • Etch a Sketch
  • Pong

Multimedia

Si hoy en día los ordenadores a los que estamos habituado ya alteran nuestra vida ¿os imagináis lo que supuso la aparición del EDSAC? Escuchemos algunos testimonios de la época.

Joyce Wheeler era una investigadora en la Universidad de Cambridge y fue una de las primeras personas en utilizar el EDSAC.

¿Os suena ese apellido? Efectivamente, es la esposa de David Wheeler.

Margaret Marrs, operadora del EDSAC

EDSAC Replica

El proyecto EDSAC Replica nace con el objetivo de construir una réplica funcional del EDSAC y ejecutar programas en ella, tal y como se hacía en 1949.

Se construirá y guardará en The National Museum of Computing, situado en Bletchley Park, icónico lugar de la computación Británica, donde se trabajó en romper los códigos de cifrado alemanes durante la WWII.

La réplica estará abierta al público que desee verla. Pretenden tenerla operativa en el año 2015.