„Prozessor“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
→‎Befehlsbearbeitung: Neuordnung und Kürzung, für alle Aspekte gibt es bereits eigene Artikel
Straffung --> Hauptprozessor, CPU und Prozessorkern
Zeile 3: Zeile 3:
{{Weiterleitungshinweis|CPU}}
{{Weiterleitungshinweis|CPU}}


Ein '''Prozessor''' ist eine Maschine oder eine elektronische Schaltung, welche gemäß übergebener Befehle andere Maschinen oder elektrische Schaltungen steuert und dabei einen Prozess oder [[Algorithmus]] vorantreibt, was meist Datenverarbeitung beinhaltet. Am populärsten sind Prozessoren als zentrale Recheneinheiten von [[Computer]]n, in denen sie Befehle ([[Software]]) ausführen.
Ein '''Prozessor''' ist eine Maschine oder eine [[elektronische Schaltung]], welche gemäß übergebener Befehle andere Maschinen oder elektrische Schaltungen steuert und dabei einen Prozess oder [[Algorithmus]] vorantreibt, was meist Datenverarbeitung beinhaltet. Am populärsten sind Prozessoren als zentrale Recheneinheiten von [[Computer]]n, in denen sie Befehle ([[Software]]) ausführen.


[[Datei:80486dx2-large.jpg|miniatur|Der ''„[[Die (Halbleitertechnik)|Die]]“'' eines Intel 80486DX2]]
Hauptbestandteile des Prozessors sind die [[Register (Computer)|Register]], das [[Rechenwerk]] (''arithmetisch-logische Einheit'', ALU), das [[Steuerwerk]] und der [[Memory Management Unit|Speichermanager]] (engl. {{lang|en|Memory Management Unit}}, MMU), der den [[Arbeitsspeicher]] verwaltet. Zu den zentralen Aufgaben des Prozessors gehören die Abarbeitung des [[Maschinenprogramm]]s, [[Arithmetik|arithmetische]] und [[Logik|logische]] Operationen zur Verarbeitung von Daten aus internen oder externen Quellen, beispielsweise dem Arbeitsspeicher.


