Prozessor-Architektur

Die Architektur moderner Prozessoren ist sehr komplex. Um ein Grundverständnis für die Arbeitsweise von Prozessoren zu bekommen, verwendet man eine vereinfachte Architektur, die auch für moderne Prozessoren gültig ist.
Obwohl jeder Mikroprozessor für eine spezielle Anwendung entwickelt wird, sind sie vom Grundaufbau her alle gleich. Die folgende Beschreibung bezieht sich auf die logische Zusammensetzung eines Prozessors.

Prinzipschaltbild eines Mikroprozessor

Ein Prozessor besteht grob gesehen aus Rechenwerk, Steuerwerk und internem Speicher. Über ein Bus-Interface greift der Prozessor auf einen externen Bus, den Systembus zu. Moderne Prozessoren haben zusätzlich interne Speicher, einen integrierten Speichercontroller und Coprozessor-ähnliche Verarbeitungseinheiten, die in den Chip integriert sind.

Control Unit (CU) / Steuerwerk / Leitwerk / Befehlswerk

Control Unit (CU) / Steuerwerk / Leitwerk / Befehlswerk
Die Control Unit (CU) bzw. das Steuerwerk wird in mancher Literatur auch als Leitwerk oder Befehlswerk bezeichnet. Das Steuerwerk ist die Steuereinheit, die für die Zusammenarbeit der einzelnen Teile des Prozessors verantwortlich ist. Für die Aufgaben des Steuerwerks steht ein internes Bussystem zur Verfügung.

Im Steuerwerk befindet sich das Befehlsregister, das alle Befehle enthält, die der Prozessor ausführen kann. Hier werden auch die Befehle dekodiert. Der Befehlsdecoder übersetzt die Befehle und übergibt sie der Ausführungseinheit, die den Befehl dann ausführt. Die Ausführungseinheit übergibt die Daten zur Berechnung an das Rechenwerk und erhält von dort das Ergebnis zurück. Wichtige Daten, die während der Ausführung gebraucht werden, werden in Registern zwischengespeichert. Ein Register ist der schnellste Speicher in einem Prozessor.
Dann gibt es noch eine zeitliche und logische Steuerung, die auf das Rechenwerk bei Rechenoperationen zugreift. Von hier wird auch der Steuerbus, die Interrupts und die serielle Ein- und Ausgabe gesteuert.

Arithmetic Logic Unit (ALU) / Rechenwerk

Arithmetic Logic Unit (ALU) / Rechenwerk
Das Rechenwerk ist der eigentliche Rechner. Es wird als Arithmetic Logic Unit, kurz ALU, bezeichnet. In der ALU werden alle arithmetische und logische Funktionen und Berechnungen ausgeführt. Zur ALU gehören auch der Akku (Speicher) und die Flags (Ereignisspeicher).
Durch das Rechenwerk wird das Befehlswerk in die Lage versetzt Daten zu verarbeiten.

Interner Speicher (Akku/Register)

Der Akku ist ein interner Speicher und Teil des Rechenwerks. Während man in den ersten Mikroprozessoren den internen Speicher noch Akkumulator, kurz Akku, nannte, haben die gleiche Aufgabe heute die Register.
Zum internen Speicher gehören wichtige Register, die als Zwischenspeicher dienen und der Befehlszähler, in dem steht aus welcher Speicherzelle der nächste Befehl geladen wird.

Erweiterte Architektur

Die Verbindung zwischen Prozessor, Speicher und Ein-/Ausgabe-Einheit ist schon immer ein Flaschenhals gewesen. Im Laufe der Zeit haben die Computer- und Prozessor-Hersteller immer wieder nach Wegen gesucht diesen Engpass zu umgehen. Der erste Schritt war, den Prozessor mit einer hierarchisch gegliederten Speicherstruktur aus Registern und verschiedenen Cache-Ebenen zu erweitern.

Da das ursprüngliche Rechenwerk, die ALU, für vielerlei Verarbeitungsprozesse wenig geeignet war, wurden zusätzliche Recheneinheiten entwickelt, die für bestimmte Aufgaben optimiert wurden.

In einem weiteren Schritt wurde die ursprünglich sequenzielle Befehlsausführung parallelisiert. Dazu bekamen die Prozessoren mehrere Funktionseinheiten und Ausführungsebenen, um pro Taktzyklus mehrere Befehle parallel verarbeiten zu können.

MMU - Memory Management Unit

