Articulo de referencia

Arquitectura de Von Neumann

Un esquema arquitectónico de von Neumann La arquitectura von Neumann —también conocida como modelo von Neumann o arquitectura Princeton— es una arquitectura de computadora basad...

Un esquema arquitectónico de von Neumann

La arquitectura von Neumann —también conocida como modelo von Neumann o arquitectura Princeton— es una arquitectura de computadora basada en el Primer Borrador de un Informe sobre el EDVAC , [ 1 ] escrito por John von Neumann en 1945, que describe diseños discutidos con John Mauchly y J. Presper Eckert en la Escuela de Ingeniería Eléctrica Moore de la Universidad de Pensilvania . El documento describe una arquitectura de diseño para una computadora digital electrónica hecha de "órganos" que más tarde se entendió que tenían estos componentes: [ 1 ] : 1–4 [ 2 ]

La atribución de la invención de la arquitectura a von Neumann es incorrecta. Eckert y Mauchly ya habían terminado de diseñar una computadora con programa almacenado antes de discutir las ideas con von Neumann y Herman Goldstine . [ 3 ]

El término «arquitectura von Neumann» ha evolucionado para referirse a cualquier ordenador con programa almacenado en el que la búsqueda de instrucciones y la operación de datos no pueden ocurrir simultáneamente (ya que comparten un bus común ). Esto se conoce como el cuello de botella de von Neumann , que a menudo limita el rendimiento del sistema correspondiente. [ 4 ]

La arquitectura de von Neumann es más sencilla que la arquitectura de Harvard (que tiene un conjunto dedicado de buses de direcciones y datos para leer y escribir en la memoria y otro conjunto de buses de direcciones y datos para obtener instrucciones ).

Un ordenador de programa almacenado utiliza el mismo mecanismo subyacente para codificar tanto las instrucciones del programa como los datos, a diferencia de los diseños que emplean mecanismos como el cableado de placas de conexiones discretas o circuitos de control fijos para la implementación de instrucciones . Los ordenadores de programa almacenado supusieron un avance respecto a los ordenadores de función fija o reconfigurables manualmente de la década de 1940, como el Colossus y el ENIAC . Estos últimos se programaban ajustando interruptores e insertando cables de conexión para enrutar datos y señales de control entre las distintas unidades funcionales.

La gran mayoría de los ordenadores modernos utilizan el mismo mecanismo de hardware para codificar y almacenar tanto datos como instrucciones de programa, pero tienen cachés entre la CPU y la memoria, y, para las cachés más cercanas a la CPU, tienen cachés separadas para instrucciones y datos, de modo que la mayoría de las búsquedas de instrucciones y datos utilizan buses separados ( arquitectura de caché dividida ).

Historia

Las primeras máquinas de computación tenían programas fijos. Algunas computadoras muy simples aún utilizan este diseño, ya sea por simplicidad o con fines de capacitación. Por ejemplo, una calculadora de escritorio (en principio) es una computadora de programa fijo. Puede realizar operaciones matemáticas básicas , pero no puede ejecutar un procesador de texto ni juegos. Cambiar el programa de una máquina de programa fijo requiere recablear, reestructurar o rediseñar la máquina. Las primeras computadoras no estaban tanto "programadas" como "diseñadas" para una tarea particular. La "reprogramación" —cuando era posible— era un proceso laborioso que comenzaba con diagramas de flujo y notas en papel, seguido de diseños de ingeniería detallados y luego el a menudo arduo proceso de recablear físicamente y reconstruir la máquina. Podía tomar tres semanas configurar y depurar un programa en ENIAC . [ 5 ]

Con la propuesta de la computadora de programa almacenado, esto cambió. Una computadora de programa almacenado incluye, por diseño, un conjunto de instrucciones y puede almacenar en memoria un conjunto de instrucciones (un programa ) que detalla el cálculo .

Un diseño de programa almacenado también permite código automodificable . Una motivación inicial para esta funcionalidad fue la necesidad de que un programa incrementara o modificara la parte de la dirección de las instrucciones, algo que los operadores debían hacer manualmente en los primeros diseños. Esto perdió importancia cuando los registros de índice y el direccionamiento indirecto se convirtieron en características habituales de la arquitectura de las máquinas. Otro uso fue incrustar datos de uso frecuente en el flujo de instrucciones mediante direccionamiento inmediato .

