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 (2014), 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.
![harv.png](https://static.wixstatic.com/media/b9e9b2_7c129ae6963c4d61bb70aaf35009e1f2.png/v1/fill/w_800,h_509,al_c,q_90,enc_auto/b9e9b2_7c129ae6963c4d61bb70aaf35009e1f2.png)
Usos modernos de la arquitectura Harvard
La principal ventaja de la arquitectura Harvard pura — acceso simultáneo a más de una memoria del sistema—se ha reducido por procesadores Harvard modificados utilizando sistemas de caché de CPU modernos. Las máquinas de arquitectura Harvard relativamente puras utilizan principalmente en aplicaciones cuyas compensaciones, como los costes y el ahorro de energía de cachés derivadas de la omisión de caché, superan a las sanciones de programación desde ofreciendo distintos espacios de código hasta espacios de dirección de datos.
En general, los procesadores de señal digital (DSPs) ejecutan pequeños algoritmos altamente optimizados de procesamiento de audio o vídeo. Evitan cachés porque su comportamiento debe ser extremadamente reproducible. Las dificultades de lidiar con múltiples espacios de direcciones son una preocupación secundaria a la velocidad de ejecución. En consecuencia, algunos DSPs cuentan con múltiples memorias de datos en distintos espacios de direcciones para facilitar tanto el procesamiento SIMD como el VLIW. A modo de ejemplo, los procesadores Texas Instruments TMS320 C55x, cuentan con varios buses de datos en paralelo (dos de escritura, tres de lectura) y un bus de instrucciones.
Los microcontroladores se caracterizan por tener pequeñas cantidades de programa (memoria flash) y memoria de datos (SRAM), sin cache, y aprovechan la arquitectura de Harvard para acelerar el procesamiento de la instrucción simultánea y el acceso a datos. El almacenamiento separado significa que el programa y memorias de datos pueden presentar diferentes anchos de bit, por ejemplo, utilizando instrucciones de 16 bits de ancho y los datos de ancho de 8 bits. También significa que la instrucción de captación previa puede llevarse a cabo en paralelo con otras actividades. Entre los ejemplos se incluyen el AVR de Atmel Corp y la PIC de Microchip Technology, Inc..
Incluso en estos casos, es común emplear instrucciones especiales con el fin de acceder a la memoria del programa como si fueran tablas de datos de solo lectura, o para la reprogramarla; esos procesadores son de arquitectura Harvard modificada.