Quantencomputing verständlich erklärt — Episode 8A### Wie ein klassischer Computer tatsächlich rechnet
In den bisherigen Episoden haben wir klassische Computer und Quantencomputer immer wieder miteinander verglichen.
Bevor wir genauer betrachten, was eine QPU eigentlich macht, lohnt sich deshalb ein Blick auf die andere Seite:
Was passiert in einem klassischen Computer überhaupt zwischen einem Programm und seinem Ergebnis?
Begriffe wie CPU, GPU, Prozessorkern, Transistor oder Compiler werden häufig verwendet. Aber wie hängen sie zusammen?
Wenn Ihnen Begriffe wie CPU, Prozessor, Core, Transistor und Compiler bereits klar sind, können Sie Episode 8A überspringen und direkt mit Episode 8B weitermachen. Dort übertragen wir diese Grundlagen auf den Quantencomputer.### Vom Transistor zum Prozessor
Ein klassischer Computerchip — etwa eine CPU oder GPU — besteht im Wesentlichen aus einer sehr großen Zahl von Transistoren, die zu immer größeren Schaltungen verbunden werden.
Ein Transistor kann vereinfacht als elektrisch steuerbarer Schalter betrachtet werden.
Er kann einen Stromfluss steuern und dadurch zwei unterscheidbare elektrische Zustände erzeugen.
Diese beiden Zustände können wir als:
0und:
1interpretieren.
Damit sind wir beim Bit.
Ein Bit ist dabei kein bestimmtes Bauteil. Es ist eine Informationseinheit, die einen von zwei möglichen Werten besitzt:
0 oder 1Die Hardware benötigt physische Zustände, um diese Werte darzustellen.
Aus Transistoren werden logische Gatter
Ein einzelner Transistor kann noch keine komplizierte Berechnung durchführen.
Mehrere Transistoren werden deshalb zu kleinen Schaltungen verbunden.
Daraus entstehen unter anderem logische Gatter.
Ein einfaches Beispiel ist das NOT-Gatter:
0 → 1
1 → 0Andere Gatter können zwei Eingaben miteinander verknüpfen.
Ein AND-Gatter liefert beispielsweise nur dann 1, wenn beide Eingaben 1 sind:
0 AND 0 → 0
0 AND 1 → 0
1 AND 0 → 0
1 AND 1 → 1Aus solchen einfachen logischen Operationen lassen sich größere Schaltungen zusammensetzen.
Aus Gattern werden Rechenschaltungen
Viele logische Gatter zusammen können komplexere Aufgaben übernehmen.
Sie können beispielsweise:
- Zahlen addieren
- Zahlen vergleichen
- Bits verschieben
- Werte speichern
- entscheiden, welcher Befehl als Nächstes ausgeführt wird Ein Teil solcher Schaltungen bildet Register.
Register sind sehr kleine und sehr schnelle Speicherbereiche direkt innerhalb des Prozessors. Sie halten beispielsweise Werte, mit denen gerade gerechnet wird.
Andere Schaltungen führen mathematische oder logische Operationen aus.
Wieder andere steuern den Ablauf der Befehle.
Aus vielen solchen Funktionseinheiten entsteht schließlich ein Prozessorkern.
Was ist ein Prozessorkern?
Ein Prozessorkern ist eine weitgehend eigenständige Recheneinheit innerhalb eines Prozessors.
Er kann eine Folge von Maschinenbefehlen ausführen.
Ein moderner Prozessor besitzt häufig mehrere solcher Kerne:
Prozessor
├── Kern 1
├── Kern 2
├── Kern 3
├── Kern 4
└── ...Mehrere Kerne ermöglichen es, mehrere Berechnungen gleichzeitig oder überlappend auszuführen.
Das bedeutet allerdings nicht automatisch, dass jedes Programm mit vier Kernen viermal so schnell läuft.
Das Programm muss seine Arbeit dafür in Aufgaben aufteilen können, die parallel ausgeführt werden können.
CPU und Prozessor sind nicht ganz dasselbe
Prozessor ist der allgemeine Begriff für eine Recheneinheit, die programmierte Operationen ausführt.
Die bekannteste Form ist die CPU:
Central Processing Unit
Sie führt die allgemeinen Programme eines Computers aus.
Eine moderne CPU enthält typischerweise mehrere Prozessorkerne sowie weitere Bestandteile wie Speicherbereiche und Steuerlogik.
Sehr vereinfacht:
CPU
↓
mehrere Prozessorkerne
↓
Funktionseinheiten und Register
↓
logische Schaltungen
↓
logische Gatter
↓
Transistoren### Und was ist eine GPU?
Auch eine GPU ist ein Prozessor.
GPU steht für:
Graphics Processing Unit
Ursprünglich wurden GPUs vor allem für Grafikberechnungen entwickelt.
Dabei müssen sehr viele ähnliche Berechnungen ausgeführt werden — beispielsweise für zahlreiche Bildpunkte, Dreiecke oder Pixel gleichzeitig.
Deshalb besitzt eine GPU sehr viele Recheneinheiten, die darauf ausgelegt sind, große Mengen ähnlicher Operationen parallel auszuführen.
Eine CPU und eine GPU bestehen beide aus Transistoren und digitalen Schaltungen.
Sie sind aber unterschiedlich organisiert.
Vereinfacht:
CPU
wenige leistungsfähige Kerne
für sehr unterschiedliche AufgabenGPU
sehr viele Recheneinheiten
für viele ähnliche BerechnungenDeshalb kann eine GPU bei bestimmten Aufgaben erheblich schneller sein als eine CPU.
Bei anderen Aufgaben bringt diese Parallelität dagegen wenig.
Bereits hier sehen wir:
Ein anderer Prozessortyp ist nicht einfach allgemein schneller. Seine Architektur muss zur Aufgabe passen.
Dieser Gedanke wird beim Quantencomputer noch wichtiger.
Das Programm sagt, was gerechnet werden soll
Bisher haben wir nur die Hardware betrachtet.
Ein Prozessor benötigt aber Befehle.
Ein klassisches Programm besteht vereinfacht aus:
Eingabedaten
+
InstruktionenDie Instruktionen legen fest, welche Operationen mit den Daten durchgeführt werden sollen.
Beispielsweise:
lade einen Wert
lade einen zweiten Wert
addiere beide Werte
speichere das ErgebnisDer Prozessor führt solche Operationen Schritt für Schritt aus.
Der Prozessor versteht nicht unseren Quellcode
Programme werden heute normalerweise nicht direkt als Maschinenbefehle geschrieben.
Ein Programmierer kann beispielsweise etwas schreiben wie:
result = value1 + value2Das ist für einen Menschen relativ leicht zu verstehen.
Die CPU benötigt dagegen Befehle in ihrer eigenen Maschinensprache.
Zwischen beiden Ebenen muss deshalb übersetzt werden.
Eine Möglichkeit dafür ist ein Compiler.
Was ist ein Compiler?
Ein Compiler ist ein Programm, das Programmcode in eine Form übersetzt, die für die Zielplattform ausgeführt werden kann.
Vereinfacht:
Quellcode
↓
Compiler
↓
Maschinenbefehle
↓
ProzessorAus einer Anweisung wie:
result = value1 + value2kann dabei eine Folge mehrerer Maschinenbefehle entstehen.
Der Compiler entscheidet unter anderem, welche Befehle des Prozessors dafür verwendet werden.
Für unser weiteres Verständnis genügt zunächst:
Der Programmierer beschreibt eine Berechnung auf einer höheren Ebene. Der Compiler übersetzt sie in Operationen, die der konkrete Prozessor ausführen kann.
Von der Instruktion zur Hardware
Damit können wir den Weg einer klassischen Berechnung weiter verfolgen.
Ein Programm enthält beispielsweise eine Anweisung für eine Addition.
Der Compiler übersetzt das Programm in Maschinenbefehle.
Die CPU liest diese Befehle und führt sie aus.
Dafür benutzt sie ihre internen Rechenschaltungen.
Diese bestehen letztlich aus logischen Gattern.
Die Gatter wiederum bestehen aus Transistoren.
Vereinfacht:
Quellcode
↓
Compiler
↓
Maschinenbefehle
↓
CPU
↓
Prozessorkern
↓
Rechenschaltungen
↓
logische Gatter
↓
TransistorenDie Ebenen erfüllen dabei unterschiedliche Aufgaben.
Der Quellcode beschreibt die gewünschte Berechnung.
Der Compiler übersetzt diese Beschreibung.
Der Prozessor führt die daraus entstandenen Befehle aus.
Die eigentliche physische Berechnung geschieht schließlich durch elektrische Zustandsänderungen in seinen Schaltungen.
Ein klassischer Algorithmus
Damit können wir auch unsere bisherigen Beispiele genauer einordnen.
Ein klassischer Algorithmus beschreibt, wie aus Eingaben ein Ergebnis berechnet werden soll.
Zum Beispiel:
Eingabe
↓
erste Operation
↓
zweite Operation
↓
Vergleich
↓
weitere Operation
↓
ErgebnisDer Programmierer gibt also eine Folge von Rechenschritten vor.
Diese werden schließlich auf die elementaren Operationen der Hardware zurückgeführt.
Ganz unten arbeiten Transistoren.
Ganz oben sehen wir beispielsweise:
sortiere diese Listeberechne diese Summeoder:
suche einen Wert, der diese Bedingung erfülltZwischen diesen Ebenen liegen viele Übersetzungsschritte.
Von groß nach klein
Damit können wir die wichtigsten Bestandteile eines klassischen Computers jetzt einordnen.
Computer
Der vollständige Rechner mit Speicher, Ein- und Ausgabe, Massenspeicher und verschiedenen Prozessoren.
↓
Prozessor
Eine Recheneinheit wie CPU oder GPU.
↓
Prozessorkerne beziehungsweise Recheneinheiten
Bereiche innerhalb des Prozessors, die Operationen ausführen.
↓
Funktionseinheiten, Register und Steuerlogik
Schaltungen für Berechnungen, Zwischenspeicherung und die Ausführung von Befehlen.
↓
Logische Gatter
Kleine Schaltungen für elementare logische Operationen.
↓
Transistoren
Elektrisch steuerbare Schaltelemente, aus denen diese digitalen Schaltungen aufgebaut werden.
Vereinfacht:
Computer
↓
CPU oder GPU
↓
Kerne und Recheneinheiten
↓
Register und andere digitale Schaltungen
↓
logische Gatter
↓
TransistorenParallel dazu gibt es die Ebene der Information:
Programm
↓
Instruktionen
↓
Operationen auf Daten
↓
BitsDie Bits werden auf der Hardware durch physische Zustände dargestellt.
Zwei Ebenen müssen wir auseinanderhalten
Damit haben wir einen wichtigen Unterschied:
Die logische Ebene
Programm
Instruktionen
Bits
OperationenSie beschreibt, was gerechnet wird.
Die physische Ebene
Prozessor
Schaltungen
Gatter
TransistorenSie beschreibt, wie diese Berechnung technisch ausgeführt wird.
Diese Trennung wird uns beim Quantencomputer helfen.
Denn auch dort begegnen uns Begriffe wie:
Qubit
Quantengatter
Quantenprogramm
QPUSie liegen ebenfalls auf unterschiedlichen Ebenen.
Und nicht jeder klassische Begriff besitzt ein direktes Gegenstück.
Was wir jetzt wissen
- Ein Prozessor ist eine programmierbare Recheneinheit.
- CPU und GPU sind unterschiedliche Arten von Prozessoren.
- Eine CPU besitzt typischerweise mehrere Prozessorkerne.
- Eine GPU besitzt viele Recheneinheiten für stark parallele Berechnungen.
- Digitale Schaltungen bestehen aus logischen Gattern.
- Logische Gatter werden aus Transistoren aufgebaut.
- Ein Bit ist eine Informationseinheit und kein bestimmtes Bauteil.
- Ein Programm enthält Daten und Instruktionen für deren Verarbeitung.
- Ein Compiler übersetzt Programmcode in eine Form, die der Zielprozessor ausführen kann.
- Die Architektur eines Prozessors bestimmt, für welche Berechnungen er besonders gut geeignet ist. In Episode 8B gehen wir nun denselben Weg noch einmal — diesmal bei einem Quantencomputer.Wir beginnen bei der QPU, ordnen Qubits und Quantengatter ein und vergleichen anschließend beide Systeme direkt.Dann können wir auch die entscheidende Frage beantworten:Ist eine QPU einfach ein besonders schneller Prozessor — oder handelt es sich um eine grundsätzlich andere Art von Recheneinheit?
Top comments (0)