Cuando von Neumann describió los sistemas de computación automática utilizando una terminología diferente a la que se describe típicamente con el modelo. En el primer borrador de un informe sobre el EDVAC , [ 1 ] la arquitectura estaba compuesta por "una memoria de alta velocidad M, una unidad aritmética central CA, un medio de grabación externo R, un órgano de entrada I, un órgano de salida O y un control central CC" [ 6 ].

Capacidades

A gran escala, la capacidad de tratar las instrucciones como datos es lo que hace posible a los ensambladores , compiladores , enlazadores , cargadores y otras herramientas de programación automatizada. Hace posible la existencia de "programas que escriben programas". [ 7 ] Esto ha propiciado el florecimiento de un sofisticado ecosistema de computación autoalojada en torno a las máquinas con arquitectura von Neumann.

Algunos lenguajes de alto nivel aprovechan la arquitectura de von Neumann al proporcionar una forma abstracta e independiente de la máquina para manipular el código ejecutable en tiempo de ejecución (por ejemplo, LISP ), o al utilizar información de tiempo de ejecución para ajustar la compilación justo a tiempo (por ejemplo, lenguajes alojados en la máquina virtual de Java o lenguajes integrados en navegadores web ).

A menor escala, algunas operaciones repetitivas, como BITBLT o los sombreadores de píxeles y vértices, pueden acelerarse en procesadores de propósito general mediante técnicas de compilación justo a tiempo. Este es un uso del código automodificable que sigue siendo popular.

Desarrollo del concepto de programa almacenado

El matemático Alan Turing , alertado sobre un problema de lógica matemática por las clases de Max Newman en la Universidad de Cambridge , escribió en 1936 un artículo titulado « Sobre los números computables, con una aplicación al problema de decisión» , publicado en las Actas de la Sociedad Matemática de Londres . [ 8 ] En él describió una máquina hipotética que denominó máquina de computación universal , ahora conocida como la « máquina universal de Turing ». Esta máquina hipotética poseía una memoria infinita (o instrucciones, en la terminología actual) que contenía tanto instrucciones como datos. John von Neumann conoció a Turing durante su estancia como profesor visitante en Cambridge en 1935, y también durante el año de doctorado de Turing en el Instituto de Estudios Avanzados de Princeton, Nueva Jersey , entre 1936 y 1937. No está claro si conocía el artículo de Turing de 1936 en aquel entonces.

En 1936, Konrad Zuse también anticipó, en dos solicitudes de patente, que las instrucciones de la máquina podrían almacenarse en el mismo almacenamiento utilizado para los datos. [ 9 ]

De forma independiente, J. Presper Eckert y John Mauchly , quienes desarrollaban la ENIAC en la Escuela de Ingeniería Eléctrica Moore de la Universidad de Pensilvania , escribieron sobre el concepto de programa almacenado en diciembre de 1943. [ 10 ] [ 11 ] Al planificar una nueva máquina, la EDVAC , Eckert escribió en enero de 1944 que almacenarían datos y programas en un nuevo dispositivo de memoria direccionable, una memoria de línea de retardo de metal de mercurio . Esta fue la primera vez que se propuso la construcción de una máquina práctica de programa almacenado. En ese momento, ni él ni Mauchly conocían el trabajo de Turing.

Von Neumann participó en el Proyecto Manhattan en el Laboratorio Nacional de Los Alamos . Este proyecto requería enormes cantidades de cálculos, lo que lo impulsó a unirse al proyecto ENIAC durante el verano de 1944. Allí se sumó a las discusiones sobre el diseño de la computadora de programa almacenado, la EDVAC. Como parte de ese grupo, redactó una descripción titulada « Primer borrador de un informe sobre la EDVAC » [ 1 ] , basada en el trabajo de Eckert y Mauchly. El documento estaba incompleto cuando su colega Herman Goldstine lo distribuyó, y solo llevaba el nombre de von Neumann (para consternación de Eckert y Mauchly). [ 12 ] El documento fue leído por decenas de colegas de von Neumann en Estados Unidos y Europa, e influyó en la siguiente generación de diseños de computadoras.

