# Arquitectura Harvard

L'arquitectura Harvard és una arquitectura de computadors amb les vies d'emmagatzematge i de senyal físicament separats per a instruccions i dades. El terme es va originar a l'ordinador Harvard Mark I basat en relés, que emmagatzemava instruccions en cinta perforada (24 bits d'ample) i les dades als comptadors electromecànics. Aquestes primeres màquines tenien l'emmagatzematge de dades totalment contingut dins de la unitat central de processament, i no proporcionaven accés a l'emmagatzematge d'instruccions com a dades. Els programes havien de ser carregats per un operador; el processador no es podia inicialitzar ell mateix.
Avui dia, la majoria dels processadors implementen aquest tipus de vies de senyals separades per motius de rendiment, però en realitat implementen una arquitectura de Harvard modificada, pel que pot suportar tasques com carregar un programa d'emmagatzemat a disc com a dades i després executar-lo.
Originalment, el terme arquitectura Harvard feia referència a les arquitectures de computadores que utilitzaven dispositius d'emmagatzematge físicament separats per a les instruccions i per a les dades (en oposició a l'Arquitectura de von Neumann). El terme prové de la computadora Harvard Mark I, que emmagatzemava les instruccions en cintes perforades i les dades en interruptors.
Aquests ordinadors primerencs tenien un espai d'emmagatzematge de dades contingut enterament dins la unitat de procés de dades i no tenien accés a les instruccions com a dades.
En l'arquitectura Harvard no cal que ambdues memòries comparteixin característiques. En particular l'amplada de paraula, temporització, tecnologia i estructura d'adreçament poden ser diferents. En alguns sistemes les instruccions s'emmagatzemen en memòries només de lectura (ROM) i les dades en memòria RAM. La memòria d'instruccions sovint és força més gran que la memòria de dades.

## Detalls de memòria

En una arquitectura Harvard, no hi ha necessitat de fer que les dues memòries comparteixin característiques. En particular, l'amplada de paraula, el moment, la tecnologia d’implementació, i l'estructura d’adreçament de memòria poden diferir. En alguns sistemes, les instruccions es poden emmagatzemar en memòria de només lectura mentre que la memòria de dades generalment requereix memòria de lectura-escriptura. En alguns sistemes, hi ha molta més memòria d'instruccions que de dades de manera que les adreces d'instrucció són més amples que les adreces de dades.

### Contrast amb arquitectures von Neumann

Sota arquitectura von Neumann pura, la CPU pot estar llegint una instrucció o llegint les dades de lectura/escriptura de i cap a la memòria. Tots dos no poden ocórrer al mateix temps, ja que les instruccions i dades utilitzen el mateix sistema de bus. En un equip que utilitza l'arquitectura de Harvard, la CPU pot tant llegir una instrucció com realitzar un accés a la memòria de dades al mateix temps, fins i tot sense una memòria cau. Una computadora amb arquitectura Harvard, pot doncs ser més ràpida per a una complexitat circuit donada, perquè la cerca d’instrucció i l’accés a les dades i no han de competir per una única via de memòria.
A més, una màquina d'arquitectura Harvard té diferents espais d'adreces per a instruccions i dades: l'adreça de la instrucció zero no és la mateixa que l'adreça de dades zero. L'adreça d'instrucció zero podria identificar un valor de vint-i-quatre bits, mentre que l'adreça de dades zero podria indicar un byte de vuit bits que no és part del valor de vint bits.

### Contrast amb l'arquitectura Harvard modificada

Una màquina d'arquitectura Harvard modificat és molt semblant a una màquina d'arquitectura Harvard, però relaxa l'estricta separació entre instruccions i dades mentre que deixa a la CPU accedir simultàniament a dos (o més) busos. La modificació més comuna inclou memòries cau d’instruccions i dades separades recolzades per un espai d'adreces comú. Mentre que la CPU executa des de la memòria cau, actua com una màquina de Harvard pura. Quan s'accedeix a la memòria de respatller, actua com una màquina de von Neumann (on el codi es pot moure les dades, que és una tècnica molt potent). Aquesta modificació s'ha generalitzat en els processadors moderns, com ara l'arquitectura ARM i processadors x86. A vegades se l’anomena arquitectura Harvard, ignorant el fet que en realitat és "modificada".
Una altra modificació és proporcionar un camí entre la memòria d'instruccions (com memòria ROM o flash) i la CPU per permetre que les paraules de la memòria d'instruccions ser tractades com a dades de només lectura. Aquesta tècnica s'utilitza en alguns microcontroladors, incloent el Atmel AVR. Això permet que les dades constants, tal com cadenes de text o taules de funcions, ser accedides sense haver de ser copiades a la memòria de dades, preservant l'escassa (i necessitada d’energia) memòria de dades per a la lectura/escriptura de variables. Instruccions especials de llenguatge de màquina són proporcionades per a poder llegir dades de la memòria d'instruccions. (Això és diferent de les instruccions que al seu torn encasten dades constants, tot i que per a constants individuals els dos mecanismes poden substituir-se l’un a l’altre.)

