Prozessortechnik

Ein Prozessor ist eine zentrale Verarbeitungseinheit in einem Computer. Im Englischen "Central Processing Unit", kurz CPU genannt.
Die Entwicklung in der Prozessortechnik verlief lange Zeit nach einem scheinbar einfachen Gesetz. Man optimierte den internen Aufbau, verkleinerte die Strukturen, senkte die Betriebsspannung, erhöhte die Taktfrequenz oder verbesserte den Herstellungsprozess. Schon war die nächste Prozessor-Generation geboren. Doch dieser Entwicklung sind enge physikalische Grenzen gesetzt.

Es geht um die Fragestellung, mit welchen Maßnahmen und Techniken man einen Prozessor noch leistungsfähiger machen kann.

Kleinere Strukturen

Mit zunehmender Chipgröße muss das Taktsignal immer längere Wege zurücklegen. Damit der Zeitunterschied der Taktflanken im akzeptablen Bereich liegt, muss der Takttreiber immer leistungsstärker werden. Dadurch erhöht er die Verlustleistung des Prozessors. Deshalb wird die Chipfläche durch kleinere Strukturen verkleinert. Dabei werden zwischen den Schaltelementen immer dünnere Verbindungen eingesetzt. Dadurch steigt der Widerstand der Verbindungen und die Signale bewegen sich immer langsamer. Das führt unter Umständen dazu, dass die Signallaufzeit unter der Verarbeitungszeit der Gatter liegt.

Steigerung der Taktfrequenz

Die Steigerung der Taktfrequenz bzw. der Taktrate ist im Prinzip die einfachste Möglichkeit, die Geschwindigkeit eines Prozessors zu steigern. Allerdings begrenzten physikalische Grenzen auch die Steigerung der Taktfrequenz. Die Taktfrequenz bestimmt unter anderem die entstehende Verlustleistung und damit die Lebensdauer des Prozessors.

Während vor Jahren die Taktgeschwindigkeit eines Prozessors immens wichtig war, ist heute ein ausgewogenes System aus Prozessor, Arbeitsspeicher und Chipsatz das Maß für einen schnellen Computer. Immer weniger Anwendungen benötigen die volle Rechenleistung eines aktuellen Prozessors. Aus diesem Grund bieten die heutigen Prozessoren viel mehr als nur reine Rechengeschwindigkeit.

Modularität

Um die Leistungsfähigkeit von Prozessoren zu steigern, werden einige Funktionsblöcke mehrfach integriert. Diese arbeiten parallel und erhöhen so in Summe die Rechengeschwindigkeit des Prozessors.

Aufgrund der Vielzahl an Funktionalitäten versuchen die CPU-Hersteller ihre Prozessoren modular zu gestalten. So können die einzelnen Schaltungsteile besser weiterentwickelt werden. Es hilft auch beim Stromsparen, wenn einzelne Prozessorteile abgeschaltet werden können. Zudem lassen sich verschiedene Varianten kombinieren und so neue Prozessortypen bauen.
Neben dem Chipsatz ist der Speichercontroller und die Grafikausgabe heute fester Bestandteil eines jeden Desktop-Prozessors.

Moderne Prozessoren haben mehrere Kerne, nutzen Befehlssatzerweiterungen, intelligente Zwischenspeicher, verfügen über Virtualisierungstechnik und Grafikfunktionen.

Herausforderungen

Das Problem ist, dass man in den Bereichen Hochleistung und Energieeffizienz bei konventionellen Halbleiterarchitekturen angesichts eines zunehmenden Bedarfs an Rechenleistung an ihre Grenzen stößt und in beiden Bereichen immer Kompromisse eingehen muss. Die Herausforderung ist, dass bei steigender Rechenleistung die Energieaufnahme nicht in die Höhe getrieben werden darf. Denn das Wärmebudget ist in einem Computergehäuse und auch in Rechenzentren begrenzt. Gefragt sind Prozessoren, die je nach Anforderung viel Leistung flexibel bereitstellen können und dabei möglichst wenig Strom verbrauchen.

Hardware-Beschleunigung

Zur Hardware-Beschleunigung zählen Spezialfunktionen in Prozessoren, Chipsätzen und Erweiterungskarten. Meistens finden sich in Prozessoren entsprechende Erweiterungen, die Computer mit speziellen Anwendungen unterstützen. Zum Beispiel Server, PCs, Notebooks, Tablets und Smartphones. Besonders leistungsschwache und akkubetriebene Geräte sind auf Hardware-Beschleunigung angewiesen. Sie sorgt dafür, dass immer wiederkehrende rechenintensive Software-Bestandteile einen Leistungsschub durch spezielle Funktionen in der Hardware unterstützt werden.
Außerhalb kleiner mobiler Geräte hat sich die Hardware-Beschleunigung nur in Ausnahmefällen durchgesetzt. Dazu zählen DirectX und OpenGL. Software, die auf spezielle Hardware angewiesen ist, hat es besonders schwer.