Die MMU ist ein wichtiger Teil eines Prozessors, wenn es darum geht, teile des Speichers zu reservieren, um Software in geschützten Bereichen ablaufen lassen zu können. Sonst würde man ständig Gefahr laufen, dass parallel laufende Applikationen sich gegenseitig überschreiben würden. Die Folge wäre, dass ein solcher Fehler das Gesamtsystem zum Absturz bringen würde.

Cache

Aufgrund der großen Datenmengen, die ein Prozessor verarbeiten muss, ist der interne Speicher mit den Registern nicht groß genug. Um die langsamen Zugriffe auf den Arbeitsspeicher zu verkürzen, werden Teile des Arbeitsspeichers vorab in den Cache geladen. Bei Bedarf stehen die Daten und Befehle schneller zur Verfügung. Der Prozessor ist dann weniger mit Warten beschäftigt.

FPU - Floating Point Unit - Gleitkomma-Einheit

Eine CPU mit FPU kann Operationen mit Gleitkommazahlen schneller ausführen als CPUs ohne FPU. Die Gleitkomma-Einheit ist in x86-CPUs fast ein eigener Prozessor mit eigenen Befehlen. Seit dem i486DX von Intel ist diese Einheit in der CPU integriert. Davor war die FPU in einen Coprozessor ausgelagert. Auch andere Prozessor-Hersteller haben die Gleitkomma-Einheit in ihre Prozessoren integriert.

Ablauf einer Befehlsausführung

  1. Der Befehlszählerinhalt wird auf den Adressbus gelegt.
  2. Über den Datenbus wird der Operations-Code des Befehls ins Befehlsregister geladen.
  3. Der Befehlszähler wird erhöht.
  4. Der Befehl wird decodiert.
  5. Wenn nötig (bei Mehrbytebefehlen) werden weitere Bytes des Befehls ins Befehlsregister geholt.
  6. Der Befehl wird ausgeführt.

Programmierung eines Prozessors

Eine Programmiersprache ist eine Sprache, um einem Prozessor zu sagen, was er tun soll. Die Programmiersprache besteht im wesentlichen aus definierten Befehlen. Neben den höheren Programmiersprachen gibt es das sehr einfache Assembler. Einfach deshalb, weil es für jeden Assembler-Befehl eine oder mehrere genau definierte Maschineninstruktionen gibt. Der Prozessor versteht jedoch kein Assembler. Es handelt sich bei Assembler um eine bequemere Schreibweise der Maschinensprache für den Menschen. Der Assembler hat die Aufgabe die mnemonische Schreibweise in die eigentliche Maschinensprache zu übersetzen. Die Maschinensprache ist im Prinzip eine Aneinanderreihung von Bits, die bestimmte Vorgänge im Prozessor auslösen.

Quellcode Pfeil nach rechts Assembler Pfeil nach rechts Programmspeicher
IN 01
INC A
OUT 02
...
Quellcode in mnemonischer Schreibweise
 
1000 1110
0110 1100
...
...
Programm in Maschinensprache (einzelne Bits)
Die Befehle eines Programms müssen in binärer Form in den Speicher geschrieben werden:
Eine Maschinensprache hat folgende grundlegenden Befehlsarten:
Moderne Prozessoren haben zusätzliche Befehle:

Taktung

Grundsätzlich muss man zwischen Prozessoren unterscheiden, die eine Eigentaktung haben und solchen, die ihren Takt von außen bekommen. Egal wie der Takt erzeugt wird, er wird immer vom Prozessor-Hersteller festgelegt.
Hat der Prozessor eine Eigentaktung, dann wird der Takt in der Regel von einem internen RCL-Oszillator erzeugt, der aber sehr ungenau ist. Deshalb wird die Frequenz des RCL-Oszillators durch 100 geteilt und mit der Frequenz eines außen anliegenden Quarzes verglichen. Stimmt die Frequenz nicht überein, wird die Frequenz des RCL-Oszillators mit einer angelegten Spannung korrigiert, bis sie mit dem Quarz übereinstimmt.
Bei einem größeren System wird von einem Quarz (~14 MHz) ein Systemtakt erzeugt. Mit Hilfe eines PLL-Chips (Phase Locked Loop) werden die verschiedenen Takte für das gesamte System erzeugt. Der PLL-Chip ist mit Steuereingängen versehen, die vom BIOS angesprochen werden. So kann man mit dem PLL-Chip verschiedene Frequenzen erzeugen.
Die Taktfrequenz eines Prozessors ergibt sich in der Regel aus dem internen Bustakt und einem Multiplikator. Der interne Bus kann zum Beispiel der Front-Side-Bus (FSB) sein.