Prozessor – Wikipedia

Prozessor – Wikipedia

Einzelne Tasten meiner Tastatur funktionieren in Windows plötzlich nicht mehr - später aber...

Einzelne Tasten meiner Tastatur funktionieren in Windows plötzlich nicht mehr - später aber... - Ähnliche Themen - Einzelne Tasten Tastatur Forum Datum

Tasten funktionieren nicht mehr Tasten funktionieren nicht mehr: Hallo! Manche Tastaturtasten (5,6,z,u,h,j,n,m) funktionieren nicht mehr. Ich habe ein Lenovo Laptop. Die fn taste scheunt auch nicht zugehen, denn ich gebe fn+F6 um die Tastatur wieder in Gang zu bringen und es geht auch nicht. Was Kann ich denn tun? Vielen Dank! Windows 10 Allgemeines 1. Juni 2021

Windows 10 einzelne Tasten funktionieren nicht? Windows 10 einzelne Tasten funktionieren nicht?: Hallo, Ich habe meinen Laptop auf Windows 10 upgedatet. Auch habe ich eine neue Tastatur bestellt und diese eingebaut. Alle Treiber sind aktualisiert, was ich mitbekommen habe. Jedoch funktionieren einzelne Tasten (a, k, l, ...) nicht. Ist die neue Tastatur etwa defekt? Soll ich sie... Windows 10 Support 23. November 2020

einzelne Tasten funktionieren nicht einzelne Tasten funktionieren nicht: Bei meiner Surface3 Cover Tastatur funktionieren einige Tasten nicht. Das V, Strg+C Aktuelle Updates, entfernen und neu anschließen habe ich gemacht. Nun meint der MS-Service, es sei ein hardware-Problem, ich solle eine neue Tastatur kaufen. Könnte es auch noch ein anderes Problem sein? Windows 10 Allgemeines 24. Juni 2020

Tastaturen funktionieren die Multimedia Tasten nicht mehr! Tastaturen funktionieren die Multimedia Tasten nicht mehr!: Guten Tag. Ich habe das Problem. Das seit neuesten meine Multimedia Tasten nicht mehr funktionieren. Habe folgende Tastaturen probiert: Logitech G810 (ist die alte Tastatur ) Razer BlackWidow Elite Nach dem ich auf ne neue Tastatur gewechselt bin. Funktioniert keine dieser Tasten... Windows 10 Support 10. Januar 2019

Type-Cover: Einzelne Tasten funktionieren nicht mehr Type-Cover: Einzelne Tasten funktionieren nicht mehr: Liebe Community, seit dem letzten Update funktionieren mehrere Tasten auf meinem Type Cover nur noch selten - die T-Taste und der Punkt sind betroffen. Geht es noch jemandem so? Weiß jemand eine Lösung? Danke! Weiterlesen... Surface 4. Oktober 2018

Einzelne Tasten Funktionieren nicht Einzelne Tasten Funktionieren nicht: Einzelne Tasten Funktionieren nicht, was soll ich machen. Er ist ganz neu. Weiterlesen... Surface 4. Oktober 2018

Windows Taste und egde funktionieren plötzlich nicht mehr Windows Taste und egde funktionieren plötzlich nicht mehr: Ich habe Windows 10 fast einen Monat. Lief alles Problemlos. Heute abend den PC hoch gefahren. Plötzlich funktioniert der Windows Button (Startmenue) und egde nicht mehr. Auch in die Suchleiste (Cortana) kann ich nichts mehr eintragen. Weiterlesen... Windows 10 Support 25. September 2015

Zentralprozessor (CPU)

Zentralprozessor (CPU)

Man unterscheidet Systeme mit nur einer CPU (single processing) und Mehrprozessorsysteme (multiprocessing). Die Motherboards müssen dann für den Einbau mehrerer CPUs geeignet sein.

Ein Zentralprozessor besteht aus dem Leitwerk (Steuerwerk = „Control Unit“) und dem Rechenwerk („Arithmetical Logical Unit“ = ALU). Das Rechenwerk ist für die arithmetischen Operationen zuständig, vom Steuerwerk kommen die dazu nötigen Anweisungen. Zwischenergebnisse werden in speziellen RAM-Bereichen gespeichert, die als Register bezeichnet werden.

Schematischer Aufbau einer CPU (Quelle: Wikipedia)

Im ursprünglichen PC-Prozessor intel 8086 gab es 14 Register. Obwohl in neueren Prozessoren die Registerbreite zugenommen hat, gilt das ursprüngliche Konzept noch heute:

Hauptregister AX, BX, CX, DX: Sie waren jeweils 16 Bit breit und dienten zur Speicherung von Daten. Das Register AX wird oft auch als Akkumulator bezeichnet; BX als Basisregister, CX als Zählerregister (count register) und DX als Datenregister.

AX, BX, CX, DX: Sie waren jeweils 16 Bit breit und dienten zur Speicherung von Daten. Das Register AX wird oft auch als Akkumulator bezeichnet; BX als Basisregister, CX als Zählerregister (count register) und DX als Datenregister. Segmentregister SS, CS, ES, DS: Die Stacksegment-, Codesegment-, Extrasegment- und Datensegment-Register werden verwendet, um Programme in einzelne Bereiche aufzuteilen. Bei der Ausführung des Programms werden den Segmentregistern die Basiswerte für jedes Segment zugewiesen.

SS, CS, ES, DS: Die Stacksegment-, Codesegment-, Extrasegment- und Datensegment-Register werden verwendet, um Programme in einzelne Bereiche aufzuteilen. Bei der Ausführung des Programms werden den Segmentregistern die Basiswerte für jedes Segment zugewiesen. Offsetregister SI, DI (Source, Destination): Diese Register werden benötigt, um – ausgehend von den Segmentadressen – auf weitere Werte zuzugreifen.

SI, DI (Source, Destination): Diese Register werden benötigt, um – ausgehend von den Segmentadressen – auf weitere Werte zuzugreifen. Stack Pointer SP: Enthält die Adresse des Stacks (Stapelspeichers). Im Stack werden von Programmen benötigte Werte temporär abgelegt. Dieser Speicherbereich ist als LIFO (Last-in-First-out) organisiert.

Enthält die Adresse des Stacks (Stapelspeichers). Im Stack werden von Programmen benötigte Werte temporär abgelegt. Dieser Speicherbereich ist als LIFO (Last-in-First-out) organisiert. Befehlszeiger, Instruction Pointer IP: Zeigt auf den als nächstes auszuführenden Befehl. Ein Pentium-Prozessor enthält in seinem Befehlssatz noch alle Befehle, die der 8086 hatte. Genauso verhält es sich mit den 32 bit-Registern ( IA-32, Intel Architecture 32 bit ), welche die ursprünglichen 16 bit-Register weiterhin als Untergruppe enthalten. In der folgenden Abbildung sind die wichtigsten Register eines 80386-Prozessors dargestellt, welcher 1985 der erste Prozessor auf dem Markt mit 32 bit-Architektur war:

Instruction Pointer IP: Zeigt auf den als nächstes auszuführenden Befehl. Ein Pentium-Prozessor enthält in seinem Befehlssatz noch alle Befehle, die der 8086 hatte. Genauso verhält es sich mit den 32 bit-Registern ( ), welche die ursprünglichen 16 bit-Register weiterhin als Untergruppe enthalten. In der folgenden Abbildung sind die wichtigsten Register eines 80386-Prozessors dargestellt, welcher 1985 der erste Prozessor auf dem Markt mit 32 bit-Architektur war: Allzweckregister:

Hauptregister EAX, EBX, ECX, EDX: Das E bedeutet „extended“ (wegen der Erweiterung von 16 Bit auf 32 Bit); die jeweils untere Hälfte kann mit AX, BX, CX, DX angesprochen werden und entspricht den Hauptregistern im 8086-Prozessor.

EAX, EBX, ECX, EDX: Das E bedeutet „extended“ (wegen der Erweiterung von 16 Bit auf 32 Bit); die jeweils untere Hälfte kann mit AX, BX, CX, DX angesprochen werden und entspricht den Hauptregistern im 8086-Prozessor. Stack Pointer ESP, EBP: Stack-Adressierung; dabei zeigt ESP auf die Spitze des Stacks, d.h. auf das zuletzt gebrauchte Wort, mit EBP wird der Stack frei adressiert.

ESP, EBP: Stack-Adressierung; dabei zeigt ESP auf die Spitze des Stacks, d.h. auf das zuletzt gebrauchte Wort, mit EBP wird der Stack frei adressiert. Offsetregister EDI, ESI: Diese Register werden nun für String-Operationen benötigt (String = Zeichenkette), wobei ESI auf die Datenquelle zeigt (extended source index) und EDI auf das Ziel (extended destination index)

Segmentregister: SS, CS, ES, DS sowie FS, GS: noch immer 16 Bit; existieren wegen der notwendigen Kompatibilität zum 8086-Prozessor; siehe oben. Die Register FS und GS sind neu.

SS, CS, ES, DS sowie FS, GS: noch immer 16 Bit; existieren wegen der notwendigen Kompatibilität zum 8086-Prozessor; siehe oben. Die Register FS und GS sind neu. Extended Instruction Pointer EIP: Zeigt auf den als nächstes auszuführenden Befehl.