Hauptbestandteile eines Prozessors sind das [[Rechenwerk]] (''arithmetisch-logische Einheit'', ALU), das [[Steuerwerk]].<ref>{{Literatur | Autor = Dieter Sautter, Hans Weinerth | Titel = Lexikon Elektronik Und Mikroelektronik | Verlag = Springer | Jahr = 1993 | ISBN = 9783642580062 | Seiten = 825 |Online = {{Google Buch|BuchID=ugBkUq6UCNQC|Seite=825}}}} </ref><ref>{{Literatur | Autor = Peter Fischer, Peter Hofer | Titel = Lexikon Der Informatik | Verlag = Springer | Jahr = 2011 | ISBN = 9783642151262 |Seiten = 710|Online = {{Google Buch|BuchID=8wZUvN5af|Seite=710}}}} </ref> Darüberhinaus enthalten sie die zugehörigen [[Register (Computer)|Register]] und einen [[Memory Management Unit|Speichermanager]] (engl. {{lang|en|Memory Management Unit}}, MMU), der den [[Arbeitsspeicher]] verwaltet. Zu den zentralen Aufgaben des Prozessors gehören die Abarbeitung des [[Maschinenprogramm]]s, [[Arithmetik|arithmetische]] und [[Logik|logische]] Operationen zur Verarbeitung von Daten aus internen oder externen Quellen, beispielsweise dem Arbeitsspeicher.
Neben diesen Grundfunktionen gibt es auch weitere Recheneinheiten, die spezialisierte Funktionen zur Verfügung stellen und den eigentlichen Prozessor entlasten sollen, diese Einheiten werden meist als [[Coprozessor]] bezeichnet. Beispiele hierfür sind der bis in die 1990er Jahre separate mathematische Coprozessor ([[Gleitkommaeinheit]]) für [[Gleitkomma]]operationen sowie [[Grafikprozessor|Grafik-]] und [[Soundprozessor]]en. In diesem Zusammenhang wird der zentrale Prozessor, mit seinem im vorhergehenden Absatz beschriebenen Grundfunktionen auch als '''Hauptprozessor''' ({{enS|''central processing unit''}} [{{IPA|ˈsɛntɹəl ˈpɹəʊsɛsɪŋ ˈju:nɪt}}], ''CPU'' [{{IPA|ˌsi: pi: ˈju:}}]) bezeichnet. Weitere Synonyme sind zentrale Verarbeitungseinheit (ZVE) oder Zentraleinheit. Eine klare Abgrenzung der Begriffe Prozessor, Hauptprozessor und CPU ist in der Literatur nicht zu finden, siehe Abschnitt [[#Hauptprozessoren und CPUs|Hauptprozessoren und CPUs]].


Neben diesen Prozessoren, die diese Grundfunktionen bereitstellen, gibt es auch weitere Recheneinheiten, die spezialisierte Funktionen zur Verfügung stellen und den eigentlichen Prozessor entlasten sollen, diese Einheiten werden meist als [[Coprozessor]] bezeichnet. Beispiele hierfür sind der bis in die 1990er Jahre separate mathematische Coprozessor für [[Gleitkomma]]operationen (die [[Gleitkommaeinheit]]) sowie [[Grafikprozessor|Grafik-]] und [[Soundprozessor]]en. In diesem Zusammenhang wird der zentrale Prozessor, mit seinem im vorhergehenden Absatz beschriebenen Grundfunktionen auch als '''Hauptprozessor''' ('''CPU''') bezeichnet. Weitere Synonyme sind zentrale Verarbeitungseinheit (ZVE) oder Zentraleinheit.
[[Datei:80486dx2-large.jpg|miniatur|Der ''„[[Die (Halbleitertechnik)|Die]]“'' eines Intel 80486DX2]]
Die moderne Form des Prozessors ist der [[Mikroprozessor]], der alle Bausteine des Prozessors in einem [[Integrierter Schaltkreis|integrierten Schaltkreis]] (Mikrochip) vereinigt. Moderne Prozessoren für [[Desktop-Computer]] und [[Notebook]]s aber auch für [[Smartphone]]s und [[Tablet-Computer]] sind oft [[Mehrkernprozessor]]en mit zwei, vier oder mehr [[Prozessorkern]]en. Die Prozessorkerne sind hierbei oft eigenständige „Prozessoren“ mit Steuer-/Leitwerk und Rechenwerk auf einem Chip. Beispiele hierfür sind der [[Intel Core 2]], der [[AMD Athlon X2]] oder der [[Nvidia Tegra]] 3. Eine klare Abgrenzung der Begriffe Prozessor, Hauptprozessor, CPU und Prozessorkern ist in der Literatur nicht zu finden, siehe Abschnitt [[#Hauptprozessoren und CPUs|Hauptprozessor, CPU und Prozessorkern]].

Die moderne Form des Prozessors ist der [[Mikroprozessor]], der alle Bausteine des Prozessors in einem [[Integrierter Schaltkreis|integrierten Schaltkeis]] (Mikrochip) vereinigt. Moderne Computer-Prozessoren für [[Desktop-Computer|Desktop-PCs]] und [[Notebook]]s aber auch für [[Smartphone]]s und [[Tablet-Computer]] sind oft [[Mehrkernprozessor]]en mit zwei, vier oder mehr [[Prozessorkern]]en. Die Prozessorkerne sind hierbei oft eigenständige „Prozessoren“ mit Steuer-/Leitwerk und Rechenwerk auf einem Chip. Beispiele hierfür sind der [[Intel Core 2]], der [[AMD Athlon X2]] oder der [[Nvidia Tegra]] 3.


Prozessoren werden heute meist im Bereich der [[Eingebettetes System|eingebetteten Systeme]] (engl. {{lang|en|''embedded systems''}}) eingesetzt.
Prozessoren werden heute meist im Bereich der [[Eingebettetes System|eingebetteten Systeme]] (engl. {{lang|en|''embedded systems''}}) eingesetzt.
Zeile 29: Zeile 28:


{{Siehe auch|Mikroprozessor#Geschichte}}
{{Siehe auch|Mikroprozessor#Geschichte}}

== Hauptprozessoren und CPUs ==
<!--(aus altem Artikel Hauptprozessor#Hauptprozessoren und CPUs-->Erste Erwähnungen des Begriffes CPU gehen in die Anfänge der 1950er Jahre zurück. So wurde in einer Broschüre von IBM (705 EDPM) von 1955 der Begriff „Central Processing Unit“ zuerst ausgeschrieben, später mit der Abkürzung CPU in Klammern ergänzt und danach nur noch in seiner Kurzform verwendet. Ältere IBM-Broschüren verwenden den Begriff nicht, so z.&nbsp;B. die Broschüre „{{lang|en|Magnetic Cores for Memory in Microseconds in a Great New IBM Electronic Data Processing Machine for Business}}“ von 1954, in der zwar ebenfalls die IBM 705 dargestellt wird, an den entsprechenden Stellen jedoch lediglich von „{{lang|en|data processing}}“ die Rede ist.

Der Begriff ''CPU'' wird umgangssprachlich auch in anderem Kontext für [[Zentraleinheit]] (ZE) benutzt, hierbei kann dies für einen zentralen Hauptrechner (ein kompletter Computer) stehen, an dem einzelne [[Terminal (Computer)|Terminal]]-Arbeitsstationen angeschlossen sind. Teilweise wird der Begriff auch als [[Metapher]] benutzt, bei Computerspielen zum Beispiel als „Ein Spiel gegen die CPU“.


== Aufbau / Funktionale Einheiten ==
== Aufbau / Funktionale Einheiten ==
Zeile 60: Zeile 54:


=== Datenleitungen ===
=== Datenleitungen ===
Über verschiedene Busse (Signalleitungen) ist der Prozessor mit anderen Komponenten verbunden.
Über verschiedene Busse (Signalleitungen) ist der Prozessor mit anderen Komponenten verbunden.


* Über den [[Datenbus]] werden Daten mit dem [[Arbeitsspeicher]] ausgetauscht, etwa die Informationen für die Arbeitsregister und das Befehlsregister. Je nach verwendeter Prozessorarchitektur hat ein Hauptprozessor (eine CPU) einen einzigen Bus für Daten aus dem Arbeitsspeicher ([[Von-Neumann-Architektur]]) oder mehrere (meist zwei) separate Datenleitungen für den Programmcode und normale Daten ([[Harvard-Architektur]]).
* Über den [[Datenbus]] werden Daten mit dem [[Arbeitsspeicher]] ausgetauscht, etwa die Informationen für die Arbeitsregister und das Befehlsregister. Je nach verwendeter Prozessorarchitektur hat ein Hauptprozessor (eine CPU) einen einzigen Bus für Daten aus dem Arbeitsspeicher ([[Von-Neumann-Architektur]]) oder mehrere (meist zwei) separate Datenleitungen für den Programmcode und normale Daten ([[Harvard-Architektur]]).
* Der [[Adressbus]] dient zur Übertragung von Speicheradressen. Dabei wird jeweils eine Speicherzelle des RAM adressiert (ausgewählt) in die – je nach Signal des Steuerbusses – die Daten, die gerade auf dem Datenbus liegen, geschrieben oder aus denen die Daten gelesen, d.&nbsp;h. auf den Datenbus gelegt, werden.
* Der [[Adressbus]] dient zur Übertragung von Speicheradressen. Dabei wird jeweils eine Speicherzelle des RAM adressiert (ausgewählt) in die – je nach Signal des Steuerbusses – die Daten, die gerade auf dem Datenbus liegen, geschrieben oder aus denen die Daten gelesen, d.&nbsp;h. auf den Datenbus gelegt, werden.
* Mit dem [[Steuerbus]] (Kontrollbus) steuert der Prozessor u.&nbsp;a. die Peripherie-Anschlüsse (z.&nbsp;B. [[USB]], [[Peripheral Component Interconnect|PCI]]) an.
* Mit dem [[Steuerbus]] (Kontrollbus) steuert der Prozessor u.&nbsp;a. die Peripherie-Anschlüsse (z.&nbsp;B. [[USB]], [[Peripheral Component Interconnect|PCI]]) an.
Zeile 70: Zeile 64:


* Level-1-Cache (L1-Cache): Dieser Cache läuft mit dem Prozessortakt. Er ist sehr klein (etwa 4 bis 256 [[Byte|Kilobyte]]), dafür aufgrund seiner Position im Prozessorkern selbst sehr schnell abrufbar.
* Level-1-Cache (L1-Cache): Dieser Cache läuft mit dem Prozessortakt. Er ist sehr klein (etwa 4 bis 256 [[Byte|Kilobyte]]), dafür aufgrund seiner Position im Prozessorkern selbst sehr schnell abrufbar.
* Level-2-Cache (L2-Cache): Der L2-Cache befindet sich meist im Prozessor, aber nicht im Kern selbst. Er umfasst zwischen 64 Kilobyte und 12 [[Byte|Megabyte]].
* Level-2-Cache (L2-Cache): Der L2-Cache befindet sich meist im Prozessor, aber nicht im Kern selbst. Er umfasst zwischen 64 Kilobyte und 12 [[Byte|Megabyte]].
* Level-3-Cache (L3-Cache): Bei [[Mehrkernprozessor]]en teilen sich die einzelnen Kerne den L3-Cache. Er ist der langsamste der drei Caches, aber auch der größte (bis zu 256 [[Byte|Megabyte]]).
* Level-3-Cache (L3-Cache): Bei [[Mehrkernprozessor]]en teilen sich die einzelnen Kerne den L3-Cache. Er ist der langsamste der drei Caches, aber auch der größte (bis zu 256 [[Byte|Megabyte]]).


Zeile 82: Zeile 76:
# Der [[Befehlsdecoder]] decodiert den Befehl und aktiviert entsprechende Schaltungen, die für die Ausführung des Befehls nötig sind. (DECODE)
# Der [[Befehlsdecoder]] decodiert den Befehl und aktiviert entsprechende Schaltungen, die für die Ausführung des Befehls nötig sind. (DECODE)
# Von der [[Festplatte]], einem [[Wechselmedium|Wechseldatenträger]], dem Arbeitsspeicher oder einem [[Cache]]-Speicher werden Daten in die Arbeitsregister geladen, die zur Ausführung nötig sind (etwa zu verändernde Werte oder benötigte Parameter). (FETCH OPERANDS)
# Von der [[Festplatte]], einem [[Wechselmedium|Wechseldatenträger]], dem Arbeitsspeicher oder einem [[Cache]]-Speicher werden Daten in die Arbeitsregister geladen, die zur Ausführung nötig sind (etwa zu verändernde Werte oder benötigte Parameter). (FETCH OPERANDS)
# Der Befehl wird ausgeführt. Dies kann die Ansteuerung von [[Peripheriegerät]]en, die Ausführung von Operationen im Rechenwerk oder ein Sprung im Programm (eine Veränderung des Befehlszählerregisters) sein. (EXECUTE)
# Der Befehl wird ausgeführt. Dies kann die Ansteuerung von [[Peripheriegerät]]en, die Ausführung von Operationen im Rechenwerk oder ein Sprung im Programm (eine Veränderung des Befehlszählerregisters) sein. (EXECUTE)
# Sollte kein Sprungbefehl in der EXECUTE-Phase erfolgt sein, wird nun der Befehlszähler um 1 erhöht (UPDATE INSTRUCTION POINTER)
# Sollte kein Sprungbefehl in der EXECUTE-Phase erfolgt sein, wird nun der Befehlszähler um 1 erhöht (UPDATE INSTRUCTION POINTER)


Zeile 100: Zeile 94:
Maschinenbefehle sind sehr prozessorspezifisch und bestehen aus mehreren Teilen. Diese umfassen zumindest den eigentlichen Befehl, den Operationscode (OP-CODE), die [[Adressierung (Datenverarbeitung)|Adressierungsart]], und den Operandenwert oder eine Adresse. Sie können grob in folgende Kategorien eingeteilt werden:
Maschinenbefehle sind sehr prozessorspezifisch und bestehen aus mehreren Teilen. Diese umfassen zumindest den eigentlichen Befehl, den Operationscode (OP-CODE), die [[Adressierung (Datenverarbeitung)|Adressierungsart]], und den Operandenwert oder eine Adresse. Sie können grob in folgende Kategorien eingeteilt werden:


* Arithmetische Befehle
* Arithmetische Befehle
* Logische Befehle
* Logische Befehle
* Sprungbefehle
* Sprungbefehle
Zeile 108: Zeile 102:
== Befehlssatz ==
== Befehlssatz ==
{{Hauptartikel|Befehlssatz}}
{{Hauptartikel|Befehlssatz}}
Der Befehlssatz bezeichnet die Menge der [[Maschinenbefehl]]e eines Prozessors. Der Umfang des Befehlssatzes variiert je nach Prozessortyp beträchtlich. Nach der Größe des Befehlssatzes kann man zwischen [[Complex Instruction Set Computing|CISC]] (''engl.'' Complex Instruction Set Computing - ''Rechnen mit komplexem Befehlssatz'')- und [[Reduced Instruction Set Computing|RISC]] (''engl. Reduced Instruction Set Computing - ''Rechnen mit reduziertem Befehlssatz'')-Prozessorarchitekturen unterscheiden:
Der Befehlssatz bezeichnet die Menge der [[Maschinenbefehl]]e eines Prozessors. Der Umfang des Befehlssatzes variiert je nach Prozessortyp beträchtlich. Nach der Größe des Befehlssatzes kann man zwischen [[Complex Instruction Set Computing|CISC]] (''engl.'' Complex Instruction Set Computing - ''Rechnen mit komplexem Befehlssatz'')- und [[Reduced Instruction Set Computing|RISC]] (''engl. Reduced Instruction Set Computing - ''Rechnen mit reduziertem Befehlssatz'')-Prozessorarchitekturen unterscheiden:


* Die traditionelle CISC-Architektur versucht, immer mehr und immer komplexere Funktionen direkt durch Maschinenbefehle auszudrücken. Sie zeichnet sich besonders durch die große Anzahl zur Verfügung stehender Maschinenbefehle aus, die meist 100 überschreitet. Diese sind außerdem in der Lage, vielschrittige Operationen direkt auszuführen (etwa [[Gleitkommazahl|Gleitpunkt]]-Operationen). Dadurch sind die erforderlichen Übersetzungsprogramme ([[Assembler (Informatik)|Assembler]], [[Compiler]] und [[Interpreter]]) kleiner und einfacher zu programmieren.
* Die traditionelle CISC-Architektur versucht, immer mehr und immer komplexere Funktionen direkt durch Maschinenbefehle auszudrücken. Sie zeichnet sich besonders durch die große Anzahl zur Verfügung stehender Maschinenbefehle aus, die meist 100 überschreitet. Diese sind außerdem in der Lage, vielschrittige Operationen direkt auszuführen (etwa [[Gleitkommazahl|Gleitpunkt]]-Operationen). Dadurch sind die erforderlichen Übersetzungsprogramme ([[Assembler (Informatik)|Assembler]], [[Compiler]] und [[Interpreter]]) kleiner und einfacher zu programmieren.
* Die neuere RISC-Architektur versucht, möglichst wenige (weniger als 100), dafür jedoch sehr schnelle und einfache Befehle zur Verfügung zu stellen. Dies ermöglicht eine wesentlich schnellere Ausführungsgeschwindigkeit, da weniger [[Taktsignal|Taktzyklen]] benötigt werden und die Dekodierung aufgrund geringerer Komplexität schneller ist. Auch das Design von Prozessoren mit RISC-Architektur ist einfacher.
* Die neuere RISC-Architektur versucht, möglichst wenige (weniger als 100), dafür jedoch sehr schnelle und einfache Befehle zur Verfügung zu stellen. Dies ermöglicht eine wesentlich schnellere Ausführungsgeschwindigkeit, da weniger [[Taktsignal|Taktzyklen]] benötigt werden und die Dekodierung aufgrund geringerer Komplexität schneller ist. Auch das Design von Prozessoren mit RISC-Architektur ist einfacher.


Zeile 126: Zeile 120:


Neben der geordneten Befehlsausführung nach dem Von-Neumann-Zyklus beherrschen vor allem moderne Hochleistungsprozessoren weitere Techniken, um die Programmabarbeitung zu beschleunigen. Ein Verfahren ist die ungeordnete Befehlsausführung (engl. {{lang|en|''[[Out-of-order execution]]''}}), bei der die Befehle nicht strikt nach der durch das Programm vorgegebenen Reihenfolge ausgeführt wird, sondern der Prozessor die Reihenfolge der Befehle selbständig versucht zu optimieren. Die Motivation für eine Abweichung von der vorgegebenen Befehlsfolge besteht darin, dass aufgrund von Verzweigungsbefehlen der Programmlauf nicht immer sicher vorhergesehen werden kann. Möchte man Befehle bis zu einem gewissen Grad parallel ausführen, so ist es in diesen Fällen notwendig, sich für eine Verzweigung zu entscheiden und die jeweilige Befehlsfolge spekulativ auszuführen. Es ist dann möglich, dass der weitere Programmlauf dazu führt, dass eine andere Befehlsfolge ausgeführt werden muss, so dass die spekulativ ausgeführten Befehle wieder rückgängig gemacht werden müssen. In diesem Sinne spricht man von einer ungeordneten Befehlsausführung.
Neben der geordneten Befehlsausführung nach dem Von-Neumann-Zyklus beherrschen vor allem moderne Hochleistungsprozessoren weitere Techniken, um die Programmabarbeitung zu beschleunigen. Ein Verfahren ist die ungeordnete Befehlsausführung (engl. {{lang|en|''[[Out-of-order execution]]''}}), bei der die Befehle nicht strikt nach der durch das Programm vorgegebenen Reihenfolge ausgeführt wird, sondern der Prozessor die Reihenfolge der Befehle selbständig versucht zu optimieren. Die Motivation für eine Abweichung von der vorgegebenen Befehlsfolge besteht darin, dass aufgrund von Verzweigungsbefehlen der Programmlauf nicht immer sicher vorhergesehen werden kann. Möchte man Befehle bis zu einem gewissen Grad parallel ausführen, so ist es in diesen Fällen notwendig, sich für eine Verzweigung zu entscheiden und die jeweilige Befehlsfolge spekulativ auszuführen. Es ist dann möglich, dass der weitere Programmlauf dazu führt, dass eine andere Befehlsfolge ausgeführt werden muss, so dass die spekulativ ausgeführten Befehle wieder rückgängig gemacht werden müssen. In diesem Sinne spricht man von einer ungeordneten Befehlsausführung.

== Prozessorkern ==
Als [[Prozessorkern]] (engl. ''„core“'') bezeichnet man das eigentliche Rechen- und Steuerwerk des Prozessors, um das herum weitere Komponenten wie Cache und [[Memory Management Unit]] (MMU) angeordnet sind.

Ein Prozessor kann aus mehreren Kernen bestehen und wird dann als [[Mehrkernprozessor]] (''Multi-Core-Prozessor'') bezeichnet. Im Sprachgebrauch sind die Begriffe ''Single-Core-Prozessor'' (Einzelkernprozessor), ''Dual-Core-'', ''Triple-Core-'', ''Quad-Core-'', ''Hexa-Core-Prozessor'' (Sechskernprozessor) und ''Octa-Core-Prozessor'' (Achtkernprozessor) gebräuchlich.
Prozessoren mit mehreren Kernen können sehr unterschiedlich realisiert werden, normalerweise besitzt jeder Kern einen eigenen L1- und L2-[[Cache]]. Den großen L3-Cache müssen sich meist alle Kerne teilen.

Der Grund für die Einführung solcher Mehrkernprozessoren liegt in den physikalisch begrenzten Möglichkeiten, einen einzelnen Kern immer schneller zu machen. Die fortschreitende Miniaturisierung von Halbleiterschaltelementen ermöglicht allerdings, dass mehr als ein Kern auf einen Mikrochip passen. Mittlerweile können [[Strukturgröße|Strukturen]] mit einer Kantenlänge unter 32 Nanometer gefertigt werden, womit (Stand 2008) bis zu 1,9 Milliarden Transistoren in einem Prozessor verbaut werden können.<ref name="6-Kern-Prozessoren">[http://www.computerbase.de/news/hardware/chipsaetze/intel/2008/mai/intel_erste_6-kern-cpus_2301_us-dollar/ www.computerbase.de]</ref> (z.&nbsp;B. Intel i7, Codename "Gulftown"). Durch die [[EUV-Lithografie]] sollen noch kleinere Strukturen möglich sein.
Es ist jedoch damit zu rechnen, dass die [[Miniaturisierung#Grenzen der Miniaturisierung|Miniaturisierung]] der konventionellen Prozessortechnik in absehbarer Zeit unüberwindbare Grenzen erreicht. Langfristig könnten sogenannte [[Quantencomputer]] die klassische Transistortechnik ablösen.

Die klassische Einteilung, dass ein [[Steuerwerk]] und eine [[Arithmetisch-logische Einheit|ALU]] als ein Kern bezeichnet werden, verschwimmt zunehmend. Heutige Prozessoren besitzen oft Steuerwerke, die jeweils mehrere [[Hardwareseitiges Multithreading|Hardware-Threads]] verwalten (''Multi-/Hyper-Threading''); das Betriebssystem "sieht" mehr Kerne, als tatsächlich (vollwertige) Steuerwerke vorhanden sind. Außerdem betreibt ein Steuerwerk oft mehrere ALUs sowie noch weitere Baugruppen wie z.&nbsp;B. [[Gleitkommaeinheit|Gleitkomma-Recheneinheit]], [[Flynnsche Klassifikation#SIMD (Single Instruction, Multiple Data)|Vektoreinheit]] (siehe auch [[AltiVec]], [[X86-Prozessor#Streaming SIMD Extensions|SSE]]) oder eine Kryptographie-Einheit. Umgekehrt müssen sich manchmal mehrere Steuerwerke diese Spezial-Recheneinheiten teilen, was eine eindeutige Zuordnung verhindert.


== Leistungsmerkmale ==
== Leistungsmerkmale ==
Die Leistung eines Prozessors wird maßgeblich durch die Anzahl der [[Transistor]]en sowie durch die [[Datenwort|Wortbreite]] und den Prozessortakt bestimmt.
Die Leistung eines Prozessors wird maßgeblich durch die Anzahl der [[Transistor]]en sowie durch die [[Datenwort|Wortbreite]] und den Prozessortakt bestimmt.


=== Wortbreite ===
=== Wortbreite ===
Die [[Datenwort|Wortbreite]] legt fest, wie lang ein Maschinenwort des Prozessors sein kann, d.&nbsp;h. aus wie vielen [[Bit]]s es maximal bestehen kann. Ausschlaggebend sind dabei folgende Werte:
Die [[Datenwort|Wortbreite]] legt fest, wie lang ein Maschinenwort des Prozessors sein kann, d.&nbsp;h. aus wie vielen [[Bit]]s es maximal bestehen kann. Ausschlaggebend sind dabei folgende Werte:


* Arbeits- oder Datenregister: Die Wortbreite bestimmt die maximale Größe der verarbeitbaren Ganz- und Gleitkommazahlen.
* Arbeits- oder Datenregister: Die Wortbreite bestimmt die maximale Größe der verarbeitbaren Ganz- und Gleitkommazahlen.
Zeile 170: Zeile 153:
Bei der nach dem Mathematiker [[John von Neumann]] benannten [[Von-Neumann-Architektur]] gibt es keine Trennung zwischen dem Speicher für Daten und Programmcode. Dagegen sind bei der [[Harvard-Architektur]] Daten und Programm(e) in strikt voneinander getrennten Speicher- und Adressräumen abgelegt, auf die typischerweise durch zwei separierte [[Bus (Datenverarbeitung)|Bussysteme]] parallel zugegriffen wird.
Bei der nach dem Mathematiker [[John von Neumann]] benannten [[Von-Neumann-Architektur]] gibt es keine Trennung zwischen dem Speicher für Daten und Programmcode. Dagegen sind bei der [[Harvard-Architektur]] Daten und Programm(e) in strikt voneinander getrennten Speicher- und Adressräumen abgelegt, auf die typischerweise durch zwei separierte [[Bus (Datenverarbeitung)|Bussysteme]] parallel zugegriffen wird.


Beide Architekturen haben ihre spezifischen Vor- und Nachteile. Die Von-Neumann-Architektur ist aus der Sicht des Programmierers einfacher, da ein [[Determinismus|deterministischer]] Programmablauf durch den einzelnen Bus, über den die CPU auf Daten und Programm zugreift, sichergestellt ist. Auch erlaubt die Möglichkeit, auf Programmcode wie auf Daten schreibend zuzugreifen, [[Selbstmodifizierender Code|selbst modifizierenden Code]]. Andererseits kann solche Selbstmodifikation auch durch Programmfehler zu noch größeren Fehlern führen.
Beide Architekturen haben ihre spezifischen Vor- und Nachteile. Die Von-Neumann-Architektur ist aus der Sicht des Programmierers einfacher, da ein [[Determinismus|deterministischer]] Programmablauf durch den einzelnen Bus, über den die CPU auf Daten und Programm zugreift, sichergestellt ist. Auch erlaubt die Möglichkeit, auf Programmcode wie auf Daten schreibend zuzugreifen, [[Selbstmodifizierender Code|selbst modifizierenden Code]]. Andererseits kann solche Selbstmodifikation auch durch Programmfehler zu noch größeren Fehlern führen.


Durch die Trennung in zwei physikalische Speicher und Busse hat die Harvard-Architektur potenziell eine höhere Leistungsfähigkeit, da Daten- und Programmzugriffe parallel erfolgen können. Jedoch sind [[Race Condition]]s bei solchen parallelen Zugriffen, die zu einem nicht-deterministischen Programmverhalten führen können, nicht ausgeschlossen. Bei einer Harvard-Architektur sind durch die physikalische Trennung von Daten und Programm einfach eine Zugriffsrechtetrennung und [[Speicherschutz]] realisierbar. Um z.&nbsp;B. zu verhindern, dass bei Softwarefehlern Programmcode überschrieben werden kann, wurde (vor allem historisch) für Programmcode ein im Betrieb nur lesbarer Speicher (z.&nbsp;B. [[Read Only Memory|ROM]], [[Lochkarte]]n) verwendet, für die Daten dagegen schreib- und lesbarer Speicher (z.&nbsp;B. [[Random Access Memory|RAM]], [[Ringkernspeicher]]). Nachteilig ist allerdings, dass nicht benötigter Datenspeicher nicht als Programmspeicher genutzt werden kann, also eine erhöhte [[Speicherfragmentierung]] auftritt.
Durch die Trennung in zwei physikalische Speicher und Busse hat die Harvard-Architektur potenziell eine höhere Leistungsfähigkeit, da Daten- und Programmzugriffe parallel erfolgen können. Jedoch sind [[Race Condition]]s bei solchen parallelen Zugriffen, die zu einem nicht-deterministischen Programmverhalten führen können, nicht ausgeschlossen. Bei einer Harvard-Architektur sind durch die physikalische Trennung von Daten und Programm einfach eine Zugriffsrechtetrennung und [[Speicherschutz]] realisierbar. Um z.&nbsp;B. zu verhindern, dass bei Softwarefehlern Programmcode überschrieben werden kann, wurde (vor allem historisch) für Programmcode ein im Betrieb nur lesbarer Speicher (z.&nbsp;B. [[Read Only Memory|ROM]], [[Lochkarte]]n) verwendet, für die Daten dagegen schreib- und lesbarer Speicher (z.&nbsp;B. [[Random Access Memory|RAM]], [[Ringkernspeicher]]). Nachteilig ist allerdings, dass nicht benötigter Datenspeicher nicht als Programmspeicher genutzt werden kann, also eine erhöhte [[Speicherfragmentierung]] auftritt.
Zeile 210: Zeile 193:
Interessanter und weniger bekannt ist der Einsatz von Embedded-Prozessoren und [[Mikrocontroller]]n beispielsweise in Motorsteuergeräten, Uhren, Druckern sowie einer Vielzahl elektronisch gesteuerter Geräte.
Interessanter und weniger bekannt ist der Einsatz von Embedded-Prozessoren und [[Mikrocontroller]]n beispielsweise in Motorsteuergeräten, Uhren, Druckern sowie einer Vielzahl elektronisch gesteuerter Geräte.


== Hauptprozessor, CPU und Prozessorkern ==
== Prozessorarten <!-- (sollte wenn nötig nach Koprozessor übertragen werden, hier besser streichen) -->==
=== Begriffenutzung ===
Unterscheidung nach Funktion: <!-- Alphabetische Sortierung! -->
Wie bereits erwähnt besteht ein Prozessor primär aus dem Steuer-/Leit- und dem Rechenwerk (ALU). Es gibt jedoch weitere Recheneinheiten, die zwar kein Steuer- bzw. Leitwerk enthalten, aber dennoch oft ebenfalls als Prozessor bezeichnet werden. Diese im Allgemeinen [[Koprozessor]] genannten Einheiten stellen in der Regel spezialisierte Funktionen zur Verfügung. Beispiele sind die [[Gleitkommaeinheit]] sowie [[Grafikprozessor|Grafik-]] und [[Soundprozessor]]en. Zur Abgrenzung dieser Koprozessoren zu einen „echten“ Prozessor mit Steuer- und Rechenwerk wird der Begriff '''CPU''' ([{{IPA|ˌsi: pi: ˈju:}}], {{enS|'''central processing unit'''}} [{{IPA|ˈsɛntɹəl ˈpɹəʊsɛsɪŋ ˈju:nɪt}}]) oder zu deutsch Hauptprozessor genutzt.


Moderne Mikroprozessoren sind häufig als sogenannte [[Mehrkernprozessor]]en (''Multi-Core-Prozessoren'') ausgelegt. Sie erlauben zusammen mit entsprechender Software eine weitere Steigerung der Gesamtrechenleistung ohne eine merkliche Erhöhung der Taktfrequenz (Die bis in die 2000er Jahre übliche Technik die Rechenleistung eines Mikroprozessors zu erhöhen). Mehrkernprozessor bestehen aus mehreren voneinander unabhängigen Einheiten mit einem Rechen- und Steuerwerk, um die herum weitere Komponenten wie Cache und [[Memory Management Unit]] (MMU) angeordnet sind. Diese Einheiten werden als [[Prozessorkern]] (engl. ''„core“'') bezeichnet. Im Sprachgebrauch sind die Begriffe ''Single-Core-Prozessor'' (Einzelkernprozessor), ''Dual-Core-'', ''Triple-Core-'', ''Quad-Core-'', ''Hexa-Core-Prozessor'' (Sechskernprozessor) und ''Octa-Core-Prozessor'' (Achtkernprozessor) gebräuchlich. Da sie Kerne eigenständige Prozessoren sind, werden die einzelnen Kerne häufig auch als CPU bezeichnet.
* <!-- D --> Ein [[Digitaler Signalprozessor]] (DSP) ist ein Prozessor, der analoge Signale mit Hilfe digitaler Systeme verarbeitet. DSPs sind nach der Harvard-Architektur aufgebaut, haben also getrennte Bussysteme für Daten und Befehle. Da die Multiplikation eine zentrale Operation der [[Digitale Signalverarbeitung|digitalen Signalverarbeitung]] ist, wird sie meist mit Hilfe eines [[Barrel-Shifter]]s, einer in der [[Digitaltechnik]] gebräuchlichen [[Schieberegister|Schiebelogikschaltung]], ausgeführt.
Diese Bezeichnung „CPU“ wird synonym zu „Core“ genutzt, beispielsweise um in Mehrkernprozessoren mit weiteren integriertem Recheneinheiten, z.&nbsp;B. einem [[Grafikprozessor]] (GPU, vgl. [[Accelerated Processing Unit]], APU) die Kerne mit Steuer- und Rechenwerk von den anderen Einheiten zu unterscheiden.<ref>{{internetquelle |autor= Tim Towell |url=cache-www.intel.com/cd/00/00/51/62/516232_516232.pdf#page=7 |format= PDF |titel=Intel Architecture Based Smartphone Platforms|werk= |seiten= 7 |datum= 2012-11-06|zugriff=2013-03-22}}</ref>
* <!-- E --> Spezialisierte Ein-/Ausgabeprozessoren ([[Eingabe und Ausgabe|I/O]]) sind Prozessoren die Ein- und Ausgabegeräte steuern.

* <!-- G --> Der [[Grafikprozessor]] (GPU, ''engl.'' {{lang|en|„Graphics Processing Unit“}}, neuerdings auch zunehmend VPU für {{lang|en|„Visual -“}} oder auch {{lang|en|„Video Processing Unit“}}) dient zur Berechnung von Grafikdaten für die Bildschirmausgabe.
Die klassische Einteilung, dass ein [[Steuerwerk]] und eine [[Arithmetisch-logische Einheit|ALU]] als ein CPU, Kern bzw. Prozessor bezeichnet werden, verschwimmt zunehmend. Heutige Prozessoren (auch Einkernprozessoren) besitzen oft Steuerwerke, die jeweils mehrere [[Hardwareseitiges Multithreading|Hardware-Threads]] verwalten (''Multi-/[[Hyper-Threading]]''); das Betriebssystem „sieht“ mehr Prozessorkerne, als tatsächlich (vollwertige) Steuerwerke vorhanden sind. Außerdem betreibt ein Steuerwerk oft mehrere ALUs sowie noch weitere Baugruppen wie z.&nbsp;B. [[Gleitkommaeinheit|Gleitkomma-Recheneinheit]], [[Flynnsche Klassifikation#SIMD (Single Instruction, Multiple Data)|Vektoreinheit]] (siehe auch [[AltiVec]], [[X86-Prozessor#Streaming SIMD Extensions|SSE]]) oder eine Kryptographie-Einheit. Umgekehrt müssen sich manchmal mehrere Steuerwerke diese Spezial-Recheneinheiten teilen, was eine eindeutige Zuordnung verhindert.
* <!-- H --> Der Hauptprozessor (CPU, ''engl.'' {{lang|en|„Central Processing Unit“}}), im allgemeinen Sprachgebrauch oft auch nur als „Prozessor“ bezeichnet, ist der zentrale (Haupt-)Prozessor eines Computers, der alle anderen Bestandteile steuert.

* <!-- M --> Ein [[Gleitkommaeinheit|mathematischer]] [[Koprozessor]] (FPU, ''engl.'' {{lang|en|„Floating Point Unit“}}) ist ein spezieller Prozessor, der der Verarbeitung von [[Gleitkommazahl]]en dient. Einst als separater Prozessor realisiert ist der mathematische Koprozessor in modernen Hauptprozessoren in Form einer speziellen Recheneinheit integriert.
=== Übertragene Bedeutungen des Begriffs „CPU“ ===
* <!-- N --> Der [[Notebookprozessor]] oder auch Mobilprozessor ist eine Unterart von Hauptprozessoren, die vor allem in mobilen und auch in besonders stromsparenden Computersystemen verwendet wird.
Erste Erwähnungen des Begriffes CPU gehen in die Anfänge der 1950er Jahre zurück. So wurde in einer Broschüre von IBM (705 EDPM) von 1955 der Begriff „Central Processing Unit“ zuerst ausgeschrieben, später mit der Abkürzung CPU in Klammern ergänzt und danach nur noch in seiner Kurzform verwendet. Ältere IBM-Broschüren verwenden den Begriff nicht, so z.&nbsp;B. die Broschüre „{{lang|en|Magnetic Cores for Memory in Microseconds in a Great New IBM Electronic Data Processing Machine for Business}}“ von 1954, in der zwar ebenfalls die IBM 705 dargestellt wird, an den entsprechenden Stellen jedoch lediglich von „{{lang|en|data processing}}“ die Rede ist.
* <!-- P --> Ein [[Physikbeschleuniger]] (PPU, ''engl.'' für {{lang|en|„Physics Processing Unit“}}) ist ein Prozessor, der auf die Verarbeitung und Berechnung von physikalischen Effekten spezialisiert ist.

* <!-- S --> Ein [[Soundprozessor]] (SPU, ''engl.'' {{lang|en|„Sound Processing Unit“}}) ist ein auf Klangverarbeitung und -erzeugung spezialisierter Prozessor.
Der Begriff ''CPU'' wird umgangssprachlich auch in anderem Kontext für [[Zentraleinheit]] (ZE) benutzt, hierbei kann dies für einen zentralen Hauptrechner (ein kompletter Computer) stehen, an dem einzelne [[Terminal (Computer)|Terminal]]-Arbeitsstationen angeschlossen sind. Teilweise wird der Begriff auch als [[Metapher]] benutzt, bei Computerspielen zum Beispiel als „Ein Spiel gegen die CPU“.


== Siehe auch ==
== Siehe auch ==
* [[Digitaler Signalprozessor]] (DSP)
* [[Mikroprogrammsteuerwerk]]
* [[Mikroprogrammsteuerwerk]]
* [[Notebookprozessor]]
* [[Hyper-Threading]]
* [[Ring (CPU)]]
* [[Ring (CPU)]]
* [[Physikbeschleuniger]] (PPU)
* [[Physikbeschleuniger]] (PPU)

Version vom 22. März 2013, 11:12 Uhr

Ein Prozessor ist eine Maschine oder eine elektronische Schaltung, welche gemäß übergebener Befehle andere Maschinen oder elektrische Schaltungen steuert und dabei einen Prozess oder Algorithmus vorantreibt, was meist Datenverarbeitung beinhaltet. Am populärsten sind Prozessoren als zentrale Recheneinheiten von Computern, in denen sie Befehle (Software) ausführen.

Der Die eines Intel 80486DX2

Hauptbestandteile eines Prozessors sind das Rechenwerk (arithmetisch-logische Einheit, ALU), das Steuerwerk.[1][2] Darüberhinaus enthalten sie die zugehörigen Register und einen Speichermanager (engl. Memory Management Unit, MMU), der den Arbeitsspeicher verwaltet. Zu den zentralen Aufgaben des Prozessors gehören die Abarbeitung des Maschinenprogramms, arithmetische und logische Operationen zur Verarbeitung von Daten aus internen oder externen Quellen, beispielsweise dem Arbeitsspeicher.

Neben diesen Prozessoren, die diese Grundfunktionen bereitstellen, gibt es auch weitere Recheneinheiten, die spezialisierte Funktionen zur Verfügung stellen und den eigentlichen Prozessor entlasten sollen, diese Einheiten werden meist als Coprozessor bezeichnet. Beispiele hierfür sind der bis in die 1990er Jahre separate mathematische Coprozessor für Gleitkommaoperationen (die Gleitkommaeinheit) sowie Grafik- und Soundprozessoren. In diesem Zusammenhang wird der zentrale Prozessor, mit seinem im vorhergehenden Absatz beschriebenen Grundfunktionen auch als Hauptprozessor (CPU) bezeichnet. Weitere Synonyme sind zentrale Verarbeitungseinheit (ZVE) oder Zentraleinheit. Die moderne Form des Prozessors ist der Mikroprozessor, der alle Bausteine des Prozessors in einem integrierten Schaltkreis (Mikrochip) vereinigt. Moderne Prozessoren für Desktop-Computer und Notebooks aber auch für Smartphones und Tablet-Computer sind oft Mehrkernprozessoren mit zwei, vier oder mehr Prozessorkernen. Die Prozessorkerne sind hierbei oft eigenständige „Prozessoren“ mit Steuer-/Leitwerk und Rechenwerk auf einem Chip. Beispiele hierfür sind der Intel Core 2, der AMD Athlon X2 oder der Nvidia Tegra 3. Eine klare Abgrenzung der Begriffe Prozessor, Hauptprozessor, CPU und Prozessorkern ist in der Literatur nicht zu finden, siehe Abschnitt Hauptprozessor, CPU und Prozessorkern.

Prozessoren werden heute meist im Bereich der eingebetteten Systeme (engl. embedded systems) eingesetzt. Weiterhin werden in Großrechnern (engl. mainframes) meist herstellereigene Prozessorarchitekturen verwendet, wie etwa bei IBM (Cell-Prozessor) oder SUN (SPARC-Prozessor).

Prozessoren für eingebettete Systeme machen etwa 95 % des Prozessormarkts aus, wobei davon 90 % sogenannte Mikrocontroller sind, die neben dem eigentlichen Prozessor weitere Funktionen (z. B. ROM, RAM) enthalten. Nur etwa 5 % werden in PCs, Workstations oder Servern eingesetzt.[3]

Historische Entwicklung

Thomson TS68000 (entspricht dem Motorola MC68000) mit 7,16 MHz aus einem Amiga
Motorola PowerPC G4 CPU

In den 1930er Jahren bestand das Rechenwerk eines Computers zunächst aus Relais und mechanischen Bauelementen, z. B. bei der Zuse Z3. Diese ersten Computer waren also elektromechanische Rechner, die langsam und äußerst störanfällig waren. Noch in den 1940ern begann man damit, Computer mit Hilfe von Elektronenröhren zu bauen, wie den ENIAC. Damit wurden die Rechner schneller und weniger störanfällig. Waren diese Rechner anfangs teure Einzelprojekte, so reifte die Technik im Laufe der 1950er Jahre immer mehr aus. Röhrencomputer wurden nach und nach zu Artikeln der Serienfertigung, die für Universitäten, Forschungseinrichtungen und Firmen durchaus erschwinglich waren. Um dieses Ziel zu erreichen, war es notwendig, die Anzahl der benötigten Röhren auf ein Mindestmaß zu reduzieren. Aus diesem Grund setzte man Röhren nur dort ein, wo sie unabdingbar waren. So begann man damit, Hauptspeicher und CPU-Register auf einer Magnettrommel unterzubringen, Rechenoperationen seriell auszuführen und die Ablaufsteuerung mit Hilfe einer Diodenmatrix zu realisieren. Ein typischer Vertreter dieser Rechnergeneration war der LGP-30.

In den 1950er Jahren wurden die unzuverlässigen Elektronenröhren von Transistoren verdrängt, die zudem den Stromverbrauch der Computer senkten. Anfangs wurden die Prozessoren aus einzelnen Transistoren aufgebaut. Im Laufe der Jahre brachte man aber immer mehr Transistorfunktionen auf integrierten Schaltkreisen (ICs) unter. Waren es zunächst nur einzelne Gatter, integrierte man immer häufiger auch ganze Register und Funktionseinheiten wie Addierer und Zähler, schließlich dann sogar Registerbänke und Rechenwerke auf einem Chip. Der Hauptprozessor konnte in einem einzelnen Schaltschrank untergebracht werden, was zum Begriff Mainframe, also „Hauptrahmen“, bzw. „Hauptschrank“ führte. Diese zunehmende Integration von immer mehr Transistor- und Gatterfunktionen auf einem Chip und die stetige Verkleinerung der Transistorabmaße führte dann Anfang der 1970er Jahre fast zwangsläufig zu der Integration aller Funktionen eines Prozessors auf einem Chip, dem Mikroprozessor. Anfangs noch wegen ihrer vergleichsweise geringen Leistungsfähigkeit belächelt (der Legende nach soll ein IBM-Ingenieur über den ersten Mikroprozessor gesagt haben: „Nett, aber wozu soll das gut sein?“), haben Mikroprozessoren heute alle vorangegangenen Techniken für den Aufbau eines Hauptprozessors abgelöst.

Dieser Trend setzte sich auch in den nachfolgenden Jahrzehnten fort. So wurde Ende der 1980er Jahre der mathematische Coprozessor und Ende der 2000er Jahre auch der Grafikprozessor in den (Haupt-)Prozessor integriert, vgl. APU.

Aufbau / Funktionale Einheiten

Ein Prozessor besteht aus Registern, einem Rechenwerk (der Arithmetic Logical Unit, kurz ALU), einem Befehlsdecoder, einem Steuerwerk sowie den Datenleitungen (Busse), die die Kommunikation mit anderen Komponenten ermöglichen.

In modernen CPUs finden sich sehr viel feiner unterteilte Funktionseinheiten sowie mehrfach ausgeführte Einheiten, die das gleichzeitige Abarbeiten mehrerer Befehle erlauben. Zusätzlich finden sich auch häufig spezialisierte Recheneinheiten z. B. für Vektorfunktionen.

Register

Register sind prozessorinterne Speicher, die sehr nahe und schnelle Verbindungen zu anderen Prozessorkomponenten bereitstellen. Nur mit den Daten in den Registern können direkt Operationen ausgeführt werden. Sie stellen daher die erste Stufe der Speicherhierarchie dar.

  • Arbeitsregister können Daten (als Datenregister) und, abhängig vom Prozessortyp, auch Adressen (als Adressregister) aufnehmen.
  • Das Befehlszählregister nimmt immer die Adresse des Befehls auf, der als Nächstes ausgeführt werden soll. Es wird daher auch häufig Instruction Pointer (IP) genannt.
  • Das Befehlsregister nimmt binäre Maschinenbefehle auf.

Von den Eigenschaften und insbesondere der Größe der Register (abhängig vom Prozessortyp) hängt u. a. die Leistungsfähigkeit des jeweiligen Prozessors ab.

Rechenwerk

Das Rechenwerk (Arithmetisch-logische Einheit, ALU) führt die Elementaroperationen eines Rechners durch. Es kann sowohl arithmetische (etwa die Addition zweier Zahlen) als auch logische (etwa AND oder OR) Operationen ausführen.

Befehlsdecoder

Der Befehlsdecoder übersetzt binäre Maschinenbefehle mit Hilfe der Befehlstabelle (engl. Instruction Table) in entsprechende Anweisungen, welche die für die Ausführung des Befehls benötigten Schaltungen aktivieren.

Steuerwerk

Das Steuerwerk kontrolliert die Ausführung der Anweisungen. Es sorgt dafür, dass der Maschinenbefehl im Befehlsregister vom Befehlsdecoder decodiert und vom Rechenwerk ausgeführt wird, lädt den an der im Befehlszählerregister hinterlegten Adresse befindlichen Befehl ins Befehlsregister sowie die nächste Adresse ins Befehlszählerregister.

Datenleitungen

Über verschiedene Busse (Signalleitungen) ist der Prozessor mit anderen Komponenten verbunden.

  • Über den Datenbus werden Daten mit dem Arbeitsspeicher ausgetauscht, etwa die Informationen für die Arbeitsregister und das Befehlsregister. Je nach verwendeter Prozessorarchitektur hat ein Hauptprozessor (eine CPU) einen einzigen Bus für Daten aus dem Arbeitsspeicher (Von-Neumann-Architektur) oder mehrere (meist zwei) separate Datenleitungen für den Programmcode und normale Daten (Harvard-Architektur).
  • Der Adressbus dient zur Übertragung von Speicheradressen. Dabei wird jeweils eine Speicherzelle des RAM adressiert (ausgewählt) in die – je nach Signal des Steuerbusses – die Daten, die gerade auf dem Datenbus liegen, geschrieben oder aus denen die Daten gelesen, d. h. auf den Datenbus gelegt, werden.
  • Mit dem Steuerbus (Kontrollbus) steuert der Prozessor u. a. die Peripherie-Anschlüsse (z. B. USB, PCI) an.

Caches

Moderne Prozessoren, die in PCs oder anderen Geräten, die eine schnelle Datenverarbeitung benötigen, eingesetzt werden, sind mit sogenannten Caches ausgestattet. Caches sind Zwischenspeicher, die die letzten verarbeiteten Daten und Befehle enthalten und so die rasche Wiederverwendung ermöglichen. Sie stellen die zweite Stufe der Speicherhierarchie dar. Normalerweise besitzt ein Prozessor heutzutage bis zu drei verschiedene Caches:

  • Level-1-Cache (L1-Cache): Dieser Cache läuft mit dem Prozessortakt. Er ist sehr klein (etwa 4 bis 256 Kilobyte), dafür aufgrund seiner Position im Prozessorkern selbst sehr schnell abrufbar.
  • Level-2-Cache (L2-Cache): Der L2-Cache befindet sich meist im Prozessor, aber nicht im Kern selbst. Er umfasst zwischen 64 Kilobyte und 12 Megabyte.
  • Level-3-Cache (L3-Cache): Bei Mehrkernprozessoren teilen sich die einzelnen Kerne den L3-Cache. Er ist der langsamste der drei Caches, aber auch der größte (bis zu 256 Megabyte).

Weitere

Zur Erhöhung der Rechengeschwindigkeit können Prozessoren mit besonderen (etwa einem Hardwaremultiplizierer) bzw. zusätzlichen (etwa einem Gleitkommarechenwerk) Rechenwerken ausgestattet sein. Zur effizienteren Bearbeitung von Befehlen werden Pipelines verwendet.

Funktionsweise

Die Befehlsbearbeitung moderner Prozessoren folgt dem Von-Neumann-Zyklus.

  1. Aus dem Befehlszählregister wird die Adresse des nächsten Maschinenbefehls gelesen. Dieser wird aus dem Arbeitsspeicher in das Befehlsregister geladen. (FETCH)
  2. Der Befehlsdecoder decodiert den Befehl und aktiviert entsprechende Schaltungen, die für die Ausführung des Befehls nötig sind. (DECODE)
  3. Von der Festplatte, einem Wechseldatenträger, dem Arbeitsspeicher oder einem Cache-Speicher werden Daten in die Arbeitsregister geladen, die zur Ausführung nötig sind (etwa zu verändernde Werte oder benötigte Parameter). (FETCH OPERANDS)
  4. Der Befehl wird ausgeführt. Dies kann die Ansteuerung von Peripheriegeräten, die Ausführung von Operationen im Rechenwerk oder ein Sprung im Programm (eine Veränderung des Befehlszählerregisters) sein. (EXECUTE)
  5. Sollte kein Sprungbefehl in der EXECUTE-Phase erfolgt sein, wird nun der Befehlszähler um 1 erhöht (UPDATE INSTRUCTION POINTER)

Gelegentlich unterscheidet man auch noch eine Rückschreibphase, in der eventuell anfallende Rechenergebnisse in bestimmte Register geschrieben werden. Erwähnt werden sollten noch sogenannte Hardware-Interrupts. Die Hardware eines Computers kann Anfragen an den Prozessor stellen. Da diese Anfragen asynchron auftreten, ist der Prozessor gezwungen, regelmäßig zu prüfen, ob solche vorliegen und diese eventuell vor der Fortsetzung des eigentlichen Programms bearbeiten.

Steuerung

Alle Programme liegen letztlich als eine Folge von binären Maschinenbefehlen im Speicher. Nur diese Befehle können vom Prozessor verarbeitet werden. Dieser Code ist für einen Menschen jedoch beinahe unmöglich zu lesen. Aus diesem Grund werden Programme zunächst in Assemblersprache oder einer Hochsprache (etwa BASIC, C, C++, Java) geschrieben und dann von einem Compiler in eine ausführbare Datei, also in Maschinensprache übersetzt oder einem Interpreter zur Laufzeit ausgeführt.

Symbolische Maschinenbefehle

Um es zu ermöglichen, Programme in akzeptabler Zeit und verständlich zu schreiben, wurde eine symbolische Schreibweise für Maschinenbefehle eingeführt, die Assemblersprache. Einem Maschinenbefehl wird dabei genau ein Schlüsselwort in der Assemblersprache zugeordnet. Damit ist auch der Rückschluss von den Maschinenbefehlen auf das Assemblerprogramm möglich (Disassemblierung). Da jeder Prozessortyp eigene Maschinenbefehle besitzt, existiert für ihn auch eine eigene Assemblersprache. Prozessorunabhängige Programmierung ist erst mit der Benutzung einer Hochsprache möglich, der entsprechende Compiler ist jedoch wieder prozessorspezifisch. Befehle, die für jeden Prozessor gebraucht werden, sind normalerweise identisch. Die Reihenfolge der Ausführung der Assemblerbefehle ist vom Prozessortyp abhängig, in den nachfolgenden Beispielen erfolgt sie von rechts nach links:

  • MOV BX, $85F3 Der Wert, der an der Adresse 85F3 (hexadezimale Schreibweise) im Arbeitsspeicher liegt, wird in das Arbeitsregister BX geladen.
  • ADD BX, 15 Der Wert 15 wird zum Inhalt des Arbeitsregisters BX addiert.

Binäre Maschinenbefehle

Maschinenbefehle sind sehr prozessorspezifisch und bestehen aus mehreren Teilen. Diese umfassen zumindest den eigentlichen Befehl, den Operationscode (OP-CODE), die Adressierungsart, und den Operandenwert oder eine Adresse. Sie können grob in folgende Kategorien eingeteilt werden:

  • Arithmetische Befehle
  • Logische Befehle
  • Sprungbefehle
  • Transportbefehle
  • Prozessorkontrollbefehle

Befehlssatz

Der Befehlssatz bezeichnet die Menge der Maschinenbefehle eines Prozessors. Der Umfang des Befehlssatzes variiert je nach Prozessortyp beträchtlich. Nach der Größe des Befehlssatzes kann man zwischen CISC (engl. Complex Instruction Set Computing - Rechnen mit komplexem Befehlssatz)- und RISC (engl. Reduced Instruction Set Computing - Rechnen mit reduziertem Befehlssatz)-Prozessorarchitekturen unterscheiden:

  • Die traditionelle CISC-Architektur versucht, immer mehr und immer komplexere Funktionen direkt durch Maschinenbefehle auszudrücken. Sie zeichnet sich besonders durch die große Anzahl zur Verfügung stehender Maschinenbefehle aus, die meist 100 überschreitet. Diese sind außerdem in der Lage, vielschrittige Operationen direkt auszuführen (etwa Gleitpunkt-Operationen). Dadurch sind die erforderlichen Übersetzungsprogramme (Assembler, Compiler und Interpreter) kleiner und einfacher zu programmieren.
  • Die neuere RISC-Architektur versucht, möglichst wenige (weniger als 100), dafür jedoch sehr schnelle und einfache Befehle zur Verfügung zu stellen. Dies ermöglicht eine wesentlich schnellere Ausführungsgeschwindigkeit, da weniger Taktzyklen benötigt werden und die Dekodierung aufgrund geringerer Komplexität schneller ist. Auch das Design von Prozessoren mit RISC-Architektur ist einfacher.

Zusätzlich unterscheidet man auch noch zwischen der Adressanzahl im Maschinenbefehl:

  • 0-Adressbefehle (Stackrechner)
  • 1-Adressbefehle (Akkumulatorrechner)
  • 2-Adressbefehle (typischerweise CISC-Rechner)
  • 3-Adressbefehle (typischerweise RISC-Rechner)

Befehlsbearbeitung

Meisten Prozessoren (inkl. heutiger Mikroprozessoren) entsprechen im Wesentlichen der Von-Neumann-Architektur und die Befehlsbearbeitung folgt daher weitgehend nach dem Von-Neumann-Zyklus. Die wichtigsten Phasen sind dabei das Laden des Befehls (FETCH), seine Dekodierung (DECODE) und seine Ausführung (EXECUTE). Gelegentlich unterscheidet man auch noch das Laden der Operanden (FETCH OPERANDS) und eine Rückschreibphase (WRITE BACK), in der die Rechenergebnisse in bestimmte Register geschrieben werden.

Da moderne Mikroprozessoren parallele Techniken wie etwa Pipelining und Superskalarität einsetzen, werden unter Umständen mehrere Befehle parallel in dieser Weise bearbeitet, wobei die einzelnen Teilschritte leicht versetzt zu einander sind.

Neben der geordneten Befehlsausführung nach dem Von-Neumann-Zyklus beherrschen vor allem moderne Hochleistungsprozessoren weitere Techniken, um die Programmabarbeitung zu beschleunigen. Ein Verfahren ist die ungeordnete Befehlsausführung (engl. Out-of-order execution), bei der die Befehle nicht strikt nach der durch das Programm vorgegebenen Reihenfolge ausgeführt wird, sondern der Prozessor die Reihenfolge der Befehle selbständig versucht zu optimieren. Die Motivation für eine Abweichung von der vorgegebenen Befehlsfolge besteht darin, dass aufgrund von Verzweigungsbefehlen der Programmlauf nicht immer sicher vorhergesehen werden kann. Möchte man Befehle bis zu einem gewissen Grad parallel ausführen, so ist es in diesen Fällen notwendig, sich für eine Verzweigung zu entscheiden und die jeweilige Befehlsfolge spekulativ auszuführen. Es ist dann möglich, dass der weitere Programmlauf dazu führt, dass eine andere Befehlsfolge ausgeführt werden muss, so dass die spekulativ ausgeführten Befehle wieder rückgängig gemacht werden müssen. In diesem Sinne spricht man von einer ungeordneten Befehlsausführung.

Leistungsmerkmale

Die Leistung eines Prozessors wird maßgeblich durch die Anzahl der Transistoren sowie durch die Wortbreite und den Prozessortakt bestimmt.

Wortbreite

Die Wortbreite legt fest, wie lang ein Maschinenwort des Prozessors sein kann, d. h. aus wie vielen Bits es maximal bestehen kann. Ausschlaggebend sind dabei folgende Werte:

  • Arbeits- oder Datenregister: Die Wortbreite bestimmt die maximale Größe der verarbeitbaren Ganz- und Gleitkommazahlen.
  • Datenbus: Die Wortbreite legt fest, wie viele Bits gleichzeitig aus dem Arbeitsspeicher gelesen werden können.
  • Adressbus: Die Wortbreite legt die maximale Größe einer Speicheradresse, d. h. die maximale Größe des Arbeitsspeichers, fest.
  • Steuerbus: Die Wortbreite legt die Art der Peripherieanschlüsse fest.

Die Wortbreite dieser Einheiten stimmt im Normalfall überein, bei aktuellen PCs beträgt sie 32 bzw. 64 Bit.

Prozessortakt

Das Taktsignal (engl. clock rate) wird besonders in der Werbung oft als Beurteilungskriterium für einen Prozessor präsentiert. Es wird allerdings nicht vom Prozessor selbst bestimmt, sondern ist ein Vielfaches des Mainboard-Grundtaktes. Dieser Multiplikator und der Grundtakt lässt sich bei einigen Mainboards manuell oder im BIOS einstellen, was als Über- oder Untertakten bezeichnet wird. Bei vielen Prozessoren ist der Multiplikator jedoch gesperrt, sodass er entweder gar nicht verändert werden kann oder nur bestimmte Werte zulässig sind (oft ist der Standardwert gleichzeitig der Maximalwert, sodass über den Multiplikator nur Untertakten möglich ist). Das Übertakten kann zu irreparablen Schäden an der Hardware führen.

CPU-Ausführungszeit = CPU-Taktzyklen × Taktzykluszeit

Weiterhin gilt:

Taktzykluszeit = 1 / Taktrate = Programmbefehle × CPI × Taktzykluszeit

Die Geschwindigkeit des gesamten Systems ist jedoch auch von der Größe der Caches, des Arbeitsspeichers und anderen Faktoren abhängig.

Einige Prozessoren haben die Möglichkeit die Taktrate zu erhöhen, bzw. zu erniedrigen, wenn es nötig ist. Zum Beispiel wenn hochauflösende Videos angeschaut oder Spiele gespielt werden, die hohe Anforderungen an das System stellen, oder umgekehrt der Prozessor nicht stark beansprucht wird.

Verschiedene Architekturen

Grundarchitekturen

Die beiden wesentlichen Grundarchitekturen für CPUs sind die Von-Neumann- und die Harvard-Architektur.

Bei der nach dem Mathematiker John von Neumann benannten Von-Neumann-Architektur gibt es keine Trennung zwischen dem Speicher für Daten und Programmcode. Dagegen sind bei der Harvard-Architektur Daten und Programm(e) in strikt voneinander getrennten Speicher- und Adressräumen abgelegt, auf die typischerweise durch zwei separierte Bussysteme parallel zugegriffen wird.

Beide Architekturen haben ihre spezifischen Vor- und Nachteile. Die Von-Neumann-Architektur ist aus der Sicht des Programmierers einfacher, da ein deterministischer Programmablauf durch den einzelnen Bus, über den die CPU auf Daten und Programm zugreift, sichergestellt ist. Auch erlaubt die Möglichkeit, auf Programmcode wie auf Daten schreibend zuzugreifen, selbst modifizierenden Code. Andererseits kann solche Selbstmodifikation auch durch Programmfehler zu noch größeren Fehlern führen.

Durch die Trennung in zwei physikalische Speicher und Busse hat die Harvard-Architektur potenziell eine höhere Leistungsfähigkeit, da Daten- und Programmzugriffe parallel erfolgen können. Jedoch sind Race Conditions bei solchen parallelen Zugriffen, die zu einem nicht-deterministischen Programmverhalten führen können, nicht ausgeschlossen. Bei einer Harvard-Architektur sind durch die physikalische Trennung von Daten und Programm einfach eine Zugriffsrechtetrennung und Speicherschutz realisierbar. Um z. B. zu verhindern, dass bei Softwarefehlern Programmcode überschrieben werden kann, wurde (vor allem historisch) für Programmcode ein im Betrieb nur lesbarer Speicher (z. B. ROM, Lochkarten) verwendet, für die Daten dagegen schreib- und lesbarer Speicher (z. B. RAM, Ringkernspeicher). Nachteilig ist allerdings, dass nicht benötigter Datenspeicher nicht als Programmspeicher genutzt werden kann, also eine erhöhte Speicherfragmentierung auftritt.

Praktisch alle modernen CPUs stellen sich aus Programmsicht als Von-Neumann-Architektur dar, d. h. stellen einen deterministischen Programmablauf sicher, ihr interner Aufbau entspricht aber aus Leistungsgründen in vielen Aspekten eher einer parallelen Harvard-Architektur. So ist es nicht unüblich, dass eine CPU intern mehrere unabhängige Datenpfade (insbesondere beim L1-Cache) und Cachehierarchiestufen besitzt, um mit möglichst vielen parallelen Datenpfaden eine hohe Leistung zu erzielen. Die dadurch potenziell möglichen Daten-Inkohärenzen und Zugriffs-Race-Conditions werden intern durch aufwändige Datenprotokolle und -management verhindert.

Einfache oder komplexe Befehle

Mit zunehmender Leistungsfähigkeit der Halbleitertechnik entstanden CPUs mit immer komplexeren Befehlen. Diese Art von Prozessoren werden als CISC oder „Complex Instruction Set Computer“ bezeichnet. Das Nebeneinander von komplexen (langwierigen) und einfachen (schnell ausführbaren) Befehlen macht ein effizientes Prozessordesign schwierig, besonders das Pipelinedesign. In den 1980er Jahren entstand als Reaktion darauf das RISC-Konzept, mit dem bewussten Verzicht auf das Bereitstellen von komplexer Funktionalität in Instruktionsform und dem ausschließlichen Bereitstellen einfacher, untereinander ähnlich komplexer Instruktionen. Hierdurch vereinfachte sich das Prozessordesign deutlich und ermöglichte Optimierungen, die üblicherweise höhere Prozessortaktung erlauben. Dies bedeutete aber auch eine Verschiebung zur Software als Bereitsteller komplexerer Funktionalität, der Compiler hat nun die Aufgabe einer effizienten und korrekten Umsetzung mit dem vereinfachten Instruktionsatz.

Bei aktuellen CPUs ist die Unterscheidung zwischen RISC und CISC kaum noch möglich. Die weit verbreitete x86-Architektur als typischer Vertreter der CISC-Klasse ist intern eigentlich längst eine RISC-Architektur, die die bereitgestellten komplexeren Befehle intern in einfachen, RISC-artigen µ-Code zerlegt.

Eine weitere Art von Methoden sind VLIW. Dort werden mehrere Instruktionen in einem Wort zusammengefasst. Dadurch ist vom Anfang an definiert, auf welcher Einheit welche Instruktion läuft. Out-of-Order-Ausführung, wie sie in modernen Prozessoren zu finden ist, gibt es bei dieser Art von Befehlen nicht.

Design und Fertigung aktueller CPUs

Moderne CPUs bestehen üblicherweise aus mehreren, übereinanderliegenden Schichten von dotiertem Silizium, die Millionen von Transistoren bilden, deren Schaltvorgänge die Rechenleistung bereitstellen.

CPUs werden aufgrund 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 standhalten, 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, der optimal an Randbedingungen wie Cachegrößen, Speicherbandbreite und -latenzen sowie die internen Funktionseinheiten angepasst wird.

Der in einer Hardwarebeschreibungssprache vorliegende logische Entwurf des Prozessors wird sodann an einen Hochleistungscomputer übergeben, der die Leiterbahnen routet, d. h., eine optimale Anordnung mit möglichst wenig Transistoren sowie minimaler Verlustleistung zu ermitteln sucht (sogenannte Technology Binding oder Technology Mapping). Da diese Routingprobleme NP-vollständig sind, sind nur Näherungsberechnungen möglich, die sich im Detail noch erheblich verbessern lassen. Aus diesen Bahnberechnungen werden Masken erstellt, die mittels Fotolithografie 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 einziger Fehler den gesamten Prozessor unbrauchbar machen kann.

In der Endkontrolle werden die Prozessoren schließlich hinsichtlich ihrer Taktfestigkeit klassifiziert, wobei anhand eines für jeden Prozessortyp individuell entwickelten Testprogramms physikalische Eigenschaften wie Signalpegel bei verschiedenen Takten überprüft werden. Hierbei wird besonders auf laufzeitkritische Signalwege auf dem CPU-Die geachtet, um Speed Paths (Fehler durch Signalverzögerungen) zu verhindern.

Allgemein lässt sich feststellen, dass der Validierungsaufwand moderner Prozessoren gewaltige Ausmaße angenommen hat, und trotz aller Anstrengungen nicht alle Fehlersituationen vor der Auslieferung überprüft werden können. Der letzte in allen Funktionen (und Fehlern!) vollständig verifizierte x86-Prozessor war der 80286. Daher liefern alle Hersteller sogenannte Errata-Listen, in denen Fehler aufgelistet werden. So musste beispielsweise Intel den berühmten FDIV-Bug in frühen Pentium-CPUs eingestehen, der auf mehrere fehlende Einträge in einer internen Lookup-Tabelle der FPU zurückzuführen ist.

Im Laufe der Zeit vergrößerte sich aufgrund der immer besser werdenden Technik die Anzahl der vom Prozessor unterstützten Befehle. Heute finden sich überwiegend 32- und 64-Bit-Prozessoren, wobei die gängigsten Betriebssysteme für den Anwender 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 in den 1980er Jahren entwickelten 386er waren die ersten 32-Bit-Prozessoren der Intel 80x86-Familie.

Im Jahre 2006 wurde von der Firma ARM der erste kommerzielle ungetaktete, asynchrone Prozessor vorgestellt, der ARM996HS. Da er ohne Taktung auskommt, weist ein asynchroner Prozessor eine im Hochfrequenzbereich geringere und wesentlich weniger prägnante Abstrahlung auf und verbraucht während Prozesspausen keinen nennenswerten Strom.

Anwendungsbereich

Im Bereich der Personal Computer 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 Mikrocontrollern beispielsweise in Motorsteuergeräten, Uhren, Druckern sowie einer Vielzahl elektronisch gesteuerter Geräte.

Hauptprozessor, CPU und Prozessorkern

Begriffenutzung

Wie bereits erwähnt besteht ein Prozessor primär aus dem Steuer-/Leit- und dem Rechenwerk (ALU). Es gibt jedoch weitere Recheneinheiten, die zwar kein Steuer- bzw. Leitwerk enthalten, aber dennoch oft ebenfalls als Prozessor bezeichnet werden. Diese im Allgemeinen Koprozessor genannten Einheiten stellen in der Regel spezialisierte Funktionen zur Verfügung. Beispiele sind die Gleitkommaeinheit sowie Grafik- und Soundprozessoren. Zur Abgrenzung dieser Koprozessoren zu einen „echten“ Prozessor mit Steuer- und Rechenwerk wird der Begriff CPU ([ˌsi: pi: ˈju:], englisch central processing unit [ˈsɛntɹəl ˈpɹəʊsɛsɪŋ ˈju:nɪt]) oder zu deutsch Hauptprozessor genutzt.

Moderne Mikroprozessoren sind häufig als sogenannte Mehrkernprozessoren (Multi-Core-Prozessoren) ausgelegt. Sie erlauben zusammen mit entsprechender Software eine weitere Steigerung der Gesamtrechenleistung ohne eine merkliche Erhöhung der Taktfrequenz (Die bis in die 2000er Jahre übliche Technik die Rechenleistung eines Mikroprozessors zu erhöhen). Mehrkernprozessor bestehen aus mehreren voneinander unabhängigen Einheiten mit einem Rechen- und Steuerwerk, um die herum weitere Komponenten wie Cache und Memory Management Unit (MMU) angeordnet sind. Diese Einheiten werden als Prozessorkern (engl. „core“) bezeichnet. Im Sprachgebrauch sind die Begriffe Single-Core-Prozessor (Einzelkernprozessor), Dual-Core-, Triple-Core-, Quad-Core-, Hexa-Core-Prozessor (Sechskernprozessor) und Octa-Core-Prozessor (Achtkernprozessor) gebräuchlich. Da sie Kerne eigenständige Prozessoren sind, werden die einzelnen Kerne häufig auch als CPU bezeichnet. Diese Bezeichnung „CPU“ wird synonym zu „Core“ genutzt, beispielsweise um in Mehrkernprozessoren mit weiteren integriertem Recheneinheiten, z. B. einem Grafikprozessor (GPU, vgl. Accelerated Processing Unit, APU) die Kerne mit Steuer- und Rechenwerk von den anderen Einheiten zu unterscheiden.[4]

Die klassische Einteilung, dass ein Steuerwerk und eine ALU als ein CPU, Kern bzw. Prozessor bezeichnet werden, verschwimmt zunehmend. Heutige Prozessoren (auch Einkernprozessoren) besitzen oft Steuerwerke, die jeweils mehrere Hardware-Threads verwalten (Multi-/Hyper-Threading); das Betriebssystem „sieht“ mehr Prozessorkerne, als tatsächlich (vollwertige) Steuerwerke vorhanden sind. Außerdem betreibt ein Steuerwerk oft mehrere ALUs sowie noch weitere Baugruppen wie z. B. Gleitkomma-Recheneinheit, Vektoreinheit (siehe auch AltiVec, SSE) oder eine Kryptographie-Einheit. Umgekehrt müssen sich manchmal mehrere Steuerwerke diese Spezial-Recheneinheiten teilen, was eine eindeutige Zuordnung verhindert.

Übertragene Bedeutungen des Begriffs „CPU“

Erste Erwähnungen des Begriffes CPU gehen in die Anfänge der 1950er Jahre zurück. So wurde in einer Broschüre von IBM (705 EDPM) von 1955 der Begriff „Central Processing Unit“ zuerst ausgeschrieben, später mit der Abkürzung CPU in Klammern ergänzt und danach nur noch in seiner Kurzform verwendet. Ältere IBM-Broschüren verwenden den Begriff nicht, so z. B. die Broschüre „Magnetic Cores for Memory in Microseconds in a Great New IBM Electronic Data Processing Machine for Business“ von 1954, in der zwar ebenfalls die IBM 705 dargestellt wird, an den entsprechenden Stellen jedoch lediglich von „data processing“ die Rede ist.

Der Begriff CPU wird umgangssprachlich auch in anderem Kontext für Zentraleinheit (ZE) benutzt, hierbei kann dies für einen zentralen Hauptrechner (ein kompletter Computer) stehen, an dem einzelne Terminal-Arbeitsstationen angeschlossen sind. Teilweise wird der Begriff auch als Metapher benutzt, bei Computerspielen zum Beispiel als „Ein Spiel gegen die CPU“.

Siehe auch

Literatur

  • Helmut Herold, Bruno Lurz, Jürgen Wohlrab: Grundlagen der Informatik. Pearson Studium, München 2007, ISBN 978-3-8273-7305-2.

Weblinks

Wiktionary: Prozessor – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen
Wiktionary: CPU – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen

Einzelnachweise

  1. Dieter Sautter, Hans Weinerth: Lexikon Elektronik Und Mikroelektronik. Springer, 1993, ISBN 978-3-642-58006-2, S. 825 (eingeschränkte Vorschau in der Google-Buchsuche).
  2. Peter Fischer, Peter Hofer: Lexikon Der Informatik. Springer, 2011, ISBN 978-3-642-15126-2, S. 710 (eingeschränkte Vorschau in der Google-Buchsuche).
  3. Helmut Herold, Bruno Lurz, Jürgen Wohlrab: Grundlagen der Informatik. Pearson Studium, München 2007, ISBN 978-3-8273-7305-2, S. 101.
  4. Tim Towell: [cache-www.intel.com/cd/00/00/51/62/516232_516232.pdf#page=7 Intel Architecture Based Smartphone Platforms.] (PDF) 6. November 2012, S. 7, abgerufen am 22. März 2013.