Skip to main content

Computerarchitektur

Die Computerarchitektur ist ein Teilgebiet der Informatik, welche sich mit dem internen sowie externen Aufbau eines Computersystems beschäftigt.

Von-Neumann-Architektur

Die Von-Neumann-Architektur bildet ein Referenzsystem für Computer und besteht aus einer CPU mit Steuerwerk und Rechenwerk, einem Ein- / Ausgabewerk, einem Speicherwerk und  einem Bus-System. Das Bus-System verbindet die Komponenten miteinander.

image-1660293627613.png

Von-Neumann-Flaschenhals

Nur eine angeschlossene Komponente kann zur selben Zeit schreibend auf das Bussystem zugreifen, da es sonst zu einer Kollision kommen würde. Das macht das Gerät insgesamt langsam.

CPU

Die CPU ist ein zentraler Bestandteil eines Rechners. Sie besteht aus dem Steuerwerk, dem Rechenwerk und verschiedenen Registern.

Steuerwerk

Das Steuerwerk dient der sequentiellen Abarbeitung von Programmen.

image-1660294059620.png

Fetch

- Adresse aus Befehlszähler auslesen → RAM
- Befehl aus Steuerwerk → RAM
- RAM liefert Daten zurück
- Daten → Befehlsregister

Decode

→ Befehl decodieren, Weichen stellen

Execute

→ Befehl ausführen


Rechenwerk

Das Rechenwerk führt vom Steuerwerk in Auftrag gegebene Berechnungen durch.

image-1660294807958.pngIn der ALU werden Funktionen durchgeführt. Die Werte werden schließlich im Akkumulator zwischengespeichert, wo sie ausgelesen werden können.


Speicherwerk

Das Speicherwerk ist in eine endliche Anzahl gleichgroßer Speicherzellen unterteilt. Jede Zelle verfügt über eine eindeutige Adresse. Es kann den Wert einer adressierten Speicherstelle auslesen oder einen Wert in eine Speicherzelle schreiben.


Ein- / Ausgabewerk

Das Ein- / Ausgabewerk dient der Ein- und Ausgabe von Informationen über verschiedene Peripheriegeräte (Maus, Tastatur, Monitor, ...). Für jedes Gerät gibt es einen Controller.

image-1660295389309.png


Von-Neumann-Zyklus

image-1660295903648.png

Fetch:

- Sende Adresse des Befehls an das Speicherwerk
- Empfange aktuellen Befehl vom Speicherwerk
→ Hole aktuellen Befehl

Decode:

- Analysiere Befehl und treffe Vorbereitungen
- Erhöhe Programcounter (um 1)

Execute:

- Führe den Befehl aus

Weitere Komponenten der Von-Neumann-Architektur

Register

image-1660296971539.pngIm Stackregister wird der Stackpointer, der oberste Punkt des Stacks, gespeichert.

Das Basisregister legt die Adresse fest, zu der das Programm beginnt.

Im Limitregister wird die Größe des Speicherbereiches gespeichert.


Um mehrere Programme im RAM zu halten, werden das Basis- und Limitregister benötigt.

Interrupt-Controller

Der Interrupt-Controller nimmt Interruptsignale entgegen und informiert die CPU über das Vorliegen eines Interrupts.
Die CPU arbeitet den Interrupt mit der Interruptbehanldungsroutine ab.

Die Interruptbehandlungsroutine ist eine Reihe von Anweisungen, die einem bestimmten Interrupt zugeordnet sind und auf der CPU abgearbeitet werden können.

Was passiert bei einem Interrupt?

image-1660297708933.png1. HD löst Interrupt aus. Interrupt wird an Interrupt-Controller gesendet und in Queue gespeichert.

2. Der Interrupt-Controller meldet den Interrupt dem Steuerwerk.

3. Nach der letzten Execute-Phase des aktuellen Prozesses werden aktuelle Registerinhalte gesichert. Die Interruptbehandlungsroutine wird ausgeführt.

Kontextwechsel

Damit mehrere Prozesse quasi gleichzeitig auf der CPU laufen können, müssen regelmäßig Kontextwechsel durchgeführt werden.

image-1660298066107.png

Während eines Kontextwechsels werden Registerinhalte des vorherigen Prozesses gesichert und Registerinhalte des neuen Prozesses geladen.

Zwischengespeichert werden die Registerinhalte auf dem Stack des jeweiligen gerade ausgeführten Programmes.

Der Stackpointer wird in einer bestimmten Verwaltungseinheit vom Betriebssystem hinterlegt.

Kontextwechsel VS Interrupt

image-1660639258964.pngBei einem Kontextwechsel werden alle Registerinhalte eines Prozesses zwischengespeichert. Bei hunderten Registern ist das entsprechend zeitaufwendig.

Ein Interrupt setzt einen Prozess nur kurzzeitig aus und lässt die wesentlichen Registerinhalte im Prozessor unangetastet. Es werden nur eine Hand voll Registerinhalte kurzzeitig ausgetauscht und zwischengespeichert. Die Interruptserviceroutine läuft durch und anschließend wird der vorher laufende Prozess wird fortgesetzt.

DMA-Controller

Der Direct-Memory-Access-Controller dient dazu, die CPU bei dem Datentransfer (z.B. HD zu RAM) zu entlasten.

Prozess ohne DMA

LHD → 1. Teil laden (XXX → Kontextwechsel)
STORE → Datenwort in RAM ablegen
LHD
...

Die CPU ist ca. 1 Mio mal schneller als die HD, daher wird ein Kontextwechsel zu einem anderen Prozess gemacht. Sobald ein Programmteil geladen wurde, wird ein Interrupt gesendet. Das führt zu vielen Interrupts in Prozess B.

image-1660632953299.pngDer DMA-Controller löst das Problem. Er agiert als Mini-CPU und kontrolliert den Datentransfer. Sobald das Programm vollständig in den RAM geladen wurde, sendet er einen Interrupt.
Solange kann die CPU an einem anderen Prozess weiterarbeiten.

Er benötigt dabei Quellsystem, Zielsystem, die jeweilige Startadresse und die zu übertragende Menge (Datenwörter).