EIP: Zeigt auf den als nächstes auszuführenden Befehl. Extended Flags EFlags: Dieses Register unterscheidet sich insofern von allen anderen Registern, als die Flipflops einzeln gesetzt werden können; jedes Flipflop (welches einem Bit entspricht) hat dabei eine spezielle Bedeutung. Dabei unterscheidet man Statusflags und Steuerflags. Statusflags sagen etwas über das Ergebnis einer arithmetischen Operation aus, während Steuerflags dazu dienen, den Prozessor zu steuern.

Wichtige Register des 80386

Mit der Einführung der 64-Bit-Architektur (amd64, auch: x86-64) kam es zu einer weiteren Erweiterung der Register unter Beibehaltung der Kompatibilität zur 32 Bit-Architektur. Das Konzept wurde von AMD im Jahr 2000 vorgestellt, die ersten Prozessoren kamen 2003 auf den Markt.

Allzweckregister : statt 8 Registern stehen nun 16 Allzweckegister zur Verfügung.

: statt 8 Registern stehen nun 16 Allzweckegister zur Verfügung. Hauptregister RAX, RBX, RCX, RDX: Im 32 Bit-Modus werden wieder nur 32 Bit von diesen Registern benutzt, diese heißen dann wieder EAX usw.; die dann nicht genutzten oberen 32 Bit werden auf 0 gesetzt.

RAX, RBX, RCX, RDX: Im 32 Bit-Modus werden wieder nur 32 Bit von diesen Registern benutzt, diese heißen dann wieder EAX usw.; die dann nicht genutzten oberen 32 Bit werden auf 0 gesetzt. Stack Pointer , ,ehemalige Offsetregister RSP, RBP, RDI, RSI; analog 80386

, ,ehemalige RSP, RBP, RDI, RSI; analog 80386 R8-R15: Diese Register stehen ausschließlich im 64 Bit-Modus zur Verfügung.

Diese Register stehen ausschließlich im 64 Bit-Modus zur Verfügung. RFlags, RIP: entsprechen EFlags und EIP, selbe Bedeutung

Im 64-Bit-Modus wird keine Speichersegmentierung mehr unterstützt, dadurch können Systemaufrufe wesentlich schneller abgearbeitet werden.

Die Inhalte der Register können unter Windows mit dem Tool WinDbg angezeigt werden, welches Bestandteil des Windows 10 Software Development Kit (Windows 10 SDK) ist.

Anzeige der Registerinhalte mit WinDbg

Im Folgenden werden wesentliche Leistungsmerkmale eines Prozessors besprochen. Oft verwendet man das englische Wort „Performance“ für die Leistung eines Systems.

Befehlssatz

Ein Prozessor hat die Aufgabe, die durch ein Programm an ihn gerichteten Befehle zu verarbeiten. Jeder Prozessor hat eine unterschiedliche Sammlung von Befehlen, die er „versteht“. Programme dürfen daher nur aus Befehlen bestehen, die der Prozessor ausführen kann. So sind Programme, die für einen Apple-Computer mit dem Prozessor M 68030 geschrieben sind, nicht auf einem PC mit einem Pentium III-Prozessor ausführbar. Sie sind „nicht kompatibel“.

Nach der Anzahl der Prozessorbefehle unterscheidet man heute zwei große Gruppen:

CISC-Prozessoren (complex instruction set computer): Prozessoren mit dem vollen Sprachvorrat (einige hundert Maschinensprachebefehle). Klassische Linie der Prozessortechnik, heute vor allem durch die 80X86-Linie von INTEL und die 68XXX-Linie von MOTOROLA vertreten.

RISC-Prozessoren (reduced instruction set computer), d.h. ein Prozessor mit reduziertem Befehlssatz. Programme für solche Prozessoren sind zwar länger, aber wesentlich schneller. Diese Technik ist neuer, daher existieren noch nicht so viele Prozessoren auf dem Markt.

Taktfrequenz

Außerdem ist noch ein Taktgeber nötig, das ist ein speziell gefertigter Quarzkristall, der zusammen mit einer Hilfsschaltung regelmäßige Impulse über die so genannte „Taktleitung“ (auch: Clock-Leitung) an die CPU weitergibt. Charakteristisch für eine CPU ist also die sogenannte Taktfrequenz. Die Taktfrequenz wird in Megahertz, angegeben (1 MHz = 106 Schwingungen/s), die neuesten Prozessoren (Stand: 2020) arbeiten bereits mit 5 GHz und mehr (1 Gigahertz = 1000 MHz).

Die Taktfrequenz ist maßgeblich für die Verarbeitungsgeschwindigkeit des Prozessors. Der Takt steuert unmittelbar die Befehlsausführung des Prozessors. Die Geschwindigkeit des Prozessors wird meist durch die Anzahl der durchführbaren Prozessorbefehle oder Rechenoperationen in einer Sekunde angegeben:

IPS instructions per second : Diese Einheit ist in erster Linie von der CPU abhängig. Sie gibt an, wie viele Maschinenbefehle ein Mikroprozessor pro Sekunde ausführen kann. Beispiel: Ein Intel Core i7-8086K kommt bei 5,0 GHz auf 221 720 MIPS (1 MIPS = 10 6 IPS).

instructions per second : Diese Einheit ist in erster Linie von der CPU abhängig. Sie gibt an, wie viele Maschinenbefehle ein Mikroprozessor pro Sekunde ausführen kann. Beispiel: Ein Intel Core i7-8086K kommt bei 5,0 GHz auf 221 720 MIPS (1 MIPS = 10 IPS). FLOPS floating point operations per second: Durch diese Einheit wird die Leistungsfähigkeit der gesamten Rechnerarchitektur gemessen (also RAM, Bussystem, CPU). Die Berechnung erfolgt durch Multiplikation folgender Werte:

Taktfrequenz, Anzahl der CPU-Sockel-Anzahl physischer CPU-Kerne pro Sockel,Anzahl virtueller Kerne pro physischem CPU-Kern, Anzahl begonnene Befehle pro Takt, Datenworte pro Rechenregister ,nummerische Operationen pro Befehl

Beispiel: Taktfrequenz 2,5 GHz, 2 Sockel, 24 physische Kerne, 2 virtuelle Kerne pro physischem Kern, 2 angefangene Befehle pro Takt, 8 Datenworte pro Rechenregister (256 Bit-Register), 2 numerische Operationen pro Befehl = 7,68 TFLOPS. Ein Intel Core i7-7700K, QuadCore, kommt auf 241 GFLOPS.

Bis Ende 2021 wird in Bologna (Italien) das Projekt „Leonardo“, ein Supercomputer mit einer Rechenleistung von 250 PetaFLOPS (1 PFLOP = 1015 FLOPS) und einer Speicherkapazität von über 100 Petabyte errichtet.

Die kostengünstigste Methode, einen Prozessor zu beschleunigen, ist daher die Erhöhung der Taktfrequenz. Jedoch erhöht sich dadurch der Stromfluss im Inneren des Prozessors und damit auch die Wärmeentwicklung. Für hochgetaktete Prozessoren ist daher eine Kühlung erforderlich. Früher genügte ein Wärmeleitblech, meist zusätzlich ein Ventilator, um die entstehende Wärme abzuführen. Heute bedient man sich einer Kombination aus Kühlkörper und Lüfter.

Eine exotischere Variante ist ein „Icecap“. Hierbei handelt es sich um ein sogenanntes Peltier-Element: Fließt Strom durch zwei Drähte unterschiedlicher Legierung, die an den Enden zusammengelötet sind, so kühlt sich eine Lötstelle ab, während sich die andere erwärmt. Durch diese „Kappe“ wird die Oberfläche des Prozessors auf einer konstanten Arbeitstemperatur zwischen 0 und 4°C gehalten. Dadurch ergibt sich zwischen der Oberfläche und dem eigentlichen Siliziumchip eine große Temperaturdifferenz (bis zu 140° C) und damit eine bessere Wärmeableitung. Diese Kühler sind aber in herkömmlichen PCs nicht in Verwendung.

Da der Taktgeber (der Quarzkristall) nur Taktfrequenzen von 66 MHz, 100 MHz oder 133 MHz produzieren kann (die sogenannte „Base Clock“), aber heute übliche CPUs mit einem wesentlich höheren Takt arbeiten, wurde die Taktvervielfachung eingeführt. Die Multiplikatoren sind ganzzahlig oder einfache Bruchzahlen:

Beispiel: Der 3,06 GHz-intel Pentium 4 läuft mit einer externen Taktfrequenz von 133 MHz und verwendet den Multiplikator 23, woraus sich die 3,06 GHz ergeben.

Die Systembusgeschwindigkeit und der Multiplikator mussten früher über Jumper (kleine Steckbrücken) am Motherboard eingestellt werden; heute teilt die CPU über eine spezielle Funktion ihre Kenndaten dem Motherboard mit, sodass die entsprechenden Parameter automatisch eingestellt werden.

Es zeigt sich bereits, dass neben den Festplatten die Frequenz des „Front Side Bus“, jene Frequenz, mit der die Komponenten am Motherboard – außer der CPU – arbeiten, den Flaschenhals für einen modernen PC darstellt. Intel Pentium III- und AMD-Prozessoren arbeiten mit einem 100- oder 133 MHz-Front Side Bus-Takt; heute übliche Intel- und AMD-Prozessoren unterstützen 400 – 800 MHz.

Ein hoher Bustakt ist vor allem für Grafiker interessant, da während einer Bildbearbeitung kaum auf die Festplatte zugegriffen wird, dafür aber umso mehr Daten über den Datenbus zwischen CPU und RAM laufen.