Jack Copeland considera que es "históricamente inapropiado referirse a las computadoras digitales electrónicas de programa almacenado como 'máquinas de von Neumann ' " . [ 13 ] Su colega de Los Alamos, Stan Frankel, dijo sobre el respeto de von Neumann por las ideas de Turing [ 14 ]

Sé que alrededor de 1943 o 1944, von Neumann era plenamente consciente de la importancia fundamental del artículo de Turing de 1936. Von Neumann me presentó dicho artículo y, a instancias suyas, lo estudié con detenimiento. Muchos han aclamado a von Neumann como el "padre de la computadora" (en el sentido moderno del término), pero estoy seguro de que él mismo jamás habría cometido ese error. Quizás se le podría llamar el precursor, pero él me recalcó firmemente, y estoy seguro de que también a otros, que la concepción fundamental se debe a Turing, en la medida en que no fue anticipada por Babbage. Tanto Turing como von Neumann, por supuesto, también hicieron contribuciones sustanciales a la " puesta en práctica " de estos conceptos, pero no las consideraría comparables en importancia con la introducción y explicación del concepto de una computadora capaz de almacenar en su memoria su programa de actividades y de modificarlo durante la ejecución de dichas actividades.

En el momento en que se distribuyó el informe del "Primer Borrador", Turing estaba elaborando un informe titulado Calculadora Electrónica Propuesta . En él describía con detalle técnico y de programación su idea de una máquina a la que denominó Motor de Computación Automática (ACE) . [ 15 ] Lo presentó al comité ejecutivo del Laboratorio Nacional de Física Británico el 19 de febrero de 1946. Aunque Turing sabía, por su experiencia durante la guerra en Bletchley Park, que lo que proponía era factible, el secretismo que rodeaba a Colossus , y que se mantuvo durante varias décadas, le impidió decirlo. Se produjeron varias implementaciones exitosas del diseño de ACE.

Los artículos de von Neumann y Turing describían computadoras con programas almacenados, pero el artículo anterior de von Neumann tuvo mayor difusión y la arquitectura de computadora que describía se conoció como la "arquitectura de von Neumann". En la publicación de 1953 Faster than Thought: A Symposium on Digital Computing Machines (editada por B.  V. Bowden), una sección del capítulo sobre Computadoras en Estados Unidos dice lo siguiente: [ 16 ]

La máquina del Instituto de Estudios Avanzados de Princeton

En 1945, el profesor J. von Neumann, que entonces trabajaba en la Escuela de Ingeniería Moore de Filadelfia, donde se había construido la ENIAC, publicó, en nombre de un grupo de sus colaboradores, un informe sobre el diseño lógico de las computadoras digitales. El informe contenía una propuesta detallada para el diseño de la máquina que desde entonces se conoce como EDVAC (computadora automática electrónica de variables discretas). Esta máquina se ha completado recientemente en Estados Unidos, pero el informe de von Neumann inspiró la construcción de la EDSAC (calculadora automática electrónica de almacenamiento con retardo) en Cambridge (véase la página 130).

En 1947, Burks, Goldstine y von Neumann publicaron otro informe que describía el diseño de un nuevo tipo de máquina (esta vez una máquina paralela) que sería extremadamente rápida, capaz de realizar quizás 20 000 operaciones por segundo. Señalaron que el principal problema para construir una máquina así era el desarrollo de una memoria adecuada con contenido de acceso instantáneo. Al principio, sugirieron utilizar un tubo de vacío especial —llamado « Selectron »— inventado por los Laboratorios Princeton de RCA. Estos tubos eran caros y difíciles de fabricar, por lo que von Neumann decidió posteriormente construir una máquina basada en la memoria Williams . Esta máquina —terminada en junio de 1952 en Princeton— se conoce popularmente como «Maniac». El diseño de esta máquina inspiró al menos media docena de máquinas que se construyen actualmente en Estados Unidos, todas conocidas cariñosamente como «Johniacs».

En el mismo libro, los dos primeros párrafos de un capítulo sobre ACE dicen lo siguiente: [ 17 ]

Computación automática en el Laboratorio Nacional de Física

