Hauptprozessor
CPU steht für Central Processing Unit, was soviel wie Zentrale Verarbeitungseinheit bedeutet.
Sie wird im allgemeinen Sprachgebrauch oft auch nur als Prozessor bezeichnet. Der Mikroprozessor ist die moderne, heutzutage übliche Bauform der CPU.
Allgemeines
CPUs sind der zentrale Bestandteil eines jeden Computers. Die Verarbeitung von Daten, die Ausführung von Programmen, geschieht in der CPU. Dazu verfügt eine CPU über einen Programmzähler, der auf die Speicherstelle zeigt von der gerade Machinencode gelesen wird. Der gelesene Maschinencode wird vom Befehlsdecoder gegebenenfalls in einzelne Arbeitsschritte zerlegt und an die weiteren Einheiten der CPU verteilt. Rechenoperationen und logische Verknüpfungen werden von der ALU (Arithmetic Logic Unit, also Einheit für arithmetische und logische Funktionen) ausgeführt. Zwischenergebnisse werden in Registern gespeichert, ebenso wie Informationen über das letze Rechenergebnis (z.B. ob das Ergebnis Null war). Die Branch-Unit (Sprungeinheit) kann auf die Informationen des Rechenergebnisses (auch Flags genannt) zugreifen und Programmverzweigungen auslösen, also das Programm an einer anderen Speicherstelle fortsetzen lassen.
Entwicklung
Ursprünglich wurde die CPU eines Computers aus Röhren (Relais fanden keine weite Verbreitung als Logikelemente) aufgebaut, dann folgten Transistoren. In den 1960ern wurden erste Logik-ICs eingesetzt, die zunächst aber nur Logikgatter enthielten, später wurden die ICs immer komplexer, umfassten zunächst einzelne Register und Unterfunktionen wie z.B. Addierer und Zähler und schließlich ganze Registerbänke und Recheneinheiten.
Im Jahr 1971 stellte Intel mit dem 4004 die erste CPU in einem einzelnen Chip vor, damit war der Mikroprozessor geboren. Mit nur 4 Bit breiten Registern war der bei 500kHz getaktete 4004 nicht gerade besonders leistungsfähig, die kompakte Bauform verschaffte dem Mikroprozessor aber trotzdem zum Durchbruch.
Zum Vergleich muß man sich vor Augen halten, dass die CPU eines typischen Großrechners der 60er und 70er Jahre alleine einen ganzen Schaltschrank füllte (daher Mainframe, engl. Hauptrahmen oder-schrank). Moderne Großrechner greifen ebenfalls auf Mikroprozessoren zurück, jedoch nicht auf die gleichen Chips, die in handelsüblichen PCs zu finden sind, sondern meist Chips die diesen um ein oder zwei Generationen voraus sind. Technische Probleme wie Abwärme werden dann großtechnisch mit Flüssigkeitskühlung gelöst, was leitch realisierbar ist, da solche CPUs leicht einige 100.000 Euro kosten.
Variationen
Im Laufe der höheren Integrationsdichte von Halbleiterbausteinen und auch abhängig von den jeweiligen Anforderungen haben die Entwickler von CPUs mehr oder weniger Funktionen in Hardware realisiert. Während ältere CPUs, oder auch heute gebräuchliche CPUs von kleineren Mikrocontrollern relativ wenige Register haben, nur einfache Rechenarten (meist nur Addition und Subtraktion) ausführen können und mit Taktraten von wenigen Megahertz laufen, sind die Hochleistungs CPUs heute mit mehreren Gigahertz getaktet, haben schnelle Pufferspeicher (Cache) in Größenordnungen wie noch vor wenigen Jahren der gesamte Arbeitsspeicher eines Computers und verfügen über zusätzliche Recheneinheiten.
So verfügen alle aktuellen CPUs gängiger PCs über Recheneinheiten die mit Fließkommezahlen arbeiten können. Die PowerPC Prozessoren verfügen in ihren neueren Varianten über einen Vektorprozessor, der parallel zu den anderen Funktionseinheiten Rechenoperationen auf mehreren Datenworten gleichzeitig ausführen kann. Alle diese Prozessoren haben auch sogenannte Branch-Prediction-Units, also Funktionseinheiten die versuchen vorherzusagen ob eine Programmverzweigung stattfinden wird oder nicht, um die richtigen Befehle und Daten bereit zu halten.
Design und Fertigung aktueller CPUs
Moderne CPUs bestehen üblicherweise aus mehreren, übereinander liegenden Schichten von dotiertem Silizium, welches Millionen von Transistoren bildet, deren Schaltvorgänge die Rechenleistung bereitstellen.
CPUs werden auf Grund ihrer unterschiedlichen Anwendungsbereiche an den jeweiligen Einsatzbereich angepasst. Beispielsweise müssen Spezialversionen für Luft- und Raumfahrt besonders hohen Temperaturen und Strahlungsexposition im laufenden Betrieb fehlerfrei Stand halten, während Mobilprozessoren eine hohe IPC-Rate, geringe Leckströme und einen niedrigen Energieverbrauch aufweisen müssen. Diesen Bedürfnissen wird auf verschiedene Arten und Weisen Rechnung getragen: So wird bereits mit der Auswahl des Befehlssatzes (CISC oder RISC) eine fundamentale Entwurfsentscheidung getroffen, deren Implikationen in den jeweiligen Spezialartikeln näher erläutert werden. Anschließend wird ein möglichst effizienter Mikrocode entwickelt, welcher optimal an Randbedingungen wie Cachegrößen, Speicherbandbreite und -latenzen sowie die internen Funktionseinheiten angepasst werden sollte.
Anschließend wird der logische Entwurf der Prozessors (er liegt in einer C-ähnlichen Programmiersprache vor) an einen Hochleistungscomputer übergeben, welcher die Leiterbahnen routet, d.h. eine optimale Anordnung mit möglichst wenig Transistoren sowie minimaler Verlustleistung zu ermitteln sucht. Da diese Routingprobleme in NP liegen, sind leider nur Näherungsberechnungen möglich, die sich im Detail noch erheblich verbessern lassen. Die ehemaligen Robotron-Ingenieure bei AMD in Dresden haben dies bei der Fortentwicklung des K75 (Athlon (XP)) eindrucksvoll bewiesen. Aus diesen Bahnberechnungen werden sehr teure Masken erstellt, die unter Anwendung kurzwelligen Laserlichts (heute 248 nm; bald: 157 nm) zur Belichtung von Wafern eingesetzt werden, die anschließend geätzt werden. Die Fertigung eines heutigen Mikroprozessors umfasst weit über 100 Einzelschritte, in deren Verlauf bereits ein Fehler den gesamten Prozessor unbrauchbar machen kann.
In der Endkontrolle werden die Prozessoren schließlich hinsichtlich ihrer Taktfestigkeit klassifiziert, wobei kein wirkliches x86-Programm ausgeführt wird, sondern anhand eines für jeden Prozessortyp individuell entwickelten Testprogramms physikalische Eigenschaften wie Signalpegel bei verschiedenen Takten überprüft werden. Hierbei wird besonders auf zuvor identifizierte Speedpathes geachtet, welche kritische "Nadelöhre" auf dem DIE bilden, d.h. hier laufen im Extremfall viele Daten in kurzer Zeit durch. Das Nicht-Erkennen einer solchen "Ameisenstraße" kann fatale Folgen haben: So zeigten verschiedene Revisionen des K6 aufgrund von Streuungen in der Fertigungsqualität einen Speedpath-Fehler in der MMX-Einheit, was die übertragenen Daten korrumpierte und beispielsweise beim Entpacken von JPEG-Bildern zu Datenmüll führen kann [Details].
Allgemein lässt sich feststellen, dass der Validierungsaufwand moderner Prozessoren bereits gewaltige Ausmaße angenommen hat und trotz aller Anstrengungen nicht alle Fehlersituationen vor der Auslieferung überprüft werden. Daher liefern alle Hersteller so genannte Errata-Listen, in denen Fehler aufgelistet werden. So musste beispielsweise Intel den berühmten "fdiv bug" im klassischen Pentium P54C eingestehen, welcher auf eine kleine Auslassung beim Füllen einer im Prozessor hartverdrahteten Matrix für die FPU zurückzuführen ist.
Hier sollte noch rein:
- Intel, MotoroZilog
- IBM-PC
- 386 (32-bit, spät!)
Im Laufe der Zeit vergrößerte sich auf Grund der immer besser werdenden Technik die Anzahl der vom Prozessor unterstützten Befehle.
Heute finden sich überwiegend 32 bis 64-Bit Prozessoren, wobei die gängigsten Betriebssysteme für den Anwender nur maximal 64, meist aber nur 32-Bit unterstützen. Daran lässt sich schon erkennen, dass die Software im Falle der Prozessoren der Hardware hinterherhinkt.
Die 386er, die in den 80er Jahren entwickelt wurden, waren bereits 32-Bit-Prozessoren.
Der Softwarehersteller und Betriebssystem-Marktführer Microsoft führte jedoch erst mit Windows 95 gegen Ende des Jahres 1995 ein 32-Bit Betriebssystem auch für Heimanwender ein. Das freie auf der GNU basierende Linux jedoch, war von Anfang an nur auf 386er Prozessoren lauffähig.
Anwendungsbereich
Im Bereich der Personalcomputer ist die historisch gewachsene x86-Architektur weit verbreitet, wobei für eine genauere Diskussion dieser Thematik der entsprechende Artikel empfohlen wird.
Interessanter und weniger bekannt ist der Einsatz von embedded-Prozessoren und Microcontrollern beispielsweise in Motorsteuergeräten, Uhren, Druckern sowie einer Vielzahl elektronisch gesteuerter Geräte.
Sonstiges
Man unterscheidet zwei grundsätzlich verschiedene CPU-Architekturen:
Siehe auch: Mikroprozessor