Ce este Arhitectura Harvard?
Arhitectura Harvard foloseste memorii separate pentru date si instructiuni, fiecare cu propriul bus. Asta permite procesorului sa citeasca o instructiune si sa acceseze date in acelasi ciclu de ceas.
vs Arhitectura von Neumann
| Caracteristica | von Neumann | Harvard | |---|---|---| | Memorie | Unica (date + instructiuni) | Separata | | Bus | Unul | Doua (sau mai multi) | | Performanta | Limitata de bottleneck | Mai rapida | | Complexitate | Simpla | Mai complexa | | Folosita in | PC-uri, servere | Microcontrolere, DSP-uri |
Avantaje
- Acces paralel — CPU poate citi o instructiune si scrie date simultan
- Securitate — instructiunile nu pot fi modificate accidental ca date
- Predictibilitate — timpii de acces sunt mai deterministi
Implementari hibride
Procesoarele moderne sunt hibride:
- Cache L1: Harvard (date si instructiuni separate) pentru viteza maxima
- Cache L2/L3 si RAM: von Neumann (unificate) pentru simplitate
Exemple: ARM Cortex, Intel Core, RISC-V — toate folosesc cache L1 Harvard.
Arhitectura Harvard modificată (modernă)
Procesoarele moderne nu sunt nici pur Harvard, nici pur von Neumann. Folosesc o arhitectură Harvard modificată:
┌──────────────────┐
│ CPU Core │
└──┬───────┬───────┘
│ │
┌─────┘ └─────┐
▼ ▼
┌──────────┐ ┌──────────┐
│ L1 Data │ │L1 Instruc│
│ Cache │ │ Cache │
└────┬─────┘ └────┬─────┘
│ │
└──────┬──────────┘
▼
┌──────────────┐
│ L2 Cache │ ← Unificat (von Neumann)
│ (date+inst) │
└──────┬───────┘
▼
┌──────────────┐
│ RAM │ ← Unificat (von Neumann)
└──────────────┘
De ce această abordare?
- L1 separat → procesorul poate citi instrucțiuni și accesa date simultan, eliminând bottleneck-ul
- L2/L3 unificat → flexibilitate: memoria nefolosită pentru date poate fi folosită pentru instrucțiuni și viceversa
- Separarea e doar la nivel de cache, nu și la nivel de memorie principală
Implicații pentru performanță
Mărimea cache-urilor L1 influențează direct performanța:
| Arhitectură | L1 Data | L1 Instrucții | Impact | |---|---|---|---| | Intel Core (modern) | 32KB | 32KB | Echilibrat, general purpose | | ARM Cortex-A78 | 64KB | 64KB | Aplicații mobile, eficiență | | RISC-V (BOOM) | 16KB | 16KB | Cercetare, configurabil | | AMD Zen 4 | 32KB | 32KB | Similar Intel |
Securitatea în arhitectura Harvard
Un avantaj mai puțin discutat: separarea datelor de instrucțiuni la nivel hardware previne clase întregi de atacuri:
- Code injection — nu poți executa date ca și cod (executabile moderne au NX bits, dar Harvard e mai strict)
- Self-modifying code — imposibil în formă pură (deși în forma modificată, poți scrie în L1 data și invalida L1 instrucții)
Microcontrolerele (ARM Cortex-M, PIC, AVR) folosesc Harvard pur exact din acest motiv: predictibilitate și securitate.