Das Problem dabei ist, dass Software-Entwickler beim Programmieren mit Funktionen der Hardware-Beschleunigung mehr Aufwand betreiben müssen. Meist lohnt sich das nicht, weil dabei das Marktpotential schrumpft. Meist benötigt Software keine spezielle Hardware, sondern orientiert sich nur an einfachen Systemvoraussetzungen, wie Prozessor, Arbeitsspeicher und Betriebssystem. Weil PC-Besitzer ihre Computer nur sehr langsam austauschen, brauchen Hardware-Neuerungen sehr lange, bis sie sich im Markt durchgesetzt haben. Ein Software-Entwickler kann also nicht davon ausgehen, dass spezielle Hardware-Funktionen auf den Computern ihrer Software-Kunden vorhanden sind.

Anders sieht es bei kleinen mobilen Geräten, wie Smartphones und Tablets aus. Hier bilden Betriebssystem, Entwicklungsumgebung und Hardware häufig eine Einheit. Wobei die Hardware so speziell ist, dass nur ein bestimmtes Betriebssystem darauf läuft. Software-Entwickler haben es hier einfacher. Sie nutzen einfach die Entwicklungsumgebung, die zum System dazugehört. Die berücksichtigt schon bei der Entwicklung die speziellen Funktionen der Hardware-Beschleunigung.

Virtualisierung

Virtualisierung ist eine Hardware-Unterstützung, die den Betrieb virtueller Computer auf einem Computer erleichtert oder beschleunigt. Mit der Virtualisierung kann man mehrere Software-Systeme parallel auf einer Hardware laufen lassen. Das können zum Beispiel unterschiedliche Betriebssysteme sein.
Der Begriff Virtualisierung ist mehrdeutig. Typischerweise versteht man unter Virtualisierung die Prozessor-Virtualisierung. Neben der Prozessor-Virtualisierung gibt es auch noch andere Möglichkeiten. Dazu zählt zum Beispiel das Partitionieren von Festplatten oder die Netzwerk-Virtualisierung durch VLAN.

Parallelisierung

Weil bei der Abarbeitung von Programmcode immer wieder Verzögerungen auftreten, sind moderne Prozessoren intern so strukturiert, dass die anstehenden Aufgaben auf mehrere parallel arbeitende Einheiten verteilt werden. Auf diese Weise kommt die zur Verfügung stehende Rechenleistung eines Prozessors viel besser zur Geltung.

Pipelining

Pipelining bedeutet, dass Befehle im Programmcode in mehreren Schritten, wie an einem Fließband abgearbeitet werden. Das bedeutet, dass ein Befehl mehrere Stationen im Fließband durchlaufen muss. Während ein Befehl in der Pipeline liegt, wird am Anfang bereits der nächste Befehl zur Verarbeitung nachgeschoben. Bei einer langen Pipeline können sich aber längere Wartezeiten ergeben. Zum Beispiel beim Speicherzugriff. Durch entsprechende Programmierung und durch simultanes Multithreading (SMT) lassen sich die Zeiten überbrücken. Eine lange Pipeline arbeitet ineffizient, braucht eine sehr gute Sprungvorhersage und schluckt viel Energie.

In-Order-Architektur

Wenn ein Prozessor aus einer In-Order-Architektur besteht, dann bedeutet das, dass die Operationen eines Threads in der vom Compiler vorgegebenen Reihenfolge nacheinander ausgeführt werden. Aus diesem Grund prüfen Prozessoren mit einer In-Order-Struktur bzw. In-Order-Architektur mit einfachen Mechanismen, ob zwei aufeinanderfolgende Befehle parallel ausgeführt werden können. Wenn ja, dann werden sie in zwei Pipelines abgearbeitet. Für spezielle Befehlsgruppen gibt es sogar eigene Pipelines.
Wenn ein Befehl früher fertig ist als der Befehl in der anderen Pipeline, dann wartet er, bis auch der andere abgearbeitet ist. Erst dann geht es im Programmcode weiter. Der Compiler kann durch geschickte Sortierung der Befehle für eine Optimierung sorgen. Wenn dann aber ein Befehl auf den Speicher zugreift und die Daten nicht in einem der Caches liegen, dann muss der Prozessor warten. An dieser Stelle hätte die Out-of-Order-Execution klare Vorteile. Hier treten Wartezeiten seltener auf.

Multicore

