viernes, 23 de marzo de 2018

Arquitectura Von Neumann

¿Qué es 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.

Este describe una arquitectura de diseño para un computador digital electrónico con partes que constan de una unidad de procesamiento que contiene una unidad aritmético lógica y registros del procesador, una unidad de control que contiene un registro de instrucciones y un contador de programa, una memoria para almacenar tanto datos como instrucciones, almacenamiento masivo externo, y mecanismos de entrada y salida. El significado ha evolucionado hasta ser cualquier computador de programa almacenado en el cual no pueden ocurrir una extracción de instrucción y una operación de datos al mismo tiempo, ya que comparten un bus en común. Esto se conoce como el cuello de botella Von Neumann y muchas veces limita el rendimiento del sistema.
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 uno 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 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.
Una máquina de Von Neumann tenia 5 partes básicas: La memoria, la unidad Aritmética lógica, la unidad de control del programa y los equipos de entrada y salida. La memoria constaba de 4096 palabras, cada una con 40 bits (0 o 1). Cada palabra podía contener 2 instrucciones de 20 bits o un número entero de 39 bits y su signo. Las instrucciones tenían 8 bits dedicados a señalar el tiempo de la misma y 12 bits para especificar alguna de las 4096 palabras de la memoria.
Dentro de la unidad aritmética/lógica, el antecedente directo actual CPU, había un registro interno especial de 40 bits llamado acumulador. Una instrucción típica era sumar una palabra de la memoria al acumulador o almacenar este en la memoria.
La máquina no manejaba la aritmética de punto flotante, porque Von Neumann pensaba que cualquier matemático competente debería ser capaz de llevar la cuenta del punto decimal (en este caso del punto binario), mentalmente.
Hay algunas desventajas para el diseño de Von Neumann. Aparte del cuello de botella de Von Neumann 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 de otras formas de control de acceso pueden proteger tanto de modificaciones accidentales como de programas maliciosos.
Definición formal
Las computadoras son máquinas de arquitectura Von Neumann cuando:
  • Tanto los programas como los datos se almacenan en una memoria en común. Esto hace posible la ejecución de comandos de la misma forma que los datos.
  • Cada celda de memoria de la máquina se identifica con un número único, llamado dirección.
  • Las diferentes partes de la información (los comandos y los datos) tienen diferente modos de uso, pero la estructura no se representa en memoria de manera codificada.
  • Cada programa se ejecuta de forma secuencial que, en el caso de que no haya instrucciones especiales, comienza con la primera instrucción. Para cambiar esta secuencia se utiliza el comando de control de transferencia.
Estructura clásica de las máquinas Von Neumann
Una máquina Von Neumann, al igual que prácticamente todos los computadores modernos de uso general, consta de cuatro componentes principales:
  1. Dispositivo de operación (DO), que ejecuta instrucciones de un conjunto especificado, llamado sistema (conjunto) de instrucciones, sobre porciones de información almacenada, separada de la memoria del dispositivo operativo (aunque en la arquitectura moderna el dispositivo operativo consume más memoria “generalmente del banco de registros”), en la que los operandos son almacenados directamente en el proceso de cálculo, en un tiempo relativamente corto.
  2. Unidad de control (UC), que organiza la implementación consistente de algoritmos de decodificación de instrucciones que provienen de la memoria del dispositivo, responde a situaciones de emergencia y realiza funciones de dirección general de todos los nodos de computación. Por lo general, el DO y la UC conforman una estructura llamada CPU. Cabe señalar que el requisito es consistente, el orden de la memoria (el orden del cambio de dirección en el contador de programa) es fundamental a la hora de la ejecución de la instrucción. Por lo general, la arquitectura que no se adhiere a este principio no se considera Von Neumann.
  3. Memoria del dispositivo: un conjunto de celdas con identificadores únicos (direcciones), que contienen instrucciones y datos.
  4. Dispositivo de E/S (DES): permite la comunicación con el mundo exterior de los computadores, son otros dispositivos que reciben los resultados y que le transmiten la información al computador para su procesamiento.
Cuello de botella de Von Neumann
El canal de transmisión de los datos compartido entre CPU y memoria genera un cuello de botella de Von Neumann, un rendimiento limitado (tasa de transferencia de datos) entre la CPU y la memoria en comparación con la cantidad de memoria. En la mayoría de computadoras modernas, la velocidad de comunicación entre la memoria y la CPU es más baja que la velocidad a la que puede trabajar esta última, reduciendo el rendimiento del procesador y limitando seriamente la velocidad de proceso eficaz, sobre todo cuando se necesitan procesar grandes cantidades de datos. La CPU se ve forzada a esperar continuamente a que lleguen los datos necesarios desde o hacia la memoria.
Puesto a que la velocidad de procesamiento y la cantidad de memoria han aumentado mucho más rápidamente que el rendimiento de transferencia entre ellos, el cuello de botella ha vuelto más que un problema, un problema cuya gravedad aumenta con cada nueva generación de CPU.
El problema de rendimiento puede ser aliviado (en parte) utilizando diversos mecanismos. Ofreciendo una memoria caché entre la CPU y la memoria principal.
Proporcionando caches separadas o vías de acceso independientes para datos e instrucciones (la llamada arquitectura Harvard modificada), utilizando algoritmos y lógica de predicción de saltos y proporcionando una limitada pila de CPU u otro en el chip de memoria reutilizable para reducir el acceso a memoria, son cuatro de las maneras que se dispone para aumentar el rendimiento. El problema también se puede eludirse, en cierta medida, usando computación paralela, utilizando por ejemplo la arquitectura de acceso a memoria no uniforme (NUMA), este enfoque es comúnmente empleado por las supercomputadoras.

No hay comentarios:

Publicar un comentario