Która jest lepsza?
Każda architektura ma swoje zalety: Wszystkie inne są równe, model Harvarda ma przewagę w wydajności. Model Von Neumanna jest bardziej elastyczny.
Nowoczesne hybrydy
W dzisiejszych czasach większość komputerów ogólnego przeznaczenia (PC, Mac, itp.) to konstrukcje hybrydowe, które dają to, co najlepsze z obu architektur. Głęboko w CPU działają na modelu Harvard, używając oddzielnych pamięci podręcznych dla instrukcji i danych, aby zmaksymalizować wydajność. Ale cache instrukcji i danych są ładowane automatycznie ze wspólnej przestrzeni pamięci. Z perspektywy programowania komputery te wydają się być czystymi maszynami Von Neumanna z wieloma gigabajtami wirtualnej pamięci.
Mikrokontrolery
Mikrokontrolery, takie jak te, które zasilają Arduino, są przeznaczone do zastosowań wbudowanych. W przeciwieństwie do komputerów ogólnego przeznaczenia, procesor wbudowany ma zazwyczaj dobrze zdefiniowane zadanie, które musi wykonać niezawodnie i wydajnie – i przy minimalnych kosztach, projekty mikrokontrolerów są raczej spartańskie. Rezygnują z luksusów wielowarstwowego buforowania i systemów pamięci wirtualnej opartych na dyskach i trzymają się tego, co jest niezbędne do wykonania zadania.
Model harwardzki okazuje się być dobrym wyborem dla aplikacji wbudowanych, a Atmega 328 używana w Arduino UNO używa stosunkowo czystej architektury harwardzkiej. Programy są przechowywane w pamięci Flash, a dane w pamięci SRAM.
W przeważającej części, kompilator i systemy run-time dbają o zarządzanie tym dla Ciebie, ale kiedy rzeczy zaczynają się napinać, pomaga to być świadomym tego, jak rzeczy działają pod maską. A na tych malutkich maszynach wszystko zaczyna się robić dużo szybciej!
Zupełnie inna skala
Największą różnicą między tymi mikrokontrolerami a komputerem ogólnego przeznaczenia jest sama ilość dostępnej pamięci. Arduino UNO ma tylko 32K bajtów pamięci Flash i 2K bajtów pamięci SRAM. To jest ponad 100 000 razy MNIEJ pamięci fizycznej niż w low-end PC! I to nawet nie licząc stacji dysków!
.