Connect with us

Wie man

Wie funktioniert eine CPU tatsächlich?

Wie funktioniert eine CPU tatsächlich?

Rost / Shutterstock

Die meisten Dinge in einem Computer sind relativ einfach zu verstehen: Der Arbeitsspeicher, der Speicher, die Peripheriegeräte und die Software arbeiten zusammen, damit ein Computer funktioniert. Aber das Herz Ihres Systems, die CPU, scheint selbst vielen Technikern magisch zu sein. Hier werden wir unser Bestes geben, um es zu brechen.

Der größte Teil der Forschung für diesen Artikel stammt von „Aber woher weiß es das?“ von J. Clark Scott. Es ist eine fantastische Lektüre, geht viel tiefer als dieser Artikel und ist das Geld bei Amazon wert.

Ein Hinweis, bevor wir beginnen: Moderne CPUs sind um Größenordnungen komplexer als das, was wir hier skizzieren. Es ist fast unmöglich für eine Person, jede Nuance eines Chips mit über einer Milliarde Transistoren zu verstehen. Die Grundprinzipien, wie alles zusammenpasst, bleiben jedoch dieselben, und wenn Sie die Grundlagen verstehen, erhalten Sie ein besseres Verständnis für moderne Systeme.

Klein anfangen

Computer arbeiten binär. Sie verstehen nur zwei Zustände: Ein und Aus. Um binäre Berechnungen durchzuführen, verwenden sie einen sogenannten Transistor. Der Transistor lässt den Source-Strom nur dann zum Drain fließen, wenn Strom über das Gate fließt. Im Wesentlichen bildet dies einen Binärschalter, der den Draht in Abhängigkeit von einem zweiten Eingangssignal abschneidet.

Moderne Computer verwenden Milliarden von Transistoren, um Berechnungen durchzuführen, aber auf den niedrigsten Ebenen benötigen Sie nur eine Handvoll, um die grundlegendsten Komponenten zu bilden, die als Gates bezeichnet werden.

Logikgatter

Wenn Sie einige Transistoren richtig stapeln, haben Sie ein sogenanntes Logikgatter. Logikgatter nehmen zwei Binäreingänge, führen eine Operation an ihnen aus und geben einen Ausgang zurück. Das ODER-Gatter gibt beispielsweise true zurück, wenn einer der Eingänge true ist. Das UND-Gatter prüft, ob beide Eingänge wahr sind, XOR prüft, ob nur einer der Eingänge wahr ist, und die N-Varianten (NOR, NAND und XNOR) sind invertierte Versionen ihrer Basisgatter.

Mathe mit Toren

Mit nur zwei Gates können Sie eine grundlegende binäre Addition durchführen. Dieses Diagramm oben zeigt einen Halbaddierer, der mit erstellt wurde Logischerweise, ein kostenloser Online-Spielplatz für Logikgatter. Das XOR-Gatter hier wird eingeschaltet, wenn nur einer der Eingänge eingeschaltet ist, aber nicht beide. Das UND-Gatter wird eingeschaltet, wenn beide Eingänge eingeschaltet sind, bleibt jedoch ausgeschaltet, wenn kein Eingang vorhanden ist. Wenn also beide eingeschaltet sind, bleibt das XOR ausgeschaltet und das UND-Gatter wird eingeschaltet, um die richtige Antwort von zwei zu erhalten:

Dies gibt uns eine einfache Einrichtung mit drei unterschiedlichen Ausgängen: Null, Eins und Zwei. Ein Bit kann jedoch nichts höher als 1 speichern, und diese Maschine ist nicht allzu nützlich, da sie nur eines der einfachsten mathematischen Probleme löst, die möglich sind. Dies ist jedoch nur ein halber Addierer, und wenn Sie zwei davon mit einem anderen Eingang verbinden, erhalten Sie einen vollständigen Addierer:

