Arquitectura von Neumann: origen, modelo, cómo funciona

La arquitectura von Neumann es un diseño teórico para que una computadora pueda tener un programa almacenado internamente, sirviendo como base para casi todas las computadoras que actualmente se realizan.

Una máquina von Neumann consiste de una unidad central de procesamiento, la cual tiene incluidas una unidad aritmética lógica y una unidad de control, además una memoria principal, almacenamiento secundario y dispositivos de entrada/salida.

Fuente: David strigoi – Trabajo propio, Dominio público, commons.wikimedia.org

Esta arquitectura asume que todo cálculo extrae los datos de la memoria, los procesa y luego los envía de regreso a la memoria.

En una arquitectura von Neumann se utiliza la misma memoria y el mismo bus para almacenar tanto los datos como las instrucciones que ejecutan un programa.

Mejora en la arquitectura

Debido a que no se puede acceder a la memoria de los datos y a la del programa a la vez, la arquitectura von Neumann es propensa a cuellos de botella y a que se debilite el rendimiento del computador. Esto es lo que se conoce como el cuello de botella de von Neumann, donde se afecta la potencia, el rendimiento y el costo.

Uno de los cambios realizados implicó reconsiderar la cantidad de datos que se debían enviar realmente a la memoria y la cantidad que se podría almacenar localmente.

De esta manera, en lugar de tener que enviar todo a la memoria, los cachés múltiples y los cachés proxy pueden reducir el flujo de datos desde los chips del procesador a los diferentes dispositivos.

Origen

En 1945, después de la Segunda Guerra Mundial, dos científicos plantearon de forma autónoma cómo construir una computadora más maleable. Uno de ellos fue el matemático Alan Turing y el otro fue el científico de igual talento John Von Neumann.

El británico Alan Turing había estado involucrado en descifrar el código Enigma en Bletchley Park, usando la computadora ‘Coloso’. Por otro lado, el estadounidense John Von Neumann había estado trabajando en el Proyecto Manhattan para construir la primera bomba atómica, que necesitaba una gran cantidad de cálculos manuales.

Hasta ese momento, las computadoras en tiempo de guerra se “programaban” más o menos reconectando toda la máquina para poder llevar a cabo una tarea diferente. Por ejemplo, la primera computadora llamada ENIAC tardaba tres semanas en reconectarse para hacer un cálculo diferente.

El nuevo concepto consistía en que en una memoria no solo debían almacenarse los datos, sino que también el programa que procesaba esos datos debería estar almacenado en la misma memoria.

Esta arquitectura con el programa almacenado internamente se conoce comúnmente como arquitectura ‘Von Neumann’.

Esta novedosa idea significaba que una computadora con esta arquitectura sería mucho más fácil de reprogramar. Efectivamente, el programa en sí mismo se trataría igual que los datos.

Modelo

El fundamento principal del modelo de Von Neumann es el pensamiento que el programa esté guardado internamente en una máquina. En la unidad de memoria se encuentran los datos y también el código del programa. El diseño de la arquitectura consiste en:

Fuente: De UserJaimeGallego – Este archivo deriva de Von Neumann Architecture.svg, CC BY-SA 3.0, commons.wikimedia.org

– Unidad central de procesamiento (CPU)

Es el circuito digital que se encarga de ejecutar las instrucciones de un programa. Se le denomina también procesador. La CPU contiene la ALU, la unidad de control y un conjunto de registros.

Unidad aritmética lógica

Esta parte de la arquitectura está involucrada únicamente en la realización de operaciones aritméticas y lógicas sobre los datos.

Estarán disponibles los cálculos habituales de sumar, multiplicar, dividir y restar, pero también estarán disponibles las comparaciones de datos como ‘mayor que’, ‘menor que’, ‘igual a’.

Unidad de control

Controla el funcionamiento de la ALU, la memoria y los dispositivos de entrada/salida de la computadora, indicándoles cómo actuar ante las instrucciones del programa que acaba de leer desde la memoria.

La unidad de control gestionará el proceso de mover los datos y programas desde y hacia la memoria. También se ocupará de ejecutar las instrucciones del programa, una a la vez o secuencialmente. Esto incluye la idea de un registro para contener los valores intermedios.

Registros

Son áreas de almacenamiento de alta velocidad en la CPU. Todos los datos deben almacenarse en un registro antes de poder procesarse.

El registro de direcciones de memoria contiene la ubicación de memoria de los datos a los que se debe acceder. El registro de datos de memoria contiene los datos que se transfieren a la memoria.

– Memoria

La computadora tendrá una memoria que puede contener datos, así como el programa que procesa esos datos. En las computadoras modernas esta memoria es la RAM o memoria principal. Esta memoria es rápida y accesible directamente por la CPU.

La RAM se divide en celdas. Cada celda consta de una dirección y su contenido. La dirección identificará de forma única cada ubicación en la memoria.

– Entrada-salida

Esta arquitectura permite plasmar la idea que una persona necesita interactuar con la máquina, a través de los dispositivos de entrada-salida.

– Bus

La información debe fluir entre las diferentes partes de la computadora. En una computadora con la arquitectura von Neumann, la información se transmite de un dispositivo a otro a lo largo de un bus, conectando todas las unidades de la CPU a la memoria principal.

El bus de direcciones transporta las direcciones de los datos, pero no los datos, entre el procesador y la memoria.

El bus de datos transporta los datos entre el procesador, la memoria y los dispositivos de entrada-salida.

¿Cómo funciona la arquitectura von Neumann?

