Las primeras máquinas informáticas eran programables en el sentido de que podían seguir la secuencia de pasos que se habían configurado para ejecutar, pero el «programa», o los pasos que la máquina debía ejecutar, se configuraban generalmente cambiando la forma en que se conectaban los cables. en un panel de conexiones o panel de conexiones. La «reprogramación», cuando era posible, era un proceso laborioso, comenzando con ingenieros que elaboraban diagramas de flujo, diseñando la nueva configuración y luego el proceso, a menudo exigente, de reconectar físicamente los paneles de conexión. Las computadoras con programas almacenados, por el contrario, fueron diseñadas para almacenar un conjunto de instrucciones (un programa), en la memoria, generalmente la misma memoria que los datos almacenados.
Alan Turing había propuesto la base teórica de la computadora con programa almacenado en su artículo de 1936. En 1945, Turing se unió al Laboratorio Nacional de Física y comenzó su trabajo en el desarrollo de una computadora digital electrónica con programa almacenado. Su informe de 1945 ‘Proposed Electronic Calculator’ fue la primera especificación para un dispositivo de este tipo.
Mientras tanto, John von Neumann, de la Escuela de Ingeniería Eléctrica Moore, Universidad de Pensilvania, hizo circular su Primer Borrador de un Informe sobre el EDVAC en 1945. Aunque sustancialmente similar al diseño de Turing y conteniendo comparativamente pocos detalles de ingeniería, la arquitectura de la computadora que describió se hizo conocida. como la «arquitectura von Neumann». Turing presentó un artículo más detallado al Comité Ejecutivo del Laboratorio Nacional de Física (NPL) en 1946, dando el primer diseño razonablemente completo de una computadora con programa almacenado, un dispositivo que llamó Motor de Computación Automática (ACE). Sin embargo, el más conocido diseño de EDVAC de John von Neumann, que conocía el trabajo teórico de Turing, recibió más publicidad, a pesar de su naturaleza incompleta y la falta cuestionable de atribución de las fuentes de algunas de las ideas.
Turing pensó que la velocidad y el tamaño de la memoria de la computadora eran elementos cruciales, por lo que propuso una memoria de alta velocidad de lo que hoy se llamaría 25 KB, a la que se accede a una velocidad de 1 MHz. El ACE implementó llamadas a subrutinas, mientras que el EDVAC no lo hizo, y el ACE también usó Instrucciones abreviadas de computadora, una forma temprana de lenguaje de programación .
El Manchester Baby fue la primera computadora electrónica con programas almacenados del mundo . Fue construido en la Universidad Victoria de Manchester por Frederic C. Williams, Tom Kilburn y Geoff Tootill, y ejecutó su primer programa el 21 de junio de 1948.
La máquina no estaba destinada a ser una computadora práctica, sino que fue diseñada como un banco de pruebas para el tubo Williams, el primer dispositivo de almacenamiento digital de acceso aleatorio. Inventado por Freddie Williams y Tom Kilburn en la Universidad de Manchester en 1946 y 1947, era un tubo de rayos catódicos que utilizaba un efecto llamado emisión secundaria para almacenar temporalmente datos binarios electrónicos, y se utilizó con éxito en varias de las primeras computadoras.
Aunque la computadora era pequeña y primitiva, era una prueba de concepto para resolver un solo problema; Baby fue la primera máquina en funcionamiento que contenía todos los elementos esenciales para una computadora electrónica moderna. Tan pronto como el Baby demostró la viabilidad de su diseño, se inició un proyecto en la universidad para desarrollar el diseño en una computadora más utilizable, la Manchester Mark 1. La Mark 1, a su vez, se convirtió rápidamente en el prototipo de Ferranti Mark 1, la primera computadora de uso general disponible comercialmente en el mundo.
El Manchester Baby tenía una longitud de palabra de 32 bits y una memoria de 32 palabras. Como fue diseñado para ser la computadora con programa almacenado más simple posible, las únicas operaciones aritméticas implementadas en el hardware fueron la resta y la negación; otras operaciones aritméticas se implementaron en software. El primero de los tres programas escritos para la máquina encontró el divisor propio más alto de 2 18 (262,144), un cálculo que se sabía que tardaría mucho en ejecutarse y por lo tanto, probaría la confiabilidad de la computadora probando cada entero de 2 – 1 hacia abajo, ya que la división se implementó mediante la resta repetida del divisor. El programa constaba de 17 instrucciones y se ejecutó durante 52 minutos antes de llegar a la respuesta correcta de 131.072, después de que Baby hubiera realizado 3,5 millones de operaciones (para una velocidad de CPU efectiva de 1,1 kIPS ). Las sucesivas aproximaciones a la respuesta se mostraban como las posiciones sucesivas de un punto brillante en el tubo de Williams.
La máquina experimental condujo al desarrollo del Manchester Mark 1 en la Universidad de Manchester. El trabajo comenzó en agosto de 1948 y la primera versión estuvo operativa en abril de 1949; un programa escrito para buscar números primos de Mersenne funcionó sin errores durante nueve horas la noche del 16 al 17 de junio de 1949. La prensa británica informó ampliamente sobre el funcionamiento exitoso de la máquina, que utilizó la frase «cerebro electrónico» para describirla lectores.
La computadora es especialmente importante desde el punto de vista histórico debido a su inclusión pionera de registros de índice, una innovación que hizo más fácil para un programa leer secuencialmente a través de una serie de palabras en la memoria. Treinta y cuatro patentes resultaron del desarrollo de la máquina, y muchas de las ideas detrás de su diseño se incorporaron en productos comerciales posteriores, como IBM 701 y 702 , así como Ferranti Mark 1. Los diseñadores principales, Frederic C. Williams y Tom Kilburn, concluyó de sus experiencias con el Mark 1 que las computadoras se usarían más en roles científicos que en matemáticas puras. En 1951 comenzaron a trabajar en el desarrollo de Meg, el sucesor del Mark 1, que incluiría una unidad de punto flotante.
El otro aspirante a ser la primera computadora digital con programa almacenado reconociblemente moderna fue el EDSAC, diseñado y construido por Maurice Wilkes y su equipo en el Laboratorio Matemático de la Universidad de Cambridge en Inglaterra en la Universidad de Cambridge en 1949. La máquina se inspiró en el primer borrador fundamental de un informe sobre el EDVAC de John von Neumann y fue una de las primeras computadoras electrónicas digitales con programas almacenados que funcionaban de manera útil.
EDSAC ejecutó sus primeros programas el 6 de mayo de 1949, cuando calculó una tabla de cuadrados y una lista de números primos. La EDSAC también sirvió como base para la primera computadora aplicada comercialmente, la LEO I, utilizada por una empresa de fabricación de alimentos J. Lyons & Co. Ltd.. EDSAC 1 se cerró finalmente el 11 de julio de 1958, tras haber sido reemplazado por EDSAC 2, que permaneció en uso hasta 1965.
El «cerebro» [computadora] puede que algún día baje a nuestro nivel [de la gente común] y ayude con nuestros cálculos de impuestos y contabilidad. Pero esto es especulación y hasta ahora no hay indicios de ello.
- 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.
Los inventores del ENIAC, John Mauchly y J. Presper Eckert propusieron la construcción de la EDVAC en agosto de 1944 y los trabajos de diseño para el EDVAC comenzaron en el Universidad de Pensilvania «Escuela de Ingeniería Eléctrica Moore «, antes de que el ENIAC estaba en pleno funcionamiento. El diseño implementó una serie de importantes mejoras arquitectónicas y lógicas concebidas durante la construcción de ENIAC, y una memoria de acceso en serie de alta velocidad. Sin embargo, Eckert y Mauchly abandonaron el proyecto y su construcción fracasó.
Finalmente se entregó al Laboratorio de Investigación Balística del Ejército de los EE. UU. En el campo de pruebas de Aberdeen en agosto de 1949, pero debido a una serie de problemas, la computadora solo comenzó a funcionar en 1951, y luego solo de forma limitada.
La primera computadora comercial fue la Ferranti Mark 1, construida por Ferranti y entregada a la Universidad de Manchester en febrero de 1951. Se basó en la Manchester Mark 1. Las principales mejoras con respecto al Manchester Mark 1 fueron el tamaño del almacenamiento primario (usando tubos Williams de acceso aleatorio), el almacenamiento secundario (usando un tambor magnético), un multiplicador más rápido e instrucciones adicionales.
El tiempo de ciclo básico era de 1,2 milisegundos y una multiplicación se podía completar en aproximadamente 2,16 milisegundos. El multiplicador utilizó casi una cuarta parte de los 4.050 tubos de vacío (válvulas) de la máquina. La Universidad de Toronto compró una segunda máquina, antes de que el diseño fuera revisado en Mark 1 Star. Al menos siete de estas máquinas posteriores se entregaron entre 1953 y 1957, una de ellas a los laboratorios Shell en Ámsterdam.
En octubre de 1947, los directores de J. Lyons & Company , una empresa de catering británica famosa por sus salones de té pero con un gran interés en las nuevas técnicas de gestión de oficinas, decidieron tomar un papel activo en la promoción del desarrollo comercial de las computadoras. La computadora LEO I entró en funcionamiento en abril de 1951 y ejecutó el primer trabajo informático de oficina de rutina del mundo. El 17 de noviembre de 1951, la empresa J. Lyons inició la operación semanal de un trabajo de tasación de panaderías en la LEO (Oficina Electrónica de Lyons). Esta fue la primera aplicación comercial que se puso en marcha en una computadora con programa almacenado.
En junio de 1951, se entregó el UNIVAC I (Computadora automática universal) a la Oficina del Censo de EE.UU. Remington Rand finalmente vendió 46 máquinas a más de 1 millón de dólares cada una (9,85 millones de dólares en 2021).
UNIVAC fue la primera computadora «producida en masa». Utilizaba 5.200 tubos de vacío y consumía 125 kW de potencia. Su almacenamiento principal eran las líneas de retardo de mercurio de acceso en serie capaces de almacenar 1.000 palabras de 11 dígitos decimales más el signo (palabras de 72 bits).
IBM introdujo una computadora más pequeña y asequible en 1954 que resultó muy popular. El IBM 650 pesaba más de 900 kg, la fuente de alimentación adjunta pesaba alrededor de 1350 kg y ambos se colocaron en gabinetes separados de aproximadamente 1,5 metros por 0,9 metros por 1,8 metros. Cuesta US$500.000 ($ 4,76 millones a partir de 2021) o podría alquilarse por US $ 3.500 al mes ($ 30 mil a partir de 2021). Su memoria de batería era originalmente de 2000 palabras de diez dígitos, luego se expandió a 4000 palabras. Limitaciones de memoria como esta dominarían la programación durante décadas después. Las instrucciones del programa se extrajeron del tambor giratorio a medida que se ejecutaba el código. Una combinación de arquitectura de hardware proporcionó una ejecución eficiente utilizando la memoria del tambor: el formato de instrucción incluía la dirección de la siguiente instrucción; y software: el Programa de ensamblaje óptimo simbólico, SOAP, asignó instrucciones a las direcciones óptimas (en la medida de lo posible mediante análisis estático del programa fuente). Por lo tanto, cuando era necesario, muchas instrucciones estaban ubicadas en la siguiente fila del tambor para ser leídas y no se requería tiempo de espera adicional para la rotación del tambor.
En 1951, el científico británico Maurice Wilkes desarrolló el concepto de microprogramación a partir de la comprensión de que la unidad central de procesamiento de una computadora podía ser controlada por un programa de computadora en miniatura altamente especializado en ROM de alta velocidad. La microprogramación permite definir o ampliar el conjunto de instrucciones base mediante programas integrados (ahora denominados firmware o microcódigo ). Este concepto simplificó enormemente el desarrollo de la CPU. Primero describió esto en la Conferencia Inaugural de Computación de la Universidad de Manchester en 1951, luego publicó en forma ampliada en IEEE Spectrum en 1955.
Fue ampliamente utilizado en CPU y unidades de punto flotante de mainframe y otras computadoras; se implementó por primera vez en EDSAC 2, que también utilizó múltiples «segmentos de bits» idénticos para simplificar el diseño. Se utilizaron conjuntos de tubos intercambiables y reemplazables para cada bit del procesador.
Las memorias de tambor magnético se desarrollaron para la Marina de los EE.UU. Durante la Segunda Guerra Mundial y el trabajo continuó en Engineering Research Associates (ERA) en 1946 y 1947. ERA, entonces una parte de Univac incluyó una memoria de tambor en su 1103, anunciada en febrero de 1953. La primera La computadora producida en masa, la IBM 650, también anunciada en 1953, tenía aproximadamente 8,5 kilobytes de memoria de batería.
Memoria de núcleo magnético patentada en 1949 con su primer uso demostrado para la computadora Whirlwind en agosto de 1953. La comercialización siguió rápidamente. El núcleo magnético se utilizó en los periféricos del IBM 702 entregado en julio de 1955, y más tarde en el propio 702. El IBM 704 (1955) y el Ferranti Mercury (1957) usaban memoria de núcleo magnético. Pasó a dominar el campo en la década de 1970, cuando fue reemplazado por la memoria de semiconductores. El núcleo magnético alcanzó su punto máximo en volumen alrededor de 1975 y disminuyó en uso y participación de mercado a partir de entonces.
Todavía en 1980, las máquinas PDP-11/45 que usaban la memoria principal de núcleo magnético y los tambores para el intercambio todavía estaban en uso en muchos de los sitios originales de UNIX.
| Nombre | Primera operativa | Sistema de numeración | Mecanismo informático | Programación | Turing completo |
|---|---|---|---|---|---|
| Arthur H. Dickinson IBM (Estados Unidos) | Enero de 1940 | Decimal | Electrónico | No programable | No |
| Joseph Desch NCR (Estados Unidos) | Marzo de 1940 | Decimal | Electrónico | No programable | No |
| Zuse Z3 (Alemania) | Mayo de 1941 | Punto flotante binario | Electromecánico | Controlado por programa mediante película perforada de 35 mm (pero sin rama condicional) | En teoría (1998) |
| Atanasoff – Berry Computer (EE. UU.) | 1942 | Binario | Electrónico | No programable: un solo propósito | No |
| Colossus Mark 1 (Reino Unido) | Febrero de 1944 | Binario | Electrónico | Programa controlado por cables de conexión e interruptores | No |
| Harvard Mark I – IBM ASCC (EE. UU.) | Mayo de 1944 | Decimal | Electromecánico | Controlado por programa mediante cinta de papel perforada de 24 canales (pero sin rama condicional) | Discutible |
| Colossus Mark 2 (Reino Unido) | Junio de 1944 | Binario | Electrónico | Programa controlado por cables de conexión e interruptores | En teoría (2011) |
| Zuse Z4 (Alemania) | Marzo de 1945 | Punto flotante binario | Electromecánico | Controlado por programa mediante película perforada de 35 mm | sí |
| ENIAC (EE.UU.) | Febrero 1946 | Decimal | Electrónico | Programa controlado por cables de conexión e interruptores | sí |
| ARC2 (SEC) (Reino Unido) | Mayo de 1948 | Binario | Electrónico | Programa almacenado en la memoria del tambor giratorio | sí |
| Manchester Baby (Reino Unido) | Junio de 1948 | Binario | Electrónico | Programa almacenado en la memoria del tubo de rayos catódicos Williams | sí |
| ENIAC modificado (EE. UU.) | Septiembre de 1948 | Decimal | Electrónico | Mecanismo de programación almacenado de solo lectura que utiliza las tablas de funciones como ROM del programa | sí |
| Manchester Mark 1 (Reino Unido) | Abril de 1949 | Binario | Electrónico | Programa almacenado en memoria de tubo de rayos catódicos Williams y memoria de tambor magnético | sí |
| EDSAC (Reino Unido) | Mayo de 1949 | Binario | Electrónico | Programa almacenado en la memoria de línea de retardo de mercurio | sí |
| CSIRAC (Australia) | Noviembre de 1949 | Binario | Electrónico | Programa almacenado en memoria de línea de retardo de mercurio | sí |