La arquitectura de Von Neumann
Nos explicamos cómo Von Neumann se atribuyó laureles ajenos, por qué él no era culpable y qué podían hacer las computadoras creadas sobre ideas «no del todo suyas».
Ilustración: John von Neumann / EDSAC / Meery Mary para Skillbox Media
Marina Demidova
Programadora, consultora, especialista en documentación. Explica de manera fácil y accesible cosas complicadas sobre programación y diseño.
En 1946, el científico estadounidense Herman Goldstine publicó un documento del matemático John von Neumann titulado «Consideraciones preliminares sobre la estructura lógica de una máquina electrónica de cálculo». El autor del documento expuso los principios que se convirtieron en la base de la arquitectura de todas las generaciones posteriores de computadoras:
- La memoria de la computadora está compuesta por celdas, cada una de las cuales tiene asignado un número – dirección. Cualquier celda está disponible para la computadora en cualquier momento, y puede acceder a su contenido según la dirección.
- La memoria de la computadora se utiliza tanto para almacenar datos como para almacenar programas. Los comandos y los números están codificados en el sistema binario. Las mismas operaciones que sobre los números se pueden realizar sobre los comandos. Sobre este principio se basa la traducción – la conversión del texto del programa desde un lenguaje de alto nivel al lenguaje de una computadora específica.
- La computadora es controlada por un programa que consiste en comandos almacenados en celdas de memoria secuenciales. Cada comando realiza una operación del conjunto de operaciones disponibles para la computadora.
- El ordenador ejecuta comandos secuencialmente, desde el primero hasta el último, según el orden de aparición en el programa. Este orden puede modificarse mediante comandos especiales según los resultados de las operaciones.
Cómo se desarrolló la arquitectura de Von Neumann
El primer ordenador electrónico de la historia fue el ENIAC, construido en 1946 en la Universidad de Pensilvania, Estados Unidos: un enorme dispositivo de 30 toneladas que funcionaba con 18.000 lámparas electrónicas. Los cálculos se realizaban en el sistema decimal, lo que ralentizaba considerablemente el funcionamiento del ordenador y provocaba un derroche de lámparas.
El ENIAC no era una máquina programable, sino una máquina conmutable; se controlaba mediante un panel de conmutación. Para establecer un programa, era necesario conectar cables de forma específica: esto podía durar muchas horas, incluso días.
Los creadores del ENIAC, Eckert y Mauchly, vieron sus deficiencias, por lo que ya en 1943 comenzaron a diseñar un modelo mejorado de ordenador electrónico: sí, en ese momento aún no habían terminado el ENIAC. El futuro ordenador se llamó EDVAC (abreviatura de Electronic Discrete Variable Automatic Computer). El trabajo se mantuvo en secreto.
Mientras trabajaba en el EDVAC, John Eckert propuso por primera vez la idea de una programa almacenada en memoria. La memoria del EDVAC estaba compuesta por líneas de retardo: tubos especiales de mercurio que conservaban la información. Los datos se codificaban en binario, en lugar de decimal, lo que permitió reducir el número de lámparas electrónicas.
Un año y medio después de que Eckert y Mauchly se unieran como consultores científicos, John von Neumann, un reconocido matemático y participante del Proyecto Manhattan, se unió al equipo. Inmediatamente vio el potencial de la nueva computadora y ayudó a obtener financiación del ejército estadounidense.
Los científicos estaban obligados a rendir cuentas regularmente a los militares sobre su trabajo. Von Neumann preparó un «Informe preliminar sobre la máquina EDVAC», en el que describió sus elementos principales y la lógica de su funcionamiento. Lo envió al supervisor militar Goldstine, quien quedó impresionado por la profundidad de las ideas y la claridad de la exposición de los conceptos básicos. Sin hacer caso a la confidencialidad, Goldstine lo transcribió y distribuyó a científicos europeos y estadounidenses sin el conocimiento de Eckert y Mauchly, y en la portada del informe solo indicó a von Neumann como autor.
El informe tuvo un efecto explosivo. Y como von Neumann era conocido en el mundo científico, nadie dudó de que él fuera el único autor del documento. Así, la estructura de la computadora descrita en el informe se llamó arquitectura de von Neumann.
Eckert y Mauchly estaban indignados por las acciones de Goldstine, ya que ellos, debido a la confidencialidad, no podían publicar materiales sobre su trabajo. Los creadores del EDVAC no dudaban de que su máquina sería muy útil para el mundo entero, y por eso temían que no les permitieran patentar el invento.
Y no se equivocaron, porque así fue como sucedió. La administración de la Universidad de Pensilvania insistió en que Mauchly y Eckert renunciaran a los derechos del EDVAC.
Los inventores molestos rechazaron este requisito y en 1946, inmediatamente después del lanzamiento del ordenador ENIAC, abandonaron la universidad. Pocos meses después, von Neumann y Goldstine se retiraron del proyecto, y la obra sobre EDVAC se prolongó durante varios años más.
Primer ordenador estadounidense con nueva arquitectura
Finalmente, EDVAC se completó en 1949 y se puso en funcionamiento en 1951, después de eliminar todos los errores. Pesaba aproximadamente ocho toneladas y ocupaba 45 metros cuadrados.
El ordenador utilizaba el sistema binario de contabilización, lo que permitió reducir el número de lámparas electrónicas de vacío a 3600 (en ENIAC había 18 000) y podía realizar operaciones de suma, resta y división. La capacidad de memoria era de 1024 palabras, es decir, aproximadamente 5,5 kilobytes. Además, la memoria almacenaba tanto los datos como el propio programa.
EDVAC se instaló en el Laboratorio de Investigación Balística del ejército de los Estados Unidos; su funcionamiento estaba estrictamente clasificado. La máquina estuvo en funcionamiento hasta 1961, cuando fue reemplazada por una más moderna.
Cómo los competidores británicos superaron a los estadounidenses
Después de la publicación del informe de von Neumann, en otras países también comenzaron a construir ordenadores con una arquitectura similar. El primero lo creó Inglaterra, antiguo rival de Estados Unidos en la carrera por la informática, y lo hizo dos años antes que el lanzamiento de EDVAC.
En 1946, el profesor de la Universidad de Cambridge, Maurice Wilkes, obtuvo una copia del informe de John von Neumann — un conocido de Estados Unidos le permitió leerlo durante una noche. Wilkes apreció las ideas y decidió que el desarrollo de las computadoras seguiría ese camino en el futuro.
Cruzò el océano, llegó a la Universidad de Pensilvania y escuchó las conferencias sobre EDVAC. En el viaje de regreso, desarrolló el esquema lógico de su futura computadora, que más tarde fue llamada EDSAC. Wilkes logró obtener financiación para la construcción de la computadora del Ministerio de Defensa de Gran Bretaña y la máquina comenzó a funcionar en 1949.
EDSAC en Cambridge
Foto: Wikimedia Commons
EDSAC casi copió completamente la arquitectura de EDVAC, pero fue más compacto: ocupaba un área de 20 metros cuadrados, constaba de 3000 tubos de vacío y utilizaba 32 líneas de mercurio de retardo, que proporcionaban 1024 celdas de memoria.
Los cálculos se realizaban en el sistema binario, la velocidad de cálculo era de entre diez y quince mil operaciones por segundo. El programa se introducía en la memoria mediante tarjetas perforadas, y los datos de salida se transmitían a un telégrafo.
El primer programa para EDSAC calculaba los cuadrados de los números positivos del 0 al 99.
Inicialmente, todas las programas eran largas secuencias de ceros y unos: 1 — lámpara encendida, 0 — lámpara apagada. El profesor Wilkes encontró formas más convenientes de registrar las instrucciones — utilizando letras y cortas palabras en inglés, por ejemplo:
- S — «resta»;
- T — «transferir información a la memoria»;
- Z — «detención de la máquina» y así sucesivamente.
Así es como, por primera vez, para EDSAC se desarrollaron códigos mnemónicos de operaciones y un traductor — un ensamblador.
Otro avance importante fue el desarrollo de una biblioteca de subrutinas. Los programadores ya estaban familiarizados con este concepto — Grace Hopper y sus colegas utilizaron subrutinas en su máquina de Harvard. Es cierto que las registraban en bloc de notas para no tener que componerlas de nuevo cada vez.
En EDSAC, surgió la posibilidad de almacenar subrutinas en la memoria y, si era necesario, insertarlas en programas ya en ejecución. Para ello, era suficiente con llamarlas desde la memoria con un comando corto.
Wilkes llamó a la mnemónica de operaciones y a la biblioteca de subrutinas «sistema de ensamblaje» (del inglés assembly system) — porque recopilaba el programa en lenguaje máquina a partir de códigos mnemónicos y subrutinas.
Hoy en día, los lenguajes de programación en los que los nombres mnemónicos de las operaciones se corresponden con instrucciones de máquina individuales se denominan lenguajes de ensamblador, y a Maurice Wilkes se le considera el creador de uno de los primeros lenguajes de este tipo.
Por encargo del gobierno británico, en EDSAC se realizaron cálculos de pruebas nucleares. La Universidad de Cambridge lo utilizó para cálculos en el campo de la química teórica, la radioastronomía y otras tareas científicas. Por ejemplo, fue precisamente con la ayuda del EDSAC que se calculó el número primo más grande hasta ese momento: uno de 79 dígitos.
Para esta tarea se escribieron numerosas programas: para cálculos con números complejos y números de coma flotante, para cálculos vectoriales, matriciales y funciones trigonométricas.
En 1951, se escribió para el EDSAC el primer juego de computadora interactivo: OXO, una variante de tic-tac-toe. Para ello, se conectó un pequeño monitor basado en un tubo de rayos catódicos al ordenador.
Así era OXO
Foto: Wikimedia Commons
El legendario EDSAC se apagó finalmente en 1958. Fue reemplazado por un ordenador más avanzado, el EDSAC 2, con memoria en núcleos ferromagnéticos, que también utilizaba cintas magnéticas.