Rechnen mit Kernen

Was ist eine CPU, der Hauptprozessor?

| Autor / Redakteur: Filipe Pereira Martins und Anna Kobylinska* / Ulrike Ostler

Baiswissen von DataCenter-Insider: Was ist eine CPU? Ein Hauptprozessor. Und was ist ein Hauptprozessor?
Baiswissen von DataCenter-Insider: Was ist eine CPU? Ein Hauptprozessor. Und was ist ein Hauptprozessor? (Bild: © djama/ Fotolia.com)

CPU (central processing unit) ist die zentrale Prozessoreinheit in einem elektrischen Gerät, die im Zuge der Verarbeitung der daran übergebenen Befehle seine Funktionsweise steuert.

Eine CPU besteht typischerweise aus mehreren so genannten Prozessorkernen (processor cores). Bei den Prozessorkernen handelt es sich um parallel arbeitende, voneinander unabhängige Recheneinheiten der CPU.

Die Bestandteile der CPU

Eine CPU besteht unter anderem aus den folgenden Hauptelementen:

Steuereinheit (Control Unit, CU): Diese Komponente extrahiert CPU-Anweisungen aus dem Arbeitsspeicher, decodiert sie und führt sie aus; sie koordiniert außerdem die Arbeit der übrigen Elemente der CPU und der übrigen Elemente des Computers

  • Arithmetik-Logikeinheit (Arithmetic Logic Unit, ALU): Dieses Rechenwerk führt arithmetische und logische Operationen anhand der Anweisungen der Steuereinheit an den Daten im CPU-Register aus
  • CPU-Register: Diese Bereiche des CPU-eigenen Hochgeschwindigkeitsspeichers zeichnen für die temporäre Aufbewahrung der zu verarbeitenden Daten (oder der Adressinformationen zum Zugriff auf diese Daten) verantwortlich
  • Busse: Diese Hochgeschwindigkeits-Datenleitungen ermöglichen die Übertragung von Daten und Anweisungen zwischen den einzelnen Komponenten der CPU; die so genannte Bus-Arbitrierung leistet gewöhnlich die MMS-Speicherverwaltungseinheit (Memory Management Unit), entweder innerhalb oder auch außerhalb der CPU.

Wie diese Komponenten in den einzelnen Prozessorkernen organisiert sind, hängt von der jeweiligen Prozessorarchitektur ab.

Zusätzliche Recheneinheiten, die so genannten Co-Prozessoren, wie die Gleitkomma-Einheit (Floating Point Unit, FPU), können der CPU weitere spezialisierte Funktionen zur Verfügung stellen, um die Gesamtleistung des Systems weiter zu erhöhen.

In Supercomputern kommen zur Entlastung der CPUs verstärkt GPUs zum Einsatz. Zum Beispiel „Cray XK7 Titan“, der 20-Petaflops starke Cray-Supercomputer im Forschungsinstitut Oak Ridge im US-Bundesstaat Tennessee, nutzt in jedem seiner 18.688 Rechenknoten einen „Kepler“-GPU-Beschleuniger von Nvidia auf der Basis der „Tesla“-Architektur zur Entlastung der jeweils 16 Core-starken CPU.

Die Arbeitsweise einer CPU

Eine CPU arbeitet schrittweise in einem Taktzyklus die folgenden Aufgaben ab:

  • Anweisungen abholen (Fetch): Im ersten Schritt ruft die CPU aus dem Programmspeicher die Anweisung ab, die sie ausführen soll. (Jeder Befehl in einem Programm, welches typischerweise Millionen von Befehlen enthält, wird im Speicher an einer spezifischen Adresse aufbewahrt. Die CPU hat einen Programmzähler, der die Position der CPU im Programm - also die Adresse des Befehls, auf den die CPU zugreift - verfolgt.)
  • Anweisungen decodieren (Decode): Zu dem Zeitpunkt, wenn die CPU die Programmanweisungen abholt, liegen diese in der Assemblersprache vor; ein sogenannter Assembler (Assemblierer) übersetzt sie in die eigene Maschinensprache der CPU.
  • Anweisungen ausführen (Execute): Hierbei handelt es sich um Aufgaben wie mathematische Kalkulationen, das Hin-und-her-Schaufeln von Daten oder Entscheidungen über die Reihenfolge der Abarbeitung weiterer Teils des Programms. (Mathematische Berechnungen werden von der Steuereinheit an die Arithmetik-Logikeinheit delegiert.)
  • Resultate ausgeben (Writeback): Die CPU schreibt die Ausgabe in den Speicher.

Alles im Takt

Die Taktfrequenz bezeichnet die Anzahl von CPU-Taktzyklen pro Sekunde. Die Taktfrequenz wird üblicherweise in Gigahertz (GHz) ausgedrückt.

Um die Leistung einer CPU in einem vorgegebenen Taktzyklus zu maximieren, wird die Abarbeitung der Maschinenbefehle in Teilaufgaben zerlegt, welche in einer kontinuierlichen Abfolge wie am Fließband in eine von mehreren parallelen Abarbeitungs-Pipelines eingespeist werden. Dieses so genannte Pipelining ermöglicht die parallele Ausführung von Teilaufgaben mehrerer unterschiedlicher Befehle gleichzeitig.