Arbeitsweise einer CPU

Ein von Neumann-Rechner arbeitet sequenziell. Nacheinander passieren immer wieder die folgenden zwei Schritte:

Befehl holen: fetch cycle (immer gleich)

Befehl ausführen: execution cycle (natürlich abhängig vom auszuführenden Befehl)

Beide zusammen nennt man den Befehlszyklus. Entscheidend für die Systemgeschwindigkeit ist die Dauer eines Befehlszyklus bei den wichtigsten Befehlen. Bei der Von-Neumann-Struktur laufen beide Teile des Befehlszyklus nacheinander auf dem einzigen Bussystem ab.

Pipelining

Um Parallelität in der Befehlsausführungsphase zu erreichen, wird der Datenpfad so konstruiert, dass folgende (hier fünf) Phasen unabhängig voneinander arbeiten können. Nur so ist es möglich, eine verzahnte Abarbeitung mehrerer Befehle zu erreichen.

Befehlscode laden (IF, Instruction Fetch ): In der Befehlsbereitstellungsphase wird der Befehl, der durch den Befehlszähler adressiert ist, aus dem Arbeitsspeicher geladen. Der Befehlszähler wird anschließend hochgezählt.

Instruction Fetch In der Befehlsbereitstellungsphase wird der Befehl, der durch den Befehlszähler adressiert ist, aus dem Arbeitsspeicher geladen. Der Befehlszähler wird anschließend hochgezählt. Instruktion dekodieren und Laden der Daten (ID, Instruction Decoding ): In der Dekodier- und Ladephase wird der geladene Befehl dekodiert (1. Takthälfte) und die notwendigen Daten aus dem Arbeitsspeicher und dem Registersatz geladen (2. Takthälfte).

Instruction Decoding In der Dekodier- und Ladephase wird der geladene Befehl dekodiert (1. Takthälfte) und die notwendigen Daten aus dem Arbeitsspeicher und dem Registersatz geladen (2. Takthälfte). Befehl ausführen (EX, Execution ): In der Ausführungsphase wird der dekodierte Befehl ausgeführt. Das Ergebnis wird durch den Pipeline-Latch gepuffert.

Execution In der Ausführungsphase wird der dekodierte Befehl ausgeführt. Das Ergebnis wird durch den Pipeline-Latch gepuffert. Ergebnisse zurückgeben (WB, Write Back): In der Resultatspeicherphase wird das Ergebnis in den Arbeitsspeicher oder in den Registersatz zurückgeschrieben.

Jede der vier Phasen wird in eine Anzahl von Schnittstellen bzw. Zyklen eingeteilt. Ein Taktzyklus ist die kleinstmöglich verarbeitbare Einheit. Somit benötigt ein Befehl zur Ausführung im Allgemeinen mehr als einen Taktzyklus.

Cache

Um die PCs nicht zu teuer zu machen, andererseits aber ihre Rechengeschwindigkeit zu steigern, hilft man sich mit einem (hardwaremäßigen) Level 1 (L1)-Cache (Pufferspeicher, „cache“ engl. = „Versteck, geheimes Vorratslager“), welches aus einem SRAM-Chip besteht. Dieser Speicherbereich ist meist relativ klein (z.B. 20 KiB) und wird zwischen Prozessor und Hauptspeicher geschaltet. In diesen Speicher legt der Prozessor Datensätze, die er zwar nicht immer, aber sehr oft bei der Verarbeitung benötigt. Ab dem Pentium Pro- bzw. Pentium II-Prozessor ist Intel dazu übergegangen, den Cache in die CPU zu integrieren. Dadurch ist ein Takten des Cache mit der CPU-Taktfrequenz möglich, wodurch der Zugriff auf den Cache und der Datentransfer vom Cache zur CPU wesentlich schneller abläuft (noch bei Pentium-Motherboards war der Cache auf dem Motherboard installiert und mit dem wesentlich niedrigeren Bus-Takt von 33 oder 66 MHz getaktet).

Gängige Zentralprozessoren verfügen darüber hinaus noch über einen Level 2 (L2)-Cache, der – heute meist ebenfalls on-chip – zwischen 128 KB und 2048 KB umfasst.

Rechner der gehobenen Leistungsklasse können weitere Caches aufweisen; so besitzt der für Multiprozessorsysteme geeignete Intel Xeon MP-Prozessor einen 4 MB großen Level 3 (L3)-Cache am Chip. Bestimmte Serversysteme besitzen darüber hinaus noch einen externen, am Motherboard eingebauten Level 4 (L4)-Cache.

Mehrkernprozessoren

Die bis ca. 2005 üblichen Einkernprozessoren wurden schrittweise von Mehrkernprozessoren verdrängt. Als Mehrkernprozessor (auch Multicore-Prozessor oder Multikernprozessor) bezeichnet man einen Mikroprozessor mit mehr als einem vollständigen Hauptprozessor auf einem einzigen Chip. Sämtliche Ressourcen mit Ausnahme des Bus und eventuell einiger Caches sind mehrfach vorhanden. Es handelt sich also um mehrere vollständige, weitgehend voneinander unabhängige Prozessoren inklusive eigener arithmetisch-logischer Einheit (ALU), Registersätze und, sofern überhaupt vorhanden, Floating Point Unit (FPU).

Heute sind auch im PC-Bereich Mehrkernprozessoren Standard. Meist werden Vier-Kern-Prozessoren (Quad Core), Sechs-Kern-Prozessoren (Hexa-Core) oder – vor allem im leistungsstarken Gaming-Bereich – Acht-Kern-Prozessoren (Octa-Core) verbaut. AMD bietet seit 2017 auch 12- und 16-Kern-Prozessoren an (AMD Ryzen Threadripper 1920X bzw. 1950X).

Analysieren der vorhandenen Hardware

