¿Cuál es la diferencia entre la arquitectura de Von Neumann y la arquitectura de Harvard?

Arquitectura de von Neumann

  1. Lleva el nombre del matemático y científico informático temprano John Von Neumann.
  2. La computadora tiene un sistema de almacenamiento único (memoria) para almacenar datos, así como el programa que se ejecutará.
  3. Un conjunto único de buses de dirección / datos entre la CPU y la memoria.
  4. El procesador necesita dos ciclos de reloj para completar una instrucción. No es posible procesar las instrucciones con este el primer ciclo de reloj que el procesador obtiene la instrucción de la memoria y la decodifica.
  5. En el siguiente ciclo de reloj, los datos requeridos se toman de la memoria. Para cada instrucción, este ciclo se repite y, por lo tanto, necesita dos ciclos para completar una instrucción.
  6. Esta es una arquitectura relativamente antigua y fue reemplazada por la arquitectura de Harvard.

Arquitectura de Harvard

  1. El nombre se originó en “Harvard Mark I”, una computadora antigua basada en retransmisión, que almacenaba instrucciones en cinta perforada (24 bits de ancho) y datos en contadores electromecánicos.
  2. La computadora tiene dos memorias separadas para almacenar datos y programas.
  3. Dos conjuntos de buses de dirección / datos entre la CPU y la memoria.
  4. El procesador puede completar una instrucción en un ciclo si se implementan estrategias de canalización apropiadas.
  5. En la primera etapa de la canalización, la instrucción a ejecutar se puede tomar del programa. En la segunda etapa de la tubería, los datos se toman de la memoria de datos utilizando la instrucción o dirección decodificada.
  6. La mayoría de las arquitecturas informáticas modernas se basan en la arquitectura de Harvard, pero el número de etapas en la tubería varía de un sistema a otro.

Diferencias:

La arquitectura de Harvard tiene buses de datos e instrucciones separados, lo que permite que las transferencias se realicen simultáneamente en ambos buses. Una arquitectura de Von Neumann tiene solo un bus que se usa tanto para transferencias de datos como para captación de instrucciones, y por lo tanto, las transferencias de datos y las captaciones de instrucciones deben programarse; no se pueden realizar al mismo tiempo.

Es posible tener dos sistemas de memoria separados para una arquitectura de Harvard . Mientras los datos y las instrucciones se puedan ingresar al mismo tiempo, no importa si provienen de un caché o una memoria. Pero hay problemas con esto. Los compiladores generalmente incrustan datos (agrupaciones literales) dentro del código, y a menudo también es necesario poder escribir en el espacio de la memoria de instrucciones, por ejemplo, en el caso del código auto modificable o, si se usa un depurador, para configurar el software puntos de interrupción en la memoria. Si hay dos sistemas de memoria completamente separados y aislados, esto no es posible. Debe haber algún tipo de puente entre los sistemas de memoria para permitir esto.

Usar un sistema de memoria simple y unificado junto con una arquitectura de Harvard es altamente ineficiente. A menos que sea posible alimentar datos en ambos buses al mismo tiempo, podría ser mejor usar un procesador de arquitectura von Neumann.

Uso de cachés:

A velocidades de reloj más altas, los cachés son útiles ya que la velocidad de la memoria es proporcionalmente más lenta. Las arquitecturas de Harvard tienden a estar dirigidas a sistemas de mayor rendimiento, por lo que los cachés casi siempre se usan en dichos sistemas.

Las arquitecturas de Von Neumann generalmente tienen una sola caché unificada, que almacena tanto instrucciones como datos. La proporción de cada uno en el caché es variable, lo que puede ser algo bueno. En principio, sería posible tener instrucciones separadas y cachés de datos, almacenando datos e instrucciones por separado. Esto probablemente no sería muy útil, ya que solo sería posible acceder a un caché a la vez.