Der Volladdierer hat drei Eingänge – die zwei hinzuzufügenden Zahlen und einen „Übertrag“. Der Übertrag wird verwendet, wenn die endgültige Zahl das überschreitet, was in einem einzelnen Bit gespeichert werden kann. Volladdierer werden in einer Kette verbunden, und der Übertrag wird von einem Addierer zum nächsten weitergegeben. Der Übertrag wird zum Ergebnis des XOR-Gatters im Addierer der ersten Hälfte addiert, und es gibt ein zusätzliches ODER-Gatter, um beide Fälle zu behandeln, wenn das so ist, dass es eingeschaltet sein müsste.

Wenn beide Eingänge eingeschaltet sind, wird der Übertrag eingeschaltet und an den nächsten Volladdierer in der Kette gesendet:

Und das ist ungefähr so ​​komplex wie es nur geht. Das Aufsteigen auf mehr Bits bedeutet im Wesentlichen nur mehr Volladdierer in einer längeren Kette.

Die meisten anderen mathematischen Operationen können mit Addition ausgeführt werden. Die Multiplikation ist nur eine wiederholte Addition, die Subtraktion kann mit einer ausgefallenen Bitinversion durchgeführt werden, und die Division ist nur eine wiederholte Subtraktion. Und während alle modernen Computer über hardwarebasierte Lösungen verfügen, um kompliziertere Vorgänge zu beschleunigen, können Sie dies technisch mit dem Volladdierer tun.

Der Bus und Speicher

Im Moment ist unser Computer nichts anderes als ein schlechter Taschenrechner. Dies liegt daran, dass es sich an nichts erinnern kann und nichts mit seinen Ausgängen macht. Oben ist eine Speicherzelle dargestellt, die all das kann. Unter der Haube werden viele NAND-Gatter verwendet, und im wirklichen Leben kann es je nach Speichertechnik sehr unterschiedlich sein, aber seine Funktion ist dieselbe. Sie geben ihm einige Eingaben, aktivieren das ‚Schreib‘-Bit und es speichert die Eingaben in der Zelle. Dies ist nicht nur eine Speicherzelle, sondern wir benötigen auch eine Möglichkeit, Informationen daraus zu lesen. Dies geschieht mit einem Enabler, der eine Sammlung von UND-Gattern für jedes Bit im Speicher ist, die alle an einen anderen Eingang, das „Lese“ -Bit, gebunden sind. Die Schreib- und Lesebits werden häufig auch als „Setzen“ und „Aktivieren“ bezeichnet.

Dieses ganze Paket ist in ein sogenanntes Register eingepackt. Diese Register sind mit dem Bus verbunden, bei dem es sich um ein Bündel von Drähten handelt, die um das gesamte System verlaufen und mit jeder Komponente verbunden sind. Sogar moderne Computer haben einen Bus, obwohl sie möglicherweise mehrere Busse haben, um die Multitasking-Leistung zu verbessern.

Jedes Register hat noch ein Schreib- und Lesebit, aber in diesem Setup sind Ein- und Ausgang dasselbe. Das ist eigentlich gut. Beispielsweise. Wenn Sie den Inhalt von R1 in R2 kopieren möchten, aktivieren Sie das Lesebit für R1, wodurch der Inhalt von R1 auf den Bus übertragen wird. Während das Lesebit aktiviert ist, aktivieren Sie das Schreibbit für R2, wodurch der Businhalt in R2 kopiert wird.

Register werden auch verwendet, um RAM zu erstellen. RAM wird häufig in einem Raster angeordnet, wobei die Drähte in zwei Richtungen verlaufen:

Die Decoder nehmen einen Binäreingang und schalten den entsprechenden nummerierten Draht ein. Zum Beispiel ist „11“ 3 in binär, die höchste 2-Bit-Zahl, so dass der Decoder die höchste Leitung einschalten würde. An jeder Kreuzung gibt es ein Register. Alle diese sind mit dem zentralen Bus und einem zentralen Schreib- und Leseeingang verbunden. Sowohl der Lese- als auch der Schreibeingang werden nur eingeschaltet, wenn auch die beiden Drähte, die sich über das Register kreuzen, eingeschaltet sind. Auf diese Weise können Sie effektiv das Register auswählen, aus dem geschrieben und gelesen werden soll. Auch hier ist moderner RAM weitaus komplizierter, aber dieses Setup funktioniert immer noch.

