stringtranslate.com

Arquitectura de Harvard

Arquitectura de Harvard

La arquitectura Harvard es una arquitectura informática con almacenamiento [1] y vías de señal independientes para instrucciones y datos . A menudo se la contrasta con la arquitectura de von Neumann , en la que las instrucciones y los datos del programa comparten la misma memoria y las mismas vías. Esta arquitectura se utiliza a menudo en aplicaciones de procesamiento en tiempo real o de bajo consumo. [2] [3]

El término se suele considerar como originado a partir de la computadora basada en relés Harvard Mark I [4] , que almacenaba instrucciones en cintas perforadas (de 24 bits de ancho) y datos en contadores electromecánicos . Estas primeras máquinas tenían almacenamiento de datos contenido completamente 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 podía inicializarse a sí mismo. Sin embargo, en el único artículo publicado y revisado por pares sobre el tema – El mito de la arquitectura Harvard publicado en los Anales de la historia de la computación del IEEE [5]  – el autor demuestra que:

Los procesadores modernos parecen al usuario sistemas con arquitecturas de von Neumann, en los que el código del programa se almacena 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 independientes para las instrucciones y los datos, con rutas de entrada al procesador independientes para cada uno de ellos. Esta es una forma de lo que se conoce como arquitectura Harvard modificada .

La arquitectura de Harvard se divide históricamente y tradicionalmente en dos espacios de direcciones, pero tener tres, es decir, dos adicionales (y todos accedidos en cada ciclo) también se hace [6] , aunque es poco común.

Detalles de la memoria

En una arquitectura Harvard, no es necesario que las dos memorias compartan características. En particular, el ancho de 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 una 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 anchas que las direcciones de datos.

Contraste con las arquitecturas de von Neumann

En un sistema con una arquitectura von Neumann pura , las instrucciones y los datos se almacenan en la misma memoria, por lo que las instrucciones se obtienen a través de la misma ruta de datos utilizada para obtener 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, [7] incluso sin una caché . Por lo tanto, una computadora con arquitectura Harvard puede ser más rápida para una complejidad de circuito dada porque la obtención de instrucciones y el acceso a los datos no compiten por una única ruta de memoria.

Además, una máquina con arquitectura Harvard tiene espacios de direcciones de código y 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 puede identificar un valor de veinticuatro bits, mientras que la dirección de datos cero puede indicar un byte de ocho bits que no forma parte de ese valor de veinticuatro bits.

Contraste con la arquitectura Harvard modificada

Una máquina de arquitectura Harvard modificada es muy similar a una máquina de arquitectura Harvard, pero relaja la estricta separación entre instrucciones y datos mientras 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 instrucciones y datos separados respaldados por un espacio de direcciones común. Mientras la CPU ejecuta desde la caché, actúa como una máquina Harvard pura. Cuando accede a la memoria de respaldo, actúa como una máquina de von Neumann (donde el código se puede mover como datos, lo que 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 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 la ROM o la memoria flash ) y la CPU para permitir que las palabras de la memoria de instrucciones se traten como datos de solo 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 hambrienta 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 utilizando 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 crecido muchas veces en comparación con la velocidad de acceso a la memoria principal. Se debe tener cuidado de reducir la cantidad de veces que se accede a la memoria principal para mantener el rendimiento. Si, por ejemplo, cada instrucción que se ejecuta en la CPU requiere un acceso a la memoria, la computadora no gana nada con el aumento de la velocidad de la CPU, un problema conocido como limitación de la memoria .

Es posible crear memorias extremadamente rápidas, pero esto sólo es práctico para pequeñas cantidades de memoria por razones de costo, consumo de 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 ha accedido recientemente. Mientras los datos que necesita la CPU estén en la caché, el rendimiento es mucho mayor que cuando la CPU tiene que obtener los datos de la memoria principal. Por otro lado, sin embargo, puede seguir estando limitada al almacenamiento de programas o datos repetitivos y aún tiene una limitación de tamaño de almacenamiento y otros posibles problemas asociados a ello. [b]

Diseño interno vs. diseño externo

