Harvard-Architektur: Aufbau und Vorteile erklärt
Bei der Harvard-Architektur besitzen Programme und Daten getrennte Speicher und Zugriffswege. Dadurch kann ein Prozessor einen Befehl holen und gleichzeitig auf Daten zugreifen. Das kann die Verarbeitung beschleunigen, erfordert aber mehr beziehungsweise speziellere Hardware als ein gemeinsamer Speicher.
Hake ab, was du schon kannst — und komm am Ende hierher zurück!
Woran erkennst du eine Harvard-Architektur?
Stell dir zwei getrennte Notizbücher vor: In einem stehen Handlungsanweisungen, im anderen die dafür benötigten Werte. Beim Computer entsprechen die Handlungsanweisungen den Programmbefehlen und die Werte den Daten.
Harvard-Architektur
Bei der klassischen Harvard-Architektur sind Programmspeicher und Datenspeicher getrennt. Beide besitzen eigene Adressräume und eigene Busse, also eigene Übertragungswege zum Prozessor.
Die Trennung hat zwei Seiten:
- Logische Trennung: Programm und Daten besitzen verschiedene Adressräume. Der Prozessor verwendet unterschiedliche Zugriffe für beide Bereiche.
- Physische Trennung: Es gibt tatsächlich zwei Speicher und zwei eigene Busse.
Eine Adresse wie 12 kann daher zweimal vorkommen: einmal im Programmspeicher und einmal im Datenspeicher. Trotzdem bezeichnet sie zwei verschiedene Speicherstellen.
Ein Mikrocontroller liest den nächsten Steuerbefehl aus seinem Programmspeicher. Zur selben Zeit liest er einen Messwert aus dem Datenspeicher. Weil beide Übertragungen unterschiedliche Busse verwenden, müssen sie nicht auf denselben Übertragungsweg warten.
Warum können getrennte Busse schneller sein?
Ein Bus überträgt unter anderem Adressen, Befehle und Daten zwischen Prozessor und Speicher. Wird nur ein gemeinsamer Bus verwendet, konkurrieren Befehlsabruf und Datenzugriff um denselben Weg.
Bei einer klassischen Von-Neumann-Architektur läuft beispielsweise Folgendes über das gemeinsame Bussystem:
- Der Prozessor holt einen Befehl aus dem Speicher.
- Er lädt die benötigten Daten.
- Er schreibt gegebenenfalls ein Ergebnis zurück.
Der Bus kann dadurch zum Engpass werden. Diese Leistungsgrenze heißt Von-Neumann-Flaschenhals.
In einer Harvard-Architektur können das Holen des nächsten Befehls und ein Datenzugriff gleichzeitig stattfinden. Der mögliche Vorteil entsteht also nicht allein durch zwei Speicher, sondern durch die unabhängigen Datenwege.
Ein gemeinsamer Bus muss Zugriffe nacheinander transportieren. Getrennte Busse können Befehle und Daten parallel übertragen, sofern der Prozessor diese Zugriffe gleichzeitig ausführt.
Welche weiteren Vorteile bietet die Trennung?
Getrennte Speicher lassen sich passend zu ihrer Aufgabe gestalten.
Unterschiedliche Speichertechnologien
Ein festes Programm kann in einem Speicher liegen, der während des Betriebs nur gelesen wird. Veränderliche Messwerte oder Zwischenergebnisse liegen dagegen in einem beschreibbaren Datenspeicher.
So kann ein versehentlicher Schreibzugriff den nur lesbaren Programmcode nicht überschreiben. Dieser Schutz hängt jedoch von der konkreten Speichertechnik und den eingerichteten Zugriffsrechten ab.
Unterschiedliche Wortbreiten
Auch die Wortbreite, also die Anzahl der Bits in einem Speicherwort, kann für beide Speicher verschieden sein. Ein System kann beispielsweise 20 Bit breite Befehlswörter und 4 Bit breite Datenwörter verwenden. Beide Bereiche werden damit auf ihre jeweilige Aufgabe zugeschnitten.
Geeignet für regelmäßige Datenströme
Digitale Signalprozessoren verarbeiten etwa Ton-, Bild- oder Funksignale. Bei solchen fortlaufenden Datenströmen sind gleichzeitige Befehls- und Datenzugriffe besonders nützlich.
Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.
Bei der Harvard-Architektur liegen Befehle im und veränderliche Werte im . Eigene ermöglichen unabhängige Zugriffe. Die Wortbreiten beider Speicher können gewählt werden.
Welche Grenzen und Missverständnisse gibt es?
Die klassische Harvard-Architektur benötigt getrennte Speicherbereiche und Übertragungswege. Das kann die Hardware aufwendiger machen. Außerdem lässt sich freier Speicher nicht ohne Weiteres beliebig zwischen Programm und Daten aufteilen.
Ein gemeinsamer Speicher ist flexibler: Wird ein Programm größer und benötigt weniger Daten, kann derselbe Speicher entsprechend anders aufgeteilt werden. Bei strikt getrennten Speichern müssen beide Bereiche dagegen getrennt dimensioniert werden; freier Platz in einem Bereich steht dem anderen nicht automatisch zur Verfügung.
Auch der Sicherheitsvorteil darf nicht übertrieben werden. Eine Trennung kann verhindern, dass ein gewöhnlicher Datenzugriff direkt einen geschützten Programmspeicher überschreibt. Sie beseitigt aber nicht automatisch Programmfehler, schädliche Befehle oder sämtliche Angriffe.
Trennung unterstützt Schutz, garantiert aber keine vollständige Sicherheit. Entscheidend sind zusätzlich Zugriffsrechte, Speichertechnik und die konkrete Umsetzung des Systems.
Wie verbinden moderne Prozessoren beide Prinzipien?
Viele moderne Prozessoren sind keine vollständig klassischen Harvard- oder Von-Neumann-Systeme. Sie verwenden eine modifizierte Harvard-Architektur.
Modifizierte Harvard-Architektur
Eine modifizierte Harvard-Architektur trennt Befehle und Daten nur in bestimmten Teilen des Systems. Die Trennung ist weniger strikt als bei der klassischen Harvard-Architektur.
Ein typischer Aufbau sieht so aus:
- Nahe am Prozessor gibt es einen getrennten Befehlscache und Datencache. Ein Cache ist ein kleiner, schneller Zwischenspeicher.
- Für beide Caches existieren getrennte interne Datenwege.
- Nachgelagerte Caches und der Arbeitsspeicher werden gemeinsam genutzt.
Damit verbindet das System zwei Vorteile: Prozessornahe Zugriffe können getrennt und parallel ablaufen, während der gemeinsame Hauptspeicher flexibel für Programme und Daten genutzt wird.
Der Prozessor holt den nächsten Befehl aus dem Befehlscache und liest gleichzeitig einen Wert aus dem Datencache. Fehlt der benötigte Inhalt in einem Cache, wird er aus dem gemeinsam genutzten weiteren Speicher geholt. Intern wirkt das System an dieser Stelle wie Harvard, weiter außen wie Von Neumann.
Wie wählst du das passende Architekturprinzip?
Beurteile nicht nur, welche Architektur angeblich schneller ist. Frage, welche Anforderungen das System erfüllen muss.
| Anforderung | Passende Überlegung |
|---|---|
| Befehle und Daten sollen gleichzeitig übertragen werden | Getrennte Busse der Harvard-Architektur können helfen. |
| Speicher soll flexibel zwischen Programm und Daten nutzbar sein | Ein gemeinsamer Speicher bietet Vorteile. |
| Programmcode soll während des Betriebs nicht überschrieben werden | Ein getrennter, nur lesbarer Programmspeicher kann schützen. |
| Schnelle prozessornahe Zugriffe und flexibler Hauptspeicher werden benötigt | Eine modifizierte Harvard-Architektur verbindet beide Ideen. |
Ein Steuergerät führt ein festes Programm aus und verarbeitet fortlaufend Sensordaten. Ein getrennter, während des Betriebs nur lesbarer Programmspeicher schützt den festen Code. Gleichzeitig können getrennte Busse den nächsten Befehl und einen Sensorwert parallel liefern. Für diesen Zweck ist das Harvard-Prinzip gut begründbar.
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- Harvard-Architektur
- trennt Programm- und Datenspeicher
- verwendet eigene Adressräume und Busse
- ermöglicht parallele Speicherzugriffe
- erlaubt verschiedene Speicherarten und Wortbreiten
- benötigt aufwendigere, weniger flexibel aufteilbare Speicherstrukturen
- erscheint heute oft als modifizierte Mischform
Abschluss-Check
Du hast das Thema verstanden, wenn du bei einem Rechneraufbau zuerst Speicher, Adressräume und Busse untersuchst und daraus begründest, welche Zugriffe parallel möglich sind und welche Grenzen bleiben.
Mit Google fortfahren