Una de las computadoras digitales más modernas, que incorpora los últimos avances y mejoras en la técnica de computación electrónica automática, fue presentada recientemente en el Laboratorio Nacional de Física de Teddington. Fue diseñada y construida por un pequeño equipo de matemáticos e ingenieros de investigación electrónica del personal del Laboratorio, con la colaboración de varios ingenieros de producción de English Electric Company, Limited. El equipo instalado hasta el momento en el Laboratorio es solo el prototipo de una instalación mucho mayor que se conocerá como la Máquina de Computación Automática. Si bien es relativamente pequeña y contiene solo unas 800 válvulas termoiónicas, como se puede apreciar en las láminas XII, XIII y XIV, se trata de una máquina de cálculo extremadamente rápida y versátil.

Los conceptos básicos y los principios abstractos de la computación mediante una máquina fueron formulados por el Dr.  A.  M. Turing, FRS, en un artículo¹ leído  ante la Sociedad Matemática de Londres en 1936, pero el trabajo en dichas máquinas en Gran Bretaña se retrasó debido a la guerra. Sin embargo, en 1945, el Sr. J. R. Womersley, entonces superintendente de la División de Matemáticas del Laboratorio Nacional de Física, examinó los problemas  . Se le unieron el Dr. Turing y un pequeño equipo de especialistas, y, para 1947, la planificación preliminar estaba lo suficientemente avanzada como para justificar la creación del grupo especial ya mencionado. En abril de 1948, este último se convirtió en la Sección de Electrónica del Laboratorio, bajo la dirección del Sr.  F.  M. Colebrook.

Primeros ordenadores con arquitectura von Neumann

El primer borrador describía un diseño que muchas universidades y corporaciones utilizaban para construir sus computadoras. [ 18 ] Entre estas diversas computadoras, solo ILLIAC y ORDVAC tenían conjuntos de instrucciones compatibles.

Primeras computadoras con programas almacenados

Resulta difícil ordenar correctamente la información de fechas en la siguiente cronología. Algunas fechas corresponden a la primera ejecución de un programa de prueba, otras a la primera demostración o finalización del ordenador, y otras a la primera entrega o instalación.

  • El IBM SSEC tenía la capacidad de tratar las instrucciones como datos, y se demostró públicamente el 27 de enero de 1948. Esta capacidad se reivindicó en una patente estadounidense . [ 21 ] [ 22 ] Sin embargo, era parcialmente electromecánico , no totalmente electrónico. En la práctica, las instrucciones se leían desde cinta de papel debido a su memoria limitada. [ 23 ]
  • El ARC2 desarrollado por Andrew Booth y Kathleen Booth en Birkbeck, Universidad de Londres, entró oficialmente en funcionamiento el 12 de mayo de 1948. [ 19 ] Contaba con el primer dispositivo de almacenamiento de tambor giratorio . [ 24 ] [ 25 ]
  • La Manchester Baby fue la primera computadora totalmente electrónica en ejecutar un programa almacenado. Ejecutó un programa de factorización durante 52 minutos el 21 de junio de 1948, después de ejecutar un programa de división simple y un programa para demostrar que dos números eran primos relativos .
  • El ENIAC fue modificado para funcionar como un ordenador primitivo de solo lectura con programa almacenado (utilizando las tablas de funciones para la ROM del programa ) y se demostró su funcionamiento como tal el 16 de septiembre de 1948, ejecutando un programa de Adele Goldstine para von Neumann.
  • El BINAC realizó algunos programas de prueba en febrero, marzo y abril de 1949, aunque no se completó hasta septiembre de 1949.
  • El Manchester Mark 1 se desarrolló a partir del proyecto Baby. Una versión intermedia del Mark 1 estuvo disponible para ejecutar programas en abril de 1949, pero no se completó hasta octubre de 1949.
  • El EDSAC realizó su primer programa el 6 de mayo de 1949.
  • El EDVAC fue entregado en agosto de 1949, pero tuvo problemas que impidieron que entrara en funcionamiento regular hasta 1951.
  • El CSIR Mk I puso en marcha su primer programa en noviembre de 1949.
  • El SEAC fue presentado en abril de 1950.
  • El Pilot ACE realizó su primer programa el 10 de mayo de 1950 y fue presentado en diciembre de 1950.
  • El SWAC se terminó de construir en julio de 1950.
  • El Whirlwind se terminó de construir en diciembre de 1950 y entró en funcionamiento en abril de 1951.
  • El primer ERA Atlas (posteriormente el modelo comercial ERA 1101/UNIVAC 1101) se instaló en diciembre de 1950.