Los diseños de chips de CPU de alto rendimiento modernos incorporan aspectos tanto de la arquitectura Harvard como de la de von Neumann. En particular, la versión de "caché dividido" 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 a la caché. Sin embargo, en caso de que falle la caché, los datos se recuperan de la memoria principal, que no está dividida formalmente en secciones de instrucciones y datos independientes, aunque puede tener controladores de memoria independientes utilizados para el acceso simultáneo a la RAM, la ROM y la memoria flash (NOR).

Por lo tanto, si bien una arquitectura de 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 de hardware gana 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 con las operaciones de escritura en regiones no almacenadas en caché. La naturaleza de von Neumann de la memoria se hace visible cuando la CPU escribe instrucciones como datos y el software debe asegurarse de 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 Harvard pura (el acceso simultáneo a más de un sistema de memoria) se ha reducido gracias a los procesadores Harvard modificados que utilizan sistemas de caché de CPU modernos . Las máquinas con arquitectura Harvard relativamente pura se utilizan principalmente en aplicaciones en las que las ventajas y desventajas, como el ahorro de costes y de energía que supone omitir las cachés, superan las desventajas de programación que supone contar con espacios de direcciones de datos y código distintos.

Incluso en estos casos, es común emplear instrucciones especiales para acceder a la memoria del programa como si fueran datos para tablas de sólo lectura, o para reprogramar; 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. [ 8] : 26–34  [9]

Referencias

  1. ^ Noergaard, Tammy (2005). Arquitectura de sistemas integrados: una guía completa para ingenieros y programadores. Newnes. ISBN 978-0-7506-7792-9.
  2. ^ Kong, JH; Ang, LM; Seng, KP (2010). Procesador AES de conjunto de instrucciones mínimo utilizando arquitectura Harvard. 2010 3.ª Conferencia internacional sobre informática y tecnología de la información. Vol. 9. págs. 65–69. doi :10.1109/ICCSIT.2010.5564522. ISBN 978-1-4244-5537-9.
  3. ^ Venkatesan, Chandran; Sulthana, M. Thabsera; Sumithra, MG; Suriya, M. (2019). Diseño de un procesador RISC de estructura Harvard de 16 bits en tecnología Cadence de 45 nm. 2019 5.ª Conferencia internacional sobre sistemas avanzados de computación y comunicación (ICACCS). págs. 173–178. doi :10.1109/ICACCS.2019.8728479. ISBN 978-1-5386-9531-9.
  4. ^ Furber, SB (19 de septiembre de 2017). Arquitectura y organización de VLSI Risc. Routledge. ISBN 978-1-351-40537-9.
  5. ^ Pawson, Richard (30 de septiembre de 2022). "El mito de la arquitectura de Harvard". IEEE Annals of the History of Computing . 44 (3): 59–69. doi :10.1109/MAHC.2022.3175612. S2CID  252018052.
  6. ^ "Kalimba DSP: Guía del usuario" (PDF) . Julio de 2006. p. 18. Consultado el 23 de septiembre de 2022. Se trata de una arquitectura Harvard de tres bancos .
  7. ^ "386 vs. 030: el carril rápido y abarrotado". Dr. Dobb's Journal , enero de 1988.
  8. ^ Brown, John Forrest (1994). Programación de sistemas embebidos en C y ensamblador. Nueva York: Van Nostrand Reinhold. ISBN 0-442-01817-7.OCLC 28966593  .
  9. ^ "Programación de sistemas integrados: peligros de la memoria caché de la PC". users.ece.cmu.edu . Archivado desde el original el 15 de enero de 2020 . Consultado el 26 de mayo de 2022 .
  10. ^ Ungerboeck, G.; Maiwald, D.; Kaeser, HP; Chevillat, PR; Beraud, JP (1985). "Arquitectura de un procesador de señal digital". IBM Journal of Research and Development . 29 (2): 132–139. doi :10.1147/rd.292.0132.
  11. ^ Hu, Yue-li; Cao, Jia-lin; Ran, Feng; Liang, Zhi-jian (2004). "Diseño de un microcontrolador de alto rendimiento". Actas de la Sexta Conferencia IEEE CPMT sobre diseño y empaquetado de microsistemas de alta densidad y análisis de fallas de componentes (HDP '04) . págs. 25–28. doi :10.1109/HPD.2004.1346667. ISBN 0-7803-8620-5.

Enlaces externos