„Harvard-architektúra” változatai közötti eltérés

[nem ellenőrzött változat][nem ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
hiányzó részek pótlása
27. sor:
 
Egy másik változtatás adatutat nyit az programmemória (ami általában [[ROM]] vagy [[flashmemória|flash]]) és a CPU között, ami lehetővé teszi a programmemória szavainak csak-olvasható adatként való kezelését. Ezt a technikát különféle [[mikrovezérlő]]kben alkalmazzák, pl. az [[Atmel AVR]] kontrollerekben. Ezzel lehetővé válik konstans adatok, pl. szöveg, funkció(hívási) táblázatok hozzáférése anélkül, hogy azt előzetesen az adatmemóriába kellene másolni, így meghagyva a gyakran szűkös és energiaéhes adatmemóriát a programváltozók számára. Az adatok olvasására a programmemóriából ekkor speciális processzorutasítások szolgálnak; ez nem ugyanaz, mint amikor maga az utasítás állandókat tartalmaz a programkódban (bár bizonyos esetekben az eredmény hasonló lehet).
 
== Sebességi kérdések ==
Az utóbbi években a processzorok sebessége sokkal gyorsabban nőtt, mint a memóriák hozzáférési sebessége, ezért a teljesítmény fenntartása érdekében valahogy redukáni kell a fő memóriához való hozzáférés idejét, ill. összeegyeztetni a processzor sebességével. Ha például a CPU által végzett minden utasítás memóriahozzáférést igényel, akkor a számítógép semmit sem nyer a megnövelt processzorsebességgel – a lassú memória visszafogja, fékezi a processzor teljesítményét (''"memory-bound"'' probléma).
 
(Be)építhető extrém gyors memória, de ez csak kis méreteknél (pl. regiszterek esetén) éri meg, a költségek, fogyasztási és tervezési megfontolások miatt. A jelen állapot szerinti gyakorlati megoldást a [[cache]]-ek, [[gyorsítótár]]ak használata jelenti: a cache egy kisméretű de nagyon gyors memória, ami a legfrissebb és leggyakrabban hivatkozott adatokat tárolja. Amíg az adat, amire a processzornak szüksége van, a gyorsítótárban van, addig gyorsan elérhető, így nincs akkora lassulás, mint amikor a gyorsítótár a fő memóriából kénytelen olvasni az adatokat.
 
A Harvard-architektúrájú processzorok legalább két cache-et használnak: az utasítások és az adatok számára.
 
=== Belső és külső felépítés ===
A modern nagyteljesítményű CPU-chip kialakítások magukban foglalják mind a Harvard-, mind a Neumann-elvű architektúrák megoldásait. Különösen a [[Módosított Harvard architektúra]] az elterjedt. A CPU cache általában két részre van osztva: utasítás- és adat-cache. A CPU és a cache közötti kapcsolathoz gyakran a Harvard-architektúra szerinti megoldást alkalmaznak, azaz a CPU külön cache-ekből, külön buszokon keresztül olvassa az utasításokat és az adatokat. Tévesztés (''cache-miss'') esetén azonban az adatot a fő memóriából kell kiolvasni, amely formálisan nincs különálló utasítás- és adatszegmensekre felosztva, bár ez lehetséges, pl. a RAM, ROM és (NOR) flash típusú memóriákat, amelyekből több is lehet, külön memóriavezérlők kezelhetik (ld.pl. játékkonzoloknál).
 
Így miközben a hardver bizonyos szempontokból a Neumann-architektúrának megfelelően viselkedik, tehát mikor az adat és a kód ugyanazon a memóriavezérlőn keresztül közlekedik, a hardvermegvalósítás mégis kihasználja a Harvard-architektúra előnyeit a gyorsítótárakhoz való hozzáférésnél és a memóriaelérések egy részénél is.
 
Emellett a CPU-k gyakran rendelkeznek (akár több) írási pufferrel is, ami lehetővé teszi a nem gyorsítótárazott memóriaterületek késleltetett írását; ekkor a memória Neumann-féle tulajdonságai csak akkor kerülnek előtérbe, mikor a CPU utasításokat ír a memóriába adatként és a szoftvernek ellenőriznie kell, hogy az (adat- és utasítás-) cache-ek és az írási puffer szinkronban van-e az éppen kiírt utasítások végrehajtása előtt.
 
== A Harvard architektúra modern felhasználása ==