Es existieren Hardware-Analyse-Programme, die sehr genaue Informationen über die vorhandene Systemhardware liefern, etwa CPU-Z (Hersteller:

Man kann detaillierte Informationen über das Motherboard sowie verschiedene Hardwarekomponenten wie CPU, RAM oder Grafikkarte erkennen.

Wichtige Prozessorserien

Heute teilen sich einige wenige Hersteller den Mikroprozessor-Markt; es sind dies die Firmen

Intel

AMD

Motorola

NEC

National Semiconductor

Texas Instruments

Silicon Graphics

Derzeit arbeiten 85 % aller PCs mit Intel-Prozessoren.

Intel-Prozessoren

Anfang der 80er Jahre entwickelte sich die Firma IBM zum Marktführer, indem sie ihre Rechner mit den 8086/8088-Prozessoren von Intel und dem Betriebssystem DOS von Microsoft ausrüstete. Somit wurden diese beiden Merkmale zum Industriestandard; sämtliche Weiterentwicklungen beruhten auf diesem Standard.

Pentium-CPU-Chip (Foto: intel) Intel Pentium III-Prozessor in der SEC-Kassette, dem neuen Gehäusetyp für Prozessoren (Foto: PCaustria). Intel Pentium III Logo Intel Celeron (Foto: NewsFlash, C2000) Pentium III Sockel 370

Bis zum Pentium-Prozessor favorisierte Intel den Motherboard-Sockel 7, ein quadratischer Steckplatz.

Pentium II und Pentium III nutzten den einbaufreundlichen Slot-1; der Prozessorchip ist hier in einer Kassette eingebaut, die – ähnlich wie Erweiterungskarten oder Arbeitsspeichermodule – senkrecht in einen speziellen Sockel eingesteckt wird.

Hier noch allgemeine Informationen zu den sich abzeichnenden Tendenzen:

Man beobachtet, dass man mit dem stetig steigenden Systemtakt und dem größer werdenden L2-Cache (auf der CPU) dem Flaschenhals CPU-RAM-Verbindung zuleibe rücken will (100-133-200-400-600 MHz).

Der Spannungsbedarf der Prozessoren wird immer geringer; der Pentium MMX benötigt nur mehr 2,8 V Versorgungsspannung, der 80486er arbeitete noch mit 5 V.

Pro Jahr steigen die Ansprüche an die Busbreite um ca. 0,6 bit.

Die großen Prozessorhersteller Intel und AMD haben verschiedene Sockel- und Slot-Bauformen für ihre zukünftigen CPUs, sodass man sich beim Motherboard-Kauf sehr wohl überlegen muss, welcher Prozessor zum Einsatz kommen soll

1998 kam ein ”abgespeckter“ Pentium II-Chip mit dem Namen ”Celeron“ auf den Markt. Unterschied zum Pentium II: Der Celeron hat keinen Cache (Zwischenspeicher).

Intel-x86-Prozessor-Serie

Bezeichnung Kommentar (interne) Takt-frequenz [MHz] Adressbus-breite Datenbus-breite Verwendeter Sockel 8008 1972; erster 8 bit-Rechner. 8 8080 1974; lange Zeit Industriestandard. 8 8086/8088 1978/79; erster PC-Prozessor; Arbeitsspeicher bis 1 MB („XT“ = eXTended technology 1981) 4,7 – 10 20 16/8 80186/80188 nicht mehr kompatibel zu Folgerechnern, daher geringe Bedeutung 4 – 12 20 16 80286 1982; Prozessor der IBM-„AT“-Geräte (advanced technology), 6 x schneller als XT, Arbeitsspeicher bis 16 MB; Unix-Betrieb möglich; Rechenleistung 1 – 2 MIPS. 6 – 25 24 16 80386 1985; konsequente Weiterentwicklung des 80286-Prozessors geeignet für Multitasking-Betriebssysteme, z.B. Unix oder das von IBM entwickelte OS/2. Kann mehrere 8086-Prozessoren darstellen; Arbeitsspeicher bis 4 GB; Rechenleistung 4 – 8 MIPS 16 – 33 32 32 80486 1989; enthält einen kompletten 80386-Prozessor, eingebaut ist der mathematische Coprozessor 80387 und 8 kB Cache, größerer Befehlssatz; ansonsten wie 80386. Rechenleistung bis 27 MIPS (25 MHz) bzw. 41 MIPS (50 MHz); DX2-66 bis 54 MIPS. 25 – 66 32 32 P5 1993; „Pentium“; 16 kB Prozessor-Cache, unterteilt in Daten- und Befehlscache; Rechenleistung bis 112 MIPS; leistungsmäßig erstmals Anschluss an die RISC-Prozessoren; nicht für DOS gedacht, eher für Windows/NT und Unix; 2 Befehle können parallel ausgeführt werden 60 – 200 32 64 Socket 4,

Socket 5, Socket 7 „MMX“ 1996; „Pentium Multimedia Extension“; Nachteil: Die Multimedia-Erweiterung (MMX) und der mathematische Koprozessor (FPU) können nicht gleichzeitig benutzt werden. 133 – 200 32 64 Socket 7 P6 1995; „Pentium Pro“; 32 kB Prozessor-Cache („Level 2-Cache“), unterteilt in Daten- und Befehlscache; Rechenleistung bis 112 MIPS; 4 Befehle können parallel ausgeführt werden; Spannung intern 2,9 V. Als „Zwischenlösung“ wird ein Prozessor „P68“ entwickelt, der bis zum Erscheinen des P7 den Markt versorgen soll. 133 – 200 32 64 Socket 8 Pentium II 1997; Pentium II: Dual Independent Bus Architecture (zwei unabhängige Busse: „Systembus“ vom Prozessor zum Arbeitsspeicher und „Level 2-Cache-Bus“); MMX-Technologie; neuer Gehäusetyp; „Celeron“ als abgespeckte Version 233 – 500 32 64 Slot 1 Pentium III 1999; Pentium III: neuer Befehlssatz (SIMD = Streaming Single-Instruction Multiple Data Extensions), Nachfolger von MMX. Verbesserung in der Fließkommaleistung für 3D- und Multimedia-Anwendungen. 450 – 1260 32 64 Slot 1, Socket 370 Pentium IV (Willamette) 2000; neue Prozessorarchitektur, kleinerer L1-Cache, längere Pipeline ermöglicht höhere Taktfrequenz; SSE2 1,3 – 2,0 GHz 36 64 Socket 423, Socket 478 Pentium IV (Northwood, Prescott, Cedar Mill) 2003; Einführung des Intel® Pentium® 4 Prozessors mit Hyper-Threading (HT)-Technologie, 3 – 3,4 GHz Taktfrequenz und 800-MHz-Systembus sowie des Intel® 875P Chipsets. 1,3 – 3,8 GHz 36 64 Socket 478, Socket LGA 775 Itanium 2 2001; Kupfertechnik; 400 MHz Systemtakt; 2 – 8 MByte L2-Cache; Codename „McKinley“; reiner RISC-Prozessor 1,5 – 2,0 GHz 36 64 Socket 611

Xeon-Prozessoren

Die Xeon-Prozessorserie beschreibt High End-Prozessoren, die auf Pentium II/III/4-Prozessoren aufbauen. Xeon-Prozessoren wurden speziell für den Mehr-Prozessor-Betrieb in Server-PCs entwickelt.

Bezeichnung Kommentar (interne) Takt-frequenz [MHz] Adress­bus-breite Daten­bus-breite Verwendeter Sockel Pentium III Xeon 1999; Pentium III mit speziell großem Cache (bis 2 MB) und der Möglichkeit, max. 8 GB RAM zu adressieren. 600 – 1000 32 64 Slot 2 Pentium 4 Xeon MP ab 2003; Prozessoren für Netzwerkserver; dreistufige Cache-Architektur (Level 1/2/3-Cache), 400 MHz Front Side Bus; HyperThreading-Architektur 2,8 – 3,6 GHz 36 64 Socket 603

Dual Core- und Quad Core-Prozessoren

Bezeichnung Kommentar (interne) Takt-frequenz [MHz] Adress­bus-breite Daten­bus-breite Verwendeter Sockel Pentium D (Presler) 2006; Enthält zwei Pentium 4-Kerne, wobei jede CPU ihren eigenen Cache verwendet. Es existiert allerdings nur ein gemeinsamer Front Side Bus. 2,6 – 3,6 GHz 36 64 LGA775 AMD Athlon 64 X2 Zwei separate Kerne nutzen L1-Cache gemeinsam. 2,0 – 2,4 GHz 40 64 Socket 939, Socket AM2

Intel Core

Bezeichnung Kommentar (interne) Takt-frequenz [MHz] Adress­bus-breite Daten­bus-breite Verwendeter Sockel Intel Core Solo, Intel Core Duo (Yonah) 2006; basiert auf Pentium M-Plattform 1,06 –2,33 GHz 40 64 478poliger microFCPGA-Socket Intel Core 2 (Allendale, Conroe, Merom) 2006; erstmals neue Prozessorarchitektur („Core“), die nicht mehr auf Pentium 4 beruht. Diese Prozessorserie wird auch als Core 2 Extreme angeboten; es sind auch Dual Core- und Quad Core-Varianten im Handel. Transistoren/Fertigungstechnik: 291 Millionen bei 65 nm. 1,8 – 3,2 GHz 40 64 LGA-775 Intel Core 2 Duo (Wolfdale) 2008; Dual Core; FSB mit 1333 MHz Taktfrequenz; 6 MB L2-Cache; 45 nm-Fertigungstechnologie. 2 Kerne. 2,66 – 3,16 GHz 40 64 LGA-775 Intel Core 2 Quad (Yorkfield) 2008; Dual Core; FSB mit 333 – 400 MHz Takt­frequenz; 6 MB L2-Cache; 45 nm-Fertigungstechnologie. 2 Kerne. 2,33 – 2,66 GHz 40 64 LGA-775

Intel Core i

Grundsätzlich unterteilt Intel die aktuellen Prozessoren mit Hilfe der Bezeichnungen i3,i5, i7 und i9 in Leistungsklassen. Welches Anhängsel ein Prozessor erhält, hängt nicht vom verwendeten Sockel, sondern von den Prozessoreigenschaften ab – wie etwa die Anzahl der Kerne (englisch cores), Hyper-Threading-Unterstützung, die Breite der Speicheranbindung und die Unterstützung kurzzeitiger Übertaktungen (mit dem auch sogenannten Turbo-Modus oder englisch turboboost) spielen eine wichtige Rolle, aber auch andere Features wie Trusted Execution Technology (TXT) sowie Teile des Caches können bei Prozessoren mit kleineren Modellnummernanhängseln deaktiviert sein.

Man kann daher nicht sagen, dass Core-i3-CPUs grundsätzlich weniger leistungsfähig bzw. langsamer als Core-i5- oder Core-i7-CPUs sind. Seit 2017 gibt es auch die Core-i9-CPU-Reihe, deren Top-Modelle 18 Prozessorkerne haben.

Generation Architektur Erscheinungs-jahr Fertigungs-technologie Maximale Taktung Sockel Desktop 1 Westmere, Nehalem 2008 45 nm (ab 2009 32 nm) 3,6 GHz LGA 1156 2 Sandy Bridge 2011 32 nm 4,0 GHz LGA 1155 3 Ivy Bridge 2012 22 nm 4,0 GHz LGA 1155 4 Haswell 2013 22 nm 4,4 GHz LGA 1150 5 Broadwell 2014 14 nm 4,4 GHz LGA 1150 6 Skylake 2015 14 nm 4,2 GHz LGA 1151 7 Kaby Lake 2016 14 nm 4,5 GHz LGA 1151 8 / 9 Coffee Lake 2017 14 nm 5,0 GHz LGA 1151 10 Comet Lake 2019 14 nm 5,2 GHz LGA 1200 10 Ice Lake 2018 10 nm ? LGA 2066 12 Alder Lake 2021 – 2022 10 nm Meteor Lake > 2022 7 nm

LGA1151-Sockel (Skylake-Mikroarchitektur), Prozessor Intel i7-6700 K mit Skylake-Architektur (Quelle: Wikipedia)

AMD-Prozessoren

Viele Firmen bauen die Prozessoren der 80X86-Familie nach. Bekannt sind z.B. die Prozessoren der Firmen IBM oder AMD. AMD sieht als Zielgruppe in erster Linie Privatnutzer und stellt kostengünstige CPUs her, die für Spiele und ähnliche Unterhaltungssoftware optimiert sind.

Im Desktopsegment bietet AMD aktuell (2017) den AMD Ryzen, AMD FX, den Phenom II, den Athlon II, den Sempron und die AMD-Fusion-APUs an. Diese gibt es in Ausführungen mit zwei bis acht Kernen.

Eine komprimierte und daher unvollständige Auflistung der wesentlichen AMD-Prozessorgenerationen findet man in folgender Tabelle:

Erschienen Bezeichnung Informationen 1997 AMD K6 Socket 7; vergleichbar dem intel Pentium MMX 1998 AMD K6-2 Socket 7; optimiert für Spiele 1999 AMD K6-3 Socket 7; TriLevel Cache 2000 AMD K7 „Athlon“ Slot A; Enhanced 3DNow!-Technologie für aufwändige Spiele; K7-Architektur 2001 AMD Athlon XP Socket A; XP = “extra power”; Streaming SIMD Extension 2001 AMD Athlon MP Socket A; Multiprozessor­variante 2002 AMD Opteron duale Architektur für 32 bit- und 64 bit-Anwendungen; K8/K9-Architektur 2003 AMD Athlon 64 erste 64 bit-Prozessoren; K8/K9-Architektur 2007 AMD Phenom 1,8 – 2,6 GHz; 65 nm-Fertigung; K10-Architektur 2009/2010 AMD Phenom II 2,8 – 3,2 GHz; 45 nm-Fertigung; „Thuban“ ist als Sechskernprozessor verfügbar 2011 AMD FX 2,8 – 5,0 GHz, Desktop-CPU, Fertigung in 32 nm-Technologie, Sockel AM3+; Bulldozer-Architektur 2017 AMD Ryzen 3,0 – 3,6 GHz; 4 – 8 Kerne, 8 – 16 Threads, 8 – 16 MB L3-Cache; AM4-Socket, ähnliche Modellbezeichnungen wie intel (Ryzen 3, 5, 7); Zen-Mikroarchitektur; 14 nm Fertigung 2017 AMD Epyc 2,0 – 2,4 GHz; Serverprozessor, 8 – 32 Kerne/16 – 64 Threads; Zen-Mikroarchitektur

Apple

Nachdem Apple jahrelang (2006 – 2020) seine Geräte mit intel-Prozessoren ausgestattet hatte, erfolgte 2020 ein Strategiewechsel: Apple verwendet für diverse MacBook-Geräte nun eine Eigenentwicklung, die vom taiwanesischen Unternehmen TSMC in 5 nm-Technologie gefertigt wird.

Eine Besonderheit ist die Fertigung als „System on a Chip“ (SoC): Neben der eigentlichen CPU-Funktionalität befinden sich auch GPU, Sicherheitschip, RAM und I/O-System inklusive Thunderbolt auf dem M1-Chip. Auf dem Chip befinden sich 16 Mrd. Transistoren.

Prozessor – Wikipedia

CPU ist eine Weiterleitung auf diesen Artikel. Weitere jeweilige Bedeutungen sind unter ist eine Weiterleitung auf diesen Artikel. Weitere jeweilige Bedeutungen sind unter CPU (Begriffsklärung) und Prozessor (Begriffsklärung) aufgeführt.

Dieser Artikel oder Abschnitt bedarf einer Überarbeitung: Keine saubere Differenzierung des Begriffs Prozessor von Mikroprozessor und Hauptprozessor.

Bitte hilf mit, ihn zu verbessern , und entferne anschließend diese Markierung. Keine saubere Differenzierung des Begriffs Prozessor von Mikroprozessor und Hauptprozessor.

Ein Prozessor ist ein (meist sehr stark verkleinertes und meist frei) programmierbares Rechenwerk, also eine Maschine oder eine elektronische Schaltung, die gemäß übergebenen Befehlen andere Maschinen oder elektrische Schaltungen steuert und dabei einen Algorithmus (Prozess) vorantreibt, was meist Datenverarbeitung beinhaltet. Der weitere Artikel beschreibt ausschließlich diese Bedeutung, am Beispiel des Prozessors eines Computers. Am bekanntesten sind Prozessoren als Hauptprozessor, Zentrale Recheneinheit, Zentraleinheit oder Zentrale Verarbeitungseinheit (kurz ZVE, englisch central processing unit, kurz CPU) für Computer oder computerähnliche Geräte, in denen sie Befehle ausführen. Am weitesten verbreitet sind Prozessoren heutzutage als integrierte Schaltungen in Form von Mikroprozessoren und Mikrocontroller in eingebetteten Systemen (etwa in Waschmaschinen, Ticketautomaten, DVD-Spielern, Smartphones usw.).

Im früheren Sprachgebrauch wurde unter dem Begriff „Prozessor“ sowohl das Bauteil verstanden (ein Halbleiter-Chip in einem Plastikgehäuse, der mit seinen Beinchen in einen Sockel eingesteckt wird), als auch eine datenverarbeitende Logik-Einheit. Heutzutage besitzen jedoch viele Mikroprozessoren mehrere sogenannte Prozessorkerne, wobei jeder Kern für sich eine (weitgehend) eigenständige Logik-Einheit darstellt. Unter dem Begriff Prozessor wird heute im Allgemeinen das Bauteil verstanden; ist die datenverarbeitende Logik-Einheit gemeint, wird meist vom Prozessorkern gesprochen.

Übertragene Bedeutungen des Begriffs CPU [ Bearbeiten | Quelltext bearbeiten ]

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“.

Hauptbestandteile eines Prozessor(kern)s sind das Rechenwerk (insbesondere die arithmetisch-logische Einheit, ALU) sowie das Steuerwerk (inkl. Adresswerk).[1][2] Darüber hinaus enthalten sie meist mehrere 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 Hauptbestandteilen, die die Grundfunktionen bereitstellen, kann es weitere Recheneinheiten geben, die spezialisierte Funktionen zur Verfügung stellen und den eigentlichen Prozessor entlasten sollen – diese Einheiten werden meist als Koprozessor bezeichnet. Beispiele hierfür sind der bis in die 1990er Jahre separate mathematische Koprozessor für Gleitkommaoperationen (die Gleitkommaeinheit) sowie Grafik- und Soundprozessoren. In diesem Zusammenhang wird der zentrale Prozessor mit seinen im vorhergehenden Absatz beschriebenen Grundfunktionen auch als Hauptprozessor (oder kurz, mit der englischen Abkürzung, als CPU) bezeichnet. Weitere Synonyme sind Zentrale Verarbeitungseinheit (kurz ZVE oder auch 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 Tabletcomputer 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 oft im Bereich der eingebetteten Systeme (englisch embedded systems) eingesetzt: zur Steuerung von Haushaltsgeräten, Industrieanlagen, Unterhaltungselektronik usw. In Großrechnern (englisch mainframes) wurden früher meist herstellereigene Prozessorarchitekturen verwendet, wie etwa bei IBM (PowerPC, Cell-Prozessor) oder SUN (SPARC-Prozessor); heute werden überwiegend angepasste Versionen der verbreiteten PC-Prozessormodelle verwendet.

Prozessoren für eingebettete Systeme machen etwa 95 Prozent des Prozessormarkts aus, wobei davon 90 Prozent sogenannte Mikrocontroller sind, die neben dem eigentlichen Prozessor weitere Funktionen (zum Beispiel spezielle Hardwareschnittstellen oder direkt integrierte Sensoren) enthalten. Nur etwa 5 Prozent werden in PCs, Workstations oder Servern eingesetzt.[3]

Historische Entwicklung [ Bearbeiten | Quelltext bearbeiten ]

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

Motorola PowerPC G4 CPU

In den 1940er Jahren wurden die vormals rein mechanischen Rechenwerke durch Computer aus Relais und mechanischen Bauelementen abgelöst. Die ZUSE Z3 gilt als der erste funktionsfähige Digitalrechner weltweit und wurde im Jahr 1941 von Konrad Zuse in Zusammenarbeit mit Helmut Schreyer in Berlin gebaut. Die Z3 bestand aus 600 Relais für das Rechenwerk und 1400 Relais für das Speicherwerk.[4] Diese ersten Computer waren also elektromechanische Rechner, die äußerst störanfällig waren. Noch in den 1940ern begannen findige Elektroingenieure damit, Computer mit Hilfe von Elektronenröhren zu bauen. Der erste funktionsfähige Rechner dieser Generation war der ENIAC. Der ENIAC verfügte über 20 elektronische Register, 3 Funktionstafeln als Festspeicher und bestand aus 18.000 Röhren sowie 1.500 Relais.[5] Damit konnten die Rechenautomaten komplexere Berechnungen ausführen und wurden weniger störanfällig, aber von einzelnen Prozessoren in späteren Sinne konnte noch keine Rede sein. 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 Unternehmen 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.

Erste Erwähnungen des Begriffes CPU gehen in die Anfänge der 1950er Jahre zurück. So wurde in einer Broschüre von IBM zu dem 705 EDPM aus dem Jahr 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.[6] Ä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.[7] Auch in dem Informationstext von IBM zur 704 EDPM, dem Vorgänger der 705 EDPM, aus dem Mai 1954 sucht der Leser den Begriff vergeblich.[8]

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. Dies war die Zeit der Minicomputer, die nun keinen ganzen Saal mehr ausfüllten, sondern nur noch ein Zimmer. Die 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.

Siehe auch : Geschichte der Mikroprozessoren

Aufbau / Funktionale Einheiten [ Bearbeiten | Quelltext bearbeiten ]

Ein Prozessor(kern) besteht mindestens aus Registern (Speicher), einem Rechenwerk (der Arithmetic Logic Unit, kurz ALU), einem Steuerwerk sowie den Datenleitungen (Busse), die die Kommunikation mit anderen Komponenten ermöglichen (Abbildung siehe weiter unten). Diese Komponenten sind im Allgemeinen weiter unterteilbar, zum Beispiel enthält das Steuerwerk zur effizienteren Bearbeitung von Befehlen die Befehls-Pipeline mit meist mehreren Stufen, unter anderem den Befehlsdecoder, sowie ein Adresswerk; die ALU enthält unter anderem zum Beispiel Hardwaremultiplizierer. Darüber hinaus befinden sich vor allem in modernen Mikroprozessoren mitunter sehr viel feiner unterteilte Einheiten, die flexibel einsetzbar/zuteilbar sind, sowie mehrfach ausgeführte Einheiten, die das gleichzeitige Abarbeiten mehrerer Befehle erlauben (siehe zum Beispiel Simultaneous Multithreading, Hyper-Threading, Out-of-order execution).

Oft ist in heutigen Prozessoren die Memory Management Unit sowie ein (evtl. mehrstufiger) Cache integriert (Level-1-Cache „L1“ bis Level-4-Cache „L4“). Mitunter ist auch eine I/O-Unit integriert, oft zumindest ein Interrupt-Controller.

Zusätzlich finden sich auch häufig spezialisierte Recheneinheiten z. B. eine Gleitkommaeinheit, eine Einheit für Vektorfunktionen oder für Signalverarbeitung. Unter diesem Aspekt sind die Übergänge zu Mikrocontrollern oder einem System-on-a-Chip, die weitere Komponenten eines Rechnersystems in einem integrierten Schaltkreis vereinen, mitunter fließend.

Hauptprozessor, CPU und Prozessorkern [ Bearbeiten | Quelltext bearbeiten ]

Ein Prozessor besteht 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 einem „echten“ Prozessor mit Steuer- und Rechenwerk wird der Begriff CPU (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). Mehrkernprozessoren 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, Dual-Core-, Quad-Core- und Hexa-Core-Prozessor (Sechskernprozessor) gebräuchlich (nur selten: Triple-Core-, Octa-Core-Prozessor (Achtkern), Deca-Core-Prozessor (Zehnkern)). Da die 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 oder System-on-a-Chip (SoC) mit weiteren integrierten Einheiten, z. B. einem Grafikprozessor (GPU), die Kerne mit Steuer- und Rechenwerk von den anderen Einheiten zu unterscheiden, siehe u. a. Accelerated Processing Unit (APU).[9]

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.

→ Hauptartikel : Steuerwerk

Das Steuerwerk, auch Leitwerk genannt, kontrolliert die Ausführung der Anweisungen. Es sorgt dafür, dass der Maschinenbefehl im Befehlsregister vom Befehlsdecoder dekodiert und vom Rechenwerk und den übrigen Komponenten der Rechenanlage ausgeführt wird. Dazu übersetzt der Befehlsdecoder binäre Maschinenbefehle mit Hilfe der Befehlstabelle (englisch instruction table) in entsprechende Anweisungen (Microcode), welche die für die Ausführung des Befehls benötigten Schaltungen aktivieren. Dabei werden drei wesentliche Register, das heißt sehr schnell ansprechbare prozessorinterne Speicher, benötigt:[10]

Das Befehlsregister (englisch instruction register ): Es enthält den aktuell auszuführenden Maschinenbefehl. Der Befehlszähler (englisch program counter ): Dieses Register zeigt bei der Befehlsausführung auf den nächstfolgenden Befehl. (Ein Sprungbefehl lädt die Adresse seines Sprungziels hierher.) Das Statusregister: Es zeigt über sogenannte Flags den Status an, der von anderen Teilen der Rechenanlage, u. a. dem Rechen- und dem Leitwerk, bei der Ausführung bestimmter Befehle erzeugt wird, um ihn in nachfolgenden Befehlen auswerten zu können. Beispiel: Ergebnis einer arithmetischen oder einer Vergleichsoperation ergibt ‚Null‘, ‚Minus‘ o. ä., ein Übertrag (Carry) ist bei einer Rechenoperation zu berücksichtigen.

In RISC-Prozessoren ist mitunter kein Befehlsdekoder notwendig – in manchen RISC-Prozessoren verschalten die Befehls-Bits die entsprechenden ALU- und Register-Einheiten direkt. Dort gibt es dann auch keinen Microcode. Die meisten modernen Prozessorarchitekturen sind RISC-artig oder besitzen einen RISC-Kern für die häufigen, einfachen Befehle sowie eine übersetzende Emulationsschicht davor, die komplexe Befehle in mehrere RISC-Befehle übersetzt.

Ebenso kann ein explizites Befehlregister durch eine Pipeline ersetzt sein. Mitunter sind mehrere Befehle gleichzeitig in Bearbeitung, dann kann auch die Reihenfolge ihrer Abarbeitung umsortiert werden (Out-of-order execution).

Rechenwerk und Register [ Bearbeiten | Quelltext bearbeiten ]

→ Hauptartikel : Rechenwerk und Rechenregister

Das Rechenwerk führt die Elementaroperationen eines Prozessors durch. Es besteht zum einen aus der arithmetisch-logischen Einheit (ALU), zum anderen aus den Arbeitsregistern. Es kann sowohl arithmetische (etwa die Addition zweier Zahlen) als auch logische (etwa AND oder OR) Operationen ausführen. Aufgrund der Komplexität moderner Prozessoren, bei denen meist mehrere Rechenwerke mit spezialisierten Funktionen vorhanden sind, spricht man auch allgemein vom Operationswerk.

Die Arbeitsregister können Daten (als Datenregister) und, abhängig vom Prozessortyp, auch Adressen (als Adressregister) aufnehmen. Meist können nur mit den Werten in den Registern Operationen direkt ausgeführt werden. Sie stellen daher die erste Stufe der Speicherhierarchie dar. Von den Eigenschaften und insbesondere der Größe und Anzahl der Register (abhängig vom Prozessortyp) hängt u. a. die Leistungsfähigkeit des jeweiligen Prozessors ab.

Ein spezielles Adressregister ist der Stapelzeiger (englisch stackpointer), der die Rücksprungadresse bei einem Unterprogrammaufruf aufnimmt. Auf dem Stack werden dann zusätzlich oft Registerkopien gesichert und neue, lokale Variablen angelegt.

Ü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., ob Daten gerade geschrieben oder gelesen werden sollen, ob er einem anderen Bus-Master im Rahmen eines Speicherdirektzugriffs (DMA) den Bus überlässt, oder der Adressbus statt des RAMs einen Peripherie-Anschluss meint (beim Isolated I/O). Eingangsleitungen lösen beispielsweise einen Reset oder Interrupts aus, versorgen ihn mit einem Taktsignal oder empfangen eine „Bus-Anforderung“ von einem DMA-Gerät.

Zwischen die Datenleitungen und das Registerwerk ist als Teil des Steuerwerks das sogenannte Bus-Interface geschaltet, das die Zugriffe steuert und bei gleichzeitigen Anforderungen verschiedener Untereinheiten eine Priorisierung vornimmt.

Caches und MMU [ Bearbeiten | Quelltext bearbeiten ]

→ Hauptartikel : Cache

Moderne Prozessoren, die in PCs oder anderen Geräten eingesetzt werden, die eine schnelle Datenverarbeitung benötigen, sind mit sogenannten Caches ausgestattet. Caches sind Zwischenspeicher, die die zuletzt verarbeiteten Daten und Befehle zwischenspeichern und so die rasche Wiederverwendung ermöglichen. Sie stellen die zweite Stufe der Speicherhierarchie dar. Normalerweise besitzt ein Prozessor heutzutage bis zu vierstufige 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 zweit-langsamste der vier Caches, aber meist bereits sehr groß (bis zu 256 Megabyte).

Level-4-Cache (L4-Cache): Wenn vorhanden, dann meist außerhalb der CPU auf einem Interposer oder dem Mainboard. Er ist der langsamste der vier Caches (nur selten über 128 Megabyte).

→ Hauptartikel : Memory Management Unit

Die Memory Management Unit übersetzt die virtuelle Adressen der in Ausführung befindlichen Prozesse in reale Adressen, für alle Prozessorkerne gleichzeitig, und stellt die Cache-Kohärenz sicher: Ändert ein Kern einen Speicherinhalt, so muss sichergestellt werden, dass die anderen Caches keine veralteten Werte enthalten. Abhängig von ihrer genauen Ansiedlung beinhalten die Cache-Stufen Daten entweder bezüglich virtueller oder realer Adressen.

Verarbeitung eines einzelnen Befehls [ Bearbeiten | Quelltext bearbeiten ]

Einfacher Prozessor, Blockdiagramm, R/W = Lesen/Schreiben, Clock = Takt, IRQ = Interrupt-Request

Um die Rollen der Untereinheiten konkreter zu veranschaulichen, hier der Ablauf der Verarbeitung eines einzelnen Maschinenbefehls. Die aufgeführten Einzelschritte können teilweise gleichzeitig oder überlappend ablaufen, die Nummerierung hat nichts mit der Anzahl der Taktzyklen zu tun, die der Befehl benötigt. Zusätzliche Feinheiten wie Prozessor-Pipelines oder Sprungvorhersage (Branch Prediction) führen zu weiteren Timing-Finessen, die hier im Sinne der Vereinfachung vorerst weggelassen werden. Aus dem gleichen Grund sind komplexe Berechnungen abhängig von der gewählten Adressierungsart zur Ermittlung einer endgültigen Speicheradresse nicht erwähnt.

Laden des nächsten Befehls: Der Befehlszähler, der die Adresse des nächsten Befehls enthält, wird vom Steuerwerk über das Bus-Interface auf den Adressbus gelegt; dann wird ein Leseimpuls an die Speicherverwaltung signalisiert.

Der Befehlszähler wird parallel dazu auf die nächste Adresse weitergezählt. Die Speicherverwaltung legt den Datenwert aus dieser (virtuellen) RAM-Adresse auf die Datenleitungen; sie hat den Wert im Cache oder im RAM gefunden. Nach der Verzögerung durch die endliche Zugriffszeit des RAMs liegt an den Datenleitungen der Inhalt dieser Speicherzelle an. Das Steuerwerk kopiert diese Daten über das Bus-Interface in das Befehlsregister. Der Befehl wird vor-decodiert, ob er komplett geladen ist. Wenn es ein Befehl ist, der aus mehreren Bytes besteht, werden sie (falls das durch eine größere Busbreite nicht schon geschehen ist) durch Wiederholung der Schritte 1 bis 4 aus dem Speicher geholt und in die zuständigen Prozessorregister kopiert. Gehört zum Befehl auch das Auslesen einer Speicherzelle des RAMs, wird vom Steuerwerk die Adresse für diese Daten auf die Adressleitungen gelegt, ein Leseimpuls wird signalisiert. Danach muss genügend lange Zeit gewartet werden, dass das RAM diese Informationen sicher bereitstellen konnte. Anschließend wird der Datenbus ausgelesen und in das zuständige Prozessorregister kopiert. Der Befehl wird fertig-decodiert und die zu seiner Abarbeitung benötigten Untereinheiten aktiviert, die internen Datenpfade werden entsprechend geschaltet. Das Rechenwerk erledigt die eigentliche Verarbeitung innerhalb des Prozessors, beispielsweise die Addition zweier Registerinhalte. Das Ergebnis landet wieder in einem der Prozessorregister. Wenn der Befehl ein Sprung- oder Verzweigungsbefehl ist, wird das Ergebnis nicht in einem Datenregister abgelegt, sondern im Befehlszähler. Das Steuerwerk aktualisiert je nach Ergebniswert ggf. das Statusregister mit seinen Zustandsflags. Gehört zum Befehl auch das Rückspeichern eines Ergebnisses/Registerinhalts in das RAM, wird vom Steuerwerk die Adresse für diese Daten auf die Adressleitungen gelegt und der Dateninhalt auf die Datenleitungen, ein Schreibimpuls wird signalisiert. Danach muss genügend lange Zeit gewartet werden, dass das RAM diese Informationen sicher aufnehmen konnte. Der Befehl ist jetzt abgearbeitet, und es kann oben bei Schritt 1 zum nächsten Befehl weitergeschritten werden.

Verschiedene Architekturen [ Bearbeiten | Quelltext bearbeiten ]

→ Hauptartikel : Prozessorarchitektur

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. In der Von-Neumann-Architektur können Programmcode und Daten grundsätzlich identisch behandelt werden. Hierdurch sind einheitliche Betriebssystem-Routinen zum Laden und Speichern verwendbar. Auch kann der Programmcode im Gegensatz zur Harvard-Architektur sich selbst modifizieren oder als „Daten“ behandelt werden, wodurch Maschinencode z. B. per Debugger leicht bearbeitbar und modifizierbar ist. Nachteile/Risiken liegen im Bereich der Softwareergonomie und -Stabilität, zum Beispiel können Laufzeitfehler wie ein Pufferüberlauf den Programmcode modifizieren.

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. Bei einer Harvard-Architektur sind durch die physische 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).

Praktisch alle modernen CPUs stellen sich aus Programmsicht als Von-Neumann-Architektur dar, 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.

Auch werden heutzutage Arbeitsspeicher-Bereiche, die ausschließlich Daten beinhalten, als nicht ausführbar markiert, sodass Exploits, die ausführbaren Code in Datenbereichen ablegen, diesen nicht ausführen können. Umgekehrt kann das Schreiben in Bereiche mit Programmcode verweigert werden (Pufferüberlauf-Exploits).

→ Hauptartikel : Befehlssatz

Der Befehlssatz bezeichnet die Gesamtheit der Maschinenbefehle eines Prozessors. Der Umfang des Befehlssatzes variiert je nach Prozessortyp beträchtlich. Ein großer Befehlssatz ist typisch für Prozessoren mit CISC-Architektur (englisch Complex Instruction Set Computing – Rechnen mit komplexem Befehlssatz), ein kleiner Befehlssatz ist typisch für Prozessoren mit RISC-Prozessorarchitektur (englisch Reduced Instruction Set Computing – Rechnen mit reduziertem Befehlssatz).

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 (weit) überschreitet. Diese sind außerdem in der Lage, komplexe Operationen direkt auszuführen (etwa Gleitkommazahl-Operationen). Dadurch können komplexe Vorgänge durch wenige, „mächtige“ Befehle implementiert werden. 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. Es werden ausschließlich einfache, untereinander ähnlich komplexe Instruktionen bereitgestellt. Dabei wird versucht, sehr schnell abzuarbeitende Befehle zur Verfügung zu stellen, dafür jedoch nur wenige (weniger als 100), sehr einfache. Hierdurch vereinfachte sich das Prozessordesign deutlich und ermöglichte Optimierungen, die üblicherweise eine höhere Prozessortaktung und wiederum schnellere Ausführungsgeschwindigkeit erlaubten. Dies geht unter anderem darauf zurück, dass weniger Taktzyklen benötigt werden und die Dekodierung aufgrund geringerer Komplexität schneller ist. Ein einfacheres Prozessordesign bedeutet jedoch eine Verschiebung des Entwicklungsaufwands hin zur Software als Bereitsteller komplexerer Funktionalität. Der Compiler hat nun die Aufgabe einer effizienten und korrekten Umsetzung mit dem vereinfachten Instruktionsatz.

Heute ähnelt die weit verbreitete x86-Architektur – als (früher) typischer Vertreter der CISC-Klasse – intern einer RISC-Architektur: Einfache Befehle sind meist direkt µ-Operationen; komplexe Befehle werden in µ-Ops zerlegt. Diese µ-Ops ähneln den einfachen Maschinenbefehlen von RISC-Systemen, wie auch der interne Prozessoraufbau (z. B. gibt es keinen Microcode mehr für die µ-Operationen, sie werden „direkt verwendet“).

Eine weitere Art eines Prozessordesigns ist die Verwendung von 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.

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

Null-Adressbefehle (Stackrechner)

Ein-Adressbefehle (Akkumulatorrechner)

Zwei-, Drei- und Vier-Adressbefehle (ALTIVEC hatte z. B. Vieroperanden-Befehle)

Die Befehlsbearbeitung eines Prozessorkerns folgt prinzipiell dem Von-Neumann-Zyklus.

„FETCH“: Aus dem Befehlsadressregister wird die Adresse des nächsten Maschinenbefehls gelesen. Anschließend wird dieser aus dem Arbeitsspeicher (genauer: aus dem L1-Cache) in das Befehlsregister geladen. „DECODE“: Der Befehlsdecoder decodiert den Befehl und aktiviert entsprechende Schaltungen, die für die Ausführung des Befehls nötig sind. „FETCH OPERANDS“: Sofern zur Ausführung weitere Daten zu laden sind (benötigte Parameter), werden diese aus dem L1-Cache-Speicher in die Arbeitsregister geladen. „EXECUTE“: Der Befehl wird ausgeführt. Dies können zum Beispiel Operationen im Rechenwerk, ein Sprung im Programm (eine Veränderung des Befehlsadressregisters), das Zurückschreiben von Ergebnissen in den Arbeitsspeicher oder die Ansteuerung von Peripheriegeräten sein. Abhängig vom Ergebnis mancher Befehle wird das Statusregister gesetzt, das durch nachfolgende Befehle auswertbar ist. „UPDATE INSTRUCTION POINTER“: Sollte kein Sprungbefehl in der EXECUTE-Phase erfolgt sein, wird nun das Befehlsadressregister um die Länge des Befehls erhöht, so dass es auf den nächsten Maschinenbefehl zeigt.

Gelegentlich unterscheidet man auch noch eine Rückschreibphase, in der eventuell anfallende Rechenergebnisse in bestimmte Register geschrieben werden (siehe Out-of-order execution, Schritt 6). 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 zu bearbeiten.

Alle Programme liegen 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 [ Bearbeiten | Quelltext bearbeiten ]

Um es zu ermöglichen, Programme in akzeptabler Zeit und verständlich zu schreiben, wurde eine symbolische Schreibweise für Maschinenbefehle eingeführt, sogenannte Mnemonics. Maschinenbefehle werden durch Schlüsselworte für Operationen (z. B. MOV für move, also „bewegen“ oder „[ver]schieben“) und durch optionale Argumente (wie BX und 85F3h) dargestellt. Da verschiedene Prozessortypen verschiedene Maschinenbefehle besitzen, existieren für diese auch verschiedene Mnemonics. Assemblersprachen setzen oberhalb dieser prozessortypenabhängigen Mnemonik auf und beinhalten Speicherreservierung, Verwaltung von Adressen, Makros, Funktionsheader, Definieren von Strukturen usw.

Prozessorunabhängige Programmierung ist erst durch Benutzung abstrakter Sprachen möglich. Dies können Hochsprachen sein, aber auch Sprachen wie FORTH oder gar RTL. Es ist nicht die Komplexität der Sprache wichtig, sondern deren Hardware-Abstraktion.

MOV BX, 85F3h

(movw $0x85F3, %bx)

Der Wert 85F3h (dezimal: 34291) wird in das Register BX geladen.

(movw $0x85F3, %bx) Der Wert 85F3h (dezimal: 34291) wird in das Register BX geladen. MOV BX, word ptr [85F2h]

(movw 0x85F2, %bx)

Die Inhalte der Speicherzellen mit den Adresse 85F2h und 85F3h (dezimal: 34290 und 34291) relativ zum Start des Datensegments (bestimmt durch DS) werden in das Register BX geladen. Dabei wird der Inhalt von 85F2h in den niederwertigen Teil BL und der Inhalt von 85F3h in den höherwertigen Teil BH geschrieben.

(movw 0x85F2, %bx) Die Inhalte der Speicherzellen mit den Adresse 85F2h und 85F3h (dezimal: 34290 und 34291) relativ zum Start des Datensegments (bestimmt durch DS) werden in das Register BX geladen. Dabei wird der Inhalt von 85F2h in den niederwertigen Teil BL und der Inhalt von 85F3h in den höherwertigen Teil BH geschrieben. ADD BX, 15

(addw $15, %bx)

Der Wert 15 wird zum Inhalt des Arbeitsregisters BX addiert. Das Flagregister wird entsprechend dem Ergebnis gesetzt.

Binäre Maschinenbefehle [ Bearbeiten | Quelltext bearbeiten ]

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

Alle Prozessoren mit höherer Verarbeitungsleistung sind heutzutage modifizierte Harvard-Architekturen,[11] da die Harvard-Architektur durch die strikte Trennung zwischen Befehlen und Daten einige Probleme mit sich bringt. Zum Beispiel ist es für selbstmodifizierenden Code nötig, dass Daten auch als Befehle ausgeführt werden können. Ebenso ist es für Debugger wichtig, einen Haltepunkt im Programmablauf setzen zu können, was ebenfalls einen Transfer zwischen Befehls- und Datenadressraum nötig macht.[12] Die Von-Neumann-Architektur findet man bei kleinen Mikrocontrollern. Der Laie darf sich nicht durch den gemeinsamen Adressraum von Befehlen und Daten eines oder mehrerer Kerne irritieren lassen. Das Zusammenfassen von Befehls- und Datenadressraum findet auf Ebene von Cache-Controllern und deren Kohärenzprotokollen statt. Das gilt nicht nur für diese beiden Adressräume (wo dies meist auf L2-Ebene erfolgt), sondern bei Multiprozessor-Systemen auch zwischen denen verschiedener Kerne (hier erfolgt es meist auf L3-Ebene) bzw. bei Multi-Sockel-Systemen beim Zusammenfassen deren Hauptspeichers.

Mikroprozessoren sind bis auf wenige Ausnahmen (z. B. der Sharp SC61860) interruptfähig, Programmabläufe können durch externe Signale unterbrochen oder aber auch abgebrochen werden, ohne dass das im Programmablauf vorgesehen sein muss. Ein Interrupt-System erfordert zum einen ein Interrupt-Logik (d. h. auf Zuruf einschiebbare Befehle) und zum anderen die Fähigkeit, den internen Zustand des Prozessors zu retten und wiederherzustellen, um das ursprüngliche Programm nicht zu beeinträchtigen. Hat ein Mikroprozessor kein Interruptsystem, muss die Software durch Polling die Hardware selbst abfragen.

Neben der geordneten Befehlsausführung beherrschen vor allem moderne Hochleistungsprozessoren weitere Techniken, um die Programmabarbeitung zu beschleunigen. Vor allem moderne Hochleistungsmikroprozessoren setzen parallele Techniken wie etwa Pipelining und Superskalarität ein, um eine evtl. mögliche parallele Abarbeitung mehrerer Befehle zu ermöglichen, wobei die einzelnen Teilschritte der Befehlsausführung leicht versetzt zueinander sind. Eine weitere Möglichkeit, die Ausführung von Programmen zu beschleunigen, ist die ungeordnete Befehlsausführung (englisch Out-of-order execution), bei der die Befehle nicht strikt nach der durch das Programm vorgegebenen Reihenfolge ausgeführt werden, sondern der Prozessor die Reihenfolge der Befehle selbständig zu optimieren versucht. 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.

Maschinenbefehle beziehen sich auf festgelegte Quell- oder Zielobjekte, die sie entweder verwenden und/oder auf diese wirken. Diese Objekte sind in codierter Form als Teil des Maschinenbefehls angegeben, weshalb ihre effektive (logische*) Speicheradresse bei bzw. vor der eigentlichen Ausführung des Befehls ermittelt werden muss. Das Ergebnis der Berechnung wird in speziellen Adressierungseinrichtungen der Hardware (Registern) bereitgestellt und bei der Befehlsausführung benutzt. Zur Berechnung werden verschiedene Adressierungsarten (-Varianten) verwendet, abhängig von der Struktur des Befehls, die je Befehlscode einheitlich festgelegt ist.

(*) Die Berechnung der physikalischen Adressen anhand der logischen Adressen ist davon unabhängig und wird in der Regel von einer Memory Management Unit durchgeführt.

Die folgende Grafik gibt einen Überblick über die wichtigsten Adressierungsarten, weitere Angaben zur Adressierung siehe Adressierung (Rechnerarchitektur).

Übersicht der wichtigsten Adressierungsarten Register-Adressierung implizit explizit Einstufig

Speicheradressierung unmittelbar direkt Register-indirekt indiziert Programmzähler-relativ Zweistufige

Speicheradressierung indirekt-absolut Andere …

Bei einer Registeradressierung steht der Operand bereits in einem Prozessorregister bereit und muss nicht erst aus dem Speicher geladen werden.

Erfolgt die Registeradressierung implizit , so wird das implizit für den Opcode festgelegte Register mitadressiert (Beispiel: der Opcode bezieht sich implizit auf den Akkumulator).

, so wird das implizit für den Opcode festgelegte Register mitadressiert (Beispiel: der Opcode bezieht sich implizit auf den Akkumulator). Bei expliziter Registeradressierung ist die Nummer des Registers in einem Registerfeld des Maschinenbefehls eingetragen.

Beispiel: | C | R1 | R2 | Addiere Inhalt von R1 auf den Inhalt von R2; C=Befehlscode, Rn=Register(n)

Einstufige Adressierung [ Bearbeiten | Quelltext bearbeiten ]

Bei einstufigen Adressierungsarten kann die effektive Adresse durch eine einzige Adressberechnung ermittelt werden. Es muss also im Laufe der Adressberechnung nicht erneut auf den Speicher zugegriffen werden.

Bei unmittelbarer Adressierung enthält der Befehl keine Adresse, sondern den Operanden selbst; meist nur für kurze Operanden wie '0', '1', 'AB' usw. anwendbar.

Adressierung enthält der Befehl keine Adresse, sondern den Operanden selbst; meist nur für kurze Operanden wie '0', '1', 'AB' usw. anwendbar. Bei direkter Adressierung enthält der Befehl die logische Adresse selbst, es muss also keine Adressberechnung mehr ausgeführt werden.

Adressierung enthält der Befehl die logische Adresse selbst, es muss also keine Adressberechnung mehr ausgeführt werden. Bei Register-indirekter Adressierung ist die logische Adresse bereits in einem Adressregister des Prozessors enthalten. Die Nummer dieses Adressregisters wird im Maschinenbefehl übergeben.

Adressierung ist die logische Adresse bereits in einem Adressregister des Prozessors enthalten. Die Nummer dieses Adressregisters wird im Maschinenbefehl übergeben. Bei der indizierten Adressierung erfolgt die Adressberechnung mittels Addition: Der Inhalt eines Registers wird zu einer zusätzlich im Befehl übergebenen Adressangabe hinzugerechnet. Eine der beiden Adressangaben enthält dabei i. d. R. eine Basisadresse, während die andere ein 'Offset' zu dieser Adresse enthält. Siehe auch Registertypen.

Beispiel: | C | R1 | R2 | O | Lade Inhalt von R2 + Inhalt (Offset) ins R1; O=Offset

Bei Programmzähler-relativer Adressierung wird die neue Adresse aus dem aktuellen Wert des Programmzählers und einem Offset ermittelt.

Zweistufige Adressierung [ Bearbeiten | Quelltext bearbeiten ]

Bei zweistufigen Adressierungsarten sind mehrere Rechenschritte notwendig, um die effektive Adresse zu erhalten. Insbesondere ist im Laufe der Berechnung meist ein zusätzlicher Speicherzugriff notwendig. Als Beispiel sei hier die indirekte absolute Adressierung genannt. Dabei enthält der Befehl eine absolute Speicheradresse. Das Speicherwort, das unter dieser Adresse zu finden ist, enthält die gesuchte effektive Adresse. Es muss also zunächst mittels die gegebene Speicheradresse im Speicher zurückgegriffen werden, um die effektive Adresse für die Befehlsausführung zu ermitteln. Das kennzeichnet alle zweistufigen Verfahren.

Beispiel: | C | R1 | R2 | AA | Lade nach R1 = Inhalt R2 + an Adr(AA) stehenden Inhalt

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

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.

Die Taktrate (englisch 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 verringern, 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.

Siehe auch : Taktsignal

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.

Siehe auch [ Bearbeiten | Quelltext bearbeiten ]

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

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

Leave a comment