Evolución

Evolución de la arquitectura del bus de sistema único

Durante las décadas de 1960 y 1970, las computadoras generalmente se volvieron más pequeñas y rápidas, lo que llevó a evoluciones en su arquitectura. Por ejemplo, la E/S mapeada en memoria permite que los dispositivos de entrada y salida se traten como memoria. [ 26 ] Se podía usar un bus de sistema único para proporcionar un sistema modular con menor costo . Esto a veces se denomina una "simplificación" de la arquitectura. [ 27 ] En las décadas siguientes, los microcontroladores simples a veces omitían características del modelo para reducir el costo y el tamaño. Las computadoras más grandes agregaron características para un mayor rendimiento.

Limitaciones de diseño

Cuello de botella de Von Neumann

El uso del mismo bus para obtener instrucciones y datos genera el cuello de botella de von Neumann , que limita el rendimiento (tasa de transferencia de datos) entre la unidad central de procesamiento (CPU) y la memoria en comparación con la cantidad de memoria disponible. Dado que el bus único solo puede acceder a una de las dos clases de memoria a la vez, el rendimiento es inferior a la velocidad a la que la CPU puede trabajar. Esto limita seriamente la velocidad de procesamiento efectiva cuando la CPU debe realizar un procesamiento mínimo sobre grandes cantidades de datos. La CPU se ve obligada continuamente a esperar a que los datos necesarios se transfieran hacia o desde la memoria. Dado que la velocidad de la CPU y el tamaño de la memoria han aumentado mucho más rápido que el rendimiento entre ellas, el cuello de botella se ha convertido en un problema cada vez mayor, cuya gravedad aumenta con cada nueva generación de CPU.

El cuello de botella de von Neumann fue descrito por John Backus en su discurso de aceptación del premio ACM Turing en 1977. Según Backus:

Seguramente debe haber una forma menos primitiva de realizar grandes cambios en la tienda que enviando enormes cantidades de palabras de un lado a otro a través del cuello de botella de von Neumann. Este tubo no solo es un cuello de botella literal para el tráfico de datos de un problema, sino que, más importante aún, es un cuello de botella intelectual que nos ha mantenido atados al pensamiento palabra por palabra en lugar de alentarnos a pensar en términos de las unidades conceptuales más amplias de la tarea en cuestión. Por lo tanto, la programación consiste básicamente en planificar y detallar el enorme tráfico de palabras a través del cuello de botella de von Neumann, y gran parte de ese tráfico no se refiere a los datos significativos en sí, sino a dónde encontrarlos. [ 28 ] [ 29 ]

Medidas de mitigación

Existen varios métodos conocidos para mitigar el cuello de botella de rendimiento de Von Neumann. Por ejemplo, los siguientes pueden mejorar el rendimiento:

El problema también puede sortearse en cierta medida mediante la computación paralela , utilizando, por ejemplo, la arquitectura de acceso a memoria no uniforme (NUMA); este enfoque es comúnmente empleado por las supercomputadoras . No está tan claro si el cuello de botella intelectual que criticó Backus ha cambiado mucho desde 1977. La solución propuesta por Backus no ha tenido una gran influencia. La programación funcional moderna y la programación orientada a objetos están mucho menos orientadas a "enviar grandes cantidades de palabras de un lado a otro" que lenguajes anteriores como FORTRAN , pero internamente, eso sigue siendo a lo que las computadoras dedican gran parte de su tiempo, incluso las supercomputadoras altamente paralelas.

Código automodificable

Además del cuello de botella de von Neumann, las modificaciones de programas pueden ser muy perjudiciales, ya sea por accidente o intencionadamente. Si no existe ningún tipo de protección de memoria que impida la sobrescritura de código, un programa defectuoso puede dañarse a sí mismo, a otros programas o al sistema operativo, pudiendo provocar un fallo del sistema. Sin embargo, este problema también afecta a los programas convencionales que carecen de comprobación de límites . La protección de memoria y diversos controles de acceso generalmente protegen contra cambios de programa tanto accidentales como maliciosos.

