La arquitectura Von Neumann es la arquitectura común de todos los procesadores para PC. Todos y cada uno de los procesadores, desde ARM a x86, desde el mítico 8086 a los AMD Ryzen pasando por los Pentium y los Intel Core, se basan en este diseño que revolucinó el mundo de la informática y ha servido perfectamente hasta hoy. Vamos a explicarte en qué consiste y cuáles son los motivos para que siga vigente tantas décadas después.
¿Has oído hablar de la arquitectura Von Neumann y no sabes exactamente a qué se refieren cuando lo hacen? Bueno, pues por empezar por algún sitio hay que decir que se trata de un modelo teórico propuesto por el matemático John von Neumann en el año 1945 y que es la base sobre la que se asienta la mayoría de los ordenadores que usamos hoy en día. Y por simplificar, su gran innovación fue poner sobre la mesa y plantear una estructura por la que tanto datos como instrucciones se almacenan juntos en una misma memoria. Ese pequeño cambio en el enfoque del sistema permite que una máquina sea más flexible y programable.
Como os decimos, esta arquitectura recibe su nombre de John Von Neumann, un matemático de origen húngaro. Su fama viene dada por, en primer lugar, haber trabajado en el Proyecto Manhattan –ya sabéis, el equipo encargado de desarrollar las bombas atómicas que Estados Unidos lanzó contra Japón a finales de la Segunda Guerra Mundial. Además, fue el responsable del desarrollo de la arquitectura base y cómo se ejecutan los programas de todos los procesadores, indistintamente de si son para PC, smartphone o superordenadores de ayer, hoy o mañana. Así que su relevancia e impacto está fuera de toda duda y es un matemático muy estudiado del que todavía nos seguimos acordando, por razones obvias.
Como puedes ver, el impacto de Von Neumann en nuestras vidas es enorme. Todos los desarrollos posteriores relativos a la informática y cualquier dispositivo que use una CPU, se basan en los principios que Von Neumann estableció el siglo pasado así que entender cómo funciona esa arquitectura es, prácticamente, poder ver la matriz de todo lo que nos rodea en esta sociedad de la información que nos ha tocado vivir.
Sin más preámbulos, vamos a profundizar e intentar comprender cómo funciona un procesador para ser capaz de asumir todas las tareas que actualmente realiza una de estas CPU.
¿Qué es la arquitectura Von Neumann?
Es una de las dos arquitecturas generales en las que se basan los ordenadores. Podemos encontrarla en la CPU de cualquier dispositivo, ya sea una consola, smartphone, vehículo eléctrico, PC, etc. Se debe esto a que todos ellos utilizan una serie de componentes comunes que se enfocan en trabajar juntos para procesar la información que les llega desde las unidades de almacenamiento y a través de la mememoria.
El símil más claro para entenderlo es el de un coche: no todos los coches son iguales, pero todos ellos comparten una serie de elementos con una función e interacción específica, creando un sistema más complejo que es el automóvil. Dicho de otra manera, todos los coches tienen cuatro ruedas, un chasis, asientos, volante, frenos, acelerador, etc., sean de la marca que sean y tengan el precio que tengan. Un 600 y un Ferrari comparten estos mismos denominadores comunes y en lo esencial cumplen con todos los requisitos que se esperan de un objeto de su categoría. Y eso incluye un modelo de gasolina o diésel o uno eléctrico. Todos cumplen a rajtabla las principales condiciones.
De la misma manera, un ser vivo es un conjunto de células diferenciadas que de forma combinada crean un individuo. Pues bien, en este caso hablamos de una de las dos organizaciones más comunes para montar un sistema informático, la otra es la llamada Harvard, pero en PC, consolas y dispositivos móviles es la arquitectura Von Neumann la que más se utiliza.
Cómo se organiza un ordenador Von Neumann
Indistintamente de si es una consola, un PC o un smartphone, todos estos tienen una estructura igual. Todos estos dispositivos comparten diferentes elementos, que son los que os explicamos a continuación y que están todos vinculados a cinco elementos esenciales que debe tener todo sistema, según Von Neumann, claro. Son estos:
- Unidad de Control: Es la encargada de las etapas de captación y descodificación del ciclo de instrucción.
- Unidad lógico-aritmética o ALU: Se encarga de realizar las operaciones matemáticas y de lógica que requieren los programas.
- Memoria: Tiene la tarea de almacenar el programa, la cual la conocemos como memoria RAM.
- Dispositivo de entrada: Elementos que nos permiten comunicarnos e interactuar con el ordenador.
- Dispositivo de Salida: Puntos desde los cuales el ordenador se puede comunicar con nosotros.
Como podéis ver se trata de la arquitectura común en todos los procesadores y todos los elementos descritos arriba los encontraréis que cualquier chip con la capacidad de procesar datos e instrucciones en forma de un programa ordenado. Sean estos una CPU, una GPU o cualquier otro procesador, ya sea principal o de apoyo, la arquitectura Von Neumann es un denominador común.
Arquitectura Harvard
Existe otro tipo de arquitectura conocida como arquitectura Harvard en la que la memoria RAM se encuentra dividida en dos pozos distintos. En uno de ellos se almacenan las instrucciones del programa y en la otra memoria los datos, teniendo buses separados tanto para el direccionamiento de la memoria como para las instrucciones.
Esta suele ser común entre microcontroladores y no en procesadores para ordenador, sin embargo, tal y como contaremos después, a nivel interno y en el caso de las cachés privadas de niveles más bajos y cercanos a los núcleos, estas usan una estructura Harvard con tal de reducir la latencia al máximo.
Podríamos decir que la arquitectura Harvard tiene una separación en la memoria para poder tener los datos más ordenados, y podríamos pensar que al ser así el rendimiento será mejor, ¿no? Pues no, realmente no. Pensad que simplemente es otra manera de gestionar, ni más ni menos, pero vamos a verlo con mayor detalle en el siguiente apartado, ya que existen limitaciones.
Diferencias entre Von Neumann vs Harvard
| Criterio | Arquitectura Von Neumann | Arquitectura Harvard |
|---|---|---|
| Almacenamiento de Memoria | Utiliza una única memoria para almacenar tanto datos como instrucciones en el mismo formato | Emplea dos memorias separadas: una exclusiva para datos y otra para instrucciones |
| Bus de Comunicación | Cuenta con un único bus de datos que debe compartirse para transferir tanto instrucciones como datos hacia la CPU | Dispone de buses independientes para datos e instrucciones, permitiendo espacios de direcciones separados |
| Velocidad y Rendimiento | Presenta el "cuello de botella de Von Neumann" debido a la ejecución secuencial, requiriendo al menos dos ciclos de reloj por instrucción | Permite acceso paralelo a memoria, pudiendo ejecutar instrucciones en un solo ciclo de reloj, mejorando significativamente la velocidad |
| Complejidad y Coste | Mayor simplicidad y menor coste. Más eficiente en la utilización de memoria y flexible para programación | Mayor complejidad de diseño y coste superior. Menos eficiente en uso de memoria debido a la división en dos caches |
| Aplicaciones Típicas | Utilizada en la mayoría de ordenadores modernos, CPU y GPU convencionales debido a su universalidad y flexibilidad | Empleada principalmente en sistemas embebidos avanzados y procesadores DSP (procesamiento de señales digitales) para audio y vídeo |
Limitaciones de la arquitectura Von Neumann
La principal desventaja de la arquitectura Von Neumann respecto a las Harvard es que utiliza un pozo de RAM único en el que almacenan instrucciones y datos. Por lo que compran un mismo bus de datos y direccionamiento. Por lo que las instrucciones y los datos han de ser captados de manera secuencial desde la memoria al mismo tiempo. Este es el llamado cuello de botella de Von Neumann. Es por ello que los diferentes microprocesadores tienen la caché más cercana al procesador, dividida en dos tipos, una para datos y otra para instrucciones. Así que, como veis, tampoco es una solución perfecta, pero sí la que más se acerca.
En los años recientes, las velocidades de los procesadores han ido aumentando de manera mucho más rápida que la memoria RAM, por lo que se ha aumentado el tiempo en que los datos tardan en ser comunicados desde hacia la memoria. Lo que ha obligado a desarrollar soluciones para paliar este problema, producto del cuello de botella de Von Neumann.
En los procesadores donde normalmente se utiliza la arquitectura Harvard es en los que estos se encuentran autocontenidos y, por tanto, no tienen acceso a la memoria RAM en común del sistema, sino que ejecutan su propia memoria y programa de manera aislada a la CPU principal. Estos procesadores reciben la lista de datos e instrucciones en dos ramales de datos distintos. Uno para la memoria de instrucciones y el otro para la memoria de datos de dicho procesador.
¿Por qué es la empleada en CPU y GPU?
El motivo principal es el hecho que aumentar la cantidad de buses significa aumentar el perímetro del propio procesador, ya que para comunicarse con la memoria externa es necesario que la interfaz se encuentre en la parte exterior del mismo. Esto lleva a procesadores mucho más grandes y mucho más caros. Por lo que el principal motivo por el cual la arquitectura Von Neumann se ha estandarizado es por los costes.
El segundo motivo es que se necesita que los dos pozos de memoria estén sincronizados para que una instrucción no se aplique a un dato erróneo. Lo que lleva a tener que crear sistemas de coordinación entre ambos pozos de memoria. Eso sí, buena parte de los cuellos de botella se eliminarían al separar ambos buses. Pero tampoco reduciría del todo el cuello de botella de Von Neumann.
Esto se debe a que el cuello de botella de Von Neumann, pese a ser una consecuencia del almacenamiento de datos e instrucciones en una misma memoria, también se puede dar en una arquitectura Harvard si esta no es lo suficientemente rápida como para alimentar al procesador. Es por ello que las arquitecturas Harvard se ha reducido en especial a microcontroladores y DSP. Mientras que Von Neumann es común en CPU y GPU
La caché de primer nivel, el escenario en el que se rompe el modelo
Habréis observado que tanto en CPU como en GPU, la caché de nivel más bajo está siempre dividida en instrucciones y datos, lo cual rompe la definición de arquitectura de lo que es una arquitectura Von Neumann. El motivo de hacer esto es muy simple y es que esto tiene que ver con el objetivo de facilitar la descodificación de las instrucciones, por lo que habitualmente cuando se copia de la caché del segundo nivel más bajo al más alto lo que se hace es separar el dato de la instrucción.
Esto lo podemos ver en todo tipo de procesadores, por lo que es igual que estemos hablando de una CPU o una GPU (al fin y al cabo una GPU sigue siendo un procesador, solo que orientado a gráficos), dado que esto ocurre en cualquier procesador que, por tanto, tenga que ejecutar un programa. Al fin y a cabo, esto sirve para tener una unidad de descodificación de las instrucciones más simple. Ya que recordemos que son los primeros bits de cada una los que interpretados como instrucción.
Además, esto permite la implementación de instrucciones del tipo vectorial o SIMD de manera más sencilla en el procesador. Estas últimas son ampliamente utilizadas para acelerar algoritmos en paralelo. De ahí a que sean las unidades de ejecución que más se encuentran en las GPU.
¿Cómo afecta la arquitectura Von Neumann al rendimiento de un PC?
Como hemos comentado a lo largo del artículo, la principal desventaja de la arquitectura Von Neuman es el cuello de botella generado a no tener la posibilidad de acceso simultáneo a los datos, obligando obligando a la CPU a acceder a la memoria de forma secuencial para buscar cada instrucción y, posteriormente, buscar el dato necesario para llevarla a cabo. El no poder hacer cosas a la vez, limita la velocidad de cada operación.
Esto supone que la CPU se encuentra con períodos de inactividad esperando a recibir datos o instrucciones lo que afecta al rendimiento del sistema. Al contar con un bus único, se restringe la capacidad de realizar procesos en paralelo dentro de la CPU ya que el acceso a la memoria es compartido.
Sin embargo, aporta una serie de ventajas como la simplicidad de diseño, flexibilidad de programación y escalabilidad que contribuyen a mejorar el rendimiento del sistema, dejando casi sin importancia las desventajas que hemos indicado.
Todavía le quedan décadas de vida
Ya como resumen y para terminar, entender cómo funciona la arquitectura Von Neumann significa entender cómo funciona casi cualquier sistema informático a excepción de los microcontroladores.
En el ámbito informático, una analogía que podemos utilizar es comprar las arquitecturas de procesadores ARM y x86. Aunque ambas difieren en su conjunto de instrucciones (RISC vs CISC) y diseño, ambas arquitecturas implementan los principios de Von Neumann para ejecutar instrucciones.
Así que recordad todo lo que os contamos en este artículo porque será una información clave para entender mejor cómo funciona vuestro PC. ¿Te imaginabas algo así?
En cualquier caso, tal y como te hemos ido diciendo a lo largo de todo este artículo, la arquitectura Von Neumann es tan importante que incluso aunque tenga ya décadas de vida, es la que se sigue utilizando en todos los PC y dispositivos actuales que dependan de un procesador, y tal y como están las cosas hay muchísimas probabilidades de que se siga utilizando… durante décadas.
De hecho, según los informes de IEEE Computer Society de 2024, se estima que su importancia se mantendrá hasta 2040, aunque implementando mejoras. Y sí, como en prácticamente todos los órdenes de la vida, es la economía y el mayor o menor coste de una solución, la que termina marcando su uso masivo y su éxito. Que no su calidad o blindaje ante problemas que tienen una solución a nivel de ingeniería.
