¿Alguien puede explicar la arquitectura de Von Neumann?

Estoy emocionado, esta es la primera vez que respondo. Aquí va nada.

El arco de Von Neumann, es un diseño de sistema informático donde existen esencialmente tres entidades diferentes, una unidad de procesamiento, una unidad de E / S y una unidad de almacenamiento. Las unidades están conectadas a través de autobuses.

La unidad de procesamiento se puede dividir en un conjunto de subunidades, la ALU, la unidad de control de procesamiento y el contador del programa. La ALU calcula la lógica aritmética necesaria para ejecutar programas (sumar y restar a registros, etc.) Para ser simple, la unidad de control simplemente controla el flujo de datos a través del procesador. Podría llamarse el cerebro del procesador si lo desea. El programa esencialmente apunta a cuando está en la memoria de instrucciones, realiza un seguimiento de qué instrucción está ejecutando en ese momento e incrementa cuando termina.

La unidad de E / S abarca esencialmente todas las E / S que la computadora podría hacer (imprimir en un monitor, en papel, entradas desde un mouse o teclado, etc.)

La unidad de almacenamiento almacena todo lo que la computadora necesitaría almacenar y recuperar. Esto incluye almacenamiento en disco duro local, almacenamiento en caché y ram. Existen argumentos sobre si la memoria de instrucciones debe incluirse aquí o en la unidad de procesamiento. La mayoría de las personas lo incluyen allí (la arquitectura de Harvard resuelve esto al hacer que la instrucción y la memoria de datos sean sus propias unidades).

La arquitectura de Von Neumann es un modelo abstracto para la arquitectura de computadoras: supone que la ejecución funciona por

  • decodificando una instrucción
  • conseguir los operandos
  • calcular el resultado
  • escribir el resultado de nuevo en la memoria
  • repetir…

Este modelo parece muy lógico y es muy fácil de programar. Sin embargo, no es cómo funciona el hardware, y cada vez más necesitamos capa tras capa de magia para que el hardware parezca comportarse de esa manera. Por ejemplo, las CPU modernas tienen múltiples instrucciones al mismo tiempo, en unidades aritméticas independientes o en la tubería de instrucciones generales. La siguiente instrucción no se inicia cuando finaliza la última, no, se realiza de forma especulativa, superponiéndose con la actual, y si es necesario, el procesador dará marcha atrás en la decisión de iniciarla.

La memoria plana del modelo de Von Neumann también es una ficción. Era cierto hace 25 años (creo que el Pentium II fue el último procesador donde la memoria podía seguir el ritmo del procesador) pero ya no: la memoria es lenta, por lo que necesita cosas como cachés y TLB para almacenar datos más cerca del procesador que puede ser necesario más tarde, o captar secuencias para recuperar datos especulativamente.

Otra cosa incorrecta con el modelo de “flujo de instrucciones” es que un algoritmo a menudo tiene paralelismo intrínseco. Como acabo de señalar, el procesador también tiene paralelismo. Por lo tanto, se vuelve insostenible tener un modelo de instrucción sin paralelismo, donde necesitamos que el compilador descubra dónde fue el paralelismo que nuestro conjunto de instrucciones no podía expresar.

(Nota: otras personas parecen centrarse más en el aspecto de “programa almacenado” de la arquitectura de Von Neumann. Es cierto, eso es. Supongo que es el programador en mí el que está más interesado en la API que ofrece el VNA que su realización de hardware. )

La “gran cosa” para la arquitectura de Von Neumann [VN] es que el programa y los datos se almacenan en el mismo sistema de memoria de la misma manera. Esto permite que los programas “carguen” otros programas, programas para crear otros programas (compiladores y, desafortunadamente, virii) y código auto modificable. Aunque técnicamente es VN, las consolas de juegos que usan cartuchos ROM están más cerca del modelo anterior de Harvard, porque el código del programa no puede (en su mayor parte) escribir sobre sí mismo. Pueden poner código de auto-modificación en su espacio RAM (creado por el programa en la ROM), como cualquier otra computadora VN, pero rara vez se hace. Si una máquina Harvard compila código, no tendría la capacidad de ejecutarlo sin intervención externa: moverlo del espacio de datos al espacio de instrucciones.

El modelo informático von Neumann

  • Los sistemas informáticos de Von Neumann contienen tres componentes principales: la unidad central de procesamiento (CPU), la memoria y los dispositivos de entrada / salida (E / S).
  • Estos tres componentes están conectados entre sí mediante el bus del sistema .
  • Los elementos más destacados dentro de la CPU son los registros: pueden ser manipulados directamente por un programa de computadora.

El siguiente diagrama de bloques muestra una relación importante entre los componentes de la CPU:

Componentes del modelo de Von Neumann

  1. Memoria : almacenamiento de información (datos / programa)
  2. Unidad de Procesamiento : Computación / Procesamiento de Información
  3. Entrada : Medios de introducir información en la computadora. por ejemplo, teclado, mouse
  4. Salida : Medios para obtener información de la computadora. por ejemplo, impresora, monitor
  5. Unidad de control : se asegura de que todas las otras partes realicen sus tareas correctamente y en el momento correcto

La máquina von Neumann:

La arquitectura de Von Neumann, es un diseño de sistema informático donde hay esencialmente tres entidades diferentes, una unidad de procesamiento, una unidad de E / S y una unidad de almacenamiento. Y las unidades están conectadas a través de autobuses.