Sin embargo, se puede utilizar código automodificable para realizar algunas optimizaciones que no serían posibles en la arquitectura de Harvard .

Véase también

Referencias

  1. 1 2 3 4 von Neumann, John (1945), Primer borrador de un informe sobre el EDVAC (PDF) , archivado del original (PDF) el 14 de marzo de 2013 , recuperado el 24 de agosto de 2011
  2. Ganesan 2009
  3. Bergin, Thomas J. (2000), Cincuenta años de informática en el ejército: de ENIAC a MSRC, Laboratorio de Investigación del Ejército de EE. UU. , pág. 34 , consultado el 5 de noviembre de 2024. 
  4. Markgraf, Joey D. (2007), El cuello de botella de Von Neumann , archivado del original el 12 de diciembre de 2013..
  5. Copeland 2006 , pág. 104 . 
  6. von Neumann, Jon (1966). Teoría de los autómatas autorreproductores . University of Illinois Press. p. 10. ISBN  978-0252727337.
  7. Entrada de MFTL (My Favorite Toy Language) en el archivo de jerga 4.4.7 , consultado el 11 de julio de 2008..
  8. Turing, Alan M. (1936), "Sobre los números computables, con una aplicación al problema de decisión", Actas de la Sociedad Matemática de Londres , 2, vol. 42 (publicado en 1937), pp. 230–265 , doi : 10.1112/plms/s2-42.1.230 , S2CID 73712   y Turing, Alan M. (1938), "Sobre los números computables, con una aplicación al problema de decisión. Una corrección", Actas de la Sociedad Matemática de Londres , 2, vol. 43, n.º 6 (publicado en 1937), págs. 544–546 , doi : 10.1112/plms/s2-43.6.544   .
  9. Williams, FC; Kilburn, T. (25 de septiembre de 1948), "Computadoras digitales electrónicas", Nature , 162 (4117): 487, Bibcode : 1948Natur.162..487W , doi : 10.1038/162487a0 , S2CID 4110351 .
  10. Lukoff, Herman (1979). De los dits a los bits: Una historia personal de la computadora electrónica . Portland, Oregón: Robotics Press. ISBN 0-89661-002-0. LCCN 79-90567 . 
  11. El informe de progreso de diciembre de 1943 del administrador del proyecto ENIAC, Grist Brainerd, para el primer período del desarrollo del ENIAC, propuso implícitamente el concepto de programa almacenado (al tiempo que rechazaba su implementación en el ENIAC) al afirmar que "para tener el proyecto más simple y no complicar las cosas", el ENIAC se construiría sin ninguna "regulación automática".
  12. Copeland 2006 , pág. 113 . 
  13. Copeland, Jack (2000), Breve historia de la informática: ENIAC y EDVAC , consultado el 27 de enero de 2010 ..
  14. Copeland, Jack (2000), Breve historia de la informática: ENIAC y EDVAC , consultado el 27 de enero de 2010 .(una obra que cita a Randell, Brian (1972), "Sobre Alan Turing y los orígenes de las computadoras digitales", en Meltzer, B.; Michie, D. (eds.), Machine Intelligence , vol. 7, Edimburgo: Edinburgh University Press , pág. 10, ISBN   0-902383-26-4.
  15. Copeland 2006 , págs. 108–111 . 
  16. ^ Bowden 1953 , págs.176 , 177 . 
  17. Bowden 1953 , pág. 135 . 
  18. "Proyecto de Computadora Electrónica" . Instituto de Estudios Avanzados . 11 de septiembre de 2009. Consultado el 26 de mayo de 2011 .
  19. 1 2 Campbell-Kelly, Martin (abril de 1982). "El desarrollo de la programación informática en Gran Bretaña (1945 a 1955)". IEEE Annals of the History of Computing . 4 (2): 121– 139. doi : 10.1109/MAHC.1982.10016 . S2CID 14861159 . 
  20. Robertson, James E. (1955), Técnicas de diseño de Illiac , informe número UIUCDCS-R-1955–146, Laboratorio de Computación Digital, Universidad de Illinois en Urbana-Champaign.
  21. Calculadora electrónica de secuencias selectivas (sitio web de la USPTO) .
  22. Calculadora electrónica de secuencia selectiva (Patentes de Google) .
  23. Grosch, Herbert RJ (1991). Computer: Bit Slices From a Life . Third Millennium Books. ISBN 0-88733-085-1.Copia escaneada en Internet Archive .
  24. Lavington, Simon, ed. (2012). Alan Turing y sus contemporáneos: Construyendo las primeras computadoras del mundo . Londres: British Computer Society . pág. 61. ISBN  978-1906124908.
  25. Johnson, Roger (abril de 2008). "Escuela de Ciencias de la Computación y Sistemas de Información: una breve historia" (PDF) . Birkbeck College . Universidad de Londres . Recuperado el 23 de julio de 2017 .
  26. Bell, C. Gordon ; Cady, R.; McFarland, H.; O'Laughlin, J.; Noonan, R.; Wulf, W. (1970), " Una nueva arquitectura para minicomputadoras: la DEC PDP-11" (PDF) , Spring Joint Computer Conference , págs. 657–675 .
  27. Null, Linda; Lobur, Julia (2010), Fundamentos de organización y arquitectura de computadoras (3.ª ed.), Jones & Bartlett Learning, pp. 36, 199–203 , ISBN   978-1-4496-0006-8.
  28. Backus, John W. (agosto de 1978). "¿Puede liberarse la programación del estilo von Neumann? Un estilo funcional y su álgebra de programas" . Communications of the ACM . 21 (8): 613– 641. doi : 10.1145/359576.359579 . S2CID 16367522 . 
  29. Dijkstra, Edsger W. "Archivo EW Dijkstra: Una reseña de la conferencia del Premio Turing de 1977" . Consultado el 11 de julio de 2008 .

Lecturas adicionales

  • Bowden, BV, ed. (1953), Más rápido que el pensamiento: un simposio sobre máquinas de computación digital , Londres: Sir Isaac Pitman and Sons Ltd.
  • Rojas, Raúl; Hashagen, Ulf, eds. (2000), Las primeras computadoras: historia y arquitecturas , MIT Press , ISBN 0-262-18197-5
  • Davis, Martin (2000), La computadora universal: el camino de Leibniz a Turing , Nueva York: WW Norton & Company Inc. , ISBN 0-393-04785-7republicado como: Davis, Martin (2001), Motores de lógica: matemáticos y el origen de la computadora , Nueva York: WW Norton & Company , ISBN 978-0-393-32229-3
  • ¿Se puede liberar la programación del estilo de von Neumann? Backus , John . Conferencia del Premio Turing de la ACM de 1977. Communications of the ACM, agosto de 1978, volumen 21, número 8. PDF en línea archivado el 21 de junio de 2007 en Wayback Machine . Ver detalles en https://www.cs.tufts.edu/~nr/backus-lecture.html
  • Bell, C. Gordon; Newell, Allen (1971), Estructuras de computadoras: lecturas y ejemplos , McGraw-Hill Book Company , Nueva York. Volumen extenso (668 páginas).
  • Copeland, Jack (2006), «Colossus y el auge de la computadora moderna», en Copeland, B. Jack (ed.), Colossus: Los secretos de las computadoras descifradoras de códigos de Bletchley Park , Oxford: Oxford University Press , ISBN 978-0-19-284055-4
  • Ganesan, Deepak (2009), El modelo de von Neumann (PDF) , archivado del original (PDF) el 25 de abril de 2012 , recuperado el 22 de octubre de 2011.
  • McCartney, Scott (1999). ENIAC: Los triunfos y las tragedias de la primera computadora del mundo . Walker & Co. ISBN 0-8027-1348-3.
  • Goldstine, Herman H. (1972). La computadora: de Pascal a von Neumann . Princeton University Press . ISBN 0-691-08104-2.
  • Shurkin, Joel (1984). Motores de la mente: Una historia de la computadora . Nueva York, Londres: WW Norton & Company . ISBN 0-393-01804-0.
  • Aspray, William (1990). John von Neumann y los orígenes de la informática moderna . Prensa del MIT. ISBN 978-0-262-01121-1.
  • Harvard contra von Neumann
  • JOHNNY: Un sencillo simulador de código abierto de una máquina de von Neumann con fines educativos.