## Velocitat

En els últims anys, la velocitat de les CPUs ha crescut moltes vegades en comparació amb la velocitat d'accés de la memòria principal. S'ha de tenir cura per reduir el nombre de vegades que s'accedeix a la memòria principal per tal de mantenir el rendiment. Si, per exemple, cada instrucció d'executada a la CPU requereix un accés a la memòria, l'ordinador no guanya res per la major velocitat de la CPU, un problema referit com a limitació per memòria.
És possible fer memòria extremadament ràpida, però això només és pràctic per a petites quantitats de memòria per raons de cost, de potència i de direccionalment del senyal. La solució consisteix a proporcionar una petita quantitat de memòria molt ràpida coneguda com a memòria cau de la CPU que conté les dades que s'ha accedit recentment. Mentre les dades que necessita la CPU són a la memòria cau, el rendiment és molt més gran que quan la memòria cau ha d'obtenir les dades de la memòria principal.

### Disseny extern contra disseny intern

Els dissenys de xips de CPU d'alt rendiment moderns incorporen aspectes tant d'arquitectura Harvard com von Neumann. En particular, la versió "memòria cau dividida" de l'arquitectura Harvard modificada és molt comuna. La memòria cau de la CPU es divideix en memòria cau d'instruccions i memòria cau de dades. Arquitectura Harvard és utilitzada quan la CPU accedeix a la memòria cau. En el cas d'un error de memòria cau, però, les dades són recuperades de la memòria principal, que no es divideix formalment en instruccions i dades en seccions separades, encara que bé pot tenir controladors de memòria independents utilitzats per a l'accés simultani a la memòria RAM, ROM i memòria flash (NOR).
Així, mentre que l'arquitectura de von Neumann és visible en alguns contextos, com quan les dades i el codi venen pel mateix controlador de memòria, la implementació de maquinari guanya les eficiències de l'arquitectura de Harvard per als accessos a memòria cau i almenys a alguns accessos a memòria principal.
A més, les CPU sovint tenen buffers d'escriptura que permeten a les CPU procedir després d’escriure a regions no emmagatzemades a memòria cau. La naturalesa von Neumann de la memòria és llavors visible quan les instruccions s'escriuen com a dades per la CPU i el programari ha de garantir que les memòries (dades i instruccions) i el buffer d’escriptura estan sincronitzats abans d'intentar executar aquestes instruccions acabades d’escriure.

## Usos moderns de l'arquitectura

El principal avantatge de l'arquitectura Harvard pura (accés simultani a més d'una memòria de sistema) s'ha reduït en els processadors Harvard modificats utilitzant sistemes de memòria cau de CPU modernes. Màquines d'arquitectura Harvard relativament pures s'utilitzen sobretot en aplicacions on compromisos, com l'estalvi de costos i de potència derivades de l'omissió de memòries cau, superen les dificultats de programar amb codi i dades d’espais d’adreçament diferents.
* Als processadors de senyals digitals (DSP) generalment s'executen algoritmes petits, altament optimitzats, de processament d'àudio o vídeo. Eviten memòria cau perquè el seu comportament ha de ser extremadament reproduïble. Les dificultats per fer front als múltiples espais d'adreces són una preocupació secundària a la velocitat d'execució. En conseqüència, alguns DSP compten amb múltiples memòries de dades en espais d’adreçament diferents per facilitar SIMD i processament VLIW. Els processadors de Texas Instruments TMS320 C55X, per exemple, compten amb múltiples busos de dades en paral·lel (dos d'escriptura, tres de lectura) i un bus d'instruccions.
* Els microcontroladors es caracteritzen per tenir petites quantitats de memòria de programa (memòria flash) i dades (SRAM), sense cau, i prendre avantatge de l'arquitectura Harvard per millorar la velocitat de processament en accedir a la memòria d’instruccions i de dades concurrentment. L'emmagatzematge separat significa que les memòries de programa i de dades poden presentar diferents amples de bits, per exemple mitjançant instruccions d'ample de 16 bits i dades d'ample de 8 bits. També vol dir que la cerca prèvia d’instrucció es pot realitzar en paral·lel amb altres activitats. Els exemples inclouen, el AVR per Atmel Corp i el PIC de Microchip Technology, Inc.
Fins i tot en aquests casos, és comú emprar instruccions especials per tal d’accedir a la memòria de programa com si es tractés de dades de taules de només lectura, o per a reprogramar; aquests processadors són processadors d'arquitectura Harvard modificada.

## Vegeu també

* Microarquitectura
* Arquitectura Eckert-Mauchly
* Sistema redundant

## Enllaços externs

* Harvard vs Von Neumann Arxivat 2015-06-24 a Wayback Machine. (anglès) arquitectura Harvard contra arquitectura von Neumann
* Harvard vs Von Neumann (anglès)
* ARM Information center (anglès)
* Harvard vs von Neumann Architecture (anglès)