Multicore bedeutet, dass in einen Prozessor mehrere Rechen-Kerne eingebaut werden. Man bezeichnet diese Prozessoren als Multi-Core- oder Mehrkern-Prozessoren.

Leider gibt es nur wenig Software, die deutlich mehr als sechs oder acht Kerne voll ausreizen kann. Bei mehr als zwei Kernen bedarf Anwendungen, die ihre Berechnungen auf mehreren Rechen-Kernen verteilen können. Deshalb ist für viele Anwendungen nicht die Rechenleistung pro Kern, sondern die Single-Threading-Performance eines Kerns wichtig. Viele Aufgaben laufen auf einzelnen Kernen einfach schnell genug, sodass die Entwickler hier schlicht nicht für Multicore-Systeme optimieren. Wiederum gibt es einige Aufgaben, die sich nur schlecht auf mehrere Kerne aufteilen lassen.

Integrationsgrad und Strukturbreite

Der Integrationsgrad ist ein Maß, wie viele Funktionen auf einem Schaltkreis untergebracht werden können. Man unterscheidet zwischen einem niedrigen, mittleren, hohen und sehr hohen Integrationsgrad. Bei der Herstellung von integrierten Schaltkreisen, dazu zählen auch Prozessoren, bezieht man sich häufig auf die Strukturbreite. Damit ist die Breite der einzelnen Leiterbahnen auf dem Schaltkreis gemeint. Im Laufe der Zeit wird die Strukturbreite immer kleiner. Das bedeutet, dass immer mehr Transistoren in einem Schaltkreis untergebracht werden können. Das ist deshalb notwendig, weil die Prozessoren immer komplexer werden.

Je kleiner die Strukturbreite,

  • desto kleiner der Schaltkreis,
  • desto höher die (interne) Taktfrequenz,
  • desto niedriger die Speisespannung
  • und desto schwieriger und kostenintensiver die Fertigung.

Bei der Angabe der Strukturbreite bezieht man sich auf einen bestimmten Herstellungsprozess. Hierbei wird von der µm-Technologie oder vom µm-Prozess gesprochen.

Multiplikator

Der Multiplikator ist der Faktor, mit dem die Taktfrequenz eines Prozessors eingestellt wird. Als Basis dient die Basistaktfrequenz. Die Basistaktfrequenz hängt vom Prozessor und vom Hersteller ab.
Die Taktfrequenz des Prozessors ergibt sich in der Regel aus einer Basistaktfrequenz von 100, 133,33 oder 200 MHz und dem Multiplikator. Das bedeutet, bei einer Basistaktfrequenz von 100 MHz und einem Multiplikator von 20 hat der Prozessor einen internen Takt von 2,0 GHz.

Codename

Der Codename kennzeichnet eine Prozessor-Generation, die aus einem Fertigungsprozess stammt. Der Codename wird nicht immer eindeutig verwendet und selten offiziell von den Herstellern einer Produkt-Kategorie zugeordnet. Fachleute benutzen Codenamen, um zwischen Prozessor-Generationen eines Prozessortyps unterscheiden zu können.

Stepping und Revision

Nicht nur Software, auch Prozessoren können Bugs enthalten. Wie bei der Software gibt es bei Prozessoren verschiedene Versionsstände. Wird ein Fehler bekannt, wird er behoben und der Prozessor in einer neuen Version hergestellt. Statt Version haben sich hier die Begriffe "Stepping" und "Revision" durchgesetzt.

Fehler in Prozessoren: Bugs

Nicht nur Software, auch Prozessoren können Bugs enthalten. Durch die steigende Größe der Prozessoren, in denen mehrere Millionen Transistoren untergebracht sind, steigt auch die Anzahl der Fehler, die sich innerhalb eines Prozessors befinden. Einige Fehler können durchaus ernster Natur sein. Besonders dann, wenn sie zum Absturz des Systems führen, falsche Daten berechnen oder einen Datenverlust verursachen. Es kann auch sein, dass diese Fehler potenzielle Sicherheitsrisiken darstellen, weil sie sich möglicherweise als Schwachstellen von Schadsoftware ausnutzen lassen.

