Arquitectura de von Neumann

Diagrama de la arquitectura Von Neumann.
Diagrama de la arquitectura Von Neumann.
Diagrama de la arquitectura Von Neumann.

La arquitectura Von Neumann, también conocida como modelo de Von Neumann o arquitectura Princeton, es una arquitectura de computadoras basada en la descrita en 1945 por el matemático y físico John von Neumann y otros, en el primer borrador de un informe sobre el EDVAC.[3]

El diseño de una arquitectura Von Neumann es más simple que la arquitectura Harvard más moderna, que también es un sistema de programa almacenado, pero tiene un conjunto dedicado de direcciones y buses de datos para leer datos desde memoria y escribir datos en la misma, y otro conjunto de direcciones y buses de datos para ir a buscar instrucciones.

Un computador digital de programa almacenado es una que mantiene sus instrucciones de programa, así como sus datos, en memoria de acceso aleatorio (RAM) de lectura-escritura. Las computadoras de programa almacenado representaron un avance sobre los ordenadores controlados por programas de la década de 1940, como la Colossus y la ENIAC, que fueron programadas por ajustando interruptores e insertando parches, conduciendo datos de la ruta y para controlar las señales entre las distintas unidades funcionales. En la gran mayoría de las computadoras modernas, se utiliza la misma memoria tanto para datos como para instrucciones de programa, y la distinción entre Von Neumann vs. Harvard se aplica a la arquitectura de memoria caché, pero no a la memoria principal.

Historia

Las primeras máquinas de computación tenían programas fijos. Algunos equipos muy simples siguen utilizando este diseño, ya sea por motivos de simplificación o de formación. Por ejemplo, una calculadora de escritorio es (en principio) una computadora de programa fijo. En ella, se pueden hacer matemáticas básicas, pero no puede ser utilizada como procesador de texto o consola de juegos. Cambiar el programa de una máquina de programa fijo requiere re cablear, reestructurar, o re diseñar la máquina. Las primeras computadoras no eran tanto "programadas" ya que fueron "diseñadas"."Reprogramar" cuando era posible, era un proceso laborioso que comenzaba con diagramas de flujo y notas de papel, seguido de diseños detallados de ingeniería y luego el muchas veces arduo proceso de recablear físicamente y reconstruir la máquina. Podía tomar hasta tres semanas preparar un programa de ENIAC y conseguir que funcionara.[4]

Esa situación cambió con la propuesta de la computadora con programa almacenado. Una computadora de programa almacenado incluye, por diseño, un conjunto de instrucciones y puede almacenar en la memoria un conjunto de instrucciones (un programa) que detalla la computación.

Un diseño de programa almacenado también permite un código mutante. Una primera motivación para una instalación de este tipo fue la necesidad de que un programa incremente o modifique de otro modo la porción de dirección de instrucciones, lo cual, en los primeros diseños, tenía que hacerse manualmente. Esto llegó a ser menos importante cuando los registros índice y modos de direccionamiento se convirtieron en características habituales de la arquitectura de la máquina. Otro uso fue para incrustar datos frecuentemente usados en el flujo de instrucciones utilizando direccionamiento inmediato. El código mutante ha caído en gran parte en desuso, ya que suele ser difícil de entender y de depurar, además de ser ineficiente, en favor de los regímenes de los modernos procesadores pipelines y del almacenamiento en caché.

A gran escala, la capacidad para tratar a las instrucciones de la misma forma que si fueran datos es lo que hacen los ensambladores, compiladores, enlazadores, cargadores, y otras posibles herramientas automáticas de programación. Se puede "escribir programas que escriban programas". En una escala menor, las intensivas operaciones repetitivas de E/S –como los primeros manipuladores de imágenes BitBLT o los sombreadores de píxeles y vértices en los gráficos 3D modernos–, se consideraron ineficaces al funcionar sin necesidad de hardware personalizado. Estas operaciones podrían acelerarse en los procesadores de propósito general con tecnología de "compilación mosca" (" compilación en tiempo de ejecución"), por ejemplo, programas de código generado, una forma de código automodificable que ha mantenido popularidad.

Hay algunas desventajas para el diseño de Von Neumann. Aparte del cuello de botella de Von Neumann descripto a continuación, las modificaciones del programa pueden ser muy perjudiciales, ya sea por accidente o por diseño. En algunos diseños simples de computadora con programa almacenado, un programa que no funcione correctamente puede dañarse, dañar a otros programas, o inclusive al sistema operativo, lo que puede dar lugar a un desplome o crash de la computadora. Normalmente, la protección de memoria y otras formas de control de acceso pueden proteger tanto de modificaciones accidentales como de programas maliciosos.

Other Languages
Bahasa Indonesia: Arsitektur von Neumann
日本語: ノイマン型
македонски: VonNeumann архитектура
norsk bokmål: Von Neumann-arkitektur
srpskohrvatski / српскохрватски: Von Neumannova arhitektura
Simple English: Von Neumann architecture