Die Uhr, der Stepper und der Decoder

Register werden überall verwendet und sind das grundlegende Werkzeug zum Verschieben von Daten und zum Speichern von Informationen in der CPU. Was sagt ihnen also, dass sie Dinge bewegen sollen?

Der Takt ist die erste Komponente im Kern der CPU und schaltet sich in einem festgelegten Intervall, gemessen in Hertz oder Zyklen pro Sekunde, aus und wieder ein. Dies ist die Geschwindigkeit, die neben den CPUs angegeben wird. Ein 5-GHz-Chip kann 5 Milliarden Zyklen pro Sekunde ausführen. Die Taktrate ist oft eine sehr gute Messgröße für die Geschwindigkeit einer CPU.

Die Uhr hat drei verschiedene Zustände: den Basistakt, den Freigabetakt und den eingestellten Takt. Die Basistaktung ist für einen halben Zyklus eingeschaltet und für die andere Hälfte ausgeschaltet. Die Aktivierungsuhr wird zum Einschalten von Registern verwendet und muss länger eingeschaltet sein, um sicherzustellen, dass die Daten aktiviert sind. Die eingestellte Uhr muss immer zur gleichen Zeit wie die Freigabeuhr eingeschaltet sein, da sonst falsche Daten geschrieben werden können.

Die Uhr ist mit dem Stepper verbunden, der von eins bis zum maximalen Schritt zählt und sich nach Abschluss auf eins zurücksetzt. Die Uhr ist auch mit UND-Gattern für jedes Register verbunden, in das die CPU schreiben kann:

Diese UND-Gatter sind auch mit dem Ausgang einer anderen Komponente, dem Befehlsdecoder, verbunden. Der Befehlsdecoder nimmt einen Befehl wie „SET R2 TO R1“ und decodiert ihn in etwas, das die CPU verstehen kann. Es verfügt über ein eigenes internes Register, das als „Befehlsregister“ bezeichnet wird und in dem die aktuelle Operation gespeichert ist. Wie genau dies geschieht, hängt von dem System ab, auf dem Sie ausgeführt werden. Sobald es dekodiert ist, wird der richtige Satz aktiviert und Bits für die richtigen Register aktiviert, die entsprechend der Uhr ausgelöst werden.

Programmanweisungen werden im RAM (oder L1-Cache auf modernen Systemen, näher an der CPU) gespeichert. Da Programmdaten wie jede andere Variable in Registern gespeichert sind, können sie im laufenden Betrieb manipuliert werden, um im Programm herumzuspringen. Auf diese Weise erhalten Programme ihre Struktur mit Schleifen und if-Anweisungen. Ein Sprungbefehl setzt den aktuellen Ort im Speicher, von dem der Befehlsdecoder liest, an einen anderen Ort.

Wie alles zusammenkommt

Jetzt ist unsere grobe Vereinfachung der Funktionsweise einer CPU abgeschlossen. Der Hauptbus überspannt das gesamte System und verbindet sich mit allen Registern. Die vollständigen Addierer werden zusammen mit einer Reihe anderer Operationen in die Arithmetic Logic Unit oder die ALU gepackt. Diese ALU verfügt über Verbindungen zum Bus und über eigene Register zum Speichern der zweiten Nummer, mit der sie arbeitet.

Um eine Berechnung durchzuführen, werden Programmdaten aus dem System-RAM in den Steuerabschnitt geladen. Der Steuerabschnitt liest zwei Zahlen aus dem RAM, lädt die erste in das Befehlsregister der ALU und lädt dann die zweite auf den Bus. In der Zwischenzeit sendet es der ALU einen Anweisungscode, der ihr sagt, was zu tun ist. Die ALU führt dann alle Berechnungen durch und speichert das Ergebnis in einem anderen Register, aus dem die CPU lesen und dann den Prozess fortsetzen kann.

Bildnachweis: Rost9/ Shutterstock

Continue Reading
Click to comment

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Tendencia