Arquitectura de Von Neumann
Arquitectura de Von Neumann
La arquitectura de Von Neumann resolvió la problemática del complejo 'recableado' necesario en los sistemas como el ENIAC cada vez que se necesitaba ejecutar una nueva tarea . Esto se logró al almacenar las instrucciones del programa y los datos en la misma memoria, eliminando así la necesidad de cablear manualmente las conexiones para cada nuevo programa, lo que ofrecía más flexibilidad y eficiencia en la ejecución de programas . Además, fue posible implementar un control central para coordinar las operaciones de toda la computadora, conectando permanentemente sus componentes .
La arquitectura de Von Neumann basa su concepto en utilizar un único dispositivo de almacenamiento tanto para instrucciones como para datos. Esta arquitectura permite que los programas sean almacenados en memoria junto con los datos que utilizan, y las instrucciones son codificadas numéricamente y almacenadas en la misma memoria que los operandos necesarios . El concepto original de Von Neumann nació de su colaboración en el proyecto ENIAC, con el objetivo de evitar el 'recableado', proponiendo un diseño donde las unidades de la computadora están conectadas permanentemente y controladas por un control central . Actualmente, la mayoría de las computadoras modernas utilizan esta arquitectura aunque con ciertas adiciones, como incorporación de dispositivos para gestionar interrupciones externas. Además, a lo largo del tiempo ha surgido la distinción en las cachés de memoria entre la arquitectura Von Neumann y Harvard .
La principal diferencia entre la arquitectura de Von Neumann y la arquitectura Harvard radica en cómo y dónde se almacenan las instrucciones y los datos. En la arquitectura de Von Neumann, las instrucciones y los datos comparten el mismo espacio de memoria y el mismo bus, lo que puede causar un cuello de botella (Von Neumann bottleneck), ya que no se pueden ejecutar simultáneamente operaciones de obtención y procesamiento de datos . En contraste, la arquitectura Harvard utiliza espacios de memoria y buses separados para las instrucciones y los datos, lo que permite que ambos procesos ocurran simultáneamente, mejorando el rendimiento general del sistema .
El término 'arquitectura de Von Neumann' ha sido cuestionado porque el concepto de almacenaje de programas no fue exclusivamente de Von Neumann; fue el resultado de colaboraciones con otros tecnólogos como John Presper Eckert y John William Mauchly. De hecho, se le ha propuesto que esta arquitectura se designe como 'arquitectura Eckert–Mauchly' porque reflejaría más justamente las contribuciones integradas de varios científicos en el desarrollo del concepto de programa almacenado .
La estructura básica de una computadora basada en la arquitectura de Von Neumann incluye los siguientes componentes: una memoria principal que almacena instrucciones y datos en la misma ubicación; una unidad aritmético-lógica (ALU) que realiza operaciones aritméticas y lógicas con datos desde la memoria; una unidad de control que organiza y dirige la operación de los otros componentes de la CPU; dispositivos de entrada/salida para la interacción con dispositivos externos; y un sistema de buses que transporta datos e instrucciones entre las diferentes partes . Esta configuración permite al sistema seguir un ciclo de ejecución de instrucciones donde se recuperan, decodifican y ejecutan las instrucciones de manera secuencial, integrando datos y decisiones para optimizar operaciones computacionales .
Aunque la arquitectura de Von Neumann proporciona el esquema básico de CPU, memoria y buses, existen elementos esenciales para el funcionamiento de una computadora moderna que no están formalmente considerados en su esquema. Estos incluyen fuentes de electricidad, placas base para interconectar componentes, gabinetes para alojar los elementos, ventiladores para enfriamiento, y otras unidades de soporte como sistemas de almacenamiento externo, y mecanismos avanzados de entrada/salida para interactuar con múltiples periféricos .
John von Neumann fue fundamental en la transición de la arquitectura primitiva del ENIAC hacia una forma más avanzada y eficiente con su propuesta de diseño en el EDVAC. Trabajando con los equipos de ENIAC, von Neumann desarrolló la idea de almacenar tanto instrucciones como datos en una sola memoria, lo que eliminó la necesidad de recopilar manualmente conexiones para cada programa nuevo . Su trabajo focalizó el diseño de una computadora en un control central coordinado, con la EDVAC convirtiéndose en un modelo base para futuras computadoras siguiendo esta arquitectura. Su influencia también continua en la historia al ampliar la capacidad de programar y realizar cálculos complejos sin la intervención física de 'recableado' .
El 'cuello de botella Von Neumann' es una limitación en el rendimiento debido al hecho de que las instrucciones y los datos usan el mismo bus de memoria, lo que significa que la computadora no puede realizar operaciones de obtención y procesamiento simultáneamente. Este problema puede reducir significativamente la eficiencia del procesador, especialmente cuando se maneja una gran cantidad de datos. Estrategias modernas para mitigar estos efectos incluyen la implementación de arquitecturas Harvard para caché, que permiten buses separados para instrucciones y datos, mejorando así la velocidad de ejecución. Otra solución es el uso de arquitectura de múltiples núcleos que posibilitan la ejecución simultánea de varios hilos de datos .
La arquitectura de Von Neumann influyó significativamente en la creación del UNIVAC I, el primer computador comercial construido bajo este esquema. Desarrollado por la Sperry-Rand Corporation en 1951, el UNIVAC I incorporó la idea de programa almacenado donde instrucciones y datos residen en la misma memoria. Fue vendido a la Oficina del Censo de Estados Unidos, marcando el inicio de la era de las computadoras comerciales. Esta máquina demostró la viabilidad de implementar sistemas complejos capaces de manejar grandes cantidades de datos para aplicaciones prácticas .
El ciclo de ejecución de instrucciones en una computadora con arquitectura Von Neumann consta de varios pasos. Primero, la unidad de control recupera la próxima instrucción de la memoria basándose en la dirección del contador de programa. Una vez obtenido, incrementa este contador para apuntar a la siguiente instrucción. En seguida, descodifica la instrucción para coordinar los componentes del sistema y ejecutar la tarea correspondiente. La ejecución puede implicar cambiar el valor del contador de programa según el resultado, permitiendo así la ejecución de bucles y 'decisiones' dentro del programa. Finalmente, el proceso se repite comenzando nuevamente con la obtención de la próxima instrucción .