El principio relevante de la arquitectura von Neumann es que en la memoria se almacenan tanto los datos como las instrucciones y se tratan de igual manera, lo que significa que las instrucciones y los datos son direccionales.

Funciona usando cuatro simples pasos: buscar, decodificar, ejecutar, almacenar, llamado el “Ciclo de la máquina”.

Las instrucciones son obtenidas por la CPU desde la memoria. La CPU luego decodifica y ejecuta estas instrucciones. El resultado es almacenado de nuevo en la memoria luego que se complete el ciclo de ejecución de las instrucciones.

Buscar

En este paso se obtienen las instrucciones desde la RAM y se las coloca en la memoria caché para que la unidad de control acceda a ellas.

Decodificar

La unidad de control decodifica las instrucciones de tal manera que la unidad aritmética lógica pueda comprenderlas, y luego las envía a la unidad aritmética lógica.

Ejecutar

La unidad lógica aritmética ejecuta las instrucciones y envía el resultado de nuevo a la memoria caché.

Almacenar

Una vez que el contador del programa indica detenerse, se descarga el resultado final a la memoria principal.

Cuello de botella

Si una máquina Von Neumann desea realizar una operación con datos en la memoria, estos se tienen que trasladar a través del bus hacia la CPU. Después de realizar el cálculo, se necesita mover el resultado a la memoria a través del mismo bus.

El cuello de botella de Von Neumann acontece cuando los datos que se introducen o se sacan de la memoria deben hacer tiempo mientras se completa la operación actual de la memoria.

Es decir, si el procesador acaba de completar un cálculo y está listo para realizar el siguiente tiene que escribir en la memoria el cálculo terminado, que ocupa el bus, antes de poder recuperar nuevos datos de la memoria, que también usan el mismo bus.

Este cuello de botella con el tiempo ha venido empeorando, porque los microprocesadores han aumentado su velocidad y por otro lado la memoria no ha avanzado tan rápidamente.

Ventajas

– La unidad de control recupera los datos y las instrucciones de la misma manera desde la memoria. Por tanto, el diseño y desarrollo de la unidad de control está simplificado, siendo más barato y más rápido.

– Los datos de los dispositivos de entrada/salida y de la memoria principal se recuperan de la misma manera.

– La organización de la memoria es realizada por los programadores, lo que permite utilizar toda la capacidad de la memoria.

– Manejar un solo bloque de memoria es más simple y fácil de lograr.

– El diseño del chip del microcontrolador es mucho más sencillo, ya que se accederá a una solo memoria. Lo más importante del microcontrolador es el acceso a la RAM y en la arquitectura von Neumann esta se podrá usar tanto para almacenar datos como para almacenar instrucciones del programa.

Desarrollo de sistemas operativos

La principal ventaja de tener una misma memoria para los programas y los datos es que los programas se pueden procesar como si fueran datos. En otras palabras, se pueden escribir programas cuyos datos sean otros programas.

Un programa cuyos datos son otro programa no es más que un sistema operativo. De hecho, si no se permitieran los programas y los datos en el mismo espacio de memoria, como sí sucede con la arquitectura von Neumann, nunca se hubieran podido desarrollar los sistemas operativos.

Desventajas

Aunque las ventajas superan con creces las desventajas, el problema es que solo hay un bus que conecta la memoria con el procesador, por lo que solo se puede obtener una instrucción o un elemento de datos a la vez.

Esto significa que el procesador puede tener que esperar más tiempo para que lleguen los datos o las instrucciones. Esto se conoce como cuello de botella de von Neumann. Como la CPU es mucho más rápida que el bus de datos, esto significa que a menudo permanezca inactiva.

– Por el procesamiento secuencial de las instrucciones no se permite la implementación paralela del programa.

– Al compartir la memoria existe el riesgo que se escriba una instrucción sobre otra debido a un error en el programa, haciendo que se bloquee el sistema.

– Algunos programas con defectos no pueden liberar la memoria cuando terminan con ella, lo que podría causar que se bloquee la computadora debido a que la memoria se haga insuficiente.

– Los datos y las instrucciones comparten el mismo bus de datos, aunque la velocidad a la que cada uno se debe recuperar suele ser muy diferente.

Referencias

  1. Semiconductor Engineering (2019). Von Neumann Architecture. Tomado de: semiengineering.com
  2. Scott Thornton (2018). What’s the difference between Von-Neumann and Harvard architectures? Microcontroller Tips. Tomado de: microcontrollertips.com.
  3. Teach ICT (2019). The Von Neumann machine. Tomado de: teach-ict.com.
  4. Computer Science (2019). Von Neumann Architecture. Tomado de: computerscience.gcse.guru.
  5. Learn IT with Mr C (2019). The Von Neumann machine. Tomado de: learnitwithmrc.co.uk.
  6. Solid State Media (2017). How do computers work? The Von Neumann Architecture. Tomado de: solidstateblog.com.
Sy Corvo, Helmut. (23 de octubre de 2019). Arquitectura von Neumann: origen, modelo, cómo funciona. Lifeder. Recuperado de https://www.lifeder.com/arquitectura-von-neumann/.Copiar cita
Ingeniero en Computación y Máster en Ingeniería Industrial. Especializado en sistemas de información, administración financiera, costos y gestión de proyectos. Gerente de informática, logística y operaciones en diferentes tipos de industrias. Más de 30 años de experiencia laboral. Profesor universitario de pregrado y postgrado. Director de Sytec 2000. Amante del cine, rock progresivo y literatura. Jugador de tenis.