Arquitectura Harvard

Arquitectura Harvard.

La arquitectura Harvard es una arquitectura de computadora con pistas de almacenamiento y de señal físicamente separadas para las instrucciones y para los datos. El término proviene de la computadora Harvard Mark I basada en relés, que almacenaba las instrucciones sobre cintas perforadas (de 24 bits de ancho) y los datos en interruptores electromecánicos. Estas primeras máquinas tenían almacenamiento de datos totalmente contenido dentro la unidad central de proceso, y no proporcionaban acceso al almacenamiento de instrucciones como datos. Los programas necesitaban ser cargados por un operador; el procesador no podría arrancar por sí mismo.

Hoy en día (2017), la mayoría de los procesadores implementan dichas vías de señales separadas por motivos de rendimiento, pero en realidad implementan una arquitectura Harvard modificada, para que puedan soportar tareas tales como la carga de un programa desde una unidad de disco como datos para su posterior ejecución.

Detalles de memoria

En la arquitectura Harvard, no hay necesidad de hacer que las dos memorias compartan características. En particular, pueden diferir la anchura de palabra, el momento, la tecnología de implementación y la estructura de dirección de memoria. En algunos sistemas, se pueden almacenar instrucciones en memoria de solo lectura mientras que, en general, la memoria de datos requiere memoria de lectura-escritura. En algunos sistemas, hay mucha más memoria de instrucciones que memoria de datos así que las direcciones de instrucción son más anchas que las direcciones de datos.

Contraste con arquitecturas von Neumann

Bajo arquitectura de von Neumann pura, la CPU puede estar bien leyendo una instrucción o leyendo/escribiendo datos desde/hacia la memoria pero ambos procesos no pueden ocurrir al mismo tiempo, ya que las instrucciones y datos usan el mismo sistema de buses. En una computadora que utiliza la arquitectura Harvard, la CPU puede tanto leer una instrucción como realizar un acceso a la memoria de datos al mismo tiempo, incluso sin una memoria caché. En consecuencia, una arquitectura de computadores Harvard puede ser más rápida para un circuito complejo, debido a que la instrucción obtiene acceso a datos y no compite por una única vía de memoria.

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

En 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 la instrucción y los datos, al mismo tiempo que deja que la CPU acceda simultáneamente a dos (o más) memorias de buses. La modificación más común incluye cachés de instrucciones y datos independientes, respaldados por un espacio de direcciones en común. Si bien la CPU ejecuta desde la memoria caché, también actúa como una máquina de Harvard pura. Cuando se accede a la memoria de respaldo, actúa como una máquina de von Neumann pura (donde el código puede moverse alrededor como datos, que es una técnica poderosa). Esta modificación se ha generalizado en modernos procesadores, tales como la arquitectura ARM y los procesadores x86. A veces se llama vagamente arquitectura Harvard, con vistas al hecho de que en realidad está "modificada".

Otra modificación proporciona un camino entre la memoria de instrucciones (como ROM o flash) y la CPU para permitir que las palabras de la memoria de instrucciones sean tratados como datos de solo lectura. Esta técnica es utilizada en algunos micro controladores, incluyendo el Atmel AVR. Esto permite datos constantes, tales como cadenas de texto o tablas de funciones, que puede acceder sin necesidad de ser previamente copiadas en datos de memoria, preservando memoria de datos escasa (y hambrienta de poder) de lectura / escritura de variables. Las instrucciones especiales de lenguaje de máquina se proporcionan para leer datos desde la memoria de instrucciones. (Esto es diferente a las instrucciones que a sí mismos embebiendo datos constantes, aunque para las constantes individuales de los dos mecanismos pueden sustituir unos por otros.)

Other Languages