Central Processing Unit
Eine Zentraleinheit oder die CPU (für englisch Central Processing Unit, wörtlich Zentrale Verarbeitungseinheit), im allgemeinen Sprachgebrauch oft auch nur als Prozessor bezeichnet, ist das "Herz" eines Rechners.
Der Mikroprozessor ist die moderne, heutzutage übliche Bauform der Zentraleinheit.
Table of contents |
2 Abstrakt 3 Entwicklung 4 Variationen 5 Design und Fertigung aktueller CPUs 6 Anwendungsbereich 7 Sonstiges 8 Weblinks |
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 Maschinencode 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 letzte 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.
-> Steuerwerk und Rechenwerk werden unter der Bezeichnung Prozessor zusammengefasst.
Die Leistungsbewertung befasst sich mit dem Thema, wie schnell ein bestimmtes System
Programme ausführen kann.
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 den Durchbruch.
Zum Vergleich muss man sich vor Augen halten, dass die CPU eines typischen Großrechners der 60er und 70er Jahre alleine einen ganzen Schaltschrank füllte (daher die englische Bezeichnung 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 leicht realisierbar ist, da solche CPUs einige 100.000 Euro kosten.
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 Mikrocontroller, relativ wenig 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 CPU gängiger PC über Recheneinheiten, die mit Fließkommazahlen 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 so genannte Branch-Prediction-Units, also Funktionseinheiten, die versuchen vorherzusagen, ob eine Programmverzweigung stattfinden wird oder nicht, um die richtigen Befehle und Daten bereit zu halten.
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 NP-vollständig sind, sind 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 130 nm; bald: 90 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 .
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:
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.
Allgemeines
Abstrakt
Grundlegend bestehen Prozessoren aus den Bauteilen: Steuerwerk, Registersatz sowie dem Rechenwerk.
Das Rechenwerk enthält weitere Hardware, Logik um Anweisungen zu holen und dekodieren,
sowie Arithmetikeinheiten (ALUs), welche die eigentliche Berechnung durchführen. Außerdem
enthalten (moderne) Prozessoren noch weitere Einheiten.Entwicklung
Variationen
Design und Fertigung aktueller CPUs
National Semiconductor (SC/MP, 320xx), Inmos (Transputer: T400, T800...)
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 Hard- und Softwarehersteller Apple hatte 1991 mit System 7 ein 32-Bit-Betriebssystem eingeführt; allerdings nur für seine auf Motorola-CPUs basierenden Macintosh-Computer. Der Betriebssystemmarktführer Microsoft brachte erst 1993 mit Windows NT 3.1 ein echtes 32-Bit-Betriebssystem auf den Markt. Das freie, auf der GNU basierende Linux war schon seit Anfang seiner Entwicklung im Jahr 1991 ein 32-Bit-Betriebssystem. Linux wurde zuerst auf 386er Prozessoren entwickelt und dann auf andere Prozessoren (32 und auch 64 Bit) portiert.Anwendungsbereich
Sonstiges
Man unterscheidet grundsätzlich verschiedene CPU-Architekturen:
Mit folgenden Buskonzepten:
Weblinks
Siehe auch: Mikroprozessor