stringtranslate.com

Arquitectura de Harvard

Arquitectura de Harvard

La arquitectura Harvard es una arquitectura informática con rutas de señal y almacenamiento independientes para instrucciones y datos . A menudo se contrasta con la arquitectura von Neumann , donde las instrucciones y los datos del programa comparten la misma memoria y rutas.

A menudo se afirma que el término se originó en la computadora basada en relés Harvard Mark I , que almacenaba instrucciones en cinta perforada (24 bits de ancho) y datos en contadores electromecánicos . Estas primeras máquinas tenían almacenamiento de datos completamente contenido dentro de la unidad central de procesamiento y no proporcionaban acceso al almacenamiento de instrucciones como datos. Los programas debían ser cargados por un operador; el procesador no pudo inicializarse . Sin embargo, en el único artículo publicado y revisado por pares sobre el tema, The Myth of the Harvard Architecture publicado en IEEE Annals of the History of Computing [1]  , el autor demuestra que:

Los procesadores modernos parecen al usuario sistemas con arquitecturas von Neumann, con el código del programa almacenado en la misma memoria principal que los datos. Por razones de rendimiento, internamente y en gran medida invisibles para el usuario, la mayoría de los diseños tienen cachés de procesador separados para las instrucciones y los datos, con rutas de acceso al procesador separadas para cada uno. Ésta es una forma de lo que se conoce como arquitectura Harvard modificada .

La arquitectura de Harvard está histórica y tradicionalmente dividida en dos espacios de direcciones, pero también se hace tener tres, es decir, dos adicionales (y a todos se accede en cada ciclo), [2] aunque es poco común.

Detalles de la memoria

En una arquitectura de Harvard, no es necesario que las dos memorias compartan características. En particular, el ancho de la palabra , el tiempo, la tecnología de implementación y la estructura de la dirección de memoria pueden diferir. En algunos sistemas, las instrucciones para tareas preprogramadas se pueden almacenar en una memoria de solo lectura , mientras que la memoria de datos generalmente requiere memoria de lectura y escritura . En algunos sistemas, hay mucha más memoria de instrucciones que de datos, por lo que las direcciones de instrucciones son más amplias que las de datos.

Contraste con las arquitecturas de von Neumann

En un sistema con una arquitectura pura de von Neumann , las instrucciones y los datos se almacenan en la misma memoria, por lo que las instrucciones se recuperan a través de la misma ruta de datos utilizada para recuperar los datos. Esto significa que una CPU no puede leer simultáneamente una instrucción y leer o escribir datos desde o hacia la memoria. En una computadora que utiliza la arquitectura Harvard, la CPU puede leer una instrucción y realizar un acceso a la memoria de datos al mismo tiempo, [3] incluso sin un caché . Por lo tanto, una computadora con arquitectura Harvard puede ser más rápida para una complejidad de circuito dada porque la búsqueda de instrucciones y el acceso a datos no compiten por una única vía de memoria.

Además, una máquina de arquitectura Harvard tiene códigos y espacios de direcciones de datos distintos: la dirección de instrucción cero no es lo mismo que la dirección de datos cero. La dirección de instrucción cero podría identificar un valor de veinticuatro bits, mientras que la dirección de datos cero podría indicar un byte de ocho bits que no forma parte de ese valor de veinticuatro bits.

Contraste con la arquitectura modificada de Harvard

Una máquina con arquitectura Harvard modificada es muy parecida a una máquina con arquitectura Harvard, pero relaja la estricta separación entre instrucción y datos y al mismo tiempo permite que la CPU acceda simultáneamente a dos (o más) buses de memoria. La modificación más común incluye cachés de datos e instrucciones separados respaldados por un espacio de direcciones común. Si bien la CPU se ejecuta desde la memoria caché, actúa como una máquina Harvard pura. Al acceder a la memoria de respaldo, actúa como una máquina von Neumann (donde el código se puede mover como datos, lo cual es una técnica poderosa). Esta modificación está muy extendida en los procesadores modernos, como la arquitectura ARM , Power ISA y los procesadores x86 . A veces se la llama vagamente arquitectura de Harvard, pasando por alto el hecho de que en realidad está "modificada".

Otra modificación proporciona una vía entre la memoria de instrucciones (como ROM o memoria flash ) y la CPU para permitir que las palabras de la memoria de instrucciones se traten como datos de sólo lectura. Esta técnica se utiliza en algunos microcontroladores, incluido el Atmel AVR . Esto permite acceder a datos constantes, como cadenas de texto o tablas de funciones , sin tener que copiarlos primero en la memoria de datos, preservando la escasa (y consumidora de energía) memoria de datos para variables de lectura/escritura. Se proporcionan instrucciones especiales en lenguaje de máquina para leer datos de la memoria de instrucciones, o se puede acceder a la memoria de instrucciones mediante una interfaz periférica. [a] (Esto es distinto de las instrucciones que incorporan datos constantes, aunque para constantes individuales los dos mecanismos pueden sustituirse entre sí).