CPU-Architekturen: RISC versus CISC versus Sparse-Matrix

Die Kompatibilität einer CPU-Architektur mit Softwarecode bestimmt die so genannte Befehlssatzarchitektur (Instruction Set Architecture, ISA) der CPU. Sie bildet de facto eine Schnittstelle zwischen der CPU und der Software.

Eine ISA beschreibt unter anderem die unterstützten CPU-Anweisungen, native Datentypen, die vorhandenen Register, die verschiedenen Adressierungsmodi, die Speicherarchitektur, Methoden der Interrupt- und Ausnahmebehandlung sowie die externe Ein- und Ausgabe. Eine ISA beinhaltet außerdem eine Spezifikation für die so genannten opcodes-Anweisungen, also die zu verwendende Maschinensprache, und die nativen Befehle, die in einem bestimmten Prozessor implementiert wurden.

Zu den zwei traditionellen Typen von ISAs:

  • RISC (Reduced Instruction Set Computing), einer Computing-Architektur auf der Basis eines reduzierten Befehlssatzes
  • CISC (Complex Instruction Set Computing), einer Computing-Architektur auf der Basis eines komplexen Befehlssatzes

hat sich im Jahre 2016 eine neue CPU-Architektur gesellt:

  • Sparse-Matrix, eine neuartige ISA für skalierbare Hochleistungs-CPU-Arrays von einem Startup namens Knupath.

CISC-Architekturen zeichnen sich durch eine hohe Anzahl sehr spezialisierter Anweisungen aus, die möglichst viele Anforderungen abdecken.

RISC-Architekturen befolgen einen anderen Ansatz. Wie bereits der Name andeutet reduzieren RISC-ISAs den Satz unterstützter Anweisungen auf solche, die besonders häufig aufgerufen werden, beschränken diese auf eine feste Länge von 4 Bytes und ein vereinheitlichtes Format, um eine möglichst effiziente Abarbeitung dieser Befehle zu gewährleisten. Das vereinfachte Format erleichtert unter anderem die Umsetzung von Pipelining wie auch das Decoding selbst.

Kompliziertere Operationen müssen als Subroutinen implementiert werden. Sie laufen dann in mehreren CPU-Zyklen ab und nehmen zusätzliche Prozessorzeit in Anspruch, da sie aber seltener benötigt werden, ergibt sich unterm Strich idealerweise ein Performance-Gewinn.

Zu den großen Vorteilen von RISC-Architekturen zählen ihre höhere Modularität, Parallelisierbarkeit und Anpassbarkeit. RISC-ISA stellen generell niedrigere Anforderungen an die Komplexität der erforderlichen Fertigungsprozesse als CISC-Architekturen.

Die Sparse-Matrix-ISA

Sparse-Matrix-ISA baut auf winzigen digitalen Signalprozessoren (tiny DSP oder tDSP) auf, die von Prozessorkernen in ARM-Architektur verwaltet werden. Mit der Prozessorreihe namens KNUPATH Hermosa adressiert der Anbieter vor allem diejenigen Datacenter, die schwerpunktmäßig Workloads im Bereich Maschinelles Lernen ausführen.

Die Plattform LambdaFabric bietet ein Gewebe-Interconnect für massive Parallelisierung von bis zu über einer halben Million von KNUPATH Hermosa-CPUs.

Verschiedene CPUs können aus Kompatibilitätsgründen eine und dieselbe Befehlssatzarchitektur nach Außen hin exponieren auch wenn sie intern extrem unterschiedlich aufgebaut sind.

Zu den bekanntesten ISAs zählen:

  • Intel X86, eine CISC-Architektur im Einsatz primär bei Intel und AMD
  • ARM, eine RISC-Architektur von ARM für Server und für andere Gerätetypen
  • POWER, eine RISC-ISA für IBM POWER und OpenPOWER, IBMs Open-Source-Initiative
  • MIPS, eine RISC-Architektur von Imagination Technologies, die ursprünglich für Supercomputer entwickelt wurde und heute primär in Embedded-Systemen wie Router und IoT-Geräte Einsatz findet
  • SPARC (Scalable Processor Architecture), eine RISC-basierte ISA von Sun Microsystems/Oracle Corporation
  • RISC-V, eine quelloffene RISC-ISA für massive Supercomputer, Embedded-Systeme und andere Gerätetypen von der RISC-V Foundation

CPU-Designs setzen intern fortgeschrittene Optimierungen zur Leistungssteigerung ein, zum Beispiel Pipelining, Weiterleitung (forwarding), Ausgabe mehrerer Befehle pro CPU-Zyklus, die Nutzung mehrerer unabhängiger Pipelines, die außerplanmäßige Ausführung oder die außerplanmäßige Erteilung von Anweisungen (out-of-order instruction completion/issue) und viele andere Tricks. Dank der ISA-Schnittstelle brauchen sich Softwareprogrammierer über all diese Optimierungen keine Gedanken zu machen.

*Die Autoren

Das Autorenduo Filipe Pereira Martins und Anna Kobylinska arbeiten bei der McKinley Denali Inc. (USA).

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44461905 / Definitionen)