Prozessorarchitekturen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Von-Neumann-Architektur

Die Von-Neumann-Architektur zeichnet sich dadurch aus, dass Code und Daten über die gleichen Busse übertragen werden. Dadurch gibt es erstmal keine Unterscheidung zwischen Code- und Datenbereichen und Code kann auch im Datenbereich ausgeführt werden.

Bekannte Vertreter dieser Architektur sind z. B. die 6502, 68HC08 Familien und die x86-Familie (Pentium, Athlon usw.).

Harvard-Architektur

Das Hauptmerkmal der Harvard-Architektur ist, dass Programm- und Datenspeicher über getrennte Busse angesteuert werden. Daraus ergibt sich der Vorteil, dass auf Daten- und Programmspeicher gleichzeitig zugegriffen werden kann. Es bedeutet aber auch, dass der echte Code im Datenspeicher nicht ausgeführt werden kann. Dazu muss er erst in den Codespeicher übertragen werden. Benutzt wird die Harvard-Architektur z. B. von den AVRs und den meisten DSPs.

Kritik

Es gibt Implementierungen, bei denen mehrere getrennte Adressräume über den gleichen Bus angesprochen werden. Beispielsweise betrifft das den I/O-Adressraum von 8080 und infolgedessen x86, der physikalisch den normalen Datenbus verwendet. Andererseits gibt es Implementierungen, bei denen separate Busse für Befehle und Daten vorliegen, obwohl sich alles im gleichen Adressraum befindet. Beispielsweise im Zusammenhang mit Caches, auch externen Caches.

In der Literatur und in diesem Artikel wird die Unterscheidung zwischen Harvard und von-Neumann meist an den Bussen festgemacht. Man kann das aber auch über die Adressräume differenzieren: Ob Programm- und Datenspeicher in einem gemeinsamen Adressraum liegen, oder getrennt adressiert werden. Denn ob die Busse selbst getrennt oder gemeinsam sind, ist für den Programmierer unsichtbar, das hat nur auf die Geschwindigkeit Einfluss. Getrennte Adressräume beeinflussen jedoch die ganze Programmierung einschliesslich Hochsprache, zumal die üblicherweise verwendete Sprache C mit Daten, die in einem getrennten Programmadressraum liegen (Flash-ROM), von Haus aus nicht umgehen kann und daher Spracherweiterungen notwendig sind (im GCC nicht möglich).

So sind sowohl PC-Prozessoren als auch die verbreiteten ARM-Versionen hinsichtlich der Busse mal dies mal jenes, je nach verwendetem Core (ARM7: von Neumann, ARM9 Harvard, bis 486: von Neumann, ab Pentium: Harvard). Wodurch das Kriterium "Busse" ziemlich sinnlos wird.

Links