Velocidad

En los últimos años, la velocidad de la CPU ha aumentado muchas veces en comparación con la velocidad de acceso a la memoria principal. Es necesario tener cuidado de reducir el número de veces que se accede a la memoria principal para mantener el rendimiento. Si, por ejemplo, cada instrucción ejecutada en la CPU requiere acceso a la memoria, la computadora no gana nada por aumentar la velocidad de la CPU, un problema conocido como estar limitado por la memoria .

Es posible crear una memoria extremadamente rápida, pero esto sólo es práctico para pequeñas cantidades de memoria por razones de costo, energía y enrutamiento de señales. La solución es proporcionar una pequeña cantidad de memoria muy rápida conocida como caché de CPU que contiene los datos a los que se accedió recientemente. Mientras los datos que la CPU necesita estén en la memoria caché, el rendimiento es mucho mayor que cuando la CPU tiene que obtener los datos de la memoria principal. Por otro lado, sin embargo, es posible que todavía esté limitado a almacenar programas o datos repetitivos y todavía tenga una limitación de tamaño de almacenamiento y otros problemas potenciales asociados con ello. [b]

Diseño interno versus externo

Los diseños modernos de chips de CPU de alto rendimiento incorporan aspectos de la arquitectura Harvard y von Neumann. En particular, la versión de "caché dividida" de la arquitectura Harvard modificada es muy común. La memoria caché de la CPU se divide en una caché de instrucciones y una caché de datos. La arquitectura Harvard se utiliza cuando la CPU accede al caché. Sin embargo, en el caso de una pérdida de caché, los datos se recuperan de la memoria principal, que no está dividida formalmente en secciones separadas de instrucciones y datos, aunque bien puede tener controladores de memoria separados utilizados para el acceso simultáneo a RAM, ROM y (NOR). ) memoria flash.

Por lo tanto, si bien una arquitectura von Neumann es visible en algunos contextos, como cuando los datos y el código pasan por el mismo controlador de memoria, la implementación del hardware obtiene las eficiencias de la arquitectura Harvard para los accesos a la caché y al menos algunos accesos a la memoria principal.

Además, las CPU suelen tener búferes de escritura que les permiten continuar después de escribir en regiones no almacenadas en caché. La naturaleza von Neumann de la memoria es entonces visible cuando la CPU escribe instrucciones como datos y el software debe garantizar que los cachés (datos e instrucciones) y el búfer de escritura estén sincronizados antes de intentar ejecutar esas instrucciones recién escritas.

Usos modernos de la arquitectura de Harvard.

La principal ventaja de la arquitectura pura de Harvard (acceso simultáneo a más de un sistema de memoria) se ha visto reducida por procesadores Harvard modificados que utilizan modernos sistemas de caché de CPU . Las máquinas de arquitectura Harvard relativamente pura se utilizan principalmente en aplicaciones donde las compensaciones, como el ahorro de costos y energía al omitir cachés, superan las penalizaciones de programación por presentar códigos distintos y espacios de direcciones de datos.

Incluso en estos casos, es común emplear instrucciones especiales para acceder a la memoria del programa como si se tratara de datos para tablas de sólo lectura o para reprogramación; esos procesadores son procesadores de arquitectura Harvard modificados .

Notas

  1. ^ Las líneas IAP de microcontroladores compatibles con 8051 de STC tienen memoria Flash de doble puerto, con uno de los dos puertos conectado al bus de instrucciones del núcleo del procesador y el otro puerto disponible en la región de registro de función especial.
  2. ^ Como en un caso bien descrito de Intel 80486 . [4] : 26–34  [5]

Referencias

  1. ^ Pawson, Richard (30 de septiembre de 2022). "El mito de la arquitectura de Harvard". Anales IEEE de la historia de la informática . 44 (3): 59–69. doi :10.1109/MAHC.2022.3175612. S2CID  252018052.
  2. ^ "Kalimba DSP: guía del usuario" (PDF) . Julio de 2006. p. 18 . Consultado el 23 de septiembre de 2022 . Esta es una arquitectura Harvard de tres bancos.
  3. ^ "386 vs. 030: el carril rápido abarrotado". Diario del Dr. Dobb , enero de 1988.
  4. ^ Marrón, John Forrest (1994). Programación de sistemas embebidos en C y Ensamblador. Nueva York: Van Nostrand Reinhold. ISBN 0-442-01817-7. OCLC  28966593.
  5. ^ "Programación de sistemas integrados: peligros de la caché de la PC". usuarios.ece.cmu.edu . Archivado desde el original el 15 de enero de 2020 . Consultado el 26 de mayo de 2022 .

enlaces externos