¿Están las computadoras modernas basadas en el modelo de Von Neumann?

5

Leí en el libro de texto de Foundation of Computer Science (por Behrouz A. Forouzan) que el programa de un modelo de Von Neumann debe ejecutarse secuencialmente y la computadora moderna ejecuta el código en el orden más eficiente. Pero no decía el enfoque secuencial de Von Neumann. es lo más eficiente.

Entonces, ¿la computadora moderna ejecuta código de esta manera?

RexYuan
fuente
La respuesta dada por Paul A. Clayton es la respuesta correcta. El que has elegido no me parece correcto. Por favor, arreglalo.
aminfar

Respuestas:

5

Arquitectónicamente, es decir, con respecto a lo que ve el software, los procesadores modernos usan el modelo serial de von Neumann. Sin embargo, la mayoría de los procesadores de alto rendimiento utilizan ejecución fuera de orden , que permite que las operaciones se ejecuten de manera no serial pero sus efectos son comprometido en orden del programa.

(Algunos procesadores en orden anteriores tuvieron excepciones imprecisas causadas por operaciones que comenzaron la ejecución en orden, pero los resultados se confirmaron a medida que estaban disponibles. Esto significa que una operación de latencia más corta, como una suma de enteros, se produce después de una operación de latencia más larga, como una multiplicación de punto flotante, puede escribir su resultado en un registro antes de que se complete la operación de latencia más larga. Si se produce una interrupción o excepción antes de que se complete la operación de latencia más larga, el estado del programa sería inconsistente.)

UNA arquitectura de flujo de datos no ejecuta programas en serie, pero escalar el hardware de manejo de dependencias es problemático (incluso los modernos procesadores desordenados de alto rendimiento tienen ventanas de ejecución desde las cuales se programan operaciones candidatas de menos de 100 operaciones) y aseguran la corrección (especialmente para el software, donde los métodos formales son menos comunes) también es difícil. Para familiarizarse con el diseño, cada operación se trata como un subproceso independiente que puede comenzar a ejecutarse tan pronto como estén disponibles sus operandos de origen y puede confirmar su resultado tan pronto como se complete la operación (permitiendo que las operaciones que esperan solo ese resultado comiencen a ejecutarse) ). A nivel de lenguaje de máquina, esto podría verse como el último código de espagueti de múltiples hilos.

Los procesadores que utilizan la ejecución fuera de orden son como las arquitecturas de flujo de datos en funcionamiento, pero con ventanas de ejecución limitadas y visibilidad en el orden garantizada de los resultados dentro del mismo hilo de ejecución. (Los modelos de consistencia de memoria más débiles permitirán que los resultados se hagan visibles a otros procesadores en un orden que no es estrictamente secuencial).

Paul A. Clayton
fuente
Muy buena explicación. Solo para finalizar, los procesadores desordenados ejecutan las instrucciones de tal manera que parecen seriales (de acuerdo con el modelo de von neumann), pero las instrucciones internas no se ejecutan en serie.
aminfar
@aminfar Sí, se ejecutan fuera de orden (y en algún momento en paralelo) internamente, pero siguen cumpliendo con el modelo de ejecución en serie de la arquitectura (es decir, comprometerse en orden).
Paul A. Clayton
2

La distinción clave entre las principales arquitecturas de Von Neumann y Harvard es que con Harvard, las memorias de Datos y Programas se separan. Las PC de hoy usan una memoria compartida para eso, aunque ciertas regiones de la memoria pueden estar marcadas como no ejecutables, se usa el mismo bus de datos para ellas. Entonces, desde ese punto de vista, las arquitecturas de PC son definitivamente Von Neumann.

Sin embargo, los procesadores modernos para PC de escritorio reordenarán las instrucciones según la eficiencia, pero esto es, según lo que aprendí, no el punto clave para una arquitectura de Von Neumann.

Jonas Schäfer
fuente
Además, Von Neumann fue uno de los primeros en recomendar el uso de alguna tipo de memoria electrónica como tienda de programas, vs usar interruptores y cables de conexión. La leyenda dice que se le ocurrió la idea mientras trabajaba en el ENIAC en la Universidad de Pennsylvania durante / después de la Segunda Guerra Mundial.
Daniel R Hicks
0

El programa del modelo de Von Neumann debe ejecutarse secuencialmente.

La computadora moderna ejecuta el código en el orden más eficiente.

Las CPU modernas de uso general siguen consumiendo una sola secuencia de instrucciones (de todas formas, por CPU lógica) y mientras que las CPU Intel / AMD realizan operaciones de reordenación interna (especialmente operaciones de memoria lenta) para mejorar el rendimiento, lo hace solo cuando no afecta los resultados de la secuencia de instrucciones.

Por lo tanto, las CPU modernas aún funcionan de manera secuencial (supongo que la "solución" oficial para esto ha sido la introducción de las CPU lógicas). La tecnología Hyperthreading de Intel permitió que muchas operaciones se superpongan y se produzcan al mismo tiempo, y la interfaz que presentó al flujo de instrucciones fue una segunda CPU lógica .

Pero no dijo que el enfoque secuencial de Von Neumann ES el más eficiente.

Bueno, si las computadoras se convierten en dispositivos de medios, si una CPU tiene que procesar una gran cantidad de datos, pero con operaciones simples que no requieren mucha toma de decisiones, el enfoque secuencial puro no es eficiente. Así que se han introducido instrucciones SIMD que permiten que la CPU cargue un montón de valores y dispare una operación en todos ellos en un ciclo. Y, por supuesto, las GPU funcionan de manera diferente, con muchos, muchos "núcleos" que realizan operaciones matemáticas simples en grandes cantidades de datos en paralelo.

LawrenceC
fuente
-1

Desde wikipedia :

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

krowe
fuente
-2

Las computadoras modernas no se han alejado del cuello de botella de Von Neumann. Incluso si tuviéramos que utilizar miles de CPU en una matriz súper paralela, cada uno de ellos incorporaría el principio de una ALU, por lo que aún se basan en gran medida en los mismos conceptos. Al crear múltiples cuellos de botella paralelos, aliviamos el problema, pero los bloques de construcción individuales son fundamentalmente los mismos.

alan short
fuente