La arquitectura de von Neumann ( modelo de von Neumann , arquitectura de Princeton ) es un principio bien conocido de almacenamiento conjunto de comandos y datos en la memoria de la computadora . Las máquinas informáticas de este tipo a menudo se denominan "máquina de von Neumann", pero la correspondencia de estos conceptos no siempre es inequívoca. En general, cuando la gente habla de la arquitectura de von Neumann, se refiere al principio de almacenar datos e instrucciones en la misma memoria.
Los cimientos de la doctrina de la arquitectura de las computadoras fueron establecidos por John von Neumann en 1944, cuando se unió a la creación de la primera computadora ENIAC de tubo de vacío del mundo . Mientras trabajaba en ENIAC en el Instituto Moore de la Universidad de Pensilvania, durante numerosas discusiones entre von Neumann y sus colegas John William Mauchly , John Eckert , Herman Goldstein y Arthur Burks, surgió la idea de una máquina más avanzada llamada EDVAC . El trabajo de investigación sobre EDVAC continuó en paralelo con la construcción de ENIAC.
En marzo de 1945, los principios de la arquitectura lógica se formalizaron en un documento llamado " Primer informe preliminar sobre EDVAC ", un informe para el Laboratorio de balística del ejército de EE. UU., con cuyo dinero se llevó a cabo la construcción de ENIAC y el desarrollo de EDVAC . El informe, dado que era solo un borrador, no estaba destinado a la publicación, sino solo a la distribución dentro del grupo, pero Herman Goldstein , el curador del proyecto por parte del Ejército de los EE. UU., reprodujo este trabajo científico y lo envió a un círculo amplio. de científicos para su revisión. Dado que en la primera página del documento sólo aparecía el nombre de von Neumann [1] , quienes leían el documento tenían la falsa impresión de que él era el autor de todas las ideas presentadas en la obra. El documento proporcionó suficiente información para que aquellos que lo leyeran construyeran sus computadoras como la EDVAC sobre los mismos principios y con la misma arquitectura, que finalmente se conoció como la "arquitectura de von Neumann".
Después del final de la Segunda Guerra Mundial y la finalización del trabajo en ENIAC en febrero de 1946, el equipo de ingenieros y científicos se disolvió, John Mauchly , John Eckert decidió entrar en el negocio y crear computadoras sobre una base comercial. Von Neumann, Goldstein y Burks se mudaron al Instituto de Estudios Avanzados , donde decidieron construir su computadora EDVAC , como una " máquina IAS ", y usarla para trabajos de investigación. En junio de 1946, [2] [3] esbozaron sus principios para construir computadoras en el ahora clásico artículo "Consideración preliminar del diseño lógico de un dispositivo informático electrónico" [4] [5] [6] . Ha pasado más de medio siglo desde entonces, pero las disposiciones que en él se exponen siguen siendo pertinentes hoy en día. El artículo fundamenta de manera convincente el uso del sistema binario para representar números y, de hecho, anteriormente todas las computadoras almacenaban números procesados en forma decimal. Los autores demostraron las ventajas del sistema binario para la implementación técnica, la conveniencia y la facilidad de realizar operaciones aritméticas y lógicas en él. En el futuro, las computadoras comenzaron a procesar tipos de información no numéricos: textuales, gráficos, de sonido y otros, pero la codificación de datos binarios aún constituye la base de información de cualquier computadora moderna.
Otra idea revolucionaria, cuya importancia difícilmente puede sobreestimarse, es el principio del "programa almacenado". Inicialmente, el programa se configuró instalando puentes en un panel de conexiones especial. Esta fue una tarea que consumió mucho tiempo: por ejemplo, tomó varios días cambiar el programa de la máquina ENIAC, mientras que el cálculo real no pudo durar más de unos minutos: las lámparas, de las cuales había una gran cantidad, fallaron . Sin embargo, el programa también se puede almacenar como un conjunto de ceros y unos, y en la misma memoria que los números que procesa. La ausencia de una diferencia fundamental entre el programa y los datos hizo posible que la computadora misma formara un programa para sí misma de acuerdo con los resultados de los cálculos.
La presencia de un conjunto dado de comandos y programas ejecutables fue un rasgo característico de los primeros sistemas informáticos. Hoy en día, se utiliza un diseño similar para simplificar el diseño de un dispositivo informático. Entonces, las calculadoras de escritorio , en principio, son dispositivos con un conjunto fijo de programas ejecutables. Se pueden usar para cálculos matemáticos , pero es casi imposible usarlos para procesamiento de textos y juegos de computadora , para ver imágenes gráficas o videos . Cambiar el firmware de este tipo de dispositivos requiere un rediseño casi completo y, en la mayoría de los casos, es imposible. Sin embargo, la reprogramación de los primeros sistemas informáticos todavía se llevaba a cabo, sin embargo, requería una gran cantidad de trabajo manual para preparar nueva documentación , volver a cambiar y reconstruir bloques y dispositivos, etc.
Lo que cambió todo fue la idea de almacenar programas de computadora en memoria compartida. En el momento en que se introdujo, el uso de arquitecturas basadas en conjuntos de instrucciones ejecutables y la representación de un proceso computacional como el proceso de ejecución de instrucciones escritas en un programa habían aumentado considerablemente la flexibilidad de los sistemas informáticos en términos de procesamiento de datos. El mismo enfoque para considerar datos e instrucciones facilitó el cambio de los propios programas.
Los comandos y los datos se almacenan en la misma memoria y son indistinguibles externamente en la memoria. Solo se pueden reconocer por la forma en que se usan; es decir, el mismo valor en una celda de memoria se puede usar tanto como dato, como comando y como dirección, dependiendo solo de la forma en que se accede. Esto le permite realizar las mismas operaciones en los comandos que en los números y, en consecuencia, abre una serie de posibilidades . Entonces, al cambiar cíclicamente la parte de la dirección del comando, es posible brindar acceso a elementos sucesivos de la matriz de datos. Esta técnica se llama modificación de comandos y no es bienvenida desde el punto de vista de la programación moderna. Más útil es otra consecuencia del principio de homogeneidad, donde las instrucciones de un programa pueden recibirse como resultado de la ejecución de otro programa. Esta posibilidad subyace a la traducción: la traducción del texto del programa de un lenguaje de alto nivel al lenguaje de una computadora en particular.
El principio de focalizaciónEstructuralmente, la memoria principal consta de celdas numeradas y cualquier celda está disponible para el procesador en cualquier momento. Los códigos binarios de comandos y datos se dividen en unidades de información, llamadas palabras, y se almacenan en celdas de memoria, y para acceder a ellas se utilizan los números de las celdas correspondientes: direcciones.
Principio de control del programaTodos los cálculos proporcionados por el algoritmo para resolver el problema deben presentarse en forma de un programa que consiste en una secuencia de palabras de control: comandos. Cada instrucción prescribe alguna operación del conjunto de operaciones implementadas por la computadora. Los comandos del programa se almacenan en celdas de memoria secuencial de la computadora y se ejecutan en una secuencia natural, es decir, en el orden de su posición en el programa. Si es necesario, con la ayuda de comandos especiales, esta secuencia se puede cambiar. La decisión de cambiar el orden de ejecución de los comandos del programa se toma sobre la base de un análisis de los resultados de los cálculos anteriores o incondicionalmente.
Según el plan, la primera computadora construida de acuerdo con la arquitectura de von Neumann sería EDVAC (Computadora automática variable discreta electrónica), una de las primeras computadoras electrónicas. A diferencia de su predecesor ENIAC , era una computadora basada en binario en lugar de decimal. Al igual que ENIAC, EDVAC fue desarrollado en el Instituto Moore de la Universidad de Pensilvania para el Laboratorio de Investigación Balística del Ejército de EE. UU. por un equipo de ingenieros y científicos dirigido por John Presper Eckert y John William Mauchley con la ayuda activa de un matemático, sin embargo, hasta 1951 EDVAC no se lanzó desde -debido a dificultades técnicas para hacer una memoria de computadora confiable y desacuerdos dentro del equipo de desarrollo. Otros institutos de investigación, al familiarizarse con ENIAC y el proyecto EDVAC, pudieron resolver estos problemas mucho antes. Las primeras computadoras en implementar las principales características de la arquitectura de von Neumann fueron:
En la URSS, la primera computadora completamente electrónica cercana a los principios de von Neumann fue MESM , construida por Lebedev (sobre la base del Instituto de Ingeniería Eléctrica de Kiev de la Academia de Ciencias de la RSS de Ucrania ). MESM como prototipo se lanzó públicamente por primera vez el 6 de noviembre de 1950, y ya como una máquina completa pasó las pruebas de aceptación estatales el 25 de diciembre de 1951.
Compartir el bus para la memoria del programa y la memoria de datos conduce a un cuello de botella de la arquitectura de von Neumann, a saber, la limitación del ancho de banda entre el procesador y la memoria en comparación con la cantidad de memoria. Debido a que no se puede acceder a la memoria del programa ya la memoria de datos al mismo tiempo, el ancho de banda del procesador a la memoria y la velocidad de la memoria limitan significativamente la velocidad del procesador, mucho más que si los programas y los datos estuvieran almacenados en diferentes lugares.
Este problema se soluciona mejorando los sistemas de almacenamiento en caché , lo que a su vez complica la arquitectura del sistema y aumenta el riesgo de errores secundarios (por ejemplo, el problema de la coherencia de la memoria ).
El término "cuello de botella de la arquitectura de von Neumann" fue introducido por John Backus en 1977 en su conferencia "¿Se puede liberar la programación del estilo de von Neumann?" , que leyó en la presentación del Premio Turing [7] [8]
Científicos de EE. UU. e Italia anunciaron en 2015 la creación de un prototipo de un meme-procesador ( eng. memprocessor ) con una arquitectura diferente a la de von Neumann y la posibilidad de usarlo para resolver problemas NP -completos [9] [10] [ 11] .
Tecnologías de procesadores digitales | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arquitectura | |||||||||
Set de instrucciones arquitectura | |||||||||
palabra maquina | |||||||||
Paralelismo |
| ||||||||
Implementaciones | |||||||||
Componentes | |||||||||
Administración de energía |