Los cachés para arquitecturas de Harvard son muy útiles. Tal sistema tendría cachés separados para cada autobús. Intentar usar un caché compartido en una arquitectura de Harvard sería muy ineficiente ya que solo se puede alimentar un bus a la vez. Tener dos cachés significa que es posible alimentar ambos autobuses simultáneamente … exactamente lo que es necesario para una arquitectura de Harvard.

Esto también permite tener un sistema de memoria unificado muy simple, que utiliza el mismo espacio de direcciones para las instrucciones y los datos. Esto evita el problema de los grupos literales y el código de auto modificación. Sin embargo, lo que sí significa es que, al comenzar con cachés vacías, es necesario obtener instrucciones y datos del sistema de memoria único, al mismo tiempo. Obviamente, se necesitan dos accesos a la memoria, por lo tanto, antes de que el núcleo tenga todos los datos necesarios. Este rendimiento no será mejor que una arquitectura von Neumann. Sin embargo, a medida que se llenan los cachés, es mucho más probable que la instrucción o el valor de los datos ya se hayan almacenado en caché, por lo que solo uno de los dos debe recuperarse de la memoria. El otro se puede suministrar directamente desde el caché sin demora adicional. El mejor rendimiento se logra cuando las cachés proporcionan instrucciones y datos, sin necesidad de acceder a la memoria externa.

Este es el compromiso más sensato y la arquitectura utilizada por ciertos núcleos de procesador de Harvard. Dos sistemas de memoria separados pueden funcionar mejor, pero serían difíciles de implementar.

“Arquitectura Harvard modificada [1]” no es un diseño único sino un término general.

La arquitectura de Harvard puede modificarse de muchas maneras con el propósito de recuperar cierta flexibilidad de la arquitectura de von Neumann [2].

Estas modificaciones pueden hacer que el resultado sea indistinguible externamente de una arquitectura von Neumann. En ese punto, el término “arquitectura modificada de Harvard” solo tiene sentido cuando se describe la historia evolutiva del diseño, no sus propiedades observables externamente.

Notas al pie

[1] Arquitectura de Harvard modificada – Wikipedia

[2] Arquitectura de von Neumann – Wikipedia

La verdadera diferencia no está en cómo funcionan, sino en cómo obtienen sus instrucciones y transportan sus datos. La variante de Harvard simplemente significa que sus datos no van y vienen a través de las mismas vías que sus instrucciones (es decir, el programa). De lo contrario, ambos funcionan básicamente de la misma manera.

Puede pensar en términos de una máquina VN que recibe una instrucción, luego algunos datos a lo largo del mismo cable. Una máquina HA obtiene las instrucciones a lo largo de un cable y los datos a lo largo de otro. Efectivamente, permite algunas optimizaciones, que en algunos sistemas en estos días se usan de hecho mientras todavía se conocen como máquinas VN. Aunque ya no es una gran ayuda, el almacenamiento en caché y la canalización en realidad tienen más ganancias de rendimiento.

Clásicamente, la arquitectura von Neumann (a veces llamada Princeton) está asociada con el uso de una única ruta para acceder a una memoria principal que contiene tanto instrucciones como datos. La arquitectura de Harvard se asocia con tener memorias separadas y rutas de acceso para instrucciones y datos.

Por supuesto, hay muchas formas intermedias de organizar la memoria. Por ejemplo, la mayoría de los procesadores modernos tienen memorias caché separadas para instrucciones y datos, pero ambas memorias caché están esencialmente filtrando solicitudes a una única memoria principal que contiene tanto instrucciones como datos.

Diferencia entre la arquitectura de Harvard y la arquitectura de Von Neumann

El artículo da una descripción punto a punto y la diferenciación entre los dos.

Pero aún así, la principal diferencia entre los dos es

  1. La arquitectura de Harvard tiene vías físicamente separadas para instrucciones y datos.
  2. La arquitectura de von Neumann utiliza las mismas vías físicas para las instrucciones y los datos.

Por favor, google su pregunta!