Die meisten CPU-Fehler treten mit realem Code sehr selten auf, weshalb die Prozessor-Hersteller die Fehler selbst in Laborversuchen nur unter extremen Bedingungen finden. Sie versorgen Hardware-Entwickler und Programmierer mit Hinweisen, wie sich diese Bugs umgehen lassen. Die Fehlerdokumentation erfolgt je nach Hersteller mehr oder weniger öffentlich und schnell.
Die meisten Prozessor-Hersteller korrigieren die Fehler in optimierten Neuauflagen der CPU-Kerne, also in neuen CPU-"Steppings".
Oft lassen sich Fehler von Programmierern oder vom Compiler vermeiden, in dem bestimmte Befehle oder Befehlsfolgen nicht ausgeführt werden. Andere Fehler lassen sich durch einen Software-Patch im Prozessor Abstraction Layer (PAL) beheben.
Es gibt auch Prozessor-Fehler, die sich durch Veränderungen der CPU-Initialisierung (also per BIOS-Update) beheben lassen oder per Microcode-Update. Ein Microcode-Update findet durch ein BIOS-Update oder ein Betriebssystem-Patch statt. Die Möglichkeit der Microcode-Updates wurde bei x86-Prozessoren unter anderem deshalb geschaffen, um nachträglich erkannte Bugs korrigieren zu können. Der Microcode kann einem Prozessor auch komplett neue Befehle beibringen.
Wenn das alles nichts hilft und der Fehler kritisch ist, dann muss der Prozessor-Hersteller die betroffenen Prozessoren austauschen.

Sicherheitslücke in Intel-, AMD- und ARM-Prozessoren

Im Jahr 2017 wurden Sicherheitslücken mit der Bezeichnung Spectre und Meltdown vor allem in Prozessoren von Intel, aber auch ARM und teilweise AMD bekannt, die es bösartiger Software erlaubte, vermeintlich geschützte Daten eines anderen parallel laufenden Programms zu lesen. Voraussetzung war allerdings, dass der Angriffs- und Ziel-Prozess auf demselben physischen Prozessorkern lief. Außerdem musste ein Angriff entweder genau zum richtigen Zeitpunkt oder sehr lange laufen, um auch tatsächlich sensible Daten „abzugreifen“. Hierbei verantwortlich ist die spekulative Ausführung (speculative execution) des Quellcodes und die Out-of-Order-Execution der Ergebnisse, die beide beide den Zugriff auf den Speicherinhalt nicht einschränken oder nicht einschränken können. Beide Funktionen kann man abschalten, weshalb die Prozessoren dann viel sicherer, aber auch viel langsamer sind.

Besonders betroffen davon sind die Betreiber virtueller Maschinen mit unterschiedlichen Kunden, die davon ausgehen, dass die emulierten Systeme voneinander abgeschottet sind. Anders bei typischen Desktop-PCs. Hier gibt es andere Sicherheitslücken, die sich leichter für Angriffe missbrauchen lassen.

Leckstrom

In Chips werden vor allem Transistoren verwendet. Diese Transistoren haben das so genannte Gate, das bestimmt, ob der Transistor ein- oder ausgeschaltet ist. Bestandteil des Gates ist das Gate-Dielektrikum. Es ist eine Isolationsschicht. Üblicherweise verwendet man dafür das leicht und billig herstellbare Siliziumdioxid. Die Firma Intel hat bereits erfolgreich die Dicke des Siliziumdioxid auf 1,2 Nanometer (nm) verkleinert. Das entspricht in etwa 5 Atomlagen, also 5 Atome übereinander. Mit dieser dünnen Siliziumdioxid-Schicht nehmen die elektrischen Leckströme zu. Dabei fließt ein Teil der Ladung, der auf dem Gate des Transistors sitzen sollte, durch die Isolationsschicht hindurch. Als Folge entsteht mehr Abwärme und ein größerer Stromverbrauch. Bei vielen Millionen Transistoren in einem Chip ist das ein ernstzunehmendes Problem.

Übersicht: Prozessortechnik

Prozessor-Architekturen

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Die Computertechnik-Fibel, das Computer-Buch
Computertechnik-Fibel

Alles was Sie über Computertechnik wissen müssen.

Die Computertechnik-Fibel ist ein Buch über die Grundlagen der Computertechnik, Prozessortechnik, Halbleiterspeicher, Schnittstellen, Datenspeicher, Laufwerke und wichtige Hardware-Komponenten.

Das will ich haben!

Die Computertechnik-Fibel, das Computer-Buch
Computertechnik-Fibel

Alles was Sie über Computertechnik wissen müssen.

Die Computertechnik-Fibel ist ein Buch über die Grundlagen der Computertechnik, Prozessortechnik, Halbleiterspeicher, Schnittstellen, Datenspeicher, Laufwerke und wichtige Hardware-Komponenten.

Das will ich haben!

Elektronik-Set Raspberry Pi Edition
Elektronik-Set Raspberry Pi Edition

Elektronik erleben mit dem Raspberry Pi mit Python und GPIO Zero

  • Leichter Einstieg ins Hardware-nahe Programmieren mit Python und GPIO Zero
  • Experimentieren und Programmieren ohne Vorkenntnisse
  • Sofort Loslegen mit All-in-one-Set

Elektronik-Set jetzt bestellen